Rodrigo Ortega commited on
Commit
27377d7
·
1 Parent(s): 4ba5b45

Add gallery listing and media endpoints

Browse files
.gitignore CHANGED
@@ -1,3 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # Generated outputs
2
  outputs/
3
  ComfyUI_*.png
@@ -5,7 +18,7 @@ ComfyUI_*.jpg
5
  ComfyUI_*.jpeg
6
  ComfyUI_*.webp
7
 
8
- # Local configuration
9
  configs/
10
  .env
11
  .env.*
@@ -19,5 +32,10 @@ venv/
19
  # Logs
20
  *.log
21
 
22
- # Internal notes not intended for public repo
23
  internal/
 
 
 
 
 
 
1
+ # Dependencies
2
+ node_modules/
3
+ studio/node_modules/
4
+
5
+ # Build/cache output
6
+ dist/
7
+ studio/dist/
8
+ .vite/
9
+ studio/.vite/
10
+ *.tsbuildinfo
11
+ studio/vite.config.js
12
+ studio/vite.config.d.ts
13
+
14
  # Generated outputs
15
  outputs/
16
  ComfyUI_*.png
 
18
  ComfyUI_*.jpeg
19
  ComfyUI_*.webp
20
 
21
+ # Local/private configuration
22
  configs/
23
  .env
24
  .env.*
 
32
  # Logs
33
  *.log
34
 
35
+ # Internal/private notes and datasets
36
  internal/
37
+ private_datasets/
38
+ RodrigoFaceDataset.zip
39
+
40
+ # OS/editor
41
+ .DS_Store
app/nemoflix_amd/api.py CHANGED
@@ -253,3 +253,78 @@ async def job(prompt_id: str) -> JobStatusResponse:
253
  status = "completed" if outputs else ("queued_or_running" if history == {} else "unknown")
254
  progress = 100.0 if outputs else None
255
  return JobStatusResponse(ok=True, prompt_id=prompt_id, status=status, progress=progress, outputs=outputs, raw=history)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
253
  status = "completed" if outputs else ("queued_or_running" if history == {} else "unknown")
254
  progress = 100.0 if outputs else None
255
  return JobStatusResponse(ok=True, prompt_id=prompt_id, status=status, progress=progress, outputs=outputs, raw=history)
