diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f2102c3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,63 @@ +name: CI + +on: + push: + branches: [ master, main ] + pull_request: + branches: [ master, main ] +jobs: + test: + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:16 + env: + POSTGRES_USER: xmlsvc + POSTGRES_PASSWORD: xmlsvc + POSTGRES_DB: xmlsvc + ports: ["5432:5432"] + options: >- + --health-cmd="pg_isready -U xmlsvc" + --health-interval=10s + --health-timeout=5s + --health-retries=5 + + minio: + image: bitnami/minio:latest + ports: ["9000:9000"] + env: + MINIO_ROOT_USER: minioadmin + MINIO_ROOT_PASSWORD: minioadmin + MINIO_DEFAULT_BUCKETS: xmlsvc + options: >- + --health-cmd="curl -fsS http://localhost:9000/minio/health/ready || exit 1" + --health-interval=5s + --health-timeout=5s + --health-retries=30 + + env: + PYTHONPATH: ${{ github.workspace }} # <— ключевой фикс + DATABASE_URL: postgresql+psycopg://xmlsvc:xmlsvc@localhost:5432/xmlsvc + S3_ENDPOINT: http://localhost:9000 + S3_BUCKET: xmlsvc + S3_ACCESS_KEY: minioadmin + S3_SECRET_KEY: minioadmin + + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Install deps + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest + + - name: Alembic upgrade + run: python -m alembic upgrade head + + - name: Run tests + run: pytest -q diff --git a/.gitignore b/.gitignore index 5fdb306..b134cd3 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,10 @@ venv/ dist/ *.egg-info/ +# frontend build artifacts +frontend/node_modules/ +frontend/dist/ + # Local data data/ uploads/ diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..c3b3b6f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "python.defaultInterpreterPath": "${workspaceFolder}\\.venv\\Scripts\\python.exe", + "python.analysis.extraPaths": ["app"], + "python.analysis.typeCheckingMode": "basic" +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json index b2b2454..a1660b3 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -32,6 +32,41 @@ "group": "build", "presentation": { "reveal": "always", "panel": "dedicated" }, "problemMatcher": [] - } + }, + { + "label": "UI Build (vite prod)", + "type": "shell", + "options": { "cwd": "${workspaceFolder}/frontend" }, + "command": "npm run build", + "group": "build", + "presentation": { "reveal": "always", "panel": "dedicated" }, + "problemMatcher": [] + }, + { + "label": "UI Deploy to backend static", + "type": "shell", + "command": "powershell -NoProfile -ExecutionPolicy Bypass -Command \"mkdir ${workspaceFolder}\\app\\static -ea 0 | Out-Null; robocopy ${workspaceFolder}\\frontend\\dist ${workspaceFolder}\\app\\static /MIR | Out-Null; docker compose restart app\"", + "group": "build", + "presentation": { "reveal": "always", "panel": "dedicated" }, + "problemMatcher": [] + }, + { + "label": "Dev: Build+Deploy UI", + "type": "shell", + "command": "echo Building and deploying UI to backend static...", + "dependsOn": ["UI Build (vite prod)", "UI Deploy to backend static"], + "dependsOrder": "sequence", + "group": "build", + "presentation": { "reveal": "always", "panel": "dedicated" }, + "problemMatcher": [] + }, + { + "label": "Pytest (container)", + "type": "shell", + "command": "docker compose exec -e DATABASE_URL=postgresql+psycopg://xmlsvc:xmlsvc@postgres:5432/xmlsvc -e S3_ENDPOINT=http://minio:9000 -e S3_BUCKET=xmlsvc -e S3_ACCESS_KEY=minioadmin -e S3_SECRET_KEY=minioadmin app pytest -q", + "group": "test", + "presentation": { "reveal": "always", "panel": "dedicated" }, + "problemMatcher": [] + }, ] } diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..9171193 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,30 @@ + +## 📄 CODE_OF_CONDUCT.md + +# Кодекс поведения участников + +Мы придерживаемся [Contributor Covenant](https://www.contributor-covenant.org/) версии 2.1. + +## Наши обязательства + +Мы, как участники и мейнтейнеры, обязуемся создать дружелюбную и безопасную среду для всех, независимо от возраста, пола, опыта, национальности, религии или политических взглядов. + +## Ожидаемое поведение + +- Демонстрировать уважение к другим участникам +- Принимать конструктивную критику +- Использовать корректный и профессиональный язык +- Поддерживать атмосферу сотрудничества + +## Недопустимое поведение + +- Оскорбления, унижения, личные нападки +- Дискриминация и домогательства +- Публичное или личное преследование +- Публикация личной информации без согласия + +## Применение + +Нарушения кодекса поведения могут привести к предупреждению или удалению из сообщества. + +Контакты для вопросов и жалоб: [открыть issue](https://github.com/knoff/construction_xml/issues) или связаться с мейнтейнером напрямую. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..555a26c --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,55 @@ +# Вклад в проект + +Спасибо, что хотите помочь развитию **Construction XML Service**! + +## Как начать + +1. Форкните репозиторий и создайте ветку для вашей задачи: + ```bash + git checkout -b feature/my-feature + ``` + +2. Поднимите окружение локально: + + ```bash + docker compose up -d + ``` + + Сервис поднимется вместе с PostgreSQL и MinIO. + +3. Выполните миграции: + + ```bash + docker compose exec app alembic upgrade head + ``` + +4. Запустите тесты: + + ```bash + docker compose exec app pytest -q + ``` + +## Стиль кода + +* Python 3.11, придерживаемся PEP8. +* Используем `black` для форматирования. +* Типизация: `mypy` и аннотации обязательны. +* Коммиты оформляем в стиле: + + ``` + A2-1: Краткое описание задачи + ``` + +## Pull Request + +* Перед PR убедитесь, что тесты проходят (`pytest`) и код отформатирован. +* PR должен ссылаться на соответствующий Issue или Milestone. +* В PR описать: + + * Что сделано + * Как протестировать + * Замечания или TODO + +## Вопросы + +Если есть вопросы — используйте [Issues](https://github.com/knoff/construction_xml/issues). \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index a513f09..eeee253 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,14 @@ -# Minimal Dockerfile for the FastAPI app (Windows-friendly build) +### --- Stage 1: build frontend (React/Vite) --- +FROM node:20-alpine AS frontend-build +WORKDIR /frontend +# Copy only frontend to leverage Docker cache +COPY frontend/package.json frontend/package-lock.json ./ +RUN npm ci --no-audit --no-fund +COPY frontend/ ./ +# Build production assets (bundled, no CDN) +RUN npm run build + +### --- Stage 2: backend (FastAPI) --- FROM python:3.11-slim # Avoid interactive tzdata prompts, speed up pip @@ -17,5 +27,9 @@ RUN pip install -r requirements.txt # Copy app sources COPY app ./app +# Copy built frontend +# Result of Vite build goes to /frontend/dist; we place it under app/static +COPY --from=frontend-build /frontend/dist /app/app/static + EXPOSE 8000 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a85d742 --- /dev/null +++ b/LICENSE @@ -0,0 +1,16 @@ +Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) + +Это произведение лицензируется на условиях лицензии Creative Commons +«Attribution-NonCommercial» (Атрибуция — Некоммерческое использование) версии 4.0. + +Вы можете: +- Делиться — копировать и распространять материал на любом носителе и в любом формате. +- Адаптировать — ремикшировать, трансформировать и брать за основу этот материал. + +На следующих условиях: +- Атрибуция — необходимо указывать авторство, предоставлять ссылку на лицензию и + указывать, были ли внесены изменения. +- Некоммерческое использование — запрещено использовать материал в коммерческих целях. + +Для получения полного текста лицензии посетите: +https://creativecommons.org/licenses/by-nc/4.0/ diff --git a/README.md b/README.md index 6b52d2a..f78eee8 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,43 @@ -# Минстрой XML Service (Python/FastAPI) — MVP-скелет - -**Назначение**: сервис для формирования и увязки документов (Задание, Пояснительная записка и др.) на базе **CDM** (канонической модели), с загрузкой правил, валидациями и работой с файлами. - -## Быстрый старт (локально) - -```bash -python -m venv .venv && source .venv/bin/activate -pip install -r requirements.txt -uvicorn app.main:app --reload -``` - -Откройте: http://127.0.0.1:8000/docs - -## Что уже есть -- FastAPI-приложение, модульные роутеры. -- **CDM** (минимальный фрагмент) и простое создание черновиков документов. -- Загрузка файлов с расчётом **SHA-256** и контролем размера (порог задаётся в env). -- Загрузка правил-хэлперов (YAML), хранение их в файловой системе, базовая проверка структуры. -- Заготовки для: реестра XSD, печатных шаблонов, верификации откреплённых подписей. - -## Структура -``` -app/ - api/routes/ # эндпоинты - core/ # конфиг, utils - models/ # CDM-модели - services/ # логика: файлы, правила, подписи, схемы - templates/ # шаблоны печати - rules/ # примеры правил (YAML) -tests/ -``` - -## Дальше -- Подключить реальные XSD, автогенерацию JSON Schema форм. -- Реализовать движок правил (JSONLogic) и кросс-док проверки. -- Добавить генерацию PDF/DOCX из Jinja2/docxtpl. -- Подключить верификацию .sig и (опционально) подписание. \ No newline at end of file +# Construction XML Service + +Веб-сервис для работы с нормативными XML-схемами Минстроя (XSD/XSL) +при проектировании и экспертизе объектов недвижимости. +Система разрабатывается для использования любыми участниками процесса проектирования, экспертизы и строительства объектов недвижимости. + +## Возможности +Суть проекта в реализации сквозного заполнения документов с использованием ранее внесенных данных с формированием единого пространства данных для объекта недвижимости. + +Проект основывается на опубликованных схемах XSD Минстроя для различных форм документов. +Фактически мы повторяем функционал отдельных сервисов по заполнению отдельных документов, но в общем интерфейсе, едином пространстве и, как следствие, с возможностью переиспользования данных. +В процессе заполнения любого документа формируется предстваление объекта CDM данные из которого подтягиваются в другие документы по этому же объекту. +В системе используются дополнительные средства контроля данных, проверки и хелперы, которые позволяют сократить число операций, необхедимых для получения полного комплекта документов по объекту, выявлять ошибки на более ранних этапах и проводить перекреную проверку данных в разных документах. + +## Milestones +Разработка ведётся по [Milestones](https://github.com/knoff/construction_xml/milestones): + +- **A1** — Реестр XSD-схем и базовый интерфейс. +- **A2** — Генерация форм из XSD. +- **A3** — Правила и хелперы (логика сверх XSD). +- **A4** — Шаблоны печатных форм. +- **B1–B5** — Работа с файлами, ЭП, интеграции, доступы. + +## Технологии +- Backend: Python 3.11, FastAPI +- ORM: SQLAlchemy, Alembic +- Хранение файлов: MinIO (S3-совместимый) +- DB: PostgreSQL +- CI/CD: GitHub Actions +- Docker Compose для локальной разработки + +## Ограничение ответственности +Система находится в активной разработке, авторы не несут ответственности за возможные ошибки в формируемых документах и их последствия. +Система не передает вводимые данные на внешние сервера и в сторонние сервисы, однако авторы не несут ответственность за возможные нарушения Закона о защите персональных данных при использовании системы. Ответственность за выполнение требований законодательства лежит на операторе персональных данных, осуществляющем их обработку в процессе использования системы. +Напоминаем всем участникам процесса, что само формирование документов на основе схем Минстроя является обработкой персональных данных и требует соблюдения требований законодательства. + +## Участие +Pull-requests приветствуются. +Для предложений и багов используйте [Issues](https://github.com/knoff/construction_xml/issues). + +## Лицензия +Проект распространяется под лицензией [CC-BY-NC 4.0](LICENSE). +⚠️ **Коммерческое использование запрещено.** diff --git a/STRUCTURE.md b/STRUCTURE.md new file mode 100644 index 0000000..8b64fe5 --- /dev/null +++ b/STRUCTURE.md @@ -0,0 +1,77 @@ +# STRUCTURE.md — слепок структуры репозитория (PR #1 `feature/xsd-registry-form`) + +Этот файл — «точка входа»: содержит дерево каталогов и назначение каждого файла. Поддерживаем его в актуальном состоянии при любом изменении структуры. + +> Базовая идея сервиса: FastAPI-приложение, хранение метаданных в PostgreSQL (SQLAlchemy/Alembic), файлов — в MinIO (S3), интерфейсы для загрузки/просмотра XSD и справочника типов схем. + +--- + +## Корень репозитория + +- `/README.md` — обзор проекта, цели и майлстоуны A1–A4/B1–B5 (основано на содержимом файла). +- `/LICENSE` — лицензия CC-BY-NC 4.0 (основано на содержимом файла). +- `/requirements.txt` — зависимости Python (FastAPI, SQLAlchemy, Alembic, lxml, Jinja2 и др.) (основано на содержимом файла). +- `/.env.example` — пример переменных окружения (порты, параметры Postgres/MinIO, S3_BUCKET и т. д.) (основано на содержимом файла). +- `/docker-compose.yml` — локальная инфраструктура: сервисы `app`, `postgres`, `minio`; проброс портов; переменные окружения для S3 (основано на содержимом файла). +- `/alembic.ini` → **в PR меняется** на `script_location = migrations` (т. е. каталог миграций переезжает в `migrations/`) (основано на диффе PR). +- `/init-minio.ps1` — утилита для инициализации MinIO и создания бакета из Windows/PowerShell (основано на содержимом файла). +- `/.github/workflows/ci.yml` — **новый в PR** CI: поднимает Postgres и MinIO, выполняет Alembic upgrade, запускает pytest (основано на диффе PR). +- `/.vscode/tasks.json` — задачи для `docker compose`, Alembic upgrade/downgrade, pytest (основано на содержимом файла). +- `/.vscode/settings.json` — **новый/обновлённый в PR** настройки Python для рабочей папки (основано на диффе PR). + +--- + +## Приложение (`/app`) + +- `/app/main.py` — создание FastAPI-приложения и регистрация роутеров: `health`, `schemas`, `schema-types` (новый в PR), `documents`, `files`, `rules`, `sign` (основано на импортах и диффе PR). +- `/app/db.py` — инициализация SQLAlchemy (`engine`, `SessionLocal`, `Base`) + **в PR добавляется** `get_db()` (зависимость FastAPI для сессии БД) (основано на диффе PR). + +### Конфигурация и модели + +- `/app/core/config.py` — pydantic-настройки приложения: лимиты загрузки, каталоги хранения и пр. (основано на содержимом файла). +- `/app/models/cdm.py` — pydantic-модели CDM (Project/Document/…); используются API `/documents` для MVP (основано на содержимом файла и импортах `app/api/routes/documents.py`). +- `/app/models_sqlalchemy.py` — ORM-модели: + - **в PR добавлено**: `SchemaType` (справочник типов схем) и `Schema` (метаданные XSD, путь к файлу в S3/MinIO, связь с `SchemaType`); + - уже были: `DocumentRow`, `FileRow`, `RuleRow` (основано на диффе PR). + +### Роуты API (`/app/api/routes`) + +- `/app/api/routes/health.py` — `GET /health` (простой статус) (основано на содержимом файла). +- `/app/api/routes/schemas.py` — **переписан в PR**: теперь префикс `"/schemas"` и HTML-интерфейс (Jinja2), загрузка `.xsd` с проверкой размера, сохранение файла в MinIO (`save_file_minio`), парсинг метаданных (`schema_parser`), классификация (`schema_classifier`), запись в БД (`Schema`), просмотр карточки, удаление с очисткой файла в MinIO (основано на диффе PR). +- `/app/api/routes/schema_types.py` — **новый в PR**: CRUD HTML-форм для справочника типов схем (листинг, создание/редактирование/удаление) (основано на диффе PR). +- `/app/api/routes/documents.py` — MVP-эндпоинты `/documents` с in-memory хранилищем CDM-документов (основано на содержимом файла). +- `/app/api/routes/files.py` — загрузка произвольных файлов, проверка размера против `MAX_UPLOAD_MB`, сохранение (локальный стор) (основано на содержимом файла). +- `/app/api/routes/rules.py` — загрузка YAML-правил, в PR меняется поле модели с `validate` на `condition` (основано на диффе PR). +- `/app/api/routes/sign.py` — проверка detached-подписи (пока заглушка через `app.services.signatures`) (основано на содержимом файла). + +### Сервисы (`/app/services`) + +- `/app/services/schema_parser.py` — **новый в PR**: извлечение `name/version/namespace/description` из XSD; терпимый парсер (`lxml`) и эвристика извлечения версии из имени файла (основано на диффе PR). +- `/app/services/schema_classifier.py` — **новый в PR**: классификация загруженной схемы: сначала regex-паттерны из БД `SchemaType.filename_pattern`, затем устойчивые эвристики по префиксу имени (основано на диффе PR). +- `/app/services/files.py` — операции сохранения загружаемых файлов в локальное хранилище (используется `/files/upload`) (основано на содержимом файла). +- `/app/services/rules.py` — валидация и сохранение YAML-правил в `app/rules/*.yaml`; модель `Rule` (в PR поле `condition`) (основано на содержимом файла и диффе PR). +- `/app/services/signatures.py` — заглушка для проверки ЭП (структура ответа, пометки «не реализовано в MVP») (основано на содержимом файла). +- `/app/services/xsd_registry.py` — **legacy**: файловый «реестр» `data/schemas` (не используется после PR, к удалению после миграции) (основано на содержимом файла и замене импорта в PR). + +### Хранилище и шаблоны + +- `/app/storage/__init__.py` (или `/app/storage.py`) — **новый в PR**: адаптер MinIO с функциями `save_file_minio` / `delete_file_minio`, используется роутером `schemas` при загрузке/удалении XSD (основано на импорте в диффе PR). +- `/app/web/templates/__init__.py` — **новый в PR**: инициализация Jinja2 (`templates`), используется в `schemas.py` и `schema_types.py` (основано на импортах в диффе PR). +- `/app/web/templates/schemas/list.html` — **новый в PR**: HTML-список загруженных схем (основано на использовании в диффе PR). +- `/app/web/templates/schemas/upload.html` — **новый в PR**: HTML-форма загрузки XSD (основано на использовании в диффе PR). +- `/app/web/templates/schemas/view.html` — **новый в PR**: HTML-карточка схемы (основано на использовании в диффе PR). +- `/app/web/templates/schema_types/list.html` — **новый в PR**: HTML-список типов (основано на использовании в диффе PR). +- `/app/web/templates/schema_types/form.html` — **новый в PR**: HTML-форма создания/редактирования типа (основано на использовании в диффе PR). + +--- + +## Миграции БД + +- **До PR**: каталог `/alembic/` (в т. ч. `/alembic/env.py`, `/alembic/versions/0001_init.py`) — начальные таблицы `documents`, `files`, `rules` (основано на содержимом файлов). +- **В PR**: `alembic.ini` указывает `script_location = migrations` — планируется перенос миграций в `/migrations/` (после мержа привести структуру в соответствие и перенести версии). + +--- + +## Прочее + +- `/app/rules/example_rules.yaml` — пример файла правил для разработки/тестов (основано на содержимом файла). diff --git a/alembic.ini b/alembic.ini index d2f4380..a678392 100644 --- a/alembic.ini +++ b/alembic.ini @@ -1,5 +1,5 @@ [alembic] -script_location = alembic +script_location = migrations sqlalchemy.url = %(DATABASE_URL)s [loggers] @@ -19,11 +19,13 @@ handlers = console level = WARN handlers = console qualname = sqlalchemy.engine +propagate = 0 [logger_alembic] level = INFO handlers = console qualname = alembic +propagate = 0 [handler_console] class = StreamHandler diff --git a/app/api/routes/schema_types.py b/app/api/routes/schema_types.py new file mode 100644 index 0000000..6386a7e --- /dev/null +++ b/app/api/routes/schema_types.py @@ -0,0 +1,80 @@ +from datetime import datetime +from fastapi import APIRouter, Depends, HTTPException, Request, Form +from fastapi.responses import HTMLResponse, RedirectResponse +from fastapi.templating import Jinja2Templates +from sqlalchemy.orm import Session + +from app.db import get_db +from app.models_sqlalchemy import SchemaType + +router = APIRouter(prefix="/schema-types", tags=["schema-types"]) +from app.web.templates import templates + +@router.get("/", response_class=HTMLResponse) +def list_types(request: Request, db: Session = Depends(get_db)): + items = db.query(SchemaType).order_by(SchemaType.id.asc()).all() + flash = request.query_params.get("msg") + return templates.TemplateResponse("schema_types/list.html", {"request": request, "items": items, "flash": flash}) + +@router.get("/new", response_class=HTMLResponse) +def new_form(request: Request): + return templates.TemplateResponse("schema_types/form.html", {"request": request, "item": None}) + +@router.post("/new") +def create_type( + code: str = Form(...), + title: str = Form(...), + description: str = Form(""), + filename_pattern: str = Form(""), + db: Session = Depends(get_db), +): + if db.query(SchemaType).filter_by(code=code).first(): + raise HTTPException(status_code=400, detail="Тип с таким code уже существует") + now = datetime.utcnow() + st = SchemaType( + code=code.strip(), + title=title.strip(), + description=description.strip() or None, + filename_pattern=filename_pattern.strip() or None, + created_at=now, + updated_at=now, + ) + db.add(st) + db.commit() + return RedirectResponse("/schema-types?msg=Тип%20создан", status_code=303) + +@router.get("/{type_id}", response_class=HTMLResponse) +def edit_form(type_id: int, request: Request, db: Session = Depends(get_db)): + st = db.get(SchemaType, type_id) + if not st: + raise HTTPException(status_code=404, detail="Тип не найден") + return templates.TemplateResponse("schema_types/form.html", {"request": request, "item": st}) + +@router.post("/{type_id}/save") +def update_type( + type_id: int, + code: str = Form(...), + title: str = Form(...), + description: str = Form(""), + filename_pattern: str = Form(""), + db: Session = Depends(get_db), +): + st = db.get(SchemaType, type_id) + if not st: + raise HTTPException(status_code=404, detail="Тип не найден") + st.code = code.strip() + st.title = title.strip() + st.description = description.strip() or None + st.filename_pattern = filename_pattern.strip() or None + st.updated_at = datetime.utcnow() + db.commit() + return RedirectResponse("/schema-types?msg=Тип%20обновлён", status_code=303) + +@router.post("/{type_id}/delete") +def delete_type(type_id: int, db: Session = Depends(get_db)): + st = db.get(SchemaType, type_id) + if not st: + raise HTTPException(status_code=404, detail="Тип не найден") + db.delete(st) + db.commit() + return RedirectResponse("/schema-types?msg=Тип%20удалён", status_code=303) diff --git a/app/api/routes/schemas.py b/app/api/routes/schemas.py index a09fef4..0609e0c 100644 --- a/app/api/routes/schemas.py +++ b/app/api/routes/schemas.py @@ -1,14 +1,102 @@ -from fastapi import APIRouter, UploadFile, File -from app.services.xsd_registry import list_schemas, save_schema_file +from datetime import datetime +import os +from typing import Any, Dict, List, Optional +from fastapi import APIRouter, UploadFile, File, Depends, HTTPException +from sqlalchemy.orm import Session +from app.db import get_db +from app.models_sqlalchemy import Schema, SchemaType +from app.services import schema_parser, schema_classifier +from app.storage import save_file_minio, delete_file_minio -router = APIRouter() -@router.get("/schemas") -def get_schemas(): - return list_schemas() +router = APIRouter(prefix="/schemas", tags=["schemas"]) +MAX_UPLOAD_MB = int(os.getenv("MAX_UPLOAD_MB", "80")) -@router.post("/schemas/upload") -async def upload_schema(file: UploadFile = File(...)): +def _row_to_dict(s: Schema) -> Dict[str, Any]: + return { + "id": s.id, + "name": s.name, + "version": s.version, + "namespace": s.namespace, + "description": s.description, + "file_path": s.file_path, + "created_at": s.created_at.isoformat() if getattr(s, "created_at", None) else None, + "type": { + "id": s.type.id, + "code": s.type.code, + "title": s.type.title, + } if getattr(s, "type", None) else None, + } + + +@router.get("/") +def list_schemas(db: Session = Depends(get_db)) -> List[Dict[str, Any]]: + items = db.query(Schema).order_by(Schema.created_at.desc()).all() + return [_row_to_dict(s) for s in items] + +@router.post("/upload") +async def upload_schema(file: UploadFile = File(...), db: Session = Depends(get_db)) -> Dict[str, Any]: + # проверки + if not (file.filename or "").lower().endswith(".xsd"): + raise HTTPException(status_code=400, detail="Ожидается файл .xsd") content = await file.read() - saved = save_schema_file(file.filename, content) - return saved \ No newline at end of file + if len(content) > MAX_UPLOAD_MB * 1024 * 1024: + raise HTTPException(status_code=413, detail=f"Файл превышает {MAX_UPLOAD_MB} МБ") + + # сохраняем в MinIO + key = save_file_minio("schemas", file.filename, content) + + # парсим метаданные из XSD + info = schema_parser.extract_metadata(content, filename=file.filename) + matched = schema_classifier.classify(file.filename, content, db=db) + + display_name = info.get("name") or file.filename + description = info.get("description") + type_id = None + + if matched: + st = db.query(SchemaType).filter(SchemaType.code == matched.code).first() + if st: + type_id = st.id + display_name = st.title or display_name + if st.description: + description = st.description + + schema = Schema( + name=display_name, + version=info.get("version"), + namespace=info.get("namespace"), + description=description, + file_path=key, + created_at=datetime.utcnow(), + type_id=type_id, + ) + db.add(schema) + db.commit() + db.refresh(schema) + + return {"saved": True, "schema": _row_to_dict(schema)} + + +@router.get("/{schema_id}") +def view_schema(schema_id: int, db: Session = Depends(get_db)) -> Dict[str, Any]: + schema = db.get(Schema, schema_id) + if not schema: + raise HTTPException(status_code=404, detail="Схема не найдена") + return _row_to_dict(schema) + + +@router.post("/{schema_id}/delete") +def delete_schema(schema_id: int, db: Session = Depends(get_db)) -> Dict[str, Any]: + schema = db.get(Schema, schema_id) + if not schema: + raise HTTPException(status_code=404, detail="Схема не найдена") + + # удалить файл в MinIO + if schema.file_path: + delete_file_minio(schema.file_path) + + db.delete(schema) + db.commit() + + return {"deleted": True, "id": schema_id} diff --git a/app/db.py b/app/db.py index e8f6789..b00298e 100644 --- a/app/db.py +++ b/app/db.py @@ -1,5 +1,5 @@ -from sqlalchemy import create_engine from sqlalchemy.orm import DeclarativeBase, sessionmaker +from sqlalchemy import create_engine import os DATABASE_URL = os.getenv("DATABASE_URL", "postgresql+psycopg://xmlsvc:xmlsvc@localhost:15433/xmlsvc") @@ -9,3 +9,10 @@ class Base(DeclarativeBase): pass + +def get_db(): + db = SessionLocal() + try: + yield db + finally: + db.close() \ No newline at end of file diff --git a/app/main.py b/app/main.py index 61e11ef..c12c2cb 100644 --- a/app/main.py +++ b/app/main.py @@ -1,6 +1,10 @@ -from fastapi import FastAPI +from fastapi import FastAPI, HTTPException, UploadFile, File, APIRouter +from fastapi.staticfiles import StaticFiles +from starlette.responses import FileResponse, JSONResponse +from pathlib import Path from app.api.routes.health import router as health_router from app.api.routes.schemas import router as schemas_router +from app.api.routes.schema_types import router as schema_types_router from app.api.routes.documents import router as documents_router from app.api.routes.files import router as files_router from app.api.routes.rules import router as rules_router @@ -8,9 +12,50 @@ app = FastAPI(title="Минстрой XML Service (MVP)") -app.include_router(health_router, tags=["system"]) -app.include_router(schemas_router, tags=["schemas"]) -app.include_router(documents_router, tags=["documents"]) -app.include_router(files_router, tags=["files"]) -app.include_router(rules_router, tags=["rules"]) -app.include_router(sign_router, tags=["sign"]) \ No newline at end of file +app.include_router(health_router, tags=["system"], prefix="/api") +app.include_router(schemas_router, tags=["schemas"], prefix="/api") +app.include_router(schema_types_router, tags=["schema-types"], prefix="/api") +app.include_router(documents_router, tags=["documents"], prefix="/api") +app.include_router(files_router, tags=["files"], prefix="/api") +app.include_router(rules_router, tags=["rules"], prefix="/api") +app.include_router(sign_router, tags=["sign"], prefix="/api") + +# --- SPA & API separation --- +BASE_DIR = Path(__file__).resolve().parent +SPA_DIR = BASE_DIR / "static" + +if SPA_DIR.is_dir(): + app.mount("/ui", StaticFiles(directory=SPA_DIR, html=True), name="ui") + # опционально оставляем прямой доступ к статике + app.mount("/static", StaticFiles(directory=SPA_DIR), name="static") +''' +# 1) JSON API под /api/* (простой роутер для фронта) +api = APIRouter(prefix="/api", tags=["api"]) +try: + # используем существующие сервисы реестра + from app.services.xsd_registry import list_schemas, save_schema_file # type: ignore +except Exception: + list_schemas = None + save_schema_file = None + +@api.get("/schemas") +def api_schemas_list(): + if not callable(list_schemas): + raise HTTPException(500, "list_schemas() is unavailable") + return JSONResponse(list_schemas()) + +@api.post("/schemas/upload") +async def api_schemas_upload(file: UploadFile = File(...)): + if not callable(save_schema_file): + raise HTTPException(500, "save_schema_file() is unavailable") + return JSONResponse(save_schema_file(file)) + +app.include_router(api) + +# 2) SPA раздаём из /ui (без перехвата /api/* и прочих серверных путей) +if SPA_DIR.is_dir(): + # html=True включает fallback на index.html только в префиксе /ui/* + app.mount("/ui", StaticFiles(directory=SPA_DIR, html=True), name="ui") + # при желании оставить прямой доступ к ассетам: + app.mount("/static", StaticFiles(directory=SPA_DIR), name="static") +''' \ No newline at end of file diff --git a/app/models_sqlalchemy.py b/app/models_sqlalchemy.py index 7eb9b65..6e3e1ec 100644 --- a/app/models_sqlalchemy.py +++ b/app/models_sqlalchemy.py @@ -1,31 +1,69 @@ -from sqlalchemy import String, Integer, JSON, LargeBinary, ForeignKey, DateTime, func +from __future__ import annotations +from datetime import datetime +from typing import Optional + +from sqlalchemy import String, Integer, JSON, DateTime, ForeignKey, UniqueConstraint from sqlalchemy.orm import Mapped, mapped_column, relationship + from app.db import Base +class SchemaType(Base): + __tablename__ = "schema_types" + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) + code: Mapped[str] = mapped_column(String(64), unique=True, index=True) + title: Mapped[str] = mapped_column(String(255)) + description: Mapped[Optional[str]] = mapped_column(String, nullable=True) + filename_pattern: Mapped[Optional[str]] = mapped_column(String, nullable=True) + created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=datetime.utcnow) + updated_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=datetime.utcnow) + + __table_args__ = ( + UniqueConstraint("code", name="uq_schema_types_code"), + ) + class DocumentRow(Base): __tablename__ = "documents" + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) doc_uid: Mapped[str] = mapped_column(String(64), unique=True, index=True) cdm: Mapped[dict] = mapped_column(JSON) - schema_id: Mapped[str | None] = mapped_column(String(64), nullable=True) - schema_version: Mapped[str | None] = mapped_column(String(32), nullable=True) - created_at: Mapped = mapped_column(DateTime(timezone=True), server_default=func.now()) - updated_at: Mapped = mapped_column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) + schema_id: Mapped[Optional[str]] = mapped_column(String(64), nullable=True) + schema_version: Mapped[Optional[str]] = mapped_column(String(32), nullable=True) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True)) + updated_at: Mapped[datetime] = mapped_column(DateTime(timezone=True)) + class FileRow(Base): __tablename__ = "files" + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) filename: Mapped[str] = mapped_column(String(255)) sha256: Mapped[str] = mapped_column(String(64), index=True) size: Mapped[int] = mapped_column(Integer) - mime: Mapped[str | None] = mapped_column(String(128), nullable=True) - meta: Mapped[dict | None] = mapped_column(JSON, nullable=True) - created_at: Mapped = mapped_column(DateTime(timezone=True), server_default=func.now()) + mime: Mapped[Optional[str]] = mapped_column(String(128), nullable=True) + meta: Mapped[Optional[dict]] = mapped_column(JSON, nullable=True) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True)) class RuleRow(Base): __tablename__ = "rules" + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) rule_id: Mapped[str] = mapped_column(String(128), unique=True, index=True) content: Mapped[dict] = mapped_column(JSON) - version: Mapped[str | None] = mapped_column(String(32), nullable=True) - created_at: Mapped = mapped_column(DateTime(timezone=True), server_default=func.now()) + version: Mapped[Optional[str]] = mapped_column(String(32), nullable=True) + created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True)) + +class Schema(Base): + __tablename__ = "schemas" + + id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) + name: Mapped[str] = mapped_column(String, nullable=False) + version: Mapped[Optional[str]] = mapped_column(String, nullable=True) + namespace: Mapped[Optional[str]] = mapped_column(String, nullable=True) + description: Mapped[Optional[str]] = mapped_column(String, nullable=True) + file_path: Mapped[str] = mapped_column(String, nullable=False) + created_at: Mapped[datetime] = mapped_column(DateTime, nullable=False, default=datetime.utcnow) + + # Новое: связь с типом схемы + type_id: Mapped[Optional[int]] = mapped_column(ForeignKey("schema_types.id"), nullable=True) + type: Mapped[Optional[SchemaType]] = relationship("SchemaType", lazy="joined") \ No newline at end of file diff --git a/app/rules/example_rules.yaml b/app/rules/example_rules.yaml index 8392834..8ca624f 100644 --- a/app/rules/example_rules.yaml +++ b/app/rules/example_rules.yaml @@ -13,7 +13,7 @@ formula: "Project.object.volumeTotal * 0.6" - field: "Project.object.volumeBelow0" formula: "Project.object.volumeTotal - Project.object.volumeAbove0" - validate: + condition: - rule: "abs(Project.object.volumeAbove0 + Project.object.volumeBelow0 - Project.object.volumeTotal) <= 0.01" message: "Сумма частей должна равняться общему строительному объему" severity: "warning" diff --git a/app/services/rules.py b/app/services/rules.py index f353c8d..50cef04 100644 --- a/app/services/rules.py +++ b/app/services/rules.py @@ -10,7 +10,7 @@ class Rule(BaseModel): id: str when: str | None = None generate: List[Dict[str, Any]] | None = None - validate: List[Dict[str, Any]] | None = None + condition: List[Dict[str, Any]] | None = None severity: str | None = None version: str | None = None diff --git a/app/services/schema_classifier.py b/app/services/schema_classifier.py new file mode 100644 index 0000000..4484a3e --- /dev/null +++ b/app/services/schema_classifier.py @@ -0,0 +1,66 @@ +from __future__ import annotations +import os +import re +from dataclasses import dataclass +from typing import List, Optional +from sqlalchemy.orm import Session +from app.models_sqlalchemy import SchemaType + + +@dataclass +class SchemaTypeRule: + code: str + title: str + description: str = "" + filename_pattern: Optional[str] = None + +def db_registry(db: Session) -> List[SchemaTypeRule]: + rows = db.query(SchemaType).order_by(SchemaType.id.asc()).all() + return [ + SchemaTypeRule( + code=r.code, + title=r.title, + description=(r.description or ""), + filename_pattern=(r.filename_pattern or None), + ) + for r in rows + ] + +def classify(filename: str, content: bytes, db: Session) -> Optional[SchemaTypeRule]: + """ + 1) Сначала пытаемся сматчить regex из БД (case-insensitive). + 2) Если не получилось — применяем устойчивую эвристику по префиксу имени файла. + """ + fname = os.path.basename(filename or "") + + # 1) Regex + for rule in db_registry(db): + pat = (rule.filename_pattern or "").strip() + if not pat: + continue + try: + rx = re.compile(pat, flags=re.IGNORECASE | re.UNICODE) + except re.error: + continue + if rx.search(fname): + return rule + + # 2) Эвристика по префиксу (без регекса) + low = fname.lower() + prefix_map = { + "designassignment": "design_assignment", + "explanatorynote": "explanatory_note", + "expertconclusion": "expert_conclusion", + "examinationconclusion": "expert_conclusion", + } + for prefix, code in prefix_map.items(): + if low.startswith(prefix): + row = db.query(SchemaType).filter(SchemaType.code == code).first() + if row: + return SchemaTypeRule( + code=row.code, + title=row.title, + description=row.description or "", + filename_pattern=row.filename_pattern or None, + ) + return None diff --git a/app/services/schema_parser.py b/app/services/schema_parser.py new file mode 100644 index 0000000..e9988ed --- /dev/null +++ b/app/services/schema_parser.py @@ -0,0 +1,72 @@ +from __future__ import annotations +import re +from typing import Optional +from lxml import etree + +XS = "http://www.w3.org/2001/XMLSchema" +NS = {"xs": XS} + +def _version_from_filename(filename: Optional[str]) -> Optional[str]: + if not filename: + return None + m = re.search(r"-([0-9]{2})[-._]([0-9]{2})\.xsd$", filename, flags=re.IGNORECASE) + if m: + return f"{m.group(1)}.{m.group(2)}" + return None + +def extract_metadata(content: bytes, *, filename: Optional[str] = None) -> dict: + """ + Извлекаем базовые метаданные из XSD, устойчиво к «грязным» файлам: + - name: первый верхнеуровневый xs:element/@name (или любой xs:element) + - version: xs:attribute[@name='SchemaVersion']/@fixed (или @default), + иначе — из имени файла (*-NN-MM.xsd -> NN.MM) + - namespace: schema/@targetNamespace (если есть) + - description: ТОЛЬКО первое xs:schema/xs:annotation/xs:documentation (сжатый текст) + """ + info: dict = {} + + # Терпимый к ошибкам парсер + parser = etree.XMLParser(recover=True, resolve_entities=False, huge_tree=True) + try: + root = etree.fromstring(content, parser=parser) + except Exception: + return info + + # namespace (если вдруг есть) + ns_attr = root.get("targetNamespace") + if ns_attr: + info["namespace"] = ns_attr + + # description: только верхнеуровневый [1] + desc = None + try: + doc = root.find("./xs:annotation/xs:documentation", namespaces=NS) + if doc is not None and doc.text: + txt = " ".join(doc.text.split()) + if txt: + desc = txt + except Exception: + pass + if desc: + info["description"] = desc + + # name: сначала верхнеуровневый element, если нет — любой element + el = root.find("./xs:element", namespaces=NS) + if el is None: + el = root.find(".//xs:element", namespaces=NS) + if el is not None: + name_attr = el.get("name") + if name_attr: + info["name"] = name_attr + + # version: SchemaVersion/@fixed -> @default -> из имени файла + ver = None + attr = root.find(".//xs:attribute[@name='SchemaVersion']", namespaces=NS) + if attr is not None: + ver = attr.get("fixed") or attr.get("default") + if not ver: + ver = _version_from_filename(filename) + if ver: + info["version"] = ver + + return info diff --git a/app/static/assets/index-BflQQHQj.css b/app/static/assets/index-BflQQHQj.css new file mode 100644 index 0000000..ea656e8 --- /dev/null +++ b/app/static/assets/index-BflQQHQj.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-700:oklch(50.5% .213 27.518);--color-green-600:oklch(62.7% .194 149.214);--color-zinc-50:oklch(98.5% 0 0);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-neutral-500:oklch(55.6% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--font-weight-medium:500;--font-weight-semibold:600;--radius-2xl:1rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing)*3)}.right-0{right:calc(var(--spacing)*0)}.right-3{right:calc(var(--spacing)*3)}.left-1\/2{left:50%}.z-10{z-index:10}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.mt-6{margin-top:calc(var(--spacing)*6)}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.table{display:table}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-24{height:calc(var(--spacing)*24)}.h-px{height:1px}.max-h-80{max-height:calc(var(--spacing)*80)}.max-h-\[85vh\]{max-height:85vh}.min-h-screen{min-height:100vh}.w-8{width:calc(var(--spacing)*8)}.w-\[min\(92vw\,900px\)\]{width:min(92vw,900px)}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[92vw\]{max-width:92vw}.min-w-\[12rem\]{min-width:12rem}.min-w-\[800px\]{min-width:800px}.flex-1{flex:1}.caption-bottom{caption-side:bottom}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.cursor-pointer{cursor:pointer}.grid-cols-\[200px_1fr\]{grid-template-columns:200px 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-6{column-gap:calc(var(--spacing)*6)}.gap-y-2{row-gap:calc(var(--spacing)*2)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[var\(--radius\)\]{border-radius:var(--radius)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.bg-\[var\(--background\)\]{background-color:var(--background)}.bg-\[var\(--primary\)\]{background-color:var(--primary)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-white{background-color:var(--color-white)}.bg-zinc-50{background-color:var(--color-zinc-50)}.bg-zinc-200{background-color:var(--color-zinc-200)}.p-1{padding:calc(var(--spacing)*1)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-\[var\(--primary-foreground\)\]{color:var(--primary-foreground)}.text-green-600{color:var(--color-green-600)}.text-neutral-500{color:var(--color-neutral-500)}.text-red-700{color:var(--color-red-700)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.underline{text-decoration-line:underline}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.placeholder\:text-zinc-400::placeholder{color:var(--color-zinc-400)}@media (hover:hover){.hover\:bg-\[var\(--muted\)\]:hover{background-color:var(--muted)}.hover\:bg-zinc-50:hover{background-color:var(--color-zinc-50)}.hover\:bg-zinc-100:hover{background-color:var(--color-zinc-100)}.hover\:opacity-90:hover{opacity:.9}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-black:focus-visible{--tw-ring-color:var(--color-black)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--destructive-foreground:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--radius:.625rem;--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(14.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(14.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(98.5% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(39.6% .141 25.723);--destructive-foreground:oklch(63.7% .237 25.331);--border:oklch(26.9% 0 0);--input:oklch(26.9% 0 0);--ring:oklch(43.9% 0 0);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(26.9% 0 0);--sidebar-ring:oklch(43.9% 0 0)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false} diff --git a/app/static/assets/index-C6IcpXes.js b/app/static/assets/index-C6IcpXes.js new file mode 100644 index 0000000..600a564 --- /dev/null +++ b/app/static/assets/index-C6IcpXes.js @@ -0,0 +1,134 @@ +function qp(e,t){for(var n=0;nr[o]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const i of o)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(o){const i={};return o.integrity&&(i.integrity=o.integrity),o.referrerPolicy&&(i.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?i.credentials="include":o.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(o){if(o.ep)return;o.ep=!0;const i=n(o);fetch(o.href,i)}})();function eg(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var tg={exports:{}},Sa={},ng={exports:{}},re={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var _i=Symbol.for("react.element"),Zy=Symbol.for("react.portal"),Jy=Symbol.for("react.fragment"),qy=Symbol.for("react.strict_mode"),ew=Symbol.for("react.profiler"),tw=Symbol.for("react.provider"),nw=Symbol.for("react.context"),rw=Symbol.for("react.forward_ref"),ow=Symbol.for("react.suspense"),iw=Symbol.for("react.memo"),lw=Symbol.for("react.lazy"),Hd=Symbol.iterator;function aw(e){return e===null||typeof e!="object"?null:(e=Hd&&e[Hd]||e["@@iterator"],typeof e=="function"?e:null)}var rg={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},og=Object.assign,ig={};function mo(e,t,n){this.props=e,this.context=t,this.refs=ig,this.updater=n||rg}mo.prototype.isReactComponent={};mo.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};mo.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function lg(){}lg.prototype=mo.prototype;function tc(e,t,n){this.props=e,this.context=t,this.refs=ig,this.updater=n||rg}var nc=tc.prototype=new lg;nc.constructor=tc;og(nc,mo.prototype);nc.isPureReactComponent=!0;var Gd=Array.isArray,ag=Object.prototype.hasOwnProperty,rc={current:null},sg={key:!0,ref:!0,__self:!0,__source:!0};function ug(e,t,n){var r,o={},i=null,l=null;if(t!=null)for(r in t.ref!==void 0&&(l=t.ref),t.key!==void 0&&(i=""+t.key),t)ag.call(t,r)&&!sg.hasOwnProperty(r)&&(o[r]=t[r]);var a=arguments.length-2;if(a===1)o.children=n;else if(1>>1,oe=I[W];if(0>>1;Wo(rt,z))geo(Ee,rt)?(I[W]=Ee,I[ge]=z,W=ge):(I[W]=rt,I[Ne]=z,W=Ne);else if(geo(Ee,z))I[W]=Ee,I[ge]=z,W=ge;else break e}}return N}function o(I,N){var z=I.sortIndex-N.sortIndex;return z!==0?z:I.id-N.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var l=Date,a=l.now();e.unstable_now=function(){return l.now()-a}}var s=[],u=[],c=1,d=null,f=3,p=!1,y=!1,m=!1,S=typeof setTimeout=="function"?setTimeout:null,g=typeof clearTimeout=="function"?clearTimeout:null,h=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function w(I){for(var N=n(u);N!==null;){if(N.callback===null)r(u);else if(N.startTime<=I)r(u),N.sortIndex=N.expirationTime,t(s,N);else break;N=n(u)}}function x(I){if(m=!1,w(I),!y)if(n(s)!==null)y=!0,Z(P);else{var N=n(u);N!==null&&ie(x,N.startTime-I)}}function P(I,N){y=!1,m&&(m=!1,g(C),C=-1),p=!0;var z=f;try{for(w(N),d=n(s);d!==null&&(!(d.expirationTime>N)||I&&!b());){var W=d.callback;if(typeof W=="function"){d.callback=null,f=d.priorityLevel;var oe=W(d.expirationTime<=N);N=e.unstable_now(),typeof oe=="function"?d.callback=oe:d===n(s)&&r(s),w(N)}else r(s);d=n(s)}if(d!==null)var De=!0;else{var Ne=n(u);Ne!==null&&ie(x,Ne.startTime-N),De=!1}return De}finally{d=null,f=z,p=!1}}var D=!1,k=null,C=-1,F=5,T=-1;function b(){return!(e.unstable_now()-TI||125W?(I.sortIndex=z,t(u,I),n(s)===null&&I===n(u)&&(m?(g(C),C=-1):m=!0,ie(x,z-W))):(I.sortIndex=oe,t(s,I),y||p||(y=!0,Z(P))),I},e.unstable_shouldYield=b,e.unstable_wrapCallback=function(I){var N=f;return function(){var z=f;f=N;try{return I.apply(this,arguments)}finally{f=z}}}})(gg);pg.exports=gg;var yw=pg.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ww=v,yt=yw;function O(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ks=Object.prototype.hasOwnProperty,Sw=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Kd={},Qd={};function xw(e){return Ks.call(Qd,e)?!0:Ks.call(Kd,e)?!1:Sw.test(e)?Qd[e]=!0:(Kd[e]=!0,!1)}function Cw(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Rw(e,t,n,r){if(t===null||typeof t>"u"||Cw(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function tt(e,t,n,r,o,i,l){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=l}var He={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){He[e]=new tt(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];He[t]=new tt(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){He[e]=new tt(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){He[e]=new tt(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){He[e]=new tt(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){He[e]=new tt(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){He[e]=new tt(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){He[e]=new tt(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){He[e]=new tt(e,5,!1,e.toLowerCase(),null,!1,!1)});var lc=/[\-:]([a-z])/g;function ac(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(lc,ac);He[t]=new tt(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(lc,ac);He[t]=new tt(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(lc,ac);He[t]=new tt(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){He[e]=new tt(e,1,!1,e.toLowerCase(),null,!1,!1)});He.xlinkHref=new tt("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){He[e]=new tt(e,1,!1,e.toLowerCase(),null,!0,!0)});function sc(e,t,n,r){var o=He.hasOwnProperty(t)?He[t]:null;(o!==null?o.type!==0:r||!(2a||o[l]!==i[a]){var s=` +`+o[l].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=l&&0<=a);break}}}finally{ts=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?zo(e):""}function Ew(e){switch(e.tag){case 5:return zo(e.type);case 16:return zo("Lazy");case 13:return zo("Suspense");case 19:return zo("SuspenseList");case 0:case 2:case 15:return e=ns(e.type,!1),e;case 11:return e=ns(e.type.render,!1),e;case 1:return e=ns(e.type,!0),e;default:return""}}function Zs(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case jr:return"Fragment";case Ar:return"Portal";case Qs:return"Profiler";case uc:return"StrictMode";case Xs:return"Suspense";case Ys:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case vg:return(e.displayName||"Context")+".Consumer";case mg:return(e._context.displayName||"Context")+".Provider";case cc:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case dc:return t=e.displayName||null,t!==null?t:Zs(e.type)||"Memo";case In:t=e._payload,e=e._init;try{return Zs(e(t))}catch{}}return null}function _w(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Zs(t);case 8:return t===uc?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Kn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function wg(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Pw(e){var t=wg(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(l){r=""+l,i.call(this,l)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(l){r=""+l},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Ji(e){e._valueTracker||(e._valueTracker=Pw(e))}function Sg(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=wg(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function zl(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Js(e,t){var n=t.checked;return Re({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Yd(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Kn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function xg(e,t){t=t.checked,t!=null&&sc(e,"checked",t,!1)}function qs(e,t){xg(e,t);var n=Kn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?eu(e,t.type,n):t.hasOwnProperty("defaultValue")&&eu(e,t.type,Kn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Zd(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function eu(e,t,n){(t!=="number"||zl(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var $o=Array.isArray;function Xr(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=qi.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function ni(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Go={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Mw=["Webkit","ms","Moz","O"];Object.keys(Go).forEach(function(e){Mw.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Go[t]=Go[e]})});function _g(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Go.hasOwnProperty(e)&&Go[e]?(""+t).trim():t+"px"}function Pg(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=_g(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var kw=Re({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ru(e,t){if(t){if(kw[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(O(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(O(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(O(61))}if(t.style!=null&&typeof t.style!="object")throw Error(O(62))}}function ou(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var iu=null;function fc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var lu=null,Yr=null,Zr=null;function ef(e){if(e=ki(e)){if(typeof lu!="function")throw Error(O(280));var t=e.stateNode;t&&(t=_a(t),lu(e.stateNode,e.type,t))}}function Mg(e){Yr?Zr?Zr.push(e):Zr=[e]:Yr=e}function kg(){if(Yr){var e=Yr,t=Zr;if(Zr=Yr=null,ef(e),t)for(e=0;e>>=0,e===0?32:31-(zw(e)/$w|0)|0}var el=64,tl=4194304;function Vo(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Bl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,l=n&268435455;if(l!==0){var a=l&~o;a!==0?r=Vo(a):(i&=l,i!==0&&(r=Vo(i)))}else l=n&~o,l!==0?r=Vo(l):i!==0&&(r=Vo(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,i=t&-t,o>=i||o===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Pi(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ot(t),e[t]=n}function Hw(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Ko),cf=" ",df=!1;function Qg(e,t){switch(e){case"keyup":return y0.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Xg(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var br=!1;function S0(e,t){switch(e){case"compositionend":return Xg(t);case"keypress":return t.which!==32?null:(df=!0,cf);case"textInput":return e=t.data,e===cf&&df?null:e;default:return null}}function x0(e,t){if(br)return e==="compositionend"||!Sc&&Qg(e,t)?(e=Wg(),Pl=vc=Fn=null,br=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=hf(n)}}function qg(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qg(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function eh(){for(var e=window,t=zl();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=zl(e.document)}return t}function xc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function N0(e){var t=eh(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&qg(n.ownerDocument.documentElement,n)){if(r!==null&&xc(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=r.end===void 0?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=mf(n,i);var l=mf(n,r);o&&l&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==l.node||e.focusOffset!==l.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(l.node,l.offset)):(t.setEnd(l.node,l.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,zr=null,fu=null,Xo=null,pu=!1;function vf(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;pu||zr==null||zr!==zl(r)||(r=zr,"selectionStart"in r&&xc(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Xo&&si(Xo,r)||(Xo=r,r=Wl(fu,"onSelect"),0Ur||(e.current=wu[Ur],wu[Ur]=null,Ur--)}function pe(e,t){Ur++,wu[Ur]=e.current,e.current=t}var Qn={},Ye=er(Qn),at=er(!1),vr=Qn;function lo(e,t){var n=e.type.contextTypes;if(!n)return Qn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in n)o[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function st(e){return e=e.childContextTypes,e!=null}function Ql(){ye(at),ye(Ye)}function Ef(e,t,n){if(Ye.current!==Qn)throw Error(O(168));pe(Ye,t),pe(at,n)}function uh(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(O(108,_w(e)||"Unknown",o));return Re({},n,r)}function Xl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Qn,vr=Ye.current,pe(Ye,e),pe(at,at.current),!0}function _f(e,t,n){var r=e.stateNode;if(!r)throw Error(O(169));n?(e=uh(e,t,vr),r.__reactInternalMemoizedMergedChildContext=e,ye(at),ye(Ye),pe(Ye,e)):ye(at),pe(at,n)}var sn=null,Pa=!1,ms=!1;function ch(e){sn===null?sn=[e]:sn.push(e)}function U0(e){Pa=!0,ch(e)}function tr(){if(!ms&&sn!==null){ms=!0;var e=0,t=de;try{var n=sn;for(de=1;e>=l,o-=l,un=1<<32-Ot(t)+o|n<C?(F=k,k=null):F=k.sibling;var T=f(g,k,w[C],x);if(T===null){k===null&&(k=F);break}e&&k&&T.alternate===null&&t(g,k),h=i(T,h,C),D===null?P=T:D.sibling=T,D=T,k=F}if(C===w.length)return n(g,k),we&&sr(g,C),P;if(k===null){for(;CC?(F=k,k=null):F=k.sibling;var b=f(g,k,T.value,x);if(b===null){k===null&&(k=F);break}e&&k&&b.alternate===null&&t(g,k),h=i(b,h,C),D===null?P=b:D.sibling=b,D=b,k=F}if(T.done)return n(g,k),we&&sr(g,C),P;if(k===null){for(;!T.done;C++,T=w.next())T=d(g,T.value,x),T!==null&&(h=i(T,h,C),D===null?P=T:D.sibling=T,D=T);return we&&sr(g,C),P}for(k=r(g,k);!T.done;C++,T=w.next())T=p(k,g,C,T.value,x),T!==null&&(e&&T.alternate!==null&&k.delete(T.key===null?C:T.key),h=i(T,h,C),D===null?P=T:D.sibling=T,D=T);return e&&k.forEach(function(j){return t(g,j)}),we&&sr(g,C),P}function S(g,h,w,x){if(typeof w=="object"&&w!==null&&w.type===jr&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case Zi:e:{for(var P=w.key,D=h;D!==null;){if(D.key===P){if(P=w.type,P===jr){if(D.tag===7){n(g,D.sibling),h=o(D,w.props.children),h.return=g,g=h;break e}}else if(D.elementType===P||typeof P=="object"&&P!==null&&P.$$typeof===In&&kf(P)===D.type){n(g,D.sibling),h=o(D,w.props),h.ref=No(g,D,w),h.return=g,g=h;break e}n(g,D);break}else t(g,D);D=D.sibling}w.type===jr?(h=mr(w.props.children,g.mode,x,w.key),h.return=g,g=h):(x=Ol(w.type,w.key,w.props,null,g.mode,x),x.ref=No(g,h,w),x.return=g,g=x)}return l(g);case Ar:e:{for(D=w.key;h!==null;){if(h.key===D)if(h.tag===4&&h.stateNode.containerInfo===w.containerInfo&&h.stateNode.implementation===w.implementation){n(g,h.sibling),h=o(h,w.children||[]),h.return=g,g=h;break e}else{n(g,h);break}else t(g,h);h=h.sibling}h=Es(w,g.mode,x),h.return=g,g=h}return l(g);case In:return D=w._init,S(g,h,D(w._payload),x)}if($o(w))return y(g,h,w,x);if(_o(w))return m(g,h,w,x);sl(g,w)}return typeof w=="string"&&w!==""||typeof w=="number"?(w=""+w,h!==null&&h.tag===6?(n(g,h.sibling),h=o(h,w),h.return=g,g=h):(n(g,h),h=Rs(w,g.mode,x),h.return=g,g=h),l(g)):n(g,h)}return S}var so=gh(!0),hh=gh(!1),Jl=er(null),ql=null,Gr=null,_c=null;function Pc(){_c=Gr=ql=null}function Mc(e){var t=Jl.current;ye(Jl),e._currentValue=t}function Cu(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function qr(e,t){ql=e,_c=Gr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(lt=!0),e.firstContext=null)}function Mt(e){var t=e._currentValue;if(_c!==e)if(e={context:e,memoizedValue:t,next:null},Gr===null){if(ql===null)throw Error(O(308));Gr=e,ql.dependencies={lanes:0,firstContext:e}}else Gr=Gr.next=e;return t}var fr=null;function kc(e){fr===null?fr=[e]:fr.push(e)}function mh(e,t,n,r){var o=t.interleaved;return o===null?(n.next=n,kc(t)):(n.next=o.next,o.next=n),t.interleaved=n,hn(e,r)}function hn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Tn=!1;function Dc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function vh(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function dn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Bn(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,ae&2){var o=r.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),r.pending=t,hn(e,n)}return o=r.interleaved,o===null?(t.next=t,kc(r)):(t.next=o.next,o.next=t),r.interleaved=t,hn(e,n)}function kl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,gc(e,n)}}function Df(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var o=null,i=null;if(n=n.firstBaseUpdate,n!==null){do{var l={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};i===null?o=i=l:i=i.next=l,n=n.next}while(n!==null);i===null?o=i=t:i=i.next=t}else o=i=t;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:i,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ea(e,t,n,r){var o=e.updateQueue;Tn=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,a=o.shared.pending;if(a!==null){o.shared.pending=null;var s=a,u=s.next;s.next=null,l===null?i=u:l.next=u,l=s;var c=e.alternate;c!==null&&(c=c.updateQueue,a=c.lastBaseUpdate,a!==l&&(a===null?c.firstBaseUpdate=u:a.next=u,c.lastBaseUpdate=s))}if(i!==null){var d=o.baseState;l=0,c=u=s=null,a=i;do{var f=a.lane,p=a.eventTime;if((r&f)===f){c!==null&&(c=c.next={eventTime:p,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var y=e,m=a;switch(f=t,p=n,m.tag){case 1:if(y=m.payload,typeof y=="function"){d=y.call(p,d,f);break e}d=y;break e;case 3:y.flags=y.flags&-65537|128;case 0:if(y=m.payload,f=typeof y=="function"?y.call(p,d,f):y,f==null)break e;d=Re({},d,f);break e;case 2:Tn=!0}}a.callback!==null&&a.lane!==0&&(e.flags|=64,f=o.effects,f===null?o.effects=[a]:f.push(a))}else p={eventTime:p,lane:f,tag:a.tag,payload:a.payload,callback:a.callback,next:null},c===null?(u=c=p,s=d):c=c.next=p,l|=f;if(a=a.next,a===null){if(a=o.shared.pending,a===null)break;f=a,a=f.next,f.next=null,o.lastBaseUpdate=f,o.shared.pending=null}}while(!0);if(c===null&&(s=d),o.baseState=s,o.firstBaseUpdate=u,o.lastBaseUpdate=c,t=o.shared.interleaved,t!==null){o=t;do l|=o.lane,o=o.next;while(o!==t)}else i===null&&(o.shared.lanes=0);Sr|=l,e.lanes=l,e.memoizedState=d}}function Nf(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=ys.transition;ys.transition={};try{e(!1),t()}finally{de=n,ys.transition=r}}function Oh(){return kt().memoizedState}function W0(e,t,n){var r=Gn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Fh(e))Ah(t,n);else if(n=mh(e,t,n,r),n!==null){var o=qe();Ft(n,e,r,o),jh(n,t,r)}}function K0(e,t,n){var r=Gn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Fh(e))Ah(t,o);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var l=t.lastRenderedState,a=i(l,n);if(o.hasEagerState=!0,o.eagerState=a,jt(a,l)){var s=t.interleaved;s===null?(o.next=o,kc(t)):(o.next=s.next,s.next=o),t.interleaved=o;return}}catch{}finally{}n=mh(e,t,o,r),n!==null&&(o=qe(),Ft(n,e,r,o),jh(n,t,r))}}function Fh(e){var t=e.alternate;return e===Ce||t!==null&&t===Ce}function Ah(e,t){Yo=na=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function jh(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,gc(e,n)}}var ra={readContext:Mt,useCallback:We,useContext:We,useEffect:We,useImperativeHandle:We,useInsertionEffect:We,useLayoutEffect:We,useMemo:We,useReducer:We,useRef:We,useState:We,useDebugValue:We,useDeferredValue:We,useTransition:We,useMutableSource:We,useSyncExternalStore:We,useId:We,unstable_isNewReconciler:!1},Q0={readContext:Mt,useCallback:function(e,t){return Bt().memoizedState=[e,t===void 0?null:t],e},useContext:Mt,useEffect:Tf,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Nl(4194308,4,Dh.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Nl(4194308,4,e,t)},useInsertionEffect:function(e,t){return Nl(4,2,e,t)},useMemo:function(e,t){var n=Bt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Bt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=W0.bind(null,Ce,e),[r.memoizedState,e]},useRef:function(e){var t=Bt();return e={current:e},t.memoizedState=e},useState:If,useDebugValue:jc,useDeferredValue:function(e){return Bt().memoizedState=e},useTransition:function(){var e=If(!1),t=e[0];return e=G0.bind(null,e[1]),Bt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Ce,o=Bt();if(we){if(n===void 0)throw Error(O(407));n=n()}else{if(n=t(),$e===null)throw Error(O(349));wr&30||xh(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,Tf(Rh.bind(null,r,i,e),[e]),r.flags|=2048,mi(9,Ch.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Bt(),t=$e.identifierPrefix;if(we){var n=cn,r=un;n=(r&~(1<<32-Ot(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=gi++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),n==="select"&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[Ht]=t,e[di]=r,Kh(e,t,!1,!1),t.stateNode=e;e:{switch(l=ou(n,r),n){case"dialog":ve("cancel",e),ve("close",e),o=r;break;case"iframe":case"object":case"embed":ve("load",e),o=r;break;case"video":case"audio":for(o=0;ofo&&(t.flags|=128,r=!0,Io(i,!1),t.lanes=4194304)}else{if(!r)if(e=ta(l),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Io(i,!0),i.tail===null&&i.tailMode==="hidden"&&!l.alternate&&!we)return Ke(t),null}else 2*ke()-i.renderingStartTime>fo&&n!==1073741824&&(t.flags|=128,r=!0,Io(i,!1),t.lanes=4194304);i.isBackwards?(l.sibling=t.child,t.child=l):(n=i.last,n!==null?n.sibling=l:t.child=l,i.last=l)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=ke(),t.sibling=null,n=xe.current,pe(xe,r?n&1|2:n&1),t):(Ke(t),null);case 22:case 23:return Bc(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?ft&1073741824&&(Ke(t),t.subtreeFlags&6&&(t.flags|=8192)):Ke(t),null;case 24:return null;case 25:return null}throw Error(O(156,t.tag))}function nS(e,t){switch(Rc(t),t.tag){case 1:return st(t.type)&&Ql(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return uo(),ye(at),ye(Ye),Tc(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Ic(t),null;case 13:if(ye(xe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(O(340));ao()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ye(xe),null;case 4:return uo(),null;case 10:return Mc(t.type._context),null;case 22:case 23:return Bc(),null;case 24:return null;default:return null}}var cl=!1,Xe=!1,rS=typeof WeakSet=="function"?WeakSet:Set,V=null;function Wr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Me(e,t,r)}else n.current=null}function Iu(e,t,n){try{n()}catch(r){Me(e,t,r)}}var Bf=!1;function oS(e,t){if(gu=Hl,e=eh(),xc(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var l=0,a=-1,s=-1,u=0,c=0,d=e,f=null;t:for(;;){for(var p;d!==n||o!==0&&d.nodeType!==3||(a=l+o),d!==i||r!==0&&d.nodeType!==3||(s=l+r),d.nodeType===3&&(l+=d.nodeValue.length),(p=d.firstChild)!==null;)f=d,d=p;for(;;){if(d===e)break t;if(f===n&&++u===o&&(a=l),f===i&&++c===r&&(s=l),(p=d.nextSibling)!==null)break;d=f,f=d.parentNode}d=p}n=a===-1||s===-1?null:{start:a,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(hu={focusedElem:e,selectionRange:n},Hl=!1,V=t;V!==null;)if(t=V,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,V=e;else for(;V!==null;){t=V;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var m=y.memoizedProps,S=y.memoizedState,g=t.stateNode,h=g.getSnapshotBeforeUpdate(t.elementType===t.type?m:Nt(t.type,m),S);g.__reactInternalSnapshotBeforeUpdate=h}break;case 3:var w=t.stateNode.containerInfo;w.nodeType===1?w.textContent="":w.nodeType===9&&w.documentElement&&w.removeChild(w.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(O(163))}}catch(x){Me(t,t.return,x)}if(e=t.sibling,e!==null){e.return=t.return,V=e;break}V=t.return}return y=Bf,Bf=!1,y}function Zo(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&Iu(t,n,i)}o=o.next}while(o!==r)}}function Da(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Tu(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Yh(e){var t=e.alternate;t!==null&&(e.alternate=null,Yh(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ht],delete t[di],delete t[yu],delete t[$0],delete t[V0])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Zh(e){return e.tag===5||e.tag===3||e.tag===4}function Hf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Zh(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Lu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Kl));else if(r!==4&&(e=e.child,e!==null))for(Lu(e,t,n),e=e.sibling;e!==null;)Lu(e,t,n),e=e.sibling}function Ou(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Ou(e,t,n),e=e.sibling;e!==null;)Ou(e,t,n),e=e.sibling}var Ue=null,It=!1;function Pn(e,t,n){for(n=n.child;n!==null;)Jh(e,t,n),n=n.sibling}function Jh(e,t,n){if(Kt&&typeof Kt.onCommitFiberUnmount=="function")try{Kt.onCommitFiberUnmount(xa,n)}catch{}switch(n.tag){case 5:Xe||Wr(n,t);case 6:var r=Ue,o=It;Ue=null,Pn(e,t,n),Ue=r,It=o,Ue!==null&&(It?(e=Ue,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ue.removeChild(n.stateNode));break;case 18:Ue!==null&&(It?(e=Ue,n=n.stateNode,e.nodeType===8?hs(e.parentNode,n):e.nodeType===1&&hs(e,n),li(e)):hs(Ue,n.stateNode));break;case 4:r=Ue,o=It,Ue=n.stateNode.containerInfo,It=!0,Pn(e,t,n),Ue=r,It=o;break;case 0:case 11:case 14:case 15:if(!Xe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,l=i.destroy;i=i.tag,l!==void 0&&(i&2||i&4)&&Iu(n,t,l),o=o.next}while(o!==r)}Pn(e,t,n);break;case 1:if(!Xe&&(Wr(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(a){Me(n,t,a)}Pn(e,t,n);break;case 21:Pn(e,t,n);break;case 22:n.mode&1?(Xe=(r=Xe)||n.memoizedState!==null,Pn(e,t,n),Xe=r):Pn(e,t,n);break;default:Pn(e,t,n)}}function Gf(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new rS),t.forEach(function(r){var o=pS.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function Dt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=l),r&=~i}if(r=o,r=ke()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*lS(r/1960))-r,10e?16:e,An===null)var r=!1;else{if(e=An,An=null,la=0,ae&6)throw Error(O(331));var o=ae;for(ae|=4,V=e.current;V!==null;){var i=V,l=i.child;if(V.flags&16){var a=i.deletions;if(a!==null){for(var s=0;ske()-Vc?hr(e,0):$c|=n),ut(e,t)}function lm(e,t){t===0&&(e.mode&1?(t=tl,tl<<=1,!(tl&130023424)&&(tl=4194304)):t=1);var n=qe();e=hn(e,t),e!==null&&(Pi(e,t,n),ut(e,n))}function fS(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),lm(e,n)}function pS(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(O(314))}r!==null&&r.delete(t),lm(e,n)}var am;am=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||at.current)lt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return lt=!1,eS(e,t,n);lt=!!(e.flags&131072)}else lt=!1,we&&t.flags&1048576&&dh(t,Zl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Il(e,t),e=t.pendingProps;var o=lo(t,Ye.current);qr(t,n),o=Oc(null,t,r,e,o,n);var i=Fc();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,st(r)?(i=!0,Xl(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,Dc(t),o.updater=ka,t.stateNode=o,o._reactInternals=t,Eu(t,r,e,n),t=Mu(null,t,r,!0,i,n)):(t.tag=0,we&&i&&Cc(t),Je(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Il(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=hS(r),e=Nt(r,e),o){case 0:t=Pu(null,t,r,e,n);break e;case 1:t=$f(null,t,r,e,n);break e;case 11:t=bf(null,t,r,e,n);break e;case 14:t=zf(null,t,r,Nt(r.type,e),n);break e}throw Error(O(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Nt(r,o),Pu(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Nt(r,o),$f(e,t,r,o,n);case 3:e:{if(Hh(t),e===null)throw Error(O(387));r=t.pendingProps,i=t.memoizedState,o=i.element,vh(e,t),ea(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=co(Error(O(423)),t),t=Vf(e,t,r,n,o);break e}else if(r!==o){o=co(Error(O(424)),t),t=Vf(e,t,r,n,o);break e}else for(ht=Un(t.stateNode.containerInfo.firstChild),mt=t,we=!0,Lt=null,n=hh(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(ao(),r===o){t=mn(e,t,n);break e}Je(e,t,r,n)}t=t.child}return t;case 5:return yh(t),e===null&&xu(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,l=o.children,mu(r,o)?l=null:i!==null&&mu(r,i)&&(t.flags|=32),Bh(e,t),Je(e,t,l,n),t.child;case 6:return e===null&&xu(t),null;case 13:return Gh(e,t,n);case 4:return Nc(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=so(t,null,r,n):Je(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Nt(r,o),bf(e,t,r,o,n);case 7:return Je(e,t,t.pendingProps,n),t.child;case 8:return Je(e,t,t.pendingProps.children,n),t.child;case 12:return Je(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,l=o.value,pe(Jl,r._currentValue),r._currentValue=l,i!==null)if(jt(i.value,l)){if(i.children===o.children&&!at.current){t=mn(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var a=i.dependencies;if(a!==null){l=i.child;for(var s=a.firstContext;s!==null;){if(s.context===r){if(i.tag===1){s=dn(-1,n&-n),s.tag=2;var u=i.updateQueue;if(u!==null){u=u.shared;var c=u.pending;c===null?s.next=s:(s.next=c.next,c.next=s),u.pending=s}}i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),Cu(i.return,n,t),a.lanes|=n;break}s=s.next}}else if(i.tag===10)l=i.type===t.type?null:i.child;else if(i.tag===18){if(l=i.return,l===null)throw Error(O(341));l.lanes|=n,a=l.alternate,a!==null&&(a.lanes|=n),Cu(l,n,t),l=i.sibling}else l=i.child;if(l!==null)l.return=i;else for(l=i;l!==null;){if(l===t){l=null;break}if(i=l.sibling,i!==null){i.return=l.return,l=i;break}l=l.return}i=l}Je(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,qr(t,n),o=Mt(o),r=r(o),t.flags|=1,Je(e,t,r,n),t.child;case 14:return r=t.type,o=Nt(r,t.pendingProps),o=Nt(r.type,o),zf(e,t,r,o,n);case 15:return Vh(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Nt(r,o),Il(e,t),t.tag=1,st(r)?(e=!0,Xl(t)):e=!1,qr(t,n),bh(t,r,o),Eu(t,r,o,n),Mu(null,t,r,!0,e,n);case 19:return Wh(e,t,n);case 22:return Uh(e,t,n)}throw Error(O(156,t.tag))};function sm(e,t){return Fg(e,t)}function gS(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Et(e,t,n,r){return new gS(e,t,n,r)}function Gc(e){return e=e.prototype,!(!e||!e.isReactComponent)}function hS(e){if(typeof e=="function")return Gc(e)?1:0;if(e!=null){if(e=e.$$typeof,e===cc)return 11;if(e===dc)return 14}return 2}function Wn(e,t){var n=e.alternate;return n===null?(n=Et(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ol(e,t,n,r,o,i){var l=2;if(r=e,typeof e=="function")Gc(e)&&(l=1);else if(typeof e=="string")l=5;else e:switch(e){case jr:return mr(n.children,o,i,t);case uc:l=8,o|=8;break;case Qs:return e=Et(12,n,t,o|2),e.elementType=Qs,e.lanes=i,e;case Xs:return e=Et(13,n,t,o),e.elementType=Xs,e.lanes=i,e;case Ys:return e=Et(19,n,t,o),e.elementType=Ys,e.lanes=i,e;case yg:return Ia(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case mg:l=10;break e;case vg:l=9;break e;case cc:l=11;break e;case dc:l=14;break e;case In:l=16,r=null;break e}throw Error(O(130,e==null?e:typeof e,""))}return t=Et(l,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function mr(e,t,n,r){return e=Et(7,e,r,t),e.lanes=n,e}function Ia(e,t,n,r){return e=Et(22,e,r,t),e.elementType=yg,e.lanes=n,e.stateNode={isHidden:!1},e}function Rs(e,t,n){return e=Et(6,e,null,t),e.lanes=n,e}function Es(e,t,n){return t=Et(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function mS(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=os(0),this.expirationTimes=os(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=os(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Wc(e,t,n,r,o,i,l,a,s){return e=new mS(e,t,n,a,s),t===1?(t=1,i===!0&&(t|=8)):t=0,i=Et(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Dc(i),e}function vS(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(fm)}catch(e){console.error(e)}}fm(),fg.exports=St;var Ni=fg.exports;const pm=eg(Ni),CS=qp({__proto__:null,default:pm},[Ni]);var gm,qf=Ni;gm=qf.createRoot,qf.hydrateRoot;/** + * @remix-run/router v1.19.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function Se(){return Se=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function po(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function ES(){return Math.random().toString(36).substr(2,8)}function tp(e,t){return{usr:e.state,key:e.key,idx:t}}function yi(e,t,n,r){return n===void 0&&(n=null),Se({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?nr(t):t,{state:n,key:t&&t.key||r||ES()})}function Cr(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function nr(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function _S(e,t,n,r){r===void 0&&(r={});let{window:o=document.defaultView,v5Compat:i=!1}=r,l=o.history,a=Te.Pop,s=null,u=c();u==null&&(u=0,l.replaceState(Se({},l.state,{idx:u}),""));function c(){return(l.state||{idx:null}).idx}function d(){a=Te.Pop;let S=c(),g=S==null?null:S-u;u=S,s&&s({action:a,location:m.location,delta:g})}function f(S,g){a=Te.Push;let h=yi(m.location,S,g);u=c()+1;let w=tp(h,u),x=m.createHref(h);try{l.pushState(w,"",x)}catch(P){if(P instanceof DOMException&&P.name==="DataCloneError")throw P;o.location.assign(x)}i&&s&&s({action:a,location:m.location,delta:1})}function p(S,g){a=Te.Replace;let h=yi(m.location,S,g);u=c();let w=tp(h,u),x=m.createHref(h);l.replaceState(w,"",x),i&&s&&s({action:a,location:m.location,delta:0})}function y(S){let g=o.location.origin!=="null"?o.location.origin:o.location.href,h=typeof S=="string"?S:Cr(S);return h=h.replace(/ $/,"%20"),te(g,"No window.location.(origin|href) available to create URL for href: "+h),new URL(h,g)}let m={get action(){return a},get location(){return e(o,l)},listen(S){if(s)throw new Error("A history only accepts one active listener");return o.addEventListener(ep,d),s=S,()=>{o.removeEventListener(ep,d),s=null}},createHref(S){return t(o,S)},createURL:y,encodeLocation(S){let g=y(S);return{pathname:g.pathname,search:g.search,hash:g.hash}},push:f,replace:p,go(S){return l.go(S)}};return m}var fe;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(fe||(fe={}));const PS=new Set(["lazy","caseSensitive","path","id","index","children"]);function MS(e){return e.index===!0}function wi(e,t,n,r){return n===void 0&&(n=[]),r===void 0&&(r={}),e.map((o,i)=>{let l=[...n,String(i)],a=typeof o.id=="string"?o.id:l.join("-");if(te(o.index!==!0||!o.children,"Cannot specify children on an index route"),te(!r[a],'Found a route id collision on id "'+a+`". Route id's must be globally unique within Data Router usages`),MS(o)){let s=Se({},o,t(o),{id:a});return r[a]=s,s}else{let s=Se({},o,t(o),{id:a,children:void 0});return r[a]=s,o.children&&(s.children=wi(o.children,t,l,r)),s}})}function cr(e,t,n){return n===void 0&&(n="/"),Fl(e,t,n,!1)}function Fl(e,t,n,r){let o=typeof t=="string"?nr(t):t,i=vn(o.pathname||"/",n);if(i==null)return null;let l=hm(e);DS(l);let a=null;for(let s=0;a==null&&s{let s={relativePath:a===void 0?i.path||"":a,caseSensitive:i.caseSensitive===!0,childrenIndex:l,route:i};s.relativePath.startsWith("/")&&(te(s.relativePath.startsWith(r),'Absolute route path "'+s.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),s.relativePath=s.relativePath.slice(r.length));let u=fn([r,s.relativePath]),c=n.concat(s);i.children&&i.children.length>0&&(te(i.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+u+'".')),hm(i.children,t,c,u)),!(i.path==null&&!i.index)&&t.push({path:u,score:AS(u,i.index),routesMeta:c})};return e.forEach((i,l)=>{var a;if(i.path===""||!((a=i.path)!=null&&a.includes("?")))o(i,l);else for(let s of mm(i.path))o(i,l,s)}),t}function mm(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,o=n.endsWith("?"),i=n.replace(/\?$/,"");if(r.length===0)return o?[i,""]:[i];let l=mm(r.join("/")),a=[];return a.push(...l.map(s=>s===""?i:[i,s].join("/"))),o&&a.push(...l),a.map(s=>e.startsWith("/")&&s===""?"/":s)}function DS(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:jS(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const NS=/^:[\w-]+$/,IS=3,TS=2,LS=1,OS=10,FS=-2,np=e=>e==="*";function AS(e,t){let n=e.split("/"),r=n.length;return n.some(np)&&(r+=FS),t&&(r+=TS),n.filter(o=>!np(o)).reduce((o,i)=>o+(NS.test(i)?IS:i===""?LS:OS),r)}function jS(e,t){return e.length===t.length&&e.slice(0,-1).every((r,o)=>r===t[o])?e[e.length-1]-t[t.length-1]:0}function bS(e,t,n){n===void 0&&(n=!1);let{routesMeta:r}=e,o={},i="/",l=[];for(let a=0;a{let{paramName:f,isOptional:p}=c;if(f==="*"){let m=a[d]||"";l=i.slice(0,i.length-m.length).replace(/(.)\/+$/,"$1")}const y=a[d];return p&&!y?u[f]=void 0:u[f]=(y||"").replace(/%2F/g,"/"),u},{}),pathname:i,pathnameBase:l,pattern:e}}function zS(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),po(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,a,s)=>(r.push({paramName:a,isOptional:s!=null}),s?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,t?void 0:"i"),r]}function $S(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return po(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function vn(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function VS(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:o=""}=typeof e=="string"?nr(e):e;return{pathname:n?n.startsWith("/")?n:US(n,t):t,search:HS(r),hash:GS(o)}}function US(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?n.length>1&&n.pop():o!=="."&&n.push(o)}),n.length>1?n.join("/"):"/"}function _s(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function vm(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Yc(e,t){let n=vm(e);return t?n.map((r,o)=>o===n.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function Zc(e,t,n,r){r===void 0&&(r=!1);let o;typeof e=="string"?o=nr(e):(o=Se({},e),te(!o.pathname||!o.pathname.includes("?"),_s("?","pathname","search",o)),te(!o.pathname||!o.pathname.includes("#"),_s("#","pathname","hash",o)),te(!o.search||!o.search.includes("#"),_s("#","search","hash",o)));let i=e===""||o.pathname==="",l=i?"/":o.pathname,a;if(l==null)a=n;else{let d=t.length-1;if(!r&&l.startsWith("..")){let f=l.split("/");for(;f[0]==="..";)f.shift(),d-=1;o.pathname=f.join("/")}a=d>=0?t[d]:"/"}let s=VS(o,a),u=l&&l!=="/"&&l.endsWith("/"),c=(i||l===".")&&n.endsWith("/");return!s.pathname.endsWith("/")&&(u||c)&&(s.pathname+="/"),s}const fn=e=>e.join("/").replace(/\/\/+/g,"/"),BS=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),HS=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,GS=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class ca{constructor(t,n,r,o){o===void 0&&(o=!1),this.status=t,this.statusText=n||"",this.internal=o,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function Aa(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const ym=["post","put","patch","delete"],WS=new Set(ym),KS=["get",...ym],QS=new Set(KS),XS=new Set([301,302,303,307,308]),YS=new Set([307,308]),Ps={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},ZS={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Lo={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},Jc=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,JS=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),wm="remix-router-transitions";function qS(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u",r=!n;te(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let o;if(e.mapRouteProperties)o=e.mapRouteProperties;else if(e.detectErrorBoundary){let E=e.detectErrorBoundary;o=_=>({hasErrorBoundary:E(_)})}else o=JS;let i={},l=wi(e.routes,o,void 0,i),a,s=e.basename||"/",u=e.unstable_dataStrategy||ix,c=e.unstable_patchRoutesOnNavigation,d=Se({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1,v7_skipActionErrorRevalidation:!1},e.future),f=null,p=new Set,y=1e3,m=new Set,S=null,g=null,h=null,w=e.hydrationData!=null,x=cr(l,e.history.location,s),P=null;if(x==null&&!c){let E=Ze(404,{pathname:e.history.location.pathname}),{matches:_,route:M}=dp(l);x=_,P={[M.id]:E}}x&&!e.hydrationData&&Hi(x,l,e.history.location.pathname).active&&(x=null);let D;if(x)if(x.some(E=>E.route.lazy))D=!1;else if(!x.some(E=>E.route.loader))D=!0;else if(d.v7_partialHydration){let E=e.hydrationData?e.hydrationData.loaderData:null,_=e.hydrationData?e.hydrationData.errors:null,M=L=>L.route.loader?typeof L.route.loader=="function"&&L.route.loader.hydrate===!0?!1:E&&E[L.route.id]!==void 0||_&&_[L.route.id]!==void 0:!0;if(_){let L=x.findIndex($=>_[$.route.id]!==void 0);D=x.slice(0,L+1).every(M)}else D=x.every(M)}else D=e.hydrationData!=null;else if(D=!1,x=[],d.v7_partialHydration){let E=Hi(null,l,e.history.location.pathname);E.active&&E.matches&&(x=E.matches)}let k,C={historyAction:e.history.action,location:e.history.location,matches:x,initialized:D,navigation:Ps,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||P,fetchers:new Map,blockers:new Map},F=Te.Pop,T=!1,b,j=!1,Q=new Map,G=null,se=!1,Z=!1,ie=[],I=new Set,N=new Map,z=0,W=-1,oe=new Map,De=new Set,Ne=new Map,rt=new Map,ge=new Set,Ee=new Map,ct=new Map,ot=new Map,Vt;function bi(){if(f=e.history.listen(E=>{let{action:_,location:M,delta:L}=E;if(Vt){Vt(),Vt=void 0;return}po(ct.size===0||L!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let $=zd({currentLocation:C.location,nextLocation:M,historyAction:_});if($&&L!=null){let H=new Promise(J=>{Vt=J});e.history.go(L*-1),Ui($,{state:"blocked",location:M,proceed(){Ui($,{state:"proceeding",proceed:void 0,reset:void 0,location:M}),H.then(()=>e.history.go(L))},reset(){let J=new Map(C.blockers);J.set($,Lo),je({blockers:J})}});return}return Jt(_,M)}),n){Sx(t,Q);let E=()=>xx(t,Q);t.addEventListener("pagehide",E),G=()=>t.removeEventListener("pagehide",E)}return C.initialized||Jt(Te.Pop,C.location,{initialHydration:!0}),k}function zi(){f&&f(),G&&G(),p.clear(),b&&b.abort(),C.fetchers.forEach((E,_)=>Vi(_)),C.blockers.forEach((E,_)=>bd(_))}function lr(E){return p.add(E),()=>p.delete(E)}function je(E,_){_===void 0&&(_={}),C=Se({},C,E);let M=[],L=[];d.v7_fetcherPersist&&C.fetchers.forEach(($,H)=>{$.state==="idle"&&(ge.has(H)?L.push(H):M.push(H))}),[...p].forEach($=>$(C,{deletedFetchers:L,unstable_viewTransitionOpts:_.viewTransitionOpts,unstable_flushSync:_.flushSync===!0})),d.v7_fetcherPersist&&(M.forEach($=>C.fetchers.delete($)),L.forEach($=>Vi($)))}function Cn(E,_,M){var L,$;let{flushSync:H}=M===void 0?{}:M,J=C.actionData!=null&&C.navigation.formMethod!=null&&Tt(C.navigation.formMethod)&&C.navigation.state==="loading"&&((L=E.state)==null?void 0:L._isRedirect)!==!0,A;_.actionData?Object.keys(_.actionData).length>0?A=_.actionData:A=null:J?A=C.actionData:A=null;let K=_.loaderData?up(C.loaderData,_.loaderData,_.matches||[],_.errors):C.loaderData,U=C.blockers;U.size>0&&(U=new Map(U),U.forEach((ce,he)=>U.set(he,Lo)));let B=T===!0||C.navigation.formMethod!=null&&Tt(C.navigation.formMethod)&&(($=E.state)==null?void 0:$._isRedirect)!==!0;a&&(l=a,a=void 0),se||F===Te.Pop||(F===Te.Push?e.history.push(E,E.state):F===Te.Replace&&e.history.replace(E,E.state));let ue;if(F===Te.Pop){let ce=Q.get(C.location.pathname);ce&&ce.has(E.pathname)?ue={currentLocation:C.location,nextLocation:E}:Q.has(E.pathname)&&(ue={currentLocation:E,nextLocation:C.location})}else if(j){let ce=Q.get(C.location.pathname);ce?ce.add(E.pathname):(ce=new Set([E.pathname]),Q.set(C.location.pathname,ce)),ue={currentLocation:C.location,nextLocation:E}}je(Se({},_,{actionData:A,loaderData:K,historyAction:F,location:E,initialized:!0,navigation:Ps,revalidation:"idle",restoreScrollPosition:Vd(E,_.matches||C.matches),preventScrollReset:B,blockers:U}),{viewTransitionOpts:ue,flushSync:H===!0}),F=Te.Pop,T=!1,j=!1,se=!1,Z=!1,ie=[]}async function $i(E,_){if(typeof E=="number"){e.history.go(E);return}let M=zu(C.location,C.matches,s,d.v7_prependBasename,E,d.v7_relativeSplatPath,_==null?void 0:_.fromRouteId,_==null?void 0:_.relative),{path:L,submission:$,error:H}=rp(d.v7_normalizeFormMethod,!1,M,_),J=C.location,A=yi(C.location,L,_&&_.state);A=Se({},A,e.history.encodeLocation(A));let K=_&&_.replace!=null?_.replace:void 0,U=Te.Push;K===!0?U=Te.Replace:K===!1||$!=null&&Tt($.formMethod)&&$.formAction===C.location.pathname+C.location.search&&(U=Te.Replace);let B=_&&"preventScrollReset"in _?_.preventScrollReset===!0:void 0,ue=(_&&_.unstable_flushSync)===!0,ce=zd({currentLocation:J,nextLocation:A,historyAction:U});if(ce){Ui(ce,{state:"blocked",location:A,proceed(){Ui(ce,{state:"proceeding",proceed:void 0,reset:void 0,location:A}),$i(E,_)},reset(){let he=new Map(C.blockers);he.set(ce,Lo),je({blockers:he})}});return}return await Jt(U,A,{submission:$,pendingError:H,preventScrollReset:B,replace:_&&_.replace,enableViewTransition:_&&_.unstable_viewTransition,flushSync:ue})}function Xa(){if(Ya(),je({revalidation:"loading"}),C.navigation.state!=="submitting"){if(C.navigation.state==="idle"){Jt(C.historyAction,C.location,{startUninterruptedRevalidation:!0});return}Jt(F||C.historyAction,C.navigation.location,{overrideNavigation:C.navigation,enableViewTransition:j===!0})}}async function Jt(E,_,M){b&&b.abort(),b=null,F=E,se=(M&&M.startUninterruptedRevalidation)===!0,Ky(C.location,C.matches),T=(M&&M.preventScrollReset)===!0,j=(M&&M.enableViewTransition)===!0;let L=a||l,$=M&&M.overrideNavigation,H=cr(L,_,s),J=(M&&M.flushSync)===!0,A=Hi(H,L,_.pathname);if(A.active&&A.matches&&(H=A.matches),!H){let{error:le,notFoundMatches:be,route:Ie}=Za(_.pathname);Cn(_,{matches:be,loaderData:{},errors:{[Ie.id]:le}},{flushSync:J});return}if(C.initialized&&!Z&&dx(C.location,_)&&!(M&&M.submission&&Tt(M.submission.formMethod))){Cn(_,{matches:H},{flushSync:J});return}b=new AbortController;let K=Tr(e.history,_,b.signal,M&&M.submission),U;if(M&&M.pendingError)U=[Qr(H).route.id,{type:fe.error,error:M.pendingError}];else if(M&&M.submission&&Tt(M.submission.formMethod)){let le=await Dr(K,_,M.submission,H,A.active,{replace:M.replace,flushSync:J});if(le.shortCircuited)return;if(le.pendingActionResult){let[be,Ie]=le.pendingActionResult;if(pt(Ie)&&Aa(Ie.error)&&Ie.error.status===404){b=null,Cn(_,{matches:le.matches,loaderData:{},errors:{[be]:Ie.error}});return}}H=le.matches||H,U=le.pendingActionResult,$=Ms(_,M.submission),J=!1,A.active=!1,K=Tr(e.history,K.url,K.signal)}let{shortCircuited:B,matches:ue,loaderData:ce,errors:he}=await zy(K,_,H,A.active,$,M&&M.submission,M&&M.fetcherSubmission,M&&M.replace,M&&M.initialHydration===!0,J,U);B||(b=null,Cn(_,Se({matches:ue||H},cp(U),{loaderData:ce,errors:he})))}async function Dr(E,_,M,L,$,H){H===void 0&&(H={}),Ya();let J=yx(_,M);if(je({navigation:J},{flushSync:H.flushSync===!0}),$){let U=await Gi(L,_.pathname,E.signal);if(U.type==="aborted")return{shortCircuited:!0};if(U.type==="error"){let{boundaryId:B,error:ue}=Bi(_.pathname,U);return{matches:U.partialMatches,pendingActionResult:[B,{type:fe.error,error:ue}]}}else if(U.matches)L=U.matches;else{let{notFoundMatches:B,error:ue,route:ce}=Za(_.pathname);return{matches:B,pendingActionResult:[ce.id,{type:fe.error,error:ue}]}}}let A,K=Bo(L,_);if(!K.route.action&&!K.route.lazy)A={type:fe.error,error:Ze(405,{method:E.method,pathname:_.pathname,routeId:K.route.id})};else if(A=(await Ro("action",C,E,[K],L,null))[K.route.id],E.signal.aborted)return{shortCircuited:!0};if(gr(A)){let U;return H&&H.replace!=null?U=H.replace:U=lp(A.response.headers.get("Location"),new URL(E.url),s)===C.location.pathname+C.location.search,await ar(E,A,!0,{submission:M,replace:U}),{shortCircuited:!0}}if(jn(A))throw Ze(400,{type:"defer-action"});if(pt(A)){let U=Qr(L,K.route.id);return(H&&H.replace)!==!0&&(F=Te.Push),{matches:L,pendingActionResult:[U.route.id,A]}}return{matches:L,pendingActionResult:[K.route.id,A]}}async function zy(E,_,M,L,$,H,J,A,K,U,B){let ue=$||Ms(_,H),ce=H||J||pp(ue),he=!se&&(!d.v7_partialHydration||!K);if(L){if(he){let _e=Td(B);je(Se({navigation:ue},_e!==void 0?{actionData:_e}:{}),{flushSync:U})}let ee=await Gi(M,_.pathname,E.signal);if(ee.type==="aborted")return{shortCircuited:!0};if(ee.type==="error"){let{boundaryId:_e,error:dt}=Bi(_.pathname,ee);return{matches:ee.partialMatches,loaderData:{},errors:{[_e]:dt}}}else if(ee.matches)M=ee.matches;else{let{error:_e,notFoundMatches:dt,route:Pe}=Za(_.pathname);return{matches:dt,loaderData:{},errors:{[Pe.id]:_e}}}}let le=a||l,[be,Ie]=op(e.history,C,M,ce,_,d.v7_partialHydration&&K===!0,d.v7_skipActionErrorRevalidation,Z,ie,I,ge,Ne,De,le,s,B);if(Ja(ee=>!(M&&M.some(_e=>_e.route.id===ee))||be&&be.some(_e=>_e.route.id===ee)),W=++z,be.length===0&&Ie.length===0){let ee=Ad();return Cn(_,Se({matches:M,loaderData:{},errors:B&&pt(B[1])?{[B[0]]:B[1].error}:null},cp(B),ee?{fetchers:new Map(C.fetchers)}:{}),{flushSync:U}),{shortCircuited:!0}}if(he){let ee={};if(!L){ee.navigation=ue;let _e=Td(B);_e!==void 0&&(ee.actionData=_e)}Ie.length>0&&(ee.fetchers=$y(Ie)),je(ee,{flushSync:U})}Ie.forEach(ee=>{N.has(ee.key)&&En(ee.key),ee.controller&&N.set(ee.key,ee.controller)});let Eo=()=>Ie.forEach(ee=>En(ee.key));b&&b.signal.addEventListener("abort",Eo);let{loaderResults:en,fetcherResults:Nr}=await Ld(C,M,be,Ie,E);if(E.signal.aborted)return{shortCircuited:!0};b&&b.signal.removeEventListener("abort",Eo),Ie.forEach(ee=>N.delete(ee.key));let _n=pl(en);if(_n)return await ar(E,_n.result,!0,{replace:A}),{shortCircuited:!0};if(_n=pl(Nr),_n)return De.add(_n.key),await ar(E,_n.result,!0,{replace:A}),{shortCircuited:!0};let{loaderData:Wi,errors:tn}=sp(C,M,be,en,B,Ie,Nr,Ee);Ee.forEach((ee,_e)=>{ee.subscribe(dt=>{(dt||ee.done)&&Ee.delete(_e)})}),d.v7_partialHydration&&K&&C.errors&&Object.entries(C.errors).filter(ee=>{let[_e]=ee;return!be.some(dt=>dt.route.id===_e)}).forEach(ee=>{let[_e,dt]=ee;tn=Object.assign(tn||{},{[_e]:dt})});let Ki=Ad(),Qi=jd(W),Xi=Ki||Qi||Ie.length>0;return Se({matches:M,loaderData:Wi,errors:tn},Xi?{fetchers:new Map(C.fetchers)}:{})}function Td(E){if(E&&!pt(E[1]))return{[E[0]]:E[1].data};if(C.actionData)return Object.keys(C.actionData).length===0?null:C.actionData}function $y(E){return E.forEach(_=>{let M=C.fetchers.get(_.key),L=Oo(void 0,M?M.data:void 0);C.fetchers.set(_.key,L)}),new Map(C.fetchers)}function Vy(E,_,M,L){if(r)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");N.has(E)&&En(E);let $=(L&&L.unstable_flushSync)===!0,H=a||l,J=zu(C.location,C.matches,s,d.v7_prependBasename,M,d.v7_relativeSplatPath,_,L==null?void 0:L.relative),A=cr(H,J,s),K=Hi(A,H,J);if(K.active&&K.matches&&(A=K.matches),!A){qt(E,_,Ze(404,{pathname:J}),{flushSync:$});return}let{path:U,submission:B,error:ue}=rp(d.v7_normalizeFormMethod,!0,J,L);if(ue){qt(E,_,ue,{flushSync:$});return}let ce=Bo(A,U);if(T=(L&&L.preventScrollReset)===!0,B&&Tt(B.formMethod)){Uy(E,_,U,ce,A,K.active,$,B);return}Ne.set(E,{routeId:_,path:U}),By(E,_,U,ce,A,K.active,$,B)}async function Uy(E,_,M,L,$,H,J,A){Ya(),Ne.delete(E);function K(Pe){if(!Pe.route.action&&!Pe.route.lazy){let nn=Ze(405,{method:A.formMethod,pathname:M,routeId:_});return qt(E,_,nn,{flushSync:J}),!0}return!1}if(!H&&K(L))return;let U=C.fetchers.get(E);Rn(E,wx(A,U),{flushSync:J});let B=new AbortController,ue=Tr(e.history,M,B.signal,A);if(H){let Pe=await Gi($,M,ue.signal);if(Pe.type==="aborted")return;if(Pe.type==="error"){let{error:nn}=Bi(M,Pe);qt(E,_,nn,{flushSync:J});return}else if(Pe.matches){if($=Pe.matches,L=Bo($,M),K(L))return}else{qt(E,_,Ze(404,{pathname:M}),{flushSync:J});return}}N.set(E,B);let ce=z,le=(await Ro("action",C,ue,[L],$,E))[L.route.id];if(ue.signal.aborted){N.get(E)===B&&N.delete(E);return}if(d.v7_fetcherPersist&&ge.has(E)){if(gr(le)||pt(le)){Rn(E,Dn(void 0));return}}else{if(gr(le))if(N.delete(E),W>ce){Rn(E,Dn(void 0));return}else return De.add(E),Rn(E,Oo(A)),ar(ue,le,!1,{fetcherSubmission:A});if(pt(le)){qt(E,_,le.error);return}}if(jn(le))throw Ze(400,{type:"defer-action"});let be=C.navigation.location||C.location,Ie=Tr(e.history,be,B.signal),Eo=a||l,en=C.navigation.state!=="idle"?cr(Eo,C.navigation.location,s):C.matches;te(en,"Didn't find any matches after fetcher action");let Nr=++z;oe.set(E,Nr);let _n=Oo(A,le.data);C.fetchers.set(E,_n);let[Wi,tn]=op(e.history,C,en,A,be,!1,d.v7_skipActionErrorRevalidation,Z,ie,I,ge,Ne,De,Eo,s,[L.route.id,le]);tn.filter(Pe=>Pe.key!==E).forEach(Pe=>{let nn=Pe.key,Bd=C.fetchers.get(nn),Yy=Oo(void 0,Bd?Bd.data:void 0);C.fetchers.set(nn,Yy),N.has(nn)&&En(nn),Pe.controller&&N.set(nn,Pe.controller)}),je({fetchers:new Map(C.fetchers)});let Ki=()=>tn.forEach(Pe=>En(Pe.key));B.signal.addEventListener("abort",Ki);let{loaderResults:Qi,fetcherResults:Xi}=await Ld(C,en,Wi,tn,Ie);if(B.signal.aborted)return;B.signal.removeEventListener("abort",Ki),oe.delete(E),N.delete(E),tn.forEach(Pe=>N.delete(Pe.key));let ee=pl(Qi);if(ee)return ar(Ie,ee.result,!1);if(ee=pl(Xi),ee)return De.add(ee.key),ar(Ie,ee.result,!1);let{loaderData:_e,errors:dt}=sp(C,en,Wi,Qi,void 0,tn,Xi,Ee);if(C.fetchers.has(E)){let Pe=Dn(le.data);C.fetchers.set(E,Pe)}jd(Nr),C.navigation.state==="loading"&&Nr>W?(te(F,"Expected pending action"),b&&b.abort(),Cn(C.navigation.location,{matches:en,loaderData:_e,errors:dt,fetchers:new Map(C.fetchers)})):(je({errors:dt,loaderData:up(C.loaderData,_e,en,dt),fetchers:new Map(C.fetchers)}),Z=!1)}async function By(E,_,M,L,$,H,J,A){let K=C.fetchers.get(E);Rn(E,Oo(A,K?K.data:void 0),{flushSync:J});let U=new AbortController,B=Tr(e.history,M,U.signal);if(H){let le=await Gi($,M,B.signal);if(le.type==="aborted")return;if(le.type==="error"){let{error:be}=Bi(M,le);qt(E,_,be,{flushSync:J});return}else if(le.matches)$=le.matches,L=Bo($,M);else{qt(E,_,Ze(404,{pathname:M}),{flushSync:J});return}}N.set(E,U);let ue=z,he=(await Ro("loader",C,B,[L],$,E))[L.route.id];if(jn(he)&&(he=await qc(he,B.signal,!0)||he),N.get(E)===U&&N.delete(E),!B.signal.aborted){if(ge.has(E)){Rn(E,Dn(void 0));return}if(gr(he))if(W>ue){Rn(E,Dn(void 0));return}else{De.add(E),await ar(B,he,!1);return}if(pt(he)){qt(E,_,he.error);return}te(!jn(he),"Unhandled fetcher deferred data"),Rn(E,Dn(he.data))}}async function ar(E,_,M,L){let{submission:$,fetcherSubmission:H,replace:J}=L===void 0?{}:L;_.response.headers.has("X-Remix-Revalidate")&&(Z=!0);let A=_.response.headers.get("Location");te(A,"Expected a Location header on the redirect Response"),A=lp(A,new URL(E.url),s);let K=yi(C.location,A,{_isRedirect:!0});if(n){let le=!1;if(_.response.headers.has("X-Remix-Reload-Document"))le=!0;else if(Jc.test(A)){const be=e.history.createURL(A);le=be.origin!==t.location.origin||vn(be.pathname,s)==null}if(le){J?t.location.replace(A):t.location.assign(A);return}}b=null;let U=J===!0||_.response.headers.has("X-Remix-Replace")?Te.Replace:Te.Push,{formMethod:B,formAction:ue,formEncType:ce}=C.navigation;!$&&!H&&B&&ue&&ce&&($=pp(C.navigation));let he=$||H;if(YS.has(_.response.status)&&he&&Tt(he.formMethod))await Jt(U,K,{submission:Se({},he,{formAction:A}),preventScrollReset:T,enableViewTransition:M?j:void 0});else{let le=Ms(K,$);await Jt(U,K,{overrideNavigation:le,fetcherSubmission:H,preventScrollReset:T,enableViewTransition:M?j:void 0})}}async function Ro(E,_,M,L,$,H){let J,A={};try{J=await lx(u,E,_,M,L,$,H,i,o)}catch(K){return L.forEach(U=>{A[U.route.id]={type:fe.error,error:K}}),A}for(let[K,U]of Object.entries(J))if(px(U)){let B=U.result;A[K]={type:fe.redirect,response:ux(B,M,K,$,s,d.v7_relativeSplatPath)}}else A[K]=await sx(U);return A}async function Ld(E,_,M,L,$){let H=E.matches,J=Ro("loader",E,$,M,_,null),A=Promise.all(L.map(async B=>{if(B.matches&&B.match&&B.controller){let ce=(await Ro("loader",E,Tr(e.history,B.path,B.controller.signal),[B.match],B.matches,B.key))[B.match.route.id];return{[B.key]:ce}}else return Promise.resolve({[B.key]:{type:fe.error,error:Ze(404,{pathname:B.path})}})})),K=await J,U=(await A).reduce((B,ue)=>Object.assign(B,ue),{});return await Promise.all([mx(_,K,$.signal,H,E.loaderData),vx(_,U,L)]),{loaderResults:K,fetcherResults:U}}function Ya(){Z=!0,ie.push(...Ja()),Ne.forEach((E,_)=>{N.has(_)&&(I.add(_),En(_))})}function Rn(E,_,M){M===void 0&&(M={}),C.fetchers.set(E,_),je({fetchers:new Map(C.fetchers)},{flushSync:(M&&M.flushSync)===!0})}function qt(E,_,M,L){L===void 0&&(L={});let $=Qr(C.matches,_);Vi(E),je({errors:{[$.route.id]:M},fetchers:new Map(C.fetchers)},{flushSync:(L&&L.flushSync)===!0})}function Od(E){return d.v7_fetcherPersist&&(rt.set(E,(rt.get(E)||0)+1),ge.has(E)&&ge.delete(E)),C.fetchers.get(E)||ZS}function Vi(E){let _=C.fetchers.get(E);N.has(E)&&!(_&&_.state==="loading"&&oe.has(E))&&En(E),Ne.delete(E),oe.delete(E),De.delete(E),ge.delete(E),I.delete(E),C.fetchers.delete(E)}function Hy(E){if(d.v7_fetcherPersist){let _=(rt.get(E)||0)-1;_<=0?(rt.delete(E),ge.add(E)):rt.set(E,_)}else Vi(E);je({fetchers:new Map(C.fetchers)})}function En(E){let _=N.get(E);te(_,"Expected fetch controller: "+E),_.abort(),N.delete(E)}function Fd(E){for(let _ of E){let M=Od(_),L=Dn(M.data);C.fetchers.set(_,L)}}function Ad(){let E=[],_=!1;for(let M of De){let L=C.fetchers.get(M);te(L,"Expected fetcher: "+M),L.state==="loading"&&(De.delete(M),E.push(M),_=!0)}return Fd(E),_}function jd(E){let _=[];for(let[M,L]of oe)if(L0}function Gy(E,_){let M=C.blockers.get(E)||Lo;return ct.get(E)!==_&&ct.set(E,_),M}function bd(E){C.blockers.delete(E),ct.delete(E)}function Ui(E,_){let M=C.blockers.get(E)||Lo;te(M.state==="unblocked"&&_.state==="blocked"||M.state==="blocked"&&_.state==="blocked"||M.state==="blocked"&&_.state==="proceeding"||M.state==="blocked"&&_.state==="unblocked"||M.state==="proceeding"&&_.state==="unblocked","Invalid blocker state transition: "+M.state+" -> "+_.state);let L=new Map(C.blockers);L.set(E,_),je({blockers:L})}function zd(E){let{currentLocation:_,nextLocation:M,historyAction:L}=E;if(ct.size===0)return;ct.size>1&&po(!1,"A router only supports one blocker at a time");let $=Array.from(ct.entries()),[H,J]=$[$.length-1],A=C.blockers.get(H);if(!(A&&A.state==="proceeding")&&J({currentLocation:_,nextLocation:M,historyAction:L}))return H}function Za(E){let _=Ze(404,{pathname:E}),M=a||l,{matches:L,route:$}=dp(M);return Ja(),{notFoundMatches:L,route:$,error:_}}function Bi(E,_){return{boundaryId:Qr(_.partialMatches).route.id,error:Ze(400,{type:"route-discovery",pathname:E,message:_.error!=null&&"message"in _.error?_.error:String(_.error)})}}function Ja(E){let _=[];return Ee.forEach((M,L)=>{(!E||E(L))&&(M.cancel(),_.push(L),Ee.delete(L))}),_}function Wy(E,_,M){if(S=E,h=_,g=M||null,!w&&C.navigation===Ps){w=!0;let L=Vd(C.location,C.matches);L!=null&&je({restoreScrollPosition:L})}return()=>{S=null,h=null,g=null}}function $d(E,_){return g&&g(E,_.map(L=>kS(L,C.loaderData)))||E.key}function Ky(E,_){if(S&&h){let M=$d(E,_);S[M]=h()}}function Vd(E,_){if(S){let M=$d(E,_),L=S[M];if(typeof L=="number")return L}return null}function Hi(E,_,M){if(c){if(m.has(M))return{active:!1,matches:E};if(E){if(Object.keys(E[0].params).length>0)return{active:!0,matches:Fl(_,M,s,!0)}}else return{active:!0,matches:Fl(_,M,s,!0)||[]}}return{active:!1,matches:null}}async function Gi(E,_,M){let L=E;for(;;){let $=a==null,H=a||l;try{await rx(c,_,L,H,i,o,ot,M)}catch(K){return{type:"error",error:K,partialMatches:L}}finally{$&&(l=[...l])}if(M.aborted)return{type:"aborted"};let J=cr(H,_,s);if(J)return Ud(_,m),{type:"success",matches:J};let A=Fl(H,_,s,!0);if(!A||L.length===A.length&&L.every((K,U)=>K.route.id===A[U].route.id))return Ud(_,m),{type:"success",matches:null};L=A}}function Ud(E,_){if(_.size>=y){let M=_.values().next().value;_.delete(M)}_.add(E)}function Qy(E){i={},a=wi(E,o,void 0,i)}function Xy(E,_){let M=a==null;xm(E,_,a||l,i,o),M&&(l=[...l],je({}))}return k={get basename(){return s},get future(){return d},get state(){return C},get routes(){return l},get window(){return t},initialize:bi,subscribe:lr,enableScrollRestoration:Wy,navigate:$i,fetch:Vy,revalidate:Xa,createHref:E=>e.history.createHref(E),encodeLocation:E=>e.history.encodeLocation(E),getFetcher:Od,deleteFetcher:Hy,dispose:zi,getBlocker:Gy,deleteBlocker:bd,patchRoutes:Xy,_internalFetchControllers:N,_internalActiveDeferreds:Ee,_internalSetRoutes:Qy},k}function ex(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function zu(e,t,n,r,o,i,l,a){let s,u;if(l){s=[];for(let d of t)if(s.push(d),d.route.id===l){u=d;break}}else s=t,u=t[t.length-1];let c=Zc(o||".",Yc(s,i),vn(e.pathname,n)||e.pathname,a==="path");return o==null&&(c.search=e.search,c.hash=e.hash),(o==null||o===""||o===".")&&u&&u.route.index&&!ed(c.search)&&(c.search=c.search?c.search.replace(/^\?/,"?index&"):"?index"),r&&n!=="/"&&(c.pathname=c.pathname==="/"?n:fn([n,c.pathname])),Cr(c)}function rp(e,t,n,r){if(!r||!ex(r))return{path:n};if(r.formMethod&&!hx(r.formMethod))return{path:n,error:Ze(405,{method:r.formMethod})};let o=()=>({path:n,error:Ze(400,{type:"invalid-body"})}),i=r.formMethod||"get",l=e?i.toUpperCase():i.toLowerCase(),a=Cm(n);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!Tt(l))return o();let f=typeof r.body=="string"?r.body:r.body instanceof FormData||r.body instanceof URLSearchParams?Array.from(r.body.entries()).reduce((p,y)=>{let[m,S]=y;return""+p+m+"="+S+` +`},""):String(r.body);return{path:n,submission:{formMethod:l,formAction:a,formEncType:r.formEncType,formData:void 0,json:void 0,text:f}}}else if(r.formEncType==="application/json"){if(!Tt(l))return o();try{let f=typeof r.body=="string"?JSON.parse(r.body):r.body;return{path:n,submission:{formMethod:l,formAction:a,formEncType:r.formEncType,formData:void 0,json:f,text:void 0}}}catch{return o()}}}te(typeof FormData=="function","FormData is not available in this environment");let s,u;if(r.formData)s=$u(r.formData),u=r.formData;else if(r.body instanceof FormData)s=$u(r.body),u=r.body;else if(r.body instanceof URLSearchParams)s=r.body,u=ap(s);else if(r.body==null)s=new URLSearchParams,u=new FormData;else try{s=new URLSearchParams(r.body),u=ap(s)}catch{return o()}let c={formMethod:l,formAction:a,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:u,json:void 0,text:void 0};if(Tt(c.formMethod))return{path:n,submission:c};let d=nr(n);return t&&d.search&&ed(d.search)&&s.append("index",""),d.search="?"+s,{path:Cr(d),submission:c}}function tx(e,t){let n=e;if(t){let r=e.findIndex(o=>o.route.id===t);r>=0&&(n=e.slice(0,r))}return n}function op(e,t,n,r,o,i,l,a,s,u,c,d,f,p,y,m){let S=m?pt(m[1])?m[1].error:m[1].data:void 0,g=e.createURL(t.location),h=e.createURL(o),w=m&&pt(m[1])?m[0]:void 0,x=w?tx(n,w):n,P=m?m[1].statusCode:void 0,D=l&&P&&P>=400,k=x.filter((F,T)=>{let{route:b}=F;if(b.lazy)return!0;if(b.loader==null)return!1;if(i)return typeof b.loader!="function"||b.loader.hydrate?!0:t.loaderData[b.id]===void 0&&(!t.errors||t.errors[b.id]===void 0);if(nx(t.loaderData,t.matches[T],F)||s.some(G=>G===F.route.id))return!0;let j=t.matches[T],Q=F;return ip(F,Se({currentUrl:g,currentParams:j.params,nextUrl:h,nextParams:Q.params},r,{actionResult:S,actionStatus:P,defaultShouldRevalidate:D?!1:a||g.pathname+g.search===h.pathname+h.search||g.search!==h.search||Sm(j,Q)}))}),C=[];return d.forEach((F,T)=>{if(i||!n.some(se=>se.route.id===F.routeId)||c.has(T))return;let b=cr(p,F.path,y);if(!b){C.push({key:T,routeId:F.routeId,path:F.path,matches:null,match:null,controller:null});return}let j=t.fetchers.get(T),Q=Bo(b,F.path),G=!1;f.has(T)?G=!1:u.has(T)?(u.delete(T),G=!0):j&&j.state!=="idle"&&j.data===void 0?G=a:G=ip(Q,Se({currentUrl:g,currentParams:t.matches[t.matches.length-1].params,nextUrl:h,nextParams:n[n.length-1].params},r,{actionResult:S,actionStatus:P,defaultShouldRevalidate:D?!1:a})),G&&C.push({key:T,routeId:F.routeId,path:F.path,matches:b,match:Q,controller:new AbortController})}),[k,C]}function nx(e,t,n){let r=!t||n.route.id!==t.route.id,o=e[n.route.id]===void 0;return r||o}function Sm(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function ip(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}async function rx(e,t,n,r,o,i,l,a){let s=[t,...n.map(u=>u.route.id)].join("-");try{let u=l.get(s);u||(u=e({path:t,matches:n,patch:(c,d)=>{a.aborted||xm(c,d,r,o,i)}}),l.set(s,u)),u&&fx(u)&&await u}finally{l.delete(s)}}function xm(e,t,n,r,o){if(e){var i;let l=r[e];te(l,"No route found to patch children into: routeId = "+e);let a=wi(t,o,[e,"patch",String(((i=l.children)==null?void 0:i.length)||"0")],r);l.children?l.children.push(...a):l.children=a}else{let l=wi(t,o,["patch",String(n.length||"0")],r);n.push(...l)}}async function ox(e,t,n){if(!e.lazy)return;let r=await e.lazy();if(!e.lazy)return;let o=n[e.id];te(o,"No route found in manifest");let i={};for(let l in r){let s=o[l]!==void 0&&l!=="hasErrorBoundary";po(!s,'Route "'+o.id+'" has a static property "'+l+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+l+'" will be ignored.')),!s&&!PS.has(l)&&(i[l]=r[l])}Object.assign(o,i),Object.assign(o,Se({},t(o),{lazy:void 0}))}async function ix(e){let{matches:t}=e,n=t.filter(o=>o.shouldLoad);return(await Promise.all(n.map(o=>o.resolve()))).reduce((o,i,l)=>Object.assign(o,{[n[l].route.id]:i}),{})}async function lx(e,t,n,r,o,i,l,a,s,u){let c=i.map(p=>p.route.lazy?ox(p.route,s,a):void 0),d=i.map((p,y)=>{let m=c[y],S=o.some(h=>h.route.id===p.route.id);return Se({},p,{shouldLoad:S,resolve:async h=>(h&&r.method==="GET"&&(p.route.lazy||p.route.loader)&&(S=!0),S?ax(t,r,p,m,h,u):Promise.resolve({type:fe.data,result:void 0}))})}),f=await e({matches:d,request:r,params:i[0].params,fetcherKey:l,context:u});try{await Promise.all(c)}catch{}return f}async function ax(e,t,n,r,o,i){let l,a,s=u=>{let c,d=new Promise((y,m)=>c=m);a=()=>c(),t.signal.addEventListener("abort",a);let f=y=>typeof u!="function"?Promise.reject(new Error("You cannot call the handler for a route which defines a boolean "+('"'+e+'" [routeId: '+n.route.id+"]"))):u({request:t,params:n.params,context:i},...y!==void 0?[y]:[]),p=(async()=>{try{return{type:"data",result:await(o?o(m=>f(m)):f())}}catch(y){return{type:"error",result:y}}})();return Promise.race([p,d])};try{let u=n.route[e];if(r)if(u){let c,[d]=await Promise.all([s(u).catch(f=>{c=f}),r]);if(c!==void 0)throw c;l=d}else if(await r,u=n.route[e],u)l=await s(u);else if(e==="action"){let c=new URL(t.url),d=c.pathname+c.search;throw Ze(405,{method:t.method,pathname:d,routeId:n.route.id})}else return{type:fe.data,result:void 0};else if(u)l=await s(u);else{let c=new URL(t.url),d=c.pathname+c.search;throw Ze(404,{pathname:d})}te(l.result!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+n.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(u){return{type:fe.error,result:u}}finally{a&&t.signal.removeEventListener("abort",a)}return l}async function sx(e){let{result:t,type:n}=e;if(Rm(t)){let u;try{let c=t.headers.get("Content-Type");c&&/\bapplication\/json\b/.test(c)?t.body==null?u=null:u=await t.json():u=await t.text()}catch(c){return{type:fe.error,error:c}}return n===fe.error?{type:fe.error,error:new ca(t.status,t.statusText,u),statusCode:t.status,headers:t.headers}:{type:fe.data,data:u,statusCode:t.status,headers:t.headers}}if(n===fe.error){if(fp(t)){var r;if(t.data instanceof Error){var o;return{type:fe.error,error:t.data,statusCode:(o=t.init)==null?void 0:o.status}}t=new ca(((r=t.init)==null?void 0:r.status)||500,void 0,t.data)}return{type:fe.error,error:t,statusCode:Aa(t)?t.status:void 0}}if(gx(t)){var i,l;return{type:fe.deferred,deferredData:t,statusCode:(i=t.init)==null?void 0:i.status,headers:((l=t.init)==null?void 0:l.headers)&&new Headers(t.init.headers)}}if(fp(t)){var a,s;return{type:fe.data,data:t.data,statusCode:(a=t.init)==null?void 0:a.status,headers:(s=t.init)!=null&&s.headers?new Headers(t.init.headers):void 0}}return{type:fe.data,data:t}}function ux(e,t,n,r,o,i){let l=e.headers.get("Location");if(te(l,"Redirects returned/thrown from loaders/actions must have a Location header"),!Jc.test(l)){let a=r.slice(0,r.findIndex(s=>s.route.id===n)+1);l=zu(new URL(t.url),a,o,!0,l,i),e.headers.set("Location",l)}return e}function lp(e,t,n){if(Jc.test(e)){let r=e,o=r.startsWith("//")?new URL(t.protocol+r):new URL(r),i=vn(o.pathname,n)!=null;if(o.origin===t.origin&&i)return o.pathname+o.search+o.hash}return e}function Tr(e,t,n,r){let o=e.createURL(Cm(t)).toString(),i={signal:n};if(r&&Tt(r.formMethod)){let{formMethod:l,formEncType:a}=r;i.method=l.toUpperCase(),a==="application/json"?(i.headers=new Headers({"Content-Type":a}),i.body=JSON.stringify(r.json)):a==="text/plain"?i.body=r.text:a==="application/x-www-form-urlencoded"&&r.formData?i.body=$u(r.formData):i.body=r.formData}return new Request(o,i)}function $u(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function ap(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function cx(e,t,n,r,o){let i={},l=null,a,s=!1,u={},c=n&&pt(n[1])?n[1].error:void 0;return e.forEach(d=>{if(!(d.route.id in t))return;let f=d.route.id,p=t[f];if(te(!gr(p),"Cannot handle redirect results in processLoaderData"),pt(p)){let y=p.error;c!==void 0&&(y=c,c=void 0),l=l||{};{let m=Qr(e,f);l[m.route.id]==null&&(l[m.route.id]=y)}i[f]=void 0,s||(s=!0,a=Aa(p.error)?p.error.status:500),p.headers&&(u[f]=p.headers)}else jn(p)?(r.set(f,p.deferredData),i[f]=p.deferredData.data,p.statusCode!=null&&p.statusCode!==200&&!s&&(a=p.statusCode),p.headers&&(u[f]=p.headers)):(i[f]=p.data,p.statusCode&&p.statusCode!==200&&!s&&(a=p.statusCode),p.headers&&(u[f]=p.headers))}),c!==void 0&&n&&(l={[n[0]]:c},i[n[0]]=void 0),{loaderData:i,errors:l,statusCode:a||200,loaderHeaders:u}}function sp(e,t,n,r,o,i,l,a){let{loaderData:s,errors:u}=cx(t,r,o,a);return i.forEach(c=>{let{key:d,match:f,controller:p}=c,y=l[d];if(te(y,"Did not find corresponding fetcher result"),!(p&&p.signal.aborted))if(pt(y)){let m=Qr(e.matches,f==null?void 0:f.route.id);u&&u[m.route.id]||(u=Se({},u,{[m.route.id]:y.error})),e.fetchers.delete(d)}else if(gr(y))te(!1,"Unhandled fetcher revalidation redirect");else if(jn(y))te(!1,"Unhandled fetcher deferred data");else{let m=Dn(y.data);e.fetchers.set(d,m)}}),{loaderData:s,errors:u}}function up(e,t,n,r){let o=Se({},t);for(let i of n){let l=i.route.id;if(t.hasOwnProperty(l)?t[l]!==void 0&&(o[l]=t[l]):e[l]!==void 0&&i.route.loader&&(o[l]=e[l]),r&&r.hasOwnProperty(l))break}return o}function cp(e){return e?pt(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function Qr(e,t){return(t?e.slice(0,e.findIndex(r=>r.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function dp(e){let t=e.length===1?e[0]:e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function Ze(e,t){let{pathname:n,routeId:r,method:o,type:i,message:l}=t===void 0?{}:t,a="Unknown Server Error",s="Unknown @remix-run/router error";return e===400?(a="Bad Request",i==="route-discovery"?s='Unable to match URL "'+n+'" - the `unstable_patchRoutesOnNavigation()` '+(`function threw the following error: +`+l):o&&n&&r?s="You made a "+o+' request to "'+n+'" but '+('did not provide a `loader` for route "'+r+'", ')+"so there is no way to handle the request.":i==="defer-action"?s="defer() is not supported in actions":i==="invalid-body"&&(s="Unable to encode submission body")):e===403?(a="Forbidden",s='Route "'+r+'" does not match URL "'+n+'"'):e===404?(a="Not Found",s='No route matches URL "'+n+'"'):e===405&&(a="Method Not Allowed",o&&n&&r?s="You made a "+o.toUpperCase()+' request to "'+n+'" but '+('did not provide an `action` for route "'+r+'", ')+"so there is no way to handle the request.":o&&(s='Invalid request method "'+o.toUpperCase()+'"')),new ca(e||500,a,new Error(s),!0)}function pl(e){let t=Object.entries(e);for(let n=t.length-1;n>=0;n--){let[r,o]=t[n];if(gr(o))return{key:r,result:o}}}function Cm(e){let t=typeof e=="string"?nr(e):e;return Cr(Se({},t,{hash:""}))}function dx(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function fx(e){return typeof e=="object"&&e!=null&&"then"in e}function px(e){return Rm(e.result)&&XS.has(e.result.status)}function jn(e){return e.type===fe.deferred}function pt(e){return e.type===fe.error}function gr(e){return(e&&e.type)===fe.redirect}function fp(e){return typeof e=="object"&&e!=null&&"type"in e&&"data"in e&&"init"in e&&e.type==="DataWithResponseInit"}function gx(e){let t=e;return t&&typeof t=="object"&&typeof t.data=="object"&&typeof t.subscribe=="function"&&typeof t.cancel=="function"&&typeof t.resolveData=="function"}function Rm(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function hx(e){return QS.has(e.toLowerCase())}function Tt(e){return WS.has(e.toLowerCase())}async function mx(e,t,n,r,o){let i=Object.entries(t);for(let l=0;l(f==null?void 0:f.route.id)===a);if(!u)continue;let c=r.find(f=>f.route.id===u.route.id),d=c!=null&&!Sm(c,u)&&(o&&o[u.route.id])!==void 0;jn(s)&&d&&await qc(s,n,!1).then(f=>{f&&(t[a]=f)})}}async function vx(e,t,n){for(let r=0;r(u==null?void 0:u.route.id)===i)&&jn(a)&&(te(l,"Expected an AbortController for revalidating fetcher deferred result"),await qc(a,l.signal,!0).then(u=>{u&&(t[o]=u)}))}}async function qc(e,t,n){if(n===void 0&&(n=!1),!await e.deferredData.resolveData(t)){if(n)try{return{type:fe.data,data:e.deferredData.unwrappedData}}catch(o){return{type:fe.error,error:o}}return{type:fe.data,data:e.deferredData.data}}}function ed(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function Bo(e,t){let n=typeof t=="string"?nr(t).search:t.search;if(e[e.length-1].route.index&&ed(n||""))return e[e.length-1];let r=vm(e);return r[r.length-1]}function pp(e){let{formMethod:t,formAction:n,formEncType:r,text:o,formData:i,json:l}=e;if(!(!t||!n||!r)){if(o!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:o};if(i!=null)return{formMethod:t,formAction:n,formEncType:r,formData:i,json:void 0,text:void 0};if(l!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:l,text:void 0}}}function Ms(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function yx(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function Oo(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function wx(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function Dn(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function Sx(e,t){try{let n=e.sessionStorage.getItem(wm);if(n){let r=JSON.parse(n);for(let[o,i]of Object.entries(r||{}))i&&Array.isArray(i)&&t.set(o,new Set(i||[]))}}catch{}}function xx(e,t){if(t.size>0){let n={};for(let[r,o]of t)n[r]=[...o];try{e.sessionStorage.setItem(wm,JSON.stringify(n))}catch(r){po(!1,"Failed to save applied view transitions in sessionStorage ("+r+").")}}}/** + * React Router v6.26.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function da(){return da=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.current=!0}),v.useCallback(function(u,c){if(c===void 0&&(c={}),!a.current)return;if(typeof u=="number"){r.go(u);return}let d=Zc(u,JSON.parse(l),i,c.relative==="path");e==null&&t!=="/"&&(d.pathname=d.pathname==="/"?t:fn([t,d.pathname])),(c.replace?r.replace:r.push)(d,c.state,c)},[t,r,l,i,e])}const _x=v.createContext(null);function Px(e){let t=v.useContext(or).outlet;return t&&v.createElement(_x.Provider,{value:e},t)}function ja(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=v.useContext(rr),{matches:o}=v.useContext(or),{pathname:i}=Li(),l=JSON.stringify(Yc(o,r.v7_relativeSplatPath));return v.useMemo(()=>Zc(e,JSON.parse(l),i,n==="path"),[e,l,i,n])}function Mx(e,t,n,r){Ti()||te(!1);let{navigator:o}=v.useContext(rr),{matches:i}=v.useContext(or),l=i[i.length-1],a=l?l.params:{};l&&l.pathname;let s=l?l.pathnameBase:"/";l&&l.route;let u=Li(),c;c=u;let d=c.pathname||"/",f=d;if(s!=="/"){let m=s.replace(/^\//,"").split("/");f="/"+d.replace(/^\//,"").split("/").slice(m.length).join("/")}let p=cr(e,{pathname:f});return Tx(p&&p.map(m=>Object.assign({},m,{params:Object.assign({},a,m.params),pathname:fn([s,o.encodeLocation?o.encodeLocation(m.pathname).pathname:m.pathname]),pathnameBase:m.pathnameBase==="/"?s:fn([s,o.encodeLocation?o.encodeLocation(m.pathnameBase).pathname:m.pathnameBase])})),i,n,r)}function kx(){let e=Ax(),t=Aa(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return v.createElement(v.Fragment,null,v.createElement("h2",null,"Unexpected Application Error!"),v.createElement("h3",{style:{fontStyle:"italic"}},t),n?v.createElement("pre",{style:o},n):null,null)}const Dx=v.createElement(kx,null);class Nx extends v.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?v.createElement(or.Provider,{value:this.props.routeContext},v.createElement(Em.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Ix(e){let{routeContext:t,match:n,children:r}=e,o=v.useContext(Ii);return o&&o.static&&o.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=n.route.id),v.createElement(or.Provider,{value:t},r)}function Tx(e,t,n,r){var o;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var i;if(!n)return null;if(n.errors)e=n.matches;else if((i=r)!=null&&i.v7_partialHydration&&t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let l=e,a=(o=n)==null?void 0:o.errors;if(a!=null){let c=l.findIndex(d=>d.route.id&&(a==null?void 0:a[d.route.id])!==void 0);c>=0||te(!1),l=l.slice(0,Math.min(l.length,c+1))}let s=!1,u=-1;if(n&&r&&r.v7_partialHydration)for(let c=0;c=0?l=l.slice(0,u+1):l=[l[0]];break}}}return l.reduceRight((c,d,f)=>{let p,y=!1,m=null,S=null;n&&(p=a&&d.route.id?a[d.route.id]:void 0,m=d.route.errorElement||Dx,s&&(u<0&&f===0?(bx("route-fallback"),y=!0,S=null):u===f&&(y=!0,S=d.route.hydrateFallbackElement||null)));let g=t.concat(l.slice(0,f+1)),h=()=>{let w;return p?w=m:y?w=S:d.route.Component?w=v.createElement(d.route.Component,null):d.route.element?w=d.route.element:w=c,v.createElement(Ix,{match:d,routeContext:{outlet:c,matches:g,isDataRoute:n!=null},children:w})};return n&&(d.route.ErrorBoundary||d.route.errorElement||f===0)?v.createElement(Nx,{location:n.location,revalidation:n.revalidation,component:m,error:p,children:h(),routeContext:{outlet:null,matches:g,isDataRoute:!0}}):h()},null)}var Pm=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(Pm||{}),Mm=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Mm||{});function Lx(e){let t=v.useContext(Ii);return t||te(!1),t}function Ox(e){let t=v.useContext(td);return t||te(!1),t}function Fx(e){let t=v.useContext(or);return t||te(!1),t}function km(e){let t=Fx(),n=t.matches[t.matches.length-1];return n.route.id||te(!1),n.route.id}function Ax(){var e;let t=v.useContext(Em),n=Ox(),r=km();return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function jx(){let{router:e}=Lx(Pm.UseNavigateStable),t=km(Mm.UseNavigateStable),n=v.useRef(!1);return _m(()=>{n.current=!0}),v.useCallback(function(o,i){i===void 0&&(i={}),n.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,da({fromRouteId:t},i)))},[e,t])}const gp={};function bx(e,t,n){gp[e]||(gp[e]=!0)}function zx(e){return Px(e.context)}function $x(e){let{basename:t="/",children:n=null,location:r,navigationType:o=Te.Pop,navigator:i,static:l=!1,future:a}=e;Ti()&&te(!1);let s=t.replace(/^\/*/,"/"),u=v.useMemo(()=>({basename:s,navigator:i,static:l,future:da({v7_relativeSplatPath:!1},a)}),[s,a,i,l]);typeof r=="string"&&(r=nr(r));let{pathname:c="/",search:d="",hash:f="",state:p=null,key:y="default"}=r,m=v.useMemo(()=>{let S=vn(c,s);return S==null?null:{location:{pathname:S,search:d,hash:f,state:p,key:y},navigationType:o}},[s,c,d,f,p,y,o]);return m==null?null:v.createElement(rr.Provider,{value:u},v.createElement(nd.Provider,{children:n,value:m}))}new Promise(()=>{});function Vx(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:v.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:v.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:v.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}/** + * React Router DOM v6.26.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function go(){return go=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function Ux(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Bx(e,t){return e.button===0&&(!t||t==="_self")&&!Ux(e)}const Hx=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],Gx=["aria-current","caseSensitive","className","end","style","to","unstable_viewTransition","children"],Wx="6";try{window.__reactRouterVersion=Wx}catch{}function Kx(e,t){return qS({basename:t==null?void 0:t.basename,future:go({},t==null?void 0:t.future,{v7_prependBasename:!0}),history:RS({window:t==null?void 0:t.window}),hydrationData:(t==null?void 0:t.hydrationData)||Qx(),routes:e,mapRouteProperties:Vx,unstable_dataStrategy:t==null?void 0:t.unstable_dataStrategy,unstable_patchRoutesOnNavigation:t==null?void 0:t.unstable_patchRoutesOnNavigation,window:t==null?void 0:t.window}).initialize()}function Qx(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=go({},t,{errors:Xx(t.errors)})),t}function Xx(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,o]of t)if(o&&o.__type==="RouteErrorResponse")n[r]=new ca(o.status,o.statusText,o.data,o.internal===!0);else if(o&&o.__type==="Error"){if(o.__subType){let i=window[o.__subType];if(typeof i=="function")try{let l=new i(o.message);l.stack="",n[r]=l}catch{}}if(n[r]==null){let i=new Error(o.message);i.stack="",n[r]=i}}else n[r]=o;return n}const Nm=v.createContext({isTransitioning:!1}),Yx=v.createContext(new Map),Zx="startTransition",hp=ic[Zx],Jx="flushSync",mp=CS[Jx];function qx(e){hp?hp(e):e()}function Fo(e){mp?mp(e):e()}class eC{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function tC(e){let{fallbackElement:t,router:n,future:r}=e,[o,i]=v.useState(n.state),[l,a]=v.useState(),[s,u]=v.useState({isTransitioning:!1}),[c,d]=v.useState(),[f,p]=v.useState(),[y,m]=v.useState(),S=v.useRef(new Map),{v7_startTransition:g}=r||{},h=v.useCallback(C=>{g?qx(C):C()},[g]),w=v.useCallback((C,F)=>{let{deletedFetchers:T,unstable_flushSync:b,unstable_viewTransitionOpts:j}=F;T.forEach(G=>S.current.delete(G)),C.fetchers.forEach((G,se)=>{G.data!==void 0&&S.current.set(se,G.data)});let Q=n.window==null||n.window.document==null||typeof n.window.document.startViewTransition!="function";if(!j||Q){b?Fo(()=>i(C)):h(()=>i(C));return}if(b){Fo(()=>{f&&(c&&c.resolve(),f.skipTransition()),u({isTransitioning:!0,flushSync:!0,currentLocation:j.currentLocation,nextLocation:j.nextLocation})});let G=n.window.document.startViewTransition(()=>{Fo(()=>i(C))});G.finished.finally(()=>{Fo(()=>{d(void 0),p(void 0),a(void 0),u({isTransitioning:!1})})}),Fo(()=>p(G));return}f?(c&&c.resolve(),f.skipTransition(),m({state:C,currentLocation:j.currentLocation,nextLocation:j.nextLocation})):(a(C),u({isTransitioning:!0,flushSync:!1,currentLocation:j.currentLocation,nextLocation:j.nextLocation}))},[n.window,f,c,S,h]);v.useLayoutEffect(()=>n.subscribe(w),[n,w]),v.useEffect(()=>{s.isTransitioning&&!s.flushSync&&d(new eC)},[s]),v.useEffect(()=>{if(c&&l&&n.window){let C=l,F=c.promise,T=n.window.document.startViewTransition(async()=>{h(()=>i(C)),await F});T.finished.finally(()=>{d(void 0),p(void 0),a(void 0),u({isTransitioning:!1})}),p(T)}},[h,l,c,n.window]),v.useEffect(()=>{c&&l&&o.location.key===l.location.key&&c.resolve()},[c,f,o.location,l]),v.useEffect(()=>{!s.isTransitioning&&y&&(a(y.state),u({isTransitioning:!0,flushSync:!1,currentLocation:y.currentLocation,nextLocation:y.nextLocation}),m(void 0))},[s.isTransitioning,y]),v.useEffect(()=>{},[]);let x=v.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:C=>n.navigate(C),push:(C,F,T)=>n.navigate(C,{state:F,preventScrollReset:T==null?void 0:T.preventScrollReset}),replace:(C,F,T)=>n.navigate(C,{replace:!0,state:F,preventScrollReset:T==null?void 0:T.preventScrollReset})}),[n]),P=n.basename||"/",D=v.useMemo(()=>({router:n,navigator:x,static:!1,basename:P}),[n,x,P]),k=v.useMemo(()=>({v7_relativeSplatPath:n.future.v7_relativeSplatPath}),[n.future.v7_relativeSplatPath]);return v.createElement(v.Fragment,null,v.createElement(Ii.Provider,{value:D},v.createElement(td.Provider,{value:o},v.createElement(Yx.Provider,{value:S.current},v.createElement(Nm.Provider,{value:s},v.createElement($x,{basename:P,location:o.location,navigationType:o.historyAction,navigator:x,future:k},o.initialized||n.future.v7_partialHydration?v.createElement(nC,{routes:n.routes,future:n.future,state:o}):t))))),null)}const nC=v.memo(rC);function rC(e){let{routes:t,future:n,state:r}=e;return Mx(t,void 0,r,n)}const oC=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",iC=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Im=v.forwardRef(function(t,n){let{onClick:r,relative:o,reloadDocument:i,replace:l,state:a,target:s,to:u,preventScrollReset:c,unstable_viewTransition:d}=t,f=Dm(t,Hx),{basename:p}=v.useContext(rr),y,m=!1;if(typeof u=="string"&&iC.test(u)&&(y=u,oC))try{let w=new URL(window.location.href),x=u.startsWith("//")?new URL(w.protocol+u):new URL(u),P=vn(x.pathname,p);x.origin===w.origin&&P!=null?u=P+x.search+x.hash:m=!0}catch{}let S=Cx(u,{relative:o}),g=aC(u,{replace:l,state:a,target:s,preventScrollReset:c,relative:o,unstable_viewTransition:d});function h(w){r&&r(w),w.defaultPrevented||g(w)}return v.createElement("a",go({},f,{href:y||S,onClick:m||i?r:h,ref:n,target:s}))}),vp=v.forwardRef(function(t,n){let{"aria-current":r="page",caseSensitive:o=!1,className:i="",end:l=!1,style:a,to:s,unstable_viewTransition:u,children:c}=t,d=Dm(t,Gx),f=ja(s,{relative:d.relative}),p=Li(),y=v.useContext(td),{navigator:m,basename:S}=v.useContext(rr),g=y!=null&&sC(f)&&u===!0,h=m.encodeLocation?m.encodeLocation(f).pathname:f.pathname,w=p.pathname,x=y&&y.navigation&&y.navigation.location?y.navigation.location.pathname:null;o||(w=w.toLowerCase(),x=x?x.toLowerCase():null,h=h.toLowerCase()),x&&S&&(x=vn(x,S)||x);const P=h!=="/"&&h.endsWith("/")?h.length-1:h.length;let D=w===h||!l&&w.startsWith(h)&&w.charAt(P)==="/",k=x!=null&&(x===h||!l&&x.startsWith(h)&&x.charAt(h.length)==="/"),C={isActive:D,isPending:k,isTransitioning:g},F=D?r:void 0,T;typeof i=="function"?T=i(C):T=[i,D?"active":null,k?"pending":null,g?"transitioning":null].filter(Boolean).join(" ");let b=typeof a=="function"?a(C):a;return v.createElement(Im,go({},d,{"aria-current":F,className:T,ref:n,style:b,to:s,unstable_viewTransition:u}),typeof c=="function"?c(C):c)});var Vu;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Vu||(Vu={}));var yp;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(yp||(yp={}));function lC(e){let t=v.useContext(Ii);return t||te(!1),t}function aC(e,t){let{target:n,replace:r,state:o,preventScrollReset:i,relative:l,unstable_viewTransition:a}=t===void 0?{}:t,s=Rx(),u=Li(),c=ja(e,{relative:l});return v.useCallback(d=>{if(Bx(d,n)){d.preventDefault();let f=r!==void 0?r:Cr(u)===Cr(c);s(e,{replace:f,state:o,preventScrollReset:i,relative:l,unstable_viewTransition:a})}},[u,s,c,r,o,n,e,i,l,a])}function sC(e,t){t===void 0&&(t={});let n=v.useContext(Nm);n==null&&te(!1);let{basename:r}=lC(Vu.useViewTransitionState),o=ja(e,{relative:t.relative});if(!n.isTransitioning)return!1;let i=vn(n.currentLocation.pathname,r)||n.currentLocation.pathname,l=vn(n.nextLocation.pathname,r)||n.nextLocation.pathname;return ua(o.pathname,l)!=null||ua(o.pathname,i)!=null}function uC(){return R.jsxs("div",{className:"min-h-screen",children:[R.jsx("header",{className:"border-b",children:R.jsxs("div",{className:"mx-auto max-w-5xl p-4 flex gap-6",children:[R.jsx(Im,{to:"/",className:"font-semibold",children:"XSD Registry"}),R.jsxs("nav",{className:"flex gap-4",children:[R.jsx(vp,{to:"/schemas",className:({isActive:e})=>e?"underline":"",children:"Схемы"}),R.jsx(vp,{to:"/schemas/upload",className:({isActive:e})=>e?"underline":"",children:"Загрузка"})]})]})}),R.jsx("main",{className:"mx-auto max-w-5xl p-4",children:R.jsx(zx,{})})]})}/** + * table-core + * + * Copyright (c) TanStack + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function bn(e,t){return typeof e=="function"?e(t):e}function wt(e,t){return n=>{t.setState(r=>({...r,[e]:bn(n,r[e])}))}}function ba(e){return e instanceof Function}function cC(e){return Array.isArray(e)&&e.every(t=>typeof t=="number")}function dC(e,t){const n=[],r=o=>{o.forEach(i=>{n.push(i);const l=t(i);l!=null&&l.length&&r(l)})};return r(e),n}function X(e,t,n){let r=[],o;return i=>{let l;n.key&&n.debug&&(l=Date.now());const a=e(i);if(!(a.length!==r.length||a.some((c,d)=>r[d]!==c)))return o;r=a;let u;if(n.key&&n.debug&&(u=Date.now()),o=t(...a),n==null||n.onChange==null||n.onChange(o),n.key&&n.debug&&n!=null&&n.debug()){const c=Math.round((Date.now()-l)*100)/100,d=Math.round((Date.now()-u)*100)/100,f=d/16,p=(y,m)=>{for(y=String(y);y.length{var o;return(o=e==null?void 0:e.debugAll)!=null?o:e[t]},key:!1,onChange:r}}function fC(e,t,n,r){const o=()=>{var l;return(l=i.getValue())!=null?l:e.options.renderFallbackValue},i={id:`${t.id}_${n.id}`,row:t,column:n,getValue:()=>t.getValue(r),renderValue:o,getContext:X(()=>[e,n,t,i],(l,a,s,u)=>({table:l,column:a,row:s,cell:u,getValue:u.getValue,renderValue:u.renderValue}),Y(e.options,"debugCells"))};return e._features.forEach(l=>{l.createCell==null||l.createCell(i,n,t,e)},{}),i}function pC(e,t,n,r){var o,i;const a={...e._getDefaultColumnDef(),...t},s=a.accessorKey;let u=(o=(i=a.id)!=null?i:s?typeof String.prototype.replaceAll=="function"?s.replaceAll(".","_"):s.replace(/\./g,"_"):void 0)!=null?o:typeof a.header=="string"?a.header:void 0,c;if(a.accessorFn?c=a.accessorFn:s&&(s.includes(".")?c=f=>{let p=f;for(const m of s.split(".")){var y;p=(y=p)==null?void 0:y[m]}return p}:c=f=>f[a.accessorKey]),!u)throw new Error;let d={id:`${String(u)}`,accessorFn:c,parent:r,depth:n,columnDef:a,columns:[],getFlatColumns:X(()=>[!0],()=>{var f;return[d,...(f=d.columns)==null?void 0:f.flatMap(p=>p.getFlatColumns())]},Y(e.options,"debugColumns")),getLeafColumns:X(()=>[e._getOrderColumnsFn()],f=>{var p;if((p=d.columns)!=null&&p.length){let y=d.columns.flatMap(m=>m.getLeafColumns());return f(y)}return[d]},Y(e.options,"debugColumns"))};for(const f of e._features)f.createColumn==null||f.createColumn(d,e);return d}const Qe="debugHeaders";function wp(e,t,n){var r;let i={id:(r=n.id)!=null?r:t.id,column:t,index:n.index,isPlaceholder:!!n.isPlaceholder,placeholderId:n.placeholderId,depth:n.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{const l=[],a=s=>{s.subHeaders&&s.subHeaders.length&&s.subHeaders.map(a),l.push(s)};return a(i),l},getContext:()=>({table:e,header:i,column:t})};return e._features.forEach(l=>{l.createHeader==null||l.createHeader(i,e)}),i}const gC={createTable:e=>{e.getHeaderGroups=X(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r,o)=>{var i,l;const a=(i=r==null?void 0:r.map(d=>n.find(f=>f.id===d)).filter(Boolean))!=null?i:[],s=(l=o==null?void 0:o.map(d=>n.find(f=>f.id===d)).filter(Boolean))!=null?l:[],u=n.filter(d=>!(r!=null&&r.includes(d.id))&&!(o!=null&&o.includes(d.id)));return gl(t,[...a,...u,...s],e)},Y(e.options,Qe)),e.getCenterHeaderGroups=X(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r,o)=>(n=n.filter(i=>!(r!=null&&r.includes(i.id))&&!(o!=null&&o.includes(i.id))),gl(t,n,e,"center")),Y(e.options,Qe)),e.getLeftHeaderGroups=X(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(t,n,r)=>{var o;const i=(o=r==null?void 0:r.map(l=>n.find(a=>a.id===l)).filter(Boolean))!=null?o:[];return gl(t,i,e,"left")},Y(e.options,Qe)),e.getRightHeaderGroups=X(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(t,n,r)=>{var o;const i=(o=r==null?void 0:r.map(l=>n.find(a=>a.id===l)).filter(Boolean))!=null?o:[];return gl(t,i,e,"right")},Y(e.options,Qe)),e.getFooterGroups=X(()=>[e.getHeaderGroups()],t=>[...t].reverse(),Y(e.options,Qe)),e.getLeftFooterGroups=X(()=>[e.getLeftHeaderGroups()],t=>[...t].reverse(),Y(e.options,Qe)),e.getCenterFooterGroups=X(()=>[e.getCenterHeaderGroups()],t=>[...t].reverse(),Y(e.options,Qe)),e.getRightFooterGroups=X(()=>[e.getRightHeaderGroups()],t=>[...t].reverse(),Y(e.options,Qe)),e.getFlatHeaders=X(()=>[e.getHeaderGroups()],t=>t.map(n=>n.headers).flat(),Y(e.options,Qe)),e.getLeftFlatHeaders=X(()=>[e.getLeftHeaderGroups()],t=>t.map(n=>n.headers).flat(),Y(e.options,Qe)),e.getCenterFlatHeaders=X(()=>[e.getCenterHeaderGroups()],t=>t.map(n=>n.headers).flat(),Y(e.options,Qe)),e.getRightFlatHeaders=X(()=>[e.getRightHeaderGroups()],t=>t.map(n=>n.headers).flat(),Y(e.options,Qe)),e.getCenterLeafHeaders=X(()=>[e.getCenterFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),Y(e.options,Qe)),e.getLeftLeafHeaders=X(()=>[e.getLeftFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),Y(e.options,Qe)),e.getRightLeafHeaders=X(()=>[e.getRightFlatHeaders()],t=>t.filter(n=>{var r;return!((r=n.subHeaders)!=null&&r.length)}),Y(e.options,Qe)),e.getLeafHeaders=X(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(t,n,r)=>{var o,i,l,a,s,u;return[...(o=(i=t[0])==null?void 0:i.headers)!=null?o:[],...(l=(a=n[0])==null?void 0:a.headers)!=null?l:[],...(s=(u=r[0])==null?void 0:u.headers)!=null?s:[]].map(c=>c.getLeafHeaders()).flat()},Y(e.options,Qe))}};function gl(e,t,n,r){var o,i;let l=0;const a=function(f,p){p===void 0&&(p=1),l=Math.max(l,p),f.filter(y=>y.getIsVisible()).forEach(y=>{var m;(m=y.columns)!=null&&m.length&&a(y.columns,p+1)},0)};a(e);let s=[];const u=(f,p)=>{const y={depth:p,id:[r,`${p}`].filter(Boolean).join("_"),headers:[]},m=[];f.forEach(S=>{const g=[...m].reverse()[0],h=S.column.depth===y.depth;let w,x=!1;if(h&&S.column.parent?w=S.column.parent:(w=S.column,x=!0),g&&(g==null?void 0:g.column)===w)g.subHeaders.push(S);else{const P=wp(n,w,{id:[r,p,w.id,S==null?void 0:S.id].filter(Boolean).join("_"),isPlaceholder:x,placeholderId:x?`${m.filter(D=>D.column===w).length}`:void 0,depth:p,index:m.length});P.subHeaders.push(S),m.push(P)}y.headers.push(S),S.headerGroup=y}),s.push(y),p>0&&u(m,p-1)},c=t.map((f,p)=>wp(n,f,{depth:l,index:p}));u(c,l-1),s.reverse();const d=f=>f.filter(y=>y.column.getIsVisible()).map(y=>{let m=0,S=0,g=[0];y.subHeaders&&y.subHeaders.length?(g=[],d(y.subHeaders).forEach(w=>{let{colSpan:x,rowSpan:P}=w;m+=x,g.push(P)})):m=1;const h=Math.min(...g);return S=S+h,y.colSpan=m,y.rowSpan=S,{colSpan:m,rowSpan:S}});return d((o=(i=s[0])==null?void 0:i.headers)!=null?o:[]),s}const hC=(e,t,n,r,o,i,l)=>{let a={id:t,index:r,original:n,depth:o,parentId:l,_valuesCache:{},_uniqueValuesCache:{},getValue:s=>{if(a._valuesCache.hasOwnProperty(s))return a._valuesCache[s];const u=e.getColumn(s);if(u!=null&&u.accessorFn)return a._valuesCache[s]=u.accessorFn(a.original,r),a._valuesCache[s]},getUniqueValues:s=>{if(a._uniqueValuesCache.hasOwnProperty(s))return a._uniqueValuesCache[s];const u=e.getColumn(s);if(u!=null&&u.accessorFn)return u.columnDef.getUniqueValues?(a._uniqueValuesCache[s]=u.columnDef.getUniqueValues(a.original,r),a._uniqueValuesCache[s]):(a._uniqueValuesCache[s]=[a.getValue(s)],a._uniqueValuesCache[s])},renderValue:s=>{var u;return(u=a.getValue(s))!=null?u:e.options.renderFallbackValue},subRows:[],getLeafRows:()=>dC(a.subRows,s=>s.subRows),getParentRow:()=>a.parentId?e.getRow(a.parentId,!0):void 0,getParentRows:()=>{let s=[],u=a;for(;;){const c=u.getParentRow();if(!c)break;s.push(c),u=c}return s.reverse()},getAllCells:X(()=>[e.getAllLeafColumns()],s=>s.map(u=>fC(e,a,u,u.id)),Y(e.options,"debugRows")),_getAllCellsByColumnId:X(()=>[a.getAllCells()],s=>s.reduce((u,c)=>(u[c.column.id]=c,u),{}),Y(e.options,"debugRows"))};for(let s=0;s{e._getFacetedRowModel=t.options.getFacetedRowModel&&t.options.getFacetedRowModel(t,e.id),e.getFacetedRowModel=()=>e._getFacetedRowModel?e._getFacetedRowModel():t.getPreFilteredRowModel(),e._getFacetedUniqueValues=t.options.getFacetedUniqueValues&&t.options.getFacetedUniqueValues(t,e.id),e.getFacetedUniqueValues=()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,e._getFacetedMinMaxValues=t.options.getFacetedMinMaxValues&&t.options.getFacetedMinMaxValues(t,e.id),e.getFacetedMinMaxValues=()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}},Tm=(e,t,n)=>{var r,o;const i=n==null||(r=n.toString())==null?void 0:r.toLowerCase();return!!(!((o=e.getValue(t))==null||(o=o.toString())==null||(o=o.toLowerCase())==null)&&o.includes(i))};Tm.autoRemove=e=>At(e);const Lm=(e,t,n)=>{var r;return!!(!((r=e.getValue(t))==null||(r=r.toString())==null)&&r.includes(n))};Lm.autoRemove=e=>At(e);const Om=(e,t,n)=>{var r;return((r=e.getValue(t))==null||(r=r.toString())==null?void 0:r.toLowerCase())===(n==null?void 0:n.toLowerCase())};Om.autoRemove=e=>At(e);const Fm=(e,t,n)=>{var r;return(r=e.getValue(t))==null?void 0:r.includes(n)};Fm.autoRemove=e=>At(e);const Am=(e,t,n)=>!n.some(r=>{var o;return!((o=e.getValue(t))!=null&&o.includes(r))});Am.autoRemove=e=>At(e)||!(e!=null&&e.length);const jm=(e,t,n)=>n.some(r=>{var o;return(o=e.getValue(t))==null?void 0:o.includes(r)});jm.autoRemove=e=>At(e)||!(e!=null&&e.length);const bm=(e,t,n)=>e.getValue(t)===n;bm.autoRemove=e=>At(e);const zm=(e,t,n)=>e.getValue(t)==n;zm.autoRemove=e=>At(e);const rd=(e,t,n)=>{let[r,o]=n;const i=e.getValue(t);return i>=r&&i<=o};rd.resolveFilterValue=e=>{let[t,n]=e,r=typeof t!="number"?parseFloat(t):t,o=typeof n!="number"?parseFloat(n):n,i=t===null||Number.isNaN(r)?-1/0:r,l=n===null||Number.isNaN(o)?1/0:o;if(i>l){const a=i;i=l,l=a}return[i,l]};rd.autoRemove=e=>At(e)||At(e[0])&&At(e[1]);const an={includesString:Tm,includesStringSensitive:Lm,equalsString:Om,arrIncludes:Fm,arrIncludesAll:Am,arrIncludesSome:jm,equals:bm,weakEquals:zm,inNumberRange:rd};function At(e){return e==null||e===""}const vC={getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],...e}),getDefaultOptions:e=>({onColumnFiltersChange:wt("columnFilters",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100}),createColumn:(e,t)=>{e.getAutoFilterFn=()=>{const n=t.getCoreRowModel().flatRows[0],r=n==null?void 0:n.getValue(e.id);return typeof r=="string"?an.includesString:typeof r=="number"?an.inNumberRange:typeof r=="boolean"||r!==null&&typeof r=="object"?an.equals:Array.isArray(r)?an.arrIncludes:an.weakEquals},e.getFilterFn=()=>{var n,r;return ba(e.columnDef.filterFn)?e.columnDef.filterFn:e.columnDef.filterFn==="auto"?e.getAutoFilterFn():(n=(r=t.options.filterFns)==null?void 0:r[e.columnDef.filterFn])!=null?n:an[e.columnDef.filterFn]},e.getCanFilter=()=>{var n,r,o;return((n=e.columnDef.enableColumnFilter)!=null?n:!0)&&((r=t.options.enableColumnFilters)!=null?r:!0)&&((o=t.options.enableFilters)!=null?o:!0)&&!!e.accessorFn},e.getIsFiltered=()=>e.getFilterIndex()>-1,e.getFilterValue=()=>{var n;return(n=t.getState().columnFilters)==null||(n=n.find(r=>r.id===e.id))==null?void 0:n.value},e.getFilterIndex=()=>{var n,r;return(n=(r=t.getState().columnFilters)==null?void 0:r.findIndex(o=>o.id===e.id))!=null?n:-1},e.setFilterValue=n=>{t.setColumnFilters(r=>{const o=e.getFilterFn(),i=r==null?void 0:r.find(c=>c.id===e.id),l=bn(n,i?i.value:void 0);if(Sp(o,l,e)){var a;return(a=r==null?void 0:r.filter(c=>c.id!==e.id))!=null?a:[]}const s={id:e.id,value:l};if(i){var u;return(u=r==null?void 0:r.map(c=>c.id===e.id?s:c))!=null?u:[]}return r!=null&&r.length?[...r,s]:[s]})}},createRow:(e,t)=>{e.columnFilters={},e.columnFiltersMeta={}},createTable:e=>{e.setColumnFilters=t=>{const n=e.getAllLeafColumns(),r=o=>{var i;return(i=bn(t,o))==null?void 0:i.filter(l=>{const a=n.find(s=>s.id===l.id);if(a){const s=a.getFilterFn();if(Sp(s,l.value,a))return!1}return!0})};e.options.onColumnFiltersChange==null||e.options.onColumnFiltersChange(r)},e.resetColumnFilters=t=>{var n,r;e.setColumnFilters(t?[]:(n=(r=e.initialState)==null?void 0:r.columnFilters)!=null?n:[])},e.getPreFilteredRowModel=()=>e.getCoreRowModel(),e.getFilteredRowModel=()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel())}};function Sp(e,t,n){return(e&&e.autoRemove?e.autoRemove(t,n):!1)||typeof t>"u"||typeof t=="string"&&!t}const yC=(e,t,n)=>n.reduce((r,o)=>{const i=o.getValue(e);return r+(typeof i=="number"?i:0)},0),wC=(e,t,n)=>{let r;return n.forEach(o=>{const i=o.getValue(e);i!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}),r},SC=(e,t,n)=>{let r;return n.forEach(o=>{const i=o.getValue(e);i!=null&&(r=i)&&(r=i)}),r},xC=(e,t,n)=>{let r,o;return n.forEach(i=>{const l=i.getValue(e);l!=null&&(r===void 0?l>=l&&(r=o=l):(r>l&&(r=l),o{let n=0,r=0;if(t.forEach(o=>{let i=o.getValue(e);i!=null&&(i=+i)>=i&&(++n,r+=i)}),n)return r/n},RC=(e,t)=>{if(!t.length)return;const n=t.map(i=>i.getValue(e));if(!cC(n))return;if(n.length===1)return n[0];const r=Math.floor(n.length/2),o=n.sort((i,l)=>i-l);return n.length%2!==0?o[r]:(o[r-1]+o[r])/2},EC=(e,t)=>Array.from(new Set(t.map(n=>n.getValue(e))).values()),_C=(e,t)=>new Set(t.map(n=>n.getValue(e))).size,PC=(e,t)=>t.length,ks={sum:yC,min:wC,max:SC,extent:xC,mean:CC,median:RC,unique:EC,uniqueCount:_C,count:PC},MC={getDefaultColumnDef:()=>({aggregatedCell:e=>{var t,n;return(t=(n=e.getValue())==null||n.toString==null?void 0:n.toString())!=null?t:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:wt("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,t)=>{e.toggleGrouping=()=>{t.setGrouping(n=>n!=null&&n.includes(e.id)?n.filter(r=>r!==e.id):[...n??[],e.id])},e.getCanGroup=()=>{var n,r;return((n=e.columnDef.enableGrouping)!=null?n:!0)&&((r=t.options.enableGrouping)!=null?r:!0)&&(!!e.accessorFn||!!e.columnDef.getGroupingValue)},e.getIsGrouped=()=>{var n;return(n=t.getState().grouping)==null?void 0:n.includes(e.id)},e.getGroupedIndex=()=>{var n;return(n=t.getState().grouping)==null?void 0:n.indexOf(e.id)},e.getToggleGroupingHandler=()=>{const n=e.getCanGroup();return()=>{n&&e.toggleGrouping()}},e.getAutoAggregationFn=()=>{const n=t.getCoreRowModel().flatRows[0],r=n==null?void 0:n.getValue(e.id);if(typeof r=="number")return ks.sum;if(Object.prototype.toString.call(r)==="[object Date]")return ks.extent},e.getAggregationFn=()=>{var n,r;if(!e)throw new Error;return ba(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:e.columnDef.aggregationFn==="auto"?e.getAutoAggregationFn():(n=(r=t.options.aggregationFns)==null?void 0:r[e.columnDef.aggregationFn])!=null?n:ks[e.columnDef.aggregationFn]}},createTable:e=>{e.setGrouping=t=>e.options.onGroupingChange==null?void 0:e.options.onGroupingChange(t),e.resetGrouping=t=>{var n,r;e.setGrouping(t?[]:(n=(r=e.initialState)==null?void 0:r.grouping)!=null?n:[])},e.getPreGroupedRowModel=()=>e.getFilteredRowModel(),e.getGroupedRowModel=()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel())},createRow:(e,t)=>{e.getIsGrouped=()=>!!e.groupingColumnId,e.getGroupingValue=n=>{if(e._groupingValuesCache.hasOwnProperty(n))return e._groupingValuesCache[n];const r=t.getColumn(n);return r!=null&&r.columnDef.getGroupingValue?(e._groupingValuesCache[n]=r.columnDef.getGroupingValue(e.original),e._groupingValuesCache[n]):e.getValue(n)},e._groupingValuesCache={}},createCell:(e,t,n,r)=>{e.getIsGrouped=()=>t.getIsGrouped()&&t.id===n.groupingColumnId,e.getIsPlaceholder=()=>!e.getIsGrouped()&&t.getIsGrouped(),e.getIsAggregated=()=>{var o;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!((o=n.subRows)!=null&&o.length)}}};function kC(e,t,n){if(!(t!=null&&t.length)||!n)return e;const r=e.filter(i=>!t.includes(i.id));return n==="remove"?r:[...t.map(i=>e.find(l=>l.id===i)).filter(Boolean),...r]}const DC={getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:wt("columnOrder",e)}),createColumn:(e,t)=>{e.getIndex=X(n=>[ei(t,n)],n=>n.findIndex(r=>r.id===e.id),Y(t.options,"debugColumns")),e.getIsFirstColumn=n=>{var r;return((r=ei(t,n)[0])==null?void 0:r.id)===e.id},e.getIsLastColumn=n=>{var r;const o=ei(t,n);return((r=o[o.length-1])==null?void 0:r.id)===e.id}},createTable:e=>{e.setColumnOrder=t=>e.options.onColumnOrderChange==null?void 0:e.options.onColumnOrderChange(t),e.resetColumnOrder=t=>{var n;e.setColumnOrder(t?[]:(n=e.initialState.columnOrder)!=null?n:[])},e._getOrderColumnsFn=X(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(t,n,r)=>o=>{let i=[];if(!(t!=null&&t.length))i=o;else{const l=[...t],a=[...o];for(;a.length&&l.length;){const s=l.shift(),u=a.findIndex(c=>c.id===s);u>-1&&i.push(a.splice(u,1)[0])}i=[...i,...a]}return kC(i,n,r)},Y(e.options,"debugTable"))}},Ds=()=>({left:[],right:[]}),NC={getInitialState:e=>({columnPinning:Ds(),...e}),getDefaultOptions:e=>({onColumnPinningChange:wt("columnPinning",e)}),createColumn:(e,t)=>{e.pin=n=>{const r=e.getLeafColumns().map(o=>o.id).filter(Boolean);t.setColumnPinning(o=>{var i,l;if(n==="right"){var a,s;return{left:((a=o==null?void 0:o.left)!=null?a:[]).filter(d=>!(r!=null&&r.includes(d))),right:[...((s=o==null?void 0:o.right)!=null?s:[]).filter(d=>!(r!=null&&r.includes(d))),...r]}}if(n==="left"){var u,c;return{left:[...((u=o==null?void 0:o.left)!=null?u:[]).filter(d=>!(r!=null&&r.includes(d))),...r],right:((c=o==null?void 0:o.right)!=null?c:[]).filter(d=>!(r!=null&&r.includes(d)))}}return{left:((i=o==null?void 0:o.left)!=null?i:[]).filter(d=>!(r!=null&&r.includes(d))),right:((l=o==null?void 0:o.right)!=null?l:[]).filter(d=>!(r!=null&&r.includes(d)))}})},e.getCanPin=()=>e.getLeafColumns().some(r=>{var o,i,l;return((o=r.columnDef.enablePinning)!=null?o:!0)&&((i=(l=t.options.enableColumnPinning)!=null?l:t.options.enablePinning)!=null?i:!0)}),e.getIsPinned=()=>{const n=e.getLeafColumns().map(a=>a.id),{left:r,right:o}=t.getState().columnPinning,i=n.some(a=>r==null?void 0:r.includes(a)),l=n.some(a=>o==null?void 0:o.includes(a));return i?"left":l?"right":!1},e.getPinnedIndex=()=>{var n,r;const o=e.getIsPinned();return o?(n=(r=t.getState().columnPinning)==null||(r=r[o])==null?void 0:r.indexOf(e.id))!=null?n:-1:0}},createRow:(e,t)=>{e.getCenterVisibleCells=X(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,t.getState().columnPinning.right],(n,r,o)=>{const i=[...r??[],...o??[]];return n.filter(l=>!i.includes(l.column.id))},Y(t.options,"debugRows")),e.getLeftVisibleCells=X(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left],(n,r)=>(r??[]).map(i=>n.find(l=>l.column.id===i)).filter(Boolean).map(i=>({...i,position:"left"})),Y(t.options,"debugRows")),e.getRightVisibleCells=X(()=>[e._getAllVisibleCells(),t.getState().columnPinning.right],(n,r)=>(r??[]).map(i=>n.find(l=>l.column.id===i)).filter(Boolean).map(i=>({...i,position:"right"})),Y(t.options,"debugRows"))},createTable:e=>{e.setColumnPinning=t=>e.options.onColumnPinningChange==null?void 0:e.options.onColumnPinningChange(t),e.resetColumnPinning=t=>{var n,r;return e.setColumnPinning(t?Ds():(n=(r=e.initialState)==null?void 0:r.columnPinning)!=null?n:Ds())},e.getIsSomeColumnsPinned=t=>{var n;const r=e.getState().columnPinning;if(!t){var o,i;return!!((o=r.left)!=null&&o.length||(i=r.right)!=null&&i.length)}return!!((n=r[t])!=null&&n.length)},e.getLeftLeafColumns=X(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(t,n)=>(n??[]).map(r=>t.find(o=>o.id===r)).filter(Boolean),Y(e.options,"debugColumns")),e.getRightLeafColumns=X(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(t,n)=>(n??[]).map(r=>t.find(o=>o.id===r)).filter(Boolean),Y(e.options,"debugColumns")),e.getCenterLeafColumns=X(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,n,r)=>{const o=[...n??[],...r??[]];return t.filter(i=>!o.includes(i.id))},Y(e.options,"debugColumns"))}};function IC(e){return e||(typeof document<"u"?document:null)}const hl={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},Ns=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),TC={getDefaultColumnDef:()=>hl,getInitialState:e=>({columnSizing:{},columnSizingInfo:Ns(),...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",columnResizeDirection:"ltr",onColumnSizingChange:wt("columnSizing",e),onColumnSizingInfoChange:wt("columnSizingInfo",e)}),createColumn:(e,t)=>{e.getSize=()=>{var n,r,o;const i=t.getState().columnSizing[e.id];return Math.min(Math.max((n=e.columnDef.minSize)!=null?n:hl.minSize,(r=i??e.columnDef.size)!=null?r:hl.size),(o=e.columnDef.maxSize)!=null?o:hl.maxSize)},e.getStart=X(n=>[n,ei(t,n),t.getState().columnSizing],(n,r)=>r.slice(0,e.getIndex(n)).reduce((o,i)=>o+i.getSize(),0),Y(t.options,"debugColumns")),e.getAfter=X(n=>[n,ei(t,n),t.getState().columnSizing],(n,r)=>r.slice(e.getIndex(n)+1).reduce((o,i)=>o+i.getSize(),0),Y(t.options,"debugColumns")),e.resetSize=()=>{t.setColumnSizing(n=>{let{[e.id]:r,...o}=n;return o})},e.getCanResize=()=>{var n,r;return((n=e.columnDef.enableResizing)!=null?n:!0)&&((r=t.options.enableColumnResizing)!=null?r:!0)},e.getIsResizing=()=>t.getState().columnSizingInfo.isResizingColumn===e.id},createHeader:(e,t)=>{e.getSize=()=>{let n=0;const r=o=>{if(o.subHeaders.length)o.subHeaders.forEach(r);else{var i;n+=(i=o.column.getSize())!=null?i:0}};return r(e),n},e.getStart=()=>{if(e.index>0){const n=e.headerGroup.headers[e.index-1];return n.getStart()+n.getSize()}return 0},e.getResizeHandler=n=>{const r=t.getColumn(e.column.id),o=r==null?void 0:r.getCanResize();return i=>{if(!r||!o||(i.persist==null||i.persist(),Is(i)&&i.touches&&i.touches.length>1))return;const l=e.getSize(),a=e?e.getLeafHeaders().map(g=>[g.column.id,g.column.getSize()]):[[r.id,r.getSize()]],s=Is(i)?Math.round(i.touches[0].clientX):i.clientX,u={},c=(g,h)=>{typeof h=="number"&&(t.setColumnSizingInfo(w=>{var x,P;const D=t.options.columnResizeDirection==="rtl"?-1:1,k=(h-((x=w==null?void 0:w.startOffset)!=null?x:0))*D,C=Math.max(k/((P=w==null?void 0:w.startSize)!=null?P:0),-.999999);return w.columnSizingStart.forEach(F=>{let[T,b]=F;u[T]=Math.round(Math.max(b+b*C,0)*100)/100}),{...w,deltaOffset:k,deltaPercentage:C}}),(t.options.columnResizeMode==="onChange"||g==="end")&&t.setColumnSizing(w=>({...w,...u})))},d=g=>c("move",g),f=g=>{c("end",g),t.setColumnSizingInfo(h=>({...h,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},p=IC(n),y={moveHandler:g=>d(g.clientX),upHandler:g=>{p==null||p.removeEventListener("mousemove",y.moveHandler),p==null||p.removeEventListener("mouseup",y.upHandler),f(g.clientX)}},m={moveHandler:g=>(g.cancelable&&(g.preventDefault(),g.stopPropagation()),d(g.touches[0].clientX),!1),upHandler:g=>{var h;p==null||p.removeEventListener("touchmove",m.moveHandler),p==null||p.removeEventListener("touchend",m.upHandler),g.cancelable&&(g.preventDefault(),g.stopPropagation()),f((h=g.touches[0])==null?void 0:h.clientX)}},S=LC()?{passive:!1}:!1;Is(i)?(p==null||p.addEventListener("touchmove",m.moveHandler,S),p==null||p.addEventListener("touchend",m.upHandler,S)):(p==null||p.addEventListener("mousemove",y.moveHandler,S),p==null||p.addEventListener("mouseup",y.upHandler,S)),t.setColumnSizingInfo(g=>({...g,startOffset:s,startSize:l,deltaOffset:0,deltaPercentage:0,columnSizingStart:a,isResizingColumn:r.id}))}}},createTable:e=>{e.setColumnSizing=t=>e.options.onColumnSizingChange==null?void 0:e.options.onColumnSizingChange(t),e.setColumnSizingInfo=t=>e.options.onColumnSizingInfoChange==null?void 0:e.options.onColumnSizingInfoChange(t),e.resetColumnSizing=t=>{var n;e.setColumnSizing(t?{}:(n=e.initialState.columnSizing)!=null?n:{})},e.resetHeaderSizeInfo=t=>{var n;e.setColumnSizingInfo(t?Ns():(n=e.initialState.columnSizingInfo)!=null?n:Ns())},e.getTotalSize=()=>{var t,n;return(t=(n=e.getHeaderGroups()[0])==null?void 0:n.headers.reduce((r,o)=>r+o.getSize(),0))!=null?t:0},e.getLeftTotalSize=()=>{var t,n;return(t=(n=e.getLeftHeaderGroups()[0])==null?void 0:n.headers.reduce((r,o)=>r+o.getSize(),0))!=null?t:0},e.getCenterTotalSize=()=>{var t,n;return(t=(n=e.getCenterHeaderGroups()[0])==null?void 0:n.headers.reduce((r,o)=>r+o.getSize(),0))!=null?t:0},e.getRightTotalSize=()=>{var t,n;return(t=(n=e.getRightHeaderGroups()[0])==null?void 0:n.headers.reduce((r,o)=>r+o.getSize(),0))!=null?t:0}}};let ml=null;function LC(){if(typeof ml=="boolean")return ml;let e=!1;try{const t={get passive(){return e=!0,!1}},n=()=>{};window.addEventListener("test",n,t),window.removeEventListener("test",n)}catch{e=!1}return ml=e,ml}function Is(e){return e.type==="touchstart"}const OC={getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:wt("columnVisibility",e)}),createColumn:(e,t)=>{e.toggleVisibility=n=>{e.getCanHide()&&t.setColumnVisibility(r=>({...r,[e.id]:n??!e.getIsVisible()}))},e.getIsVisible=()=>{var n,r;const o=e.columns;return(n=o.length?o.some(i=>i.getIsVisible()):(r=t.getState().columnVisibility)==null?void 0:r[e.id])!=null?n:!0},e.getCanHide=()=>{var n,r;return((n=e.columnDef.enableHiding)!=null?n:!0)&&((r=t.options.enableHiding)!=null?r:!0)},e.getToggleVisibilityHandler=()=>n=>{e.toggleVisibility==null||e.toggleVisibility(n.target.checked)}},createRow:(e,t)=>{e._getAllVisibleCells=X(()=>[e.getAllCells(),t.getState().columnVisibility],n=>n.filter(r=>r.column.getIsVisible()),Y(t.options,"debugRows")),e.getVisibleCells=X(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(n,r,o)=>[...n,...r,...o],Y(t.options,"debugRows"))},createTable:e=>{const t=(n,r)=>X(()=>[r(),r().filter(o=>o.getIsVisible()).map(o=>o.id).join("_")],o=>o.filter(i=>i.getIsVisible==null?void 0:i.getIsVisible()),Y(e.options,"debugColumns"));e.getVisibleFlatColumns=t("getVisibleFlatColumns",()=>e.getAllFlatColumns()),e.getVisibleLeafColumns=t("getVisibleLeafColumns",()=>e.getAllLeafColumns()),e.getLeftVisibleLeafColumns=t("getLeftVisibleLeafColumns",()=>e.getLeftLeafColumns()),e.getRightVisibleLeafColumns=t("getRightVisibleLeafColumns",()=>e.getRightLeafColumns()),e.getCenterVisibleLeafColumns=t("getCenterVisibleLeafColumns",()=>e.getCenterLeafColumns()),e.setColumnVisibility=n=>e.options.onColumnVisibilityChange==null?void 0:e.options.onColumnVisibilityChange(n),e.resetColumnVisibility=n=>{var r;e.setColumnVisibility(n?{}:(r=e.initialState.columnVisibility)!=null?r:{})},e.toggleAllColumnsVisible=n=>{var r;n=(r=n)!=null?r:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((o,i)=>({...o,[i.id]:n||!(i.getCanHide!=null&&i.getCanHide())}),{}))},e.getIsAllColumnsVisible=()=>!e.getAllLeafColumns().some(n=>!(n.getIsVisible!=null&&n.getIsVisible())),e.getIsSomeColumnsVisible=()=>e.getAllLeafColumns().some(n=>n.getIsVisible==null?void 0:n.getIsVisible()),e.getToggleAllColumnsVisibilityHandler=()=>n=>{var r;e.toggleAllColumnsVisible((r=n.target)==null?void 0:r.checked)}}};function ei(e,t){return t?t==="center"?e.getCenterVisibleLeafColumns():t==="left"?e.getLeftVisibleLeafColumns():e.getRightVisibleLeafColumns():e.getVisibleLeafColumns()}const FC={createTable:e=>{e._getGlobalFacetedRowModel=e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),e.getGlobalFacetedRowModel=()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),e._getGlobalFacetedUniqueValues=e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),e.getGlobalFacetedUniqueValues=()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,e._getGlobalFacetedMinMaxValues=e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),e.getGlobalFacetedMinMaxValues=()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}},AC={getInitialState:e=>({globalFilter:void 0,...e}),getDefaultOptions:e=>({onGlobalFilterChange:wt("globalFilter",e),globalFilterFn:"auto",getColumnCanGlobalFilter:t=>{var n;const r=(n=e.getCoreRowModel().flatRows[0])==null||(n=n._getAllCellsByColumnId()[t.id])==null?void 0:n.getValue();return typeof r=="string"||typeof r=="number"}}),createColumn:(e,t)=>{e.getCanGlobalFilter=()=>{var n,r,o,i;return((n=e.columnDef.enableGlobalFilter)!=null?n:!0)&&((r=t.options.enableGlobalFilter)!=null?r:!0)&&((o=t.options.enableFilters)!=null?o:!0)&&((i=t.options.getColumnCanGlobalFilter==null?void 0:t.options.getColumnCanGlobalFilter(e))!=null?i:!0)&&!!e.accessorFn}},createTable:e=>{e.getGlobalAutoFilterFn=()=>an.includesString,e.getGlobalFilterFn=()=>{var t,n;const{globalFilterFn:r}=e.options;return ba(r)?r:r==="auto"?e.getGlobalAutoFilterFn():(t=(n=e.options.filterFns)==null?void 0:n[r])!=null?t:an[r]},e.setGlobalFilter=t=>{e.options.onGlobalFilterChange==null||e.options.onGlobalFilterChange(t)},e.resetGlobalFilter=t=>{e.setGlobalFilter(t?void 0:e.initialState.globalFilter)}}},jC={getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:wt("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let t=!1,n=!1;e._autoResetExpanded=()=>{var r,o;if(!t){e._queue(()=>{t=!0});return}if((r=(o=e.options.autoResetAll)!=null?o:e.options.autoResetExpanded)!=null?r:!e.options.manualExpanding){if(n)return;n=!0,e._queue(()=>{e.resetExpanded(),n=!1})}},e.setExpanded=r=>e.options.onExpandedChange==null?void 0:e.options.onExpandedChange(r),e.toggleAllRowsExpanded=r=>{r??!e.getIsAllRowsExpanded()?e.setExpanded(!0):e.setExpanded({})},e.resetExpanded=r=>{var o,i;e.setExpanded(r?{}:(o=(i=e.initialState)==null?void 0:i.expanded)!=null?o:{})},e.getCanSomeRowsExpand=()=>e.getPrePaginationRowModel().flatRows.some(r=>r.getCanExpand()),e.getToggleAllRowsExpandedHandler=()=>r=>{r.persist==null||r.persist(),e.toggleAllRowsExpanded()},e.getIsSomeRowsExpanded=()=>{const r=e.getState().expanded;return r===!0||Object.values(r).some(Boolean)},e.getIsAllRowsExpanded=()=>{const r=e.getState().expanded;return typeof r=="boolean"?r===!0:!(!Object.keys(r).length||e.getRowModel().flatRows.some(o=>!o.getIsExpanded()))},e.getExpandedDepth=()=>{let r=0;return(e.getState().expanded===!0?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(i=>{const l=i.split(".");r=Math.max(r,l.length)}),r},e.getPreExpandedRowModel=()=>e.getSortedRowModel(),e.getExpandedRowModel=()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel())},createRow:(e,t)=>{e.toggleExpanded=n=>{t.setExpanded(r=>{var o;const i=r===!0?!0:!!(r!=null&&r[e.id]);let l={};if(r===!0?Object.keys(t.getRowModel().rowsById).forEach(a=>{l[a]=!0}):l=r,n=(o=n)!=null?o:!i,!i&&n)return{...l,[e.id]:!0};if(i&&!n){const{[e.id]:a,...s}=l;return s}return r})},e.getIsExpanded=()=>{var n;const r=t.getState().expanded;return!!((n=t.options.getIsRowExpanded==null?void 0:t.options.getIsRowExpanded(e))!=null?n:r===!0||r!=null&&r[e.id])},e.getCanExpand=()=>{var n,r,o;return(n=t.options.getRowCanExpand==null?void 0:t.options.getRowCanExpand(e))!=null?n:((r=t.options.enableExpanding)!=null?r:!0)&&!!((o=e.subRows)!=null&&o.length)},e.getIsAllParentsExpanded=()=>{let n=!0,r=e;for(;n&&r.parentId;)r=t.getRow(r.parentId,!0),n=r.getIsExpanded();return n},e.getToggleExpandedHandler=()=>{const n=e.getCanExpand();return()=>{n&&e.toggleExpanded()}}}},Uu=0,Bu=10,Ts=()=>({pageIndex:Uu,pageSize:Bu}),bC={getInitialState:e=>({...e,pagination:{...Ts(),...e==null?void 0:e.pagination}}),getDefaultOptions:e=>({onPaginationChange:wt("pagination",e)}),createTable:e=>{let t=!1,n=!1;e._autoResetPageIndex=()=>{var r,o;if(!t){e._queue(()=>{t=!0});return}if((r=(o=e.options.autoResetAll)!=null?o:e.options.autoResetPageIndex)!=null?r:!e.options.manualPagination){if(n)return;n=!0,e._queue(()=>{e.resetPageIndex(),n=!1})}},e.setPagination=r=>{const o=i=>bn(r,i);return e.options.onPaginationChange==null?void 0:e.options.onPaginationChange(o)},e.resetPagination=r=>{var o;e.setPagination(r?Ts():(o=e.initialState.pagination)!=null?o:Ts())},e.setPageIndex=r=>{e.setPagination(o=>{let i=bn(r,o.pageIndex);const l=typeof e.options.pageCount>"u"||e.options.pageCount===-1?Number.MAX_SAFE_INTEGER:e.options.pageCount-1;return i=Math.max(0,Math.min(i,l)),{...o,pageIndex:i}})},e.resetPageIndex=r=>{var o,i;e.setPageIndex(r?Uu:(o=(i=e.initialState)==null||(i=i.pagination)==null?void 0:i.pageIndex)!=null?o:Uu)},e.resetPageSize=r=>{var o,i;e.setPageSize(r?Bu:(o=(i=e.initialState)==null||(i=i.pagination)==null?void 0:i.pageSize)!=null?o:Bu)},e.setPageSize=r=>{e.setPagination(o=>{const i=Math.max(1,bn(r,o.pageSize)),l=o.pageSize*o.pageIndex,a=Math.floor(l/i);return{...o,pageIndex:a,pageSize:i}})},e.setPageCount=r=>e.setPagination(o=>{var i;let l=bn(r,(i=e.options.pageCount)!=null?i:-1);return typeof l=="number"&&(l=Math.max(-1,l)),{...o,pageCount:l}}),e.getPageOptions=X(()=>[e.getPageCount()],r=>{let o=[];return r&&r>0&&(o=[...new Array(r)].fill(null).map((i,l)=>l)),o},Y(e.options,"debugTable")),e.getCanPreviousPage=()=>e.getState().pagination.pageIndex>0,e.getCanNextPage=()=>{const{pageIndex:r}=e.getState().pagination,o=e.getPageCount();return o===-1?!0:o===0?!1:re.setPageIndex(r=>r-1),e.nextPage=()=>e.setPageIndex(r=>r+1),e.firstPage=()=>e.setPageIndex(0),e.lastPage=()=>e.setPageIndex(e.getPageCount()-1),e.getPrePaginationRowModel=()=>e.getExpandedRowModel(),e.getPaginationRowModel=()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel?e.getPrePaginationRowModel():e._getPaginationRowModel()),e.getPageCount=()=>{var r;return(r=e.options.pageCount)!=null?r:Math.ceil(e.getRowCount()/e.getState().pagination.pageSize)},e.getRowCount=()=>{var r;return(r=e.options.rowCount)!=null?r:e.getPrePaginationRowModel().rows.length}}},Ls=()=>({top:[],bottom:[]}),zC={getInitialState:e=>({rowPinning:Ls(),...e}),getDefaultOptions:e=>({onRowPinningChange:wt("rowPinning",e)}),createRow:(e,t)=>{e.pin=(n,r,o)=>{const i=r?e.getLeafRows().map(s=>{let{id:u}=s;return u}):[],l=o?e.getParentRows().map(s=>{let{id:u}=s;return u}):[],a=new Set([...l,e.id,...i]);t.setRowPinning(s=>{var u,c;if(n==="bottom"){var d,f;return{top:((d=s==null?void 0:s.top)!=null?d:[]).filter(m=>!(a!=null&&a.has(m))),bottom:[...((f=s==null?void 0:s.bottom)!=null?f:[]).filter(m=>!(a!=null&&a.has(m))),...Array.from(a)]}}if(n==="top"){var p,y;return{top:[...((p=s==null?void 0:s.top)!=null?p:[]).filter(m=>!(a!=null&&a.has(m))),...Array.from(a)],bottom:((y=s==null?void 0:s.bottom)!=null?y:[]).filter(m=>!(a!=null&&a.has(m)))}}return{top:((u=s==null?void 0:s.top)!=null?u:[]).filter(m=>!(a!=null&&a.has(m))),bottom:((c=s==null?void 0:s.bottom)!=null?c:[]).filter(m=>!(a!=null&&a.has(m)))}})},e.getCanPin=()=>{var n;const{enableRowPinning:r,enablePinning:o}=t.options;return typeof r=="function"?r(e):(n=r??o)!=null?n:!0},e.getIsPinned=()=>{const n=[e.id],{top:r,bottom:o}=t.getState().rowPinning,i=n.some(a=>r==null?void 0:r.includes(a)),l=n.some(a=>o==null?void 0:o.includes(a));return i?"top":l?"bottom":!1},e.getPinnedIndex=()=>{var n,r;const o=e.getIsPinned();if(!o)return-1;const i=(n=o==="top"?t.getTopRows():t.getBottomRows())==null?void 0:n.map(l=>{let{id:a}=l;return a});return(r=i==null?void 0:i.indexOf(e.id))!=null?r:-1}},createTable:e=>{e.setRowPinning=t=>e.options.onRowPinningChange==null?void 0:e.options.onRowPinningChange(t),e.resetRowPinning=t=>{var n,r;return e.setRowPinning(t?Ls():(n=(r=e.initialState)==null?void 0:r.rowPinning)!=null?n:Ls())},e.getIsSomeRowsPinned=t=>{var n;const r=e.getState().rowPinning;if(!t){var o,i;return!!((o=r.top)!=null&&o.length||(i=r.bottom)!=null&&i.length)}return!!((n=r[t])!=null&&n.length)},e._getPinnedRows=(t,n,r)=>{var o;return((o=e.options.keepPinnedRows)==null||o?(n??[]).map(l=>{const a=e.getRow(l,!0);return a.getIsAllParentsExpanded()?a:null}):(n??[]).map(l=>t.find(a=>a.id===l))).filter(Boolean).map(l=>({...l,position:r}))},e.getTopRows=X(()=>[e.getRowModel().rows,e.getState().rowPinning.top],(t,n)=>e._getPinnedRows(t,n,"top"),Y(e.options,"debugRows")),e.getBottomRows=X(()=>[e.getRowModel().rows,e.getState().rowPinning.bottom],(t,n)=>e._getPinnedRows(t,n,"bottom"),Y(e.options,"debugRows")),e.getCenterRows=X(()=>[e.getRowModel().rows,e.getState().rowPinning.top,e.getState().rowPinning.bottom],(t,n,r)=>{const o=new Set([...n??[],...r??[]]);return t.filter(i=>!o.has(i.id))},Y(e.options,"debugRows"))}},$C={getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:wt("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>{e.setRowSelection=t=>e.options.onRowSelectionChange==null?void 0:e.options.onRowSelectionChange(t),e.resetRowSelection=t=>{var n;return e.setRowSelection(t?{}:(n=e.initialState.rowSelection)!=null?n:{})},e.toggleAllRowsSelected=t=>{e.setRowSelection(n=>{t=typeof t<"u"?t:!e.getIsAllRowsSelected();const r={...n},o=e.getPreGroupedRowModel().flatRows;return t?o.forEach(i=>{i.getCanSelect()&&(r[i.id]=!0)}):o.forEach(i=>{delete r[i.id]}),r})},e.toggleAllPageRowsSelected=t=>e.setRowSelection(n=>{const r=typeof t<"u"?t:!e.getIsAllPageRowsSelected(),o={...n};return e.getRowModel().rows.forEach(i=>{Hu(o,i.id,r,!0,e)}),o}),e.getPreSelectedRowModel=()=>e.getCoreRowModel(),e.getSelectedRowModel=X(()=>[e.getState().rowSelection,e.getCoreRowModel()],(t,n)=>Object.keys(t).length?Os(e,n):{rows:[],flatRows:[],rowsById:{}},Y(e.options,"debugTable")),e.getFilteredSelectedRowModel=X(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(t,n)=>Object.keys(t).length?Os(e,n):{rows:[],flatRows:[],rowsById:{}},Y(e.options,"debugTable")),e.getGroupedSelectedRowModel=X(()=>[e.getState().rowSelection,e.getSortedRowModel()],(t,n)=>Object.keys(t).length?Os(e,n):{rows:[],flatRows:[],rowsById:{}},Y(e.options,"debugTable")),e.getIsAllRowsSelected=()=>{const t=e.getFilteredRowModel().flatRows,{rowSelection:n}=e.getState();let r=!!(t.length&&Object.keys(n).length);return r&&t.some(o=>o.getCanSelect()&&!n[o.id])&&(r=!1),r},e.getIsAllPageRowsSelected=()=>{const t=e.getPaginationRowModel().flatRows.filter(o=>o.getCanSelect()),{rowSelection:n}=e.getState();let r=!!t.length;return r&&t.some(o=>!n[o.id])&&(r=!1),r},e.getIsSomeRowsSelected=()=>{var t;const n=Object.keys((t=e.getState().rowSelection)!=null?t:{}).length;return n>0&&n{const t=e.getPaginationRowModel().flatRows;return e.getIsAllPageRowsSelected()?!1:t.filter(n=>n.getCanSelect()).some(n=>n.getIsSelected()||n.getIsSomeSelected())},e.getToggleAllRowsSelectedHandler=()=>t=>{e.toggleAllRowsSelected(t.target.checked)},e.getToggleAllPageRowsSelectedHandler=()=>t=>{e.toggleAllPageRowsSelected(t.target.checked)}},createRow:(e,t)=>{e.toggleSelected=(n,r)=>{const o=e.getIsSelected();t.setRowSelection(i=>{var l;if(n=typeof n<"u"?n:!o,e.getCanSelect()&&o===n)return i;const a={...i};return Hu(a,e.id,n,(l=r==null?void 0:r.selectChildren)!=null?l:!0,t),a})},e.getIsSelected=()=>{const{rowSelection:n}=t.getState();return od(e,n)},e.getIsSomeSelected=()=>{const{rowSelection:n}=t.getState();return Gu(e,n)==="some"},e.getIsAllSubRowsSelected=()=>{const{rowSelection:n}=t.getState();return Gu(e,n)==="all"},e.getCanSelect=()=>{var n;return typeof t.options.enableRowSelection=="function"?t.options.enableRowSelection(e):(n=t.options.enableRowSelection)!=null?n:!0},e.getCanSelectSubRows=()=>{var n;return typeof t.options.enableSubRowSelection=="function"?t.options.enableSubRowSelection(e):(n=t.options.enableSubRowSelection)!=null?n:!0},e.getCanMultiSelect=()=>{var n;return typeof t.options.enableMultiRowSelection=="function"?t.options.enableMultiRowSelection(e):(n=t.options.enableMultiRowSelection)!=null?n:!0},e.getToggleSelectedHandler=()=>{const n=e.getCanSelect();return r=>{var o;n&&e.toggleSelected((o=r.target)==null?void 0:o.checked)}}}},Hu=(e,t,n,r,o)=>{var i;const l=o.getRow(t,!0);n?(l.getCanMultiSelect()||Object.keys(e).forEach(a=>delete e[a]),l.getCanSelect()&&(e[t]=!0)):delete e[t],r&&(i=l.subRows)!=null&&i.length&&l.getCanSelectSubRows()&&l.subRows.forEach(a=>Hu(e,a.id,n,r,o))};function Os(e,t){const n=e.getState().rowSelection,r=[],o={},i=function(l,a){return l.map(s=>{var u;const c=od(s,n);if(c&&(r.push(s),o[s.id]=s),(u=s.subRows)!=null&&u.length&&(s={...s,subRows:i(s.subRows)}),c)return s}).filter(Boolean)};return{rows:i(t.rows),flatRows:r,rowsById:o}}function od(e,t){var n;return(n=t[e.id])!=null?n:!1}function Gu(e,t,n){var r;if(!((r=e.subRows)!=null&&r.length))return!1;let o=!0,i=!1;return e.subRows.forEach(l=>{if(!(i&&!o)&&(l.getCanSelect()&&(od(l,t)?i=!0:o=!1),l.subRows&&l.subRows.length)){const a=Gu(l,t);a==="all"?i=!0:(a==="some"&&(i=!0),o=!1)}}),o?"all":i?"some":!1}const Wu=/([0-9]+)/gm,VC=(e,t,n)=>$m(Xn(e.getValue(n)).toLowerCase(),Xn(t.getValue(n)).toLowerCase()),UC=(e,t,n)=>$m(Xn(e.getValue(n)),Xn(t.getValue(n))),BC=(e,t,n)=>ld(Xn(e.getValue(n)).toLowerCase(),Xn(t.getValue(n)).toLowerCase()),HC=(e,t,n)=>ld(Xn(e.getValue(n)),Xn(t.getValue(n))),GC=(e,t,n)=>{const r=e.getValue(n),o=t.getValue(n);return r>o?1:rld(e.getValue(n),t.getValue(n));function ld(e,t){return e===t?0:e>t?1:-1}function Xn(e){return typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?"":String(e):typeof e=="string"?e:""}function $m(e,t){const n=e.split(Wu).filter(Boolean),r=t.split(Wu).filter(Boolean);for(;n.length&&r.length;){const o=n.shift(),i=r.shift(),l=parseInt(o,10),a=parseInt(i,10),s=[l,a].sort();if(isNaN(s[0])){if(o>i)return 1;if(i>o)return-1;continue}if(isNaN(s[1]))return isNaN(l)?-1:1;if(l>a)return 1;if(a>l)return-1}return n.length-r.length}const Ao={alphanumeric:VC,alphanumericCaseSensitive:UC,text:BC,textCaseSensitive:HC,datetime:GC,basic:WC},KC={getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto",sortUndefined:1}),getDefaultOptions:e=>({onSortingChange:wt("sorting",e),isMultiSortEvent:t=>t.shiftKey}),createColumn:(e,t)=>{e.getAutoSortingFn=()=>{const n=t.getFilteredRowModel().flatRows.slice(10);let r=!1;for(const o of n){const i=o==null?void 0:o.getValue(e.id);if(Object.prototype.toString.call(i)==="[object Date]")return Ao.datetime;if(typeof i=="string"&&(r=!0,i.split(Wu).length>1))return Ao.alphanumeric}return r?Ao.text:Ao.basic},e.getAutoSortDir=()=>{const n=t.getFilteredRowModel().flatRows[0];return typeof(n==null?void 0:n.getValue(e.id))=="string"?"asc":"desc"},e.getSortingFn=()=>{var n,r;if(!e)throw new Error;return ba(e.columnDef.sortingFn)?e.columnDef.sortingFn:e.columnDef.sortingFn==="auto"?e.getAutoSortingFn():(n=(r=t.options.sortingFns)==null?void 0:r[e.columnDef.sortingFn])!=null?n:Ao[e.columnDef.sortingFn]},e.toggleSorting=(n,r)=>{const o=e.getNextSortingOrder(),i=typeof n<"u"&&n!==null;t.setSorting(l=>{const a=l==null?void 0:l.find(p=>p.id===e.id),s=l==null?void 0:l.findIndex(p=>p.id===e.id);let u=[],c,d=i?n:o==="desc";if(l!=null&&l.length&&e.getCanMultiSort()&&r?a?c="toggle":c="add":l!=null&&l.length&&s!==l.length-1?c="replace":a?c="toggle":c="replace",c==="toggle"&&(i||o||(c="remove")),c==="add"){var f;u=[...l,{id:e.id,desc:d}],u.splice(0,u.length-((f=t.options.maxMultiSortColCount)!=null?f:Number.MAX_SAFE_INTEGER))}else c==="toggle"?u=l.map(p=>p.id===e.id?{...p,desc:d}:p):c==="remove"?u=l.filter(p=>p.id!==e.id):u=[{id:e.id,desc:d}];return u})},e.getFirstSortDir=()=>{var n,r;return((n=(r=e.columnDef.sortDescFirst)!=null?r:t.options.sortDescFirst)!=null?n:e.getAutoSortDir()==="desc")?"desc":"asc"},e.getNextSortingOrder=n=>{var r,o;const i=e.getFirstSortDir(),l=e.getIsSorted();return l?l!==i&&((r=t.options.enableSortingRemoval)==null||r)&&(!(n&&(o=t.options.enableMultiRemove)!=null)||o)?!1:l==="desc"?"asc":"desc":i},e.getCanSort=()=>{var n,r;return((n=e.columnDef.enableSorting)!=null?n:!0)&&((r=t.options.enableSorting)!=null?r:!0)&&!!e.accessorFn},e.getCanMultiSort=()=>{var n,r;return(n=(r=e.columnDef.enableMultiSort)!=null?r:t.options.enableMultiSort)!=null?n:!!e.accessorFn},e.getIsSorted=()=>{var n;const r=(n=t.getState().sorting)==null?void 0:n.find(o=>o.id===e.id);return r?r.desc?"desc":"asc":!1},e.getSortIndex=()=>{var n,r;return(n=(r=t.getState().sorting)==null?void 0:r.findIndex(o=>o.id===e.id))!=null?n:-1},e.clearSorting=()=>{t.setSorting(n=>n!=null&&n.length?n.filter(r=>r.id!==e.id):[])},e.getToggleSortingHandler=()=>{const n=e.getCanSort();return r=>{n&&(r.persist==null||r.persist(),e.toggleSorting==null||e.toggleSorting(void 0,e.getCanMultiSort()?t.options.isMultiSortEvent==null?void 0:t.options.isMultiSortEvent(r):!1))}}},createTable:e=>{e.setSorting=t=>e.options.onSortingChange==null?void 0:e.options.onSortingChange(t),e.resetSorting=t=>{var n,r;e.setSorting(t?[]:(n=(r=e.initialState)==null?void 0:r.sorting)!=null?n:[])},e.getPreSortedRowModel=()=>e.getGroupedRowModel(),e.getSortedRowModel=()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel())}},QC=[gC,OC,DC,NC,mC,vC,FC,AC,KC,MC,jC,bC,zC,$C,TC];function XC(e){var t,n;const r=[...QC,...(t=e._features)!=null?t:[]];let o={_features:r};const i=o._features.reduce((f,p)=>Object.assign(f,p.getDefaultOptions==null?void 0:p.getDefaultOptions(o)),{}),l=f=>o.options.mergeOptions?o.options.mergeOptions(i,f):{...i,...f};let s={...{},...(n=e.initialState)!=null?n:{}};o._features.forEach(f=>{var p;s=(p=f.getInitialState==null?void 0:f.getInitialState(s))!=null?p:s});const u=[];let c=!1;const d={_features:r,options:{...i,...e},initialState:s,_queue:f=>{u.push(f),c||(c=!0,Promise.resolve().then(()=>{for(;u.length;)u.shift()();c=!1}).catch(p=>setTimeout(()=>{throw p})))},reset:()=>{o.setState(o.initialState)},setOptions:f=>{const p=bn(f,o.options);o.options=l(p)},getState:()=>o.options.state,setState:f=>{o.options.onStateChange==null||o.options.onStateChange(f)},_getRowId:(f,p,y)=>{var m;return(m=o.options.getRowId==null?void 0:o.options.getRowId(f,p,y))!=null?m:`${y?[y.id,p].join("."):p}`},getCoreRowModel:()=>(o._getCoreRowModel||(o._getCoreRowModel=o.options.getCoreRowModel(o)),o._getCoreRowModel()),getRowModel:()=>o.getPaginationRowModel(),getRow:(f,p)=>{let y=(p?o.getPrePaginationRowModel():o.getRowModel()).rowsById[f];if(!y&&(y=o.getCoreRowModel().rowsById[f],!y))throw new Error;return y},_getDefaultColumnDef:X(()=>[o.options.defaultColumn],f=>{var p;return f=(p=f)!=null?p:{},{header:y=>{const m=y.header.column.columnDef;return m.accessorKey?m.accessorKey:m.accessorFn?m.id:null},cell:y=>{var m,S;return(m=(S=y.renderValue())==null||S.toString==null?void 0:S.toString())!=null?m:null},...o._features.reduce((y,m)=>Object.assign(y,m.getDefaultColumnDef==null?void 0:m.getDefaultColumnDef()),{}),...f}},Y(e,"debugColumns")),_getColumnDefs:()=>o.options.columns,getAllColumns:X(()=>[o._getColumnDefs()],f=>{const p=function(y,m,S){return S===void 0&&(S=0),y.map(g=>{const h=pC(o,g,S,m),w=g;return h.columns=w.columns?p(w.columns,h,S+1):[],h})};return p(f)},Y(e,"debugColumns")),getAllFlatColumns:X(()=>[o.getAllColumns()],f=>f.flatMap(p=>p.getFlatColumns()),Y(e,"debugColumns")),_getAllFlatColumnsById:X(()=>[o.getAllFlatColumns()],f=>f.reduce((p,y)=>(p[y.id]=y,p),{}),Y(e,"debugColumns")),getAllLeafColumns:X(()=>[o.getAllColumns(),o._getOrderColumnsFn()],(f,p)=>{let y=f.flatMap(m=>m.getLeafColumns());return p(y)},Y(e,"debugColumns")),getColumn:f=>o._getAllFlatColumnsById()[f]};Object.assign(o,d);for(let f=0;fX(()=>[e.options.data],t=>{const n={rows:[],flatRows:[],rowsById:{}},r=function(o,i,l){i===void 0&&(i=0);const a=[];for(let u=0;ue._autoResetPageIndex()))}function ZC(e){const t=[],n=r=>{var o;t.push(r),(o=r.subRows)!=null&&o.length&&r.getIsExpanded()&&r.subRows.forEach(n)};return e.rows.forEach(n),{rows:t,flatRows:e.flatRows,rowsById:e.rowsById}}function JC(e){return t=>X(()=>[t.getState().pagination,t.getPrePaginationRowModel(),t.options.paginateExpandedRows?void 0:t.getState().expanded],(n,r)=>{if(!r.rows.length)return r;const{pageSize:o,pageIndex:i}=n;let{rows:l,flatRows:a,rowsById:s}=r;const u=o*i,c=u+o;l=l.slice(u,c);let d;t.options.paginateExpandedRows?d={rows:l,flatRows:a,rowsById:s}:d=ZC({rows:l,flatRows:a,rowsById:s}),d.flatRows=[];const f=p=>{d.flatRows.push(p),p.subRows.length&&p.subRows.forEach(f)};return d.rows.forEach(f),d},Y(t.options,"debugTable"))}/** + * react-table + * + * Copyright (c) TanStack + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function xp(e,t){return e?qC(e)?v.createElement(e,t):e:null}function qC(e){return eR(e)||typeof e=="function"||tR(e)}function eR(e){return typeof e=="function"&&(()=>{const t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}function tR(e){return typeof e=="object"&&typeof e.$$typeof=="symbol"&&["react.memo","react.forward_ref"].includes(e.$$typeof.description)}function nR(e){const t={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[n]=v.useState(()=>({current:XC(t)})),[r,o]=v.useState(()=>n.current.initialState);return n.current.setOptions(i=>({...i,...e,state:{...r,...e.state},onStateChange:l=>{o(l),e.onStateChange==null||e.onStateChange(l)}})),n.current}function Vm(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t{const t=lR(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:l=>{const a=l.split(ad);return a[0]===""&&a.length!==1&&a.shift(),Um(a,t)||iR(l)},getConflictingClassGroupIds:(l,a)=>{const s=n[l]||[];return a&&r[l]?[...s,...r[l]]:s}}},Um=(e,t)=>{var l;if(e.length===0)return t.classGroupId;const n=e[0],r=t.nextPart.get(n),o=r?Um(e.slice(1),r):void 0;if(o)return o;if(t.validators.length===0)return;const i=e.join(ad);return(l=t.validators.find(({validator:a})=>a(i)))==null?void 0:l.classGroupId},Cp=/^\[(.+)\]$/,iR=e=>{if(Cp.test(e)){const t=Cp.exec(e)[1],n=t==null?void 0:t.substring(0,t.indexOf(":"));if(n)return"arbitrary.."+n}},lR=e=>{const{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return sR(Object.entries(e.classGroups),n).forEach(([i,l])=>{Ku(l,r,i,t)}),r},Ku=(e,t,n,r)=>{e.forEach(o=>{if(typeof o=="string"){const i=o===""?t:Rp(t,o);i.classGroupId=n;return}if(typeof o=="function"){if(aR(o)){Ku(o(r),t,n,r);return}t.validators.push({validator:o,classGroupId:n});return}Object.entries(o).forEach(([i,l])=>{Ku(l,Rp(t,i),n,r)})})},Rp=(e,t)=>{let n=e;return t.split(ad).forEach(r=>{n.nextPart.has(r)||n.nextPart.set(r,{nextPart:new Map,validators:[]}),n=n.nextPart.get(r)}),n},aR=e=>e.isThemeGetter,sR=(e,t)=>t?e.map(([n,r])=>{const o=r.map(i=>typeof i=="string"?t+i:typeof i=="object"?Object.fromEntries(Object.entries(i).map(([l,a])=>[t+l,a])):i);return[n,o]}):e,uR=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=new Map,r=new Map;const o=(i,l)=>{n.set(i,l),t++,t>e&&(t=0,r=n,n=new Map)};return{get(i){let l=n.get(i);if(l!==void 0)return l;if((l=r.get(i))!==void 0)return o(i,l),l},set(i,l){n.has(i)?n.set(i,l):o(i,l)}}},Bm="!",cR=e=>{const{separator:t,experimentalParseClassName:n}=e,r=t.length===1,o=t[0],i=t.length,l=a=>{const s=[];let u=0,c=0,d;for(let S=0;Sc?d-c:void 0;return{modifiers:s,hasImportantModifier:p,baseClassName:y,maybePostfixModifierPosition:m}};return n?a=>n({className:a,parseClassName:l}):l},dR=e=>{if(e.length<=1)return e;const t=[];let n=[];return e.forEach(r=>{r[0]==="["?(t.push(...n.sort(),r),n=[]):n.push(r)}),t.push(...n.sort()),t},fR=e=>({cache:uR(e.cacheSize),parseClassName:cR(e),...oR(e)}),pR=/\s+/,gR=(e,t)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:o}=t,i=[],l=e.trim().split(pR);let a="";for(let s=l.length-1;s>=0;s-=1){const u=l[s],{modifiers:c,hasImportantModifier:d,baseClassName:f,maybePostfixModifierPosition:p}=n(u);let y=!!p,m=r(y?f.substring(0,p):f);if(!m){if(!y){a=u+(a.length>0?" "+a:a);continue}if(m=r(f),!m){a=u+(a.length>0?" "+a:a);continue}y=!1}const S=dR(c).join(":"),g=d?S+Bm:S,h=g+m;if(i.includes(h))continue;i.push(h);const w=o(m,y);for(let x=0;x0?" "+a:a)}return a};function hR(){let e=0,t,n,r="";for(;e{if(typeof e=="string")return e;let t,n="";for(let r=0;rd(c),e());return n=fR(u),r=n.cache.get,o=n.cache.set,i=a,a(s)}function a(s){const u=r(s);if(u)return u;const c=gR(s,n);return o(s,c),c}return function(){return i(hR.apply(null,arguments))}}const me=e=>{const t=n=>n[e]||[];return t.isThemeGetter=!0,t},Gm=/^\[(?:([a-z-]+):)?(.+)\]$/i,vR=/^\d+\/\d+$/,yR=new Set(["px","full","screen"]),wR=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,SR=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,xR=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,CR=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,RR=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,rn=e=>to(e)||yR.has(e)||vR.test(e),Mn=e=>wo(e,"length",IR),to=e=>!!e&&!Number.isNaN(Number(e)),Fs=e=>wo(e,"number",to),jo=e=>!!e&&Number.isInteger(Number(e)),ER=e=>e.endsWith("%")&&to(e.slice(0,-1)),q=e=>Gm.test(e),kn=e=>wR.test(e),_R=new Set(["length","size","percentage"]),PR=e=>wo(e,_R,Wm),MR=e=>wo(e,"position",Wm),kR=new Set(["image","url"]),DR=e=>wo(e,kR,LR),NR=e=>wo(e,"",TR),bo=()=>!0,wo=(e,t,n)=>{const r=Gm.exec(e);return r?r[1]?typeof t=="string"?r[1]===t:t.has(r[1]):n(r[2]):!1},IR=e=>SR.test(e)&&!xR.test(e),Wm=()=>!1,TR=e=>CR.test(e),LR=e=>RR.test(e),OR=()=>{const e=me("colors"),t=me("spacing"),n=me("blur"),r=me("brightness"),o=me("borderColor"),i=me("borderRadius"),l=me("borderSpacing"),a=me("borderWidth"),s=me("contrast"),u=me("grayscale"),c=me("hueRotate"),d=me("invert"),f=me("gap"),p=me("gradientColorStops"),y=me("gradientColorStopPositions"),m=me("inset"),S=me("margin"),g=me("opacity"),h=me("padding"),w=me("saturate"),x=me("scale"),P=me("sepia"),D=me("skew"),k=me("space"),C=me("translate"),F=()=>["auto","contain","none"],T=()=>["auto","hidden","clip","visible","scroll"],b=()=>["auto",q,t],j=()=>[q,t],Q=()=>["",rn,Mn],G=()=>["auto",to,q],se=()=>["bottom","center","left","left-bottom","left-top","right","right-bottom","right-top","top"],Z=()=>["solid","dashed","dotted","double","none"],ie=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],I=()=>["start","end","center","between","around","evenly","stretch"],N=()=>["","0",q],z=()=>["auto","avoid","all","avoid-page","page","left","right","column"],W=()=>[to,q];return{cacheSize:500,separator:":",theme:{colors:[bo],spacing:[rn,Mn],blur:["none","",kn,q],brightness:W(),borderColor:[e],borderRadius:["none","","full",kn,q],borderSpacing:j(),borderWidth:Q(),contrast:W(),grayscale:N(),hueRotate:W(),invert:N(),gap:j(),gradientColorStops:[e],gradientColorStopPositions:[ER,Mn],inset:b(),margin:b(),opacity:W(),padding:j(),saturate:W(),scale:W(),sepia:N(),skew:W(),space:j(),translate:j()},classGroups:{aspect:[{aspect:["auto","square","video",q]}],container:["container"],columns:[{columns:[kn]}],"break-after":[{"break-after":z()}],"break-before":[{"break-before":z()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:[...se(),q]}],overflow:[{overflow:T()}],"overflow-x":[{"overflow-x":T()}],"overflow-y":[{"overflow-y":T()}],overscroll:[{overscroll:F()}],"overscroll-x":[{"overscroll-x":F()}],"overscroll-y":[{"overscroll-y":F()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:[m]}],"inset-x":[{"inset-x":[m]}],"inset-y":[{"inset-y":[m]}],start:[{start:[m]}],end:[{end:[m]}],top:[{top:[m]}],right:[{right:[m]}],bottom:[{bottom:[m]}],left:[{left:[m]}],visibility:["visible","invisible","collapse"],z:[{z:["auto",jo,q]}],basis:[{basis:b()}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["wrap","wrap-reverse","nowrap"]}],flex:[{flex:["1","auto","initial","none",q]}],grow:[{grow:N()}],shrink:[{shrink:N()}],order:[{order:["first","last","none",jo,q]}],"grid-cols":[{"grid-cols":[bo]}],"col-start-end":[{col:["auto",{span:["full",jo,q]},q]}],"col-start":[{"col-start":G()}],"col-end":[{"col-end":G()}],"grid-rows":[{"grid-rows":[bo]}],"row-start-end":[{row:["auto",{span:[jo,q]},q]}],"row-start":[{"row-start":G()}],"row-end":[{"row-end":G()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":["auto","min","max","fr",q]}],"auto-rows":[{"auto-rows":["auto","min","max","fr",q]}],gap:[{gap:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:["normal",...I()]}],"justify-items":[{"justify-items":["start","end","center","stretch"]}],"justify-self":[{"justify-self":["auto","start","end","center","stretch"]}],"align-content":[{content:["normal",...I(),"baseline"]}],"align-items":[{items:["start","end","center","baseline","stretch"]}],"align-self":[{self:["auto","start","end","center","stretch","baseline"]}],"place-content":[{"place-content":[...I(),"baseline"]}],"place-items":[{"place-items":["start","end","center","baseline","stretch"]}],"place-self":[{"place-self":["auto","start","end","center","stretch"]}],p:[{p:[h]}],px:[{px:[h]}],py:[{py:[h]}],ps:[{ps:[h]}],pe:[{pe:[h]}],pt:[{pt:[h]}],pr:[{pr:[h]}],pb:[{pb:[h]}],pl:[{pl:[h]}],m:[{m:[S]}],mx:[{mx:[S]}],my:[{my:[S]}],ms:[{ms:[S]}],me:[{me:[S]}],mt:[{mt:[S]}],mr:[{mr:[S]}],mb:[{mb:[S]}],ml:[{ml:[S]}],"space-x":[{"space-x":[k]}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":[k]}],"space-y-reverse":["space-y-reverse"],w:[{w:["auto","min","max","fit","svw","lvw","dvw",q,t]}],"min-w":[{"min-w":[q,t,"min","max","fit"]}],"max-w":[{"max-w":[q,t,"none","full","min","max","fit","prose",{screen:[kn]},kn]}],h:[{h:[q,t,"auto","min","max","fit","svh","lvh","dvh"]}],"min-h":[{"min-h":[q,t,"min","max","fit","svh","lvh","dvh"]}],"max-h":[{"max-h":[q,t,"min","max","fit","svh","lvh","dvh"]}],size:[{size:[q,t,"auto","min","max","fit"]}],"font-size":[{text:["base",kn,Mn]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:["thin","extralight","light","normal","medium","semibold","bold","extrabold","black",Fs]}],"font-family":[{font:[bo]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractons"],tracking:[{tracking:["tighter","tight","normal","wide","wider","widest",q]}],"line-clamp":[{"line-clamp":["none",to,Fs]}],leading:[{leading:["none","tight","snug","normal","relaxed","loose",rn,q]}],"list-image":[{"list-image":["none",q]}],"list-style-type":[{list:["none","disc","decimal",q]}],"list-style-position":[{list:["inside","outside"]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[g]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[g]}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Z(),"wavy"]}],"text-decoration-thickness":[{decoration:["auto","from-font",rn,Mn]}],"underline-offset":[{"underline-offset":["auto",rn,q]}],"text-decoration-color":[{decoration:[e]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:j()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",q]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",q]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-opacity":[{"bg-opacity":[g]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:[...se(),MR]}],"bg-repeat":[{bg:["no-repeat",{repeat:["","x","y","round","space"]}]}],"bg-size":[{bg:["auto","cover","contain",PR]}],"bg-image":[{bg:["none",{"gradient-to":["t","tr","r","br","b","bl","l","tl"]},DR]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[y]}],"gradient-via-pos":[{via:[y]}],"gradient-to-pos":[{to:[y]}],"gradient-from":[{from:[p]}],"gradient-via":[{via:[p]}],"gradient-to":[{to:[p]}],rounded:[{rounded:[i]}],"rounded-s":[{"rounded-s":[i]}],"rounded-e":[{"rounded-e":[i]}],"rounded-t":[{"rounded-t":[i]}],"rounded-r":[{"rounded-r":[i]}],"rounded-b":[{"rounded-b":[i]}],"rounded-l":[{"rounded-l":[i]}],"rounded-ss":[{"rounded-ss":[i]}],"rounded-se":[{"rounded-se":[i]}],"rounded-ee":[{"rounded-ee":[i]}],"rounded-es":[{"rounded-es":[i]}],"rounded-tl":[{"rounded-tl":[i]}],"rounded-tr":[{"rounded-tr":[i]}],"rounded-br":[{"rounded-br":[i]}],"rounded-bl":[{"rounded-bl":[i]}],"border-w":[{border:[a]}],"border-w-x":[{"border-x":[a]}],"border-w-y":[{"border-y":[a]}],"border-w-s":[{"border-s":[a]}],"border-w-e":[{"border-e":[a]}],"border-w-t":[{"border-t":[a]}],"border-w-r":[{"border-r":[a]}],"border-w-b":[{"border-b":[a]}],"border-w-l":[{"border-l":[a]}],"border-opacity":[{"border-opacity":[g]}],"border-style":[{border:[...Z(),"hidden"]}],"divide-x":[{"divide-x":[a]}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":[a]}],"divide-y-reverse":["divide-y-reverse"],"divide-opacity":[{"divide-opacity":[g]}],"divide-style":[{divide:Z()}],"border-color":[{border:[o]}],"border-color-x":[{"border-x":[o]}],"border-color-y":[{"border-y":[o]}],"border-color-t":[{"border-t":[o]}],"border-color-r":[{"border-r":[o]}],"border-color-b":[{"border-b":[o]}],"border-color-l":[{"border-l":[o]}],"divide-color":[{divide:[o]}],"outline-style":[{outline:["",...Z()]}],"outline-offset":[{"outline-offset":[rn,q]}],"outline-w":[{outline:[rn,Mn]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:Q()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[g]}],"ring-offset-w":[{"ring-offset":[rn,Mn]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:["","inner","none",kn,NR]}],"shadow-color":[{shadow:[bo]}],opacity:[{opacity:[g]}],"mix-blend":[{"mix-blend":[...ie(),"plus-lighter","plus-darker"]}],"bg-blend":[{"bg-blend":ie()}],filter:[{filter:["","none"]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[s]}],"drop-shadow":[{"drop-shadow":["","none",kn,q]}],grayscale:[{grayscale:[u]}],"hue-rotate":[{"hue-rotate":[c]}],invert:[{invert:[d]}],saturate:[{saturate:[w]}],sepia:[{sepia:[P]}],"backdrop-filter":[{"backdrop-filter":["","none"]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[s]}],"backdrop-grayscale":[{"backdrop-grayscale":[u]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[c]}],"backdrop-invert":[{"backdrop-invert":[d]}],"backdrop-opacity":[{"backdrop-opacity":[g]}],"backdrop-saturate":[{"backdrop-saturate":[w]}],"backdrop-sepia":[{"backdrop-sepia":[P]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":[l]}],"border-spacing-x":[{"border-spacing-x":[l]}],"border-spacing-y":[{"border-spacing-y":[l]}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["none","all","","colors","opacity","shadow","transform",q]}],duration:[{duration:W()}],ease:[{ease:["linear","in","out","in-out",q]}],delay:[{delay:W()}],animate:[{animate:["none","spin","ping","pulse","bounce",q]}],transform:[{transform:["","gpu","none"]}],scale:[{scale:[x]}],"scale-x":[{"scale-x":[x]}],"scale-y":[{"scale-y":[x]}],rotate:[{rotate:[jo,q]}],"translate-x":[{"translate-x":[C]}],"translate-y":[{"translate-y":[C]}],"skew-x":[{"skew-x":[D]}],"skew-y":[{"skew-y":[D]}],"transform-origin":[{origin:["center","top","top-right","right","bottom-right","bottom","bottom-left","left","top-left",q]}],accent:[{accent:["auto",e]}],appearance:[{appearance:["none","auto"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",q]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":["none","auto"]}],resize:[{resize:["none","y","x",""]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":j()}],"scroll-mx":[{"scroll-mx":j()}],"scroll-my":[{"scroll-my":j()}],"scroll-ms":[{"scroll-ms":j()}],"scroll-me":[{"scroll-me":j()}],"scroll-mt":[{"scroll-mt":j()}],"scroll-mr":[{"scroll-mr":j()}],"scroll-mb":[{"scroll-mb":j()}],"scroll-ml":[{"scroll-ml":j()}],"scroll-p":[{"scroll-p":j()}],"scroll-px":[{"scroll-px":j()}],"scroll-py":[{"scroll-py":j()}],"scroll-ps":[{"scroll-ps":j()}],"scroll-pe":[{"scroll-pe":j()}],"scroll-pt":[{"scroll-pt":j()}],"scroll-pr":[{"scroll-pr":j()}],"scroll-pb":[{"scroll-pb":j()}],"scroll-pl":[{"scroll-pl":j()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",q]}],fill:[{fill:[e,"none"]}],"stroke-w":[{stroke:[rn,Mn,Fs]}],stroke:[{stroke:[e,"none"]}],sr:["sr-only","not-sr-only"],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]}}},FR=mR(OR);function Ve(...e){return FR(rR(e))}function AR(e){return R.jsx("table",{className:Ve("w-full caption-bottom text-sm",e.className),...e})}function jR(e){return R.jsx("thead",{...e})}function bR(e){return R.jsx("tbody",{...e})}function As(e){return R.jsx("tr",{...e})}function zR({className:e,...t}){return R.jsx("th",{className:Ve("h-9 px-3 text-left align-middle font-medium text-zinc-600",e),...t})}function Ep({className:e,...t}){return R.jsx("td",{className:Ve("p-3 align-middle",e),...t})}function ne(e,t,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return t==null?void 0:t(o)}}function _p(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function za(...e){return t=>{let n=!1;const r=e.map(o=>{const i=_p(o,t);return!n&&typeof i=="function"&&(n=!0),i});if(n)return()=>{for(let o=0;o{const{children:l,...a}=i,s=v.useMemo(()=>a,Object.values(a));return R.jsx(n.Provider,{value:s,children:l})};r.displayName=e+"Provider";function o(i){const l=v.useContext(n);if(l)return l;if(t!==void 0)return t;throw new Error(`\`${i}\` must be used within \`${e}\``)}return[r,o]}function So(e,t=[]){let n=[];function r(i,l){const a=v.createContext(l),s=n.length;n=[...n,l];const u=d=>{var g;const{scope:f,children:p,...y}=d,m=((g=f==null?void 0:f[e])==null?void 0:g[s])||a,S=v.useMemo(()=>y,Object.values(y));return R.jsx(m.Provider,{value:S,children:p})};u.displayName=i+"Provider";function c(d,f){var m;const p=((m=f==null?void 0:f[e])==null?void 0:m[s])||a,y=v.useContext(p);if(y)return y;if(l!==void 0)return l;throw new Error(`\`${d}\` must be used within \`${i}\``)}return[u,c]}const o=()=>{const i=n.map(l=>v.createContext(l));return function(a){const s=(a==null?void 0:a[e])||i;return v.useMemo(()=>({[`__scope${e}`]:{...a,[e]:s}}),[a,s])}};return o.scopeName=e,[r,VR(o,...t)]}function VR(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(i){const l=r.reduce((a,{useScope:s,scopeName:u})=>{const d=s(i)[`__scope${u}`];return{...a,...d}},{});return v.useMemo(()=>({[`__scope${t.scopeName}`]:l}),[l])}};return n.scopeName=t.scopeName,n}var Yn=globalThis!=null&&globalThis.document?v.useLayoutEffect:()=>{},UR=ic[" useInsertionEffect ".trim().toString()]||Yn;function sd({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[o,i,l]=BR({defaultProp:t,onChange:n}),a=e!==void 0,s=a?e:o;{const c=v.useRef(e!==void 0);v.useEffect(()=>{const d=c.current;d!==a&&console.warn(`${r} is changing from ${d?"controlled":"uncontrolled"} to ${a?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),c.current=a},[a,r])}const u=v.useCallback(c=>{var d;if(a){const f=HR(c)?c(e):c;f!==e&&((d=l.current)==null||d.call(l,f))}else i(c)},[a,e,i,l]);return[s,u]}function BR({defaultProp:e,onChange:t}){const[n,r]=v.useState(e),o=v.useRef(n),i=v.useRef(t);return UR(()=>{i.current=t},[t]),v.useEffect(()=>{var l;o.current!==n&&((l=i.current)==null||l.call(i,n),o.current=n)},[n,o]),[n,r,i]}function HR(e){return typeof e=="function"}function Si(e){const t=GR(e),n=v.forwardRef((r,o)=>{const{children:i,...l}=r,a=v.Children.toArray(i),s=a.find(KR);if(s){const u=s.props.children,c=a.map(d=>d===s?v.Children.count(u)>1?v.Children.only(null):v.isValidElement(u)?u.props.children:null:d);return R.jsx(t,{...l,ref:o,children:v.isValidElement(u)?v.cloneElement(u,void 0,c):null})}return R.jsx(t,{...l,ref:o,children:i})});return n.displayName=`${e}.Slot`,n}function GR(e){const t=v.forwardRef((n,r)=>{const{children:o,...i}=n;if(v.isValidElement(o)){const l=XR(o),a=QR(i,o.props);return o.type!==v.Fragment&&(a.ref=r?za(r,l):l),v.cloneElement(o,a)}return v.Children.count(o)>1?v.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var WR=Symbol("radix.slottable");function KR(e){return v.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===WR}function QR(e,t){const n={...t};for(const r in t){const o=e[r],i=t[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...a)=>{const s=i(...a);return o(...a),s}:o&&(n[r]=o):r==="style"?n[r]={...o,...i}:r==="className"&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...e,...n}}function XR(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var YR=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Oe=YR.reduce((e,t)=>{const n=Si(`Primitive.${t}`),r=v.forwardRef((o,i)=>{const{asChild:l,...a}=o,s=l?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),R.jsx(s,{...a,ref:i})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function Km(e,t){e&&Ni.flushSync(()=>e.dispatchEvent(t))}function Qm(e){const t=e+"CollectionProvider",[n,r]=So(t),[o,i]=n(t,{collectionRef:{current:null},itemMap:new Map}),l=m=>{const{scope:S,children:g}=m,h=on.useRef(null),w=on.useRef(new Map).current;return R.jsx(o,{scope:S,itemMap:w,collectionRef:h,children:g})};l.displayName=t;const a=e+"CollectionSlot",s=Si(a),u=on.forwardRef((m,S)=>{const{scope:g,children:h}=m,w=i(a,g),x=Ge(S,w.collectionRef);return R.jsx(s,{ref:x,children:h})});u.displayName=a;const c=e+"CollectionItemSlot",d="data-radix-collection-item",f=Si(c),p=on.forwardRef((m,S)=>{const{scope:g,children:h,...w}=m,x=on.useRef(null),P=Ge(S,x),D=i(c,g);return on.useEffect(()=>(D.itemMap.set(x,{ref:x,...w}),()=>void D.itemMap.delete(x))),R.jsx(f,{[d]:"",ref:P,children:h})});p.displayName=c;function y(m){const S=i(e+"CollectionConsumer",m);return on.useCallback(()=>{const h=S.collectionRef.current;if(!h)return[];const w=Array.from(h.querySelectorAll(`[${d}]`));return Array.from(S.itemMap.values()).sort((D,k)=>w.indexOf(D.ref.current)-w.indexOf(k.ref.current))},[S.collectionRef,S.itemMap])}return[{Provider:l,Slot:u,ItemSlot:p},y,r]}var ZR=v.createContext(void 0);function Xm(e){const t=v.useContext(ZR);return e||t||"ltr"}function yn(e){const t=v.useRef(e);return v.useEffect(()=>{t.current=e}),v.useMemo(()=>(...n)=>{var r;return(r=t.current)==null?void 0:r.call(t,...n)},[])}function JR(e,t=globalThis==null?void 0:globalThis.document){const n=yn(e);v.useEffect(()=>{const r=o=>{o.key==="Escape"&&n(o)};return t.addEventListener("keydown",r,{capture:!0}),()=>t.removeEventListener("keydown",r,{capture:!0})},[n,t])}var qR="DismissableLayer",Qu="dismissableLayer.update",eE="dismissableLayer.pointerDownOutside",tE="dismissableLayer.focusOutside",Pp,Ym=v.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),ud=v.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:o,onFocusOutside:i,onInteractOutside:l,onDismiss:a,...s}=e,u=v.useContext(Ym),[c,d]=v.useState(null),f=(c==null?void 0:c.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,p]=v.useState({}),y=Ge(t,k=>d(k)),m=Array.from(u.layers),[S]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),g=m.indexOf(S),h=c?m.indexOf(c):-1,w=u.layersWithOutsidePointerEventsDisabled.size>0,x=h>=g,P=oE(k=>{const C=k.target,F=[...u.branches].some(T=>T.contains(C));!x||F||(o==null||o(k),l==null||l(k),k.defaultPrevented||a==null||a())},f),D=iE(k=>{const C=k.target;[...u.branches].some(T=>T.contains(C))||(i==null||i(k),l==null||l(k),k.defaultPrevented||a==null||a())},f);return JR(k=>{h===u.layers.size-1&&(r==null||r(k),!k.defaultPrevented&&a&&(k.preventDefault(),a()))},f),v.useEffect(()=>{if(c)return n&&(u.layersWithOutsidePointerEventsDisabled.size===0&&(Pp=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(c)),u.layers.add(c),Mp(),()=>{n&&u.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=Pp)}},[c,f,n,u]),v.useEffect(()=>()=>{c&&(u.layers.delete(c),u.layersWithOutsidePointerEventsDisabled.delete(c),Mp())},[c,u]),v.useEffect(()=>{const k=()=>p({});return document.addEventListener(Qu,k),()=>document.removeEventListener(Qu,k)},[]),R.jsx(Oe.div,{...s,ref:y,style:{pointerEvents:w?x?"auto":"none":void 0,...e.style},onFocusCapture:ne(e.onFocusCapture,D.onFocusCapture),onBlurCapture:ne(e.onBlurCapture,D.onBlurCapture),onPointerDownCapture:ne(e.onPointerDownCapture,P.onPointerDownCapture)})});ud.displayName=qR;var nE="DismissableLayerBranch",rE=v.forwardRef((e,t)=>{const n=v.useContext(Ym),r=v.useRef(null),o=Ge(t,r);return v.useEffect(()=>{const i=r.current;if(i)return n.branches.add(i),()=>{n.branches.delete(i)}},[n.branches]),R.jsx(Oe.div,{...e,ref:o})});rE.displayName=nE;function oE(e,t=globalThis==null?void 0:globalThis.document){const n=yn(e),r=v.useRef(!1),o=v.useRef(()=>{});return v.useEffect(()=>{const i=a=>{if(a.target&&!r.current){let s=function(){Zm(eE,n,u,{discrete:!0})};const u={originalEvent:a};a.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=s,t.addEventListener("click",o.current,{once:!0})):s()}else t.removeEventListener("click",o.current);r.current=!1},l=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(l),t.removeEventListener("pointerdown",i),t.removeEventListener("click",o.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function iE(e,t=globalThis==null?void 0:globalThis.document){const n=yn(e),r=v.useRef(!1);return v.useEffect(()=>{const o=i=>{i.target&&!r.current&&Zm(tE,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",o),()=>t.removeEventListener("focusin",o)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function Mp(){const e=new CustomEvent(Qu);document.dispatchEvent(e)}function Zm(e,t,n,{discrete:r}){const o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?Km(o,i):o.dispatchEvent(i)}var js=0;function Jm(){v.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??kp()),document.body.insertAdjacentElement("beforeend",e[1]??kp()),js++,()=>{js===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),js--}},[])}function kp(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var bs="focusScope.autoFocusOnMount",zs="focusScope.autoFocusOnUnmount",Dp={bubbles:!1,cancelable:!0},lE="FocusScope",cd=v.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:i,...l}=e,[a,s]=v.useState(null),u=yn(o),c=yn(i),d=v.useRef(null),f=Ge(t,m=>s(m)),p=v.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;v.useEffect(()=>{if(r){let m=function(w){if(p.paused||!a)return;const x=w.target;a.contains(x)?d.current=x:Nn(d.current,{select:!0})},S=function(w){if(p.paused||!a)return;const x=w.relatedTarget;x!==null&&(a.contains(x)||Nn(d.current,{select:!0}))},g=function(w){if(document.activeElement===document.body)for(const P of w)P.removedNodes.length>0&&Nn(a)};document.addEventListener("focusin",m),document.addEventListener("focusout",S);const h=new MutationObserver(g);return a&&h.observe(a,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",m),document.removeEventListener("focusout",S),h.disconnect()}}},[r,a,p.paused]),v.useEffect(()=>{if(a){Ip.add(p);const m=document.activeElement;if(!a.contains(m)){const g=new CustomEvent(bs,Dp);a.addEventListener(bs,u),a.dispatchEvent(g),g.defaultPrevented||(aE(fE(qm(a)),{select:!0}),document.activeElement===m&&Nn(a))}return()=>{a.removeEventListener(bs,u),setTimeout(()=>{const g=new CustomEvent(zs,Dp);a.addEventListener(zs,c),a.dispatchEvent(g),g.defaultPrevented||Nn(m??document.body,{select:!0}),a.removeEventListener(zs,c),Ip.remove(p)},0)}}},[a,u,c,p]);const y=v.useCallback(m=>{if(!n&&!r||p.paused)return;const S=m.key==="Tab"&&!m.altKey&&!m.ctrlKey&&!m.metaKey,g=document.activeElement;if(S&&g){const h=m.currentTarget,[w,x]=sE(h);w&&x?!m.shiftKey&&g===x?(m.preventDefault(),n&&Nn(w,{select:!0})):m.shiftKey&&g===w&&(m.preventDefault(),n&&Nn(x,{select:!0})):g===h&&m.preventDefault()}},[n,r,p.paused]);return R.jsx(Oe.div,{tabIndex:-1,...l,ref:f,onKeyDown:y})});cd.displayName=lE;function aE(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(Nn(r,{select:t}),document.activeElement!==n)return}function sE(e){const t=qm(e),n=Np(t,e),r=Np(t.reverse(),e);return[n,r]}function qm(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Np(e,t){for(const n of e)if(!uE(n,{upTo:t}))return n}function uE(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function cE(e){return e instanceof HTMLInputElement&&"select"in e}function Nn(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&cE(e)&&t&&e.select()}}var Ip=dE();function dE(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=Tp(e,t),e.unshift(t)},remove(t){var n;e=Tp(e,t),(n=e[0])==null||n.resume()}}}function Tp(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function fE(e){return e.filter(t=>t.tagName!=="A")}var pE=ic[" useId ".trim().toString()]||(()=>{}),gE=0;function no(e){const[t,n]=v.useState(pE());return Yn(()=>{n(r=>r??String(gE++))},[e]),t?`radix-${t}`:""}const hE=["top","right","bottom","left"],Zn=Math.min,gt=Math.max,fa=Math.round,vl=Math.floor,Xt=e=>({x:e,y:e}),mE={left:"right",right:"left",bottom:"top",top:"bottom"},vE={start:"end",end:"start"};function Xu(e,t,n){return gt(e,Zn(t,n))}function wn(e,t){return typeof e=="function"?e(t):e}function Sn(e){return e.split("-")[0]}function xo(e){return e.split("-")[1]}function dd(e){return e==="x"?"y":"x"}function fd(e){return e==="y"?"height":"width"}const yE=new Set(["top","bottom"]);function Wt(e){return yE.has(Sn(e))?"y":"x"}function pd(e){return dd(Wt(e))}function wE(e,t,n){n===void 0&&(n=!1);const r=xo(e),o=pd(e),i=fd(o);let l=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(l=pa(l)),[l,pa(l)]}function SE(e){const t=pa(e);return[Yu(e),t,Yu(t)]}function Yu(e){return e.replace(/start|end/g,t=>vE[t])}const Lp=["left","right"],Op=["right","left"],xE=["top","bottom"],CE=["bottom","top"];function RE(e,t,n){switch(e){case"top":case"bottom":return n?t?Op:Lp:t?Lp:Op;case"left":case"right":return t?xE:CE;default:return[]}}function EE(e,t,n,r){const o=xo(e);let i=RE(Sn(e),n==="start",r);return o&&(i=i.map(l=>l+"-"+o),t&&(i=i.concat(i.map(Yu)))),i}function pa(e){return e.replace(/left|right|bottom|top/g,t=>mE[t])}function _E(e){return{top:0,right:0,bottom:0,left:0,...e}}function ev(e){return typeof e!="number"?_E(e):{top:e,right:e,bottom:e,left:e}}function ga(e){const{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function Fp(e,t,n){let{reference:r,floating:o}=e;const i=Wt(t),l=pd(t),a=fd(l),s=Sn(t),u=i==="y",c=r.x+r.width/2-o.width/2,d=r.y+r.height/2-o.height/2,f=r[a]/2-o[a]/2;let p;switch(s){case"top":p={x:c,y:r.y-o.height};break;case"bottom":p={x:c,y:r.y+r.height};break;case"right":p={x:r.x+r.width,y:d};break;case"left":p={x:r.x-o.width,y:d};break;default:p={x:r.x,y:r.y}}switch(xo(t)){case"start":p[l]-=f*(n&&u?-1:1);break;case"end":p[l]+=f*(n&&u?-1:1);break}return p}const PE=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:l}=n,a=i.filter(Boolean),s=await(l.isRTL==null?void 0:l.isRTL(t));let u=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:c,y:d}=Fp(u,r,s),f=r,p={},y=0;for(let m=0;m({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:i,platform:l,elements:a,middlewareData:s}=t,{element:u,padding:c=0}=wn(e,t)||{};if(u==null)return{};const d=ev(c),f={x:n,y:r},p=pd(o),y=fd(p),m=await l.getDimensions(u),S=p==="y",g=S?"top":"left",h=S?"bottom":"right",w=S?"clientHeight":"clientWidth",x=i.reference[y]+i.reference[p]-f[p]-i.floating[y],P=f[p]-i.reference[p],D=await(l.getOffsetParent==null?void 0:l.getOffsetParent(u));let k=D?D[w]:0;(!k||!await(l.isElement==null?void 0:l.isElement(D)))&&(k=a.floating[w]||i.floating[y]);const C=x/2-P/2,F=k/2-m[y]/2-1,T=Zn(d[g],F),b=Zn(d[h],F),j=T,Q=k-m[y]-b,G=k/2-m[y]/2+C,se=Xu(j,G,Q),Z=!s.arrow&&xo(o)!=null&&G!==se&&i.reference[y]/2-(GG<=0)){var b,j;const G=(((b=i.flip)==null?void 0:b.index)||0)+1,se=k[G];if(se&&(!(d==="alignment"?h!==Wt(se):!1)||T.every(I=>Wt(I.placement)===h?I.overflows[0]>0:!0)))return{data:{index:G,overflows:T},reset:{placement:se}};let Z=(j=T.filter(ie=>ie.overflows[0]<=0).sort((ie,I)=>ie.overflows[1]-I.overflows[1])[0])==null?void 0:j.placement;if(!Z)switch(p){case"bestFit":{var Q;const ie=(Q=T.filter(I=>{if(D){const N=Wt(I.placement);return N===h||N==="y"}return!0}).map(I=>[I.placement,I.overflows.filter(N=>N>0).reduce((N,z)=>N+z,0)]).sort((I,N)=>I[1]-N[1])[0])==null?void 0:Q[0];ie&&(Z=ie);break}case"initialPlacement":Z=a;break}if(o!==Z)return{reset:{placement:Z}}}return{}}}};function Ap(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function jp(e){return hE.some(t=>e[t]>=0)}const DE=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=wn(e,t);switch(r){case"referenceHidden":{const i=await xi(t,{...o,elementContext:"reference"}),l=Ap(i,n.reference);return{data:{referenceHiddenOffsets:l,referenceHidden:jp(l)}}}case"escaped":{const i=await xi(t,{...o,altBoundary:!0}),l=Ap(i,n.floating);return{data:{escapedOffsets:l,escaped:jp(l)}}}default:return{}}}}},tv=new Set(["left","top"]);async function NE(e,t){const{placement:n,platform:r,elements:o}=e,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),l=Sn(n),a=xo(n),s=Wt(n)==="y",u=tv.has(l)?-1:1,c=i&&s?-1:1,d=wn(t,e);let{mainAxis:f,crossAxis:p,alignmentAxis:y}=typeof d=="number"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return a&&typeof y=="number"&&(p=a==="end"?y*-1:y),s?{x:p*c,y:f*u}:{x:f*u,y:p*c}}const IE=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:i,placement:l,middlewareData:a}=t,s=await NE(t,e);return l===((n=a.offset)==null?void 0:n.placement)&&(r=a.arrow)!=null&&r.alignmentOffset?{}:{x:o+s.x,y:i+s.y,data:{...s,placement:l}}}}},TE=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:l=!1,limiter:a={fn:S=>{let{x:g,y:h}=S;return{x:g,y:h}}},...s}=wn(e,t),u={x:n,y:r},c=await xi(t,s),d=Wt(Sn(o)),f=dd(d);let p=u[f],y=u[d];if(i){const S=f==="y"?"top":"left",g=f==="y"?"bottom":"right",h=p+c[S],w=p-c[g];p=Xu(h,p,w)}if(l){const S=d==="y"?"top":"left",g=d==="y"?"bottom":"right",h=y+c[S],w=y-c[g];y=Xu(h,y,w)}const m=a.fn({...t,[f]:p,[d]:y});return{...m,data:{x:m.x-n,y:m.y-r,enabled:{[f]:i,[d]:l}}}}}},LE=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:i,middlewareData:l}=t,{offset:a=0,mainAxis:s=!0,crossAxis:u=!0}=wn(e,t),c={x:n,y:r},d=Wt(o),f=dd(d);let p=c[f],y=c[d];const m=wn(a,t),S=typeof m=="number"?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(s){const w=f==="y"?"height":"width",x=i.reference[f]-i.floating[w]+S.mainAxis,P=i.reference[f]+i.reference[w]-S.mainAxis;pP&&(p=P)}if(u){var g,h;const w=f==="y"?"width":"height",x=tv.has(Sn(o)),P=i.reference[d]-i.floating[w]+(x&&((g=l.offset)==null?void 0:g[d])||0)+(x?0:S.crossAxis),D=i.reference[d]+i.reference[w]+(x?0:((h=l.offset)==null?void 0:h[d])||0)-(x?S.crossAxis:0);yD&&(y=D)}return{[f]:p,[d]:y}}}},OE=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,r;const{placement:o,rects:i,platform:l,elements:a}=t,{apply:s=()=>{},...u}=wn(e,t),c=await xi(t,u),d=Sn(o),f=xo(o),p=Wt(o)==="y",{width:y,height:m}=i.floating;let S,g;d==="top"||d==="bottom"?(S=d,g=f===(await(l.isRTL==null?void 0:l.isRTL(a.floating))?"start":"end")?"left":"right"):(g=d,S=f==="end"?"top":"bottom");const h=m-c.top-c.bottom,w=y-c.left-c.right,x=Zn(m-c[S],h),P=Zn(y-c[g],w),D=!t.middlewareData.shift;let k=x,C=P;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(C=w),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(k=h),D&&!f){const T=gt(c.left,0),b=gt(c.right,0),j=gt(c.top,0),Q=gt(c.bottom,0);p?C=y-2*(T!==0||b!==0?T+b:gt(c.left,c.right)):k=m-2*(j!==0||Q!==0?j+Q:gt(c.top,c.bottom))}await s({...t,availableWidth:C,availableHeight:k});const F=await l.getDimensions(a.floating);return y!==F.width||m!==F.height?{reset:{rects:!0}}:{}}}};function $a(){return typeof window<"u"}function Co(e){return nv(e)?(e.nodeName||"").toLowerCase():"#document"}function vt(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Zt(e){var t;return(t=(nv(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function nv(e){return $a()?e instanceof Node||e instanceof vt(e).Node:!1}function bt(e){return $a()?e instanceof Element||e instanceof vt(e).Element:!1}function Yt(e){return $a()?e instanceof HTMLElement||e instanceof vt(e).HTMLElement:!1}function bp(e){return!$a()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof vt(e).ShadowRoot}const FE=new Set(["inline","contents"]);function Oi(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=zt(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!FE.has(o)}const AE=new Set(["table","td","th"]);function jE(e){return AE.has(Co(e))}const bE=[":popover-open",":modal"];function Va(e){return bE.some(t=>{try{return e.matches(t)}catch{return!1}})}const zE=["transform","translate","scale","rotate","perspective"],$E=["transform","translate","scale","rotate","perspective","filter"],VE=["paint","layout","strict","content"];function gd(e){const t=hd(),n=bt(e)?zt(e):e;return zE.some(r=>n[r]?n[r]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||$E.some(r=>(n.willChange||"").includes(r))||VE.some(r=>(n.contain||"").includes(r))}function UE(e){let t=Jn(e);for(;Yt(t)&&!ho(t);){if(gd(t))return t;if(Va(t))return null;t=Jn(t)}return null}function hd(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const BE=new Set(["html","body","#document"]);function ho(e){return BE.has(Co(e))}function zt(e){return vt(e).getComputedStyle(e)}function Ua(e){return bt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Jn(e){if(Co(e)==="html")return e;const t=e.assignedSlot||e.parentNode||bp(e)&&e.host||Zt(e);return bp(t)?t.host:t}function rv(e){const t=Jn(e);return ho(t)?e.ownerDocument?e.ownerDocument.body:e.body:Yt(t)&&Oi(t)?t:rv(t)}function Ci(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const o=rv(e),i=o===((r=e.ownerDocument)==null?void 0:r.body),l=vt(o);if(i){const a=Zu(l);return t.concat(l,l.visualViewport||[],Oi(o)?o:[],a&&n?Ci(a):[])}return t.concat(o,Ci(o,[],n))}function Zu(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function ov(e){const t=zt(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Yt(e),i=o?e.offsetWidth:n,l=o?e.offsetHeight:r,a=fa(n)!==i||fa(r)!==l;return a&&(n=i,r=l),{width:n,height:r,$:a}}function md(e){return bt(e)?e:e.contextElement}function ro(e){const t=md(e);if(!Yt(t))return Xt(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:i}=ov(t);let l=(i?fa(n.width):n.width)/r,a=(i?fa(n.height):n.height)/o;return(!l||!Number.isFinite(l))&&(l=1),(!a||!Number.isFinite(a))&&(a=1),{x:l,y:a}}const HE=Xt(0);function iv(e){const t=vt(e);return!hd()||!t.visualViewport?HE:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function GE(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==vt(e)?!1:t}function Rr(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),i=md(e);let l=Xt(1);t&&(r?bt(r)&&(l=ro(r)):l=ro(e));const a=GE(i,n,r)?iv(i):Xt(0);let s=(o.left+a.x)/l.x,u=(o.top+a.y)/l.y,c=o.width/l.x,d=o.height/l.y;if(i){const f=vt(i),p=r&&bt(r)?vt(r):r;let y=f,m=Zu(y);for(;m&&r&&p!==y;){const S=ro(m),g=m.getBoundingClientRect(),h=zt(m),w=g.left+(m.clientLeft+parseFloat(h.paddingLeft))*S.x,x=g.top+(m.clientTop+parseFloat(h.paddingTop))*S.y;s*=S.x,u*=S.y,c*=S.x,d*=S.y,s+=w,u+=x,y=vt(m),m=Zu(y)}}return ga({width:c,height:d,x:s,y:u})}function Ba(e,t){const n=Ua(e).scrollLeft;return t?t.left+n:Rr(Zt(e)).left+n}function lv(e,t){const n=e.getBoundingClientRect(),r=n.left+t.scrollLeft-Ba(e,n),o=n.top+t.scrollTop;return{x:r,y:o}}function WE(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const i=o==="fixed",l=Zt(r),a=t?Va(t.floating):!1;if(r===l||a&&i)return n;let s={scrollLeft:0,scrollTop:0},u=Xt(1);const c=Xt(0),d=Yt(r);if((d||!d&&!i)&&((Co(r)!=="body"||Oi(l))&&(s=Ua(r)),Yt(r))){const p=Rr(r);u=ro(r),c.x=p.x+r.clientLeft,c.y=p.y+r.clientTop}const f=l&&!d&&!i?lv(l,s):Xt(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-s.scrollLeft*u.x+c.x+f.x,y:n.y*u.y-s.scrollTop*u.y+c.y+f.y}}function KE(e){return Array.from(e.getClientRects())}function QE(e){const t=Zt(e),n=Ua(e),r=e.ownerDocument.body,o=gt(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=gt(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let l=-n.scrollLeft+Ba(e);const a=-n.scrollTop;return zt(r).direction==="rtl"&&(l+=gt(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:l,y:a}}const zp=25;function XE(e,t){const n=vt(e),r=Zt(e),o=n.visualViewport;let i=r.clientWidth,l=r.clientHeight,a=0,s=0;if(o){i=o.width,l=o.height;const c=hd();(!c||c&&t==="fixed")&&(a=o.offsetLeft,s=o.offsetTop)}const u=Ba(r);if(u<=0){const c=r.ownerDocument,d=c.body,f=getComputedStyle(d),p=c.compatMode==="CSS1Compat"&&parseFloat(f.marginLeft)+parseFloat(f.marginRight)||0,y=Math.abs(r.clientWidth-d.clientWidth-p);y<=zp&&(i-=y)}else u<=zp&&(i+=u);return{width:i,height:l,x:a,y:s}}const YE=new Set(["absolute","fixed"]);function ZE(e,t){const n=Rr(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=Yt(e)?ro(e):Xt(1),l=e.clientWidth*i.x,a=e.clientHeight*i.y,s=o*i.x,u=r*i.y;return{width:l,height:a,x:s,y:u}}function $p(e,t,n){let r;if(t==="viewport")r=XE(e,n);else if(t==="document")r=QE(Zt(e));else if(bt(t))r=ZE(t,n);else{const o=iv(e);r={x:t.x-o.x,y:t.y-o.y,width:t.width,height:t.height}}return ga(r)}function av(e,t){const n=Jn(e);return n===t||!bt(n)||ho(n)?!1:zt(n).position==="fixed"||av(n,t)}function JE(e,t){const n=t.get(e);if(n)return n;let r=Ci(e,[],!1).filter(a=>bt(a)&&Co(a)!=="body"),o=null;const i=zt(e).position==="fixed";let l=i?Jn(e):e;for(;bt(l)&&!ho(l);){const a=zt(l),s=gd(l);!s&&a.position==="fixed"&&(o=null),(i?!s&&!o:!s&&a.position==="static"&&!!o&&YE.has(o.position)||Oi(l)&&!s&&av(e,l))?r=r.filter(c=>c!==l):o=a,l=Jn(l)}return t.set(e,r),r}function qE(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const l=[...n==="clippingAncestors"?Va(t)?[]:JE(t,this._c):[].concat(n),r],a=l[0],s=l.reduce((u,c)=>{const d=$p(t,c,o);return u.top=gt(d.top,u.top),u.right=Zn(d.right,u.right),u.bottom=Zn(d.bottom,u.bottom),u.left=gt(d.left,u.left),u},$p(t,a,o));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function e1(e){const{width:t,height:n}=ov(e);return{width:t,height:n}}function t1(e,t,n){const r=Yt(t),o=Zt(t),i=n==="fixed",l=Rr(e,!0,i,t);let a={scrollLeft:0,scrollTop:0};const s=Xt(0);function u(){s.x=Ba(o)}if(r||!r&&!i)if((Co(t)!=="body"||Oi(o))&&(a=Ua(t)),r){const p=Rr(t,!0,i,t);s.x=p.x+t.clientLeft,s.y=p.y+t.clientTop}else o&&u();i&&!r&&o&&u();const c=o&&!r&&!i?lv(o,a):Xt(0),d=l.left+a.scrollLeft-s.x-c.x,f=l.top+a.scrollTop-s.y-c.y;return{x:d,y:f,width:l.width,height:l.height}}function $s(e){return zt(e).position==="static"}function Vp(e,t){if(!Yt(e)||zt(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return Zt(e)===n&&(n=n.ownerDocument.body),n}function sv(e,t){const n=vt(e);if(Va(e))return n;if(!Yt(e)){let o=Jn(e);for(;o&&!ho(o);){if(bt(o)&&!$s(o))return o;o=Jn(o)}return n}let r=Vp(e,t);for(;r&&jE(r)&&$s(r);)r=Vp(r,t);return r&&ho(r)&&$s(r)&&!gd(r)?n:r||UE(e)||n}const n1=async function(e){const t=this.getOffsetParent||sv,n=this.getDimensions,r=await n(e.floating);return{reference:t1(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function r1(e){return zt(e).direction==="rtl"}const o1={convertOffsetParentRelativeRectToViewportRelativeRect:WE,getDocumentElement:Zt,getClippingRect:qE,getOffsetParent:sv,getElementRects:n1,getClientRects:KE,getDimensions:e1,getScale:ro,isElement:bt,isRTL:r1};function uv(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function i1(e,t){let n=null,r;const o=Zt(e);function i(){var a;clearTimeout(r),(a=n)==null||a.disconnect(),n=null}function l(a,s){a===void 0&&(a=!1),s===void 0&&(s=1),i();const u=e.getBoundingClientRect(),{left:c,top:d,width:f,height:p}=u;if(a||t(),!f||!p)return;const y=vl(d),m=vl(o.clientWidth-(c+f)),S=vl(o.clientHeight-(d+p)),g=vl(c),w={rootMargin:-y+"px "+-m+"px "+-S+"px "+-g+"px",threshold:gt(0,Zn(1,s))||1};let x=!0;function P(D){const k=D[0].intersectionRatio;if(k!==s){if(!x)return l();k?l(!1,k):r=setTimeout(()=>{l(!1,1e-7)},1e3)}k===1&&!uv(u,e.getBoundingClientRect())&&l(),x=!1}try{n=new IntersectionObserver(P,{...w,root:o.ownerDocument})}catch{n=new IntersectionObserver(P,w)}n.observe(e)}return l(!0),i}function l1(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:i=!0,elementResize:l=typeof ResizeObserver=="function",layoutShift:a=typeof IntersectionObserver=="function",animationFrame:s=!1}=r,u=md(e),c=o||i?[...u?Ci(u):[],...Ci(t)]:[];c.forEach(g=>{o&&g.addEventListener("scroll",n,{passive:!0}),i&&g.addEventListener("resize",n)});const d=u&&a?i1(u,n):null;let f=-1,p=null;l&&(p=new ResizeObserver(g=>{let[h]=g;h&&h.target===u&&p&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var w;(w=p)==null||w.observe(t)})),n()}),u&&!s&&p.observe(u),p.observe(t));let y,m=s?Rr(e):null;s&&S();function S(){const g=Rr(e);m&&!uv(m,g)&&n(),m=g,y=requestAnimationFrame(S)}return n(),()=>{var g;c.forEach(h=>{o&&h.removeEventListener("scroll",n),i&&h.removeEventListener("resize",n)}),d==null||d(),(g=p)==null||g.disconnect(),p=null,s&&cancelAnimationFrame(y)}}const a1=IE,s1=TE,u1=kE,c1=OE,d1=DE,Up=ME,f1=LE,p1=(e,t,n)=>{const r=new Map,o={platform:o1,...n},i={...o.platform,_c:r};return PE(e,t,{...o,platform:i})};var g1=typeof document<"u",h1=function(){},Al=g1?v.useLayoutEffect:h1;function ha(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!ha(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;r--!==0;){const i=o[r];if(!(i==="_owner"&&e.$$typeof)&&!ha(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function cv(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Bp(e,t){const n=cv(e);return Math.round(t*n)/n}function Vs(e){const t=v.useRef(e);return Al(()=>{t.current=e}),t}function m1(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,elements:{reference:i,floating:l}={},transform:a=!0,whileElementsMounted:s,open:u}=e,[c,d]=v.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=v.useState(r);ha(f,r)||p(r);const[y,m]=v.useState(null),[S,g]=v.useState(null),h=v.useCallback(I=>{I!==D.current&&(D.current=I,m(I))},[]),w=v.useCallback(I=>{I!==k.current&&(k.current=I,g(I))},[]),x=i||y,P=l||S,D=v.useRef(null),k=v.useRef(null),C=v.useRef(c),F=s!=null,T=Vs(s),b=Vs(o),j=Vs(u),Q=v.useCallback(()=>{if(!D.current||!k.current)return;const I={placement:t,strategy:n,middleware:f};b.current&&(I.platform=b.current),p1(D.current,k.current,I).then(N=>{const z={...N,isPositioned:j.current!==!1};G.current&&!ha(C.current,z)&&(C.current=z,Ni.flushSync(()=>{d(z)}))})},[f,t,n,b,j]);Al(()=>{u===!1&&C.current.isPositioned&&(C.current.isPositioned=!1,d(I=>({...I,isPositioned:!1})))},[u]);const G=v.useRef(!1);Al(()=>(G.current=!0,()=>{G.current=!1}),[]),Al(()=>{if(x&&(D.current=x),P&&(k.current=P),x&&P){if(T.current)return T.current(x,P,Q);Q()}},[x,P,Q,T,F]);const se=v.useMemo(()=>({reference:D,floating:k,setReference:h,setFloating:w}),[h,w]),Z=v.useMemo(()=>({reference:x,floating:P}),[x,P]),ie=v.useMemo(()=>{const I={position:n,left:0,top:0};if(!Z.floating)return I;const N=Bp(Z.floating,c.x),z=Bp(Z.floating,c.y);return a?{...I,transform:"translate("+N+"px, "+z+"px)",...cv(Z.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:N,top:z}},[n,a,Z.floating,c.x,c.y]);return v.useMemo(()=>({...c,update:Q,refs:se,elements:Z,floatingStyles:ie}),[c,Q,se,Z,ie])}const v1=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:o}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?Up({element:r.current,padding:o}).fn(n):{}:r?Up({element:r,padding:o}).fn(n):{}}}},y1=(e,t)=>({...a1(e),options:[e,t]}),w1=(e,t)=>({...s1(e),options:[e,t]}),S1=(e,t)=>({...f1(e),options:[e,t]}),x1=(e,t)=>({...u1(e),options:[e,t]}),C1=(e,t)=>({...c1(e),options:[e,t]}),R1=(e,t)=>({...d1(e),options:[e,t]}),E1=(e,t)=>({...v1(e),options:[e,t]});var _1="Arrow",dv=v.forwardRef((e,t)=>{const{children:n,width:r=10,height:o=5,...i}=e;return R.jsx(Oe.svg,{...i,ref:t,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:R.jsx("polygon",{points:"0,0 30,0 15,10"})})});dv.displayName=_1;var P1=dv;function M1(e){const[t,n]=v.useState(void 0);return Yn(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const i=o[0];let l,a;if("borderBoxSize"in i){const s=i.borderBoxSize,u=Array.isArray(s)?s[0]:s;l=u.inlineSize,a=u.blockSize}else l=e.offsetWidth,a=e.offsetHeight;n({width:l,height:a})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}var vd="Popper",[fv,pv]=So(vd),[k1,gv]=fv(vd),hv=e=>{const{__scopePopper:t,children:n}=e,[r,o]=v.useState(null);return R.jsx(k1,{scope:t,anchor:r,onAnchorChange:o,children:n})};hv.displayName=vd;var mv="PopperAnchor",vv=v.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,i=gv(mv,n),l=v.useRef(null),a=Ge(t,l),s=v.useRef(null);return v.useEffect(()=>{const u=s.current;s.current=(r==null?void 0:r.current)||l.current,u!==s.current&&i.onAnchorChange(s.current)}),r?null:R.jsx(Oe.div,{...o,ref:a})});vv.displayName=mv;var yd="PopperContent",[D1,N1]=fv(yd),yv=v.forwardRef((e,t)=>{var Ee,ct,ot,Vt,bi,zi;const{__scopePopper:n,side:r="bottom",sideOffset:o=0,align:i="center",alignOffset:l=0,arrowPadding:a=0,avoidCollisions:s=!0,collisionBoundary:u=[],collisionPadding:c=0,sticky:d="partial",hideWhenDetached:f=!1,updatePositionStrategy:p="optimized",onPlaced:y,...m}=e,S=gv(yd,n),[g,h]=v.useState(null),w=Ge(t,lr=>h(lr)),[x,P]=v.useState(null),D=M1(x),k=(D==null?void 0:D.width)??0,C=(D==null?void 0:D.height)??0,F=r+(i!=="center"?"-"+i:""),T=typeof c=="number"?c:{top:0,right:0,bottom:0,left:0,...c},b=Array.isArray(u)?u:[u],j=b.length>0,Q={padding:T,boundary:b.filter(T1),altBoundary:j},{refs:G,floatingStyles:se,placement:Z,isPositioned:ie,middlewareData:I}=m1({strategy:"fixed",placement:F,whileElementsMounted:(...lr)=>l1(...lr,{animationFrame:p==="always"}),elements:{reference:S.anchor},middleware:[y1({mainAxis:o+C,alignmentAxis:l}),s&&w1({mainAxis:!0,crossAxis:!1,limiter:d==="partial"?S1():void 0,...Q}),s&&x1({...Q}),C1({...Q,apply:({elements:lr,rects:je,availableWidth:Cn,availableHeight:$i})=>{const{width:Xa,height:Jt}=je.reference,Dr=lr.floating.style;Dr.setProperty("--radix-popper-available-width",`${Cn}px`),Dr.setProperty("--radix-popper-available-height",`${$i}px`),Dr.setProperty("--radix-popper-anchor-width",`${Xa}px`),Dr.setProperty("--radix-popper-anchor-height",`${Jt}px`)}}),x&&E1({element:x,padding:a}),L1({arrowWidth:k,arrowHeight:C}),f&&R1({strategy:"referenceHidden",...Q})]}),[N,z]=xv(Z),W=yn(y);Yn(()=>{ie&&(W==null||W())},[ie,W]);const oe=(Ee=I.arrow)==null?void 0:Ee.x,De=(ct=I.arrow)==null?void 0:ct.y,Ne=((ot=I.arrow)==null?void 0:ot.centerOffset)!==0,[rt,ge]=v.useState();return Yn(()=>{g&&ge(window.getComputedStyle(g).zIndex)},[g]),R.jsx("div",{ref:G.setFloating,"data-radix-popper-content-wrapper":"",style:{...se,transform:ie?se.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:rt,"--radix-popper-transform-origin":[(Vt=I.transformOrigin)==null?void 0:Vt.x,(bi=I.transformOrigin)==null?void 0:bi.y].join(" "),...((zi=I.hide)==null?void 0:zi.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:R.jsx(D1,{scope:n,placedSide:N,onArrowChange:P,arrowX:oe,arrowY:De,shouldHideArrow:Ne,children:R.jsx(Oe.div,{"data-side":N,"data-align":z,...m,ref:w,style:{...m.style,animation:ie?void 0:"none"}})})})});yv.displayName=yd;var wv="PopperArrow",I1={top:"bottom",right:"left",bottom:"top",left:"right"},Sv=v.forwardRef(function(t,n){const{__scopePopper:r,...o}=t,i=N1(wv,r),l=I1[i.placedSide];return R.jsx("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:R.jsx(P1,{...o,ref:n,style:{...o.style,display:"block"}})})});Sv.displayName=wv;function T1(e){return e!==null}var L1=e=>({name:"transformOrigin",options:e,fn(t){var S,g,h;const{placement:n,rects:r,middlewareData:o}=t,l=((S=o.arrow)==null?void 0:S.centerOffset)!==0,a=l?0:e.arrowWidth,s=l?0:e.arrowHeight,[u,c]=xv(n),d={start:"0%",center:"50%",end:"100%"}[c],f=(((g=o.arrow)==null?void 0:g.x)??0)+a/2,p=(((h=o.arrow)==null?void 0:h.y)??0)+s/2;let y="",m="";return u==="bottom"?(y=l?d:`${f}px`,m=`${-s}px`):u==="top"?(y=l?d:`${f}px`,m=`${r.floating.height+s}px`):u==="right"?(y=`${-s}px`,m=l?d:`${p}px`):u==="left"&&(y=`${r.floating.width+s}px`,m=l?d:`${p}px`),{data:{x:y,y:m}}}});function xv(e){const[t,n="center"]=e.split("-");return[t,n]}var O1=hv,F1=vv,A1=yv,j1=Sv,b1="Portal",wd=v.forwardRef((e,t)=>{var a;const{container:n,...r}=e,[o,i]=v.useState(!1);Yn(()=>i(!0),[]);const l=n||o&&((a=globalThis==null?void 0:globalThis.document)==null?void 0:a.body);return l?pm.createPortal(R.jsx(Oe.div,{...r,ref:t}),l):null});wd.displayName=b1;function z1(e,t){return v.useReducer((n,r)=>t[n][r]??n,e)}var ir=e=>{const{present:t,children:n}=e,r=$1(t),o=typeof n=="function"?n({present:r.isPresent}):v.Children.only(n),i=Ge(r.ref,V1(o));return typeof n=="function"||r.isPresent?v.cloneElement(o,{ref:i}):null};ir.displayName="Presence";function $1(e){const[t,n]=v.useState(),r=v.useRef(null),o=v.useRef(e),i=v.useRef("none"),l=e?"mounted":"unmounted",[a,s]=z1(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return v.useEffect(()=>{const u=yl(r.current);i.current=a==="mounted"?u:"none"},[a]),Yn(()=>{const u=r.current,c=o.current;if(c!==e){const f=i.current,p=yl(u);e?s("MOUNT"):p==="none"||(u==null?void 0:u.display)==="none"?s("UNMOUNT"):s(c&&f!==p?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,s]),Yn(()=>{if(t){let u;const c=t.ownerDocument.defaultView??window,d=p=>{const m=yl(r.current).includes(CSS.escape(p.animationName));if(p.target===t&&m&&(s("ANIMATION_END"),!o.current)){const S=t.style.animationFillMode;t.style.animationFillMode="forwards",u=c.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=S)})}},f=p=>{p.target===t&&(i.current=yl(r.current))};return t.addEventListener("animationstart",f),t.addEventListener("animationcancel",d),t.addEventListener("animationend",d),()=>{c.clearTimeout(u),t.removeEventListener("animationstart",f),t.removeEventListener("animationcancel",d),t.removeEventListener("animationend",d)}}else s("ANIMATION_END")},[t,s]),{isPresent:["mounted","unmountSuspended"].includes(a),ref:v.useCallback(u=>{r.current=u?getComputedStyle(u):null,n(u)},[])}}function yl(e){return(e==null?void 0:e.animationName)||"none"}function V1(e){var r,o;let t=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Us="rovingFocusGroup.onEntryFocus",U1={bubbles:!1,cancelable:!0},Fi="RovingFocusGroup",[Ju,Cv,B1]=Qm(Fi),[H1,Rv]=So(Fi,[B1]),[G1,W1]=H1(Fi),Ev=v.forwardRef((e,t)=>R.jsx(Ju.Provider,{scope:e.__scopeRovingFocusGroup,children:R.jsx(Ju.Slot,{scope:e.__scopeRovingFocusGroup,children:R.jsx(K1,{...e,ref:t})})}));Ev.displayName=Fi;var K1=v.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:o=!1,dir:i,currentTabStopId:l,defaultCurrentTabStopId:a,onCurrentTabStopIdChange:s,onEntryFocus:u,preventScrollOnEntryFocus:c=!1,...d}=e,f=v.useRef(null),p=Ge(t,f),y=Xm(i),[m,S]=sd({prop:l,defaultProp:a??null,onChange:s,caller:Fi}),[g,h]=v.useState(!1),w=yn(u),x=Cv(n),P=v.useRef(!1),[D,k]=v.useState(0);return v.useEffect(()=>{const C=f.current;if(C)return C.addEventListener(Us,w),()=>C.removeEventListener(Us,w)},[w]),R.jsx(G1,{scope:n,orientation:r,dir:y,loop:o,currentTabStopId:m,onItemFocus:v.useCallback(C=>S(C),[S]),onItemShiftTab:v.useCallback(()=>h(!0),[]),onFocusableItemAdd:v.useCallback(()=>k(C=>C+1),[]),onFocusableItemRemove:v.useCallback(()=>k(C=>C-1),[]),children:R.jsx(Oe.div,{tabIndex:g||D===0?-1:0,"data-orientation":r,...d,ref:p,style:{outline:"none",...e.style},onMouseDown:ne(e.onMouseDown,()=>{P.current=!0}),onFocus:ne(e.onFocus,C=>{const F=!P.current;if(C.target===C.currentTarget&&F&&!g){const T=new CustomEvent(Us,U1);if(C.currentTarget.dispatchEvent(T),!T.defaultPrevented){const b=x().filter(Z=>Z.focusable),j=b.find(Z=>Z.active),Q=b.find(Z=>Z.id===m),se=[j,Q,...b].filter(Boolean).map(Z=>Z.ref.current);Mv(se,c)}}P.current=!1}),onBlur:ne(e.onBlur,()=>h(!1))})})}),_v="RovingFocusGroupItem",Pv=v.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:i,children:l,...a}=e,s=no(),u=i||s,c=W1(_v,n),d=c.currentTabStopId===u,f=Cv(n),{onFocusableItemAdd:p,onFocusableItemRemove:y,currentTabStopId:m}=c;return v.useEffect(()=>{if(r)return p(),()=>y()},[r,p,y]),R.jsx(Ju.ItemSlot,{scope:n,id:u,focusable:r,active:o,children:R.jsx(Oe.span,{tabIndex:d?0:-1,"data-orientation":c.orientation,...a,ref:t,onMouseDown:ne(e.onMouseDown,S=>{r?c.onItemFocus(u):S.preventDefault()}),onFocus:ne(e.onFocus,()=>c.onItemFocus(u)),onKeyDown:ne(e.onKeyDown,S=>{if(S.key==="Tab"&&S.shiftKey){c.onItemShiftTab();return}if(S.target!==S.currentTarget)return;const g=Y1(S,c.orientation,c.dir);if(g!==void 0){if(S.metaKey||S.ctrlKey||S.altKey||S.shiftKey)return;S.preventDefault();let w=f().filter(x=>x.focusable).map(x=>x.ref.current);if(g==="last")w.reverse();else if(g==="prev"||g==="next"){g==="prev"&&w.reverse();const x=w.indexOf(S.currentTarget);w=c.loop?Z1(w,x+1):w.slice(x+1)}setTimeout(()=>Mv(w))}}),children:typeof l=="function"?l({isCurrentTabStop:d,hasTabStop:m!=null}):l})})});Pv.displayName=_v;var Q1={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function X1(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function Y1(e,t,n){const r=X1(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return Q1[r]}function Mv(e,t=!1){const n=document.activeElement;for(const r of e)if(r===n||(r.focus({preventScroll:t}),document.activeElement!==n))return}function Z1(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var J1=Ev,q1=Pv,e_=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Lr=new WeakMap,wl=new WeakMap,Sl={},Bs=0,kv=function(e){return e&&(e.host||kv(e.parentNode))},t_=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=kv(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},n_=function(e,t,n,r){var o=t_(t,Array.isArray(e)?e:[e]);Sl[n]||(Sl[n]=new WeakMap);var i=Sl[n],l=[],a=new Set,s=new Set(o),u=function(d){!d||a.has(d)||(a.add(d),u(d.parentNode))};o.forEach(u);var c=function(d){!d||s.has(d)||Array.prototype.forEach.call(d.children,function(f){if(a.has(f))c(f);else try{var p=f.getAttribute(r),y=p!==null&&p!=="false",m=(Lr.get(f)||0)+1,S=(i.get(f)||0)+1;Lr.set(f,m),i.set(f,S),l.push(f),m===1&&y&&wl.set(f,!0),S===1&&f.setAttribute(n,"true"),y||f.setAttribute(r,"true")}catch(g){console.error("aria-hidden: cannot operate on ",f,g)}})};return c(t),a.clear(),Bs++,function(){l.forEach(function(d){var f=Lr.get(d)-1,p=i.get(d)-1;Lr.set(d,f),i.set(d,p),f||(wl.has(d)||d.removeAttribute(r),wl.delete(d)),p||d.removeAttribute(n)}),Bs--,Bs||(Lr=new WeakMap,Lr=new WeakMap,wl=new WeakMap,Sl={})}},Dv=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=e_(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live], script"))),n_(r,o,n,"aria-hidden")):function(){return null}},Gt=function(){return Gt=Object.assign||function(t){for(var n,r=1,o=arguments.length;r"u")return w_;var t=S_(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},C_=Lv(),oo="data-scroll-locked",R_=function(e,t,n,r){var o=e.left,i=e.top,l=e.right,a=e.gap;return n===void 0&&(n="margin"),` + .`.concat(o_,` { + overflow: hidden `).concat(r,`; + padding-right: `).concat(a,"px ").concat(r,`; + } + body[`).concat(oo,`] { + overflow: hidden `).concat(r,`; + overscroll-behavior: contain; + `).concat([t&&"position: relative ".concat(r,";"),n==="margin"&&` + padding-left: `.concat(o,`px; + padding-top: `).concat(i,`px; + padding-right: `).concat(l,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(a,"px ").concat(r,`; + `),n==="padding"&&"padding-right: ".concat(a,"px ").concat(r,";")].filter(Boolean).join(""),` + } + + .`).concat(jl,` { + right: `).concat(a,"px ").concat(r,`; + } + + .`).concat(bl,` { + margin-right: `).concat(a,"px ").concat(r,`; + } + + .`).concat(jl," .").concat(jl,` { + right: 0 `).concat(r,`; + } + + .`).concat(bl," .").concat(bl,` { + margin-right: 0 `).concat(r,`; + } + + body[`).concat(oo,`] { + `).concat(i_,": ").concat(a,`px; + } +`)},Gp=function(){var e=parseInt(document.body.getAttribute(oo)||"0",10);return isFinite(e)?e:0},E_=function(){v.useEffect(function(){return document.body.setAttribute(oo,(Gp()+1).toString()),function(){var e=Gp()-1;e<=0?document.body.removeAttribute(oo):document.body.setAttribute(oo,e.toString())}},[])},__=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r;E_();var i=v.useMemo(function(){return x_(o)},[o]);return v.createElement(C_,{styles:R_(i,!t,o,n?"":"!important")})},qu=!1;if(typeof window<"u")try{var xl=Object.defineProperty({},"passive",{get:function(){return qu=!0,!0}});window.addEventListener("test",xl,xl),window.removeEventListener("test",xl,xl)}catch{qu=!1}var Or=qu?{passive:!1}:!1,P_=function(e){return e.tagName==="TEXTAREA"},Ov=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!P_(e)&&n[t]==="visible")},M_=function(e){return Ov(e,"overflowY")},k_=function(e){return Ov(e,"overflowX")},Wp=function(e,t){var n=t.ownerDocument,r=t;do{typeof ShadowRoot<"u"&&r instanceof ShadowRoot&&(r=r.host);var o=Fv(e,r);if(o){var i=Av(e,r),l=i[1],a=i[2];if(l>a)return!0}r=r.parentNode}while(r&&r!==n.body);return!1},D_=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},N_=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},Fv=function(e,t){return e==="v"?M_(t):k_(t)},Av=function(e,t){return e==="v"?D_(t):N_(t)},I_=function(e,t){return e==="h"&&t==="rtl"?-1:1},T_=function(e,t,n,r,o){var i=I_(e,window.getComputedStyle(t).direction),l=i*r,a=n.target,s=t.contains(a),u=!1,c=l>0,d=0,f=0;do{if(!a)break;var p=Av(e,a),y=p[0],m=p[1],S=p[2],g=m-S-i*y;(y||g)&&Fv(e,a)&&(d+=g,f+=y);var h=a.parentNode;a=h&&h.nodeType===Node.DOCUMENT_FRAGMENT_NODE?h.host:h}while(!s&&a!==document.body||s&&(t.contains(a)||t===a));return(c&&Math.abs(d)<1||!c&&Math.abs(f)<1)&&(u=!0),u},Cl=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Kp=function(e){return[e.deltaX,e.deltaY]},Qp=function(e){return e&&"current"in e?e.current:e},L_=function(e,t){return e[0]===t[0]&&e[1]===t[1]},O_=function(e){return` + .block-interactivity-`.concat(e,` {pointer-events: none;} + .allow-interactivity-`).concat(e,` {pointer-events: all;} +`)},F_=0,Fr=[];function A_(e){var t=v.useRef([]),n=v.useRef([0,0]),r=v.useRef(),o=v.useState(F_++)[0],i=v.useState(Lv)[0],l=v.useRef(e);v.useEffect(function(){l.current=e},[e]),v.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var m=r_([e.lockRef.current],(e.shards||[]).map(Qp),!0).filter(Boolean);return m.forEach(function(S){return S.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),m.forEach(function(S){return S.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var a=v.useCallback(function(m,S){if("touches"in m&&m.touches.length===2||m.type==="wheel"&&m.ctrlKey)return!l.current.allowPinchZoom;var g=Cl(m),h=n.current,w="deltaX"in m?m.deltaX:h[0]-g[0],x="deltaY"in m?m.deltaY:h[1]-g[1],P,D=m.target,k=Math.abs(w)>Math.abs(x)?"h":"v";if("touches"in m&&k==="h"&&D.type==="range")return!1;var C=Wp(k,D);if(!C)return!0;if(C?P=k:(P=k==="v"?"h":"v",C=Wp(k,D)),!C)return!1;if(!r.current&&"changedTouches"in m&&(w||x)&&(r.current=P),!P)return!0;var F=r.current||P;return T_(F,S,m,F==="h"?w:x)},[]),s=v.useCallback(function(m){var S=m;if(!(!Fr.length||Fr[Fr.length-1]!==i)){var g="deltaY"in S?Kp(S):Cl(S),h=t.current.filter(function(P){return P.name===S.type&&(P.target===S.target||S.target===P.shadowParent)&&L_(P.delta,g)})[0];if(h&&h.should){S.cancelable&&S.preventDefault();return}if(!h){var w=(l.current.shards||[]).map(Qp).filter(Boolean).filter(function(P){return P.contains(S.target)}),x=w.length>0?a(S,w[0]):!l.current.noIsolation;x&&S.cancelable&&S.preventDefault()}}},[]),u=v.useCallback(function(m,S,g,h){var w={name:m,delta:S,target:g,should:h,shadowParent:j_(g)};t.current.push(w),setTimeout(function(){t.current=t.current.filter(function(x){return x!==w})},1)},[]),c=v.useCallback(function(m){n.current=Cl(m),r.current=void 0},[]),d=v.useCallback(function(m){u(m.type,Kp(m),m.target,a(m,e.lockRef.current))},[]),f=v.useCallback(function(m){u(m.type,Cl(m),m.target,a(m,e.lockRef.current))},[]);v.useEffect(function(){return Fr.push(i),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:f}),document.addEventListener("wheel",s,Or),document.addEventListener("touchmove",s,Or),document.addEventListener("touchstart",c,Or),function(){Fr=Fr.filter(function(m){return m!==i}),document.removeEventListener("wheel",s,Or),document.removeEventListener("touchmove",s,Or),document.removeEventListener("touchstart",c,Or)}},[]);var p=e.removeScrollBar,y=e.inert;return v.createElement(v.Fragment,null,y?v.createElement(i,{styles:O_(o)}):null,p?v.createElement(__,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function j_(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const b_=f_(Tv,A_);var Sd=v.forwardRef(function(e,t){return v.createElement(Ha,Gt({},e,{ref:t,sideCar:b_}))});Sd.classNames=Ha.classNames;var ec=["Enter"," "],z_=["ArrowDown","PageUp","Home"],jv=["ArrowUp","PageDown","End"],$_=[...z_,...jv],V_={ltr:[...ec,"ArrowRight"],rtl:[...ec,"ArrowLeft"]},U_={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Ai="Menu",[Ri,B_,H_]=Qm(Ai),[Mr,bv]=So(Ai,[H_,pv,Rv]),Ga=pv(),zv=Rv(),[G_,kr]=Mr(Ai),[W_,ji]=Mr(Ai),$v=e=>{const{__scopeMenu:t,open:n=!1,children:r,dir:o,onOpenChange:i,modal:l=!0}=e,a=Ga(t),[s,u]=v.useState(null),c=v.useRef(!1),d=yn(i),f=Xm(o);return v.useEffect(()=>{const p=()=>{c.current=!0,document.addEventListener("pointerdown",y,{capture:!0,once:!0}),document.addEventListener("pointermove",y,{capture:!0,once:!0})},y=()=>c.current=!1;return document.addEventListener("keydown",p,{capture:!0}),()=>{document.removeEventListener("keydown",p,{capture:!0}),document.removeEventListener("pointerdown",y,{capture:!0}),document.removeEventListener("pointermove",y,{capture:!0})}},[]),R.jsx(O1,{...a,children:R.jsx(G_,{scope:t,open:n,onOpenChange:d,content:s,onContentChange:u,children:R.jsx(W_,{scope:t,onClose:v.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:c,dir:f,modal:l,children:r})})})};$v.displayName=Ai;var K_="MenuAnchor",xd=v.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=Ga(n);return R.jsx(F1,{...o,...r,ref:t})});xd.displayName=K_;var Cd="MenuPortal",[Q_,Vv]=Mr(Cd,{forceMount:void 0}),Uv=e=>{const{__scopeMenu:t,forceMount:n,children:r,container:o}=e,i=kr(Cd,t);return R.jsx(Q_,{scope:t,forceMount:n,children:R.jsx(ir,{present:n||i.open,children:R.jsx(wd,{asChild:!0,container:o,children:r})})})};Uv.displayName=Cd;var Pt="MenuContent",[X_,Rd]=Mr(Pt),Bv=v.forwardRef((e,t)=>{const n=Vv(Pt,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,i=kr(Pt,e.__scopeMenu),l=ji(Pt,e.__scopeMenu);return R.jsx(Ri.Provider,{scope:e.__scopeMenu,children:R.jsx(ir,{present:r||i.open,children:R.jsx(Ri.Slot,{scope:e.__scopeMenu,children:l.modal?R.jsx(Y_,{...o,ref:t}):R.jsx(Z_,{...o,ref:t})})})})}),Y_=v.forwardRef((e,t)=>{const n=kr(Pt,e.__scopeMenu),r=v.useRef(null),o=Ge(t,r);return v.useEffect(()=>{const i=r.current;if(i)return Dv(i)},[]),R.jsx(Ed,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:ne(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),Z_=v.forwardRef((e,t)=>{const n=kr(Pt,e.__scopeMenu);return R.jsx(Ed,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),J_=Si("MenuContent.ScrollLock"),Ed=v.forwardRef((e,t)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:o,onOpenAutoFocus:i,onCloseAutoFocus:l,disableOutsidePointerEvents:a,onEntryFocus:s,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:f,onDismiss:p,disableOutsideScroll:y,...m}=e,S=kr(Pt,n),g=ji(Pt,n),h=Ga(n),w=zv(n),x=B_(n),[P,D]=v.useState(null),k=v.useRef(null),C=Ge(t,k,S.onContentChange),F=v.useRef(0),T=v.useRef(""),b=v.useRef(0),j=v.useRef(null),Q=v.useRef("right"),G=v.useRef(0),se=y?Sd:v.Fragment,Z=y?{as:J_,allowPinchZoom:!0}:void 0,ie=N=>{var Ee,ct;const z=T.current+N,W=x().filter(ot=>!ot.disabled),oe=document.activeElement,De=(Ee=W.find(ot=>ot.ref.current===oe))==null?void 0:Ee.textValue,Ne=W.map(ot=>ot.textValue),rt=cP(Ne,z,De),ge=(ct=W.find(ot=>ot.textValue===rt))==null?void 0:ct.ref.current;(function ot(Vt){T.current=Vt,window.clearTimeout(F.current),Vt!==""&&(F.current=window.setTimeout(()=>ot(""),1e3))})(z),ge&&setTimeout(()=>ge.focus())};v.useEffect(()=>()=>window.clearTimeout(F.current),[]),Jm();const I=v.useCallback(N=>{var W,oe;return Q.current===((W=j.current)==null?void 0:W.side)&&fP(N,(oe=j.current)==null?void 0:oe.area)},[]);return R.jsx(X_,{scope:n,searchRef:T,onItemEnter:v.useCallback(N=>{I(N)&&N.preventDefault()},[I]),onItemLeave:v.useCallback(N=>{var z;I(N)||((z=k.current)==null||z.focus(),D(null))},[I]),onTriggerLeave:v.useCallback(N=>{I(N)&&N.preventDefault()},[I]),pointerGraceTimerRef:b,onPointerGraceIntentChange:v.useCallback(N=>{j.current=N},[]),children:R.jsx(se,{...Z,children:R.jsx(cd,{asChild:!0,trapped:o,onMountAutoFocus:ne(i,N=>{var z;N.preventDefault(),(z=k.current)==null||z.focus({preventScroll:!0})}),onUnmountAutoFocus:l,children:R.jsx(ud,{asChild:!0,disableOutsidePointerEvents:a,onEscapeKeyDown:u,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:f,onDismiss:p,children:R.jsx(J1,{asChild:!0,...w,dir:g.dir,orientation:"vertical",loop:r,currentTabStopId:P,onCurrentTabStopIdChange:D,onEntryFocus:ne(s,N=>{g.isUsingKeyboardRef.current||N.preventDefault()}),preventScrollOnEntryFocus:!0,children:R.jsx(A1,{role:"menu","aria-orientation":"vertical","data-state":iy(S.open),"data-radix-menu-content":"",dir:g.dir,...h,...m,ref:C,style:{outline:"none",...m.style},onKeyDown:ne(m.onKeyDown,N=>{const W=N.target.closest("[data-radix-menu-content]")===N.currentTarget,oe=N.ctrlKey||N.altKey||N.metaKey,De=N.key.length===1;W&&(N.key==="Tab"&&N.preventDefault(),!oe&&De&&ie(N.key));const Ne=k.current;if(N.target!==Ne||!$_.includes(N.key))return;N.preventDefault();const ge=x().filter(Ee=>!Ee.disabled).map(Ee=>Ee.ref.current);jv.includes(N.key)&&ge.reverse(),sP(ge)}),onBlur:ne(e.onBlur,N=>{N.currentTarget.contains(N.target)||(window.clearTimeout(F.current),T.current="")}),onPointerMove:ne(e.onPointerMove,Ei(N=>{const z=N.target,W=G.current!==N.clientX;if(N.currentTarget.contains(z)&&W){const oe=N.clientX>G.current?"right":"left";Q.current=oe,G.current=N.clientX}}))})})})})})})});Bv.displayName=Pt;var q_="MenuGroup",_d=v.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return R.jsx(Oe.div,{role:"group",...r,ref:t})});_d.displayName=q_;var eP="MenuLabel",Hv=v.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return R.jsx(Oe.div,{...r,ref:t})});Hv.displayName=eP;var ma="MenuItem",Xp="menu.itemSelect",Wa=v.forwardRef((e,t)=>{const{disabled:n=!1,onSelect:r,...o}=e,i=v.useRef(null),l=ji(ma,e.__scopeMenu),a=Rd(ma,e.__scopeMenu),s=Ge(t,i),u=v.useRef(!1),c=()=>{const d=i.current;if(!n&&d){const f=new CustomEvent(Xp,{bubbles:!0,cancelable:!0});d.addEventListener(Xp,p=>r==null?void 0:r(p),{once:!0}),Km(d,f),f.defaultPrevented?u.current=!1:l.onClose()}};return R.jsx(Gv,{...o,ref:s,disabled:n,onClick:ne(e.onClick,c),onPointerDown:d=>{var f;(f=e.onPointerDown)==null||f.call(e,d),u.current=!0},onPointerUp:ne(e.onPointerUp,d=>{var f;u.current||(f=d.currentTarget)==null||f.click()}),onKeyDown:ne(e.onKeyDown,d=>{const f=a.searchRef.current!=="";n||f&&d.key===" "||ec.includes(d.key)&&(d.currentTarget.click(),d.preventDefault())})})});Wa.displayName=ma;var Gv=v.forwardRef((e,t)=>{const{__scopeMenu:n,disabled:r=!1,textValue:o,...i}=e,l=Rd(ma,n),a=zv(n),s=v.useRef(null),u=Ge(t,s),[c,d]=v.useState(!1),[f,p]=v.useState("");return v.useEffect(()=>{const y=s.current;y&&p((y.textContent??"").trim())},[i.children]),R.jsx(Ri.ItemSlot,{scope:n,disabled:r,textValue:o??f,children:R.jsx(q1,{asChild:!0,...a,focusable:!r,children:R.jsx(Oe.div,{role:"menuitem","data-highlighted":c?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...i,ref:u,onPointerMove:ne(e.onPointerMove,Ei(y=>{r?l.onItemLeave(y):(l.onItemEnter(y),y.defaultPrevented||y.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:ne(e.onPointerLeave,Ei(y=>l.onItemLeave(y))),onFocus:ne(e.onFocus,()=>d(!0)),onBlur:ne(e.onBlur,()=>d(!1))})})})}),tP="MenuCheckboxItem",Wv=v.forwardRef((e,t)=>{const{checked:n=!1,onCheckedChange:r,...o}=e;return R.jsx(Zv,{scope:e.__scopeMenu,checked:n,children:R.jsx(Wa,{role:"menuitemcheckbox","aria-checked":va(n)?"mixed":n,...o,ref:t,"data-state":Md(n),onSelect:ne(o.onSelect,()=>r==null?void 0:r(va(n)?!0:!n),{checkForDefaultPrevented:!1})})})});Wv.displayName=tP;var Kv="MenuRadioGroup",[nP,rP]=Mr(Kv,{value:void 0,onValueChange:()=>{}}),Qv=v.forwardRef((e,t)=>{const{value:n,onValueChange:r,...o}=e,i=yn(r);return R.jsx(nP,{scope:e.__scopeMenu,value:n,onValueChange:i,children:R.jsx(_d,{...o,ref:t})})});Qv.displayName=Kv;var Xv="MenuRadioItem",Yv=v.forwardRef((e,t)=>{const{value:n,...r}=e,o=rP(Xv,e.__scopeMenu),i=n===o.value;return R.jsx(Zv,{scope:e.__scopeMenu,checked:i,children:R.jsx(Wa,{role:"menuitemradio","aria-checked":i,...r,ref:t,"data-state":Md(i),onSelect:ne(r.onSelect,()=>{var l;return(l=o.onValueChange)==null?void 0:l.call(o,n)},{checkForDefaultPrevented:!1})})})});Yv.displayName=Xv;var Pd="MenuItemIndicator",[Zv,oP]=Mr(Pd,{checked:!1}),Jv=v.forwardRef((e,t)=>{const{__scopeMenu:n,forceMount:r,...o}=e,i=oP(Pd,n);return R.jsx(ir,{present:r||va(i.checked)||i.checked===!0,children:R.jsx(Oe.span,{...o,ref:t,"data-state":Md(i.checked)})})});Jv.displayName=Pd;var iP="MenuSeparator",qv=v.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e;return R.jsx(Oe.div,{role:"separator","aria-orientation":"horizontal",...r,ref:t})});qv.displayName=iP;var lP="MenuArrow",ey=v.forwardRef((e,t)=>{const{__scopeMenu:n,...r}=e,o=Ga(n);return R.jsx(j1,{...o,...r,ref:t})});ey.displayName=lP;var aP="MenuSub",[FM,ty]=Mr(aP),Ho="MenuSubTrigger",ny=v.forwardRef((e,t)=>{const n=kr(Ho,e.__scopeMenu),r=ji(Ho,e.__scopeMenu),o=ty(Ho,e.__scopeMenu),i=Rd(Ho,e.__scopeMenu),l=v.useRef(null),{pointerGraceTimerRef:a,onPointerGraceIntentChange:s}=i,u={__scopeMenu:e.__scopeMenu},c=v.useCallback(()=>{l.current&&window.clearTimeout(l.current),l.current=null},[]);return v.useEffect(()=>c,[c]),v.useEffect(()=>{const d=a.current;return()=>{window.clearTimeout(d),s(null)}},[a,s]),R.jsx(xd,{asChild:!0,...u,children:R.jsx(Gv,{id:o.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":o.contentId,"data-state":iy(n.open),...e,ref:za(t,o.onTriggerChange),onClick:d=>{var f;(f=e.onClick)==null||f.call(e,d),!(e.disabled||d.defaultPrevented)&&(d.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:ne(e.onPointerMove,Ei(d=>{i.onItemEnter(d),!d.defaultPrevented&&!e.disabled&&!n.open&&!l.current&&(i.onPointerGraceIntentChange(null),l.current=window.setTimeout(()=>{n.onOpenChange(!0),c()},100))})),onPointerLeave:ne(e.onPointerLeave,Ei(d=>{var p,y;c();const f=(p=n.content)==null?void 0:p.getBoundingClientRect();if(f){const m=(y=n.content)==null?void 0:y.dataset.side,S=m==="right",g=S?-5:5,h=f[S?"left":"right"],w=f[S?"right":"left"];i.onPointerGraceIntentChange({area:[{x:d.clientX+g,y:d.clientY},{x:h,y:f.top},{x:w,y:f.top},{x:w,y:f.bottom},{x:h,y:f.bottom}],side:m}),window.clearTimeout(a.current),a.current=window.setTimeout(()=>i.onPointerGraceIntentChange(null),300)}else{if(i.onTriggerLeave(d),d.defaultPrevented)return;i.onPointerGraceIntentChange(null)}})),onKeyDown:ne(e.onKeyDown,d=>{var p;const f=i.searchRef.current!=="";e.disabled||f&&d.key===" "||V_[r.dir].includes(d.key)&&(n.onOpenChange(!0),(p=n.content)==null||p.focus(),d.preventDefault())})})})});ny.displayName=Ho;var ry="MenuSubContent",oy=v.forwardRef((e,t)=>{const n=Vv(Pt,e.__scopeMenu),{forceMount:r=n.forceMount,...o}=e,i=kr(Pt,e.__scopeMenu),l=ji(Pt,e.__scopeMenu),a=ty(ry,e.__scopeMenu),s=v.useRef(null),u=Ge(t,s);return R.jsx(Ri.Provider,{scope:e.__scopeMenu,children:R.jsx(ir,{present:r||i.open,children:R.jsx(Ri.Slot,{scope:e.__scopeMenu,children:R.jsx(Ed,{id:a.contentId,"aria-labelledby":a.triggerId,...o,ref:u,align:"start",side:l.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:c=>{var d;l.isUsingKeyboardRef.current&&((d=s.current)==null||d.focus()),c.preventDefault()},onCloseAutoFocus:c=>c.preventDefault(),onFocusOutside:ne(e.onFocusOutside,c=>{c.target!==a.trigger&&i.onOpenChange(!1)}),onEscapeKeyDown:ne(e.onEscapeKeyDown,c=>{l.onClose(),c.preventDefault()}),onKeyDown:ne(e.onKeyDown,c=>{var p;const d=c.currentTarget.contains(c.target),f=U_[l.dir].includes(c.key);d&&f&&(i.onOpenChange(!1),(p=a.trigger)==null||p.focus(),c.preventDefault())})})})})})});oy.displayName=ry;function iy(e){return e?"open":"closed"}function va(e){return e==="indeterminate"}function Md(e){return va(e)?"indeterminate":e?"checked":"unchecked"}function sP(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function uP(e,t){return e.map((n,r)=>e[(t+r)%e.length])}function cP(e,t,n){const o=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,i=n?e.indexOf(n):-1;let l=uP(e,Math.max(i,0));o.length===1&&(l=l.filter(u=>u!==n));const s=l.find(u=>u.toLowerCase().startsWith(o.toLowerCase()));return s!==n?s:void 0}function dP(e,t){const{x:n,y:r}=e;let o=!1;for(let i=0,l=t.length-1;ir!=f>r&&n<(d-u)*(r-c)/(f-c)+u&&(o=!o)}return o}function fP(e,t){if(!t)return!1;const n={x:e.clientX,y:e.clientY};return dP(n,t)}function Ei(e){return t=>t.pointerType==="mouse"?e(t):void 0}var pP=$v,gP=xd,hP=Uv,mP=Bv,vP=_d,yP=Hv,wP=Wa,SP=Wv,xP=Qv,CP=Yv,RP=Jv,EP=qv,_P=ey,PP=ny,MP=oy,Ka="DropdownMenu",[kP,AM]=So(Ka,[bv]),nt=bv(),[DP,ly]=kP(Ka),ay=e=>{const{__scopeDropdownMenu:t,children:n,dir:r,open:o,defaultOpen:i,onOpenChange:l,modal:a=!0}=e,s=nt(t),u=v.useRef(null),[c,d]=sd({prop:o,defaultProp:i??!1,onChange:l,caller:Ka});return R.jsx(DP,{scope:t,triggerId:no(),triggerRef:u,contentId:no(),open:c,onOpenChange:d,onOpenToggle:v.useCallback(()=>d(f=>!f),[d]),modal:a,children:R.jsx(pP,{...s,open:c,onOpenChange:d,dir:r,modal:a,children:n})})};ay.displayName=Ka;var sy="DropdownMenuTrigger",uy=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,disabled:r=!1,...o}=e,i=ly(sy,n),l=nt(n);return R.jsx(gP,{asChild:!0,...l,children:R.jsx(Oe.button,{type:"button",id:i.triggerId,"aria-haspopup":"menu","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":i.open?"open":"closed","data-disabled":r?"":void 0,disabled:r,...o,ref:za(t,i.triggerRef),onPointerDown:ne(e.onPointerDown,a=>{!r&&a.button===0&&a.ctrlKey===!1&&(i.onOpenToggle(),i.open||a.preventDefault())}),onKeyDown:ne(e.onKeyDown,a=>{r||(["Enter"," "].includes(a.key)&&i.onOpenToggle(),a.key==="ArrowDown"&&i.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(a.key)&&a.preventDefault())})})})});uy.displayName=sy;var NP="DropdownMenuPortal",cy=e=>{const{__scopeDropdownMenu:t,...n}=e,r=nt(t);return R.jsx(hP,{...r,...n})};cy.displayName=NP;var dy="DropdownMenuContent",fy=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=ly(dy,n),i=nt(n),l=v.useRef(!1);return R.jsx(mP,{id:o.contentId,"aria-labelledby":o.triggerId,...i,...r,ref:t,onCloseAutoFocus:ne(e.onCloseAutoFocus,a=>{var s;l.current||(s=o.triggerRef.current)==null||s.focus(),l.current=!1,a.preventDefault()}),onInteractOutside:ne(e.onInteractOutside,a=>{const s=a.detail.originalEvent,u=s.button===0&&s.ctrlKey===!0,c=s.button===2||u;(!o.modal||c)&&(l.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});fy.displayName=dy;var IP="DropdownMenuGroup",TP=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=nt(n);return R.jsx(vP,{...o,...r,ref:t})});TP.displayName=IP;var LP="DropdownMenuLabel",py=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=nt(n);return R.jsx(yP,{...o,...r,ref:t})});py.displayName=LP;var OP="DropdownMenuItem",gy=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=nt(n);return R.jsx(wP,{...o,...r,ref:t})});gy.displayName=OP;var FP="DropdownMenuCheckboxItem",AP=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=nt(n);return R.jsx(SP,{...o,...r,ref:t})});AP.displayName=FP;var jP="DropdownMenuRadioGroup",bP=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=nt(n);return R.jsx(xP,{...o,...r,ref:t})});bP.displayName=jP;var zP="DropdownMenuRadioItem",$P=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=nt(n);return R.jsx(CP,{...o,...r,ref:t})});$P.displayName=zP;var VP="DropdownMenuItemIndicator",UP=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=nt(n);return R.jsx(RP,{...o,...r,ref:t})});UP.displayName=VP;var BP="DropdownMenuSeparator",hy=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=nt(n);return R.jsx(EP,{...o,...r,ref:t})});hy.displayName=BP;var HP="DropdownMenuArrow",GP=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=nt(n);return R.jsx(_P,{...o,...r,ref:t})});GP.displayName=HP;var WP="DropdownMenuSubTrigger",KP=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=nt(n);return R.jsx(PP,{...o,...r,ref:t})});KP.displayName=WP;var QP="DropdownMenuSubContent",XP=v.forwardRef((e,t)=>{const{__scopeDropdownMenu:n,...r}=e,o=nt(n);return R.jsx(MP,{...o,...r,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});XP.displayName=QP;var YP=ay,ZP=uy,JP=cy,qP=fy,eM=py,tM=gy,nM=hy;const my=YP,vy=ZP,kd=v.forwardRef(({className:e,sideOffset:t=4,...n},r)=>R.jsx(JP,{children:R.jsx(qP,{ref:r,sideOffset:t,className:Ve("z-50 min-w-[12rem] overflow-hidden rounded-2xl border bg-white p-1 text-sm shadow-lg",e),...n})}));kd.displayName="DropdownMenuContent";const yy=v.forwardRef(({className:e,...t},n)=>R.jsx(eM,{ref:n,className:Ve("px-3 py-2 text-xs text-zinc-500",e),...t}));yy.displayName="DropdownMenuLabel";const wy=v.forwardRef(({className:e,...t},n)=>R.jsx(nM,{ref:n,className:Ve("my-1 h-px bg-zinc-200",e),...t}));wy.displayName="DropdownMenuSeparator";const ya=v.forwardRef(({className:e,...t},n)=>R.jsx(tM,{ref:n,className:Ve("relative flex cursor-pointer select-none items-center rounded-xl px-3 py-2 outline-none hover:bg-zinc-100",e),...t}));ya.displayName="DropdownMenuItem";function rM({columns:e,data:t,className:n,columnsTitle:r="Колонки",initialVisibility:o,initialSizing:i,initialPageSize:l=10,pageSizeOptions:a=[10,50,100]}){const[s,u]=v.useState(o??{}),[c]=v.useState(i??{}),[d,f]=v.useState(l),[p,y]=v.useState(0),m=nR({data:t,columns:e,state:{columnVisibility:s,columnSizing:c,pagination:{pageIndex:p,pageSize:d}},columnResizeMode:"onChange",onColumnVisibilityChange:u,onPaginationChange:g=>{const h=typeof g=="function"?g({pageIndex:p,pageSize:d}):g;(h==null?void 0:h.pageSize)!==void 0&&f(h.pageSize),(h==null?void 0:h.pageIndex)!==void 0&&y(h.pageIndex)},getCoreRowModel:YC(),getPaginationRowModel:JC()}),S=m.getAllLeafColumns();return R.jsxs("div",{className:Ve("space-y-3",n),children:[R.jsxs("div",{className:"flex items-center justify-between",children:[R.jsx("h2",{className:"text-lg font-semibold",children:"Список"}),R.jsxs(my,{children:[R.jsx(vy,{asChild:!0,children:R.jsx("button",{className:"h-9 rounded-2xl border px-3 text-sm hover:bg-zinc-50",children:r})}),R.jsx(kd,{className:"max-h-80 overflow-auto",children:S.filter(g=>g.getCanHide()).map(g=>R.jsx(ya,{onSelect:h=>h.preventDefault(),children:R.jsxs("label",{className:"flex items-center gap-2",children:[R.jsx("input",{type:"checkbox",checked:g.getIsVisible(),onChange:()=>g.toggleVisibility()}),R.jsx("span",{children:String(g.columnDef.header??g.id)})]})},g.id))})]})]}),R.jsx("div",{className:"rounded-2xl border",children:R.jsx("div",{className:"overflow-x-auto",children:R.jsxs(AR,{className:"min-w-[800px]",style:{width:m.getCenterTotalSize()},children:[R.jsx(jR,{children:m.getHeaderGroups().map(g=>R.jsx(As,{children:g.headers.map(h=>{var w,x;return R.jsx(zR,{className:Ve((x=(w=h.column.columnDef)==null?void 0:w.meta)==null?void 0:x.className),style:{width:h.column.getSize()},children:h.isPlaceholder?null:xp(h.column.columnDef.header,h.getContext())},h.id)})},g.id))}),R.jsx(bR,{children:m.getRowModel().rows.length?m.getRowModel().rows.map(g=>R.jsx(As,{"data-state":g.getIsSelected()&&"selected",className:"transition-colors hover:bg-zinc-50",children:g.getVisibleCells().map(h=>{var w,x;return R.jsx(Ep,{className:Ve((x=(w=h.column.columnDef)==null?void 0:w.meta)==null?void 0:x.className),style:{width:h.column.getSize()},children:xp(h.column.columnDef.cell,h.getContext())},h.id)})},g.id)):R.jsx(As,{children:R.jsx(Ep,{colSpan:S.length,className:"h-24 text-center",children:"Нет данных"})})})]})})}),R.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[R.jsxs("div",{className:"flex items-center gap-2",children:[R.jsx("span",{className:"text-sm text-zinc-600",children:"Показывать по:"}),R.jsx("select",{className:"h-9 rounded-2xl border px-3 text-sm bg-white",value:d,onChange:g=>m.setPageSize(Number(g.target.value)),children:a.map(g=>R.jsx("option",{value:g,children:g},g))})]}),R.jsxs("div",{className:"flex items-center gap-2",children:[R.jsx("button",{className:"h-9 rounded-xl border px-2 text-sm hover:bg-zinc-50 disabled:opacity-50",onClick:()=>m.setPageIndex(0),disabled:!m.getCanPreviousPage(),"aria-label":"Первая страница",children:"«"}),R.jsx("button",{className:"h-9 rounded-xl border px-3 text-sm hover:bg-zinc-50 disabled:opacity-50",onClick:()=>m.previousPage(),disabled:!m.getCanPreviousPage(),"aria-label":"Предыдущая страница",children:"‹"}),R.jsxs("span",{className:"text-sm px-2",children:["стр. ",m.getState().pagination.pageIndex+1," из ",m.getPageCount()]}),R.jsx("button",{className:"h-9 rounded-xl border px-3 text-sm hover:bg-zinc-50 disabled:opacity-50",onClick:()=>m.nextPage(),disabled:!m.getCanNextPage(),"aria-label":"Следующая страница",children:"›"}),R.jsx("button",{className:"h-9 rounded-xl border px-2 text-sm hover:bg-zinc-50 disabled:opacity-50",onClick:()=>m.setPageIndex(m.getPageCount()-1),disabled:!m.getCanNextPage(),"aria-label":"Последняя страница",children:"»"})]})]})]})}function Sy(e){if(!e)return"";try{const t=typeof e=="string"?new Date(e):e;return Number.isNaN(t.getTime())?String(e):new Intl.DateTimeFormat("ru-RU",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(t)}catch{return String(e)}}function oM(e){const{onView:t}=e;return[{accessorKey:"name",header:"Имя"},{accessorKey:"version",header:"Версия"},{id:"type_title",header:"Тип (имя)",cell:({row:n})=>{var r;return((r=n.original.type)==null?void 0:r.title)??""}},{id:"type_code",header:"Тип (код)",cell:({row:n})=>{var r;return((r=n.original.type)==null?void 0:r.code)??""}},{accessorKey:"namespace",header:"Namespace"},{accessorKey:"description",header:"Описание"},{accessorKey:"file_path",header:"Путь к файлу"},{accessorKey:"created_at",header:"Загружено",cell:({row:n})=>Sy(n.original.created_at)},{accessorKey:"id",header:"ID"},{id:"actions",header:"Действия",enableHiding:!1,meta:{className:"sticky right-0 z-10 bg-[var(--background)] border-l"},cell:({row:n})=>{const r=n.original;return R.jsxs(my,{children:[R.jsx(vy,{asChild:!0,children:R.jsx("button",{className:"h-8 w-8 rounded-xl hover:bg-zinc-100","aria-label":"Действия",children:"⋯"})}),R.jsxs(kd,{align:"end",children:[R.jsx(yy,{children:"Действия"}),R.jsx(ya,{onClick:()=>navigator.clipboard.writeText(String(r.id)),children:"Скопировать ID"}),R.jsx(wy,{}),R.jsx(ya,{onClick:()=>t(r.id),children:"Открыть"})]})]})}}]}var Qa="Dialog",[xy,jM]=So(Qa),[iM,$t]=xy(Qa),Cy=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:l=!0}=e,a=v.useRef(null),s=v.useRef(null),[u,c]=sd({prop:r,defaultProp:o??!1,onChange:i,caller:Qa});return R.jsx(iM,{scope:t,triggerRef:a,contentRef:s,contentId:no(),titleId:no(),descriptionId:no(),open:u,onOpenChange:c,onOpenToggle:v.useCallback(()=>c(d=>!d),[c]),modal:l,children:n})};Cy.displayName=Qa;var Ry="DialogTrigger",lM=v.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=$t(Ry,n),i=Ge(t,o.triggerRef);return R.jsx(Oe.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Id(o.open),...r,ref:i,onClick:ne(e.onClick,o.onOpenToggle)})});lM.displayName=Ry;var Dd="DialogPortal",[aM,Ey]=xy(Dd,{forceMount:void 0}),_y=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,i=$t(Dd,t);return R.jsx(aM,{scope:t,forceMount:n,children:v.Children.map(r,l=>R.jsx(ir,{present:n||i.open,children:R.jsx(wd,{asChild:!0,container:o,children:l})}))})};_y.displayName=Dd;var wa="DialogOverlay",Py=v.forwardRef((e,t)=>{const n=Ey(wa,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=$t(wa,e.__scopeDialog);return i.modal?R.jsx(ir,{present:r||i.open,children:R.jsx(uM,{...o,ref:t})}):null});Py.displayName=wa;var sM=Si("DialogOverlay.RemoveScroll"),uM=v.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=$t(wa,n);return R.jsx(Sd,{as:sM,allowPinchZoom:!0,shards:[o.contentRef],children:R.jsx(Oe.div,{"data-state":Id(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),Er="DialogContent",My=v.forwardRef((e,t)=>{const n=Ey(Er,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=$t(Er,e.__scopeDialog);return R.jsx(ir,{present:r||i.open,children:i.modal?R.jsx(cM,{...o,ref:t}):R.jsx(dM,{...o,ref:t})})});My.displayName=Er;var cM=v.forwardRef((e,t)=>{const n=$t(Er,e.__scopeDialog),r=v.useRef(null),o=Ge(t,n.contentRef,r);return v.useEffect(()=>{const i=r.current;if(i)return Dv(i)},[]),R.jsx(ky,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:ne(e.onCloseAutoFocus,i=>{var l;i.preventDefault(),(l=n.triggerRef.current)==null||l.focus()}),onPointerDownOutside:ne(e.onPointerDownOutside,i=>{const l=i.detail.originalEvent,a=l.button===0&&l.ctrlKey===!0;(l.button===2||a)&&i.preventDefault()}),onFocusOutside:ne(e.onFocusOutside,i=>i.preventDefault())})}),dM=v.forwardRef((e,t)=>{const n=$t(Er,e.__scopeDialog),r=v.useRef(!1),o=v.useRef(!1);return R.jsx(ky,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var l,a;(l=e.onCloseAutoFocus)==null||l.call(e,i),i.defaultPrevented||(r.current||(a=n.triggerRef.current)==null||a.focus(),i.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:i=>{var s,u;(s=e.onInteractOutside)==null||s.call(e,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const l=i.target;((u=n.triggerRef.current)==null?void 0:u.contains(l))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&o.current&&i.preventDefault()}})}),ky=v.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,...l}=e,a=$t(Er,n),s=v.useRef(null),u=Ge(t,s);return Jm(),R.jsxs(R.Fragment,{children:[R.jsx(cd,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i,children:R.jsx(ud,{role:"dialog",id:a.contentId,"aria-describedby":a.descriptionId,"aria-labelledby":a.titleId,"data-state":Id(a.open),...l,ref:u,onDismiss:()=>a.onOpenChange(!1)})}),R.jsxs(R.Fragment,{children:[R.jsx(gM,{titleId:a.titleId}),R.jsx(mM,{contentRef:s,descriptionId:a.descriptionId})]})]})}),Nd="DialogTitle",fM=v.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=$t(Nd,n);return R.jsx(Oe.h2,{id:o.titleId,...r,ref:t})});fM.displayName=Nd;var Dy="DialogDescription",pM=v.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=$t(Dy,n);return R.jsx(Oe.p,{id:o.descriptionId,...r,ref:t})});pM.displayName=Dy;var Ny="DialogClose",Iy=v.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=$t(Ny,n);return R.jsx(Oe.button,{type:"button",...r,ref:t,onClick:ne(e.onClick,()=>o.onOpenChange(!1))})});Iy.displayName=Ny;function Id(e){return e?"open":"closed"}var Ty="DialogTitleWarning",[bM,Ly]=$R(Ty,{contentName:Er,titleName:Nd,docsSlug:"dialog"}),gM=({titleId:e})=>{const t=Ly(Ty),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. + +If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. + +For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return v.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},hM="DialogDescriptionWarning",mM=({contentRef:e,descriptionId:t})=>{const r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${Ly(hM).contentName}}.`;return v.useEffect(()=>{var i;const o=(i=e.current)==null?void 0:i.getAttribute("aria-describedby");t&&o&&(document.getElementById(t)||console.warn(r))},[r,e,t]),null},vM=Cy,yM=_y,wM=Py,SM=My,Oy=Iy;const xM=vM,CM=Oy;function RM(e){return R.jsx(yM,{...e})}const Fy=v.forwardRef(({className:e,...t},n)=>R.jsx(wM,{ref:n,className:Ve("fixed inset-0 z-[60] bg-black/50 backdrop-blur-[1px]",e),...t}));Fy.displayName="DialogOverlay";const Ay=v.forwardRef(({className:e,children:t,...n},r)=>R.jsxs(RM,{children:[R.jsx(Fy,{}),R.jsxs(SM,{ref:r,className:Ve("fixed left-1/2 top-1/2 z-[70] w-[min(92vw,900px)] -translate-x-1/2 -translate-y-1/2","rounded-2xl border bg-white shadow-xl outline-none","max-h-[85vh] max-w-[92vw] flex flex-col overflow-hidden",e),...n,children:[R.jsx(Oy,{className:Ve("absolute right-3 top-3 h-8 w-8 rounded-xl text-zinc-500","hover:bg-zinc-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2"),"aria-label":"Закрыть",children:"×"}),t]})]}));Ay.displayName="DialogContent";function EM(e){return R.jsx("div",{className:Ve("border-b px-6 py-4",e.className),...e})}function _M(e){return R.jsx("h2",{className:Ve("text-lg font-semibold",e.className),...e})}function PM(e){return R.jsx("div",{className:Ve("px-6 py-5 flex-1 overflow-auto",e.className),...e})}function MM(e){return R.jsx("div",{className:Ve("border-t px-6 py-4 flex items-center justify-end gap-2",e.className),...e})}function jy(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e))for(t=0;ttypeof e=="boolean"?"".concat(e):e===0?"0":e,Zp=kM,DM=(e,t)=>n=>{var r;if((t==null?void 0:t.variants)==null)return Zp(e,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:o,defaultVariants:i}=t,l=Object.keys(o).map(u=>{const c=n==null?void 0:n[u],d=i==null?void 0:i[u];if(c===null)return null;const f=Yp(c)||Yp(d);return o[u][f]}),a=n&&Object.entries(n).reduce((u,c)=>{let[d,f]=c;return f===void 0||(u[d]=f),u},{}),s=t==null||(r=t.compoundVariants)===null||r===void 0?void 0:r.reduce((u,c)=>{let{class:d,className:f,...p}=c;return Object.entries(p).every(y=>{let[m,S]=y;return Array.isArray(S)?S.includes({...i,...a}[m]):{...i,...a}[m]===S})?[...u,d,f]:u},[]);return Zp(e,l,s,n==null?void 0:n.class,n==null?void 0:n.className)},NM=DM("inline-flex items-center justify-center text-sm font-medium transition-colors rounded-[var(--radius)] focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none",{variants:{variant:{default:"bg-[var(--primary)] text-[var(--primary-foreground)] hover:opacity-90",outline:"border px-4 py-2 hover:bg-[var(--muted)]",ghost:"px-3 py-2 hover:bg-[var(--muted)]"},size:{sm:"h-8 px-3",md:"h-9 px-4",lg:"h-10 px-6"}},defaultVariants:{variant:"default",size:"md"}}),by=v.forwardRef(({className:e,variant:t,size:n,...r},o)=>R.jsx("button",{ref:o,className:Ve(NM({variant:t,size:n}),e),...r}));by.displayName="Button";function IM({open:e,schemaId:t,onOpenChange:n}){var u,c;const[r,o]=v.useState(!1),[i,l]=v.useState(null),[a,s]=v.useState(null);return v.useEffect(()=>{!e||t==null||(o(!0),l(null),s(null),(async()=>{try{const d=await fetch(`/api/schemas/${t}`);if(!d.ok)throw new Error(await d.text());const f=await d.json();s(f)}catch(d){l(String((d==null?void 0:d.message)??d))}finally{o(!1)}})())},[e,t]),R.jsx(xM,{open:e,onOpenChange:n,children:R.jsxs(Ay,{children:[R.jsx(EM,{children:R.jsx(_M,{children:"Просмотр схемы"})}),R.jsxs(PM,{children:[r&&R.jsx("div",{className:"text-sm",children:"Загрузка…"}),i&&R.jsxs("div",{className:"text-sm text-red-700",children:["Ошибка: ",i]}),a&&R.jsxs(R.Fragment,{children:[R.jsxs("div",{className:"grid grid-cols-[200px_1fr] gap-x-6 gap-y-2 text-sm",children:[R.jsx("div",{className:"text-zinc-500",children:"ID"}),R.jsx("div",{className:"break-words",children:a.id}),R.jsx("div",{className:"text-zinc-500",children:"Имя"}),R.jsx("div",{className:"break-words",children:a.name}),R.jsx("div",{className:"text-zinc-500",children:"Версия"}),R.jsx("div",{className:"break-words",children:a.version??""}),R.jsx("div",{className:"text-zinc-500",children:"Тип (имя)"}),R.jsx("div",{className:"break-words",children:((u=a.type)==null?void 0:u.title)??""}),R.jsx("div",{className:"text-zinc-500",children:"Тип (код)"}),R.jsx("div",{className:"break-words",children:((c=a.type)==null?void 0:c.code)??""}),R.jsx("div",{className:"text-zinc-500",children:"Namespace"}),R.jsx("div",{className:"break-words",children:a.namespace??""}),R.jsx("div",{className:"text-zinc-500",children:"Описание"}),R.jsx("div",{className:"break-words",children:a.description??""}),R.jsx("div",{className:"text-zinc-500",children:"Путь"}),R.jsx("div",{className:"break-all",children:a.file_path??""}),R.jsx("div",{className:"text-zinc-500",children:"Загружено"}),R.jsx("div",{className:"break-words",children:Sy(a.created_at)})]}),R.jsxs("details",{className:"rounded-2xl border mt-6",children:[R.jsx("summary",{className:"cursor-pointer select-none px-4 py-2 text-sm text-zinc-600",children:"JSON-представление"}),R.jsx("div",{className:"border-t p-3",children:R.jsx("pre",{className:"rounded-xl bg-zinc-50 p-3 text-xs overflow-auto",children:JSON.stringify(a,null,2)})})]})]})]}),R.jsx(MM,{children:R.jsx(CM,{asChild:!0,children:R.jsx(by,{autoFocus:!0,children:"Закрыть"})})})]})})}function Jp(){const[e,t]=v.useState(null),[n,r]=v.useState(null),[o,i]=v.useState(null),[l,a]=v.useState(!1),s=v.useMemo(()=>oM({onView:u=>{i(u),a(!0)}}),[]);return v.useEffect(()=>{fetch("/api/schemas").then(async u=>{if(!u.ok)throw new Error(await u.text());return u.json()}).then(u=>t(u)).catch(u=>r(String(u)))},[]),n?R.jsxs("div",{className:"p-6 text-red-700",children:["Ошибка: ",n]}):e?R.jsxs("div",{className:"p-6",children:[R.jsx(rM,{columns:s,data:e,initialVisibility:{id:!1,namespace:!1,file_path:!1,type_code:!1},initialSizing:{name:180,version:70,type_title:180,description:260,created_at:180,id:80,namespace:180,file_path:320,type_code:180,actions:64},initialPageSize:10}),R.jsx(IM,{open:l,schemaId:o,onOpenChange:u=>{u||i(null),a(u)}})]}):R.jsx("div",{className:"p-6",children:"Загрузка…"})}function TM(){return R.jsx("div",{className:"space-y-4",children:R.jsx("h1",{className:"text-xl font-semibold",children:"Загрузка XSD/XSL"})})}function LM(){return R.jsxs("div",{className:"text-sm text-neutral-500",children:["Детальный просмотр будет добавлен, когда появится эндпоинт /schemas/",id,"."]})}const OM=Kx([{path:"/",element:R.jsx(uC,{}),children:[{index:!0,element:R.jsx(Jp,{})},{path:"schemas",element:R.jsx(Jp,{})},{path:"schemas/upload",element:R.jsx(TM,{})},{path:"schemas/:id",element:R.jsx(LM,{})}]}],{basename:"/ui"});gm(document.getElementById("root")).render(R.jsx(on.StrictMode,{children:R.jsx(tC,{router:OM})})); diff --git a/app/static/index.html b/app/static/index.html new file mode 100644 index 0000000..6fd882c --- /dev/null +++ b/app/static/index.html @@ -0,0 +1,13 @@ + + + + + + XSD Registry + + + + +
+ + diff --git a/app/storage.py b/app/storage.py new file mode 100644 index 0000000..094ae4a --- /dev/null +++ b/app/storage.py @@ -0,0 +1,42 @@ +import os +import uuid +from typing import Optional +import boto3 +from botocore.client import Config + +S3_ENDPOINT = os.getenv("S3_ENDPOINT", "http://minio:9000") +S3_BUCKET = os.getenv("S3_BUCKET", "xmlsvc") +S3_ACCESS_KEY = os.getenv("S3_ACCESS_KEY", "minioadmin") +S3_SECRET_KEY = os.getenv("S3_SECRET_KEY", "minioadmin") + +_s3 = boto3.client( + "s3", + endpoint_url=S3_ENDPOINT, + aws_access_key_id=S3_ACCESS_KEY, + aws_secret_access_key=S3_SECRET_KEY, + config=Config(signature_version="s3v4"), + region_name="us-east-1", +) + +def save_file_minio(prefix: str, filename: str, content: bytes) -> str: + # ключ вида: schemas/_<имя> + key = f"{prefix}/{uuid.uuid4().hex}_{filename}" + _s3.put_object(Bucket=S3_BUCKET, Key=key, Body=content) + return key + +def delete_file_minio(key: str) -> None: + try: + _s3.delete_object(Bucket=S3_BUCKET, Key=key) + except Exception: + # на проде логируем; для MVP — молча + pass + +def presigned_url(key: str, expires: int = 3600) -> Optional[str]: + try: + return _s3.generate_presigned_url( + "get_object", + Params={"Bucket": S3_BUCKET, "Key": key}, + ExpiresIn=expires, + ) + except Exception: + return None diff --git a/app/web/templates.py b/app/web/templates.py new file mode 100644 index 0000000..2d70f02 --- /dev/null +++ b/app/web/templates.py @@ -0,0 +1,6 @@ +# app/web/templates.py +from datetime import datetime +from fastapi.templating import Jinja2Templates + +templates = Jinja2Templates(directory="templates") +templates.env.globals["now"] = datetime.utcnow diff --git a/config/schema_types.yml b/config/schema_types.yml new file mode 100644 index 0000000..31f99eb --- /dev/null +++ b/config/schema_types.yml @@ -0,0 +1,15 @@ +# Примерный реестр типов схем Минстроя +- code: design_assignment + title: "Задание на проектирование" + description: "Схема задания на проектирование (MCS)." + filename_pattern: "(?i)DesignAssignment-[0-9]{2}[-_.][0-9]{2}\\.xsd" + +- code: explanatory_note + title: "Пояснительная записка" + description: "Схема пояснительной записки (Раздел 1)." + filename_pattern: "(?i)ExplanatoryNote-[0-9]{2}[-_.][0-9]{2}\\.xsd" + +- code: expert_conclusion + title: "Заключение экспертизы" + description: "Схема заключения экспертизы." + filename_pattern: "(?i)(Expert|Examination)Conclusion-[0-9]{2}[-_.][0-9]{2}\\.xsd" diff --git a/docker-compose.yml b/docker-compose.yml index fba47c8..25f9361 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,10 +1,9 @@ -version: "3.9" - services: app: build: . container_name: xmlsvc_app env_file: .env + working_dir: /app command: > uvicorn app.main:app --host 0.0.0.0 @@ -12,9 +11,12 @@ services: --reload environment: # Internal service URLs (container network) + - PYTHONPATH=/app - DATABASE_URL=postgresql+psycopg://$PG_USER:$PG_PASSWORD@postgres:5432/$PG_DB - S3_ENDPOINT=http://minio:9000 - S3_BUCKET=${S3_BUCKET} + - S3_ACCESS_KEY=${MINIO_ROOT_USER} + - S3_SECRET_KEY=${MINIO_ROOT_PASSWORD} - MAX_UPLOAD_MB=80 ports: - "${APP_PORT}:${APP_PORT_INTERNAL}" diff --git a/frontend/components.json b/frontend/components.json new file mode 100644 index 0000000..cfbafe2 --- /dev/null +++ b/frontend/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/styles/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..61b4ff7 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,12 @@ + + + + + + XSD Registry + + +
+ + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..52d8eec --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,3528 @@ +{ + "name": "xsd-registry-ui", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "xsd-registry-ui", + "version": "0.1.0", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.16", + "@tanstack/react-table": "^8.21.3", + "axios": "1.7.7", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "lucide-react": "^0.541.0", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-router-dom": "6.26.2", + "tailwind-merge": "^2.5.2", + "tw-animate-css": "^1.3.7" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.1.0", + "@types/react": "18.3.5", + "@types/react-dom": "18.3.0", + "@vitejs/plugin-react": "^4.7.0", + "tailwindcss": "^4.1.0", + "typescript": "5.5.4", + "vite": "5.4.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", + "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.3", + "@babel/parser": "^7.28.3", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.3", + "@babel/types": "^7.28.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz", + "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz", + "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz", + "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.3", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.2", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", + "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.4" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "license": "MIT" + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz", + "integrity": "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", + "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@remix-run/router": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz", + "integrity": "sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.48.0.tgz", + "integrity": "sha512-aVzKH922ogVAWkKiyKXorjYymz2084zrhrZRXtLrA5eEx5SO8Dj0c/4FpCHZyn7MKzhW2pW4tK28vVr+5oQ2xw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.48.0.tgz", + "integrity": "sha512-diOdQuw43xTa1RddAFbhIA8toirSzFMcnIg8kvlzRbK26xqEnKJ/vqQnghTAajy2Dcy42v+GMPMo6jq67od+Dw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.48.0.tgz", + "integrity": "sha512-QhR2KA18fPlJWFefySJPDYZELaVqIUVnYgAOdtJ+B/uH96CFg2l1TQpX19XpUMWUqMyIiyY45wje8K6F4w4/CA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.48.0.tgz", + "integrity": "sha512-Q9RMXnQVJ5S1SYpNSTwXDpoQLgJ/fbInWOyjbCnnqTElEyeNvLAB3QvG5xmMQMhFN74bB5ZZJYkKaFPcOG8sGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.48.0.tgz", + "integrity": "sha512-3jzOhHWM8O8PSfyft+ghXZfBkZawQA0PUGtadKYxFqpcYlOYjTi06WsnYBsbMHLawr+4uWirLlbhcYLHDXR16w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.48.0.tgz", + "integrity": "sha512-NcD5uVUmE73C/TPJqf78hInZmiSBsDpz3iD5MF/BuB+qzm4ooF2S1HfeTChj5K4AV3y19FFPgxonsxiEpy8v/A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.48.0.tgz", + "integrity": "sha512-JWnrj8qZgLWRNHr7NbpdnrQ8kcg09EBBq8jVOjmtlB3c8C6IrynAJSMhMVGME4YfTJzIkJqvSUSVJRqkDnu/aA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.48.0.tgz", + "integrity": "sha512-9xu92F0TxuMH0tD6tG3+GtngwdgSf8Bnz+YcsPG91/r5Vgh5LNofO48jV55priA95p3c92FLmPM7CvsVlnSbGQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.48.0.tgz", + "integrity": "sha512-NLtvJB5YpWn7jlp1rJiY0s+G1Z1IVmkDuiywiqUhh96MIraC0n7XQc2SZ1CZz14shqkM+XN2UrfIo7JB6UufOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.48.0.tgz", + "integrity": "sha512-QJ4hCOnz2SXgCh+HmpvZkM+0NSGcZACyYS8DGbWn2PbmA0e5xUk4bIP8eqJyNXLtyB4gZ3/XyvKtQ1IFH671vQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.48.0.tgz", + "integrity": "sha512-Pk0qlGJnhILdIC5zSKQnprFjrGmjfDM7TPZ0FKJxRkoo+kgMRAg4ps1VlTZf8u2vohSicLg7NP+cA5qE96PaFg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.48.0.tgz", + "integrity": "sha512-/dNFc6rTpoOzgp5GKoYjT6uLo8okR/Chi2ECOmCZiS4oqh3mc95pThWma7Bgyk6/WTEvjDINpiBCuecPLOgBLQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.48.0.tgz", + "integrity": "sha512-YBwXsvsFI8CVA4ej+bJF2d9uAeIiSkqKSPQNn0Wyh4eMDY4wxuSp71BauPjQNCKK2tD2/ksJ7uhJ8X/PVY9bHQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.48.0.tgz", + "integrity": "sha512-FI3Rr2aGAtl1aHzbkBIamsQyuauYtTF9SDUJ8n2wMXuuxwchC3QkumZa1TEXYIv/1AUp1a25Kwy6ONArvnyeVQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.48.0.tgz", + "integrity": "sha512-Dx7qH0/rvNNFmCcIRe1pyQ9/H0XO4v/f0SDoafwRYwc2J7bJZ5N4CHL/cdjamISZ5Cgnon6iazAVRFlxSoHQnQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.48.0.tgz", + "integrity": "sha512-GUdZKTeKBq9WmEBzvFYuC88yk26vT66lQV8D5+9TgkfbewhLaTHRNATyzpQwwbHIfJvDJ3N9WJ90wK/uR3cy3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.48.0.tgz", + "integrity": "sha512-ao58Adz/v14MWpQgYAb4a4h3fdw73DrDGtaiF7Opds5wNyEQwtO6M9dBh89nke0yoZzzaegq6J/EXs7eBebG8A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.48.0.tgz", + "integrity": "sha512-kpFno46bHtjZVdRIOxqaGeiABiToo2J+st7Yce+aiAoo1H0xPi2keyQIP04n2JjDVuxBN6bSz9R6RdTK5hIppw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.48.0.tgz", + "integrity": "sha512-rFYrk4lLk9YUTIeihnQMiwMr6gDhGGSbWThPEDfBoU/HdAtOzPXeexKi7yU8jO+LWRKnmqPN9NviHQf6GDwBcQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.48.0.tgz", + "integrity": "sha512-sq0hHLTgdtwOPDB5SJOuaoHyiP1qSwg+71TQWk8iDS04bW1wIE0oQ6otPiRj2ZvLYNASLMaTp8QRGUVZ+5OL5A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.12.tgz", + "integrity": "sha512-3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.5.1", + "lightningcss": "1.30.1", + "magic-string": "^0.30.17", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.12" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.12.tgz", + "integrity": "sha512-gM5EoKHW/ukmlEtphNwaGx45fGoEmP10v51t9unv55voWh6WrOL19hfuIdo2FjxIaZzw776/BUQg7Pck++cIVw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.4.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.12", + "@tailwindcss/oxide-darwin-arm64": "4.1.12", + "@tailwindcss/oxide-darwin-x64": "4.1.12", + "@tailwindcss/oxide-freebsd-x64": "4.1.12", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.12", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.12", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.12", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.12", + "@tailwindcss/oxide-linux-x64-musl": "4.1.12", + "@tailwindcss/oxide-wasm32-wasi": "4.1.12", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.12", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.12" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.12.tgz", + "integrity": "sha512-oNY5pq+1gc4T6QVTsZKwZaGpBb2N1H1fsc1GD4o7yinFySqIuRZ2E4NvGasWc6PhYJwGK2+5YT1f9Tp80zUQZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.12.tgz", + "integrity": "sha512-cq1qmq2HEtDV9HvZlTtrj671mCdGB93bVY6J29mwCyaMYCP/JaUBXxrQQQm7Qn33AXXASPUb2HFZlWiiHWFytw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.12.tgz", + "integrity": "sha512-6UCsIeFUcBfpangqlXay9Ffty9XhFH1QuUFn0WV83W8lGdX8cD5/+2ONLluALJD5+yJ7k8mVtwy3zMZmzEfbLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.12.tgz", + "integrity": "sha512-JOH/f7j6+nYXIrHobRYCtoArJdMJh5zy5lr0FV0Qu47MID/vqJAY3r/OElPzx1C/wdT1uS7cPq+xdYYelny1ww==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.12.tgz", + "integrity": "sha512-v4Ghvi9AU1SYgGr3/j38PD8PEe6bRfTnNSUE3YCMIRrrNigCFtHZ2TCm8142X8fcSqHBZBceDx+JlFJEfNg5zQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.12.tgz", + "integrity": "sha512-YP5s1LmetL9UsvVAKusHSyPlzSRqYyRB0f+Kl/xcYQSPLEw/BvGfxzbH+ihUciePDjiXwHh+p+qbSP3SlJw+6g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.12.tgz", + "integrity": "sha512-V8pAM3s8gsrXcCv6kCHSuwyb/gPsd863iT+v1PGXC4fSL/OJqsKhfK//v8P+w9ThKIoqNbEnsZqNy+WDnwQqCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.12.tgz", + "integrity": "sha512-xYfqYLjvm2UQ3TZggTGrwxjYaLB62b1Wiysw/YE3Yqbh86sOMoTn0feF98PonP7LtjsWOWcXEbGqDL7zv0uW8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.12.tgz", + "integrity": "sha512-ha0pHPamN+fWZY7GCzz5rKunlv9L5R8kdh+YNvP5awe3LtuXb5nRi/H27GeL2U+TdhDOptU7T6Is7mdwh5Ar3A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.12.tgz", + "integrity": "sha512-4tSyu3dW+ktzdEpuk6g49KdEangu3eCYoqPhWNsZgUhyegEda3M9rG0/j1GV/JjVVsj+lG7jWAyrTlLzd/WEBg==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.5", + "@emnapi/runtime": "^1.4.5", + "@emnapi/wasi-threads": "^1.0.4", + "@napi-rs/wasm-runtime": "^0.2.12", + "@tybys/wasm-util": "^0.10.0", + "tslib": "^2.8.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.12.tgz", + "integrity": "sha512-iGLyD/cVP724+FGtMWslhcFyg4xyYyM+5F4hGvKA7eifPkXHRAUDFaimu53fpNg9X8dfP75pXx/zFt/jlNF+lg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.12.tgz", + "integrity": "sha512-NKIh5rzw6CpEodv/++r0hGLlfgT/gFN+5WNdZtvh6wpU2BpGNgdjvj6H2oFc8nCM839QM1YOhjpgbAONUb4IxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.12.tgz", + "integrity": "sha512-4pt0AMFDx7gzIrAOIYgYP0KCBuKWqyW8ayrdiLEjoJTT4pKTjrzG/e4uzWtTLDziC+66R9wbUqZBccJalSE5vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.12", + "@tailwindcss/oxide": "4.1.12", + "tailwindcss": "4.1.12" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@tanstack/react-table": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.21.3.tgz", + "integrity": "sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==", + "license": "MIT", + "dependencies": { + "@tanstack/table-core": "8.21.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@tanstack/table-core": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.21.3.tgz", + "integrity": "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.18.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.0.tgz", + "integrity": "sha512-m5ObIqwsUp6BZzyiy4RdZpzWGub9bqLJMvZDD0QMXhxjqMHMENlj+SqF5QxoUwaQNFe+8kz8XM8ZQhqkQPTgMQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz", + "integrity": "sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/browserslist": { + "version": "4.25.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.3.tgz", + "integrity": "sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001735", + "electron-to-chromium": "^1.5.204", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001737", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001737.tgz", + "integrity": "sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "2.0.0" + }, + "funding": { + "url": "https://joebell.co.uk" + } + }, + "node_modules/class-variance-authority/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.208", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.208.tgz", + "integrity": "sha512-ozZyibehoe7tOhNaf16lKmljVf+3npZcJIEbJRVftVsmAg5TeA1mGS9dVCZzOwr2xT7xK15V0p7+GZqSPgkuPg==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jiti": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", + "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lucide-react": { + "version": "0.541.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.541.0.tgz", + "integrity": "sha512-s0Vircsu5WaGv2KoJZ5+SoxiAJ3UXV5KqEM3eIFDHaHkcLIFdIWgXtZ412+Gh02UsdS7Was+jvEpBvPCWQISlg==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.18", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.18.tgz", + "integrity": "sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.4.45", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz", + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz", + "integrity": "sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.19.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz", + "integrity": "sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==", + "license": "MIT", + "dependencies": { + "@remix-run/router": "1.19.2", + "react-router": "6.26.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/rollup": { + "version": "4.48.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.48.0.tgz", + "integrity": "sha512-BXHRqK1vyt9XVSEHZ9y7xdYtuYbwVod2mLwOMFP7t/Eqoc1pHRlG/WdV2qNeNvZHRQdLedaFycljaYYM96RqJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.48.0", + "@rollup/rollup-android-arm64": "4.48.0", + "@rollup/rollup-darwin-arm64": "4.48.0", + "@rollup/rollup-darwin-x64": "4.48.0", + "@rollup/rollup-freebsd-arm64": "4.48.0", + "@rollup/rollup-freebsd-x64": "4.48.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.48.0", + "@rollup/rollup-linux-arm-musleabihf": "4.48.0", + "@rollup/rollup-linux-arm64-gnu": "4.48.0", + "@rollup/rollup-linux-arm64-musl": "4.48.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.48.0", + "@rollup/rollup-linux-ppc64-gnu": "4.48.0", + "@rollup/rollup-linux-riscv64-gnu": "4.48.0", + "@rollup/rollup-linux-riscv64-musl": "4.48.0", + "@rollup/rollup-linux-s390x-gnu": "4.48.0", + "@rollup/rollup-linux-x64-gnu": "4.48.0", + "@rollup/rollup-linux-x64-musl": "4.48.0", + "@rollup/rollup-win32-arm64-msvc": "4.48.0", + "@rollup/rollup-win32-ia32-msvc": "4.48.0", + "@rollup/rollup-win32-x64-msvc": "4.48.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwind-merge": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.2.tgz", + "integrity": "sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.12.tgz", + "integrity": "sha512-DzFtxOi+7NsFf7DBtI3BJsynR+0Yp6etH+nRPTbpWnS2pZBaSksv/JGctNwSWzbFjp0vxSqknaUylseZqMDGrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.3.tgz", + "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tw-animate-css": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.3.7.tgz", + "integrity": "sha512-lvLb3hTIpB5oGsk8JmLoAjeCHV58nKa2zHYn8yWOoG5JJusH3bhJlF2DLAZ/5NmJ+jyH3ssiAx/2KmbhavJy/A==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, + "node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/vite": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", + "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.41", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..66c0b14 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,34 @@ +{ + "name": "xsd-registry-ui", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview --port 4173" + }, + "dependencies": { + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.16", + "@tanstack/react-table": "^8.21.3", + "axios": "1.7.7", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "lucide-react": "^0.541.0", + "react": "18.3.1", + "react-dom": "18.3.1", + "react-router-dom": "6.26.2", + "tailwind-merge": "^2.5.2", + "tw-animate-css": "^1.3.7" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.1.0", + "@types/react": "18.3.5", + "@types/react-dom": "18.3.0", + "@vitejs/plugin-react": "^4.7.0", + "tailwindcss": "^4.1.0", + "typescript": "5.5.4", + "vite": "5.4.2" + } +} diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx new file mode 100644 index 0000000..e62dd7a --- /dev/null +++ b/frontend/src/App.tsx @@ -0,0 +1,20 @@ +import { Outlet, Link, NavLink } from 'react-router-dom' + +export default function App() { + return ( +
+
+
+ XSD Registry + +
+
+
+ +
+
+ ) +} diff --git a/frontend/src/components/ui/button.tsx b/frontend/src/components/ui/button.tsx new file mode 100644 index 0000000..d099b5f --- /dev/null +++ b/frontend/src/components/ui/button.tsx @@ -0,0 +1,33 @@ +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; +import { cn } from "@/lib/utils"; + +const buttonVariants = cva( + "inline-flex items-center justify-center text-sm font-medium transition-colors rounded-[var(--radius)] focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none", + { + variants: { + variant: { + default: "bg-[var(--primary)] text-[var(--primary-foreground)] hover:opacity-90", + outline: "border px-4 py-2 hover:bg-[var(--muted)]", + ghost: "px-3 py-2 hover:bg-[var(--muted)]", + }, + size: { + sm: "h-8 px-3", + md: "h-9 px-4", + lg: "h-10 px-6", + }, + }, + defaultVariants: { variant: "default", size: "md" }, + } +); + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps {} + +export const Button = React.forwardRef( + ({ className, variant, size, ...props }, ref) => ( + + + + {leaf.filter(c => c.getCanHide()).map((c) => ( + e.preventDefault()}> + + + ))} + + + + +
+
+ {/* width суммируется из размеров колонок; есть fallback min-w */} + + + {table.getHeaderGroups().map((hg) => ( + + {hg.headers.map((h) => ( + + {h.isPlaceholder ? null : flexRender(h.column.columnDef.header, h.getContext())} + + ))} + + ))} + + + {table.getRowModel().rows.length ? ( + table.getRowModel().rows.map((r) => ( + + {r.getVisibleCells().map((cell) => ( + + {flexRender(cell.column.columnDef.cell, cell.getContext())} + + ))} + + )) + ) : ( + + + Нет данных + + + )} + +
+
+
+ {/* Pagination bar */} +
+
+ Показывать по: + +
+
+ + + + стр. {table.getState().pagination.pageIndex + 1} из {table.getPageCount()} + + + +
+
+ + ); +} diff --git a/frontend/src/components/ui/dialog.tsx b/frontend/src/components/ui/dialog.tsx new file mode 100644 index 0000000..9d0923b --- /dev/null +++ b/frontend/src/components/ui/dialog.tsx @@ -0,0 +1,74 @@ +"use client"; + +import * as React from "react"; +import * as DialogPrimitive from "@radix-ui/react-dialog"; +import { cn } from "@/lib/utils"; + +export const Dialog = DialogPrimitive.Root; +export const DialogTrigger = DialogPrimitive.Trigger; +export const DialogClose = DialogPrimitive.Close; + +export function DialogPortal(props: DialogPrimitive.DialogPortalProps) { + return ; +} + +export const DialogOverlay = React.forwardRef< + HTMLDivElement, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogOverlay.displayName = "DialogOverlay"; + +export const DialogContent = React.forwardRef< + HTMLDivElement, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {/* Кнопка-крестик (закрыть диалог) */} + + × + + {children} + + +)); +DialogContent.displayName = "DialogContent"; + +export function DialogHeader(props: React.HTMLAttributes) { + return
; +} +export function DialogTitle(props: React.HTMLAttributes) { + return

; +} +export function DialogDescription(props: React.HTMLAttributes) { + return

; +} +export function DialogBody(props: React.HTMLAttributes) { + // внутренняя прокрутка только у тела + return

; +} +export function DialogFooter(props: React.HTMLAttributes) { + return
; +} diff --git a/frontend/src/components/ui/dropdown-menu.tsx b/frontend/src/components/ui/dropdown-menu.tsx new file mode 100644 index 0000000..e7ff0ab --- /dev/null +++ b/frontend/src/components/ui/dropdown-menu.tsx @@ -0,0 +1,57 @@ +"use client"; + +import * as React from "react"; +import * as R from "@radix-ui/react-dropdown-menu"; +import { cn } from "@/lib/utils"; + +export const DropdownMenu = R.Root; +export const DropdownMenuTrigger = R.Trigger; + +export const DropdownMenuContent = React.forwardRef< + HTMLDivElement, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + + + +)); +DropdownMenuContent.displayName = "DropdownMenuContent"; + +export const DropdownMenuLabel = React.forwardRef< + HTMLDivElement, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DropdownMenuLabel.displayName = "DropdownMenuLabel"; + +export const DropdownMenuSeparator = React.forwardRef< + HTMLDivElement, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DropdownMenuSeparator.displayName = "DropdownMenuSeparator"; + +export const DropdownMenuItem = React.forwardRef< + HTMLDivElement, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DropdownMenuItem.displayName = "DropdownMenuItem"; diff --git a/frontend/src/components/ui/input.tsx b/frontend/src/components/ui/input.tsx new file mode 100644 index 0000000..fb86e11 --- /dev/null +++ b/frontend/src/components/ui/input.tsx @@ -0,0 +1,19 @@ +import * as React from "react"; +import { cn } from "@/lib/utils"; + +export interface InputProps extends React.InputHTMLAttributes {} + +export const Input = React.forwardRef(({ className, ...props }, ref) => { + return ( + + ); +}); +Input.displayName = "Input"; diff --git a/frontend/src/components/ui/label.tsx b/frontend/src/components/ui/label.tsx new file mode 100644 index 0000000..d6afe71 --- /dev/null +++ b/frontend/src/components/ui/label.tsx @@ -0,0 +1,8 @@ +import * as React from "react"; +import { cn } from "@/lib/utils"; + +export interface LabelProps extends React.LabelHTMLAttributes {} + +export function Label({ className, ...props }: LabelProps) { + return