brianronan HF Staff commited on
Commit
bee47ce
·
1 Parent(s): df94f45
README.md CHANGED
@@ -1,5 +1,5 @@
1
  ---
2
- title: Gcp Cdn Rollout Status
3
  emoji: 🔥
4
  colorFrom: pink
5
  colorTo: gray
@@ -7,6 +7,7 @@ sdk: static
7
  pinned: false
8
  app_build_command: npm run build
9
  app_file: dist/index.html
 
10
  ---
11
 
12
  # Svelte + TS + Vite
 
1
  ---
2
+ title: Gcp Gateway Status
3
  emoji: 🔥
4
  colorFrom: pink
5
  colorTo: gray
 
7
  pinned: false
8
  app_build_command: npm run build
9
  app_file: dist/index.html
10
+ short_description: Visualizing the HF CDN GCP deployment rollout status
11
  ---
12
 
13
  # Svelte + TS + Vite
package-lock.json ADDED
@@ -0,0 +1,1498 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "svelte",
3
+ "version": "0.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "svelte",
9
+ "version": "0.0.0",
10
+ "dependencies": {
11
+ "@highcharts/map-collection": "^2.3.2",
12
+ "@highcharts/svelte": "^1.1.1",
13
+ "chart.js": "^4.5.1",
14
+ "highcharts": "^12.4.0",
15
+ "lodash": "^4.17.21"
16
+ },
17
+ "devDependencies": {
18
+ "@sveltejs/vite-plugin-svelte": "^5.0.3",
19
+ "@tsconfig/svelte": "^5.0.4",
20
+ "svelte": "^5.28.1",
21
+ "svelte-check": "^4.1.6",
22
+ "typescript": "~5.8.3",
23
+ "vite": "^6.3.5"
24
+ }
25
+ },
26
+ "node_modules/@esbuild/aix-ppc64": {
27
+ "version": "0.25.12",
28
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
29
+ "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
30
+ "cpu": [
31
+ "ppc64"
32
+ ],
33
+ "dev": true,
34
+ "license": "MIT",
35
+ "optional": true,
36
+ "os": [
37
+ "aix"
38
+ ],
39
+ "engines": {
40
+ "node": ">=18"
41
+ }
42
+ },
43
+ "node_modules/@esbuild/android-arm": {
44
+ "version": "0.25.12",
45
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
46
+ "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
47
+ "cpu": [
48
+ "arm"
49
+ ],
50
+ "dev": true,
51
+ "license": "MIT",
52
+ "optional": true,
53
+ "os": [
54
+ "android"
55
+ ],
56
+ "engines": {
57
+ "node": ">=18"
58
+ }
59
+ },
60
+ "node_modules/@esbuild/android-arm64": {
61
+ "version": "0.25.12",
62
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
63
+ "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
64
+ "cpu": [
65
+ "arm64"
66
+ ],
67
+ "dev": true,
68
+ "license": "MIT",
69
+ "optional": true,
70
+ "os": [
71
+ "android"
72
+ ],
73
+ "engines": {
74
+ "node": ">=18"
75
+ }
76
+ },
77
+ "node_modules/@esbuild/android-x64": {
78
+ "version": "0.25.12",
79
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
80
+ "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
81
+ "cpu": [
82
+ "x64"
83
+ ],
84
+ "dev": true,
85
+ "license": "MIT",
86
+ "optional": true,
87
+ "os": [
88
+ "android"
89
+ ],
90
+ "engines": {
91
+ "node": ">=18"
92
+ }
93
+ },
94
+ "node_modules/@esbuild/darwin-arm64": {
95
+ "version": "0.25.12",
96
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
97
+ "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
98
+ "cpu": [
99
+ "arm64"
100
+ ],
101
+ "dev": true,
102
+ "license": "MIT",
103
+ "optional": true,
104
+ "os": [
105
+ "darwin"
106
+ ],
107
+ "engines": {
108
+ "node": ">=18"
109
+ }
110
+ },
111
+ "node_modules/@esbuild/darwin-x64": {
112
+ "version": "0.25.12",
113
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
114
+ "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
115
+ "cpu": [
116
+ "x64"
117
+ ],
118
+ "dev": true,
119
+ "license": "MIT",
120
+ "optional": true,
121
+ "os": [
122
+ "darwin"
123
+ ],
124
+ "engines": {
125
+ "node": ">=18"
126
+ }
127
+ },
128
+ "node_modules/@esbuild/freebsd-arm64": {
129
+ "version": "0.25.12",
130
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
131
+ "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
132
+ "cpu": [
133
+ "arm64"
134
+ ],
135
+ "dev": true,
136
+ "license": "MIT",
137
+ "optional": true,
138
+ "os": [
139
+ "freebsd"
140
+ ],
141
+ "engines": {
142
+ "node": ">=18"
143
+ }
144
+ },
145
+ "node_modules/@esbuild/freebsd-x64": {
146
+ "version": "0.25.12",
147
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
148
+ "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
149
+ "cpu": [
150
+ "x64"
151
+ ],
152
+ "dev": true,
153
+ "license": "MIT",
154
+ "optional": true,
155
+ "os": [
156
+ "freebsd"
157
+ ],
158
+ "engines": {
159
+ "node": ">=18"
160
+ }
161
+ },
162
+ "node_modules/@esbuild/linux-arm": {
163
+ "version": "0.25.12",
164
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
165
+ "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
166
+ "cpu": [
167
+ "arm"
168
+ ],
169
+ "dev": true,
170
+ "license": "MIT",
171
+ "optional": true,
172
+ "os": [
173
+ "linux"
174
+ ],
175
+ "engines": {
176
+ "node": ">=18"
177
+ }
178
+ },
179
+ "node_modules/@esbuild/linux-arm64": {
180
+ "version": "0.25.12",
181
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
182
+ "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
183
+ "cpu": [
184
+ "arm64"
185
+ ],
186
+ "dev": true,
187
+ "license": "MIT",
188
+ "optional": true,
189
+ "os": [
190
+ "linux"
191
+ ],
192
+ "engines": {
193
+ "node": ">=18"
194
+ }
195
+ },
196
+ "node_modules/@esbuild/linux-ia32": {
197
+ "version": "0.25.12",
198
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
199
+ "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
200
+ "cpu": [
201
+ "ia32"
202
+ ],
203
+ "dev": true,
204
+ "license": "MIT",
205
+ "optional": true,
206
+ "os": [
207
+ "linux"
208
+ ],
209
+ "engines": {
210
+ "node": ">=18"
211
+ }
212
+ },
213
+ "node_modules/@esbuild/linux-loong64": {
214
+ "version": "0.25.12",
215
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
216
+ "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
217
+ "cpu": [
218
+ "loong64"
219
+ ],
220
+ "dev": true,
221
+ "license": "MIT",
222
+ "optional": true,
223
+ "os": [
224
+ "linux"
225
+ ],
226
+ "engines": {
227
+ "node": ">=18"
228
+ }
229
+ },
230
+ "node_modules/@esbuild/linux-mips64el": {
231
+ "version": "0.25.12",
232
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
233
+ "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
234
+ "cpu": [
235
+ "mips64el"
236
+ ],
237
+ "dev": true,
238
+ "license": "MIT",
239
+ "optional": true,
240
+ "os": [
241
+ "linux"
242
+ ],
243
+ "engines": {
244
+ "node": ">=18"
245
+ }
246
+ },
247
+ "node_modules/@esbuild/linux-ppc64": {
248
+ "version": "0.25.12",
249
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
250
+ "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
251
+ "cpu": [
252
+ "ppc64"
253
+ ],
254
+ "dev": true,
255
+ "license": "MIT",
256
+ "optional": true,
257
+ "os": [
258
+ "linux"
259
+ ],
260
+ "engines": {
261
+ "node": ">=18"
262
+ }
263
+ },
264
+ "node_modules/@esbuild/linux-riscv64": {
265
+ "version": "0.25.12",
266
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
267
+ "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
268
+ "cpu": [
269
+ "riscv64"
270
+ ],
271
+ "dev": true,
272
+ "license": "MIT",
273
+ "optional": true,
274
+ "os": [
275
+ "linux"
276
+ ],
277
+ "engines": {
278
+ "node": ">=18"
279
+ }
280
+ },
281
+ "node_modules/@esbuild/linux-s390x": {
282
+ "version": "0.25.12",
283
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
284
+ "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
285
+ "cpu": [
286
+ "s390x"
287
+ ],
288
+ "dev": true,
289
+ "license": "MIT",
290
+ "optional": true,
291
+ "os": [
292
+ "linux"
293
+ ],
294
+ "engines": {
295
+ "node": ">=18"
296
+ }
297
+ },
298
+ "node_modules/@esbuild/linux-x64": {
299
+ "version": "0.25.12",
300
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
301
+ "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
302
+ "cpu": [
303
+ "x64"
304
+ ],
305
+ "dev": true,
306
+ "license": "MIT",
307
+ "optional": true,
308
+ "os": [
309
+ "linux"
310
+ ],
311
+ "engines": {
312
+ "node": ">=18"
313
+ }
314
+ },
315
+ "node_modules/@esbuild/netbsd-arm64": {
316
+ "version": "0.25.12",
317
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
318
+ "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
319
+ "cpu": [
320
+ "arm64"
321
+ ],
322
+ "dev": true,
323
+ "license": "MIT",
324
+ "optional": true,
325
+ "os": [
326
+ "netbsd"
327
+ ],
328
+ "engines": {
329
+ "node": ">=18"
330
+ }
331
+ },
332
+ "node_modules/@esbuild/netbsd-x64": {
333
+ "version": "0.25.12",
334
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
335
+ "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
336
+ "cpu": [
337
+ "x64"
338
+ ],
339
+ "dev": true,
340
+ "license": "MIT",
341
+ "optional": true,
342
+ "os": [
343
+ "netbsd"
344
+ ],
345
+ "engines": {
346
+ "node": ">=18"
347
+ }
348
+ },
349
+ "node_modules/@esbuild/openbsd-arm64": {
350
+ "version": "0.25.12",
351
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
352
+ "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
353
+ "cpu": [
354
+ "arm64"
355
+ ],
356
+ "dev": true,
357
+ "license": "MIT",
358
+ "optional": true,
359
+ "os": [
360
+ "openbsd"
361
+ ],
362
+ "engines": {
363
+ "node": ">=18"
364
+ }
365
+ },
366
+ "node_modules/@esbuild/openbsd-x64": {
367
+ "version": "0.25.12",
368
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
369
+ "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
370
+ "cpu": [
371
+ "x64"
372
+ ],
373
+ "dev": true,
374
+ "license": "MIT",
375
+ "optional": true,
376
+ "os": [
377
+ "openbsd"
378
+ ],
379
+ "engines": {
380
+ "node": ">=18"
381
+ }
382
+ },
383
+ "node_modules/@esbuild/openharmony-arm64": {
384
+ "version": "0.25.12",
385
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
386
+ "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
387
+ "cpu": [
388
+ "arm64"
389
+ ],
390
+ "dev": true,
391
+ "license": "MIT",
392
+ "optional": true,
393
+ "os": [
394
+ "openharmony"
395
+ ],
396
+ "engines": {
397
+ "node": ">=18"
398
+ }
399
+ },
400
+ "node_modules/@esbuild/sunos-x64": {
401
+ "version": "0.25.12",
402
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
403
+ "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
404
+ "cpu": [
405
+ "x64"
406
+ ],
407
+ "dev": true,
408
+ "license": "MIT",
409
+ "optional": true,
410
+ "os": [
411
+ "sunos"
412
+ ],
413
+ "engines": {
414
+ "node": ">=18"
415
+ }
416
+ },
417
+ "node_modules/@esbuild/win32-arm64": {
418
+ "version": "0.25.12",
419
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
420
+ "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
421
+ "cpu": [
422
+ "arm64"
423
+ ],
424
+ "dev": true,
425
+ "license": "MIT",
426
+ "optional": true,
427
+ "os": [
428
+ "win32"
429
+ ],
430
+ "engines": {
431
+ "node": ">=18"
432
+ }
433
+ },
434
+ "node_modules/@esbuild/win32-ia32": {
435
+ "version": "0.25.12",
436
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
437
+ "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
438
+ "cpu": [
439
+ "ia32"
440
+ ],
441
+ "dev": true,
442
+ "license": "MIT",
443
+ "optional": true,
444
+ "os": [
445
+ "win32"
446
+ ],
447
+ "engines": {
448
+ "node": ">=18"
449
+ }
450
+ },
451
+ "node_modules/@esbuild/win32-x64": {
452
+ "version": "0.25.12",
453
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
454
+ "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
455
+ "cpu": [
456
+ "x64"
457
+ ],
458
+ "dev": true,
459
+ "license": "MIT",
460
+ "optional": true,
461
+ "os": [
462
+ "win32"
463
+ ],
464
+ "engines": {
465
+ "node": ">=18"
466
+ }
467
+ },
468
+ "node_modules/@highcharts/map-collection": {
469
+ "version": "2.3.2",
470
+ "resolved": "https://registry.npmjs.org/@highcharts/map-collection/-/map-collection-2.3.2.tgz",
471
+ "integrity": "sha512-qaOSSubX6mogXpGuwgM9yBjC+srNCxWPGCqewOL3HAdk1XrRqClSxVF30jn8mV5XR1bGxsMQYcibZeCyrYiEeA==",
472
+ "license": "SEE LICENSE IN LICENSE.md"
473
+ },
474
+ "node_modules/@highcharts/svelte": {
475
+ "version": "1.1.1",
476
+ "resolved": "https://registry.npmjs.org/@highcharts/svelte/-/svelte-1.1.1.tgz",
477
+ "integrity": "sha512-PFbVguEn4dH0yCbFZNzvB52i12aeszgFHfoLpX7vryuVyiWAg/RlNgwzpaWIKbxOQoaImA/RSi2Y2WCCbJbuDA==",
478
+ "license": "https://www.highcharts.com/license",
479
+ "dependencies": {
480
+ "lodash.clonedeep": "^4.5.0"
481
+ },
482
+ "peerDependencies": {
483
+ "highcharts": ">11.0.0",
484
+ "svelte": ">=3.0.0"
485
+ }
486
+ },
487
+ "node_modules/@jridgewell/gen-mapping": {
488
+ "version": "0.3.13",
489
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
490
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
491
+ "license": "MIT",
492
+ "dependencies": {
493
+ "@jridgewell/sourcemap-codec": "^1.5.0",
494
+ "@jridgewell/trace-mapping": "^0.3.24"
495
+ }
496
+ },
497
+ "node_modules/@jridgewell/remapping": {
498
+ "version": "2.3.5",
499
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
500
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
501
+ "license": "MIT",
502
+ "dependencies": {
503
+ "@jridgewell/gen-mapping": "^0.3.5",
504
+ "@jridgewell/trace-mapping": "^0.3.24"
505
+ }
506
+ },
507
+ "node_modules/@jridgewell/resolve-uri": {
508
+ "version": "3.1.2",
509
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
510
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
511
+ "license": "MIT",
512
+ "engines": {
513
+ "node": ">=6.0.0"
514
+ }
515
+ },
516
+ "node_modules/@jridgewell/sourcemap-codec": {
517
+ "version": "1.5.5",
518
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
519
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
520
+ "license": "MIT"
521
+ },
522
+ "node_modules/@jridgewell/trace-mapping": {
523
+ "version": "0.3.31",
524
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
525
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
526
+ "license": "MIT",
527
+ "dependencies": {
528
+ "@jridgewell/resolve-uri": "^3.1.0",
529
+ "@jridgewell/sourcemap-codec": "^1.4.14"
530
+ }
531
+ },
532
+ "node_modules/@kurkle/color": {
533
+ "version": "0.3.4",
534
+ "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz",
535
+ "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==",
536
+ "license": "MIT"
537
+ },
538
+ "node_modules/@rollup/rollup-android-arm-eabi": {
539
+ "version": "4.53.3",
540
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz",
541
+ "integrity": "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==",
542
+ "cpu": [
543
+ "arm"
544
+ ],
545
+ "dev": true,
546
+ "license": "MIT",
547
+ "optional": true,
548
+ "os": [
549
+ "android"
550
+ ]
551
+ },
552
+ "node_modules/@rollup/rollup-android-arm64": {
553
+ "version": "4.53.3",
554
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz",
555
+ "integrity": "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==",
556
+ "cpu": [
557
+ "arm64"
558
+ ],
559
+ "dev": true,
560
+ "license": "MIT",
561
+ "optional": true,
562
+ "os": [
563
+ "android"
564
+ ]
565
+ },
566
+ "node_modules/@rollup/rollup-darwin-arm64": {
567
+ "version": "4.53.3",
568
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz",
569
+ "integrity": "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==",
570
+ "cpu": [
571
+ "arm64"
572
+ ],
573
+ "dev": true,
574
+ "license": "MIT",
575
+ "optional": true,
576
+ "os": [
577
+ "darwin"
578
+ ]
579
+ },
580
+ "node_modules/@rollup/rollup-darwin-x64": {
581
+ "version": "4.53.3",
582
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz",
583
+ "integrity": "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==",
584
+ "cpu": [
585
+ "x64"
586
+ ],
587
+ "dev": true,
588
+ "license": "MIT",
589
+ "optional": true,
590
+ "os": [
591
+ "darwin"
592
+ ]
593
+ },
594
+ "node_modules/@rollup/rollup-freebsd-arm64": {
595
+ "version": "4.53.3",
596
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz",
597
+ "integrity": "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==",
598
+ "cpu": [
599
+ "arm64"
600
+ ],
601
+ "dev": true,
602
+ "license": "MIT",
603
+ "optional": true,
604
+ "os": [
605
+ "freebsd"
606
+ ]
607
+ },
608
+ "node_modules/@rollup/rollup-freebsd-x64": {
609
+ "version": "4.53.3",
610
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz",
611
+ "integrity": "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==",
612
+ "cpu": [
613
+ "x64"
614
+ ],
615
+ "dev": true,
616
+ "license": "MIT",
617
+ "optional": true,
618
+ "os": [
619
+ "freebsd"
620
+ ]
621
+ },
622
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
623
+ "version": "4.53.3",
624
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz",
625
+ "integrity": "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==",
626
+ "cpu": [
627
+ "arm"
628
+ ],
629
+ "dev": true,
630
+ "license": "MIT",
631
+ "optional": true,
632
+ "os": [
633
+ "linux"
634
+ ]
635
+ },
636
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
637
+ "version": "4.53.3",
638
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz",
639
+ "integrity": "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==",
640
+ "cpu": [
641
+ "arm"
642
+ ],
643
+ "dev": true,
644
+ "license": "MIT",
645
+ "optional": true,
646
+ "os": [
647
+ "linux"
648
+ ]
649
+ },
650
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
651
+ "version": "4.53.3",
652
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz",
653
+ "integrity": "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==",
654
+ "cpu": [
655
+ "arm64"
656
+ ],
657
+ "dev": true,
658
+ "license": "MIT",
659
+ "optional": true,
660
+ "os": [
661
+ "linux"
662
+ ]
663
+ },
664
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
665
+ "version": "4.53.3",
666
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz",
667
+ "integrity": "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==",
668
+ "cpu": [
669
+ "arm64"
670
+ ],
671
+ "dev": true,
672
+ "license": "MIT",
673
+ "optional": true,
674
+ "os": [
675
+ "linux"
676
+ ]
677
+ },
678
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
679
+ "version": "4.53.3",
680
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz",
681
+ "integrity": "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==",
682
+ "cpu": [
683
+ "loong64"
684
+ ],
685
+ "dev": true,
686
+ "license": "MIT",
687
+ "optional": true,
688
+ "os": [
689
+ "linux"
690
+ ]
691
+ },
692
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
693
+ "version": "4.53.3",
694
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz",
695
+ "integrity": "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==",
696
+ "cpu": [
697
+ "ppc64"
698
+ ],
699
+ "dev": true,
700
+ "license": "MIT",
701
+ "optional": true,
702
+ "os": [
703
+ "linux"
704
+ ]
705
+ },
706
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
707
+ "version": "4.53.3",
708
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz",
709
+ "integrity": "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==",
710
+ "cpu": [
711
+ "riscv64"
712
+ ],
713
+ "dev": true,
714
+ "license": "MIT",
715
+ "optional": true,
716
+ "os": [
717
+ "linux"
718
+ ]
719
+ },
720
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
721
+ "version": "4.53.3",
722
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz",
723
+ "integrity": "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==",
724
+ "cpu": [
725
+ "riscv64"
726
+ ],
727
+ "dev": true,
728
+ "license": "MIT",
729
+ "optional": true,
730
+ "os": [
731
+ "linux"
732
+ ]
733
+ },
734
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
735
+ "version": "4.53.3",
736
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz",
737
+ "integrity": "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==",
738
+ "cpu": [
739
+ "s390x"
740
+ ],
741
+ "dev": true,
742
+ "license": "MIT",
743
+ "optional": true,
744
+ "os": [
745
+ "linux"
746
+ ]
747
+ },
748
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
749
+ "version": "4.53.3",
750
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz",
751
+ "integrity": "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==",
752
+ "cpu": [
753
+ "x64"
754
+ ],
755
+ "dev": true,
756
+ "license": "MIT",
757
+ "optional": true,
758
+ "os": [
759
+ "linux"
760
+ ]
761
+ },
762
+ "node_modules/@rollup/rollup-linux-x64-musl": {
763
+ "version": "4.53.3",
764
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz",
765
+ "integrity": "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==",
766
+ "cpu": [
767
+ "x64"
768
+ ],
769
+ "dev": true,
770
+ "license": "MIT",
771
+ "optional": true,
772
+ "os": [
773
+ "linux"
774
+ ]
775
+ },
776
+ "node_modules/@rollup/rollup-openharmony-arm64": {
777
+ "version": "4.53.3",
778
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz",
779
+ "integrity": "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==",
780
+ "cpu": [
781
+ "arm64"
782
+ ],
783
+ "dev": true,
784
+ "license": "MIT",
785
+ "optional": true,
786
+ "os": [
787
+ "openharmony"
788
+ ]
789
+ },
790
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
791
+ "version": "4.53.3",
792
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz",
793
+ "integrity": "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==",
794
+ "cpu": [
795
+ "arm64"
796
+ ],
797
+ "dev": true,
798
+ "license": "MIT",
799
+ "optional": true,
800
+ "os": [
801
+ "win32"
802
+ ]
803
+ },
804
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
805
+ "version": "4.53.3",
806
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz",
807
+ "integrity": "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==",
808
+ "cpu": [
809
+ "ia32"
810
+ ],
811
+ "dev": true,
812
+ "license": "MIT",
813
+ "optional": true,
814
+ "os": [
815
+ "win32"
816
+ ]
817
+ },
818
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
819
+ "version": "4.53.3",
820
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz",
821
+ "integrity": "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==",
822
+ "cpu": [
823
+ "x64"
824
+ ],
825
+ "dev": true,
826
+ "license": "MIT",
827
+ "optional": true,
828
+ "os": [
829
+ "win32"
830
+ ]
831
+ },
832
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
833
+ "version": "4.53.3",
834
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz",
835
+ "integrity": "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==",
836
+ "cpu": [
837
+ "x64"
838
+ ],
839
+ "dev": true,
840
+ "license": "MIT",
841
+ "optional": true,
842
+ "os": [
843
+ "win32"
844
+ ]
845
+ },
846
+ "node_modules/@sveltejs/acorn-typescript": {
847
+ "version": "1.0.8",
848
+ "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz",
849
+ "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==",
850
+ "license": "MIT",
851
+ "peerDependencies": {
852
+ "acorn": "^8.9.0"
853
+ }
854
+ },
855
+ "node_modules/@sveltejs/vite-plugin-svelte": {
856
+ "version": "5.1.1",
857
+ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.1.1.tgz",
858
+ "integrity": "sha512-Y1Cs7hhTc+a5E9Va/xwKlAJoariQyHY+5zBgCZg4PFWNYQ1nMN9sjK1zhw1gK69DuqVP++sht/1GZg1aRwmAXQ==",
859
+ "dev": true,
860
+ "license": "MIT",
861
+ "dependencies": {
862
+ "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1",
863
+ "debug": "^4.4.1",
864
+ "deepmerge": "^4.3.1",
865
+ "kleur": "^4.1.5",
866
+ "magic-string": "^0.30.17",
867
+ "vitefu": "^1.0.6"
868
+ },
869
+ "engines": {
870
+ "node": "^18.0.0 || ^20.0.0 || >=22"
871
+ },
872
+ "peerDependencies": {
873
+ "svelte": "^5.0.0",
874
+ "vite": "^6.0.0"
875
+ }
876
+ },
877
+ "node_modules/@sveltejs/vite-plugin-svelte-inspector": {
878
+ "version": "4.0.1",
879
+ "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-4.0.1.tgz",
880
+ "integrity": "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==",
881
+ "dev": true,
882
+ "license": "MIT",
883
+ "dependencies": {
884
+ "debug": "^4.3.7"
885
+ },
886
+ "engines": {
887
+ "node": "^18.0.0 || ^20.0.0 || >=22"
888
+ },
889
+ "peerDependencies": {
890
+ "@sveltejs/vite-plugin-svelte": "^5.0.0",
891
+ "svelte": "^5.0.0",
892
+ "vite": "^6.0.0"
893
+ }
894
+ },
895
+ "node_modules/@tsconfig/svelte": {
896
+ "version": "5.0.6",
897
+ "resolved": "https://registry.npmjs.org/@tsconfig/svelte/-/svelte-5.0.6.tgz",
898
+ "integrity": "sha512-yGxYL0I9eETH1/DR9qVJey4DAsCdeau4a9wYPKuXfEhm8lFO8wg+LLYJjIpAm6Fw7HSlhepPhYPDop75485yWQ==",
899
+ "dev": true,
900
+ "license": "MIT"
901
+ },
902
+ "node_modules/@types/estree": {
903
+ "version": "1.0.8",
904
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
905
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
906
+ "license": "MIT"
907
+ },
908
+ "node_modules/acorn": {
909
+ "version": "8.15.0",
910
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
911
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
912
+ "license": "MIT",
913
+ "bin": {
914
+ "acorn": "bin/acorn"
915
+ },
916
+ "engines": {
917
+ "node": ">=0.4.0"
918
+ }
919
+ },
920
+ "node_modules/aria-query": {
921
+ "version": "5.3.2",
922
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
923
+ "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
924
+ "license": "Apache-2.0",
925
+ "engines": {
926
+ "node": ">= 0.4"
927
+ }
928
+ },
929
+ "node_modules/axobject-query": {
930
+ "version": "4.1.0",
931
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
932
+ "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
933
+ "license": "Apache-2.0",
934
+ "engines": {
935
+ "node": ">= 0.4"
936
+ }
937
+ },
938
+ "node_modules/chart.js": {
939
+ "version": "4.5.1",
940
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.5.1.tgz",
941
+ "integrity": "sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==",
942
+ "license": "MIT",
943
+ "dependencies": {
944
+ "@kurkle/color": "^0.3.0"
945
+ },
946
+ "engines": {
947
+ "pnpm": ">=8"
948
+ }
949
+ },
950
+ "node_modules/chokidar": {
951
+ "version": "4.0.3",
952
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
953
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
954
+ "dev": true,
955
+ "license": "MIT",
956
+ "dependencies": {
957
+ "readdirp": "^4.0.1"
958
+ },
959
+ "engines": {
960
+ "node": ">= 14.16.0"
961
+ },
962
+ "funding": {
963
+ "url": "https://paulmillr.com/funding/"
964
+ }
965
+ },
966
+ "node_modules/clsx": {
967
+ "version": "2.1.1",
968
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
969
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
970
+ "license": "MIT",
971
+ "engines": {
972
+ "node": ">=6"
973
+ }
974
+ },
975
+ "node_modules/debug": {
976
+ "version": "4.4.3",
977
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
978
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
979
+ "dev": true,
980
+ "license": "MIT",
981
+ "dependencies": {
982
+ "ms": "^2.1.3"
983
+ },
984
+ "engines": {
985
+ "node": ">=6.0"
986
+ },
987
+ "peerDependenciesMeta": {
988
+ "supports-color": {
989
+ "optional": true
990
+ }
991
+ }
992
+ },
993
+ "node_modules/deepmerge": {
994
+ "version": "4.3.1",
995
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
996
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
997
+ "dev": true,
998
+ "license": "MIT",
999
+ "engines": {
1000
+ "node": ">=0.10.0"
1001
+ }
1002
+ },
1003
+ "node_modules/devalue": {
1004
+ "version": "5.5.0",
1005
+ "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.5.0.tgz",
1006
+ "integrity": "sha512-69sM5yrHfFLJt0AZ9QqZXGCPfJ7fQjvpln3Rq5+PS03LD32Ost1Q9N+eEnaQwGRIriKkMImXD56ocjQmfjbV3w==",
1007
+ "license": "MIT"
1008
+ },
1009
+ "node_modules/esbuild": {
1010
+ "version": "0.25.12",
1011
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
1012
+ "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
1013
+ "dev": true,
1014
+ "hasInstallScript": true,
1015
+ "license": "MIT",
1016
+ "bin": {
1017
+ "esbuild": "bin/esbuild"
1018
+ },
1019
+ "engines": {
1020
+ "node": ">=18"
1021
+ },
1022
+ "optionalDependencies": {
1023
+ "@esbuild/aix-ppc64": "0.25.12",
1024
+ "@esbuild/android-arm": "0.25.12",
1025
+ "@esbuild/android-arm64": "0.25.12",
1026
+ "@esbuild/android-x64": "0.25.12",
1027
+ "@esbuild/darwin-arm64": "0.25.12",
1028
+ "@esbuild/darwin-x64": "0.25.12",
1029
+ "@esbuild/freebsd-arm64": "0.25.12",
1030
+ "@esbuild/freebsd-x64": "0.25.12",
1031
+ "@esbuild/linux-arm": "0.25.12",
1032
+ "@esbuild/linux-arm64": "0.25.12",
1033
+ "@esbuild/linux-ia32": "0.25.12",
1034
+ "@esbuild/linux-loong64": "0.25.12",
1035
+ "@esbuild/linux-mips64el": "0.25.12",
1036
+ "@esbuild/linux-ppc64": "0.25.12",
1037
+ "@esbuild/linux-riscv64": "0.25.12",
1038
+ "@esbuild/linux-s390x": "0.25.12",
1039
+ "@esbuild/linux-x64": "0.25.12",
1040
+ "@esbuild/netbsd-arm64": "0.25.12",
1041
+ "@esbuild/netbsd-x64": "0.25.12",
1042
+ "@esbuild/openbsd-arm64": "0.25.12",
1043
+ "@esbuild/openbsd-x64": "0.25.12",
1044
+ "@esbuild/openharmony-arm64": "0.25.12",
1045
+ "@esbuild/sunos-x64": "0.25.12",
1046
+ "@esbuild/win32-arm64": "0.25.12",
1047
+ "@esbuild/win32-ia32": "0.25.12",
1048
+ "@esbuild/win32-x64": "0.25.12"
1049
+ }
1050
+ },
1051
+ "node_modules/esm-env": {
1052
+ "version": "1.2.2",
1053
+ "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz",
1054
+ "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==",
1055
+ "license": "MIT"
1056
+ },
1057
+ "node_modules/esrap": {
1058
+ "version": "2.2.1",
1059
+ "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.1.tgz",
1060
+ "integrity": "sha512-GiYWG34AN/4CUyaWAgunGt0Rxvr1PTMlGC0vvEov/uOQYWne2bpN03Um+k8jT+q3op33mKouP2zeJ6OlM+qeUg==",
1061
+ "license": "MIT",
1062
+ "dependencies": {
1063
+ "@jridgewell/sourcemap-codec": "^1.4.15"
1064
+ }
1065
+ },
1066
+ "node_modules/fdir": {
1067
+ "version": "6.5.0",
1068
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
1069
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
1070
+ "dev": true,
1071
+ "license": "MIT",
1072
+ "engines": {
1073
+ "node": ">=12.0.0"
1074
+ },
1075
+ "peerDependencies": {
1076
+ "picomatch": "^3 || ^4"
1077
+ },
1078
+ "peerDependenciesMeta": {
1079
+ "picomatch": {
1080
+ "optional": true
1081
+ }
1082
+ }
1083
+ },
1084
+ "node_modules/fsevents": {
1085
+ "version": "2.3.3",
1086
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1087
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1088
+ "dev": true,
1089
+ "hasInstallScript": true,
1090
+ "license": "MIT",
1091
+ "optional": true,
1092
+ "os": [
1093
+ "darwin"
1094
+ ],
1095
+ "engines": {
1096
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1097
+ }
1098
+ },
1099
+ "node_modules/highcharts": {
1100
+ "version": "12.4.0",
1101
+ "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-12.4.0.tgz",
1102
+ "integrity": "sha512-o6UxxfChSUrvrZUbWrAuqL1HO/+exhAUPcZY6nnqLsadZQlnP16d082sg7DnXKZCk1gtfkyfkp6g3qkIZ9miZg==",
1103
+ "license": "https://www.highcharts.com/license"
1104
+ },
1105
+ "node_modules/is-reference": {
1106
+ "version": "3.0.3",
1107
+ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz",
1108
+ "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==",
1109
+ "license": "MIT",
1110
+ "dependencies": {
1111
+ "@types/estree": "^1.0.6"
1112
+ }
1113
+ },
1114
+ "node_modules/kleur": {
1115
+ "version": "4.1.5",
1116
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
1117
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
1118
+ "dev": true,
1119
+ "license": "MIT",
1120
+ "engines": {
1121
+ "node": ">=6"
1122
+ }
1123
+ },
1124
+ "node_modules/locate-character": {
1125
+ "version": "3.0.0",
1126
+ "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
1127
+ "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
1128
+ "license": "MIT"
1129
+ },
1130
+ "node_modules/lodash": {
1131
+ "version": "4.17.21",
1132
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1133
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1134
+ "license": "MIT"
1135
+ },
1136
+ "node_modules/lodash.clonedeep": {
1137
+ "version": "4.5.0",
1138
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
1139
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
1140
+ "license": "MIT"
1141
+ },
1142
+ "node_modules/magic-string": {
1143
+ "version": "0.30.21",
1144
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
1145
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
1146
+ "license": "MIT",
1147
+ "dependencies": {
1148
+ "@jridgewell/sourcemap-codec": "^1.5.5"
1149
+ }
1150
+ },
1151
+ "node_modules/mri": {
1152
+ "version": "1.2.0",
1153
+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
1154
+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
1155
+ "dev": true,
1156
+ "license": "MIT",
1157
+ "engines": {
1158
+ "node": ">=4"
1159
+ }
1160
+ },
1161
+ "node_modules/ms": {
1162
+ "version": "2.1.3",
1163
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1164
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1165
+ "dev": true,
1166
+ "license": "MIT"
1167
+ },
1168
+ "node_modules/nanoid": {
1169
+ "version": "3.3.11",
1170
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
1171
+ "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
1172
+ "dev": true,
1173
+ "funding": [
1174
+ {
1175
+ "type": "github",
1176
+ "url": "https://github.com/sponsors/ai"
1177
+ }
1178
+ ],
1179
+ "license": "MIT",
1180
+ "bin": {
1181
+ "nanoid": "bin/nanoid.cjs"
1182
+ },
1183
+ "engines": {
1184
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1185
+ }
1186
+ },
1187
+ "node_modules/picocolors": {
1188
+ "version": "1.1.1",
1189
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1190
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
1191
+ "dev": true,
1192
+ "license": "ISC"
1193
+ },
1194
+ "node_modules/picomatch": {
1195
+ "version": "4.0.3",
1196
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
1197
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
1198
+ "dev": true,
1199
+ "license": "MIT",
1200
+ "engines": {
1201
+ "node": ">=12"
1202
+ },
1203
+ "funding": {
1204
+ "url": "https://github.com/sponsors/jonschlinkert"
1205
+ }
1206
+ },
1207
+ "node_modules/postcss": {
1208
+ "version": "8.5.6",
1209
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
1210
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
1211
+ "dev": true,
1212
+ "funding": [
1213
+ {
1214
+ "type": "opencollective",
1215
+ "url": "https://opencollective.com/postcss/"
1216
+ },
1217
+ {
1218
+ "type": "tidelift",
1219
+ "url": "https://tidelift.com/funding/github/npm/postcss"
1220
+ },
1221
+ {
1222
+ "type": "github",
1223
+ "url": "https://github.com/sponsors/ai"
1224
+ }
1225
+ ],
1226
+ "license": "MIT",
1227
+ "dependencies": {
1228
+ "nanoid": "^3.3.11",
1229
+ "picocolors": "^1.1.1",
1230
+ "source-map-js": "^1.2.1"
1231
+ },
1232
+ "engines": {
1233
+ "node": "^10 || ^12 || >=14"
1234
+ }
1235
+ },
1236
+ "node_modules/readdirp": {
1237
+ "version": "4.1.2",
1238
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
1239
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
1240
+ "dev": true,
1241
+ "license": "MIT",
1242
+ "engines": {
1243
+ "node": ">= 14.18.0"
1244
+ },
1245
+ "funding": {
1246
+ "type": "individual",
1247
+ "url": "https://paulmillr.com/funding/"
1248
+ }
1249
+ },
1250
+ "node_modules/rollup": {
1251
+ "version": "4.53.3",
1252
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.3.tgz",
1253
+ "integrity": "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==",
1254
+ "dev": true,
1255
+ "license": "MIT",
1256
+ "dependencies": {
1257
+ "@types/estree": "1.0.8"
1258
+ },
1259
+ "bin": {
1260
+ "rollup": "dist/bin/rollup"
1261
+ },
1262
+ "engines": {
1263
+ "node": ">=18.0.0",
1264
+ "npm": ">=8.0.0"
1265
+ },
1266
+ "optionalDependencies": {
1267
+ "@rollup/rollup-android-arm-eabi": "4.53.3",
1268
+ "@rollup/rollup-android-arm64": "4.53.3",
1269
+ "@rollup/rollup-darwin-arm64": "4.53.3",
1270
+ "@rollup/rollup-darwin-x64": "4.53.3",
1271
+ "@rollup/rollup-freebsd-arm64": "4.53.3",
1272
+ "@rollup/rollup-freebsd-x64": "4.53.3",
1273
+ "@rollup/rollup-linux-arm-gnueabihf": "4.53.3",
1274
+ "@rollup/rollup-linux-arm-musleabihf": "4.53.3",
1275
+ "@rollup/rollup-linux-arm64-gnu": "4.53.3",
1276
+ "@rollup/rollup-linux-arm64-musl": "4.53.3",
1277
+ "@rollup/rollup-linux-loong64-gnu": "4.53.3",
1278
+ "@rollup/rollup-linux-ppc64-gnu": "4.53.3",
1279
+ "@rollup/rollup-linux-riscv64-gnu": "4.53.3",
1280
+ "@rollup/rollup-linux-riscv64-musl": "4.53.3",
1281
+ "@rollup/rollup-linux-s390x-gnu": "4.53.3",
1282
+ "@rollup/rollup-linux-x64-gnu": "4.53.3",
1283
+ "@rollup/rollup-linux-x64-musl": "4.53.3",
1284
+ "@rollup/rollup-openharmony-arm64": "4.53.3",
1285
+ "@rollup/rollup-win32-arm64-msvc": "4.53.3",
1286
+ "@rollup/rollup-win32-ia32-msvc": "4.53.3",
1287
+ "@rollup/rollup-win32-x64-gnu": "4.53.3",
1288
+ "@rollup/rollup-win32-x64-msvc": "4.53.3",
1289
+ "fsevents": "~2.3.2"
1290
+ }
1291
+ },
1292
+ "node_modules/sade": {
1293
+ "version": "1.8.1",
1294
+ "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz",
1295
+ "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==",
1296
+ "dev": true,
1297
+ "license": "MIT",
1298
+ "dependencies": {
1299
+ "mri": "^1.1.0"
1300
+ },
1301
+ "engines": {
1302
+ "node": ">=6"
1303
+ }
1304
+ },
1305
+ "node_modules/source-map-js": {
1306
+ "version": "1.2.1",
1307
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
1308
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
1309
+ "dev": true,
1310
+ "license": "BSD-3-Clause",
1311
+ "engines": {
1312
+ "node": ">=0.10.0"
1313
+ }
1314
+ },
1315
+ "node_modules/svelte": {
1316
+ "version": "5.45.3",
1317
+ "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.45.3.tgz",
1318
+ "integrity": "sha512-ngKXNhNvwPzF43QqEhDOue7TQTrG09em1sd4HBxVF0Wr2gopAmdEWan+rgbdgK4fhBtSOTJO8bYU4chUG7VXZQ==",
1319
+ "license": "MIT",
1320
+ "dependencies": {
1321
+ "@jridgewell/remapping": "^2.3.4",
1322
+ "@jridgewell/sourcemap-codec": "^1.5.0",
1323
+ "@sveltejs/acorn-typescript": "^1.0.5",
1324
+ "@types/estree": "^1.0.5",
1325
+ "acorn": "^8.12.1",
1326
+ "aria-query": "^5.3.1",
1327
+ "axobject-query": "^4.1.0",
1328
+ "clsx": "^2.1.1",
1329
+ "devalue": "^5.5.0",
1330
+ "esm-env": "^1.2.1",
1331
+ "esrap": "^2.2.0",
1332
+ "is-reference": "^3.0.3",
1333
+ "locate-character": "^3.0.0",
1334
+ "magic-string": "^0.30.11",
1335
+ "zimmerframe": "^1.1.2"
1336
+ },
1337
+ "engines": {
1338
+ "node": ">=18"
1339
+ }
1340
+ },
1341
+ "node_modules/svelte-check": {
1342
+ "version": "4.3.4",
1343
+ "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.3.4.tgz",
1344
+ "integrity": "sha512-DVWvxhBrDsd+0hHWKfjP99lsSXASeOhHJYyuKOFYJcP7ThfSCKgjVarE8XfuMWpS5JV3AlDf+iK1YGGo2TACdw==",
1345
+ "dev": true,
1346
+ "license": "MIT",
1347
+ "dependencies": {
1348
+ "@jridgewell/trace-mapping": "^0.3.25",
1349
+ "chokidar": "^4.0.1",
1350
+ "fdir": "^6.2.0",
1351
+ "picocolors": "^1.0.0",
1352
+ "sade": "^1.7.4"
1353
+ },
1354
+ "bin": {
1355
+ "svelte-check": "bin/svelte-check"
1356
+ },
1357
+ "engines": {
1358
+ "node": ">= 18.0.0"
1359
+ },
1360
+ "peerDependencies": {
1361
+ "svelte": "^4.0.0 || ^5.0.0-next.0",
1362
+ "typescript": ">=5.0.0"
1363
+ }
1364
+ },
1365
+ "node_modules/tinyglobby": {
1366
+ "version": "0.2.15",
1367
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
1368
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
1369
+ "dev": true,
1370
+ "license": "MIT",
1371
+ "dependencies": {
1372
+ "fdir": "^6.5.0",
1373
+ "picomatch": "^4.0.3"
1374
+ },
1375
+ "engines": {
1376
+ "node": ">=12.0.0"
1377
+ },
1378
+ "funding": {
1379
+ "url": "https://github.com/sponsors/SuperchupuDev"
1380
+ }
1381
+ },
1382
+ "node_modules/typescript": {
1383
+ "version": "5.8.3",
1384
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
1385
+ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
1386
+ "dev": true,
1387
+ "license": "Apache-2.0",
1388
+ "bin": {
1389
+ "tsc": "bin/tsc",
1390
+ "tsserver": "bin/tsserver"
1391
+ },
1392
+ "engines": {
1393
+ "node": ">=14.17"
1394
+ }
1395
+ },
1396
+ "node_modules/vite": {
1397
+ "version": "6.4.1",
1398
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz",
1399
+ "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==",
1400
+ "dev": true,
1401
+ "license": "MIT",
1402
+ "dependencies": {
1403
+ "esbuild": "^0.25.0",
1404
+ "fdir": "^6.4.4",
1405
+ "picomatch": "^4.0.2",
1406
+ "postcss": "^8.5.3",
1407
+ "rollup": "^4.34.9",
1408
+ "tinyglobby": "^0.2.13"
1409
+ },
1410
+ "bin": {
1411
+ "vite": "bin/vite.js"
1412
+ },
1413
+ "engines": {
1414
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
1415
+ },
1416
+ "funding": {
1417
+ "url": "https://github.com/vitejs/vite?sponsor=1"
1418
+ },
1419
+ "optionalDependencies": {
1420
+ "fsevents": "~2.3.3"
1421
+ },
1422
+ "peerDependencies": {
1423
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
1424
+ "jiti": ">=1.21.0",
1425
+ "less": "*",
1426
+ "lightningcss": "^1.21.0",
1427
+ "sass": "*",
1428
+ "sass-embedded": "*",
1429
+ "stylus": "*",
1430
+ "sugarss": "*",
1431
+ "terser": "^5.16.0",
1432
+ "tsx": "^4.8.1",
1433
+ "yaml": "^2.4.2"
1434
+ },
1435
+ "peerDependenciesMeta": {
1436
+ "@types/node": {
1437
+ "optional": true
1438
+ },
1439
+ "jiti": {
1440
+ "optional": true
1441
+ },
1442
+ "less": {
1443
+ "optional": true
1444
+ },
1445
+ "lightningcss": {
1446
+ "optional": true
1447
+ },
1448
+ "sass": {
1449
+ "optional": true
1450
+ },
1451
+ "sass-embedded": {
1452
+ "optional": true
1453
+ },
1454
+ "stylus": {
1455
+ "optional": true
1456
+ },
1457
+ "sugarss": {
1458
+ "optional": true
1459
+ },
1460
+ "terser": {
1461
+ "optional": true
1462
+ },
1463
+ "tsx": {
1464
+ "optional": true
1465
+ },
1466
+ "yaml": {
1467
+ "optional": true
1468
+ }
1469
+ }
1470
+ },
1471
+ "node_modules/vitefu": {
1472
+ "version": "1.1.1",
1473
+ "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz",
1474
+ "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==",
1475
+ "dev": true,
1476
+ "license": "MIT",
1477
+ "workspaces": [
1478
+ "tests/deps/*",
1479
+ "tests/projects/*",
1480
+ "tests/projects/workspace/packages/*"
1481
+ ],
1482
+ "peerDependencies": {
1483
+ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0"
1484
+ },
1485
+ "peerDependenciesMeta": {
1486
+ "vite": {
1487
+ "optional": true
1488
+ }
1489
+ }
1490
+ },
1491
+ "node_modules/zimmerframe": {
1492
+ "version": "1.1.4",
1493
+ "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz",
1494
+ "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==",
1495
+ "license": "MIT"
1496
+ }
1497
+ }
1498
+ }
package.json CHANGED
@@ -16,5 +16,12 @@
16
  "svelte-check": "^4.1.6",