256
+
257
+
258
+ import os
259
+ from fastapi.responses import FileResponse
260
+
261
+ _OUTPUT_DIR = Path("/root/ComfyUI/output")
262
+ _ALLOW_EXT = {".png", ".jpg", ".jpeg", ".webp", ".mp4", ".webm", ".gif"}
263
+
264
+
265
+ @app.get("/api/listing")
266
+ async def listing(dir: str = "", offset: int = 0, limit: int = 60) -> dict[str, Any]:
267
+ base = _OUTPUT_DIR / dir if dir else _OUTPUT_DIR
268
+ if not str(base.resolve()).startswith(str(_OUTPUT_DIR.resolve())):
269
+ raise HTTPException(status_code=400, detail="Invalid dir")
270
+ items: list[dict[str, Any]] = []
271
+ total = 0
272
+
273
+ def scan_directory(scan_base: Path, rel_prefix: str = ""):
274
+ nonlocal total
275
+ if not scan_base.is_dir():
276
+ return
277
+ for entry in scan_base.iterdir():
278
+ if entry.name.startswith("."):
279
+ continue
280
+ if entry.is_dir():
281
+ new_prefix = f"{rel_prefix}/{entry.name}" if rel_prefix else entry.name
282
+ scan_directory(entry, new_prefix)
283
+ elif entry.is_file():
284
+ ext = entry.suffix.lower()
285
+ if ext not in _ALLOW_EXT:
286
+ continue
287
+ total += 1
288
+ if len(items) >= limit:
289
+ continue
290
+ w, h = 0, 0
291
+ if ext in {".mp4", ".webm"}:
292
+ w, h = 1280, 720
293
+ else:
294
+ try:
295
+ from PIL import Image
296
+ with Image.open(entry) as im:
297
+ w, h = im.width, im.height
298
+ except Exception:
299
+ pass
300
+ rel = f"{rel_prefix}/{entry.name}" if rel_prefix else entry.name
301
+ item: dict[str, Any] = {
302
+ "name": entry.name,
303
+ "type": "video" if ext in {".mp4", ".webm", ".gif"} else "image",
304
+ "width": w,
305
+ "height": h,
306
+ "mtime": entry.stat().st_mtime,
307
+ "url": f"/media/{rel}",
308
+ "thumb": f"/media/{rel}",
309
+ }
310
+ items.append(item)
311
+
312
+ scan_directory(base)
313
+ items.sort(key=lambda x: x["mtime"], reverse=True)
314
+ return {"images": items, "total": total, "offset": offset, "limit": limit}
315
+
316
+
317
+ @app.get("/media/{path:path}")
318
+ async def media(path: str) -> FileResponse:
319
+ target = _OUTPUT_DIR / path
320
+ if not str(target.resolve()).startswith(str(_OUTPUT_DIR.resolve())):
321
+ raise HTTPException(status_code=403, detail="Access denied")
322
+ if not target.is_file():
323
+ raise HTTPException(status_code=404, detail="Not found")
324
+ stat = target.stat()
325
+ etag = f'W/"{stat.st_mtime_ns}-{stat.st_size}"'
326
+ return FileResponse(
327
+ target,
328
+ headers={"Cache-Control": "private, max-age=604800, immutable", "ETag": etag},
329
+ )
330
+
studio/index.html ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Nemoflix AMD Gallery</title>
7
+ </head>
8
+ <body class="bg-black text-white">
9
+ <div id="root"></div>
10
+ <script type="module" src="/src/main.tsx"></script>
11
+ </body>
12
+ </html>
studio/package-lock.json ADDED
@@ -0,0 +1,2150 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "nemoflix-amd-studio",
3
+ "version": "0.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "nemoflix-amd-studio",
9
+ "version": "0.0.0",
10
+ "dependencies": {
11
+ "react": "^19.2.4",
12
+ "react-dom": "^19.2.4"
13
+ },
14
+ "devDependencies": {
15
+ "@types/react": "^19.2.14",
16
+ "@types/react-dom": "^19.2.3",
17
+ "@vitejs/plugin-react": "^6.0.1",
18
+ "autoprefixer": "^10.4.21",
19
+ "postcss": "^8.5.3",
20
+ "tailwindcss": "^3.4.1",
21
+ "typescript": "~5.9.3",
22
+ "vite": "^8.0.1"
23
+ }
24
+ },
25
+ "node_modules/@alloc/quick-lru": {
26
+ "version": "5.2.0",
27
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
28
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
29
+ "dev": true,
30
+ "license": "MIT",
31
+ "engines": {
32
+ "node": ">=10"
33
+ },
34
+ "funding": {
35
+ "url": "https://github.com/sponsors/sindresorhus"
36
+ }
37
+ },
38
+ "node_modules/@nodelib/fs.scandir": {
39
+ "version": "2.1.5",
40
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
41
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
42
+ "dev": true,
43
+ "license": "MIT",
44
+ "dependencies": {
45
+ "@nodelib/fs.stat": "2.0.5",
46
+ "run-parallel": "^1.1.9"
47
+ },
48
+ "engines": {
49
+ "node": ">= 8"
50
+ }
51
+ },
52
+ "node_modules/@nodelib/fs.stat": {
53
+ "version": "2.0.5",
54
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
55
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
56
+ "dev": true,
57
+ "license": "MIT",
58
+ "engines": {
59
+ "node": ">= 8"
60
+ }
61
+ },
62
+ "node_modules/@nodelib/fs.walk": {
63
+ "version": "1.2.8",
64
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
65
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
66
+ "dev": true,
67
+ "license": "MIT",
68
+ "dependencies": {
69
+ "@nodelib/fs.scandir": "2.1.5",
70
+ "fastq": "^1.6.0"
71
+ },
72
+ "engines": {
73
+ "node": ">= 8"
74
+ }
75
+ },
76
+ "node_modules/@rolldown/binding-android-arm64": {
77
+ "version": "1.0.0-rc.17",
78
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.17.tgz",
79
+ "integrity": "sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==",
80
+ "cpu": [
81
+ "arm64"
82
+ ],
83
+ "dev": true,
84
+ "license": "MIT",
85
+ "optional": true,
86
+ "os": [
87
+ "android"
88
+ ],
89
+ "engines": {
90
+ "node": "^20.19.0 || >=22.12.0"
91
+ }
92
+ },
93
+ "node_modules/@rolldown/binding-darwin-arm64": {
94
+ "version": "1.0.0-rc.17",
95
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.17.tgz",
96
+ "integrity": "sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==",
97
+ "cpu": [
98
+ "arm64"
99
+ ],
100
+ "dev": true,
101
+ "license": "MIT",
102
+ "optional": true,
103
+ "os": [
104
+ "darwin"
105
+ ],
106
+ "engines": {
107
+ "node": "^20.19.0 || >=22.12.0"
108
+ }
109
+ },
110
+ "node_modules/@rolldown/binding-darwin-x64": {
111
+ "version": "1.0.0-rc.17",
112
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.17.tgz",
113
+ "integrity": "sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==",
114
+ "cpu": [
115
+ "x64"
116
+ ],
117
+ "dev": true,
118
+ "license": "MIT",
119
+ "optional": true,
120
+ "os": [
121
+ "darwin"
122
+ ],
123
+ "engines": {
124
+ "node": "^20.19.0 || >=22.12.0"
125
+ }
126
+ },
127
+ "node_modules/@rolldown/binding-freebsd-x64": {
128
+ "version": "1.0.0-rc.17",
129
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.17.tgz",
130
+ "integrity": "sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==",
131
+ "cpu": [
132
+ "x64"
133
+ ],
134
+ "dev": true,
135
+ "license": "MIT",
136
+ "optional": true,
137
+ "os": [
138
+ "freebsd"
139
+ ],
140
+ "engines": {
141
+ "node": "^20.19.0 || >=22.12.0"
142
+ }
143
+ },
144
+ "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
145
+ "version": "1.0.0-rc.17",
146
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.17.tgz",
147
+ "integrity": "sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==",
148
+ "cpu": [
149
+ "arm"
150
+ ],
151
+ "dev": true,
152
+ "license": "MIT",
153
+ "optional": true,
154
+ "os": [
155
+ "linux"
156
+ ],
157
+ "engines": {
158
+ "node": "^20.19.0 || >=22.12.0"
159
+ }
160
+ },
161
+ "node_modules/@rolldown/binding-linux-arm64-gnu": {
162
+ "version": "1.0.0-rc.17",
163
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.17.tgz",
164
+ "integrity": "sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==",
165
+ "cpu": [
166
+ "arm64"
167
+ ],
168
+ "dev": true,
169
+ "license": "MIT",
170
+ "optional": true,
171
+ "os": [
172
+ "linux"
173
+ ],
174
+ "engines": {
175
+ "node": "^20.19.0 || >=22.12.0"
176
+ }
177
+ },
178
+ "node_modules/@rolldown/binding-linux-arm64-musl": {
179
+ "version": "1.0.0-rc.17",
180
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.17.tgz",
181
+ "integrity": "sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==",
182
+ "cpu": [
183
+ "arm64"
184
+ ],
185
+ "dev": true,
186
+ "license": "MIT",
187
+ "optional": true,
188
+ "os": [
189
+ "linux"
190
+ ],
191
+ "engines": {
192
+ "node": "^20.19.0 || >=22.12.0"
193
+ }
194
+ },
195
+ "node_modules/@rolldown/binding-linux-ppc64-gnu": {
196
+ "version": "1.0.0-rc.17",
197
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.17.tgz",
198
+ "integrity": "sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==",
199
+ "cpu": [
200
+ "ppc64"
201
+ ],
202
+ "dev": true,
203
+ "license": "MIT",
204
+ "optional": true,
205
+ "os": [
206
+ "linux"
207
+ ],
208
+ "engines": {
209
+ "node": "^20.19.0 || >=22.12.0"
210
+ }
211
+ },
212
+ "node_modules/@rolldown/binding-linux-s390x-gnu": {
213
+ "version": "1.0.0-rc.17",
214
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.17.tgz",
215
+ "integrity": "sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==",
216
+ "cpu": [
217
+ "s390x"
218
+ ],
219
+ "dev": true,
220
+ "license": "MIT",
221
+ "optional": true,
222
+ "os": [
223
+ "linux"
224
+ ],
225
+ "engines": {
226
+ "node": "^20.19.0 || >=22.12.0"
227
+ }
228
+ },
229
+ "node_modules/@rolldown/binding-openharmony-arm64": {
230
+ "version": "1.0.0-rc.17",
231
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.17.tgz",
232
+ "integrity": "sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==",
233
+ "cpu": [
234
+ "arm64"
235
+ ],
236
+ "dev": true,
237
+ "license": "MIT",
238
+ "optional": true,
239
+ "os": [
240
+ "openharmony"
241
+ ],
242
+ "engines": {
243
+ "node": "^20.19.0 || >=22.12.0"
244
+ }
245
+ },
246
+ "node_modules/@rolldown/binding-wasm32-wasi": {
247
+ "version": "1.0.0-rc.17",
248
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.17.tgz",
249
+ "integrity": "sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==",
250
+ "cpu": [
251
+ "wasm32"
252
+ ],
253
+ "dev": true,
254
+ "license": "MIT",
255
+ "optional": true,
256
+ "dependencies": {
257
+ "@emnapi/core": "1.10.0",
258
+ "@emnapi/runtime": "1.10.0",
259
+ "@napi-rs/wasm-runtime": "^1.1.4"
260
+ },
261
+ "engines": {
262
+ "node": "^20.19.0 || >=22.12.0"
263
+ }
264
+ },
265
+ "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/core": {
266
+ "version": "1.10.0",
267
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
268
+ "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==",
269
+ "dev": true,
270
+ "license": "MIT",
271
+ "optional": true,
272
+ "dependencies": {
273
+ "@emnapi/wasi-threads": "1.2.1",
274
+ "tslib": "^2.4.0"
275
+ }
276
+ },
277
+ "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/runtime": {
278
+ "version": "1.10.0",
279
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
280
+ "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
281
+ "dev": true,
282
+ "license": "MIT",
283
+ "optional": true,
284
+ "dependencies": {
285
+ "tslib": "^2.4.0"
286
+ }
287
+ },
288
+ "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/wasi-threads": {
289
+ "version": "1.2.1",
290
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz",
291
+ "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==",
292
+ "dev": true,
293
+ "license": "MIT",
294
+ "optional": true,
295
+ "dependencies": {
296
+ "tslib": "^2.4.0"
297
+ }
298
+ },
299
+ "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": {
300
+ "version": "1.1.4",
301
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
302
+ "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==",
303
+ "dev": true,
304
+ "license": "MIT",
305
+ "optional": true,
306
+ "dependencies": {
307
+ "@tybys/wasm-util": "^0.10.1"
308
+ },
309
+ "funding": {
310
+ "type": "github",
311
+ "url": "https://github.com/sponsors/Brooooooklyn"
312
+ },
313
+ "peerDependencies": {
314
+ "@emnapi/core": "^1.7.1",
315
+ "@emnapi/runtime": "^1.7.1"
316
+ }
317
+ },
318
+ "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@tybys/wasm-util": {
319
+ "version": "0.10.2",
320
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz",
321
+ "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==",
322
+ "dev": true,
323
+ "license": "MIT",
324
+ "optional": true,
325
+ "dependencies": {
326
+ "tslib": "^2.4.0"
327
+ }
328
+ },
329
+ "node_modules/@rolldown/binding-wasm32-wasi/node_modules/tslib": {
330
+ "version": "2.8.1",
331
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
332
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
333
+ "dev": true,
334
+ "license": "0BSD",
335
+ "optional": true
336
+ },
337
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
338
+ "version": "1.0.0-rc.17",
339
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.17.tgz",
340
+ "integrity": "sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==",
341
+ "cpu": [
342
+ "arm64"
343
+ ],
344
+ "dev": true,
345
+ "license": "MIT",
346
+ "optional": true,
347
+ "os": [
348
+ "win32"
349
+ ],
350
+ "engines": {
351
+ "node": "^20.19.0 || >=22.12.0"
352
+ }
353
+ },
354
+ "node_modules/@rolldown/binding-win32-x64-msvc": {
355
+ "version": "1.0.0-rc.17",
356
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.17.tgz",
357
+ "integrity": "sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==",
358
+ "cpu": [
359
+ "x64"
360
+ ],
361
+ "dev": true,
362
+ "license": "MIT",
363
+ "optional": true,
364
+ "os": [
365
+ "win32"
366
+ ],
367
+ "engines": {
368
+ "node": "^20.19.0 || >=22.12.0"
369
+ }
370
+ },
371
+ "node_modules/@rolldown/pluginutils": {
372
+ "version": "1.0.0-rc.7",
373
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.7.tgz",
374
+ "integrity": "sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==",
375
+ "dev": true,
376
+ "license": "MIT"
377
+ },
378
+ "node_modules/@types/node": {
379
+ "version": "25.6.0",
380
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz",
381
+ "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==",
382
+ "dev": true,
383
+ "license": "MIT",
384
+ "optional": true,
385
+ "peer": true,
386
+ "dependencies": {
387
+ "undici-types": "~7.19.0"
388
+ }
389
+ },
390
+ "node_modules/@types/react": {
391
+ "version": "19.2.14",
392
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz",
393
+ "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==",
394
+ "dev": true,
395
+ "license": "MIT",
396
+ "dependencies": {
397
+ "csstype": "^3.2.2"
398
+ }
399
+ },
400
+ "node_modules/@types/react-dom": {
401
+ "version": "19.2.3",
402
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz",
403
+ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
404
+ "dev": true,
405
+ "license": "MIT",
406
+ "peerDependencies": {
407
+ "@types/react": "^19.2.0"
408
+ }
409
+ },
410
+ "node_modules/@vitejs/plugin-react": {
411
+ "version": "6.0.1",
412
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.1.tgz",
413
+ "integrity": "sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==",
414
+ "dev": true,
415
+ "license": "MIT",
416
+ "dependencies": {
417
+ "@rolldown/pluginutils": "1.0.0-rc.7"
418
+ },
419
+ "engines": {
420
+ "node": "^20.19.0 || >=22.12.0"
421
+ },
422
+ "peerDependencies": {
423
+ "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0",
424
+ "babel-plugin-react-compiler": "^1.0.0",
425
+ "vite": "^8.0.0"
426
+ },
427
+ "peerDependenciesMeta": {
428
+ "@rolldown/plugin-babel": {
429
+ "optional": true
430
+ },
431
+ "babel-plugin-react-compiler": {
432
+ "optional": true
433
+ }
434
+ }
435
+ },
436
+ "node_modules/any-promise": {
437
+ "version": "1.3.0",
438
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
439
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
440
+ "dev": true,
441
+ "license": "MIT"
442
+ },
443
+ "node_modules/anymatch": {
444
+ "version": "3.1.3",
445
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
446
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
447
+ "dev": true,
448
+ "license": "ISC",
449
+ "dependencies": {
450
+ "normalize-path": "^3.0.0",
451
+ "picomatch": "^2.0.4"
452
+ },
453
+ "engines": {
454
+ "node": ">= 8"
455
+ }
456
+ },
457
+ "node_modules/anymatch/node_modules/picomatch": {
458
+ "version": "2.3.2",
459
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
460
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
461
+ "dev": true,
462
+ "license": "MIT",
463
+ "engines": {
464
+ "node": ">=8.6"
465
+ },
466
+ "funding": {
467
+ "url": "https://github.com/sponsors/jonschlinkert"
468
+ }
469
+ },
470
+ "node_modules/arg": {
471
+ "version": "5.0.2",
472
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
473
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
474
+ "dev": true,
475
+ "license": "MIT"
476
+ },
477
+ "node_modules/autoprefixer": {
478
+ "version": "10.5.0",
479
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz",
480
+ "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==",
481
+ "dev": true,
482
+ "funding": [
483
+ {
484
+ "type": "opencollective",
485
+ "url": "https://opencollective.com/postcss/"
486
+ },
487
+ {
488
+ "type": "tidelift",
489
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
490
+ },
491
+ {
492
+ "type": "github",
493
+ "url": "https://github.com/sponsors/ai"
494
+ }
495
+ ],
496
+ "license": "MIT",
497
+ "dependencies": {
498
+ "browserslist": "^4.28.2",
499
+ "caniuse-lite": "^1.0.30001787",
500
+ "fraction.js": "^5.3.4",
501
+ "picocolors": "^1.1.1",
502
+ "postcss-value-parser": "^4.2.0"
503
+ },
504
+ "bin": {
505
+ "autoprefixer": "bin/autoprefixer"
506
+ },
507
+ "engines": {
508
+ "node": "^10 || ^12 || >=14"
509
+ },
510
+ "peerDependencies": {
511
+ "postcss": "^8.1.0"
512
+ }
513
+ },
514
+ "node_modules/autoprefixer/node_modules/baseline-browser-mapping": {
515
+ "version": "2.10.27",
516
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.27.tgz",
517
+ "integrity": "sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==",
518
+ "dev": true,
519
+ "license": "Apache-2.0",
520
+ "bin": {
521
+ "baseline-browser-mapping": "dist/cli.cjs"
522
+ },
523
+ "engines": {
524
+ "node": ">=6.0.0"
525
+ }
526
+ },
527
+ "node_modules/autoprefixer/node_modules/browserslist": {
528
+ "version": "4.28.2",
529
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
530
+ "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
531
+ "dev": true,
532
+ "funding": [
533
+ {
534
+ "type": "opencollective",
535
+ "url": "https://opencollective.com/browserslist"
536
+ },
537
+ {
538
+ "type": "tidelift",
539
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
540
+ },
541
+ {
542
+ "type": "github",
543
+ "url": "https://github.com/sponsors/ai"
544
+ }
545
+ ],
546
+ "license": "MIT",
547
+ "dependencies": {
548
+ "baseline-browser-mapping": "^2.10.12",
549
+ "caniuse-lite": "^1.0.30001782",
550
+ "electron-to-chromium": "^1.5.328",
551
+ "node-releases": "^2.0.36",
552
+ "update-browserslist-db": "^1.2.3"
553
+ },
554
+ "bin": {
555
+ "browserslist": "cli.js"
556
+ },
557
+ "engines": {
558
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
559
+ }
560
+ },
561
+ "node_modules/autoprefixer/node_modules/caniuse-lite": {
562
+ "version": "1.0.30001791",
563
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz",
564
+ "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==",
565
+ "dev": true,
566
+ "funding": [
567
+ {
568
+ "type": "opencollective",
569
+ "url": "https://opencollective.com/browserslist"
570
+ },
571
+ {
572
+ "type": "tidelift",
573
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
574
+ },
575
+ {
576
+ "type": "github",
577
+ "url": "https://github.com/sponsors/ai"
578
+ }
579
+ ],
580
+ "license": "CC-BY-4.0"
581
+ },
582
+ "node_modules/autoprefixer/node_modules/electron-to-chromium": {
583
+ "version": "1.5.349",
584
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.349.tgz",
585
+ "integrity": "sha512-QsWVGyRuY07Aqb234QytTfwd5d9AJlfNIQ5wIOl1L+PZDzI9d9+Fn0FRale/QYlFxt/bUnB0/nLd1jFPGxGK1A==",
586
+ "dev": true,
587
+ "license": "ISC"
588
+ },
589
+ "node_modules/autoprefixer/node_modules/escalade": {
590
+ "version": "3.2.0",
591
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
592
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
593
+ "dev": true,
594
+ "license": "MIT",
595
+ "engines": {
596
+ "node": ">=6"
597
+ }
598
+ },
599
+ "node_modules/autoprefixer/node_modules/node-releases": {
600
+ "version": "2.0.38",
601
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz",
602
+ "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==",
603
+ "dev": true,
604
+ "license": "MIT"
605
+ },
606
+ "node_modules/autoprefixer/node_modules/update-browserslist-db": {
607
+ "version": "1.2.3",
608
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
609
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
610
+ "dev": true,
611
+ "funding": [
612
+ {
613
+ "type": "opencollective",
614
+ "url": "https://opencollective.com/browserslist"
615
+ },
616
+ {
617
+ "type": "tidelift",
618
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
619
+ },
620
+ {
621
+ "type": "github",
622
+ "url": "https://github.com/sponsors/ai"
623
+ }
624
+ ],
625
+ "license": "MIT",
626
+ "dependencies": {
627
+ "escalade": "^3.2.0",
628
+ "picocolors": "^1.1.1"
629
+ },
630
+ "bin": {
631
+ "update-browserslist-db": "cli.js"
632
+ },
633
+ "peerDependencies": {
634
+ "browserslist": ">= 4.21.0"
635
+ }
636
+ },
637
+ "node_modules/binary-extensions": {
638
+ "version": "2.3.0",
639
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
640
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
641
+ "dev": true,
642
+ "license": "MIT",
643
+ "engines": {
644
+ "node": ">=8"
645
+ },
646
+ "funding": {
647
+ "url": "https://github.com/sponsors/sindresorhus"
648
+ }
649
+ },
650
+ "node_modules/braces": {
651
+ "version": "3.0.3",
652
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
653
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
654
+ "dev": true,
655
+ "license": "MIT",
656
+ "dependencies": {
657
+ "fill-range": "^7.1.1"
658
+ },
659
+ "engines": {
660
+ "node": ">=8"
661
+ }
662
+ },
663
+ "node_modules/camelcase-css": {
664
+ "version": "2.0.1",
665
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
666
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
667
+ "dev": true,
668
+ "license": "MIT",
669
+ "engines": {
670
+ "node": ">= 6"
671
+ }
672
+ },
673
+ "node_modules/chokidar": {
674
+ "version": "3.6.0",
675
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
676
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
677
+ "dev": true,
678
+ "license": "MIT",
679
+ "dependencies": {
680
+ "anymatch": "~3.1.2",
681
+ "braces": "~3.0.2",
682
+ "glob-parent": "~5.1.2",
683
+ "is-binary-path": "~2.1.0",
684
+ "is-glob": "~4.0.1",
685
+ "normalize-path": "~3.0.0",
686
+ "readdirp": "~3.6.0"
687
+ },
688
+ "engines": {
689
+ "node": ">= 8.10.0"
690
+ },
691
+ "funding": {
692
+ "url": "https://paulmillr.com/funding/"
693
+ },
694
+ "optionalDependencies": {
695
+ "fsevents": "~2.3.2"
696
+ }
697
+ },
698
+ "node_modules/chokidar/node_modules/glob-parent": {
699
+ "version": "5.1.2",
700
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
701
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
702
+ "dev": true,
703
+ "license": "ISC",
704
+ "dependencies": {
705
+ "is-glob": "^4.0.1"
706
+ },
707
+ "engines": {
708
+ "node": ">= 6"
709
+ }
710
+ },
711
+ "node_modules/commander": {
712
+ "version": "4.1.1",
713
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
714
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
715
+ "dev": true,
716
+ "license": "MIT",
717
+ "engines": {
718
+ "node": ">= 6"
719
+ }
720
+ },
721
+ "node_modules/cssesc": {
722
+ "version": "3.0.0",
723
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
724
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
725
+ "dev": true,
726
+ "license": "MIT",
727
+ "bin": {
728
+ "cssesc": "bin/cssesc"
729
+ },
730
+ "engines": {
731
+ "node": ">=4"
732
+ }
733
+ },
734
+ "node_modules/csstype": {
735
+ "version": "3.2.3",
736
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz",
737
+ "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
738
+ "dev": true,
739
+ "license": "MIT"
740
+ },
741
+ "node_modules/didyoumean": {
742
+ "version": "1.2.2",
743
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
744
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
745
+ "dev": true,
746
+ "license": "Apache-2.0"
747
+ },
748
+ "node_modules/dlv": {
749
+ "version": "1.1.3",
750
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
751
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
752
+ "dev": true,
753
+ "license": "MIT"
754
+ },
755
+ "node_modules/es-errors": {
756
+ "version": "1.3.0",
757
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
758
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
759
+ "dev": true,
760
+ "license": "MIT",
761
+ "engines": {
762
+ "node": ">= 0.4"
763
+ }
764
+ },
765
+ "node_modules/fast-glob": {
766
+ "version": "3.3.3",
767
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
768
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
769
+ "dev": true,
770
+ "license": "MIT",
771
+ "dependencies": {
772
+ "@nodelib/fs.stat": "^2.0.2",
773
+ "@nodelib/fs.walk": "^1.2.3",
774
+ "glob-parent": "^5.1.2",
775
+ "merge2": "^1.3.0",
776
+ "micromatch": "^4.0.8"
777
+ },
778
+ "engines": {
779
+ "node": ">=8.6.0"
780
+ }
781
+ },
782
+ "node_modules/fast-glob/node_modules/glob-parent": {
783
+ "version": "5.1.2",
784
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
785
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
786
+ "dev": true,
787
+ "license": "ISC",
788
+ "dependencies": {
789
+ "is-glob": "^4.0.1"
790
+ },
791
+ "engines": {
792
+ "node": ">= 6"
793
+ }
794
+ },
795
+ "node_modules/fastq": {
796
+ "version": "1.20.1",
797
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
798
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
799
+ "dev": true,
800
+ "license": "ISC",
801
+ "dependencies": {
802
+ "reusify": "^1.0.4"
803
+ }
804
+ },
805
+ "node_modules/fill-range": {
806
+ "version": "7.1.1",
807
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
808
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
809
+ "dev": true,
810
+ "license": "MIT",
811
+ "dependencies": {
812
+ "to-regex-range": "^5.0.1"
813
+ },
814
+ "engines": {
815
+ "node": ">=8"
816
+ }
817
+ },
818
+ "node_modules/fraction.js": {
819
+ "version": "5.3.4",
820
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz",
821
+ "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==",
822
+ "dev": true,
823
+ "license": "MIT",
824
+ "engines": {
825
+ "node": "*"
826
+ },
827
+ "funding": {
828
+ "type": "github",
829
+ "url": "https://github.com/sponsors/rawify"
830
+ }
831
+ },
832
+ "node_modules/fsevents": {
833
+ "version": "2.3.3",
834
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
835
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
836
+ "dev": true,
837
+ "hasInstallScript": true,
838
+ "license": "MIT",
839
+ "optional": true,
840
+ "os": [
841
+ "darwin"
842
+ ],
843
+ "engines": {
844
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
845
+ }
846
+ },
847
+ "node_modules/function-bind": {
848
+ "version": "1.1.2",
849
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
850
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
851
+ "dev": true,
852
+ "license": "MIT",
853
+ "funding": {
854
+ "url": "https://github.com/sponsors/ljharb"
855
+ }
856
+ },
857
+ "node_modules/glob-parent": {
858
+ "version": "6.0.2",
859
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
860
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
861
+ "dev": true,
862
+ "license": "ISC",
863
+ "dependencies": {
864
+ "is-glob": "^4.0.3"
865
+ },
866
+ "engines": {
867
+ "node": ">=10.13.0"
868
+ }
869
+ },
870
+ "node_modules/hasown": {
871
+ "version": "2.0.3",
872
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
873
+ "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
874
+ "dev": true,
875
+ "license": "MIT",
876
+ "dependencies": {
877
+ "function-bind": "^1.1.2"
878
+ },
879
+ "engines": {
880
+ "node": ">= 0.4"
881
+ }
882
+ },
883
+ "node_modules/is-binary-path": {
884
+ "version": "2.1.0",
885
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
886
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
887
+ "dev": true,
888
+ "license": "MIT",
889
+ "dependencies": {
890
+ "binary-extensions": "^2.0.0"
891
+ },
892
+ "engines": {
893
+ "node": ">=8"
894
+ }
895
+ },
896
+ "node_modules/is-core-module": {
897
+ "version": "2.16.2",
898
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz",
899
+ "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==",
900
+ "dev": true,
901
+ "license": "MIT",
902
+ "dependencies": {
903
+ "hasown": "^2.0.3"
904
+ },
905
+ "engines": {
906
+ "node": ">= 0.4"
907
+ },
908
+ "funding": {
909
+ "url": "https://github.com/sponsors/ljharb"
910
+ }
911
+ },
912
+ "node_modules/is-glob": {
913
+ "version": "4.0.3",
914
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
915
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
916
+ "dev": true,
917
+ "license": "MIT",
918
+ "dependencies": {
919
+ "is-extglob": "^2.1.1"
920
+ },
921
+ "engines": {
922
+ "node": ">=0.10.0"
923
+ }
924
+ },
925
+ "node_modules/is-glob/node_modules/is-extglob": {
926
+ "version": "2.1.1",
927
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
928
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
929
+ "dev": true,
930
+ "license": "MIT",
931
+ "engines": {
932
+ "node": ">=0.10.0"
933
+ }
934
+ },
935
+ "node_modules/is-number": {
936
+ "version": "7.0.0",
937
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
938
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
939
+ "dev": true,
940
+ "license": "MIT",
941
+ "engines": {
942
+ "node": ">=0.12.0"
943
+ }
944
+ },
945
+ "node_modules/jiti": {
946
+ "version": "2.6.1",
947
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
948
+ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
949
+ "dev": true,
950
+ "license": "MIT",
951
+ "optional": true,
952
+ "peer": true,
953
+ "bin": {
954
+ "jiti": "lib/jiti-cli.mjs"
955
+ }
956
+ },
957
+ "node_modules/lightningcss-android-arm64": {
958
+ "version": "1.32.0",
959
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
960
+ "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
961
+ "cpu": [
962
+ "arm64"
963
+ ],
964
+ "dev": true,
965
+ "license": "MPL-2.0",
966
+ "optional": true,
967
+ "os": [
968
+ "android"
969
+ ],
970
+ "engines": {
971
+ "node": ">= 12.0.0"
972
+ },
973
+ "funding": {
974
+ "type": "opencollective",
975
+ "url": "https://opencollective.com/parcel"
976
+ }
977
+ },
978
+ "node_modules/lightningcss-darwin-arm64": {
979
+ "version": "1.32.0",
980
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
981
+ "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
982
+ "cpu": [
983
+ "arm64"
984
+ ],
985
+ "dev": true,
986
+ "license": "MPL-2.0",
987
+ "optional": true,
988
+ "os": [
989
+ "darwin"
990
+ ],
991
+ "engines": {
992
+ "node": ">= 12.0.0"
993
+ },
994
+ "funding": {
995
+ "type": "opencollective",
996
+ "url": "https://opencollective.com/parcel"
997
+ }
998
+ },
999
+ "node_modules/lightningcss-darwin-x64": {
1000
+ "version": "1.32.0",
1001
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
1002
+ "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
1003
+ "cpu": [
1004
+ "x64"
1005
+ ],
1006
+ "dev": true,
1007
+ "license": "MPL-2.0",
1008
+ "optional": true,
1009
+ "os": [
1010
+ "darwin"
1011
+ ],
1012
+ "engines": {
1013
+ "node": ">= 12.0.0"
1014
+ },
1015
+ "funding": {
1016
+ "type": "opencollective",
1017
+ "url": "https://opencollective.com/parcel"
1018
+ }
1019
+ },
1020
+ "node_modules/lightningcss-freebsd-x64": {
1021
+ "version": "1.32.0",
1022
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
1023
+ "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
1024
+ "cpu": [
1025
+ "x64"
1026
+ ],
1027
+ "dev": true,
1028
+ "license": "MPL-2.0",
1029
+ "optional": true,
1030
+ "os": [
1031
+ "freebsd"
1032
+ ],
1033
+ "engines": {
1034
+ "node": ">= 12.0.0"
1035
+ },
1036
+ "funding": {
1037
+ "type": "opencollective",
1038
+ "url": "https://opencollective.com/parcel"
1039
+ }
1040
+ },
1041
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
1042
+ "version": "1.32.0",
1043
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
1044
+ "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
1045
+ "cpu": [
1046
+ "arm"
1047
+ ],
1048
+ "dev": true,
1049
+ "license": "MPL-2.0",
1050
+ "optional": true,
1051
+ "os": [
1052
+ "linux"
1053
+ ],
1054
+ "engines": {
1055
+ "node": ">= 12.0.0"
1056
+ },
1057
+ "funding": {
1058
+ "type": "opencollective",
1059
+ "url": "https://opencollective.com/parcel"
1060
+ }
1061
+ },
1062
+ "node_modules/lightningcss-linux-arm64-gnu": {
1063
+ "version": "1.32.0",
1064
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
1065
+ "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
1066
+ "cpu": [
1067
+ "arm64"
1068
+ ],
1069
+ "dev": true,
1070
+ "license": "MPL-2.0",
1071
+ "optional": true,
1072
+ "os": [
1073
+ "linux"
1074
+ ],
1075
+ "engines": {
1076
+ "node": ">= 12.0.0"
1077
+ },
1078
+ "funding": {
1079
+ "type": "opencollective",
1080
+ "url": "https://opencollective.com/parcel"
1081
+ }
1082
+ },
1083
+ "node_modules/lightningcss-linux-arm64-musl": {
1084
+ "version": "1.32.0",
1085
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
1086
+ "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
1087
+ "cpu": [
1088
+ "arm64"
1089
+ ],
1090
+ "dev": true,
1091
+ "license": "MPL-2.0",
1092
+ "optional": true,
1093
+ "os": [
1094
+ "linux"
1095
+ ],
1096
+ "engines": {
1097
+ "node": ">= 12.0.0"
1098
+ },
1099
+ "funding": {
1100
+ "type": "opencollective",
1101
+ "url": "https://opencollective.com/parcel"
1102
+ }
1103
+ },
1104
+ "node_modules/lightningcss-win32-arm64-msvc": {
1105
+ "version": "1.32.0",
1106
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
1107
+ "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
1108
+ "cpu": [
1109
+ "arm64"
1110
+ ],
1111
+ "dev": true,
1112
+ "license": "MPL-2.0",
1113
+ "optional": true,
1114
+ "os": [
1115
+ "win32"
1116
+ ],
1117
+ "engines": {
1118
+ "node": ">= 12.0.0"
1119
+ },
1120
+ "funding": {
1121
+ "type": "opencollective",
1122
+ "url": "https://opencollective.com/parcel"
1123
+ }
1124
+ },
1125
+ "node_modules/lightningcss-win32-x64-msvc": {
1126
+ "version": "1.32.0",
1127
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
1128
+ "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
1129
+ "cpu": [
1130
+ "x64"
1131
+ ],
1132
+ "dev": true,
1133
+ "license": "MPL-2.0",
1134
+ "optional": true,
1135
+ "os": [
1136
+ "win32"
1137
+ ],
1138
+ "engines": {
1139
+ "node": ">= 12.0.0"
1140
+ },
1141
+ "funding": {
1142
+ "type": "opencollective",
1143
+ "url": "https://opencollective.com/parcel"
1144
+ }
1145
+ },
1146
+ "node_modules/lilconfig": {
1147
+ "version": "3.1.3",
1148
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
1149
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
1150
+ "dev": true,
1151
+ "license": "MIT",
1152
+ "engines": {
1153
+ "node": ">=14"
1154
+ },
1155
+ "funding": {
1156
+ "url": "https://github.com/sponsors/antonk52"
1157
+ }
1158
+ },
1159
+ "node_modules/lines-and-columns": {
1160
+ "version": "1.2.4",
1161
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1162
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
1163
+ "dev": true,
1164
+ "license": "MIT"
1165
+ },
1166
+ "node_modules/merge2": {
1167
+ "version": "1.4.1",
1168
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1169
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1170
+ "dev": true,
1171
+ "license": "MIT",
1172
+ "engines": {
1173
+ "node": ">= 8"
1174
+ }
1175
+ },
1176
+ "node_modules/micromatch": {
1177
+ "version": "4.0.8",
1178
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
1179
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
1180
+ "dev": true,
1181
+ "license": "MIT",
1182
+ "dependencies": {
1183
+ "braces": "^3.0.3",
1184
+ "picomatch": "^2.3.1"
1185
+ },
1186
+ "engines": {
1187
+ "node": ">=8.6"
1188
+ }
1189
+ },
1190
+ "node_modules/micromatch/node_modules/picomatch": {
1191
+ "version": "2.3.2",
1192
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
1193
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
1194
+ "dev": true,
1195
+ "license": "MIT",
1196
+ "engines": {
1197
+ "node": ">=8.6"
1198
+ },
1199
+ "funding": {
1200
+ "url": "https://github.com/sponsors/jonschlinkert"
1201
+ }
1202
+ },
1203
+ "node_modules/mz": {
1204
+ "version": "2.7.0",
1205
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
1206
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
1207
+ "dev": true,
1208
+ "license": "MIT",
1209
+ "dependencies": {
1210
+ "any-promise": "^1.0.0",
1211
+ "object-assign": "^4.0.1",
1212
+ "thenify-all": "^1.0.0"
1213
+ }
1214
+ },
1215
+ "node_modules/nanoid": {
1216
+ "version": "3.3.12",
1217
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz",
1218
+ "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==",
1219
+ "dev": true,
1220
+ "funding": [
1221
+ {
1222
+ "type": "github",
1223
+ "url": "https://github.com/sponsors/ai"
1224
+ }
1225
+ ],
1226
+ "license": "MIT",
1227
+ "bin": {
1228
+ "nanoid": "bin/nanoid.cjs"
1229
+ },
1230
+ "engines": {
1231
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1232
+ }
1233
+ },
1234
+ "node_modules/normalize-path": {
1235
+ "version": "3.0.0",
1236
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1237
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1238
+ "dev": true,
1239
+ "license": "MIT",
1240
+ "engines": {
1241
+ "node": ">=0.10.0"
1242
+ }
1243
+ },
1244
+ "node_modules/object-assign": {
1245
+ "version": "4.1.1",
1246
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1247
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1248
+ "dev": true,
1249
+ "license": "MIT",
1250
+ "engines": {
1251
+ "node": ">=0.10.0"
1252
+ }
1253
+ },
1254
+ "node_modules/object-hash": {
1255
+ "version": "3.0.0",
1256
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
1257
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
1258
+ "dev": true,
1259
+ "license": "MIT",
1260
+ "engines": {
1261
+ "node": ">= 6"
1262
+ }
1263
+ },
1264
+ "node_modules/path-parse": {
1265
+ "version": "1.0.7",
1266
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1267
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1268
+ "dev": true,
1269
+ "license": "MIT"
1270
+ },
1271
+ "node_modules/picocolors": {
1272
+ "version": "1.1.1",
1273
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1274
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
1275
+ "dev": true,
1276
+ "license": "ISC"
1277
+ },
1278
+ "node_modules/pify": {
1279
+ "version": "2.3.0",
1280
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1281
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
1282
+ "dev": true,
1283
+ "license": "MIT",
1284
+ "engines": {
1285
+ "node": ">=0.10.0"
1286
+ }
1287
+ },
1288
+ "node_modules/pirates": {
1289
+ "version": "4.0.7",
1290
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
1291
+ "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
1292
+ "dev": true,
1293
+ "license": "MIT",
1294
+ "engines": {
1295
+ "node": ">= 6"
1296
+ }
1297
+ },
1298
+ "node_modules/postcss": {
1299
+ "version": "8.5.14",
1300
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz",
1301
+ "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==",
1302
+ "dev": true,
1303
+ "funding": [
1304
+ {
1305
+ "type": "opencollective",
1306
+ "url": "https://opencollective.com/postcss/"
1307
+ },
1308
+ {
1309
+ "type": "tidelift",
1310
+ "url": "https://tidelift.com/funding/github/npm/postcss"
1311
+ },
1312
+ {
1313
+ "type": "github",
1314
+ "url": "https://github.com/sponsors/ai"
1315
+ }
1316
+ ],
1317
+ "license": "MIT",
1318
+ "dependencies": {
1319
+ "nanoid": "^3.3.11",
1320
+ "picocolors": "^1.1.1",
1321
+ "source-map-js": "^1.2.1"
1322
+ },
1323
+ "engines": {
1324
+ "node": "^10 || ^12 || >=14"
1325
+ }
1326
+ },
1327
+ "node_modules/postcss-import": {
1328
+ "version": "15.1.0",
1329
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
1330
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
1331
+ "dev": true,
1332
+ "license": "MIT",
1333
+ "dependencies": {
1334
+ "postcss-value-parser": "^4.0.0",
1335
+ "read-cache": "^1.0.0",
1336
+ "resolve": "^1.1.7"
1337
+ },
1338
+ "engines": {
1339
+ "node": ">=14.0.0"
1340
+ },
1341
+ "peerDependencies": {
1342
+ "postcss": "^8.0.0"
1343
+ }
1344
+ },
1345
+ "node_modules/postcss-js": {
1346
+ "version": "4.1.0",
1347
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz",
1348
+ "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==",
1349
+ "dev": true,
1350
+ "funding": [
1351
+ {
1352
+ "type": "opencollective",
1353
+ "url": "https://opencollective.com/postcss/"
1354
+ },
1355
+ {
1356
+ "type": "github",
1357
+ "url": "https://github.com/sponsors/ai"
1358
+ }
1359
+ ],
1360
+ "license": "MIT",
1361
+ "dependencies": {
1362
+ "camelcase-css": "^2.0.1"
1363
+ },
1364
+ "engines": {
1365
+ "node": "^12 || ^14 || >= 16"
1366
+ },
1367
+ "peerDependencies": {
1368
+ "postcss": "^8.4.21"
1369
+ }
1370
+ },
1371
+ "node_modules/postcss-load-config": {
1372
+ "version": "6.0.1",
1373
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz",
1374
+ "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==",
1375
+ "dev": true,
1376
+ "funding": [
1377
+ {
1378
+ "type": "opencollective",
1379
+ "url": "https://opencollective.com/postcss/"
1380
+ },
1381
+ {
1382
+ "type": "github",
1383
+ "url": "https://github.com/sponsors/ai"
1384
+ }
1385
+ ],
1386
+ "license": "MIT",
1387
+ "dependencies": {
1388
+ "lilconfig": "^3.1.1"
1389
+ },
1390
+ "engines": {
1391
+ "node": ">= 18"
1392
+ },
1393
+ "peerDependencies": {
1394
+ "jiti": ">=1.21.0",
1395
+ "postcss": ">=8.0.9",
1396
+ "tsx": "^4.8.1",
1397
+ "yaml": "^2.4.2"
1398
+ },
1399
+ "peerDependenciesMeta": {
1400
+ "jiti": {
1401
+ "optional": true
1402
+ },
1403
+ "postcss": {
1404
+ "optional": true
1405
+ },
1406
+ "tsx": {
1407
+ "optional": true
1408
+ },
1409
+ "yaml": {
1410
+ "optional": true
1411
+ }
1412
+ }
1413
+ },
1414
+ "node_modules/postcss-nested": {
1415
+ "version": "6.2.0",
1416
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
1417
+ "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
1418
+ "dev": true,
1419
+ "funding": [
1420
+ {
1421
+ "type": "opencollective",
1422
+ "url": "https://opencollective.com/postcss/"
1423
+ },
1424
+ {
1425
+ "type": "github",
1426
+ "url": "https://github.com/sponsors/ai"
1427
+ }
1428
+ ],
1429
+ "license": "MIT",
1430
+ "dependencies": {
1431
+ "postcss-selector-parser": "^6.1.1"
1432
+ },
1433
+ "engines": {
1434
+ "node": ">=12.0"
1435
+ },
1436
+ "peerDependencies": {
1437
+ "postcss": "^8.2.14"
1438
+ }
1439
+ },
1440
+ "node_modules/postcss-selector-parser": {
1441
+ "version": "6.1.2",
1442
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
1443
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
1444
+ "dev": true,
1445
+ "license": "MIT",
1446
+ "dependencies": {
1447
+ "cssesc": "^3.0.0",
1448
+ "util-deprecate": "^1.0.2"
1449
+ },
1450
+ "engines": {
1451
+ "node": ">=4"
1452
+ }
1453
+ },
1454
+ "node_modules/postcss-value-parser": {
1455
+ "version": "4.2.0",
1456
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
1457
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
1458
+ "dev": true,
1459
+ "license": "MIT"
1460
+ },
1461
+ "node_modules/queue-microtask": {
1462
+ "version": "1.2.3",
1463
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
1464
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
1465
+ "dev": true,
1466
+ "funding": [
1467
+ {
1468
+ "type": "github",
1469
+ "url": "https://github.com/sponsors/feross"
1470
+ },
1471
+ {
1472
+ "type": "patreon",
1473
+ "url": "https://www.patreon.com/feross"
1474
+ },
1475
+ {
1476
+ "type": "consulting",
1477
+ "url": "https://feross.org/support"
1478
+ }
1479
+ ],
1480
+ "license": "MIT"
1481
+ },
1482
+ "node_modules/react": {
1483
+ "version": "19.2.5",
1484
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz",
1485
+ "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==",
1486
+ "license": "MIT",
1487
+ "engines": {
1488
+ "node": ">=0.10.0"
1489
+ }
1490
+ },
1491
+ "node_modules/react-dom": {
1492
+ "version": "19.2.5",
1493
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz",
1494
+ "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==",
1495
+ "license": "MIT",
1496
+ "dependencies": {
1497
+ "scheduler": "^0.27.0"
1498
+ },
1499
+ "peerDependencies": {
1500
+ "react": "^19.2.5"
1501
+ }
1502
+ },
1503
+ "node_modules/read-cache": {
1504
+ "version": "1.0.0",
1505
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
1506
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
1507
+ "dev": true,
1508
+ "license": "MIT",
1509
+ "dependencies": {
1510
+ "pify": "^2.3.0"
1511
+ }
1512
+ },
1513
+ "node_modules/readdirp": {
1514
+ "version": "3.6.0",
1515
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1516
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1517
+ "dev": true,
1518
+ "license": "MIT",
1519
+ "dependencies": {
1520
+ "picomatch": "^2.2.1"
1521
+ },
1522
+ "engines": {
1523
+ "node": ">=8.10.0"
1524
+ }
1525
+ },
1526
+ "node_modules/readdirp/node_modules/picomatch": {
1527
+ "version": "2.3.2",
1528
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
1529
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
1530
+ "dev": true,
1531
+ "license": "MIT",
1532
+ "engines": {
1533
+ "node": ">=8.6"
1534
+ },
1535
+ "funding": {
1536
+ "url": "https://github.com/sponsors/jonschlinkert"
1537
+ }
1538
+ },
1539
+ "node_modules/resolve": {
1540
+ "version": "1.22.12",
1541
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz",
1542
+ "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==",
1543
+ "dev": true,
1544
+ "license": "MIT",
1545
+ "dependencies": {
1546
+ "es-errors": "^1.3.0",
1547
+ "is-core-module": "^2.16.1",
1548
+ "path-parse": "^1.0.7",
1549
+ "supports-preserve-symlinks-flag": "^1.0.0"
1550
+ },
1551
+ "bin": {
1552
+ "resolve": "bin/resolve"
1553
+ },
1554
+ "engines": {
1555
+ "node": ">= 0.4"
1556
+ },
1557
+ "funding": {
1558
+ "url": "https://github.com/sponsors/ljharb"
1559
+ }
1560
+ },
1561
+ "node_modules/reusify": {
1562
+ "version": "1.1.0",
1563
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
1564
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
1565
+ "dev": true,
1566
+ "license": "MIT",
1567
+ "engines": {
1568
+ "iojs": ">=1.0.0",
1569
+ "node": ">=0.10.0"
1570
+ }
1571
+ },
1572
+ "node_modules/run-parallel": {
1573
+ "version": "1.2.0",
1574
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1575
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1576
+ "dev": true,
1577
+ "funding": [
1578
+ {
1579
+ "type": "github",
1580
+ "url": "https://github.com/sponsors/feross"
1581
+ },
1582
+ {
1583
+ "type": "patreon",
1584
+ "url": "https://www.patreon.com/feross"
1585
+ },
1586
+ {
1587
+ "type": "consulting",
1588
+ "url": "https://feross.org/support"
1589
+ }
1590
+ ],
1591
+ "license": "MIT",
1592
+ "dependencies": {
1593
+ "queue-microtask": "^1.2.2"
1594
+ }
1595
+ },
1596
+ "node_modules/scheduler": {
1597
+ "version": "0.27.0",
1598
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
1599
+ "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==",
1600
+ "license": "MIT"
1601
+ },
1602
+ "node_modules/source-map-js": {
1603
+ "version": "1.2.1",
1604
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
1605
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
1606
+ "dev": true,
1607
+ "license": "BSD-3-Clause",
1608
+ "engines": {
1609
+ "node": ">=0.10.0"
1610
+ }
1611
+ },
1612
+ "node_modules/sucrase": {
1613
+ "version": "3.35.1",
1614
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz",
1615
+ "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==",
1616
+ "dev": true,
1617
+ "license": "MIT",
1618
+ "dependencies": {
1619
+ "@jridgewell/gen-mapping": "^0.3.2",
1620
+ "commander": "^4.0.0",
1621
+ "lines-and-columns": "^1.1.6",
1622
+ "mz": "^2.7.0",
1623
+ "pirates": "^4.0.1",
1624
+ "tinyglobby": "^0.2.11",
1625
+ "ts-interface-checker": "^0.1.9"
1626
+ },
1627
+ "bin": {
1628
+ "sucrase": "bin/sucrase",
1629
+ "sucrase-node": "bin/sucrase-node"
1630
+ },
1631
+ "engines": {
1632
+ "node": ">=16 || 14 >=14.17"
1633
+ }
1634
+ },
1635
+ "node_modules/sucrase/node_modules/@jridgewell/gen-mapping": {
1636
+ "version": "0.3.13",
1637
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
1638
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
1639
+ "dev": true,
1640
+ "license": "MIT",
1641
+ "dependencies": {
1642
+ "@jridgewell/sourcemap-codec": "^1.5.0",
1643
+ "@jridgewell/trace-mapping": "^0.3.24"
1644
+ }
1645
+ },
1646
+ "node_modules/sucrase/node_modules/@jridgewell/resolve-uri": {
1647
+ "version": "3.1.2",
1648
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
1649
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
1650
+ "dev": true,
1651
+ "license": "MIT",
1652
+ "engines": {
1653
+ "node": ">=6.0.0"
1654
+ }
1655
+ },
1656
+ "node_modules/sucrase/node_modules/@jridgewell/sourcemap-codec": {
1657
+ "version": "1.5.5",
1658
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
1659
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
1660
+ "dev": true,
1661
+ "license": "MIT"
1662
+ },
1663
+ "node_modules/sucrase/node_modules/@jridgewell/trace-mapping": {
1664
+ "version": "0.3.31",
1665
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
1666
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
1667
+ "dev": true,
1668
+ "license": "MIT",
1669
+ "dependencies": {
1670
+ "@jridgewell/resolve-uri": "^3.1.0",
1671
+ "@jridgewell/sourcemap-codec": "^1.4.14"
1672
+ }
1673
+ },
1674
+ "node_modules/sucrase/node_modules/fdir": {
1675
+ "version": "6.5.0",
1676
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
1677
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
1678
+ "dev": true,
1679
+ "license": "MIT",
1680
+ "engines": {
1681
+ "node": ">=12.0.0"
1682
+ },
1683
+ "peerDependencies": {
1684
+ "picomatch": "^3 || ^4"
1685
+ },
1686
+ "peerDependenciesMeta": {
1687
+ "picomatch": {
1688
+ "optional": true
1689
+ }
1690
+ }
1691
+ },
1692
+ "node_modules/sucrase/node_modules/picomatch": {
1693
+ "version": "4.0.4",
1694
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
1695
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
1696
+ "dev": true,
1697
+ "license": "MIT",
1698
+ "engines": {
1699
+ "node": ">=12"
1700
+ },
1701
+ "funding": {
1702
+ "url": "https://github.com/sponsors/jonschlinkert"
1703
+ }
1704
+ },
1705
+ "node_modules/sucrase/node_modules/tinyglobby": {
1706
+ "version": "0.2.16",
1707
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
1708
+ "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
1709
+ "dev": true,
1710
+ "license": "MIT",
1711
+ "dependencies": {
1712
+ "fdir": "^6.5.0",
1713
+ "picomatch": "^4.0.4"
1714
+ },
1715
+ "engines": {
1716
+ "node": ">=12.0.0"
1717
+ },
1718
+ "funding": {
1719
+ "url": "https://github.com/sponsors/SuperchupuDev"
1720
+ }
1721
+ },
1722
+ "node_modules/supports-preserve-symlinks-flag": {
1723
+ "version": "1.0.0",
1724
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1725
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1726
+ "dev": true,
1727
+ "license": "MIT",
1728
+ "engines": {
1729
+ "node": ">= 0.4"
1730
+ },
1731
+ "funding": {
1732
+ "url": "https://github.com/sponsors/ljharb"
1733
+ }
1734
+ },
1735
+ "node_modules/tailwindcss": {
1736
+ "version": "3.4.19",
1737
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz",
1738
+ "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==",
1739
+ "dev": true,
1740
+ "license": "MIT",
1741
+ "dependencies": {
1742
+ "@alloc/quick-lru": "^5.2.0",
1743
+ "arg": "^5.0.2",
1744
+ "chokidar": "^3.6.0",
1745
+ "didyoumean": "^1.2.2",
1746
+ "dlv": "^1.1.3",
1747
+ "fast-glob": "^3.3.2",
1748
+ "glob-parent": "^6.0.2",
1749
+ "is-glob": "^4.0.3",
1750
+ "jiti": "^1.21.7",
1751
+ "lilconfig": "^3.1.3",
1752
+ "micromatch": "^4.0.8",
1753
+ "normalize-path": "^3.0.0",
1754
+ "object-hash": "^3.0.0",
1755
+ "picocolors": "^1.1.1",
1756
+ "postcss": "^8.4.47",
1757
+ "postcss-import": "^15.1.0",
1758
+ "postcss-js": "^4.0.1",
1759
+ "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0",
1760
+ "postcss-nested": "^6.2.0",
1761
+ "postcss-selector-parser": "^6.1.2",
1762
+ "resolve": "^1.22.8",
1763
+ "sucrase": "^3.35.0"
1764
+ },
1765
+ "bin": {
1766
+ "tailwind": "lib/cli.js",
1767
+ "tailwindcss": "lib/cli.js"
1768
+ },
1769
+ "engines": {
1770
+ "node": ">=14.0.0"
1771
+ }
1772
+ },
1773
+ "node_modules/tailwindcss/node_modules/jiti": {
1774
+ "version": "1.21.7",
1775
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
1776
+ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
1777
+ "dev": true,
1778
+ "license": "MIT",
1779
+ "bin": {
1780
+ "jiti": "bin/jiti.js"
1781
+ }
1782
+ },
1783
+ "node_modules/thenify": {
1784
+ "version": "3.3.1",
1785
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
1786
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
1787
+ "dev": true,
1788
+ "license": "MIT",
1789
+ "dependencies": {
1790
+ "any-promise": "^1.0.0"
1791
+ }
1792
+ },
1793
+ "node_modules/thenify-all": {
1794
+ "version": "1.6.0",
1795
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
1796
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
1797
+ "dev": true,
1798
+ "license": "MIT",
1799
+ "dependencies": {
1800
+ "thenify": ">= 3.1.0 < 4"
1801
+ },
1802
+ "engines": {
1803
+ "node": ">=0.8"
1804
+ }
1805
+ },
1806
+ "node_modules/to-regex-range": {
1807
+ "version": "5.0.1",
1808
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1809
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1810
+ "dev": true,
1811
+ "license": "MIT",
1812
+ "dependencies": {
1813
+ "is-number": "^7.0.0"
1814
+ },
1815
+ "engines": {
1816
+ "node": ">=8.0"
1817
+ }
1818
+ },
1819
+ "node_modules/ts-interface-checker": {
1820
+ "version": "0.1.13",
1821
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
1822
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
1823
+ "dev": true,
1824
+ "license": "Apache-2.0"
1825
+ },
1826
+ "node_modules/typescript": {
1827
+ "version": "5.9.3",
1828
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
1829
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
1830
+ "dev": true,
1831
+ "license": "Apache-2.0",
1832
+ "bin": {
1833
+ "tsc": "bin/tsc",
1834
+ "tsserver": "bin/tsserver"
1835
+ },
1836
+ "engines": {
1837
+ "node": ">=14.17"
1838
+ }
1839
+ },
1840
+ "node_modules/undici-types": {
1841
+ "version": "7.19.2",
1842
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz",
1843
+ "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==",
1844
+ "dev": true,
1845
+ "license": "MIT",
1846
+ "optional": true,
1847
+ "peer": true
1848
+ },
1849
+ "node_modules/util-deprecate": {
1850
+ "version": "1.0.2",
1851
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1852
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
1853
+ "dev": true,
1854
+ "license": "MIT"
1855
+ },
1856
+ "node_modules/vite": {
1857
+ "version": "8.0.10",
1858
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.10.tgz",
1859
+ "integrity": "sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==",
1860
+ "dev": true,
1861
+ "license": "MIT",
1862
+ "dependencies": {
1863
+ "lightningcss": "^1.32.0",
1864
+ "picomatch": "^4.0.4",
1865
+ "postcss": "^8.5.10",
1866
+ "rolldown": "1.0.0-rc.17",
1867
+ "tinyglobby": "^0.2.16"
1868
+ },
1869
+ "bin": {
1870
+ "vite": "bin/vite.js"
1871
+ },
1872
+ "engines": {
1873
+ "node": "^20.19.0 || >=22.12.0"
1874
+ },
1875
+ "funding": {
1876
+ "url": "https://github.com/vitejs/vite?sponsor=1"
1877
+ },
1878
+ "optionalDependencies": {
1879
+ "fsevents": "~2.3.3"
1880
+ },
1881
+ "peerDependencies": {
1882
+ "@types/node": "^20.19.0 || >=22.12.0",
1883
+ "@vitejs/devtools": "^0.1.0",
1884
+ "esbuild": "^0.27.0 || ^0.28.0",
1885
+ "jiti": ">=1.21.0",
1886
+ "less": "^4.0.0",
1887
+ "sass": "^1.70.0",
1888
+ "sass-embedded": "^1.70.0",
1889
+ "stylus": ">=0.54.8",
1890
+ "sugarss": "^5.0.0",
1891
+ "terser": "^5.16.0",
1892
+ "tsx": "^4.8.1",
1893
+ "yaml": "^2.4.2"
1894
+ },
1895
+ "peerDependenciesMeta": {
1896
+ "@types/node": {
1897
+ "optional": true
1898
+ },
1899
+ "@vitejs/devtools": {
1900
+ "optional": true
1901
+ },
1902
+ "esbuild": {
1903
+ "optional": true
1904
+ },
1905
+ "jiti": {
1906
+ "optional": true
1907
+ },
1908
+ "less": {
1909
+ "optional": true
1910
+ },
1911
+ "sass": {
1912
+ "optional": true
1913
+ },
1914
+ "sass-embedded": {
1915
+ "optional": true
1916
+ },
1917
+ "stylus": {
1918
+ "optional": true
1919
+ },
1920
+ "sugarss": {
1921
+ "optional": true
1922
+ },
1923
+ "terser": {
1924
+ "optional": true
1925
+ },
1926
+ "tsx": {
1927
+ "optional": true
1928
+ },
1929
+ "yaml": {
1930
+ "optional": true
1931
+ }
1932
+ }
1933
+ },
1934
+ "node_modules/vite/node_modules/@oxc-project/types": {
1935
+ "version": "0.127.0",
1936
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.127.0.tgz",
1937
+ "integrity": "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==",
1938
+ "dev": true,
1939
+ "license": "MIT",
1940
+ "funding": {
1941
+ "url": "https://github.com/sponsors/Boshen"
1942
+ }
1943
+ },
1944
+ "node_modules/vite/node_modules/@rolldown/binding-linux-x64-gnu": {
1945
+ "version": "1.0.0-rc.17",
1946
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.17.tgz",
1947
+ "integrity": "sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==",
1948
+ "cpu": [
1949
+ "x64"
1950
+ ],
1951
+ "dev": true,
1952
+ "license": "MIT",
1953
+ "optional": true,
1954
+ "os": [
1955
+ "linux"
1956
+ ],
1957
+ "engines": {
1958
+ "node": "^20.19.0 || >=22.12.0"
1959
+ }
1960
+ },
1961
+ "node_modules/vite/node_modules/@rolldown/binding-linux-x64-musl": {
1962
+ "version": "1.0.0-rc.17",
1963
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.17.tgz",
1964
+ "integrity": "sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==",
1965
+ "cpu": [
1966
+ "x64"
1967
+ ],
1968
+ "dev": true,
1969
+ "license": "MIT",
1970
+ "optional": true,
1971
+ "os": [
1972
+ "linux"
1973
+ ],
1974
+ "engines": {
1975
+ "node": "^20.19.0 || >=22.12.0"
1976
+ }
1977
+ },
1978
+ "node_modules/vite/node_modules/@rolldown/pluginutils": {
1979
+ "version": "1.0.0-rc.17",
1980
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.17.tgz",
1981
+ "integrity": "sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==",
1982
+ "dev": true,
1983
+ "license": "MIT"
1984
+ },
1985
+ "node_modules/vite/node_modules/detect-libc": {
1986
+ "version": "2.1.2",
1987
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
1988
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
1989
+ "dev": true,
1990
+ "license": "Apache-2.0",
1991
+ "engines": {
1992
+ "node": ">=8"
1993
+ }
1994
+ },
1995
+ "node_modules/vite/node_modules/fdir": {
1996
+ "version": "6.5.0",
1997
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
1998
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
1999
+ "dev": true,
2000
+ "license": "MIT",
2001
+ "engines": {
2002
+ "node": ">=12.0.0"
2003
+ },
2004
+ "peerDependencies": {
2005
+ "picomatch": "^3 || ^4"
2006
+ },
2007
+ "peerDependenciesMeta": {
2008
+ "picomatch": {
2009
+ "optional": true
2010
+ }
2011
+ }
2012
+ },
2013
+ "node_modules/vite/node_modules/lightningcss": {
2014
+ "version": "1.32.0",
2015
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
2016
+ "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
2017
+ "dev": true,
2018
+ "license": "MPL-2.0",
2019
+ "dependencies": {
2020
+ "detect-libc": "^2.0.3"
2021
+ },
2022
+ "engines": {
2023
+ "node": ">= 12.0.0"
2024
+ },
2025
+ "funding": {
2026
+ "type": "opencollective",
2027
+ "url": "https://opencollective.com/parcel"
2028
+ },
2029
+ "optionalDependencies": {
2030
+ "lightningcss-android-arm64": "1.32.0",
2031
+ "lightningcss-darwin-arm64": "1.32.0",
2032
+ "lightningcss-darwin-x64": "1.32.0",
2033
+ "lightningcss-freebsd-x64": "1.32.0",
2034
+ "lightningcss-linux-arm-gnueabihf": "1.32.0",
2035
+ "lightningcss-linux-arm64-gnu": "1.32.0",
2036
+ "lightningcss-linux-arm64-musl": "1.32.0",
2037
+ "lightningcss-linux-x64-gnu": "1.32.0",
2038
+ "lightningcss-linux-x64-musl": "1.32.0",
2039
+ "lightningcss-win32-arm64-msvc": "1.32.0",
2040
+ "lightningcss-win32-x64-msvc": "1.32.0"
2041
+ }
2042
+ },
2043
+ "node_modules/vite/node_modules/lightningcss-linux-x64-gnu": {
2044
+ "version": "1.32.0",
2045
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
2046
+ "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
2047
+ "cpu": [
2048
+ "x64"
2049
+ ],
2050
+ "dev": true,
2051
+ "license": "MPL-2.0",
2052
+ "optional": true,
2053
+ "os": [
2054
+ "linux"
2055
+ ],
2056
+ "engines": {
2057
+ "node": ">= 12.0.0"
2058
+ },
2059
+ "funding": {
2060
+ "type": "opencollective",
2061
+ "url": "https://opencollective.com/parcel"
2062
+ }
2063
+ },
2064
+ "node_modules/vite/node_modules/lightningcss-linux-x64-musl": {
2065
+ "version": "1.32.0",
2066
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
2067
+ "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
2068
+ "cpu": [
2069
+ "x64"
2070
+ ],
2071
+ "dev": true,
2072
+ "license": "MPL-2.0",
2073
+ "optional": true,
2074
+ "os": [
2075
+ "linux"
2076
+ ],
2077
+ "engines": {
2078
+ "node": ">= 12.0.0"
2079
+ },
2080
+ "funding": {
2081
+ "type": "opencollective",
2082
+ "url": "https://opencollective.com/parcel"
2083
+ }
2084
+ },
2085
+ "node_modules/vite/node_modules/picomatch": {
2086
+ "version": "4.0.4",
2087
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
2088
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
2089
+ "dev": true,
2090
+ "license": "MIT",
2091
+ "engines": {
2092
+ "node": ">=12"
2093
+ },
2094
+ "funding": {
2095
+ "url": "https://github.com/sponsors/jonschlinkert"
2096
+ }
2097
+ },
2098
+ "node_modules/vite/node_modules/rolldown": {
2099
+ "version": "1.0.0-rc.17",
2100
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.17.tgz",
2101
+ "integrity": "sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==",
2102
+ "dev": true,
2103
+ "license": "MIT",
2104
+ "dependencies": {
2105
+ "@oxc-project/types": "=0.127.0",
2106
+ "@rolldown/pluginutils": "1.0.0-rc.17"
2107
+ },
2108
+ "bin": {
2109
+ "rolldown": "bin/cli.mjs"
2110
+ },
2111
+ "engines": {
2112
+ "node": "^20.19.0 || >=22.12.0"
2113
+ },
2114
+ "optionalDependencies": {
2115
+ "@rolldown/binding-android-arm64": "1.0.0-rc.17",
2116
+ "@rolldown/binding-darwin-arm64": "1.0.0-rc.17",
2117
+ "@rolldown/binding-darwin-x64": "1.0.0-rc.17",
2118
+ "@rolldown/binding-freebsd-x64": "1.0.0-rc.17",
2119
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.17",
2120
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.17",
2121
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.17",
2122
+ "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.17",
2123
+ "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.17",
2124
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.17",
2125
+ "@rolldown/binding-linux-x64-musl": "1.0.0-rc.17",
2126
+ "@rolldown/binding-openharmony-arm64": "1.0.0-rc.17",
2127
+ "@rolldown/binding-wasm32-wasi": "1.0.0-rc.17",
2128
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.17",
2129
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.17"
2130
+ }
2131
+ },
2132
+ "node_modules/vite/node_modules/tinyglobby": {
2133
+ "version": "0.2.16",
2134
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
2135
+ "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
2136
+ "dev": true,
2137
+ "license": "MIT",
2138
+ "dependencies": {
2139
+ "fdir": "^6.5.0",
2140
+ "picomatch": "^4.0.4"
2141
+ },
2142
+ "engines": {
2143
+ "node": ">=12.0.0"
2144
+ },
2145
+ "funding": {
2146
+ "url": "https://github.com/sponsors/SuperchupuDev"
2147
+ }
2148
+ }
2149
+ }
2150
+ }
studio/package.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "nemoflix-amd-studio",
3
+ "private": true,
4
+ "version": "0.0.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "tsc -b \u0026\u0026 vite build",
9
+ "preview": "vite preview"
10
+ },
11
+ "dependencies": {
12
+ "react": "^19.2.4",
13
+ "react-dom": "^19.2.4"
14
+ },
15
+ "devDependencies": {
16
+ "@types/react": "^19.2.14",
17
+ "@types/react-dom": "^19.2.3",
18
+ "@vitejs/plugin-react": "^6.0.1",
19
+ "autoprefixer": "^10.4.21",
20
+ "postcss": "^8.5.3",
21
+ "tailwindcss": "^3.4.1",
22
+ "typescript": "~5.9.3",
23
+ "vite": "^8.0.1"
24
+ }
25
+ }
studio/postcss.config.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ export default {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ };
studio/src/App.tsx ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useState, useEffect, useCallback } from "react";
2
+ import type { MediaItem } from "./types";
3
+
4
+ export default function App() {
5
+ const [items, setItems] = useState<MediaItem[]>([]);
6
+ const [loading, setLoading] = useState(true);
7
+ const [selected, setSelected] = useState<string | null>(null);
8
+
9
+ const load = useCallback(async () => {
10
+ setLoading(true);
11
+ try {
12
+ const res = await fetch("/api/listing");
13
+ const data = await res.json();
14
+ setItems(data.images || []);
15
+ } catch (e) {
16
+ console.error(e);
17
+ } finally {
18
+ setLoading(false);
19
+ }
20
+ }, []);
21
+
22
+ useEffect(() => {
23
+ load();
24
+ }, [load]);
25
+
26
+ return (
27
+ <div className="min-h-screen bg-black text-white">
28
+ <header className="border-b border-gray-800 px-6 py-4 flex items-center justify-between">
29
+ <h1 className="text-xl font-semibold">Nemoflix AMD Gallery</h1>
30
+ <span className="text-sm text-gray-500">{items.length} items</span>
31
+ </header>
32
+
33
+ <main className="p-6">
34
+ {loading && items.length === 0 ? (
35
+ <p className="text-gray-500">Loading...</p>
36
+ ) : items.length === 0 ? (
37
+ <p className="text-gray-500">No media yet.</p>
38
+ ) : (
39
+ <div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-4">
40
+ {items.map((item) => (
41
+ <div
42
+ key={item.name}
43
+ onClick={() => setSelected(item.url)}
44
+ className="cursor-pointer rounded-lg overflow-hidden border border-gray-800 hover:border-rose-600 transition aspect-video bg-gray-900 relative group"
45
+ >
46
+ {item.type === "video" ? (
47
+ <video
48
+ src={item.url}
49
+ className="w-full h-full object-cover"
50
+ preload="metadata"
51
+ muted
52
+ />
53
+ ) : (
54
+ <img
55
+ src={item.url}
56
+ alt={item.name}
57
+ className="w-full h-full object-cover"
58
+ loading="lazy"
59
+ />
60
+ )}
61
+ <div className="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/80 to-transparent p-2 opacity-0 group-hover:opacity-100 transition">
62
+ <p className="text-xs truncate">{item.name}</p>
63
+ </div>
64
+ {item.type === "video" && (
65
+ <div className="absolute top-2 right-2 bg-black/60 text-white text-[10px] px-1.5 py-0.5 rounded">
66
+ VIDEO
67
+ </div>
68
+ )}
69
+ </div>
70
+ ))}
71
+ </div>
72
+ )}
73
+ </main>
74
+
75
+ {selected && (
76
+ <div
77
+ className="fixed inset-0 z-50 bg-black/95 flex items-center justify-center p-4"
78
+ onClick={() => setSelected(null)}
79
+ >
80
+ <div className="max-w-full max-h-full" onClick={(e) => e.stopPropagation()}>
81
+ {selected.endsWith(".mp4") || selected.endsWith(".webm") ? (
82
+ <video src={selected} controls autoPlay className="max-w-full max-h-[90vh] rounded" />
83
+ ) : (
84
+ <img src={selected} alt="" className="max-w-full max-h-[90vh] rounded" />
85
+ )}
86
+ </div>
87
+ </div>
88
+ )}
89
+ </div>
90
+ );
91
+ }
studio/src/api.ts ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const API_BASE = "";
2
+
3
+ async function apiFetch(path: string, init?: RequestInit) {
4
+ const res = await fetch(`${API_BASE}${path}`, init);
5
+ if (!res.ok) {
6
+ const text = await res.text().catch(() => "");
7
+ throw new Error(`${res.status}: ${text}`);
8
+ }
9
+ return res.json();
10
+ }
11
+
12
+ export async function getListing(): Promise<{ images: any[]; total: number }> {
13
+ return apiFetch("/api/listing");
14
+ }
studio/src/index.css ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ body {
6
+ @apply bg-black text-white antialiased;
7
+ }
studio/src/main.tsx ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ import { StrictMode } from "react";
2
+ import { createRoot } from "react-dom/client";
3
+ import App from "./App";
4
+ import "./index.css";
5
+
6
+ createRoot(document.getElementById("root")!).render(
7
+ <StrictMode>
8
+ <App />
9
+ </StrictMode>
10
+ );
studio/src/types.ts ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ export interface MediaItem {
2
+ name: string;
3
+ type: "image" | "video";
4
+ width: number;
5
+ height: number;
6
+ mtime: number;
7
+ url: string;
8
+ }
studio/tailwind.config.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ /** @type {import('tailwindcss').Config} */
2
+ export default {
3
+ content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
4
+ theme: {
5
+ extend: {},
6
+ },
7
+ plugins: [],
8
+ };
studio/vite.config.ts ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { defineConfig } from "vite";
2
+ import react from "@vitejs/plugin-react";
3
+
4
+ export default defineConfig({
5
+ plugins: [react()],
6
+ server: {
7
+ host: "0.0.0.0",
8
+ port: 3010,
9
+ proxy: {
10
+ "/api": { target: "http://165.245.132.93:8190", changeOrigin: true },
11
+ "/media": { target: "http://165.245.132.93:8190", changeOrigin: true },
12
+ },
13
+ },
14
+ build: {
15
+ outDir: "dist",
16
+ emptyOutDir: true,
17
+ },
18
+ });