Ruperth commited on
Commit
5465983
·
1 Parent(s): f075eda

feat: add makefile shortcuts and pnpm lockfile for faster onboarding

Browse files
Files changed (2) hide show
  1. Makefile +61 -0
  2. frontend/pnpm-lock.yaml +1477 -0
Makefile ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .PHONY: help install dev api ui build test clean docker docker-demo docker-clean stop
2
+
3
+ help:
4
+ @echo "SignalMod — comandos disponibles:"
5
+ @echo " make install Instala deps Python (uv) y frontend (pnpm)"
6
+ @echo " make dev Arranca API (:8000) + UI (:5173) en paralelo"
7
+ @echo " make api Solo la API FastAPI"
8
+ @echo " make ui Solo el frontend React"
9
+ @echo " make build Compila el frontend (frontend/dist)"
10
+ @echo " make test Ejecuta pytest"
11
+ @echo " make docker docker compose up --build (deja imágenes/volúmenes)"
12
+ @echo " make docker-demo Demo efímera: arranca + al hacer Ctrl+C limpia todo"
13
+ @echo " make docker-clean Limpia contenedores, imagen y volúmenes de SignalMod"
14
+ @echo " make stop Mata procesos en :8000 y :5173"
15
+ @echo " make clean Limpia .venv, node_modules y dist"
16
+
17
+ install:
18
+ uv sync
19
+ cd frontend && pnpm install
20
+
21
+ dev:
22
+ @echo "→ API en http://localhost:8000 UI en http://localhost:5173"
23
+ @trap 'kill 0' INT; \
24
+ uv run uvicorn src.api.main:app --reload --port 8000 & \
25
+ (cd frontend && pnpm run dev) & \
26
+ wait
27
+
28
+ api:
29
+ uv run uvicorn src.api.main:app --reload --port 8000
30
+
31
+ ui:
32
+ cd frontend && pnpm run dev
33
+
34
+ build:
35
+ cd frontend && pnpm run build
36
+
37
+ test:
38
+ uv run pytest
39
+
40
+ docker:
41
+ docker compose up --build
42
+
43
+ docker-demo:
44
+ @echo "→ SignalMod en http://localhost:8000 (Ctrl+C para parar y limpiar)"
45
+ @trap 'echo; echo "→ Limpiando contenedores, imagen y volúmenes..."; \
46
+ docker compose down --rmi local --volumes --remove-orphans; \
47
+ echo "✓ Todo limpio."' INT TERM EXIT; \
48
+ docker compose up --build
49
+
50
+ docker-clean:
51
+ @echo "→ Eliminando contenedores, imágenes y volúmenes de SignalMod..."
52
+ -docker compose down --rmi local --volumes --remove-orphans
53
+ @echo "✓ Limpieza completada."
54
+
55
+ stop:
56
+ -@lsof -ti tcp:8000 | xargs kill -9 2>/dev/null || true
57
+ -@lsof -ti tcp:5173 | xargs kill -9 2>/dev/null || true
58
+ @echo "Procesos en :8000 y :5173 detenidos."
59
+
60
+ clean:
61
+ rm -rf .venv frontend/node_modules frontend/dist
frontend/pnpm-lock.yaml ADDED
@@ -0,0 +1,1477 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ lockfileVersion: '9.0'
2
+
3
+ settings:
4
+ autoInstallPeers: true
5
+ excludeLinksFromLockfile: false
6
+
7
+ importers:
8
+
9
+ .:
10
+ dependencies:
11
+ react:
12
+ specifier: ^19.0.0
13
+ version: 19.2.6
14
+ react-dom:
15
+ specifier: ^19.0.0
16
+ version: 19.2.6(react@19.2.6)
17
+ react-router-dom:
18
+ specifier: ^7.1.0
19
+ version: 7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
20
+ recharts:
21
+ specifier: ^2.15.0
22
+ version: 2.15.4(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
23
+ devDependencies:
24
+ '@types/react':
25
+ specifier: ^19.0.0
26
+ version: 19.2.15
27
+ '@types/react-dom':
28
+ specifier: ^19.0.0
29
+ version: 19.2.3(@types/react@19.2.15)
30
+ '@vitejs/plugin-react':
31
+ specifier: ^4.3.4
32
+ version: 4.7.0(vite@6.4.2)
33
+ typescript:
34
+ specifier: ~5.7.2
35
+ version: 5.7.3
36
+ vite:
37
+ specifier: ^6.0.0
38
+ version: 6.4.2
39
+
40
+ packages:
41
+
42
+ '@babel/code-frame@7.29.7':
43
+ resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
44
+ engines: {node: '>=6.9.0'}
45
+
46
+ '@babel/compat-data@7.29.7':
47
+ resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==}
48
+ engines: {node: '>=6.9.0'}
49
+
50
+ '@babel/core@7.29.7':
51
+ resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==}
52
+ engines: {node: '>=6.9.0'}
53
+
54
+ '@babel/generator@7.29.7':
55
+ resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==}
56
+ engines: {node: '>=6.9.0'}
57
+
58
+ '@babel/helper-compilation-targets@7.29.7':
59
+ resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==}
60
+ engines: {node: '>=6.9.0'}
61
+
62
+ '@babel/helper-globals@7.29.7':
63
+ resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==}
64
+ engines: {node: '>=6.9.0'}
65
+
66
+ '@babel/helper-module-imports@7.29.7':
67
+ resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==}
68
+ engines: {node: '>=6.9.0'}
69
+
70
+ '@babel/helper-module-transforms@7.29.7':
71
+ resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==}
72
+ engines: {node: '>=6.9.0'}
73
+ peerDependencies:
74
+ '@babel/core': ^7.0.0
75
+
76
+ '@babel/helper-plugin-utils@7.29.7':
77
+ resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==}
78
+ engines: {node: '>=6.9.0'}
79
+
80
+ '@babel/helper-string-parser@7.29.7':
81
+ resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
82
+ engines: {node: '>=6.9.0'}
83
+
84
+ '@babel/helper-validator-identifier@7.29.7':
85
+ resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
86
+ engines: {node: '>=6.9.0'}
87
+
88
+ '@babel/helper-validator-option@7.29.7':
89
+ resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==}
90
+ engines: {node: '>=6.9.0'}
91
+
92
+ '@babel/helpers@7.29.7':
93
+ resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==}
94
+ engines: {node: '>=6.9.0'}
95
+
96
+ '@babel/parser@7.29.7':
97
+ resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==}
98
+ engines: {node: '>=6.0.0'}
99
+ hasBin: true
100
+
101
+ '@babel/plugin-transform-react-jsx-self@7.29.7':
102
+ resolution: {integrity: sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==}
103
+ engines: {node: '>=6.9.0'}
104
+ peerDependencies:
105
+ '@babel/core': ^7.0.0-0
106
+
107
+ '@babel/plugin-transform-react-jsx-source@7.29.7':
108
+ resolution: {integrity: sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==}
109
+ engines: {node: '>=6.9.0'}
110
+ peerDependencies:
111
+ '@babel/core': ^7.0.0-0
112
+
113
+ '@babel/runtime@7.29.7':
114
+ resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==}
115
+ engines: {node: '>=6.9.0'}
116
+
117
+ '@babel/template@7.29.7':
118
+ resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
119
+ engines: {node: '>=6.9.0'}
120
+
121
+ '@babel/traverse@7.29.7':
122
+ resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==}
123
+ engines: {node: '>=6.9.0'}
124
+
125
+ '@babel/types@7.29.7':
126
+ resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==}
127
+ engines: {node: '>=6.9.0'}
128
+
129
+ '@esbuild/aix-ppc64@0.25.12':
130
+ resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
131
+ engines: {node: '>=18'}
132
+ cpu: [ppc64]
133
+ os: [aix]
134
+
135
+ '@esbuild/android-arm64@0.25.12':
136
+ resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
137
+ engines: {node: '>=18'}
138
+ cpu: [arm64]
139
+ os: [android]
140
+
141
+ '@esbuild/android-arm@0.25.12':
142
+ resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
143
+ engines: {node: '>=18'}
144
+ cpu: [arm]
145
+ os: [android]
146
+
147
+ '@esbuild/android-x64@0.25.12':
148
+ resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
149
+ engines: {node: '>=18'}
150
+ cpu: [x64]
151
+ os: [android]
152
+
153
+ '@esbuild/darwin-arm64@0.25.12':
154
+ resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
155
+ engines: {node: '>=18'}
156
+ cpu: [arm64]
157
+ os: [darwin]
158
+
159
+ '@esbuild/darwin-x64@0.25.12':
160
+ resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
161
+ engines: {node: '>=18'}
162
+ cpu: [x64]
163
+ os: [darwin]
164
+
165
+ '@esbuild/freebsd-arm64@0.25.12':
166
+ resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
167
+ engines: {node: '>=18'}
168
+ cpu: [arm64]
169
+ os: [freebsd]
170
+
171
+ '@esbuild/freebsd-x64@0.25.12':
172
+ resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
173
+ engines: {node: '>=18'}
174
+ cpu: [x64]
175
+ os: [freebsd]
176
+
177
+ '@esbuild/linux-arm64@0.25.12':
178
+ resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
179
+ engines: {node: '>=18'}
180
+ cpu: [arm64]
181
+ os: [linux]
182
+
183
+ '@esbuild/linux-arm@0.25.12':
184
+ resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
185
+ engines: {node: '>=18'}
186
+ cpu: [arm]
187
+ os: [linux]
188
+
189
+ '@esbuild/linux-ia32@0.25.12':
190
+ resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
191
+ engines: {node: '>=18'}
192
+ cpu: [ia32]
193
+ os: [linux]
194
+
195
+ '@esbuild/linux-loong64@0.25.12':
196
+ resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
197
+ engines: {node: '>=18'}
198
+ cpu: [loong64]
199
+ os: [linux]
200
+
201
+ '@esbuild/linux-mips64el@0.25.12':
202
+ resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
203
+ engines: {node: '>=18'}
204
+ cpu: [mips64el]
205
+ os: [linux]
206
+
207
+ '@esbuild/linux-ppc64@0.25.12':
208
+ resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
209
+ engines: {node: '>=18'}
210
+ cpu: [ppc64]
211
+ os: [linux]
212
+
213
+ '@esbuild/linux-riscv64@0.25.12':
214
+ resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
215
+ engines: {node: '>=18'}
216
+ cpu: [riscv64]
217
+ os: [linux]
218
+
219
+ '@esbuild/linux-s390x@0.25.12':
220
+ resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
221
+ engines: {node: '>=18'}
222
+ cpu: [s390x]
223
+ os: [linux]
224
+
225
+ '@esbuild/linux-x64@0.25.12':
226
+ resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
227
+ engines: {node: '>=18'}
228
+ cpu: [x64]
229
+ os: [linux]
230
+
231
+ '@esbuild/netbsd-arm64@0.25.12':
232
+ resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
233
+ engines: {node: '>=18'}
234
+ cpu: [arm64]
235
+ os: [netbsd]
236
+
237
+ '@esbuild/netbsd-x64@0.25.12':
238
+ resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
239
+ engines: {node: '>=18'}
240
+ cpu: [x64]
241
+ os: [netbsd]
242
+
243
+ '@esbuild/openbsd-arm64@0.25.12':
244
+ resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
245
+ engines: {node: '>=18'}
246
+ cpu: [arm64]
247
+ os: [openbsd]
248
+
249
+ '@esbuild/openbsd-x64@0.25.12':
250
+ resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
251
+ engines: {node: '>=18'}
252
+ cpu: [x64]
253
+ os: [openbsd]
254
+
255
+ '@esbuild/openharmony-arm64@0.25.12':
256
+ resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
257
+ engines: {node: '>=18'}
258
+ cpu: [arm64]
259
+ os: [openharmony]
260
+
261
+ '@esbuild/sunos-x64@0.25.12':
262
+ resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
263
+ engines: {node: '>=18'}
264
+ cpu: [x64]
265
+ os: [sunos]
266
+
267
+ '@esbuild/win32-arm64@0.25.12':
268
+ resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
269
+ engines: {node: '>=18'}
270
+ cpu: [arm64]
271
+ os: [win32]
272
+
273
+ '@esbuild/win32-ia32@0.25.12':
274
+ resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
275
+ engines: {node: '>=18'}
276
+ cpu: [ia32]
277
+ os: [win32]
278
+
279
+ '@esbuild/win32-x64@0.25.12':
280
+ resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
281
+ engines: {node: '>=18'}
282
+ cpu: [x64]
283
+ os: [win32]
284
+
285
+ '@jridgewell/gen-mapping@0.3.13':
286
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
287
+
288
+ '@jridgewell/remapping@2.3.5':
289
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
290
+
291
+ '@jridgewell/resolve-uri@3.1.2':
292
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
293
+ engines: {node: '>=6.0.0'}
294
+
295
+ '@jridgewell/sourcemap-codec@1.5.5':
296
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
297
+
298
+ '@jridgewell/trace-mapping@0.3.31':
299
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
300
+
301
+ '@rolldown/pluginutils@1.0.0-beta.27':
302
+ resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==}
303
+
304
+ '@rollup/rollup-android-arm-eabi@4.60.4':
305
+ resolution: {integrity: sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==}
306
+ cpu: [arm]
307
+ os: [android]
308
+
309
+ '@rollup/rollup-android-arm64@4.60.4':
310
+ resolution: {integrity: sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==}
311
+ cpu: [arm64]
312
+ os: [android]
313
+
314
+ '@rollup/rollup-darwin-arm64@4.60.4':
315
+ resolution: {integrity: sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==}
316
+ cpu: [arm64]
317
+ os: [darwin]
318
+
319
+ '@rollup/rollup-darwin-x64@4.60.4':
320
+ resolution: {integrity: sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==}
321
+ cpu: [x64]
322
+ os: [darwin]
323
+
324
+ '@rollup/rollup-freebsd-arm64@4.60.4':
325
+ resolution: {integrity: sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==}
326
+ cpu: [arm64]
327
+ os: [freebsd]
328
+
329
+ '@rollup/rollup-freebsd-x64@4.60.4':
330
+ resolution: {integrity: sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==}
331
+ cpu: [x64]
332
+ os: [freebsd]
333
+
334
+ '@rollup/rollup-linux-arm-gnueabihf@4.60.4':
335
+ resolution: {integrity: sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==}
336
+ cpu: [arm]
337
+ os: [linux]
338
+ libc: [glibc]
339
+
340
+ '@rollup/rollup-linux-arm-musleabihf@4.60.4':
341
+ resolution: {integrity: sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==}
342
+ cpu: [arm]
343
+ os: [linux]
344
+ libc: [musl]
345
+
346
+ '@rollup/rollup-linux-arm64-gnu@4.60.4':
347
+ resolution: {integrity: sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==}
348
+ cpu: [arm64]
349
+ os: [linux]
350
+ libc: [glibc]
351
+
352
+ '@rollup/rollup-linux-arm64-musl@4.60.4':
353
+ resolution: {integrity: sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==}
354
+ cpu: [arm64]
355
+ os: [linux]
356
+ libc: [musl]
357
+
358
+ '@rollup/rollup-linux-loong64-gnu@4.60.4':
359
+ resolution: {integrity: sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==}
360
+ cpu: [loong64]
361
+ os: [linux]
362
+ libc: [glibc]
363
+
364
+ '@rollup/rollup-linux-loong64-musl@4.60.4':
365
+ resolution: {integrity: sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==}
366
+ cpu: [loong64]
367
+ os: [linux]
368
+ libc: [musl]
369
+
370
+ '@rollup/rollup-linux-ppc64-gnu@4.60.4':
371
+ resolution: {integrity: sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==}
372
+ cpu: [ppc64]
373
+ os: [linux]
374
+ libc: [glibc]
375
+
376
+ '@rollup/rollup-linux-ppc64-musl@4.60.4':
377
+ resolution: {integrity: sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==}
378
+ cpu: [ppc64]
379
+ os: [linux]
380
+ libc: [musl]
381
+
382
+ '@rollup/rollup-linux-riscv64-gnu@4.60.4':
383
+ resolution: {integrity: sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==}
384
+ cpu: [riscv64]
385
+ os: [linux]
386
+ libc: [glibc]
387
+
388
+ '@rollup/rollup-linux-riscv64-musl@4.60.4':
389
+ resolution: {integrity: sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==}
390
+ cpu: [riscv64]
391
+ os: [linux]
392
+ libc: [musl]
393
+
394
+ '@rollup/rollup-linux-s390x-gnu@4.60.4':
395
+ resolution: {integrity: sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==}
396
+ cpu: [s390x]
397
+ os: [linux]
398
+ libc: [glibc]
399
+
400
+ '@rollup/rollup-linux-x64-gnu@4.60.4':
401
+ resolution: {integrity: sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==}
402
+ cpu: [x64]
403
+ os: [linux]
404
+ libc: [glibc]
405
+
406
+ '@rollup/rollup-linux-x64-musl@4.60.4':
407
+ resolution: {integrity: sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==}
408
+ cpu: [x64]
409
+ os: [linux]
410
+ libc: [musl]
411
+
412
+ '@rollup/rollup-openbsd-x64@4.60.4':
413
+ resolution: {integrity: sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==}
414
+ cpu: [x64]
415
+ os: [openbsd]
416
+
417
+ '@rollup/rollup-openharmony-arm64@4.60.4':
418
+ resolution: {integrity: sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==}
419
+ cpu: [arm64]
420
+ os: [openharmony]
421
+
422
+ '@rollup/rollup-win32-arm64-msvc@4.60.4':
423
+ resolution: {integrity: sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==}
424
+ cpu: [arm64]
425
+ os: [win32]
426
+
427
+ '@rollup/rollup-win32-ia32-msvc@4.60.4':
428
+ resolution: {integrity: sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==}
429
+ cpu: [ia32]
430
+ os: [win32]
431
+
432
+ '@rollup/rollup-win32-x64-gnu@4.60.4':
433
+ resolution: {integrity: sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==}
434
+ cpu: [x64]
435
+ os: [win32]
436
+
437
+ '@rollup/rollup-win32-x64-msvc@4.60.4':
438
+ resolution: {integrity: sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==}
439
+ cpu: [x64]
440
+ os: [win32]
441
+
442
+ '@types/babel__core@7.20.5':
443
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
444
+
445
+ '@types/babel__generator@7.27.0':
446
+ resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
447
+
448
+ '@types/babel__template@7.4.4':
449
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
450
+
451
+ '@types/babel__traverse@7.28.0':
452
+ resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
453
+
454
+ '@types/d3-array@3.2.2':
455
+ resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==}
456
+
457
+ '@types/d3-color@3.1.3':
458
+ resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==}
459
+
460
+ '@types/d3-ease@3.0.2':
461
+ resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==}
462
+
463
+ '@types/d3-interpolate@3.0.4':
464
+ resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==}
465
+
466
+ '@types/d3-path@3.1.1':
467
+ resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==}
468
+
469
+ '@types/d3-scale@4.0.9':
470
+ resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==}
471
+
472
+ '@types/d3-shape@3.1.8':
473
+ resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==}
474
+
475
+ '@types/d3-time@3.0.4':
476
+ resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==}
477
+
478
+ '@types/d3-timer@3.0.2':
479
+ resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==}
480
+
481
+ '@types/estree@1.0.8':
482
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
483
+
484
+ '@types/react-dom@19.2.3':
485
+ resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
486
+ peerDependencies:
487
+ '@types/react': ^19.2.0
488
+
489
+ '@types/react@19.2.15':
490
+ resolution: {integrity: sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==}
491
+
492
+ '@vitejs/plugin-react@4.7.0':
493
+ resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
494
+ engines: {node: ^14.18.0 || >=16.0.0}
495
+ peerDependencies:
496
+ vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
497
+
498
+ baseline-browser-mapping@2.10.32:
499
+ resolution: {integrity: sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==}
500
+ engines: {node: '>=6.0.0'}
501
+ hasBin: true
502
+
503
+ browserslist@4.28.2:
504
+ resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==}
505
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
506
+ hasBin: true
507
+
508
+ caniuse-lite@1.0.30001793:
509
+ resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==}
510
+
511
+ clsx@2.1.1:
512
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
513
+ engines: {node: '>=6'}
514
+
515
+ convert-source-map@2.0.0:
516
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
517
+
518
+ cookie@1.1.1:
519
+ resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
520
+ engines: {node: '>=18'}
521
+
522
+ csstype@3.2.3:
523
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
524
+
525
+ d3-array@3.2.4:
526
+ resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==}
527
+ engines: {node: '>=12'}
528
+
529
+ d3-color@3.1.0:
530
+ resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
531
+ engines: {node: '>=12'}
532
+
533
+ d3-ease@3.0.1:
534
+ resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
535
+ engines: {node: '>=12'}
536
+
537
+ d3-format@3.1.2:
538
+ resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==}
539
+ engines: {node: '>=12'}
540
+
541
+ d3-interpolate@3.0.1:
542
+ resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
543
+ engines: {node: '>=12'}
544
+
545
+ d3-path@3.1.0:
546
+ resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==}
547
+ engines: {node: '>=12'}
548
+
549
+ d3-scale@4.0.2:
550
+ resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==}
551
+ engines: {node: '>=12'}
552
+
553
+ d3-shape@3.2.0:
554
+ resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==}
555
+ engines: {node: '>=12'}
556
+
557
+ d3-time-format@4.1.0:
558
+ resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
559
+ engines: {node: '>=12'}
560
+
561
+ d3-time@3.1.0:
562
+ resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==}
563
+ engines: {node: '>=12'}
564
+
565
+ d3-timer@3.0.1:
566
+ resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
567
+ engines: {node: '>=12'}
568
+
569
+ debug@4.4.3:
570
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
571
+ engines: {node: '>=6.0'}
572
+ peerDependencies:
573
+ supports-color: '*'
574
+ peerDependenciesMeta:
575
+ supports-color:
576
+ optional: true
577
+
578
+ decimal.js-light@2.5.1:
579
+ resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==}
580
+
581
+ dom-helpers@5.2.1:
582
+ resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
583
+
584
+ electron-to-chromium@1.5.361:
585
+ resolution: {integrity: sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==}
586
+
587
+ esbuild@0.25.12:
588
+ resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
589
+ engines: {node: '>=18'}
590
+ hasBin: true
591
+
592
+ escalade@3.2.0:
593
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
594
+ engines: {node: '>=6'}
595
+
596
+ eventemitter3@4.0.7:
597
+ resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
598
+
599
+ fast-equals@5.4.0:
600
+ resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==}
601
+ engines: {node: '>=6.0.0'}
602
+
603
+ fdir@6.5.0:
604
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
605
+ engines: {node: '>=12.0.0'}
606
+ peerDependencies:
607
+ picomatch: ^3 || ^4
608
+ peerDependenciesMeta:
609
+ picomatch:
610
+ optional: true
611
+
612
+ fsevents@2.3.3:
613
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
614
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
615
+ os: [darwin]
616
+
617
+ gensync@1.0.0-beta.2:
618
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
619
+ engines: {node: '>=6.9.0'}
620
+
621
+ internmap@2.0.3:
622
+ resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
623
+ engines: {node: '>=12'}
624
+
625
+ js-tokens@4.0.0:
626
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
627
+
628
+ jsesc@3.1.0:
629
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
630
+ engines: {node: '>=6'}
631
+ hasBin: true
632
+
633
+ json5@2.2.3:
634
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
635
+ engines: {node: '>=6'}
636
+ hasBin: true
637
+
638
+ lodash@4.18.1:
639
+ resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==}
640
+
641
+ loose-envify@1.4.0:
642
+ resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
643
+ hasBin: true
644
+
645
+ lru-cache@5.1.1:
646
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
647
+
648
+ ms@2.1.3:
649
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
650
+
651
+ nanoid@3.3.12:
652
+ resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==}
653
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
654
+ hasBin: true
655
+
656
+ node-releases@2.0.46:
657
+ resolution: {integrity: sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==}
658
+ engines: {node: '>=18'}
659
+
660
+ object-assign@4.1.1:
661
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
662
+ engines: {node: '>=0.10.0'}
663
+
664
+ picocolors@1.1.1:
665
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
666
+
667
+ picomatch@4.0.4:
668
+ resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
669
+ engines: {node: '>=12'}
670
+
671
+ postcss@8.5.15:
672
+ resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==}
673
+ engines: {node: ^10 || ^12 || >=14}
674
+
675
+ prop-types@15.8.1:
676
+ resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
677
+
678
+ react-dom@19.2.6:
679
+ resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==}
680
+ peerDependencies:
681
+ react: ^19.2.6
682
+
683
+ react-is@16.13.1:
684
+ resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
685
+
686
+ react-is@18.3.1:
687
+ resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
688
+
689
+ react-refresh@0.17.0:
690
+ resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==}
691
+ engines: {node: '>=0.10.0'}
692
+
693
+ react-router-dom@7.15.1:
694
+ resolution: {integrity: sha512-AzF62gjY6U9rkMq4RfP/r2EVtQ7DMfNMjyOp/flLTCrtRylLiK4wT4pSq6O8rOXZ2eXdZYJPEYe+ifomiv+Igg==}
695
+ engines: {node: '>=20.0.0'}
696
+ peerDependencies:
697
+ react: '>=18'
698
+ react-dom: '>=18'
699
+
700
+ react-router@7.15.1:
701
+ resolution: {integrity: sha512-R8rl9HhgikFYoPJymnUtPXWbnDb3oget6lQnfIoupbt61aT9aOhRkDsY2XRhZRyX1Z/8a5sL74fXmFNm3NRK5A==}
702
+ engines: {node: '>=20.0.0'}
703
+ peerDependencies:
704
+ react: '>=18'
705
+ react-dom: '>=18'
706
+ peerDependenciesMeta:
707
+ react-dom:
708
+ optional: true
709
+
710
+ react-smooth@4.0.4:
711
+ resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==}
712
+ peerDependencies:
713
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
714
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
715
+
716
+ react-transition-group@4.4.5:
717
+ resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
718
+ peerDependencies:
719
+ react: '>=16.6.0'
720
+ react-dom: '>=16.6.0'
721
+
722
+ react@19.2.6:
723
+ resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==}
724
+ engines: {node: '>=0.10.0'}
725
+
726
+ recharts-scale@0.4.5:
727
+ resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==}
728
+
729
+ recharts@2.15.4:
730
+ resolution: {integrity: sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==}
731
+ engines: {node: '>=14'}
732
+ deprecated: 1.x and 2.x branches are no longer active. Bump to Recharts v3 to receive latest features and bugfixes. See https://github.com/recharts/recharts/wiki/3.0-migration-guide
733
+ peerDependencies:
734
+ react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
735
+ react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
736
+
737
+ rollup@4.60.4:
738
+ resolution: {integrity: sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==}
739
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
740
+ hasBin: true
741
+
742
+ scheduler@0.27.0:
743
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
744
+
745
+ semver@6.3.1:
746
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
747
+ hasBin: true
748
+
749
+ set-cookie-parser@2.7.2:
750
+ resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
751
+
752
+ source-map-js@1.2.1:
753
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
754
+ engines: {node: '>=0.10.0'}
755
+
756
+ tiny-invariant@1.3.3:
757
+ resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
758
+
759
+ tinyglobby@0.2.16:
760
+ resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
761
+ engines: {node: '>=12.0.0'}
762
+
763
+ typescript@5.7.3:
764
+ resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==}
765
+ engines: {node: '>=14.17'}
766
+ hasBin: true
767
+
768
+ update-browserslist-db@1.2.3:
769
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
770
+ hasBin: true
771
+ peerDependencies:
772
+ browserslist: '>= 4.21.0'
773
+
774
+ victory-vendor@36.9.2:
775
+ resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==}
776
+
777
+ vite@6.4.2:
778
+ resolution: {integrity: sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==}
779
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
780
+ hasBin: true
781
+ peerDependencies:
782
+ '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
783
+ jiti: '>=1.21.0'
784
+ less: '*'
785
+ lightningcss: ^1.21.0
786
+ sass: '*'
787
+ sass-embedded: '*'
788
+ stylus: '*'
789
+ sugarss: '*'
790
+ terser: ^5.16.0
791
+ tsx: ^4.8.1
792
+ yaml: ^2.4.2
793
+ peerDependenciesMeta:
794
+ '@types/node':
795
+ optional: true
796
+ jiti:
797
+ optional: true
798
+ less:
799
+ optional: true
800
+ lightningcss:
801
+ optional: true
802
+ sass:
803
+ optional: true
804
+ sass-embedded:
805
+ optional: true
806
+ stylus:
807
+ optional: true
808
+ sugarss:
809
+ optional: true
810
+ terser:
811
+ optional: true
812
+ tsx:
813
+ optional: true
814
+ yaml:
815
+ optional: true
816
+
817
+ yallist@3.1.1:
818
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
819
+
820
+ snapshots:
821
+
822
+ '@babel/code-frame@7.29.7':
823
+ dependencies:
824
+ '@babel/helper-validator-identifier': 7.29.7
825
+ js-tokens: 4.0.0
826
+ picocolors: 1.1.1
827
+
828
+ '@babel/compat-data@7.29.7': {}
829
+
830
+ '@babel/core@7.29.7':
831
+ dependencies:
832
+ '@babel/code-frame': 7.29.7
833
+ '@babel/generator': 7.29.7
834
+ '@babel/helper-compilation-targets': 7.29.7
835
+ '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
836
+ '@babel/helpers': 7.29.7
837
+ '@babel/parser': 7.29.7
838
+ '@babel/template': 7.29.7
839
+ '@babel/traverse': 7.29.7
840
+ '@babel/types': 7.29.7
841
+ '@jridgewell/remapping': 2.3.5
842
+ convert-source-map: 2.0.0
843
+ debug: 4.4.3
844
+ gensync: 1.0.0-beta.2
845
+ json5: 2.2.3
846
+ semver: 6.3.1
847
+ transitivePeerDependencies:
848
+ - supports-color
849
+
850
+ '@babel/generator@7.29.7':
851
+ dependencies:
852
+ '@babel/parser': 7.29.7
853
+ '@babel/types': 7.29.7
854
+ '@jridgewell/gen-mapping': 0.3.13
855
+ '@jridgewell/trace-mapping': 0.3.31
856
+ jsesc: 3.1.0
857
+
858
+ '@babel/helper-compilation-targets@7.29.7':
859
+ dependencies:
860
+ '@babel/compat-data': 7.29.7
861
+ '@babel/helper-validator-option': 7.29.7
862
+ browserslist: 4.28.2
863
+ lru-cache: 5.1.1
864
+ semver: 6.3.1
865
+
866
+ '@babel/helper-globals@7.29.7': {}
867
+
868
+ '@babel/helper-module-imports@7.29.7':
869
+ dependencies:
870
+ '@babel/traverse': 7.29.7
871
+ '@babel/types': 7.29.7
872
+ transitivePeerDependencies:
873
+ - supports-color
874
+
875
+ '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)':
876
+ dependencies:
877
+ '@babel/core': 7.29.7
878
+ '@babel/helper-module-imports': 7.29.7
879
+ '@babel/helper-validator-identifier': 7.29.7
880
+ '@babel/traverse': 7.29.7
881
+ transitivePeerDependencies:
882
+ - supports-color
883
+
884
+ '@babel/helper-plugin-utils@7.29.7': {}
885
+
886
+ '@babel/helper-string-parser@7.29.7': {}
887
+
888
+ '@babel/helper-validator-identifier@7.29.7': {}
889
+
890
+ '@babel/helper-validator-option@7.29.7': {}
891
+
892
+ '@babel/helpers@7.29.7':
893
+ dependencies:
894
+ '@babel/template': 7.29.7
895
+ '@babel/types': 7.29.7
896
+
897
+ '@babel/parser@7.29.7':
898
+ dependencies:
899
+ '@babel/types': 7.29.7
900
+
901
+ '@babel/plugin-transform-react-jsx-self@7.29.7(@babel/core@7.29.7)':
902
+ dependencies:
903
+ '@babel/core': 7.29.7
904
+ '@babel/helper-plugin-utils': 7.29.7
905
+
906
+ '@babel/plugin-transform-react-jsx-source@7.29.7(@babel/core@7.29.7)':
907
+ dependencies:
908
+ '@babel/core': 7.29.7
909
+ '@babel/helper-plugin-utils': 7.29.7
910
+
911
+ '@babel/runtime@7.29.7': {}
912
+
913
+ '@babel/template@7.29.7':
914
+ dependencies:
915
+ '@babel/code-frame': 7.29.7
916
+ '@babel/parser': 7.29.7
917
+ '@babel/types': 7.29.7
918
+
919
+ '@babel/traverse@7.29.7':
920
+ dependencies:
921
+ '@babel/code-frame': 7.29.7
922
+ '@babel/generator': 7.29.7
923
+ '@babel/helper-globals': 7.29.7
924
+ '@babel/parser': 7.29.7
925
+ '@babel/template': 7.29.7
926
+ '@babel/types': 7.29.7
927
+ debug: 4.4.3
928
+ transitivePeerDependencies:
929
+ - supports-color
930
+
931
+ '@babel/types@7.29.7':
932
+ dependencies:
933
+ '@babel/helper-string-parser': 7.29.7
934
+ '@babel/helper-validator-identifier': 7.29.7
935
+
936
+ '@esbuild/aix-ppc64@0.25.12':
937
+ optional: true
938
+
939
+ '@esbuild/android-arm64@0.25.12':
940
+ optional: true
941
+
942
+ '@esbuild/android-arm@0.25.12':
943
+ optional: true
944
+
945
+ '@esbuild/android-x64@0.25.12':
946
+ optional: true
947
+
948
+ '@esbuild/darwin-arm64@0.25.12':
949
+ optional: true
950
+
951
+ '@esbuild/darwin-x64@0.25.12':
952
+ optional: true
953
+
954
+ '@esbuild/freebsd-arm64@0.25.12':
955
+ optional: true
956
+
957
+ '@esbuild/freebsd-x64@0.25.12':
958
+ optional: true
959
+
960
+ '@esbuild/linux-arm64@0.25.12':
961
+ optional: true
962
+
963
+ '@esbuild/linux-arm@0.25.12':
964
+ optional: true
965
+
966
+ '@esbuild/linux-ia32@0.25.12':
967
+ optional: true
968
+
969
+ '@esbuild/linux-loong64@0.25.12':
970
+ optional: true
971
+
972
+ '@esbuild/linux-mips64el@0.25.12':
973
+ optional: true
974
+
975
+ '@esbuild/linux-ppc64@0.25.12':
976
+ optional: true
977
+
978
+ '@esbuild/linux-riscv64@0.25.12':
979
+ optional: true
980
+
981
+ '@esbuild/linux-s390x@0.25.12':
982
+ optional: true
983
+
984
+ '@esbuild/linux-x64@0.25.12':
985
+ optional: true
986
+
987
+ '@esbuild/netbsd-arm64@0.25.12':
988
+ optional: true
989
+
990
+ '@esbuild/netbsd-x64@0.25.12':
991
+ optional: true
992
+
993
+ '@esbuild/openbsd-arm64@0.25.12':
994
+ optional: true
995
+
996
+ '@esbuild/openbsd-x64@0.25.12':
997
+ optional: true
998
+
999
+ '@esbuild/openharmony-arm64@0.25.12':
1000
+ optional: true
1001
+
1002
+ '@esbuild/sunos-x64@0.25.12':
1003
+ optional: true
1004
+
1005
+ '@esbuild/win32-arm64@0.25.12':
1006
+ optional: true
1007
+
1008
+ '@esbuild/win32-ia32@0.25.12':
1009
+ optional: true
1010
+
1011
+ '@esbuild/win32-x64@0.25.12':
1012
+ optional: true
1013
+
1014
+ '@jridgewell/gen-mapping@0.3.13':
1015
+ dependencies:
1016
+ '@jridgewell/sourcemap-codec': 1.5.5
1017
+ '@jridgewell/trace-mapping': 0.3.31
1018
+
1019
+ '@jridgewell/remapping@2.3.5':
1020
+ dependencies:
1021
+ '@jridgewell/gen-mapping': 0.3.13
1022
+ '@jridgewell/trace-mapping': 0.3.31
1023
+
1024
+ '@jridgewell/resolve-uri@3.1.2': {}
1025
+
1026
+ '@jridgewell/sourcemap-codec@1.5.5': {}
1027
+
1028
+ '@jridgewell/trace-mapping@0.3.31':
1029
+ dependencies:
1030
+ '@jridgewell/resolve-uri': 3.1.2
1031
+ '@jridgewell/sourcemap-codec': 1.5.5
1032
+
1033
+ '@rolldown/pluginutils@1.0.0-beta.27': {}
1034
+
1035
+ '@rollup/rollup-android-arm-eabi@4.60.4':
1036
+ optional: true
1037
+
1038
+ '@rollup/rollup-android-arm64@4.60.4':
1039
+ optional: true
1040
+
1041
+ '@rollup/rollup-darwin-arm64@4.60.4':
1042
+ optional: true
1043
+
1044
+ '@rollup/rollup-darwin-x64@4.60.4':
1045
+ optional: true
1046
+
1047
+ '@rollup/rollup-freebsd-arm64@4.60.4':
1048
+ optional: true
1049
+
1050
+ '@rollup/rollup-freebsd-x64@4.60.4':
1051
+ optional: true
1052
+
1053
+ '@rollup/rollup-linux-arm-gnueabihf@4.60.4':
1054
+ optional: true
1055
+
1056
+ '@rollup/rollup-linux-arm-musleabihf@4.60.4':
1057
+ optional: true
1058
+
1059
+ '@rollup/rollup-linux-arm64-gnu@4.60.4':
1060
+ optional: true
1061
+
1062
+ '@rollup/rollup-linux-arm64-musl@4.60.4':
1063
+ optional: true
1064
+
1065
+ '@rollup/rollup-linux-loong64-gnu@4.60.4':
1066
+ optional: true
1067
+
1068
+ '@rollup/rollup-linux-loong64-musl@4.60.4':
1069
+ optional: true
1070
+
1071
+ '@rollup/rollup-linux-ppc64-gnu@4.60.4':
1072
+ optional: true
1073
+
1074
+ '@rollup/rollup-linux-ppc64-musl@4.60.4':
1075
+ optional: true
1076
+
1077
+ '@rollup/rollup-linux-riscv64-gnu@4.60.4':
1078
+ optional: true
1079
+
1080
+ '@rollup/rollup-linux-riscv64-musl@4.60.4':
1081
+ optional: true
1082
+
1083
+ '@rollup/rollup-linux-s390x-gnu@4.60.4':
1084
+ optional: true
1085
+
1086
+ '@rollup/rollup-linux-x64-gnu@4.60.4':
1087
+ optional: true
1088
+
1089
+ '@rollup/rollup-linux-x64-musl@4.60.4':
1090
+ optional: true
1091
+
1092
+ '@rollup/rollup-openbsd-x64@4.60.4':
1093
+ optional: true
1094
+
1095
+ '@rollup/rollup-openharmony-arm64@4.60.4':
1096
+ optional: true
1097
+
1098
+ '@rollup/rollup-win32-arm64-msvc@4.60.4':
1099
+ optional: true
1100
+
1101
+ '@rollup/rollup-win32-ia32-msvc@4.60.4':
1102
+ optional: true
1103
+
1104
+ '@rollup/rollup-win32-x64-gnu@4.60.4':
1105
+ optional: true
1106
+
1107
+ '@rollup/rollup-win32-x64-msvc@4.60.4':
1108
+ optional: true
1109
+
1110
+ '@types/babel__core@7.20.5':
1111
+ dependencies:
1112
+ '@babel/parser': 7.29.7
1113
+ '@babel/types': 7.29.7
1114
+ '@types/babel__generator': 7.27.0
1115
+ '@types/babel__template': 7.4.4
1116
+ '@types/babel__traverse': 7.28.0
1117
+
1118
+ '@types/babel__generator@7.27.0':
1119
+ dependencies:
1120
+ '@babel/types': 7.29.7
1121
+
1122
+ '@types/babel__template@7.4.4':
1123
+ dependencies:
1124
+ '@babel/parser': 7.29.7
1125
+ '@babel/types': 7.29.7
1126
+
1127
+ '@types/babel__traverse@7.28.0':
1128
+ dependencies:
1129
+ '@babel/types': 7.29.7
1130
+
1131
+ '@types/d3-array@3.2.2': {}
1132
+
1133
+ '@types/d3-color@3.1.3': {}
1134
+
1135
+ '@types/d3-ease@3.0.2': {}
1136
+
1137
+ '@types/d3-interpolate@3.0.4':
1138
+ dependencies:
1139
+ '@types/d3-color': 3.1.3
1140
+
1141
+ '@types/d3-path@3.1.1': {}
1142
+
1143
+ '@types/d3-scale@4.0.9':
1144
+ dependencies:
1145
+ '@types/d3-time': 3.0.4
1146
+
1147
+ '@types/d3-shape@3.1.8':
1148
+ dependencies:
1149
+ '@types/d3-path': 3.1.1
1150
+
1151
+ '@types/d3-time@3.0.4': {}
1152
+
1153
+ '@types/d3-timer@3.0.2': {}
1154
+
1155
+ '@types/estree@1.0.8': {}
1156
+
1157
+ '@types/react-dom@19.2.3(@types/react@19.2.15)':
1158
+ dependencies:
1159
+ '@types/react': 19.2.15
1160
+
1161
+ '@types/react@19.2.15':
1162
+ dependencies:
1163
+ csstype: 3.2.3
1164
+
1165
+ '@vitejs/plugin-react@4.7.0(vite@6.4.2)':
1166
+ dependencies:
1167
+ '@babel/core': 7.29.7
1168
+ '@babel/plugin-transform-react-jsx-self': 7.29.7(@babel/core@7.29.7)
1169
+ '@babel/plugin-transform-react-jsx-source': 7.29.7(@babel/core@7.29.7)
1170
+ '@rolldown/pluginutils': 1.0.0-beta.27
1171
+ '@types/babel__core': 7.20.5
1172
+ react-refresh: 0.17.0
1173
+ vite: 6.4.2
1174
+ transitivePeerDependencies:
1175
+ - supports-color
1176
+
1177
+ baseline-browser-mapping@2.10.32: {}
1178
+
1179
+ browserslist@4.28.2:
1180
+ dependencies:
1181
+ baseline-browser-mapping: 2.10.32
1182
+ caniuse-lite: 1.0.30001793
1183
+ electron-to-chromium: 1.5.361
1184
+ node-releases: 2.0.46
1185
+ update-browserslist-db: 1.2.3(browserslist@4.28.2)
1186
+
1187
+ caniuse-lite@1.0.30001793: {}
1188
+
1189
+ clsx@2.1.1: {}
1190
+
1191
+ convert-source-map@2.0.0: {}
1192
+
1193
+ cookie@1.1.1: {}
1194
+
1195
+ csstype@3.2.3: {}
1196
+
1197
+ d3-array@3.2.4:
1198
+ dependencies:
1199
+ internmap: 2.0.3
1200
+
1201
+ d3-color@3.1.0: {}
1202
+
1203
+ d3-ease@3.0.1: {}
1204
+
1205
+ d3-format@3.1.2: {}
1206
+
1207
+ d3-interpolate@3.0.1:
1208
+ dependencies:
1209
+ d3-color: 3.1.0
1210
+
1211
+ d3-path@3.1.0: {}
1212
+
1213
+ d3-scale@4.0.2:
1214
+ dependencies:
1215
+ d3-array: 3.2.4
1216
+ d3-format: 3.1.2
1217
+ d3-interpolate: 3.0.1
1218
+ d3-time: 3.1.0
1219
+ d3-time-format: 4.1.0
1220
+
1221
+ d3-shape@3.2.0:
1222
+ dependencies:
1223
+ d3-path: 3.1.0
1224
+
1225
+ d3-time-format@4.1.0:
1226
+ dependencies:
1227
+ d3-time: 3.1.0
1228
+
1229
+ d3-time@3.1.0:
1230
+ dependencies:
1231
+ d3-array: 3.2.4
1232
+
1233
+ d3-timer@3.0.1: {}
1234
+
1235
+ debug@4.4.3:
1236
+ dependencies:
1237
+ ms: 2.1.3
1238
+
1239
+ decimal.js-light@2.5.1: {}
1240
+
1241
+ dom-helpers@5.2.1:
1242
+ dependencies:
1243
+ '@babel/runtime': 7.29.7
1244
+ csstype: 3.2.3
1245
+
1246
+ electron-to-chromium@1.5.361: {}
1247
+
1248
+ esbuild@0.25.12:
1249
+ optionalDependencies:
1250
+ '@esbuild/aix-ppc64': 0.25.12
1251
+ '@esbuild/android-arm': 0.25.12
1252
+ '@esbuild/android-arm64': 0.25.12
1253
+ '@esbuild/android-x64': 0.25.12
1254
+ '@esbuild/darwin-arm64': 0.25.12
1255
+ '@esbuild/darwin-x64': 0.25.12
1256
+ '@esbuild/freebsd-arm64': 0.25.12
1257
+ '@esbuild/freebsd-x64': 0.25.12
1258
+ '@esbuild/linux-arm': 0.25.12
1259
+ '@esbuild/linux-arm64': 0.25.12
1260
+ '@esbuild/linux-ia32': 0.25.12
1261
+ '@esbuild/linux-loong64': 0.25.12
1262
+ '@esbuild/linux-mips64el': 0.25.12
1263
+ '@esbuild/linux-ppc64': 0.25.12
1264
+ '@esbuild/linux-riscv64': 0.25.12
1265
+ '@esbuild/linux-s390x': 0.25.12
1266
+ '@esbuild/linux-x64': 0.25.12
1267
+ '@esbuild/netbsd-arm64': 0.25.12
1268
+ '@esbuild/netbsd-x64': 0.25.12
1269
+ '@esbuild/openbsd-arm64': 0.25.12
1270
+ '@esbuild/openbsd-x64': 0.25.12
1271
+ '@esbuild/openharmony-arm64': 0.25.12
1272
+ '@esbuild/sunos-x64': 0.25.12
1273
+ '@esbuild/win32-arm64': 0.25.12
1274
+ '@esbuild/win32-ia32': 0.25.12
1275
+ '@esbuild/win32-x64': 0.25.12
1276
+
1277
+ escalade@3.2.0: {}
1278
+
1279
+ eventemitter3@4.0.7: {}
1280
+
1281
+ fast-equals@5.4.0: {}
1282
+
1283
+ fdir@6.5.0(picomatch@4.0.4):
1284
+ optionalDependencies:
1285
+ picomatch: 4.0.4
1286
+
1287
+ fsevents@2.3.3:
1288
+ optional: true
1289
+
1290
+ gensync@1.0.0-beta.2: {}
1291
+
1292
+ internmap@2.0.3: {}
1293
+
1294
+ js-tokens@4.0.0: {}
1295
+
1296
+ jsesc@3.1.0: {}
1297
+
1298
+ json5@2.2.3: {}
1299
+
1300
+ lodash@4.18.1: {}
1301
+
1302
+ loose-envify@1.4.0:
1303
+ dependencies:
1304
+ js-tokens: 4.0.0
1305
+
1306
+ lru-cache@5.1.1:
1307
+ dependencies:
1308
+ yallist: 3.1.1
1309
+
1310
+ ms@2.1.3: {}
1311
+
1312
+ nanoid@3.3.12: {}
1313
+
1314
+ node-releases@2.0.46: {}
1315
+
1316
+ object-assign@4.1.1: {}
1317
+
1318
+ picocolors@1.1.1: {}
1319
+
1320
+ picomatch@4.0.4: {}
1321
+
1322
+ postcss@8.5.15:
1323
+ dependencies:
1324
+ nanoid: 3.3.12
1325
+ picocolors: 1.1.1
1326
+ source-map-js: 1.2.1
1327
+
1328
+ prop-types@15.8.1:
1329
+ dependencies:
1330
+ loose-envify: 1.4.0
1331
+ object-assign: 4.1.1
1332
+ react-is: 16.13.1
1333
+
1334
+ react-dom@19.2.6(react@19.2.6):
1335
+ dependencies:
1336
+ react: 19.2.6
1337
+ scheduler: 0.27.0
1338
+
1339
+ react-is@16.13.1: {}
1340
+
1341
+ react-is@18.3.1: {}
1342
+
1343
+ react-refresh@0.17.0: {}
1344
+
1345
+ react-router-dom@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
1346
+ dependencies:
1347
+ react: 19.2.6
1348
+ react-dom: 19.2.6(react@19.2.6)
1349
+ react-router: 7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
1350
+
1351
+ react-router@7.15.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
1352
+ dependencies:
1353
+ cookie: 1.1.1
1354
+ react: 19.2.6
1355
+ set-cookie-parser: 2.7.2
1356
+ optionalDependencies:
1357
+ react-dom: 19.2.6(react@19.2.6)
1358
+
1359
+ react-smooth@4.0.4(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
1360
+ dependencies:
1361
+ fast-equals: 5.4.0
1362
+ prop-types: 15.8.1
1363
+ react: 19.2.6
1364
+ react-dom: 19.2.6(react@19.2.6)
1365
+ react-transition-group: 4.4.5(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
1366
+
1367
+ react-transition-group@4.4.5(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
1368
+ dependencies:
1369
+ '@babel/runtime': 7.29.7
1370
+ dom-helpers: 5.2.1
1371
+ loose-envify: 1.4.0
1372
+ prop-types: 15.8.1
1373
+ react: 19.2.6
1374
+ react-dom: 19.2.6(react@19.2.6)
1375
+
1376
+ react@19.2.6: {}
1377
+
1378
+ recharts-scale@0.4.5:
1379
+ dependencies:
1380
+ decimal.js-light: 2.5.1
1381
+
1382
+ recharts@2.15.4(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
1383
+ dependencies:
1384
+ clsx: 2.1.1
1385
+ eventemitter3: 4.0.7
1386
+ lodash: 4.18.1
1387
+ react: 19.2.6
1388
+ react-dom: 19.2.6(react@19.2.6)
1389
+ react-is: 18.3.1
1390
+ react-smooth: 4.0.4(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
1391
+ recharts-scale: 0.4.5
1392
+ tiny-invariant: 1.3.3
1393
+ victory-vendor: 36.9.2
1394
+
1395
+ rollup@4.60.4:
1396
+ dependencies:
1397
+ '@types/estree': 1.0.8
1398
+ optionalDependencies:
1399
+ '@rollup/rollup-android-arm-eabi': 4.60.4
1400
+ '@rollup/rollup-android-arm64': 4.60.4
1401
+ '@rollup/rollup-darwin-arm64': 4.60.4
1402
+ '@rollup/rollup-darwin-x64': 4.60.4
1403
+ '@rollup/rollup-freebsd-arm64': 4.60.4
1404
+ '@rollup/rollup-freebsd-x64': 4.60.4
1405
+ '@rollup/rollup-linux-arm-gnueabihf': 4.60.4
1406
+ '@rollup/rollup-linux-arm-musleabihf': 4.60.4
1407
+ '@rollup/rollup-linux-arm64-gnu': 4.60.4
1408
+ '@rollup/rollup-linux-arm64-musl': 4.60.4
1409
+ '@rollup/rollup-linux-loong64-gnu': 4.60.4
1410
+ '@rollup/rollup-linux-loong64-musl': 4.60.4
1411
+ '@rollup/rollup-linux-ppc64-gnu': 4.60.4
1412
+ '@rollup/rollup-linux-ppc64-musl': 4.60.4
1413
+ '@rollup/rollup-linux-riscv64-gnu': 4.60.4
1414
+ '@rollup/rollup-linux-riscv64-musl': 4.60.4
1415
+ '@rollup/rollup-linux-s390x-gnu': 4.60.4
1416
+ '@rollup/rollup-linux-x64-gnu': 4.60.4
1417
+ '@rollup/rollup-linux-x64-musl': 4.60.4
1418
+ '@rollup/rollup-openbsd-x64': 4.60.4
1419
+ '@rollup/rollup-openharmony-arm64': 4.60.4
1420
+ '@rollup/rollup-win32-arm64-msvc': 4.60.4
1421
+ '@rollup/rollup-win32-ia32-msvc': 4.60.4
1422
+ '@rollup/rollup-win32-x64-gnu': 4.60.4
1423
+ '@rollup/rollup-win32-x64-msvc': 4.60.4
1424
+ fsevents: 2.3.3
1425
+
1426
+ scheduler@0.27.0: {}
1427
+
1428
+ semver@6.3.1: {}
1429
+
1430
+ set-cookie-parser@2.7.2: {}
1431
+
1432
+ source-map-js@1.2.1: {}
1433
+
1434
+ tiny-invariant@1.3.3: {}
1435
+
1436
+ tinyglobby@0.2.16:
1437
+ dependencies:
1438
+ fdir: 6.5.0(picomatch@4.0.4)
1439
+ picomatch: 4.0.4
1440
+
1441
+ typescript@5.7.3: {}
1442
+
1443
+ update-browserslist-db@1.2.3(browserslist@4.28.2):
1444
+ dependencies:
1445
+ browserslist: 4.28.2
1446
+ escalade: 3.2.0
1447
+ picocolors: 1.1.1
1448
+
1449
+ victory-vendor@36.9.2:
1450
+ dependencies:
1451
+ '@types/d3-array': 3.2.2
1452
+ '@types/d3-ease': 3.0.2
1453
+ '@types/d3-interpolate': 3.0.4
1454
+ '@types/d3-scale': 4.0.9
1455
+ '@types/d3-shape': 3.1.8
1456
+ '@types/d3-time': 3.0.4
1457
+ '@types/d3-timer': 3.0.2
1458
+ d3-array: 3.2.4
1459
+ d3-ease: 3.0.1
1460
+ d3-interpolate: 3.0.1
1461
+ d3-scale: 4.0.2
1462
+ d3-shape: 3.2.0
1463
+ d3-time: 3.1.0
1464
+ d3-timer: 3.0.1
1465
+
1466
+ vite@6.4.2:
1467
+ dependencies:
1468
+ esbuild: 0.25.12
1469
+ fdir: 6.5.0(picomatch@4.0.4)
1470
+ picomatch: 4.0.4
1471
+ postcss: 8.5.15
1472
+ rollup: 4.60.4
1473
+ tinyglobby: 0.2.16
1474
+ optionalDependencies:
1475
+ fsevents: 2.3.3
1476
+
1477
+ yallist@3.1.1: {}