17
  "typescript": "~5.8.3",
18
  "vite": "^6.3.5"
 
 
 
 
 
 
 
19
  }
20
  }
 
16
  "svelte-check": "^4.1.6",
17
  "typescript": "~5.8.3",
18
  "vite": "^6.3.5"
19
+ },
20
+ "dependencies": {
21
+ "@highcharts/map-collection": "^2.3.2",
22
+ "@highcharts/svelte": "^1.1.1",
23
+ "chart.js": "^4.5.1",
24
+ "highcharts": "^12.4.0",
25
+ "lodash": "^4.17.21"
26
  }
27
  }
public/status.json ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "traffic": {
3
+ "hf": {
4
+ "displayName": "🤗",
5
+ "xorb": 0.750,
6
+ "bridge": 0.5
7
+ },
8
+ "unauthenticated": {
9
+ "displayName": "Unauthenticated",
10
+ "xorb": 0.75,
11
+ "bridge": 0.5
12
+ },
13
+ "authenticated": {
14
+ "displayName": "Free",
15
+ "xorb": 0.0,
16
+ "bridge": 0.0
17
+ },
18
+ "plus": {
19
+ "displayName": "Plus",
20
+ "xorb": 0.0,
21
+ "bridge": 0.0
22
+ },
23
+ "team": {
24
+ "displayName": "Team",
25
+ "xorb": 0.0,
26
+ "bridge": 0.0
27
+ },
28
+ "enterprise": {
29
+ "displayName": "Enterprise",
30
+ "xorb": 0.0,
31
+ "bridge": 0.0
32
+ },
33
+ "academia": {
34
+ "displayName": "Academia",
35
+ "xorb": 0.0,
36
+ "bridge": 0.0
37
+ }
38
+ },
39
+ "regions": {
40
+ "us-central1": {
41
+ "region": "US Central",
42
+ "city": "Iowa",
43
+ "latitude": 41.5868353,
44
+ "longitude": -93.6250027,
45
+ "country": "US"
46
+ },
47
+ "europe-west9": {
48
+ "region": "Europe",
49
+ "city": "Paris",
50
+ "latitude": 48.8575,
51
+ "longitude": 2.3514,
52
+ "country": "France"
53
+ },
54
+ "asia-south1": {
55
+ "region": "Asia",
56
+ "city": "Mumbai",
57
+ "latitude": 19.0760,
58
+ "longitude": 72.8777,
59
+ "country": "India"
60
+ }
61
+ }
62
+ }
src/App.svelte CHANGED
@@ -1,47 +1,49 @@
1
  <script lang="ts">
