Claude Claude Opus 4.8 commited on
Commit
1eec5a6
·
unverified ·
1 Parent(s): 7892159

Add DocuAsk skeleton (React + FastAPI full-stack scaffold)

Browse files

Full-stack document Q&A skeleton with a health-check wired end to end
browser -> API. Includes FastAPI backend with pytest suite, Vite + React +
Tailwind frontend, Docker Compose orchestration, and project spec.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WN4QRr6dTE2W7hQ2SDnLmY

LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sriyansh
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
PROJECT_SPEC.md ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # DocuAsk — Full-Stack Document Q&A Web App
2
+
3
+ ## Purpose (read first)
4
+
5
+ A customer-facing web app where a user uploads a PDF (or pastes text), asks
6
+ questions in a chat box, and gets answers with the source passage shown. The
7
+ retrieval backend is intentionally lightweight — the point of this project is
8
+ the front-end product loop and user-facing data collection, not the RAG. Spend
9
+ effort on the UI, error handling, and the feedback/telemetry layer.
10
+
11
+ Target reviewer: general software-engineering apprenticeship (React front-end,
12
+ REST API, CI/CD, deployed live URL, product metrics).
13
+
14
+ ## Stack (fixed — do not substitute)
15
+
16
+ - **Frontend:** React + Vite + Tailwind CSS
17
+ - **Backend:** FastAPI (Python)
18
+ - **Retrieval:** BM25 + FAISS (keep minimal; a single in-memory index is fine)
19
+ - **Persistence:** SQLite (question/answer/latency/feedback log)
20
+ - **Tests:** pytest (backend)
21
+ - **CI:** GitHub Actions running pytest on every push
22
+ - **Deploy:** Docker Compose locally; frontend to Vercel/Netlify, backend to
23
+ Render/Railway
24
+
25
+ ## Repository setup (Session 0)
26
+
27
+ Public GitHub repo named `docuask` under github.com/Sriyansh-28.
28
+
29
+ - `git init`, add a Python + Node `.gitignore`, MIT license, `README.md`.
30
+ - Structure:
31
+
32
+ ```
33
+ docuask/
34
+ backend/ # FastAPI app, retrieval, db, tests
35
+ frontend/ # Vite React app
36
+ docker-compose.yml
37
+ .github/workflows/ci.yml
38
+ README.md
39
+ PROJECT_SPEC.md
40
+ ```
41
+
42
+ - First commit: skeleton only. Push to the new remote before writing features.
43
+
44
+ ## Session 1 — Skeleton end to end
45
+
46
+ Goal: browser shows data fetched from the API.
47
+
48
+ - FastAPI app with `GET /health` returning `{"status":"ok"}`.
49
+ - Vite React app with one page that calls `/health` and renders the status.
50
+ - Docker Compose brings both up with one `docker compose up`.
51
+ - CORS configured so frontend can call backend in dev.
52
+
53
+ **Acceptance criteria**
54
+
55
+ - [x] `docker compose up` starts both services with no errors.
56
+ - [x] Opening the frontend URL shows "API status: ok" pulled live from the backend.
57
+ - [x] Repo pushed; README has a one-line run instruction.
58
+
59
+ ## Session 2 — Upload & parse flow
60
+
61
+ Goal: user uploads a PDF; backend extracts and chunks the text.
62
+
63
+ - `POST /documents` accepts a PDF or raw text, extracts text (pypdf), splits
64
+ into chunks, builds/stores the index in memory keyed by a document id.
65
+ - Frontend: drag-and-drop upload widget with loading and success states.
66
+ - Handle failures visibly: encrypted PDF, non-PDF file, empty/huge file → clear
67
+ error message in the UI, no crash.
68
+
69
+ **Acceptance criteria**
70
+
71
+ - [ ] Uploading a normal PDF returns a document id and shows "ready" in the UI.
72
+ - [ ] Uploading a broken/encrypted PDF shows a friendly error, backend logs it.
73
+ - [ ] A pytest test covers the parse-failure path.
74
+
75
+ ## Session 3 — Retrieval + chat loop
76
+
77
+ Goal: the core question→answer experience.
78
+
79
+ - `POST /ask` takes `{document_id, question}`, runs BM25 + FAISS retrieval,
80
+ returns the answer text plus the top source passage.
81
+ - Frontend: chat interface — question input, message history, each answer shows
82
+ the source passage underneath.
83
+ - Show a loading indicator while `/ask` is in flight.
84
+
85
+ **Acceptance criteria**
86
+
87
+ - [ ] Asking a question about an uploaded doc returns a relevant passage.
88
+ - [ ] The source passage is visibly shown under each answer.
89
+ - [ ] Empty question or unknown document id is handled gracefully.
90
+
91
+ ## Session 4 — Data-collection & feedback layer (the score-lifting part)
92
+
93
+ Goal: turn this into a web-enabled system for data collection with product
94
+ metrics.
95
+
96
+ - SQLite table
97
+ `interactions(id, document_id, question, answer, latency_ms, feedback, created_at)`.
98
+ - Every `/ask` call logs the row with measured `latency_ms`.
99
+ - 👍 / 👎 buttons on each answer → `POST /feedback` updates the row.
100
+ - `GET /stats` returns: total questions, median latency, thumbs-up rate.
101
+ - A small `/dashboard` page in the frontend reads `/stats` and shows 3 numbers +
102
+ a simple bar of questions-over-time.
103
+
104
+ **Acceptance criteria**
105
+
106
+ - [ ] Each question persists with its real latency.
107
+ - [ ] Feedback buttons update the record and reflect in `/stats`.
108
+ - [ ] Dashboard page renders the three metrics live from the DB.
109
+
110
+ ## Session 5 — Polish, test, deploy
111
+
112
+ Goal: live URL + green CI + a README a recruiter can skim.
113
+
114
+ - Backend pytest suite covers `/health`, upload success + failure, `/ask`,
115
+ `/feedback`.
116
+ - `.github/workflows/ci.yml` runs pytest on every push; badge in README.
117
+ - Deploy backend (Render/Railway) and frontend (Vercel/Netlify); wire the live
118
+ API URL.
119
+ - README: one-paragraph description, screenshot/GIF of the chat + dashboard,
120
+ live demo link, run instructions, tech stack.
121
+
122
+ **Acceptance criteria**
123
+
124
+ - [ ] CI badge is green on the default branch.
125
+ - [ ] Live demo URL works end to end (upload → ask → feedback → dashboard).
126
+ - [ ] README has a screenshot and the live link.
127
+
128
+ ## Guardrails
129
+
130
+ - Keep retrieval simple; do not over-engineer the RAG. If a session is running
131
+ long, cut retrieval sophistication, never the front-end or telemetry.
132
+ - Only report metrics you actually measured. No invented user counts.
README.md CHANGED
@@ -1,2 +1,83 @@
1
- # docuask
2
- DocuAsk — full-stack document Q&amp;A web app (React + FastAPI). Upload a PDF or paste text, ask questions, get answers with source passages, and a live feedback/telemetry dashboard.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # DocuAsk
2
+
3
+ [![CI](https://github.com/Sriyansh-28/docuask/actions/workflows/ci.yml/badge.svg)](https://github.com/Sriyansh-28/docuask/actions/workflows/ci.yml)
4
+
5
+ A full-stack **document Q&A web app**: upload a PDF (or paste text), ask
6
+ questions in a chat box, and get answers with the **source passage** shown —
7
+ plus a live feedback/telemetry dashboard.
8
+
9
+ > **Status:** Session 1 skeleton — the browser fetches live data from the API
10
+ > end to end. Upload, retrieval/chat, and the metrics dashboard land in the
11
+ > following sessions (see [`PROJECT_SPEC.md`](./PROJECT_SPEC.md)).
12
+
13
+ ## Run it (one command)
14
+
15
+ ```bash
16
+ docker compose up --build
17
+ ```
18
+
19
+ Then open **http://localhost:5173** — you should see **"API status: ok"**
20
+ pulled live from the backend at http://localhost:8000/health.
21
+
22
+ ## Run without Docker (dev)
23
+
24
+ **Backend**
25
+
26
+ ```bash
27
+ cd backend
28
+ pip install -r requirements.txt
29
+ uvicorn app.main:app --reload # http://localhost:8000
30
+ ```
31
+
32
+ **Frontend**
33
+
34
+ ```bash
35
+ cd frontend
36
+ npm install
37
+ npm run dev # http://localhost:5173
38
+ ```
39
+
40
+ In dev the Vite server proxies `/api/*` to the backend, so no CORS setup is
41
+ needed. In the Docker setup, nginx reverse-proxies `/api/` to the API service.
42
+
43
+ ## Tests
44
+
45
+ ```bash
46
+ cd backend
47
+ pytest
48
+ ```
49
+
50
+ ## Project structure
51
+
52
+ ```
53
+ docuask/
54
+ backend/ # FastAPI app, tests
55
+ app/main.py # GET /health + CORS
56
+ tests/ # pytest suite
57
+ frontend/ # Vite + React + Tailwind
58
+ src/App.jsx # calls /health and renders the status
59
+ docker-compose.yml # brings both services up
60
+ .github/workflows/ # CI: pytest on every push
61
+ ```
62
+
63
+ ## Tech stack
64
+
65
+ - **Frontend:** React + Vite + Tailwind CSS
66
+ - **Backend:** FastAPI (Python)
67
+ - **Tests:** pytest
68
+ - **CI:** GitHub Actions (pytest on every push)
69
+ - **Local orchestration:** Docker Compose
70
+
71
+ ## Roadmap
72
+
73
+ See [`PROJECT_SPEC.md`](./PROJECT_SPEC.md) for the full plan:
74
+
75
+ 1. ✅ Skeleton end to end (health check wired browser → API)
76
+ 2. Upload & parse flow (PDF/text → chunked, indexed)
77
+ 3. Retrieval + chat loop (BM25 + FAISS, source passages)
78
+ 4. Data-collection & feedback layer (SQLite, 👍/👎, `/stats`, dashboard)
79
+ 5. Polish, tests, live deploy
80
+
81
+ ## License
82
+
83
+ [MIT](./LICENSE)
backend/.dockerignore ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ __pycache__/
2
+ *.pyc
3
+ .pytest_cache/
4
+ .venv/
5
+ venv/
6
+ *.db
backend/Dockerfile ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.11-slim
2
+
3
+ WORKDIR /app
4
+
5
+ # Install dependencies first so they cache across code changes.
6
+ COPY requirements.txt .
7
+ RUN pip install --no-cache-dir -r requirements.txt
8
+
9
+ COPY . .
10
+
11
+ EXPOSE 8000
12
+
13
+ # curl is used by the docker-compose healthcheck.
14
+ RUN apt-get update \
15
+ && apt-get install -y --no-install-recommends curl \
16
+ && rm -rf /var/lib/apt/lists/*
17
+
18
+ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
backend/app/__init__.py ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ """DocuAsk backend package."""
2
+
3
+ __version__ = "0.1.0"
backend/app/main.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """DocuAsk FastAPI application.
2
+
3
+ Session 1 scope: a minimal, end-to-end skeleton. Exposes GET /health and
4
+ configures CORS so the Vite dev frontend can call the API in development.
5
+ Upload, retrieval, and telemetry endpoints are added in later sessions.
6
+ """
7
+
8
+ import os
9
+
10
+ from fastapi import FastAPI
11
+ from fastapi.middleware.cors import CORSMiddleware
12
+
13
+ from . import __version__
14
+
15
+ # Comma-separated list of allowed origins. Defaults cover the Vite dev server
16
+ # and a locally served production build. Override in deployment via env var.
17
+ _DEFAULT_ORIGINS = "http://localhost:5173,http://127.0.0.1:5173,http://localhost:4173"
18
+ ALLOWED_ORIGINS = [
19
+ origin.strip()
20
+ for origin in os.getenv("CORS_ORIGINS", _DEFAULT_ORIGINS).split(",")
21
+ if origin.strip()
22
+ ]
23
+
24
+ app = FastAPI(
25
+ title="DocuAsk API",
26
+ version=__version__,
27
+ description="Backend for the DocuAsk document Q&A web app.",
28
+ )
29
+
30
+ app.add_middleware(
31
+ CORSMiddleware,
32
+ allow_origins=ALLOWED_ORIGINS,
33
+ allow_credentials=True,
34
+ allow_methods=["*"],
35
+ allow_headers=["*"],
36
+ )
37
+
38
+
39
+ @app.get("/health")
40
+ def health() -> dict[str, str]:
41
+ """Liveness probe used by the frontend and Docker healthcheck."""
42
+ return {"status": "ok"}
backend/pytest.ini ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ [pytest]
2
+ testpaths = tests
3
+ addopts = -v
backend/requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ fastapi==0.115.6
2
+ uvicorn[standard]==0.34.0
3
+ httpx==0.28.1
4
+ pytest==8.3.4
backend/tests/__init__.py ADDED
File without changes
backend/tests/test_health.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Tests for the health endpoint (Session 1)."""
2
+
3
+ from fastapi.testclient import TestClient
4
+
5
+ from app.main import app
6
+
7
+ client = TestClient(app)
8
+
9
+
10
+ def test_health_returns_ok():
11
+ response = client.get("/health")
12
+ assert response.status_code == 200
13
+ assert response.json() == {"status": "ok"}
docker-compose.yml ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ services:
2
+ api:
3
+ build:
4
+ context: ./backend
5
+ ports:
6
+ - "8000:8000"
7
+ healthcheck:
8
+ test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
9
+ interval: 30s
10
+ timeout: 5s
11
+ retries: 3
12
+
13
+ frontend:
14
+ build:
15
+ context: ./frontend
16
+ ports:
17
+ - "5173:80"
18
+ depends_on:
19
+ - api
frontend/.dockerignore ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ node_modules
2
+ dist
3
+ .vite
frontend/Dockerfile ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # --- build stage ---
2
+ FROM node:20-alpine AS build
3
+ WORKDIR /app
4
+ COPY package.json package-lock.json* ./
5
+ RUN npm install
6
+ COPY . .
7
+ RUN npm run build
8
+
9
+ # --- serve stage ---
10
+ FROM nginx:1.27-alpine
11
+ COPY nginx.conf /etc/nginx/conf.d/default.conf
12
+ COPY --from=build /app/dist /usr/share/nginx/html
13
+ EXPOSE 80
14
+ CMD ["nginx", "-g", "daemon off;"]
frontend/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>DocuAsk — Document Q&A</title>
7
+ </head>
8
+ <body>
9
+ <div id="root"></div>
10
+ <script type="module" src="/src/main.jsx"></script>
11
+ </body>
12
+ </html>
frontend/nginx.conf ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ server {
2
+ listen 80;
3
+ server_name _;
4
+
5
+ root /usr/share/nginx/html;
6
+ index index.html;
7
+
8
+ # Serve the SPA; fall back to index.html for client-side routes.
9
+ location / {
10
+ try_files $uri $uri/ /index.html;
11
+ }
12
+
13
+ # Reverse-proxy API calls to the backend service so the browser only ever
14
+ # talks to one origin (no CORS needed in the containerized setup).
15
+ location /api/ {
16
+ proxy_pass http://api:8000/;
17
+ proxy_set_header Host $host;
18
+ proxy_set_header X-Real-IP $remote_addr;
19
+ }
20
+ }
frontend/package-lock.json ADDED
@@ -0,0 +1,2728 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "docuask-frontend",
3
+ "version": "0.1.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "docuask-frontend",
9
+ "version": "0.1.0",
10
+ "dependencies": {
11
+ "react": "^18.3.1",
12
+ "react-dom": "^18.3.1"
13
+ },
14
+ "devDependencies": {
15
+ "@vitejs/plugin-react": "^4.3.4",
16
+ "autoprefixer": "^10.4.20",
17
+ "postcss": "^8.4.49",
18
+ "tailwindcss": "^3.4.17",
19
+ "vite": "^6.0.7"
20
+ }
21
+ },
22
+ "node_modules/@alloc/quick-lru": {
23
+ "version": "5.2.0",
24
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
25
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
26
+ "dev": true,
27
+ "license": "MIT",
28
+ "engines": {
29
+ "node": ">=10"
30
+ },
31
+ "funding": {
32
+ "url": "https://github.com/sponsors/sindresorhus"
33
+ }
34
+ },
35
+ "node_modules/@babel/code-frame": {
36
+ "version": "7.29.7",
37
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
38
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
39
+ "dev": true,
40
+ "license": "MIT",
41
+ "dependencies": {
42
+ "@babel/helper-validator-identifier": "^7.29.7",
43
+ "js-tokens": "^4.0.0",
44
+ "picocolors": "^1.1.1"
45
+ },
46
+ "engines": {
47
+ "node": ">=6.9.0"
48
+ }
49
+ },
50
+ "node_modules/@babel/compat-data": {
51
+ "version": "7.29.7",
52
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
53
+ "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
54
+ "dev": true,
55
+ "license": "MIT",
56
+ "engines": {
57
+ "node": ">=6.9.0"
58
+ }
59
+ },
60
+ "node_modules/@babel/core": {
61
+ "version": "7.29.7",
62
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz",
63
+ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
64
+ "dev": true,
65
+ "license": "MIT",
66
+ "dependencies": {
67
+ "@babel/code-frame": "^7.29.7",
68
+ "@babel/generator": "^7.29.7",
69
+ "@babel/helper-compilation-targets": "^7.29.7",
70
+ "@babel/helper-module-transforms": "^7.29.7",
71
+ "@babel/helpers": "^7.29.7",
72
+ "@babel/parser": "^7.29.7",
73
+ "@babel/template": "^7.29.7",
74
+ "@babel/traverse": "^7.29.7",
75
+ "@babel/types": "^7.29.7",
76
+ "@jridgewell/remapping": "^2.3.5",
77
+ "convert-source-map": "^2.0.0",
78
+ "debug": "^4.1.0",
79
+ "gensync": "^1.0.0-beta.2",
80
+ "json5": "^2.2.3",
81
+ "semver": "^6.3.1"
82
+ },
83
+ "engines": {
84
+ "node": ">=6.9.0"
85
+ },
86
+ "funding": {
87
+ "type": "opencollective",
88
+ "url": "https://opencollective.com/babel"
89
+ }
90
+ },
91
+ "node_modules/@babel/generator": {
92
+ "version": "7.29.7",
93
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz",
94
+ "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==",
95
+ "dev": true,
96
+ "license": "MIT",
97
+ "dependencies": {
98
+ "@babel/parser": "^7.29.7",
99
+ "@babel/types": "^7.29.7",
100
+ "@jridgewell/gen-mapping": "^0.3.12",
101
+ "@jridgewell/trace-mapping": "^0.3.28",
102
+ "jsesc": "^3.0.2"
103
+ },
104
+ "engines": {
105
+ "node": ">=6.9.0"
106
+ }
107
+ },
108
+ "node_modules/@babel/helper-compilation-targets": {
109
+ "version": "7.29.7",
110
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
111
+ "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
112
+ "dev": true,
113
+ "license": "MIT",
114
+ "dependencies": {
115
+ "@babel/compat-data": "^7.29.7",
116
+ "@babel/helper-validator-option": "^7.29.7",
117
+ "browserslist": "^4.24.0",
118
+ "lru-cache": "^5.1.1",
119
+ "semver": "^6.3.1"
120
+ },
121
+ "engines": {
122
+ "node": ">=6.9.0"
123
+ }
124
+ },
125
+ "node_modules/@babel/helper-globals": {
126
+ "version": "7.29.7",
127
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
128
+ "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
129
+ "dev": true,
130
+ "license": "MIT",
131
+ "engines": {
132
+ "node": ">=6.9.0"
133
+ }
134
+ },
135
+ "node_modules/@babel/helper-module-imports": {
136
+ "version": "7.29.7",
137
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
138
+ "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
139
+ "dev": true,
140
+ "license": "MIT",
141
+ "dependencies": {
142
+ "@babel/traverse": "^7.29.7",
143
+ "@babel/types": "^7.29.7"
144
+ },
145
+ "engines": {
146
+ "node": ">=6.9.0"
147
+ }
148
+ },
149
+ "node_modules/@babel/helper-module-transforms": {
150
+ "version": "7.29.7",
151
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
152
+ "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
153
+ "dev": true,
154
+ "license": "MIT",
155
+ "dependencies": {
156
+ "@babel/helper-module-imports": "^7.29.7",
157
+ "@babel/helper-validator-identifier": "^7.29.7",
158
+ "@babel/traverse": "^7.29.7"
159
+ },
160
+ "engines": {
161
+ "node": ">=6.9.0"
162
+ },
163
+ "peerDependencies": {
164
+ "@babel/core": "^7.0.0"
165
+ }
166
+ },
167
+ "node_modules/@babel/helper-plugin-utils": {
168
+ "version": "7.29.7",
169
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz",
170
+ "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==",
171
+ "dev": true,
172
+ "license": "MIT",
173
+ "engines": {
174
+ "node": ">=6.9.0"
175
+ }
176
+ },
177
+ "node_modules/@babel/helper-string-parser": {
178
+ "version": "7.29.7",
179
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
180
+ "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
181
+ "dev": true,
182
+ "license": "MIT",
183
+ "engines": {
184
+ "node": ">=6.9.0"
185
+ }
186
+ },
187
+ "node_modules/@babel/helper-validator-identifier": {
188
+ "version": "7.29.7",
189
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
190
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
191
+ "dev": true,
192
+ "license": "MIT",
193
+ "engines": {
194
+ "node": ">=6.9.0"
195
+ }
196
+ },
197
+ "node_modules/@babel/helper-validator-option": {
198
+ "version": "7.29.7",
199
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
200
+ "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
201
+ "dev": true,
202
+ "license": "MIT",
203
+ "engines": {
204
+ "node": ">=6.9.0"
205
+ }
206
+ },
207
+ "node_modules/@babel/helpers": {
208
+ "version": "7.29.7",
209
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
210
+ "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
211
+ "dev": true,
212
+ "license": "MIT",
213
+ "dependencies": {
214
+ "@babel/template": "^7.29.7",
215
+ "@babel/types": "^7.29.7"
216
+ },
217
+ "engines": {
218
+ "node": ">=6.9.0"
219
+ }
220
+ },
221
+ "node_modules/@babel/parser": {
222
+ "version": "7.29.7",
223
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz",
224
+ "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==",
225
+ "dev": true,
226
+ "license": "MIT",
227
+ "dependencies": {
228
+ "@babel/types": "^7.29.7"
229
+ },
230
+ "bin": {
231
+ "parser": "bin/babel-parser.js"
232
+ },
233
+ "engines": {
234
+ "node": ">=6.0.0"
235
+ }
236
+ },
237
+ "node_modules/@babel/plugin-transform-react-jsx-self": {
238
+ "version": "7.29.7",
239
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz",
240
+ "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==",
241
+ "dev": true,
242
+ "license": "MIT",
243
+ "dependencies": {
244
+ "@babel/helper-plugin-utils": "^7.29.7"
245
+ },
246
+ "engines": {
247
+ "node": ">=6.9.0"
248
+ },
249
+ "peerDependencies": {
250
+ "@babel/core": "^7.0.0-0"
251
+ }
252
+ },
253
+ "node_modules/@babel/plugin-transform-react-jsx-source": {
254
+ "version": "7.29.7",
255
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz",
256
+ "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==",
257
+ "dev": true,
258
+ "license": "MIT",
259
+ "dependencies": {
260
+ "@babel/helper-plugin-utils": "^7.29.7"
261
+ },
262
+ "engines": {
263
+ "node": ">=6.9.0"
264
+ },
265
+ "peerDependencies": {
266
+ "@babel/core": "^7.0.0-0"
267
+ }
268
+ },
269
+ "node_modules/@babel/template": {
270
+ "version": "7.29.7",
271
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
272
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
273
+ "dev": true,
274
+ "license": "MIT",
275
+ "dependencies": {
276
+ "@babel/code-frame": "^7.29.7",
277
+ "@babel/parser": "^7.29.7",
278
+ "@babel/types": "^7.29.7"
279
+ },
280
+ "engines": {
281
+ "node": ">=6.9.0"
282
+ }
283
+ },
284
+ "node_modules/@babel/traverse": {
285
+ "version": "7.29.7",
286
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz",
287
+ "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==",
288
+ "dev": true,
289
+ "license": "MIT",
290
+ "dependencies": {
291
+ "@babel/code-frame": "^7.29.7",
292
+ "@babel/generator": "^7.29.7",
293
+ "@babel/helper-globals": "^7.29.7",
294
+ "@babel/parser": "^7.29.7",
295
+ "@babel/template": "^7.29.7",
296
+ "@babel/types": "^7.29.7",
297
+ "debug": "^4.3.1"
298
+ },
299
+ "engines": {
300
+ "node": ">=6.9.0"
301
+ }
302
+ },
303
+ "node_modules/@babel/types": {
304
+ "version": "7.29.7",
305
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz",
306
+ "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==",
307
+ "dev": true,
308
+ "license": "MIT",
309
+ "dependencies": {
310
+ "@babel/helper-string-parser": "^7.29.7",
311
+ "@babel/helper-validator-identifier": "^7.29.7"
312
+ },
313
+ "engines": {
314
+ "node": ">=6.9.0"
315
+ }
316
+ },
317
+ "node_modules/@esbuild/aix-ppc64": {
318
+ "version": "0.25.12",
319
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
320
+ "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
321
+ "cpu": [
322
+ "ppc64"
323
+ ],
324
+ "dev": true,
325
+ "license": "MIT",
326
+ "optional": true,
327
+ "os": [
328
+ "aix"
329
+ ],
330
+ "engines": {
331
+ "node": ">=18"
332
+ }
333
+ },
334
+ "node_modules/@esbuild/android-arm": {
335
+ "version": "0.25.12",
336
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
337
+ "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
338
+ "cpu": [
339
+ "arm"
340
+ ],
341
+ "dev": true,
342
+ "license": "MIT",
343
+ "optional": true,
344
+ "os": [
345
+ "android"
346
+ ],
347
+ "engines": {
348
+ "node": ">=18"
349
+ }
350
+ },
351
+ "node_modules/@esbuild/android-arm64": {
352
+ "version": "0.25.12",
353
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
354
+ "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
355
+ "cpu": [
356
+ "arm64"
357
+ ],
358
+ "dev": true,
359
+ "license": "MIT",
360
+ "optional": true,
361
+ "os": [
362
+ "android"
363
+ ],
364
+ "engines": {
365
+ "node": ">=18"
366
+ }
367
+ },
368
+ "node_modules/@esbuild/android-x64": {
369
+ "version": "0.25.12",
370
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
371
+ "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
372
+ "cpu": [
373
+ "x64"
374
+ ],
375
+ "dev": true,
376
+ "license": "MIT",
377
+ "optional": true,
378
+ "os": [
379
+ "android"
380
+ ],
381
+ "engines": {
382
+ "node": ">=18"
383
+ }
384
+ },
385
+ "node_modules/@esbuild/darwin-arm64": {
386
+ "version": "0.25.12",
387
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
388
+ "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
389
+ "cpu": [
390
+ "arm64"
391
+ ],
392
+ "dev": true,
393
+ "license": "MIT",
394
+ "optional": true,
395
+ "os": [
396
+ "darwin"
397
+ ],
398
+ "engines": {
399
+ "node": ">=18"
400
+ }
401
+ },
402
+ "node_modules/@esbuild/darwin-x64": {
403
+ "version": "0.25.12",
404
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
405
+ "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
406
+ "cpu": [
407
+ "x64"
408
+ ],
409
+ "dev": true,
410
+ "license": "MIT",
411
+ "optional": true,
412
+ "os": [
413
+ "darwin"
414
+ ],
415
+ "engines": {
416
+ "node": ">=18"
417
+ }
418
+ },
419
+ "node_modules/@esbuild/freebsd-arm64": {
420
+ "version": "0.25.12",
421
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
422
+ "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
423
+ "cpu": [
424
+ "arm64"
425
+ ],
426
+ "dev": true,
427
+ "license": "MIT",
428
+ "optional": true,
429
+ "os": [
430
+ "freebsd"
431
+ ],
432
+ "engines": {
433
+ "node": ">=18"
434
+ }
435
+ },
436
+ "node_modules/@esbuild/freebsd-x64": {
437
+ "version": "0.25.12",
438
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
439
+ "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
440
+ "cpu": [
441
+ "x64"
442
+ ],
443
+ "dev": true,
444
+ "license": "MIT",
445
+ "optional": true,
446
+ "os": [
447
+ "freebsd"
448
+ ],
449
+ "engines": {
450
+ "node": ">=18"
451
+ }
452
+ },
453
+ "node_modules/@esbuild/linux-arm": {
454
+ "version": "0.25.12",
455
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
456
+ "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
457
+ "cpu": [
458
+ "arm"
459
+ ],
460
+ "dev": true,
461
+ "license": "MIT",
462
+ "optional": true,
463
+ "os": [
464
+ "linux"
465
+ ],
466
+ "engines": {
467
+ "node": ">=18"
468
+ }
469
+ },
470
+ "node_modules/@esbuild/linux-arm64": {
471
+ "version": "0.25.12",
472
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
473
+ "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
474
+ "cpu": [
475
+ "arm64"
476
+ ],
477
+ "dev": true,
478
+ "license": "MIT",
479
+ "optional": true,
480
+ "os": [
481
+ "linux"
482
+ ],
483
+ "engines": {
484
+ "node": ">=18"
485
+ }
486
+ },
487
+ "node_modules/@esbuild/linux-ia32": {
488
+ "version": "0.25.12",
489
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
490
+ "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
491
+ "cpu": [
492
+ "ia32"
493
+ ],
494
+ "dev": true,
495
+ "license": "MIT",
496
+ "optional": true,
497
+ "os": [
498
+ "linux"
499
+ ],
500
+ "engines": {
501
+ "node": ">=18"
502
+ }
503
+ },
504
+ "node_modules/@esbuild/linux-loong64": {
505
+ "version": "0.25.12",
506
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
507
+ "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
508
+ "cpu": [
509
+ "loong64"
510
+ ],
511
+ "dev": true,
512
+ "license": "MIT",
513
+ "optional": true,
514
+ "os": [
515
+ "linux"
516
+ ],
517
+ "engines": {
518
+ "node": ">=18"
519
+ }
520
+ },
521
+ "node_modules/@esbuild/linux-mips64el": {
522
+ "version": "0.25.12",
523
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
524
+ "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
525
+ "cpu": [
526
+ "mips64el"
527
+ ],
528
+ "dev": true,
529
+ "license": "MIT",
530
+ "optional": true,
531
+ "os": [
532
+ "linux"
533
+ ],
534
+ "engines": {
535
+ "node": ">=18"
536
+ }
537
+ },
538
+ "node_modules/@esbuild/linux-ppc64": {
539
+ "version": "0.25.12",
540
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
541
+ "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
542
+ "cpu": [
543
+ "ppc64"
544
+ ],
545
+ "dev": true,
546
+ "license": "MIT",
547
+ "optional": true,
548
+ "os": [
549
+ "linux"
550
+ ],
551
+ "engines": {
552
+ "node": ">=18"
553
+ }
554
+ },
555
+ "node_modules/@esbuild/linux-riscv64": {
556
+ "version": "0.25.12",
557
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
558
+ "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
559
+ "cpu": [
560
+ "riscv64"
561
+ ],
562
+ "dev": true,
563
+ "license": "MIT",
564
+ "optional": true,
565
+ "os": [
566
+ "linux"
567
+ ],
568
+ "engines": {
569
+ "node": ">=18"
570
+ }
571
+ },
572
+ "node_modules/@esbuild/linux-s390x": {
573
+ "version": "0.25.12",
574
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
575
+ "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
576
+ "cpu": [
577
+ "s390x"
578
+ ],
579
+ "dev": true,
580
+ "license": "MIT",
581
+ "optional": true,
582
+ "os": [
583
+ "linux"
584
+ ],
585
+ "engines": {
586
+ "node": ">=18"
587
+ }
588
+ },
589
+ "node_modules/@esbuild/linux-x64": {
590
+ "version": "0.25.12",
591
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
592
+ "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
593
+ "cpu": [
594
+ "x64"
595
+ ],
596
+ "dev": true,
597
+ "license": "MIT",
598
+ "optional": true,
599
+ "os": [
600
+ "linux"
601
+ ],
602
+ "engines": {
603
+ "node": ">=18"
604
+ }
605
+ },
606
+ "node_modules/@esbuild/netbsd-arm64": {
607
+ "version": "0.25.12",
608
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
609
+ "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
610
+ "cpu": [
611
+ "arm64"
612
+ ],
613
+ "dev": true,
614
+ "license": "MIT",
615
+ "optional": true,
616
+ "os": [
617
+ "netbsd"
618
+ ],
619
+ "engines": {
620
+ "node": ">=18"
621
+ }
622
+ },
623
+ "node_modules/@esbuild/netbsd-x64": {
624
+ "version": "0.25.12",
625
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
626
+ "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
627
+ "cpu": [
628
+ "x64"
629
+ ],
630
+ "dev": true,
631
+ "license": "MIT",
632
+ "optional": true,
633
+ "os": [
634
+ "netbsd"
635
+ ],
636
+ "engines": {
637
+ "node": ">=18"
638
+ }
639
+ },
640
+ "node_modules/@esbuild/openbsd-arm64": {
641
+ "version": "0.25.12",
642
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
643
+ "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
644
+ "cpu": [
645
+ "arm64"
646
+ ],
647
+ "dev": true,
648
+ "license": "MIT",
649
+ "optional": true,
650
+ "os": [
651
+ "openbsd"
652
+ ],
653
+ "engines": {
654
+ "node": ">=18"
655
+ }
656
+ },
657
+ "node_modules/@esbuild/openbsd-x64": {
658
+ "version": "0.25.12",
659
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
660
+ "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
661
+ "cpu": [
662
+ "x64"
663
+ ],
664
+ "dev": true,
665
+ "license": "MIT",
666
+ "optional": true,
667
+ "os": [
668
+ "openbsd"
669
+ ],
670
+ "engines": {
671
+ "node": ">=18"
672
+ }
673
+ },
674
+ "node_modules/@esbuild/openharmony-arm64": {
675
+ "version": "0.25.12",
676
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
677
+ "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
678
+ "cpu": [
679
+ "arm64"
680
+ ],
681
+ "dev": true,
682
+ "license": "MIT",
683
+ "optional": true,
684
+ "os": [
685
+ "openharmony"
686
+ ],
687
+ "engines": {
688
+ "node": ">=18"
689
+ }
690
+ },
691
+ "node_modules/@esbuild/sunos-x64": {
692
+ "version": "0.25.12",
693
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
694
+ "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
695
+ "cpu": [
696
+ "x64"
697
+ ],
698
+ "dev": true,
699
+ "license": "MIT",
700
+ "optional": true,
701
+ "os": [
702
+ "sunos"
703
+ ],
704
+ "engines": {
705
+ "node": ">=18"
706
+ }
707
+ },
708
+ "node_modules/@esbuild/win32-arm64": {
709
+ "version": "0.25.12",
710
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
711
+ "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
712
+ "cpu": [
713
+ "arm64"
714
+ ],
715
+ "dev": true,
716
+ "license": "MIT",
717
+ "optional": true,
718
+ "os": [
719
+ "win32"
720
+ ],
721
+ "engines": {
722
+ "node": ">=18"
723
+ }
724
+ },
725
+ "node_modules/@esbuild/win32-ia32": {
726
+ "version": "0.25.12",
727
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
728
+ "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
729
+ "cpu": [
730
+ "ia32"
731
+ ],
732
+ "dev": true,
733
+ "license": "MIT",
734
+ "optional": true,
735
+ "os": [
736
+ "win32"
737
+ ],
738
+ "engines": {
739
+ "node": ">=18"
740
+ }
741
+ },
742
+ "node_modules/@esbuild/win32-x64": {
743
+ "version": "0.25.12",
744
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
745
+ "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
746
+ "cpu": [
747
+ "x64"
748
+ ],
749
+ "dev": true,
750
+ "license": "MIT",
751
+ "optional": true,
752
+ "os": [
753
+ "win32"
754
+ ],
755
+ "engines": {
756
+ "node": ">=18"
757
+ }
758
+ },
759
+ "node_modules/@jridgewell/gen-mapping": {
760
+ "version": "0.3.13",
761
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
762
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
763
+ "dev": true,
764
+ "license": "MIT",
765
+ "dependencies": {
766
+ "@jridgewell/sourcemap-codec": "^1.5.0",
767
+ "@jridgewell/trace-mapping": "^0.3.24"
768
+ }
769
+ },
770
+ "node_modules/@jridgewell/remapping": {
771
+ "version": "2.3.5",
772
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
773
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
774
+ "dev": true,
775
+ "license": "MIT",
776
+ "dependencies": {
777
+ "@jridgewell/gen-mapping": "^0.3.5",
778
+ "@jridgewell/trace-mapping": "^0.3.24"
779
+ }
780
+ },
781
+ "node_modules/@jridgewell/resolve-uri": {
782
+ "version": "3.1.2",
783
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
784
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
785
+ "dev": true,
786
+ "license": "MIT",
787
+ "engines": {
788
+ "node": ">=6.0.0"
789
+ }
790
+ },
791
+ "node_modules/@jridgewell/sourcemap-codec": {
792
+ "version": "1.5.5",
793
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
794
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
795
+ "dev": true,
796
+ "license": "MIT"
797
+ },
798
+ "node_modules/@jridgewell/trace-mapping": {
799
+ "version": "0.3.31",
800
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
801
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
802
+ "dev": true,
803
+ "license": "MIT",
804
+ "dependencies": {
805
+ "@jridgewell/resolve-uri": "^3.1.0",
806
+ "@jridgewell/sourcemap-codec": "^1.4.14"
807
+ }
808
+ },
809
+ "node_modules/@nodelib/fs.scandir": {
810
+ "version": "2.1.5",
811
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
812
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
813
+ "dev": true,
814
+ "license": "MIT",
815
+ "dependencies": {
816
+ "@nodelib/fs.stat": "2.0.5",
817
+ "run-parallel": "^1.1.9"
818
+ },
819
+ "engines": {
820
+ "node": ">= 8"
821
+ }
822
+ },
823
+ "node_modules/@nodelib/fs.stat": {
824
+ "version": "2.0.5",
825
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
826
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
827
+ "dev": true,
828
+ "license": "MIT",
829
+ "engines": {
830
+ "node": ">= 8"
831
+ }
832
+ },
833
+ "node_modules/@nodelib/fs.walk": {
834
+ "version": "1.2.8",
835
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
836
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
837
+ "dev": true,
838
+ "license": "MIT",
839
+ "dependencies": {
840
+ "@nodelib/fs.scandir": "2.1.5",
841
+ "fastq": "^1.6.0"
842
+ },
843
+ "engines": {
844
+ "node": ">= 8"
845
+ }
846
+ },
847
+ "node_modules/@rolldown/pluginutils": {
848
+ "version": "1.0.0-beta.27",
849
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz",
850
+ "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==",
851
+ "dev": true,
852
+ "license": "MIT"
853
+ },
854
+ "node_modules/@rollup/rollup-android-arm-eabi": {
855
+ "version": "4.62.2",
856
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.2.tgz",
857
+ "integrity": "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==",
858
+ "cpu": [
859
+ "arm"
860
+ ],
861
+ "dev": true,
862
+ "license": "MIT",
863
+ "optional": true,
864
+ "os": [
865
+ "android"
866
+ ]
867
+ },
868
+ "node_modules/@rollup/rollup-android-arm64": {
869
+ "version": "4.62.2",
870
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.2.tgz",
871
+ "integrity": "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==",
872
+ "cpu": [
873
+ "arm64"
874
+ ],
875
+ "dev": true,
876
+ "license": "MIT",
877
+ "optional": true,
878
+ "os": [
879
+ "android"
880
+ ]
881
+ },
882
+ "node_modules/@rollup/rollup-darwin-arm64": {
883
+ "version": "4.62.2",
884
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.2.tgz",
885
+ "integrity": "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==",
886
+ "cpu": [
887
+ "arm64"
888
+ ],
889
+ "dev": true,
890
+ "license": "MIT",
891
+ "optional": true,
892
+ "os": [
893
+ "darwin"
894
+ ]
895
+ },
896
+ "node_modules/@rollup/rollup-darwin-x64": {
897
+ "version": "4.62.2",
898
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.2.tgz",
899
+ "integrity": "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==",
900
+ "cpu": [
901
+ "x64"
902
+ ],
903
+ "dev": true,
904
+ "license": "MIT",
905
+ "optional": true,
906
+ "os": [
907
+ "darwin"
908
+ ]
909
+ },
910
+ "node_modules/@rollup/rollup-freebsd-arm64": {
911
+ "version": "4.62.2",
912
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.2.tgz",
913
+ "integrity": "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==",
914
+ "cpu": [
915
+ "arm64"
916
+ ],
917
+ "dev": true,
918
+ "license": "MIT",
919
+ "optional": true,
920
+ "os": [
921
+ "freebsd"
922
+ ]
923
+ },
924
+ "node_modules/@rollup/rollup-freebsd-x64": {
925
+ "version": "4.62.2",
926
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.2.tgz",
927
+ "integrity": "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==",
928
+ "cpu": [
929
+ "x64"
930
+ ],
931
+ "dev": true,
932
+ "license": "MIT",
933
+ "optional": true,
934
+ "os": [
935
+ "freebsd"
936
+ ]
937
+ },
938
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
939
+ "version": "4.62.2",
940
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.2.tgz",
941
+ "integrity": "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==",
942
+ "cpu": [
943
+ "arm"
944
+ ],
945
+ "dev": true,
946
+ "license": "MIT",
947
+ "optional": true,
948
+ "os": [
949
+ "linux"
950
+ ]
951
+ },
952
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
953
+ "version": "4.62.2",
954
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.2.tgz",
955
+ "integrity": "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==",
956
+ "cpu": [
957
+ "arm"
958
+ ],
959
+ "dev": true,
960
+ "license": "MIT",
961
+ "optional": true,
962
+ "os": [
963
+ "linux"
964
+ ]
965
+ },
966
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
967
+ "version": "4.62.2",
968
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.2.tgz",
969
+ "integrity": "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==",
970
+ "cpu": [
971
+ "arm64"
972
+ ],
973
+ "dev": true,
974
+ "license": "MIT",
975
+ "optional": true,
976
+ "os": [
977
+ "linux"
978
+ ]
979
+ },
980
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
981
+ "version": "4.62.2",
982
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.2.tgz",
983
+ "integrity": "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==",
984
+ "cpu": [
985
+ "arm64"
986
+ ],
987
+ "dev": true,
988
+ "license": "MIT",
989
+ "optional": true,
990
+ "os": [
991
+ "linux"
992
+ ]
993
+ },
994
+ "node_modules/@rollup/rollup-linux-loong64-gnu": {
995
+ "version": "4.62.2",
996
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.2.tgz",
997
+ "integrity": "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==",
998
+ "cpu": [
999
+ "loong64"
1000
+ ],
1001
+ "dev": true,
1002
+ "license": "MIT",
1003
+ "optional": true,
1004
+ "os": [
1005
+ "linux"
1006
+ ]
1007
+ },
1008
+ "node_modules/@rollup/rollup-linux-loong64-musl": {
1009
+ "version": "4.62.2",
1010
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.2.tgz",
1011
+ "integrity": "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==",
1012
+ "cpu": [
1013
+ "loong64"
1014
+ ],
1015
+ "dev": true,
1016
+ "license": "MIT",
1017
+ "optional": true,
1018
+ "os": [
1019
+ "linux"
1020
+ ]
1021
+ },
1022
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
1023
+ "version": "4.62.2",
1024
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.2.tgz",
1025
+ "integrity": "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==",
1026
+ "cpu": [
1027
+ "ppc64"
1028
+ ],
1029
+ "dev": true,
1030
+ "license": "MIT",
1031
+ "optional": true,
1032
+ "os": [
1033
+ "linux"
1034
+ ]
1035
+ },
1036
+ "node_modules/@rollup/rollup-linux-ppc64-musl": {
1037
+ "version": "4.62.2",
1038
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.2.tgz",
1039
+ "integrity": "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==",
1040
+ "cpu": [
1041
+ "ppc64"
1042
+ ],
1043
+ "dev": true,
1044
+ "license": "MIT",
1045
+ "optional": true,
1046
+ "os": [
1047
+ "linux"
1048
+ ]
1049
+ },
1050
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
1051
+ "version": "4.62.2",
1052
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.2.tgz",
1053
+ "integrity": "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==",
1054
+ "cpu": [
1055
+ "riscv64"
1056
+ ],
1057
+ "dev": true,
1058
+ "license": "MIT",
1059
+ "optional": true,
1060
+ "os": [
1061
+ "linux"
1062
+ ]
1063
+ },
1064
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
1065
+ "version": "4.62.2",
1066
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.2.tgz",
1067
+ "integrity": "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==",
1068
+ "cpu": [
1069
+ "riscv64"
1070
+ ],
1071
+ "dev": true,
1072
+ "license": "MIT",
1073
+ "optional": true,
1074
+ "os": [
1075
+ "linux"
1076
+ ]
1077
+ },
1078
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
1079
+ "version": "4.62.2",
1080
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.2.tgz",
1081
+ "integrity": "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==",
1082
+ "cpu": [
1083
+ "s390x"
1084
+ ],
1085
+ "dev": true,
1086
+ "license": "MIT",
1087
+ "optional": true,
1088
+ "os": [
1089
+ "linux"
1090
+ ]
1091
+ },
1092
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
1093
+ "version": "4.62.2",
1094
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.2.tgz",
1095
+ "integrity": "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==",
1096
+ "cpu": [
1097
+ "x64"
1098
+ ],
1099
+ "dev": true,
1100
+ "license": "MIT",
1101
+ "optional": true,
1102
+ "os": [
1103
+ "linux"
1104
+ ]
1105
+ },
1106
+ "node_modules/@rollup/rollup-linux-x64-musl": {
1107
+ "version": "4.62.2",
1108
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.2.tgz",
1109
+ "integrity": "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==",
1110
+ "cpu": [
1111
+ "x64"
1112
+ ],
1113
+ "dev": true,
1114
+ "license": "MIT",
1115
+ "optional": true,
1116
+ "os": [
1117
+ "linux"
1118
+ ]
1119
+ },
1120
+ "node_modules/@rollup/rollup-openbsd-x64": {
1121
+ "version": "4.62.2",
1122
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.2.tgz",
1123
+ "integrity": "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==",
1124
+ "cpu": [
1125
+ "x64"
1126
+ ],
1127
+ "dev": true,
1128
+ "license": "MIT",
1129
+ "optional": true,
1130
+ "os": [
1131
+ "openbsd"
1132
+ ]
1133
+ },
1134
+ "node_modules/@rollup/rollup-openharmony-arm64": {
1135
+ "version": "4.62.2",
1136
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.2.tgz",
1137
+ "integrity": "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==",
1138
+ "cpu": [
1139
+ "arm64"
1140
+ ],
1141
+ "dev": true,
1142
+ "license": "MIT",
1143
+ "optional": true,
1144
+ "os": [
1145
+ "openharmony"
1146
+ ]
1147
+ },
1148
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
1149
+ "version": "4.62.2",
1150
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.2.tgz",
1151
+ "integrity": "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==",
1152
+ "cpu": [
1153
+ "arm64"
1154
+ ],
1155
+ "dev": true,
1156
+ "license": "MIT",
1157
+ "optional": true,
1158
+ "os": [
1159
+ "win32"
1160
+ ]
1161
+ },
1162
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
1163
+ "version": "4.62.2",
1164
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.2.tgz",
1165
+ "integrity": "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==",
1166
+ "cpu": [
1167
+ "ia32"
1168
+ ],
1169
+ "dev": true,
1170
+ "license": "MIT",
1171
+ "optional": true,
1172
+ "os": [
1173
+ "win32"
1174
+ ]
1175
+ },
1176
+ "node_modules/@rollup/rollup-win32-x64-gnu": {
1177
+ "version": "4.62.2",
1178
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.2.tgz",
1179
+ "integrity": "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==",
1180
+ "cpu": [
1181
+ "x64"
1182
+ ],
1183
+ "dev": true,
1184
+ "license": "MIT",
1185
+ "optional": true,
1186
+ "os": [
1187
+ "win32"
1188
+ ]
1189
+ },
1190
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
1191
+ "version": "4.62.2",
1192
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.2.tgz",
1193
+ "integrity": "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==",
1194
+ "cpu": [
1195
+ "x64"
1196
+ ],
1197
+ "dev": true,
1198
+ "license": "MIT",
1199
+ "optional": true,
1200
+ "os": [
1201
+ "win32"
1202
+ ]
1203
+ },
1204
+ "node_modules/@types/babel__core": {
1205
+ "version": "7.20.5",
1206
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
1207
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
1208
+ "dev": true,
1209
+ "license": "MIT",
1210
+ "dependencies": {
1211
+ "@babel/parser": "^7.20.7",
1212
+ "@babel/types": "^7.20.7",
1213
+ "@types/babel__generator": "*",
1214
+ "@types/babel__template": "*",
1215
+ "@types/babel__traverse": "*"
1216
+ }
1217
+ },
1218
+ "node_modules/@types/babel__generator": {
1219
+ "version": "7.27.0",
1220
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
1221
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
1222
+ "dev": true,
1223
+ "license": "MIT",
1224
+ "dependencies": {
1225
+ "@babel/types": "^7.0.0"
1226
+ }
1227
+ },
1228
+ "node_modules/@types/babel__template": {
1229
+ "version": "7.4.4",
1230
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
1231
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
1232
+ "dev": true,
1233
+ "license": "MIT",
1234
+ "dependencies": {
1235
+ "@babel/parser": "^7.1.0",
1236
+ "@babel/types": "^7.0.0"
1237
+ }
1238
+ },
1239
+ "node_modules/@types/babel__traverse": {
1240
+ "version": "7.28.0",
1241
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
1242
+ "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
1243
+ "dev": true,
1244
+ "license": "MIT",
1245
+ "dependencies": {
1246
+ "@babel/types": "^7.28.2"
1247
+ }
1248
+ },
1249
+ "node_modules/@types/estree": {
1250
+ "version": "1.0.9",
1251
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
1252
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
1253
+ "dev": true,
1254
+ "license": "MIT"
1255
+ },
1256
+ "node_modules/@vitejs/plugin-react": {
1257
+ "version": "4.7.0",
1258
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz",
1259
+ "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==",
1260
+ "dev": true,
1261
+ "license": "MIT",
1262
+ "dependencies": {
1263
+ "@babel/core": "^7.28.0",
1264
+ "@babel/plugin-transform-react-jsx-self": "^7.27.1",
1265
+ "@babel/plugin-transform-react-jsx-source": "^7.27.1",
1266
+ "@rolldown/pluginutils": "1.0.0-beta.27",
1267
+ "@types/babel__core": "^7.20.5",
1268
+ "react-refresh": "^0.17.0"
1269
+ },
1270
+ "engines": {
1271
+ "node": "^14.18.0 || >=16.0.0"
1272
+ },
1273
+ "peerDependencies": {
1274
+ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
1275
+ }
1276
+ },
1277
+ "node_modules/any-promise": {
1278
+ "version": "1.3.0",
1279
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
1280
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
1281
+ "dev": true,
1282
+ "license": "MIT"
1283
+ },
1284
+ "node_modules/anymatch": {
1285
+ "version": "3.1.3",
1286
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
1287
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
1288
+ "dev": true,
1289
+ "license": "ISC",
1290
+ "dependencies": {
1291
+ "normalize-path": "^3.0.0",
1292
+ "picomatch": "^2.0.4"
1293
+ },
1294
+ "engines": {
1295
+ "node": ">= 8"
1296
+ }
1297
+ },
1298
+ "node_modules/arg": {
1299
+ "version": "5.0.2",
1300
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
1301
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
1302
+ "dev": true,
1303
+ "license": "MIT"
1304
+ },
1305
+ "node_modules/autoprefixer": {
1306
+ "version": "10.5.4",
1307
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.4.tgz",
1308
+ "integrity": "sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==",
1309
+ "dev": true,
1310
+ "funding": [
1311
+ {
1312
+ "type": "opencollective",
1313
+ "url": "https://opencollective.com/postcss/"
1314
+ },
1315
+ {
1316
+ "type": "tidelift",
1317
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
1318
+ },
1319
+ {
1320
+ "type": "github",
1321
+ "url": "https://github.com/sponsors/ai"
1322
+ }
1323
+ ],
1324
+ "license": "MIT",
1325
+ "dependencies": {
1326
+ "browserslist": "^4.28.6",
1327
+ "caniuse-lite": "^1.0.30001806",
1328
+ "fraction.js": "^5.3.4",
1329
+ "picocolors": "^1.1.1",
1330
+ "postcss-value-parser": "^4.2.0"
1331
+ },
1332
+ "bin": {
1333
+ "autoprefixer": "bin/autoprefixer"
1334
+ },
1335
+ "engines": {
1336
+ "node": "^10 || ^12 || >=14"
1337
+ },
1338
+ "peerDependencies": {
1339
+ "postcss": "^8.1.0"
1340
+ }
1341
+ },
1342
+ "node_modules/baseline-browser-mapping": {
1343
+ "version": "2.11.3",
1344
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.3.tgz",
1345
+ "integrity": "sha512-sbT0Ui/CZwyAyy7icT1Gw5P1LKRlFaHwaF6tDCW5YHq2X5SeeZFphBuIagopSfwSSZq3sQcbmEL072yphxm7ew==",
1346
+ "dev": true,
1347
+ "license": "Apache-2.0",
1348
+ "bin": {
1349
+ "baseline-browser-mapping": "dist/cli.cjs"
1350
+ },
1351
+ "engines": {
1352
+ "node": ">=6.0.0"
1353
+ }
1354
+ },
1355
+ "node_modules/binary-extensions": {
1356
+ "version": "2.3.0",
1357
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
1358
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
1359
+ "dev": true,
1360
+ "license": "MIT",
1361
+ "engines": {
1362
+ "node": ">=8"
1363
+ },
1364
+ "funding": {
1365
+ "url": "https://github.com/sponsors/sindresorhus"
1366
+ }
1367
+ },
1368
+ "node_modules/braces": {
1369
+ "version": "3.0.3",
1370
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
1371
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
1372
+ "dev": true,
1373
+ "license": "MIT",
1374
+ "dependencies": {
1375
+ "fill-range": "^7.1.1"
1376
+ },
1377
+ "engines": {
1378
+ "node": ">=8"
1379
+ }
1380
+ },
1381
+ "node_modules/browserslist": {
1382
+ "version": "4.28.7",
1383
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz",
1384
+ "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==",
1385
+ "dev": true,
1386
+ "funding": [
1387
+ {
1388
+ "type": "opencollective",
1389
+ "url": "https://opencollective.com/browserslist"
1390
+ },
1391
+ {
1392
+ "type": "tidelift",
1393
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
1394
+ },
1395
+ {
1396
+ "type": "github",
1397
+ "url": "https://github.com/sponsors/ai"
1398
+ }
1399
+ ],
1400
+ "license": "MIT",
1401
+ "dependencies": {
1402
+ "baseline-browser-mapping": "^2.10.44",
1403
+ "caniuse-lite": "^1.0.30001806",
1404
+ "electron-to-chromium": "^1.5.393",
1405
+ "node-releases": "^2.0.51",
1406
+ "update-browserslist-db": "^1.2.3"
1407
+ },
1408
+ "bin": {
1409
+ "browserslist": "cli.js"
1410
+ },
1411
+ "engines": {
1412
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1413
+ }
1414
+ },
1415
+ "node_modules/camelcase-css": {
1416
+ "version": "2.0.1",
1417
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1418
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
1419
+ "dev": true,
1420
+ "license": "MIT",
1421
+ "engines": {
1422
+ "node": ">= 6"
1423
+ }
1424
+ },
1425
+ "node_modules/caniuse-lite": {
1426
+ "version": "1.0.30001806",
1427
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz",
1428
+ "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==",
1429
+ "dev": true,
1430
+ "funding": [
1431
+ {
1432
+ "type": "opencollective",
1433
+ "url": "https://opencollective.com/browserslist"
1434
+ },
1435
+ {
1436
+ "type": "tidelift",
1437
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1438
+ },
1439
+ {
1440
+ "type": "github",
1441
+ "url": "https://github.com/sponsors/ai"
1442
+ }
1443
+ ],
1444
+ "license": "CC-BY-4.0"
1445
+ },
1446
+ "node_modules/chokidar": {
1447
+ "version": "3.6.0",
1448
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
1449
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
1450
+ "dev": true,
1451
+ "license": "MIT",
1452
+ "dependencies": {
1453
+ "anymatch": "~3.1.2",
1454
+ "braces": "~3.0.2",
1455
+ "glob-parent": "~5.1.2",
1456
+ "is-binary-path": "~2.1.0",
1457
+ "is-glob": "~4.0.1",
1458
+ "normalize-path": "~3.0.0",
1459
+ "readdirp": "~3.6.0"
1460
+ },
1461
+ "engines": {
1462
+ "node": ">= 8.10.0"
1463
+ },
1464
+ "funding": {
1465
+ "url": "https://paulmillr.com/funding/"
1466
+ },
1467
+ "optionalDependencies": {
1468
+ "fsevents": "~2.3.2"
1469
+ }
1470
+ },
1471
+ "node_modules/chokidar/node_modules/glob-parent": {
1472
+ "version": "5.1.2",
1473
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1474
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1475
+ "dev": true,
1476
+ "license": "ISC",
1477
+ "dependencies": {
1478
+ "is-glob": "^4.0.1"
1479
+ },
1480
+ "engines": {
1481
+ "node": ">= 6"
1482
+ }
1483
+ },
1484
+ "node_modules/commander": {
1485
+ "version": "4.1.1",
1486
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
1487
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
1488
+ "dev": true,
1489
+ "license": "MIT",
1490
+ "engines": {
1491
+ "node": ">= 6"
1492
+ }
1493
+ },
1494
+ "node_modules/convert-source-map": {
1495
+ "version": "2.0.0",
1496
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
1497
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
1498
+ "dev": true,
1499
+ "license": "MIT"
1500
+ },
1501
+ "node_modules/cssesc": {
1502
+ "version": "3.0.0",
1503
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1504
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1505
+ "dev": true,
1506
+ "license": "MIT",
1507
+ "bin": {
1508
+ "cssesc": "bin/cssesc"
1509
+ },
1510
+ "engines": {
1511
+ "node": ">=4"
1512
+ }
1513
+ },
1514
+ "node_modules/debug": {
1515
+ "version": "4.4.3",
1516
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
1517
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
1518
+ "dev": true,
1519
+ "license": "MIT",
1520
+ "dependencies": {
1521
+ "ms": "^2.1.3"
1522
+ },
1523
+ "engines": {
1524
+ "node": ">=6.0"
1525
+ },
1526
+ "peerDependenciesMeta": {
1527
+ "supports-color": {
1528
+ "optional": true
1529
+ }
1530
+ }
1531
+ },
1532
+ "node_modules/didyoumean": {
1533
+ "version": "1.2.2",
1534
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1535
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
1536
+ "dev": true,
1537
+ "license": "Apache-2.0"
1538
+ },
1539
+ "node_modules/dlv": {
1540
+ "version": "1.1.3",
1541
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1542
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1543
+ "dev": true,
1544
+ "license": "MIT"
1545
+ },
1546
+ "node_modules/electron-to-chromium": {
1547
+ "version": "1.5.396",
1548
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.396.tgz",
1549
+ "integrity": "sha512-yHiw2Y3C3H9U6TMbOfoWK/BPreiOPXRfTWPBwQBoZG6/8TB6eOPnsy5oaRYuatR7Fw2SJ4kKforgufeo7fq0EQ==",
1550
+ "dev": true,
1551
+ "license": "ISC"
1552
+ },
1553
+ "node_modules/es-errors": {
1554
+ "version": "1.3.0",
1555
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
1556
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
1557
+ "dev": true,
1558
+ "license": "MIT",
1559
+ "engines": {
1560
+ "node": ">= 0.4"
1561
+ }
1562
+ },
1563
+ "node_modules/esbuild": {
1564
+ "version": "0.25.12",
1565
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
1566
+ "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
1567
+ "dev": true,
1568
+ "hasInstallScript": true,
1569
+ "license": "MIT",
1570
+ "bin": {
1571
+ "esbuild": "bin/esbuild"
1572
+ },
1573
+ "engines": {
1574
+ "node": ">=18"
1575
+ },
1576
+ "optionalDependencies": {
1577
+ "@esbuild/aix-ppc64": "0.25.12",
1578
+ "@esbuild/android-arm": "0.25.12",
1579
+ "@esbuild/android-arm64": "0.25.12",
1580
+ "@esbuild/android-x64": "0.25.12",
1581
+ "@esbuild/darwin-arm64": "0.25.12",
1582
+ "@esbuild/darwin-x64": "0.25.12",
1583
+ "@esbuild/freebsd-arm64": "0.25.12",
1584
+ "@esbuild/freebsd-x64": "0.25.12",
1585
+ "@esbuild/linux-arm": "0.25.12",
1586
+ "@esbuild/linux-arm64": "0.25.12",
1587
+ "@esbuild/linux-ia32": "0.25.12",
1588
+ "@esbuild/linux-loong64": "0.25.12",
1589
+ "@esbuild/linux-mips64el": "0.25.12",
1590
+ "@esbuild/linux-ppc64": "0.25.12",
1591
+ "@esbuild/linux-riscv64": "0.25.12",
1592
+ "@esbuild/linux-s390x": "0.25.12",
1593
+ "@esbuild/linux-x64": "0.25.12",
1594
+ "@esbuild/netbsd-arm64": "0.25.12",
1595
+ "@esbuild/netbsd-x64": "0.25.12",
1596
+ "@esbuild/openbsd-arm64": "0.25.12",
1597
+ "@esbuild/openbsd-x64": "0.25.12",
1598
+ "@esbuild/openharmony-arm64": "0.25.12",
1599
+ "@esbuild/sunos-x64": "0.25.12",
1600
+ "@esbuild/win32-arm64": "0.25.12",
1601
+ "@esbuild/win32-ia32": "0.25.12",
1602
+ "@esbuild/win32-x64": "0.25.12"
1603
+ }
1604
+ },
1605
+ "node_modules/escalade": {
1606
+ "version": "3.2.0",
1607
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
1608
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
1609
+ "dev": true,
1610
+ "license": "MIT",
1611
+ "engines": {
1612
+ "node": ">=6"
1613
+ }
1614
+ },
1615
+ "node_modules/fast-glob": {
1616
+ "version": "3.3.3",
1617
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
1618
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
1619
+ "dev": true,
1620
+ "license": "MIT",
1621
+ "dependencies": {
1622
+ "@nodelib/fs.stat": "^2.0.2",
1623
+ "@nodelib/fs.walk": "^1.2.3",
1624
+ "glob-parent": "^5.1.2",
1625
+ "merge2": "^1.3.0",
1626
+ "micromatch": "^4.0.8"
1627
+ },
1628
+ "engines": {
1629
+ "node": ">=8.6.0"
1630
+ }
1631
+ },
1632
+ "node_modules/fast-glob/node_modules/glob-parent": {
1633
+ "version": "5.1.2",
1634
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1635
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1636
+ "dev": true,
1637
+ "license": "ISC",
1638
+ "dependencies": {
1639
+ "is-glob": "^4.0.1"
1640
+ },
1641
+ "engines": {
1642
+ "node": ">= 6"
1643
+ }
1644
+ },
1645
+ "node_modules/fastq": {
1646
+ "version": "1.20.1",
1647
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
1648
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
1649
+ "dev": true,
1650
+ "license": "ISC",
1651
+ "dependencies": {
1652
+ "reusify": "^1.0.4"
1653
+ }
1654
+ },
1655
+ "node_modules/fill-range": {
1656
+ "version": "7.1.1",
1657
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
1658
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
1659
+ "dev": true,
1660
+ "license": "MIT",
1661
+ "dependencies": {
1662
+ "to-regex-range": "^5.0.1"
1663
+ },
1664
+ "engines": {
1665
+ "node": ">=8"
1666
+ }
1667
+ },
1668
+ "node_modules/fraction.js": {
1669
+ "version": "5.3.4",
1670
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz",
1671
+ "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==",
1672
+ "dev": true,
1673
+ "license": "MIT",
1674
+ "engines": {
1675
+ "node": "*"
1676
+ },
1677
+ "funding": {
1678
+ "type": "github",
1679
+ "url": "https://github.com/sponsors/rawify"
1680
+ }
1681
+ },
1682
+ "node_modules/fsevents": {
1683
+ "version": "2.3.3",
1684
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1685
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1686
+ "dev": true,
1687
+ "hasInstallScript": true,
1688
+ "license": "MIT",
1689
+ "optional": true,
1690
+ "os": [
1691
+ "darwin"
1692
+ ],
1693
+ "engines": {
1694
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1695
+ }
1696
+ },
1697
+ "node_modules/function-bind": {
1698
+ "version": "1.1.2",
1699
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
1700
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
1701
+ "dev": true,
1702
+ "license": "MIT",
1703
+ "funding": {
1704
+ "url": "https://github.com/sponsors/ljharb"
1705
+ }
1706
+ },
1707
+ "node_modules/gensync": {
1708
+ "version": "1.0.0-beta.2",
1709
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1710
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1711
+ "dev": true,
1712
+ "license": "MIT",
1713
+ "engines": {
1714
+ "node": ">=6.9.0"
1715
+ }
1716
+ },
1717
+ "node_modules/glob-parent": {
1718
+ "version": "6.0.2",
1719
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1720
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1721
+ "dev": true,
1722
+ "license": "ISC",
1723
+ "dependencies": {
1724
+ "is-glob": "^4.0.3"
1725
+ },
1726
+ "engines": {
1727
+ "node": ">=10.13.0"
1728
+ }
1729
+ },
1730
+ "node_modules/hasown": {
1731
+ "version": "2.0.4",
1732
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz",
1733
+ "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==",
1734
+ "dev": true,
1735
+ "license": "MIT",
1736
+ "dependencies": {
1737
+ "function-bind": "^1.1.2"
1738
+ },
1739
+ "engines": {
1740
+ "node": ">= 0.4"
1741
+ }
1742
+ },
1743
+ "node_modules/is-binary-path": {
1744
+ "version": "2.1.0",
1745
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1746
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1747
+ "dev": true,
1748
+ "license": "MIT",
1749
+ "dependencies": {
1750
+ "binary-extensions": "^2.0.0"
1751
+ },
1752
+ "engines": {
1753
+ "node": ">=8"
1754
+ }
1755
+ },
1756
+ "node_modules/is-core-module": {
1757
+ "version": "2.16.2",
1758
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz",
1759
+ "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==",
1760
+ "dev": true,
1761
+ "license": "MIT",
1762
+ "dependencies": {
1763
+ "hasown": "^2.0.3"
1764
+ },
1765
+ "engines": {
1766
+ "node": ">= 0.4"
1767
+ },
1768
+ "funding": {
1769
+ "url": "https://github.com/sponsors/ljharb"
1770
+ }
1771
+ },
1772
+ "node_modules/is-extglob": {
1773
+ "version": "2.1.1",
1774
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1775
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1776
+ "dev": true,
1777
+ "license": "MIT",
1778
+ "engines": {
1779
+ "node": ">=0.10.0"
1780
+ }
1781
+ },
1782
+ "node_modules/is-glob": {
1783
+ "version": "4.0.3",
1784
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1785
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1786
+ "dev": true,
1787
+ "license": "MIT",
1788
+ "dependencies": {
1789
+ "is-extglob": "^2.1.1"
1790
+ },
1791
+ "engines": {
1792
+ "node": ">=0.10.0"
1793
+ }
1794
+ },
1795
+ "node_modules/is-number": {
1796
+ "version": "7.0.0",
1797
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1798
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1799
+ "dev": true,
1800
+ "license": "MIT",
1801
+ "engines": {
1802
+ "node": ">=0.12.0"
1803
+ }
1804
+ },
1805
+ "node_modules/jiti": {
1806
+ "version": "1.21.7",
1807
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
1808
+ "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
1809
+ "dev": true,
1810
+ "license": "MIT",
1811
+ "bin": {
1812
+ "jiti": "bin/jiti.js"
1813
+ }
1814
+ },
1815
+ "node_modules/js-tokens": {
1816
+ "version": "4.0.0",
1817
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1818
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1819
+ "license": "MIT"
1820
+ },
1821
+ "node_modules/jsesc": {
1822
+ "version": "3.1.0",
1823
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
1824
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
1825
+ "dev": true,
1826
+ "license": "MIT",
1827
+ "bin": {
1828
+ "jsesc": "bin/jsesc"
1829
+ },
1830
+ "engines": {
1831
+ "node": ">=6"
1832
+ }
1833
+ },
1834
+ "node_modules/json5": {
1835
+ "version": "2.2.3",
1836
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
1837
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
1838
+ "dev": true,
1839
+ "license": "MIT",
1840
+ "bin": {
1841
+ "json5": "lib/cli.js"
1842
+ },
1843
+ "engines": {
1844
+ "node": ">=6"
1845
+ }
1846
+ },
1847
+ "node_modules/lilconfig": {
1848
+ "version": "3.1.3",
1849
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
1850
+ "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
1851
+ "dev": true,
1852
+ "license": "MIT",
1853
+ "engines": {
1854
+ "node": ">=14"
1855
+ },
1856
+ "funding": {
1857
+ "url": "https://github.com/sponsors/antonk52"
1858
+ }
1859
+ },
1860
+ "node_modules/lines-and-columns": {
1861
+ "version": "1.2.4",
1862
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1863
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
1864
+ "dev": true,
1865
+ "license": "MIT"
1866
+ },
1867
+ "node_modules/loose-envify": {
1868
+ "version": "1.4.0",
1869
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1870
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1871
+ "license": "MIT",
1872
+ "dependencies": {
1873
+ "js-tokens": "^3.0.0 || ^4.0.0"
1874
+ },
1875
+ "bin": {
1876
+ "loose-envify": "cli.js"
1877
+ }
1878
+ },
1879
+ "node_modules/lru-cache": {
1880
+ "version": "5.1.1",
1881
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
1882
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
1883
+ "dev": true,
1884
+ "license": "ISC",
1885
+ "dependencies": {
1886
+ "yallist": "^3.0.2"
1887
+ }
1888
+ },
1889
+ "node_modules/merge2": {
1890
+ "version": "1.4.1",
1891
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1892
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1893
+ "dev": true,
1894
+ "license": "MIT",
1895
+ "engines": {
1896
+ "node": ">= 8"
1897
+ }
1898
+ },
1899
+ "node_modules/micromatch": {
1900
+ "version": "4.0.8",
1901
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
1902
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
1903
+ "dev": true,
1904
+ "license": "MIT",
1905
+ "dependencies": {
1906
+ "braces": "^3.0.3",
1907
+ "picomatch": "^2.3.1"
1908
+ },
1909
+ "engines": {
1910
+ "node": ">=8.6"
1911
+ }
1912
+ },
1913
+ "node_modules/ms": {
1914
+ "version": "2.1.3",
1915
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1916
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1917
+ "dev": true,
1918
+ "license": "MIT"
1919
+ },
1920
+ "node_modules/mz": {
1921
+ "version": "2.7.0",
1922
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
1923
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
1924
+ "dev": true,
1925
+ "license": "MIT",
1926
+ "dependencies": {
1927
+ "any-promise": "^1.0.0",
1928
+ "object-assign": "^4.0.1",
1929
+ "thenify-all": "^1.0.0"
1930
+ }
1931
+ },
1932
+ "node_modules/nanoid": {
1933
+ "version": "3.3.16",
1934
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz",
1935
+ "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==",
1936
+ "dev": true,
1937
+ "funding": [
1938
+ {
1939
+ "type": "github",
1940
+ "url": "https://github.com/sponsors/ai"
1941
+ }
1942
+ ],
1943
+ "license": "MIT",
1944
+ "bin": {
1945
+ "nanoid": "bin/nanoid.cjs"
1946
+ },
1947
+ "engines": {
1948
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1949
+ }
1950
+ },
1951
+ "node_modules/node-releases": {
1952
+ "version": "2.0.51",
1953
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz",
1954
+ "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==",
1955
+ "dev": true,
1956
+ "license": "MIT",
1957
+ "engines": {
1958
+ "node": ">=18"
1959
+ }
1960
+ },
1961
+ "node_modules/normalize-path": {
1962
+ "version": "3.0.0",
1963
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1964
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1965
+ "dev": true,
1966
+ "license": "MIT",
1967
+ "engines": {
1968
+ "node": ">=0.10.0"
1969
+ }
1970
+ },
1971
+ "node_modules/object-assign": {
1972
+ "version": "4.1.1",
1973
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1974
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1975
+ "dev": true,
1976
+ "license": "MIT",
1977
+ "engines": {
1978
+ "node": ">=0.10.0"
1979
+ }
1980
+ },
1981
+ "node_modules/object-hash": {
1982
+ "version": "3.0.0",
1983
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
1984
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
1985
+ "dev": true,
1986
+ "license": "MIT",
1987
+ "engines": {
1988
+ "node": ">= 6"
1989
+ }
1990
+ },
1991
+ "node_modules/path-parse": {
1992
+ "version": "1.0.7",
1993
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1994
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1995
+ "dev": true,
1996
+ "license": "MIT"
1997
+ },
1998
+ "node_modules/picocolors": {
1999
+ "version": "1.1.1",
2000
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
2001
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
2002
+ "dev": true,
2003
+ "license": "ISC"
2004
+ },
2005
+ "node_modules/picomatch": {
2006
+ "version": "2.3.2",
2007
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
2008
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
2009
+ "dev": true,
2010
+ "license": "MIT",
2011
+ "engines": {
2012
+ "node": ">=8.6"
2013
+ },
2014
+ "funding": {
2015
+ "url": "https://github.com/sponsors/jonschlinkert"
2016
+ }
2017
+ },
2018
+ "node_modules/pify": {
2019
+ "version": "2.3.0",
2020
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2021
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
2022
+ "dev": true,
2023
+ "license": "MIT",
2024
+ "engines": {
2025
+ "node": ">=0.10.0"
2026
+ }
2027
+ },
2028
+ "node_modules/pirates": {
2029
+ "version": "4.0.7",
2030
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
2031
+ "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
2032
+ "dev": true,
2033
+ "license": "MIT",
2034
+ "engines": {
2035
+ "node": ">= 6"
2036
+ }
2037
+ },
2038
+ "node_modules/postcss": {
2039
+ "version": "8.5.23",
2040
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.23.tgz",
2041
+ "integrity": "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==",
2042
+ "dev": true,
2043
+ "funding": [
2044
+ {
2045
+ "type": "opencollective",
2046
+ "url": "https://opencollective.com/postcss/"
2047
+ },
2048
+ {
2049
+ "type": "tidelift",
2050
+ "url": "https://tidelift.com/funding/github/npm/postcss"
2051
+ },
2052
+ {
2053
+ "type": "github",
2054
+ "url": "https://github.com/sponsors/ai"
2055
+ }
2056
+ ],
2057
+ "license": "MIT",
2058
+ "dependencies": {
2059
+ "nanoid": "^3.3.16",
2060
+ "picocolors": "^1.1.1",
2061
+ "source-map-js": "^1.2.1"
2062
+ },
2063
+ "engines": {
2064
+ "node": "^10 || ^12 || >=14"
2065
+ }
2066
+ },
2067
+ "node_modules/postcss-import": {
2068
+ "version": "15.1.0",
2069
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
2070
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
2071
+ "dev": true,
2072
+ "license": "MIT",
2073
+ "dependencies": {
2074
+ "postcss-value-parser": "^4.0.0",
2075
+ "read-cache": "^1.0.0",
2076
+ "resolve": "^1.1.7"
2077
+ },
2078
+ "engines": {
2079
+ "node": ">=14.0.0"
2080
+ },
2081
+ "peerDependencies": {
2082
+ "postcss": "^8.0.0"
2083
+ }
2084
+ },
2085
+ "node_modules/postcss-js": {
2086
+ "version": "4.1.0",
2087
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz",
2088
+ "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==",
2089
+ "dev": true,
2090
+ "funding": [
2091
+ {
2092
+ "type": "opencollective",
2093
+ "url": "https://opencollective.com/postcss/"
2094
+ },
2095
+ {
2096
+ "type": "github",
2097
+ "url": "https://github.com/sponsors/ai"
2098
+ }
2099
+ ],
2100
+ "license": "MIT",
2101
+ "dependencies": {
2102
+ "camelcase-css": "^2.0.1"
2103
+ },
2104
+ "engines": {
2105
+ "node": "^12 || ^14 || >= 16"
2106
+ },
2107
+ "peerDependencies": {
2108
+ "postcss": "^8.4.21"
2109
+ }
2110
+ },
2111
+ "node_modules/postcss-load-config": {
2112
+ "version": "6.0.1",
2113
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz",
2114
+ "integrity": "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==",
2115
+ "dev": true,
2116
+ "funding": [
2117
+ {
2118
+ "type": "opencollective",
2119
+ "url": "https://opencollective.com/postcss/"
2120
+ },
2121
+ {
2122
+ "type": "github",
2123
+ "url": "https://github.com/sponsors/ai"
2124
+ }
2125
+ ],
2126
+ "license": "MIT",
2127
+ "dependencies": {
2128
+ "lilconfig": "^3.1.1"
2129
+ },
2130
+ "engines": {
2131
+ "node": ">= 18"
2132
+ },
2133
+ "peerDependencies": {
2134
+ "jiti": ">=1.21.0",
2135
+ "postcss": ">=8.0.9",
2136
+ "tsx": "^4.8.1",
2137
+ "yaml": "^2.4.2"
2138
+ },
2139
+ "peerDependenciesMeta": {
2140
+ "jiti": {
2141
+ "optional": true
2142
+ },
2143
+ "postcss": {
2144
+ "optional": true
2145
+ },
2146
+ "tsx": {
2147
+ "optional": true
2148
+ },
2149
+ "yaml": {
2150
+ "optional": true
2151
+ }
2152
+ }
2153
+ },
2154
+ "node_modules/postcss-nested": {
2155
+ "version": "6.2.0",
2156
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
2157
+ "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
2158
+ "dev": true,
2159
+ "funding": [
2160
+ {
2161
+ "type": "opencollective",
2162
+ "url": "https://opencollective.com/postcss/"
2163
+ },
2164
+ {
2165
+ "type": "github",
2166
+ "url": "https://github.com/sponsors/ai"
2167
+ }
2168
+ ],
2169
+ "license": "MIT",
2170
+ "dependencies": {
2171
+ "postcss-selector-parser": "^6.1.1"
2172
+ },
2173
+ "engines": {
2174
+ "node": ">=12.0"
2175
+ },
2176
+ "peerDependencies": {
2177
+ "postcss": "^8.2.14"
2178
+ }
2179
+ },
2180
+ "node_modules/postcss-selector-parser": {
2181
+ "version": "6.1.4",
2182
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz",
2183
+ "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==",
2184
+ "dev": true,
2185
+ "license": "MIT",
2186
+ "dependencies": {
2187
+ "cssesc": "^3.0.0",
2188
+ "util-deprecate": "^1.0.2"
2189
+ },
2190
+ "engines": {
2191
+ "node": ">=4"
2192
+ }
2193
+ },
2194
+ "node_modules/postcss-value-parser": {
2195
+ "version": "4.2.0",
2196
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
2197
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
2198
+ "dev": true,
2199
+ "license": "MIT"
2200
+ },
2201
+ "node_modules/queue-microtask": {
2202
+ "version": "1.2.3",
2203
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
2204
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
2205
+ "dev": true,
2206
+ "funding": [
2207
+ {
2208
+ "type": "github",
2209
+ "url": "https://github.com/sponsors/feross"
2210
+ },
2211
+ {
2212
+ "type": "patreon",
2213
+ "url": "https://www.patreon.com/feross"
2214
+ },
2215
+ {
2216
+ "type": "consulting",
2217
+ "url": "https://feross.org/support"
2218
+ }
2219
+ ],
2220
+ "license": "MIT"
2221
+ },
2222
+ "node_modules/react": {
2223
+ "version": "18.3.1",
2224
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
2225
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
2226
+ "license": "MIT",
2227
+ "dependencies": {
2228
+ "loose-envify": "^1.1.0"
2229
+ },
2230
+ "engines": {
2231
+ "node": ">=0.10.0"
2232
+ }
2233
+ },
2234
+ "node_modules/react-dom": {
2235
+ "version": "18.3.1",
2236
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
2237
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
2238
+ "license": "MIT",
2239
+ "dependencies": {
2240
+ "loose-envify": "^1.1.0",
2241
+ "scheduler": "^0.23.2"
2242
+ },
2243
+ "peerDependencies": {
2244
+ "react": "^18.3.1"
2245
+ }
2246
+ },
2247
+ "node_modules/react-refresh": {
2248
+ "version": "0.17.0",
2249
+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz",
2250
+ "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==",
2251
+ "dev": true,
2252
+ "license": "MIT",
2253
+ "engines": {
2254
+ "node": ">=0.10.0"
2255
+ }
2256
+ },
2257
+ "node_modules/read-cache": {
2258
+ "version": "1.0.0",
2259
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
2260
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
2261
+ "dev": true,
2262
+ "license": "MIT",
2263
+ "dependencies": {
2264
+ "pify": "^2.3.0"
2265
+ }
2266
+ },
2267
+ "node_modules/readdirp": {
2268
+ "version": "3.6.0",
2269
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
2270
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
2271
+ "dev": true,
2272
+ "license": "MIT",
2273
+ "dependencies": {
2274
+ "picomatch": "^2.2.1"
2275
+ },
2276
+ "engines": {
2277
+ "node": ">=8.10.0"
2278
+ }
2279
+ },
2280
+ "node_modules/resolve": {
2281
+ "version": "1.22.12",
2282
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz",
2283
+ "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==",
2284
+ "dev": true,
2285
+ "license": "MIT",
2286
+ "dependencies": {
2287
+ "es-errors": "^1.3.0",
2288
+ "is-core-module": "^2.16.1",
2289
+ "path-parse": "^1.0.7",
2290
+ "supports-preserve-symlinks-flag": "^1.0.0"
2291
+ },
2292
+ "bin": {
2293
+ "resolve": "bin/resolve"
2294
+ },
2295
+ "engines": {
2296
+ "node": ">= 0.4"
2297
+ },
2298
+ "funding": {
2299
+ "url": "https://github.com/sponsors/ljharb"
2300
+ }
2301
+ },
2302
+ "node_modules/reusify": {
2303
+ "version": "1.1.0",
2304
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
2305
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
2306
+ "dev": true,
2307
+ "license": "MIT",
2308
+ "engines": {
2309
+ "iojs": ">=1.0.0",
2310
+ "node": ">=0.10.0"
2311
+ }
2312
+ },
2313
+ "node_modules/rollup": {
2314
+ "version": "4.62.2",
2315
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.2.tgz",
2316
+ "integrity": "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==",
2317
+ "dev": true,
2318
+ "license": "MIT",
2319
+ "dependencies": {
2320
+ "@types/estree": "1.0.9"
2321
+ },
2322
+ "bin": {
2323
+ "rollup": "dist/bin/rollup"
2324
+ },
2325
+ "engines": {
2326
+ "node": ">=18.0.0",
2327
+ "npm": ">=8.0.0"
2328
+ },
2329
+ "optionalDependencies": {
2330
+ "@rollup/rollup-android-arm-eabi": "4.62.2",
2331
+ "@rollup/rollup-android-arm64": "4.62.2",
2332
+ "@rollup/rollup-darwin-arm64": "4.62.2",
2333
+ "@rollup/rollup-darwin-x64": "4.62.2",
2334
+ "@rollup/rollup-freebsd-arm64": "4.62.2",
2335
+ "@rollup/rollup-freebsd-x64": "4.62.2",
2336
+ "@rollup/rollup-linux-arm-gnueabihf": "4.62.2",
2337
+ "@rollup/rollup-linux-arm-musleabihf": "4.62.2",
2338
+ "@rollup/rollup-linux-arm64-gnu": "4.62.2",
2339
+ "@rollup/rollup-linux-arm64-musl": "4.62.2",
2340
+ "@rollup/rollup-linux-loong64-gnu": "4.62.2",
2341
+ "@rollup/rollup-linux-loong64-musl": "4.62.2",
2342
+ "@rollup/rollup-linux-ppc64-gnu": "4.62.2",
2343
+ "@rollup/rollup-linux-ppc64-musl": "4.62.2",
2344
+ "@rollup/rollup-linux-riscv64-gnu": "4.62.2",
2345
+ "@rollup/rollup-linux-riscv64-musl": "4.62.2",
2346
+ "@rollup/rollup-linux-s390x-gnu": "4.62.2",
2347
+ "@rollup/rollup-linux-x64-gnu": "4.62.2",
2348
+ "@rollup/rollup-linux-x64-musl": "4.62.2",
2349
+ "@rollup/rollup-openbsd-x64": "4.62.2",
2350
+ "@rollup/rollup-openharmony-arm64": "4.62.2",
2351
+ "@rollup/rollup-win32-arm64-msvc": "4.62.2",
2352
+ "@rollup/rollup-win32-ia32-msvc": "4.62.2",
2353
+ "@rollup/rollup-win32-x64-gnu": "4.62.2",
2354
+ "@rollup/rollup-win32-x64-msvc": "4.62.2",
2355
+ "fsevents": "~2.3.2"
2356
+ }
2357
+ },
2358
+ "node_modules/run-parallel": {
2359
+ "version": "1.2.0",
2360
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
2361
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
2362
+ "dev": true,
2363
+ "funding": [
2364
+ {
2365
+ "type": "github",
2366
+ "url": "https://github.com/sponsors/feross"
2367
+ },
2368
+ {
2369
+ "type": "patreon",
2370
+ "url": "https://www.patreon.com/feross"
2371
+ },
2372
+ {
2373
+ "type": "consulting",
2374
+ "url": "https://feross.org/support"
2375
+ }
2376
+ ],
2377
+ "license": "MIT",
2378
+ "dependencies": {
2379
+ "queue-microtask": "^1.2.2"
2380
+ }
2381
+ },
2382
+ "node_modules/scheduler": {
2383
+ "version": "0.23.2",
2384
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
2385
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
2386
+ "license": "MIT",
2387
+ "dependencies": {
2388
+ "loose-envify": "^1.1.0"
2389
+ }
2390
+ },
2391
+ "node_modules/semver": {
2392
+ "version": "6.3.1",
2393
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
2394
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
2395
+ "dev": true,
2396
+ "license": "ISC",
2397
+ "bin": {
2398
+ "semver": "bin/semver.js"
2399
+ }
2400
+ },
2401
+ "node_modules/source-map-js": {
2402
+ "version": "1.2.1",
2403
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
2404
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
2405
+ "dev": true,
2406
+ "license": "BSD-3-Clause",
2407
+ "engines": {
2408
+ "node": ">=0.10.0"
2409
+ }
2410
+ },
2411
+ "node_modules/sucrase": {
2412
+ "version": "3.35.1",
2413
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz",
2414
+ "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==",
2415
+ "dev": true,
2416
+ "license": "MIT",
2417
+ "dependencies": {
2418
+ "@jridgewell/gen-mapping": "^0.3.2",
2419
+ "commander": "^4.0.0",
2420
+ "lines-and-columns": "^1.1.6",
2421
+ "mz": "^2.7.0",
2422
+ "pirates": "^4.0.1",
2423
+ "tinyglobby": "^0.2.11",
2424
+ "ts-interface-checker": "^0.1.9"
2425
+ },
2426
+ "bin": {
2427
+ "sucrase": "bin/sucrase",
2428
+ "sucrase-node": "bin/sucrase-node"
2429
+ },
2430
+ "engines": {
2431
+ "node": ">=16 || 14 >=14.17"
2432
+ }
2433
+ },
2434
+ "node_modules/supports-preserve-symlinks-flag": {
2435
+ "version": "1.0.0",
2436
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
2437
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
2438
+ "dev": true,
2439
+ "license": "MIT",
2440
+ "engines": {
2441
+ "node": ">= 0.4"
2442
+ },
2443
+ "funding": {
2444
+ "url": "https://github.com/sponsors/ljharb"
2445
+ }
2446
+ },
2447
+ "node_modules/tailwindcss": {
2448
+ "version": "3.4.19",
2449
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz",
2450
+ "integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==",
2451
+ "dev": true,
2452
+ "license": "MIT",
2453
+ "dependencies": {
2454
+ "@alloc/quick-lru": "^5.2.0",
2455
+ "arg": "^5.0.2",
2456
+ "chokidar": "^3.6.0",
2457
+ "didyoumean": "^1.2.2",
2458
+ "dlv": "^1.1.3",
2459
+ "fast-glob": "^3.3.2",
2460
+ "glob-parent": "^6.0.2",
2461
+ "is-glob": "^4.0.3",
2462
+ "jiti": "^1.21.7",
2463
+ "lilconfig": "^3.1.3",
2464
+ "micromatch": "^4.0.8",
2465
+ "normalize-path": "^3.0.0",
2466
+ "object-hash": "^3.0.0",
2467
+ "picocolors": "^1.1.1",
2468
+ "postcss": "^8.4.47",
2469
+ "postcss-import": "^15.1.0",
2470
+ "postcss-js": "^4.0.1",
2471
+ "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0",
2472
+ "postcss-nested": "^6.2.0",
2473
+ "postcss-selector-parser": "^6.1.2",
2474
+ "resolve": "^1.22.8",
2475
+ "sucrase": "^3.35.0"
2476
+ },
2477
+ "bin": {
2478
+ "tailwind": "lib/cli.js",
2479
+ "tailwindcss": "lib/cli.js"
2480
+ },
2481
+ "engines": {
2482
+ "node": ">=14.0.0"
2483
+ }
2484
+ },
2485
+ "node_modules/thenify": {
2486
+ "version": "3.3.1",
2487
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
2488
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
2489
+ "dev": true,
2490
+ "license": "MIT",
2491
+ "dependencies": {
2492
+ "any-promise": "^1.0.0"
2493
+ }
2494
+ },
2495
+ "node_modules/thenify-all": {
2496
+ "version": "1.6.0",
2497
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
2498
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
2499
+ "dev": true,
2500
+ "license": "MIT",
2501
+ "dependencies": {
2502
+ "thenify": ">= 3.1.0 < 4"
2503
+ },
2504
+ "engines": {
2505
+ "node": ">=0.8"
2506
+ }
2507
+ },
2508
+ "node_modules/tinyglobby": {
2509
+ "version": "0.2.17",
2510
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
2511
+ "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
2512
+ "dev": true,
2513
+ "license": "MIT",
2514
+ "dependencies": {
2515
+ "fdir": "^6.5.0",
2516
+ "picomatch": "^4.0.4"
2517
+ },
2518
+ "engines": {
2519
+ "node": ">=12.0.0"
2520
+ },
2521
+ "funding": {
2522
+ "url": "https://github.com/sponsors/SuperchupuDev"
2523
+ }
2524
+ },
2525
+ "node_modules/tinyglobby/node_modules/fdir": {
2526
+ "version": "6.5.0",
2527
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
2528
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
2529
+ "dev": true,
2530
+ "license": "MIT",
2531
+ "engines": {
2532
+ "node": ">=12.0.0"
2533
+ },
2534
+ "peerDependencies": {
2535
+ "picomatch": "^3 || ^4"
2536
+ },
2537
+ "peerDependenciesMeta": {
2538
+ "picomatch": {
2539
+ "optional": true
2540
+ }
2541
+ }
2542
+ },
2543
+ "node_modules/tinyglobby/node_modules/picomatch": {
2544
+ "version": "4.0.5",
2545
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
2546
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
2547
+ "dev": true,
2548
+ "license": "MIT",
2549
+ "engines": {
2550
+ "node": ">=12"
2551
+ },
2552
+ "funding": {
2553
+ "url": "https://github.com/sponsors/jonschlinkert"
2554
+ }
2555
+ },
2556
+ "node_modules/to-regex-range": {
2557
+ "version": "5.0.1",
2558
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2559
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2560
+ "dev": true,
2561
+ "license": "MIT",
2562
+ "dependencies": {
2563
+ "is-number": "^7.0.0"
2564
+ },
2565
+ "engines": {
2566
+ "node": ">=8.0"
2567
+ }
2568
+ },
2569
+ "node_modules/ts-interface-checker": {
2570
+ "version": "0.1.13",
2571
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
2572
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
2573
+ "dev": true,
2574
+ "license": "Apache-2.0"
2575
+ },
2576
+ "node_modules/update-browserslist-db": {
2577
+ "version": "1.2.3",
2578
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
2579
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
2580
+ "dev": true,
2581
+ "funding": [
2582
+ {
2583
+ "type": "opencollective",
2584
+ "url": "https://opencollective.com/browserslist"
2585
+ },
2586
+ {
2587
+ "type": "tidelift",
2588
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
2589
+ },
2590
+ {
2591
+ "type": "github",
2592
+ "url": "https://github.com/sponsors/ai"
2593
+ }
2594
+ ],
2595
+ "license": "MIT",
2596
+ "dependencies": {
2597
+ "escalade": "^3.2.0",
2598
+ "picocolors": "^1.1.1"
2599
+ },
2600
+ "bin": {
2601
+ "update-browserslist-db": "cli.js"
2602
+ },
2603
+ "peerDependencies": {
2604
+ "browserslist": ">= 4.21.0"
2605
+ }
2606
+ },
2607
+ "node_modules/util-deprecate": {
2608
+ "version": "1.0.2",
2609
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2610
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
2611
+ "dev": true,
2612
+ "license": "MIT"
2613
+ },
2614
+ "node_modules/vite": {
2615
+ "version": "6.4.3",
2616
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.3.tgz",
2617
+ "integrity": "sha512-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A==",
2618
+ "dev": true,
2619
+ "license": "MIT",
2620
+ "dependencies": {
2621
+ "esbuild": "^0.25.0",
2622
+ "fdir": "^6.4.4",
2623
+ "picomatch": "^4.0.2",
2624
+ "postcss": "^8.5.3",
2625
+ "rollup": "^4.34.9",
2626
+ "tinyglobby": "^0.2.13"
2627
+ },
2628
+ "bin": {
2629
+ "vite": "bin/vite.js"
2630
+ },
2631
+ "engines": {
2632
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
2633
+ },
2634
+ "funding": {
2635
+ "url": "https://github.com/vitejs/vite?sponsor=1"
2636
+ },
2637
+ "optionalDependencies": {
2638
+ "fsevents": "~2.3.3"
2639
+ },
2640
+ "peerDependencies": {
2641
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
2642
+ "jiti": ">=1.21.0",
2643
+ "less": "*",
2644
+ "lightningcss": "^1.21.0",
2645
+ "sass": "*",
2646
+ "sass-embedded": "*",
2647
+ "stylus": "*",
2648
+ "sugarss": "*",
2649
+ "terser": "^5.16.0",
2650
+ "tsx": "^4.8.1",
2651
+ "yaml": "^2.4.2"
2652
+ },
2653
+ "peerDependenciesMeta": {
2654
+ "@types/node": {
2655
+ "optional": true
2656
+ },
2657
+ "jiti": {
2658
+ "optional": true
2659
+ },
2660
+ "less": {
2661
+ "optional": true
2662
+ },
2663
+ "lightningcss": {
2664
+ "optional": true
2665
+ },
2666
+ "sass": {
2667
+ "optional": true
2668
+ },
2669
+ "sass-embedded": {
2670
+ "optional": true
2671
+ },
2672
+ "stylus": {
2673
+ "optional": true
2674
+ },
2675
+ "sugarss": {
2676
+ "optional": true
2677
+ },
2678
+ "terser": {
2679
+ "optional": true
2680
+ },
2681
+ "tsx": {
2682
+ "optional": true
2683
+ },
2684
+ "yaml": {
2685
+ "optional": true
2686
+ }
2687
+ }
2688
+ },
2689
+ "node_modules/vite/node_modules/fdir": {
2690
+ "version": "6.5.0",
2691
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
2692
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
2693
+ "dev": true,
2694
+ "license": "MIT",
2695
+ "engines": {
2696
+ "node": ">=12.0.0"
2697
+ },
2698
+ "peerDependencies": {
2699
+ "picomatch": "^3 || ^4"
2700
+ },
2701
+ "peerDependenciesMeta": {
2702
+ "picomatch": {
2703
+ "optional": true
2704
+ }
2705
+ }
2706
+ },
2707
+ "node_modules/vite/node_modules/picomatch": {
2708
+ "version": "4.0.5",
2709
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz",
2710
+ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==",
2711
+ "dev": true,
2712
+ "license": "MIT",
2713
+ "engines": {
2714
+ "node": ">=12"
2715
+ },
2716
+ "funding": {
2717
+ "url": "https://github.com/sponsors/jonschlinkert"
2718
+ }
2719
+ },
2720
+ "node_modules/yallist": {
2721
+ "version": "3.1.1",
2722
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
2723
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
2724
+ "dev": true,
2725
+ "license": "ISC"
2726
+ }
2727
+ }
2728
+ }
frontend/package.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "docuask-frontend",
3
+ "private": true,
4
+ "version": "0.1.0",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite --host",
8
+ "build": "vite build",
9
+ "preview": "vite preview --host"
10
+ },
11
+ "dependencies": {
12
+ "react": "^18.3.1",
13
+ "react-dom": "^18.3.1"
14
+ },
15
+ "devDependencies": {
16
+ "@vitejs/plugin-react": "^4.3.4",
17
+ "autoprefixer": "^10.4.20",
18
+ "postcss": "^8.4.49",
19
+ "tailwindcss": "^3.4.17",
20
+ "vite": "^6.0.7"
21
+ }
22
+ }
frontend/postcss.config.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ export default {
2
+ plugins: {
3
+ tailwindcss: {},
4
+ autoprefixer: {},
5
+ },
6
+ };
frontend/src/App.jsx ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useEffect, useState } from "react";
2
+
3
+ // In dev, requests go to "/api/*" and Vite proxies them to the backend.
4
+ // In production, set VITE_API_URL to the deployed backend origin.
5
+ const API_BASE = import.meta.env.VITE_API_URL || "/api";
6
+
7
+ export default function App() {
8
+ const [status, setStatus] = useState("loading");
9
+ const [error, setError] = useState(null);
10
+
11
+ useEffect(() => {
12
+ let cancelled = false;
13
+
14
+ async function checkHealth() {
15
+ try {
16
+ const res = await fetch(`${API_BASE}/health`);
17
+ if (!res.ok) throw new Error(`HTTP ${res.status}`);
18
+ const data = await res.json();
19
+ if (!cancelled) {
20
+ setStatus(data.status);
21
+ setError(null);
22
+ }
23
+ } catch (err) {
24
+ if (!cancelled) {
25
+ setStatus("unreachable");
26
+ setError(err.message);
27
+ }
28
+ }
29
+ }
30
+
31
+ checkHealth();
32
+ return () => {
33
+ cancelled = true;
34
+ };
35
+ }, []);
36
+
37
+ const ok = status === "ok";
38
+
39
+ return (
40
+ <div className="min-h-screen bg-slate-50 text-slate-800 flex items-center justify-center p-6">
41
+ <div className="w-full max-w-md rounded-2xl bg-white shadow-lg ring-1 ring-slate-200 p-8">
42
+ <h1 className="text-2xl font-bold tracking-tight">DocuAsk</h1>
43
+ <p className="mt-1 text-sm text-slate-500">
44
+ Full-stack document Q&amp;A — skeleton
45
+ </p>
46
+
47
+ <div className="mt-6 flex items-center gap-3 rounded-lg bg-slate-50 px-4 py-3 ring-1 ring-slate-200">
48
+ <span
49
+ className={`inline-block h-3 w-3 rounded-full ${
50
+ status === "loading"
51
+ ? "bg-amber-400 animate-pulse"
52
+ : ok
53
+ ? "bg-emerald-500"
54
+ : "bg-red-500"
55
+ }`}
56
+ aria-hidden="true"
57
+ />
58
+ <span className="font-medium">
59
+ API status:{" "}
60
+ <span className={ok ? "text-emerald-600" : "text-slate-700"}>
61
+ {status}
62
+ </span>
63
+ </span>
64
+ </div>
65
+
66
+ {error && (
67
+ <p className="mt-3 text-sm text-red-600">
68
+ Could not reach the backend ({error}). Is it running?
69
+ </p>
70
+ )}
71
+ </div>
72
+ </div>
73
+ );
74
+ }
frontend/src/index.css ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
frontend/src/main.jsx ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ import React from "react";
2
+ import ReactDOM from "react-dom/client";
3
+ import App from "./App.jsx";
4
+ import "./index.css";
5
+
6
+ ReactDOM.createRoot(document.getElementById("root")).render(
7
+ <React.StrictMode>
8
+ <App />
9
+ </React.StrictMode>
10
+ );
frontend/tailwind.config.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ /** @type {import('tailwindcss').Config} */
2
+ export default {
3
+ content: ["./index.html", "./src/**/*.{js,jsx,ts,tsx}"],
4
+ theme: {
5
+ extend: {},
6
+ },
7
+ plugins: [],
8
+ };
frontend/vite.config.js ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { defineConfig } from "vite";
2
+ import react from "@vitejs/plugin-react";
3
+
4
+ // The backend base URL is injected at build time via VITE_API_URL.
5
+ // In dev, requests to /api are proxied to the FastAPI server so the browser
6
+ // never hits a cross-origin URL locally.
7
+ export default defineConfig({
8
+ plugins: [react()],
9
+ server: {
10
+ port: 5173,
11
+ proxy: {
12
+ "/api": {
13
+ target: process.env.VITE_API_URL || "http://localhost:8000",
14
+ changeOrigin: true,
15
+ rewrite: (path) => path.replace(/^\/api/, ""),
16
+ },
17
+ },
18
+ },
19
+ });