2
- import svelteLogo from './assets/svelte.svg'
3
- import viteLogo from '/vite.svg'
4
- import Counter from './lib/Counter.svelte'
5
  </script>
6
 
7
  <main>
8
- <div>
9
- <a href="https://vite.dev" target="_blank" rel="noreferrer">
10
- <img src={viteLogo} class="logo" alt="Vite Logo" />
11
- </a>
12
- <a href="https://svelte.dev" target="_blank" rel="noreferrer">
13
- <img src={svelteLogo} class="logo svelte" alt="Svelte Logo" />
14
- </a>
15
- </div>
16
- <h1>Vite + Svelte</h1>
17
-
18
- <div class="card">
19
- <Counter />
20
- </div>
21
-
22
  <p>
23
- Check out <a href="https://github.com/sveltejs/kit#readme" target="_blank" rel="noreferrer">SvelteKit</a>, the official Svelte app framework powered by Vite!
24
- </p>
25
-
26
- <p class="read-the-docs">
27
- Click on the Vite and Svelte logos to learn more
28
  </p>
 
 
29
  </main>
30
 
31
  <style>
32
- .logo {
33
- height: 6em;
34
- padding: 1.5em;
35
- will-change: filter;
36
- transition: filter 300ms;
37
  }
38
- .logo:hover {
39
- filter: drop-shadow(0 0 2em #646cffaa);
 
 
 
 
 
 
 
40
  }
41
- .logo.svelte:hover {
42
- filter: drop-shadow(0 0 2em #ff3e00aa);
 
 
 
 
 
 
 
 
 
 
 
43
  }
44
- .read-the-docs {
45
- color: #888;
 
 
46
  }
47
  </style>
 
1
  <script lang="ts">
2
+ import TrafficChart from './lib/TrafficChart.svelte'
3
+ import RegionsMap from './lib/RegionsMap.svelte'
 
4
  </script>
5
 
6
  <main>
7
+ <h1>GCP Gateway Status</h1>
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  <p>
9
+ The current status of the GCP HF Gateway rollout.
 
 
 
 
10
  </p>
11
+ <TrafficChart />
12
+ <RegionsMap />
13
  </main>
14
 
15
  <style>
16
+ :global(html) {
17
+ overflow-x: hidden;
18
+ width: 100%;
 
 
19
  }
20
+
21
+ :global(body) {
22
+ background-color: #1a1a1a;
23
+ color: #e0e0e0;
24
+ margin: 0;
25
+ padding: 0;
26
+ overflow-x: hidden;
27
+ width: 100%;
28
+ box-sizing: border-box;
29
  }
30
+
31
+ main {
32
+ padding: 2rem;
33
+ text-align: center;
34
+ min-height: 100vh;
35
+ background-color: #1a1a1a;
36
+ color: #e0e0e0;
37
+ width: 100%;
38
+ max-width: 100vw;
39
+ display: flex;
40
+ flex-direction: column;
41
+ align-items: center;
42
+ box-sizing: border-box;
43
  }
44
+
45
+ h1 {
46
+ margin-bottom: 2rem;
47
+ color: #e0e0e0;
48
  }
49
  </style>
src/app.css CHANGED
@@ -3,9 +3,9 @@
3
  line-height: 1.5;
4
  font-weight: 400;
5
 
6
- color-scheme: light dark;
7
- color: rgba(255, 255, 255, 0.87);
8
- background-color: #242424;
9
 
10
  font-synthesis: none;
11
  text-rendering: optimizeLegibility;
@@ -13,6 +13,15 @@
13
  -moz-osx-font-smoothing: grayscale;
14
  }
15
 
 
 
 
 
 
 
 
 
 
16
  a {
17
  font-weight: 500;
18
  color: #646cff;
@@ -28,6 +37,8 @@ body {
28
  place-items: center;
29
  min-width: 320px;
30
  min-height: 100vh;
 
 
31
  }
32
 
33
  h1 {
@@ -40,10 +51,12 @@ h1 {
40
  }
41
 
42
  #app {
43
- max-width: 1280px;
44
- margin: 0 auto;
45
- padding: 2rem;
 
46
  text-align: center;
 
47
  }
48
 
49
  button {
@@ -65,15 +78,4 @@ button:focus-visible {
65
  outline: 4px auto -webkit-focus-ring-color;
66
  }
67
 
68
- @media (prefers-color-scheme: light) {
69
- :root {
70
- color: #213547;
71
- background-color: #ffffff;
72
- }
73
- a:hover {
74
- color: #747bff;
75
- }
76
- button {
77
- background-color: #f9f9f9;
78
- }
79
- }
 
3
  line-height: 1.5;
4
  font-weight: 400;
5
 
6
+ color-scheme: dark;
7
+ color: #e0e0e0;
8
+ background-color: #1a1a1a;
9
 
10
  font-synthesis: none;
11
  text-rendering: optimizeLegibility;
 
13
  -moz-osx-font-smoothing: grayscale;
14
  }
15
 
16
+ * {
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ html {
21
+ overflow-x: hidden;
22
+ width: 100%;
23
+ }
24
+
25
  a {
26
  font-weight: 500;
27
  color: #646cff;
 
37
  place-items: center;
38
  min-width: 320px;
39
  min-height: 100vh;
40
+ background-color: #1a1a1a;
41
+ color: #e0e0e0;
42
  }
43
 
44
  h1 {
 
51
  }
52
 
53
  #app {
54
+ max-width: 100%;
55
+ width: 100%;
56
+ margin: 0;
57
+ padding: 0;
58
  text-align: center;
59
+ overflow-x: hidden;
60
  }
61
 
62
  button {
 
78
  outline: 4px auto -webkit-focus-ring-color;
79
  }
80
 
81
+ /* Dark mode is the default */
 
 
 
 
 
 
 
 
 
 
 
src/lib/RegionsMap.svelte ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import Highcharts from 'highcharts';
4
+ import {} from 'highcharts/modules/map';
5
+ import worldMap from '@highcharts/map-collection/custom/world.topo.json';
6
+
7
+ let mapContainer: HTMLDivElement;
8
+ let chart: Highcharts.Chart | null = null;
9
+
10
+ interface RegionData {
11
+ latitude: number;
12
+ longitude: number;
13
+ country: string;
14
+ region: string;
15
+ city: string;
16
+ }
17
+
18
+ interface StatusData {
19
+ regions: {
20
+ [key: string]: RegionData;
21
+ };
22
+ }
23
+
24
+ async function initMap() {
25
+ window.Highcharts = Highcharts;
26
+
27
+ const statusResponse = await fetch('/status.json');
28
+ const data: StatusData = await statusResponse.json();
29
+
30
+ // Prepare regions data
31
+ const regions = Object.entries(data.regions);
32
+ if (regions.length === 0) return;
33
+
34
+ // Convert regions to Highcharts mappoint format
35
+ const mapData = regions.map(([regionName, regionData]) => ({
36
+ name: regionName,
37
+ lat: regionData.latitude,
38
+ lon: regionData.longitude,
39
+ region: regionData.region,
40
+ city: regionData.city,
41
+ country: regionData.country
42
+ }));
43
+
44
+ chart = Highcharts.mapChart({
45
+ chart: {
46
+ renderTo: 'map-container',
47
+ map: worldMap,
48
+ margin: 0,
49
+ height: 900,
50
+ backgroundColor: '#0e0f13',
51
+ },
52
+ credits: {
53
+ enabled: false
54
+ },
55
+ accessibility: {
56
+ enabled: false
57
+ },
58
+ title: {
59
+ text: "GCP Region Deployments",
60
+ style: {
61
+ color: '#e0e0e0',
62
+ },
63
+ },
64
+ mapView: {
65
+ projection: {
66
+ name: 'WebMercator',
67
+ },
68
+ center: [-0, 30],
69
+ zoom: 2.5,
70
+ },
71
+ mapNavigation: {
72
+ enabled: true,
73
+ enableButtons: false,
74
+ },
75
+ tooltip: {
76
+ enabled: true,
77
+ backgroundColor: '#161618',
78
+ useHTML: true,
79
+ padding: 15,
80
+ style: {
81
+ color: '#fff',
82
+ },
83
+ distance: 30,
84
+ },
85
+ series: [{
86
+ type: 'map',
87
+ name: 'Map',
88
+ nullColor: '#303038',
89
+ borderColor: '#0e0f13',
90
+ showInLegend: false,
91
+ states: {
92
+ inactive: {
93
+ enabled: false
94
+ },
95
+ }
96
+ }, {
97
+ type: 'mappoint',
98
+ name: 'CDN Region',
99
+ data: mapData,
100
+ cursor: 'pointer',
101
+ showInLegend: false,
102
+ marker: {
103
+ fillColor: 'rgba(54, 162, 235, 1.0)',
104
+ lineWidth: 18,
105
+ lineColor: 'rgba(54, 162, 235, 0.3)',
106
+ symbol: 'circle',
107
+ radius: 8,
108
+ },
109
+ dataLabels: {
110
+ enabled: false
111
+ },
112
+ point: {
113
+ events: {
114
+ click: function () {
115
+ console.log(this);
116
+ }
117
+ }
118
+ },
119
+ tooltip: {
120
+ pointFormat: '<b>{point.name}<br></b><br>Location: {point.city}, {point.country}<br><br>Latitude: {point.lat:.4f}<br>Longitude: {point.lon:.4f}'
121
+ }
122
+ }]
123
+ });
124
+
125
+ }
126
+
127
+ onMount(() => {
128
+ initMap();
129
+ });
130
+ </script>
131
+
132
+ <div id="map-container" class="map-container">
133
+ <div bind:this={mapContainer} class="map"></div>
134
+ </div>
135
+
136
+ <style>
137
+ .map-container {
138
+ width: 100vw;
139
+ max-width: 100%;
140
+ margin: 0;
141
+ margin-top: 2rem;
142
+ border-radius: 0;
143
+ overflow: hidden;
144
+ }
145
+
146
+ .map {
147
+ width: 100%;
148
+ height: 100%;
149
+ }
150
+
151
+ :global(.highcharts-container) {
152
+ background-color: transparent;
153
+ }
154
+
155
+ :global(.highcharts-background) {
156
+ fill: transparent;
157
+ }
158
+
159
+ :global(.highcharts-title) {
160
+ fill: #e0e0e0;
161
+ }
162
+
163
+ :global(.highcharts-axis-labels) {
164
+ fill: #e0e0e0;
165
+ }
166
+
167
+ :global(.highcharts-axis-title) {
168
+ fill: #e0e0e0;
169
+ }
170
+
171
+ :global(.highcharts-legend-item) {
172
+ fill: #e0e0e0;
173
+ }
174
+
175
+ :global(.highcharts-button) {
176
+ fill: #2a2a2a;
177
+ stroke: #444;
178
+ }
179
+
180
+ :global(.highcharts-button text) {
181
+ fill: #e0e0e0;
182
+ }
183
+
184
+ :global(.highcharts-button:hover) {
185
+ fill: #3a3a3a;
186
+ }
187
+
188
+ :global(.highcharts-tooltip-box) {
189
+ fill: rgba(0, 0, 0, 0.9);
190
+ stroke: rgba(255, 255, 255, 0.2);
191
+ }
192
+
193
+ :global(.highcharts-tooltip text) {
194
+ fill: #e0e0e0;
195
+ }
196
+ </style>
src/lib/TrafficChart.svelte ADDED
@@ -0,0 +1,188 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script lang="ts">
2
+ import { onMount } from 'svelte';
3
+ import { Chart, registerables } from 'chart.js';
4
+
5
+ Chart.register(...registerables);
6
+
7
+ let chartCanvas: HTMLCanvasElement;
8
+ let chart: Chart | null = null;
9
+
10
+ interface TrafficData {
11
+ traffic: {
12
+ [key: string]: {
13
+ displayName: string;
14
+ xorb: number;
15
+ bridge: number;
16
+ };
17
+ };
18
+ }
19
+
20
+ onMount(() => {
21
+ let mounted = true;
22
+
23
+ (async () => {
24
+ try {
25
+ const response = await fetch('/status.json');
26
+ const data: TrafficData = await response.json();
27
+
28
+ if (!mounted) return;
29
+
30
+ const categories = Object.keys(data.traffic);
31
+ const displayNames = categories.map(cat => data.traffic[cat].displayName);
32
+ const xorbValues = categories.map(cat => data.traffic[cat].xorb * 100);
33
+ const bridgeValues = categories.map(cat => data.traffic[cat].bridge * 100);
34
+
35
+ if (chartCanvas) {
36
+ // Initialize chart with zero values to enable animation
37
+ const zeroValues = new Array(displayNames.length).fill(0);
38
+
39
+ chart = new Chart(chartCanvas, {
40
+ type: 'bar',
41
+ data: {
42
+ labels: displayNames,
43
+ datasets: [
44
+ {
45
+ label: 'XORB',
46
+ data: zeroValues,
47
+ backgroundColor: 'rgba(54, 162, 235, 0.6)',
48
+ borderColor: 'rgba(54, 162, 235, 1)',
49
+ borderWidth: 1,
50
+ borderRadius: {
51
+ topLeft: 8,
52
+ topRight: 8,
53
+ bottomLeft: 0,
54
+ bottomRight: 0
55
+ }
56
+ },
57
+ {
58
+ label: 'Bridge',
59
+ data: zeroValues,
60
+ backgroundColor: 'rgba(255, 99, 132, 0.6)',
61
+ borderColor: 'rgba(255, 99, 132, 1)',
62
+ borderWidth: 1,
63
+ borderRadius: {
64
+ topLeft: 8,
65
+ topRight: 8,
66
+ bottomLeft: 0,
67
+ bottomRight: 0
68
+ }
69
+ }
70
+ ]
71
+ },
72
+ options: {
73
+ responsive: true,
74
+ maintainAspectRatio: false,
75
+ animation: {
76
+ duration: 1000,
77
+ easing: 'easeOutQuart'
78
+ },
79
+ scales: {
80
+ y: {
81
+ beginAtZero: true,
82
+ max: 100,
83
+ title: {
84
+ display: true,
85
+ text: 'Traffic Percentage',
86
+ color: '#e0e0e0'
87
+ },
88
+ ticks: {
89
+ color: '#e0e0e0',
90
+ callback: function(value) {
91
+ return value + '%';
92
+ }
93
+ },
94
+ grid: {
95
+ color: 'rgba(255, 255, 255, 0.1)'
96
+ }
97
+ },
98
+ x: {
99
+ title: {
100
+ display: true,
101
+ text: 'Hub Account Type',
102
+ color: '#e0e0e0'
103
+ },
104
+ ticks: {
105
+ color: '#e0e0e0'
106
+ },
107
+ grid: {
108
+ color: 'rgba(255, 255, 255, 0.1)'
109
+ }
110
+ }
111
+ },
112
+ plugins: {
113
+ title: {
114
+ display: true,
115
+ text: 'HF CDN Traffic by Account Type',
116
+ color: '#e0e0e0',
117
+ font: {
118
+ size: 18
119
+ }
120
+ },
121
+ legend: {
122
+ display: true,
123
+ position: 'top',
124
+ labels: {
125
+ color: '#e0e0e0'
126
+ }
127
+ },
128
+ tooltip: {
129
+ enabled: true,
130
+ backgroundColor: 'rgba(0, 0, 0, 0.9)',
131
+ titleColor: '#e0e0e0',
132
+ bodyColor: '#e0e0e0',
133
+ borderColor: 'rgba(255, 255, 255, 0.2)',
134
+ borderWidth: 1,
135
+ padding: 12,
136
+ displayColors: true,
137
+ callbacks: {
138
+ title: function(context) {
139
+ return context[0]?.label || '';
140
+ },
141
+ label: function(context) {
142
+ const value = context.parsed.y;
143
+ if (value === null || value === undefined) return '';
144
+ return context.dataset.label + ': ' + value.toFixed(1) + '%';
145
+ }
146
+ }
147
+ }
148
+ }
149
+ }
150
+ });
151
+
152
+ // Update with actual data to trigger animation
153
+ chart.data.datasets[0].data = xorbValues;
154
+ chart.data.datasets[1].data = bridgeValues;
155
+ chart.update('active');
156
+ }
157
+ } catch (error) {
158
+ console.error('Error loading traffic data:', error);
159
+ }
160
+ })();
161
+
162
+ return () => {
163
+ mounted = false;
164
+ if (chart) {
165
+ chart.destroy();
166
+ }
167
+ };
168
+ });
169
+ </script>
170
+
171
+ <div class="chart-container">
172
+ <canvas bind:this={chartCanvas}></canvas>
173
+ </div>
174
+
175
+ <style>
176
+ .chart-container {
177
+ width: 75vw;
178
+ max-width: 100%;
179
+ height: 75vh;
180
+ margin: 0 auto;
181
+ padding: 1rem;
182
+ display: flex;
183
+ justify-content: center;
184
+ align-items: center;
185
+ box-sizing: border-box;
186
+ }
187
+ </style>
188
+