diff --git a/.gitea/workflows/release-image.yml b/.gitea/workflows/release-image.yml index 29ee8a8..cc6c980 100644 --- a/.gitea/workflows/release-image.yml +++ b/.gitea/workflows/release-image.yml @@ -3,7 +3,7 @@ name: Release 镜像 on: push: branches: [main] - tags: ["v*"] + tags: ["v*", "26.*", "27.*"] workflow_dispatch: env: @@ -57,20 +57,21 @@ jobs: - name: 安装 Docker CLI(挂宿主 daemon) run: apk add --no-cache docker-cli buildx >/dev/null - - name: 计算 tag 与平台 + - name: 计算 tag(以 APP_VERSION 为唯一版本源) id: meta env: REF: ${{ gitea.ref }} run: | - case "$REF" in - refs/tags/v*) - VER="${REF#refs/tags/v}" - echo "tags=${IMAGE}:${VER} ${IMAGE}:latest" >> "$GITHUB_OUTPUT" - echo "发布 tag: ${VER} + latest" ;; - *) - echo "tags=${IMAGE}:latest" >> "$GITHUB_OUTPUT" - echo "main 构建: latest" ;; - esac + VER=$(sed -n 's/.*APP_VERSION = "\(.*\)".*/\1/p' server/cmd/server/main.go | head -1) + [ -n "$VER" ] || { echo "无法从 main.go 解析 APP_VERSION" >&2; exit 1; } + echo "APP_VERSION=$VER" + if [[ "$REF" == refs/tags/* ]]; then + # tag 触发:要求 tag 名与 APP_VERSION 一致,防错版发布 + TAG_VER="${REF#refs/tags/}" + TAG_VER="${TAG_VER#v}" + [ "$TAG_VER" = "$VER" ] || { echo "tag($TAG_VER) != APP_VERSION($VER),拒绝发布" >&2; exit 1; } + fi + echo "tags=${IMAGE}:${VER} ${IMAGE}:latest" >> "$GITHUB_OUTPUT" - name: 登录阿里云 ACR env: @@ -99,4 +100,8 @@ jobs: . - name: 校验远程 manifest(双架构) - run: docker buildx imagetools inspect "${IMAGE}:latest" | grep -E "linux/amd64|linux/arm64" + env: + VERSION: ${{ steps.meta.outputs.version }} + run: | + docker buildx imagetools inspect "${IMAGE}:${VERSION}" | grep -E "linux/amd64|linux/arm64" + echo "推送完成: ${IMAGE}:${VERSION} + ${IMAGE}:latest" diff --git a/README.md b/README.md index 15d1ad8..f0282c2 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ 文件快传 -数据库**默认 SQLite 零依赖**(modernc.org/sqlite 纯 Go 驱动,数据文件 `./data/filecodebox.db`), +数据库**默认 SQLite 零依赖**(modernc.org/sqlite 纯 Go 驱动,数据文件 `./data/fileshare.db`), 可选切换 Postgres(`FCB_DB_DRIVER=postgres` + DSN);Redis 为**可选**增强(未配置时自动降级为进程内存缓存)。 存储引擎支持 **本地 / S3 / WebDAV**(运行时热切换,健康检查通过才生效;WebDAV 重点优化:流式、Range、重试、连接复用)。 @@ -37,7 +37,7 @@ docker compose up -d --build ``` - **数据库双路径**:默认 SQLite 零依赖——`docker compose up -d --build` 即可(无需 postgres profile, - 数据落 `serverdata` 卷 `/app/data/filecodebox.db`);Postgres 模式——`.env` 设 + 数据落 `serverdata` 卷 `/app/data/fileshare.db`);Postgres 模式——`.env` 设 `FCB_DB_DRIVER=postgres` 与 `FCB_DB_DSN` 后 `docker compose --profile postgres up -d --build`。 - Redis 可选:`--profile redis` 并在 `.env` 设 `FCB_REDIS_ADDR=redis:6379`;未配置时自动降级为内存缓存。 - 存储引擎切换:`.env` 改 `FCB_STORAGE_ENGINE=s3|webdav` 并带对应 profile 启动: @@ -51,7 +51,7 @@ docker compose up -d --build ```bash # 1) 后端(:8466)——默认 SQLite 零依赖,无需任何数据库 cd server -go run ./cmd/server # 数据落 ./data/filecodebox.db;go test ./... 运行单测 +go run ./cmd/server # 数据落 ./data/fileshare.db;go test ./... 运行单测 # 2) 后端 Postgres 模式(可选) docker run -d --name fcb-pg -p 5432:5432 \ @@ -89,7 +89,7 @@ npm run build # 产出 web/dist/,构建时按 deploy/Dockerfil | 变量 | 必需 | 默认 | 说明 | |---|---|---|---| | `FCB_DB_DRIVER` | ❌ | `sqlite` | 数据库驱动:`sqlite` \| `postgres`(v2 需求 ⑧) | -| `FCB_DB_DSN` | 视驱动 | - | postgres:连接串(**必需**);sqlite:文件路径(可空,默认 `./data/filecodebox.db`) | +| `FCB_DB_DSN` | 视驱动 | - | postgres:连接串(**必需**);sqlite:文件路径(可空,默认 `./data/fileshare.db`) | | `FCB_REDIS_ADDR` | ❌ | 空 | 为空时缓存降级为内存实现;支持 `redis://[:password@]host:port[/db]` / `rediss://` URL 形式 | | `FCB_REDIS_DB` | ❌ | `0` | Redis 逻辑库号 0-15(URL 显式 `/N` 时以 URL 为准) | | `FCB_LISTEN` | ❌ | `:8466` | 监听地址 | diff --git a/deploy/.env.example b/deploy/.env.example index e8f14ce..c96727a 100644 --- a/deploy/.env.example +++ b/deploy/.env.example @@ -5,17 +5,17 @@ WEB_PORT=8466 # ---- 数据库(需求 ⑧)---- -# 默认 SQLite:零依赖,无需任何下方 Postgres 变量(数据落 serverdata 卷 /app/data/filecodebox.db) +# 默认 SQLite:零依赖,无需任何下方 Postgres 变量(数据落 serverdata 卷 /app/data/fileshare.db) FCB_DB_DRIVER=sqlite FCB_DB_DSN= # Postgres 模式(可选):先 `docker compose --profile postgres up -d --build`,再改为: # FCB_DB_DRIVER=postgres -# FCB_DB_DSN=postgres://filecodebox:filecodebox@postgres:5432/filecodebox?sslmode=disable +# FCB_DB_DSN=postgres://fileshare:fileshare@postgres:5432/fileshare?sslmode=disable # ---- Postgres(仅 --profile postgres 时使用;生产务必修改默认口令并启用 TLS)---- -POSTGRES_USER=filecodebox -POSTGRES_PASSWORD=filecodebox -POSTGRES_DB=filecodebox +POSTGRES_USER=fileshare +POSTGRES_PASSWORD=fileshare +POSTGRES_DB=fileshare # ---- 存储引擎切换:local | s3 | webdav ---- FCB_STORAGE_ENGINE=local @@ -47,7 +47,7 @@ FCB_TRUSTED_PROXIES= # 注意:minioadmin/minioadmin 仅为本机冒烟默认值,对外部署必须修改 # (并在 compose 中删除 minio 的 ports 发布或仅绑定 127.0.0.1) FCB_S3_ENDPOINT_URL=http://minio:9000 -FCB_S3_BUCKET_NAME=filecodebox +FCB_S3_BUCKET_NAME=fileshare FCB_S3_ACCESS_KEY_ID=minioadmin FCB_S3_SECRET_ACCESS_KEY=minioadmin FCB_S3_REGION_NAME=us-east-1 diff --git a/deploy/README.md b/deploy/README.md index 1384493..60a6d84 100644 --- a/deploy/README.md +++ b/deploy/README.md @@ -30,7 +30,7 @@ docker compose up -d --build # 打开 http://localhost:8466(.env 可用 WEB_PORT 改端口)→ 自动跳转 /setup 完成初始化 ``` -- 数据落 **`serverdata` 卷**:容器内 `/app/data/filecodebox.db`(WAL 模式,父目录自动创建)。 +- 数据落 **`serverdata` 卷**:容器内 `/app/data/fileshare.db`(WAL 模式,父目录自动创建)。 - `.env` 中 Postgres 段变量(`POSTGRES_USER/PASSWORD/DB`)在此模式下不生效,无需修改。 ### 路径 ②:Postgres 模式(可选) @@ -39,7 +39,7 @@ docker compose up -d --build ```dotenv FCB_DB_DRIVER=postgres - FCB_DB_DSN=postgres://filecodebox:filecodebox@postgres:5432/filecodebox?sslmode=disable + FCB_DB_DSN=postgres://fileshare:fileshare@postgres:5432/fileshare?sslmode=disable ``` 2. 带 postgres profile 启动(server 会等 postgres 健康检查通过后再启动): @@ -65,7 +65,7 @@ docker compose up -d --build ```bash # S3 引擎(MinIO 冒烟) docker compose --profile minio up -d --build # .env: FCB_STORAGE_ENGINE=s3 -# minio-init 一次性任务自动建桶(mc mb filecodebox) +# minio-init 一次性任务自动建桶(mc mb fileshare) # WebDAV 引擎(dufs 冒烟,Basic 认证 admin/admin123@/:rw) docker compose --profile webdav up -d --build # .env: FCB_STORAGE_ENGINE=webdav @@ -125,7 +125,7 @@ curl -I http://localhost:8466/docs # 200(SPA 回退) 或在 `.env` 设 `FCB_ADMIN_PASSWORD`(≥8 位)让服务启动即自动初始化, 消除「公网上被抢先访问 /setup 接管」的窗口。初始化完成后建议从 `.env` 移除该变量。 3. **修改组件默认凭据**:minio(`minioadmin/minioadmin`)、webdav(`admin/admin123`)、 - Postgres(`filecodebox/filecodebox`)默认凭据仅限本机冒烟;对外部署必须修改, + Postgres(`fileshare/fileshare`)默认凭据仅限本机冒烟;对外部署必须修改, 且不建议把 9000/9001/5005 端口发布到公网(compose 中删除对应 `ports` 或仅绑 127.0.0.1)。 4. **Postgres 建议启用 TLS**:默认示例 DSN 为 `sslmode=disable`,生产请改为 `sslmode=require` 及以上。 diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index de88b3f..cce37fe 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -5,10 +5,10 @@ # docker compose --profile minio up -d # 可选:S3 引擎冒烟(FCB_STORAGE_ENGINE=s3) # docker compose --profile webdav up -d # 可选:WebDAV 引擎冒烟(FCB_STORAGE_ENGINE=webdav) # -# 数据库默认 SQLite(modernc.org/sqlite 纯 Go 驱动,数据落 serverdata 卷 /app/data/filecodebox.db); +# 数据库默认 SQLite(modernc.org/sqlite 纯 Go 驱动,数据落 serverdata 卷 /app/data/fileshare.db); # postgres 为可选 profile 服务,启用时 server 经 FCB_DB_DRIVER/FCB_DB_DSN 自动接入; # Redis 同为可选,未配置时服务端内存降级。 -name: filecodebox +name: fileshare services: postgres: @@ -18,13 +18,13 @@ services: # 需要时 docker compose --profile postgres up -d --build profiles: ["postgres"] environment: - POSTGRES_USER: ${POSTGRES_USER:-filecodebox} - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-filecodebox} - POSTGRES_DB: ${POSTGRES_DB:-filecodebox} + POSTGRES_USER: ${POSTGRES_USER:-fileshare} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-fileshare} + POSTGRES_DB: ${POSTGRES_DB:-fileshare} volumes: - pgdata:/var/lib/postgresql/data healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-filecodebox}"] + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-fileshare}"] interval: 5s timeout: 3s retries: 20 @@ -52,7 +52,7 @@ services: start_period: 5s environment: # 需求 ⑧:数据库驱动 sqlite(默认,零依赖)| postgres(需 --profile postgres) - # 默认 SQLite:DSN 留空 → 数据库文件落 /app/data/filecodebox.db(serverdata 卷) + # 默认 SQLite:DSN 留空 → 数据库文件落 /app/data/fileshare.db(serverdata 卷) # postgres 模式:在 .env 设 FCB_DB_DRIVER=postgres 与 FCB_DB_DSN(模板见 deploy/.env.example) FCB_DB_DRIVER: ${FCB_DB_DRIVER:-sqlite} FCB_DB_DSN: ${FCB_DB_DSN:-} @@ -67,7 +67,7 @@ services: FCB_LOCAL_STORAGE_PATH: /app/data # S3 引擎(MinIO profile) FCB_S3_ENDPOINT_URL: ${FCB_S3_ENDPOINT_URL:-} - FCB_S3_BUCKET_NAME: ${FCB_S3_BUCKET_NAME:-filecodebox} + FCB_S3_BUCKET_NAME: ${FCB_S3_BUCKET_NAME:-fileshare} FCB_S3_ACCESS_KEY_ID: ${FCB_S3_ACCESS_KEY_ID:-minioadmin} FCB_S3_SECRET_ACCESS_KEY: ${FCB_S3_SECRET_ACCESS_KEY:-minioadmin} FCB_S3_REGION_NAME: ${FCB_S3_REGION_NAME:-us-east-1} @@ -122,7 +122,7 @@ services: entrypoint: > /bin/sh -c " mc alias set local http://minio:9000 ${FCB_S3_ACCESS_KEY_ID:-minioadmin} ${FCB_S3_SECRET_ACCESS_KEY:-minioadmin} && - mc mb --ignore-existing local/${FCB_S3_BUCKET_NAME:-filecodebox} && + mc mb --ignore-existing local/${FCB_S3_BUCKET_NAME:-fileshare} && echo 'MinIO 桶已就绪'" # WebDAV 冒烟服务器(dufs,简单读写 + Basic 认证) diff --git a/docs/api/00-overview.md b/docs/api/00-overview.md index de7d1be..ac8f325 100644 --- a/docs/api/00-overview.md +++ b/docs/api/00-overview.md @@ -1,6 +1,6 @@ # API 概述 -文件快传 Go 版(v2.5.6)对外提供一套 REST API,覆盖文本/文件分享、分片上传、 +文件快传 Go 版(26.9)对外提供一套 REST API,覆盖文本/文件分享、分片上传、 预签名直传、管理后台与审计日志查询。本文档与 `server/internal/api/` 实际实现逐一对齐, 交互式规范见站内 `/openapi`(源文件 `docs/openapi.yaml`)。 diff --git a/docs/api/01-auth.md b/docs/api/01-auth.md index b0be0ba..c0c1295 100644 --- a/docs/api/01-auth.md +++ b/docs/api/01-auth.md @@ -9,7 +9,7 @@ ## 管理员令牌 -- 由 `POST /admin/login` 用管理员密码换取,HS256 JWT,默认有效期 **7 天**(`adminSessionExpire`,1~365 整天,v2.5.6 起由 30 天缩短)。 +- 由 `POST /admin/login` 用管理员密码换取,HS256 JWT,默认有效期 **7 天**(`adminSessionExpire`,1~365 整天,26.9 起由 30 天缩短)。 - 请求头格式:`Authorization: Bearer `。 - **改密/重置管理员密码会轮换 `jwt_secret`,所有已签发令牌立即失效**(401)。 - 密码存储为 bcrypt(cost 12);历史 `sha256$`/明文格式在登录成功后自动升级重哈希,无需手动迁移。 diff --git a/docs/api/06-presign.md b/docs/api/06-presign.md index 5ab6eab..e89d0cf 100644 --- a/docs/api/06-presign.md +++ b/docs/api/06-presign.md @@ -52,7 +52,7 @@ curl -s -X POST http://localhost:8466/presign/upload/init \ "code": 200, "msg": "ok", "data": { "upload_id": "6a1e…", - "upload_url": "https://minio:9000/filecodebox/share/data/2025/06/01/6a1e…/backup.zip?X-Amz-…", + "upload_url": "https://minio:9000/fileshare/share/data/2025/06/01/6a1e…/backup.zip?X-Amz-…", "mode": "direct", "expires_in": 900, "file_path": "share/data/2025/06/01/6a1e…" diff --git a/docs/api/08-audit.md b/docs/api/08-audit.md index 5f8a600..1df5df7 100644 --- a/docs/api/08-audit.md +++ b/docs/api/08-audit.md @@ -13,7 +13,7 @@ | 客户端 | `ip` | 可信代理场景解析 XFF 后的真实 IP | | 终端信息 | `user_agent` | 原始 UA | | 设备解析 | `device_os` / `device_browser` / `device_type` | 由 UA 解析(如 Windows/Chrome/desktop) | -| 动作 | `action` | `upload`(上传类) / `download`(取件/下载类) / `admin`(管理端敏感操作,v2.5.6 新增) | +| 动作 | `action` | `upload`(上传类) / `download`(取件/下载类) / `admin`(管理端敏感操作,26.9 新增) | | 结果 | `result` | `success` / `denied`(拒绝:401/403/423/428)/ `failed`(失败:其余 4xx/5xx 或业务报错) | | 字节数 | `size_bytes` | 文件总大小;`transferred_bytes` 实际传输(**Range 下载只计实际区间字节**;下载由中间件自动统计,上传由各 handler 填充) | | 耗时 | `duration_ms` | 毫秒 | diff --git a/docs/api/10-config.md b/docs/api/10-config.md index 4806f9b..a4f8350 100644 --- a/docs/api/10-config.md +++ b/docs/api/10-config.md @@ -2,14 +2,14 @@ 配置分三层:**默认值 → `FCB_*` 环境变量 → 数据库 settings KV(管理端运行时修改)**。 v2 起进程必需的环境变量为空集:数据库默认 **SQLite**(modernc.org/sqlite 纯 Go 驱动,零外部依赖, -DSN 缺省落 `./data/filecodebox.db`);`FCB_DB_DRIVER=postgres` 时 `FCB_DB_DSN` 必需(需求 ⑧)。 +DSN 缺省落 `./data/fileshare.db`);`FCB_DB_DRIVER=postgres` 时 `FCB_DB_DSN` 必需(需求 ⑧)。 ## 环境变量(进程级) | 变量 | 必需 | 默认 | 说明 | |---|---|---|---| | `FCB_DB_DRIVER` | ❌ | `sqlite` | 数据库驱动:`sqlite` / `postgres`(需求 ⑧) | -| `FCB_DB_DSN` | 视驱动 | `./data/filecodebox.db` | postgres:连接串(**必需**,如 `postgres://user:pass@host:5432/filecodebox?sslmode=disable`);sqlite:数据库文件路径(可空,父目录自动创建) | +| `FCB_DB_DSN` | 视驱动 | `./data/fileshare.db` | postgres:连接串(**必需**,如 `postgres://user:pass@host:5432/filecodebox?sslmode=disable`);sqlite:数据库文件路径(可空,父目录自动创建) | | `FCB_REDIS_ADDR` | ❌ | 空 | Redis 地址(如 `redis:6379`),也支持 `redis://[:password@]host:port[/db]` / `rediss://`(TLS)URL 形式;**空则缓存降级为进程内存实现**(缓存故障时自动降级为进程内限流计数) | | `FCB_REDIS_DB` | ❌ | `0` | Redis 逻辑库号 0-15;URL 形式地址显式携带 `/N` 时以 URL 为准 | | `FCB_ADMIN_PASSWORD` | ❌ | 空 | 设置后服务首次启动即自动初始化管理员(≥8 位,不足告警跳过),消除 `/setup` 被抢占窗口;初始化完成后建议移除 | @@ -26,7 +26,7 @@ DSN 缺省落 `./data/filecodebox.db`);`FCB_DB_DRIVER=postgres` 时 `FCB_DB_ `FCB_WEBDAV_URL`、`FCB_WEBDAV_USERNAME`、`FCB_WEBDAV_PASSWORD`、`FCB_WEBDAV_ROOT_PATH`。 部署用编排变量(`deploy/.env.example`):`WEB_PORT`(默认 8466)、 -`POSTGRES_USER` / `POSTGRES_PASSWORD` / `POSTGRES_DB`(默认 filecodebox,仅 `--profile postgres` 时使用)。 +`POSTGRES_USER` / `POSTGRES_PASSWORD` / `POSTGRES_DB`(默认 fileshare,仅 `--profile postgres` 时使用)。 ## 配置项(settings KV,默认值对齐参考实现) @@ -161,7 +161,7 @@ DSN 缺省落 `./data/filecodebox.db`);`FCB_DB_DRIVER=postgres` 时 `FCB_DB_ "openUpload": true }, "meta": { - "version": "2.5.6", + "version": "26.9", "features": { "chunkUpload": false, "guestUpload": true } } } @@ -182,7 +182,7 @@ curl -s http://localhost:8466/api/v1/health "code": 200, "msg": "ok", "data": { "status": "ok", - "version": "2.5.6", + "version": "26.9", "storage": "local", "time": "2025-06-01T12:00:00+08:00" } diff --git a/server/README.md b/server/README.md index df0d775..4d0a825 100644 --- a/server/README.md +++ b/server/README.md @@ -27,7 +27,7 @@ server/ | 变量 | 必需 | 默认 | 说明 | |---|---|---|---| | `FCB_DB_DRIVER` | ❌ | `sqlite` | 数据库驱动:`sqlite` \| `postgres`(需求 ⑧) | -| `FCB_DB_DSN` | 视驱动 | `./data/filecodebox.db` | postgres:连接串(**必需**),如 `postgres://user:pass@host:5432/filecodebox?sslmode=disable`;sqlite:数据库文件路径(可空,自动创建 `data/` 目录) | +| `FCB_DB_DSN` | 视驱动 | `./data/fileshare.db` | postgres:连接串(**必需**),如 `postgres://user:pass@host:5432/fileshare?sslmode=disable`;sqlite:数据库文件路径(可空,自动创建 `data/` 目录) | | `FCB_REDIS_ADDR` | ❌ | 空 | 为空时缓存降级为内存实现 | | `FCB_LISTEN` | ❌ | `:8466` | 监听地址 | | `FCB_STORAGE_ENGINE` | ❌ | `local` | `local` \| `s3` \| `webdav` | @@ -36,7 +36,7 @@ server/ ### 数据库模式(需求 ⑧) - **SQLite(默认)**:`FCB_DB_DRIVER=sqlite`(或缺省)。零 DSN 零依赖启动,数据库文件 - 默认 `./data/filecodebox.db`(`FCB_DB_DSN` 可覆盖路径;父目录自动创建)。 + 默认 `./data/fileshare.db`(`FCB_DB_DSN` 可覆盖路径;父目录自动创建)。 连接参数:`busy_timeout=10s` + `WAL` 日志模式 + `foreign_keys=1`(通过 DSN pragma 注入)。 - **Postgres(可选)**:`FCB_DB_DRIVER=postgres` 且必须提供 `FCB_DB_DSN`,否则启动报错。 连接池沿用 v1 参数(32/8、1h 轮换)。 @@ -144,13 +144,13 @@ middleware.AuditRecordRequest(c, auditSvc, model.AuditResultSuccess, "") ## 本地开发 ```bash -# 默认 SQLite 模式:零依赖,数据库落 ./data/filecodebox.db +# 默认 SQLite 模式:零依赖,数据库落 ./data/fileshare.db go run ./cmd/server # 启动于 :8466 curl localhost:8466/api/v1/health # Postgres 模式(可选) export FCB_DB_DRIVER=postgres -export FCB_DB_DSN='postgres://postgres:postgres@localhost:5432/filecodebox?sslmode=disable' +export FCB_DB_DSN='postgres://postgres:postgres@localhost:5432/fileshare?sslmode=disable' go run ./cmd/server # 双方言单测:sqlite 始终执行;postgres 需真实实例(FCB_TEST_PG_DSN 指向测试库) diff --git a/server/cmd/server/main.go b/server/cmd/server/main.go index 57f2a3f..79b81ab 100644 --- a/server/cmd/server/main.go +++ b/server/cmd/server/main.go @@ -15,19 +15,19 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/api" - "filecodebox/internal/audit" - "filecodebox/internal/cache" - "filecodebox/internal/config" - "filecodebox/internal/database" - "filecodebox/internal/janitor" - "filecodebox/internal/middleware" - "filecodebox/internal/settings" - "filecodebox/internal/storage" + "fileshare/internal/api" + "fileshare/internal/audit" + "fileshare/internal/cache" + "fileshare/internal/config" + "fileshare/internal/database" + "fileshare/internal/janitor" + "fileshare/internal/middleware" + "fileshare/internal/settings" + "fileshare/internal/storage" ) // APP_VERSION 版本号,对齐参考仓库 VERSION。 -const APP_VERSION = "2.5.6" +const APP_VERSION = "26.9" func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) diff --git a/server/go.mod b/server/go.mod index f82463f..1b6ef6a 100644 --- a/server/go.mod +++ b/server/go.mod @@ -1,4 +1,4 @@ -module filecodebox +module fileshare go 1.27.1 diff --git a/server/internal/api/admin.go b/server/internal/api/admin.go index c428ae2..7ca5d78 100644 --- a/server/internal/api/admin.go +++ b/server/internal/api/admin.go @@ -12,12 +12,12 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "filecodebox/internal/config" - "filecodebox/internal/middleware" - "filecodebox/internal/model" - "filecodebox/internal/response" - "filecodebox/internal/settings" - "filecodebox/internal/storage" + "fileshare/internal/config" + "fileshare/internal/middleware" + "fileshare/internal/model" + "fileshare/internal/response" + "fileshare/internal/settings" + "fileshare/internal/storage" ) // minutesDuration 分钟数转 Duration(0 回退 1 分钟,对齐 main.go 语义)。 diff --git a/server/internal/api/chunk.go b/server/internal/api/chunk.go index 806a9a9..bb98934 100644 --- a/server/internal/api/chunk.go +++ b/server/internal/api/chunk.go @@ -16,10 +16,10 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "filecodebox/internal/middleware" - "filecodebox/internal/model" - "filecodebox/internal/response" - "filecodebox/internal/storage" + "fileshare/internal/middleware" + "fileshare/internal/model" + "fileshare/internal/response" + "fileshare/internal/storage" ) // chunkExpireTTL 分片会话保留时长(M5:预留窗口由 24h 缩短为 2h; diff --git a/server/internal/api/helpers.go b/server/internal/api/helpers.go index 350e535..af6018e 100644 --- a/server/internal/api/helpers.go +++ b/server/internal/api/helpers.go @@ -30,12 +30,12 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "filecodebox/internal/audit" - "filecodebox/internal/config" - "filecodebox/internal/middleware" - "filecodebox/internal/model" - "filecodebox/internal/response" - "filecodebox/internal/storage" + "fileshare/internal/audit" + "fileshare/internal/config" + "fileshare/internal/middleware" + "fileshare/internal/model" + "fileshare/internal/response" + "fileshare/internal/storage" ) // apiError 统一的业务错误:handler 返回该错误并由 respondError 映射 HTTP 状态。 diff --git a/server/internal/api/helpers_test.go b/server/internal/api/helpers_test.go index dd835c3..07d586d 100644 --- a/server/internal/api/helpers_test.go +++ b/server/internal/api/helpers_test.go @@ -6,8 +6,8 @@ import ( "testing" "time" - "filecodebox/internal/config" - "filecodebox/internal/storage" + "fileshare/internal/config" + "fileshare/internal/storage" ) // newTestConfig 构造测试配置(defaults 基线,无 KV 覆盖;需求 ⑧ 默认 sqlite,无需真实数据库)。 diff --git a/server/internal/api/policy_test.go b/server/internal/api/policy_test.go index 332ebbe..129e84a 100644 --- a/server/internal/api/policy_test.go +++ b/server/internal/api/policy_test.go @@ -15,13 +15,13 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/audit" - "filecodebox/internal/cache" - "filecodebox/internal/config" - "filecodebox/internal/database" - "filecodebox/internal/middleware" - "filecodebox/internal/settings" - "filecodebox/internal/storage" + "fileshare/internal/audit" + "fileshare/internal/cache" + "fileshare/internal/config" + "fileshare/internal/database" + "fileshare/internal/middleware" + "fileshare/internal/settings" + "fileshare/internal/storage" ) // ============ 测试环境装配(真实 sqlite + 内存缓存 + 本地存储)============ diff --git a/server/internal/api/presign.go b/server/internal/api/presign.go index a9fb4a2..4e30e01 100644 --- a/server/internal/api/presign.go +++ b/server/internal/api/presign.go @@ -9,10 +9,10 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "filecodebox/internal/middleware" - "filecodebox/internal/model" - "filecodebox/internal/response" - "filecodebox/internal/storage" + "fileshare/internal/middleware" + "fileshare/internal/model" + "fileshare/internal/response" + "fileshare/internal/storage" ) // presignSessionExpires 预签名会话有效期(对齐参考 PRESIGN_SESSION_EXPIRES=900 秒)。 diff --git a/server/internal/api/router.go b/server/internal/api/router.go index a03916c..45bb573 100644 --- a/server/internal/api/router.go +++ b/server/internal/api/router.go @@ -6,12 +6,12 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "filecodebox/internal/audit" - "filecodebox/internal/config" - "filecodebox/internal/middleware" - "filecodebox/internal/response" - "filecodebox/internal/settings" - "filecodebox/internal/storage" + "fileshare/internal/audit" + "fileshare/internal/config" + "fileshare/internal/middleware" + "fileshare/internal/response" + "fileshare/internal/settings" + "fileshare/internal/storage" ) // Deps API 层共享依赖(main.go 装配后注入)。 diff --git a/server/internal/api/security_fixes_test.go b/server/internal/api/security_fixes_test.go index 6b25f6a..78d8ded 100644 --- a/server/internal/api/security_fixes_test.go +++ b/server/internal/api/security_fixes_test.go @@ -15,8 +15,8 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/model" - "filecodebox/internal/settings" + "fileshare/internal/model" + "fileshare/internal/settings" ) // postJSON 以 JSON body 调用 POST 端点。 diff --git a/server/internal/api/setup.go b/server/internal/api/setup.go index 8b5f2ac..f288a48 100644 --- a/server/internal/api/setup.go +++ b/server/internal/api/setup.go @@ -7,8 +7,8 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/response" - "filecodebox/internal/settings" + "fileshare/internal/response" + "fileshare/internal/settings" ) // fileSizeUnits 文件大小单位(对齐参考 FILE_SIZE_UNITS)。 diff --git a/server/internal/api/share.go b/server/internal/api/share.go index c9f304c..d3c42e8 100644 --- a/server/internal/api/share.go +++ b/server/internal/api/share.go @@ -12,11 +12,11 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "filecodebox/internal/audit" - "filecodebox/internal/middleware" - "filecodebox/internal/model" - "filecodebox/internal/response" - "filecodebox/internal/storage" + "fileshare/internal/audit" + "fileshare/internal/middleware" + "fileshare/internal/model" + "fileshare/internal/response" + "fileshare/internal/storage" ) // nowRFC3339 当前时间的 RFC3339 表示。 diff --git a/server/internal/api/web.go b/server/internal/api/web.go index 31b9098..42da452 100644 --- a/server/internal/api/web.go +++ b/server/internal/api/web.go @@ -8,8 +8,8 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/response" - web "filecodebox/web" + "fileshare/internal/response" + web "fileshare/web" ) // registerWeb 注册前端静态资源与 SPA 回退(必须最后注册): diff --git a/server/internal/audit/audit.go b/server/internal/audit/audit.go index 8ba9176..179b67a 100644 --- a/server/internal/audit/audit.go +++ b/server/internal/audit/audit.go @@ -12,7 +12,7 @@ import ( "gorm.io/gorm" - "filecodebox/internal/model" + "fileshare/internal/model" ) // Service 审计日志服务。 diff --git a/server/internal/config/config.go b/server/internal/config/config.go index 213c1f2..a164052 100644 --- a/server/internal/config/config.go +++ b/server/internal/config/config.go @@ -18,7 +18,7 @@ const ( AdminSessionExpireMax = 365 * 24 * 60 * 60 // 最大 365 天 // DefaultSQLitePath SQLite 模式默认数据库文件路径(相对运行目录,自动创建 data/)。 - DefaultSQLitePath = "./data/filecodebox.db" + DefaultSQLitePath = "./data/fileshare.db" ) // 数据库驱动常量(需求 ⑧:SQLite 默认、Postgres 可选)。 diff --git a/server/internal/database/database.go b/server/internal/database/database.go index 6d1a96d..e33e4c6 100644 --- a/server/internal/database/database.go +++ b/server/internal/database/database.go @@ -19,8 +19,8 @@ import ( "gorm.io/gorm" "gorm.io/gorm/logger" - "filecodebox/internal/config" - "filecodebox/internal/model" + "fileshare/internal/config" + "fileshare/internal/model" ) // Options 连接选项(main.go 从 config.Env 装配)。 diff --git a/server/internal/database/database_test.go b/server/internal/database/database_test.go index 4d0d122..75f50da 100644 --- a/server/internal/database/database_test.go +++ b/server/internal/database/database_test.go @@ -18,8 +18,8 @@ import ( "gorm.io/gorm" - "filecodebox/internal/database" - "filecodebox/internal/model" + "fileshare/internal/database" + "fileshare/internal/model" ) // pgTestDSN 返回 Postgres 测试连接串;未设置 FCB_TEST_PG_DSN 时返回空。 diff --git a/server/internal/janitor/janitor.go b/server/internal/janitor/janitor.go index cacff18..2b235dc 100644 --- a/server/internal/janitor/janitor.go +++ b/server/internal/janitor/janitor.go @@ -12,8 +12,8 @@ import ( "gorm.io/gorm" - "filecodebox/internal/model" - "filecodebox/internal/storage" + "fileshare/internal/model" + "fileshare/internal/storage" ) // chunkSessionMaxAge 未完成分片会话的最大保留时长(预留 TTL 为 2h, diff --git a/server/internal/middleware/audit.go b/server/internal/middleware/audit.go index fb6168f..67fdb99 100644 --- a/server/internal/middleware/audit.go +++ b/server/internal/middleware/audit.go @@ -7,9 +7,9 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/audit" - "filecodebox/internal/model" - "filecodebox/internal/response" + "fileshare/internal/audit" + "fileshare/internal/model" + "fileshare/internal/response" ) // auditHooks 审计钩子:由 API 层在响应前后填充与落库。 diff --git a/server/internal/middleware/audit_l5_test.go b/server/internal/middleware/audit_l5_test.go index a0149c8..a37ff1d 100644 --- a/server/internal/middleware/audit_l5_test.go +++ b/server/internal/middleware/audit_l5_test.go @@ -10,8 +10,8 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/audit" - "filecodebox/internal/model" + "fileshare/internal/audit" + "fileshare/internal/model" ) type captureSink struct { diff --git a/server/internal/middleware/audit_test.go b/server/internal/middleware/audit_test.go index 8c84011..ccb973f 100644 --- a/server/internal/middleware/audit_test.go +++ b/server/internal/middleware/audit_test.go @@ -9,8 +9,8 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/audit" - "filecodebox/internal/model" + "fileshare/internal/audit" + "fileshare/internal/model" ) // memSink 测试用内存落库实现。 diff --git a/server/internal/middleware/jwt.go b/server/internal/middleware/jwt.go index ea976b1..dc3ac78 100644 --- a/server/internal/middleware/jwt.go +++ b/server/internal/middleware/jwt.go @@ -8,7 +8,7 @@ import ( "github.com/gin-gonic/gin" "github.com/golang-jwt/jwt/v5" - "filecodebox/internal/response" + "fileshare/internal/response" ) // jwtClaims 自定义声明:对齐参考实现(payload 含 is_admin 与 exp)。 @@ -36,7 +36,7 @@ func SignAdminToken(secret string, expires time.Duration) (string, time.Time, er RegisteredClaims: jwt.RegisteredClaims{ ExpiresAt: jwt.NewNumericDate(expiresAt), IssuedAt: jwt.NewNumericDate(time.Now()), - Issuer: "filecodebox", + Issuer: "fileshare", }, } token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) diff --git a/server/internal/middleware/jwt_test.go b/server/internal/middleware/jwt_test.go index f2b4df8..70b0498 100644 --- a/server/internal/middleware/jwt_test.go +++ b/server/internal/middleware/jwt_test.go @@ -8,7 +8,7 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/response" + "fileshare/internal/response" ) const testSecret = "unit-test-secret-0123456789abcdef" diff --git a/server/internal/middleware/ratelimit.go b/server/internal/middleware/ratelimit.go index e15f451..0a1f132 100644 --- a/server/internal/middleware/ratelimit.go +++ b/server/internal/middleware/ratelimit.go @@ -11,8 +11,8 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/cache" - "filecodebox/internal/response" + "fileshare/internal/cache" + "fileshare/internal/response" ) // 限流类别(对齐参考 apps/base/utils.py 的 ip_limit)。 diff --git a/server/internal/middleware/ratelimit_fallback_test.go b/server/internal/middleware/ratelimit_fallback_test.go index 611d3f4..9e60176 100644 --- a/server/internal/middleware/ratelimit_fallback_test.go +++ b/server/internal/middleware/ratelimit_fallback_test.go @@ -8,7 +8,7 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/cache" + "fileshare/internal/cache" ) // failingCache 模拟缓存故障(Get/Incr 均返回非 ErrNotFound 错误)。 diff --git a/server/internal/middleware/ratelimit_test.go b/server/internal/middleware/ratelimit_test.go index 0e53f1a..110ff0e 100644 --- a/server/internal/middleware/ratelimit_test.go +++ b/server/internal/middleware/ratelimit_test.go @@ -8,7 +8,7 @@ import ( "github.com/gin-gonic/gin" - "filecodebox/internal/cache" + "fileshare/internal/cache" ) func rateLimitRouter(rl *RateLimiter, kind string) *gin.Engine { diff --git a/server/internal/settings/manager_test.go b/server/internal/settings/manager_test.go index 77071a4..a1ab101 100644 --- a/server/internal/settings/manager_test.go +++ b/server/internal/settings/manager_test.go @@ -10,9 +10,9 @@ import ( "gorm.io/gorm" - "filecodebox/internal/config" - "filecodebox/internal/database" - "filecodebox/internal/settings" + "fileshare/internal/config" + "fileshare/internal/database" + "fileshare/internal/settings" ) // pgTestDSN 返回 Postgres 测试连接串;未设置 FCB_TEST_PG_DSN 时跳过。 diff --git a/server/internal/settings/schema.go b/server/internal/settings/schema.go index 883ffc7..4f1aadf 100644 --- a/server/internal/settings/schema.go +++ b/server/internal/settings/schema.go @@ -9,7 +9,7 @@ // 4. schema 同步测试(config schema_test / settings schema_test) package settings -import "filecodebox/internal/config" +import "fileshare/internal/config" // —— 键名 re-export(与 config 包保持同一字符串,避免魔法值散落)—— const ( diff --git a/server/internal/settings/settings.go b/server/internal/settings/settings.go index 58d8541..b0e536c 100644 --- a/server/internal/settings/settings.go +++ b/server/internal/settings/settings.go @@ -12,8 +12,8 @@ import ( "gorm.io/gorm" - "filecodebox/internal/config" - "filecodebox/internal/model" + "fileshare/internal/config" + "fileshare/internal/model" ) // settingsKey 数据库中的配置键(对齐参考实现)。 diff --git a/server/internal/storage/local.go b/server/internal/storage/local.go index d6f3a85..9a927d0 100644 --- a/server/internal/storage/local.go +++ b/server/internal/storage/local.go @@ -30,10 +30,10 @@ type LocalStorage struct { rootReal string } -// NewLocalStorage 构造本地引擎。root 为空时使用系统临时目录下的 filecodebox_storage。 +// NewLocalStorage 构造本地引擎。root 为空时使用系统临时目录下的 fileshare_storage。 func NewLocalStorage(root string) (*LocalStorage, error) { if strings.TrimSpace(root) == "" { - root = filepath.Join(os.TempDir(), "filecodebox_storage") + root = filepath.Join(os.TempDir(), "fileshare_storage") } abs, err := filepath.Abs(root) if err != nil { diff --git a/server/internal/storage/local_test.go b/server/internal/storage/local_test.go index 19a22e1..4fbe170 100644 --- a/server/internal/storage/local_test.go +++ b/server/internal/storage/local_test.go @@ -32,7 +32,7 @@ func sha256Hex(b []byte) string { func TestLocalSaveOpenRange(t *testing.T) { st := newTestLocal(t) ctx := context.Background() - data := []byte("hello filecodebox 本地引擎 0123456789") + data := []byte("hello fileshare 本地引擎 0123456789") n, err := st.SaveFile(ctx, bytes.NewReader(data), "2025/08/测试文件.bin") if err != nil { diff --git a/server/web/dist/assets/AdminLayout-DJ2FR9f-.js b/server/web/dist/assets/AdminLayout-CmvNXPHJ.js similarity index 85% rename from server/web/dist/assets/AdminLayout-DJ2FR9f-.js rename to server/web/dist/assets/AdminLayout-CmvNXPHJ.js index 3465e3b..81d85a4 100644 --- a/server/web/dist/assets/AdminLayout-DJ2FR9f-.js +++ b/server/web/dist/assets/AdminLayout-CmvNXPHJ.js @@ -1 +1 @@ -import{d as p,u as v,i as h,I as g,c as w,G as s,b as e,t as n,f as t,A as d,w as k,F as y,O as r,q as m,B as R,o as V}from"./index-DYsKpclu.js";import{_ as x}from"./SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js";import{u as A}from"./auth-B7MDTgxJ.js";import"./admin-DEOkRyTC.js";const B={class:"admin-shell"},C={class:"admin-aside"},b={class:"aside-title"},L=["aria-label"],N={class:"admin-main"},q=p({__name:"AdminLayout",setup(S){const{t:a}=v(),u=R(),o=A(),l=h();g(async()=>{o.isAuthed&&!o.checked&&await o.verify()});async function _(){await o.logout(),l.success(a("admin.nav.loggedOut")),u.replace({name:"admin-login"})}return(F,c)=>{const i=r("RouterLink"),f=r("RouterView");return V(),w(y,null,[s(x),e("div",B,[e("aside",C,[e("div",b,n(t(a)("admin.nav.title")),1),e("nav",{class:"aside-menu","aria-label":t(a)("admin.nav.menu")},[s(i,{to:{name:"admin-files"}},{default:d(()=>[m("📁 "+n(t(a)("admin.nav.files")),1)]),_:1}),s(i,{to:{name:"admin-audit"}},{default:d(()=>[m("🛡 "+n(t(a)("admin.nav.audit")),1)]),_:1}),s(i,{to:{name:"admin-settings"}},{default:d(()=>[m("⚙️ "+n(t(a)("admin.nav.settings")),1)]),_:1}),c[0]||(c[0]=e("div",{class:"aside-sep"},null,-1)),e("a",{href:"#",onClick:k(_,["prevent"])},"🚪 "+n(t(a)("admin.nav.logout")),1)],8,L)]),e("div",N,[s(f)])])],64)}}});export{q as default}; +import{d as p,u as v,i as h,I as g,c as w,G as s,b as e,t as n,f as t,A as d,w as k,F as y,O as r,q as m,B as R,o as V}from"./index-BKnWAKao.js";import{_ as x}from"./SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js";import{u as A}from"./auth-Cp2GGuZy.js";import"./admin-KnbIpHLF.js";const B={class:"admin-shell"},C={class:"admin-aside"},b={class:"aside-title"},L=["aria-label"],N={class:"admin-main"},q=p({__name:"AdminLayout",setup(S){const{t:a}=v(),u=R(),o=A(),l=h();g(async()=>{o.isAuthed&&!o.checked&&await o.verify()});async function _(){await o.logout(),l.success(a("admin.nav.loggedOut")),u.replace({name:"admin-login"})}return(F,c)=>{const i=r("RouterLink"),f=r("RouterView");return V(),w(y,null,[s(x),e("div",B,[e("aside",C,[e("div",b,n(t(a)("admin.nav.title")),1),e("nav",{class:"aside-menu","aria-label":t(a)("admin.nav.menu")},[s(i,{to:{name:"admin-files"}},{default:d(()=>[m("📁 "+n(t(a)("admin.nav.files")),1)]),_:1}),s(i,{to:{name:"admin-audit"}},{default:d(()=>[m("🛡 "+n(t(a)("admin.nav.audit")),1)]),_:1}),s(i,{to:{name:"admin-settings"}},{default:d(()=>[m("⚙️ "+n(t(a)("admin.nav.settings")),1)]),_:1}),c[0]||(c[0]=e("div",{class:"aside-sep"},null,-1)),e("a",{href:"#",onClick:k(_,["prevent"])},"🚪 "+n(t(a)("admin.nav.logout")),1)],8,L)]),e("div",N,[s(f)])])],64)}}});export{q as default}; diff --git a/server/web/dist/assets/AuditView-BHN4e5xt.js b/server/web/dist/assets/AuditView-BSm5VfBI.js similarity index 97% rename from server/web/dist/assets/AuditView-BHN4e5xt.js rename to server/web/dist/assets/AuditView-BSm5VfBI.js index fd90743..eb4bfdb 100644 --- a/server/web/dist/assets/AuditView-BHN4e5xt.js +++ b/server/web/dist/assets/AuditView-BSm5VfBI.js @@ -1 +1 @@ -import{d as U,u as I,i as M,I as S,c as u,b as t,t as a,f as l,C as r,Z as w,D as v,w as $,q as x,F as E,r as F,G as q,j as g,R as T,H as R,K as j,e as B,$ as H,s as _,o as c,_ as L}from"./index-DYsKpclu.js";import{e as O}from"./admin-DEOkRyTC.js";import{_ as G}from"./Pager.vue_vue_type_script_setup_true_lang-B3GeH0mY.js";const K={class:"toolbar"},P={class:"page-title"},Z={class:"page-sub"},J={value:""},Q={value:"upload"},W={value:"download"},X={value:""},Y={value:"success"},tt={value:"failed"},et={value:"denied"},at={class:"btn",type:"submit"},nt={key:0,class:"loading-block"},lt={key:1,class:"card empty"},st={key:2,class:"table-wrap"},it={class:"table"},ot=["title"],dt={class:"code-cell"},ut={class:"ip-cell"},ct=["title"],rt=U({__name:"AuditView",setup(mt){const{t:n}=I(),z=M(),p=g([]),b=g(0),f=g(!1),o=T({action:"",result:"",ip:"",start:"",end:""}),d=T({page:1,size:20});function h(s,i=!1){if(!s)return"";const e=new Date(s);return Number.isNaN(e.getTime())?"":(i&&e.setHours(23,59,59,999),e.toISOString())}async function m(){f.value=!0;try{const s=await O({page:d.page,size:d.size,action:o.action||void 0,result:o.result||void 0,ip:o.ip.trim()||void 0,startTime:h(o.start)||void 0,endTime:h(o.end,!0)||void 0});p.value=s.data,b.value=s.total}catch(s){z.error(s instanceof R?s.msg:n("admin.audit.loadFailed"))}finally{f.value=!1}}function D(){d.page=1,m()}function V(){o.action="",o.result="",o.ip="",o.start="",o.end="",d.page=1,m()}function k(s,i){d.page=s,d.size=i,m()}function A(s){return s==="upload"?n("admin.audit.actionUpload"):s==="download"?n("admin.audit.actionDownload"):s||"-"}function y(s){return s==="success"?{cls:"badge-success",text:n("common.success")}:s==="denied"?{cls:"badge-warn",text:n("common.denied")}:s==="failed"?{cls:"badge-danger",text:n("common.failed")}:{cls:"badge-muted",text:s||"-"}}function C(s){const i=[s.deviceOs,s.deviceBrowser].filter(Boolean),e=s.deviceType?` · ${s.deviceType}`:"";return i.length?i.join(" · ")+e:"-"}function N(s){const i=s.transferredBytes;if(i==null)return"-";const e=s.sizeBytes;return e!=null&&e!==i?`${_(i)} / ${_(e)}`:_(i)}return S(m),(s,i)=>(c(),u("div",null,[t("div",K,[t("div",null,[t("h2",P,a(l(n)("admin.audit.title")),1),t("p",Z,a(l(n)("admin.audit.subtitle")),1)])]),t("form",{class:"filter-bar",onSubmit:$(D,["prevent"])},[t("label",null,[t("span",null,a(l(n)("admin.audit.action")),1),r(t("select",{"onUpdate:modelValue":i[0]||(i[0]=e=>o.action=e),class:"select"},[t("option",J,a(l(n)("common.all")),1),t("option",Q,a(l(n)("admin.audit.actionUpload")),1),t("option",W,a(l(n)("admin.audit.actionDownload")),1)],512),[[w,o.action]])]),t("label",null,[t("span",null,a(l(n)("admin.audit.result")),1),r(t("select",{"onUpdate:modelValue":i[1]||(i[1]=e=>o.result=e),class:"select"},[t("option",X,a(l(n)("common.all")),1),t("option",Y,a(l(n)("common.success")),1),t("option",tt,a(l(n)("common.failed")),1),t("option",et,a(l(n)("common.denied")),1)],512),[[w,o.result]])]),t("label",null,[t("span",null,a(l(n)("admin.audit.filterIp")),1),r(t("input",{"onUpdate:modelValue":i[2]||(i[2]=e=>o.ip=e),class:"input",placeholder:"10.0.0.1",style:{"max-width":"150px"}},null,512),[[v,o.ip]])]),t("label",null,[t("span",null,a(l(n)("admin.audit.filterStart")),1),r(t("input",{"onUpdate:modelValue":i[3]||(i[3]=e=>o.start=e),class:"input",type:"datetime-local"},null,512),[[v,o.start]])]),t("label",null,[t("span",null,a(l(n)("admin.audit.filterEnd")),1),r(t("input",{"onUpdate:modelValue":i[4]||(i[4]=e=>o.end=e),class:"input",type:"datetime-local"},null,512),[[v,o.end]])]),t("button",at,a(l(n)("common.query")),1),t("button",{class:"btn btn-ghost",type:"button",onClick:V},a(l(n)("common.reset")),1)],32),f.value?(c(),u("div",nt,[i[5]||(i[5]=t("span",{class:"spin","aria-hidden":"true"},null,-1)),x(" "+a(l(n)("common.loading")),1)])):p.value.length?(c(),u("div",st,[t("table",it,[t("thead",null,[t("tr",null,[t("th",null,a(l(n)("admin.audit.colTime")),1),t("th",null,a(l(n)("admin.audit.colAction")),1),t("th",null,a(l(n)("admin.audit.colResult")),1),t("th",null,a(l(n)("admin.audit.colFile")),1),t("th",null,a(l(n)("admin.audit.colCode")),1),t("th",null,a(l(n)("admin.audit.colBytes")),1),t("th",null,a(l(n)("admin.audit.colIp")),1),t("th",null,a(l(n)("admin.audit.colDevice")),1),t("th",null,a(l(n)("admin.audit.colDuration")),1),t("th",null,a(l(n)("admin.audit.colUaError")),1)])]),t("tbody",null,[(c(!0),u(E,null,F(p.value,e=>(c(),u("tr",{key:e.id},[t("td",null,a(l(j)(e.createdAt)),1),t("td",null,[t("span",{class:B(["badge",e.action==="upload"?"":"badge-muted"])},a(A(e.action)),3)]),t("td",null,[t("span",{class:B(["badge",y(e.result).cls])},a(y(e.result).text),3)]),t("td",{class:"wrap",title:e.fileName},a(e.fileName||"-"),9,ot),t("td",dt,a(e.fileCode||"-"),1),t("td",null,a(N(e)),1),t("td",ut,a(e.ip||"-"),1),t("td",null,a(C(e)),1),t("td",null,a(l(H)(e.durationMs)),1),t("td",{class:"wrap ua-cell",title:e.errorMsg||e.userAgent},a(e.errorMsg||e.userAgent||"-"),9,ct)]))),128))])])])):(c(),u("div",lt,[i[6]||(i[6]=t("div",{class:"empty-icon"},"🛡",-1)),x(" "+a(l(n)("admin.audit.empty")),1)])),q(G,{page:d.page,size:d.size,total:b.value,onChange:k},null,8,["page","size","total"])]))}}),gt=L(rt,[["__scopeId","data-v-dcdef1a5"]]);export{gt as default}; +import{d as U,u as I,i as M,I as S,c as u,b as t,t as a,f as l,C as r,Z as w,D as v,w as $,q as x,F as E,r as F,G as q,j as g,R as T,H as R,K as j,e as B,$ as H,s as _,o as c,_ as L}from"./index-BKnWAKao.js";import{e as O}from"./admin-KnbIpHLF.js";import{_ as G}from"./Pager.vue_vue_type_script_setup_true_lang-DZv_x-2P.js";const K={class:"toolbar"},P={class:"page-title"},Z={class:"page-sub"},J={value:""},Q={value:"upload"},W={value:"download"},X={value:""},Y={value:"success"},tt={value:"failed"},et={value:"denied"},at={class:"btn",type:"submit"},nt={key:0,class:"loading-block"},lt={key:1,class:"card empty"},st={key:2,class:"table-wrap"},it={class:"table"},ot=["title"],dt={class:"code-cell"},ut={class:"ip-cell"},ct=["title"],rt=U({__name:"AuditView",setup(mt){const{t:n}=I(),z=M(),p=g([]),b=g(0),f=g(!1),o=T({action:"",result:"",ip:"",start:"",end:""}),d=T({page:1,size:20});function h(s,i=!1){if(!s)return"";const e=new Date(s);return Number.isNaN(e.getTime())?"":(i&&e.setHours(23,59,59,999),e.toISOString())}async function m(){f.value=!0;try{const s=await O({page:d.page,size:d.size,action:o.action||void 0,result:o.result||void 0,ip:o.ip.trim()||void 0,startTime:h(o.start)||void 0,endTime:h(o.end,!0)||void 0});p.value=s.data,b.value=s.total}catch(s){z.error(s instanceof R?s.msg:n("admin.audit.loadFailed"))}finally{f.value=!1}}function D(){d.page=1,m()}function V(){o.action="",o.result="",o.ip="",o.start="",o.end="",d.page=1,m()}function k(s,i){d.page=s,d.size=i,m()}function A(s){return s==="upload"?n("admin.audit.actionUpload"):s==="download"?n("admin.audit.actionDownload"):s||"-"}function y(s){return s==="success"?{cls:"badge-success",text:n("common.success")}:s==="denied"?{cls:"badge-warn",text:n("common.denied")}:s==="failed"?{cls:"badge-danger",text:n("common.failed")}:{cls:"badge-muted",text:s||"-"}}function C(s){const i=[s.deviceOs,s.deviceBrowser].filter(Boolean),e=s.deviceType?` · ${s.deviceType}`:"";return i.length?i.join(" · ")+e:"-"}function N(s){const i=s.transferredBytes;if(i==null)return"-";const e=s.sizeBytes;return e!=null&&e!==i?`${_(i)} / ${_(e)}`:_(i)}return S(m),(s,i)=>(c(),u("div",null,[t("div",K,[t("div",null,[t("h2",P,a(l(n)("admin.audit.title")),1),t("p",Z,a(l(n)("admin.audit.subtitle")),1)])]),t("form",{class:"filter-bar",onSubmit:$(D,["prevent"])},[t("label",null,[t("span",null,a(l(n)("admin.audit.action")),1),r(t("select",{"onUpdate:modelValue":i[0]||(i[0]=e=>o.action=e),class:"select"},[t("option",J,a(l(n)("common.all")),1),t("option",Q,a(l(n)("admin.audit.actionUpload")),1),t("option",W,a(l(n)("admin.audit.actionDownload")),1)],512),[[w,o.action]])]),t("label",null,[t("span",null,a(l(n)("admin.audit.result")),1),r(t("select",{"onUpdate:modelValue":i[1]||(i[1]=e=>o.result=e),class:"select"},[t("option",X,a(l(n)("common.all")),1),t("option",Y,a(l(n)("common.success")),1),t("option",tt,a(l(n)("common.failed")),1),t("option",et,a(l(n)("common.denied")),1)],512),[[w,o.result]])]),t("label",null,[t("span",null,a(l(n)("admin.audit.filterIp")),1),r(t("input",{"onUpdate:modelValue":i[2]||(i[2]=e=>o.ip=e),class:"input",placeholder:"10.0.0.1",style:{"max-width":"150px"}},null,512),[[v,o.ip]])]),t("label",null,[t("span",null,a(l(n)("admin.audit.filterStart")),1),r(t("input",{"onUpdate:modelValue":i[3]||(i[3]=e=>o.start=e),class:"input",type:"datetime-local"},null,512),[[v,o.start]])]),t("label",null,[t("span",null,a(l(n)("admin.audit.filterEnd")),1),r(t("input",{"onUpdate:modelValue":i[4]||(i[4]=e=>o.end=e),class:"input",type:"datetime-local"},null,512),[[v,o.end]])]),t("button",at,a(l(n)("common.query")),1),t("button",{class:"btn btn-ghost",type:"button",onClick:V},a(l(n)("common.reset")),1)],32),f.value?(c(),u("div",nt,[i[5]||(i[5]=t("span",{class:"spin","aria-hidden":"true"},null,-1)),x(" "+a(l(n)("common.loading")),1)])):p.value.length?(c(),u("div",st,[t("table",it,[t("thead",null,[t("tr",null,[t("th",null,a(l(n)("admin.audit.colTime")),1),t("th",null,a(l(n)("admin.audit.colAction")),1),t("th",null,a(l(n)("admin.audit.colResult")),1),t("th",null,a(l(n)("admin.audit.colFile")),1),t("th",null,a(l(n)("admin.audit.colCode")),1),t("th",null,a(l(n)("admin.audit.colBytes")),1),t("th",null,a(l(n)("admin.audit.colIp")),1),t("th",null,a(l(n)("admin.audit.colDevice")),1),t("th",null,a(l(n)("admin.audit.colDuration")),1),t("th",null,a(l(n)("admin.audit.colUaError")),1)])]),t("tbody",null,[(c(!0),u(E,null,F(p.value,e=>(c(),u("tr",{key:e.id},[t("td",null,a(l(j)(e.createdAt)),1),t("td",null,[t("span",{class:B(["badge",e.action==="upload"?"":"badge-muted"])},a(A(e.action)),3)]),t("td",null,[t("span",{class:B(["badge",y(e.result).cls])},a(y(e.result).text),3)]),t("td",{class:"wrap",title:e.fileName},a(e.fileName||"-"),9,ot),t("td",dt,a(e.fileCode||"-"),1),t("td",null,a(N(e)),1),t("td",ut,a(e.ip||"-"),1),t("td",null,a(C(e)),1),t("td",null,a(l(H)(e.durationMs)),1),t("td",{class:"wrap ua-cell",title:e.errorMsg||e.userAgent},a(e.errorMsg||e.userAgent||"-"),9,ct)]))),128))])])])):(c(),u("div",lt,[i[6]||(i[6]=t("div",{class:"empty-icon"},"🛡",-1)),x(" "+a(l(n)("admin.audit.empty")),1)])),q(G,{page:d.page,size:d.size,total:b.value,onChange:k},null,8,["page","size","total"])]))}}),gt=L(rt,[["__scopeId","data-v-dcdef1a5"]]);export{gt as default}; diff --git a/server/web/dist/assets/DocsView-Ds78oqBY.js b/server/web/dist/assets/DocsView-DPtCYlAM.js similarity index 95% rename from server/web/dist/assets/DocsView-Ds78oqBY.js rename to server/web/dist/assets/DocsView-DPtCYlAM.js index 8339951..8dd1f07 100644 --- a/server/web/dist/assets/DocsView-Ds78oqBY.js +++ b/server/web/dist/assets/DocsView-DPtCYlAM.js @@ -1 +1 @@ -import{d as R,u as V,i as z,j as y,I,J as $,z as E,A as O,N as W,b as c,C as j,D as G,f as h,c as l,q as x,t as u,F as C,r as A,w as T,e as M,g as S,h as H,B as K,o as r}from"./index-DYsKpclu.js";import{P as U}from"./PageShell-D87JkPkG.js";import{d as B,a as J,l as Q}from"./docsSource-BXkkn0HE.js";import{k as X}from"./markdown-B5D8JARp.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js";function Y(m,o){const n=m.toLowerCase().replace(/[^\p{L}\p{N}\s-]/gu,"").trim().replace(/\s+/g,"-")||"section";let d=n,i=2;for(;o.has(d);)d=`${n}-${i++}`;return o.add(d),d}const Z=new Set(["script","style","iframe","object","embed","form","link","meta","base","svg","math","frame","frameset","applet","template","noscript","title"]),tt=new Set(["srcdoc","sandbox","formaction","action","xlink:href","srcset","poster","background","dynsrc","lowsrc","data"]);function et(m,o){const n=m.trim();return o&&/^data:image\//i.test(n)?!0:/^(https?:|mailto:|\/|#|\.\/)/i.test(n)||!/^[a-z][a-z0-9+.-]*:/i.test(n)}function st(m){const o=new DOMParser().parseFromString(m,"text/html");for(const n of[...o.body.querySelectorAll("*")]){const d=n.tagName.toLowerCase();if(Z.has(d)){n.remove();continue}for(const i of[...n.attributes]){const e=i.name.toLowerCase();if(e.startsWith("on")||tt.has(e)){n.removeAttribute(i.name);continue}(e==="href"||e==="src"||e.endsWith(":src")||e.endsWith(":href"))&&!et(i.value,e==="src")&&n.removeAttribute(i.name)}}return o.body.innerHTML}function ot(m){const o=X.parse(m,{gfm:!0,breaks:!1}),n=new DOMParser().parseFromString(o,"text/html");for(const e of[...n.body.querySelectorAll("a[href]")]){const f=e.getAttribute("href")??"";/^https?:\/\//i.test(f)&&(e.setAttribute("target","_blank"),e.setAttribute("rel","noopener noreferrer"))}const d=new Set,i=[];for(const e of[...n.body.querySelectorAll("h1, h2, h3")]){const f=Number(e.tagName.substring(1)),p=(e.textContent??"").trim();if(!p)continue;const v=Y(p,d);e.setAttribute("id",v),f>=2&&i.push({id:v,text:p,level:f})}return{html:st(n.body.innerHTML),toc:i}}const nt={class:"docs-shell"},at={class:"docs-sidebar"},rt=["placeholder"],lt={key:0,class:"empty",style:{padding:"20px 8px"}},ct={class:"hint"},it=["aria-label"],ut=["onClick"],dt={key:0,class:"badge badge-muted",style:{"margin-left":"6px"}},ht={key:0,class:"hint",style:{padding:"0 11px"}},mt={key:1,class:"doc-toc"},ft={class:"toc-title"},pt=["href","onClick"],vt={class:"docs-content"},gt={key:0,class:"loading-block"},yt={key:1,class:"empty"},_t={style:{"font-weight":"600",color:"var(--c-text)"}},bt={class:"hint",style:{"max-width":"420px",margin:"0 auto"}},kt={key:2,class:"empty"},wt=["innerHTML"],At=R({__name:"DocsView",setup(m){const{t:o}=V(),n=W(),d=K(),i=z(),e=y([...B]),f=y(""),p=y(""),v=y(""),_=y([]),k=y(!1),b=y("");I(async()=>{const a=await J();a.length&&(e.value=[...B,...a]),L()});const N=()=>{if(typeof n.params.slug=="string")return n.params.slug;const a=n.query.p;return typeof a=="string"?a:""};async function L(){const a=N(),s=e.value;if(!s.length)return;const t=s.find(g=>g.slug===a)??s[0];if(t&&!(t.slug===f.value&&p.value)){f.value=t.slug,k.value=!0;try{p.value=await Q(t);const{html:g,toc:P}=ot(p.value);v.value=g,_.value=P}catch{v.value="",_.value=[],i.error(o("docs.loadFailed",{title:t.title}))}finally{k.value=!1}}}$(()=>n.fullPath,()=>{L()});function F(a){d.push({name:"docs-detail",params:{slug:a}})}function q(a){document.getElementById(a)?.scrollIntoView({behavior:"smooth"})}const D=H(()=>{const a=b.value.trim().toLowerCase();return a?e.value.map(s=>{const g=(s.embedded??"").toLowerCase().split(a).length-1+(s.title.toLowerCase().includes(a)?1:0);return{doc:s,hits:g}}).filter(s=>s.hits>0).sort((s,t)=>t.hits-s.hits):e.value.map(s=>({doc:s,hits:-1}))}),w=H(()=>b.value.trim().length>0);return(a,s)=>(r(),E(U,null,{default:O(()=>[c("div",nt,[c("aside",at,[j(c("input",{"onUpdate:modelValue":s[0]||(s[0]=t=>b.value=t),class:"input docs-search",placeholder:h(o)("docs.searchPlaceholder")},null,8,rt),[[G,b.value]]),e.value.length?(r(),l(C,{key:1},[c("nav",{class:"doc-list","aria-label":h(o)("docs.sidebar")},[(r(!0),l(C,null,A(D.value,t=>(r(),l("a",{key:t.doc.slug,class:M({active:t.doc.slug===f.value}),href:"#",onClick:T(g=>F(t.doc.slug),["prevent"])},[x(u(t.doc.title)+" ",1),w.value&&t.hits>0?(r(),l("span",dt,u(t.hits),1)):S("",!0)],10,ut))),128))],8,it),w.value&&!D.value.length?(r(),l("p",ht,u(h(o)("docs.noMatch")),1)):S("",!0),_.value.length&&!w.value?(r(),l("div",mt,[c("div",ft,u(h(o)("docs.tocTitle")),1),(r(!0),l(C,null,A(_.value,t=>(r(),l("a",{key:t.id,href:`#${t.id}`,class:M({"lvl-3":t.level>=3}),onClick:T(g=>q(t.id),["prevent"])},u(t.text),11,pt))),128))])):S("",!0)],64)):(r(),l("div",lt,[x(u(h(o)("docs.notGenerated")),1),s[1]||(s[1]=c("br",null,null,-1)),c("span",ct,u(h(o)("docs.buildHint")),1)]))]),c("article",vt,[k.value?(r(),l("div",gt,[s[2]||(s[2]=c("span",{class:"spin","aria-hidden":"true"},null,-1)),x(" "+u(h(o)("docs.loading")),1)])):e.value.length?v.value?(r(),l("div",{key:3,class:"markdown-body",innerHTML:v.value},null,8,wt)):(r(),l("div",kt,u(h(o)("docs.emptyContent")),1)):(r(),l("div",yt,[s[3]||(s[3]=c("div",{class:"empty-icon"},"📚",-1)),c("p",_t,u(h(o)("docs.preparing")),1),c("p",bt,u(h(o)("docs.preparingHint")),1)]))])])]),_:1}))}});export{At as default}; +import{d as R,u as V,i as z,j as y,I,J as $,z as E,A as O,N as W,b as c,C as j,D as G,f as h,c as l,q as x,t as u,F as C,r as A,w as T,e as M,g as S,h as H,B as K,o as r}from"./index-BKnWAKao.js";import{P as U}from"./PageShell-CBo29Oot.js";import{d as B,a as J,l as Q}from"./docsSource-Df5ur5C4.js";import{k as X}from"./markdown-B5D8JARp.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js";function Y(m,o){const n=m.toLowerCase().replace(/[^\p{L}\p{N}\s-]/gu,"").trim().replace(/\s+/g,"-")||"section";let d=n,i=2;for(;o.has(d);)d=`${n}-${i++}`;return o.add(d),d}const Z=new Set(["script","style","iframe","object","embed","form","link","meta","base","svg","math","frame","frameset","applet","template","noscript","title"]),tt=new Set(["srcdoc","sandbox","formaction","action","xlink:href","srcset","poster","background","dynsrc","lowsrc","data"]);function et(m,o){const n=m.trim();return o&&/^data:image\//i.test(n)?!0:/^(https?:|mailto:|\/|#|\.\/)/i.test(n)||!/^[a-z][a-z0-9+.-]*:/i.test(n)}function st(m){const o=new DOMParser().parseFromString(m,"text/html");for(const n of[...o.body.querySelectorAll("*")]){const d=n.tagName.toLowerCase();if(Z.has(d)){n.remove();continue}for(const i of[...n.attributes]){const e=i.name.toLowerCase();if(e.startsWith("on")||tt.has(e)){n.removeAttribute(i.name);continue}(e==="href"||e==="src"||e.endsWith(":src")||e.endsWith(":href"))&&!et(i.value,e==="src")&&n.removeAttribute(i.name)}}return o.body.innerHTML}function ot(m){const o=X.parse(m,{gfm:!0,breaks:!1}),n=new DOMParser().parseFromString(o,"text/html");for(const e of[...n.body.querySelectorAll("a[href]")]){const f=e.getAttribute("href")??"";/^https?:\/\//i.test(f)&&(e.setAttribute("target","_blank"),e.setAttribute("rel","noopener noreferrer"))}const d=new Set,i=[];for(const e of[...n.body.querySelectorAll("h1, h2, h3")]){const f=Number(e.tagName.substring(1)),p=(e.textContent??"").trim();if(!p)continue;const v=Y(p,d);e.setAttribute("id",v),f>=2&&i.push({id:v,text:p,level:f})}return{html:st(n.body.innerHTML),toc:i}}const nt={class:"docs-shell"},at={class:"docs-sidebar"},rt=["placeholder"],lt={key:0,class:"empty",style:{padding:"20px 8px"}},ct={class:"hint"},it=["aria-label"],ut=["onClick"],dt={key:0,class:"badge badge-muted",style:{"margin-left":"6px"}},ht={key:0,class:"hint",style:{padding:"0 11px"}},mt={key:1,class:"doc-toc"},ft={class:"toc-title"},pt=["href","onClick"],vt={class:"docs-content"},gt={key:0,class:"loading-block"},yt={key:1,class:"empty"},_t={style:{"font-weight":"600",color:"var(--c-text)"}},bt={class:"hint",style:{"max-width":"420px",margin:"0 auto"}},kt={key:2,class:"empty"},wt=["innerHTML"],At=R({__name:"DocsView",setup(m){const{t:o}=V(),n=W(),d=K(),i=z(),e=y([...B]),f=y(""),p=y(""),v=y(""),_=y([]),k=y(!1),b=y("");I(async()=>{const a=await J();a.length&&(e.value=[...B,...a]),L()});const N=()=>{if(typeof n.params.slug=="string")return n.params.slug;const a=n.query.p;return typeof a=="string"?a:""};async function L(){const a=N(),s=e.value;if(!s.length)return;const t=s.find(g=>g.slug===a)??s[0];if(t&&!(t.slug===f.value&&p.value)){f.value=t.slug,k.value=!0;try{p.value=await Q(t);const{html:g,toc:P}=ot(p.value);v.value=g,_.value=P}catch{v.value="",_.value=[],i.error(o("docs.loadFailed",{title:t.title}))}finally{k.value=!1}}}$(()=>n.fullPath,()=>{L()});function F(a){d.push({name:"docs-detail",params:{slug:a}})}function q(a){document.getElementById(a)?.scrollIntoView({behavior:"smooth"})}const D=H(()=>{const a=b.value.trim().toLowerCase();return a?e.value.map(s=>{const g=(s.embedded??"").toLowerCase().split(a).length-1+(s.title.toLowerCase().includes(a)?1:0);return{doc:s,hits:g}}).filter(s=>s.hits>0).sort((s,t)=>t.hits-s.hits):e.value.map(s=>({doc:s,hits:-1}))}),w=H(()=>b.value.trim().length>0);return(a,s)=>(r(),E(U,null,{default:O(()=>[c("div",nt,[c("aside",at,[j(c("input",{"onUpdate:modelValue":s[0]||(s[0]=t=>b.value=t),class:"input docs-search",placeholder:h(o)("docs.searchPlaceholder")},null,8,rt),[[G,b.value]]),e.value.length?(r(),l(C,{key:1},[c("nav",{class:"doc-list","aria-label":h(o)("docs.sidebar")},[(r(!0),l(C,null,A(D.value,t=>(r(),l("a",{key:t.doc.slug,class:M({active:t.doc.slug===f.value}),href:"#",onClick:T(g=>F(t.doc.slug),["prevent"])},[x(u(t.doc.title)+" ",1),w.value&&t.hits>0?(r(),l("span",dt,u(t.hits),1)):S("",!0)],10,ut))),128))],8,it),w.value&&!D.value.length?(r(),l("p",ht,u(h(o)("docs.noMatch")),1)):S("",!0),_.value.length&&!w.value?(r(),l("div",mt,[c("div",ft,u(h(o)("docs.tocTitle")),1),(r(!0),l(C,null,A(_.value,t=>(r(),l("a",{key:t.id,href:`#${t.id}`,class:M({"lvl-3":t.level>=3}),onClick:T(g=>q(t.id),["prevent"])},u(t.text),11,pt))),128))])):S("",!0)],64)):(r(),l("div",lt,[x(u(h(o)("docs.notGenerated")),1),s[1]||(s[1]=c("br",null,null,-1)),c("span",ct,u(h(o)("docs.buildHint")),1)]))]),c("article",vt,[k.value?(r(),l("div",gt,[s[2]||(s[2]=c("span",{class:"spin","aria-hidden":"true"},null,-1)),x(" "+u(h(o)("docs.loading")),1)])):e.value.length?v.value?(r(),l("div",{key:3,class:"markdown-body",innerHTML:v.value},null,8,wt)):(r(),l("div",kt,u(h(o)("docs.emptyContent")),1)):(r(),l("div",yt,[s[3]||(s[3]=c("div",{class:"empty-icon"},"📚",-1)),c("p",_t,u(h(o)("docs.preparing")),1),c("p",bt,u(h(o)("docs.preparingHint")),1)]))])])]),_:1}))}});export{At as default}; diff --git a/server/web/dist/assets/FilesView-ZJ5eqPp5.js b/server/web/dist/assets/FilesView-lLPRhmyI.js similarity index 97% rename from server/web/dist/assets/FilesView-ZJ5eqPp5.js rename to server/web/dist/assets/FilesView-lLPRhmyI.js index 0af9a57..adc5f25 100644 --- a/server/web/dist/assets/FilesView-ZJ5eqPp5.js +++ b/server/web/dist/assets/FilesView-lLPRhmyI.js @@ -1 +1 @@ -import{d as N,I as V,P as Y,z as J,c as f,w as $,b as e,t as a,Q as X,n as Z,g as L,T as ee,o as p,u as te,a as ne,i as ie,f as l,C as S,D as T,q as z,F as se,r as le,G as D,A as ae,j as _,R as A,H as x,e as B,s as oe,K as E,k as w,p as de,M as ce}from"./index-DYsKpclu.js";import{a as ue,b as re,c as me,d as pe}from"./admin-DEOkRyTC.js";import{p as fe}from"./share-CqDDLJWI.js";import{_ as he}from"./Pager.vue_vue_type_script_setup_true_lang-B3GeH0mY.js";const be=["aria-label"],ve={class:"modal-title"},ge=N({__name:"AppModal",props:{open:{type:Boolean},title:{},width:{}},emits:["close"],setup(h,{emit:t}){const k=h,d=t;function r(b){b.key==="Escape"&&k.open&&d("close")}return V(()=>document.addEventListener("keydown",r)),Y(()=>document.removeEventListener("keydown",r)),(b,g)=>(p(),J(ee,{to:"body"},[h.open?(p(),f("div",{key:0,class:"modal-overlay",onClick:g[0]||(g[0]=$(m=>d("close"),["self"]))},[e("div",{class:"modal",style:Z(h.width?{maxWidth:h.width}:void 0),role:"dialog","aria-modal":"true","aria-label":h.title},[e("h3",ve,a(h.title),1),X(b.$slots,"default")],12,be)])):L("",!0)]))}}),ye={class:"toolbar"},_e={class:"page-title"},xe={class:"page-sub"},ke=["placeholder"],Ce={class:"btn",type:"submit"},Se=["disabled","title"],Te={key:0,class:"loading-block"},$e={key:1,class:"card empty"},Fe={key:2,class:"table-wrap"},ze={class:"table"},De={style:{width:"36px"}},Ae=["checked"],Be={style:{"min-width":"210px"}},Ee=["checked","onChange"],we={class:"code-cell"},Ne=["title"],Ve={class:"row-actions"},Le=["onClick"],Me=["onClick"],Ue=["onClick"],Ie=["onClick"],Re=["onClick"],He={class:"field"},Pe={class:"field"},Oe={class:"field"},je=["value"],qe={class:"modal-actions"},Ke=["disabled"],Je=N({__name:"FilesView",setup(h){const{t}=te(),k=ne(),d=ie(),r=_([]),b=_(0),g=_(!1),m=A({page:1,size:10,keyword:""}),c=_(new Set);async function v(){g.value=!0;try{const n=await ue({...m});r.value=n.data,b.value=n.total,c.value=new Set}catch(n){d.error(n instanceof x?n.msg:t("admin.files.loadFailed"))}finally{g.value=!1}}function M(){m.page=1,v()}function U(n,i){m.page=n,m.size=i,v()}function I(n){const i=new Set(c.value);i.has(n)?i.delete(n):i.add(n),c.value=i}const F=()=>r.value.length>0&&r.value.every(n=>c.value.has(n.id));function R(){c.value=F()?new Set:new Set(r.value.map(n=>n.id))}async function H(n){if(window.confirm(t("admin.files.confirmDelete",{name:n.name||n.code})))try{await me(n.id),d.success(t("admin.files.deleteSuccess")),v()}catch(i){d.error(i instanceof x?i.msg:t("admin.files.deleteFailed"))}}async function P(){if(c.value.size&&window.confirm(t("admin.files.confirmBatchDelete",{count:c.value.size})))try{await re([...c.value]),d.success(t("admin.files.batchDeleteSuccess")),v()}catch(n){d.error(n instanceof x?n.msg:t("admin.files.batchDeleteFailed"))}}const y=_(!1),C=_(!1),o=A({id:0,code:"",expired_at:"",expired_count:null,original:null});function O(n){o.id=n.id,o.code=n.code,o.original=n,o.expired_at=n.expiredAt?j(n.expiredAt):"",o.expired_count=n.expiredCount,y.value=!0}function j(n){const i=new Date(n);if(Number.isNaN(i.getTime()))return"";const s=u=>`${u}`.padStart(2,"0");return`${i.getFullYear()}-${s(i.getMonth()+1)}-${s(i.getDate())}T${s(i.getHours())}:${s(i.getMinutes())}`}async function q(){const n=o.original;if(!n)return;const i={id:o.id};o.code.trim()&&o.code.trim()!==n.code&&(i.code=o.code.trim());const s=o.expired_count;if(s!==null&&s!==n.expiredCount&&(i.expired_count=s),o.expired_at){const u=new Date(o.expired_at).toISOString();u!==n.expiredAt&&(i.expired_at=u)}if(Object.keys(i).length===1){d.info(t("admin.files.nothingChanged")),y.value=!1;return}C.value=!0;try{await pe(i),d.success(t("admin.files.updateSuccess")),y.value=!1,v()}catch(u){d.error(u instanceof x?u.msg:t("admin.files.updateFailed"))}finally{C.value=!1}}async function K(n){await w(de(n.code,k.shareLinkBase))?d.success(t("admin.files.linkCopied")):d.error(t("common.copyFailed"))}async function W(n){await w(n.code)?d.success(t("admin.files.codeCopied")):d.error(t("common.copyFailed"))}async function G(n){try{const i=await fe(n.code);ce(new Blob([i],{type:"text/plain;charset=utf-8"}),n.name||`${n.code}.txt`)}catch(i){d.error(i instanceof x?i.msg:t("admin.files.fetchTextFailed"))}}function Q(n){return n.expiredCount===null||n.expiredCount<0?t("admin.files.remainingUnlimited"):t("admin.files.remainingCount",{n:n.expiredCount})}return V(v),(n,i)=>(p(),f("div",null,[e("div",ye,[e("div",null,[e("h2",_e,a(l(t)("admin.files.title")),1),e("p",xe,a(l(t)("admin.files.totalRecords",{total:b.value})),1)]),e("form",{class:"toolbar-actions",onSubmit:$(M,["prevent"])},[S(e("input",{"onUpdate:modelValue":i[0]||(i[0]=s=>m.keyword=s),class:"input",placeholder:l(t)("admin.files.searchPlaceholder"),style:{"max-width":"220px"}},null,8,ke),[[T,m.keyword]]),e("button",Ce,a(l(t)("common.search")),1),e("button",{class:"btn btn-ghost",type:"button",onClick:v},a(l(t)("common.refresh")),1),e("button",{class:"btn btn-danger-ghost",type:"button",disabled:!c.value.size,title:c.value.size?l(t)("admin.files.deleteSelectedTitle",{count:c.value.size}):l(t)("admin.files.selectFirst"),onClick:P},a(c.value.size?l(t)("admin.files.batchDeleteWithCount",{count:c.value.size}):l(t)("admin.files.batchDelete")),9,Se)],32)]),g.value?(p(),f("div",Te,[i[6]||(i[6]=e("span",{class:"spin","aria-hidden":"true"},null,-1)),z(" "+a(l(t)("admin.files.loading")),1)])):r.value.length?(p(),f("div",Fe,[e("table",ze,[e("thead",null,[e("tr",null,[e("th",De,[e("input",{type:"checkbox",checked:F(),onChange:R},null,40,Ae)]),e("th",null,a(l(t)("admin.files.colCode")),1),e("th",null,a(l(t)("admin.files.colName")),1),e("th",null,a(l(t)("admin.files.colType")),1),e("th",null,a(l(t)("admin.files.colSize")),1),e("th",null,a(l(t)("admin.files.colUsed")),1),e("th",null,a(l(t)("admin.files.colRemaining")),1),e("th",null,a(l(t)("admin.files.colExpireAt")),1),e("th",null,a(l(t)("admin.files.colStatus")),1),e("th",null,a(l(t)("admin.files.colCreatedAt")),1),e("th",Be,a(l(t)("common.actions")),1)])]),e("tbody",null,[(p(!0),f(se,null,le(r.value,s=>(p(),f("tr",{key:s.id},[e("td",null,[e("input",{type:"checkbox",checked:c.value.has(s.id),onChange:u=>I(s.id)},null,40,Ee)]),e("td",we,a(s.code),1),e("td",{class:"wrap",title:s.name},a(s.name||"-"),9,Ne),e("td",null,[e("span",{class:B(["badge",s.isText?"badge-muted":""])},a(s.isText?l(t)("common.text"):l(t)("common.file")),3)]),e("td",null,a(s.isText?"-":l(oe)(s.size)),1),e("td",null,a(s.usedCount),1),e("td",null,a(Q(s)),1),e("td",null,a(s.expiredAt?l(E)(s.expiredAt):l(t)("time.permanent")),1),e("td",null,[e("span",{class:B(["badge",s.isExpired?"badge-danger":"badge-success"])},a(s.isExpired?l(t)("admin.files.statusExpired"):l(t)("admin.files.statusValid")),3)]),e("td",null,a(l(E)(s.createdAt)),1),e("td",null,[e("div",Ve,[e("button",{class:"btn btn-ghost btn-sm",type:"button",onClick:u=>W(s)},a(l(t)("admin.files.copyCode")),9,Le),e("button",{class:"btn btn-ghost btn-sm",type:"button",onClick:u=>K(s)},a(l(t)("admin.files.copyLink")),9,Me),e("button",{class:"btn btn-ghost btn-sm",type:"button",onClick:u=>O(s)},a(l(t)("admin.files.edit")),9,Ue),s.isText?(p(),f("button",{key:0,class:"btn btn-ghost btn-sm",type:"button",onClick:u=>G(s)},a(l(t)("admin.files.fetchText")),9,Ie)):L("",!0),e("button",{class:"btn btn-danger-ghost btn-sm",type:"button",onClick:u=>H(s)},a(l(t)("admin.files.delete")),9,Re)])])]))),128))])])])):(p(),f("div",$e,[i[7]||(i[7]=e("div",{class:"empty-icon"},"🗂",-1)),z(" "+a(l(t)("admin.files.empty")),1)])),D(he,{page:m.page,size:m.size,total:b.value,onChange:U},null,8,["page","size","total"]),D(ge,{open:y.value,title:l(t)("admin.files.editModalTitle"),onClose:i[5]||(i[5]=s=>y.value=!1)},{default:ae(()=>[e("form",{onSubmit:$(q,["prevent"])},[e("div",He,[e("label",null,a(l(t)("admin.files.colCode")),1),S(e("input",{"onUpdate:modelValue":i[1]||(i[1]=s=>o.code=s),class:"input input-mono",maxlength:"32"},null,512),[[T,o.code]])]),e("div",Pe,[e("label",null,a(l(t)("admin.files.expireAtHint")),1),S(e("input",{"onUpdate:modelValue":i[2]||(i[2]=s=>o.expired_at=s),class:"input",type:"datetime-local"},null,512),[[T,o.expired_at]])]),e("div",Oe,[e("label",null,a(l(t)("admin.files.expireCountHint")),1),e("input",{class:"input",type:"number",value:o.expired_count??-1,onInput:i[3]||(i[3]=s=>o.expired_count=Number(s.target.value))},null,40,je)]),e("div",qe,[e("button",{class:"btn btn-ghost",type:"button",onClick:i[4]||(i[4]=s=>y.value=!1)},a(l(t)("common.cancel")),1),e("button",{class:"btn",type:"submit",disabled:C.value},a(l(t)("common.save")),9,Ke)])],32)]),_:1},8,["open","title"])]))}});export{Je as default}; +import{d as N,I as V,P as Y,z as J,c as f,w as $,b as e,t as a,Q as X,n as Z,g as L,T as ee,o as p,u as te,a as ne,i as ie,f as l,C as S,D as T,q as z,F as se,r as le,G as D,A as ae,j as _,R as A,H as x,e as B,s as oe,K as E,k as w,p as de,M as ce}from"./index-BKnWAKao.js";import{a as ue,b as re,c as me,d as pe}from"./admin-KnbIpHLF.js";import{p as fe}from"./share-B-zR67vw.js";import{_ as he}from"./Pager.vue_vue_type_script_setup_true_lang-DZv_x-2P.js";const be=["aria-label"],ve={class:"modal-title"},ge=N({__name:"AppModal",props:{open:{type:Boolean},title:{},width:{}},emits:["close"],setup(h,{emit:t}){const k=h,d=t;function r(b){b.key==="Escape"&&k.open&&d("close")}return V(()=>document.addEventListener("keydown",r)),Y(()=>document.removeEventListener("keydown",r)),(b,g)=>(p(),J(ee,{to:"body"},[h.open?(p(),f("div",{key:0,class:"modal-overlay",onClick:g[0]||(g[0]=$(m=>d("close"),["self"]))},[e("div",{class:"modal",style:Z(h.width?{maxWidth:h.width}:void 0),role:"dialog","aria-modal":"true","aria-label":h.title},[e("h3",ve,a(h.title),1),X(b.$slots,"default")],12,be)])):L("",!0)]))}}),ye={class:"toolbar"},_e={class:"page-title"},xe={class:"page-sub"},ke=["placeholder"],Ce={class:"btn",type:"submit"},Se=["disabled","title"],Te={key:0,class:"loading-block"},$e={key:1,class:"card empty"},Fe={key:2,class:"table-wrap"},ze={class:"table"},De={style:{width:"36px"}},Ae=["checked"],Be={style:{"min-width":"210px"}},Ee=["checked","onChange"],we={class:"code-cell"},Ne=["title"],Ve={class:"row-actions"},Le=["onClick"],Me=["onClick"],Ue=["onClick"],Ie=["onClick"],Re=["onClick"],He={class:"field"},Pe={class:"field"},Oe={class:"field"},je=["value"],qe={class:"modal-actions"},Ke=["disabled"],Je=N({__name:"FilesView",setup(h){const{t}=te(),k=ne(),d=ie(),r=_([]),b=_(0),g=_(!1),m=A({page:1,size:10,keyword:""}),c=_(new Set);async function v(){g.value=!0;try{const n=await ue({...m});r.value=n.data,b.value=n.total,c.value=new Set}catch(n){d.error(n instanceof x?n.msg:t("admin.files.loadFailed"))}finally{g.value=!1}}function M(){m.page=1,v()}function U(n,i){m.page=n,m.size=i,v()}function I(n){const i=new Set(c.value);i.has(n)?i.delete(n):i.add(n),c.value=i}const F=()=>r.value.length>0&&r.value.every(n=>c.value.has(n.id));function R(){c.value=F()?new Set:new Set(r.value.map(n=>n.id))}async function H(n){if(window.confirm(t("admin.files.confirmDelete",{name:n.name||n.code})))try{await me(n.id),d.success(t("admin.files.deleteSuccess")),v()}catch(i){d.error(i instanceof x?i.msg:t("admin.files.deleteFailed"))}}async function P(){if(c.value.size&&window.confirm(t("admin.files.confirmBatchDelete",{count:c.value.size})))try{await re([...c.value]),d.success(t("admin.files.batchDeleteSuccess")),v()}catch(n){d.error(n instanceof x?n.msg:t("admin.files.batchDeleteFailed"))}}const y=_(!1),C=_(!1),o=A({id:0,code:"",expired_at:"",expired_count:null,original:null});function O(n){o.id=n.id,o.code=n.code,o.original=n,o.expired_at=n.expiredAt?j(n.expiredAt):"",o.expired_count=n.expiredCount,y.value=!0}function j(n){const i=new Date(n);if(Number.isNaN(i.getTime()))return"";const s=u=>`${u}`.padStart(2,"0");return`${i.getFullYear()}-${s(i.getMonth()+1)}-${s(i.getDate())}T${s(i.getHours())}:${s(i.getMinutes())}`}async function q(){const n=o.original;if(!n)return;const i={id:o.id};o.code.trim()&&o.code.trim()!==n.code&&(i.code=o.code.trim());const s=o.expired_count;if(s!==null&&s!==n.expiredCount&&(i.expired_count=s),o.expired_at){const u=new Date(o.expired_at).toISOString();u!==n.expiredAt&&(i.expired_at=u)}if(Object.keys(i).length===1){d.info(t("admin.files.nothingChanged")),y.value=!1;return}C.value=!0;try{await pe(i),d.success(t("admin.files.updateSuccess")),y.value=!1,v()}catch(u){d.error(u instanceof x?u.msg:t("admin.files.updateFailed"))}finally{C.value=!1}}async function K(n){await w(de(n.code,k.shareLinkBase))?d.success(t("admin.files.linkCopied")):d.error(t("common.copyFailed"))}async function W(n){await w(n.code)?d.success(t("admin.files.codeCopied")):d.error(t("common.copyFailed"))}async function G(n){try{const i=await fe(n.code);ce(new Blob([i],{type:"text/plain;charset=utf-8"}),n.name||`${n.code}.txt`)}catch(i){d.error(i instanceof x?i.msg:t("admin.files.fetchTextFailed"))}}function Q(n){return n.expiredCount===null||n.expiredCount<0?t("admin.files.remainingUnlimited"):t("admin.files.remainingCount",{n:n.expiredCount})}return V(v),(n,i)=>(p(),f("div",null,[e("div",ye,[e("div",null,[e("h2",_e,a(l(t)("admin.files.title")),1),e("p",xe,a(l(t)("admin.files.totalRecords",{total:b.value})),1)]),e("form",{class:"toolbar-actions",onSubmit:$(M,["prevent"])},[S(e("input",{"onUpdate:modelValue":i[0]||(i[0]=s=>m.keyword=s),class:"input",placeholder:l(t)("admin.files.searchPlaceholder"),style:{"max-width":"220px"}},null,8,ke),[[T,m.keyword]]),e("button",Ce,a(l(t)("common.search")),1),e("button",{class:"btn btn-ghost",type:"button",onClick:v},a(l(t)("common.refresh")),1),e("button",{class:"btn btn-danger-ghost",type:"button",disabled:!c.value.size,title:c.value.size?l(t)("admin.files.deleteSelectedTitle",{count:c.value.size}):l(t)("admin.files.selectFirst"),onClick:P},a(c.value.size?l(t)("admin.files.batchDeleteWithCount",{count:c.value.size}):l(t)("admin.files.batchDelete")),9,Se)],32)]),g.value?(p(),f("div",Te,[i[6]||(i[6]=e("span",{class:"spin","aria-hidden":"true"},null,-1)),z(" "+a(l(t)("admin.files.loading")),1)])):r.value.length?(p(),f("div",Fe,[e("table",ze,[e("thead",null,[e("tr",null,[e("th",De,[e("input",{type:"checkbox",checked:F(),onChange:R},null,40,Ae)]),e("th",null,a(l(t)("admin.files.colCode")),1),e("th",null,a(l(t)("admin.files.colName")),1),e("th",null,a(l(t)("admin.files.colType")),1),e("th",null,a(l(t)("admin.files.colSize")),1),e("th",null,a(l(t)("admin.files.colUsed")),1),e("th",null,a(l(t)("admin.files.colRemaining")),1),e("th",null,a(l(t)("admin.files.colExpireAt")),1),e("th",null,a(l(t)("admin.files.colStatus")),1),e("th",null,a(l(t)("admin.files.colCreatedAt")),1),e("th",Be,a(l(t)("common.actions")),1)])]),e("tbody",null,[(p(!0),f(se,null,le(r.value,s=>(p(),f("tr",{key:s.id},[e("td",null,[e("input",{type:"checkbox",checked:c.value.has(s.id),onChange:u=>I(s.id)},null,40,Ee)]),e("td",we,a(s.code),1),e("td",{class:"wrap",title:s.name},a(s.name||"-"),9,Ne),e("td",null,[e("span",{class:B(["badge",s.isText?"badge-muted":""])},a(s.isText?l(t)("common.text"):l(t)("common.file")),3)]),e("td",null,a(s.isText?"-":l(oe)(s.size)),1),e("td",null,a(s.usedCount),1),e("td",null,a(Q(s)),1),e("td",null,a(s.expiredAt?l(E)(s.expiredAt):l(t)("time.permanent")),1),e("td",null,[e("span",{class:B(["badge",s.isExpired?"badge-danger":"badge-success"])},a(s.isExpired?l(t)("admin.files.statusExpired"):l(t)("admin.files.statusValid")),3)]),e("td",null,a(l(E)(s.createdAt)),1),e("td",null,[e("div",Ve,[e("button",{class:"btn btn-ghost btn-sm",type:"button",onClick:u=>W(s)},a(l(t)("admin.files.copyCode")),9,Le),e("button",{class:"btn btn-ghost btn-sm",type:"button",onClick:u=>K(s)},a(l(t)("admin.files.copyLink")),9,Me),e("button",{class:"btn btn-ghost btn-sm",type:"button",onClick:u=>O(s)},a(l(t)("admin.files.edit")),9,Ue),s.isText?(p(),f("button",{key:0,class:"btn btn-ghost btn-sm",type:"button",onClick:u=>G(s)},a(l(t)("admin.files.fetchText")),9,Ie)):L("",!0),e("button",{class:"btn btn-danger-ghost btn-sm",type:"button",onClick:u=>H(s)},a(l(t)("admin.files.delete")),9,Re)])])]))),128))])])])):(p(),f("div",$e,[i[7]||(i[7]=e("div",{class:"empty-icon"},"🗂",-1)),z(" "+a(l(t)("admin.files.empty")),1)])),D(he,{page:m.page,size:m.size,total:b.value,onChange:U},null,8,["page","size","total"]),D(ge,{open:y.value,title:l(t)("admin.files.editModalTitle"),onClose:i[5]||(i[5]=s=>y.value=!1)},{default:ae(()=>[e("form",{onSubmit:$(q,["prevent"])},[e("div",He,[e("label",null,a(l(t)("admin.files.colCode")),1),S(e("input",{"onUpdate:modelValue":i[1]||(i[1]=s=>o.code=s),class:"input input-mono",maxlength:"32"},null,512),[[T,o.code]])]),e("div",Pe,[e("label",null,a(l(t)("admin.files.expireAtHint")),1),S(e("input",{"onUpdate:modelValue":i[2]||(i[2]=s=>o.expired_at=s),class:"input",type:"datetime-local"},null,512),[[T,o.expired_at]])]),e("div",Oe,[e("label",null,a(l(t)("admin.files.expireCountHint")),1),e("input",{class:"input",type:"number",value:o.expired_count??-1,onInput:i[3]||(i[3]=s=>o.expired_count=Number(s.target.value))},null,40,je)]),e("div",qe,[e("button",{class:"btn btn-ghost",type:"button",onClick:i[4]||(i[4]=s=>y.value=!1)},a(l(t)("common.cancel")),1),e("button",{class:"btn",type:"submit",disabled:C.value},a(l(t)("common.save")),9,Ke)])],32)]),_:1},8,["open","title"])]))}});export{Je as default}; diff --git a/server/web/dist/assets/HomeView-D38U_AAJ.js b/server/web/dist/assets/HomeView-BUGc7QyM.js similarity index 98% rename from server/web/dist/assets/HomeView-D38U_AAJ.js rename to server/web/dist/assets/HomeView-BUGc7QyM.js index ee841dd..2d9e550 100644 --- a/server/web/dist/assets/HomeView-D38U_AAJ.js +++ b/server/web/dist/assets/HomeView-BUGc7QyM.js @@ -1 +1 @@ -import{d as W,u as Y,a as G,o as m,c as h,b as t,n as L,e as K,t as i,f as n,g as B,F as H,r as ne,h as $,E as q,_ as Z,i as ee,j as w,k as le,p as ae,l as se,w as O,m as ie,q as P,s as R,v as I,x as A,y as ue,z as re,A as ce,B as de,C as N,D as j,G as X,H as ve}from"./index-DYsKpclu.js";import{P as pe}from"./PageShell-D87JkPkG.js";import{s as me,a as he}from"./share-CqDDLJWI.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js";const fe={class:"field-row"},ye={class:"field-sub"},xe=["max","value"],be={class:"field-sub"},ke=["value"],_e=["value"],Se={key:0,class:"hint",style:{color:"var(--c-warn)"}},ge={key:1,class:"hint"},Ce={key:2,class:"hint"},$e={key:3,class:"hint"},ze=W({__name:"ExpirePicker",props:{value:{},style:{},compact:{type:Boolean}},emits:["update:value","update:style"],setup(a,{emit:e}){const o=a,c=e,{t:r,te:C}=Y(),f=G(),z=$(()=>{const g=f.expireStyle.length?f.expireStyle:["day","hour","minute","forever","count"],d=q.filter(x=>g.includes(x.value)),v=g.filter(x=>!q.some(E=>E.value===x)).map(x=>({value:x,label:x}));return[...d,...v]}),S=$(()=>o.style==="forever"),y=$(()=>o.style==="count"),p=$(()=>f.maxSaveCount>0?f.maxSaveCount:9999),b=$(()=>f.maxSaveSeconds>0?f.maxSaveSeconds:0),V={day:86400,hour:3600,minute:60};function u(g){const d=b.value,v=V[g];return v?d<=0?9999:Math.max(1,Math.floor(d/v)):g==="count"?p.value:9999}const l=$(()=>{if(y.value&&f.maxSaveCount>0&&o.value>f.maxSaveCount)return r("expire.maxCountHint",{n:f.maxSaveCount});if(!S.value&&!y.value&&b.value>0){const g=u(o.style);if(o.value>g){const d=q.find(v=>v.value===o.style)?.label??o.style;return r("expire.maxSecondsHint",{value:`${g} ${d}`})}}return""}),T=$(()=>q.find(g=>g.value===o.style)?.label??o.style);function M(g,d){const v=`expireStyle.${g}`;return C(v)?r(v):d}function F(g){const d=g.target.value;c("update:style",d),d==="count"&&o.value>p.value&&c("update:value",1),d==="minute"&&o.value<1&&c("update:value",10)}return(g,d)=>(m(),h(H,null,[t("div",fe,[S.value?B("",!0):(m(),h("label",{key:0,class:K(["expire-value",{compact:a.compact}]),style:L(a.compact?"flex:0 0 110px":"")},[t("span",ye,i(n(r)("expire.value")),1),t("input",{class:"input",type:"number",min:1,max:u(a.style),value:a.value,onInput:d[0]||(d[0]=v=>c("update:value",Math.max(1,Number(v.target.value)||1)))},null,40,xe)],6)),t("label",{style:L(S.value?"flex:1":"")},[t("span",be,i(n(r)("expire.label")),1),t("select",{class:"select",value:a.style,onChange:F},[(m(!0),h(H,null,ne(z.value,v=>(m(),h("option",{key:v.value,value:v.value},i(S.value&&v.value==="forever"?n(r)("expire.foreverOption"):v.value==="count"?n(r)("expire.countOption"):M(v.value,v.label)),9,_e))),128))],40,ke)],4)]),l.value?(m(),h("p",Se,i(l.value),1)):a.style==="count"?(m(),h("p",ge,i(n(r)("expire.countHint")),1)):S.value?(m(),h("p",$e,i(n(r)("expire.foreverHint")),1)):(m(),h("p",Ce,i(n(r)("expire.timeHint",{value:a.value,unit:T.value})),1))],64))}}),Q=Z(ze,[["__scopeId","data-v-d049fcf9"]]),we={class:"card result-card"},Te={class:"result-head"},Ve={class:"badge badge-success"},Ee={key:0,class:"result-name"},Me={class:"field"},Be=["title"],De={class:"field"},Fe={class:"link-row"},Pe=["value"],Ue={class:"result-meta"},Le={key:0},He={class:"hint",style:{"margin-top":"10px"}},Oe=W({__name:"ResultCard",props:{code:{},name:{},expireValue:{},expireStyle:{}},setup(a){const e=a,{t:o}=Y(),c=ee(),r=G(),C=w(null),f=$(()=>ae(e.code,r.shareLinkBase));async function z(y){const p=y==="link"?f.value:e.code;await le(p)?(C.value=y,c.success(o(y==="link"?"result.linkCopied":"result.codeCopied")),setTimeout(()=>C.value=null,1600)):c.error(o("result.copyFailed"))}const S=$(()=>e.expireStyle==="forever"?o("result.forever"):`${e.expireValue??"-"} ${se(e.expireStyle??"")}`);return(y,p)=>(m(),h("div",we,[t("div",Te,[t("span",Ve,i(n(o)("result.badge")),1),a.name?(m(),h("span",Ee,i(a.name),1)):B("",!0)]),t("div",Me,[t("label",null,i(n(o)("result.code")),1),t("button",{class:"code-display code-copy",type:"button",title:n(o)("result.clickCopyCode"),onClick:p[0]||(p[0]=b=>z("code"))},i(a.code),9,Be)]),t("div",De,[t("label",null,i(n(o)("result.link")),1),t("div",Fe,[t("input",{class:"input input-mono",value:f.value,readonly:"",onFocus:p[1]||(p[1]=b=>b.target.select())},null,40,Pe),t("button",{class:"btn btn-ghost",type:"button",onClick:p[2]||(p[2]=b=>z("link"))},i(C.value==="link"?n(o)("common.copied"):n(o)("result.copyLink")),1)])]),t("div",Ue,[a.expireStyle?(m(),h("span",Le,i(n(o)("result.expires",{value:S.value})),1)):B("",!0)]),t("p",He,i(n(o)("result.hint")),1)]))}}),Re=Z(Oe,[["__scopeId","data-v-8bebf3d9"]]),Ie=["aria-label"],Ae={class:"dz-main"},qe={class:"dz-sub"},Ne={key:1,class:"file-chip"},je={class:"fc-name"},Xe={class:"fc-size"},Ke=["title"],We={key:2,class:"hint",style:{color:"var(--c-danger)"}},Ye=["accept"],Ge=W({__name:"FileDrop",props:{modelValue:{},maxSize:{},disabled:{type:Boolean},acceptTypes:{}},emits:["update:modelValue"],setup(a,{emit:e}){const o=a,c=e,{t:r}=Y(),C=w(null),f=w(!1),z=w(""),S=$(()=>{const u=(o.acceptTypes??[]).map(l=>l.trim()).filter(Boolean);return!u.length||u.some(l=>l==="*"||l==="*/*")?"":u.map(l=>l.includes("/")||l.startsWith(".")?l:`.${l.toLowerCase()}`).join(",")}),y=$(()=>{const u=(o.acceptTypes??[]).filter(l=>l&&l!=="*"&&l!=="*/*");return u.length?r("drop.typeHint",{types:u.join(", ")}):""});function p(u){if(z.value="",!!u){if(o.maxSize&&u.size>o.maxSize){z.value=r("drop.tooLarge",{size:R(u.size),limit:R(o.maxSize)}),c("update:modelValue",null);return}c("update:modelValue",u)}}function b(u){f.value=!1,!o.disabled&&p(u.dataTransfer?.files?.[0])}function V(u){const l=u.target;p(l.files?.[0]),l.value=""}return(u,l)=>(m(),h("div",null,[a.modelValue?(m(),h("div",Ne,[l[6]||(l[6]=t("span",{"aria-hidden":"true"},"📄",-1)),t("span",je,i(a.modelValue.name),1),t("span",Xe,i(n(R)(a.modelValue.size)),1),t("button",{class:"fc-remove",type:"button",title:n(r)("drop.remove"),onClick:l[4]||(l[4]=T=>c("update:modelValue",null))},"✕",8,Ke)])):(m(),h("div",{key:0,class:K(["dropzone",{dragover:f.value,disabled:a.disabled}]),role:"button",tabindex:"0","aria-label":n(r)("drop.aria"),onClick:l[0]||(l[0]=T=>!a.disabled&&C.value?.click()),onKeydown:l[1]||(l[1]=ie(O(T=>!a.disabled&&C.value?.click(),["prevent"]),["enter"])),onDragover:l[2]||(l[2]=O(T=>f.value=!0,["prevent"])),onDragleave:l[3]||(l[3]=T=>f.value=!1),onDrop:O(b,["prevent"])},[l[5]||(l[5]=t("div",{class:"dz-icon","aria-hidden":"true"},"📦",-1)),t("div",Ae,i(n(r)("drop.zone")),1),t("div",qe,[a.maxSize?(m(),h(H,{key:0},[P(i(n(r)("drop.maxSize",{size:n(R)(a.maxSize)})),1)],64)):(m(),h(H,{key:1},[P(i(n(r)("drop.noLimit")),1)],64)),y.value?(m(),h(H,{key:2},[P(" · "+i(y.value),1)],64)):B("",!0)])],42,Ie)),z.value?(m(),h("p",We,i(z.value),1)):B("",!0),t("input",{ref_key:"inputRef",ref:C,type:"file",hidden:"",accept:S.value,onChange:V},null,40,Ye)]))}}),Ze=Z(Ge,[["__scopeId","data-v-1b57fe5c"]]);function Je(a,e,o,c){return I(A.chunkInit,{method:"POST",json:{file_name:a,file_size:e,chunk_size:o,file_hash:c},timeout:6e4})}async function Qe(a,e,o){const c=new FormData;c.append("upload_id",a),c.append("chunk_index",String(e)),c.append("chunk",o,`chunk-${e}`),await I(A.chunkUpload(a,e),{method:"POST",formData:c,timeout:12e4})}function et(a){return I(A.chunkStatus(a),{timeout:6e4})}function tt(a,e,o,c=""){return I(A.chunkFinish(a),{method:"POST",json:{expire_value:e,expire_style:o,code:c},timeout:3e5})}async function ot(a){await I(A.chunkCancel(a),{method:"DELETE",timeout:6e4})}function nt(a){return a<=10*1024*1024?{chunkSize:1*1024*1024,concurrency:3}:a<=100*1024*1024?{chunkSize:5*1024*1024,concurrency:3}:a<=512*1024*1024?{chunkSize:10*1024*1024,concurrency:2}:{chunkSize:20*1024*1024,concurrency:2}}function lt(a,e){const{file:o,expireValue:c,expireStyle:r,customCode:C,onProgress:f}=a;let z=!1;return{promise:(async()=>{const y=nt(o.size),p=Math.max(1,Math.ceil(o.size/y.chunkSize));let b;try{b=await ue(await o.arrayBuffer())}catch{b=`nofp-${o.size}-${o.lastModified}`}const V=await e.init(o.name,o.size,y.chunkSize,b),u=V.upload_id,l=V.chunk_size||y.chunkSize,T=V.total_chunks||p,M=new Set(V.uploaded_chunks??[]),F=()=>{if(!f)return;let x=0;for(const E of M){const D=E*l;x+=Math.max(0,Math.min(l,o.size-D))}f(Math.min(100,Math.round(x/o.size*100)),x,o.size)};F();const g=async x=>{for(let E=0;E<2;E++)try{const D=x*l,U=o.slice(D,Math.min(D+l,o.size));await e.uploadOne(u,x,U),M.add(x),F();return}catch(D){if(E===1)throw D}};let d=0;const v=async()=>{for(;!z;){const x=d++;if(x>=T)return;M.has(x)||await g(x)}};if(await Promise.all(Array.from({length:y.concurrency},()=>v())),z)throw await e.cancel(u).catch(()=>{}),new DOMException("上传已取消","AbortError");if(M.sizez=!0}}const at={class:"hero"},st=["placeholder"],it={class:"btn",type:"submit"},ut={class:"card share-card"},rt={class:"tabs",role:"tablist"},ct={class:"field"},dt=["placeholder"],vt={class:"field"},pt={for:"share-custom-code"},mt=["placeholder"],ht={class:"field"},ft=["disabled"],yt={key:0,class:"spin","aria-hidden":"true"},xt={class:"field"},bt={class:"field"},kt={class:"field"},_t={for:"share-custom-code-file"},St=["placeholder"],gt={key:0,class:"field"},Ct={class:"progress"},$t={class:"hint"},zt=["disabled"],wt={key:0,class:"spin","aria-hidden":"true"},Tt={key:1,class:"empty"},Vt={key:2,style:{"margin-top":"18px"}},Et=222*1024,Pt=W({__name:"HomeView",setup(a){const{t:e}=Y(),o=de(),c=G(),r=ee(),C=w("text"),f=w("");function z(){const k=f.value.trim();if(!k){r.error(e("home.pickupRequired"));return}o.push({name:"pickup",params:{code:k}})}const S=w(1),y=w("day"),p=w(!1),b=w(null);function V(k,s){return k instanceof ve?k.code===423?e("home.rateLimited"):k.code===428?e("home.notInitialized"):k.msg||s:s}const u=w(""),l=/^[A-Za-z0-9]{4,8}$/,T=w(""),M=$(()=>new TextEncoder().encode(T.value).length),F=$(()=>M.value>Et);async function g(){const k=T.value;if(!k.trim()){r.error(e("home.textRequired"));return}if(F.value){r.error(e("home.textTooLong"));return}if(u.value.trim()&&!l.test(u.value.trim())){r.error(e("home.customCodeInvalid"));return}p.value=!0;try{const s=await me(k,S.value,y.value,u.value.trim());b.value={code:s.code},r.success(e("home.textShared"))}catch(s){r.error(V(s,e("home.shareFailed")))}finally{p.value=!1}}const d=w(null),v=w(null),x=w(null),E=$(()=>c.openUpload),D=$(()=>!!(d.value&&c.enableChunk&&d.value.size>8*1024*1024)),U=$(()=>c.effectiveMaxFileSize);async function te(){if(!d.value){r.error(e("home.fileRequired"));return}if(U.value&&d.value.size>U.value){r.error(e("home.fileTooLarge",{size:R(U.value)}));return}p.value=!0,v.value=0,b.value=null;try{if(u.value.trim()&&!l.test(u.value.trim())){r.error(e("home.customCodeInvalid"));return}if(D.value){const k=lt({file:d.value,expireValue:S.value,expireStyle:y.value,customCode:u.value.trim(),onProgress:_=>v.value=_},{init:Je,uploadOne:Qe,status:et,finish:tt,cancel:ot});x.value=k;const s=await k.promise;b.value={code:s.code,name:s.name}}else{const k=await he(d.value,S.value,y.value,s=>v.value=s,u.value.trim());b.value={code:k.code,name:k.name||d.value.name}}r.success(e("home.fileShared")),d.value=null}catch(k){k instanceof DOMException&&k.name==="AbortError"?r.info(e("home.uploadCancelled")):r.error(V(k,e("home.uploadFailed")))}finally{p.value=!1,v.value=null,x.value=null}}function oe(){x.value?.cancel()}function J(k){C.value=k,b.value=null,v.value=null}return(k,s)=>(m(),re(pe,null,{default:ce(()=>[t("section",at,[t("h1",null,i(n(e)("home.heroTitle",{name:n(c).displayName})),1),t("p",null,i(n(c).description||n(e)("home.heroDesc")),1),t("form",{class:"quick-pickup",onSubmit:O(z,["prevent"])},[N(t("input",{"onUpdate:modelValue":s[0]||(s[0]=_=>f.value=_),class:"input",placeholder:n(e)("home.pickupPlaceholder"),maxlength:"32",autocomplete:"off"},null,8,st),[[j,f.value]]),t("button",it,i(n(e)("home.pickupButton")),1)],32)]),t("section",ut,[t("div",rt,[t("button",{class:K(["tab",{active:C.value==="text"}]),type:"button",role:"tab",onClick:s[1]||(s[1]=_=>J("text"))},i(n(e)("home.tabText")),3),t("button",{class:K(["tab",{active:C.value==="file"}]),type:"button",role:"tab",onClick:s[2]||(s[2]=_=>J("file"))},i(n(e)("home.tabFile")),3)]),C.value==="text"?(m(),h("form",{key:0,style:{"margin-top":"18px"},onSubmit:O(g,["prevent"])},[t("div",ct,[t("label",null,i(n(e)("home.textContent")),1),N(t("textarea",{"onUpdate:modelValue":s[3]||(s[3]=_=>T.value=_),class:"textarea",placeholder:n(e)("home.textPlaceholder"),spellcheck:"false"},null,8,dt),[[j,T.value]]),t("p",{class:"hint",style:L(F.value?"color: var(--c-danger)":"")},i(n(e)("home.textBytes",{bytes:M.value.toLocaleString()})),5)]),t("div",vt,[t("label",pt,i(n(e)("home.customCode")),1),N(t("input",{id:"share-custom-code","onUpdate:modelValue":s[4]||(s[4]=_=>u.value=_),class:"input input-mono",placeholder:n(e)("home.customCodeHint"),maxlength:"8",autocomplete:"off"},null,8,mt),[[j,u.value]])]),t("div",ht,[X(Q,{value:S.value,"onUpdate:value":s[5]||(s[5]=_=>S.value=_),style:L(y.value),"onUpdate:style":s[6]||(s[6]=_=>y.value=_)},null,8,["value","style"])]),t("button",{class:"btn btn-block",type:"submit",disabled:p.value||F.value},[p.value?(m(),h("span",yt)):B("",!0),P(" "+i(n(e)("home.generateCode")),1)],8,ft)],32)):(m(),h("form",{key:1,style:{"margin-top":"18px"},onSubmit:O(te,["prevent"])},[E.value?(m(),h(H,{key:0},[t("div",xt,[X(Ze,{modelValue:d.value,"onUpdate:modelValue":s[7]||(s[7]=_=>d.value=_),"max-size":U.value||void 0,"accept-types":n(c).allowedFileTypes,disabled:p.value},null,8,["modelValue","max-size","accept-types","disabled"])]),t("div",bt,[t("div",kt,[t("label",_t,i(n(e)("home.customCode")),1),N(t("input",{id:"share-custom-code-file","onUpdate:modelValue":s[8]||(s[8]=_=>u.value=_),class:"input input-mono",placeholder:n(e)("home.customCodeHint"),maxlength:"8",autocomplete:"off"},null,8,St),[[j,u.value]])]),X(Q,{value:S.value,"onUpdate:value":s[9]||(s[9]=_=>S.value=_),style:L(y.value),"onUpdate:style":s[10]||(s[10]=_=>y.value=_)},null,8,["value","style"])]),v.value!==null?(m(),h("div",gt,[t("div",Ct,[t("i",{style:L({width:`${v.value}%`})},null,4)]),t("p",$t,[P(i(D.value?n(e)("home.chunkedUploading"):n(e)("home.uploading"))+" "+i(v.value)+"% ",1),p.value?(m(),h("button",{key:0,class:"btn btn-ghost btn-sm",type:"button",style:{"margin-left":"8px"},onClick:oe},i(n(e)("common.cancel")),1)):B("",!0)])])):B("",!0),t("button",{class:"btn btn-block",type:"submit",disabled:p.value||!d.value},[p.value?(m(),h("span",wt)):B("",!0),P(" "+i(p.value?n(e)("home.uploadingDots"):n(e)("home.uploadAndShare")),1)],8,zt)],64)):(m(),h("div",Tt,[s[12]||(s[12]=t("div",{class:"empty-icon"},"🚫",-1)),P(" "+i(n(e)("home.uploadDisabled")),1)]))],32)),b.value?(m(),h("div",Vt,[X(Re,{code:b.value.code,name:b.value.name,"expire-value":S.value,"expire-style":y.value},null,8,["code","name","expire-value","expire-style"]),t("button",{class:"btn btn-ghost btn-block",type:"button",style:{"margin-top":"12px"},onClick:s[11]||(s[11]=_=>b.value=null)},i(n(e)("home.shareAnother")),1)])):B("",!0)])]),_:1}))}});export{Pt as default}; +import{d as W,u as Y,a as G,o as m,c as h,b as t,n as L,e as K,t as i,f as n,g as B,F as H,r as ne,h as $,E as q,_ as Z,i as ee,j as w,k as le,p as ae,l as se,w as O,m as ie,q as P,s as R,v as I,x as A,y as ue,z as re,A as ce,B as de,C as N,D as j,G as X,H as ve}from"./index-BKnWAKao.js";import{P as pe}from"./PageShell-CBo29Oot.js";import{s as me,a as he}from"./share-B-zR67vw.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js";const fe={class:"field-row"},ye={class:"field-sub"},xe=["max","value"],be={class:"field-sub"},ke=["value"],_e=["value"],Se={key:0,class:"hint",style:{color:"var(--c-warn)"}},ge={key:1,class:"hint"},Ce={key:2,class:"hint"},$e={key:3,class:"hint"},ze=W({__name:"ExpirePicker",props:{value:{},style:{},compact:{type:Boolean}},emits:["update:value","update:style"],setup(a,{emit:e}){const o=a,c=e,{t:r,te:C}=Y(),f=G(),z=$(()=>{const g=f.expireStyle.length?f.expireStyle:["day","hour","minute","forever","count"],d=q.filter(x=>g.includes(x.value)),v=g.filter(x=>!q.some(E=>E.value===x)).map(x=>({value:x,label:x}));return[...d,...v]}),S=$(()=>o.style==="forever"),y=$(()=>o.style==="count"),p=$(()=>f.maxSaveCount>0?f.maxSaveCount:9999),b=$(()=>f.maxSaveSeconds>0?f.maxSaveSeconds:0),V={day:86400,hour:3600,minute:60};function u(g){const d=b.value,v=V[g];return v?d<=0?9999:Math.max(1,Math.floor(d/v)):g==="count"?p.value:9999}const l=$(()=>{if(y.value&&f.maxSaveCount>0&&o.value>f.maxSaveCount)return r("expire.maxCountHint",{n:f.maxSaveCount});if(!S.value&&!y.value&&b.value>0){const g=u(o.style);if(o.value>g){const d=q.find(v=>v.value===o.style)?.label??o.style;return r("expire.maxSecondsHint",{value:`${g} ${d}`})}}return""}),T=$(()=>q.find(g=>g.value===o.style)?.label??o.style);function M(g,d){const v=`expireStyle.${g}`;return C(v)?r(v):d}function F(g){const d=g.target.value;c("update:style",d),d==="count"&&o.value>p.value&&c("update:value",1),d==="minute"&&o.value<1&&c("update:value",10)}return(g,d)=>(m(),h(H,null,[t("div",fe,[S.value?B("",!0):(m(),h("label",{key:0,class:K(["expire-value",{compact:a.compact}]),style:L(a.compact?"flex:0 0 110px":"")},[t("span",ye,i(n(r)("expire.value")),1),t("input",{class:"input",type:"number",min:1,max:u(a.style),value:a.value,onInput:d[0]||(d[0]=v=>c("update:value",Math.max(1,Number(v.target.value)||1)))},null,40,xe)],6)),t("label",{style:L(S.value?"flex:1":"")},[t("span",be,i(n(r)("expire.label")),1),t("select",{class:"select",value:a.style,onChange:F},[(m(!0),h(H,null,ne(z.value,v=>(m(),h("option",{key:v.value,value:v.value},i(S.value&&v.value==="forever"?n(r)("expire.foreverOption"):v.value==="count"?n(r)("expire.countOption"):M(v.value,v.label)),9,_e))),128))],40,ke)],4)]),l.value?(m(),h("p",Se,i(l.value),1)):a.style==="count"?(m(),h("p",ge,i(n(r)("expire.countHint")),1)):S.value?(m(),h("p",$e,i(n(r)("expire.foreverHint")),1)):(m(),h("p",Ce,i(n(r)("expire.timeHint",{value:a.value,unit:T.value})),1))],64))}}),Q=Z(ze,[["__scopeId","data-v-d049fcf9"]]),we={class:"card result-card"},Te={class:"result-head"},Ve={class:"badge badge-success"},Ee={key:0,class:"result-name"},Me={class:"field"},Be=["title"],De={class:"field"},Fe={class:"link-row"},Pe=["value"],Ue={class:"result-meta"},Le={key:0},He={class:"hint",style:{"margin-top":"10px"}},Oe=W({__name:"ResultCard",props:{code:{},name:{},expireValue:{},expireStyle:{}},setup(a){const e=a,{t:o}=Y(),c=ee(),r=G(),C=w(null),f=$(()=>ae(e.code,r.shareLinkBase));async function z(y){const p=y==="link"?f.value:e.code;await le(p)?(C.value=y,c.success(o(y==="link"?"result.linkCopied":"result.codeCopied")),setTimeout(()=>C.value=null,1600)):c.error(o("result.copyFailed"))}const S=$(()=>e.expireStyle==="forever"?o("result.forever"):`${e.expireValue??"-"} ${se(e.expireStyle??"")}`);return(y,p)=>(m(),h("div",we,[t("div",Te,[t("span",Ve,i(n(o)("result.badge")),1),a.name?(m(),h("span",Ee,i(a.name),1)):B("",!0)]),t("div",Me,[t("label",null,i(n(o)("result.code")),1),t("button",{class:"code-display code-copy",type:"button",title:n(o)("result.clickCopyCode"),onClick:p[0]||(p[0]=b=>z("code"))},i(a.code),9,Be)]),t("div",De,[t("label",null,i(n(o)("result.link")),1),t("div",Fe,[t("input",{class:"input input-mono",value:f.value,readonly:"",onFocus:p[1]||(p[1]=b=>b.target.select())},null,40,Pe),t("button",{class:"btn btn-ghost",type:"button",onClick:p[2]||(p[2]=b=>z("link"))},i(C.value==="link"?n(o)("common.copied"):n(o)("result.copyLink")),1)])]),t("div",Ue,[a.expireStyle?(m(),h("span",Le,i(n(o)("result.expires",{value:S.value})),1)):B("",!0)]),t("p",He,i(n(o)("result.hint")),1)]))}}),Re=Z(Oe,[["__scopeId","data-v-8bebf3d9"]]),Ie=["aria-label"],Ae={class:"dz-main"},qe={class:"dz-sub"},Ne={key:1,class:"file-chip"},je={class:"fc-name"},Xe={class:"fc-size"},Ke=["title"],We={key:2,class:"hint",style:{color:"var(--c-danger)"}},Ye=["accept"],Ge=W({__name:"FileDrop",props:{modelValue:{},maxSize:{},disabled:{type:Boolean},acceptTypes:{}},emits:["update:modelValue"],setup(a,{emit:e}){const o=a,c=e,{t:r}=Y(),C=w(null),f=w(!1),z=w(""),S=$(()=>{const u=(o.acceptTypes??[]).map(l=>l.trim()).filter(Boolean);return!u.length||u.some(l=>l==="*"||l==="*/*")?"":u.map(l=>l.includes("/")||l.startsWith(".")?l:`.${l.toLowerCase()}`).join(",")}),y=$(()=>{const u=(o.acceptTypes??[]).filter(l=>l&&l!=="*"&&l!=="*/*");return u.length?r("drop.typeHint",{types:u.join(", ")}):""});function p(u){if(z.value="",!!u){if(o.maxSize&&u.size>o.maxSize){z.value=r("drop.tooLarge",{size:R(u.size),limit:R(o.maxSize)}),c("update:modelValue",null);return}c("update:modelValue",u)}}function b(u){f.value=!1,!o.disabled&&p(u.dataTransfer?.files?.[0])}function V(u){const l=u.target;p(l.files?.[0]),l.value=""}return(u,l)=>(m(),h("div",null,[a.modelValue?(m(),h("div",Ne,[l[6]||(l[6]=t("span",{"aria-hidden":"true"},"📄",-1)),t("span",je,i(a.modelValue.name),1),t("span",Xe,i(n(R)(a.modelValue.size)),1),t("button",{class:"fc-remove",type:"button",title:n(r)("drop.remove"),onClick:l[4]||(l[4]=T=>c("update:modelValue",null))},"✕",8,Ke)])):(m(),h("div",{key:0,class:K(["dropzone",{dragover:f.value,disabled:a.disabled}]),role:"button",tabindex:"0","aria-label":n(r)("drop.aria"),onClick:l[0]||(l[0]=T=>!a.disabled&&C.value?.click()),onKeydown:l[1]||(l[1]=ie(O(T=>!a.disabled&&C.value?.click(),["prevent"]),["enter"])),onDragover:l[2]||(l[2]=O(T=>f.value=!0,["prevent"])),onDragleave:l[3]||(l[3]=T=>f.value=!1),onDrop:O(b,["prevent"])},[l[5]||(l[5]=t("div",{class:"dz-icon","aria-hidden":"true"},"📦",-1)),t("div",Ae,i(n(r)("drop.zone")),1),t("div",qe,[a.maxSize?(m(),h(H,{key:0},[P(i(n(r)("drop.maxSize",{size:n(R)(a.maxSize)})),1)],64)):(m(),h(H,{key:1},[P(i(n(r)("drop.noLimit")),1)],64)),y.value?(m(),h(H,{key:2},[P(" · "+i(y.value),1)],64)):B("",!0)])],42,Ie)),z.value?(m(),h("p",We,i(z.value),1)):B("",!0),t("input",{ref_key:"inputRef",ref:C,type:"file",hidden:"",accept:S.value,onChange:V},null,40,Ye)]))}}),Ze=Z(Ge,[["__scopeId","data-v-1b57fe5c"]]);function Je(a,e,o,c){return I(A.chunkInit,{method:"POST",json:{file_name:a,file_size:e,chunk_size:o,file_hash:c},timeout:6e4})}async function Qe(a,e,o){const c=new FormData;c.append("upload_id",a),c.append("chunk_index",String(e)),c.append("chunk",o,`chunk-${e}`),await I(A.chunkUpload(a,e),{method:"POST",formData:c,timeout:12e4})}function et(a){return I(A.chunkStatus(a),{timeout:6e4})}function tt(a,e,o,c=""){return I(A.chunkFinish(a),{method:"POST",json:{expire_value:e,expire_style:o,code:c},timeout:3e5})}async function ot(a){await I(A.chunkCancel(a),{method:"DELETE",timeout:6e4})}function nt(a){return a<=10*1024*1024?{chunkSize:1*1024*1024,concurrency:3}:a<=100*1024*1024?{chunkSize:5*1024*1024,concurrency:3}:a<=512*1024*1024?{chunkSize:10*1024*1024,concurrency:2}:{chunkSize:20*1024*1024,concurrency:2}}function lt(a,e){const{file:o,expireValue:c,expireStyle:r,customCode:C,onProgress:f}=a;let z=!1;return{promise:(async()=>{const y=nt(o.size),p=Math.max(1,Math.ceil(o.size/y.chunkSize));let b;try{b=await ue(await o.arrayBuffer())}catch{b=`nofp-${o.size}-${o.lastModified}`}const V=await e.init(o.name,o.size,y.chunkSize,b),u=V.upload_id,l=V.chunk_size||y.chunkSize,T=V.total_chunks||p,M=new Set(V.uploaded_chunks??[]),F=()=>{if(!f)return;let x=0;for(const E of M){const D=E*l;x+=Math.max(0,Math.min(l,o.size-D))}f(Math.min(100,Math.round(x/o.size*100)),x,o.size)};F();const g=async x=>{for(let E=0;E<2;E++)try{const D=x*l,U=o.slice(D,Math.min(D+l,o.size));await e.uploadOne(u,x,U),M.add(x),F();return}catch(D){if(E===1)throw D}};let d=0;const v=async()=>{for(;!z;){const x=d++;if(x>=T)return;M.has(x)||await g(x)}};if(await Promise.all(Array.from({length:y.concurrency},()=>v())),z)throw await e.cancel(u).catch(()=>{}),new DOMException("上传已取消","AbortError");if(M.sizez=!0}}const at={class:"hero"},st=["placeholder"],it={class:"btn",type:"submit"},ut={class:"card share-card"},rt={class:"tabs",role:"tablist"},ct={class:"field"},dt=["placeholder"],vt={class:"field"},pt={for:"share-custom-code"},mt=["placeholder"],ht={class:"field"},ft=["disabled"],yt={key:0,class:"spin","aria-hidden":"true"},xt={class:"field"},bt={class:"field"},kt={class:"field"},_t={for:"share-custom-code-file"},St=["placeholder"],gt={key:0,class:"field"},Ct={class:"progress"},$t={class:"hint"},zt=["disabled"],wt={key:0,class:"spin","aria-hidden":"true"},Tt={key:1,class:"empty"},Vt={key:2,style:{"margin-top":"18px"}},Et=222*1024,Pt=W({__name:"HomeView",setup(a){const{t:e}=Y(),o=de(),c=G(),r=ee(),C=w("text"),f=w("");function z(){const k=f.value.trim();if(!k){r.error(e("home.pickupRequired"));return}o.push({name:"pickup",params:{code:k}})}const S=w(1),y=w("day"),p=w(!1),b=w(null);function V(k,s){return k instanceof ve?k.code===423?e("home.rateLimited"):k.code===428?e("home.notInitialized"):k.msg||s:s}const u=w(""),l=/^[A-Za-z0-9]{4,8}$/,T=w(""),M=$(()=>new TextEncoder().encode(T.value).length),F=$(()=>M.value>Et);async function g(){const k=T.value;if(!k.trim()){r.error(e("home.textRequired"));return}if(F.value){r.error(e("home.textTooLong"));return}if(u.value.trim()&&!l.test(u.value.trim())){r.error(e("home.customCodeInvalid"));return}p.value=!0;try{const s=await me(k,S.value,y.value,u.value.trim());b.value={code:s.code},r.success(e("home.textShared"))}catch(s){r.error(V(s,e("home.shareFailed")))}finally{p.value=!1}}const d=w(null),v=w(null),x=w(null),E=$(()=>c.openUpload),D=$(()=>!!(d.value&&c.enableChunk&&d.value.size>8*1024*1024)),U=$(()=>c.effectiveMaxFileSize);async function te(){if(!d.value){r.error(e("home.fileRequired"));return}if(U.value&&d.value.size>U.value){r.error(e("home.fileTooLarge",{size:R(U.value)}));return}p.value=!0,v.value=0,b.value=null;try{if(u.value.trim()&&!l.test(u.value.trim())){r.error(e("home.customCodeInvalid"));return}if(D.value){const k=lt({file:d.value,expireValue:S.value,expireStyle:y.value,customCode:u.value.trim(),onProgress:_=>v.value=_},{init:Je,uploadOne:Qe,status:et,finish:tt,cancel:ot});x.value=k;const s=await k.promise;b.value={code:s.code,name:s.name}}else{const k=await he(d.value,S.value,y.value,s=>v.value=s,u.value.trim());b.value={code:k.code,name:k.name||d.value.name}}r.success(e("home.fileShared")),d.value=null}catch(k){k instanceof DOMException&&k.name==="AbortError"?r.info(e("home.uploadCancelled")):r.error(V(k,e("home.uploadFailed")))}finally{p.value=!1,v.value=null,x.value=null}}function oe(){x.value?.cancel()}function J(k){C.value=k,b.value=null,v.value=null}return(k,s)=>(m(),re(pe,null,{default:ce(()=>[t("section",at,[t("h1",null,i(n(e)("home.heroTitle",{name:n(c).displayName})),1),t("p",null,i(n(c).description||n(e)("home.heroDesc")),1),t("form",{class:"quick-pickup",onSubmit:O(z,["prevent"])},[N(t("input",{"onUpdate:modelValue":s[0]||(s[0]=_=>f.value=_),class:"input",placeholder:n(e)("home.pickupPlaceholder"),maxlength:"32",autocomplete:"off"},null,8,st),[[j,f.value]]),t("button",it,i(n(e)("home.pickupButton")),1)],32)]),t("section",ut,[t("div",rt,[t("button",{class:K(["tab",{active:C.value==="text"}]),type:"button",role:"tab",onClick:s[1]||(s[1]=_=>J("text"))},i(n(e)("home.tabText")),3),t("button",{class:K(["tab",{active:C.value==="file"}]),type:"button",role:"tab",onClick:s[2]||(s[2]=_=>J("file"))},i(n(e)("home.tabFile")),3)]),C.value==="text"?(m(),h("form",{key:0,style:{"margin-top":"18px"},onSubmit:O(g,["prevent"])},[t("div",ct,[t("label",null,i(n(e)("home.textContent")),1),N(t("textarea",{"onUpdate:modelValue":s[3]||(s[3]=_=>T.value=_),class:"textarea",placeholder:n(e)("home.textPlaceholder"),spellcheck:"false"},null,8,dt),[[j,T.value]]),t("p",{class:"hint",style:L(F.value?"color: var(--c-danger)":"")},i(n(e)("home.textBytes",{bytes:M.value.toLocaleString()})),5)]),t("div",vt,[t("label",pt,i(n(e)("home.customCode")),1),N(t("input",{id:"share-custom-code","onUpdate:modelValue":s[4]||(s[4]=_=>u.value=_),class:"input input-mono",placeholder:n(e)("home.customCodeHint"),maxlength:"8",autocomplete:"off"},null,8,mt),[[j,u.value]])]),t("div",ht,[X(Q,{value:S.value,"onUpdate:value":s[5]||(s[5]=_=>S.value=_),style:L(y.value),"onUpdate:style":s[6]||(s[6]=_=>y.value=_)},null,8,["value","style"])]),t("button",{class:"btn btn-block",type:"submit",disabled:p.value||F.value},[p.value?(m(),h("span",yt)):B("",!0),P(" "+i(n(e)("home.generateCode")),1)],8,ft)],32)):(m(),h("form",{key:1,style:{"margin-top":"18px"},onSubmit:O(te,["prevent"])},[E.value?(m(),h(H,{key:0},[t("div",xt,[X(Ze,{modelValue:d.value,"onUpdate:modelValue":s[7]||(s[7]=_=>d.value=_),"max-size":U.value||void 0,"accept-types":n(c).allowedFileTypes,disabled:p.value},null,8,["modelValue","max-size","accept-types","disabled"])]),t("div",bt,[t("div",kt,[t("label",_t,i(n(e)("home.customCode")),1),N(t("input",{id:"share-custom-code-file","onUpdate:modelValue":s[8]||(s[8]=_=>u.value=_),class:"input input-mono",placeholder:n(e)("home.customCodeHint"),maxlength:"8",autocomplete:"off"},null,8,St),[[j,u.value]])]),X(Q,{value:S.value,"onUpdate:value":s[9]||(s[9]=_=>S.value=_),style:L(y.value),"onUpdate:style":s[10]||(s[10]=_=>y.value=_)},null,8,["value","style"])]),v.value!==null?(m(),h("div",gt,[t("div",Ct,[t("i",{style:L({width:`${v.value}%`})},null,4)]),t("p",$t,[P(i(D.value?n(e)("home.chunkedUploading"):n(e)("home.uploading"))+" "+i(v.value)+"% ",1),p.value?(m(),h("button",{key:0,class:"btn btn-ghost btn-sm",type:"button",style:{"margin-left":"8px"},onClick:oe},i(n(e)("common.cancel")),1)):B("",!0)])])):B("",!0),t("button",{class:"btn btn-block",type:"submit",disabled:p.value||!d.value},[p.value?(m(),h("span",wt)):B("",!0),P(" "+i(p.value?n(e)("home.uploadingDots"):n(e)("home.uploadAndShare")),1)],8,zt)],64)):(m(),h("div",Tt,[s[12]||(s[12]=t("div",{class:"empty-icon"},"🚫",-1)),P(" "+i(n(e)("home.uploadDisabled")),1)]))],32)),b.value?(m(),h("div",Vt,[X(Re,{code:b.value.code,name:b.value.name,"expire-value":S.value,"expire-style":y.value},null,8,["code","name","expire-value","expire-style"]),t("button",{class:"btn btn-ghost btn-block",type:"button",style:{"margin-top":"12px"},onClick:s[11]||(s[11]=_=>b.value=null)},i(n(e)("home.shareAnother")),1)])):B("",!0)])]),_:1}))}});export{Pt as default}; diff --git a/server/web/dist/assets/LoginView-BnVXNxFO.js b/server/web/dist/assets/LoginView-mkNZ67cf.js similarity index 87% rename from server/web/dist/assets/LoginView-BnVXNxFO.js rename to server/web/dist/assets/LoginView-mkNZ67cf.js index f56ec7c..07131b0 100644 --- a/server/web/dist/assets/LoginView-BnVXNxFO.js +++ b/server/web/dist/assets/LoginView-mkNZ67cf.js @@ -1 +1 @@ -import{d as w,u as b,a as y,z as x,A as k,b as e,f as t,t as a,w as V,C as B,D as C,c as m,g as _,q as N,j as r,N as S,B as q,o as d,H as L,_ as P}from"./index-DYsKpclu.js";import{P as A}from"./PageShell-D87JkPkG.js";import{u as D}from"./auth-B7MDTgxJ.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js";import"./admin-DEOkRyTC.js";const E={class:"card",style:{"max-width":"380px",margin:"8vh auto 0"}},I={class:"login-head"},M=["src"],R={class:"card-title"},T={class:"card-sub"},U={class:"field"},j={for:"admin-password"},z=["placeholder"],H={key:0,class:"hint",style:{color:"var(--c-danger)","margin-bottom":"12px"}},F=["disabled"],G={key:0,class:"spin","aria-hidden":"true"},J={class:"hint",style:{"margin-top":"16px"}},K=w({__name:"LoginView",setup(O){const{t:s}=b(),c=S(),g=q(),h=D(),u=y(),i=r(""),l=r(!1),n=r("");async function f(){if(!i.value){n.value=s("admin.login.required");return}l.value=!0,n.value="";try{await h.login(i.value);const o=typeof c.query.redirect=="string"?c.query.redirect:"/admin/files";g.replace(o)}catch(o){n.value=o instanceof L?o.code===401?s("admin.login.wrongPassword"):o.msg:s("admin.login.failed"),i.value=""}finally{l.value=!1}}return(o,p)=>(d(),x(A,null,{default:k(()=>[e("section",E,[e("div",I,[e("img",{src:t(u).displayLogoUrl,alt:"Logo",class:"login-logo"},null,8,M),e("h1",R,a(t(s)("admin.login.title")),1),e("p",T,a(t(s)("admin.login.subtitle",{name:t(u).displayName})),1)]),e("form",{onSubmit:V(f,["prevent"])},[e("div",U,[e("label",j,a(t(s)("admin.login.password")),1),B(e("input",{id:"admin-password","onUpdate:modelValue":p[0]||(p[0]=v=>i.value=v),class:"input",type:"password",placeholder:t(s)("admin.login.passwordPlaceholder"),autocomplete:"current-password",autofocus:""},null,8,z),[[C,i.value]])]),n.value?(d(),m("p",H,a(n.value),1)):_("",!0),e("button",{class:"btn btn-block",type:"submit",disabled:l.value},[l.value?(d(),m("span",G)):_("",!0),N(" "+a(t(s)("admin.login.submit")),1)],8,F)],32),e("p",J,a(t(s)("admin.login.hint")),1)])]),_:1}))}}),$=P(K,[["__scopeId","data-v-26e7f2a4"]]);export{$ as default}; +import{d as w,u as b,a as y,z as x,A as k,b as e,f as t,t as a,w as V,C as B,D as C,c as m,g as _,q as N,j as r,N as S,B as q,o as d,H as L,_ as P}from"./index-BKnWAKao.js";import{P as A}from"./PageShell-CBo29Oot.js";import{u as D}from"./auth-Cp2GGuZy.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js";import"./admin-KnbIpHLF.js";const E={class:"card",style:{"max-width":"380px",margin:"8vh auto 0"}},I={class:"login-head"},M=["src"],R={class:"card-title"},T={class:"card-sub"},U={class:"field"},j={for:"admin-password"},z=["placeholder"],H={key:0,class:"hint",style:{color:"var(--c-danger)","margin-bottom":"12px"}},F=["disabled"],G={key:0,class:"spin","aria-hidden":"true"},J={class:"hint",style:{"margin-top":"16px"}},K=w({__name:"LoginView",setup(O){const{t:s}=b(),c=S(),g=q(),h=D(),u=y(),i=r(""),l=r(!1),n=r("");async function f(){if(!i.value){n.value=s("admin.login.required");return}l.value=!0,n.value="";try{await h.login(i.value);const o=typeof c.query.redirect=="string"?c.query.redirect:"/admin/files";g.replace(o)}catch(o){n.value=o instanceof L?o.code===401?s("admin.login.wrongPassword"):o.msg:s("admin.login.failed"),i.value=""}finally{l.value=!1}}return(o,p)=>(d(),x(A,null,{default:k(()=>[e("section",E,[e("div",I,[e("img",{src:t(u).displayLogoUrl,alt:"Logo",class:"login-logo"},null,8,M),e("h1",R,a(t(s)("admin.login.title")),1),e("p",T,a(t(s)("admin.login.subtitle",{name:t(u).displayName})),1)]),e("form",{onSubmit:V(f,["prevent"])},[e("div",U,[e("label",j,a(t(s)("admin.login.password")),1),B(e("input",{id:"admin-password","onUpdate:modelValue":p[0]||(p[0]=v=>i.value=v),class:"input",type:"password",placeholder:t(s)("admin.login.passwordPlaceholder"),autocomplete:"current-password",autofocus:""},null,8,z),[[C,i.value]])]),n.value?(d(),m("p",H,a(n.value),1)):_("",!0),e("button",{class:"btn btn-block",type:"submit",disabled:l.value},[l.value?(d(),m("span",G)):_("",!0),N(" "+a(t(s)("admin.login.submit")),1)],8,F)],32),e("p",J,a(t(s)("admin.login.hint")),1)])]),_:1}))}}),$=P(K,[["__scopeId","data-v-26e7f2a4"]]);export{$ as default}; diff --git a/server/web/dist/assets/NotFoundView-CbfqSXyJ.js b/server/web/dist/assets/NotFoundView-DdQb5mYe.js similarity index 75% rename from server/web/dist/assets/NotFoundView-CbfqSXyJ.js rename to server/web/dist/assets/NotFoundView-DdQb5mYe.js index c8687d6..d755af1 100644 --- a/server/web/dist/assets/NotFoundView-CbfqSXyJ.js +++ b/server/web/dist/assets/NotFoundView-DdQb5mYe.js @@ -1 +1 @@ -import{d as c,u as i,z as d,A as a,b as t,t as e,f as s,G as l,q as p,O as u,o as _}from"./index-DYsKpclu.js";import{P as m}from"./PageShell-D87JkPkG.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js";const f={class:"card empty",style:{"max-width":"480px",margin:"10vh auto 0"}},h={style:{"font-weight":"600",color:"var(--c-text)"}},x={class:"hint"},F=c({__name:"NotFoundView",setup(y){const{t:o}=i();return(g,n)=>{const r=u("RouterLink");return _(),d(m,null,{default:a(()=>[t("div",f,[n[0]||(n[0]=t("div",{class:"empty-icon"},"🧭",-1)),t("p",h,e(s(o)("notFound.title")),1),t("p",x,e(s(o)("notFound.desc")),1),l(r,{class:"btn",to:"/",style:{"margin-top":"10px"}},{default:a(()=>[p(e(s(o)("notFound.back")),1)]),_:1})])]),_:1})}}});export{F as default}; +import{d as c,u as i,z as d,A as a,b as t,t as e,f as s,G as l,q as p,O as u,o as _}from"./index-BKnWAKao.js";import{P as m}from"./PageShell-CBo29Oot.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js";const f={class:"card empty",style:{"max-width":"480px",margin:"10vh auto 0"}},h={style:{"font-weight":"600",color:"var(--c-text)"}},x={class:"hint"},F=c({__name:"NotFoundView",setup(y){const{t:o}=i();return(g,n)=>{const r=u("RouterLink");return _(),d(m,null,{default:a(()=>[t("div",f,[n[0]||(n[0]=t("div",{class:"empty-icon"},"🧭",-1)),t("p",h,e(s(o)("notFound.title")),1),t("p",x,e(s(o)("notFound.desc")),1),l(r,{class:"btn",to:"/",style:{"margin-top":"10px"}},{default:a(()=>[p(e(s(o)("notFound.back")),1)]),_:1})])]),_:1})}}});export{F as default}; diff --git a/server/web/dist/assets/OpenApiView-4SbIV1Bx.js b/server/web/dist/assets/OpenApiView-qf3nWBmo.js similarity index 99% rename from server/web/dist/assets/OpenApiView-4SbIV1Bx.js rename to server/web/dist/assets/OpenApiView-qf3nWBmo.js index e34fb0d..4063837 100644 --- a/server/web/dist/assets/OpenApiView-4SbIV1Bx.js +++ b/server/web/dist/assets/OpenApiView-qf3nWBmo.js @@ -1,4 +1,4 @@ -import{d as jU,u as PU,I as NU,ax as Xw,z as TU,A as IU,j as rA,b as Lc,t as Km,f as Gm,e as MU,c as RU,g as DU,h as nA,o as aA,_ as FU}from"./index-DYsKpclu.js";import{P as LU}from"./PageShell-D87JkPkG.js";import{g as $U}from"./swagger-CqkleIqs.js";import{e as oA}from"./docsSource-BXkkn0HE.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js";var Qw={exports:{}};var iA;function BU(){return iA||(iA=1,(()=>{var eE={67526(w,N){N.byteLength=function(_){var T=m(_),I=T[0],j=T[1];return 3*(I+j)/4-j},N.toByteArray=function(_){var T,I,j=m(_),M=j[0],z=j[1],K=new v((function(te,ie,se){return 3*(ie+se)/4-se})(0,M,z)),Y=0,B=z>0?M-4:M;for(I=0;I>16&255,K[Y++]=T>>8&255,K[Y++]=255&T;return z===2&&(T=h[_.charCodeAt(I)]<<2|h[_.charCodeAt(I+1)]>>4,K[Y++]=255&T),z===1&&(T=h[_.charCodeAt(I)]<<10|h[_.charCodeAt(I+1)]<<4|h[_.charCodeAt(I+2)]>>2,K[Y++]=T>>8&255,K[Y++]=255&T),K},N.fromByteArray=function(_){for(var T,I=_.length,j=I%3,M=[],z=16383,K=0,Y=I-j;KY?Y:K+z));return j===1?(T=_[I-1],M.push(s[T>>2]+s[T<<4&63]+"==")):j===2&&(T=(_[I-2]<<8)+_[I-1],M.push(s[T>>10]+s[T>>4&63]+s[T<<2&63]+"=")),M.join("")};for(var s=[],h=[],v=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",y=0;y<64;++y)s[y]=f[y],h[f.charCodeAt(y)]=y;function m(S){var _=S.length;if(_%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var T=S.indexOf("=");return T===-1&&(T=_),[T,T===_?0:4-T%4]}function g(S,_,T){for(var I,j,M=[],z=_;z>18&63]+s[j>>12&63]+s[j>>6&63]+s[63&j]);return M.join("")}h[45]=62,h[95]=63},48287(w,N,s){const h=s(67526),v=s(251),f=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;N.Buffer=g,N.SlowBuffer=function(U){return+U!=U&&(U=0),g.alloc(+U)},N.INSPECT_MAX_BYTES=50;const y=2147483647;function m(pe){if(pe>y)throw new RangeError('The value "'+pe+'" is invalid for option "size"');const U=new Uint8Array(pe);return Object.setPrototypeOf(U,g.prototype),U}function g(pe,U,Z){if(typeof pe=="number"){if(typeof U=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return T(pe)}return S(pe,U,Z)}function S(pe,U,Z){if(typeof pe=="string")return(function(Fe,St){if(typeof St=="string"&&St!==""||(St="utf8"),!g.isEncoding(St))throw new TypeError("Unknown encoding: "+St);const Bt=0|z(Fe,St);let Qe=m(Bt);const $t=Qe.write(Fe,St);return $t!==Bt&&(Qe=Qe.slice(0,$t)),Qe})(pe,U);if(ArrayBuffer.isView(pe))return(function(Fe){if(Gt(Fe,Uint8Array)){const St=new Uint8Array(Fe);return j(St.buffer,St.byteOffset,St.byteLength)}return I(Fe)})(pe);if(pe==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof pe);if(Gt(pe,ArrayBuffer)||pe&&Gt(pe.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Gt(pe,SharedArrayBuffer)||pe&&Gt(pe.buffer,SharedArrayBuffer)))return j(pe,U,Z);if(typeof pe=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const ne=pe.valueOf&&pe.valueOf();if(ne!=null&&ne!==pe)return g.from(ne,U,Z);const ye=(function(Fe){if(g.isBuffer(Fe)){const St=0|M(Fe.length),Bt=m(St);return Bt.length===0||Fe.copy(Bt,0,0,St),Bt}if(Fe.length!==void 0)return typeof Fe.length!="number"||Sr(Fe.length)?m(0):I(Fe);if(Fe.type==="Buffer"&&Array.isArray(Fe.data))return I(Fe.data)})(pe);if(ye)return ye;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof pe[Symbol.toPrimitive]=="function")return g.from(pe[Symbol.toPrimitive]("string"),U,Z);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof pe)}function _(pe){if(typeof pe!="number")throw new TypeError('"size" argument must be of type number');if(pe<0)throw new RangeError('The value "'+pe+'" is invalid for option "size"')}function T(pe){return _(pe),m(pe<0?0:0|M(pe))}function I(pe){const U=pe.length<0?0:0|M(pe.length),Z=m(U);for(let ne=0;ne=y)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+y.toString(16)+" bytes");return 0|pe}function z(pe,U){if(g.isBuffer(pe))return pe.length;if(ArrayBuffer.isView(pe)||Gt(pe,ArrayBuffer))return pe.byteLength;if(typeof pe!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof pe);const Z=pe.length,ne=arguments.length>2&&arguments[2]===!0;if(!ne&&Z===0)return 0;let ye=!1;for(;;)switch(U){case"ascii":case"latin1":case"binary":return Z;case"utf8":case"utf-8":return ur(pe).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*Z;case"hex":return Z>>>1;case"base64":return ar(pe).length;default:if(ye)return ne?-1:ur(pe).length;U=(""+U).toLowerCase(),ye=!0}}function K(pe,U,Z){let ne=!1;if((U===void 0||U<0)&&(U=0),U>this.length||((Z===void 0||Z>this.length)&&(Z=this.length),Z<=0)||(Z>>>=0)<=(U>>>=0))return"";for(pe||(pe="utf8");;)switch(pe){case"hex":return nt(this,U,Z);case"utf8":case"utf-8":return ke(this,U,Z);case"ascii":return He(this,U,Z);case"latin1":case"binary":return qe(this,U,Z);case"base64":return ge(this,U,Z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return gt(this,U,Z);default:if(ne)throw new TypeError("Unknown encoding: "+pe);pe=(pe+"").toLowerCase(),ne=!0}}function Y(pe,U,Z){const ne=pe[U];pe[U]=pe[Z],pe[Z]=ne}function B(pe,U,Z,ne,ye){if(pe.length===0)return-1;if(typeof Z=="string"?(ne=Z,Z=0):Z>2147483647?Z=2147483647:Z<-2147483648&&(Z=-2147483648),Sr(Z=+Z)&&(Z=ye?0:pe.length-1),Z<0&&(Z=pe.length+Z),Z>=pe.length){if(ye)return-1;Z=pe.length-1}else if(Z<0){if(!ye)return-1;Z=0}if(typeof U=="string"&&(U=g.from(U,ne)),g.isBuffer(U))return U.length===0?-1:X(pe,U,Z,ne,ye);if(typeof U=="number")return U&=255,typeof Uint8Array.prototype.indexOf=="function"?ye?Uint8Array.prototype.indexOf.call(pe,U,Z):Uint8Array.prototype.lastIndexOf.call(pe,U,Z):X(pe,[U],Z,ne,ye);throw new TypeError("val must be string, number or Buffer")}function X(pe,U,Z,ne,ye){let Ee,Fe=1,St=pe.length,Bt=U.length;if(ne!==void 0&&((ne=String(ne).toLowerCase())==="ucs2"||ne==="ucs-2"||ne==="utf16le"||ne==="utf-16le")){if(pe.length<2||U.length<2)return-1;Fe=2,St/=2,Bt/=2,Z/=2}function Qe($t,Pt){return Fe===1?$t[Pt]:$t.readUInt16BE(Pt*Fe)}if(ye){let $t=-1;for(Ee=Z;EeSt&&(Z=St-Bt),Ee=Z;Ee>=0;Ee--){let $t=!0;for(let Pt=0;Ptye&&(ne=ye):ne=ye;const Ee=U.length;let Fe;for(ne>Ee/2&&(ne=Ee/2),Fe=0;Fe>8,Qe=St%256,$t.push(Qe),$t.push(Bt);return $t})(U,pe.length-Z),pe,Z,ne)}function ge(pe,U,Z){return U===0&&Z===pe.length?h.fromByteArray(pe):h.fromByteArray(pe.slice(U,Z))}function ke(pe,U,Z){Z=Math.min(pe.length,Z);const ne=[];let ye=U;for(;ye239?4:Ee>223?3:Ee>191?2:1;if(ye+St<=Z){let Bt,Qe,$t,Pt;switch(St){case 1:Ee<128&&(Fe=Ee);break;case 2:Bt=pe[ye+1],(192&Bt)==128&&(Pt=(31&Ee)<<6|63&Bt,Pt>127&&(Fe=Pt));break;case 3:Bt=pe[ye+1],Qe=pe[ye+2],(192&Bt)==128&&(192&Qe)==128&&(Pt=(15&Ee)<<12|(63&Bt)<<6|63&Qe,Pt>2047&&(Pt<55296||Pt>57343)&&(Fe=Pt));break;case 4:Bt=pe[ye+1],Qe=pe[ye+2],$t=pe[ye+3],(192&Bt)==128&&(192&Qe)==128&&(192&$t)==128&&(Pt=(15&Ee)<<18|(63&Bt)<<12|(63&Qe)<<6|63&$t,Pt>65535&&Pt<1114112&&(Fe=Pt))}}Fe===null?(Fe=65533,St=1):Fe>65535&&(Fe-=65536,ne.push(Fe>>>10&1023|55296),Fe=56320|1023&Fe),ne.push(Fe),ye+=St}return(function(Fe){const St=Fe.length;if(St<=Ve)return String.fromCharCode.apply(String,Fe);let Bt="",Qe=0;for(;Qe"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(g.prototype,"parent",{enumerable:!0,get:function(){if(g.isBuffer(this))return this.buffer}}),Object.defineProperty(g.prototype,"offset",{enumerable:!0,get:function(){if(g.isBuffer(this))return this.byteOffset}}),g.poolSize=8192,g.from=function(pe,U,Z){return S(pe,U,Z)},Object.setPrototypeOf(g.prototype,Uint8Array.prototype),Object.setPrototypeOf(g,Uint8Array),g.alloc=function(pe,U,Z){return(function(ye,Ee,Fe){return _(ye),ye<=0?m(ye):Ee!==void 0?typeof Fe=="string"?m(ye).fill(Ee,Fe):m(ye).fill(Ee):m(ye)})(pe,U,Z)},g.allocUnsafe=function(pe){return T(pe)},g.allocUnsafeSlow=function(pe){return T(pe)},g.isBuffer=function(U){return U!=null&&U._isBuffer===!0&&U!==g.prototype},g.compare=function(U,Z){if(Gt(U,Uint8Array)&&(U=g.from(U,U.offset,U.byteLength)),Gt(Z,Uint8Array)&&(Z=g.from(Z,Z.offset,Z.byteLength)),!g.isBuffer(U)||!g.isBuffer(Z))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(U===Z)return 0;let ne=U.length,ye=Z.length;for(let Ee=0,Fe=Math.min(ne,ye);Eeye.length?(g.isBuffer(Fe)||(Fe=g.from(Fe)),Fe.copy(ye,Ee)):Uint8Array.prototype.set.call(ye,Fe,Ee);else{if(!g.isBuffer(Fe))throw new TypeError('"list" argument must be an Array of Buffers');Fe.copy(ye,Ee)}Ee+=Fe.length}return ye},g.byteLength=z,g.prototype._isBuffer=!0,g.prototype.swap16=function(){const U=this.length;if(U%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let Z=0;ZZ&&(U+=" ... "),""},f&&(g.prototype[f]=g.prototype.inspect),g.prototype.compare=function(U,Z,ne,ye,Ee){if(Gt(U,Uint8Array)&&(U=g.from(U,U.offset,U.byteLength)),!g.isBuffer(U))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof U);if(Z===void 0&&(Z=0),ne===void 0&&(ne=U?U.length:0),ye===void 0&&(ye=0),Ee===void 0&&(Ee=this.length),Z<0||ne>U.length||ye<0||Ee>this.length)throw new RangeError("out of range index");if(ye>=Ee&&Z>=ne)return 0;if(ye>=Ee)return-1;if(Z>=ne)return 1;if(this===U)return 0;let Fe=(Ee>>>=0)-(ye>>>=0),St=(ne>>>=0)-(Z>>>=0);const Bt=Math.min(Fe,St),Qe=this.slice(ye,Ee),$t=U.slice(Z,ne);for(let Pt=0;Pt>>=0,isFinite(ne)?(ne>>>=0,ye===void 0&&(ye="utf8")):(ye=ne,ne=void 0)}const Ee=this.length-Z;if((ne===void 0||ne>Ee)&&(ne=Ee),U.length>0&&(ne<0||Z<0)||Z>this.length)throw new RangeError("Attempt to write outside buffer bounds");ye||(ye="utf8");let Fe=!1;for(;;)switch(ye){case"hex":return te(this,U,Z,ne);case"utf8":case"utf-8":return ie(this,U,Z,ne);case"ascii":case"latin1":case"binary":return se(this,U,Z,ne);case"base64":return Te(this,U,Z,ne);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return he(this,U,Z,ne);default:if(Fe)throw new TypeError("Unknown encoding: "+ye);ye=(""+ye).toLowerCase(),Fe=!0}},g.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const Ve=4096;function He(pe,U,Z){let ne="";Z=Math.min(pe.length,Z);for(let ye=U;yene)&&(Z=ne);let ye="";for(let Ee=U;EeZ)throw new RangeError("Trying to access beyond buffer length")}function u(pe,U,Z,ne,ye,Ee){if(!g.isBuffer(pe))throw new TypeError('"buffer" argument must be a Buffer instance');if(U>ye||Upe.length)throw new RangeError("Index out of range")}function at(pe,U,Z,ne,ye){H(U,ne,ye,pe,Z,7);let Ee=Number(U&BigInt(4294967295));pe[Z++]=Ee,Ee>>=8,pe[Z++]=Ee,Ee>>=8,pe[Z++]=Ee,Ee>>=8,pe[Z++]=Ee;let Fe=Number(U>>BigInt(32)&BigInt(4294967295));return pe[Z++]=Fe,Fe>>=8,pe[Z++]=Fe,Fe>>=8,pe[Z++]=Fe,Fe>>=8,pe[Z++]=Fe,Z}function Xe(pe,U,Z,ne,ye){H(U,ne,ye,pe,Z,7);let Ee=Number(U&BigInt(4294967295));pe[Z+7]=Ee,Ee>>=8,pe[Z+6]=Ee,Ee>>=8,pe[Z+5]=Ee,Ee>>=8,pe[Z+4]=Ee;let Fe=Number(U>>BigInt(32)&BigInt(4294967295));return pe[Z+3]=Fe,Fe>>=8,pe[Z+2]=Fe,Fe>>=8,pe[Z+1]=Fe,Fe>>=8,pe[Z]=Fe,Z+8}function Se(pe,U,Z,ne,ye,Ee){if(Z+ne>pe.length)throw new RangeError("Index out of range");if(Z<0)throw new RangeError("Index out of range")}function De(pe,U,Z,ne,ye){return U=+U,Z>>>=0,ye||Se(pe,0,Z,4),v.write(pe,U,Z,ne,23,4),Z+4}function Ke(pe,U,Z,ne,ye){return U=+U,Z>>>=0,ye||Se(pe,0,Z,8),v.write(pe,U,Z,ne,52,8),Z+8}g.prototype.slice=function(U,Z){const ne=this.length;(U=~~U)<0?(U+=ne)<0&&(U=0):U>ne&&(U=ne),(Z=Z===void 0?ne:~~Z)<0?(Z+=ne)<0&&(Z=0):Z>ne&&(Z=ne),Z>>=0,Z>>>=0,ne||Re(U,Z,this.length);let ye=this[U],Ee=1,Fe=0;for(;++Fe>>=0,Z>>>=0,ne||Re(U,Z,this.length);let ye=this[U+--Z],Ee=1;for(;Z>0&&(Ee*=256);)ye+=this[U+--Z]*Ee;return ye},g.prototype.readUint8=g.prototype.readUInt8=function(U,Z){return U>>>=0,Z||Re(U,1,this.length),this[U]},g.prototype.readUint16LE=g.prototype.readUInt16LE=function(U,Z){return U>>>=0,Z||Re(U,2,this.length),this[U]|this[U+1]<<8},g.prototype.readUint16BE=g.prototype.readUInt16BE=function(U,Z){return U>>>=0,Z||Re(U,2,this.length),this[U]<<8|this[U+1]},g.prototype.readUint32LE=g.prototype.readUInt32LE=function(U,Z){return U>>>=0,Z||Re(U,4,this.length),(this[U]|this[U+1]<<8|this[U+2]<<16)+16777216*this[U+3]},g.prototype.readUint32BE=g.prototype.readUInt32BE=function(U,Z){return U>>>=0,Z||Re(U,4,this.length),16777216*this[U]+(this[U+1]<<16|this[U+2]<<8|this[U+3])},g.prototype.readBigUInt64LE=yt((function(U){we(U>>>=0,"offset");const Z=this[U],ne=this[U+7];Z!==void 0&&ne!==void 0||ct(U,this.length-8);const ye=Z+256*this[++U]+65536*this[++U]+this[++U]*2**24,Ee=this[++U]+256*this[++U]+65536*this[++U]+ne*2**24;return BigInt(ye)+(BigInt(Ee)<>>=0,"offset");const Z=this[U],ne=this[U+7];Z!==void 0&&ne!==void 0||ct(U,this.length-8);const ye=Z*2**24+65536*this[++U]+256*this[++U]+this[++U],Ee=this[++U]*2**24+65536*this[++U]+256*this[++U]+ne;return(BigInt(ye)<>>=0,Z>>>=0,ne||Re(U,Z,this.length);let ye=this[U],Ee=1,Fe=0;for(;++Fe=Ee&&(ye-=Math.pow(2,8*Z)),ye},g.prototype.readIntBE=function(U,Z,ne){U>>>=0,Z>>>=0,ne||Re(U,Z,this.length);let ye=Z,Ee=1,Fe=this[U+--ye];for(;ye>0&&(Ee*=256);)Fe+=this[U+--ye]*Ee;return Ee*=128,Fe>=Ee&&(Fe-=Math.pow(2,8*Z)),Fe},g.prototype.readInt8=function(U,Z){return U>>>=0,Z||Re(U,1,this.length),128&this[U]?-1*(255-this[U]+1):this[U]},g.prototype.readInt16LE=function(U,Z){U>>>=0,Z||Re(U,2,this.length);const ne=this[U]|this[U+1]<<8;return 32768&ne?4294901760|ne:ne},g.prototype.readInt16BE=function(U,Z){U>>>=0,Z||Re(U,2,this.length);const ne=this[U+1]|this[U]<<8;return 32768&ne?4294901760|ne:ne},g.prototype.readInt32LE=function(U,Z){return U>>>=0,Z||Re(U,4,this.length),this[U]|this[U+1]<<8|this[U+2]<<16|this[U+3]<<24},g.prototype.readInt32BE=function(U,Z){return U>>>=0,Z||Re(U,4,this.length),this[U]<<24|this[U+1]<<16|this[U+2]<<8|this[U+3]},g.prototype.readBigInt64LE=yt((function(U){we(U>>>=0,"offset");const Z=this[U],ne=this[U+7];Z!==void 0&&ne!==void 0||ct(U,this.length-8);const ye=this[U+4]+256*this[U+5]+65536*this[U+6]+(ne<<24);return(BigInt(ye)<>>=0,"offset");const Z=this[U],ne=this[U+7];Z!==void 0&&ne!==void 0||ct(U,this.length-8);const ye=(Z<<24)+65536*this[++U]+256*this[++U]+this[++U];return(BigInt(ye)<>>=0,Z||Re(U,4,this.length),v.read(this,U,!0,23,4)},g.prototype.readFloatBE=function(U,Z){return U>>>=0,Z||Re(U,4,this.length),v.read(this,U,!1,23,4)},g.prototype.readDoubleLE=function(U,Z){return U>>>=0,Z||Re(U,8,this.length),v.read(this,U,!0,52,8)},g.prototype.readDoubleBE=function(U,Z){return U>>>=0,Z||Re(U,8,this.length),v.read(this,U,!1,52,8)},g.prototype.writeUintLE=g.prototype.writeUIntLE=function(U,Z,ne,ye){U=+U,Z>>>=0,ne>>>=0,!ye&&u(this,U,Z,ne,Math.pow(2,8*ne)-1,0);let Ee=1,Fe=0;for(this[Z]=255&U;++Fe>>=0,ne>>>=0,!ye&&u(this,U,Z,ne,Math.pow(2,8*ne)-1,0);let Ee=ne-1,Fe=1;for(this[Z+Ee]=255&U;--Ee>=0&&(Fe*=256);)this[Z+Ee]=U/Fe&255;return Z+ne},g.prototype.writeUint8=g.prototype.writeUInt8=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,1,255,0),this[Z]=255&U,Z+1},g.prototype.writeUint16LE=g.prototype.writeUInt16LE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,2,65535,0),this[Z]=255&U,this[Z+1]=U>>>8,Z+2},g.prototype.writeUint16BE=g.prototype.writeUInt16BE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,2,65535,0),this[Z]=U>>>8,this[Z+1]=255&U,Z+2},g.prototype.writeUint32LE=g.prototype.writeUInt32LE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,4,4294967295,0),this[Z+3]=U>>>24,this[Z+2]=U>>>16,this[Z+1]=U>>>8,this[Z]=255&U,Z+4},g.prototype.writeUint32BE=g.prototype.writeUInt32BE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,4,4294967295,0),this[Z]=U>>>24,this[Z+1]=U>>>16,this[Z+2]=U>>>8,this[Z+3]=255&U,Z+4},g.prototype.writeBigUInt64LE=yt((function(U,Z=0){return at(this,U,Z,BigInt(0),BigInt("0xffffffffffffffff"))})),g.prototype.writeBigUInt64BE=yt((function(U,Z=0){return Xe(this,U,Z,BigInt(0),BigInt("0xffffffffffffffff"))})),g.prototype.writeIntLE=function(U,Z,ne,ye){if(U=+U,Z>>>=0,!ye){const Bt=Math.pow(2,8*ne-1);u(this,U,Z,ne,Bt-1,-Bt)}let Ee=0,Fe=1,St=0;for(this[Z]=255&U;++Ee>>=0,!ye){const Bt=Math.pow(2,8*ne-1);u(this,U,Z,ne,Bt-1,-Bt)}let Ee=ne-1,Fe=1,St=0;for(this[Z+Ee]=255&U;--Ee>=0&&(Fe*=256);)U<0&&St===0&&this[Z+Ee+1]!==0&&(St=1),this[Z+Ee]=(U/Fe|0)-St&255;return Z+ne},g.prototype.writeInt8=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,1,127,-128),U<0&&(U=255+U+1),this[Z]=255&U,Z+1},g.prototype.writeInt16LE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,2,32767,-32768),this[Z]=255&U,this[Z+1]=U>>>8,Z+2},g.prototype.writeInt16BE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,2,32767,-32768),this[Z]=U>>>8,this[Z+1]=255&U,Z+2},g.prototype.writeInt32LE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,4,2147483647,-2147483648),this[Z]=255&U,this[Z+1]=U>>>8,this[Z+2]=U>>>16,this[Z+3]=U>>>24,Z+4},g.prototype.writeInt32BE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,4,2147483647,-2147483648),U<0&&(U=4294967295+U+1),this[Z]=U>>>24,this[Z+1]=U>>>16,this[Z+2]=U>>>8,this[Z+3]=255&U,Z+4},g.prototype.writeBigInt64LE=yt((function(U,Z=0){return at(this,U,Z,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),g.prototype.writeBigInt64BE=yt((function(U,Z=0){return Xe(this,U,Z,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),g.prototype.writeFloatLE=function(U,Z,ne){return De(this,U,Z,!0,ne)},g.prototype.writeFloatBE=function(U,Z,ne){return De(this,U,Z,!1,ne)},g.prototype.writeDoubleLE=function(U,Z,ne){return Ke(this,U,Z,!0,ne)},g.prototype.writeDoubleBE=function(U,Z,ne){return Ke(this,U,Z,!1,ne)},g.prototype.copy=function(U,Z,ne,ye){if(!g.isBuffer(U))throw new TypeError("argument should be a Buffer");if(ne||(ne=0),ye||ye===0||(ye=this.length),Z>=U.length&&(Z=U.length),Z||(Z=0),ye>0&&ye=this.length)throw new RangeError("Index out of range");if(ye<0)throw new RangeError("sourceEnd out of bounds");ye>this.length&&(ye=this.length),U.length-Z>>=0,ne=ne===void 0?this.length:ne>>>0,U||(U=0),typeof U=="number")for(Ee=Z;Ee=ne+4;Z-=3)U=`_${pe.slice(Z-3,Z)}${U}`;return`${pe.slice(0,Z)}${U}`}function H(pe,U,Z,ne,ye,Ee){if(pe>Z||pe= 0${Fe} and < 2${Fe} ** ${8*(Ee+1)}${Fe}`:`>= -(2${Fe} ** ${8*(Ee+1)-1}${Fe}) and < 2 ** ${8*(Ee+1)-1}${Fe}`,new ft.ERR_OUT_OF_RANGE("value",St,pe)}(function(St,Bt,Qe){we(Bt,"offset"),St[Bt]!==void 0&&St[Bt+Qe]!==void 0||ct(Bt,St.length-(Qe+1))})(ne,ye,Ee)}function we(pe,U){if(typeof pe!="number")throw new ft.ERR_INVALID_ARG_TYPE(U,"number",pe)}function ct(pe,U,Z){throw Math.floor(pe)!==pe?(we(pe,Z),new ft.ERR_OUT_OF_RANGE("offset","an integer",pe)):U<0?new ft.ERR_BUFFER_OUT_OF_BOUNDS:new ft.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${U}`,pe)}Nt("ERR_BUFFER_OUT_OF_BOUNDS",(function(pe){return pe?`${pe} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),Nt("ERR_INVALID_ARG_TYPE",(function(pe,U){return`The "${pe}" argument must be of type number. Received type ${typeof U}`}),TypeError),Nt("ERR_OUT_OF_RANGE",(function(pe,U,Z){let ne=`The value of "${pe}" is out of range.`,ye=Z;return Number.isInteger(Z)&&Math.abs(Z)>4294967296?ye=Wt(String(Z)):typeof Z=="bigint"&&(ye=String(Z),(Z>BigInt(2)**BigInt(32)||Z<-(BigInt(2)**BigInt(32)))&&(ye=Wt(ye)),ye+="n"),ne+=` It must be ${U}. Received ${ye}`,ne}),RangeError);const mt=/[^+/0-9A-Za-z-_]/g;function ur(pe,U){let Z;U=U||1/0;const ne=pe.length;let ye=null;const Ee=[];for(let Fe=0;Fe55295&&Z<57344){if(!ye){if(Z>56319){(U-=3)>-1&&Ee.push(239,191,189);continue}if(Fe+1===ne){(U-=3)>-1&&Ee.push(239,191,189);continue}ye=Z;continue}if(Z<56320){(U-=3)>-1&&Ee.push(239,191,189),ye=Z;continue}Z=65536+(ye-55296<<10|Z-56320)}else ye&&(U-=3)>-1&&Ee.push(239,191,189);if(ye=null,Z<128){if((U-=1)<0)break;Ee.push(Z)}else if(Z<2048){if((U-=2)<0)break;Ee.push(Z>>6|192,63&Z|128)}else if(Z<65536){if((U-=3)<0)break;Ee.push(Z>>12|224,Z>>6&63|128,63&Z|128)}else{if(!(Z<1114112))throw new Error("Invalid code point");if((U-=4)<0)break;Ee.push(Z>>18|240,Z>>12&63|128,Z>>6&63|128,63&Z|128)}}return Ee}function ar(pe){return h.toByteArray((function(Z){if((Z=(Z=Z.split("=")[0]).trim().replace(mt,"")).length<2)return"";for(;Z.length%4!=0;)Z+="=";return Z})(pe))}function Tt(pe,U,Z,ne){let ye;for(ye=0;ye=U.length||ye>=pe.length);++ye)U[ye+Z]=pe[ye];return ye}function Gt(pe,U){return pe instanceof U||pe!=null&&pe.constructor!=null&&pe.constructor.name!=null&&pe.constructor.name===U.name}function Sr(pe){return pe!=pe}const kt=(function(){const pe="0123456789abcdef",U=new Array(256);for(let Z=0;Z<16;++Z){const ne=16*Z;for(let ye=0;ye<16;++ye)U[ne+ye]=pe[Z]+pe[ye]}return U})();function yt(pe){return typeof BigInt>"u"?Zt:pe}function Zt(){throw new Error("BigInt not supported")}},13144(w,N,s){var h=s(66743),v=s(11002),f=s(10076),y=s(47119);w.exports=y||h.call(f,v)},12205(w,N,s){var h=s(66743),v=s(11002),f=s(13144);w.exports=function(){return f(h,v,arguments)}},11002(w){w.exports=Function.prototype.apply},10076(w){w.exports=Function.prototype.call},73126(w,N,s){var h=s(66743),v=s(69675),f=s(10076),y=s(13144);w.exports=function(g){if(g.length<1||typeof g[0]!="function")throw new v("a function is required");return y(h,f,g)}},47119(w){w.exports=typeof Reflect<"u"&&Reflect&&Reflect.apply},10487(w,N,s){var h=s(96897),v=s(30655),f=s(73126),y=s(12205);w.exports=function(g){var S=f(arguments),_=g.length-(arguments.length-1);return h(S,1+(_>0?_:0),!0)},v?v(w.exports,"apply",{value:y}):w.exports.apply=y},36556(w,N,s){var h=s(70453),v=s(73126),f=v([h("%String.prototype.indexOf%")]);w.exports=function(m,g){var S=h(m,!!g);return typeof S=="function"&&f(m,".prototype.")>-1?v([S]):S}},17965(w,N,s){var h=s(16426),v={"text/plain":"Text","text/html":"Url",default:"Text"};w.exports=function(y,m){var g,S,_,T,I,j,M=!1;m||(m={}),g=m.debug||!1;try{if(_=h(),T=document.createRange(),I=document.getSelection(),(j=document.createElement("span")).textContent=y,j.ariaHidden="true",j.style.all="unset",j.style.position="fixed",j.style.top=0,j.style.clip="rect(0, 0, 0, 0)",j.style.whiteSpace="pre",j.style.webkitUserSelect="text",j.style.MozUserSelect="text",j.style.msUserSelect="text",j.style.userSelect="text",j.addEventListener("copy",(function(z){if(z.stopPropagation(),m.format)if(z.preventDefault(),z.clipboardData===void 0){g&&console.warn("unable to use e.clipboardData"),g&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var K=v[m.format]||v.default;window.clipboardData.setData(K,y)}else z.clipboardData.clearData(),z.clipboardData.setData(m.format,y);m.onCopy&&(z.preventDefault(),m.onCopy(z.clipboardData))})),document.body.appendChild(j),T.selectNodeContents(j),I.addRange(T),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");M=!0}catch(z){g&&console.error("unable to copy using execCommand: ",z),g&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(m.format||"text",y),m.onCopy&&m.onCopy(window.clipboardData),M=!0}catch(K){g&&console.error("unable to copy using clipboardData: ",K),g&&console.error("falling back to prompt"),S=(function(B){var X=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return B.replace(/#{\s*key\s*}/g,X)})("message"in m?m.message:"Copy to clipboard: #{key}, Enter"),window.prompt(S,y)}}finally{I&&(typeof I.removeRange=="function"?I.removeRange(T):I.removeAllRanges()),j&&document.body.removeChild(j),_()}return M}},2205(w,N,s){var h;h=s.g!==void 0?s.g:this,w.exports=(function(v){if(v.CSS&&v.CSS.escape)return v.CSS.escape;var f=function(y){if(arguments.length==0)throw new TypeError("`CSS.escape` requires an argument.");for(var m,g=String(y),S=g.length,_=-1,T="",I=g.charCodeAt(0);++_=1&&m<=31||m==127||_==0&&m>=48&&m<=57||_==1&&m>=48&&m<=57&&I==45?"\\"+m.toString(16)+" ":_==0&&S==1&&m==45||!(m>=128||m==45||m==95||m>=48&&m<=57||m>=65&&m<=90||m>=97&&m<=122)?"\\"+g.charAt(_):g.charAt(_):T+="�";return T};return v.CSS||(v.CSS={}),v.CSS.escape=f,f})(h)},81919(w,N,s){var h=s(48287).Buffer;function v(S){return S instanceof h||S instanceof Date||S instanceof RegExp}function f(S){if(S instanceof h){var _=h.alloc?h.alloc(S.length):new h(S.length);return S.copy(_),_}if(S instanceof Date)return new Date(S.getTime());if(S instanceof RegExp)return new RegExp(S);throw new Error("Unexpected situation")}function y(S){var _=[];return S.forEach((function(T,I){typeof T=="object"&&T!==null?Array.isArray(T)?_[I]=y(T):v(T)?_[I]=f(T):_[I]=g({},T):_[I]=T})),_}function m(S,_){return _==="__proto__"?void 0:S[_]}var g=w.exports=function(){if(arguments.length<1||typeof arguments[0]!="object")return!1;if(arguments.length<2)return arguments[0];var S,_,T=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(I){typeof I!="object"||I===null||Array.isArray(I)||Object.keys(I).forEach((function(j){return _=m(T,j),(S=m(I,j))===T?void 0:typeof S!="object"||S===null?void(T[j]=S):Array.isArray(S)?void(T[j]=y(S)):v(S)?void(T[j]=f(S)):typeof _!="object"||_===null||Array.isArray(_)?void(T[j]=g({},S)):void(T[j]=g(_,S))}))})),T}},14744(w){var N=function(T){return(function(j){return!!j&&typeof j=="object"})(T)&&!(function(j){var M=Object.prototype.toString.call(j);return M==="[object RegExp]"||M==="[object Date]"||(function(K){return K.$$typeof===s})(j)})(T)},s=typeof Symbol=="function"&&Symbol.for?Symbol.for("react.element"):60103;function h(_,T){return T.clone!==!1&&T.isMergeableObject(_)?g((function(j){return Array.isArray(j)?[]:{}})(_),_,T):_}function v(_,T,I){return _.concat(T).map((function(j){return h(j,I)}))}function f(_){return Object.keys(_).concat((function(I){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(I).filter((function(j){return Object.propertyIsEnumerable.call(I,j)})):[]})(_))}function y(_,T){try{return T in _}catch{return!1}}function m(_,T,I){var j={};return I.isMergeableObject(_)&&f(_).forEach((function(M){j[M]=h(_[M],I)})),f(T).forEach((function(M){(function(K,Y){return y(K,Y)&&!(Object.hasOwnProperty.call(K,Y)&&Object.propertyIsEnumerable.call(K,Y))})(_,M)||(y(_,M)&&I.isMergeableObject(T[M])?j[M]=(function(K,Y){if(!Y.customMerge)return g;var B=Y.customMerge(K);return typeof B=="function"?B:g})(M,I)(_[M],T[M],I):j[M]=h(T[M],I))})),j}function g(_,T,I){(I=I||{}).arrayMerge=I.arrayMerge||v,I.isMergeableObject=I.isMergeableObject||N,I.cloneUnlessOtherwiseSpecified=h;var j=Array.isArray(T);return j===Array.isArray(_)?j?I.arrayMerge(_,T,I):m(_,T,I):h(T,I)}g.all=function(T,I){if(!Array.isArray(T))throw new Error("first argument should be an array");return T.reduce((function(j,M){return g(j,M,I)}),{})};var S=g;w.exports=S},30041(w,N,s){var h=s(30655),v=s(58068),f=s(69675),y=s(75795);w.exports=function(g,S,_){if(!g||typeof g!="object"&&typeof g!="function")throw new f("`obj` must be an object or a function`");if(typeof S!="string"&&typeof S!="symbol")throw new f("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new f("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new f("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new f("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new f("`loose`, if provided, must be a boolean");var T=arguments.length>3?arguments[3]:null,I=arguments.length>4?arguments[4]:null,j=arguments.length>5?arguments[5]:null,M=arguments.length>6&&arguments[6],z=!!y&&y(g,S);if(h)h(g,S,{configurable:j===null&&z?z.configurable:!j,enumerable:T===null&&z?z.enumerable:!T,value:_,writable:I===null&&z?z.writable:!I});else{if(!M&&(T||I||j))throw new v("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");g[S]=_}}},78004(w){class N{constructor(v,f){this.low=v,this.high=f,this.length=1+f-v}overlaps(v){return!(this.highv.high)}touches(v){return!(this.high+1v.high)}add(v){return new N(Math.min(this.low,v.low),Math.max(this.high,v.high))}subtract(v){return v.low<=this.low&&v.high>=this.high?[]:v.low>this.low&&v.highv+f.length),0)}add(v,f){var y=m=>{for(var g=0;g{for(var g=0;g{for(var S=0;S{for(var y=f.low;y<=f.high;)v.push(y),y++;return v}),[])}subranges(){return this.ranges.map((v=>({low:v.low,high:v.high,length:1+v.high-v.low})))}}w.exports=s},7176(w,N,s){var h,v=s(73126),f=s(75795);try{h=[].__proto__===Array.prototype}catch(S){if(!S||typeof S!="object"||!("code"in S)||S.code!=="ERR_PROTO_ACCESS")throw S}var y=!!h&&f&&f(Object.prototype,"__proto__"),m=Object,g=m.getPrototypeOf;w.exports=y&&typeof y.get=="function"?v([y.get]):typeof g=="function"&&function(_){return g(_==null?_:m(_))}},30655(w){var N=Object.defineProperty||!1;if(N)try{N({},"a",{value:1})}catch{N=!1}w.exports=N},41237(w){w.exports=EvalError},69383(w){w.exports=Error},79290(w){w.exports=RangeError},79538(w){w.exports=ReferenceError},58068(w){w.exports=SyntaxError},69675(w){w.exports=TypeError},35345(w){w.exports=URIError},79612(w){w.exports=Object},37007(w){var N,s=typeof Reflect=="object"?Reflect:null,h=s&&typeof s.apply=="function"?s.apply:function(Y,B,X){return Function.prototype.apply.call(Y,B,X)};N=s&&typeof s.ownKeys=="function"?s.ownKeys:Object.getOwnPropertySymbols?function(Y){return Object.getOwnPropertyNames(Y).concat(Object.getOwnPropertySymbols(Y))}:function(Y){return Object.getOwnPropertyNames(Y)};var v=Number.isNaN||function(Y){return Y!=Y};function f(){f.init.call(this)}w.exports=f,w.exports.once=function(Y,B){return new Promise((function(X,te){function ie(Te){Y.removeListener(B,se),te(Te)}function se(){typeof Y.removeListener=="function"&&Y.removeListener("error",ie),X([].slice.call(arguments))}z(Y,B,se,{once:!0}),B!=="error"&&(function(he,ge,ke){typeof he.on=="function"&&z(he,"error",ge,ke)})(Y,ie,{once:!0})}))},f.EventEmitter=f,f.prototype._events=void 0,f.prototype._eventsCount=0,f.prototype._maxListeners=void 0;var y=10;function m(K){if(typeof K!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof K)}function g(K){return K._maxListeners===void 0?f.defaultMaxListeners:K._maxListeners}function S(K,Y,B,X){var te,ie,se;if(m(B),(ie=K._events)===void 0?(ie=K._events=Object.create(null),K._eventsCount=0):(ie.newListener!==void 0&&(K.emit("newListener",Y,B.listener?B.listener:B),ie=K._events),se=ie[Y]),se===void 0)se=ie[Y]=B,++K._eventsCount;else if(typeof se=="function"?se=ie[Y]=X?[B,se]:[se,B]:X?se.unshift(B):se.push(B),(te=g(K))>0&&se.length>te&&!se.warned){se.warned=!0;var Te=new Error("Possible EventEmitter memory leak detected. "+se.length+" "+String(Y)+" listeners added. Use emitter.setMaxListeners() to increase limit");Te.name="MaxListenersExceededWarning",Te.emitter=K,Te.type=Y,Te.count=se.length,(function(ge){console&&console.warn&&console.warn(ge)})(Te)}return K}function _(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function T(K,Y,B){var X={fired:!1,wrapFn:void 0,target:K,type:Y,listener:B},te=_.bind(X);return te.listener=B,X.wrapFn=te,te}function I(K,Y,B){var X=K._events;if(X===void 0)return[];var te=X[Y];return te===void 0?[]:typeof te=="function"?B?[te.listener||te]:[te]:B?(function(se){for(var Te=new Array(se.length),he=0;he0&&(se=B[0]),se instanceof Error)throw se;var Te=new Error("Unhandled error."+(se?" ("+se.message+")":""));throw Te.context=se,Te}var he=ie[Y];if(he===void 0)return!1;if(typeof he=="function")h(he,this,B);else{var ge=he.length,ke=M(he,ge);for(X=0;X=0;se--)if(X[se]===B||X[se].listener===B){Te=X[se].listener,ie=se;break}if(ie<0)return this;ie===0?X.shift():(function(ge,ke){for(;ke+1=0;te--)this.removeListener(Y,B[te]);return this},f.prototype.listeners=function(Y){return I(this,Y,!0)},f.prototype.rawListeners=function(Y){return I(this,Y,!1)},f.listenerCount=function(K,Y){return typeof K.listenerCount=="function"?K.listenerCount(Y):j.call(K,Y)},f.prototype.listenerCount=j,f.prototype.eventNames=function(){return this._eventsCount>0?N(this._events):[]}},85587(w,N,s){var h=s(26311),v=f(Error);function f(y){return m.displayName=y.displayName||y.name,m;function m(g){return g&&(g=h.apply(null,arguments)),new y(g)}}w.exports=v,v.eval=f(EvalError),v.range=f(RangeError),v.reference=f(ReferenceError),v.syntax=f(SyntaxError),v.type=f(TypeError),v.uri=f(URIError),v.create=f},82682(w,N,s){var h=s(69600),v=Object.prototype.toString,f=Object.prototype.hasOwnProperty;w.exports=function(m,g,S){if(!h(g))throw new TypeError("iterator must be a function");var _;arguments.length>=3&&(_=S),(function(I){return v.call(I)==="[object Array]"})(m)?(function(I,j,M){for(var z=0,K=I.length;z0?parseInt(Y):null};_"u"?h:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?h:ArrayBuffer,"%ArrayIteratorPrototype%":ge&&ke?ke([][Symbol.iterator]()):h,"%AsyncFromSyncIteratorPrototype%":h,"%AsyncFunction%":gt,"%AsyncGenerator%":gt,"%AsyncGeneratorFunction%":gt,"%AsyncIteratorPrototype%":gt,"%Atomics%":typeof Atomics>"u"?h:Atomics,"%BigInt%":typeof BigInt>"u"?h:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?h:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?h:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?h:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":f,"%eval%":eval,"%EvalError%":y,"%Float32Array%":typeof Float32Array>"u"?h:Float32Array,"%Float64Array%":typeof Float64Array>"u"?h:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?h:FinalizationRegistry,"%Function%":X,"%GeneratorFunction%":gt,"%Int8Array%":typeof Int8Array>"u"?h:Int8Array,"%Int16Array%":typeof Int16Array>"u"?h:Int16Array,"%Int32Array%":typeof Int32Array>"u"?h:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":ge&&ke?ke(ke([][Symbol.iterator]())):h,"%JSON%":typeof JSON=="object"?JSON:h,"%Map%":typeof Map>"u"?h:Map,"%MapIteratorPrototype%":typeof Map<"u"&&ge&&ke?ke(new Map()[Symbol.iterator]()):h,"%Math%":Math,"%Number%":Number,"%Object%":v,"%Object.getOwnPropertyDescriptor%":ie,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?h:Promise,"%Proxy%":typeof Proxy>"u"?h:Proxy,"%RangeError%":m,"%ReferenceError%":g,"%Reflect%":typeof Reflect>"u"?h:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?h:Set,"%SetIteratorPrototype%":typeof Set<"u"&&ge&&ke?ke(new Set()[Symbol.iterator]()):h,"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?h:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":ge&&ke?ke(""[Symbol.iterator]()):h,"%Symbol%":ge?Symbol:h,"%SyntaxError%":S,"%ThrowTypeError%":he,"%TypedArray%":Re,"%TypeError%":_,"%Uint8Array%":typeof Uint8Array>"u"?h:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?h:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?h:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?h:Uint32Array,"%URIError%":T,"%WeakMap%":typeof WeakMap>"u"?h:WeakMap,"%WeakRef%":typeof WeakRef>"u"?h:WeakRef,"%WeakSet%":typeof WeakSet>"u"?h:WeakSet,"%Function.prototype.call%":nt,"%Function.prototype.apply%":qe,"%Object.defineProperty%":se,"%Object.getPrototypeOf%":Ve,"%Math.abs%":I,"%Math.floor%":j,"%Math.max%":M,"%Math.min%":z,"%Math.pow%":K,"%Math.round%":Y,"%Math.sign%":B,"%Reflect.getPrototypeOf%":He};if(ke)try{null.error}catch(ar){var at=ke(ke(ar));u["%Error.prototype%"]=at}var Xe=function ar(Tt){var Gt;if(Tt==="%AsyncFunction%")Gt=te("async function () {}");else if(Tt==="%GeneratorFunction%")Gt=te("function* () {}");else if(Tt==="%AsyncGeneratorFunction%")Gt=te("async function* () {}");else if(Tt==="%AsyncGenerator%"){var Sr=ar("%AsyncGeneratorFunction%");Sr&&(Gt=Sr.prototype)}else if(Tt==="%AsyncIteratorPrototype%"){var kt=ar("%AsyncGenerator%");kt&&ke&&(Gt=ke(kt.prototype))}return u[Tt]=Gt,Gt},Se={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},De=s(66743),Ke=s(9957),ft=De.call(nt,Array.prototype.concat),Nt=De.call(qe,Array.prototype.splice),Wt=De.call(nt,String.prototype.replace),H=De.call(nt,String.prototype.slice),we=De.call(nt,RegExp.prototype.exec),ct=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,mt=/\\(\\)?/g,ur=function(Tt,Gt){var Sr,kt=Tt;if(Ke(Se,kt)&&(kt="%"+(Sr=Se[kt])[0]+"%"),Ke(u,kt)){var yt=u[kt];if(yt===gt&&(yt=Xe(kt)),yt===void 0&&!Gt)throw new _("intrinsic "+Tt+" exists, but is not available. Please file an issue!");return{alias:Sr,name:kt,value:yt}}throw new S("intrinsic "+Tt+" does not exist!")};w.exports=function(Tt,Gt){if(typeof Tt!="string"||Tt.length===0)throw new _("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof Gt!="boolean")throw new _('"allowMissing" argument must be a boolean');if(we(/^%?[^%]*%?$/,Tt)===null)throw new S("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var Sr=(function($t){var Pt=H($t,0,1),rn=H($t,-1);if(Pt==="%"&&rn!=="%")throw new S("invalid intrinsic syntax, expected closing `%`");if(rn==="%"&&Pt!=="%")throw new S("invalid intrinsic syntax, expected opening `%`");var kr=[];return Wt($t,ct,(function(An,Wr,Jn,Ea){kr[kr.length]=Jn?Wt(Ea,mt,"$1"):Wr||An})),kr})(Tt),kt=Sr.length>0?Sr[0]:"",yt=ur("%"+kt+"%",Gt),Zt=yt.name,pe=yt.value,U=!1,Z=yt.alias;Z&&(kt=Z[0],Nt(Sr,ft([0,1],Z)));for(var ne=1,ye=!0;ne=Sr.length){var Bt=ie(pe,Ee);pe=(ye=!!Bt)&&"get"in Bt&&!("originalValue"in Bt.get)?Bt.get:pe[Ee]}else ye=Ke(pe,Ee),pe=pe[Ee];ye&&!U&&(u[Zt]=pe)}}return pe}},71064(w,N,s){var h=s(79612);w.exports=h.getPrototypeOf||null},48648(w){w.exports=typeof Reflect<"u"&&Reflect.getPrototypeOf||null},93628(w,N,s){var h=s(48648),v=s(71064),f=s(7176);w.exports=h?function(m){return h(m)}:v?function(m){if(!m||typeof m!="object"&&typeof m!="function")throw new TypeError("getProto: not an object");return v(m)}:f?function(m){return f(m)}:null},6549(w){w.exports=Object.getOwnPropertyDescriptor},75795(w,N,s){var h=s(6549);if(h)try{h([],"length")}catch{h=null}w.exports=h},30592(w,N,s){var h=s(30655),v=function(){return!!h};v.hasArrayLengthDefineBug=function(){if(!h)return null;try{return h([],"length",{value:1}).length!==1}catch{return!0}},w.exports=v},64039(w,N,s){var h=typeof Symbol<"u"&&Symbol,v=s(41333);w.exports=function(){return typeof h=="function"&&typeof Symbol=="function"&&typeof h("foo")=="symbol"&&typeof Symbol("bar")=="symbol"&&v()}},41333(w){w.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var s={},h=Symbol("test"),v=Object(h);if(typeof h=="string"||Object.prototype.toString.call(h)!=="[object Symbol]"||Object.prototype.toString.call(v)!=="[object Symbol]")return!1;for(var f in s[h]=42,s)return!1;if(typeof Object.keys=="function"&&Object.keys(s).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(s).length!==0)return!1;var y=Object.getOwnPropertySymbols(s);if(y.length!==1||y[0]!==h||!Object.prototype.propertyIsEnumerable.call(s,h))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var m=Object.getOwnPropertyDescriptor(s,h);if(m.value!==42||m.enumerable!==!0)return!1}return!0}},49092(w,N,s){var h=s(41333);w.exports=function(){return h()&&!!Symbol.toStringTag}},9957(w,N,s){var h=Function.prototype.call,v=Object.prototype.hasOwnProperty,f=s(66743);w.exports=f.call(h,v)},45981(w){function N(ne){return ne instanceof Map?ne.clear=ne.delete=ne.set=function(){throw new Error("map is read-only")}:ne instanceof Set&&(ne.add=ne.clear=ne.delete=function(){throw new Error("set is read-only")}),Object.freeze(ne),Object.getOwnPropertyNames(ne).forEach((function(ye){var Ee=ne[ye];typeof Ee!="object"||Object.isFrozen(Ee)||N(Ee)})),ne}var s=N,h=N;s.default=h;class v{constructor(ye){ye.data===void 0&&(ye.data={}),this.data=ye.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function f(ne){return ne.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function y(ne,...ye){const Ee=Object.create(null);for(const Fe in ne)Ee[Fe]=ne[Fe];return ye.forEach((function(Fe){for(const St in Fe)Ee[St]=Fe[St]})),Ee}const m=ne=>!!ne.kind;class g{constructor(ye,Ee){this.buffer="",this.classPrefix=Ee.classPrefix,ye.walk(this)}addText(ye){this.buffer+=f(ye)}openNode(ye){if(!m(ye))return;let Ee=ye.kind;ye.sublanguage||(Ee=`${this.classPrefix}${Ee}`),this.span(Ee)}closeNode(ye){m(ye)&&(this.buffer+="")}value(){return this.buffer}span(ye){this.buffer+=``}}class S{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(ye){this.top.children.push(ye)}openNode(ye){const Ee={kind:ye,children:[]};this.add(Ee),this.stack.push(Ee)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(ye){return this.constructor._walk(ye,this.rootNode)}static _walk(ye,Ee){return typeof Ee=="string"?ye.addText(Ee):Ee.children&&(ye.openNode(Ee),Ee.children.forEach((Fe=>this._walk(ye,Fe))),ye.closeNode(Ee)),ye}static _collapse(ye){typeof ye!="string"&&ye.children&&(ye.children.every((Ee=>typeof Ee=="string"))?ye.children=[ye.children.join("")]:ye.children.forEach((Ee=>{S._collapse(Ee)})))}}class _ extends S{constructor(ye){super(),this.options=ye}addKeyword(ye,Ee){ye!==""&&(this.openNode(Ee),this.addText(ye),this.closeNode())}addText(ye){ye!==""&&this.add(ye)}addSublanguage(ye,Ee){const Fe=ye.root;Fe.kind=Ee,Fe.sublanguage=!0,this.add(Fe)}toHTML(){return new g(this,this.options).value()}finalize(){return!0}}function T(ne){return ne?typeof ne=="string"?ne:ne.source:null}const I=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,j="[a-zA-Z]\\w*",M="[a-zA-Z_]\\w*",z="\\b\\d+(\\.\\d+)?",K="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Y="\\b(0b[01]+)",B={begin:"\\\\[\\s\\S]",relevance:0},X={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[B]},te={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[B]},ie={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},se=function(ne,ye,Ee={}){const Fe=y({className:"comment",begin:ne,end:ye,contains:[]},Ee);return Fe.contains.push(ie),Fe.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),Fe},Te=se("//","$"),he=se("/\\*","\\*/"),ge=se("#","$"),ke={className:"number",begin:z,relevance:0},Ve={className:"number",begin:K,relevance:0},He={className:"number",begin:Y,relevance:0},qe={className:"number",begin:z+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},nt={begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[B,{begin:/\[/,end:/\]/,relevance:0,contains:[B]}]}]},gt={className:"title",begin:j,relevance:0},Re={className:"title",begin:M,relevance:0},u={begin:"\\.\\s*"+M,relevance:0};var at=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:j,UNDERSCORE_IDENT_RE:M,NUMBER_RE:z,C_NUMBER_RE:K,BINARY_NUMBER_RE:Y,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(ne={})=>{const ye=/^#![ ]*\//;return ne.binary&&(ne.begin=(function(...Fe){return Fe.map((St=>T(St))).join("")})(ye,/.*\b/,ne.binary,/\b.*/)),y({className:"meta",begin:ye,end:/$/,relevance:0,"on:begin":(Ee,Fe)=>{Ee.index!==0&&Fe.ignoreMatch()}},ne)},BACKSLASH_ESCAPE:B,APOS_STRING_MODE:X,QUOTE_STRING_MODE:te,PHRASAL_WORDS_MODE:ie,COMMENT:se,C_LINE_COMMENT_MODE:Te,C_BLOCK_COMMENT_MODE:he,HASH_COMMENT_MODE:ge,NUMBER_MODE:ke,C_NUMBER_MODE:Ve,BINARY_NUMBER_MODE:He,CSS_NUMBER_MODE:qe,REGEXP_MODE:nt,TITLE_MODE:gt,UNDERSCORE_TITLE_MODE:Re,METHOD_GUARD:u,END_SAME_AS_BEGIN:function(ne){return Object.assign(ne,{"on:begin":(ye,Ee)=>{Ee.data._beginMatch=ye[1]},"on:end":(ye,Ee)=>{Ee.data._beginMatch!==ye[1]&&Ee.ignoreMatch()}})}});function Xe(ne,ye){ne.input[ne.index-1]==="."&&ye.ignoreMatch()}function Se(ne,ye){ye&&ne.beginKeywords&&(ne.begin="\\b("+ne.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",ne.__beforeBegin=Xe,ne.keywords=ne.keywords||ne.beginKeywords,delete ne.beginKeywords,ne.relevance===void 0&&(ne.relevance=0))}function De(ne,ye){Array.isArray(ne.illegal)&&(ne.illegal=(function(...Fe){return"("+Fe.map((St=>T(St))).join("|")+")"})(...ne.illegal))}function Ke(ne,ye){if(ne.match){if(ne.begin||ne.end)throw new Error("begin & end are not supported with match");ne.begin=ne.match,delete ne.match}}function ft(ne,ye){ne.relevance===void 0&&(ne.relevance=1)}const Nt=["of","and","for","in","not","or","if","then","parent","list","value"];function Wt(ne,ye,Ee="keyword"){const Fe={};return typeof ne=="string"?St(Ee,ne.split(" ")):Array.isArray(ne)?St(Ee,ne):Object.keys(ne).forEach((function(Bt){Object.assign(Fe,Wt(ne[Bt],ye,Bt))})),Fe;function St(Bt,Qe){ye&&(Qe=Qe.map(($t=>$t.toLowerCase()))),Qe.forEach((function($t){const Pt=$t.split("|");Fe[Pt[0]]=[Bt,H(Pt[0],Pt[1])]}))}}function H(ne,ye){return ye?Number(ye):(function(Fe){return Nt.includes(Fe.toLowerCase())})(ne)?0:1}function we(ne,{plugins:ye}){function Ee(Bt,Qe){return new RegExp(T(Bt),"m"+(ne.case_insensitive?"i":"")+(Qe?"g":""))}class Fe{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(Qe,$t){$t.position=this.position++,this.matchIndexes[this.matchAt]=$t,this.regexes.push([$t,Qe]),this.matchAt+=(function(rn){return new RegExp(rn.toString()+"|").exec("").length-1})(Qe)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const Qe=this.regexes.map(($t=>$t[1]));this.matcherRe=Ee((function(Pt,rn="|"){let kr=0;return Pt.map((An=>{kr+=1;const Wr=kr;let Jn=T(An),Ea="";for(;Jn.length>0;){const Zn=I.exec(Jn);if(!Zn){Ea+=Jn;break}Ea+=Jn.substring(0,Zn.index),Jn=Jn.substring(Zn.index+Zn[0].length),Zn[0][0]==="\\"&&Zn[1]?Ea+="\\"+String(Number(Zn[1])+Wr):(Ea+=Zn[0],Zn[0]==="("&&kr++)}return Ea})).map((An=>`(${An})`)).join(rn)})(Qe),!0),this.lastIndex=0}exec(Qe){this.matcherRe.lastIndex=this.lastIndex;const $t=this.matcherRe.exec(Qe);if(!$t)return null;const Pt=$t.findIndex(((kr,An)=>An>0&&kr!==void 0)),rn=this.matchIndexes[Pt];return $t.splice(0,Pt),Object.assign($t,rn)}}class St{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(Qe){if(this.multiRegexes[Qe])return this.multiRegexes[Qe];const $t=new Fe;return this.rules.slice(Qe).forEach((([Pt,rn])=>$t.addRule(Pt,rn))),$t.compile(),this.multiRegexes[Qe]=$t,$t}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(Qe,$t){this.rules.push([Qe,$t]),$t.type==="begin"&&this.count++}exec(Qe){const $t=this.getMatcher(this.regexIndex);$t.lastIndex=this.lastIndex;let Pt=$t.exec(Qe);if(this.resumingScanAtSamePosition()&&!(Pt&&Pt.index===this.lastIndex)){const rn=this.getMatcher(0);rn.lastIndex=this.lastIndex+1,Pt=rn.exec(Qe)}return Pt&&(this.regexIndex+=Pt.position+1,this.regexIndex===this.count&&this.considerAll()),Pt}}if(ne.compilerExtensions||(ne.compilerExtensions=[]),ne.contains&&ne.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return ne.classNameAliases=y(ne.classNameAliases||{}),(function Bt(Qe,$t){const Pt=Qe;if(Qe.isCompiled)return Pt;[Ke].forEach((kr=>kr(Qe,$t))),ne.compilerExtensions.forEach((kr=>kr(Qe,$t))),Qe.__beforeBegin=null,[Se,De,ft].forEach((kr=>kr(Qe,$t))),Qe.isCompiled=!0;let rn=null;if(typeof Qe.keywords=="object"&&(rn=Qe.keywords.$pattern,delete Qe.keywords.$pattern),Qe.keywords&&(Qe.keywords=Wt(Qe.keywords,ne.case_insensitive)),Qe.lexemes&&rn)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return rn=rn||Qe.lexemes||/\w+/,Pt.keywordPatternRe=Ee(rn,!0),$t&&(Qe.begin||(Qe.begin=/\B|\b/),Pt.beginRe=Ee(Qe.begin),Qe.endSameAsBegin&&(Qe.end=Qe.begin),Qe.end||Qe.endsWithParent||(Qe.end=/\B|\b/),Qe.end&&(Pt.endRe=Ee(Qe.end)),Pt.terminatorEnd=T(Qe.end)||"",Qe.endsWithParent&&$t.terminatorEnd&&(Pt.terminatorEnd+=(Qe.end?"|":"")+$t.terminatorEnd)),Qe.illegal&&(Pt.illegalRe=Ee(Qe.illegal)),Qe.contains||(Qe.contains=[]),Qe.contains=[].concat(...Qe.contains.map((function(kr){return(function(Wr){return Wr.variants&&!Wr.cachedVariants&&(Wr.cachedVariants=Wr.variants.map((function(Jn){return y(Wr,{variants:null},Jn)}))),Wr.cachedVariants?Wr.cachedVariants:ct(Wr)?y(Wr,{starts:Wr.starts?y(Wr.starts):null}):Object.isFrozen(Wr)?y(Wr):Wr})(kr==="self"?Qe:kr)}))),Qe.contains.forEach((function(kr){Bt(kr,Pt)})),Qe.starts&&Bt(Qe.starts,$t),Pt.matcher=(function(An){const Wr=new St;return An.contains.forEach((Jn=>Wr.addRule(Jn.begin,{rule:Jn,type:"begin"}))),An.terminatorEnd&&Wr.addRule(An.terminatorEnd,{type:"end"}),An.illegal&&Wr.addRule(An.illegal,{type:"illegal"}),Wr})(Pt),Pt})(ne)}function ct(ne){return!!ne&&(ne.endsWithParent||ct(ne.starts))}function mt(ne){const ye={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!ne.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,f(this.code);let Ee={};return this.autoDetect?(Ee=ne.highlightAuto(this.code),this.detectedLanguage=Ee.language):(Ee=ne.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),Ee.value},autoDetect(){return!this.language||(function(Fe){return!!(Fe||Fe==="")})(this.autodetect)},ignoreIllegals:()=>!0},render(Ee){return Ee("pre",{},[Ee("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:ye,VuePlugin:{install(Ee){Ee.component("highlightjs",ye)}}}}const ur={"after:highlightElement":({el:ne,result:ye,text:Ee})=>{const Fe=Tt(ne);if(!Fe.length)return;const St=document.createElement("div");St.innerHTML=ye.value,ye.value=(function(Qe,$t,Pt){let rn=0,kr="";const An=[];function Wr(){return Qe.length&&$t.length?Qe[0].offset!==$t[0].offset?Qe[0].offset<$t[0].offset?Qe:$t:$t[0].event==="start"?Qe:$t:Qe.length?Qe:$t}function Jn(un){function ti(Oo){return" "+Oo.nodeName+'="'+f(Oo.value)+'"'}kr+="<"+ar(un)+[].map.call(un.attributes,ti).join("")+">"}function Ea(un){kr+=""}function Zn(un){(un.event==="start"?Jn:Ea)(un.node)}for(;Qe.length||$t.length;){let un=Wr();if(kr+=f(Pt.substring(rn,un[0].offset)),rn=un[0].offset,un===Qe){An.reverse().forEach(Ea);do Zn(un.splice(0,1)[0]),un=Wr();while(un===Qe&&un.length&&un[0].offset===rn);An.reverse().forEach(Jn)}else un[0].event==="start"?An.push(un[0].node):An.pop(),Zn(un.splice(0,1)[0])}return kr+f(Pt.substr(rn))})(Fe,Tt(St),Ee)}};function ar(ne){return ne.nodeName.toLowerCase()}function Tt(ne){const ye=[];return(function Ee(Fe,St){for(let Bt=Fe.firstChild;Bt;Bt=Bt.nextSibling)Bt.nodeType===3?St+=Bt.nodeValue.length:Bt.nodeType===1&&(ye.push({event:"start",offset:St,node:Bt}),St=Ee(Bt,St),ar(Bt).match(/br|hr|img|input/)||ye.push({event:"stop",offset:St,node:Bt}));return St})(ne,0),ye}const Gt={},Sr=ne=>{console.error(ne)},kt=(ne,...ye)=>{console.log(`WARN: ${ne}`,...ye)},yt=(ne,ye)=>{Gt[`${ne}/${ye}`]||(console.log(`Deprecated as of ${ne}. ${ye}`),Gt[`${ne}/${ye}`]=!0)},Zt=f,pe=y,U=Symbol("nomatch");var Z=(function(ne){const ye=Object.create(null),Ee=Object.create(null),Fe=[];let St=!0;const Bt=/(^(<[^>]+>|\t|)+|\n)/gm,Qe="Could not find the language '{}', did you forget to load/include a language module?",$t={disableAutodetect:!0,name:"Plain text",contains:[]};let Pt={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:_};function rn(sr){return Pt.noHighlightRe.test(sr)}function kr(sr,br,tn,Cr){let Mr="",Nn="";typeof br=="object"?(Mr=sr,tn=br.ignoreIllegals,Nn=br.language,Cr=void 0):(yt("10.7.0","highlight(lang, code, ...args) has been deprecated."),yt("10.7.0",`Please use highlight(code, options) instead. +import{d as jU,u as PU,I as NU,ax as Xw,z as TU,A as IU,j as rA,b as Lc,t as Km,f as Gm,e as MU,c as RU,g as DU,h as nA,o as aA,_ as FU}from"./index-BKnWAKao.js";import{P as LU}from"./PageShell-CBo29Oot.js";import{g as $U}from"./swagger-CqkleIqs.js";import{e as oA}from"./docsSource-Df5ur5C4.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js";var Qw={exports:{}};var iA;function BU(){return iA||(iA=1,(()=>{var eE={67526(w,N){N.byteLength=function(_){var T=m(_),I=T[0],j=T[1];return 3*(I+j)/4-j},N.toByteArray=function(_){var T,I,j=m(_),M=j[0],z=j[1],K=new v((function(te,ie,se){return 3*(ie+se)/4-se})(0,M,z)),Y=0,B=z>0?M-4:M;for(I=0;I>16&255,K[Y++]=T>>8&255,K[Y++]=255&T;return z===2&&(T=h[_.charCodeAt(I)]<<2|h[_.charCodeAt(I+1)]>>4,K[Y++]=255&T),z===1&&(T=h[_.charCodeAt(I)]<<10|h[_.charCodeAt(I+1)]<<4|h[_.charCodeAt(I+2)]>>2,K[Y++]=T>>8&255,K[Y++]=255&T),K},N.fromByteArray=function(_){for(var T,I=_.length,j=I%3,M=[],z=16383,K=0,Y=I-j;KY?Y:K+z));return j===1?(T=_[I-1],M.push(s[T>>2]+s[T<<4&63]+"==")):j===2&&(T=(_[I-2]<<8)+_[I-1],M.push(s[T>>10]+s[T>>4&63]+s[T<<2&63]+"=")),M.join("")};for(var s=[],h=[],v=typeof Uint8Array<"u"?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",y=0;y<64;++y)s[y]=f[y],h[f.charCodeAt(y)]=y;function m(S){var _=S.length;if(_%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var T=S.indexOf("=");return T===-1&&(T=_),[T,T===_?0:4-T%4]}function g(S,_,T){for(var I,j,M=[],z=_;z>18&63]+s[j>>12&63]+s[j>>6&63]+s[63&j]);return M.join("")}h[45]=62,h[95]=63},48287(w,N,s){const h=s(67526),v=s(251),f=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;N.Buffer=g,N.SlowBuffer=function(U){return+U!=U&&(U=0),g.alloc(+U)},N.INSPECT_MAX_BYTES=50;const y=2147483647;function m(pe){if(pe>y)throw new RangeError('The value "'+pe+'" is invalid for option "size"');const U=new Uint8Array(pe);return Object.setPrototypeOf(U,g.prototype),U}function g(pe,U,Z){if(typeof pe=="number"){if(typeof U=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return T(pe)}return S(pe,U,Z)}function S(pe,U,Z){if(typeof pe=="string")return(function(Fe,St){if(typeof St=="string"&&St!==""||(St="utf8"),!g.isEncoding(St))throw new TypeError("Unknown encoding: "+St);const Bt=0|z(Fe,St);let Qe=m(Bt);const $t=Qe.write(Fe,St);return $t!==Bt&&(Qe=Qe.slice(0,$t)),Qe})(pe,U);if(ArrayBuffer.isView(pe))return(function(Fe){if(Gt(Fe,Uint8Array)){const St=new Uint8Array(Fe);return j(St.buffer,St.byteOffset,St.byteLength)}return I(Fe)})(pe);if(pe==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof pe);if(Gt(pe,ArrayBuffer)||pe&&Gt(pe.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Gt(pe,SharedArrayBuffer)||pe&&Gt(pe.buffer,SharedArrayBuffer)))return j(pe,U,Z);if(typeof pe=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const ne=pe.valueOf&&pe.valueOf();if(ne!=null&&ne!==pe)return g.from(ne,U,Z);const ye=(function(Fe){if(g.isBuffer(Fe)){const St=0|M(Fe.length),Bt=m(St);return Bt.length===0||Fe.copy(Bt,0,0,St),Bt}if(Fe.length!==void 0)return typeof Fe.length!="number"||Sr(Fe.length)?m(0):I(Fe);if(Fe.type==="Buffer"&&Array.isArray(Fe.data))return I(Fe.data)})(pe);if(ye)return ye;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof pe[Symbol.toPrimitive]=="function")return g.from(pe[Symbol.toPrimitive]("string"),U,Z);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof pe)}function _(pe){if(typeof pe!="number")throw new TypeError('"size" argument must be of type number');if(pe<0)throw new RangeError('The value "'+pe+'" is invalid for option "size"')}function T(pe){return _(pe),m(pe<0?0:0|M(pe))}function I(pe){const U=pe.length<0?0:0|M(pe.length),Z=m(U);for(let ne=0;ne=y)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+y.toString(16)+" bytes");return 0|pe}function z(pe,U){if(g.isBuffer(pe))return pe.length;if(ArrayBuffer.isView(pe)||Gt(pe,ArrayBuffer))return pe.byteLength;if(typeof pe!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof pe);const Z=pe.length,ne=arguments.length>2&&arguments[2]===!0;if(!ne&&Z===0)return 0;let ye=!1;for(;;)switch(U){case"ascii":case"latin1":case"binary":return Z;case"utf8":case"utf-8":return ur(pe).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*Z;case"hex":return Z>>>1;case"base64":return ar(pe).length;default:if(ye)return ne?-1:ur(pe).length;U=(""+U).toLowerCase(),ye=!0}}function K(pe,U,Z){let ne=!1;if((U===void 0||U<0)&&(U=0),U>this.length||((Z===void 0||Z>this.length)&&(Z=this.length),Z<=0)||(Z>>>=0)<=(U>>>=0))return"";for(pe||(pe="utf8");;)switch(pe){case"hex":return nt(this,U,Z);case"utf8":case"utf-8":return ke(this,U,Z);case"ascii":return He(this,U,Z);case"latin1":case"binary":return qe(this,U,Z);case"base64":return ge(this,U,Z);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return gt(this,U,Z);default:if(ne)throw new TypeError("Unknown encoding: "+pe);pe=(pe+"").toLowerCase(),ne=!0}}function Y(pe,U,Z){const ne=pe[U];pe[U]=pe[Z],pe[Z]=ne}function B(pe,U,Z,ne,ye){if(pe.length===0)return-1;if(typeof Z=="string"?(ne=Z,Z=0):Z>2147483647?Z=2147483647:Z<-2147483648&&(Z=-2147483648),Sr(Z=+Z)&&(Z=ye?0:pe.length-1),Z<0&&(Z=pe.length+Z),Z>=pe.length){if(ye)return-1;Z=pe.length-1}else if(Z<0){if(!ye)return-1;Z=0}if(typeof U=="string"&&(U=g.from(U,ne)),g.isBuffer(U))return U.length===0?-1:X(pe,U,Z,ne,ye);if(typeof U=="number")return U&=255,typeof Uint8Array.prototype.indexOf=="function"?ye?Uint8Array.prototype.indexOf.call(pe,U,Z):Uint8Array.prototype.lastIndexOf.call(pe,U,Z):X(pe,[U],Z,ne,ye);throw new TypeError("val must be string, number or Buffer")}function X(pe,U,Z,ne,ye){let Ee,Fe=1,St=pe.length,Bt=U.length;if(ne!==void 0&&((ne=String(ne).toLowerCase())==="ucs2"||ne==="ucs-2"||ne==="utf16le"||ne==="utf-16le")){if(pe.length<2||U.length<2)return-1;Fe=2,St/=2,Bt/=2,Z/=2}function Qe($t,Pt){return Fe===1?$t[Pt]:$t.readUInt16BE(Pt*Fe)}if(ye){let $t=-1;for(Ee=Z;EeSt&&(Z=St-Bt),Ee=Z;Ee>=0;Ee--){let $t=!0;for(let Pt=0;Ptye&&(ne=ye):ne=ye;const Ee=U.length;let Fe;for(ne>Ee/2&&(ne=Ee/2),Fe=0;Fe>8,Qe=St%256,$t.push(Qe),$t.push(Bt);return $t})(U,pe.length-Z),pe,Z,ne)}function ge(pe,U,Z){return U===0&&Z===pe.length?h.fromByteArray(pe):h.fromByteArray(pe.slice(U,Z))}function ke(pe,U,Z){Z=Math.min(pe.length,Z);const ne=[];let ye=U;for(;ye239?4:Ee>223?3:Ee>191?2:1;if(ye+St<=Z){let Bt,Qe,$t,Pt;switch(St){case 1:Ee<128&&(Fe=Ee);break;case 2:Bt=pe[ye+1],(192&Bt)==128&&(Pt=(31&Ee)<<6|63&Bt,Pt>127&&(Fe=Pt));break;case 3:Bt=pe[ye+1],Qe=pe[ye+2],(192&Bt)==128&&(192&Qe)==128&&(Pt=(15&Ee)<<12|(63&Bt)<<6|63&Qe,Pt>2047&&(Pt<55296||Pt>57343)&&(Fe=Pt));break;case 4:Bt=pe[ye+1],Qe=pe[ye+2],$t=pe[ye+3],(192&Bt)==128&&(192&Qe)==128&&(192&$t)==128&&(Pt=(15&Ee)<<18|(63&Bt)<<12|(63&Qe)<<6|63&$t,Pt>65535&&Pt<1114112&&(Fe=Pt))}}Fe===null?(Fe=65533,St=1):Fe>65535&&(Fe-=65536,ne.push(Fe>>>10&1023|55296),Fe=56320|1023&Fe),ne.push(Fe),ye+=St}return(function(Fe){const St=Fe.length;if(St<=Ve)return String.fromCharCode.apply(String,Fe);let Bt="",Qe=0;for(;Qe"u"||typeof console.error!="function"||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(g.prototype,"parent",{enumerable:!0,get:function(){if(g.isBuffer(this))return this.buffer}}),Object.defineProperty(g.prototype,"offset",{enumerable:!0,get:function(){if(g.isBuffer(this))return this.byteOffset}}),g.poolSize=8192,g.from=function(pe,U,Z){return S(pe,U,Z)},Object.setPrototypeOf(g.prototype,Uint8Array.prototype),Object.setPrototypeOf(g,Uint8Array),g.alloc=function(pe,U,Z){return(function(ye,Ee,Fe){return _(ye),ye<=0?m(ye):Ee!==void 0?typeof Fe=="string"?m(ye).fill(Ee,Fe):m(ye).fill(Ee):m(ye)})(pe,U,Z)},g.allocUnsafe=function(pe){return T(pe)},g.allocUnsafeSlow=function(pe){return T(pe)},g.isBuffer=function(U){return U!=null&&U._isBuffer===!0&&U!==g.prototype},g.compare=function(U,Z){if(Gt(U,Uint8Array)&&(U=g.from(U,U.offset,U.byteLength)),Gt(Z,Uint8Array)&&(Z=g.from(Z,Z.offset,Z.byteLength)),!g.isBuffer(U)||!g.isBuffer(Z))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(U===Z)return 0;let ne=U.length,ye=Z.length;for(let Ee=0,Fe=Math.min(ne,ye);Eeye.length?(g.isBuffer(Fe)||(Fe=g.from(Fe)),Fe.copy(ye,Ee)):Uint8Array.prototype.set.call(ye,Fe,Ee);else{if(!g.isBuffer(Fe))throw new TypeError('"list" argument must be an Array of Buffers');Fe.copy(ye,Ee)}Ee+=Fe.length}return ye},g.byteLength=z,g.prototype._isBuffer=!0,g.prototype.swap16=function(){const U=this.length;if(U%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let Z=0;ZZ&&(U+=" ... "),""},f&&(g.prototype[f]=g.prototype.inspect),g.prototype.compare=function(U,Z,ne,ye,Ee){if(Gt(U,Uint8Array)&&(U=g.from(U,U.offset,U.byteLength)),!g.isBuffer(U))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof U);if(Z===void 0&&(Z=0),ne===void 0&&(ne=U?U.length:0),ye===void 0&&(ye=0),Ee===void 0&&(Ee=this.length),Z<0||ne>U.length||ye<0||Ee>this.length)throw new RangeError("out of range index");if(ye>=Ee&&Z>=ne)return 0;if(ye>=Ee)return-1;if(Z>=ne)return 1;if(this===U)return 0;let Fe=(Ee>>>=0)-(ye>>>=0),St=(ne>>>=0)-(Z>>>=0);const Bt=Math.min(Fe,St),Qe=this.slice(ye,Ee),$t=U.slice(Z,ne);for(let Pt=0;Pt>>=0,isFinite(ne)?(ne>>>=0,ye===void 0&&(ye="utf8")):(ye=ne,ne=void 0)}const Ee=this.length-Z;if((ne===void 0||ne>Ee)&&(ne=Ee),U.length>0&&(ne<0||Z<0)||Z>this.length)throw new RangeError("Attempt to write outside buffer bounds");ye||(ye="utf8");let Fe=!1;for(;;)switch(ye){case"hex":return te(this,U,Z,ne);case"utf8":case"utf-8":return ie(this,U,Z,ne);case"ascii":case"latin1":case"binary":return se(this,U,Z,ne);case"base64":return Te(this,U,Z,ne);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return he(this,U,Z,ne);default:if(Fe)throw new TypeError("Unknown encoding: "+ye);ye=(""+ye).toLowerCase(),Fe=!0}},g.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const Ve=4096;function He(pe,U,Z){let ne="";Z=Math.min(pe.length,Z);for(let ye=U;yene)&&(Z=ne);let ye="";for(let Ee=U;EeZ)throw new RangeError("Trying to access beyond buffer length")}function u(pe,U,Z,ne,ye,Ee){if(!g.isBuffer(pe))throw new TypeError('"buffer" argument must be a Buffer instance');if(U>ye||Upe.length)throw new RangeError("Index out of range")}function at(pe,U,Z,ne,ye){H(U,ne,ye,pe,Z,7);let Ee=Number(U&BigInt(4294967295));pe[Z++]=Ee,Ee>>=8,pe[Z++]=Ee,Ee>>=8,pe[Z++]=Ee,Ee>>=8,pe[Z++]=Ee;let Fe=Number(U>>BigInt(32)&BigInt(4294967295));return pe[Z++]=Fe,Fe>>=8,pe[Z++]=Fe,Fe>>=8,pe[Z++]=Fe,Fe>>=8,pe[Z++]=Fe,Z}function Xe(pe,U,Z,ne,ye){H(U,ne,ye,pe,Z,7);let Ee=Number(U&BigInt(4294967295));pe[Z+7]=Ee,Ee>>=8,pe[Z+6]=Ee,Ee>>=8,pe[Z+5]=Ee,Ee>>=8,pe[Z+4]=Ee;let Fe=Number(U>>BigInt(32)&BigInt(4294967295));return pe[Z+3]=Fe,Fe>>=8,pe[Z+2]=Fe,Fe>>=8,pe[Z+1]=Fe,Fe>>=8,pe[Z]=Fe,Z+8}function Se(pe,U,Z,ne,ye,Ee){if(Z+ne>pe.length)throw new RangeError("Index out of range");if(Z<0)throw new RangeError("Index out of range")}function De(pe,U,Z,ne,ye){return U=+U,Z>>>=0,ye||Se(pe,0,Z,4),v.write(pe,U,Z,ne,23,4),Z+4}function Ke(pe,U,Z,ne,ye){return U=+U,Z>>>=0,ye||Se(pe,0,Z,8),v.write(pe,U,Z,ne,52,8),Z+8}g.prototype.slice=function(U,Z){const ne=this.length;(U=~~U)<0?(U+=ne)<0&&(U=0):U>ne&&(U=ne),(Z=Z===void 0?ne:~~Z)<0?(Z+=ne)<0&&(Z=0):Z>ne&&(Z=ne),Z>>=0,Z>>>=0,ne||Re(U,Z,this.length);let ye=this[U],Ee=1,Fe=0;for(;++Fe>>=0,Z>>>=0,ne||Re(U,Z,this.length);let ye=this[U+--Z],Ee=1;for(;Z>0&&(Ee*=256);)ye+=this[U+--Z]*Ee;return ye},g.prototype.readUint8=g.prototype.readUInt8=function(U,Z){return U>>>=0,Z||Re(U,1,this.length),this[U]},g.prototype.readUint16LE=g.prototype.readUInt16LE=function(U,Z){return U>>>=0,Z||Re(U,2,this.length),this[U]|this[U+1]<<8},g.prototype.readUint16BE=g.prototype.readUInt16BE=function(U,Z){return U>>>=0,Z||Re(U,2,this.length),this[U]<<8|this[U+1]},g.prototype.readUint32LE=g.prototype.readUInt32LE=function(U,Z){return U>>>=0,Z||Re(U,4,this.length),(this[U]|this[U+1]<<8|this[U+2]<<16)+16777216*this[U+3]},g.prototype.readUint32BE=g.prototype.readUInt32BE=function(U,Z){return U>>>=0,Z||Re(U,4,this.length),16777216*this[U]+(this[U+1]<<16|this[U+2]<<8|this[U+3])},g.prototype.readBigUInt64LE=yt((function(U){we(U>>>=0,"offset");const Z=this[U],ne=this[U+7];Z!==void 0&&ne!==void 0||ct(U,this.length-8);const ye=Z+256*this[++U]+65536*this[++U]+this[++U]*2**24,Ee=this[++U]+256*this[++U]+65536*this[++U]+ne*2**24;return BigInt(ye)+(BigInt(Ee)<>>=0,"offset");const Z=this[U],ne=this[U+7];Z!==void 0&&ne!==void 0||ct(U,this.length-8);const ye=Z*2**24+65536*this[++U]+256*this[++U]+this[++U],Ee=this[++U]*2**24+65536*this[++U]+256*this[++U]+ne;return(BigInt(ye)<>>=0,Z>>>=0,ne||Re(U,Z,this.length);let ye=this[U],Ee=1,Fe=0;for(;++Fe=Ee&&(ye-=Math.pow(2,8*Z)),ye},g.prototype.readIntBE=function(U,Z,ne){U>>>=0,Z>>>=0,ne||Re(U,Z,this.length);let ye=Z,Ee=1,Fe=this[U+--ye];for(;ye>0&&(Ee*=256);)Fe+=this[U+--ye]*Ee;return Ee*=128,Fe>=Ee&&(Fe-=Math.pow(2,8*Z)),Fe},g.prototype.readInt8=function(U,Z){return U>>>=0,Z||Re(U,1,this.length),128&this[U]?-1*(255-this[U]+1):this[U]},g.prototype.readInt16LE=function(U,Z){U>>>=0,Z||Re(U,2,this.length);const ne=this[U]|this[U+1]<<8;return 32768&ne?4294901760|ne:ne},g.prototype.readInt16BE=function(U,Z){U>>>=0,Z||Re(U,2,this.length);const ne=this[U+1]|this[U]<<8;return 32768&ne?4294901760|ne:ne},g.prototype.readInt32LE=function(U,Z){return U>>>=0,Z||Re(U,4,this.length),this[U]|this[U+1]<<8|this[U+2]<<16|this[U+3]<<24},g.prototype.readInt32BE=function(U,Z){return U>>>=0,Z||Re(U,4,this.length),this[U]<<24|this[U+1]<<16|this[U+2]<<8|this[U+3]},g.prototype.readBigInt64LE=yt((function(U){we(U>>>=0,"offset");const Z=this[U],ne=this[U+7];Z!==void 0&&ne!==void 0||ct(U,this.length-8);const ye=this[U+4]+256*this[U+5]+65536*this[U+6]+(ne<<24);return(BigInt(ye)<>>=0,"offset");const Z=this[U],ne=this[U+7];Z!==void 0&&ne!==void 0||ct(U,this.length-8);const ye=(Z<<24)+65536*this[++U]+256*this[++U]+this[++U];return(BigInt(ye)<>>=0,Z||Re(U,4,this.length),v.read(this,U,!0,23,4)},g.prototype.readFloatBE=function(U,Z){return U>>>=0,Z||Re(U,4,this.length),v.read(this,U,!1,23,4)},g.prototype.readDoubleLE=function(U,Z){return U>>>=0,Z||Re(U,8,this.length),v.read(this,U,!0,52,8)},g.prototype.readDoubleBE=function(U,Z){return U>>>=0,Z||Re(U,8,this.length),v.read(this,U,!1,52,8)},g.prototype.writeUintLE=g.prototype.writeUIntLE=function(U,Z,ne,ye){U=+U,Z>>>=0,ne>>>=0,!ye&&u(this,U,Z,ne,Math.pow(2,8*ne)-1,0);let Ee=1,Fe=0;for(this[Z]=255&U;++Fe>>=0,ne>>>=0,!ye&&u(this,U,Z,ne,Math.pow(2,8*ne)-1,0);let Ee=ne-1,Fe=1;for(this[Z+Ee]=255&U;--Ee>=0&&(Fe*=256);)this[Z+Ee]=U/Fe&255;return Z+ne},g.prototype.writeUint8=g.prototype.writeUInt8=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,1,255,0),this[Z]=255&U,Z+1},g.prototype.writeUint16LE=g.prototype.writeUInt16LE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,2,65535,0),this[Z]=255&U,this[Z+1]=U>>>8,Z+2},g.prototype.writeUint16BE=g.prototype.writeUInt16BE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,2,65535,0),this[Z]=U>>>8,this[Z+1]=255&U,Z+2},g.prototype.writeUint32LE=g.prototype.writeUInt32LE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,4,4294967295,0),this[Z+3]=U>>>24,this[Z+2]=U>>>16,this[Z+1]=U>>>8,this[Z]=255&U,Z+4},g.prototype.writeUint32BE=g.prototype.writeUInt32BE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,4,4294967295,0),this[Z]=U>>>24,this[Z+1]=U>>>16,this[Z+2]=U>>>8,this[Z+3]=255&U,Z+4},g.prototype.writeBigUInt64LE=yt((function(U,Z=0){return at(this,U,Z,BigInt(0),BigInt("0xffffffffffffffff"))})),g.prototype.writeBigUInt64BE=yt((function(U,Z=0){return Xe(this,U,Z,BigInt(0),BigInt("0xffffffffffffffff"))})),g.prototype.writeIntLE=function(U,Z,ne,ye){if(U=+U,Z>>>=0,!ye){const Bt=Math.pow(2,8*ne-1);u(this,U,Z,ne,Bt-1,-Bt)}let Ee=0,Fe=1,St=0;for(this[Z]=255&U;++Ee>>=0,!ye){const Bt=Math.pow(2,8*ne-1);u(this,U,Z,ne,Bt-1,-Bt)}let Ee=ne-1,Fe=1,St=0;for(this[Z+Ee]=255&U;--Ee>=0&&(Fe*=256);)U<0&&St===0&&this[Z+Ee+1]!==0&&(St=1),this[Z+Ee]=(U/Fe|0)-St&255;return Z+ne},g.prototype.writeInt8=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,1,127,-128),U<0&&(U=255+U+1),this[Z]=255&U,Z+1},g.prototype.writeInt16LE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,2,32767,-32768),this[Z]=255&U,this[Z+1]=U>>>8,Z+2},g.prototype.writeInt16BE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,2,32767,-32768),this[Z]=U>>>8,this[Z+1]=255&U,Z+2},g.prototype.writeInt32LE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,4,2147483647,-2147483648),this[Z]=255&U,this[Z+1]=U>>>8,this[Z+2]=U>>>16,this[Z+3]=U>>>24,Z+4},g.prototype.writeInt32BE=function(U,Z,ne){return U=+U,Z>>>=0,ne||u(this,U,Z,4,2147483647,-2147483648),U<0&&(U=4294967295+U+1),this[Z]=U>>>24,this[Z+1]=U>>>16,this[Z+2]=U>>>8,this[Z+3]=255&U,Z+4},g.prototype.writeBigInt64LE=yt((function(U,Z=0){return at(this,U,Z,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),g.prototype.writeBigInt64BE=yt((function(U,Z=0){return Xe(this,U,Z,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),g.prototype.writeFloatLE=function(U,Z,ne){return De(this,U,Z,!0,ne)},g.prototype.writeFloatBE=function(U,Z,ne){return De(this,U,Z,!1,ne)},g.prototype.writeDoubleLE=function(U,Z,ne){return Ke(this,U,Z,!0,ne)},g.prototype.writeDoubleBE=function(U,Z,ne){return Ke(this,U,Z,!1,ne)},g.prototype.copy=function(U,Z,ne,ye){if(!g.isBuffer(U))throw new TypeError("argument should be a Buffer");if(ne||(ne=0),ye||ye===0||(ye=this.length),Z>=U.length&&(Z=U.length),Z||(Z=0),ye>0&&ye=this.length)throw new RangeError("Index out of range");if(ye<0)throw new RangeError("sourceEnd out of bounds");ye>this.length&&(ye=this.length),U.length-Z>>=0,ne=ne===void 0?this.length:ne>>>0,U||(U=0),typeof U=="number")for(Ee=Z;Ee=ne+4;Z-=3)U=`_${pe.slice(Z-3,Z)}${U}`;return`${pe.slice(0,Z)}${U}`}function H(pe,U,Z,ne,ye,Ee){if(pe>Z||pe= 0${Fe} and < 2${Fe} ** ${8*(Ee+1)}${Fe}`:`>= -(2${Fe} ** ${8*(Ee+1)-1}${Fe}) and < 2 ** ${8*(Ee+1)-1}${Fe}`,new ft.ERR_OUT_OF_RANGE("value",St,pe)}(function(St,Bt,Qe){we(Bt,"offset"),St[Bt]!==void 0&&St[Bt+Qe]!==void 0||ct(Bt,St.length-(Qe+1))})(ne,ye,Ee)}function we(pe,U){if(typeof pe!="number")throw new ft.ERR_INVALID_ARG_TYPE(U,"number",pe)}function ct(pe,U,Z){throw Math.floor(pe)!==pe?(we(pe,Z),new ft.ERR_OUT_OF_RANGE("offset","an integer",pe)):U<0?new ft.ERR_BUFFER_OUT_OF_BOUNDS:new ft.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${U}`,pe)}Nt("ERR_BUFFER_OUT_OF_BOUNDS",(function(pe){return pe?`${pe} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),Nt("ERR_INVALID_ARG_TYPE",(function(pe,U){return`The "${pe}" argument must be of type number. Received type ${typeof U}`}),TypeError),Nt("ERR_OUT_OF_RANGE",(function(pe,U,Z){let ne=`The value of "${pe}" is out of range.`,ye=Z;return Number.isInteger(Z)&&Math.abs(Z)>4294967296?ye=Wt(String(Z)):typeof Z=="bigint"&&(ye=String(Z),(Z>BigInt(2)**BigInt(32)||Z<-(BigInt(2)**BigInt(32)))&&(ye=Wt(ye)),ye+="n"),ne+=` It must be ${U}. Received ${ye}`,ne}),RangeError);const mt=/[^+/0-9A-Za-z-_]/g;function ur(pe,U){let Z;U=U||1/0;const ne=pe.length;let ye=null;const Ee=[];for(let Fe=0;Fe55295&&Z<57344){if(!ye){if(Z>56319){(U-=3)>-1&&Ee.push(239,191,189);continue}if(Fe+1===ne){(U-=3)>-1&&Ee.push(239,191,189);continue}ye=Z;continue}if(Z<56320){(U-=3)>-1&&Ee.push(239,191,189),ye=Z;continue}Z=65536+(ye-55296<<10|Z-56320)}else ye&&(U-=3)>-1&&Ee.push(239,191,189);if(ye=null,Z<128){if((U-=1)<0)break;Ee.push(Z)}else if(Z<2048){if((U-=2)<0)break;Ee.push(Z>>6|192,63&Z|128)}else if(Z<65536){if((U-=3)<0)break;Ee.push(Z>>12|224,Z>>6&63|128,63&Z|128)}else{if(!(Z<1114112))throw new Error("Invalid code point");if((U-=4)<0)break;Ee.push(Z>>18|240,Z>>12&63|128,Z>>6&63|128,63&Z|128)}}return Ee}function ar(pe){return h.toByteArray((function(Z){if((Z=(Z=Z.split("=")[0]).trim().replace(mt,"")).length<2)return"";for(;Z.length%4!=0;)Z+="=";return Z})(pe))}function Tt(pe,U,Z,ne){let ye;for(ye=0;ye=U.length||ye>=pe.length);++ye)U[ye+Z]=pe[ye];return ye}function Gt(pe,U){return pe instanceof U||pe!=null&&pe.constructor!=null&&pe.constructor.name!=null&&pe.constructor.name===U.name}function Sr(pe){return pe!=pe}const kt=(function(){const pe="0123456789abcdef",U=new Array(256);for(let Z=0;Z<16;++Z){const ne=16*Z;for(let ye=0;ye<16;++ye)U[ne+ye]=pe[Z]+pe[ye]}return U})();function yt(pe){return typeof BigInt>"u"?Zt:pe}function Zt(){throw new Error("BigInt not supported")}},13144(w,N,s){var h=s(66743),v=s(11002),f=s(10076),y=s(47119);w.exports=y||h.call(f,v)},12205(w,N,s){var h=s(66743),v=s(11002),f=s(13144);w.exports=function(){return f(h,v,arguments)}},11002(w){w.exports=Function.prototype.apply},10076(w){w.exports=Function.prototype.call},73126(w,N,s){var h=s(66743),v=s(69675),f=s(10076),y=s(13144);w.exports=function(g){if(g.length<1||typeof g[0]!="function")throw new v("a function is required");return y(h,f,g)}},47119(w){w.exports=typeof Reflect<"u"&&Reflect&&Reflect.apply},10487(w,N,s){var h=s(96897),v=s(30655),f=s(73126),y=s(12205);w.exports=function(g){var S=f(arguments),_=g.length-(arguments.length-1);return h(S,1+(_>0?_:0),!0)},v?v(w.exports,"apply",{value:y}):w.exports.apply=y},36556(w,N,s){var h=s(70453),v=s(73126),f=v([h("%String.prototype.indexOf%")]);w.exports=function(m,g){var S=h(m,!!g);return typeof S=="function"&&f(m,".prototype.")>-1?v([S]):S}},17965(w,N,s){var h=s(16426),v={"text/plain":"Text","text/html":"Url",default:"Text"};w.exports=function(y,m){var g,S,_,T,I,j,M=!1;m||(m={}),g=m.debug||!1;try{if(_=h(),T=document.createRange(),I=document.getSelection(),(j=document.createElement("span")).textContent=y,j.ariaHidden="true",j.style.all="unset",j.style.position="fixed",j.style.top=0,j.style.clip="rect(0, 0, 0, 0)",j.style.whiteSpace="pre",j.style.webkitUserSelect="text",j.style.MozUserSelect="text",j.style.msUserSelect="text",j.style.userSelect="text",j.addEventListener("copy",(function(z){if(z.stopPropagation(),m.format)if(z.preventDefault(),z.clipboardData===void 0){g&&console.warn("unable to use e.clipboardData"),g&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var K=v[m.format]||v.default;window.clipboardData.setData(K,y)}else z.clipboardData.clearData(),z.clipboardData.setData(m.format,y);m.onCopy&&(z.preventDefault(),m.onCopy(z.clipboardData))})),document.body.appendChild(j),T.selectNodeContents(j),I.addRange(T),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");M=!0}catch(z){g&&console.error("unable to copy using execCommand: ",z),g&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(m.format||"text",y),m.onCopy&&m.onCopy(window.clipboardData),M=!0}catch(K){g&&console.error("unable to copy using clipboardData: ",K),g&&console.error("falling back to prompt"),S=(function(B){var X=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return B.replace(/#{\s*key\s*}/g,X)})("message"in m?m.message:"Copy to clipboard: #{key}, Enter"),window.prompt(S,y)}}finally{I&&(typeof I.removeRange=="function"?I.removeRange(T):I.removeAllRanges()),j&&document.body.removeChild(j),_()}return M}},2205(w,N,s){var h;h=s.g!==void 0?s.g:this,w.exports=(function(v){if(v.CSS&&v.CSS.escape)return v.CSS.escape;var f=function(y){if(arguments.length==0)throw new TypeError("`CSS.escape` requires an argument.");for(var m,g=String(y),S=g.length,_=-1,T="",I=g.charCodeAt(0);++_=1&&m<=31||m==127||_==0&&m>=48&&m<=57||_==1&&m>=48&&m<=57&&I==45?"\\"+m.toString(16)+" ":_==0&&S==1&&m==45||!(m>=128||m==45||m==95||m>=48&&m<=57||m>=65&&m<=90||m>=97&&m<=122)?"\\"+g.charAt(_):g.charAt(_):T+="�";return T};return v.CSS||(v.CSS={}),v.CSS.escape=f,f})(h)},81919(w,N,s){var h=s(48287).Buffer;function v(S){return S instanceof h||S instanceof Date||S instanceof RegExp}function f(S){if(S instanceof h){var _=h.alloc?h.alloc(S.length):new h(S.length);return S.copy(_),_}if(S instanceof Date)return new Date(S.getTime());if(S instanceof RegExp)return new RegExp(S);throw new Error("Unexpected situation")}function y(S){var _=[];return S.forEach((function(T,I){typeof T=="object"&&T!==null?Array.isArray(T)?_[I]=y(T):v(T)?_[I]=f(T):_[I]=g({},T):_[I]=T})),_}function m(S,_){return _==="__proto__"?void 0:S[_]}var g=w.exports=function(){if(arguments.length<1||typeof arguments[0]!="object")return!1;if(arguments.length<2)return arguments[0];var S,_,T=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(I){typeof I!="object"||I===null||Array.isArray(I)||Object.keys(I).forEach((function(j){return _=m(T,j),(S=m(I,j))===T?void 0:typeof S!="object"||S===null?void(T[j]=S):Array.isArray(S)?void(T[j]=y(S)):v(S)?void(T[j]=f(S)):typeof _!="object"||_===null||Array.isArray(_)?void(T[j]=g({},S)):void(T[j]=g(_,S))}))})),T}},14744(w){var N=function(T){return(function(j){return!!j&&typeof j=="object"})(T)&&!(function(j){var M=Object.prototype.toString.call(j);return M==="[object RegExp]"||M==="[object Date]"||(function(K){return K.$$typeof===s})(j)})(T)},s=typeof Symbol=="function"&&Symbol.for?Symbol.for("react.element"):60103;function h(_,T){return T.clone!==!1&&T.isMergeableObject(_)?g((function(j){return Array.isArray(j)?[]:{}})(_),_,T):_}function v(_,T,I){return _.concat(T).map((function(j){return h(j,I)}))}function f(_){return Object.keys(_).concat((function(I){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(I).filter((function(j){return Object.propertyIsEnumerable.call(I,j)})):[]})(_))}function y(_,T){try{return T in _}catch{return!1}}function m(_,T,I){var j={};return I.isMergeableObject(_)&&f(_).forEach((function(M){j[M]=h(_[M],I)})),f(T).forEach((function(M){(function(K,Y){return y(K,Y)&&!(Object.hasOwnProperty.call(K,Y)&&Object.propertyIsEnumerable.call(K,Y))})(_,M)||(y(_,M)&&I.isMergeableObject(T[M])?j[M]=(function(K,Y){if(!Y.customMerge)return g;var B=Y.customMerge(K);return typeof B=="function"?B:g})(M,I)(_[M],T[M],I):j[M]=h(T[M],I))})),j}function g(_,T,I){(I=I||{}).arrayMerge=I.arrayMerge||v,I.isMergeableObject=I.isMergeableObject||N,I.cloneUnlessOtherwiseSpecified=h;var j=Array.isArray(T);return j===Array.isArray(_)?j?I.arrayMerge(_,T,I):m(_,T,I):h(T,I)}g.all=function(T,I){if(!Array.isArray(T))throw new Error("first argument should be an array");return T.reduce((function(j,M){return g(j,M,I)}),{})};var S=g;w.exports=S},30041(w,N,s){var h=s(30655),v=s(58068),f=s(69675),y=s(75795);w.exports=function(g,S,_){if(!g||typeof g!="object"&&typeof g!="function")throw new f("`obj` must be an object or a function`");if(typeof S!="string"&&typeof S!="symbol")throw new f("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new f("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new f("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new f("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new f("`loose`, if provided, must be a boolean");var T=arguments.length>3?arguments[3]:null,I=arguments.length>4?arguments[4]:null,j=arguments.length>5?arguments[5]:null,M=arguments.length>6&&arguments[6],z=!!y&&y(g,S);if(h)h(g,S,{configurable:j===null&&z?z.configurable:!j,enumerable:T===null&&z?z.enumerable:!T,value:_,writable:I===null&&z?z.writable:!I});else{if(!M&&(T||I||j))throw new v("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");g[S]=_}}},78004(w){class N{constructor(v,f){this.low=v,this.high=f,this.length=1+f-v}overlaps(v){return!(this.highv.high)}touches(v){return!(this.high+1v.high)}add(v){return new N(Math.min(this.low,v.low),Math.max(this.high,v.high))}subtract(v){return v.low<=this.low&&v.high>=this.high?[]:v.low>this.low&&v.highv+f.length),0)}add(v,f){var y=m=>{for(var g=0;g{for(var g=0;g{for(var S=0;S{for(var y=f.low;y<=f.high;)v.push(y),y++;return v}),[])}subranges(){return this.ranges.map((v=>({low:v.low,high:v.high,length:1+v.high-v.low})))}}w.exports=s},7176(w,N,s){var h,v=s(73126),f=s(75795);try{h=[].__proto__===Array.prototype}catch(S){if(!S||typeof S!="object"||!("code"in S)||S.code!=="ERR_PROTO_ACCESS")throw S}var y=!!h&&f&&f(Object.prototype,"__proto__"),m=Object,g=m.getPrototypeOf;w.exports=y&&typeof y.get=="function"?v([y.get]):typeof g=="function"&&function(_){return g(_==null?_:m(_))}},30655(w){var N=Object.defineProperty||!1;if(N)try{N({},"a",{value:1})}catch{N=!1}w.exports=N},41237(w){w.exports=EvalError},69383(w){w.exports=Error},79290(w){w.exports=RangeError},79538(w){w.exports=ReferenceError},58068(w){w.exports=SyntaxError},69675(w){w.exports=TypeError},35345(w){w.exports=URIError},79612(w){w.exports=Object},37007(w){var N,s=typeof Reflect=="object"?Reflect:null,h=s&&typeof s.apply=="function"?s.apply:function(Y,B,X){return Function.prototype.apply.call(Y,B,X)};N=s&&typeof s.ownKeys=="function"?s.ownKeys:Object.getOwnPropertySymbols?function(Y){return Object.getOwnPropertyNames(Y).concat(Object.getOwnPropertySymbols(Y))}:function(Y){return Object.getOwnPropertyNames(Y)};var v=Number.isNaN||function(Y){return Y!=Y};function f(){f.init.call(this)}w.exports=f,w.exports.once=function(Y,B){return new Promise((function(X,te){function ie(Te){Y.removeListener(B,se),te(Te)}function se(){typeof Y.removeListener=="function"&&Y.removeListener("error",ie),X([].slice.call(arguments))}z(Y,B,se,{once:!0}),B!=="error"&&(function(he,ge,ke){typeof he.on=="function"&&z(he,"error",ge,ke)})(Y,ie,{once:!0})}))},f.EventEmitter=f,f.prototype._events=void 0,f.prototype._eventsCount=0,f.prototype._maxListeners=void 0;var y=10;function m(K){if(typeof K!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof K)}function g(K){return K._maxListeners===void 0?f.defaultMaxListeners:K._maxListeners}function S(K,Y,B,X){var te,ie,se;if(m(B),(ie=K._events)===void 0?(ie=K._events=Object.create(null),K._eventsCount=0):(ie.newListener!==void 0&&(K.emit("newListener",Y,B.listener?B.listener:B),ie=K._events),se=ie[Y]),se===void 0)se=ie[Y]=B,++K._eventsCount;else if(typeof se=="function"?se=ie[Y]=X?[B,se]:[se,B]:X?se.unshift(B):se.push(B),(te=g(K))>0&&se.length>te&&!se.warned){se.warned=!0;var Te=new Error("Possible EventEmitter memory leak detected. "+se.length+" "+String(Y)+" listeners added. Use emitter.setMaxListeners() to increase limit");Te.name="MaxListenersExceededWarning",Te.emitter=K,Te.type=Y,Te.count=se.length,(function(ge){console&&console.warn&&console.warn(ge)})(Te)}return K}function _(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function T(K,Y,B){var X={fired:!1,wrapFn:void 0,target:K,type:Y,listener:B},te=_.bind(X);return te.listener=B,X.wrapFn=te,te}function I(K,Y,B){var X=K._events;if(X===void 0)return[];var te=X[Y];return te===void 0?[]:typeof te=="function"?B?[te.listener||te]:[te]:B?(function(se){for(var Te=new Array(se.length),he=0;he0&&(se=B[0]),se instanceof Error)throw se;var Te=new Error("Unhandled error."+(se?" ("+se.message+")":""));throw Te.context=se,Te}var he=ie[Y];if(he===void 0)return!1;if(typeof he=="function")h(he,this,B);else{var ge=he.length,ke=M(he,ge);for(X=0;X=0;se--)if(X[se]===B||X[se].listener===B){Te=X[se].listener,ie=se;break}if(ie<0)return this;ie===0?X.shift():(function(ge,ke){for(;ke+1=0;te--)this.removeListener(Y,B[te]);return this},f.prototype.listeners=function(Y){return I(this,Y,!0)},f.prototype.rawListeners=function(Y){return I(this,Y,!1)},f.listenerCount=function(K,Y){return typeof K.listenerCount=="function"?K.listenerCount(Y):j.call(K,Y)},f.prototype.listenerCount=j,f.prototype.eventNames=function(){return this._eventsCount>0?N(this._events):[]}},85587(w,N,s){var h=s(26311),v=f(Error);function f(y){return m.displayName=y.displayName||y.name,m;function m(g){return g&&(g=h.apply(null,arguments)),new y(g)}}w.exports=v,v.eval=f(EvalError),v.range=f(RangeError),v.reference=f(ReferenceError),v.syntax=f(SyntaxError),v.type=f(TypeError),v.uri=f(URIError),v.create=f},82682(w,N,s){var h=s(69600),v=Object.prototype.toString,f=Object.prototype.hasOwnProperty;w.exports=function(m,g,S){if(!h(g))throw new TypeError("iterator must be a function");var _;arguments.length>=3&&(_=S),(function(I){return v.call(I)==="[object Array]"})(m)?(function(I,j,M){for(var z=0,K=I.length;z0?parseInt(Y):null};_"u"?h:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?h:ArrayBuffer,"%ArrayIteratorPrototype%":ge&&ke?ke([][Symbol.iterator]()):h,"%AsyncFromSyncIteratorPrototype%":h,"%AsyncFunction%":gt,"%AsyncGenerator%":gt,"%AsyncGeneratorFunction%":gt,"%AsyncIteratorPrototype%":gt,"%Atomics%":typeof Atomics>"u"?h:Atomics,"%BigInt%":typeof BigInt>"u"?h:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?h:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?h:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?h:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":f,"%eval%":eval,"%EvalError%":y,"%Float32Array%":typeof Float32Array>"u"?h:Float32Array,"%Float64Array%":typeof Float64Array>"u"?h:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?h:FinalizationRegistry,"%Function%":X,"%GeneratorFunction%":gt,"%Int8Array%":typeof Int8Array>"u"?h:Int8Array,"%Int16Array%":typeof Int16Array>"u"?h:Int16Array,"%Int32Array%":typeof Int32Array>"u"?h:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":ge&&ke?ke(ke([][Symbol.iterator]())):h,"%JSON%":typeof JSON=="object"?JSON:h,"%Map%":typeof Map>"u"?h:Map,"%MapIteratorPrototype%":typeof Map<"u"&&ge&&ke?ke(new Map()[Symbol.iterator]()):h,"%Math%":Math,"%Number%":Number,"%Object%":v,"%Object.getOwnPropertyDescriptor%":ie,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?h:Promise,"%Proxy%":typeof Proxy>"u"?h:Proxy,"%RangeError%":m,"%ReferenceError%":g,"%Reflect%":typeof Reflect>"u"?h:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?h:Set,"%SetIteratorPrototype%":typeof Set<"u"&&ge&&ke?ke(new Set()[Symbol.iterator]()):h,"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?h:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":ge&&ke?ke(""[Symbol.iterator]()):h,"%Symbol%":ge?Symbol:h,"%SyntaxError%":S,"%ThrowTypeError%":he,"%TypedArray%":Re,"%TypeError%":_,"%Uint8Array%":typeof Uint8Array>"u"?h:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?h:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?h:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?h:Uint32Array,"%URIError%":T,"%WeakMap%":typeof WeakMap>"u"?h:WeakMap,"%WeakRef%":typeof WeakRef>"u"?h:WeakRef,"%WeakSet%":typeof WeakSet>"u"?h:WeakSet,"%Function.prototype.call%":nt,"%Function.prototype.apply%":qe,"%Object.defineProperty%":se,"%Object.getPrototypeOf%":Ve,"%Math.abs%":I,"%Math.floor%":j,"%Math.max%":M,"%Math.min%":z,"%Math.pow%":K,"%Math.round%":Y,"%Math.sign%":B,"%Reflect.getPrototypeOf%":He};if(ke)try{null.error}catch(ar){var at=ke(ke(ar));u["%Error.prototype%"]=at}var Xe=function ar(Tt){var Gt;if(Tt==="%AsyncFunction%")Gt=te("async function () {}");else if(Tt==="%GeneratorFunction%")Gt=te("function* () {}");else if(Tt==="%AsyncGeneratorFunction%")Gt=te("async function* () {}");else if(Tt==="%AsyncGenerator%"){var Sr=ar("%AsyncGeneratorFunction%");Sr&&(Gt=Sr.prototype)}else if(Tt==="%AsyncIteratorPrototype%"){var kt=ar("%AsyncGenerator%");kt&&ke&&(Gt=ke(kt.prototype))}return u[Tt]=Gt,Gt},Se={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},De=s(66743),Ke=s(9957),ft=De.call(nt,Array.prototype.concat),Nt=De.call(qe,Array.prototype.splice),Wt=De.call(nt,String.prototype.replace),H=De.call(nt,String.prototype.slice),we=De.call(nt,RegExp.prototype.exec),ct=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,mt=/\\(\\)?/g,ur=function(Tt,Gt){var Sr,kt=Tt;if(Ke(Se,kt)&&(kt="%"+(Sr=Se[kt])[0]+"%"),Ke(u,kt)){var yt=u[kt];if(yt===gt&&(yt=Xe(kt)),yt===void 0&&!Gt)throw new _("intrinsic "+Tt+" exists, but is not available. Please file an issue!");return{alias:Sr,name:kt,value:yt}}throw new S("intrinsic "+Tt+" does not exist!")};w.exports=function(Tt,Gt){if(typeof Tt!="string"||Tt.length===0)throw new _("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof Gt!="boolean")throw new _('"allowMissing" argument must be a boolean');if(we(/^%?[^%]*%?$/,Tt)===null)throw new S("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var Sr=(function($t){var Pt=H($t,0,1),rn=H($t,-1);if(Pt==="%"&&rn!=="%")throw new S("invalid intrinsic syntax, expected closing `%`");if(rn==="%"&&Pt!=="%")throw new S("invalid intrinsic syntax, expected opening `%`");var kr=[];return Wt($t,ct,(function(An,Wr,Jn,Ea){kr[kr.length]=Jn?Wt(Ea,mt,"$1"):Wr||An})),kr})(Tt),kt=Sr.length>0?Sr[0]:"",yt=ur("%"+kt+"%",Gt),Zt=yt.name,pe=yt.value,U=!1,Z=yt.alias;Z&&(kt=Z[0],Nt(Sr,ft([0,1],Z)));for(var ne=1,ye=!0;ne=Sr.length){var Bt=ie(pe,Ee);pe=(ye=!!Bt)&&"get"in Bt&&!("originalValue"in Bt.get)?Bt.get:pe[Ee]}else ye=Ke(pe,Ee),pe=pe[Ee];ye&&!U&&(u[Zt]=pe)}}return pe}},71064(w,N,s){var h=s(79612);w.exports=h.getPrototypeOf||null},48648(w){w.exports=typeof Reflect<"u"&&Reflect.getPrototypeOf||null},93628(w,N,s){var h=s(48648),v=s(71064),f=s(7176);w.exports=h?function(m){return h(m)}:v?function(m){if(!m||typeof m!="object"&&typeof m!="function")throw new TypeError("getProto: not an object");return v(m)}:f?function(m){return f(m)}:null},6549(w){w.exports=Object.getOwnPropertyDescriptor},75795(w,N,s){var h=s(6549);if(h)try{h([],"length")}catch{h=null}w.exports=h},30592(w,N,s){var h=s(30655),v=function(){return!!h};v.hasArrayLengthDefineBug=function(){if(!h)return null;try{return h([],"length",{value:1}).length!==1}catch{return!0}},w.exports=v},64039(w,N,s){var h=typeof Symbol<"u"&&Symbol,v=s(41333);w.exports=function(){return typeof h=="function"&&typeof Symbol=="function"&&typeof h("foo")=="symbol"&&typeof Symbol("bar")=="symbol"&&v()}},41333(w){w.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var s={},h=Symbol("test"),v=Object(h);if(typeof h=="string"||Object.prototype.toString.call(h)!=="[object Symbol]"||Object.prototype.toString.call(v)!=="[object Symbol]")return!1;for(var f in s[h]=42,s)return!1;if(typeof Object.keys=="function"&&Object.keys(s).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(s).length!==0)return!1;var y=Object.getOwnPropertySymbols(s);if(y.length!==1||y[0]!==h||!Object.prototype.propertyIsEnumerable.call(s,h))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var m=Object.getOwnPropertyDescriptor(s,h);if(m.value!==42||m.enumerable!==!0)return!1}return!0}},49092(w,N,s){var h=s(41333);w.exports=function(){return h()&&!!Symbol.toStringTag}},9957(w,N,s){var h=Function.prototype.call,v=Object.prototype.hasOwnProperty,f=s(66743);w.exports=f.call(h,v)},45981(w){function N(ne){return ne instanceof Map?ne.clear=ne.delete=ne.set=function(){throw new Error("map is read-only")}:ne instanceof Set&&(ne.add=ne.clear=ne.delete=function(){throw new Error("set is read-only")}),Object.freeze(ne),Object.getOwnPropertyNames(ne).forEach((function(ye){var Ee=ne[ye];typeof Ee!="object"||Object.isFrozen(Ee)||N(Ee)})),ne}var s=N,h=N;s.default=h;class v{constructor(ye){ye.data===void 0&&(ye.data={}),this.data=ye.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function f(ne){return ne.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function y(ne,...ye){const Ee=Object.create(null);for(const Fe in ne)Ee[Fe]=ne[Fe];return ye.forEach((function(Fe){for(const St in Fe)Ee[St]=Fe[St]})),Ee}const m=ne=>!!ne.kind;class g{constructor(ye,Ee){this.buffer="",this.classPrefix=Ee.classPrefix,ye.walk(this)}addText(ye){this.buffer+=f(ye)}openNode(ye){if(!m(ye))return;let Ee=ye.kind;ye.sublanguage||(Ee=`${this.classPrefix}${Ee}`),this.span(Ee)}closeNode(ye){m(ye)&&(this.buffer+="")}value(){return this.buffer}span(ye){this.buffer+=``}}class S{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(ye){this.top.children.push(ye)}openNode(ye){const Ee={kind:ye,children:[]};this.add(Ee),this.stack.push(Ee)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(ye){return this.constructor._walk(ye,this.rootNode)}static _walk(ye,Ee){return typeof Ee=="string"?ye.addText(Ee):Ee.children&&(ye.openNode(Ee),Ee.children.forEach((Fe=>this._walk(ye,Fe))),ye.closeNode(Ee)),ye}static _collapse(ye){typeof ye!="string"&&ye.children&&(ye.children.every((Ee=>typeof Ee=="string"))?ye.children=[ye.children.join("")]:ye.children.forEach((Ee=>{S._collapse(Ee)})))}}class _ extends S{constructor(ye){super(),this.options=ye}addKeyword(ye,Ee){ye!==""&&(this.openNode(Ee),this.addText(ye),this.closeNode())}addText(ye){ye!==""&&this.add(ye)}addSublanguage(ye,Ee){const Fe=ye.root;Fe.kind=Ee,Fe.sublanguage=!0,this.add(Fe)}toHTML(){return new g(this,this.options).value()}finalize(){return!0}}function T(ne){return ne?typeof ne=="string"?ne:ne.source:null}const I=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,j="[a-zA-Z]\\w*",M="[a-zA-Z_]\\w*",z="\\b\\d+(\\.\\d+)?",K="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",Y="\\b(0b[01]+)",B={begin:"\\\\[\\s\\S]",relevance:0},X={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[B]},te={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[B]},ie={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},se=function(ne,ye,Ee={}){const Fe=y({className:"comment",begin:ne,end:ye,contains:[]},Ee);return Fe.contains.push(ie),Fe.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),Fe},Te=se("//","$"),he=se("/\\*","\\*/"),ge=se("#","$"),ke={className:"number",begin:z,relevance:0},Ve={className:"number",begin:K,relevance:0},He={className:"number",begin:Y,relevance:0},qe={className:"number",begin:z+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},nt={begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[B,{begin:/\[/,end:/\]/,relevance:0,contains:[B]}]}]},gt={className:"title",begin:j,relevance:0},Re={className:"title",begin:M,relevance:0},u={begin:"\\.\\s*"+M,relevance:0};var at=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:j,UNDERSCORE_IDENT_RE:M,NUMBER_RE:z,C_NUMBER_RE:K,BINARY_NUMBER_RE:Y,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(ne={})=>{const ye=/^#![ ]*\//;return ne.binary&&(ne.begin=(function(...Fe){return Fe.map((St=>T(St))).join("")})(ye,/.*\b/,ne.binary,/\b.*/)),y({className:"meta",begin:ye,end:/$/,relevance:0,"on:begin":(Ee,Fe)=>{Ee.index!==0&&Fe.ignoreMatch()}},ne)},BACKSLASH_ESCAPE:B,APOS_STRING_MODE:X,QUOTE_STRING_MODE:te,PHRASAL_WORDS_MODE:ie,COMMENT:se,C_LINE_COMMENT_MODE:Te,C_BLOCK_COMMENT_MODE:he,HASH_COMMENT_MODE:ge,NUMBER_MODE:ke,C_NUMBER_MODE:Ve,BINARY_NUMBER_MODE:He,CSS_NUMBER_MODE:qe,REGEXP_MODE:nt,TITLE_MODE:gt,UNDERSCORE_TITLE_MODE:Re,METHOD_GUARD:u,END_SAME_AS_BEGIN:function(ne){return Object.assign(ne,{"on:begin":(ye,Ee)=>{Ee.data._beginMatch=ye[1]},"on:end":(ye,Ee)=>{Ee.data._beginMatch!==ye[1]&&Ee.ignoreMatch()}})}});function Xe(ne,ye){ne.input[ne.index-1]==="."&&ye.ignoreMatch()}function Se(ne,ye){ye&&ne.beginKeywords&&(ne.begin="\\b("+ne.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",ne.__beforeBegin=Xe,ne.keywords=ne.keywords||ne.beginKeywords,delete ne.beginKeywords,ne.relevance===void 0&&(ne.relevance=0))}function De(ne,ye){Array.isArray(ne.illegal)&&(ne.illegal=(function(...Fe){return"("+Fe.map((St=>T(St))).join("|")+")"})(...ne.illegal))}function Ke(ne,ye){if(ne.match){if(ne.begin||ne.end)throw new Error("begin & end are not supported with match");ne.begin=ne.match,delete ne.match}}function ft(ne,ye){ne.relevance===void 0&&(ne.relevance=1)}const Nt=["of","and","for","in","not","or","if","then","parent","list","value"];function Wt(ne,ye,Ee="keyword"){const Fe={};return typeof ne=="string"?St(Ee,ne.split(" ")):Array.isArray(ne)?St(Ee,ne):Object.keys(ne).forEach((function(Bt){Object.assign(Fe,Wt(ne[Bt],ye,Bt))})),Fe;function St(Bt,Qe){ye&&(Qe=Qe.map(($t=>$t.toLowerCase()))),Qe.forEach((function($t){const Pt=$t.split("|");Fe[Pt[0]]=[Bt,H(Pt[0],Pt[1])]}))}}function H(ne,ye){return ye?Number(ye):(function(Fe){return Nt.includes(Fe.toLowerCase())})(ne)?0:1}function we(ne,{plugins:ye}){function Ee(Bt,Qe){return new RegExp(T(Bt),"m"+(ne.case_insensitive?"i":"")+(Qe?"g":""))}class Fe{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(Qe,$t){$t.position=this.position++,this.matchIndexes[this.matchAt]=$t,this.regexes.push([$t,Qe]),this.matchAt+=(function(rn){return new RegExp(rn.toString()+"|").exec("").length-1})(Qe)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const Qe=this.regexes.map(($t=>$t[1]));this.matcherRe=Ee((function(Pt,rn="|"){let kr=0;return Pt.map((An=>{kr+=1;const Wr=kr;let Jn=T(An),Ea="";for(;Jn.length>0;){const Zn=I.exec(Jn);if(!Zn){Ea+=Jn;break}Ea+=Jn.substring(0,Zn.index),Jn=Jn.substring(Zn.index+Zn[0].length),Zn[0][0]==="\\"&&Zn[1]?Ea+="\\"+String(Number(Zn[1])+Wr):(Ea+=Zn[0],Zn[0]==="("&&kr++)}return Ea})).map((An=>`(${An})`)).join(rn)})(Qe),!0),this.lastIndex=0}exec(Qe){this.matcherRe.lastIndex=this.lastIndex;const $t=this.matcherRe.exec(Qe);if(!$t)return null;const Pt=$t.findIndex(((kr,An)=>An>0&&kr!==void 0)),rn=this.matchIndexes[Pt];return $t.splice(0,Pt),Object.assign($t,rn)}}class St{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(Qe){if(this.multiRegexes[Qe])return this.multiRegexes[Qe];const $t=new Fe;return this.rules.slice(Qe).forEach((([Pt,rn])=>$t.addRule(Pt,rn))),$t.compile(),this.multiRegexes[Qe]=$t,$t}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(Qe,$t){this.rules.push([Qe,$t]),$t.type==="begin"&&this.count++}exec(Qe){const $t=this.getMatcher(this.regexIndex);$t.lastIndex=this.lastIndex;let Pt=$t.exec(Qe);if(this.resumingScanAtSamePosition()&&!(Pt&&Pt.index===this.lastIndex)){const rn=this.getMatcher(0);rn.lastIndex=this.lastIndex+1,Pt=rn.exec(Qe)}return Pt&&(this.regexIndex+=Pt.position+1,this.regexIndex===this.count&&this.considerAll()),Pt}}if(ne.compilerExtensions||(ne.compilerExtensions=[]),ne.contains&&ne.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return ne.classNameAliases=y(ne.classNameAliases||{}),(function Bt(Qe,$t){const Pt=Qe;if(Qe.isCompiled)return Pt;[Ke].forEach((kr=>kr(Qe,$t))),ne.compilerExtensions.forEach((kr=>kr(Qe,$t))),Qe.__beforeBegin=null,[Se,De,ft].forEach((kr=>kr(Qe,$t))),Qe.isCompiled=!0;let rn=null;if(typeof Qe.keywords=="object"&&(rn=Qe.keywords.$pattern,delete Qe.keywords.$pattern),Qe.keywords&&(Qe.keywords=Wt(Qe.keywords,ne.case_insensitive)),Qe.lexemes&&rn)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return rn=rn||Qe.lexemes||/\w+/,Pt.keywordPatternRe=Ee(rn,!0),$t&&(Qe.begin||(Qe.begin=/\B|\b/),Pt.beginRe=Ee(Qe.begin),Qe.endSameAsBegin&&(Qe.end=Qe.begin),Qe.end||Qe.endsWithParent||(Qe.end=/\B|\b/),Qe.end&&(Pt.endRe=Ee(Qe.end)),Pt.terminatorEnd=T(Qe.end)||"",Qe.endsWithParent&&$t.terminatorEnd&&(Pt.terminatorEnd+=(Qe.end?"|":"")+$t.terminatorEnd)),Qe.illegal&&(Pt.illegalRe=Ee(Qe.illegal)),Qe.contains||(Qe.contains=[]),Qe.contains=[].concat(...Qe.contains.map((function(kr){return(function(Wr){return Wr.variants&&!Wr.cachedVariants&&(Wr.cachedVariants=Wr.variants.map((function(Jn){return y(Wr,{variants:null},Jn)}))),Wr.cachedVariants?Wr.cachedVariants:ct(Wr)?y(Wr,{starts:Wr.starts?y(Wr.starts):null}):Object.isFrozen(Wr)?y(Wr):Wr})(kr==="self"?Qe:kr)}))),Qe.contains.forEach((function(kr){Bt(kr,Pt)})),Qe.starts&&Bt(Qe.starts,$t),Pt.matcher=(function(An){const Wr=new St;return An.contains.forEach((Jn=>Wr.addRule(Jn.begin,{rule:Jn,type:"begin"}))),An.terminatorEnd&&Wr.addRule(An.terminatorEnd,{type:"end"}),An.illegal&&Wr.addRule(An.illegal,{type:"illegal"}),Wr})(Pt),Pt})(ne)}function ct(ne){return!!ne&&(ne.endsWithParent||ct(ne.starts))}function mt(ne){const ye={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!ne.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,f(this.code);let Ee={};return this.autoDetect?(Ee=ne.highlightAuto(this.code),this.detectedLanguage=Ee.language):(Ee=ne.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),Ee.value},autoDetect(){return!this.language||(function(Fe){return!!(Fe||Fe==="")})(this.autodetect)},ignoreIllegals:()=>!0},render(Ee){return Ee("pre",{},[Ee("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:ye,VuePlugin:{install(Ee){Ee.component("highlightjs",ye)}}}}const ur={"after:highlightElement":({el:ne,result:ye,text:Ee})=>{const Fe=Tt(ne);if(!Fe.length)return;const St=document.createElement("div");St.innerHTML=ye.value,ye.value=(function(Qe,$t,Pt){let rn=0,kr="";const An=[];function Wr(){return Qe.length&&$t.length?Qe[0].offset!==$t[0].offset?Qe[0].offset<$t[0].offset?Qe:$t:$t[0].event==="start"?Qe:$t:Qe.length?Qe:$t}function Jn(un){function ti(Oo){return" "+Oo.nodeName+'="'+f(Oo.value)+'"'}kr+="<"+ar(un)+[].map.call(un.attributes,ti).join("")+">"}function Ea(un){kr+=""}function Zn(un){(un.event==="start"?Jn:Ea)(un.node)}for(;Qe.length||$t.length;){let un=Wr();if(kr+=f(Pt.substring(rn,un[0].offset)),rn=un[0].offset,un===Qe){An.reverse().forEach(Ea);do Zn(un.splice(0,1)[0]),un=Wr();while(un===Qe&&un.length&&un[0].offset===rn);An.reverse().forEach(Jn)}else un[0].event==="start"?An.push(un[0].node):An.pop(),Zn(un.splice(0,1)[0])}return kr+f(Pt.substr(rn))})(Fe,Tt(St),Ee)}};function ar(ne){return ne.nodeName.toLowerCase()}function Tt(ne){const ye=[];return(function Ee(Fe,St){for(let Bt=Fe.firstChild;Bt;Bt=Bt.nextSibling)Bt.nodeType===3?St+=Bt.nodeValue.length:Bt.nodeType===1&&(ye.push({event:"start",offset:St,node:Bt}),St=Ee(Bt,St),ar(Bt).match(/br|hr|img|input/)||ye.push({event:"stop",offset:St,node:Bt}));return St})(ne,0),ye}const Gt={},Sr=ne=>{console.error(ne)},kt=(ne,...ye)=>{console.log(`WARN: ${ne}`,...ye)},yt=(ne,ye)=>{Gt[`${ne}/${ye}`]||(console.log(`Deprecated as of ${ne}. ${ye}`),Gt[`${ne}/${ye}`]=!0)},Zt=f,pe=y,U=Symbol("nomatch");var Z=(function(ne){const ye=Object.create(null),Ee=Object.create(null),Fe=[];let St=!0;const Bt=/(^(<[^>]+>|\t|)+|\n)/gm,Qe="Could not find the language '{}', did you forget to load/include a language module?",$t={disableAutodetect:!0,name:"Plain text",contains:[]};let Pt={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:_};function rn(sr){return Pt.noHighlightRe.test(sr)}function kr(sr,br,tn,Cr){let Mr="",Nn="";typeof br=="object"?(Mr=sr,tn=br.ignoreIllegals,Nn=br.language,Cr=void 0):(yt("10.7.0","highlight(lang, code, ...args) has been deprecated."),yt("10.7.0",`Please use highlight(code, options) instead. https://github.com/highlightjs/highlight.js/issues/2277`),Nn=sr,Mr=br);const nn={code:Mr,language:Nn};ds("before:highlight",nn);const fn=nn.result?nn.result:An(nn.language,nn.code,tn,Cr);return fn.code=nn.code,ds("after:highlight",fn),fn}function An(sr,br,tn,Cr){function Mr(Yt,gr){const mr=ea.case_insensitive?gr[0].toLowerCase():gr[0];return Object.prototype.hasOwnProperty.call(Yt.keywords,mr)&&Yt.keywords[mr]}function Nn(){Rr.subLanguage!=null?(function(){if(xn==="")return;let gr=null;if(typeof Rr.subLanguage=="string"){if(!ye[Rr.subLanguage])return void Nr.addText(xn);gr=An(Rr.subLanguage,xn,!0,ko[Rr.subLanguage]),ko[Rr.subLanguage]=gr.top}else gr=Wr(xn,Rr.subLanguage.length?Rr.subLanguage:null);Rr.relevance>0&&(fi+=gr.relevance),Nr.addSublanguage(gr.emitter,gr.language)})():(function(){if(!Rr.keywords)return void Nr.addText(xn);let gr=0;Rr.keywordPatternRe.lastIndex=0;let mr=Rr.keywordPatternRe.exec(xn),Vr="";for(;mr;){Vr+=xn.substring(gr,mr.index);const Gr=Mr(Rr,mr);if(Gr){const[sa,Sa]=Gr;if(Nr.addText(Vr),Vr="",fi+=Sa,sa.startsWith("_"))Vr+=mr[0];else{const Ja=ea.classNameAliases[sa]||sa;Nr.addKeyword(mr[0],Ja)}}else Vr+=mr[0];gr=Rr.keywordPatternRe.lastIndex,mr=Rr.keywordPatternRe.exec(xn)}Vr+=xn.substr(gr),Nr.addText(Vr)})(),xn=""}function nn(Yt){return Yt.className&&Nr.openNode(ea.classNameAliases[Yt.className]||Yt.className),Rr=Object.create(Yt,{parent:{value:Rr}}),Rr}function fn(Yt,gr,mr){let Vr=(function(sa,Sa){const Ja=sa&&sa.exec(Sa);return Ja&&Ja.index===0})(Yt.endRe,mr);if(Vr){if(Yt["on:end"]){const Gr=new v(Yt);Yt["on:end"](gr,Gr),Gr.isMatchIgnored&&(Vr=!1)}if(Vr){for(;Yt.endsParent&&Yt.parent;)Yt=Yt.parent;return Yt}}if(Yt.endsWithParent)return fn(Yt.parent,gr,mr)}function Ln(Yt){return Rr.matcher.regexIndex===0?(xn+=Yt[0],1):(ms=!0,0)}function Hr(Yt){const gr=Yt[0],mr=Yt.rule,Vr=new v(mr),Gr=[mr.__beforeBegin,mr["on:begin"]];for(const sa of Gr)if(sa&&(sa(Yt,Vr),Vr.isMatchIgnored))return Ln(gr);return mr&&mr.endSameAsBegin&&(mr.endRe=(function(Sa){return new RegExp(Sa.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")})(gr)),mr.skip?xn+=gr:(mr.excludeBegin&&(xn+=gr),Nn(),mr.returnBegin||mr.excludeBegin||(xn=gr)),nn(mr),mr.returnBegin?0:gr.length}function ia(Yt){const gr=Yt[0],mr=br.substr(Yt.index),Vr=fn(Rr,Yt,mr);if(!Vr)return U;const Gr=Rr;Gr.skip?xn+=gr:(Gr.returnEnd||Gr.excludeEnd||(xn+=gr),Nn(),Gr.excludeEnd&&(xn=gr));do Rr.className&&Nr.closeNode(),Rr.skip||Rr.subLanguage||(fi+=Rr.relevance),Rr=Rr.parent;while(Rr!==Vr.parent);return Vr.starts&&(Vr.endSameAsBegin&&(Vr.starts.endRe=Vr.endRe),nn(Vr.starts)),Gr.returnEnd?0:gr.length}let za={};function fs(Yt,gr){const mr=gr&&gr[0];if(xn+=Yt,mr==null)return Nn(),0;if(za.type==="begin"&&gr.type==="end"&&za.index===gr.index&&mr===""){if(xn+=br.slice(gr.index,gr.index+1),!St){const Vr=new Error("0 width match regex");throw Vr.languageName=sr,Vr.badRule=za.rule,Vr}return 1}if(za=gr,gr.type==="begin")return Hr(gr);if(gr.type==="illegal"&&!tn){const Vr=new Error('Illegal lexeme "'+mr+'" for mode "'+(Rr.className||"")+'"');throw Vr.mode=Rr,Vr}if(gr.type==="end"){const Vr=ia(gr);if(Vr!==U)return Vr}if(gr.type==="illegal"&&mr==="")return 1;if(Jo>1e5&&Jo>3*gr.index)throw new Error("potential infinite loop, way more iterations than matches");return xn+=mr,mr.length}const ea=Fn(sr);if(!ea)throw Sr(Qe.replace("{}",sr)),new Error('Unknown language: "'+sr+'"');const di=we(ea,{plugins:Fe});let Va="",Rr=Cr||di;const ko={},Nr=new Pt.__emitter(Pt);(function(){const gr=[];for(let mr=Rr;mr!==ea;mr=mr.parent)mr.className&&gr.unshift(mr.className);gr.forEach((mr=>Nr.openNode(mr)))})();let xn="",fi=0,ta=0,Jo=0,ms=!1;try{for(Rr.matcher.considerAll();;){Jo++,ms?ms=!1:Rr.matcher.considerAll(),Rr.matcher.lastIndex=ta;const Yt=Rr.matcher.exec(br);if(!Yt)break;const gr=fs(br.substring(ta,Yt.index),Yt);ta=Yt.index+gr}return fs(br.substr(ta)),Nr.closeAllNodes(),Nr.finalize(),Va=Nr.toHTML(),{relevance:Math.floor(fi),value:Va,language:sr,illegal:!1,emitter:Nr,top:Rr}}catch(Yt){if(Yt.message&&Yt.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:Yt.message,context:br.slice(ta-100,ta+100),mode:Yt.mode},sofar:Va,relevance:0,value:Zt(br),emitter:Nr};if(St)return{illegal:!1,relevance:0,value:Zt(br),emitter:Nr,language:sr,top:Rr,errorRaised:Yt};throw Yt}}function Wr(sr,br){br=br||Pt.languages||Object.keys(ye);const tn=(function(Hr){const ia={relevance:0,emitter:new Pt.__emitter(Pt),value:Zt(Hr),illegal:!1,top:$t};return ia.emitter.addText(Hr),ia})(sr),Cr=br.filter(Fn).filter(Vo).map((Ln=>An(Ln,sr,!1)));Cr.unshift(tn);const Mr=Cr.sort(((Ln,Hr)=>{if(Ln.relevance!==Hr.relevance)return Hr.relevance-Ln.relevance;if(Ln.language&&Hr.language){if(Fn(Ln.language).supersetOf===Hr.language)return 1;if(Fn(Hr.language).supersetOf===Ln.language)return-1}return 0})),[Nn,nn]=Mr,fn=Nn;return fn.second_best=nn,fn}const Jn={"before:highlightElement":({el:sr})=>{Pt.useBR&&(sr.innerHTML=sr.innerHTML.replace(/\n/g,"").replace(//g,` `))},"after:highlightElement":({result:sr})=>{Pt.useBR&&(sr.value=sr.value.replace(/\n/g,"
"))}},Ea=/^(<[^>]+>|\t)+/gm,Zn={"after:highlightElement":({result:sr})=>{Pt.tabReplace&&(sr.value=sr.value.replace(Ea,(br=>br.replace(/\t/g,Pt.tabReplace))))}};function un(sr){let br=null;const tn=(function(nn){let fn=nn.className+" ";fn+=nn.parentNode?nn.parentNode.className:"";const Ln=Pt.languageDetectRe.exec(fn);if(Ln){const Hr=Fn(Ln[1]);return Hr||(kt(Qe.replace("{}",Ln[1])),kt("Falling back to no-highlight mode for this block.",nn)),Hr?Ln[1]:"no-highlight"}return fn.split(/\s+/).find((Hr=>rn(Hr)||Fn(Hr)))})(sr);if(rn(tn))return;ds("before:highlightElement",{el:sr,language:tn}),br=sr;const Cr=br.textContent,Mr=tn?kr(Cr,{language:tn,ignoreIllegals:!0}):Wr(Cr);ds("after:highlightElement",{el:sr,result:Mr,text:Cr}),sr.innerHTML=Mr.value,(function(nn,fn,Ln){const Hr=fn?Ee[fn]:Ln;nn.classList.add("hljs"),Hr&&nn.classList.add(Hr)})(sr,tn,Mr.language),sr.result={language:Mr.language,re:Mr.relevance,relavance:Mr.relevance},Mr.second_best&&(sr.second_best={language:Mr.second_best.language,re:Mr.second_best.relevance,relavance:Mr.second_best.relevance})}const ti=()=>{ti.called||(ti.called=!0,yt("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead."),document.querySelectorAll("pre code").forEach(un))};let Oo=!1;function Li(){if(document.readyState==="loading")return void(Oo=!0);document.querySelectorAll("pre code").forEach(un)}function Fn(sr){return sr=(sr||"").toLowerCase(),ye[sr]||ye[Ee[sr]]}function zo(sr,{languageName:br}){typeof sr=="string"&&(sr=[sr]),sr.forEach((tn=>{Ee[tn.toLowerCase()]=br}))}function Vo(sr){const br=Fn(sr);return br&&!br.disableAutodetect}function ds(sr,br){const tn=sr;Fe.forEach((function(Cr){Cr[tn]&&Cr[tn](br)}))}typeof window<"u"&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(function(){Oo&&Li()}),!1),Object.assign(ne,{highlight:kr,highlightAuto:Wr,highlightAll:Li,fixMarkup:function(br){return yt("10.2.0","fixMarkup will be removed entirely in v11.0"),yt("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"),(function(Cr){return Pt.tabReplace||Pt.useBR?Cr.replace(Bt,(Mr=>Mr===` `?Pt.useBR?"
":Mr:Pt.tabReplace?Mr.replace(/\t/g,Pt.tabReplace):Mr)):Cr})(br)},highlightElement:un,highlightBlock:function(br){return yt("10.7.0","highlightBlock will be removed entirely in v12.0"),yt("10.7.0","Please use highlightElement now."),un(br)},configure:function(br){br.useBR&&(yt("10.3.0","'useBR' will be removed entirely in v11.0"),yt("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")),Pt=pe(Pt,br)},initHighlighting:ti,initHighlightingOnLoad:function(){yt("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."),Oo=!0},registerLanguage:function(br,tn){let Cr=null;try{Cr=tn(ne)}catch(Mr){if(Sr("Language definition for '{}' could not be registered.".replace("{}",br)),!St)throw Mr;Sr(Mr),Cr=$t}Cr.name||(Cr.name=br),ye[br]=Cr,Cr.rawDefinition=tn.bind(null,ne),Cr.aliases&&zo(Cr.aliases,{languageName:br})},unregisterLanguage:function(br){delete ye[br];for(const tn of Object.keys(Ee))Ee[tn]===br&&delete Ee[tn]},listLanguages:function(){return Object.keys(ye)},getLanguage:Fn,registerAliases:zo,requireLanguage:function(br){yt("10.4.0","requireLanguage will be removed entirely in v11."),yt("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844");const tn=Fn(br);if(tn)return tn;throw new Error("The '{}' language is required, but not loaded.".replace("{}",br))},autoDetection:Vo,inherit:pe,addPlugin:function(br){(function(Cr){Cr["before:highlightBlock"]&&!Cr["before:highlightElement"]&&(Cr["before:highlightElement"]=Mr=>{Cr["before:highlightBlock"](Object.assign({block:Mr.el},Mr))}),Cr["after:highlightBlock"]&&!Cr["after:highlightElement"]&&(Cr["after:highlightElement"]=Mr=>{Cr["after:highlightBlock"](Object.assign({block:Mr.el},Mr))})})(br),Fe.push(br)},vuePlugin:mt(ne).VuePlugin}),ne.debugMode=function(){St=!1},ne.safeMode=function(){St=!0},ne.versionString="10.7.3";for(const sr in at)typeof at[sr]=="object"&&s(at[sr]);return Object.assign(ne,at),ne.addPlugin(Jn),ne.addPlugin(ur),ne.addPlugin(Zn),ne})({});w.exports=Z},35344(w){function N(...s){return s.map((h=>(function(f){return f?typeof f=="string"?f:f.source:null})(h))).join("")}w.exports=function(h){const v={},f={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[v]}]};Object.assign(v,{className:"variable",variants:[{begin:N(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},f]});const y={className:"subst",begin:/\$\(/,end:/\)/,contains:[h.BACKSLASH_ESCAPE]},m={begin:/<<-?\s*(?=\w+)/,starts:{contains:[h.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},g={className:"string",begin:/"/,end:/"/,contains:[h.BACKSLASH_ESCAPE,v,y]};y.contains.push(g);const S={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},h.NUMBER_MODE,v]},_=h.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),T={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[h.inherit(h.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"},contains:[_,h.SHEBANG(),T,S,h.HASH_COMMENT_MODE,m,g,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},v]}}},73402(w){function N(...s){return s.map((h=>(function(f){return f?typeof f=="string"?f:f.source:null})(h))).join("")}w.exports=function(h){const v="HTTP/(2|1\\.[01])",f={className:"attribute",begin:N("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},y=[f,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+v+" \\d{3})",end:/$/,contains:[{className:"meta",begin:v},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:y}},{begin:"(?=^[A-Z]+ (.*?) "+v+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:v},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:y}},h.inherit(f,{relevance:0})]}}},95089(w){const N="[A-Za-z$_][0-9A-Za-z$_]*",s=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],h=["true","false","null","undefined","NaN","Infinity"],v=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function f(m){return y("(?=",m,")")}function y(...m){return m.map((g=>(function(_){return _?typeof _=="string"?_:_.source:null})(g))).join("")}w.exports=function(g){const S=N,_="<>",T="",I={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(Ve,He)=>{const qe=Ve[0].length+Ve.index,nt=Ve.input[qe];nt!=="<"?nt===">"&&(((gt,{after:Re})=>{const u="",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:g.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:j,contains:ge}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:_,end:T},{begin:I.begin,"on:begin":I.isTrulyOpeningTag,end:I.end}],subLanguage:"xml",contains:[{begin:I.begin,end:I.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:j,contains:["self",g.inherit(g.TITLE_MODE,{begin:S}),ke],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:g.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[ke,g.inherit(g.TITLE_MODE,{begin:S})]},{variants:[{begin:"\\."+S},{begin:"\\$"+S}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},g.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[g.inherit(g.TITLE_MODE,{begin:S}),"self",ke]},{begin:"(get|set)\\s+(?="+S+"\\()",end:/\{/,keywords:"get set",contains:[g.inherit(g.TITLE_MODE,{begin:S}),{begin:/\(\)/},ke]},{begin:/\$[(.]/}]}}},65772(w){w.exports=function(s){const h={literal:"true false null"},v=[s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE],f=[s.QUOTE_STRING_MODE,s.C_NUMBER_MODE],y={end:",",endsWithParent:!0,excludeEnd:!0,contains:f,keywords:h},m={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[s.BACKSLASH_ESCAPE],illegal:"\\n"},s.inherit(y,{begin:/:/})].concat(v),illegal:"\\S"},g={begin:"\\[",end:"\\]",contains:[s.inherit(y)],illegal:"\\S"};return f.push(m,g),v.forEach((function(S){f.push(S)})),{name:"JSON",contains:f,keywords:h,illegal:"\\S"}}},26571(w){w.exports=function(s){const h={$pattern:/-?[A-z\.\-]+\b/,keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"},v={begin:"`[\\s\\S]",relevance:0},f={className:"variable",variants:[{begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]},y={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[v,f,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},m={className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},g=s.inherit(s.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]}),S={className:"built_in",variants:[{begin:"(".concat("Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where",")+(-)[\\w\\d]+")}]},_={className:"class",beginKeywords:"class enum",end:/\s*[{]/,excludeEnd:!0,relevance:0,contains:[s.TITLE_MODE]},T={className:"function",begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,className:"params",relevance:0,contains:[f]}]},I={begin:/using\s/,end:/$/,returnBegin:!0,contains:[y,m,{className:"keyword",begin:/(using|assembly|command|module|namespace|type)/}]},j={variants:[{className:"operator",begin:"(".concat("-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor",")\\b")},{className:"literal",begin:/(-)[\w\d]+/,relevance:0}]},M={className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:"keyword",begin:"(".concat(h.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,relevance:0},s.inherit(s.TITLE_MODE,{endsParent:!0})]},z=[M,g,v,s.NUMBER_MODE,y,m,S,f,{className:"literal",begin:/\$(null|true|false)\b/},{className:"selector-tag",begin:/@\B/,relevance:0}],K={begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",z,{begin:"("+["string","char","byte","int","long","bool","decimal","single","double","DateTime","xml","array","hashtable","void"].join("|")+")",className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,relevance:0})};return M.contains.unshift(K),{name:"PowerShell",aliases:["ps","ps1"],case_insensitive:!0,keywords:h,contains:z.concat(_,T,I,j,K)}}},17285(w){function N(f){return f?typeof f=="string"?f:f.source:null}function s(f){return h("(?=",f,")")}function h(...f){return f.map((y=>N(y))).join("")}function v(...f){return"("+f.map((y=>N(y))).join("|")+")"}w.exports=function(y){const m=h(/[A-Z_]/,(function(z){return h("(",z,")?")})(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),g={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},S={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},_=y.inherit(S,{begin:/\(/,end:/\)/}),T=y.inherit(y.APOS_STRING_MODE,{className:"meta-string"}),I=y.inherit(y.QUOTE_STRING_MODE,{className:"meta-string"}),j={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[S,I,T,_,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[S,_,I,T]}]}]},y.COMMENT(//,{relevance:10}),{begin://,relevance:10},g,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[j],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[j],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:h(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:m,relevance:0,starts:j}]},{className:"tag",begin:h(/<\//,s(h(m,/>/))),contains:[{className:"name",begin:m,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},17533(w){w.exports=function(s){var h="true false yes no null",v="[\\w#;/?:@&=+$,.~*'()[\\]]+",f={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[s.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},y=s.inherit(f,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),m={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},g={end:",",endsWithParent:!0,excludeEnd:!0,keywords:h,relevance:0},S={begin:/\{/,end:/\}/,contains:[g],illegal:"\\n",relevance:0},_={begin:"\\[",end:"\\]",contains:[g],illegal:"\\n",relevance:0},T=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ ]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ ]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ ]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+v},{className:"type",begin:"!<"+v+">"},{className:"type",begin:"!"+v},{className:"type",begin:"!!"+v},{className:"meta",begin:"&"+s.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+s.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},s.HASH_COMMENT_MODE,{beginKeywords:h,keywords:{literal:h}},m,{className:"number",begin:s.C_NUMBER_RE+"\\b",relevance:0},S,_,f],I=[...T];return I.pop(),I.push(y),g.contains=I,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:T}}},251(w,N){N.read=function(s,h,v,f,y){var m,g,S=8*y-f-1,_=(1<>1,I=-7,j=v?y-1:0,M=v?-1:1,z=s[h+j];for(j+=M,m=z&(1<<-I)-1,z>>=-I,I+=S;I>0;m=256*m+s[h+j],j+=M,I-=8);for(g=m&(1<<-I)-1,m>>=-I,I+=f;I>0;g=256*g+s[h+j],j+=M,I-=8);if(m===0)m=1-T;else{if(m===_)return g?NaN:1/0*(z?-1:1);g+=Math.pow(2,f),m-=T}return(z?-1:1)*g*Math.pow(2,m-f)},N.write=function(s,h,v,f,y,m){var g,S,_,T=8*m-y-1,I=(1<>1,M=y===23?Math.pow(2,-24)-Math.pow(2,-77):0,z=f?0:m-1,K=f?1:-1,Y=h<0||h===0&&1/h<0?1:0;for(h=Math.abs(h),isNaN(h)||h===1/0?(S=isNaN(h)?1:0,g=I):(g=Math.floor(Math.log(h)/Math.LN2),h*(_=Math.pow(2,-g))<1&&(g--,_*=2),(h+=g+j>=1?M/_:M*Math.pow(2,1-j))*_>=2&&(g++,_/=2),g+j>=I?(S=0,g=I):g+j>=1?(S=(h*_-1)*Math.pow(2,y),g+=j):(S=h*Math.pow(2,j-1)*Math.pow(2,y),g=0));y>=8;s[v+z]=255&S,z+=K,S/=256,y-=8);for(g=g<0;s[v+z]=255&g,z+=K,g/=256,T-=8);s[v+z-K]|=128*Y}},49568(w,N,s){s.r(N),s.d(N,{Collection:()=>he,Iterable:()=>ip,List:()=>Wo,Map:()=>vi,OrderedMap:()=>Ra,OrderedSet:()=>Da,PairSorting:()=>cc,Range:()=>zi,Record:()=>jn,Repeat:()=>vl,Seq:()=>ar,Set:()=>No,Stack:()=>ul,default:()=>sp,fromJS:()=>Zc,get:()=>Ia,getIn:()=>lc,has:()=>Wa,hasIn:()=>ml,hash:()=>kr,is:()=>Qe,isAssociative:()=>Te,isCollection:()=>B,isImmutable:()=>Re,isIndexed:()=>se,isKeyed:()=>te,isList:()=>Bi,isMap:()=>Fe,isOrdered:()=>at,isOrderedMap:()=>St,isOrderedSet:()=>pl,isPlainObject:()=>sa,isRecord:()=>gt,isSeq:()=>qe,isSet:()=>Ui,isStack:()=>cl,isValueObject:()=>Bt,merge:()=>nc,mergeDeep:()=>Ku,mergeDeepWith:()=>$c,mergeWith:()=>Hu,remove:()=>gs,removeIn:()=>Zl,set:()=>ys,setIn:()=>Wu,update:()=>Ao,updateIn:()=>lo,version:()=>tu});var h="delete",v=32,f=31,y={};function m(A){A&&(A.value=!0)}function g(){}function S(A){return A.size===void 0&&(A.size=A.__iterate(T)),A.size}function _(A,O){if(typeof O!="number"){var D=O>>>0;if(""+D!==O||D===4294967295)return NaN;O=D}return O<0?S(A)+O:O}function T(){return!0}function I(A,O,D){return(A===0&&!K(A)||D!==void 0&&A<=-D)&&(O===void 0||D!==void 0&&O>=D)}function j(A,O){return z(A,O,0)}function M(A,O){return z(A,O,O)}function z(A,O,D){return A===void 0?D:K(A)?O===1/0?O:0|Math.max(0,O+A):O===void 0||O===A?A:0|Math.min(O,A)}function K(A){return A<0||A===0&&1/A==-1/0}var Y="@@__IMMUTABLE_ITERABLE__@@";function B(A){return!!(A&&A[Y])}var X="@@__IMMUTABLE_KEYED__@@";function te(A){return!!(A&&A[X])}var ie="@@__IMMUTABLE_INDEXED__@@";function se(A){return!!(A&&A[ie])}function Te(A){return te(A)||se(A)}var he=function(O){return B(O)?O:ar(O)},ge=(function(A){function O(D){return te(D)?D:Tt(D)}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O})(he),ke=(function(A){function O(D){return se(D)?D:Gt(D)}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O})(he),Ve=(function(A){function O(D){return B(D)&&!Te(D)?D:Sr(D)}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O})(he);he.Keyed=ge,he.Indexed=ke,he.Set=Ve;var He="@@__IMMUTABLE_SEQ__@@";function qe(A){return!!(A&&A[He])}var nt="@@__IMMUTABLE_RECORD__@@";function gt(A){return!!(A&&A[nt])}function Re(A){return B(A)||gt(A)}var u="@@__IMMUTABLE_ORDERED__@@";function at(A){return!!(A&&A[u])}var Xe=typeof Symbol=="function"&&Symbol.iterator,Se="@@iterator",De=Xe||Se,Ke=function(O){this.next=O};function ft(A,O,D,F){var q=A===0?O:A===1?D:[O,D];return F?F.value=q:F={value:q,done:!1},F}function Nt(){return{value:void 0,done:!0}}function Wt(A){return!!Array.isArray(A)||!!ct(A)}function H(A){return A&&typeof A.next=="function"}function we(A){var O=ct(A);return O&&O.call(A)}function ct(A){var O=A&&(Xe&&A[Xe]||A[Se]);if(typeof O=="function")return O}Ke.prototype.toString=function(){return"[Iterator]"},Ke.KEYS=0,Ke.VALUES=1,Ke.ENTRIES=2,Ke.prototype.inspect=Ke.prototype.toSource=function(){return this.toString()},Ke.prototype[De]=function(){return this};var mt=Object.prototype.hasOwnProperty;function ur(A){return!(!Array.isArray(A)&&typeof A!="string")||A&&typeof A=="object"&&Number.isInteger(A.length)&&A.length>=0&&(A.length===0?Object.keys(A).length===1:A.hasOwnProperty(A.length-1))}var ar=(function(A){function O(D){return D==null?U():Re(D)?D.toSeq():(function(q){var ae=ye(q);if(ae)return(function(fe){var Pe=ct(fe);return Pe&&Pe===fe.entries})(q)?ae.fromEntrySeq():(function(fe){var Pe=ct(fe);return Pe&&Pe===fe.keys})(q)?ae.toSetSeq():ae;if(typeof q=="object")return new yt(q);throw new TypeError("Expected Array or collection object of values, or keyed object: "+q)})(D)}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O.prototype.toSeq=function(){return this},O.prototype.toString=function(){return this.__toString("Seq {","}")},O.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},O.prototype.__iterate=function(F,q){var ae=this._cache;if(ae){for(var oe=ae.length,fe=0;fe!==oe;){var Pe=ae[q?oe-++fe:fe++];if(F(Pe[1],Pe[0],this)===!1)break}return fe}return this.__iterateUncached(F,q)},O.prototype.__iterator=function(F,q){var ae=this._cache;if(ae){var oe=ae.length,fe=0;return new Ke((function(){if(fe===oe)return{value:void 0,done:!0};var Pe=ae[q?oe-++fe:fe++];return ft(F,Pe[0],Pe[1])}))}return this.__iteratorUncached(F,q)},O})(he),Tt=(function(A){function O(D){return D==null?U().toKeyedSeq():B(D)?te(D)?D.toSeq():D.fromEntrySeq():gt(D)?D.toSeq():Z(D)}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O.prototype.toKeyedSeq=function(){return this},O})(ar),Gt=(function(A){function O(D){return D==null?U():B(D)?te(D)?D.entrySeq():D.toIndexedSeq():gt(D)?D.toSeq().entrySeq():ne(D)}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O.of=function(){return O(arguments)},O.prototype.toIndexedSeq=function(){return this},O.prototype.toString=function(){return this.__toString("Seq [","]")},O})(ar),Sr=(function(A){function O(D){return(B(D)&&!Te(D)?D:Gt(D)).toSetSeq()}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O.of=function(){return O(arguments)},O.prototype.toSetSeq=function(){return this},O})(ar);ar.isSeq=qe,ar.Keyed=Tt,ar.Set=Sr,ar.Indexed=Gt,ar.prototype[He]=!0;var kt=(function(A){function O(D){this._array=D,this.size=D.length}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O.prototype.get=function(F,q){return this.has(F)?this._array[_(this,F)]:q},O.prototype.__iterate=function(F,q){for(var ae=this._array,oe=ae.length,fe=0;fe!==oe;){var Pe=q?oe-++fe:fe++;if(F(ae[Pe],Pe,this)===!1)break}return fe},O.prototype.__iterator=function(F,q){var ae=this._array,oe=ae.length,fe=0;return new Ke((function(){if(fe===oe)return{value:void 0,done:!0};var Pe=q?oe-++fe:fe++;return ft(F,Pe,ae[Pe])}))},O})(Gt),yt=(function(A){function O(D){var F=Object.keys(D).concat(Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(D):[]);this._object=D,this._keys=F,this.size=F.length}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O.prototype.get=function(F,q){return q===void 0||this.has(F)?this._object[F]:q},O.prototype.has=function(F){return mt.call(this._object,F)},O.prototype.__iterate=function(F,q){for(var ae=this._object,oe=this._keys,fe=oe.length,Pe=0;Pe!==fe;){var ze=oe[q?fe-++Pe:Pe++];if(F(ae[ze],ze,this)===!1)break}return Pe},O.prototype.__iterator=function(F,q){var ae=this._object,oe=this._keys,fe=oe.length,Pe=0;return new Ke((function(){if(Pe===fe)return{value:void 0,done:!0};var ze=oe[q?fe-++Pe:Pe++];return ft(F,ze,ae[ze])}))},O})(Tt);yt.prototype[u]=!0;var Zt,pe=(function(A){function O(D){this._collection=D,this.size=D.length||D.size}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O.prototype.__iterateUncached=function(F,q){if(q)return this.cacheResult().__iterate(F,q);var ae=we(this._collection),oe=0;if(H(ae))for(var fe;!(fe=ae.next()).done&&F(fe.value,oe++,this)!==!1;);return oe},O.prototype.__iteratorUncached=function(F,q){if(q)return this.cacheResult().__iterator(F,q);var ae=we(this._collection);if(!H(ae))return new Ke(Nt);var oe=0;return new Ke((function(){var fe=ae.next();return fe.done?fe:ft(F,oe++,fe.value)}))},O})(Gt);function U(){return Zt||(Zt=new kt([]))}function Z(A){var O=ye(A);if(O)return O.fromEntrySeq();if(typeof A=="object")return new yt(A);throw new TypeError("Expected Array or collection object of [k, v] entries, or keyed object: "+A)}function ne(A){var O=ye(A);if(O)return O;throw new TypeError("Expected Array or collection object of values: "+A)}function ye(A){return ur(A)?new kt(A):Wt(A)?new pe(A):void 0}var Ee="@@__IMMUTABLE_MAP__@@";function Fe(A){return!!(A&&A[Ee])}function St(A){return Fe(A)&&at(A)}function Bt(A){return!!(A&&typeof A.equals=="function"&&typeof A.hashCode=="function")}function Qe(A,O){if(A===O||A!=A&&O!=O)return!0;if(!A||!O)return!1;if(typeof A.valueOf=="function"&&typeof O.valueOf=="function"){if((A=A.valueOf())===(O=O.valueOf())||A!=A&&O!=O)return!0;if(!A||!O)return!1}return!!(Bt(A)&&Bt(O)&&A.equals(O))}var $t=typeof Math.imul=="function"&&Math.imul(4294967295,2)===-2?Math.imul:function(O,D){var F=65535&(O|=0),q=65535&(D|=0);return F*q+((O>>>16)*q+F*(D>>>16)<<16>>>0)|0};function Pt(A){return A>>>1&1073741824|3221225471&A}var rn=Object.prototype.valueOf;function kr(A){if(A==null)return An(A);if(typeof A.hashCode=="function")return Pt(A.hashCode(A));var O=(function(F){return F.valueOf!==rn&&typeof F.valueOf=="function"?F.valueOf(F):F})(A);if(O==null)return An(O);switch(typeof O){case"boolean":return O?1108378657:1108378656;case"number":return(function(F){if(F!=F||F===1/0)return 0;var q=0|F;for(q!==F&&(q^=4294967295*F);F>4294967295;)q^=F/=4294967295;return Pt(q)})(O);case"string":return O.length>ds?(function(F){var q=tn[F];return q===void 0&&(q=Wr(F),br===sr&&(br=0,tn={}),br++,tn[F]=q),q})(O):Wr(O);case"object":case"function":return(function(F){var q;if(Li&&(q=Oo.get(F))!==void 0||(q=F[Vo])!==void 0||!un&&((q=F.propertyIsEnumerable&&F.propertyIsEnumerable[Vo])!==void 0||(q=(function(oe){if(oe&&oe.nodeType>0)switch(oe.nodeType){case 1:return oe.uniqueID;case 9:return oe.documentElement&&oe.documentElement.uniqueID}})(F))!==void 0))return q;if(q=ti(),Li)Oo.set(F,q);else{if(Zn!==void 0&&Zn(F)===!1)throw new Error("Non-extensible objects are not allowed as keys.");if(un)Object.defineProperty(F,Vo,{enumerable:!1,configurable:!1,writable:!1,value:q});else if(F.propertyIsEnumerable!==void 0&&F.propertyIsEnumerable===F.constructor.prototype.propertyIsEnumerable)F.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},F.propertyIsEnumerable[Vo]=q;else{if(F.nodeType===void 0)throw new Error("Unable to set a non-enumerable property on object.");F[Vo]=q}}return q})(O);case"symbol":return(function(F){var q=Fn[F];return q!==void 0||(q=ti(),Fn[F]=q),q})(O);default:if(typeof O.toString=="function")return Wr(O.toString());throw new Error("Value type "+typeof O+" cannot be hashed.")}}function An(A){return A===null?1108378658:1108378659}function Wr(A){for(var O=0,D=0;D=0&&(Pe.get=function(ze,tt){return(ze=_(this,ze))>=0&&zeae)return{value:void 0,done:!0};var vr=At.next();return F||ze===1||vr.done?vr:ft(ze,lr-1,ze===0?void 0:vr.value[1],vr)}))},Pe}function fs(A,O,D,F){var q=ta(A);return q.__iterateUncached=function(ae,oe){var fe=this;if(oe)return this.cacheResult().__iterate(ae,oe);var Pe=!0,ze=0;return A.__iterate((function(tt,At,Rt){if(!Pe||!(Pe=O.call(D,tt,At,Rt)))return ze++,ae(tt,F?At:ze-1,fe)})),ze},q.__iteratorUncached=function(ae,oe){var fe=this;if(oe)return this.cacheResult().__iterator(ae,oe);var Pe=A.__iterator(2,oe),ze=!0,tt=0;return new Ke((function(){var At,Rt,lr;do{if((At=Pe.next()).done)return F||ae===1?At:ft(ae,tt++,ae===0?void 0:At.value[1],At);var vr=At.value;Rt=vr[0],lr=vr[1],ze&&(ze=O.call(D,lr,Rt,fe))}while(ze);return ae===2?At:ft(ae,Rt,lr,At)}))},q}function ea(A,O,D){var F=ta(A);return F.__iterateUncached=function(q,ae){if(ae)return this.cacheResult().__iterate(q,ae);var oe=0,fe=!1;return(function Pe(ze,tt){ze.__iterate((function(At,Rt){return(!O||tt0}function ko(A,O,D,F){var q=ta(A),ae=new kt(D).map((function(oe){return oe.size}));return q.size=F?ae.max():ae.min(),q.__iterate=function(oe,fe){for(var Pe,ze=this.__iterator(1,fe),tt=0;!(Pe=ze.next()).done&&oe(Pe.value,tt++,this)!==!1;);return tt},q.__iteratorUncached=function(oe,fe){var Pe=D.map((function(At){return At=he(At),we(fe?At.reverse():At)})),ze=0,tt=!1;return new Ke((function(){var At;return tt||(At=Pe.map((function(Rt){return Rt.next()})),tt=F?At.every((function(Rt){return Rt.done})):At.some((function(Rt){return Rt.done}))),tt?{value:void 0,done:!0}:ft(oe,ze++,O.apply(null,At.map((function(Rt){return Rt.value}))))}))},q}function Nr(A,O){return A===O?A:qe(A)?O:A.constructor(O)}function xn(A){if(A!==Object(A))throw new TypeError("Expected [K, V] tuple: "+A)}function fi(A){return te(A)?ge:se(A)?ke:Ve}function ta(A){return Object.create((te(A)?Tt:se(A)?Gt:Sr).prototype)}function Jo(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):ar.prototype.cacheResult.call(this)}function ms(A,O){return A===void 0&&O===void 0?0:A===void 0?1:O===void 0?-1:A>O?1:A0;)O[D]=arguments[D+1];if(typeof A!="function")throw new TypeError("Invalid merger function: "+A);return Zs(this,O,A)}function Zs(A,O,D){for(var F=[],q=0;q0;)O[D]=arguments[D+1];return Co(A,O)}function Hu(A,O){for(var D=[],F=arguments.length-2;F-- >0;)D[F]=arguments[F+2];return Co(O,D,A)}function Ku(A){for(var O=[],D=arguments.length-1;D-- >0;)O[D]=arguments[D+1];return $i(A,O)}function $c(A,O){for(var D=[],F=arguments.length-2;F-- >0;)D[F]=arguments[F+2];return $i(O,D,A)}function $i(A,O,D){return Co(A,O,(function(q){function ae(oe,fe,Pe){return Sa(oe)&&Sa(fe)&&(function(tt,At){var Rt=ar(tt),lr=ar(At);return se(Rt)===se(lr)&&te(Rt)===te(lr)})(oe,fe)?Co(oe,[fe],ae):q?q(oe,fe,Pe):fe}return ae})(D))}function Co(A,O,D){if(!Sa(A))throw new TypeError("Cannot merge into non-data-structure value: "+A);if(Re(A))return typeof D=="function"&&A.mergeWith?A.mergeWith.apply(A,[D].concat(O)):A.merge?A.merge.apply(A,O):A.concat.apply(A,O);for(var F=Array.isArray(A),q=A,ae=F?ke:ge,oe=F?function(Pe){q===A&&(q=Xl(q)),q.push(Pe)}:function(Pe,ze){if(!Yl(ze)){var tt=mt.call(q,ze),At=tt&&D?D(q[ze],Pe,ze):Pe;tt&&At===q[ze]||(q===A&&(q=Xl(q)),q[ze]=At)}},fe=0;fe0;)O[D]=arguments[D+1];return $i(this,O,A)}function bs(A){for(var O=[],D=arguments.length-1;D-- >0;)O[D]=arguments[D+1];return lo(this,A,co(),(function(F){return Co(F,O)}))}function ws(A){for(var O=[],D=arguments.length-1;D-- >0;)O[D]=arguments[D+1];return lo(this,A,co(),(function(F){return $i(F,O)}))}function jo(A){var O=this.asMutable();return A(O),O.wasAltered()?O.__ensureOwner(this.__ownerID):this}function ac(){return this.__ownerID?this:this.__ensureOwner(new g)}function el(){return this.__ensureOwner()}function Es(){return this.__altered}var vi=(function(A){function O(D){return D==null?co():Fe(D)&&!at(D)?D:co().withMutations((function(F){var q=A(D);mr(q.size),q.forEach((function(ae,oe){return F.set(oe,ae)}))}))}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O.of=function(){for(var F=[],q=arguments.length;q--;)F[q]=arguments[q];return co().withMutations((function(ae){for(var oe=0;oe=F.length)throw new Error("Missing value for key: "+F[oe]);ae.set(F[oe],F[oe+1])}}))},O.prototype.toString=function(){return this.__toString("Map {","}")},O.prototype.get=function(F,q){return this._root?this._root.get(0,void 0,F,q):q},O.prototype.set=function(F,q){return nl(this,F,q)},O.prototype.remove=function(F){return nl(this,F,y)},O.prototype.deleteAll=function(F){var q=he(F);return q.size===0?this:this.withMutations((function(ae){q.forEach((function(oe){return ae.remove(oe)}))}))},O.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):co()},O.prototype.sort=function(F){return Ra(di(this,F))},O.prototype.sortBy=function(F,q){return Ra(di(this,q,F))},O.prototype.map=function(F,q){var ae=this;return this.withMutations((function(oe){oe.forEach((function(fe,Pe){oe.set(Pe,F.call(q,fe,Pe,ae))}))}))},O.prototype.__iterator=function(F,q){return new jd(this,F,q)},O.prototype.__iterate=function(F,q){var ae=this,oe=0;return this._root&&this._root.iterate((function(fe){return oe++,F(fe[1],fe[0],ae)}),q),oe},O.prototype.__ensureOwner=function(F){return F===this.__ownerID?this:F?yr(this.size,this._root,F,this.__hash):this.size===0?co():(this.__ownerID=F,this.__altered=!1,this)},O})(ge);vi.isMap=Fe;var bn=vi.prototype;bn[Ee]=!0,bn[h]=bn.remove,bn.removeAll=bn.deleteAll,bn.setIn=Ql,bn.removeIn=bn.deleteIn=ec,bn.update=vs,bn.updateIn=an,bn.merge=bn.concat=tc,bn.mergeWith=rc,bn.mergeDeep=gi,bn.mergeDeepWith=yi,bn.mergeIn=bs,bn.mergeDeepIn=ws,bn.withMutations=jo,bn.wasAltered=Es,bn.asImmutable=el,bn["@@transducer/init"]=bn.asMutable=ac,bn["@@transducer/step"]=function(A,O){return A.set(O[0],O[1])},bn["@@transducer/result"]=function(A){return A.asImmutable()};var tl=function(O,D){this.ownerID=O,this.entries=D};tl.prototype.get=function(O,D,F,q){for(var ae=this.entries,oe=0,fe=ae.length;oe=zc)return(function(_n,ya,Fa,ai){_n||(_n=new g);for(var Tn=new Ma(_n,kr(Fa),[Fa,ai]),Hn=0;Hn>>O)&f),oe=this.bitmap;return oe&ae?this.nodes[Gu(oe&ae-1)].get(O+5,D,F,q):q},rl.prototype.update=function(O,D,F,q,ae,oe,fe){F===void 0&&(F=kr(q));var Pe=(D===0?F:F>>>D)&f,ze=1<=rh)return(function(Tn,Hn,na,aa,Bn){for(var Ga=0,Ya=new Array(v),po=0;na!==0;po++,na>>>=1)Ya[po]=1&na?Hn[Ga++]:void 0;return Ya[aa]=Bn,new bi(Tn,Ga+1,Ya)})(O,lr,tt,Pe,Ar);if(At&&!Ar&&lr.length===2&&Uc(lr[1^Rt]))return lr[1^Rt];if(At&&Ar&&lr.length===1&&Uc(Ar))return Ar;var _n=O&&O===this.ownerID,ya=At?Ar?tt:tt^ze:tt|ze,Fa=At?Ar?ic(lr,Rt,Ar,_n):(function(Tn,Hn,na){var aa=Tn.length-1;if(na&&Hn===aa)return Tn.pop(),Tn;for(var Bn=new Array(aa),Ga=0,Ya=0;Ya>>O)&f,oe=this.nodes[ae];return oe?oe.get(O+5,D,F,q):q},bi.prototype.update=function(O,D,F,q,ae,oe,fe){F===void 0&&(F=kr(q));var Pe=(D===0?F:F>>>D)&f,ze=ae===y,tt=this.nodes,At=tt[Pe];if(ze&&!At)return this;var Rt=wi(At,O,D+5,F,q,ae,oe,fe);if(Rt===At)return this;var lr=this.count;if(At){if(!Rt&&--lr=Yu&&(q=this._buildIndex()),q!==void 0){var ae=q[Ea(O)];if(ae!==void 0)for(var oe=0;oe>>D)&f,fe=(D===0?F:F>>>D)&f,Pe=oe===fe?[al(A,O,D+5,F,q)]:(ae=new Ma(O,F,q),oe>1&1431655765))+(A>>2&858993459))+(A>>4)&252645135,A+=A>>8,127&(A+=A>>16)}function ic(A,O,D,F){var q=F?A:Yt(A);return q[O]=D,q}var zc=8,rh=16,uo=8,Yu=16,Vc="@@__IMMUTABLE_LIST__@@";function Bi(A){return!!(A&&A[Vc])}var Wo=(function(A){function O(D){var F=Ss();if(D==null)return F;if(Bi(D))return D;var q=A(D),ae=q.size;return ae===0?F:(mr(ae),ae>0&&ae=0&&F=oe.size||fe<0)return oe.withMutations((function(Rt){fe<0?ri(Rt,fe).set(0,Pe):ri(Rt,0,fe+1).set(fe,Pe)}));fe+=oe._origin;var ze=oe._tail,tt=oe._root,At={value:!1};return fe>=sl(oe._capacity)?ze=Qu(ze,oe.__ownerID,0,fe,Pe,At):tt=Qu(tt,oe.__ownerID,oe._level,fe,Pe,At),At.value?oe.__ownerID?(oe._root=tt,oe._tail=ze,oe.__hash=void 0,oe.__altered=!0,oe):ol(oe._origin,oe._capacity,oe._level,tt,ze):oe})(this,F,q)},O.prototype.remove=function(F){return this.has(F)?F===0?this.shift():F===this.size-1?this.pop():this.splice(F,1):this},O.prototype.insert=function(F,q){return this.splice(F,0,q)},O.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=5,this._root=this._tail=this.__hash=void 0,this.__altered=!0,this):Ss()},O.prototype.push=function(){var F=arguments,q=this.size;return this.withMutations((function(ae){ri(ae,0,q+F.length);for(var oe=0;oe>>D&f;if(q>=this.array.length)return new Ha([],O);var ae,oe=q===0;if(D>0){var fe=this.array[q];if((ae=fe&&fe.removeBefore(O,D-5,F))===fe&&oe)return this}if(oe&&!ae)return this;var Pe=il(this,O);if(!oe)for(var ze=0;ze>>D&f;if(ae>=this.array.length)return this;if(D>0){var oe=this.array[ae];if((q=oe&&oe.removeAfter(O,D-5,F))===oe&&ae===this.array.length-1)return this}var fe=il(this,O);return fe.array.splice(ae+1),q&&(fe.array[ae]=q),fe};var nh,Ei={};function Xu(A,O){var D=A._origin,F=A._capacity,q=sl(F),ae=A._tail;return oe(A._root,A._level,0);function oe(fe,Pe,ze){return Pe===0?(function(At,Rt){var lr=Rt===q?ae&&ae.array:At&&At.array,vr=Rt>D?0:D-Rt,Ar=F-Rt;return Ar>v&&(Ar=v),function(){if(vr===Ar)return Ei;var _n=O?--Ar:vr++;return lr&&lr[_n]}})(fe,ze):(function(At,Rt,lr){var vr,Ar=At&&At.array,_n=lr>D?0:D-lr>>Rt,ya=1+(F-lr>>Rt);return ya>v&&(ya=v),function(){for(;;){if(vr){var Fa=vr();if(Fa!==Ei)return Fa;vr=null}if(_n===ya)return Ei;var ai=O?--ya:_n++;vr=oe(Ar&&Ar[ai],Rt-5,lr+(ai<>>D&f,Pe=A&&fe0){var ze=A&&A.array[fe],tt=Qu(ze,O,D-5,F,q,ae);return tt===ze?A:((oe=il(A,O)).array[fe]=tt,oe)}return Pe&&A.array[fe]===q?A:(ae&&m(ae),oe=il(A,O),q===void 0&&fe===oe.array.length-1?oe.array.pop():oe.array[fe]=q,oe)}function il(A,O){return O&&A&&O===A.ownerID?A:new Ha(A?A.array.slice():[],O)}function ah(A,O){if(O>=sl(A._capacity))return A._tail;if(O<1<0;)D=D.array[O>>>F&f],F-=5;return D}}function ri(A,O,D){(function(Tn,Hn,na){var aa=Tn._origin+(Hn===void 0?0:Hn),Bn=na===void 0?Tn._capacity:na<0?Tn._capacity+na:Tn._origin+na;if(Number.isFinite(Bn)&&Bn>sc||Number.isFinite(aa)&&aa<-sc||Number.isFinite(Bn)&&Number.isFinite(aa)&&Bn-aa>sc)throw new RangeError("Invalid List size: a List cannot hold more than "+sc+" (2 ** 30) values.")})(A,O,D),O!==void 0&&(O|=0),D!==void 0&&(D|=0);var F=A.__ownerID||new g,q=A._origin,ae=A._capacity,oe=q+O,fe=D===void 0?ae:D<0?ae+D:q+D;if(oe===q&&fe===ae)return A;if(oe>=fe)return A.clear();for(var Pe=A._level,ze=A._root,tt=0;oe+tt<0;)ze=new Ha(ze&&ze.array.length?[void 0,ze]:[],F),tt+=Jc(Pe+=5);tt&&(oe+=tt,q+=tt,fe+=tt,ae+=tt);for(var At=sl(ae),Rt=sl(fe);Rt>=Jc(Pe+5);)ze=new Ha(ze&&ze.array.length?[ze]:[],F),Pe+=5;var lr=A._tail,vr=RtAt?new Ha([],F):lr;if(lr&&Rt>At&&oe5;_n-=5){var ya=At>>>_n&f;Ar=Ar.array[ya]=il(Ar.array[ya],F)}Ar.array[At>>>5&f]=lr}if(fe=Rt)oe-=Rt,fe-=Rt,Pe=5,ze=null,vr=vr&&vr.removeBefore(F,0,oe);else if(oe>q||Rt>>Pe&f;if(Fa!==Rt>>>Pe&f)break;Fa&&(tt+=(1<q&&(ze=ze.removeBefore(F,Pe,oe-tt)),ze&&Rt>>5<<5}var sc=Math.pow(2,30);function Jc(A){return A<31?1<=v&&oe.size>=2*ae.size?(F=(q=oe.filter((function(ze,tt){return ze!==void 0&&fe!==tt}))).toKeyedSeq().map((function(ze){return ze[0]})).flip().toMap(),A.__ownerID&&(F.__ownerID=q.__ownerID=A.__ownerID)):(F=ae.remove(O),q=fe===oe.size-1?oe.pop():oe.set(fe,void 0))}else if(Pe){if(D===oe.get(fe)[1])return A;F=ae,q=oe.set(fe,[O,D])}else F=ae.set(O,oe.size),q=oe.set(oe.size,[O,D]);return A.__ownerID?(A.size=F.size,A._map=F,A._list=q,A.__hash=void 0,A.__altered=!0,A):Wc(F,q)}Ra.isOrderedMap=St,Ra.prototype[u]=!0,Ra.prototype[h]=Ra.prototype.remove;var ep="@@__IMMUTABLE_STACK__@@";function cl(A){return!!(A&&A[ep])}var ul=(function(A){function O(D){return D==null?Si():cl(D)?D:Si().pushAll(D)}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O.of=function(){return this(arguments)},O.prototype.toString=function(){return this.__toString("Stack [","]")},O.prototype.get=function(F,q){var ae=this._head;for(F=_(this,F);ae&&F--;)ae=ae.next;return ae?ae.value:q},O.prototype.peek=function(){return this._head&&this._head.value},O.prototype.push=function(){var F=arguments;if(arguments.length===0)return this;for(var q=this.size+arguments.length,ae=this._head,oe=arguments.length-1;oe>=0;oe--)ae={value:F[oe],next:ae};return this.__ownerID?(this.size=q,this._head=ae,this.__hash=void 0,this.__altered=!0,this):qi(q,ae)},O.prototype.pushAll=function(F){if((F=A(F)).size===0)return this;if(this.size===0&&cl(F))return F;mr(F.size);var q=this.size,ae=this._head;return F.__iterate((function(oe){q++,ae={value:oe,next:ae}}),!0),this.__ownerID?(this.size=q,this._head=ae,this.__hash=void 0,this.__altered=!0,this):qi(q,ae)},O.prototype.pop=function(){return this.slice(1)},O.prototype.clear=function(){return this.size===0?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Si()},O.prototype.slice=function(F,q){if(I(F,q,this.size))return this;var ae=j(F,this.size);if(M(q,this.size)!==this.size)return A.prototype.slice.call(this,F,q);for(var oe=this.size-ae,fe=this._head;ae--;)fe=fe.next;return this.__ownerID?(this.size=oe,this._head=fe,this.__hash=void 0,this.__altered=!0,this):qi(oe,fe)},O.prototype.__ensureOwner=function(F){return F===this.__ownerID?this:F?qi(this.size,this._head,F,this.__hash):this.size===0?Si():(this.__ownerID=F,this.__altered=!1,this)},O.prototype.__iterate=function(F,q){var ae=this;if(q)return new kt(this.toArray()).__iterate((function(Pe,ze){return F(Pe,ze,ae)}),q);for(var oe=0,fe=this._head;fe&&F(fe.value,oe++,this)!==!1;)fe=fe.next;return oe},O.prototype.__iterator=function(F,q){if(q)return new kt(this.toArray()).__iterator(F,q);var ae=0,oe=this._head;return new Ke((function(){if(oe){var fe=oe.value;return oe=oe.next,ft(F,ae++,fe)}return{value:void 0,done:!0}}))},O})(ke);ul.isStack=cl;var tp,xa=ul.prototype;function qi(A,O,D,F){var q=Object.create(xa);return q.size=A,q._head=O,q.__ownerID=D,q.__hash=F,q.__altered=!1,q}function Si(){return tp||(tp=qi(0))}xa[ep]=!0,xa.shift=xa.pop,xa.unshift=xa.push,xa.unshiftAll=xa.pushAll,xa.withMutations=jo,xa.wasAltered=Es,xa.asImmutable=el,xa["@@transducer/init"]=xa.asMutable=ac,xa["@@transducer/step"]=function(A,O){return A.unshift(O)},xa["@@transducer/result"]=function(A){return A.asImmutable()};var rp="@@__IMMUTABLE_SET__@@";function Ui(A){return!!(A&&A[rp])}function pl(A){return Ui(A)&&at(A)}function hl(A,O){if(A===O)return!0;if(!B(O)||A.size!==void 0&&O.size!==void 0&&A.size!==O.size||A.__hash!==void 0&&O.__hash!==void 0&&A.__hash!==O.__hash||te(A)!==te(O)||se(A)!==se(O)||at(A)!==at(O))return!1;if(A.size===0&&O.size===0)return!0;var D=!Te(A);if(at(A)){var F=A.entries();return O.every((function(Pe,ze){var tt=F.next().value;return tt&&Qe(tt[1],Pe)&&(D||Qe(tt[0],ze))}))&&F.next().done}var q=!1;if(A.size===void 0)if(O.size===void 0)typeof A.cacheResult=="function"&&A.cacheResult();else{q=!0;var ae=A;A=O,O=ae}var oe=!0,fe=O.__iterate((function(Pe,ze){if(D?!A.has(Pe):q?!Qe(Pe,A.get(ze,y)):!Qe(A.get(ze,y),Pe))return oe=!1,!1}));return oe&&A.size===fe}function xi(A,O){var D=function(F){A.prototype[F]=O[F]};return Object.keys(O).forEach(D),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(O).forEach(D),A}function xs(A){if(!A||typeof A!="object")return A;if(!B(A)){if(!Sa(A))return A;A=ar(A)}if(te(A)){var O={};return A.__iterate((function(F,q){Yl(q)||(O[q]=xs(F))})),O}var D=[];return A.__iterate((function(F){D.push(xs(F))})),D}var No=(function(A){function O(D){return D==null?ni():Ui(D)&&!at(D)?D:ni().withMutations((function(F){var q=A(D);mr(q.size),q.forEach((function(ae){return F.add(ae)}))}))}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O.of=function(){return this(arguments)},O.fromKeys=function(F){return this(ge(F).keySeq())},O.intersect=function(F){return(F=he(F).toArray()).length?ra.intersect.apply(O(F.pop()),F):ni()},O.union=function(F){return(F=he(F).toArray()).length?ra.union.apply(O(F.pop()),F):ni()},O.prototype.toString=function(){return this.__toString("Set {","}")},O.prototype.has=function(F){return this._map.has(F)},O.prototype.add=function(F){return dl(this,this._map.set(F,F))},O.prototype.remove=function(F){return dl(this,this._map.remove(F))},O.prototype.clear=function(){return dl(this,this._map.clear())},O.prototype.map=function(F,q){var ae=this,oe=!1,fe=dl(this,this._map.mapEntries((function(Pe){var ze=Pe[1],tt=F.call(q,ze,ze,ae);return tt!==ze&&(oe=!0),[tt,tt]}),q));return oe?fe:this},O.prototype.union=function(){for(var F=[],q=arguments.length;q--;)F[q]=arguments[q];return(F=F.filter((function(ae){return ae.size!==0}))).length===0?this:this.size!==0||this.__ownerID||F.length!==1?this.withMutations((function(ae){for(var oe=0;oe=0&&q=0&&ae>>-15,461845907),Pe=$t(Pe<<13|Pe>>>-13,5),Pe=Pe+3864292196^fe,Pe=$t(Pe^Pe>>>16,2246822507),Pe=$t(Pe^Pe>>>13,3266489909),Pe=Pt(Pe^Pe>>>16),Pe})(D.__iterate(q?F?function(oe,fe){ae=31*ae+yl(kr(oe),kr(fe))|0}:function(oe,fe){ae=ae+yl(kr(oe),kr(fe))|0}:F?function(oe){ae=31*ae+kr(oe)|0}:function(oe){ae=ae+kr(oe)|0}),ae)})(this))}});var la=he.prototype;la[Y]=!0,la[De]=la.values,la.toJSON=la.toArray,la.__toStringMapper=Ja,la.inspect=la.toSource=function(){return this.toString()},la.chain=la.flatMap,la.contains=la.includes,xi(ge,{flip:function(){return Nr(this,fn(this))},mapEntries:function(O,D){var F=this,q=0;return Nr(this,this.toSeq().map((function(ae,oe){return O.call(D,[oe,ae],q++,F)})).fromEntrySeq())},mapKeys:function(O,D){var F=this;return Nr(this,this.toSeq().flip().map((function(q,ae){return O.call(D,q,ae,F)})).flip())}});var Vi=ge.prototype;Vi[X]=!0,Vi[De]=la.entries,Vi.toJSON=gl,Vi.__toStringMapper=function(A,O){return Ja(O)+": "+Ja(A)},xi(ke,{toKeyedSeq:function(){return new Cr(this,!1)},filter:function(O,D){return Nr(this,ia(this,O,D,!1))},findIndex:function(O,D){var F=this.findEntry(O,D);return F?F[0]:-1},indexOf:function(O){var D=this.keyOf(O);return D===void 0?-1:D},lastIndexOf:function(O){var D=this.lastKeyOf(O);return D===void 0?-1:D},reverse:function(){return Nr(this,Hr(this,!1))},slice:function(O,D){return Nr(this,za(this,O,D,!1))},splice:function(O,D){var F=arguments.length;if(D=Math.max(D||0,0),F===0||F===2&&!D)return this;O=j(O,O<0?this.count():this.size);var q=this.slice(0,O);return Nr(this,F===1?q:q.concat(Yt(arguments,2),this.slice(O+D)))},findLastIndex:function(O,D){var F=this.findLastEntry(O,D);return F?F[0]:-1},first:function(O){return this.get(0,O)},flatten:function(O){return Nr(this,ea(this,O,!1))},get:function(O,D){return(O=_(this,O))<0||this.size===1/0||this.size!==void 0&&O>this.size?D:this.find((function(F,q){return q===O}),void 0,D)},has:function(O){return(O=_(this,O))>=0&&(this.size!==void 0?this.size===1/0||OO?-1:0}function yl(A,O){return A^O+2654435769+(A<<6)+(A>>2)}Wi.has=la.includes,Wi.contains=Wi.includes,Wi.keys=Wi.values,xi(Tt,Vi),xi(Gt,Ji),xi(Sr,Wi);var Da=(function(A){function O(D){return D==null?_i():pl(D)?D:_i().withMutations((function(F){var q=Ve(D);mr(q.size),q.forEach((function(ae){return F.add(ae)}))}))}return A&&(O.__proto__=A),O.prototype=Object.create(A&&A.prototype),O.prototype.constructor=O,O.of=function(){return this(arguments)},O.fromKeys=function(F){return this(ge(F).keySeq())},O.prototype.toString=function(){return this.__toString("OrderedSet {","}")},O})(No);Da.isOrderedSet=pl;var Hi,Ho=Da.prototype;function _a(A,O){var D=Object.create(Ho);return D.size=A?A.size:0,D._map=A,D.__ownerID=O,D}function _i(){return Hi||(Hi=_a(ll()))}Ho[u]=!0,Ho.zip=Ji.zip,Ho.zipWith=Ji.zipWith,Ho.zipAll=Ji.zipAll,Ho.__empty=_i,Ho.__make=_a;var cc={LeftThenRight:-1,RightThenLeft:1},jn=function(O,D){var F;(function(fe){if(gt(fe))throw new Error("Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.");if(Re(fe))throw new Error("Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.");if(fe===null||typeof fe!="object")throw new Error("Can not call `Record` with a non-object as default values. Use a plain javascript object instead.")})(O);var q=function(fe){var Pe=this;if(fe instanceof q)return fe;if(!(this instanceof q))return new q(fe);if(!F){F=!0;var ze=Object.keys(O),tt=ae._indices={};ae._name=D,ae._keys=ze,ae._defaultValues=O;for(var At=0;At2?[]:void 0,{"":A})}function eu(A,O,D,F,q,ae){if(typeof D!="string"&&!Re(D)&&(ur(D)||Wt(D)||sa(D))){if(~A.indexOf(D))throw new TypeError("Cannot convert circular structure to Immutable");A.push(D),q&&F!==""&&q.push(F);var oe=O.call(ae,F,ar(D).map((function(fe,Pe){return eu(A,O,fe,Pe,q,D)})),q&&q.slice());return A.pop(),q&&q.pop(),oe}return D}function op(A,O){return se(O)?O.toList():te(O)?O.toMap():O.toSet()}var tu="4.3.9",ip=he;const sp={version:tu,Collection:he,Iterable:he,Seq:ar,Map:vi,OrderedMap:Ra,List:Wo,Stack:ul,Set:No,OrderedSet:Da,PairSorting:cc,Record:jn,Range:zi,Repeat:vl,is:Qe,fromJS:Zc,hash:kr,isImmutable:Re,isCollection:B,isKeyed:te,isIndexed:se,isAssociative:Te,isOrdered:at,isValueObject:Bt,isPlainObject:sa,isSeq:qe,isList:Bi,isMap:Fe,isOrderedMap:St,isStack:cl,isSet:Ui,isOrderedSet:pl,isRecord:gt,get:Ia,getIn:lc,has:Wa,hasIn:ml,merge:nc,mergeDeep:Ku,mergeWith:Hu,mergeDeepWith:$c,remove:gs,removeIn:Zl,set:ys,setIn:Wu,update:Ao,updateIn:lo}},56698(w){typeof Object.create=="function"?w.exports=function(s,h){h&&(s.super_=h,s.prototype=Object.create(h.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}))}:w.exports=function(s,h){if(h){s.super_=h;var v=function(){};v.prototype=h.prototype,s.prototype=new v,s.prototype.constructor=s}}},69600(w){var N,s,h=Function.prototype.toString,v=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply;if(typeof v=="function"&&typeof Object.defineProperty=="function")try{N=Object.defineProperty({},"length",{get:function(){throw s}}),s={},v((function(){throw 42}),null,N)}catch(j){j!==s&&(v=null)}else v=null;var f=/^\s*class\b/,y=function(M){try{var z=h.call(M);return f.test(z)}catch{return!1}},m=function(M){try{return!y(M)&&(h.call(M),!0)}catch{return!1}},g=Object.prototype.toString,S=typeof Symbol=="function"&&!!Symbol.toStringTag,_=!(0 in[,]),T=function(){return!1};if(typeof document=="object"){var I=document.all;g.call(I)===g.call(document.all)&&(T=function(M){if((_||!M)&&(M===void 0||typeof M=="object"))try{var z=g.call(M);return(z==="[object HTMLAllCollection]"||z==="[object HTML document.all class]"||z==="[object HTMLCollection]"||z==="[object Object]")&&M("")==null}catch{}return!1})}w.exports=v?function(M){if(T(M))return!0;if(!M||typeof M!="function"&&typeof M!="object")return!1;try{v(M,null,N)}catch(z){if(z!==s)return!1}return!y(M)&&m(M)}:function(M){if(T(M))return!0;if(!M||typeof M!="function"&&typeof M!="object")return!1;if(S)return m(M);if(y(M))return!1;var z=g.call(M);return!(z!=="[object Function]"&&z!=="[object GeneratorFunction]"&&!/^\[object HTML/.test(z))&&m(M)}},35680(w,N,s){var h=s(25767);w.exports=function(f){return!!h(f)}},64634(w){var N={}.toString;w.exports=Array.isArray||function(s){return N.call(s)=="[object Array]"}},5419(w){w.exports=function(N,s,h,v){var f=new Blob(v!==void 0?[v,N]:[N],{type:h||"application/octet-stream"});if(window.navigator.msSaveBlob!==void 0)window.navigator.msSaveBlob(f,s);else{var y=window.URL&&window.URL.createObjectURL?window.URL.createObjectURL(f):window.webkitURL.createObjectURL(f),m=document.createElement("a");m.style.display="none",m.href=y,m.setAttribute("download",s),m.download===void 0&&m.setAttribute("target","_blank"),document.body.appendChild(m),m.click(),setTimeout((function(){document.body.removeChild(m),window.URL.revokeObjectURL(y)}),200)}}},20181(w,N,s){var h=/^\s+|\s+$/g,v=/^[-+]0x[0-9a-f]+$/i,f=/^0b[01]+$/i,y=/^0o[0-7]+$/i,m=parseInt,g=typeof s.g=="object"&&s.g&&s.g.Object===Object&&s.g,S=typeof self=="object"&&self&&self.Object===Object&&self,_=g||S||Function("return this")(),T=Object.prototype.toString,I=Math.max,j=Math.min,M=function(){return _.Date.now()};function z(Y){var B=typeof Y;return!!Y&&(B=="object"||B=="function")}function K(Y){if(typeof Y=="number")return Y;if((function(ie){return typeof ie=="symbol"||(function(Te){return!!Te&&typeof Te=="object"})(ie)&&T.call(ie)=="[object Symbol]"})(Y))return NaN;if(z(Y)){var B=typeof Y.valueOf=="function"?Y.valueOf():Y;Y=z(B)?B+"":B}if(typeof Y!="string")return Y===0?Y:+Y;Y=Y.replace(h,"");var X=f.test(Y);return X||y.test(Y)?m(Y.slice(2),X?2:8):v.test(Y)?NaN:+Y}w.exports=function(B,X,te){var ie,se,Te,he,ge,ke,Ve=0,He=!1,qe=!1,nt=!0;if(typeof B!="function")throw new TypeError("Expected a function");function gt(Se){var De=ie,Ke=se;return ie=se=void 0,Ve=Se,he=B.apply(Ke,De)}function Re(Se){var De=Se-ke;return ke===void 0||De>=X||De<0||qe&&Se-Ve>=Te}function u(){var Se=M();if(Re(Se))return at(Se);ge=setTimeout(u,(function(Ke){var ft=X-(Ke-ke);return qe?j(ft,Te-(Ke-Ve)):ft})(Se))}function at(Se){return ge=void 0,nt&&ie?gt(Se):(ie=se=void 0,he)}function Xe(){var Se=M(),De=Re(Se);if(ie=arguments,se=this,ke=Se,De){if(ge===void 0)return(function(ft){return Ve=ft,ge=setTimeout(u,X),He?gt(ft):he})(ke);if(qe)return ge=setTimeout(u,X),gt(ke)}return ge===void 0&&(ge=setTimeout(u,X)),he}return X=K(X)||0,z(te)&&(He=!!te.leading,Te=(qe="maxWait"in te)?I(K(te.maxWait)||0,X):Te,nt="trailing"in te?!!te.trailing:nt),Xe.cancel=function(){ge!==void 0&&clearTimeout(ge),Ve=0,ie=ke=se=ge=void 0},Xe.flush=function(){return ge===void 0?he:at(M())},Xe}},55580(w,N,s){var h=s(56110)(s(9325),"DataView");w.exports=h},21549(w,N,s){var h=s(22032),v=s(63862),f=s(66721),y=s(12749),m=s(35749);function g(S){var _=-1,T=S==null?0:S.length;for(this.clear();++_-1}},70695(w,N,s){var h=s(78096),v=s(72428),f=s(56449),y=s(3656),m=s(30361),g=s(37167),S=Object.prototype.hasOwnProperty;w.exports=function(T,I){var j=f(T),M=!j&&v(T),z=!j&&!M&&y(T),K=!j&&!M&&!z&&g(T),Y=j||M||z||K,B=Y?h(T.length,String):[],X=B.length;for(var te in T)!I&&!S.call(T,te)||Y&&(te=="length"||z&&(te=="offset"||te=="parent")||K&&(te=="buffer"||te=="byteLength"||te=="byteOffset")||m(te,X))||B.push(te);return B}},34932(w){w.exports=function(s,h){for(var v=-1,f=s==null?0:s.length,y=Array(f);++v0&&g(j)?m>1?f(j,m-1,g,S,_):h(_,j):S||(_[_.length]=j)}return _}},86649(w,N,s){var h=s(83221)();w.exports=h},30641(w,N,s){var h=s(86649),v=s(95950);w.exports=function(y,m){return y&&h(y,m,v)}},47422(w,N,s){var h=s(31769),v=s(77797);w.exports=function(y,m){for(var g=0,S=(m=h(m,y)).length;y!=null&&gy?0:y+h),(v=v>y?y:v)<0&&(v+=y),y=h>v?0:v-h>>>0,h>>>=0;for(var m=Array(y);++f=g?f:h(f,y,m)}},49653(w,N,s){var h=s(37828);w.exports=function(f){var y=new f.constructor(f.byteLength);return new h(y).set(new h(f)),y}},93290(w,N,s){w=s.nmd(w);var h=s(9325),v=N&&!N.nodeType&&N,f=v&&w&&!w.nodeType&&w,y=f&&f.exports===v?h.Buffer:void 0,m=y?y.allocUnsafe:void 0;w.exports=function(S,_){if(_)return S.slice();var T=S.length,I=m?m(T):new S.constructor(T);return S.copy(I),I}},76169(w,N,s){var h=s(49653);w.exports=function(f,y){var m=y?h(f.buffer):f.buffer;return new f.constructor(m,f.byteOffset,f.byteLength)}},73201(w){var N=/\w*$/;w.exports=function(h){var v=new h.constructor(h.source,N.exec(h));return v.lastIndex=h.lastIndex,v}},93736(w,N,s){var h=s(51873),v=h?h.prototype:void 0,f=v?v.valueOf:void 0;w.exports=function(m){return f?Object(f.call(m)):{}}},71961(w,N,s){var h=s(49653);w.exports=function(f,y){var m=y?h(f.buffer):f.buffer;return new f.constructor(m,f.byteOffset,f.length)}},91596(w){var N=Math.max;w.exports=function(h,v,f,y){for(var m=-1,g=h.length,S=f.length,_=-1,T=v.length,I=N(g-S,0),j=Array(T+I),M=!y;++_1?g[_-1]:void 0,I=_>2?g[2]:void 0;for(T=y.length>3&&typeof T=="function"?(_--,T):void 0,I&&v(g[0],g[1],I)&&(T=_<3?void 0:T,_=1),m=Object(m);++S<_;){var j=g[S];j&&y(m,j,S,T)}return m}))}},38329(w,N,s){var h=s(64894);w.exports=function(f,y){return function(m,g){if(m==null)return m;if(!h(m))return f(m,g);for(var S=m.length,_=y?S:-1,T=Object(m);(y?_--:++_-1?T[I?g[j]:j]:void 0}}},37471(w,N,s){var h=s(91596),v=s(53320),f=s(58523),y=s(82819),m=s(18073),g=s(11287),S=s(68294),_=s(36306),T=s(9325);w.exports=function I(j,M,z,K,Y,B,X,te,ie,se){var Te=128&M,he=1&M,ge=2&M,ke=24&M,Ve=512&M,He=ge?void 0:y(j);return function qe(){for(var nt=arguments.length,gt=Array(nt),Re=nt;Re--;)gt[Re]=arguments[Re];if(ke)var u=g(qe),at=f(gt,u);if(K&&(gt=h(gt,K,Y,ke)),B&&(gt=v(gt,B,X,ke)),nt-=at,ke&&nt1&>.reverse(),Te&&ieM))return!1;var K=I.get(m),Y=I.get(g);if(K&&Y)return K==g&&Y==m;var B=-1,X=!0,te=2&S?new h:void 0;for(I.set(m,g),I.set(g,m);++B1?"& ":"")+v[y],v=v.join(f>2?", ":" "),h.replace(N,`{ diff --git a/server/web/dist/assets/PageShell-D87JkPkG.js b/server/web/dist/assets/PageShell-CBo29Oot.js similarity index 91% rename from server/web/dist/assets/PageShell-D87JkPkG.js rename to server/web/dist/assets/PageShell-CBo29Oot.js index 48a7b77..dbbeb54 100644 --- a/server/web/dist/assets/PageShell-D87JkPkG.js +++ b/server/web/dist/assets/PageShell-CBo29Oot.js @@ -1 +1 @@ -import{d as h,u as g,a as k,c as n,G as i,b as t,Q as y,e as v,f as e,t as a,g as c,q as r,A as d,F as x,h as B,O as C,o as l,_ as b}from"./index-DYsKpclu.js";import{_ as w}from"./SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js";const N={class:"site-footer"},S={class:"footer-left"},F={key:0,class:"footer-text"},P={key:1,class:"footer-beian"},T={key:2},V=["aria-label"],$=h({__name:"PageShell",setup(D){const{t:s}=g(),o=k(),m=new Date().getFullYear(),u=B(()=>!!(o.footerText.trim()||o.footerBeian.trim()));return(p,_)=>{const f=C("RouterLink");return l(),n(x,null,[i(w),t("main",{class:v(["page",{"page-wide":p.$route.meta.wide}])},[y(p.$slots,"default",{},void 0,!0)],2),t("footer",N,[t("div",S,[e(o).footerText.trim()?(l(),n("span",F,a(e(o).footerText),1)):c("",!0),e(o).footerBeian.trim()?(l(),n("span",P,a(e(o).footerBeian),1)):c("",!0),u.value?c("",!0):(l(),n("span",T,a(e(s)("footer.copyright",{year:e(m),name:e(o).displayName})),1))]),_[0]||(_[0]=t("span",{class:"footer-powered"},[r(" Powered by "),t("a",{href:"https://skymirror.top",target:"_blank",rel:"noopener noreferrer"},"SKYMirror"),r(" 26.9 ")],-1)),t("nav",{"aria-label":e(s)("footer.linkNav")},[i(f,{to:"/docs"},{default:d(()=>[r(a(e(s)("footer.docs")),1)]),_:1}),i(f,{to:"/openapi"},{default:d(()=>[r(a(e(s)("footer.openapi")),1)]),_:1}),i(f,{to:"/admin/files"},{default:d(()=>[r(a(e(s)("footer.admin")),1)]),_:1})],8,V)])],64)}}}),R=b($,[["__scopeId","data-v-80685d6f"]]);export{R as P}; +import{d as h,u as g,a as k,c as n,G as i,b as t,Q as y,e as v,f as e,t as a,g as c,q as r,A as d,F as x,h as B,O as C,o as l,_ as b}from"./index-BKnWAKao.js";import{_ as w}from"./SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js";const N={class:"site-footer"},S={class:"footer-left"},F={key:0,class:"footer-text"},P={key:1,class:"footer-beian"},T={key:2},V=["aria-label"],$=h({__name:"PageShell",setup(D){const{t:s}=g(),o=k(),m=new Date().getFullYear(),u=B(()=>!!(o.footerText.trim()||o.footerBeian.trim()));return(p,_)=>{const f=C("RouterLink");return l(),n(x,null,[i(w),t("main",{class:v(["page",{"page-wide":p.$route.meta.wide}])},[y(p.$slots,"default",{},void 0,!0)],2),t("footer",N,[t("div",S,[e(o).footerText.trim()?(l(),n("span",F,a(e(o).footerText),1)):c("",!0),e(o).footerBeian.trim()?(l(),n("span",P,a(e(o).footerBeian),1)):c("",!0),u.value?c("",!0):(l(),n("span",T,a(e(s)("footer.copyright",{year:e(m),name:e(o).displayName})),1))]),_[0]||(_[0]=t("span",{class:"footer-powered"},[r(" Powered by "),t("a",{href:"https://skymirror.top",target:"_blank",rel:"noopener noreferrer"},"SKYMirror"),r(" 26.9 ")],-1)),t("nav",{"aria-label":e(s)("footer.linkNav")},[i(f,{to:"/docs"},{default:d(()=>[r(a(e(s)("footer.docs")),1)]),_:1}),i(f,{to:"/openapi"},{default:d(()=>[r(a(e(s)("footer.openapi")),1)]),_:1}),i(f,{to:"/admin/files"},{default:d(()=>[r(a(e(s)("footer.admin")),1)]),_:1})],8,V)])],64)}}}),R=b($,[["__scopeId","data-v-80685d6f"]]);export{R as P}; diff --git a/server/web/dist/assets/Pager.vue_vue_type_script_setup_true_lang-B3GeH0mY.js b/server/web/dist/assets/Pager.vue_vue_type_script_setup_true_lang-DZv_x-2P.js similarity index 92% rename from server/web/dist/assets/Pager.vue_vue_type_script_setup_true_lang-B3GeH0mY.js rename to server/web/dist/assets/Pager.vue_vue_type_script_setup_true_lang-DZv_x-2P.js index 636189a..b25a7d8 100644 --- a/server/web/dist/assets/Pager.vue_vue_type_script_setup_true_lang-B3GeH0mY.js +++ b/server/web/dist/assets/Pager.vue_vue_type_script_setup_true_lang-DZv_x-2P.js @@ -1 +1 @@ -import{d as b,u as p,c as r,b as o,t as i,f as c,h,o as f}from"./index-DYsKpclu.js";const v={class:"pager"},x={class:"pager-info"},k=["disabled"],M=["disabled"],y=b({__name:"Pager",props:{page:{},size:{},total:{}},emits:["change"],setup(t,{emit:m}){const a=t,d=m,{t:n}=p(),s=h(()=>Math.max(1,Math.ceil(a.total/a.size)));function g(l){const e=Math.min(Math.max(1,l),s.value);e!==a.page&&d("change",e,a.size)}return(l,e)=>(f(),r("div",v,[o("span",x,i(c(n)("common.pagerInfo",{total:t.total,page:t.page,pages:s.value})),1),o("button",{class:"btn btn-ghost btn-sm",type:"button",disabled:t.page<=1,onClick:e[0]||(e[0]=u=>g(t.page-1))},i(c(n)("common.previousPage")),9,k),o("button",{class:"btn btn-ghost btn-sm",type:"button",disabled:t.page>=s.value,onClick:e[1]||(e[1]=u=>g(t.page+1))},i(c(n)("common.nextPage")),9,M)]))}});export{y as _}; +import{d as b,u as p,c as r,b as o,t as i,f as c,h,o as f}from"./index-BKnWAKao.js";const v={class:"pager"},x={class:"pager-info"},k=["disabled"],M=["disabled"],y=b({__name:"Pager",props:{page:{},size:{},total:{}},emits:["change"],setup(t,{emit:m}){const a=t,d=m,{t:n}=p(),s=h(()=>Math.max(1,Math.ceil(a.total/a.size)));function g(l){const e=Math.min(Math.max(1,l),s.value);e!==a.page&&d("change",e,a.size)}return(l,e)=>(f(),r("div",v,[o("span",x,i(c(n)("common.pagerInfo",{total:t.total,page:t.page,pages:s.value})),1),o("button",{class:"btn btn-ghost btn-sm",type:"button",disabled:t.page<=1,onClick:e[0]||(e[0]=u=>g(t.page-1))},i(c(n)("common.previousPage")),9,k),o("button",{class:"btn btn-ghost btn-sm",type:"button",disabled:t.page>=s.value,onClick:e[1]||(e[1]=u=>g(t.page+1))},i(c(n)("common.nextPage")),9,M)]))}});export{y as _}; diff --git a/server/web/dist/assets/PickupView-ClAAhXsM.js b/server/web/dist/assets/PickupView-CUVFjD6g.js similarity index 94% rename from server/web/dist/assets/PickupView-ClAAhXsM.js rename to server/web/dist/assets/PickupView-CUVFjD6g.js index 482dc40..2cb5d03 100644 --- a/server/web/dist/assets/PickupView-ClAAhXsM.js +++ b/server/web/dist/assets/PickupView-CUVFjD6g.js @@ -1 +1 @@ -import{d as N,u as U,i as q,I,J as b,z as L,A as R,H as C,h as T,j as p,b as t,c as u,q as z,t as s,f as n,w as E,C as H,D as $,F as y,s as _,g as w,K as j,L as J,n as K,M as B,k as W,N as G,B as O,o as l}from"./index-DYsKpclu.js";import{P as Q}from"./PageShell-D87JkPkG.js";import{g as X,p as Y,b as Z}from"./share-CqDDLJWI.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js";const ee={class:"card",style:{"max-width":"640px",margin:"12px auto 0"}},te={key:0,class:"loading-block"},ae={class:"empty"},oe={style:{"font-weight":"600",color:"var(--c-text)"}},ne={class:"hint"},se=["placeholder"],ie={class:"btn",type:"submit"},le={style:{display:"flex","align-items":"center",gap:"10px","flex-wrap":"wrap","margin-bottom":"4px"}},ue={class:"badge"},re={style:{"font-size":"16px","word-break":"break-all"}},ce={key:0,class:"hint",style:{margin:"0"}},pe={class:"hint",style:{"margin-bottom":"18px"}},de={key:0,class:"loading-block"},me={class:"text-view"},ve={style:{display:"flex",gap:"10px","margin-top":"14px","flex-wrap":"wrap"}},ye={class:"file-summary"},ke={style:{"font-weight":"600","word-break":"break-all"}},fe={class:"hint",style:{margin:"0"}},ge={key:0,style:{margin:"16px 0 6px"}},he={class:"progress"},xe={class:"hint"},_e=["disabled"],Be=N({__name:"PickupView",setup(we){const{t:e}=U(),D=G(),F=O(),k=q(),d=T(()=>String(D.params.code??"").trim().split(/\s+/)[0]),r=p("loading"),m=p(""),o=p(null),v=p(""),f=p(!1),c=p(null);async function g(){if(!d.value){r.value="error",m.value=e("pickup.emptyCode");return}r.value="loading",m.value="",o.value=null,v.value="";try{const a=await X(d.value);if(o.value=a,r.value="ready",a.isText){f.value=!0;try{v.value=await Y(d.value)}finally{f.value=!1}}}catch(a){r.value="error",m.value=a instanceof C?a.code===404?e("pickup.notFound"):a.code===423?e("home.rateLimited"):a.code===428?e("home.notInitialized"):a.msg:e("pickup.failedDefault")}}I(g),b(d,()=>{g()}),b(()=>e("pickup.emptyCode"),()=>{r.value==="error"&&m.value&&g()});async function A(){if(o.value){c.value=0;try{const{blob:a,filename:i}=await Z(d.value,x=>c.value=x);B(a,i||o.value.name||"download"),k.success(e("pickup.downloaded"))}catch(a){k.error(a instanceof C?a.msg:e("pickup.downloadFailed"))}finally{c.value=null}}}async function M(){await W(v.value)?k.success(e("pickup.copied")):k.error(e("common.copyFailed"))}function P(){if(!o.value)return;const a=new Blob([v.value],{type:"text/plain;charset=utf-8"}),i=o.value.name?.includes(".")?o.value.name:`${o.value.name||"text"}.txt`;B(a,i)}const h=p("");function S(){const a=h.value.trim();a&&F.push({name:"pickup",params:{code:a}})}const V=T(()=>{const a=o.value;return a?a.remainingDownloads===null||a.remainingDownloads===void 0||a.remainingDownloads<0?e("pickup.remainingUnlimited"):e("pickup.remainingCount",{n:a.remainingDownloads}):""});return(a,i)=>(l(),L(Q,null,{default:R(()=>[t("section",ee,[r.value==="loading"?(l(),u("div",te,[i[1]||(i[1]=t("span",{class:"spin","aria-hidden":"true"},null,-1)),z(" "+s(n(e)("pickup.querying",{code:d.value})),1)])):r.value==="error"?(l(),u(y,{key:1},[t("div",ae,[i[2]||(i[2]=t("div",{class:"empty-icon"},"📮",-1)),t("p",oe,s(m.value||n(e)("pickup.failed")),1),t("p",ne,s(n(e)("pickup.confirmHint")),1)]),t("form",{class:"quick-pickup",style:{"margin-top":"6px","max-width":"none"},onSubmit:E(S,["prevent"])},[H(t("input",{"onUpdate:modelValue":i[0]||(i[0]=x=>h.value=x),class:"input input-mono",placeholder:n(e)("pickup.retryPlaceholder"),maxlength:"32"},null,8,se),[[$,h.value]]),t("button",ie,s(n(e)("pickup.retryButton")),1)],32)],64)):o.value?(l(),u(y,{key:2},[t("div",le,[t("span",ue,s(o.value.isText?n(e)("common.text"):n(e)("common.file")),1),t("strong",re,s(o.value.name),1),o.value.isText?w("",!0):(l(),u("span",ce,s(n(_)(o.value.size)),1))]),t("p",pe,s(V.value)+" · "+s(n(e)("pickup.expireAt",{time:o.value.expiredAt?n(j)(o.value.expiredAt):n(e)("time.permanent")}))+" · "+s(n(J)(o.value.expiredAt)),1),o.value.isText?(l(),u(y,{key:0},[f.value?(l(),u("div",de,[i[3]||(i[3]=t("span",{class:"spin","aria-hidden":"true"},null,-1)),z(" "+s(n(e)("pickup.loadingText")),1)])):(l(),u(y,{key:1},[t("pre",me,s(v.value),1),t("div",ve,[t("button",{class:"btn",type:"button",onClick:M},s(n(e)("pickup.copyContent")),1),t("button",{class:"btn btn-ghost",type:"button",onClick:P},s(n(e)("pickup.downloadTxt")),1)])],64))],64)):(l(),u(y,{key:1},[t("div",ye,[i[4]||(i[4]=t("span",{style:{"font-size":"30px"},"aria-hidden":"true"},"📄",-1)),t("div",null,[t("div",ke,s(o.value.name),1),t("div",fe,s(n(e)("pickup.sizeUsed",{size:n(_)(o.value.size),n:o.value.usedCount})),1)])]),c.value!==null?(l(),u("div",ge,[t("div",he,[t("i",{style:K({width:`${c.value}%`})},null,4)]),t("p",xe,s(n(e)("pickup.downloading",{percent:c.value})),1)])):w("",!0),t("button",{class:"btn btn-block",type:"button",disabled:c.value!==null,onClick:A}," ⬇ "+s(n(e)("pickup.downloadFile",{size:n(_)(o.value.size)})),9,_e)],64))],64)):w("",!0)])]),_:1}))}});export{Be as default}; +import{d as N,u as U,i as q,I,J as b,z as L,A as R,H as C,h as T,j as p,b as t,c as u,q as z,t as s,f as n,w as E,C as H,D as $,F as y,s as _,g as w,K as j,L as J,n as K,M as B,k as W,N as G,B as O,o as l}from"./index-BKnWAKao.js";import{P as Q}from"./PageShell-CBo29Oot.js";import{g as X,p as Y,b as Z}from"./share-B-zR67vw.js";import"./SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js";const ee={class:"card",style:{"max-width":"640px",margin:"12px auto 0"}},te={key:0,class:"loading-block"},ae={class:"empty"},oe={style:{"font-weight":"600",color:"var(--c-text)"}},ne={class:"hint"},se=["placeholder"],ie={class:"btn",type:"submit"},le={style:{display:"flex","align-items":"center",gap:"10px","flex-wrap":"wrap","margin-bottom":"4px"}},ue={class:"badge"},re={style:{"font-size":"16px","word-break":"break-all"}},ce={key:0,class:"hint",style:{margin:"0"}},pe={class:"hint",style:{"margin-bottom":"18px"}},de={key:0,class:"loading-block"},me={class:"text-view"},ve={style:{display:"flex",gap:"10px","margin-top":"14px","flex-wrap":"wrap"}},ye={class:"file-summary"},ke={style:{"font-weight":"600","word-break":"break-all"}},fe={class:"hint",style:{margin:"0"}},ge={key:0,style:{margin:"16px 0 6px"}},he={class:"progress"},xe={class:"hint"},_e=["disabled"],Be=N({__name:"PickupView",setup(we){const{t:e}=U(),D=G(),F=O(),k=q(),d=T(()=>String(D.params.code??"").trim().split(/\s+/)[0]),r=p("loading"),m=p(""),o=p(null),v=p(""),f=p(!1),c=p(null);async function g(){if(!d.value){r.value="error",m.value=e("pickup.emptyCode");return}r.value="loading",m.value="",o.value=null,v.value="";try{const a=await X(d.value);if(o.value=a,r.value="ready",a.isText){f.value=!0;try{v.value=await Y(d.value)}finally{f.value=!1}}}catch(a){r.value="error",m.value=a instanceof C?a.code===404?e("pickup.notFound"):a.code===423?e("home.rateLimited"):a.code===428?e("home.notInitialized"):a.msg:e("pickup.failedDefault")}}I(g),b(d,()=>{g()}),b(()=>e("pickup.emptyCode"),()=>{r.value==="error"&&m.value&&g()});async function A(){if(o.value){c.value=0;try{const{blob:a,filename:i}=await Z(d.value,x=>c.value=x);B(a,i||o.value.name||"download"),k.success(e("pickup.downloaded"))}catch(a){k.error(a instanceof C?a.msg:e("pickup.downloadFailed"))}finally{c.value=null}}}async function M(){await W(v.value)?k.success(e("pickup.copied")):k.error(e("common.copyFailed"))}function P(){if(!o.value)return;const a=new Blob([v.value],{type:"text/plain;charset=utf-8"}),i=o.value.name?.includes(".")?o.value.name:`${o.value.name||"text"}.txt`;B(a,i)}const h=p("");function S(){const a=h.value.trim();a&&F.push({name:"pickup",params:{code:a}})}const V=T(()=>{const a=o.value;return a?a.remainingDownloads===null||a.remainingDownloads===void 0||a.remainingDownloads<0?e("pickup.remainingUnlimited"):e("pickup.remainingCount",{n:a.remainingDownloads}):""});return(a,i)=>(l(),L(Q,null,{default:R(()=>[t("section",ee,[r.value==="loading"?(l(),u("div",te,[i[1]||(i[1]=t("span",{class:"spin","aria-hidden":"true"},null,-1)),z(" "+s(n(e)("pickup.querying",{code:d.value})),1)])):r.value==="error"?(l(),u(y,{key:1},[t("div",ae,[i[2]||(i[2]=t("div",{class:"empty-icon"},"📮",-1)),t("p",oe,s(m.value||n(e)("pickup.failed")),1),t("p",ne,s(n(e)("pickup.confirmHint")),1)]),t("form",{class:"quick-pickup",style:{"margin-top":"6px","max-width":"none"},onSubmit:E(S,["prevent"])},[H(t("input",{"onUpdate:modelValue":i[0]||(i[0]=x=>h.value=x),class:"input input-mono",placeholder:n(e)("pickup.retryPlaceholder"),maxlength:"32"},null,8,se),[[$,h.value]]),t("button",ie,s(n(e)("pickup.retryButton")),1)],32)],64)):o.value?(l(),u(y,{key:2},[t("div",le,[t("span",ue,s(o.value.isText?n(e)("common.text"):n(e)("common.file")),1),t("strong",re,s(o.value.name),1),o.value.isText?w("",!0):(l(),u("span",ce,s(n(_)(o.value.size)),1))]),t("p",pe,s(V.value)+" · "+s(n(e)("pickup.expireAt",{time:o.value.expiredAt?n(j)(o.value.expiredAt):n(e)("time.permanent")}))+" · "+s(n(J)(o.value.expiredAt)),1),o.value.isText?(l(),u(y,{key:0},[f.value?(l(),u("div",de,[i[3]||(i[3]=t("span",{class:"spin","aria-hidden":"true"},null,-1)),z(" "+s(n(e)("pickup.loadingText")),1)])):(l(),u(y,{key:1},[t("pre",me,s(v.value),1),t("div",ve,[t("button",{class:"btn",type:"button",onClick:M},s(n(e)("pickup.copyContent")),1),t("button",{class:"btn btn-ghost",type:"button",onClick:P},s(n(e)("pickup.downloadTxt")),1)])],64))],64)):(l(),u(y,{key:1},[t("div",ye,[i[4]||(i[4]=t("span",{style:{"font-size":"30px"},"aria-hidden":"true"},"📄",-1)),t("div",null,[t("div",ke,s(o.value.name),1),t("div",fe,s(n(e)("pickup.sizeUsed",{size:n(_)(o.value.size),n:o.value.usedCount})),1)])]),c.value!==null?(l(),u("div",ge,[t("div",he,[t("i",{style:K({width:`${c.value}%`})},null,4)]),t("p",xe,s(n(e)("pickup.downloading",{percent:c.value})),1)])):w("",!0),t("button",{class:"btn btn-block",type:"button",disabled:c.value!==null,onClick:A}," ⬇ "+s(n(e)("pickup.downloadFile",{size:n(_)(o.value.size)})),9,_e)],64))],64)):w("",!0)])]),_:1}))}});export{Be as default}; diff --git a/server/web/dist/assets/SettingsView-CjSvbH8z.js b/server/web/dist/assets/SettingsView-DgvAWaBc.js similarity index 99% rename from server/web/dist/assets/SettingsView-CjSvbH8z.js rename to server/web/dist/assets/SettingsView-DgvAWaBc.js index 1758aea..5e6680a 100644 --- a/server/web/dist/assets/SettingsView-CjSvbH8z.js +++ b/server/web/dist/assets/SettingsView-DgvAWaBc.js @@ -1,4 +1,4 @@ -import{a0 as ge,h as F,a1 as Ze,a2 as Me,a3 as Xe,a4 as Qe,a5 as Pe,a6 as et,o as w,a7 as ze,z as ce,c as y,F as G,b as e,a8 as We,a9 as tt,e as st,aa as nt,G as Fe,A as it,ab as ot,ac as at,j as V,ad as Ae,ae as K,J as lt,I as Ye,af as rt,P as dt,ag as ct,ah as ut,d as ve,ai as _t,aj as mt,ak as Ue,al as b,n as Re,am as Ge,an as ft,ao as ht,ap as pt,aq as I,ar as Ee,as as qe,at as Q,au as gt,u as vt,i as bt,a as wt,t as l,f as o,q as M,w as He,C as f,D as v,g as L,Z as _e,s as Oe,R as ke,S as p,H as re,B as yt,_ as xt}from"./index-DYsKpclu.js";import{f as kt,g as St,h as De,i as Ct}from"./admin-DEOkRyTC.js";import{u as Bt}from"./auth-B7MDTgxJ.js";function Vt(s={},t={defaultBordered:!0}){const d=ge(Me,null);return{inlineThemeDisabled:d?.inlineThemeDisabled,mergedRtlRef:d?.mergedRtlRef,mergedComponentPropsRef:d?.mergedComponentPropsRef,mergedBreakpointsRef:d?.mergedBreakpointsRef,mergedBorderedRef:F(()=>{const{bordered:u}=s;return u!==void 0?u:d?.mergedBorderedRef.value??t.defaultBordered??!0}),mergedClsPrefixRef:d?d.mergedClsPrefixRef:Ze("n"),namespaceRef:F(()=>d?.mergedNamespaceRef.value)}}function $t(s,t,d){if(!t)return;const u=Xe(),_=ge(Me,null),h=()=>{const x=d.value;t.mount({id:x===void 0?s:x+s,head:!0,anchorMetaName:Pe,props:{bPrefix:x?`.${x}-`:void 0},ssr:u,parent:_?.styleMountTarget}),_?.preflightStyleDisabled||et.mount({id:"n-global",head:!0,anchorMetaName:Pe,ssr:u,parent:_?.styleMountTarget})};u?h():Qe(h)}function z(s,t=1){let d=Fe,u=!1;return typeof s=="function"&&(u=!0,w(),d=ce,s=s()),ze(s)?u?ce(Ie(s)):Ie(s):Array.isArray(s)?u?y(G,null,s.map(_=>z(()=>_)),-2):e(G,null,s.slice()):s==null||typeof s=="boolean"?d(We):d(tt,null,String(s),t)}function Ie(s){return s.el===null&&s.patchFlag!==-1||s.memo?s:nt(s)}const Tt=s=>typeof s=="function"||Object.prototype.toString.call(s)==="[object Object]"&&!ze(s)?s:{default:it(()=>[z(()=>s)])},C=s=>st(s)||null;function j(s){return typeof s=="string"?s.endsWith("px")?Number(s.slice(0,s.length-2)):Number(s):s}function Se(s){if(s!=null)return typeof s=="number"?`${s}px`:s.endsWith("px")?s:`${s}px`}function Ut(s,t,d,u){d||ot("useThemeClass","cssVarsRef is not passed");const _=ge(Me,null),h=_?.mergedThemeHashRef,x=_?.styleMountTarget,B=V(""),a=Xe();let k;const $=`__${s}`,R=()=>{let m=$;const T=t?t.value:void 0,N=h?.value;N&&(m+=`-${N}`),T&&(m+=`-${T}`);const{themeOverrides:E,builtinThemeOverrides:q}=u;E&&(m+=`-${Ae(JSON.stringify(E))}`),q&&(m+=`-${Ae(JSON.stringify(q))}`),B.value=m,k=()=>{const te=d.value;let se="";for(const ne in te)se+=`${ne}: ${te[ne]};`;K(`.${m}`,se).mount({id:m,ssr:a,parent:x}),k=void 0}};return at(()=>{R()}),{themeClass:B,onRender:()=>{k?.()}}}function Rt(s,t){return lt(s,d=>{d!==void 0&&(t.value=d)}),F(()=>s.value===void 0?t.value:s.value)}function Mt(){const s=V(!1);return Ye(()=>{s.value=!0}),rt(s)}function he(s,...t){if(Array.isArray(s))s.forEach(d=>he(d,...t));else return s(...t)}function Ne(s){return s.some(t=>ze(t)?!(t.type===We||t.type===G&&!Ne(t.children)):!0)?s:null}function ee(s,t){return t(s&&Ne(s())||null)}function Ce(s){return!(s&&Ne(s()))}const Le=ct("n-form-item");function zt(s,{defaultSize:t="medium",mergedSize:d,mergedDisabled:u}={}){const _=ge(Le,null);ut(Le,null);const h=F(d?()=>d(_):()=>{const{size:a}=s;if(a)return a;if(_){const{mergedSize:k}=_;if(k.value!==void 0)return k.value}return t}),x=F(u?()=>u(_):()=>{const{disabled:a}=s;return a!==void 0?a:_?_.disabled.value:!1}),B=F(()=>{const{status:a}=s;return a||_?.mergedValidationStatus.value});return dt(()=>{_&&_.restoreValidation()}),{mergedSizeRef:h,mergedDisabledRef:x,mergedStatusRef:B,nTriggerFormBlur(){_&&_.handleContentBlur()},nTriggerFormChange(){_&&_.handleContentChange()},nTriggerFormFocus(){_&&_.handleContentFocus()},nTriggerFormInput(){_&&_.handleContentInput()}}}var Je=ve({name:"BaseIconSwitchTransition",setup(s,{slots:t}){const d=Mt();return()=>(w(),ce(_t,{name:"icon-switch-transition",appear:d.value},Tt(t),1032,["appear"]))}});const{cubicBezierEaseInOut:Ft}=mt;function pe({originalTransform:s="",left:t=0,top:d=0,transition:u=`all .3s ${Ft} !important`}={}){return[K("&.icon-switch-transition-enter-from, &.icon-switch-transition-leave-to",{transform:`${s} scale(0.75)`,left:t,top:d,opacity:0}),K("&.icon-switch-transition-enter-to, &.icon-switch-transition-leave-from",{transform:`scale(1) ${s}`,left:t,top:d,opacity:1}),K("&.icon-switch-transition-enter-active, &.icon-switch-transition-leave-active",{transformOrigin:"center",position:"absolute",left:t,top:d,transition:u})]}var Nt=K([K("@keyframes rotator",` +import{a0 as ge,h as F,a1 as Ze,a2 as Me,a3 as Xe,a4 as Qe,a5 as Pe,a6 as et,o as w,a7 as ze,z as ce,c as y,F as G,b as e,a8 as We,a9 as tt,e as st,aa as nt,G as Fe,A as it,ab as ot,ac as at,j as V,ad as Ae,ae as K,J as lt,I as Ye,af as rt,P as dt,ag as ct,ah as ut,d as ve,ai as _t,aj as mt,ak as Ue,al as b,n as Re,am as Ge,an as ft,ao as ht,ap as pt,aq as I,ar as Ee,as as qe,at as Q,au as gt,u as vt,i as bt,a as wt,t as l,f as o,q as M,w as He,C as f,D as v,g as L,Z as _e,s as Oe,R as ke,S as p,H as re,B as yt,_ as xt}from"./index-BKnWAKao.js";import{f as kt,g as St,h as De,i as Ct}from"./admin-KnbIpHLF.js";import{u as Bt}from"./auth-Cp2GGuZy.js";function Vt(s={},t={defaultBordered:!0}){const d=ge(Me,null);return{inlineThemeDisabled:d?.inlineThemeDisabled,mergedRtlRef:d?.mergedRtlRef,mergedComponentPropsRef:d?.mergedComponentPropsRef,mergedBreakpointsRef:d?.mergedBreakpointsRef,mergedBorderedRef:F(()=>{const{bordered:u}=s;return u!==void 0?u:d?.mergedBorderedRef.value??t.defaultBordered??!0}),mergedClsPrefixRef:d?d.mergedClsPrefixRef:Ze("n"),namespaceRef:F(()=>d?.mergedNamespaceRef.value)}}function $t(s,t,d){if(!t)return;const u=Xe(),_=ge(Me,null),h=()=>{const x=d.value;t.mount({id:x===void 0?s:x+s,head:!0,anchorMetaName:Pe,props:{bPrefix:x?`.${x}-`:void 0},ssr:u,parent:_?.styleMountTarget}),_?.preflightStyleDisabled||et.mount({id:"n-global",head:!0,anchorMetaName:Pe,ssr:u,parent:_?.styleMountTarget})};u?h():Qe(h)}function z(s,t=1){let d=Fe,u=!1;return typeof s=="function"&&(u=!0,w(),d=ce,s=s()),ze(s)?u?ce(Ie(s)):Ie(s):Array.isArray(s)?u?y(G,null,s.map(_=>z(()=>_)),-2):e(G,null,s.slice()):s==null||typeof s=="boolean"?d(We):d(tt,null,String(s),t)}function Ie(s){return s.el===null&&s.patchFlag!==-1||s.memo?s:nt(s)}const Tt=s=>typeof s=="function"||Object.prototype.toString.call(s)==="[object Object]"&&!ze(s)?s:{default:it(()=>[z(()=>s)])},C=s=>st(s)||null;function j(s){return typeof s=="string"?s.endsWith("px")?Number(s.slice(0,s.length-2)):Number(s):s}function Se(s){if(s!=null)return typeof s=="number"?`${s}px`:s.endsWith("px")?s:`${s}px`}function Ut(s,t,d,u){d||ot("useThemeClass","cssVarsRef is not passed");const _=ge(Me,null),h=_?.mergedThemeHashRef,x=_?.styleMountTarget,B=V(""),a=Xe();let k;const $=`__${s}`,R=()=>{let m=$;const T=t?t.value:void 0,N=h?.value;N&&(m+=`-${N}`),T&&(m+=`-${T}`);const{themeOverrides:E,builtinThemeOverrides:q}=u;E&&(m+=`-${Ae(JSON.stringify(E))}`),q&&(m+=`-${Ae(JSON.stringify(q))}`),B.value=m,k=()=>{const te=d.value;let se="";for(const ne in te)se+=`${ne}: ${te[ne]};`;K(`.${m}`,se).mount({id:m,ssr:a,parent:x}),k=void 0}};return at(()=>{R()}),{themeClass:B,onRender:()=>{k?.()}}}function Rt(s,t){return lt(s,d=>{d!==void 0&&(t.value=d)}),F(()=>s.value===void 0?t.value:s.value)}function Mt(){const s=V(!1);return Ye(()=>{s.value=!0}),rt(s)}function he(s,...t){if(Array.isArray(s))s.forEach(d=>he(d,...t));else return s(...t)}function Ne(s){return s.some(t=>ze(t)?!(t.type===We||t.type===G&&!Ne(t.children)):!0)?s:null}function ee(s,t){return t(s&&Ne(s())||null)}function Ce(s){return!(s&&Ne(s()))}const Le=ct("n-form-item");function zt(s,{defaultSize:t="medium",mergedSize:d,mergedDisabled:u}={}){const _=ge(Le,null);ut(Le,null);const h=F(d?()=>d(_):()=>{const{size:a}=s;if(a)return a;if(_){const{mergedSize:k}=_;if(k.value!==void 0)return k.value}return t}),x=F(u?()=>u(_):()=>{const{disabled:a}=s;return a!==void 0?a:_?_.disabled.value:!1}),B=F(()=>{const{status:a}=s;return a||_?.mergedValidationStatus.value});return dt(()=>{_&&_.restoreValidation()}),{mergedSizeRef:h,mergedDisabledRef:x,mergedStatusRef:B,nTriggerFormBlur(){_&&_.handleContentBlur()},nTriggerFormChange(){_&&_.handleContentChange()},nTriggerFormFocus(){_&&_.handleContentFocus()},nTriggerFormInput(){_&&_.handleContentInput()}}}var Je=ve({name:"BaseIconSwitchTransition",setup(s,{slots:t}){const d=Mt();return()=>(w(),ce(_t,{name:"icon-switch-transition",appear:d.value},Tt(t),1032,["appear"]))}});const{cubicBezierEaseInOut:Ft}=mt;function pe({originalTransform:s="",left:t=0,top:d=0,transition:u=`all .3s ${Ft} !important`}={}){return[K("&.icon-switch-transition-enter-from, &.icon-switch-transition-leave-to",{transform:`${s} scale(0.75)`,left:t,top:d,opacity:0}),K("&.icon-switch-transition-enter-to, &.icon-switch-transition-leave-from",{transform:`scale(1) ${s}`,left:t,top:d,opacity:1}),K("&.icon-switch-transition-enter-active, &.icon-switch-transition-leave-active",{transformOrigin:"center",position:"absolute",left:t,top:d,transition:u})]}var Nt=K([K("@keyframes rotator",` 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); diff --git a/server/web/dist/assets/SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js b/server/web/dist/assets/SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js similarity index 96% rename from server/web/dist/assets/SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js rename to server/web/dist/assets/SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js index 9d89fcf..8d559d6 100644 --- a/server/web/dist/assets/SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js +++ b/server/web/dist/assets/SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js @@ -1 +1 @@ -import{d as z,u as E,a as x,c as i,G as B,f as t,A as m,b as a,F as _,r as v,az as S,t as r,h as d,aA as p,aB as T,O as A,o,z as M,q as V,e as b,aC as w}from"./index-DYsKpclu.js";const D={class:"site-nav"},F=["src"],I={class:"brand-name"},O=["aria-label"],R={class:"nav-controls"},U=["aria-label"],q=["aria-checked","title","onClick"],G={class:"nav-control-icon","aria-hidden":"true"},H=["title"],K=z({__name:"SiteNav",setup($){const{t:s}=E(),c=x(),{mode:u,setMode:k}=w(),g=d(()=>[{to:"/",label:s("nav.home"),match:n=>n==="/"}]);function y(n){return n.match(location.pathname)}const C={light:"☀️",dark:"🌙",system:"💻"},f=d(()=>({light:s("theme.light"),dark:s("theme.dark"),system:s("theme.system")})),L=d(()=>p()==="zh-CN"?"中文":"English");function N(){const n=p()==="zh-CN"?"en-US":"zh-CN";T(n)}return(n,l)=>{const h=A("RouterLink");return o(),i("header",D,[B(h,{class:"brand",to:"/",title:t(s)("nav.homeTitle",{name:t(c).displayName})},{default:m(()=>[a("img",{src:t(c).displayLogoUrl,alt:"Logo",onError:l[0]||(l[0]=e=>e.target.style.visibility="hidden")},null,40,F),a("span",I,r(t(c).displayName),1)]),_:1},8,["title"]),a("nav",{class:"nav-links","aria-label":t(s)("nav.mainNav")},[(o(!0),i(_,null,v(g.value,e=>(o(),M(h,{key:e.to,to:e.to,class:b({"router-link-active":y(e)})},{default:m(()=>[V(r(e.label),1)]),_:2},1032,["to","class"]))),128))],8,O),a("div",R,[a("div",{class:"theme-seg",role:"radiogroup","aria-label":t(s)("theme.label")},[(o(!0),i(_,null,v(t(S),e=>(o(),i("button",{key:e,type:"button",role:"radio","aria-checked":t(u)===e,class:b({active:t(u)===e}),title:f.value[e],onClick:j=>t(k)(e)},[a("span",G,r(C[e]),1)],10,q))),128))],8,U),a("button",{class:"nav-control",type:"button",title:t(s)("lang.label"),onClick:N},[l[1]||(l[1]=a("span",{class:"nav-control-icon","aria-hidden":"true"},"🌐",-1)),a("span",null,r(L.value),1)],8,H)])])}}});export{K as _}; +import{d as z,u as E,a as x,c as i,G as B,f as t,A as m,b as a,F as _,r as v,az as S,t as r,h as d,aA as p,aB as T,O as A,o,z as M,q as V,e as b,aC as w}from"./index-BKnWAKao.js";const D={class:"site-nav"},F=["src"],I={class:"brand-name"},O=["aria-label"],R={class:"nav-controls"},U=["aria-label"],q=["aria-checked","title","onClick"],G={class:"nav-control-icon","aria-hidden":"true"},H=["title"],K=z({__name:"SiteNav",setup($){const{t:s}=E(),c=x(),{mode:u,setMode:k}=w(),g=d(()=>[{to:"/",label:s("nav.home"),match:n=>n==="/"}]);function y(n){return n.match(location.pathname)}const C={light:"☀️",dark:"🌙",system:"💻"},f=d(()=>({light:s("theme.light"),dark:s("theme.dark"),system:s("theme.system")})),L=d(()=>p()==="zh-CN"?"中文":"English");function N(){const n=p()==="zh-CN"?"en-US":"zh-CN";T(n)}return(n,l)=>{const h=A("RouterLink");return o(),i("header",D,[B(h,{class:"brand",to:"/",title:t(s)("nav.homeTitle",{name:t(c).displayName})},{default:m(()=>[a("img",{src:t(c).displayLogoUrl,alt:"Logo",onError:l[0]||(l[0]=e=>e.target.style.visibility="hidden")},null,40,F),a("span",I,r(t(c).displayName),1)]),_:1},8,["title"]),a("nav",{class:"nav-links","aria-label":t(s)("nav.mainNav")},[(o(!0),i(_,null,v(g.value,e=>(o(),M(h,{key:e.to,to:e.to,class:b({"router-link-active":y(e)})},{default:m(()=>[V(r(e.label),1)]),_:2},1032,["to","class"]))),128))],8,O),a("div",R,[a("div",{class:"theme-seg",role:"radiogroup","aria-label":t(s)("theme.label")},[(o(!0),i(_,null,v(t(S),e=>(o(),i("button",{key:e,type:"button",role:"radio","aria-checked":t(u)===e,class:b({active:t(u)===e}),title:f.value[e],onClick:j=>t(k)(e)},[a("span",G,r(C[e]),1)],10,q))),128))],8,U),a("button",{class:"nav-control",type:"button",title:t(s)("lang.label"),onClick:N},[l[1]||(l[1]=a("span",{class:"nav-control-icon","aria-hidden":"true"},"🌐",-1)),a("span",null,r(L.value),1)],8,H)])])}}});export{K as _}; diff --git a/server/web/dist/assets/admin-DEOkRyTC.js b/server/web/dist/assets/admin-KnbIpHLF.js similarity index 97% rename from server/web/dist/assets/admin-DEOkRyTC.js rename to server/web/dist/assets/admin-KnbIpHLF.js index e461064..57e6727 100644 --- a/server/web/dist/assets/admin-DEOkRyTC.js +++ b/server/web/dist/assets/admin-KnbIpHLF.js @@ -1 +1 @@ -import{v as n,S as e,x as s}from"./index-DYsKpclu.js";function u(t){return n(s.adminLogin,{method:"POST",json:{password:t}})}function m(){return n(s.adminVerify)}async function l(){await n(s.adminLogout,{method:"POST"})}async function g(t){const a=await n(s.adminFileList,{query:{page:t.page,size:t.size,keyword:t.keyword||void 0}}),o=e(a,["data","list","items","files"])??[],d=Number(e(a,["total","count"])??o.length);return{page:Number(e(a,["page"])??t.page),size:Number(e(a,["size"])??t.size),total:d,data:o.map(i=>({id:Number(e(i,["id"])??0),code:String(e(i,["code"])??""),name:String(e(i,["name"])??`${e(i,["prefix"])??""}${e(i,["suffix"])??""}`),suffix:String(e(i,["suffix"])??""),size:Number(e(i,["size"])??0),isText:!!(e(i,["isText","is_text"])??!1),expiredAt:e(i,["expiredAt","expired_at","expires_at"])??null,expiredCount:e(i,["expiredCount","expired_count"])??null,usedCount:Number(e(i,["usedCount","used_count"])??0),createdAt:e(i,["createdAt","created_at"])??null,isExpired:!!(e(i,["isExpired","is_expired"])??!1)}))}}async function p(t){await n(s.adminFileDelete,{method:"DELETE",json:{id:t}})}async function f(t){await n(s.adminFileBatchDelete,{method:"POST",json:{ids:t}})}async function y(t){await n(s.adminFileUpdate,{method:"PATCH",json:t})}async function w(){const t=await n(s.adminConfigGet);if(t&&typeof t=="object"&&!Array.isArray(t)){const a=t;return e(a,["config","data","settings"])??a}return{}}async function S(t){await n(s.adminConfigUpdate,{method:"PATCH",json:t})}async function _(t){const a=await n(s.adminStorageSwitch,{method:"POST",json:{engine:t}});return String(a?.engine??t)}async function x(t,a){await n(s.adminPasswordUpdate,{method:"PATCH",json:{old_password:t,new_password:a}})}async function b(t){const a=await n(s.adminAuditList,{query:{page:t.page,size:t.size,action:t.action||void 0,result:t.result||void 0,ip:t.ip||void 0,start_time:t.startTime||void 0,end_time:t.endTime||void 0}}),o=e(a,["data","list","items","logs"])??[],d=Number(e(a,["total","count"])??o.length);return{page:Number(e(a,["page"])??t.page),size:Number(e(a,["size"])??t.size),total:d,data:o.map((i,r)=>({id:Number(e(i,["id"])??r+1),action:String(e(i,["action"])??""),result:String(e(i,["result"])??""),fileCode:String(e(i,["file_code","fileCode","code"])??""),fileName:String(e(i,["file_name","fileName","name"])??""),sizeBytes:e(i,["size_bytes","sizeBytes","size"])??null,transferredBytes:e(i,["transferred_bytes","transferredBytes","bytes"])??null,ip:String(e(i,["ip","client_ip","clientIp"])??""),userAgent:String(e(i,["user_agent","userAgent"])??""),deviceOs:String(e(i,["device_os","deviceOs","os"])??""),deviceBrowser:String(e(i,["device_browser","deviceBrowser","browser"])??""),deviceType:String(e(i,["device_type","deviceType"])??""),actor:String(e(i,["actor"])??""),errorMsg:String(e(i,["error_msg","errorMsg","error"])??""),durationMs:e(i,["duration_ms","durationMs","duration"])??null,createdAt:e(i,["created_at","createdAt","time"])??null}))}}export{g as a,f as b,p as c,y as d,b as e,w as f,_ as g,S as h,x as i,l as j,m as k,u as l}; +import{v as n,S as e,x as s}from"./index-BKnWAKao.js";function u(t){return n(s.adminLogin,{method:"POST",json:{password:t}})}function m(){return n(s.adminVerify)}async function l(){await n(s.adminLogout,{method:"POST"})}async function g(t){const a=await n(s.adminFileList,{query:{page:t.page,size:t.size,keyword:t.keyword||void 0}}),o=e(a,["data","list","items","files"])??[],d=Number(e(a,["total","count"])??o.length);return{page:Number(e(a,["page"])??t.page),size:Number(e(a,["size"])??t.size),total:d,data:o.map(i=>({id:Number(e(i,["id"])??0),code:String(e(i,["code"])??""),name:String(e(i,["name"])??`${e(i,["prefix"])??""}${e(i,["suffix"])??""}`),suffix:String(e(i,["suffix"])??""),size:Number(e(i,["size"])??0),isText:!!(e(i,["isText","is_text"])??!1),expiredAt:e(i,["expiredAt","expired_at","expires_at"])??null,expiredCount:e(i,["expiredCount","expired_count"])??null,usedCount:Number(e(i,["usedCount","used_count"])??0),createdAt:e(i,["createdAt","created_at"])??null,isExpired:!!(e(i,["isExpired","is_expired"])??!1)}))}}async function p(t){await n(s.adminFileDelete,{method:"DELETE",json:{id:t}})}async function f(t){await n(s.adminFileBatchDelete,{method:"POST",json:{ids:t}})}async function y(t){await n(s.adminFileUpdate,{method:"PATCH",json:t})}async function w(){const t=await n(s.adminConfigGet);if(t&&typeof t=="object"&&!Array.isArray(t)){const a=t;return e(a,["config","data","settings"])??a}return{}}async function S(t){await n(s.adminConfigUpdate,{method:"PATCH",json:t})}async function _(t){const a=await n(s.adminStorageSwitch,{method:"POST",json:{engine:t}});return String(a?.engine??t)}async function x(t,a){await n(s.adminPasswordUpdate,{method:"PATCH",json:{old_password:t,new_password:a}})}async function b(t){const a=await n(s.adminAuditList,{query:{page:t.page,size:t.size,action:t.action||void 0,result:t.result||void 0,ip:t.ip||void 0,start_time:t.startTime||void 0,end_time:t.endTime||void 0}}),o=e(a,["data","list","items","logs"])??[],d=Number(e(a,["total","count"])??o.length);return{page:Number(e(a,["page"])??t.page),size:Number(e(a,["size"])??t.size),total:d,data:o.map((i,r)=>({id:Number(e(i,["id"])??r+1),action:String(e(i,["action"])??""),result:String(e(i,["result"])??""),fileCode:String(e(i,["file_code","fileCode","code"])??""),fileName:String(e(i,["file_name","fileName","name"])??""),sizeBytes:e(i,["size_bytes","sizeBytes","size"])??null,transferredBytes:e(i,["transferred_bytes","transferredBytes","bytes"])??null,ip:String(e(i,["ip","client_ip","clientIp"])??""),userAgent:String(e(i,["user_agent","userAgent"])??""),deviceOs:String(e(i,["device_os","deviceOs","os"])??""),deviceBrowser:String(e(i,["device_browser","deviceBrowser","browser"])??""),deviceType:String(e(i,["device_type","deviceType"])??""),actor:String(e(i,["actor"])??""),errorMsg:String(e(i,["error_msg","errorMsg","error"])??""),durationMs:e(i,["duration_ms","durationMs","duration"])??null,createdAt:e(i,["created_at","createdAt","time"])??null}))}}export{g as a,f as b,p as c,y as d,b as e,w as f,_ as g,S as h,x as i,l as j,m as k,u as l}; diff --git a/server/web/dist/assets/auth-B7MDTgxJ.js b/server/web/dist/assets/auth-Cp2GGuZy.js similarity index 80% rename from server/web/dist/assets/auth-B7MDTgxJ.js rename to server/web/dist/assets/auth-Cp2GGuZy.js index 652cd8a..20c9c89 100644 --- a/server/web/dist/assets/auth-B7MDTgxJ.js +++ b/server/web/dist/assets/auth-Cp2GGuZy.js @@ -1 +1 @@ -import{av as o,aw as a,W as r}from"./index-DYsKpclu.js";import{j as n,k as i,l as c}from"./admin-DEOkRyTC.js";const s="fcb_admin_flag",l=o("auth",{state:()=>({token:r(),checked:!1}),getters:{isAuthed:t=>!!t.token},actions:{async login(t){const e=(await c(t))?.token;if(!e)throw new Error("登录响应缺少 token");this.token=e,a(e);try{localStorage.setItem(s,"1")}catch{}this.checked=!0},async verify(){if(!this.token)return!1;try{return await i(),this.checked=!0,!0}catch{return this.reset(),!1}},async logout(){try{this.token&&await n()}catch{}this.reset()},reset(){this.token="",this.checked=!1,a("");try{localStorage.removeItem(s)}catch{}}}});export{l as u}; +import{av as o,aw as a,W as r}from"./index-BKnWAKao.js";import{j as n,k as i,l as c}from"./admin-KnbIpHLF.js";const s="fcb_admin_flag",l=o("auth",{state:()=>({token:r(),checked:!1}),getters:{isAuthed:t=>!!t.token},actions:{async login(t){const e=(await c(t))?.token;if(!e)throw new Error("登录响应缺少 token");this.token=e,a(e);try{localStorage.setItem(s,"1")}catch{}this.checked=!0},async verify(){if(!this.token)return!1;try{return await i(),this.checked=!0,!0}catch{return this.reset(),!1}},async logout(){try{this.token&&await n()}catch{}this.reset()},reset(){this.token="",this.checked=!1,a("");try{localStorage.removeItem(s)}catch{}}}});export{l as u}; diff --git a/server/web/dist/assets/docsSource-BXkkn0HE.js b/server/web/dist/assets/docsSource-Df5ur5C4.js similarity index 72% rename from server/web/dist/assets/docsSource-BXkkn0HE.js rename to server/web/dist/assets/docsSource-Df5ur5C4.js index e3ede68..54cb9a6 100644 --- a/server/web/dist/assets/docsSource-BXkkn0HE.js +++ b/server/web/dist/assets/docsSource-Df5ur5C4.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DYsKpclu.js","assets/index-CtyCxWf5.css"])))=>i.map(i=>d[i]); -import{ay as i}from"./index-DYsKpclu.js";const p='# API 概述\n\n文件快传 Go 版(v2.5.6)对外提供一套 REST API,覆盖文本/文件分享、分片上传、\n预签名直传、管理后台与审计日志查询。本文档与 `server/internal/api/` 实际实现逐一对齐,\n交互式规范见站内 `/openapi`(源文件 `docs/openapi.yaml`)。\n\n## Base URL\n\n- 服务默认监听 `:8466`,Base URL 为 `http://:8466`(下文示例统一用 `http://localhost:8466`)。\n- **业务路由挂根路径**(与参考实现一致):`/share/*`、`/chunk/*`、`/presign/*`、`/admin/*`、`/setup`。\n- 仅两个公共接口带 `/api/v1` 前缀:`/api/v1/health`、`/api/v1/config`。\n\n## 统一响应封装\n\n所有 JSON 接口返回统一结构,HTTP 状态码与 `code` 一致;失败时 `data` 缺省:\n\n```json\n{ "code": 200, "msg": "ok", "data": { } }\n```\n\n失败示例(404):\n\n```json\n{ "code": 404, "msg": "文件不存在" }\n```\n\n个别端点直接返回原始内容而非 JSON 封装(文档中已单独标注):\n\n| 端点 | 响应形式 |\n|---|---|\n| `GET /share/select?code=`(文本分享) | `text/plain; charset=utf-8` 正文 |\n| `GET /share/select?code=`(文件分享) | 文件二进制流(200/206,支持 Range) |\n| `GET /share/download?key=&code=`(文件分享) | 文件二进制流(200/206,支持 Range) |\n| `GET /admin/file/download?id=`(文件分享) | 文件二进制流 |\n| `GET /setup` / `POST /setup`(表单) | HTML 向导/成功页 |\n\n## 字段命名约定\n\n- 接口字段以 **snake_case** 为主(`file_code`、`size_bytes`)。\n- 文件列表与审计日志的行字段同时输出 **snake_case 与 camelCase 双份**(如 `expired_at` 与 `expiredAt`),文档以 snake_case 为准,camelCase 仅为前端兼容保留。\n\n## 认证\n\n- 游客接口无需认证;是否允许游客上传由配置 `openUpload` 控制(关闭时上传类接口要求管理员 `Authorization: Bearer `,否则 403)。\n- 管理接口(`/admin/login` 除外)一律要求 `Authorization: Bearer `,无效/缺失返回 401。\n- 详情见《认证与限流》。\n\n## 限流\n\n按 IP(可信代理场景解析 `X-Forwarded-For`)维度限流,超限返回 **423**:\n\n| 规则 | 计数时机 | 默认(次/窗口) | 相关配置 |\n|---|---|---|---|\n| `upload` | **上传成功**后计数 | 10 次 / 1 分钟 | `uploadCount` / `uploadMinute` |\n| `error` | 取件失败(404/过期)时计数 | 10 次 / 1 分钟 | `errorCount` / `errorMinute` |\n| `login` | 登录失败时计数 | 5 次 / 15 分钟 | `loginCount` / `loginMinute` |\n| `metadata` | 每次访问即计数 | 同 `error` | `errorCount` / `errorMinute` |\n\n## 初始化守卫\n\n系统未初始化(未设置管理员密码)时,除 `GET|POST /setup` 与 `GET /api/v1/health` 外,\n**所有接口一律返回 428**:\n\n```json\n{ "code": 428, "msg": "系统未初始化,请先完成初始化" }\n```\n\n首次部署请先访问 `GET /setup` 获取 HTML 向导,或直接 `POST /setup` 完成初始化(见《管理后台 API》初始化章节)。\n\n## 审计\n\n所有上传/下载端点经审计中间件自动落库(操作时间/IP/UA/设备解析/动作/结果/字节数/耗时/角色),\n失败与被拒绝的请求同样记录;管理端经 `GET /admin/audit/list` 查询,详见《审计日志》。\n\n## 端点总览\n\n| 模块 | 端点 |\n|---|---|\n| 公共 | `GET /api/v1/health` · `GET /api/v1/config` · `GET /robots.txt`(输出 `robotsText` 配置) |\n| 初始化 | `GET /setup` · `POST /setup` |\n| 文本分享 | `POST /share/text` |\n| 文件分享 | `POST /share/file` |\n| 查询与取件 | `GET/POST /share/metadata` · `GET /share/select` · `POST /share/select` · `GET /share/download` |\n| 分片上传 | `POST /chunk/upload/init` · `POST /chunk/upload/{uploadID}/{chunkIndex}` · `GET /chunk/upload/status/{uploadID}` · `POST /chunk/upload/complete/{uploadID}` · `DELETE /chunk/upload/{uploadID}` |\n| 预签名直传 | `POST /presign/upload/init` · `PUT /presign/upload/proxy/{uploadID}` · `POST /presign/upload/confirm/{uploadID}` · `GET /presign/upload/status/{uploadID}` · `DELETE /presign/upload/{uploadID}` |\n| 管理后台 | `POST /admin/login` · `GET /admin/verify` · `POST /admin/logout` · `GET /admin/dashboard` · 文件管理 `/admin/file/*` · 配置 `/admin/config/*` · 密码 `/admin/settings/password` |\n| 审计日志 | `GET /admin/audit/list`(别名 `/admin/audit/logs`) |\n\n## 时间与编码\n\n- 时间字段一律 RFC 3339(如 `2025-06-01T12:00:00+08:00`);管理员会话过期时间为 Unix 秒。\n- 请求体支持 `application/json` 与 `application/x-www-form-urlencoded`(上传类为 `multipart/form-data`),文档示例以 JSON/curl 为主。\n- CORS:公开接口放开(Bearer 认证,无 Cookie CSRF 面);**管理端 `/admin/*` 已收紧**——携带 Origin 且既不同源也不在 `site_domain` 白名单时不下发 CORS 头(浏览器拦截跨域读取)。\n\n## 交互式文档\n\n- 站内文档页:`/docs`(渲染本目录 markdown,构建时内嵌)。\n- Swagger UI:`/openapi`(渲染 `docs/openapi.yaml`,构建时内嵌)。\n- OpenAPI 规范源文件为仓库内 `docs/openapi.yaml`;如需经后端直接下载,\n 需在部署时把它拷贝进前端静态产物 `web/dist/`(未拷贝时该路径按 SPA 回退返回页面)。\n',d='# 认证与限流\n\n## 角色\n\n| 角色 | 能力 |\n|---|---|\n| 游客(无 Authorization 头) | 取件、查询元信息;`openUpload=1` 时可上传 |\n| 管理员(`Authorization: Bearer `) | 全部能力 + `/admin/*` 管理接口 |\n\n## 管理员令牌\n\n- 由 `POST /admin/login` 用管理员密码换取,HS256 JWT,默认有效期 **7 天**(`adminSessionExpire`,1~365 整天,v2.5.6 起由 30 天缩短)。\n- 请求头格式:`Authorization: Bearer `。\n- **改密/重置管理员密码会轮换 `jwt_secret`,所有已签发令牌立即失效**(401)。\n- 密码存储为 bcrypt(cost 12);历史 `sha256$`/明文格式在登录成功后自动升级重哈希,无需手动迁移。\n- 游客上传关闭(`openUpload=0`)时,上传类接口也可用管理员 Bearer 令牌通过鉴权。\n\n## 认证失败语义\n\n| 场景 | 状态码 |\n|---|---|\n| `/admin/*` 缺失/无效令牌 | 401 |\n| `POST /admin/login` 密码错误 | 401(并计入 login 限流) |\n| 游客上传被关闭且未携带有效令牌 | 403 |\n| 代理下载 `key` 校验失败 | 403 |\n\n## 未初始化(428)\n\n管理员密码未设置(`admin_token` 为空)时,除 `GET|POST /setup` 与 `GET /api/v1/health` 外全部接口返回 428。\n完成 `POST /setup` 初始化后自动解除。\n\n## 限流规则\n\n限流按 **客户端 IP** 维度(配置 `FCB_TRUSTED_PROXIES` 声明可信代理 CIDR,命中时解析 `X-Forwarded-For` 取真实 IP),\n窗口计数原子化存储于缓存(未配置 Redis 时为进程内存)。**超限一律返回 423**:\n\n```json\n{ "code": 423, "msg": "请求次数过多,请稍后再试" }\n```\n\n| 规则 | 生效端点 | 计数时机 | 默认 | 配置键 |\n|---|---|---|---|---|\n| `upload` | `/share/text`、`/share/file`、`/chunk/upload/*`、`/presign/upload/*` | **成功后**计数(进入时仅检查) | 10 次 / 1 分钟 | `uploadCount`、`uploadMinute` |\n| `error` | `/share/select`、`/share/download` | 取件失败(不存在/过期/鉴权失败)时计数 | 10 次 / 1 分钟 | `errorCount`、`errorMinute` |\n| `login` | `/admin/login` | 登录失败时计数 | 5 次 / 15 分钟 | `loginCount`、`loginMinute` |\n| `metadata` | `/share/metadata` | **每次访问即计数**(含失败) | 同 `error` | `errorCount`、`errorMinute` |\n\n- 规则值可由管理端 `PATCH /admin/config/update` 运行时修改,立即生效(无需重启)。\n- 取件成功(`/share/select`、`/share/download`)不计入 `error` 限流。\n\n## 代理下载令牌(key)\n\n`GET /share/download` 的 `key` 由服务端按窗口生成:\n`sha256(code + timeFactor + "000" + jwt_secret)`,`timeFactor = unix秒 / 1000`(约 16.7 分钟一个窗口)。\n服务端**同时接受当前与上一窗口**的令牌,避免窗口边界竞态。令牌通过 `POST /share/select` 的响应\n`download_url` 下发,客户端不应自行构造。\n\n## 示例\n\n登录获取令牌:\n\n```bash\ncurl -s http://localhost:8466/admin/login \\\n -H \'Content-Type: application/json\' \\\n -d \'{"password":"your-admin-password"}\'\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "id": "admin", "username": "admin",\n "token": "eyJhbGciOiJIUzI1NiIs...",\n "token_type": "Bearer",\n "expires_at": 1750000000,\n "expires_in": 604800\n }\n}\n```\n\n携带令牌调用管理接口:\n\n```bash\nTOKEN="eyJhbGciOiJIUzI1NiIs..."\ncurl -s http://localhost:8466/admin/dashboard -H "Authorization: Bearer $TOKEN"\n```\n\n校验令牌是否有效:\n\n```bash\ncurl -s http://localhost:8466/admin/verify -H "Authorization: Bearer $TOKEN"\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": { "id": "admin", "username": "admin", "token": "eyJhbGciOiJIUzI1NiIs...", "token_type": "Bearer", "expires_at": 1750000000 }\n}\n```\n\n令牌失效时:\n\n```json\n{ "code": 401, "msg": "令牌无效或已过期" }\n```\n',c='# 文本分享\n\n创建纯文本分享,返回取件码。文本大小上限 **222KB**(超限建议改用文件分享);请求体全局上限 1MiB,`Content-Length` >441KB 时读前直接 403。\n经审计中间件落库(action=upload)。\n\n## POST /share/text\n\n**请求参数**(`application/x-www-form-urlencoded`,亦支持 multipart;`text` 为必需):\n\n| 参数 | 类型 | 必需 | 默认 | 说明 |\n|---|---|---|---|---|\n| `code` | string,可选;自定义提取码,5-8 位字母或数字(空=随机生成;占用 400「该提取码已被占用」) |\n| `text` | string | ✅ | - | 文本内容(≤222KB,按 UTF-8 字节数) |\n| `expire_value` | int | ❌ | `1` | 过期值(配合 `expire_style`) |\n| `expire_style` | string | ❌ | `day` | `day`/`hour`/`minute`/`count`/`forever`(须在站点允许列表内) |\n\n过期语义:\n\n- `day`/`hour`/`minute`:按时间过期,`expired_count = -1`。\n- `count`:按次数过期,取件 `expire_value` 次后失效(`expired_count = expire_value`);\n **v2 需求 ④**:`max_save_count>0` 时 `expire_value` 不得超出该上限,超限 403。\n- `forever`:永久(需站点允许;`max_save_seconds>0` 时其他方式受最长保存上限约束,超限 403)。\n\n> 可选值与上限来自公开配置 `GET /api/v1/config`(`expireStyle`、`max_save_seconds`、\n> `max_save_count`),上传页动态读取并在范围内选择;管理端改策略后立即生效。\n\n**curl 示例**:\n\n```bash\n# 自定义提取码(可选):-d \'code=MYCODE1\'\ncurl -s -X POST http://localhost:8466/share/text \\\n -d \'text=你好,文件快传\' \\\n -d \'expire_value=1\' \\\n -d \'expire_style=day\'\n```\n\n**成功响应**(200):\n\n```json\n{ "code": 200, "msg": "ok", "data": { "code": "8XQ2M" } }\n```\n\n`data.code` 为 5 位取件码(数字或大写字母+数字,取决于 `code_generate_type`)。\n\n**错误响应**:\n\n```json\n{ "code": 400, "msg": "过期时间类型错误" }\n```\n\n```json\n{ "code": 400, "msg": "过期时间值必须大于 0" }\n```\n\n```json\n{ "code": 403, "msg": "内容过多,建议采用文件形式" }\n```\n\n```json\n{ "code": 403, "msg": "限制最长时间为 7天,可换用其他方式" }\n```\n\n```json\n{ "code": 403, "msg": "限制次数最多为 5 次" }\n```\n\n```json\n{ "code": 423, "msg": "请求次数过多,请稍后再试" }\n```\n\n> 游客上传关闭(`openUpload=0`)时需携带管理员令牌,否则 403:\n> `{"code":403,"msg":"本站未开启游客上传,如需上传请先登录后台"}`\n\n## 取回文本\n\n文本分享的取回走统一的取件接口(消耗次数):\n\n- `GET /share/select?code=` → `text/plain` 正文即文本内容(响应头 `Content-Disposition` 带文件名,无扩展名时为 `.txt`)。\n- `POST /share/select`(`{"code":"8XQ2M"}`)→ JSON,`data.text` / `data.content` 为文本内容。\n\n示例:\n\n```bash\ncurl -s "http://localhost:8466/share/select?code=8XQ2M"\n```\n\n```text\n你好,文件快传\n```\n\n**v3.1 变更**:① 支持 JSON 提交(`Content-Type: application/json`,字段同名);② 空文本 400「分享内容不能为空」;③ 可选 `code` 自定义提取码(5-8 位字母数字,占用 400)。\n',l='# 文件分享\n\n上传单个文件并创建分享。支持扩展名/MIME 白名单 + **magic bytes 防伪**(读文件前 64 字节校验,\n伪造类型返回 403)。经审计中间件落库(action=upload,记录文件总大小与实际传输字节)。\n\n## POST /share/file\n\n**请求参数**(`multipart/form-data`):\n\n| 参数 | 类型 | 必需 | 默认 | 说明 |\n|---|---|---|---|---|\n| `code` | string,可选;自定义提取码,5-8 位字母或数字(空=随机生成;占用 400) |\n| `file` | file | ✅ | - | 上传的文件(大小 ≤ 生效上限:`max_file_size>0` 时为其,否则 `uploadSize`) |\n| `expire_value` | int | ❌ | `1` | 过期值(配合 `expire_style`;`count` 型受 `max_save_count` 约束) |\n| `expire_style` | string | ❌ | `day` | `day`/`hour`/`minute`/`count`/`forever`(须在 `expireStyle` 白名单内) |\n\n**curl 示例**:\n\n```bash\ncurl -s -X POST http://localhost:8466/share/file \\\n -F \'file=@./report.pdf;type=application/pdf\' \\\n -F \'expire_value=7\' \\\n -F \'expire_style=day\'\n```\n\n**成功响应**(200):\n\n```json\n{ "code": 200, "msg": "ok", "data": { "code": "K3P9W", "name": "report.pdf" } }\n```\n\n**错误响应**:\n\n```json\n{ "code": 400, "msg": "缺少上传文件 file 字段" }\n```\n\n```json\n{ "code": 403, "msg": "大小超过限制,最大为10.00 MB" }\n```\n\n> 大小上限为动态策略(v2 需求 ④⑩):管理端改 `max_file_size`(0=回落 `uploadSize`)后\n> **下一次上传立即按新上限执行**,无需重启;上限值可经 `GET /api/v1/config` 的\n> `max_file_size`/`maxFileSize` 字段读取。\n\n```json\n{ "code": 403, "msg": "不允许上传该类型文件" }\n```\n\n```json\n{ "code": 403, "msg": "文件内容与扩展名不匹配,疑似伪造类型" }\n```\n\n```json\n{ "code": 403, "msg": "限制最长时间为 7天,可换用其他方式" }\n```\n\n```json\n{ "code": 403, "msg": "限制次数最多为 5 次" }\n```\n\n```json\n{ "code": 403, "msg": "请求次数过多,请稍后再试" }\n```\n\n```json\n{ "code": 507, "msg": "存储空间已达到管理员设置的容量上限" }\n```\n\n```json\n{ "code": 503, "msg": "存储服务不可用,请稍后再试" }\n```\n\n## 文件类型白名单\n\n由配置 `allowed_file_types` 控制(管理端可改):\n\n- `*`:不限制(默认)。\n- 扩展名规则:`.png`、`pdf`(自动补点)等,按文件名后缀匹配。\n- MIME 规则:`image/*`、`application/pdf` 等,按请求 `Content-Type` 通配匹配。\n\n已知类型(png/jpg/gif/webp/bmp/pdf/zip/rar/7z/gz/mp3/mp4/exe/elf)会做 **magic bytes 交叉校验**:\n扩展名或 Content-Type 声明了已知类型,但文件头不匹配时拒绝(403「疑似伪造类型」)。\n\n## 下载取件\n\n- `GET /share/select?code=`:消耗 1 次取件,返回文件流(`200` 全量 / `206` 区间,\n 支持 `Range` 请求头;响应含 `Accept-Ranges: bytes`、`Content-Disposition: attachment; filename*=UTF-8\'\'...`)。\n- `POST /share/select`:返回详情 JSON,`download_url` 为代理下载地址(见下)。\n- `GET /share/download?key=&code=`:代理下载,消耗 1 次,同样支持 Range。\n\nRange 示例(取前 1024 字节):\n\n```bash\ncurl -s -H \'Range: bytes=0-1023\' -o part.bin \\\n "http://localhost:8466/share/select?code=K3P9W"\n```\n\n区间越界返回:\n\n```json\n{ "code": 416, "msg": "请求范围超出文件大小" }\n```\n',m=`# 分享查询与取件 +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BKnWAKao.js","assets/index-CtyCxWf5.css"])))=>i.map(i=>d[i]); +import{ay as i}from"./index-BKnWAKao.js";const p='# API 概述\n\n文件快传 Go 版(26.9)对外提供一套 REST API,覆盖文本/文件分享、分片上传、\n预签名直传、管理后台与审计日志查询。本文档与 `server/internal/api/` 实际实现逐一对齐,\n交互式规范见站内 `/openapi`(源文件 `docs/openapi.yaml`)。\n\n## Base URL\n\n- 服务默认监听 `:8466`,Base URL 为 `http://:8466`(下文示例统一用 `http://localhost:8466`)。\n- **业务路由挂根路径**(与参考实现一致):`/share/*`、`/chunk/*`、`/presign/*`、`/admin/*`、`/setup`。\n- 仅两个公共接口带 `/api/v1` 前缀:`/api/v1/health`、`/api/v1/config`。\n\n## 统一响应封装\n\n所有 JSON 接口返回统一结构,HTTP 状态码与 `code` 一致;失败时 `data` 缺省:\n\n```json\n{ "code": 200, "msg": "ok", "data": { } }\n```\n\n失败示例(404):\n\n```json\n{ "code": 404, "msg": "文件不存在" }\n```\n\n个别端点直接返回原始内容而非 JSON 封装(文档中已单独标注):\n\n| 端点 | 响应形式 |\n|---|---|\n| `GET /share/select?code=`(文本分享) | `text/plain; charset=utf-8` 正文 |\n| `GET /share/select?code=`(文件分享) | 文件二进制流(200/206,支持 Range) |\n| `GET /share/download?key=&code=`(文件分享) | 文件二进制流(200/206,支持 Range) |\n| `GET /admin/file/download?id=`(文件分享) | 文件二进制流 |\n| `GET /setup` / `POST /setup`(表单) | HTML 向导/成功页 |\n\n## 字段命名约定\n\n- 接口字段以 **snake_case** 为主(`file_code`、`size_bytes`)。\n- 文件列表与审计日志的行字段同时输出 **snake_case 与 camelCase 双份**(如 `expired_at` 与 `expiredAt`),文档以 snake_case 为准,camelCase 仅为前端兼容保留。\n\n## 认证\n\n- 游客接口无需认证;是否允许游客上传由配置 `openUpload` 控制(关闭时上传类接口要求管理员 `Authorization: Bearer `,否则 403)。\n- 管理接口(`/admin/login` 除外)一律要求 `Authorization: Bearer `,无效/缺失返回 401。\n- 详情见《认证与限流》。\n\n## 限流\n\n按 IP(可信代理场景解析 `X-Forwarded-For`)维度限流,超限返回 **423**:\n\n| 规则 | 计数时机 | 默认(次/窗口) | 相关配置 |\n|---|---|---|---|\n| `upload` | **上传成功**后计数 | 10 次 / 1 分钟 | `uploadCount` / `uploadMinute` |\n| `error` | 取件失败(404/过期)时计数 | 10 次 / 1 分钟 | `errorCount` / `errorMinute` |\n| `login` | 登录失败时计数 | 5 次 / 15 分钟 | `loginCount` / `loginMinute` |\n| `metadata` | 每次访问即计数 | 同 `error` | `errorCount` / `errorMinute` |\n\n## 初始化守卫\n\n系统未初始化(未设置管理员密码)时,除 `GET|POST /setup` 与 `GET /api/v1/health` 外,\n**所有接口一律返回 428**:\n\n```json\n{ "code": 428, "msg": "系统未初始化,请先完成初始化" }\n```\n\n首次部署请先访问 `GET /setup` 获取 HTML 向导,或直接 `POST /setup` 完成初始化(见《管理后台 API》初始化章节)。\n\n## 审计\n\n所有上传/下载端点经审计中间件自动落库(操作时间/IP/UA/设备解析/动作/结果/字节数/耗时/角色),\n失败与被拒绝的请求同样记录;管理端经 `GET /admin/audit/list` 查询,详见《审计日志》。\n\n## 端点总览\n\n| 模块 | 端点 |\n|---|---|\n| 公共 | `GET /api/v1/health` · `GET /api/v1/config` · `GET /robots.txt`(输出 `robotsText` 配置) |\n| 初始化 | `GET /setup` · `POST /setup` |\n| 文本分享 | `POST /share/text` |\n| 文件分享 | `POST /share/file` |\n| 查询与取件 | `GET/POST /share/metadata` · `GET /share/select` · `POST /share/select` · `GET /share/download` |\n| 分片上传 | `POST /chunk/upload/init` · `POST /chunk/upload/{uploadID}/{chunkIndex}` · `GET /chunk/upload/status/{uploadID}` · `POST /chunk/upload/complete/{uploadID}` · `DELETE /chunk/upload/{uploadID}` |\n| 预签名直传 | `POST /presign/upload/init` · `PUT /presign/upload/proxy/{uploadID}` · `POST /presign/upload/confirm/{uploadID}` · `GET /presign/upload/status/{uploadID}` · `DELETE /presign/upload/{uploadID}` |\n| 管理后台 | `POST /admin/login` · `GET /admin/verify` · `POST /admin/logout` · `GET /admin/dashboard` · 文件管理 `/admin/file/*` · 配置 `/admin/config/*` · 密码 `/admin/settings/password` |\n| 审计日志 | `GET /admin/audit/list`(别名 `/admin/audit/logs`) |\n\n## 时间与编码\n\n- 时间字段一律 RFC 3339(如 `2025-06-01T12:00:00+08:00`);管理员会话过期时间为 Unix 秒。\n- 请求体支持 `application/json` 与 `application/x-www-form-urlencoded`(上传类为 `multipart/form-data`),文档示例以 JSON/curl 为主。\n- CORS:公开接口放开(Bearer 认证,无 Cookie CSRF 面);**管理端 `/admin/*` 已收紧**——携带 Origin 且既不同源也不在 `site_domain` 白名单时不下发 CORS 头(浏览器拦截跨域读取)。\n\n## 交互式文档\n\n- 站内文档页:`/docs`(渲染本目录 markdown,构建时内嵌)。\n- Swagger UI:`/openapi`(渲染 `docs/openapi.yaml`,构建时内嵌)。\n- OpenAPI 规范源文件为仓库内 `docs/openapi.yaml`;如需经后端直接下载,\n 需在部署时把它拷贝进前端静态产物 `web/dist/`(未拷贝时该路径按 SPA 回退返回页面)。\n',d='# 认证与限流\n\n## 角色\n\n| 角色 | 能力 |\n|---|---|\n| 游客(无 Authorization 头) | 取件、查询元信息;`openUpload=1` 时可上传 |\n| 管理员(`Authorization: Bearer `) | 全部能力 + `/admin/*` 管理接口 |\n\n## 管理员令牌\n\n- 由 `POST /admin/login` 用管理员密码换取,HS256 JWT,默认有效期 **7 天**(`adminSessionExpire`,1~365 整天,26.9 起由 30 天缩短)。\n- 请求头格式:`Authorization: Bearer `。\n- **改密/重置管理员密码会轮换 `jwt_secret`,所有已签发令牌立即失效**(401)。\n- 密码存储为 bcrypt(cost 12);历史 `sha256$`/明文格式在登录成功后自动升级重哈希,无需手动迁移。\n- 游客上传关闭(`openUpload=0`)时,上传类接口也可用管理员 Bearer 令牌通过鉴权。\n\n## 认证失败语义\n\n| 场景 | 状态码 |\n|---|---|\n| `/admin/*` 缺失/无效令牌 | 401 |\n| `POST /admin/login` 密码错误 | 401(并计入 login 限流) |\n| 游客上传被关闭且未携带有效令牌 | 403 |\n| 代理下载 `key` 校验失败 | 403 |\n\n## 未初始化(428)\n\n管理员密码未设置(`admin_token` 为空)时,除 `GET|POST /setup` 与 `GET /api/v1/health` 外全部接口返回 428。\n完成 `POST /setup` 初始化后自动解除。\n\n## 限流规则\n\n限流按 **客户端 IP** 维度(配置 `FCB_TRUSTED_PROXIES` 声明可信代理 CIDR,命中时解析 `X-Forwarded-For` 取真实 IP),\n窗口计数原子化存储于缓存(未配置 Redis 时为进程内存)。**超限一律返回 423**:\n\n```json\n{ "code": 423, "msg": "请求次数过多,请稍后再试" }\n```\n\n| 规则 | 生效端点 | 计数时机 | 默认 | 配置键 |\n|---|---|---|---|---|\n| `upload` | `/share/text`、`/share/file`、`/chunk/upload/*`、`/presign/upload/*` | **成功后**计数(进入时仅检查) | 10 次 / 1 分钟 | `uploadCount`、`uploadMinute` |\n| `error` | `/share/select`、`/share/download` | 取件失败(不存在/过期/鉴权失败)时计数 | 10 次 / 1 分钟 | `errorCount`、`errorMinute` |\n| `login` | `/admin/login` | 登录失败时计数 | 5 次 / 15 分钟 | `loginCount`、`loginMinute` |\n| `metadata` | `/share/metadata` | **每次访问即计数**(含失败) | 同 `error` | `errorCount`、`errorMinute` |\n\n- 规则值可由管理端 `PATCH /admin/config/update` 运行时修改,立即生效(无需重启)。\n- 取件成功(`/share/select`、`/share/download`)不计入 `error` 限流。\n\n## 代理下载令牌(key)\n\n`GET /share/download` 的 `key` 由服务端按窗口生成:\n`sha256(code + timeFactor + "000" + jwt_secret)`,`timeFactor = unix秒 / 1000`(约 16.7 分钟一个窗口)。\n服务端**同时接受当前与上一窗口**的令牌,避免窗口边界竞态。令牌通过 `POST /share/select` 的响应\n`download_url` 下发,客户端不应自行构造。\n\n## 示例\n\n登录获取令牌:\n\n```bash\ncurl -s http://localhost:8466/admin/login \\\n -H \'Content-Type: application/json\' \\\n -d \'{"password":"your-admin-password"}\'\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "id": "admin", "username": "admin",\n "token": "eyJhbGciOiJIUzI1NiIs...",\n "token_type": "Bearer",\n "expires_at": 1750000000,\n "expires_in": 604800\n }\n}\n```\n\n携带令牌调用管理接口:\n\n```bash\nTOKEN="eyJhbGciOiJIUzI1NiIs..."\ncurl -s http://localhost:8466/admin/dashboard -H "Authorization: Bearer $TOKEN"\n```\n\n校验令牌是否有效:\n\n```bash\ncurl -s http://localhost:8466/admin/verify -H "Authorization: Bearer $TOKEN"\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": { "id": "admin", "username": "admin", "token": "eyJhbGciOiJIUzI1NiIs...", "token_type": "Bearer", "expires_at": 1750000000 }\n}\n```\n\n令牌失效时:\n\n```json\n{ "code": 401, "msg": "令牌无效或已过期" }\n```\n',c='# 文本分享\n\n创建纯文本分享,返回取件码。文本大小上限 **222KB**(超限建议改用文件分享);请求体全局上限 1MiB,`Content-Length` >441KB 时读前直接 403。\n经审计中间件落库(action=upload)。\n\n## POST /share/text\n\n**请求参数**(`application/x-www-form-urlencoded`,亦支持 multipart;`text` 为必需):\n\n| 参数 | 类型 | 必需 | 默认 | 说明 |\n|---|---|---|---|---|\n| `code` | string,可选;自定义提取码,5-8 位字母或数字(空=随机生成;占用 400「该提取码已被占用」) |\n| `text` | string | ✅ | - | 文本内容(≤222KB,按 UTF-8 字节数) |\n| `expire_value` | int | ❌ | `1` | 过期值(配合 `expire_style`) |\n| `expire_style` | string | ❌ | `day` | `day`/`hour`/`minute`/`count`/`forever`(须在站点允许列表内) |\n\n过期语义:\n\n- `day`/`hour`/`minute`:按时间过期,`expired_count = -1`。\n- `count`:按次数过期,取件 `expire_value` 次后失效(`expired_count = expire_value`);\n **v2 需求 ④**:`max_save_count>0` 时 `expire_value` 不得超出该上限,超限 403。\n- `forever`:永久(需站点允许;`max_save_seconds>0` 时其他方式受最长保存上限约束,超限 403)。\n\n> 可选值与上限来自公开配置 `GET /api/v1/config`(`expireStyle`、`max_save_seconds`、\n> `max_save_count`),上传页动态读取并在范围内选择;管理端改策略后立即生效。\n\n**curl 示例**:\n\n```bash\n# 自定义提取码(可选):-d \'code=MYCODE1\'\ncurl -s -X POST http://localhost:8466/share/text \\\n -d \'text=你好,文件快传\' \\\n -d \'expire_value=1\' \\\n -d \'expire_style=day\'\n```\n\n**成功响应**(200):\n\n```json\n{ "code": 200, "msg": "ok", "data": { "code": "8XQ2M" } }\n```\n\n`data.code` 为 5 位取件码(数字或大写字母+数字,取决于 `code_generate_type`)。\n\n**错误响应**:\n\n```json\n{ "code": 400, "msg": "过期时间类型错误" }\n```\n\n```json\n{ "code": 400, "msg": "过期时间值必须大于 0" }\n```\n\n```json\n{ "code": 403, "msg": "内容过多,建议采用文件形式" }\n```\n\n```json\n{ "code": 403, "msg": "限制最长时间为 7天,可换用其他方式" }\n```\n\n```json\n{ "code": 403, "msg": "限制次数最多为 5 次" }\n```\n\n```json\n{ "code": 423, "msg": "请求次数过多,请稍后再试" }\n```\n\n> 游客上传关闭(`openUpload=0`)时需携带管理员令牌,否则 403:\n> `{"code":403,"msg":"本站未开启游客上传,如需上传请先登录后台"}`\n\n## 取回文本\n\n文本分享的取回走统一的取件接口(消耗次数):\n\n- `GET /share/select?code=` → `text/plain` 正文即文本内容(响应头 `Content-Disposition` 带文件名,无扩展名时为 `.txt`)。\n- `POST /share/select`(`{"code":"8XQ2M"}`)→ JSON,`data.text` / `data.content` 为文本内容。\n\n示例:\n\n```bash\ncurl -s "http://localhost:8466/share/select?code=8XQ2M"\n```\n\n```text\n你好,文件快传\n```\n\n**v3.1 变更**:① 支持 JSON 提交(`Content-Type: application/json`,字段同名);② 空文本 400「分享内容不能为空」;③ 可选 `code` 自定义提取码(5-8 位字母数字,占用 400)。\n',l='# 文件分享\n\n上传单个文件并创建分享。支持扩展名/MIME 白名单 + **magic bytes 防伪**(读文件前 64 字节校验,\n伪造类型返回 403)。经审计中间件落库(action=upload,记录文件总大小与实际传输字节)。\n\n## POST /share/file\n\n**请求参数**(`multipart/form-data`):\n\n| 参数 | 类型 | 必需 | 默认 | 说明 |\n|---|---|---|---|---|\n| `code` | string,可选;自定义提取码,5-8 位字母或数字(空=随机生成;占用 400) |\n| `file` | file | ✅ | - | 上传的文件(大小 ≤ 生效上限:`max_file_size>0` 时为其,否则 `uploadSize`) |\n| `expire_value` | int | ❌ | `1` | 过期值(配合 `expire_style`;`count` 型受 `max_save_count` 约束) |\n| `expire_style` | string | ❌ | `day` | `day`/`hour`/`minute`/`count`/`forever`(须在 `expireStyle` 白名单内) |\n\n**curl 示例**:\n\n```bash\ncurl -s -X POST http://localhost:8466/share/file \\\n -F \'file=@./report.pdf;type=application/pdf\' \\\n -F \'expire_value=7\' \\\n -F \'expire_style=day\'\n```\n\n**成功响应**(200):\n\n```json\n{ "code": 200, "msg": "ok", "data": { "code": "K3P9W", "name": "report.pdf" } }\n```\n\n**错误响应**:\n\n```json\n{ "code": 400, "msg": "缺少上传文件 file 字段" }\n```\n\n```json\n{ "code": 403, "msg": "大小超过限制,最大为10.00 MB" }\n```\n\n> 大小上限为动态策略(v2 需求 ④⑩):管理端改 `max_file_size`(0=回落 `uploadSize`)后\n> **下一次上传立即按新上限执行**,无需重启;上限值可经 `GET /api/v1/config` 的\n> `max_file_size`/`maxFileSize` 字段读取。\n\n```json\n{ "code": 403, "msg": "不允许上传该类型文件" }\n```\n\n```json\n{ "code": 403, "msg": "文件内容与扩展名不匹配,疑似伪造类型" }\n```\n\n```json\n{ "code": 403, "msg": "限制最长时间为 7天,可换用其他方式" }\n```\n\n```json\n{ "code": 403, "msg": "限制次数最多为 5 次" }\n```\n\n```json\n{ "code": 403, "msg": "请求次数过多,请稍后再试" }\n```\n\n```json\n{ "code": 507, "msg": "存储空间已达到管理员设置的容量上限" }\n```\n\n```json\n{ "code": 503, "msg": "存储服务不可用,请稍后再试" }\n```\n\n## 文件类型白名单\n\n由配置 `allowed_file_types` 控制(管理端可改):\n\n- `*`:不限制(默认)。\n- 扩展名规则:`.png`、`pdf`(自动补点)等,按文件名后缀匹配。\n- MIME 规则:`image/*`、`application/pdf` 等,按请求 `Content-Type` 通配匹配。\n\n已知类型(png/jpg/gif/webp/bmp/pdf/zip/rar/7z/gz/mp3/mp4/exe/elf)会做 **magic bytes 交叉校验**:\n扩展名或 Content-Type 声明了已知类型,但文件头不匹配时拒绝(403「疑似伪造类型」)。\n\n## 下载取件\n\n- `GET /share/select?code=`:消耗 1 次取件,返回文件流(`200` 全量 / `206` 区间,\n 支持 `Range` 请求头;响应含 `Accept-Ranges: bytes`、`Content-Disposition: attachment; filename*=UTF-8\'\'...`)。\n- `POST /share/select`:返回详情 JSON,`download_url` 为代理下载地址(见下)。\n- `GET /share/download?key=&code=`:代理下载,消耗 1 次,同样支持 Range。\n\nRange 示例(取前 1024 字节):\n\n```bash\ncurl -s -H \'Range: bytes=0-1023\' -o part.bin \\\n "http://localhost:8466/share/select?code=K3P9W"\n```\n\n区间越界返回:\n\n```json\n{ "code": 416, "msg": "请求范围超出文件大小" }\n```\n',m=`# 分享查询与取件 查询分享元信息(不消耗次数)与真正取件(消耗次数)的完整接口。 除 \`metadata\` 每次 423 限流计数外,取件失败还会计入 \`error\` 限流。 @@ -438,7 +438,7 @@ curl -s -X POST http://localhost:8466/presign/upload/init \\ "code": 200, "msg": "ok", "data": { "upload_id": "6a1e…", - "upload_url": "https://minio:9000/filecodebox/share/data/2025/06/01/6a1e…/backup.zip?X-Amz-…", + "upload_url": "https://minio:9000/fileshare/share/data/2025/06/01/6a1e…/backup.zip?X-Amz-…", "mode": "direct", "expires_in": 900, "file_path": "share/data/2025/06/01/6a1e…" @@ -594,7 +594,7 @@ curl -s -X DELETE http://localhost:8466/presign/upload/6a1e… \`\`\`json { "code": 404, "msg": "上传会话已过期" } \`\`\` -`,_='# 管理后台 API\n\n管理端接口:除 `POST /admin/login` 与初始化向导 `/setup` 外,一律要求\n`Authorization: Bearer `(见《认证与限流》),无效令牌 401。\n\n## 初始化向导:GET /setup\n\n未初始化时返回 HTML 配置页(站点名称、管理员密码、上传/限流/保存策略);\n已初始化时 `303` 重定向到 `/`。\n\n```bash\ncurl -i http://localhost:8466/setup\n```\n\n## 初始化提交:POST /setup\n\n表单(浏览器向导)或 JSON 均可;成功后写入库配置 KV 并生成密码哈希与 `jwt_secret`。\n表单提交返回成功 HTML 页;JSON 提交返回 JSON。\n\n**主要字段**:\n\n| 字段 | 必需 | 默认 | 说明 |\n|---|---|---|---|\n| `admin_password` | ✅ | - | 管理员密码(≥8 位) |\n| `confirm_password` | ✅ | - | 确认密码(须一致) |\n| `site_name` | ❌ | 文件快传 | 站点名称 |\n| `upload_size_value` / `upload_size_unit` | ❌ | 10 / MB | 单文件大小限制(单位 KB/MB/GB) |\n| `save_time_value` / `save_time_unit` | ❌ | 0 / day | 最长保存秒数(0=不限) |\n| `expireStyle` | ❌ | day,hour,minute,forever,count | 过期方式(可多值/逗号分隔) |\n| `code_generate_type` | ❌ | secret | 取件码类型 `number`/`secret` |\n| `errorCount` / `errorMinute` | ❌ | 10 / 1 | 取件错误限流 |\n| `loginCount` / `loginMinute` | ❌ | 5 / 15 | 登录失败限流 |\n| `uploadCount` / `uploadMinute` | ❌ | 10 / 1 | 上传限流 |\n| `allowed_file_types` | ❌ | `*` | 逗号分隔白名单 |\n| `openUpload` / `enableChunk` | ❌ | 1 / 0 | 游客上传 / 分片开关(`1`/`true`/`on`/`yes`) |\n\n```bash\ncurl -s -X POST http://localhost:8466/setup \\\n -H \'Content-Type: application/json\' \\\n -d \'{"admin_password":"admin12345","confirm_password":"admin12345","site_name":"我的文件柜","upload_size_value":10,"upload_size_unit":"MB"}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "ok": true, "admin": "/#/admin" } }\n```\n\n**错误响应**(400,HTML 表单时内嵌错误提示):\n\n```json\n{ "code": 400, "msg": "管理员密码至少 8 位" }\n```\n\n## 登录:POST /admin/login\n\n```bash\ncurl -s -X POST http://localhost:8466/admin/login \\\n -H \'Content-Type: application/json\' \\\n -d \'{"password":"admin12345"}\'\n```\n\n**成功响应**(200):\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "id": "admin", "username": "admin",\n "token": "eyJhbGciOiJIUzI1NiIs...",\n "token_type": "Bearer",\n "expires_at": 1750000000,\n "expires_in": 604800\n }\n}\n```\n\n**错误响应**:\n\n```json\n{ "code": 401, "msg": "密码错误" }\n```\n\n```json\n{ "code": 423, "msg": "请求次数过多,请稍后再试" }\n```\n\n## 校验会话:GET /admin/verify\n\n```bash\ncurl -s http://localhost:8466/admin/verify -H "Authorization: Bearer $TOKEN"\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "id": "admin", "username": "admin", "token": "eyJ…", "token_type": "Bearer", "expires_at": 1750000000 } }\n```\n\n## 登出:POST /admin/logout\n\n无状态 JWT,服务端仅返回确认(客户端应丢弃令牌):\n\n```json\n{ "code": 200, "msg": "ok", "data": { "ok": true } }\n```\n\n## 仪表盘:GET /admin/dashboard\n\n```bash\ncurl -s http://localhost:8466/admin/dashboard -H "Authorization: Bearer $TOKEN"\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "totalFiles": 42,\n "storageUsed": "123456789",\n "sysUptime": 1750000000000,\n "yesterdayCount": 5, "yesterdaySize": "1048576",\n "todayCount": 12, "todaySize": "5242880",\n "activeCount": 40, "expiredCount": 2,\n "textCount": 10, "fileCount": 32, "chunkedCount": 3,\n "usedCount": 156,\n "storageBackend": "local",\n "uploadSizeLimit": 10485760,\n "openUpload": 1, "enableChunk": 1,\n "maxSaveSeconds": 0,\n "topSuffixes": [ { "suffix": ".pdf", "count": 12 }, { "suffix": "Text", "count": 10 } ],\n "recentFiles": [ { "id": 42, "code": "K3P9W", "name": "report.pdf", "size": 1048576, "created_at": "2025-06-01T12:00:00+08:00", "expired_at": "2025-06-08T12:00:00+08:00", "is_expired": false, "expired_count": -1, "used_count": 3, "is_text": false, "is_chunked": false, "is_permanent": false, "has_download_limit": false, "remaining_downloads": null, "file_hash": null, "prefix": "report", "suffix": ".pdf", "text": false, "createdAt": "2025-06-01T12:00:00+08:00", "expiredAt": "2025-06-08T12:00:00+08:00", "isExpired": false, "expiredCount": -1, "usedCount": 3, "isText": false, "isChunked": false, "isPermanent": false, "hasDownloadLimit": false, "remainingDownloads": null, "fileHash": null } ],\n "recentActivities": []\n }\n}\n```\n\n> `storageUsed`/`todaySize`/`yesterdaySize` 为字符串字节数;`sysUptime` 为服务启动时刻的 Unix 毫秒。\n\n## 文件列表:GET /admin/file/list\n\n**参数**:\n\n| 参数 | 默认 | 说明 |\n|---|---|---|\n| `page` / `size` | 1 / 10 | 分页(size 1~100) |\n| `keyword` | - | 模糊匹配取件码/文件名/哈希/文本内容 |\n| `status` | - | `active` / `expired` |\n| `type` | - | `text` / `file` / `chunked` |\n| `sortBy` | `created_at` | `created_at`/`expired_at`/`name`/`size`/`used_count`/`code` |\n| `sortOrder` | `desc` | `asc` / `desc` |\n\n```bash\ncurl -s "http://localhost:8466/admin/file/list?page=1&size=10&status=active&sortBy=size&sortOrder=desc" \\\n -H "Authorization: Bearer $TOKEN"\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "page": 1, "size": 10, "total": 40,\n "summary": { "totalFiles": 42, "activeCount": 40, "expiredCount": 2, "textCount": 10, "fileCount": 32, "chunkedCount": 3, "storageUsed": 123456789, "usedCount": 156 },\n "data": [\n { "id": 42, "code": "K3P9W", "name": "report.pdf", "prefix": "report", "suffix": ".pdf", "size": 1048576, "is_text": false, "is_chunked": false, "is_expired": false, "expired_at": "2025-06-08T12:00:00+08:00", "expired_count": -1, "used_count": 3, "created_at": "2025-06-01T12:00:00+08:00", "has_download_limit": false, "is_permanent": false, "remaining_downloads": null, "file_hash": null, "text": false, "isText": false, "isChunked": false, "isExpired": false, "expiredAt": "2025-06-08T12:00:00+08:00", "expiredCount": -1, "usedCount": 3, "createdAt": "2025-06-01T12:00:00+08:00", "hasDownloadLimit": false, "isPermanent": false, "remainingDownloads": null, "fileHash": null }\n ]\n }\n}\n```\n\n## 文件详情:GET /admin/file/detail\n\n`GET ?id=42` 或 `POST {"id":42}`。返回列表条目字段;文本分享额外含 `content`(全文)。\n\n```json\n{ "code": 200, "msg": "ok", "data": { "id": 42, "code": "K3P9W", "name": "report.pdf", "size": 1048576, "is_text": false, "expired_at": "2025-06-08T12:00:00+08:00", "expired_count": -1, "used_count": 3, "created_at": "2025-06-01T12:00:00+08:00", "file_hash": null } }\n```\n\n```json\n{ "code": 404, "msg": "文件不存在" }\n```\n\n## 更新文件:PATCH /admin/file/update\n\n更新取件码/文件名(前后缀)/过期策略。**PATCH 为主名,POST 为兼容别名**。\n\n**请求体**:\n\n| 字段 | 类型 | 说明 |\n|---|---|---|\n| `id` | int | 必需 |\n| `code` | string | 新取件码(冲突 400「code已存在」) |\n| `prefix` / `suffix` | string | 文件名前后缀 |\n| `expired_at` | string | 过期时间(ISO 8601,如 `2025-07-01T00:00:00+08:00`) |\n| `expired_count` | int | 取件次数上限(`-1` 按时间/永久) |\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/file/update \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"id":42,"expired_at":"2025-07-01T00:00:00+08:00","expired_count":10}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": "更新成功" }\n```\n\n```json\n{ "code": 400, "msg": "code已存在" }\n```\n\n## 删除文件:DELETE /admin/file/delete\n\n删除分享记录并连带删除存储文件(文本分享无存储文件)。`DELETE` 或 `POST`,请求体 `{"id":42}`。\n\n```bash\ncurl -s -X DELETE http://localhost:8466/admin/file/delete \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' -d \'{"id":42}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": null }\n```\n\n```json\n{ "code": 400, "msg": "请选择要删除的文件" }\n```\n\n## 批量删除:POST /admin/file/batch-delete\n\n`POST` 或 `DELETE`,请求体 `{"ids":[41,42,43]}`。返回逐条统计:\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "requestedCount": 3, "deletedCount": 2, "missingCount": 1, "failedCount": 0,\n "deleted": [41, 42], "missing": [43], "failed": [],\n "requested_count": 3, "deleted_count": 2, "missing_count": 1, "failed_count": 0\n }\n}\n```\n\n## 批量更新:PATCH /admin/file/batch-update\n\n`PATCH` 或 `POST`。请求体:`ids[]` 必需;`expired_at`(ISO 8601)/`expired_count` 二选一;\n`clearExpiredAt: true`(或 `clear_expired_at`)= 清空过期时间并置 `expired_count=-1`(永久)。\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/file/batch-update \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"ids":[41,42],"clearExpiredAt":true}\'\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": { "requestedCount": 2, "updatedCount": 2, "missingCount": 0, "failedCount": 0, "updated": 2, "missing": [], "failed": [], "requested_count": 2, "updated_count": 2, "missing_count": 0, "failed_count": 0 }\n}\n```\n\n## 过期策略动作:PATCH /admin/file/policy-action\n\n对单个文件执行快捷策略。`PATCH` 或 `POST`。批量版为 `/admin/file/batch-policy-action`(`{"ids":[…]}`),响应结构同批量更新。\n\n**请求体**:\n\n| 字段 | 说明 |\n|---|---|\n| `id` | 文件 ID |\n| `action` | `extend_24h` / `extend_7d` / `make_permanent` / `reset_download_limit` |\n| `downloadLimit` | 仅 `reset_download_limit` 用:新取件次数(默认 5,须 >0) |\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/file/policy-action \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"id":42,"action":"reset_download_limit","downloadLimit":3}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "id": 42, "action": "reset_download_limit" } }\n```\n\n```json\n{ "code": 400, "msg": "不支持的策略动作" }\n```\n\n> `extend_24h`/`extend_7d` 在当前过期时间(未过期时)基础上顺延;`make_permanent` 清空过期时间并置次数 -1。\n\n## 管理员下载:GET /admin/file/download?id=\n\n下载原文件(**不消耗取件次数**);文件返回二进制流(支持 Range),文本分享返回 JSON(`data` 为文本内容)。\n\n```bash\ncurl -s -OJ "http://localhost:8466/admin/file/download?id=42" -H "Authorization: Bearer $TOKEN"\n```\n\n## 文本预览:GET /admin/file/preview\n\n仅文本分享可用(文件分享返回 400)。`maxChars` 截断长度(默认 4000,1~20000)。\n\n```bash\ncurl -s "http://localhost:8466/admin/file/preview?id=41&maxChars=100" -H "Authorization: Bearer $TOKEN"\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "id": 41, "code": "8XQ2M", "name": "Text.txt", "type": "text",\n "content": "你好,文件快传",\n "length": 24, "previewLength": 24, "truncated": false,\n "maxChars": 100, "max_chars": 100,\n "created_at": "2025-06-01T12:00:00+08:00", "createdAt": "2025-06-01T12:00:00+08:00"\n }\n}\n```\n\n```json\n{ "code": 400, "msg": "仅文本分享支持预览" }\n```\n\n## 读取配置:GET /admin/config/get\n\n返回运行时配置 KV(含默认值与管理端修改)。`admin_token` 恒返回空串(屏蔽);\n`jwt_secret` 不下发;存储引擎为进程级单例,`_engine_hint` 提示引擎配置修改需重启。\nv2 新增键(需求 ①②③④⑩)一并返回:`background_url`、`footer_text`、`footer_beian`、\n`notify_enabled`、`max_save_count`、`max_file_size` 等。\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "site_name": "文件快传",\n "name": "文件快传",\n "description": "开箱即用的文件快传系统",\n "page_explain": "…", "keywords": "…",\n "notify_title": "系统通知", "notify_content": "…", "notify_enabled": 1,\n "logo_url": "",\n "favicon_url": "",\n "background_url": "", "footer_text": "", "footer_beian": "",\n "openUpload": 1, "uploadSize": 10485760,\n "max_file_size": 0, "max_save_count": 0,\n "allowed_file_types": ["*"], "expireStyle": ["day","hour","minute","forever","count"],\n "code_generate_type": "secret", "enableChunk": 1,\n "uploadMinute": 1, "uploadCount": 10,\n "errorMinute": 1, "errorCount": 10,\n "loginCount": 5, "loginMinute": 15,\n "max_save_seconds": 0, "storageLimit": 0,\n "opacity": 0.9, "background": "", "showAdminAddr": 0, "robotsText": "User-agent: *\\nDisallow: /",\n "adminSessionExpire": 604800,\n "storage_path": "", "local_storage_path": "/app/data",\n "file_storage": "local",\n "admin_token": "",\n "_engine_hint": { "storage_backend": "local", "note": "存储引擎为进程级单例,修改存储引擎相关配置后需重启服务生效" }\n }\n}\n```\n\n## 存储引擎热切换:POST /admin/storage/switch(v3)\n\n运行时切换存储引擎,**无需重启**:\n\n```bash\ncurl -s -X POST http://localhost:8466/admin/storage/switch \\\n -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \\\n -d \'{"engine":"s3"}\'\n# 成功:{"code":200,"msg":"ok","data":{"ok":true,"engine":"s3"}}\n# 失败:503 {"code":503,"msg":"存储引擎切换失败,已保持原引擎: …"}\n```\n\n- `engine` 仅接受 `local|s3|webdav`(400 中文错误)。\n- 切换流程:用最新 KV 参数构建新引擎 → 健康检查 → 通过才替换当前引擎并持久化 `storage_engine`。\n- 失败(构建/健康检查不过)返回 503,**原引擎与 KV 均保持不变**。\n- 切到当前引擎为幂等操作(直接返回 200)。\n- 旧文件按归属引擎(`file_codes.engine`)取回,切换后旧引擎文件仍可下载。\n\n## 更新配置:PATCH /admin/config/update\n\n部分更新(JSON 对象,未提供的键不变;表单亦可)。**PATCH 为主名,POST 为兼容别名**。\n\n- 仅接受管理端可见键(见上响应键集合),未知键忽略。\n- 数值型键自动转型:`openUpload`、`enableChunk`、`uploadSize`、`storageLimit`、限流四组、`max_save_seconds`、`adminSessionExpire`、`showAdminAddr`;v2 新增 `max_save_count`、`max_file_size`、`notify_enabled`;`opacity` 为浮点。\n- **v3.1**:`site_domain`(站点对外域名)可经本端点设置,非法格式 400(仅 http/https、主机+端口、不带路径)。\n- **v3 引擎键**:`storage_engine` 不经本端点修改(走 `POST /admin/storage/switch`);引擎参数键\n (`local_storage_path`、`webdav_url`、`webdav_root_path`、`webdav_username`、`webdav_password`、\n `s3_endpoint_url`、`s3_region_name`、`s3_bucket_name`、`s3_access_key_id`、`s3_secret_access_key`、\n `aws_session_token`、`s3_addressing_style`)可经本端点保存——保存后对应引擎实例缓存失效,\n 下次切换/构建生效;敏感键空串或 `******` 表示不修改。\n- **v2 schema 校验**(`settings.KVSchema`,越界一律 400,中文错误信息):\n - 整型边界:`max_file_size` ≤ 10GiB(10737418240)、`max_save_count` ≤ 100000、`max_save_seconds` ≤ 31536000(365 天)、`notify_enabled` ∈ {0,1}、`uploadCount` 1~10000、`uploadMinute` 1~1440 等;\n - 字符串长度:`background_url` ≤ 2048、`footer_text` ≤ 2000、`footer_beian` ≤ 128、`notify_title` ≤ 128、`notify_content` ≤ 2000 字符;\n - 列表键 `expireStyle` / `allowed_file_types`:须为字符串数组(或逗号分隔串)且至少保留一项;\n - 错误示例:`{"code":400,"msg":"max_file_size 必须是整数"}`、`{"code":400,"msg":"max_file_size 不能大于 10737418240"}`、`{"code":400,"msg":"footer_beian 长度不能超过 128 字符"}`、`{"code":400,"msg":"notify_enabled 不能大于 1"}`。\n- `background_url` 协议白名单(需求 ①,防 `javascript:` 注入):仅 `http(s)://`、`data:image/*` 与站内相对路径(`/`开头);空串=清除背景。非法值 400:\n `{"code":400,"msg":"background_url 仅支持 http(s) 地址、data:image 图片或站内相对路径"}`\n- `admin_token`:明文密码自动哈希,**并轮换 `jwt_secret`(全部管理员令牌立即失效)**;空串忽略;已是哈希格式则原样保存。\n- `adminSessionExpire` 须为 1~365 的整天秒数(86400 的整数倍),否则 400。\n- `storageLimit` 不能小于 0。\n- 修改限流/策略配置**立即生效**(无需重启:限流规则运行时同步,策略由上传链路每次实时读取);引擎相关(`file_storage`/`s3_*`/`webdav_*`/`storage_path`/`local_storage_path`)需重启。\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/config/update \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"site_name":"我的文件柜","uploadSize":52428800,"openUpload":1,"footer_beian":"京ICP备20240001号","max_file_size":10485760,"max_save_count":5}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "ok": true } }\n```\n\n```json\n{ "code": 400, "msg": "adminSessionExpire 必须是 1 到 365 个整天" }\n```\n\n```json\n{ "code": 400, "msg": "background_url 仅支持 http(s) 地址、data:image 图片或站内相对路径" }\n```\n\n## 修改管理员密码:PATCH /admin/settings/password\n\n`PATCH` 或 `POST`。新密码 ≥8 位;成功后哈希保存并**轮换 `jwt_secret`,所有旧令牌失效(401)**,需重新登录。\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/settings/password \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"old_password":"admin12345","new_password":"new-pass-6789"}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "ok": true } }\n```\n\n```json\n{ "code": 400, "msg": "新密码长度至少 8 位" }\n```\n\n```json\n{ "code": 401, "msg": "旧密码错误" }\n```\n',y='# 审计日志查询\n\n所有上传/下载请求由审计中间件自动落库(需求 ③),管理端分页查询。\n认证:`Authorization: Bearer `。\n\n## 审计记录内容\n\n每条审计日志覆盖以下维度(需求 ③):\n\n| 维度 | 字段 | 说明 |\n|---|---|---|\n| 操作时间 | `created_at` | RFC 3339 |\n| 客户端 | `ip` | 可信代理场景解析 XFF 后的真实 IP |\n| 终端信息 | `user_agent` | 原始 UA |\n| 设备解析 | `device_os` / `device_browser` / `device_type` | 由 UA 解析(如 Windows/Chrome/desktop) |\n| 动作 | `action` | `upload`(上传类) / `download`(取件/下载类) / `admin`(管理端敏感操作,v2.5.6 新增) |\n| 结果 | `result` | `success` / `denied`(拒绝:401/403/423/428)/ `failed`(失败:其余 4xx/5xx 或业务报错) |\n| 字节数 | `size_bytes` | 文件总大小;`transferred_bytes` 实际传输(**Range 下载只计实际区间字节**;下载由中间件自动统计,上传由各 handler 填充) |\n| 耗时 | `duration_ms` | 毫秒 |\n| 角色 | `actor` | `admin`(有效管理员令牌)/ `guest` |\n| 业务 | `file_code` / `file_name` | 取件码 / 文件名(分片上传时 `file_code` 为 `upload_id`) |\n| 错误 | `error_msg` | 失败/拒绝原因 |\n\n**命中审计的端点**:上传类 `POST /share/text`、`POST /share/file`、`/chunk/upload*`、`/presign*`(POST/PUT);\n下载类 `GET /share/download`、`GET /share/select`、`GET /share/metadata`;\n管理类(`action=admin`)`POST /admin/login`、`POST /admin/logout`、`PATCH|POST /admin/config/update`、\n`PATCH|POST /admin/settings/password`、`POST /admin/storage/switch`、`PATCH|DELETE /admin/file/update|delete|batch-delete|batch-update|policy-action|batch-policy-action`。\n管理类动作未显式填结果时按 HTTP 状态兜底落库(401/403/423 → `denied`,5xx → `failed`,其余 → `success`)。\n失败与被拒绝的请求同样落库。\n\n## 查询接口:GET /admin/audit/list\n\n**参数**:\n\n| 参数 | 默认 | 说明 |\n|---|---|---|\n| `page` | 1 | 页码(≥1) |\n| `size` | 20 | 每页条数(1~200;兼容 `pageSize`) |\n| `action` | - | `upload` / `download` / `admin` |\n| `result` | - | `success` / `denied` / `failed` |\n| `ip` | - | 按客户端 IP 过滤 |\n| `start_time` / `end_time` | - | 时间范围,ISO 8601(如 `2025-06-01T00:00:00+08:00`;也接受 `2006-01-02 15:04:05` / 日期) |\n\n```bash\ncurl -s "http://localhost:8466/admin/audit/list?page=1&size=20&action=download&result=success&start_time=2025-06-01T00:00:00%2B08:00" \\\n -H "Authorization: Bearer $TOKEN"\n```\n\n**成功响应**(200):\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "data": [\n {\n "id": 318,\n "action": "download",\n "file_code": "K3P9W",\n "file_name": "report.pdf",\n "size_bytes": 1048576,\n "transferred_bytes": 524288,\n "ip": "203.0.113.7",\n "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",\n "device_os": "Windows",\n "device_browser": "Chrome",\n "device_type": "desktop",\n "actor": "guest",\n "result": "success",\n "error_msg": "",\n "duration_ms": 128,\n "created_at": "2025-06-01T12:03:45+08:00",\n "fileCode": "K3P9W",\n "fileName": "report.pdf",\n "sizeBytes": 1048576,\n "transferredBytes": 524288,\n "userAgent": "Mozilla/5.0 …",\n "deviceOs": "Windows",\n "deviceBrowser": "Chrome",\n "deviceType": "desktop",\n "errorMsg": "",\n "durationMs": 128,\n "createdAt": "2025-06-01T12:03:45+08:00"\n }\n ],\n "total": 1180,\n "page": 1,\n "size": 20\n }\n}\n```\n\n> 行字段以 snake_case 为准;camelCase 为兼容双份输出(文档不再重复列出)。\n\n**错误响应**:\n\n```json\n{ "code": 400, "msg": "start_time 时间格式错误" }\n```\n\n```json\n{ "code": 401, "msg": "令牌无效或已过期" }\n```\n\n## 别名:GET /admin/audit/logs\n\n与 `/admin/audit/list` 完全相同(同一 handler 的兼容别名),参数与响应一致。\n\n## 典型查询\n\n```bash\n# 最近的下载行为\ncurl -s "http://localhost:8466/admin/audit/list?action=download&size=50" -H "Authorization: Bearer $TOKEN"\n\n# 某 IP 的全部被拒请求(限流/鉴权失败)\ncurl -s "http://localhost:8466/admin/audit/list?ip=203.0.113.7&result=denied" -H "Authorization: Bearer $TOKEN"\n\n# 今天 0 点以来的上传失败\ncurl -s "http://localhost:8466/admin/audit/list?action=upload&result=failed&start_time=2025-06-01T00:00:00%2B08:00" \\\n -H "Authorization: Bearer $TOKEN"\n```\n',h='# 存储引擎配置\n\n存储引擎只支持三种:**本地磁盘 / S3 / WebDAV**,由进程级环境变量 `FCB_STORAGE_ENGINE` 选择。\n引擎与引擎相关配置在启动时一次性读取(`storage.SetEngineOptions` → `NewEngine`),\n**运行时修改引擎 KV 需重启服务**(管理端 `GET /admin/config/get` 的 `_engine_hint` 亦有提示)。\n\n## 引擎选择\n\n```bash\nFCB_STORAGE_ENGINE=local # 启动默认(KV storage_engine 为空时生效)\nFCB_STORAGE_ENGINE=s3\nFCB_STORAGE_ENGINE=webdav\n```\n\n非法值直接启动失败:`FCB_STORAGE_ENGINE 无效值 "xxx",仅支持 local|s3|webdav`。\n\n**v3 运行时热切换**:管理端 `POST /admin/storage/switch`(或后台设置页「存储引擎」卡)可在不重启的情况下切换引擎——\n先构建新引擎并健康检查,通过才生效;失败 503 保持原引擎。当前引擎持久化在 settings KV `storage_engine`(空=回落启动值)。\n各引擎参数(存储目录/服务地址/存储桶/密钥)同样在后台设置页运行时可改;保存后对应引擎实例缓存失效,下次切换/构建生效。\n\n## 文件归属引擎(v3)\n\n每条分享记录(`file_codes.engine`)与上传会话(`upload_chunks.engine` / `presign_upload_sessions.engine`)\n在创建时戳记当时的引擎名。下载、分片合并、删除按**归属引擎**操作——切换引擎后,旧引擎里的文件仍可正常下载与删除\n(空戳为历史数据,回落当前引擎)。\n\n## 按日期目录存储\n\n文件落盘路径:`[storage_path/]share/data/YYYY/MM/DD//<文件名>`(如 `share/data/2026/09/04/…`)。\n按日嵌套目录自然排序、无日月歧义、避免单日海量文件挤在单目录;三种引擎一致适用;历史路径记录在\n`file_codes.file_path`,不受路径规则调整影响。\n\n## 配置键与环境变量\n\n引擎相关配置键(DB settings KV)可由环境变量种子注入(优先级:默认 < 环境变量 < DB KV):\n\n| KV 键 | 环境变量 | 引擎 | 说明 |\n|---|---|---|---|\n| `local_storage_path` | `FCB_LOCAL_STORAGE_PATH` | local | 本地存储根目录(容器内默认 `/app/data`) |\n| `storage_path` | `FCB_STORAGE_PATH` | 全部 | 存储相对路径前缀(空 = `share/data/…`) |\n| `s3_access_key_id` | `FCB_S3_ACCESS_KEY_ID` | s3 | 访问密钥 |\n| `s3_secret_access_key` | `FCB_S3_SECRET_ACCESS_KEY` | s3 | 私有密钥 |\n| `aws_session_token` | `FCB_AWS_SESSION_TOKEN` | s3 | 可选临时会话令牌 |\n| `s3_bucket_name` | `FCB_S3_BUCKET_NAME` | s3 | 桶名 |\n| `s3_endpoint_url` | `FCB_S3_ENDPOINT_URL` | s3 | S3 兼容端点(MinIO/R2 等;AWS 原生可空) |\n| `s3_region_name` | `FCB_S3_REGION_NAME` | s3 | 区域(默认 `auto`) |\n| `s3_addressing_style` | `FCB_S3_ADDRESSING_STYLE` | s3 | `auto`/`path`/`virtual` |\n| `webdav_url` | `FCB_WEBDAV_URL` | webdav | WebDAV 服务地址(如 `http://webdav:5000`) |\n| `webdav_username` | `FCB_WEBDAV_USERNAME` | webdav | 用户名 |\n| `webdav_password` | `FCB_WEBDAV_PASSWORD` | webdav | 密码 |\n| `webdav_root_path` | `FCB_WEBDAV_ROOT_PATH` | webdav | 根目录(默认 `filebox_storage`,不存在自动逐级创建) |\n\n`FCB_STORAGE_ENGINE` 本身不落库(`GET /admin/config/get` 中的 `file_storage` 为 KV 记忆键,\n进程实际引擎以 `FCB_STORAGE_ENGINE` 与 `_engine_hint.storage_backend` 为准)。\n\n## 各引擎要点\n\n### 本地引擎(local)\n\n- 原子写:临时文件 + fsync + rename,避免半写文件。\n- 路径安全:`SanitizePath` + 符号链接逃逸双重防穿越。\n- Range 下载基于 `SectionReader`;分片按索引有序合并 + SHA256 校验,合并后清理分片目录。\n\n### S3 引擎(s3)\n\n- 原生 multipart 流式合并(失败自动 Abort),分片落临时文件保证精确 Content-Length 与可重放。\n- 预签名 GET/PUT 直链(预签名直传唯一 `direct` 模式引擎)。\n- SDK 内置 5xx 指数退避重试;`when_required` 校验模式兼容 MinIO/R2 与纯流式转发。\n\n### WebDAV 引擎(webdav,重点优化)\n\n- **连接复用**:池化 Transport,连接复用(实测 25 次请求仅 1 条 TCP 连接)。\n- **认证**:Basic + Digest(RFC 2617 `qop=auth`,MD5/SHA-256)自动协商,401 挑战驱动。\n- **Range**:`Range` 头透传 + `206` 解析,支持分块/断点下载。\n- **重试**:5xx/429/408 指数退避(封顶 2s ± 20% 抖动,尊重 `Retry-After`)。\n- **流式**:下载经 `io.Pipe` 流式转发不落盘;上下文取消挂到响应体读完之后,防止提前断连。\n- **目录**:按需逐级 `MKCOL` + 目录缓存,避免重复建目录。\n- **超时**:可配置(`webdav_url` 同级暂无独立超时键,引擎默认值内置)。\n\n## 健康检查\n\n三引擎均实现 `HealthCheck`:local 写探针、s3 `ListObjectsV2`、webdav `PROPFIND`(根目录不存在时自建)。\n服务启动时预检失败仅告警不阻断;运行状态可经 `GET /api/v1/health` 的 `data.storage` 查看当前引擎名。\n\n## 预签名直传支持矩阵\n\n| 引擎 | `PresignPutURL` / `PresignGetURL` | init 返回 mode |\n|---|---|---|\n| s3 | ✅ | `direct` |\n| local / webdav | ❌(`ErrNotSupported`) | `proxy`(走服务端代理上传) |\n\n引擎不支持的操作经统一映射返回 501:\n\n```json\n{ "code": 501, "msg": "当前存储引擎不支持该操作" }\n```\n\n## Docker Compose 冒烟编排\n\n`deploy/docker-compose.yml` 提供可选 profile(详见 deploy/README.md):\n\n```bash\ndocker compose --profile minio up -d --build # MinIO(含 mc 自动建桶)+ FCB_STORAGE_ENGINE=s3\ndocker compose --profile webdav up -d --build # dufs WebDAV 冒烟(admin/admin123)+ FCB_STORAGE_ENGINE=webdav\ndocker compose --profile redis up -d --build # Redis 缓存增强(非引擎)\n```\n\n## 存储哨兵错误 → HTTP 状态\n\n| 哨兵错误 | HTTP | 文案 |\n|---|---|---|\n| `ErrNotFound` | 404 | 文件不存在 |\n| `ErrInvalidPath` | 400 | 非法文件路径 |\n| `ErrUnavailable` | 503 | 存储服务不可用,请稍后再试 |\n| `ErrNotSupported` | 501 | 当前存储引擎不支持该操作 |\n| `ErrRangeNotSatisfiable` | 416 | 请求范围超出文件大小 |\n| `ErrHashMismatch` | 400 | 分片哈希校验失败,请重新上传 |\n\n容量超限(`storageLimit`,经容量预留判定)返回 507:`存储空间已达到管理员设置的容量上限`。\n',f='# 环境变量与配置项\n\n配置分三层:**默认值 → `FCB_*` 环境变量 → 数据库 settings KV(管理端运行时修改)**。\nv2 起进程必需的环境变量为空集:数据库默认 **SQLite**(modernc.org/sqlite 纯 Go 驱动,零外部依赖,\nDSN 缺省落 `./data/filecodebox.db`);`FCB_DB_DRIVER=postgres` 时 `FCB_DB_DSN` 必需(需求 ⑧)。\n\n## 环境变量(进程级)\n\n| 变量 | 必需 | 默认 | 说明 |\n|---|---|---|---|\n| `FCB_DB_DRIVER` | ❌ | `sqlite` | 数据库驱动:`sqlite` / `postgres`(需求 ⑧) |\n| `FCB_DB_DSN` | 视驱动 | `./data/filecodebox.db` | postgres:连接串(**必需**,如 `postgres://user:pass@host:5432/filecodebox?sslmode=disable`);sqlite:数据库文件路径(可空,父目录自动创建) |\n| `FCB_REDIS_ADDR` | ❌ | 空 | Redis 地址(如 `redis:6379`),也支持 `redis://[:password@]host:port[/db]` / `rediss://`(TLS)URL 形式;**空则缓存降级为进程内存实现**(缓存故障时自动降级为进程内限流计数) |\n| `FCB_REDIS_DB` | ❌ | `0` | Redis 逻辑库号 0-15;URL 形式地址显式携带 `/N` 时以 URL 为准 |\n| `FCB_ADMIN_PASSWORD` | ❌ | 空 | 设置后服务首次启动即自动初始化管理员(≥8 位,不足告警跳过),消除 `/setup` 被抢占窗口;初始化完成后建议移除 |\n| `FCB_LISTEN` | ❌ | `:8466` | HTTP 监听地址 |\n| `FCB_STORAGE_ENGINE` | ❌ | `local` | 存储引擎:`local` / `s3` / `webdav` |\n| `FCB_TRUSTED_PROXIES` | ❌ | 空 | 可信代理 CIDR(逗号分隔),命中时从 `X-Forwarded-For` 解析真实客户端 IP |\n\n- SQLite 连接参数(驱动自动注入):`busy_timeout=10s` + `WAL` 日志模式 + `foreign_keys=1`;连接池 8/4。\n- Postgres 连接池沿用 v1 参数(32/8,1h 轮换);`FCB_DB_DRIVER=postgres` 且未设 `FCB_DB_DSN` 时**启动直接报错**。\n\n引擎相关环境变量(种子注入 settings KV,见《存储引擎配置》):`FCB_LOCAL_STORAGE_PATH`、\n`FCB_STORAGE_PATH`、`FCB_S3_ACCESS_KEY_ID`、`FCB_S3_SECRET_ACCESS_KEY`、`FCB_AWS_SESSION_TOKEN`、\n`FCB_S3_BUCKET_NAME`、`FCB_S3_ENDPOINT_URL`、`FCB_S3_REGION_NAME`、`FCB_S3_ADDRESSING_STYLE`、\n`FCB_WEBDAV_URL`、`FCB_WEBDAV_USERNAME`、`FCB_WEBDAV_PASSWORD`、`FCB_WEBDAV_ROOT_PATH`。\n\n部署用编排变量(`deploy/.env.example`):`WEB_PORT`(默认 8466)、\n`POSTGRES_USER` / `POSTGRES_PASSWORD` / `POSTGRES_DB`(默认 filecodebox,仅 `--profile postgres` 时使用)。\n\n## 配置项(settings KV,默认值对齐参考实现)\n\n> 键名/类型/默认值/边界以 `server/internal/config/schema.go` 的 `KVSchema()` 为单一事实来源\n> (schema 同步测试保证与 defaults() 逐键一致);v2 新增键统一 snake_case。\n\n### 站点信息与展示(需求 ①②③)\n\n| 键 | 类型/边界 | 默认 | 说明 |\n|---|---|---|---|\n| `site_name` / `name` | string | 文件快传 | 站点名称(`site_name` 优先) |\n| `site_domain` | string,≤256 | 空 | **v3.1**:站点对外域名(`http(s)://host[:port]`,不带路径;裸主机自动补 `http://`)。配置后分享链接(结果卡/管理端复制)用该域名生成——内网部署也能把公网链接发出去;留空=用当前访问地址 |\n| `description` | string | 开箱即用的文件快传系统 | 站点描述 |\n| `page_explain` | string | (合规声明) | 页面说明文案 |\n| `keywords` | string | 文件快传, 文件分享… | SEO 关键词 |\n| `logo_url` | string | 空(前端回落本地打包 `/assets/logo-*.svg`,需求 ⑤) | 页面导航 Logo,管理端可设任意 URL |\n| `favicon_url` | string | 空(前端回落本地打包 `/assets/favicon-*.png`,需求 ⑤) | favicon / 备用 Logo |\n| `opacity` | float | 0.9 | 界面不透明度 |\n| `background` | string | 空 | 背景图 URL(参考实现既有键,v1 兼容保留) |\n| `background_url` | string,≤2048 字符 | 空 | **v2 需求 ①**:背景图 URL 或上传后地址(空=主题默认;取值时 legacy `background` 键兜底)。管理端保存时校验协议白名单:仅 `http(s)`、`data:image/*` 与站内相对路径(防 `javascript:` 注入,非法 400) |\n| `footer_text` | string,≤2000 字符 | 空 | **v2 需求 ②**:页脚自定义内容(纯文本或受控 HTML 片段) |\n| `footer_beian` | string,≤128 字符 | 空 | **v2 需求 ②**:备案号(如 `京ICP备2024xxxxxx号-1`),展示于页脚 |\n| `notify_enabled` | int(0/1) | 1 | **v2 需求 ③**:通知开关(1=前台右上角悬浮窗展示 / 0=关闭) |\n| `notify_title` | string,≤128 字符 | 系统通知 | 通知标题 |\n| `notify_content` | string,≤2000 字符 | 欢迎使用… | 通知正文(**服务端白名单净化**:仅保留纯文本与 `` 为 http(s)/站内相对/`#` 锚点的链接,其余标签与事件属性剥离,保存与读取双侧生效) |\n| `showAdminAddr` | int(0/1) | 0 | 是否展示后台入口 |\n| `robotsText` | string | `User-agent: *\\nDisallow: /` | robots.txt 内容(由公开端点 `GET /robots.txt` 输出) |\n\n### 保存策略(需求 ④,上传页动态读取并在范围内选择)\n\n| 键 | 类型/边界 | 默认 | 说明 |\n|---|---|---|---|\n| `max_save_seconds` | int64,0~31536000 | 0 | 最长保存秒数上限(0=仅默认 7 天兜底;>0 时按时间过期超限 403「限制最长时间为 X,可换用其他方式」)。**v3**:管理界面以「小时/天」下拉单位编辑(≥1 天自动显示天),提交时前端换算为秒——canonical 单位保持秒,接口语义不变 |\n| `max_save_count` | int,0~100000 | 0 | **v2 新增**:单次分享最大可取(保存)次数上限(0=不限制;`expire_style=count` 且 `expire_value` 超上限时 403「限制次数最多为 N 次」) |\n| `expireStyle` | []string | `["day","hour","minute","forever","count"]` | 允许的过期方式白名单(上传时不在白名单 400「过期时间类型错误」) |\n\n### 存储策略(需求 ④⑩)\n\n| 键 | 类型/边界 | 默认 | 说明 |\n|---|---|---|---|\n| `uploadSize` | int64,1024~10GiB | 10485760(10MB) | 单文件大小上限(字节),参考实现语义;`max_file_size=0` 时作为生效上限 |\n| `max_file_size` | int64,0~10GiB | 0 | **v2 新增**:存储策略-单文件上限(字节),0=回落 `uploadSize`;超出 403(文案 humanSize 自适应 B/KB/MB/GB)。**v3**:管理界面以「MB/GB」下拉单位编辑(≥1 GiB 自动显示 GB),提交时前端换算为字节 |\n| `allowed_file_types` | []string | `["*"]` | 允许类型白名单(扩展名/MIME 通配,`*` 不限制;非白名单 403「不允许上传该类型文件」) |\n| `storageLimit` | int64,≥0 | 0 | 站点总容量(字节),0=不限制(超限 507) |\n| `openUpload` | int(0/1) | 1 | 游客上传开关(0 时上传接口要求管理员令牌 403) |\n| `enableChunk` | int(0/1) | 0 | 启用分片上传 |\n\n### 上传频率限制(需求 ④,既有键对齐参考 ip_limit["upload"])\n\n| 键 | 类型/边界 | 默认 | 说明 |\n|---|---|---|---|\n| `uploadCount` / `uploadMinute` | int(1~10000 / 1~1440) | 10 / 1 | 窗口内允许上传次数 / 窗口分钟(上传成功才计数,超限 423;管理端修改后运行时同步限流规则,立即生效) |\n| `errorCount` / `errorMinute` | int | 10 / 1 | 取件错误(失败计数)+ metadata 每次计数 |\n| `loginCount` / `loginMinute` | int | 5 / 15 | 登录失败计数 |\n\n### 安全与会话\n\n| 键 | 默认 | 说明 |\n|---|---|---|\n| `admin_token` | 空(未初始化) | 管理员密码哈希(`sha256$salt$hash`);GET 配置时屏蔽为空串 |\n| `jwt_secret` | 空 | JWT 签名密钥(初始化/改密时自动生成轮换;不下发;`settings.SensitiveKeys` 双模式下一致屏蔽) |\n| `adminSessionExpire` | 604800(7 天) | 管理员会话秒数(须 1~365 整天) |\n\n### 存储引擎(v3 运行时可配 + 热切换)\n\n**`storage_engine`**(v3 新增键):string,`local|s3|webdav`,默认空=回落启动值 `FCB_STORAGE_ENGINE`。\n运行时切换走 **`POST /admin/storage/switch`**(JWT 保护):构建新引擎 → 健康检查通过才生效;\n失败返回 503「存储引擎切换失败,已保持原引擎: …」且不改 KV。成功后持久化 `storage_engine`,重启沿用。\n`GET /api/v1/config` 公开下发 `storage_engine` 当前名(仅名称,任何引擎参数/凭据不下发)。\n\n引擎参数键(管理端可改;保存后对应引擎实例缓存失效,下次切换/构建生效):\n\n| 键 | 默认 |\n|---|---|\n| `file_storage` | `local` |\n| `storage_path` | 空 |\n| `local_storage_path` | 空(容器内由 `FCB_LOCAL_STORAGE_PATH=/app/data` 注入) |\n| `s3_access_key_id` / `s3_secret_access_key` / `aws_session_token` | 空 |\n| `s3_bucket_name` / `s3_endpoint_url` / `s3_hostname` | 空 |\n| `s3_region_name` | `auto` |\n| `s3_signature_version` | `s3v4` |\n| `s3_addressing_style` | `auto` |\n| `s3_proxy` | 0 |\n| `webdav_url` / `webdav_username` / `webdav_password` | 空 |\n| `webdav_root_path` | `filebox_storage` |\n| `webdav_proxy` | 0 |\n\n> 敏感键 `webdav_password` / `s3_secret_access_key` / `aws_session_token`(v3 加入 `settings.SensitiveKeys`):\n> 管理端 GET 返回掩码 `******`;PATCH 时空串或 `******` 表示不修改。直接写库 settings KV 后重启同样生效。\n\n## 策略动态生效机制(v2 需求 ④⑩)\n\n上传页通过 `GET /api/v1/config` 的 `config` 字段读取**当前策略快照**并在范围内渲染选项;\n上传链路(`/share/file`、`/chunk/*`、`/presign/*`)**每次请求实时读取** settings KV 同一组值校验:\n\n- 管理端改策略(`PATCH /admin/config/update`)→ 公开 config 即时反映 → 后续上传立即按新策略执行(含 403/400 拒绝与恢复放行)。\n- 生效上限:`max_file_size > 0` 时为 `max_file_size`,否则回落 `uploadSize`。\n- 校验点覆盖:单文件(`/share/file`)、分片 init 按分片数上限、分片上传累计、分片 complete 累计、预签名 init 声明大小,五处口径一致(`api.UploadPolicy.CheckSize`)。\n\n## 公共配置接口\n\n前端启动时经 `GET /api/v1/config` 获取站点公开配置(无需认证;v2 扩展需求 ①②③④⑩):\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "config": {\n "name": "文件快传",\n "description": "开箱即用的文件快传系统",\n "explain": "请勿上传或分享违法内容…",\n "logo_url": "",\n "favicon_url": "",\n "background_url": "",\n "footer_text": "自定义页脚内容",\n "footer_beian": "京ICP备2024xxxxxx号-1",\n "notify_enabled": 1,\n "notify_title": "系统通知",\n "notify_content": "欢迎使用文件快传…",\n "uploadSize": 10485760,\n "max_file_size": 10485760,\n "maxFileSize": 10485760,\n "allowedFileTypes": ["*"],\n "expireStyle": ["day", "hour", "minute", "forever", "count"],\n "max_save_seconds": 0,\n "maxSaveSeconds": 0,\n "max_save_count": 0,\n "maxSaveCount": 0,\n "uploadCount": 10,\n "uploadMinute": 1,\n "enableChunk": false,\n "openUpload": true\n },\n "meta": {\n "version": "2.5.6",\n "features": { "chunkUpload": false, "guestUpload": true }\n }\n }\n}\n```\n\n> 策略字段 snake_case 与 camelCase 双份下发(前端宽松解析);响应为白名单显式构造,\n> 任何敏感键(`admin_token`/`jwt_secret`)均不会出现。\n\n## 健康检查\n\n```bash\ncurl -s http://localhost:8466/api/v1/health\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "status": "ok",\n "version": "2.5.6",\n "storage": "local",\n "time": "2025-06-01T12:00:00+08:00"\n }\n}\n```\n',x='# 错误码\n\n## 响应结构\n\n```json\n{ "code": 404, "msg": "文件不存在" }\n```\n\n- `code` 与 HTTP 状态码一致;失败时无 `data` 字段。\n- `msg` 为中文可读信息,可直接展示给用户。\n\n## 业务状态码\n\n| 状态码 | 语义 | 典型场景 |\n|---|---|---|\n| 200 | 成功 | 全部正常响应 |\n| 400 | 参数/格式错误 | 缺字段、过期策略非法、时间格式错误、分片哈希不匹配、code 冲突、`chunk_size` 超 32MiB 上限、presign 实际大小与声明不符、请求体超过大小上限 |\n| 401 | 未认证 | 管理端令牌缺失/无效;登录密码错误 |\n| 403 | 拒绝 | 类型白名单拒绝、magic bytes 防伪、游客上传未开启、**分片上传未启用**(enableChunk=0)、presign 直传对象超限(服务端删除对象并释放预留)、下载 `key` 鉴权失败、超过大小/时长限制 |\n| 404 | 不存在/已过期 | 取件码不存在、文件已过期、上传会话不存在、`/api/*` 未命中路由 |\n| 409 | 冲突 | 上传容量预留信息不一致 |\n| 416 | Range 越界 | `Range: bytes=…` 超出文件大小 |\n| 423 | 限流 | upload/error/login/metadata 任一规则超限 |\n| 428 | 未初始化 | 系统未初始化时访问除 `/setup`、`/api/v1/health` 外的接口 |\n| 500 | 服务器错误 | 数据库/内部异常 |\n| 501 | 引擎不支持 | 引擎不支持预签名等操作(local/webdav 的 `PresignGetURL/PutURL`) |\n| 503 | 存储不可用 | 存储引擎连接失败/健康检查不通过时的操作 |\n| 507 | 容量超限 | 达到 `storageLimit` 上限(含上传预留判定) |\n\n## 存储哨兵错误映射\n\n存储层哨兵错误统一映射(支持错误包装链判定):\n\n| 哨兵错误 | HTTP | 响应 msg |\n|---|---|---|\n| `ErrNotFound` | 404 | 文件不存在 |\n| `ErrInvalidPath` | 400 | 非法文件路径 |\n| `ErrUnavailable` | 503 | 存储服务不可用,请稍后再试 |\n| `ErrNotSupported` | 501 | 当前存储引擎不支持该操作 |\n| `ErrRangeNotSatisfiable` | 416 | 请求范围超出文件大小 |\n| `ErrHashMismatch` | 400 | 分片哈希校验失败,请重新上传 |\n\n未识别的存储错误归入 500(`存储操作失败: …`)。\n\n## 错误结果的审计归类\n\n错误响应同时写入审计日志(需求 ③):\n\n- `denied`:401 / 403 / 423 / 429 / 428(拒绝类)。\n- `failed`:其余 4xx / 5xx 及业务显式报错。\n\n## 常见排障\n\n| 现象 | 原因与处理 |\n|---|---|\n| 全部接口 428 | 未初始化:访问 `GET /setup` 或 `POST /setup` 完成向导 |\n| 上传 403「本站未开启游客上传」 | `openUpload=0`,携带管理员 Bearer 令牌或后台开启 |\n| 上传 423 | 触发 upload 限流,等待窗口或调大 `uploadCount/uploadMinute` |\n| 取件 404「文件已过期」 | 分享过期/次数耗尽;管理员可 `PATCH /admin/file/update` 调整 |\n| 下载 403「下载鉴权失败」 | `key` 窗口令牌过期/伪造:重新 `POST /share/select` 获取新地址 |\n| 预签名 init 返回 proxy | local/webdav 引擎不支持直链,按 proxy 流程走服务端代理上传 |\n| 503 存储服务不可用 | 检查引擎配置与远端服务(S3/WebDAV)连通性;`GET /api/v1/health` 的 `storage` 字段确认引擎 |\n',b='# Logo 自定义\n\n## 默认 Logo(内置,v2 需求 ⑤)\n\n| 项 | 默认值 | 用途 |\n|---|---|---|\n| 页面导航 Logo | 前端打包本地资源 `/assets/logo-*.svg`(源:`web/src/assets/brand/logo.svg`) | 导航栏 ``;`config.logo_url` 为空时回落使用 |\n| favicon / 备用 Logo | 前端打包本地资源 `/assets/favicon-*.png`(源:`web/src/assets/brand/favicon.png`) | `index.html` `` + 动态 favicon 回落 |\n\nv2 起默认不再引用远程 URL:`GET /api/v1/config` 中 `logo_url`/`favicon_url` 默认下发空串,\n前端 `displayLogoUrl`/`displayFaviconUrl` 判空后回落到打包的本地资源。\n管理端仍可设置任意 URL 全站替换(三步如下)。\n\n## 管理端自定义(三步)\n\n1. **登录后台**:`POST /admin/login` 获取 Bearer 令牌。\n2. **保存配置**:`PATCH /admin/config/update` 更新 `logo_url`(与可选 `favicon_url`),值为图片 URL 或经管理端上传后得到的地址。\n3. **全站生效**:保存即写入 settings KV 并热更新,前端读取公共配置立即换新 Logo,无需重启。\n\ncurl 示例:\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/config/update \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"logo_url":"https://cdn.example.com/logo.svg","favicon_url":"https://cdn.example.com/favicon.png"}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "ok": true } }\n```\n\n> 也可以在管理界面「系统设置」页操作(上传图片或填写 URL),效果相同。\n\n## 校验生效\n\n```bash\ncurl -s http://localhost:8466/api/v1/config\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": { "config": { "logo_url": "https://cdn.example.com/logo.svg", "favicon_url": "https://cdn.example.com/favicon.png" } }\n}\n```\n\n## 恢复默认\n\n把 `logo_url` / `favicon_url` 置回默认值(空串,前端回落本地打包资源)即可:\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/config/update \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"logo_url":"","favicon_url":""}\'\n```\n\n## 相关行为\n\n- 前端运行时优先读取配置值;空值回退前端打包的本地资源(`web/src/assets/brand/logo.svg` + `favicon.png`,经 `displayLogoUrl`/`displayFaviconUrl` 判空回落)。\n- `site_name` 同样支持运行时自定义(`PATCH /admin/config/update` 的 `site_name` 键)。\n- Logo/favicon 仅涉及展示层,修改不影响会话与令牌(不轮换 `jwt_secret`)。\n',T=`openapi: 3.0.3 +`,_='# 管理后台 API\n\n管理端接口:除 `POST /admin/login` 与初始化向导 `/setup` 外,一律要求\n`Authorization: Bearer `(见《认证与限流》),无效令牌 401。\n\n## 初始化向导:GET /setup\n\n未初始化时返回 HTML 配置页(站点名称、管理员密码、上传/限流/保存策略);\n已初始化时 `303` 重定向到 `/`。\n\n```bash\ncurl -i http://localhost:8466/setup\n```\n\n## 初始化提交:POST /setup\n\n表单(浏览器向导)或 JSON 均可;成功后写入库配置 KV 并生成密码哈希与 `jwt_secret`。\n表单提交返回成功 HTML 页;JSON 提交返回 JSON。\n\n**主要字段**:\n\n| 字段 | 必需 | 默认 | 说明 |\n|---|---|---|---|\n| `admin_password` | ✅ | - | 管理员密码(≥8 位) |\n| `confirm_password` | ✅ | - | 确认密码(须一致) |\n| `site_name` | ❌ | 文件快传 | 站点名称 |\n| `upload_size_value` / `upload_size_unit` | ❌ | 10 / MB | 单文件大小限制(单位 KB/MB/GB) |\n| `save_time_value` / `save_time_unit` | ❌ | 0 / day | 最长保存秒数(0=不限) |\n| `expireStyle` | ❌ | day,hour,minute,forever,count | 过期方式(可多值/逗号分隔) |\n| `code_generate_type` | ❌ | secret | 取件码类型 `number`/`secret` |\n| `errorCount` / `errorMinute` | ❌ | 10 / 1 | 取件错误限流 |\n| `loginCount` / `loginMinute` | ❌ | 5 / 15 | 登录失败限流 |\n| `uploadCount` / `uploadMinute` | ❌ | 10 / 1 | 上传限流 |\n| `allowed_file_types` | ❌ | `*` | 逗号分隔白名单 |\n| `openUpload` / `enableChunk` | ❌ | 1 / 0 | 游客上传 / 分片开关(`1`/`true`/`on`/`yes`) |\n\n```bash\ncurl -s -X POST http://localhost:8466/setup \\\n -H \'Content-Type: application/json\' \\\n -d \'{"admin_password":"admin12345","confirm_password":"admin12345","site_name":"我的文件柜","upload_size_value":10,"upload_size_unit":"MB"}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "ok": true, "admin": "/#/admin" } }\n```\n\n**错误响应**(400,HTML 表单时内嵌错误提示):\n\n```json\n{ "code": 400, "msg": "管理员密码至少 8 位" }\n```\n\n## 登录:POST /admin/login\n\n```bash\ncurl -s -X POST http://localhost:8466/admin/login \\\n -H \'Content-Type: application/json\' \\\n -d \'{"password":"admin12345"}\'\n```\n\n**成功响应**(200):\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "id": "admin", "username": "admin",\n "token": "eyJhbGciOiJIUzI1NiIs...",\n "token_type": "Bearer",\n "expires_at": 1750000000,\n "expires_in": 604800\n }\n}\n```\n\n**错误响应**:\n\n```json\n{ "code": 401, "msg": "密码错误" }\n```\n\n```json\n{ "code": 423, "msg": "请求次数过多,请稍后再试" }\n```\n\n## 校验会话:GET /admin/verify\n\n```bash\ncurl -s http://localhost:8466/admin/verify -H "Authorization: Bearer $TOKEN"\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "id": "admin", "username": "admin", "token": "eyJ…", "token_type": "Bearer", "expires_at": 1750000000 } }\n```\n\n## 登出:POST /admin/logout\n\n无状态 JWT,服务端仅返回确认(客户端应丢弃令牌):\n\n```json\n{ "code": 200, "msg": "ok", "data": { "ok": true } }\n```\n\n## 仪表盘:GET /admin/dashboard\n\n```bash\ncurl -s http://localhost:8466/admin/dashboard -H "Authorization: Bearer $TOKEN"\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "totalFiles": 42,\n "storageUsed": "123456789",\n "sysUptime": 1750000000000,\n "yesterdayCount": 5, "yesterdaySize": "1048576",\n "todayCount": 12, "todaySize": "5242880",\n "activeCount": 40, "expiredCount": 2,\n "textCount": 10, "fileCount": 32, "chunkedCount": 3,\n "usedCount": 156,\n "storageBackend": "local",\n "uploadSizeLimit": 10485760,\n "openUpload": 1, "enableChunk": 1,\n "maxSaveSeconds": 0,\n "topSuffixes": [ { "suffix": ".pdf", "count": 12 }, { "suffix": "Text", "count": 10 } ],\n "recentFiles": [ { "id": 42, "code": "K3P9W", "name": "report.pdf", "size": 1048576, "created_at": "2025-06-01T12:00:00+08:00", "expired_at": "2025-06-08T12:00:00+08:00", "is_expired": false, "expired_count": -1, "used_count": 3, "is_text": false, "is_chunked": false, "is_permanent": false, "has_download_limit": false, "remaining_downloads": null, "file_hash": null, "prefix": "report", "suffix": ".pdf", "text": false, "createdAt": "2025-06-01T12:00:00+08:00", "expiredAt": "2025-06-08T12:00:00+08:00", "isExpired": false, "expiredCount": -1, "usedCount": 3, "isText": false, "isChunked": false, "isPermanent": false, "hasDownloadLimit": false, "remainingDownloads": null, "fileHash": null } ],\n "recentActivities": []\n }\n}\n```\n\n> `storageUsed`/`todaySize`/`yesterdaySize` 为字符串字节数;`sysUptime` 为服务启动时刻的 Unix 毫秒。\n\n## 文件列表:GET /admin/file/list\n\n**参数**:\n\n| 参数 | 默认 | 说明 |\n|---|---|---|\n| `page` / `size` | 1 / 10 | 分页(size 1~100) |\n| `keyword` | - | 模糊匹配取件码/文件名/哈希/文本内容 |\n| `status` | - | `active` / `expired` |\n| `type` | - | `text` / `file` / `chunked` |\n| `sortBy` | `created_at` | `created_at`/`expired_at`/`name`/`size`/`used_count`/`code` |\n| `sortOrder` | `desc` | `asc` / `desc` |\n\n```bash\ncurl -s "http://localhost:8466/admin/file/list?page=1&size=10&status=active&sortBy=size&sortOrder=desc" \\\n -H "Authorization: Bearer $TOKEN"\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "page": 1, "size": 10, "total": 40,\n "summary": { "totalFiles": 42, "activeCount": 40, "expiredCount": 2, "textCount": 10, "fileCount": 32, "chunkedCount": 3, "storageUsed": 123456789, "usedCount": 156 },\n "data": [\n { "id": 42, "code": "K3P9W", "name": "report.pdf", "prefix": "report", "suffix": ".pdf", "size": 1048576, "is_text": false, "is_chunked": false, "is_expired": false, "expired_at": "2025-06-08T12:00:00+08:00", "expired_count": -1, "used_count": 3, "created_at": "2025-06-01T12:00:00+08:00", "has_download_limit": false, "is_permanent": false, "remaining_downloads": null, "file_hash": null, "text": false, "isText": false, "isChunked": false, "isExpired": false, "expiredAt": "2025-06-08T12:00:00+08:00", "expiredCount": -1, "usedCount": 3, "createdAt": "2025-06-01T12:00:00+08:00", "hasDownloadLimit": false, "isPermanent": false, "remainingDownloads": null, "fileHash": null }\n ]\n }\n}\n```\n\n## 文件详情:GET /admin/file/detail\n\n`GET ?id=42` 或 `POST {"id":42}`。返回列表条目字段;文本分享额外含 `content`(全文)。\n\n```json\n{ "code": 200, "msg": "ok", "data": { "id": 42, "code": "K3P9W", "name": "report.pdf", "size": 1048576, "is_text": false, "expired_at": "2025-06-08T12:00:00+08:00", "expired_count": -1, "used_count": 3, "created_at": "2025-06-01T12:00:00+08:00", "file_hash": null } }\n```\n\n```json\n{ "code": 404, "msg": "文件不存在" }\n```\n\n## 更新文件:PATCH /admin/file/update\n\n更新取件码/文件名(前后缀)/过期策略。**PATCH 为主名,POST 为兼容别名**。\n\n**请求体**:\n\n| 字段 | 类型 | 说明 |\n|---|---|---|\n| `id` | int | 必需 |\n| `code` | string | 新取件码(冲突 400「code已存在」) |\n| `prefix` / `suffix` | string | 文件名前后缀 |\n| `expired_at` | string | 过期时间(ISO 8601,如 `2025-07-01T00:00:00+08:00`) |\n| `expired_count` | int | 取件次数上限(`-1` 按时间/永久) |\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/file/update \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"id":42,"expired_at":"2025-07-01T00:00:00+08:00","expired_count":10}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": "更新成功" }\n```\n\n```json\n{ "code": 400, "msg": "code已存在" }\n```\n\n## 删除文件:DELETE /admin/file/delete\n\n删除分享记录并连带删除存储文件(文本分享无存储文件)。`DELETE` 或 `POST`,请求体 `{"id":42}`。\n\n```bash\ncurl -s -X DELETE http://localhost:8466/admin/file/delete \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' -d \'{"id":42}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": null }\n```\n\n```json\n{ "code": 400, "msg": "请选择要删除的文件" }\n```\n\n## 批量删除:POST /admin/file/batch-delete\n\n`POST` 或 `DELETE`,请求体 `{"ids":[41,42,43]}`。返回逐条统计:\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "requestedCount": 3, "deletedCount": 2, "missingCount": 1, "failedCount": 0,\n "deleted": [41, 42], "missing": [43], "failed": [],\n "requested_count": 3, "deleted_count": 2, "missing_count": 1, "failed_count": 0\n }\n}\n```\n\n## 批量更新:PATCH /admin/file/batch-update\n\n`PATCH` 或 `POST`。请求体:`ids[]` 必需;`expired_at`(ISO 8601)/`expired_count` 二选一;\n`clearExpiredAt: true`(或 `clear_expired_at`)= 清空过期时间并置 `expired_count=-1`(永久)。\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/file/batch-update \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"ids":[41,42],"clearExpiredAt":true}\'\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": { "requestedCount": 2, "updatedCount": 2, "missingCount": 0, "failedCount": 0, "updated": 2, "missing": [], "failed": [], "requested_count": 2, "updated_count": 2, "missing_count": 0, "failed_count": 0 }\n}\n```\n\n## 过期策略动作:PATCH /admin/file/policy-action\n\n对单个文件执行快捷策略。`PATCH` 或 `POST`。批量版为 `/admin/file/batch-policy-action`(`{"ids":[…]}`),响应结构同批量更新。\n\n**请求体**:\n\n| 字段 | 说明 |\n|---|---|\n| `id` | 文件 ID |\n| `action` | `extend_24h` / `extend_7d` / `make_permanent` / `reset_download_limit` |\n| `downloadLimit` | 仅 `reset_download_limit` 用:新取件次数(默认 5,须 >0) |\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/file/policy-action \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"id":42,"action":"reset_download_limit","downloadLimit":3}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "id": 42, "action": "reset_download_limit" } }\n```\n\n```json\n{ "code": 400, "msg": "不支持的策略动作" }\n```\n\n> `extend_24h`/`extend_7d` 在当前过期时间(未过期时)基础上顺延;`make_permanent` 清空过期时间并置次数 -1。\n\n## 管理员下载:GET /admin/file/download?id=\n\n下载原文件(**不消耗取件次数**);文件返回二进制流(支持 Range),文本分享返回 JSON(`data` 为文本内容)。\n\n```bash\ncurl -s -OJ "http://localhost:8466/admin/file/download?id=42" -H "Authorization: Bearer $TOKEN"\n```\n\n## 文本预览:GET /admin/file/preview\n\n仅文本分享可用(文件分享返回 400)。`maxChars` 截断长度(默认 4000,1~20000)。\n\n```bash\ncurl -s "http://localhost:8466/admin/file/preview?id=41&maxChars=100" -H "Authorization: Bearer $TOKEN"\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "id": 41, "code": "8XQ2M", "name": "Text.txt", "type": "text",\n "content": "你好,文件快传",\n "length": 24, "previewLength": 24, "truncated": false,\n "maxChars": 100, "max_chars": 100,\n "created_at": "2025-06-01T12:00:00+08:00", "createdAt": "2025-06-01T12:00:00+08:00"\n }\n}\n```\n\n```json\n{ "code": 400, "msg": "仅文本分享支持预览" }\n```\n\n## 读取配置:GET /admin/config/get\n\n返回运行时配置 KV(含默认值与管理端修改)。`admin_token` 恒返回空串(屏蔽);\n`jwt_secret` 不下发;存储引擎为进程级单例,`_engine_hint` 提示引擎配置修改需重启。\nv2 新增键(需求 ①②③④⑩)一并返回:`background_url`、`footer_text`、`footer_beian`、\n`notify_enabled`、`max_save_count`、`max_file_size` 等。\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "site_name": "文件快传",\n "name": "文件快传",\n "description": "开箱即用的文件快传系统",\n "page_explain": "…", "keywords": "…",\n "notify_title": "系统通知", "notify_content": "…", "notify_enabled": 1,\n "logo_url": "",\n "favicon_url": "",\n "background_url": "", "footer_text": "", "footer_beian": "",\n "openUpload": 1, "uploadSize": 10485760,\n "max_file_size": 0, "max_save_count": 0,\n "allowed_file_types": ["*"], "expireStyle": ["day","hour","minute","forever","count"],\n "code_generate_type": "secret", "enableChunk": 1,\n "uploadMinute": 1, "uploadCount": 10,\n "errorMinute": 1, "errorCount": 10,\n "loginCount": 5, "loginMinute": 15,\n "max_save_seconds": 0, "storageLimit": 0,\n "opacity": 0.9, "background": "", "showAdminAddr": 0, "robotsText": "User-agent: *\\nDisallow: /",\n "adminSessionExpire": 604800,\n "storage_path": "", "local_storage_path": "/app/data",\n "file_storage": "local",\n "admin_token": "",\n "_engine_hint": { "storage_backend": "local", "note": "存储引擎为进程级单例,修改存储引擎相关配置后需重启服务生效" }\n }\n}\n```\n\n## 存储引擎热切换:POST /admin/storage/switch(v3)\n\n运行时切换存储引擎,**无需重启**:\n\n```bash\ncurl -s -X POST http://localhost:8466/admin/storage/switch \\\n -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \\\n -d \'{"engine":"s3"}\'\n# 成功:{"code":200,"msg":"ok","data":{"ok":true,"engine":"s3"}}\n# 失败:503 {"code":503,"msg":"存储引擎切换失败,已保持原引擎: …"}\n```\n\n- `engine` 仅接受 `local|s3|webdav`(400 中文错误)。\n- 切换流程:用最新 KV 参数构建新引擎 → 健康检查 → 通过才替换当前引擎并持久化 `storage_engine`。\n- 失败(构建/健康检查不过)返回 503,**原引擎与 KV 均保持不变**。\n- 切到当前引擎为幂等操作(直接返回 200)。\n- 旧文件按归属引擎(`file_codes.engine`)取回,切换后旧引擎文件仍可下载。\n\n## 更新配置:PATCH /admin/config/update\n\n部分更新(JSON 对象,未提供的键不变;表单亦可)。**PATCH 为主名,POST 为兼容别名**。\n\n- 仅接受管理端可见键(见上响应键集合),未知键忽略。\n- 数值型键自动转型:`openUpload`、`enableChunk`、`uploadSize`、`storageLimit`、限流四组、`max_save_seconds`、`adminSessionExpire`、`showAdminAddr`;v2 新增 `max_save_count`、`max_file_size`、`notify_enabled`;`opacity` 为浮点。\n- **v3.1**:`site_domain`(站点对外域名)可经本端点设置,非法格式 400(仅 http/https、主机+端口、不带路径)。\n- **v3 引擎键**:`storage_engine` 不经本端点修改(走 `POST /admin/storage/switch`);引擎参数键\n (`local_storage_path`、`webdav_url`、`webdav_root_path`、`webdav_username`、`webdav_password`、\n `s3_endpoint_url`、`s3_region_name`、`s3_bucket_name`、`s3_access_key_id`、`s3_secret_access_key`、\n `aws_session_token`、`s3_addressing_style`)可经本端点保存——保存后对应引擎实例缓存失效,\n 下次切换/构建生效;敏感键空串或 `******` 表示不修改。\n- **v2 schema 校验**(`settings.KVSchema`,越界一律 400,中文错误信息):\n - 整型边界:`max_file_size` ≤ 10GiB(10737418240)、`max_save_count` ≤ 100000、`max_save_seconds` ≤ 31536000(365 天)、`notify_enabled` ∈ {0,1}、`uploadCount` 1~10000、`uploadMinute` 1~1440 等;\n - 字符串长度:`background_url` ≤ 2048、`footer_text` ≤ 2000、`footer_beian` ≤ 128、`notify_title` ≤ 128、`notify_content` ≤ 2000 字符;\n - 列表键 `expireStyle` / `allowed_file_types`:须为字符串数组(或逗号分隔串)且至少保留一项;\n - 错误示例:`{"code":400,"msg":"max_file_size 必须是整数"}`、`{"code":400,"msg":"max_file_size 不能大于 10737418240"}`、`{"code":400,"msg":"footer_beian 长度不能超过 128 字符"}`、`{"code":400,"msg":"notify_enabled 不能大于 1"}`。\n- `background_url` 协议白名单(需求 ①,防 `javascript:` 注入):仅 `http(s)://`、`data:image/*` 与站内相对路径(`/`开头);空串=清除背景。非法值 400:\n `{"code":400,"msg":"background_url 仅支持 http(s) 地址、data:image 图片或站内相对路径"}`\n- `admin_token`:明文密码自动哈希,**并轮换 `jwt_secret`(全部管理员令牌立即失效)**;空串忽略;已是哈希格式则原样保存。\n- `adminSessionExpire` 须为 1~365 的整天秒数(86400 的整数倍),否则 400。\n- `storageLimit` 不能小于 0。\n- 修改限流/策略配置**立即生效**(无需重启:限流规则运行时同步,策略由上传链路每次实时读取);引擎相关(`file_storage`/`s3_*`/`webdav_*`/`storage_path`/`local_storage_path`)需重启。\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/config/update \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"site_name":"我的文件柜","uploadSize":52428800,"openUpload":1,"footer_beian":"京ICP备20240001号","max_file_size":10485760,"max_save_count":5}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "ok": true } }\n```\n\n```json\n{ "code": 400, "msg": "adminSessionExpire 必须是 1 到 365 个整天" }\n```\n\n```json\n{ "code": 400, "msg": "background_url 仅支持 http(s) 地址、data:image 图片或站内相对路径" }\n```\n\n## 修改管理员密码:PATCH /admin/settings/password\n\n`PATCH` 或 `POST`。新密码 ≥8 位;成功后哈希保存并**轮换 `jwt_secret`,所有旧令牌失效(401)**,需重新登录。\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/settings/password \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"old_password":"admin12345","new_password":"new-pass-6789"}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "ok": true } }\n```\n\n```json\n{ "code": 400, "msg": "新密码长度至少 8 位" }\n```\n\n```json\n{ "code": 401, "msg": "旧密码错误" }\n```\n',y='# 审计日志查询\n\n所有上传/下载请求由审计中间件自动落库(需求 ③),管理端分页查询。\n认证:`Authorization: Bearer `。\n\n## 审计记录内容\n\n每条审计日志覆盖以下维度(需求 ③):\n\n| 维度 | 字段 | 说明 |\n|---|---|---|\n| 操作时间 | `created_at` | RFC 3339 |\n| 客户端 | `ip` | 可信代理场景解析 XFF 后的真实 IP |\n| 终端信息 | `user_agent` | 原始 UA |\n| 设备解析 | `device_os` / `device_browser` / `device_type` | 由 UA 解析(如 Windows/Chrome/desktop) |\n| 动作 | `action` | `upload`(上传类) / `download`(取件/下载类) / `admin`(管理端敏感操作,26.9 新增) |\n| 结果 | `result` | `success` / `denied`(拒绝:401/403/423/428)/ `failed`(失败:其余 4xx/5xx 或业务报错) |\n| 字节数 | `size_bytes` | 文件总大小;`transferred_bytes` 实际传输(**Range 下载只计实际区间字节**;下载由中间件自动统计,上传由各 handler 填充) |\n| 耗时 | `duration_ms` | 毫秒 |\n| 角色 | `actor` | `admin`(有效管理员令牌)/ `guest` |\n| 业务 | `file_code` / `file_name` | 取件码 / 文件名(分片上传时 `file_code` 为 `upload_id`) |\n| 错误 | `error_msg` | 失败/拒绝原因 |\n\n**命中审计的端点**:上传类 `POST /share/text`、`POST /share/file`、`/chunk/upload*`、`/presign*`(POST/PUT);\n下载类 `GET /share/download`、`GET /share/select`、`GET /share/metadata`;\n管理类(`action=admin`)`POST /admin/login`、`POST /admin/logout`、`PATCH|POST /admin/config/update`、\n`PATCH|POST /admin/settings/password`、`POST /admin/storage/switch`、`PATCH|DELETE /admin/file/update|delete|batch-delete|batch-update|policy-action|batch-policy-action`。\n管理类动作未显式填结果时按 HTTP 状态兜底落库(401/403/423 → `denied`,5xx → `failed`,其余 → `success`)。\n失败与被拒绝的请求同样落库。\n\n## 查询接口:GET /admin/audit/list\n\n**参数**:\n\n| 参数 | 默认 | 说明 |\n|---|---|---|\n| `page` | 1 | 页码(≥1) |\n| `size` | 20 | 每页条数(1~200;兼容 `pageSize`) |\n| `action` | - | `upload` / `download` / `admin` |\n| `result` | - | `success` / `denied` / `failed` |\n| `ip` | - | 按客户端 IP 过滤 |\n| `start_time` / `end_time` | - | 时间范围,ISO 8601(如 `2025-06-01T00:00:00+08:00`;也接受 `2006-01-02 15:04:05` / 日期) |\n\n```bash\ncurl -s "http://localhost:8466/admin/audit/list?page=1&size=20&action=download&result=success&start_time=2025-06-01T00:00:00%2B08:00" \\\n -H "Authorization: Bearer $TOKEN"\n```\n\n**成功响应**(200):\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "data": [\n {\n "id": 318,\n "action": "download",\n "file_code": "K3P9W",\n "file_name": "report.pdf",\n "size_bytes": 1048576,\n "transferred_bytes": 524288,\n "ip": "203.0.113.7",\n "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",\n "device_os": "Windows",\n "device_browser": "Chrome",\n "device_type": "desktop",\n "actor": "guest",\n "result": "success",\n "error_msg": "",\n "duration_ms": 128,\n "created_at": "2025-06-01T12:03:45+08:00",\n "fileCode": "K3P9W",\n "fileName": "report.pdf",\n "sizeBytes": 1048576,\n "transferredBytes": 524288,\n "userAgent": "Mozilla/5.0 …",\n "deviceOs": "Windows",\n "deviceBrowser": "Chrome",\n "deviceType": "desktop",\n "errorMsg": "",\n "durationMs": 128,\n "createdAt": "2025-06-01T12:03:45+08:00"\n }\n ],\n "total": 1180,\n "page": 1,\n "size": 20\n }\n}\n```\n\n> 行字段以 snake_case 为准;camelCase 为兼容双份输出(文档不再重复列出)。\n\n**错误响应**:\n\n```json\n{ "code": 400, "msg": "start_time 时间格式错误" }\n```\n\n```json\n{ "code": 401, "msg": "令牌无效或已过期" }\n```\n\n## 别名:GET /admin/audit/logs\n\n与 `/admin/audit/list` 完全相同(同一 handler 的兼容别名),参数与响应一致。\n\n## 典型查询\n\n```bash\n# 最近的下载行为\ncurl -s "http://localhost:8466/admin/audit/list?action=download&size=50" -H "Authorization: Bearer $TOKEN"\n\n# 某 IP 的全部被拒请求(限流/鉴权失败)\ncurl -s "http://localhost:8466/admin/audit/list?ip=203.0.113.7&result=denied" -H "Authorization: Bearer $TOKEN"\n\n# 今天 0 点以来的上传失败\ncurl -s "http://localhost:8466/admin/audit/list?action=upload&result=failed&start_time=2025-06-01T00:00:00%2B08:00" \\\n -H "Authorization: Bearer $TOKEN"\n```\n',h='# 存储引擎配置\n\n存储引擎只支持三种:**本地磁盘 / S3 / WebDAV**,由进程级环境变量 `FCB_STORAGE_ENGINE` 选择。\n引擎与引擎相关配置在启动时一次性读取(`storage.SetEngineOptions` → `NewEngine`),\n**运行时修改引擎 KV 需重启服务**(管理端 `GET /admin/config/get` 的 `_engine_hint` 亦有提示)。\n\n## 引擎选择\n\n```bash\nFCB_STORAGE_ENGINE=local # 启动默认(KV storage_engine 为空时生效)\nFCB_STORAGE_ENGINE=s3\nFCB_STORAGE_ENGINE=webdav\n```\n\n非法值直接启动失败:`FCB_STORAGE_ENGINE 无效值 "xxx",仅支持 local|s3|webdav`。\n\n**v3 运行时热切换**:管理端 `POST /admin/storage/switch`(或后台设置页「存储引擎」卡)可在不重启的情况下切换引擎——\n先构建新引擎并健康检查,通过才生效;失败 503 保持原引擎。当前引擎持久化在 settings KV `storage_engine`(空=回落启动值)。\n各引擎参数(存储目录/服务地址/存储桶/密钥)同样在后台设置页运行时可改;保存后对应引擎实例缓存失效,下次切换/构建生效。\n\n## 文件归属引擎(v3)\n\n每条分享记录(`file_codes.engine`)与上传会话(`upload_chunks.engine` / `presign_upload_sessions.engine`)\n在创建时戳记当时的引擎名。下载、分片合并、删除按**归属引擎**操作——切换引擎后,旧引擎里的文件仍可正常下载与删除\n(空戳为历史数据,回落当前引擎)。\n\n## 按日期目录存储\n\n文件落盘路径:`[storage_path/]share/data/YYYY/MM/DD//<文件名>`(如 `share/data/2026/09/04/…`)。\n按日嵌套目录自然排序、无日月歧义、避免单日海量文件挤在单目录;三种引擎一致适用;历史路径记录在\n`file_codes.file_path`,不受路径规则调整影响。\n\n## 配置键与环境变量\n\n引擎相关配置键(DB settings KV)可由环境变量种子注入(优先级:默认 < 环境变量 < DB KV):\n\n| KV 键 | 环境变量 | 引擎 | 说明 |\n|---|---|---|---|\n| `local_storage_path` | `FCB_LOCAL_STORAGE_PATH` | local | 本地存储根目录(容器内默认 `/app/data`) |\n| `storage_path` | `FCB_STORAGE_PATH` | 全部 | 存储相对路径前缀(空 = `share/data/…`) |\n| `s3_access_key_id` | `FCB_S3_ACCESS_KEY_ID` | s3 | 访问密钥 |\n| `s3_secret_access_key` | `FCB_S3_SECRET_ACCESS_KEY` | s3 | 私有密钥 |\n| `aws_session_token` | `FCB_AWS_SESSION_TOKEN` | s3 | 可选临时会话令牌 |\n| `s3_bucket_name` | `FCB_S3_BUCKET_NAME` | s3 | 桶名 |\n| `s3_endpoint_url` | `FCB_S3_ENDPOINT_URL` | s3 | S3 兼容端点(MinIO/R2 等;AWS 原生可空) |\n| `s3_region_name` | `FCB_S3_REGION_NAME` | s3 | 区域(默认 `auto`) |\n| `s3_addressing_style` | `FCB_S3_ADDRESSING_STYLE` | s3 | `auto`/`path`/`virtual` |\n| `webdav_url` | `FCB_WEBDAV_URL` | webdav | WebDAV 服务地址(如 `http://webdav:5000`) |\n| `webdav_username` | `FCB_WEBDAV_USERNAME` | webdav | 用户名 |\n| `webdav_password` | `FCB_WEBDAV_PASSWORD` | webdav | 密码 |\n| `webdav_root_path` | `FCB_WEBDAV_ROOT_PATH` | webdav | 根目录(默认 `filebox_storage`,不存在自动逐级创建) |\n\n`FCB_STORAGE_ENGINE` 本身不落库(`GET /admin/config/get` 中的 `file_storage` 为 KV 记忆键,\n进程实际引擎以 `FCB_STORAGE_ENGINE` 与 `_engine_hint.storage_backend` 为准)。\n\n## 各引擎要点\n\n### 本地引擎(local)\n\n- 原子写:临时文件 + fsync + rename,避免半写文件。\n- 路径安全:`SanitizePath` + 符号链接逃逸双重防穿越。\n- Range 下载基于 `SectionReader`;分片按索引有序合并 + SHA256 校验,合并后清理分片目录。\n\n### S3 引擎(s3)\n\n- 原生 multipart 流式合并(失败自动 Abort),分片落临时文件保证精确 Content-Length 与可重放。\n- 预签名 GET/PUT 直链(预签名直传唯一 `direct` 模式引擎)。\n- SDK 内置 5xx 指数退避重试;`when_required` 校验模式兼容 MinIO/R2 与纯流式转发。\n\n### WebDAV 引擎(webdav,重点优化)\n\n- **连接复用**:池化 Transport,连接复用(实测 25 次请求仅 1 条 TCP 连接)。\n- **认证**:Basic + Digest(RFC 2617 `qop=auth`,MD5/SHA-256)自动协商,401 挑战驱动。\n- **Range**:`Range` 头透传 + `206` 解析,支持分块/断点下载。\n- **重试**:5xx/429/408 指数退避(封顶 2s ± 20% 抖动,尊重 `Retry-After`)。\n- **流式**:下载经 `io.Pipe` 流式转发不落盘;上下文取消挂到响应体读完之后,防止提前断连。\n- **目录**:按需逐级 `MKCOL` + 目录缓存,避免重复建目录。\n- **超时**:可配置(`webdav_url` 同级暂无独立超时键,引擎默认值内置)。\n\n## 健康检查\n\n三引擎均实现 `HealthCheck`:local 写探针、s3 `ListObjectsV2`、webdav `PROPFIND`(根目录不存在时自建)。\n服务启动时预检失败仅告警不阻断;运行状态可经 `GET /api/v1/health` 的 `data.storage` 查看当前引擎名。\n\n## 预签名直传支持矩阵\n\n| 引擎 | `PresignPutURL` / `PresignGetURL` | init 返回 mode |\n|---|---|---|\n| s3 | ✅ | `direct` |\n| local / webdav | ❌(`ErrNotSupported`) | `proxy`(走服务端代理上传) |\n\n引擎不支持的操作经统一映射返回 501:\n\n```json\n{ "code": 501, "msg": "当前存储引擎不支持该操作" }\n```\n\n## Docker Compose 冒烟编排\n\n`deploy/docker-compose.yml` 提供可选 profile(详见 deploy/README.md):\n\n```bash\ndocker compose --profile minio up -d --build # MinIO(含 mc 自动建桶)+ FCB_STORAGE_ENGINE=s3\ndocker compose --profile webdav up -d --build # dufs WebDAV 冒烟(admin/admin123)+ FCB_STORAGE_ENGINE=webdav\ndocker compose --profile redis up -d --build # Redis 缓存增强(非引擎)\n```\n\n## 存储哨兵错误 → HTTP 状态\n\n| 哨兵错误 | HTTP | 文案 |\n|---|---|---|\n| `ErrNotFound` | 404 | 文件不存在 |\n| `ErrInvalidPath` | 400 | 非法文件路径 |\n| `ErrUnavailable` | 503 | 存储服务不可用,请稍后再试 |\n| `ErrNotSupported` | 501 | 当前存储引擎不支持该操作 |\n| `ErrRangeNotSatisfiable` | 416 | 请求范围超出文件大小 |\n| `ErrHashMismatch` | 400 | 分片哈希校验失败,请重新上传 |\n\n容量超限(`storageLimit`,经容量预留判定)返回 507:`存储空间已达到管理员设置的容量上限`。\n',f='# 环境变量与配置项\n\n配置分三层:**默认值 → `FCB_*` 环境变量 → 数据库 settings KV(管理端运行时修改)**。\nv2 起进程必需的环境变量为空集:数据库默认 **SQLite**(modernc.org/sqlite 纯 Go 驱动,零外部依赖,\nDSN 缺省落 `./data/fileshare.db`);`FCB_DB_DRIVER=postgres` 时 `FCB_DB_DSN` 必需(需求 ⑧)。\n\n## 环境变量(进程级)\n\n| 变量 | 必需 | 默认 | 说明 |\n|---|---|---|---|\n| `FCB_DB_DRIVER` | ❌ | `sqlite` | 数据库驱动:`sqlite` / `postgres`(需求 ⑧) |\n| `FCB_DB_DSN` | 视驱动 | `./data/fileshare.db` | postgres:连接串(**必需**,如 `postgres://user:pass@host:5432/filecodebox?sslmode=disable`);sqlite:数据库文件路径(可空,父目录自动创建) |\n| `FCB_REDIS_ADDR` | ❌ | 空 | Redis 地址(如 `redis:6379`),也支持 `redis://[:password@]host:port[/db]` / `rediss://`(TLS)URL 形式;**空则缓存降级为进程内存实现**(缓存故障时自动降级为进程内限流计数) |\n| `FCB_REDIS_DB` | ❌ | `0` | Redis 逻辑库号 0-15;URL 形式地址显式携带 `/N` 时以 URL 为准 |\n| `FCB_ADMIN_PASSWORD` | ❌ | 空 | 设置后服务首次启动即自动初始化管理员(≥8 位,不足告警跳过),消除 `/setup` 被抢占窗口;初始化完成后建议移除 |\n| `FCB_LISTEN` | ❌ | `:8466` | HTTP 监听地址 |\n| `FCB_STORAGE_ENGINE` | ❌ | `local` | 存储引擎:`local` / `s3` / `webdav` |\n| `FCB_TRUSTED_PROXIES` | ❌ | 空 | 可信代理 CIDR(逗号分隔),命中时从 `X-Forwarded-For` 解析真实客户端 IP |\n\n- SQLite 连接参数(驱动自动注入):`busy_timeout=10s` + `WAL` 日志模式 + `foreign_keys=1`;连接池 8/4。\n- Postgres 连接池沿用 v1 参数(32/8,1h 轮换);`FCB_DB_DRIVER=postgres` 且未设 `FCB_DB_DSN` 时**启动直接报错**。\n\n引擎相关环境变量(种子注入 settings KV,见《存储引擎配置》):`FCB_LOCAL_STORAGE_PATH`、\n`FCB_STORAGE_PATH`、`FCB_S3_ACCESS_KEY_ID`、`FCB_S3_SECRET_ACCESS_KEY`、`FCB_AWS_SESSION_TOKEN`、\n`FCB_S3_BUCKET_NAME`、`FCB_S3_ENDPOINT_URL`、`FCB_S3_REGION_NAME`、`FCB_S3_ADDRESSING_STYLE`、\n`FCB_WEBDAV_URL`、`FCB_WEBDAV_USERNAME`、`FCB_WEBDAV_PASSWORD`、`FCB_WEBDAV_ROOT_PATH`。\n\n部署用编排变量(`deploy/.env.example`):`WEB_PORT`(默认 8466)、\n`POSTGRES_USER` / `POSTGRES_PASSWORD` / `POSTGRES_DB`(默认 fileshare,仅 `--profile postgres` 时使用)。\n\n## 配置项(settings KV,默认值对齐参考实现)\n\n> 键名/类型/默认值/边界以 `server/internal/config/schema.go` 的 `KVSchema()` 为单一事实来源\n> (schema 同步测试保证与 defaults() 逐键一致);v2 新增键统一 snake_case。\n\n### 站点信息与展示(需求 ①②③)\n\n| 键 | 类型/边界 | 默认 | 说明 |\n|---|---|---|---|\n| `site_name` / `name` | string | 文件快传 | 站点名称(`site_name` 优先) |\n| `site_domain` | string,≤256 | 空 | **v3.1**:站点对外域名(`http(s)://host[:port]`,不带路径;裸主机自动补 `http://`)。配置后分享链接(结果卡/管理端复制)用该域名生成——内网部署也能把公网链接发出去;留空=用当前访问地址 |\n| `description` | string | 开箱即用的文件快传系统 | 站点描述 |\n| `page_explain` | string | (合规声明) | 页面说明文案 |\n| `keywords` | string | 文件快传, 文件分享… | SEO 关键词 |\n| `logo_url` | string | 空(前端回落本地打包 `/assets/logo-*.svg`,需求 ⑤) | 页面导航 Logo,管理端可设任意 URL |\n| `favicon_url` | string | 空(前端回落本地打包 `/assets/favicon-*.png`,需求 ⑤) | favicon / 备用 Logo |\n| `opacity` | float | 0.9 | 界面不透明度 |\n| `background` | string | 空 | 背景图 URL(参考实现既有键,v1 兼容保留) |\n| `background_url` | string,≤2048 字符 | 空 | **v2 需求 ①**:背景图 URL 或上传后地址(空=主题默认;取值时 legacy `background` 键兜底)。管理端保存时校验协议白名单:仅 `http(s)`、`data:image/*` 与站内相对路径(防 `javascript:` 注入,非法 400) |\n| `footer_text` | string,≤2000 字符 | 空 | **v2 需求 ②**:页脚自定义内容(纯文本或受控 HTML 片段) |\n| `footer_beian` | string,≤128 字符 | 空 | **v2 需求 ②**:备案号(如 `京ICP备2024xxxxxx号-1`),展示于页脚 |\n| `notify_enabled` | int(0/1) | 1 | **v2 需求 ③**:通知开关(1=前台右上角悬浮窗展示 / 0=关闭) |\n| `notify_title` | string,≤128 字符 | 系统通知 | 通知标题 |\n| `notify_content` | string,≤2000 字符 | 欢迎使用… | 通知正文(**服务端白名单净化**:仅保留纯文本与 `` 为 http(s)/站内相对/`#` 锚点的链接,其余标签与事件属性剥离,保存与读取双侧生效) |\n| `showAdminAddr` | int(0/1) | 0 | 是否展示后台入口 |\n| `robotsText` | string | `User-agent: *\\nDisallow: /` | robots.txt 内容(由公开端点 `GET /robots.txt` 输出) |\n\n### 保存策略(需求 ④,上传页动态读取并在范围内选择)\n\n| 键 | 类型/边界 | 默认 | 说明 |\n|---|---|---|---|\n| `max_save_seconds` | int64,0~31536000 | 0 | 最长保存秒数上限(0=仅默认 7 天兜底;>0 时按时间过期超限 403「限制最长时间为 X,可换用其他方式」)。**v3**:管理界面以「小时/天」下拉单位编辑(≥1 天自动显示天),提交时前端换算为秒——canonical 单位保持秒,接口语义不变 |\n| `max_save_count` | int,0~100000 | 0 | **v2 新增**:单次分享最大可取(保存)次数上限(0=不限制;`expire_style=count` 且 `expire_value` 超上限时 403「限制次数最多为 N 次」) |\n| `expireStyle` | []string | `["day","hour","minute","forever","count"]` | 允许的过期方式白名单(上传时不在白名单 400「过期时间类型错误」) |\n\n### 存储策略(需求 ④⑩)\n\n| 键 | 类型/边界 | 默认 | 说明 |\n|---|---|---|---|\n| `uploadSize` | int64,1024~10GiB | 10485760(10MB) | 单文件大小上限(字节),参考实现语义;`max_file_size=0` 时作为生效上限 |\n| `max_file_size` | int64,0~10GiB | 0 | **v2 新增**:存储策略-单文件上限(字节),0=回落 `uploadSize`;超出 403(文案 humanSize 自适应 B/KB/MB/GB)。**v3**:管理界面以「MB/GB」下拉单位编辑(≥1 GiB 自动显示 GB),提交时前端换算为字节 |\n| `allowed_file_types` | []string | `["*"]` | 允许类型白名单(扩展名/MIME 通配,`*` 不限制;非白名单 403「不允许上传该类型文件」) |\n| `storageLimit` | int64,≥0 | 0 | 站点总容量(字节),0=不限制(超限 507) |\n| `openUpload` | int(0/1) | 1 | 游客上传开关(0 时上传接口要求管理员令牌 403) |\n| `enableChunk` | int(0/1) | 0 | 启用分片上传 |\n\n### 上传频率限制(需求 ④,既有键对齐参考 ip_limit["upload"])\n\n| 键 | 类型/边界 | 默认 | 说明 |\n|---|---|---|---|\n| `uploadCount` / `uploadMinute` | int(1~10000 / 1~1440) | 10 / 1 | 窗口内允许上传次数 / 窗口分钟(上传成功才计数,超限 423;管理端修改后运行时同步限流规则,立即生效) |\n| `errorCount` / `errorMinute` | int | 10 / 1 | 取件错误(失败计数)+ metadata 每次计数 |\n| `loginCount` / `loginMinute` | int | 5 / 15 | 登录失败计数 |\n\n### 安全与会话\n\n| 键 | 默认 | 说明 |\n|---|---|---|\n| `admin_token` | 空(未初始化) | 管理员密码哈希(`sha256$salt$hash`);GET 配置时屏蔽为空串 |\n| `jwt_secret` | 空 | JWT 签名密钥(初始化/改密时自动生成轮换;不下发;`settings.SensitiveKeys` 双模式下一致屏蔽) |\n| `adminSessionExpire` | 604800(7 天) | 管理员会话秒数(须 1~365 整天) |\n\n### 存储引擎(v3 运行时可配 + 热切换)\n\n**`storage_engine`**(v3 新增键):string,`local|s3|webdav`,默认空=回落启动值 `FCB_STORAGE_ENGINE`。\n运行时切换走 **`POST /admin/storage/switch`**(JWT 保护):构建新引擎 → 健康检查通过才生效;\n失败返回 503「存储引擎切换失败,已保持原引擎: …」且不改 KV。成功后持久化 `storage_engine`,重启沿用。\n`GET /api/v1/config` 公开下发 `storage_engine` 当前名(仅名称,任何引擎参数/凭据不下发)。\n\n引擎参数键(管理端可改;保存后对应引擎实例缓存失效,下次切换/构建生效):\n\n| 键 | 默认 |\n|---|---|\n| `file_storage` | `local` |\n| `storage_path` | 空 |\n| `local_storage_path` | 空(容器内由 `FCB_LOCAL_STORAGE_PATH=/app/data` 注入) |\n| `s3_access_key_id` / `s3_secret_access_key` / `aws_session_token` | 空 |\n| `s3_bucket_name` / `s3_endpoint_url` / `s3_hostname` | 空 |\n| `s3_region_name` | `auto` |\n| `s3_signature_version` | `s3v4` |\n| `s3_addressing_style` | `auto` |\n| `s3_proxy` | 0 |\n| `webdav_url` / `webdav_username` / `webdav_password` | 空 |\n| `webdav_root_path` | `filebox_storage` |\n| `webdav_proxy` | 0 |\n\n> 敏感键 `webdav_password` / `s3_secret_access_key` / `aws_session_token`(v3 加入 `settings.SensitiveKeys`):\n> 管理端 GET 返回掩码 `******`;PATCH 时空串或 `******` 表示不修改。直接写库 settings KV 后重启同样生效。\n\n## 策略动态生效机制(v2 需求 ④⑩)\n\n上传页通过 `GET /api/v1/config` 的 `config` 字段读取**当前策略快照**并在范围内渲染选项;\n上传链路(`/share/file`、`/chunk/*`、`/presign/*`)**每次请求实时读取** settings KV 同一组值校验:\n\n- 管理端改策略(`PATCH /admin/config/update`)→ 公开 config 即时反映 → 后续上传立即按新策略执行(含 403/400 拒绝与恢复放行)。\n- 生效上限:`max_file_size > 0` 时为 `max_file_size`,否则回落 `uploadSize`。\n- 校验点覆盖:单文件(`/share/file`)、分片 init 按分片数上限、分片上传累计、分片 complete 累计、预签名 init 声明大小,五处口径一致(`api.UploadPolicy.CheckSize`)。\n\n## 公共配置接口\n\n前端启动时经 `GET /api/v1/config` 获取站点公开配置(无需认证;v2 扩展需求 ①②③④⑩):\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "config": {\n "name": "文件快传",\n "description": "开箱即用的文件快传系统",\n "explain": "请勿上传或分享违法内容…",\n "logo_url": "",\n "favicon_url": "",\n "background_url": "",\n "footer_text": "自定义页脚内容",\n "footer_beian": "京ICP备2024xxxxxx号-1",\n "notify_enabled": 1,\n "notify_title": "系统通知",\n "notify_content": "欢迎使用文件快传…",\n "uploadSize": 10485760,\n "max_file_size": 10485760,\n "maxFileSize": 10485760,\n "allowedFileTypes": ["*"],\n "expireStyle": ["day", "hour", "minute", "forever", "count"],\n "max_save_seconds": 0,\n "maxSaveSeconds": 0,\n "max_save_count": 0,\n "maxSaveCount": 0,\n "uploadCount": 10,\n "uploadMinute": 1,\n "enableChunk": false,\n "openUpload": true\n },\n "meta": {\n "version": "26.9",\n "features": { "chunkUpload": false, "guestUpload": true }\n }\n }\n}\n```\n\n> 策略字段 snake_case 与 camelCase 双份下发(前端宽松解析);响应为白名单显式构造,\n> 任何敏感键(`admin_token`/`jwt_secret`)均不会出现。\n\n## 健康检查\n\n```bash\ncurl -s http://localhost:8466/api/v1/health\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": {\n "status": "ok",\n "version": "26.9",\n "storage": "local",\n "time": "2025-06-01T12:00:00+08:00"\n }\n}\n```\n',x='# 错误码\n\n## 响应结构\n\n```json\n{ "code": 404, "msg": "文件不存在" }\n```\n\n- `code` 与 HTTP 状态码一致;失败时无 `data` 字段。\n- `msg` 为中文可读信息,可直接展示给用户。\n\n## 业务状态码\n\n| 状态码 | 语义 | 典型场景 |\n|---|---|---|\n| 200 | 成功 | 全部正常响应 |\n| 400 | 参数/格式错误 | 缺字段、过期策略非法、时间格式错误、分片哈希不匹配、code 冲突、`chunk_size` 超 32MiB 上限、presign 实际大小与声明不符、请求体超过大小上限 |\n| 401 | 未认证 | 管理端令牌缺失/无效;登录密码错误 |\n| 403 | 拒绝 | 类型白名单拒绝、magic bytes 防伪、游客上传未开启、**分片上传未启用**(enableChunk=0)、presign 直传对象超限(服务端删除对象并释放预留)、下载 `key` 鉴权失败、超过大小/时长限制 |\n| 404 | 不存在/已过期 | 取件码不存在、文件已过期、上传会话不存在、`/api/*` 未命中路由 |\n| 409 | 冲突 | 上传容量预留信息不一致 |\n| 416 | Range 越界 | `Range: bytes=…` 超出文件大小 |\n| 423 | 限流 | upload/error/login/metadata 任一规则超限 |\n| 428 | 未初始化 | 系统未初始化时访问除 `/setup`、`/api/v1/health` 外的接口 |\n| 500 | 服务器错误 | 数据库/内部异常 |\n| 501 | 引擎不支持 | 引擎不支持预签名等操作(local/webdav 的 `PresignGetURL/PutURL`) |\n| 503 | 存储不可用 | 存储引擎连接失败/健康检查不通过时的操作 |\n| 507 | 容量超限 | 达到 `storageLimit` 上限(含上传预留判定) |\n\n## 存储哨兵错误映射\n\n存储层哨兵错误统一映射(支持错误包装链判定):\n\n| 哨兵错误 | HTTP | 响应 msg |\n|---|---|---|\n| `ErrNotFound` | 404 | 文件不存在 |\n| `ErrInvalidPath` | 400 | 非法文件路径 |\n| `ErrUnavailable` | 503 | 存储服务不可用,请稍后再试 |\n| `ErrNotSupported` | 501 | 当前存储引擎不支持该操作 |\n| `ErrRangeNotSatisfiable` | 416 | 请求范围超出文件大小 |\n| `ErrHashMismatch` | 400 | 分片哈希校验失败,请重新上传 |\n\n未识别的存储错误归入 500(`存储操作失败: …`)。\n\n## 错误结果的审计归类\n\n错误响应同时写入审计日志(需求 ③):\n\n- `denied`:401 / 403 / 423 / 429 / 428(拒绝类)。\n- `failed`:其余 4xx / 5xx 及业务显式报错。\n\n## 常见排障\n\n| 现象 | 原因与处理 |\n|---|---|\n| 全部接口 428 | 未初始化:访问 `GET /setup` 或 `POST /setup` 完成向导 |\n| 上传 403「本站未开启游客上传」 | `openUpload=0`,携带管理员 Bearer 令牌或后台开启 |\n| 上传 423 | 触发 upload 限流,等待窗口或调大 `uploadCount/uploadMinute` |\n| 取件 404「文件已过期」 | 分享过期/次数耗尽;管理员可 `PATCH /admin/file/update` 调整 |\n| 下载 403「下载鉴权失败」 | `key` 窗口令牌过期/伪造:重新 `POST /share/select` 获取新地址 |\n| 预签名 init 返回 proxy | local/webdav 引擎不支持直链,按 proxy 流程走服务端代理上传 |\n| 503 存储服务不可用 | 检查引擎配置与远端服务(S3/WebDAV)连通性;`GET /api/v1/health` 的 `storage` 字段确认引擎 |\n',b='# Logo 自定义\n\n## 默认 Logo(内置,v2 需求 ⑤)\n\n| 项 | 默认值 | 用途 |\n|---|---|---|\n| 页面导航 Logo | 前端打包本地资源 `/assets/logo-*.svg`(源:`web/src/assets/brand/logo.svg`) | 导航栏 ``;`config.logo_url` 为空时回落使用 |\n| favicon / 备用 Logo | 前端打包本地资源 `/assets/favicon-*.png`(源:`web/src/assets/brand/favicon.png`) | `index.html` `` + 动态 favicon 回落 |\n\nv2 起默认不再引用远程 URL:`GET /api/v1/config` 中 `logo_url`/`favicon_url` 默认下发空串,\n前端 `displayLogoUrl`/`displayFaviconUrl` 判空后回落到打包的本地资源。\n管理端仍可设置任意 URL 全站替换(三步如下)。\n\n## 管理端自定义(三步)\n\n1. **登录后台**:`POST /admin/login` 获取 Bearer 令牌。\n2. **保存配置**:`PATCH /admin/config/update` 更新 `logo_url`(与可选 `favicon_url`),值为图片 URL 或经管理端上传后得到的地址。\n3. **全站生效**:保存即写入 settings KV 并热更新,前端读取公共配置立即换新 Logo,无需重启。\n\ncurl 示例:\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/config/update \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"logo_url":"https://cdn.example.com/logo.svg","favicon_url":"https://cdn.example.com/favicon.png"}\'\n```\n\n```json\n{ "code": 200, "msg": "ok", "data": { "ok": true } }\n```\n\n> 也可以在管理界面「系统设置」页操作(上传图片或填写 URL),效果相同。\n\n## 校验生效\n\n```bash\ncurl -s http://localhost:8466/api/v1/config\n```\n\n```json\n{\n "code": 200, "msg": "ok",\n "data": { "config": { "logo_url": "https://cdn.example.com/logo.svg", "favicon_url": "https://cdn.example.com/favicon.png" } }\n}\n```\n\n## 恢复默认\n\n把 `logo_url` / `favicon_url` 置回默认值(空串,前端回落本地打包资源)即可:\n\n```bash\ncurl -s -X PATCH http://localhost:8466/admin/config/update \\\n -H "Authorization: Bearer $TOKEN" -H \'Content-Type: application/json\' \\\n -d \'{"logo_url":"","favicon_url":""}\'\n```\n\n## 相关行为\n\n- 前端运行时优先读取配置值;空值回退前端打包的本地资源(`web/src/assets/brand/logo.svg` + `favicon.png`,经 `displayLogoUrl`/`displayFaviconUrl` 判空回落)。\n- `site_name` 同样支持运行时自定义(`PATCH /admin/config/update` 的 `site_name` 键)。\n- Logo/favicon 仅涉及展示层,修改不影响会话与令牌(不轮换 `jwt_secret`)。\n',T=`openapi: 3.0.3 info: title: 文件快传 Go 版 API version: 2.5.6 @@ -2514,4 +2514,4 @@ components: created_at: { type: string } security: [] -`,S=Object.assign({"../../../docs/api/00-overview.md":p,"../../../docs/api/01-auth.md":d,"../../../docs/api/02-text-share.md":c,"../../../docs/api/03-file-share.md":l,"../../../docs/api/04-pickup.md":m,"../../../docs/api/05-chunk-upload.md":u,"../../../docs/api/06-presign.md":g,"../../../docs/api/07-admin.md":_,"../../../docs/api/08-audit.md":y,"../../../docs/api/09-storage.md":h,"../../../docs/api/10-config.md":f,"../../../docs/api/11-errors.md":x,"../../../docs/api/12-logo.md":b}),v=["README","share","chunk","presign","admin","audit","errors","config","logo","webdav","env"];function j(n){return(n.split("/").pop()??n).replace(/\.md$/,"")}function E(n,e){const o=/^#\s+(.+)$/m.exec(n);return o?o[1].trim():e}const r=Object.entries(S).map(([n,e])=>{const o=j(n),s=v.indexOf(o);return{slug:o,title:E(e,o),embedded:e,order:s>=0?s:100+o.localeCompare("")}}).sort((n,e)=>n.order-e.order||n.slug.localeCompare(e.slug));r.length>0;const k=Object.assign({"../../../docs/openapi.yaml":T}),O=Object.values(k)[0]??null;async function C(n){if(n.embedded!==null)return n.embedded;const{API_BASE:e}=await i(async()=>{const{API_BASE:t}=await import("./index-DYsKpclu.js").then(a=>a.aD);return{API_BASE:t}},__vite__mapDeps([0,1])),o=`${e}/docs/api/${encodeURIComponent(n.slug)}.md`,s=await fetch(o);if(!s.ok)throw new Error(`文档加载失败(HTTP ${s.status})`);return s.text()}async function I(){try{const{API_BASE:n}=await i(async()=>{const{API_BASE:t}=await import("./index-DYsKpclu.js").then(a=>a.aD);return{API_BASE:t}},__vite__mapDeps([0,1])),e=await fetch(`${n}/docs/api/index.json`);if(!e.ok)return[];const o=await e.json(),s=new Set(r.map(t=>t.slug));return o.filter(t=>t.slug&&!s.has(t.slug)).map(t=>({slug:t.slug,title:t.title??t.slug,embedded:null,order:200}))}catch{return[]}}export{I as a,r as d,O as e,C as l}; +`,S=Object.assign({"../../../docs/api/00-overview.md":p,"../../../docs/api/01-auth.md":d,"../../../docs/api/02-text-share.md":c,"../../../docs/api/03-file-share.md":l,"../../../docs/api/04-pickup.md":m,"../../../docs/api/05-chunk-upload.md":u,"../../../docs/api/06-presign.md":g,"../../../docs/api/07-admin.md":_,"../../../docs/api/08-audit.md":y,"../../../docs/api/09-storage.md":h,"../../../docs/api/10-config.md":f,"../../../docs/api/11-errors.md":x,"../../../docs/api/12-logo.md":b}),v=["README","share","chunk","presign","admin","audit","errors","config","logo","webdav","env"];function j(n){return(n.split("/").pop()??n).replace(/\.md$/,"")}function E(n,e){const o=/^#\s+(.+)$/m.exec(n);return o?o[1].trim():e}const r=Object.entries(S).map(([n,e])=>{const o=j(n),s=v.indexOf(o);return{slug:o,title:E(e,o),embedded:e,order:s>=0?s:100+o.localeCompare("")}}).sort((n,e)=>n.order-e.order||n.slug.localeCompare(e.slug));r.length>0;const k=Object.assign({"../../../docs/openapi.yaml":T}),O=Object.values(k)[0]??null;async function C(n){if(n.embedded!==null)return n.embedded;const{API_BASE:e}=await i(async()=>{const{API_BASE:t}=await import("./index-BKnWAKao.js").then(a=>a.aD);return{API_BASE:t}},__vite__mapDeps([0,1])),o=`${e}/docs/api/${encodeURIComponent(n.slug)}.md`,s=await fetch(o);if(!s.ok)throw new Error(`文档加载失败(HTTP ${s.status})`);return s.text()}async function I(){try{const{API_BASE:n}=await i(async()=>{const{API_BASE:t}=await import("./index-BKnWAKao.js").then(a=>a.aD);return{API_BASE:t}},__vite__mapDeps([0,1])),e=await fetch(`${n}/docs/api/index.json`);if(!e.ok)return[];const o=await e.json(),s=new Set(r.map(t=>t.slug));return o.filter(t=>t.slug&&!s.has(t.slug)).map(t=>({slug:t.slug,title:t.title??t.slug,embedded:null,order:200}))}catch{return[]}}export{I as a,r as d,O as e,C as l}; diff --git a/server/web/dist/assets/index-DYsKpclu.js b/server/web/dist/assets/index-BKnWAKao.js similarity index 99% rename from server/web/dist/assets/index-DYsKpclu.js rename to server/web/dist/assets/index-BKnWAKao.js index 9461f57..a8bd078 100644 --- a/server/web/dist/assets/index-DYsKpclu.js +++ b/server/web/dist/assets/index-BKnWAKao.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomeView-D38U_AAJ.js","assets/PageShell-D87JkPkG.js","assets/SiteNav.vue_vue_type_script_setup_true_lang-CwaEJKIZ.js","assets/PageShell-PYQzNiuf.css","assets/share-CqDDLJWI.js","assets/HomeView-DcN_X0wH.css","assets/PickupView-ClAAhXsM.js","assets/LoginView-BnVXNxFO.js","assets/auth-B7MDTgxJ.js","assets/admin-DEOkRyTC.js","assets/LoginView-BgHqRIwi.css","assets/AdminLayout-DJ2FR9f-.js","assets/FilesView-ZJ5eqPp5.js","assets/Pager.vue_vue_type_script_setup_true_lang-B3GeH0mY.js","assets/AuditView-BHN4e5xt.js","assets/AuditView-f2PBwbQe.css","assets/SettingsView-CjSvbH8z.js","assets/SettingsView-GpXVMuCV.css","assets/DocsView-Ds78oqBY.js","assets/docsSource-BXkkn0HE.js","assets/markdown-B5D8JARp.js","assets/OpenApiView-4SbIV1Bx.js","assets/swagger-CqkleIqs.js","assets/OpenApiView-BCH8BgeP.css","assets/NotFoundView-CbfqSXyJ.js"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HomeView-BUGc7QyM.js","assets/PageShell-CBo29Oot.js","assets/SiteNav.vue_vue_type_script_setup_true_lang-D3yLF4uh.js","assets/PageShell-PYQzNiuf.css","assets/share-B-zR67vw.js","assets/HomeView-DcN_X0wH.css","assets/PickupView-CUVFjD6g.js","assets/LoginView-mkNZ67cf.js","assets/auth-Cp2GGuZy.js","assets/admin-KnbIpHLF.js","assets/LoginView-BgHqRIwi.css","assets/AdminLayout-CmvNXPHJ.js","assets/FilesView-lLPRhmyI.js","assets/Pager.vue_vue_type_script_setup_true_lang-DZv_x-2P.js","assets/AuditView-BSm5VfBI.js","assets/AuditView-f2PBwbQe.css","assets/SettingsView-DgvAWaBc.js","assets/SettingsView-GpXVMuCV.css","assets/DocsView-DPtCYlAM.js","assets/docsSource-Df5ur5C4.js","assets/markdown-B5D8JARp.js","assets/OpenApiView-qf3nWBmo.js","assets/swagger-CqkleIqs.js","assets/OpenApiView-BCH8BgeP.css","assets/NotFoundView-DdQb5mYe.js"])))=>i.map(i=>d[i]); (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))r(n);new MutationObserver(n=>{for(const i of n)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 o(n){const i={};return n.integrity&&(i.integrity=n.integrity),n.referrerPolicy&&(i.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?i.credentials="include":n.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(n){if(n.ep)return;n.ep=!0;const i=o(n);fetch(n.href,i)}})();function $l(e){const t=Object.create(null);for(const o of e.split(","))t[o]=1;return o=>o in t}const Se={},dr=[],Gt=()=>{},Fc=()=>!1,Jn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Qn=e=>e.startsWith("onUpdate:"),Be=Object.assign,Bl=(e,t)=>{const o=e.indexOf(t);o>-1&&e.splice(o,1)},zd=Object.prototype.hasOwnProperty,_e=(e,t)=>zd.call(e,t),oe=Array.isArray,To=e=>un(e)==="[object Map]",er=e=>un(e)==="[object Set]",Ta=e=>un(e)==="[object Date]",le=e=>typeof e=="function",Le=e=>typeof e=="string",yt=e=>typeof e=="symbol",be=e=>e!==null&&typeof e=="object",Oc=e=>(be(e)||le(e))&&le(e.then)&&le(e.catch),Nc=Object.prototype.toString,un=e=>Nc.call(e),Ud=e=>un(e).slice(8,-1),Mc=e=>un(e)==="[object Object]",Zn=e=>Le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Hr=$l(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ei=e=>{const t=Object.create(null);return(o=>t[o]||(t[o]=e(o)))},Vd=/-\w/g,ct=ei(e=>e.replace(Vd,t=>t.slice(1).toUpperCase())),jd=/\B([A-Z])/g,Ro=ei(e=>e.replace(jd,"-$1").toLowerCase()),ti=ei(e=>e.charAt(0).toUpperCase()+e.slice(1)),Di=ei(e=>e?`on${ti(e)}`:""),Vt=(e,t)=>!Object.is(e,t),In=(e,...t)=>{for(let o=0;o{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:o})},oi=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Gd=e=>{const t=Le(e)?Number(e):NaN;return isNaN(t)?e:t};let Pa;const ri=()=>Pa||(Pa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ni(e){if(oe(e)){const t={};for(let o=0;o{if(o){const r=o.split(Yd);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function ii(e){let t="";if(Le(e))t=e;else if(oe(e))for(let o=0;oPo(o,t))}const $c=e=>!!(e&&e.__v_isRef===!0),Dn=e=>Le(e)?e:e==null?"":oe(e)||be(e)&&(e.toString===Nc||!le(e.toString))?$c(e)?Dn(e.value):JSON.stringify(e,Bc,2):String(e),Bc=(e,t)=>$c(t)?Bc(e,t.value):To(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((o,[r,n],i)=>(o[Ri(r,i)+" =>"]=n,o),{})}:er(t)?{[`Set(${t.size})`]:[...t.values()].map(o=>Ri(o))}:yt(t)?Ri(t):be(t)&&!oe(t)&&!Mc(t)?String(t):t,Ri=(e,t="")=>{var o;return yt(e)?`Symbol(${(o=e.description)!=null?o:t})`:e};let He;class Wc{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&He&&(He.active?(this.parent=He,this.index=(He.scopes||(He.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,o;if(this.scopes){const r=this.scopes.slice();for(t=0,o=r.length;t0&&--this._on===0){if(He===this)He=this.prevScope;else{let t=He;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let o,r;for(o=0,r=this.effects.length;o0)return;if(Br){let t=Br;for(Br=void 0;t;){const o=t.next;t.next=void 0,t.flags&=-9,t=o}}let e;for(;$r;){let t=$r;for($r=void 0;t;){const o=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=o}}if(e)throw e}function Gc(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Kc(e){let t,o=e.depsTail,r=o;for(;r;){const n=r.prevDep;r.version===-1?(r===o&&(o=n),Vl(r),op(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=n}e.deps=t,e.depsTail=o}function rl(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Yc(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Yc(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Kr)||(e.globalVersion=Kr,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!rl(e))))return;e.flags|=2;const t=e.dep,o=Te,r=Mt;Te=e,Mt=!0;try{Gc(e);const n=e.fn(e._value);(t.version===0||Vt(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{Te=o,Mt=r,Kc(e),e.flags&=-3}}function Vl(e,t=!1){const{dep:o,prevSub:r,nextSub:n}=e;if(r&&(r.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=r,e.nextSub=void 0),o.subs===e&&(o.subs=r,!r&&o.computed)){o.computed.flags&=-5;for(let i=o.computed.deps;i;i=i.nextDep)Vl(i,!0)}!t&&!--o.sc&&o.map&&o.map.delete(o.key)}function op(e){const{prevDep:t,nextDep:o}=e;t&&(t.nextDep=o,e.prevDep=void 0),o&&(o.prevDep=t,e.nextDep=void 0)}let Mt=!0;const qc=[];function so(){qc.push(Mt),Mt=!1}function co(){const e=qc.pop();Mt=e===void 0?!0:e}function Aa(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const o=Te;Te=void 0;try{t()}finally{Te=o}}}let Kr=0;class rp{constructor(t,o){this.sub=t,this.dep=o,this.version=o.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class jl{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Te||!Mt||Te===this.computed)return;let o=this.activeLink;if(o===void 0||o.sub!==Te)o=this.activeLink=new rp(Te,this),Te.deps?(o.prevDep=Te.depsTail,Te.depsTail.nextDep=o,Te.depsTail=o):Te.deps=Te.depsTail=o,Xc(o);else if(o.version===-1&&(o.version=this.version,o.nextDep)){const r=o.nextDep;r.prevDep=o.prevDep,o.prevDep&&(o.prevDep.nextDep=r),o.prevDep=Te.depsTail,o.nextDep=void 0,Te.depsTail.nextDep=o,Te.depsTail=o,Te.deps===o&&(Te.deps=r)}return o}trigger(t){this.version++,Kr++,this.notify(t)}notify(t){zl();try{for(let o=this.subs;o;o=o.prevSub)o.sub.notify()&&o.sub.dep.notify()}finally{Ul()}}}function Xc(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Xc(r)}const o=e.dep.subs;o!==e&&(e.prevSub=o,o&&(o.nextSub=e)),e.dep.subs=e}}const Rn=new WeakMap,Jo=Symbol(""),nl=Symbol(""),Yr=Symbol("");function Ye(e,t,o){if(Mt&&Te){let r=Rn.get(e);r||Rn.set(e,r=new Map);let n=r.get(o);n||(r.set(o,n=new jl),n.map=r,n.key=o),n.track()}}function ro(e,t,o,r,n,i){const l=Rn.get(e);if(!l){Kr++;return}const a=s=>{s&&s.trigger()};if(zl(),t==="clear")l.forEach(a);else{const s=oe(e),c=s&&Zn(o);if(s&&o==="length"){const u=Number(r);l.forEach((f,d)=>{(d==="length"||d===Yr||!yt(d)&&d>=u)&&a(f)})}else switch((o!==void 0||l.has(void 0))&&a(l.get(o)),c&&a(l.get(Yr)),t){case"add":s?c&&a(l.get("length")):(a(l.get(Jo)),To(e)&&a(l.get(nl)));break;case"delete":s||(a(l.get(Jo)),To(e)&&a(l.get(nl)));break;case"set":To(e)&&a(l.get(Jo));break}}Ul()}function np(e,t){const o=Rn.get(e);return o&&o.get(t)}function ir(e){const t=ge(e);return t===e?t:(Ye(t,"iterate",Yr),vt(e)?t:t.map(kt))}function li(e){return Ye(e=ge(e),"iterate",Yr),e}function zt(e,t){return uo(e)?gr(lo(e)?kt(t):t):kt(t)}const ip={__proto__:null,[Symbol.iterator](){return Oi(this,Symbol.iterator,e=>zt(this,e))},concat(...e){return ir(this).concat(...e.map(t=>oe(t)?ir(t):t))},entries(){return Oi(this,"entries",e=>(e[1]=zt(this,e[1]),e))},every(e,t){return Xt(this,"every",e,t,void 0,arguments)},filter(e,t){return Xt(this,"filter",e,t,o=>o.map(r=>zt(this,r)),arguments)},find(e,t){return Xt(this,"find",e,t,o=>zt(this,o),arguments)},findIndex(e,t){return Xt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Xt(this,"findLast",e,t,o=>zt(this,o),arguments)},findLastIndex(e,t){return Xt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Xt(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ni(this,"includes",e)},indexOf(...e){return Ni(this,"indexOf",e)},join(e){return ir(this).join(e)},lastIndexOf(...e){return Ni(this,"lastIndexOf",e)},map(e,t){return Xt(this,"map",e,t,void 0,arguments)},pop(){return Ar(this,"pop")},push(...e){return Ar(this,"push",e)},reduce(e,...t){return La(this,"reduce",e,t)},reduceRight(e,...t){return La(this,"reduceRight",e,t)},shift(){return Ar(this,"shift")},some(e,t){return Xt(this,"some",e,t,void 0,arguments)},splice(...e){return Ar(this,"splice",e)},toReversed(){return ir(this).toReversed()},toSorted(e){return ir(this).toSorted(e)},toSpliced(...e){return ir(this).toSpliced(...e)},unshift(...e){return Ar(this,"unshift",e)},values(){return Oi(this,"values",e=>zt(this,e))}};function Oi(e,t,o){const r=li(e),n=r[t]();return r!==e&&!vt(e)&&(n._next=n.next,n.next=()=>{const i=n._next();return i.done||(i.value=o(i.value)),i}),n}const lp=Array.prototype;function Xt(e,t,o,r,n,i){const l=li(e),a=l!==e&&!vt(e),s=l[t];if(s!==lp[t]){const f=s.apply(e,i);return a?kt(f):f}let c=o;l!==e&&(a?c=function(f,d){return o.call(this,zt(e,f),d,e)}:o.length>2&&(c=function(f,d){return o.call(this,f,d,e)}));const u=s.call(l,c,r);return a&&n?n(u):u}function La(e,t,o,r){const n=li(e),i=n!==e&&!vt(e);let l=o,a=!1;n!==e&&(i?(a=r.length===0,l=function(c,u,f){return a&&(a=!1,c=zt(e,c)),o.call(this,c,zt(e,u),f,e)}):o.length>3&&(l=function(c,u,f){return o.call(this,c,u,f,e)}));const s=n[t](l,...r);return a?zt(e,s):s}function Ni(e,t,o){const r=ge(e);Ye(r,"iterate",Yr);const n=r[t](...o);return(n===-1||n===!1)&&ai(o[0])?(o[0]=ge(o[0]),r[t](...o)):n}function Ar(e,t,o=[]){so(),zl();const r=ge(e)[t].apply(e,o);return Ul(),co(),r}const ap=$l("__proto__,__v_isRef,__isVue"),Jc=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(yt));function sp(e){yt(e)||(e=String(e));const t=ge(this);return Ye(t,"has",e),t.hasOwnProperty(e)}class Qc{constructor(t=!1,o=!1){this._isReadonly=t,this._isShallow=o}get(t,o,r){if(o==="__v_skip")return t.__v_skip;const n=this._isReadonly,i=this._isShallow;if(o==="__v_isReactive")return!n;if(o==="__v_isReadonly")return n;if(o==="__v_isShallow")return i;if(o==="__v_raw")return r===(n?i?bp:ou:i?tu:eu).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const l=oe(t);if(!n){let s;if(l&&(s=ip[o]))return s;if(o==="hasOwnProperty")return sp}const a=Reflect.get(t,o,we(t)?t:r);if((yt(o)?Jc.has(o):ap(o))||(n||Ye(t,"get",o),i))return a;if(we(a)){const s=l&&Zn(o)?a:a.value;return n&&be(s)?ll(s):s}return be(a)?n?ll(a):fn(a):a}}class Zc extends Qc{constructor(t=!1){super(!1,t)}set(t,o,r,n){let i=t[o];const l=oe(t)&&Zn(o);if(!this._isShallow){const c=uo(i);if(!vt(r)&&!uo(r)&&(i=ge(i),r=ge(r)),!l&&we(i)&&!we(r))return c||(i.value=r),!0}const a=l?Number(o)e,Cn=e=>Reflect.getPrototypeOf(e);function pp(e,t,o){return function(...r){const n=this.__v_raw,i=ge(n),l=To(i),a=e==="entries"||e===Symbol.iterator&&l,s=e==="keys"&&l,c=n[e](...r),u=o?il:t?gr:kt;return!t&&Ye(i,"iterate",s?nl:Jo),Be(Object.create(c),{next(){const{value:f,done:d}=c.next();return d?{value:f,done:d}:{value:a?[u(f[0]),u(f[1])]:u(f),done:d}}})}}function bn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function mp(e,t){const o={get(n){const i=this.__v_raw,l=ge(i),a=ge(n);e||(Vt(n,a)&&Ye(l,"get",n),Ye(l,"get",a));const{has:s}=Cn(l),c=t?il:e?gr:kt;if(s.call(l,n))return c(i.get(n));if(s.call(l,a))return c(i.get(a));i!==l&&i.get(n)},get size(){const n=this.__v_raw;return!e&&Ye(ge(n),"iterate",Jo),n.size},has(n){const i=this.__v_raw,l=ge(i),a=ge(n);return e||(Vt(n,a)&&Ye(l,"has",n),Ye(l,"has",a)),n===a?i.has(n):i.has(n)||i.has(a)},forEach(n,i){const l=this,a=l.__v_raw,s=ge(a),c=t?il:e?gr:kt;return!e&&Ye(s,"iterate",Jo),a.forEach((u,f)=>n.call(i,c(u),c(f),l))}};return Be(o,e?{add:bn("add"),set:bn("set"),delete:bn("delete"),clear:bn("clear")}:{add(n){const i=ge(this),l=Cn(i),a=ge(n),s=!t&&!vt(n)&&!uo(n)?a:n;return l.has.call(i,s)||Vt(n,s)&&l.has.call(i,n)||Vt(a,s)&&l.has.call(i,a)||(i.add(s),ro(i,"add",s,s)),this},set(n,i){!t&&!vt(i)&&!uo(i)&&(i=ge(i));const l=ge(this),{has:a,get:s}=Cn(l);let c=a.call(l,n);c||(n=ge(n),c=a.call(l,n));const u=s.call(l,n);return l.set(n,i),c?Vt(i,u)&&ro(l,"set",n,i):ro(l,"add",n,i),this},delete(n){const i=ge(this),{has:l,get:a}=Cn(i);let s=l.call(i,n);s||(n=ge(n),s=l.call(i,n)),a&&a.call(i,n);const c=i.delete(n);return s&&ro(i,"delete",n,void 0),c},clear(){const n=ge(this),i=n.size!==0,l=n.clear();return i&&ro(n,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(n=>{o[n]=pp(n,e,t)}),o}function Gl(e,t){const o=mp(e,t);return(r,n,i)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?r:Reflect.get(_e(o,n)&&n in r?o:r,n,i)}const hp={get:Gl(!1,!1)},gp={get:Gl(!1,!0)},Cp={get:Gl(!0,!1)};const eu=new WeakMap,tu=new WeakMap,ou=new WeakMap,bp=new WeakMap;function xp(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function fn(e){return uo(e)?e:Kl(e,!1,up,hp,eu)}function ru(e){return Kl(e,!1,dp,gp,tu)}function ll(e){return Kl(e,!0,fp,Cp,ou)}function Kl(e,t,o,r,n){if(!be(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const i=n.get(e);if(i)return i;const l=xp(Ud(e));if(l===0)return e;const a=new Proxy(e,l===2?r:o);return n.set(e,a),a}function lo(e){return uo(e)?lo(e.__v_raw):!!(e&&e.__v_isReactive)}function uo(e){return!!(e&&e.__v_isReadonly)}function vt(e){return!!(e&&e.__v_isShallow)}function ai(e){return e?!!e.__v_raw:!1}function ge(e){const t=e&&e.__v_raw;return t?ge(t):e}function qr(e){return!_e(e,"__v_skip")&&Object.isExtensible(e)&&kc(e,"__v_skip",!0),e}const kt=e=>be(e)?fn(e):e,gr=e=>be(e)?ll(e):e;function we(e){return e?e.__v_isRef===!0:!1}function mt(e){return nu(e,!1)}function Yl(e){return nu(e,!0)}function nu(e,t){return we(e)?e:new _p(e,t)}class _p{constructor(t,o){this.dep=new jl,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=o?t:ge(t),this._value=o?t:kt(t),this.__v_isShallow=o}get value(){return this.dep.track(),this._value}set value(t){const o=this._rawValue,r=this.__v_isShallow||vt(t)||uo(t);t=r?t:ge(t),Vt(t,o)&&(this._rawValue=t,this._value=r?t:kt(t),this.dep.trigger())}}function bt(e){return we(e)?e.value:e}const vp={get:(e,t,o)=>t==="__v_raw"?e:bt(Reflect.get(e,t,o)),set:(e,t,o,r)=>{const n=e[t];return we(n)&&!we(o)?(n.value=o,!0):Reflect.set(e,t,o,r)}};function iu(e){return lo(e)?e:new Proxy(e,vp)}function Sp(e){const t=oe(e)?new Array(e.length):{};for(const o in e)t[o]=lu(e,o);return t}class yp{constructor(t,o,r){this._object=t,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0,this._key=yt(o)?o:String(o),this._raw=ge(t);let n=!0,i=t;if(!oe(t)||yt(this._key)||!Zn(this._key))do n=!ai(i)||vt(i);while(n&&(i=i.__v_raw));this._shallow=n}get value(){let t=this._object[this._key];return this._shallow&&(t=bt(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&we(this._raw[this._key])){const o=this._object[this._key];if(we(o)){o.value=t;return}}this._object[this._key]=t}get dep(){return np(this._raw,this._key)}}class Ep{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function aT(e,t,o){return we(e)?e:le(e)?new Ep(e):be(e)&&arguments.length>1?lu(e,t,o):mt(e)}function lu(e,t,o){return new yp(e,t,o)}class Tp{constructor(t,o,r){this.fn=t,this.setter=o,this._value=void 0,this.dep=new jl(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Kr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!o,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Te!==this)return jc(this,!0),!0}get value(){const t=this.dep.track();return Yc(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Pp(e,t,o=!1){let r,n;return le(e)?r=e:(r=e.get,n=e.set),new Tp(r,n,o)}const xn={},Fn=new WeakMap;let Uo;function Ip(e,t=!1,o=Uo){if(o){let r=Fn.get(o);r||Fn.set(o,r=[]),r.push(e)}}function Ap(e,t,o=Se){const{immediate:r,deep:n,once:i,scheduler:l,augmentJob:a,call:s}=o,c=y=>n?y:vt(y)||n===!1||n===0?no(y,1):no(y);let u,f,d,p,g=!1,C=!1;if(we(e)?(f=()=>e.value,g=vt(e)):lo(e)?(f=()=>c(e),g=!0):oe(e)?(C=!0,g=e.some(y=>lo(y)||vt(y)),f=()=>e.map(y=>{if(we(y))return y.value;if(lo(y))return c(y);if(le(y))return s?s(y,2):y()})):le(e)?t?f=s?()=>s(e,2):e:f=()=>{if(d){so();try{d()}finally{co()}}const y=Uo;Uo=u;try{return s?s(e,3,[p]):e(p)}finally{Uo=y}}:f=Gt,t&&n){const y=f,L=n===!0?1/0:n;f=()=>no(y(),L)}const S=zc(),E=()=>{u.stop(),S&&S.active&&Bl(S.effects,u)};if(i&&t){const y=t;t=(...L)=>{const w=y(...L);return E(),w}}let T=C?new Array(e.length).fill(xn):xn;const v=y=>{if(!(!(u.flags&1)||!u.dirty&&!y))if(t){const L=u.run();if(y||n||g||(C?L.some((w,D)=>Vt(w,T[D])):Vt(L,T))){d&&d();const w=Uo;Uo=u;try{const D=[L,T===xn?void 0:C&&T[0]===xn?[]:T,p];T=L,s?s(t,3,D):t(...D)}finally{Uo=w}}}else u.run()};return a&&a(v),u=new Uc(f),u.scheduler=l?()=>l(v,!1):v,p=y=>Ip(y,!1,u),d=u.onStop=()=>{const y=Fn.get(u);if(y){if(s)s(y,4);else for(const L of y)L();Fn.delete(u)}},t?r?v(!0):T=u.run():l?l(v.bind(null,!0),!0):u.run(),E.pause=u.pause.bind(u),E.resume=u.resume.bind(u),E.stop=E,E}function no(e,t=1/0,o){if(t<=0||!be(e)||e.__v_skip||(o=o||new Map,(o.get(e)||0)>=t))return e;if(o.set(e,t),t--,we(e))no(e.value,t,o);else if(oe(e))for(let r=0;r{no(r,t,o)});else if(Mc(e)){for(const r in e)no(e[r],t,o);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&no(e[r],t,o)}return e}function dn(e,t,o,r){try{return r?e(...r):e()}catch(n){si(n,t,o)}}function Lt(e,t,o,r){if(le(e)){const n=dn(e,t,o,r);return n&&Oc(n)&&n.catch(i=>{si(i,t,o)}),n}if(oe(e)){const n=[];for(let i=0;i>>1,n=at[r],i=Xr(n);i=Xr(o)?at.push(e):at.splice(wp(t),0,e),e.flags|=1,su()}}function su(){On||(On=au.then(uu))}function Dp(e){if(!oe(e))So&&e.id===-1?So.splice(sr+1,0,e):e.flags&1||(pr.push(e),e.flags|=1);else for(let t=0;tXr(o)-Xr(r));if(pr.length=0,So){for(let o=0;oe.id==null?e.flags&2?-1:1/0:e.id;function uu(e){try{for(Wt=0;Wt{r._d&&$n(-1);const i=Nn(t),l=ao.length;let a;try{a=e(...n)}finally{for(let s=ao.length;s>l;s--)oa();Nn(i),r._d&&$n(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function sT(e,t){if(Ve===null)return e;const o=hi(Ve),r=e.dirs||(e.dirs=[]);for(let n=0;n1)return o&&le(t)?t.call(r&&r.proxy):t}}function Rp(){return!!(Ao()||Qo)}const Fp=Symbol.for("v-scx"),Op=()=>Ze(Fp);function cT(e,t){return Xl(e,null,t)}function St(e,t,o){return Xl(e,t,o)}function Xl(e,t,o=Se){const{immediate:r,deep:n,flush:i,once:l}=o,a=Be({},o),s=t&&r||!t&&i!=="post";let c;if(on){if(i==="sync"){const p=Op();c=p.__watcherHandles||(p.__watcherHandles=[])}else if(!s){const p=()=>{};return p.stop=Gt,p.resume=Gt,p.pause=Gt,p}}const u=Qe;a.call=(p,g,C)=>Lt(p,u,g,C);let f=!1;i==="post"?a.scheduler=p=>{nt(p,u&&u.suspense)}:i!=="sync"&&(f=!0,a.scheduler=(p,g)=>{g?p():ql(p)}),a.augmentJob=p=>{t&&(p.flags|=4),f&&(p.flags|=2,u&&(p.id=u.uid,p.i=u))};const d=Ap(e,t,a);return on&&(c?c.push(d):s&&d()),d}function Np(e,t,o){const r=this.proxy,n=Le(e)?e.includes(".")?pu(r,e):()=>r[e]:e.bind(r,r);let i;le(t)?i=t:(i=t.handler,o=t);const l=mn(this),a=Xl(n,i.bind(r),o);return l(),a}function pu(e,t){const o=t.split(".");return()=>{let r=e;for(let n=0;ne.__isTeleport,Vo=e=>e&&(e.disabled||e.disabled===""),Mp=e=>e&&(e.defer||e.defer===""),Da=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Ra=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,al=(e,t)=>{const o=e&&e.to;return Le(o)?t?t(o):null:o},kp={name:"Teleport",__isTeleport:!0,process(e,t,o,r,n,i,l,a,s,c){const{mc:u,pc:f,pbc:d,o:{insert:p,querySelector:g,createText:C,createComment:S,parentNode:E}}=c,T=Vo(t.props);let{dynamicChildren:v}=t;const y=(D,F,P)=>{D.shapeFlag&16&&u(D.children,F,P,n,i,l,a,s)},L=(D=t)=>{const F=Vo(D.props),P=D.target=al(D.props,g),U=sl(P,D,C,p);P&&(l!=="svg"&&Da(P)?l="svg":l!=="mathml"&&Ra(P)&&(l="mathml"),n&&n.isCE&&(n.ce._teleportTargets||(n.ce._teleportTargets=new Set)).add(P),F||(y(D,P,U),Or(D,!1)))},w=D=>{const F=()=>{if(xo.get(D)===F){if(xo.delete(D),Vo(D.props)){const P=E(D.el)||o;y(D,P,D.anchor),Or(D,!0)}L(D)}};xo.set(D,F),nt(F,i)};if(e==null){const D=t.el=C(""),F=t.anchor=C("");if(p(D,o,r),p(F,o,r),Mp(t.props)||i&&i.pendingBranch){w(t);return}T&&(y(t,o,F),Or(t,!0)),L()}else{t.el=e.el;const D=t.anchor=e.anchor,F=xo.get(e);if(F){F.flags|=8,xo.delete(e),w(t);return}t.targetStart=e.targetStart;const P=t.target=e.target,U=t.targetAnchor=e.targetAnchor,X=Vo(e.props),k=X?o:P,Q=X?D:U;if(l==="svg"||Da(P)?l="svg":(l==="mathml"||Ra(P))&&(l="mathml"),v?(d(e.dynamicChildren,v,k,n,i,l,a),ta(e,t,!0)):s||f(e,t,k,Q,n,i,l,a,!1),T)X?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):_n(t,o,D,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const me=al(t.props,g);me&&(t.target=me,_n(t,me,null,c,0))}else X&&_n(t,P,U,c,1);Or(t,T)}},remove(e,t,o,{um:r,o:{remove:n}},i){const{shapeFlag:l,children:a,anchor:s,targetStart:c,targetAnchor:u,target:f,props:d}=e,p=Vo(d),g=i||!p,C=xo.get(e);if(C&&(C.flags|=8,xo.delete(e)),f&&(n(c),n(u)),i&&n(s),!C&&(p||f)&&l&16)for(let S=0;S{e.isMounted=!0}),Su(()=>{e.isUnmounting=!0}),e}const Pt=[Function,Array],hu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Pt,onEnter:Pt,onAfterEnter:Pt,onEnterCancelled:Pt,onBeforeLeave:Pt,onLeave:Pt,onAfterLeave:Pt,onLeaveCancelled:Pt,onBeforeAppear:Pt,onAppear:Pt,onAfterAppear:Pt,onAppearCancelled:Pt},gu=e=>{const t=e.subTree;return t.component?gu(t.component):t},Bp={name:"BaseTransition",props:hu,setup(e,{slots:t}){const o=Ao(),r=$p();return()=>{const n=t.default&&xu(t.default(),!0),i=n&&n.length?Cu(n):o.subTree?Ln():void 0;if(!i)return;const l=ge(e),{mode:a}=l;if(r.isLeaving)return Mi(i);const s=Mn(i);if(!s)return Mi(i);let c=cl(s,l,r,o,f=>c=f);s.type!==Je&&Jr(s,c);let u=o.subTree&&Mn(o.subTree);if(u&&u.type!==Je&&!jo(u,s)&&gu(o).type!==Je){let f=cl(u,l,r,o);if(Jr(u,f),a==="out-in"&&s.type!==Je)return r.isLeaving=!0,f.afterLeave=()=>{r.isLeaving=!1,o.job.flags&8||o.update(),delete f.afterLeave,u=void 0},Mi(i);a==="in-out"&&s.type!==Je?f.delayLeave=(d,p,g)=>{const C=bu(r,u);C[String(u.key)]=u,d[It]=()=>{p(),d[It]=void 0,delete c.delayedLeave,u=void 0},c.delayedLeave=()=>{g(),delete c.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return i}}};function Cu(e){let t=e[0];if(e.length>1){for(const o of e)if(o.type!==Je){t=o;break}}return t}const Wp=Bp;function bu(e,t){const{leavingVNodes:o}=e;let r=o.get(t.type);return r||(r=Object.create(null),o.set(t.type,r)),r}function cl(e,t,o,r,n){const{appear:i,mode:l,persisted:a=!1,onBeforeEnter:s,onEnter:c,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:d,onLeave:p,onAfterLeave:g,onLeaveCancelled:C,onBeforeAppear:S,onAppear:E,onAfterAppear:T,onAppearCancelled:v}=t,y=String(e.key),L=bu(o,e),w=(P,U)=>{P&&Lt(P,r,9,U)},D=(P,U)=>{const X=U[1];w(P,U),oe(P)?P.every(k=>k.length<=1)&&X():P.length<=1&&X()},F={mode:l,persisted:a,beforeEnter(P){let U=s;if(!o.isMounted)if(i)U=S||s;else return;P[It]&&P[It](!0);const X=L[y];X&&jo(e,X)&&X.el[It]&&X.el[It](),w(U,[P])},enter(P){if(L[y]===e)return;let U=c,X=u,k=f;if(!o.isMounted)if(i)U=E||c,X=T||u,k=v||f;else return;let Q=!1;P[Lr]=ye=>{Q||(Q=!0,ye?w(k,[P]):w(X,[P]),F.delayedLeave&&F.delayedLeave(),P[Lr]=void 0)};const me=P[Lr].bind(null,!1);U?D(U,[P,me]):me()},leave(P,U){const X=String(e.key);if(P[Lr]&&P[Lr](!0),o.isUnmounting)return U();w(d,[P]);let k=!1;P[It]=me=>{k||(k=!0,U(),me?w(C,[P]):w(g,[P]),P[It]=void 0,L[X]===e&&delete L[X])};const Q=P[It].bind(null,!1);L[X]=e,p?D(p,[P,Q]):Q()},clone(P){const U=cl(P,t,o,r,n);return n&&n(U),U}};return F}function Mi(e){if(fi(e))return e=Io(e),e.children=null,e}function Mn(e){if(!fi(e))return ui(e.type)&&e.children?Cu(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:o}=e;if(o){if(t&16)return o[0];if(t&32&&le(o.default))return o.default()}}function Jr(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const o=e.component.subTree;Jr(ui(o.type)&&Mn(o)||o,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function xu(e,t=!1,o){let r=[],n=0;for(let i=0;i1)for(let i=0;izr(C,t&&(oe(t)?t[S]:t),o,r,n));return}if(mr(r)&&!n){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&zr(e,t,o,r.component.subTree);return}const i=r.shapeFlag&4?hi(r.component):r.el,l=n?null:i,{i:a,r:s}=e,c=t&&t.r,u=a.refs===Se?a.refs={}:a.refs,f=a.setupState,d=ge(f),p=f===Se?Fc:C=>Fa(u,C)?!1:_e(d,C),g=(C,S)=>!(S&&Fa(u,S));if(c!=null&&c!==s){if(Oa(t),Le(c))u[c]=null,p(c)&&(f[c]=null);else if(we(c)){const C=t;g(c,C.k)&&(c.value=null),C.k&&(u[C.k]=null)}}if(le(s))dn(s,a,12,[l,u]);else{const C=Le(s),S=we(s);if(C||S){const E=()=>{if(e.f){const T=C?p(s)?f[s]:u[s]:g()||!e.k?s.value:u[e.k];if(n)oe(T)&&Bl(T,i);else if(oe(T))T.includes(i)||T.push(i);else if(C)u[s]=[i],p(s)&&(f[s]=u[s]);else{const v=[i];g(s,e.k)&&(s.value=v),e.k&&(u[e.k]=v)}}else C?(u[s]=l,p(s)&&(f[s]=l)):S&&(g(s,e.k)&&(s.value=l),e.k&&(u[e.k]=l))};if(l){const T=()=>{E(),kn.delete(e)};T.id=-1,kn.set(e,T),nt(T,o)}else Oa(e),E()}}}function Oa(e){const t=kn.get(e);t&&(t.flags|=8,kn.delete(e))}ri().requestIdleCallback;ri().cancelIdleCallback;const mr=e=>!!e.type.__asyncLoader,fi=e=>e.type.__isKeepAlive;function zp(e,t){vu(e,"a",t)}function Up(e,t){vu(e,"da",t)}function vu(e,t,o=Qe){const r=e.__wdc||(e.__wdc=()=>{let n=o;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(di(t,r,o),o){let n=o.parent;for(;n&&n.parent;)fi(n.parent.vnode)&&Vp(r,t,o,n),n=n.parent}}function Vp(e,t,o,r){const n=di(t,e,r,!0);Ql(()=>{Bl(r[t],n)},o)}function di(e,t,o=Qe,r=!1){if(o){const n=o[e]||(o[e]=[]),i=t.__weh||(t.__weh=(...l)=>{so();const a=mn(o),s=Lt(t,o,e,l);return a(),co(),s});return r?n.unshift(i):n.push(i),i}}const mo=e=>(t,o=Qe)=>{(!on||e==="sp")&&di(e,(...r)=>t(...r),o)},Jl=mo("bm"),pi=mo("m"),jp=mo("bu"),Gp=mo("u"),Su=mo("bum"),Ql=mo("um"),Kp=mo("sp"),Yp=mo("rtg"),qp=mo("rtc");function Xp(e,t=Qe){di("ec",e,t)}const Jp="components";function Qp(e,t){return em(Jp,e,!0,t)||e}const Zp=Symbol.for("v-ndc");function em(e,t,o=!0,r=!1){const n=Ve||Qe;if(n){const i=n.type;{const a=$m(i,!1);if(a&&(a===t||a===ct(t)||a===ti(ct(t))))return i}const l=Na(n[e]||i[e],t)||Na(n.appContext[e],t);return!l&&r?i:l}}function Na(e,t){return e&&(e[t]||e[ct(t)]||e[ti(ct(t))])}function tm(e,t,o,r){let n;const i=o,l=oe(e);if(l||Le(e)){const a=l&&lo(e);let s=!1,c=!1;a&&(s=!vt(e),c=uo(e),e=li(e)),n=new Array(e.length);for(let u=0,f=e.length;ut(a,s,void 0,i));else{const a=Object.keys(e);n=new Array(a.length);for(let s=0,c=a.length;s0;return Ft(),Zr(qe,null,[je("slot",c,r)],u?-2:64)}let l=e[t];l&&l._c&&(l._d=!1);const a=ao.length;Ft();let s;try{const c=l&&yu(l(o)),u=o.key||i||c&&c.key;s=Zr(qe,{key:(u&&!yt(u)?u:`_${t}`)+(!c&&r?"_fb":"")},c||(r?r():[]),c&&e._===1?64:-2)}catch(c){for(let u=ao.length;u>a;u--)oa();throw c}finally{l&&l._c&&(l._d=!0)}return!n&&s.scopeId&&(s.slotScopeIds=[s.scopeId+"-s"]),s}function yu(e){return e.some(t=>en(t)?!(t.type===Je||t.type===qe&&!yu(t.children)):!0)?e:null}const ul=e=>e?zu(e)?hi(e):ul(e.parent):null,Ur=Be(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ul(e.parent),$root:e=>ul(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Tu(e),$forceUpdate:e=>e.f||(e.f=()=>{ql(e.update)}),$nextTick:e=>e.n||(e.n=ci.bind(e.proxy)),$watch:e=>Np.bind(e)}),ki=(e,t)=>e!==Se&&!e.__isScriptSetup&&_e(e,t),om={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:o,setupState:r,data:n,props:i,accessCache:l,type:a,appContext:s}=e;if(t[0]!=="$"){const d=l[t];if(d!==void 0)switch(d){case 1:return r[t];case 2:return n[t];case 4:return o[t];case 3:return i[t]}else{if(ki(r,t))return l[t]=1,r[t];if(n!==Se&&_e(n,t))return l[t]=2,n[t];if(_e(i,t))return l[t]=3,i[t];if(o!==Se&&_e(o,t))return l[t]=4,o[t];fl&&(l[t]=0)}}const c=Ur[t];let u,f;if(c)return t==="$attrs"&&Ye(e.attrs,"get",""),c(e);if((u=a.__cssModules)&&(u=u[t]))return u;if(o!==Se&&_e(o,t))return l[t]=4,o[t];if(f=s.config.globalProperties,_e(f,t))return f[t]},set({_:e},t,o){const{data:r,setupState:n,ctx:i}=e;return ki(n,t)?(n[t]=o,!0):r!==Se&&_e(r,t)?(r[t]=o,!0):_e(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=o,!0)},has({_:{data:e,setupState:t,accessCache:o,ctx:r,appContext:n,props:i,type:l}},a){let s;return!!(o[a]||e!==Se&&a[0]!=="$"&&_e(e,a)||ki(t,a)||_e(i,a)||_e(r,a)||_e(Ur,a)||_e(n.config.globalProperties,a)||(s=l.__cssModules)&&s[a])},defineProperty(e,t,o){return o.get!=null?e._.accessCache[t]=0:_e(o,"value")&&this.set(e,t,o.value,null),Reflect.defineProperty(e,t,o)}};function Ma(e){return oe(e)?e.reduce((t,o)=>(t[o]=null,t),{}):e}let fl=!0;function rm(e){const t=Tu(e),o=e.proxy,r=e.ctx;fl=!1,t.beforeCreate&&ka(t.beforeCreate,e,"bc");const{data:n,computed:i,methods:l,watch:a,provide:s,inject:c,created:u,beforeMount:f,mounted:d,beforeUpdate:p,updated:g,activated:C,deactivated:S,beforeDestroy:E,beforeUnmount:T,destroyed:v,unmounted:y,render:L,renderTracked:w,renderTriggered:D,errorCaptured:F,serverPrefetch:P,expose:U,inheritAttrs:X,components:k,directives:Q,filters:me}=t;if(c&&nm(c,r,null),l)for(const ne in l){const de=l[ne];le(de)&&(r[ne]=de.bind(o))}if(n){const ne=n.call(o,o);be(ne)&&(e.data=fn(ne))}if(fl=!0,i)for(const ne in i){const de=i[ne],tt=le(de)?de.bind(o,o):le(de.get)?de.get.bind(o,o):Gt,ft=!le(de)&&le(de.set)?de.set.bind(o):Gt,Re=fe({get:tt,set:ft});Object.defineProperty(r,ne,{enumerable:!0,configurable:!0,get:()=>Re.value,set:Fe=>Re.value=Fe})}if(a)for(const ne in a)Eu(a[ne],r,o,ne);if(s){const ne=le(s)?s.call(o):s;Reflect.ownKeys(ne).forEach(de=>{Wr(de,ne[de])})}u&&ka(u,e,"c");function se(ne,de){oe(de)?de.forEach(tt=>ne(tt.bind(o))):de&&ne(de.bind(o))}if(se(Jl,f),se(pi,d),se(jp,p),se(Gp,g),se(zp,C),se(Up,S),se(Xp,F),se(qp,w),se(Yp,D),se(Su,T),se(Ql,y),se(Kp,P),oe(U))if(U.length){const ne=e.exposed||(e.exposed={});U.forEach(de=>{Object.defineProperty(ne,de,{get:()=>o[de],set:tt=>o[de]=tt,enumerable:!0})})}else e.exposed||(e.exposed={});L&&e.render===Gt&&(e.render=L),X!=null&&(e.inheritAttrs=X),k&&(e.components=k),Q&&(e.directives=Q),P&&_u(e)}function nm(e,t,o=Gt){oe(e)&&(e=dl(e));for(const r in e){const n=e[r];let i;be(n)?"default"in n?i=Ze(n.from||r,n.default,!0):i=Ze(n.from||r):i=Ze(n),we(i)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[r]=i}}function ka(e,t,o){Lt(oe(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,o)}function Eu(e,t,o,r){let n=r.includes(".")?pu(o,r):()=>o[r];if(Le(e)){const i=t[e];le(i)&&St(n,i)}else if(le(e))St(n,e.bind(o));else if(be(e))if(oe(e))e.forEach(i=>Eu(i,t,o,r));else{const i=le(e.handler)?e.handler.bind(o):t[e.handler];le(i)&&St(n,i,e)}}function Tu(e){const t=e.type,{mixins:o,extends:r}=t,{mixins:n,optionsCache:i,config:{optionMergeStrategies:l}}=e.appContext,a=i.get(t);let s;return a?s=a:!n.length&&!o&&!r?s=t:(s={},n.length&&n.forEach(c=>Hn(s,c,l,!0)),Hn(s,t,l)),be(t)&&i.set(t,s),s}function Hn(e,t,o,r=!1){const{mixins:n,extends:i}=t;i&&Hn(e,i,o,!0),n&&n.forEach(l=>Hn(e,l,o,!0));for(const l in t)if(!(r&&l==="expose")){const a=im[l]||o&&o[l];e[l]=a?a(e[l],t[l]):t[l]}return e}const im={data:Ha,props:$a,emits:$a,methods:Nr,computed:Nr,beforeCreate:rt,created:rt,beforeMount:rt,mounted:rt,beforeUpdate:rt,updated:rt,beforeDestroy:rt,beforeUnmount:rt,destroyed:rt,unmounted:rt,activated:rt,deactivated:rt,errorCaptured:rt,serverPrefetch:rt,components:Nr,directives:Nr,watch:am,provide:Ha,inject:lm};function Ha(e,t){return t?e?function(){return Be(le(e)?e.call(this,this):e,le(t)?t.call(this,this):t)}:t:e}function lm(e,t){return Nr(dl(e),dl(t))}function dl(e){if(oe(e)){const t={};for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ct(t)}Modifiers`]||e[`${Ro(t)}Modifiers`];function fm(e,t,...o){if(e.isUnmounted)return;const r=e.vnode.props||Se;let n=o;const i=t.startsWith("update:"),l=i&&um(r,t.slice(7));l&&(l.trim&&(n=o.map(u=>Le(u)?u.trim():u)),l.number&&(n=n.map(oi)));let a,s=r[a=Di(t)]||r[a=Di(ct(t))];!s&&i&&(s=r[a=Di(Ro(t))]),s&&Lt(s,e,6,n);const c=r[a+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Lt(c,e,6,n)}}const dm=new WeakMap;function Iu(e,t,o=!1){const r=o?dm:t.emitsCache,n=r.get(e);if(n!==void 0)return n;const i=e.emits;let l={},a=!1;if(!le(e)){const s=c=>{const u=Iu(c,t,!0);u&&(a=!0,Be(l,u))};!o&&t.mixins.length&&t.mixins.forEach(s),e.extends&&s(e.extends),e.mixins&&e.mixins.forEach(s)}return!i&&!a?(be(e)&&r.set(e,null),null):(oe(i)?i.forEach(s=>l[s]=null):Be(l,i),be(e)&&r.set(e,l),l)}function mi(e,t){return!e||!Jn(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),_e(e,t[0].toLowerCase()+t.slice(1))||_e(e,Ro(t))||_e(e,t))}function Ba(e){const{type:t,vnode:o,proxy:r,withProxy:n,propsOptions:[i],slots:l,attrs:a,emit:s,render:c,renderCache:u,props:f,data:d,setupState:p,ctx:g,inheritAttrs:C}=e,S=Nn(e);let E,T;try{if(o.shapeFlag&4){const y=n||r,L=y;E=Ut(c.call(L,y,u,f,p,d,g)),T=a}else{const y=t;E=Ut(y.length>1?y(f,{attrs:a,slots:l,emit:s}):y(f,null)),T=t.props?a:pm(a)}}catch(y){ao.length=0,si(y,e,1),E=je(Je)}let v=E;if(T&&C!==!1){const y=Object.keys(T),{shapeFlag:L}=v;y.length&&L&7&&(i&&y.some(Qn)&&(T=mm(T,i)),v=Io(v,T,!1,!0))}if(o.dirs&&(v=Io(v,null,!1,!0),v.dirs=v.dirs?v.dirs.concat(o.dirs):o.dirs),o.transition){const y=ui(v.type)&&Mn(v)||v;Jr(y,o.transition)}return E=v,Nn(S),E}const pm=e=>{let t;for(const o in e)(o==="class"||o==="style"||Jn(o))&&((t||(t={}))[o]=e[o]);return t},mm=(e,t)=>{const o={};for(const r in e)(!Qn(r)||!(r.slice(9)in t))&&(o[r]=e[r]);return o};function hm(e,t,o){const{props:r,children:n,component:i}=e,{props:l,children:a,patchFlag:s}=t,c=i.emitsOptions;if(t.dirs||t.transition)return!0;if(o&&s>=0){if(s&1024)return!0;if(s&16)return r?Wa(r,l,c):!!l;if(s&8){const u=t.dynamicProps;for(let f=0;fObject.create(Lu),Du=e=>Object.getPrototypeOf(e)===Lu;function Cm(e,t,o,r=!1){const n={},i=wu();e.propsDefaults=Object.create(null),Ru(e,t,n,i);for(const l in e.propsOptions[0])l in n||(n[l]=void 0);o?e.props=r?n:ru(n):e.type.props?e.props=n:e.props=i,e.attrs=i}function bm(e,t,o,r){const{props:n,attrs:i,vnode:{patchFlag:l}}=e,a=ge(n),[s]=e.propsOptions;let c=!1;if((r||l>0)&&!(l&16)){if(l&8){const u=e.vnode.dynamicProps;for(let f=0;f{s=!0;const[d,p]=Fu(f,t,!0);Be(l,d),p&&a.push(...p)};!o&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!i&&!s)return be(e)&&r.set(e,dr),dr;if(oe(i))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",ea=e=>oe(e)?e.map(Ut):[Ut(e)],_m=(e,t,o)=>{if(t._n)return t;const r=du((...n)=>ea(t(...n)),o);return r._c=!1,r},Ou=(e,t,o)=>{const r=e._ctx;for(const n in e){if(Zl(n))continue;const i=e[n];if(le(i))t[n]=_m(n,i,r);else if(i!=null){const l=ea(i);t[n]=()=>l}}},Nu=(e,t)=>{const o=ea(t);e.slots.default=()=>o},Mu=(e,t,o)=>{for(const r in t)(o||!Zl(r))&&(e[r]=t[r])},vm=(e,t,o)=>{const r=e.slots=wu();if(e.vnode.shapeFlag&32){const n=t._;n?(Mu(r,t,o),o&&kc(r,"_",n,!0)):Ou(t,r)}else t&&Nu(e,t)},Sm=(e,t,o)=>{const{vnode:r,slots:n}=e;let i=!0,l=Se;if(r.shapeFlag&32){const a=t._;a?o&&a===1?i=!1:Mu(n,t,o):(i=!t.$stable,Ou(t,n)),l=t}else t&&(Nu(e,t),l={default:1});if(i)for(const a in n)!Zl(a)&&l[a]==null&&delete n[a]},nt=Im;function ym(e){return Em(e)}function Em(e,t){const o=ri();o.__VUE__=!0;const{insert:r,remove:n,patchProp:i,createElement:l,createText:a,createComment:s,setText:c,setElementText:u,parentNode:f,nextSibling:d,setScopeId:p=Gt,insertStaticContent:g}=e,C=(b,_,x,R=null,$=null,N=null,V=void 0,z=null,m=!!_.dynamicChildren)=>{if(b===_)return;b&&!jo(b,_)&&(R=H(b),Fe(b,$,N,!0),b=null),_.patchFlag===-2&&(m=!1,_.dynamicChildren=null);const{type:h,ref:A,shapeFlag:O}=_;switch(h){case pn:S(b,_,x,R);break;case Je:E(b,_,x,R);break;case $i:b==null&&T(_,x,R,V);break;case qe:k(b,_,x,R,$,N,V,z,m);break;default:O&1?L(b,_,x,R,$,N,V,z,m):O&6?Q(b,_,x,R,$,N,V,z,m):(O&64||O&128)&&h.process(b,_,x,R,$,N,V,z,m,ee)}A!=null&&$?zr(A,b&&b.ref,N,_||b,!_):A==null&&b&&b.ref!=null&&zr(b.ref,null,N,b,!0)},S=(b,_,x,R)=>{if(b==null)r(_.el=a(_.children),x,R);else{const $=_.el=b.el;_.children!==b.children&&c($,_.children)}},E=(b,_,x,R)=>{b==null?r(_.el=s(_.children||""),x,R):_.el=b.el},T=(b,_,x,R)=>{[b.el,b.anchor]=g(b.children,_,x,R,b.el,b.anchor)},v=({el:b,anchor:_},x,R)=>{let $;for(;b&&b!==_;)$=d(b),r(b,x,R),b=$;r(_,x,R)},y=({el:b,anchor:_})=>{let x;for(;b&&b!==_;)x=d(b),n(b),b=x;n(_)},L=(b,_,x,R,$,N,V,z,m)=>{if(_.type==="svg"?V="svg":_.type==="math"&&(V="mathml"),b==null)w(_,x,R,$,N,V,z,m);else{const h=b.el&&b.el._isVueCE?b.el:null;try{h&&h._beginPatch(),P(b,_,$,N,V,z,m)}finally{h&&h._endPatch()}}},w=(b,_,x,R,$,N,V,z)=>{let m,h;const{props:A,shapeFlag:O,transition:j,dirs:B}=b;if(m=b.el=l(b.type,N,A&&A.is,A),O&8?u(m,b.children):O&16&&F(b.children,m,null,R,$,Hi(b,N),V,z),B&&ko(b,null,R,"created"),D(m,b,b.scopeId,V,R),A){for(const M in A)M!=="value"&&!Hr(M)&&i(m,M,null,A[M],N,R);"value"in A&&i(m,"value",null,A.value,N),(h=A.onVnodeBeforeMount)&&Bt(h,R,b)}B&&ko(b,null,R,"beforeMount");const I=Tm($,j);I&&j.beforeEnter(m),r(m,_,x),((h=A&&A.onVnodeMounted)||I||B)&&nt(()=>{h&&Bt(h,R,b),I&&j.enter(m),B&&ko(b,null,R,"mounted")},$)},D=(b,_,x,R,$)=>{if(x&&p(b,x),R)for(let N=0;N{for(let h=m;h{const z=_.el=b.el;let{patchFlag:m,dynamicChildren:h,dirs:A}=_;m|=b.patchFlag&16;const O=b.props||Se,j=_.props||Se;let B;if(x&&Ho(x,!1),(B=j.onVnodeBeforeUpdate)&&Bt(B,x,_,b),A&&ko(_,b,x,"beforeUpdate"),x&&Ho(x,!0),h&&(!b.dynamicChildren||b.dynamicChildren.length!==h.length)&&(m=0,V=!1,h=null),(O.innerHTML&&j.innerHTML==null||O.textContent&&j.textContent==null)&&u(z,""),h?U(b.dynamicChildren,h,z,x,R,Hi(_,$),N):V||de(b,_,z,null,x,R,Hi(_,$),N,!1),m>0){if(m&16)X(z,O,j,x,$);else if(m&2&&O.class!==j.class&&i(z,"class",null,j.class,$),m&4&&i(z,"style",O.style,j.style,$),m&8){const I=_.dynamicProps;for(let M=0;M{B&&Bt(B,x,_,b),A&&ko(_,b,x,"updated")},R)},U=(b,_,x,R,$,N,V)=>{for(let z=0;z<_.length;z++){const m=b[z],h=_[z],A=m.el&&(m.type===qe||!jo(m,h)||m.shapeFlag&198)?f(m.el):x;C(m,h,A,null,R,$,N,V,!0)}},X=(b,_,x,R,$)=>{if(_!==x){if(_!==Se)for(const N in _)!Hr(N)&&!(N in x)&&i(b,N,_[N],null,$,R);for(const N in x){if(Hr(N))continue;const V=x[N],z=_[N];V!==z&&N!=="value"&&i(b,N,z,V,$,R)}"value"in x&&i(b,"value",_.value,x.value,$)}},k=(b,_,x,R,$,N,V,z,m)=>{const h=_.el=b?b.el:a(""),A=_.anchor=b?b.anchor:a("");let{patchFlag:O,dynamicChildren:j,slotScopeIds:B}=_;B&&(z=z?z.concat(B):B),b==null?(r(h,x,R),r(A,x,R),F(_.children||[],x,A,$,N,V,z,m)):O>0&&O&64&&j&&b.dynamicChildren&&b.dynamicChildren.length===j.length?(U(b.dynamicChildren,j,x,$,N,V,z),(_.key!=null||$&&_===$.subTree)&&ta(b,_,!0)):de(b,_,x,A,$,N,V,z,m)},Q=(b,_,x,R,$,N,V,z,m)=>{_.slotScopeIds=z,b==null?_.shapeFlag&512?$.ctx.activate(_,x,R,V,m):me(_,x,R,$,N,V,m):ye(b,_,m)},me=(b,_,x,R,$,N,V)=>{const z=b.component=Om(b,R,$);if(fi(b)&&(z.ctx.renderer=ee),Nm(z,!1,V),z.asyncDep){if($&&$.registerDep(z,se,V),!b.el){const m=z.subTree=je(Je);E(null,m,_,x),b.placeholder=m.el}}else se(z,b,_,x,$,N,V)},ye=(b,_,x)=>{const R=_.component=b.component;if(hm(b,_,x))if(R.asyncDep&&!R.asyncResolved){ne(R,_,x);return}else R.next=_,R.update();else _.el=b.el,R.vnode=_},se=(b,_,x,R,$,N,V)=>{const z=()=>{if(b.isMounted){let{next:O,bu:j,u:B,parent:I,vnode:M}=b;{const Ue=ku(b);if(Ue){O&&(O.el=M.el,ne(b,O,V)),Ue.asyncDep.then(()=>{nt(()=>{b.isUnmounted||h()},$)});return}}let te=O,ce;Ho(b,!1),O?(O.el=M.el,ne(b,O,V)):O=M,j&&In(j),(ce=O.props&&O.props.onVnodeBeforeUpdate)&&Bt(ce,I,O,M),Ho(b,!0);const Ee=Ba(b),ot=b.subTree;b.subTree=Ee,C(ot,Ee,f(ot.el),H(ot),b,$,N),O.el=Ee.el,te===null&&gm(b,Ee.el),B&&nt(B,$),(ce=O.props&&O.props.onVnodeUpdated)&&nt(()=>Bt(ce,I,O,M),$)}else{let O;const{el:j,props:B}=_,{bm:I,m:M,parent:te,root:ce,type:Ee}=b,ot=mr(_);Ho(b,!1),I&&In(I),!ot&&(O=B&&B.onVnodeBeforeMount)&&Bt(O,te,_),Ho(b,!0);{ce.ce&&ce.ce._hasShadowRoot()&&ce.ce._injectChildStyle(Ee,b.parent?b.parent.type:void 0);const Ue=b.subTree=Ba(b);C(null,Ue,x,R,b,$,N),_.el=Ue.el}if(M&&nt(M,$),!ot&&(O=B&&B.onVnodeMounted)){const Ue=_;nt(()=>Bt(O,te,Ue),$)}(_.shapeFlag&256||te&&mr(te.vnode)&&te.vnode.shapeFlag&256)&&b.a&&nt(b.a,$),b.isMounted=!0,_=x=R=null}};b.scope.on();const m=b.effect=new Uc(z);b.scope.off();const h=b.update=m.run.bind(m),A=b.job=m.runIfDirty.bind(m);A.i=b,A.id=b.uid,m.scheduler=()=>ql(A),Ho(b,!0),h()},ne=(b,_,x)=>{_.component=b;const R=b.vnode.props;b.vnode=_,b.next=null,bm(b,_.props,R,x),Sm(b,_.children,x),so(),wa(b),co()},de=(b,_,x,R,$,N,V,z,m=!1)=>{const h=b&&b.children,A=b?b.shapeFlag:0,O=_.children,{patchFlag:j,shapeFlag:B}=_;if(j>0){if(j&128){ft(h,O,x,R,$,N,V,z,m);return}else if(j&256){tt(h,O,x,R,$,N,V,z,m);return}}B&8?(A&16&&We(h,$,N),O!==h&&u(x,O)):A&16?B&16?ft(h,O,x,R,$,N,V,z,m):We(h,$,N,!0):(A&8&&u(x,""),B&16&&F(O,x,R,$,N,V,z,m))},tt=(b,_,x,R,$,N,V,z,m)=>{b=b||dr,_=_||dr;const h=b.length,A=_.length,O=Math.min(h,A);let j;for(j=0;jA?We(b,$,N,!0,!1,O):F(_,x,R,$,N,V,z,m,O)},ft=(b,_,x,R,$,N,V,z,m)=>{let h=0;const A=_.length;let O=b.length-1,j=A-1;for(;h<=O&&h<=j;){const B=b[h],I=_[h]=m?oo(_[h]):Ut(_[h]);if(jo(B,I))C(B,I,x,null,$,N,V,z,m);else break;h++}for(;h<=O&&h<=j;){const B=b[O],I=_[j]=m?oo(_[j]):Ut(_[j]);if(jo(B,I))C(B,I,x,null,$,N,V,z,m);else break;O--,j--}if(h>O){if(h<=j){const B=j+1,I=Bj)for(;h<=O;)Fe(b[h],$,N,!0),h++;else{const B=h,I=h,M=new Map;for(h=I;h<=j;h++){const Ct=_[h]=m?oo(_[h]):Ut(_[h]);Ct.key!=null&&M.set(Ct.key,h)}let te,ce=0;const Ee=j-I+1;let ot=!1,Ue=0;const Mo=new Array(Ee);for(h=0;h=Ee){Fe(Ct,$,N,!0);continue}let $t;if(Ct.key!=null)$t=M.get(Ct.key);else for(te=I;te<=j;te++)if(Mo[te-I]===0&&jo(Ct,_[te])){$t=te;break}$t===void 0?Fe(Ct,$,N,!0):(Mo[$t-I]=h+1,$t>=Ue?Ue=$t:ot=!0,C(Ct,_[$t],x,null,$,N,V,z,m),ce++)}const wi=ot?Pm(Mo):dr;for(te=wi.length-1,h=Ee-1;h>=0;h--){const Ct=I+h,$t=_[Ct],ya=_[Ct+1],Ea=Ct+1{const{el:N,type:V,transition:z,children:m,shapeFlag:h}=b;if(h&6){Re(b.component.subTree,_,x,R);return}if(h&128){b.suspense.move(_,x,R);return}if(h&64){V.move(b,_,x,ee);return}if(V===qe){r(N,_,x);for(let O=0;Oz.enter(N),$));else{const{leave:O,delayLeave:j,afterLeave:B}=z,I=()=>{b.ctx.isUnmounted?n(N):r(N,_,x)},M=()=>{const te=N._isLeaving||!!N[It];N._isLeaving&&N[It](!0),z.persisted&&!te?I():O(N,()=>{I(),B&&B()})};j?j(N,I,M):M()}else r(N,_,x)},Fe=(b,_,x,R=!1,$=!1)=>{const{type:N,props:V,ref:z,children:m,dynamicChildren:h,shapeFlag:A,patchFlag:O,dirs:j,cacheIndex:B,memo:I}=b;if(O===-2&&($=!1),z!=null&&(so(),zr(z,null,x,b,!0),co()),B!=null&&(_.renderCache[B]=void 0),A&256){_.ctx.deactivate(b);return}const M=A&1&&j,te=!mr(b);let ce;if(te&&(ce=V&&V.onVnodeBeforeUnmount)&&Bt(ce,_,b),A&6)gt(b.component,x,R);else{if(A&128){b.suspense.unmount(x,R);return}M&&ko(b,null,_,"beforeUnmount"),A&64?b.type.remove(b,_,x,ee,R):h&&!h.hasOnce&&(N!==qe||O>0&&O&64)?We(h,_,x,!1,!0):(N===qe&&O&384||!$&&A&16)&&We(m,_,x),R&&Tt(b)}const Ee=I!=null&&B==null;(te&&(ce=V&&V.onVnodeUnmounted)||M||Ee)&&nt(()=>{ce&&Bt(ce,_,b),M&&ko(b,null,_,"unmounted"),Ee&&(b.el=null)},x)},Tt=b=>{const{type:_,el:x,anchor:R,transition:$}=b;if(_===qe){ht(x,R);return}if(_===$i){y(b);return}const N=()=>{n(x),$&&!$.persisted&&$.afterLeave&&$.afterLeave()};if(b.shapeFlag&1&&$&&!$.persisted){const{leave:V,delayLeave:z}=$,m=()=>V(x,N);z?z(b.el,N,m):m()}else N()},ht=(b,_)=>{let x;for(;b!==_;)x=d(b),n(b),b=x;n(_)},gt=(b,_,x)=>{const{bum:R,scope:$,job:N,subTree:V,um:z,m,a:h}=b;Ua(m),Ua(h),R&&In(R),$.stop(),N&&(N.flags|=8,Fe(V,b,_,x)),z&&nt(z,_),nt(()=>{b.isUnmounted=!0},_)},We=(b,_,x,R=!1,$=!1,N=0)=>{for(let V=N;V{if(b.shapeFlag&6)return H(b.component.subTree);if(b.shapeFlag&128)return b.suspense.next();const _=d(b.anchor||b.el),x=_&&_[mu];return x?d(x):_};let Y=!1;const G=(b,_,x)=>{let R;b==null?_._vnode&&(Fe(_._vnode,null,null,!0),R=_._vnode.component):C(_._vnode||null,b,_,null,null,null,x),_._vnode=b,Y||(Y=!0,wa(R),cu(),Y=!1)},ee={p:C,um:Fe,m:Re,r:Tt,mt:me,mc:F,pc:de,pbc:U,n:H,o:e};return{render:G,hydrate:void 0,createApp:cm(G)}}function Hi({type:e,props:t},o){return o==="svg"&&e==="foreignObject"||o==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:o}function Ho({effect:e,job:t},o){o?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Tm(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ta(e,t,o=!1){const r=e.children,n=t.children;if(oe(r)&&oe(n))for(let i=0;i>1,e[o[a]]0&&(t[r]=o[i-1]),o[i]=r)}}for(i=o.length,l=o[i-1];i-- >0;)o[i]=l,l=t[l];return o}function ku(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ku(t)}function Ua(e){if(e)for(let t=0;te.__isSuspense;function Im(e,t){t&&t.pendingBranch?oe(e)?t.effects.push(...e):t.effects.push(e):Dp(e)}const qe=Symbol.for("v-fgt"),pn=Symbol.for("v-txt"),Je=Symbol.for("v-cmt"),$i=Symbol.for("v-stc"),ao=[];let xt=null;function Ft(e=!1){ao.push(xt=e?null:[])}function oa(){ao.pop(),xt=ao[ao.length-1]||null}let Qr=1;function $n(e,t=!1){Qr+=e,e<0&&xt&&t&&(xt.hasOnce=!0)}function Bu(e){return e.dynamicChildren=Qr>0?xt||dr:null,oa(),Qr>0&&xt&&xt.push(e),e}function hr(e,t,o,r,n,i){return Bu(Rt(e,t,o,r,n,i,!0))}function Zr(e,t,o,r,n){return Bu(je(e,t,o,r,n,!0))}function en(e){return e?e.__v_isVNode===!0:!1}function jo(e,t){return e.type===t.type&&e.key===t.key}const Wu=({key:e})=>e??null,An=({ref:e,ref_key:t,ref_for:o})=>(typeof e=="number"&&(e=""+e),e!=null?Le(e)||we(e)||le(e)?{i:Ve,r:e,k:t,f:!!o}:e:null);function Rt(e,t=null,o=null,r=0,n=null,i=e===qe?0:1,l=!1,a=!1){const s={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wu(t),ref:t&&An(t),scopeId:fu,slotScopeIds:null,children:o,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:Ve};return a?(Bn(s,o),i&128&&e.normalize(s)):o&&(s.shapeFlag|=Le(o)?8:16),Qr>0&&!l&&xt&&(s.patchFlag>0||i&6)&&s.patchFlag!==32&&xt.push(s),s}const je=Am;function Am(e,t=null,o=null,r=0,n=null,i=!1){if((!e||e===Zp)&&(e=Je),en(e)){const a=Io(e,t,!0);return o&&Bn(a,o),Qr>0&&!i&&xt&&(a.shapeFlag&6?xt[xt.indexOf(e)]=a:xt.push(a)),a.patchFlag=-2,a}if(Bm(e)&&(e=e.__vccOpts),t){t=Lm(t);let{class:a,style:s}=t;a&&!Le(a)&&(t.class=ii(a)),be(s)&&(ai(s)&&!oe(s)&&(s=Be({},s)),t.style=ni(s))}const l=Le(e)?1:$u(e)?128:ui(e)?64:be(e)?4:le(e)?2:0;return Rt(e,t,o,r,n,l,i,!0)}function Lm(e){return e?ai(e)||Du(e)?Be({},e):e:null}function Io(e,t,o=!1,r=!1){const{props:n,ref:i,patchFlag:l,children:a,transition:s}=e,c=t?Dm(n||{},t):n,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&Wu(c),ref:t&&t.ref?o&&i?oe(i)?i.concat(An(t)):[i,An(t)]:An(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==qe?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:s,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Io(e.ssContent),ssFallback:e.ssFallback&&Io(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return s&&r&&Jr(u,s.clone(u)),u}function wm(e=" ",t=0){return je(pn,null,e,t)}function Ln(e="",t=!1){return t?(Ft(),Zr(Je,null,e)):je(Je,null,e)}function Ut(e){return e==null||typeof e=="boolean"?je(Je):oe(e)?je(qe,null,e.slice()):en(e)?oo(e):je(pn,null,String(e))}function oo(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Io(e)}function Bn(e,t){let o=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(oe(t))o=16;else if(typeof t=="object")if(r&65){const n=t.default;n&&(n._c&&(n._d=!1),Bn(e,n()),n._c&&(n._d=!0));return}else{o=32;const n=t._;!n&&!Du(t)?t._ctx=Ve:n===3&&Ve&&(Ve.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(le(t)){if(r&65){Bn(e,{default:t});return}t={default:t,_ctx:Ve},o=32}else t=String(t),r&64?(o=16,t=[wm(t)]):o=8;e.children=t,e.shapeFlag|=o}function Dm(...e){const t={};for(let o=0;oQe||Ve;let Wn,tn;{const e=ri(),t=(o,r)=>{let n;return(n=e[o])||(n=e[o]=[]),n.push(r),i=>{n.length>1?n.forEach(l=>l(i)):n[0](i)}};Wn=t("__VUE_INSTANCE_SETTERS__",o=>Qe=o),tn=t("__VUE_SSR_SETTERS__",o=>on=o)}const mn=e=>{const t=Qe;return Wn(e),e.scope.on(),()=>{e.scope.off(),Wn(t)}},Va=()=>{Qe&&Qe.scope.off(),Wn(null)};function zu(e){return e.vnode.shapeFlag&4}let on=!1;function Nm(e,t=!1,o=!1){t&&tn(t);const{props:r,children:n}=e.vnode,i=zu(e);Cm(e,r,i,t),vm(e,n,o||t);const l=i?Mm(e,t):void 0;return t&&tn(!1),l}function Mm(e,t){const o=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,om);const{setup:r}=o;if(r){so();const n=e.setupContext=r.length>1?Hm(e):null,i=mn(e),l=dn(r,e,0,[e.props,n]),a=Oc(l);if(co(),i(),(a||e.sp)&&!mr(e)&&_u(e),a){if(l.then(Va,Va),t)return l.then(s=>{tn(!0);try{ja(e,s,t)}finally{tn(!1)}}).catch(s=>{si(s,e,0)});e.asyncDep=l}else ja(e,l)}else Uu(e)}function ja(e,t,o){le(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:be(t)&&(e.setupState=iu(t)),Uu(e)}function Uu(e,t,o){const r=e.type;e.render||(e.render=r.render||Gt);{const n=mn(e);so();try{rm(e)}finally{co(),n()}}}const km={get(e,t){return Ye(e,"get",""),e[t]}};function Hm(e){const t=o=>{e.exposed=o||{}};return{attrs:new Proxy(e.attrs,km),slots:e.slots,emit:e.emit,expose:t}}function hi(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(iu(qr(e.exposed)),{get(t,o){if(o in t)return t[o];if(o in Ur)return Ur[o](e)},has(t,o){return o in t||o in Ur}})):e.proxy}function $m(e,t=!0){return le(e)?e.displayName||e.name:e.name||t&&e.__name}function Bm(e){return le(e)&&"__vccOpts"in e}const fe=(e,t)=>Pp(e,t,on);function vr(e,t,o){try{$n(-1);const r=arguments.length;return r===2?be(t)&&!oe(t)?en(t)?je(e,null,[t]):je(e,t):je(e,null,t):(r>3?o=Array.prototype.slice.call(arguments,2):r===3&&en(o)&&(o=[o]),je(e,t,o))}finally{$n(1)}}const Wm="3.5.42";let ml;const Ga=typeof window<"u"&&window.trustedTypes;if(Ga)try{ml=Ga.createPolicy("vue",{createHTML:e=>e})}catch{}const Vu=ml?e=>ml.createHTML(e):e=>e,zm="http://www.w3.org/2000/svg",Um="http://www.w3.org/1998/Math/MathML",to=typeof document<"u"?document:null,Ka=to&&to.createElement("template"),Vm={insert:(e,t,o)=>{t.insertBefore(e,o||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,o,r)=>{const n=t==="svg"?to.createElementNS(zm,e):t==="mathml"?to.createElementNS(Um,e):o?to.createElement(e,{is:o}):to.createElement(e);return e==="select"&&r&&r.multiple!=null&&n.setAttribute("multiple",r.multiple),n},createText:e=>to.createTextNode(e),createComment:e=>to.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>to.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,o,r,n,i){const l=o?o.previousSibling:t.lastChild;if(n&&(n===i||n.nextSibling))for(;t.insertBefore(n.cloneNode(!0),o),!(n===i||!(n=n.nextSibling)););else{Ka.innerHTML=Vu(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const a=Ka.content;if(r==="svg"||r==="mathml"){const s=a.firstChild;for(;s.firstChild;)a.appendChild(s.firstChild);a.removeChild(s)}t.insertBefore(a,o)}return[l?l.nextSibling:t.firstChild,o?o.previousSibling:t.lastChild]}},go="transition",wr="animation",rn=Symbol("_vtc"),ju={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},jm=Be({},hu,ju),Gm=e=>(e.displayName="Transition",e.props=jm,e),dT=Gm((e,{slots:t})=>vr(Wp,Km(e),t)),$o=(e,t=[])=>{oe(e)?e.forEach(o=>o(...t)):e&&e(...t)},Ya=e=>e?oe(e)?e.some(t=>t.length>1):e.length>1:!1;function Km(e){const t={};for(const k in e)k in ju||(t[k]=e[k]);if(e.css===!1)return t;const{name:o="v",type:r,duration:n,enterFromClass:i=`${o}-enter-from`,enterActiveClass:l=`${o}-enter-active`,enterToClass:a=`${o}-enter-to`,appearFromClass:s=i,appearActiveClass:c=l,appearToClass:u=a,leaveFromClass:f=`${o}-leave-from`,leaveActiveClass:d=`${o}-leave-active`,leaveToClass:p=`${o}-leave-to`}=e,g=Ym(n),C=g&&g[0],S=g&&g[1],{onBeforeEnter:E,onEnter:T,onEnterCancelled:v,onLeave:y,onLeaveCancelled:L,onBeforeAppear:w=E,onAppear:D=T,onAppearCancelled:F=v}=t,P=(k,Q,me,ye)=>{k._enterCancelled=ye,Bo(k,Q?u:a),Bo(k,Q?c:l),me&&me()},U=(k,Q)=>{k._isLeaving=!1,Bo(k,f),Bo(k,p),Bo(k,d),Q&&Q()},X=k=>(Q,me)=>{const ye=k?D:T,se=()=>P(Q,k,me);$o(ye,[Q,se]),qa(()=>{Bo(Q,k?s:i),Jt(Q,k?u:a),Ya(ye)||Xa(Q,r,C,se)})};return Be(t,{onBeforeEnter(k){$o(E,[k]),Jt(k,i),Jt(k,l)},onBeforeAppear(k){$o(w,[k]),Jt(k,s),Jt(k,c)},onEnter:X(!1),onAppear:X(!0),onLeave(k,Q){k._isLeaving=!0;const me=()=>U(k,Q);Jt(k,f),k._enterCancelled?(Jt(k,d),Za(k)):(Za(k),Jt(k,d)),qa(()=>{k._isLeaving&&(Bo(k,f),Jt(k,p),Ya(y)||Xa(k,r,S,me))}),$o(y,[k,me])},onEnterCancelled(k){P(k,!1,void 0,!0),$o(v,[k])},onAppearCancelled(k){P(k,!0,void 0,!0),$o(F,[k])},onLeaveCancelled(k){U(k),$o(L,[k])}})}function Ym(e){if(e==null)return null;if(be(e))return[Bi(e.enter),Bi(e.leave)];{const t=Bi(e);return[t,t]}}function Bi(e){return Gd(e)}function Jt(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.add(o)),(e[rn]||(e[rn]=new Set)).add(t)}function Bo(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const o=e[rn];o&&(o.delete(t),o.size||(e[rn]=void 0))}function qa(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let qm=0;function Xa(e,t,o,r){const n=e._endId=++qm,i=()=>{n===e._endId&&r()};if(o!=null)return setTimeout(i,o);const{type:l,timeout:a,propCount:s}=Xm(e,t);if(!l)return r();const c=l+"end";let u=0;const f=()=>{e.removeEventListener(c,d),i()},d=p=>{p.target===e&&++u>=s&&f()};setTimeout(()=>{u(o[g]||"").split(", "),n=r(`${go}Delay`),i=r(`${go}Duration`),l=Ja(n,i),a=r(`${wr}Delay`),s=r(`${wr}Duration`),c=Ja(a,s);let u=null,f=0,d=0;t===go?l>0&&(u=go,f=l,d=i.length):t===wr?c>0&&(u=wr,f=c,d=s.length):(f=Math.max(l,c),u=f>0?l>c?go:wr:null,d=u?u===go?i.length:s.length:0);const p=u===go&&/\b(?:transform|all)(?:,|$)/.test(r(`${go}Property`).toString());return{type:u,timeout:f,propCount:d,hasTransform:p}}function Ja(e,t){for(;e.lengthQa(o)+Qa(e[r])))}function Qa(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Za(e){return(e?e.ownerDocument:document).body.offsetHeight}function Jm(e,t,o){const r=e[rn];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):o?e.setAttribute("class",t):e.className=t}const es=Symbol("_vod"),Qm=Symbol("_vsh"),Zm=Symbol(""),eh=/(?:^|;)\s*display\s*:/;function th(e,t,o){const r=e.style,n=Le(o);let i=!1;if(o&&!n){if(t)if(Le(t))for(const l of t.split(";")){const a=l.slice(0,l.indexOf(":")).trim();o[a]==null&&Mr(r,a,"")}else for(const l in t)o[l]==null&&Mr(r,l,"");for(const l in o){l==="display"&&(i=!0);const a=o[l];a!=null?rh(e,l,!Le(t)&&t?t[l]:void 0,a)||Mr(r,l,a):Mr(r,l,"")}}else if(n){if(t!==o){const l=r[Zm];l&&(o+=";"+l),r.cssText=o,i=eh.test(o)}}else t&&e.removeAttribute("style");es in e&&(e[es]=i?r.display:"",e[Qm]&&(r.display="none"))}const vn=/\s*!important$/;function Mr(e,t,o){if(oe(o))o.forEach(r=>Mr(e,t,r));else if(o==null&&(o=""),t.startsWith("--"))vn.test(o)?e.setProperty(t,o.replace(vn,""),"important"):e.setProperty(t,o);else{const r=oh(e,t);vn.test(o)?e.setProperty(Ro(r),o.replace(vn,""),"important"):e[r]=o}}const ts=["Webkit","Moz","ms"],Wi={};function oh(e,t){const o=Wi[t];if(o)return o;let r=ct(t);if(r!=="filter"&&r in e)return Wi[t]=r;r=ti(r);for(let n=0;nzi||(ch.then(()=>zi=0),zi=Date.now());function fh(e,t){const o=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=o.attached)return;const n=o.value;if(oe(n)){const i=r.stopImmediatePropagation;r.stopImmediatePropagation=()=>{i.call(r),r._stopped=!0};const l=n.slice(),a=[r];for(let s=0;se.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,dh=(e,t,o,r,n,i)=>{const l=n==="svg";t==="class"?Jm(e,r,l):t==="style"?th(e,o,r):Jn(t)?Qn(t)||ih(e,t,o,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ph(e,t,r,l))?(ns(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&rs(e,t,r,l,i,t!=="value")):e._isVueCE&&(mh(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Le(r)))?ns(e,ct(t),r,i,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),rs(e,t,r,l))};function ph(e,t,o,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&ls(t)&&le(o));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const n=e.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return ls(t)&&Le(o)?!1:t in e}function mh(e,t){const o=e._def.props;if(!o)return!1;const r=ct(t);return Array.isArray(o)?o.some(n=>ct(n)===r):Object.keys(o).some(n=>ct(n)===r)}const zn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return oe(t)?o=>In(t,o):t};function hh(e){e.target.composing=!0}function as(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ko=Symbol("_assign"),Sn=Symbol("_initialValue");function Ui(e,t,o){return t&&(e=e.trim()),o&&(e=oi(e)),e}const pT={created(e,{modifiers:{lazy:t,trim:o,number:r}},n){e.parentNode&&(e.type==="text"?e[Sn]=e.defaultValue.replace(/[\r\n]/g,""):e.type==="textarea"&&(e[Sn]=e.defaultValue.replace(/\r\n?/g,` `))),e[Ko]=zn(n);const i=r||n.props&&n.props.type==="number";Go(e,t?"change":"input",l=>{l.target.composing||e[Ko](Ui(e.value,o,i))}),(o||i)&&Go(e,"change",()=>{e.value=Ui(e.value,o,i)}),t||(Go(e,"compositionstart",hh),Go(e,"compositionend",as),Go(e,"change",as))},mounted(e,{value:t,modifiers:{trim:o,number:r}}){const n=t??"",i=e[Sn];delete e[Sn],i!==void 0&&(e.type==="text"||e.type==="textarea")&&e.value!==i?e[Ko](Ui(e.value,o,r)):e.value=n},beforeUpdate(e,{value:t,oldValue:o,modifiers:{lazy:r,trim:n,number:i}},l){if(e[Ko]=zn(l),e.composing)return;const a=(i||e.type==="number")&&!/^0\d/.test(e.value)?oi(e.value):e.value,s=t??"";if(a===s)return;const c=e.getRootNode();(c instanceof Document||c instanceof ShadowRoot)&&c.activeElement===e&&e.type!=="range"&&(r&&t===o||n&&e.value.trim()===s)||(e.value=s)}},mT={deep:!0,created(e,{value:t,modifiers:{number:o}},r){e._modelValue=t,Go(e,"change",()=>{const n=Array.prototype.filter.call(e.options,s=>s.selected).map(s=>o?oi(Un(s)):Un(s)),i=e.multiple,l=i?er(e._modelValue)?new Set(n):n:n[0],a=e._pendingValue=[i,i?oe(l)?n.slice():n:l];try{e[Ko](l)}finally{ci(()=>{e._pendingValue===a&&(e._pendingValue=void 0)})}}),e[Ko]=zn(r)},mounted(e,{value:t}){ss(e,t)},beforeUpdate(e,{value:t},o){e._modelValue=t,e[Ko]=zn(o)},updated(e,{value:t}){const o=e._pendingValue;e._pendingValue=void 0,(!o||o[0]!==e.multiple||!gh(t,o[1],o[0]))&&ss(e,t)}};function gh(e,t,o){if(!o||oe(e))return Po(e,t);if(er(e)){if(e.size!==t.length)return!1;for(const r of t)if(!e.has(r))return!1;return!0}return!1}function ss(e,t){const o=e.multiple,r=oe(t);if(!(o&&!r&&!er(t))){for(let n=0,i=e.options.length;nString(c)===String(a)):l.selected=ep(t,a)>-1}else l.selected=t.has(a);else if(Po(Un(l),t)){e.selectedIndex!==n&&(e.selectedIndex=n);return}}!o&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Un(e){return"_value"in e?e._value:e.value}const Ch=["ctrl","shift","alt","meta"],bh={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ch.some(o=>e[`${o}Key`]&&!t.includes(o))},hT=(e,t)=>{if(!e)return e;const o=e._withMods||(e._withMods={}),r=t.join(".");return o[r]||(o[r]=((n,...i)=>{for(let l=0;l{const o=e._withKeys||(e._withKeys={}),r=t.join(".");return o[r]||(o[r]=(n=>{if(!("key"in n))return;const i=Ro(n.key);if(t.some(l=>l===i||xh[l]===i))return e(n)}))},_h=Be({patchProp:dh},Vm);let cs;function vh(){return cs||(cs=ym(_h))}const Sh=((...e)=>{const t=vh().createApp(...e),{mount:o}=t;return t.mount=r=>{const n=Eh(r);if(!n)return;const i=t._component;!le(i)&&!i.render&&!i.template&&(i.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const l=o(n,!1,yh(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),l},t});function yh(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Eh(e){return Le(e)?document.querySelector(e):e}let Gu;const gi=e=>Gu=e,Ku=Symbol();function hl(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Vr;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Vr||(Vr={}));function Th(){const e=Wl(!0),t=e.run(()=>mt({}));let o=[],r=[];const n=qr({install(i){gi(n),n._a=i,i.provide(Ku,n),i.config.globalProperties.$pinia=n,r.forEach(l=>o.push(l)),r=[]},use(i){return this._a?o.push(i):r.push(i),this},_p:o,_a:null,_e:e,_s:new Map,state:t});return n}const Yu=()=>{};function us(e,t,o,r=Yu){e.add(t);const n=()=>{e.delete(t)&&r()};return!o&&zc()&&tp(n),n}function lr(e,...t){e.forEach(o=>{o(...t)})}const Ph=e=>e(),fs=Symbol(),Vi=Symbol();function gl(e,t){e instanceof Map&&t instanceof Map?t.forEach((o,r)=>e.set(r,o)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const o in t){if(!t.hasOwnProperty(o))continue;const r=t[o],n=e[o];hl(n)&&hl(r)&&e.hasOwnProperty(o)&&!we(r)&&!lo(r)?e[o]=gl(n,r):e[o]=r}return e}const Ih=Symbol();function Ah(e){return!hl(e)||!Object.prototype.hasOwnProperty.call(e,Ih)}const{assign:_o}=Object;function Lh(e){return!!(we(e)&&e.effect)}function wh(e,t,o,r){const{state:n,actions:i,getters:l}=t,a=o.state.value[e];let s;function c(){a||(o.state.value[e]=n?n():{});const u=Sp(o.state.value[e]);return _o(u,i,Object.keys(l||{}).reduce((f,d)=>(f[d]=qr(fe(()=>{gi(o);const p=o._s.get(e);return l[d].call(p,p)})),f),{}))}return s=qu(e,c,t,o,r,!0),s}function qu(e,t,o={},r,n,i){let l;const a=_o({actions:{}},o),s={deep:!0};let c,u,f=new Set,d=new Set,p;const g=r.state.value[e];!i&&!g&&(r.state.value[e]={});let C;function S(F){let P;c=u=!1,typeof F=="function"?(F(r.state.value[e]),P={type:Vr.patchFunction,storeId:e,events:p}):(gl(r.state.value[e],F),P={type:Vr.patchObject,payload:F,storeId:e,events:p});const U=C=Symbol();ci().then(()=>{C===U&&(c=!0)}),u=!0,lr(f,P,r.state.value[e])}const E=i?function(){const{state:P}=o,U=P?P():{};this.$patch(X=>{_o(X,U)})}:Yu;function T(){l.stop(),f.clear(),d.clear(),r._s.delete(e)}const v=(F,P="")=>{if(fs in F)return F[Vi]=P,F;const U=function(){gi(r);const X=Array.from(arguments),k=new Set,Q=new Set;function me(ne){k.add(ne)}function ye(ne){Q.add(ne)}lr(d,{args:X,name:U[Vi],store:L,after:me,onError:ye});let se;try{se=F.apply(this&&this.$id===e?this:L,X)}catch(ne){throw lr(Q,ne),ne}return se instanceof Promise?se.then(ne=>(lr(k,ne),ne)).catch(ne=>(lr(Q,ne),Promise.reject(ne))):(lr(k,se),se)};return U[fs]=!0,U[Vi]=P,U},y={_p:r,$id:e,$onAction:us.bind(null,d),$patch:S,$reset:E,$subscribe(F,P={}){const U=us(f,F,P.detached,()=>X()),X=l.run(()=>St(()=>r.state.value[e],k=>{(P.flush==="sync"?u:c)&&F({storeId:e,type:Vr.direct,events:p},k)},_o({},s,P)));return U},$dispose:T},L=fn(y);r._s.set(e,L);const D=(r._a&&r._a.runWithContext||Ph)(()=>r._e.run(()=>(l=Wl()).run(()=>t({action:v}))));for(const F in D){const P=D[F];if(we(P)&&!Lh(P)||lo(P))i||(g&&Ah(P)&&(we(P)?P.value=g[F]:gl(P,g[F])),r.state.value[e][F]=P);else if(typeof P=="function"){const U=v(P,F);D[F]=U,a.actions[F]=P}}return _o(L,D),_o(ge(L),D),Object.defineProperty(L,"$state",{get:()=>r.state.value[e],set:F=>{S(P=>{_o(P,F)})}}),r._p.forEach(F=>{_o(L,l.run(()=>F({store:L,app:r._a,pinia:r,options:a})))}),g&&i&&o.hydrate&&o.hydrate(L.$state,g),c=!0,u=!0,L}function Xu(e,t,o){let r;const n=typeof t=="function";r=n?o:t;function i(l,a){const s=Rp();return l=l||(s?Ze(Ku,null):null),l&&gi(l),l=Gu,l._s.has(e)||(n?qu(e,t,r,l):wh(e,r,l)),l._s.get(e)}return i.$id=e,i}const cr=typeof document<"u";function Ju(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Dh(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Ju(e.default)}const xe=Object.assign;function ji(e,t){const o={};for(const r in t){const n=t[r];o[r]=Ht(n)?n.map(e):e(n)}return o}const jr=()=>{},Ht=Array.isArray;function ds(e,t){const o={};for(const r in e)o[r]=r in t?t[r]:e[r];return o}const Qu=/#/g,Rh=/&/g,Fh=/\//g,Oh=/=/g,Nh=/\?/g,Zu=/\+/g,Mh=/%5B/g,kh=/%5D/g,ef=/%5E/g,Hh=/%60/g,tf=/%7B/g,$h=/%7C/g,of=/%7D/g,Bh=/%20/g;function ra(e){return e==null?"":encodeURI(""+e).replace($h,"|").replace(Mh,"[").replace(kh,"]")}function Wh(e){return ra(e).replace(tf,"{").replace(of,"}").replace(ef,"^")}function Cl(e){return ra(e).replace(Zu,"%2B").replace(Bh,"+").replace(Qu,"%23").replace(Rh,"%26").replace(Hh,"`").replace(tf,"{").replace(of,"}").replace(ef,"^")}function zh(e){return Cl(e).replace(Oh,"%3D")}function Uh(e){return ra(e).replace(Qu,"%23").replace(Nh,"%3F")}function Vh(e){return Uh(e).replace(Fh,"%2F")}function nn(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const jh=/\/$/,Gh=e=>e.replace(jh,"");function Gi(e,t,o="/"){let r,n={},i="",l="";const a=t.indexOf("#");let s=t.indexOf("?");return s=a>=0&&s>a?-1:s,s>=0&&(r=t.slice(0,s),i=t.slice(s,a>0?a:t.length),n=e(i.slice(1))),a>=0&&(r=r||t.slice(0,a),l=t.slice(a,t.length)),r=Xh(r??t,o),{fullPath:r+i+l,path:r,query:n,hash:nn(l)}}function Kh(e,t){const o=t.query?e(t.query):"";return t.path+(o&&"?")+o+(t.hash||"")}function ps(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Yh(e,t,o){const r=t.matched.length-1,n=o.matched.length-1;return r>-1&&r===n&&Cr(t.matched[r],o.matched[n])&&rf(t.params,o.params)&&e(t.query)===e(o.query)&&t.hash===o.hash}function Cr(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function rf(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var o in e)if(!qh(e[o],t[o]))return!1;return!0}function qh(e,t){return Ht(e)?ms(e,t):Ht(t)?ms(t,e):e?.valueOf()===t?.valueOf()}function ms(e,t){return Ht(t)?e.length===t.length&&e.every((o,r)=>o===t[r]):e.length===1&&e[0]===t}function Xh(e,t){if(e.startsWith("/"))return e;if(!e)return t;const o=t.split("/"),r=e.split("/"),n=r[r.length-1];(n===".."||n===".")&&r.push("");let i=o.length-1,l,a;for(l=0;l1&&i--;else break;return o.slice(0,i).join("/")+"/"+r.slice(l).join("/")}const Co={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let bl=(function(e){return e.pop="pop",e.push="push",e})({}),Ki=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function Jh(e){if(!e)if(cr){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Gh(e)}const Qh=/^[^#]+#/;function Zh(e,t){return e.replace(Qh,"#")+t}function eg(e,t){const o=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-o.left-(t.left||0),top:r.top-o.top-(t.top||0)}}const Ci=()=>({left:window.scrollX,top:window.scrollY});function tg(e){let t;if("el"in e){const o=e.el,r=typeof o=="string"&&o.startsWith("#"),n=typeof o=="string"?r?document.getElementById(o.slice(1)):document.querySelector(o):o;if(!n)return;t=eg(n,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function hs(e,t){return(history.state?history.state.position-t:-1)+e}const xl=new Map;function og(e,t){xl.set(e,t)}function rg(e){const t=xl.get(e);return xl.delete(e),t}function ng(e){return typeof e=="string"||e&&typeof e=="object"}function nf(e){return typeof e=="string"||typeof e=="symbol"}let Oe=(function(e){return e[e.MATCHER_NOT_FOUND=1]="MATCHER_NOT_FOUND",e[e.NAVIGATION_GUARD_REDIRECT=2]="NAVIGATION_GUARD_REDIRECT",e[e.NAVIGATION_ABORTED=4]="NAVIGATION_ABORTED",e[e.NAVIGATION_CANCELLED=8]="NAVIGATION_CANCELLED",e[e.NAVIGATION_DUPLICATED=16]="NAVIGATION_DUPLICATED",e})({});const lf=Symbol("");Oe.MATCHER_NOT_FOUND+"",Oe.NAVIGATION_GUARD_REDIRECT+"",Oe.NAVIGATION_ABORTED+"",Oe.NAVIGATION_CANCELLED+"",Oe.NAVIGATION_DUPLICATED+"";function br(e,t){return xe(new Error,{type:e,[lf]:!0},t)}function Qt(e,t){return e instanceof Error&&lf in e&&(t==null||!!(e.type&t))}const ig=["params","query","hash"];function lg(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const o of ig)o in e&&(t[o]=e[o]);return JSON.stringify(t,null,2)}function ag(e){const t={};if(e===""||e==="?")return t;const o=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;rn&&Cl(n)):[r&&Cl(r)]).forEach(n=>{n!==void 0&&(t+=(t.length?"&":"")+o,n!=null&&(t+="="+n))})}return t}function sg(e){const t={};for(const o in e){const r=e[o];r!==void 0&&(t[o]=Ht(r)?r.map(n=>n==null?null:""+n):r==null?r:""+r)}return t}const cg=Symbol(""),Cs=Symbol(""),bi=Symbol(""),na=Symbol(""),_l=Symbol("");function Dr(){let e=[];function t(r){return e.push(r),()=>{const n=e.indexOf(r);n>-1&&e.splice(n,1)}}function o(){e=[]}return{add:t,list:()=>e.slice(),reset:o}}function yo(e,t,o,r,n,i=l=>l()){const l=r&&(r.enterCallbacks[n]=r.enterCallbacks[n]||[]);return()=>new Promise((a,s)=>{const c=d=>{d===!1?s(br(Oe.NAVIGATION_ABORTED,{from:o,to:t})):d instanceof Error?s(d):ng(d)?s(br(Oe.NAVIGATION_GUARD_REDIRECT,{from:t,to:d})):(l&&r.enterCallbacks[n]===l&&typeof d=="function"&&l.push(d),a())},u=i(()=>e.call(r&&r.instances[n],t,o,c));let f=Promise.resolve(u);e.length<3&&(f=f.then(c)),f.catch(d=>s(d))})}function Yi(e,t,o,r,n=i=>i()){const i=[];for(const l of e)for(const a in l.components){let s=l.components[a];if(!(t!=="beforeRouteEnter"&&!l.instances[a]))if(Ju(s)){const c=(s.__vccOpts||s)[t];c&&i.push(yo(c,o,r,l,a,n))}else{let c=s();i.push(()=>c.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${a}" at "${l.path}"`);const f=Dh(u)?u.default:u;l.mods[a]=u,l.components[a]=f;const d=(f.__vccOpts||f)[t];return d&&yo(d,o,r,l,a,n)()}))}}return i}function ug(e,t){const o=[],r=[],n=[],i=Math.max(t.matched.length,e.matched.length);for(let l=0;lCr(c,a))?r.push(a):o.push(a));const s=e.matched[l];s&&(t.matched.find(c=>Cr(c,s))||n.push(s))}return[o,r,n]}let fg=()=>location.protocol+"//"+location.host;function af(e,t){const{pathname:o,search:r,hash:n}=t,i=e.indexOf("#");if(i>-1){let l=n.includes(e.slice(i))?e.slice(i).length:1,a=n.slice(l);return a[0]!=="/"&&(a="/"+a),ps(a,"")}return ps(o,e)+r+n}function dg(e,t,o,r){let n=[],i=[],l=null;const a=({state:d})=>{const p=af(e,location),g=o.value,C=t.value;let S=0;if(d){if(o.value=p,t.value=d,l&&l===g){l=null;return}S=C?d.position-C.position:0}else r(p);n.forEach(E=>{E(o.value,g,{delta:S,type:bl.pop,direction:S?S>0?Ki.forward:Ki.back:Ki.unknown})})};function s(){l=o.value}function c(d){n.push(d);const p=()=>{const g=n.indexOf(d);g>-1&&n.splice(g,1)};return i.push(p),p}function u(){if(document.visibilityState==="hidden"){const{history:d}=window;if(!d.state)return;d.replaceState(xe({},d.state,{scroll:Ci()}),"")}}function f(){for(const d of i)d();i=[],window.removeEventListener("popstate",a),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",a),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:s,listen:c,destroy:f}}function bs(e,t,o,r=!1,n=!1){return{back:e,current:t,forward:o,replaced:r,position:window.history.length,scroll:n?Ci():null}}function pg(e){const{history:t,location:o}=window,r={value:af(e,o)},n={value:t.state};n.value||i(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(s,c,u){const f=e.indexOf("#"),d=f>-1?(o.host&&document.querySelector("base")?e:e.slice(f))+s:fg()+e+s;try{t[u?"replaceState":"pushState"](c,"",d),n.value=c}catch(p){console.error(p),o[u?"replace":"assign"](d)}}function l(s,c){i(s,xe({},t.state,bs(n.value.back,s,n.value.forward,!0),c,{position:n.value.position}),!0),r.value=s}function a(s,c){const u=xe({},n.value,t.state,{forward:s,scroll:Ci()});i(u.current,u,!0),i(s,xe({},bs(r.value,s,null),{position:u.position+1},c),!1),r.value=s}return{location:r,state:n,push:a,replace:l}}function mg(e){e=Jh(e);const t=pg(e),o=dg(e,t.state,t.location,t.replace);function r(i,l=!0){l||o.pauseListeners(),history.go(i)}const n=xe({location:"",base:e,go:r,createHref:Zh.bind(null,e)},t,o);return Object.defineProperty(n,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(n,"state",{enumerable:!0,get:()=>t.state.value}),n}let Yo=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var ke=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e})(ke||{});const hg={type:Yo.Static,value:""},gg=/[a-zA-Z0-9_]/;function Cg(e){if(!e)return[[]];if(e==="/")return[[hg]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(p){throw new Error(`ERR (${o})/"${c}": ${p}`)}let o=ke.Static,r=o;const n=[];let i;function l(){i&&n.push(i),i=[]}let a=0,s,c="",u="";function f(){c&&(o===ke.Static?i.push({type:Yo.Static,value:c}):o===ke.Param||o===ke.ParamRegExp||o===ke.ParamRegExpEnd?(i.length>1&&(s==="*"||s==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),i.push({type:Yo.Param,value:c,regexp:u,repeatable:s==="*"||s==="+",optional:s==="*"||s==="?"})):t("Invalid state to consume buffer"),c="")}function d(){c+=s}for(;at.length?t.length===1&&t[0]===lt.Static+lt.Segment?1:-1:0}function sf(e,t){let o=0;const r=e.score,n=t.score;for(;o0&&t[t.length-1]<0}const Sg={strict:!1,end:!0,sensitive:!1};function yg(e,t,o){const r=_g(Cg(e.path),o),n=xe(r,{record:e,parent:t,children:[],alias:[]});return t&&!n.record.aliasOf==!t.record.aliasOf&&t.children.push(n),n}function Eg(e,t){const o=[],r=new Map;t=ds(Sg,t);function n(f){return r.get(f)}function i(f,d,p){const g=!p,C=Ss(f);C.aliasOf=p&&p.record;const S=ds(t,f),E=[C];if("alias"in f){const y=typeof f.alias=="string"?[f.alias]:f.alias;for(const L of y)E.push(Ss(xe({},C,{components:p?p.record.components:C.components,path:L,aliasOf:p?p.record:C})))}let T,v;for(const y of E){const{path:L}=y;if(d&&L[0]!=="/"){const w=d.record.path,D=w[w.length-1]==="/"?"":"/";y.path=d.record.path+(L&&D+L)}if(T=yg(y,d,S),p?p.alias.push(T):(v=v||T,v!==T&&v.alias.push(T),g&&f.name&&!ys(T)&&l(f.name)),cf(T)&&s(T),C.children){const w=C.children;for(let D=0;D{l(v)}:jr}function l(f){if(nf(f)){const d=r.get(f);d&&(r.delete(f),o.splice(o.indexOf(d),1),d.children.forEach(l),d.alias.forEach(l))}else{const d=o.indexOf(f);d>-1&&(o.splice(d,1),f.record.name&&r.delete(f.record.name),f.children.forEach(l),f.alias.forEach(l))}}function a(){return o}function s(f){const d=Ig(f,o);o.splice(d,0,f),f.record.name&&!ys(f)&&r.set(f.record.name,f)}function c(f,d){let p,g={},C,S;if("name"in f&&f.name){if(p=r.get(f.name),!p)throw br(Oe.MATCHER_NOT_FOUND,{location:f});S=p.record.name,g=xe(vs(d.params,p.keys.filter(v=>!v.optional).concat(p.parent?p.parent.keys.filter(v=>v.optional):[]).map(v=>v.name)),f.params&&vs(f.params,p.keys.map(v=>v.name))),C=p.stringify(g)}else if(f.path!=null)C=f.path,p=o.find(v=>v.re.test(C)),p&&(g=p.parse(C),S=p.record.name);else{if(p=d.name?r.get(d.name):o.find(v=>v.re.test(d.path)),!p)throw br(Oe.MATCHER_NOT_FOUND,{location:f,currentLocation:d});S=p.record.name,g=xe({},d.params,f.params),C=p.stringify(g)}const E=[];let T=p;for(;T;)E.unshift(T.record),T=T.parent;return{name:S,path:C,params:g,matched:E,meta:Pg(E)}}e.forEach(f=>i(f));function u(){o.length=0,r.clear()}return{addRoute:i,resolve:c,removeRoute:l,clearRoutes:u,getRoutes:a,getRecordMatcher:n}}function vs(e,t){const o={};for(const r of t)r in e&&(o[r]=e[r]);return o}function Ss(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Tg(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Tg(e){const t={},o=e.props||!1;if("component"in e)t.default=o;else for(const r in e.components)t[r]=typeof o=="object"?o[r]:o;return t}function ys(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Pg(e){return e.reduce((t,o)=>xe(t,o.meta),{})}function Ig(e,t){let o=0,r=t.length;for(;o!==r;){const i=o+r>>1;sf(e,t[i])<0?r=i:o=i+1}const n=Ag(e);return n&&(r=t.lastIndexOf(n,r-1)),r}function Ag(e){let t=e;for(;t=t.parent;)if(cf(t)&&sf(e,t)===0)return t}function cf({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Es(e){const t=Ze(bi),o=Ze(na),r=fe(()=>{const s=bt(e.to);return t.resolve(s)}),n=fe(()=>{const{matched:s}=r.value,{length:c}=s,u=s[c-1],f=o.matched;if(!u||!f.length)return-1;const d=f.findIndex(Cr.bind(null,u));if(d>-1)return d;const p=Ts(s[c-2]);return c>1&&Ts(u)===p&&f[f.length-1].path!==p?f.findIndex(Cr.bind(null,s[c-2])):d}),i=fe(()=>n.value>-1&&Fg(o.params,r.value.params)),l=fe(()=>n.value>-1&&n.value===o.matched.length-1&&rf(o.params,r.value.params));function a(s={}){if(Rg(s)){const c=t[bt(e.replace)?"replace":"push"](bt(e.to)).catch(jr);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:r,href:fe(()=>r.value.href),isActive:i,isExactActive:l,navigate:a}}function Lg(e){return e.length===1?e[0]:e}const wg=po({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Es,setup(e,{slots:t}){const o=fn(Es(e)),{options:r}=Ze(bi),n=fe(()=>({[Ps(e.activeClass,r.linkActiveClass,"router-link-active")]:o.isActive,[Ps(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:o.isExactActive}));return()=>{const i=t.default&&Lg(t.default(o));return e.custom?i:vr("a",{"aria-current":o.isExactActive?e.ariaCurrentValue:null,href:o.href,onClick:o.navigate,class:n.value},i)}}}),Dg=wg;function Rg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Fg(e,t){for(const o in t){const r=t[o],n=e[o];if(typeof r=="string"){if(r!==n)return!1}else if(!Ht(n)||n.length!==r.length||r.some((i,l)=>i.valueOf()!==n[l].valueOf()))return!1}return!0}function Ts(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ps=(e,t,o)=>e??t??o,Og=po({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:o}){const r=Ze(_l),n=fe(()=>e.route||r.value),i=Ze(Cs,0),l=fe(()=>{let c=bt(i);const{matched:u}=n.value;let f;for(;(f=u[c])&&!f.components;)c++;return c}),a=fe(()=>n.value.matched[l.value]);Wr(Cs,fe(()=>l.value+1)),Wr(cg,a),Wr(_l,n);const s=mt();return St(()=>[s.value,a.value,e.name],([c,u,f],[d,p,g])=>{u&&(u.instances[f]=c,p&&p!==u&&c&&c===d&&(u.leaveGuards.size||(u.leaveGuards=p.leaveGuards),u.updateGuards.size||(u.updateGuards=p.updateGuards))),c&&u&&(!p||!Cr(u,p)||!d)&&(u.enterCallbacks[f]||[]).forEach(C=>C(c))},{flush:"post"}),()=>{const c=n.value,u=e.name,f=a.value,d=f&&f.components[u];if(!d)return Is(o.default,{Component:d,route:c});const p=f.props[u],g=p?p===!0?c.params:typeof p=="function"?p(c):p:null,S=vr(d,xe({},g,t,{onVnodeUnmounted:E=>{E.component.isUnmounted&&(f.instances[u]=null)},ref:s}));return Is(o.default,{Component:S,route:c})||S}}});function Is(e,t){if(!e)return null;const o=e(t);return o.length===1?o[0]:o}const Ng=Og;function Mg(e){const t=Eg(e.routes,e),o=e.parseQuery||ag,r=e.stringifyQuery||gs,n=e.history,i=Dr(),l=Dr(),a=Dr(),s=Yl(Co);let c=Co;cr&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=ji.bind(null,H=>""+H),f=ji.bind(null,Vh),d=ji.bind(null,nn);function p(H,Y){let G,ee;return nf(H)?(G=t.getRecordMatcher(H),ee=Y):ee=H,t.addRoute(ee,G)}function g(H){const Y=t.getRecordMatcher(H);Y&&t.removeRoute(Y)}function C(){return t.getRoutes().map(H=>H.record)}function S(H){return!!t.getRecordMatcher(H)}function E(H,Y){if(Y=xe({},Y||s.value),typeof H=="string"){const x=Gi(o,H,Y.path),R=t.resolve({path:x.path},Y),$=n.createHref(x.fullPath);return xe(x,R,{params:d(R.params),hash:nn(x.hash),redirectedFrom:void 0,href:$})}let G;if(H.path!=null)G=xe({},H,{path:Gi(o,H.path,Y.path).path});else{const x=xe({},H.params);for(const R in x)x[R]==null&&delete x[R];G=xe({},H,{params:f(x)}),Y.params=f(Y.params)}const ee=t.resolve(G,Y),ue=H.hash||"";ee.params=u(d(ee.params));const b=Kh(r,xe({},H,{hash:Wh(ue),path:ee.path})),_=n.createHref(b);return xe({fullPath:b,hash:ue,query:r===gs?sg(H.query):H.query||{}},ee,{redirectedFrom:void 0,href:_})}function T(H){return typeof H=="string"?Gi(o,H,s.value.path):xe({},H)}function v(H,Y){if(c!==H)return br(Oe.NAVIGATION_CANCELLED,{from:Y,to:H})}function y(H){return D(H)}function L(H){return y(xe(T(H),{replace:!0}))}function w(H,Y){const G=H.matched[H.matched.length-1];if(G&&G.redirect){const{redirect:ee}=G;let ue=typeof ee=="function"?ee(H,Y):ee;return typeof ue=="string"&&(ue=ue.includes("?")||ue.includes("#")?ue=T(ue):{path:ue},ue.params={}),xe({query:H.query,hash:H.hash,params:ue.path!=null?{}:H.params},ue)}}function D(H,Y){const G=c=E(H),ee=s.value,ue=H.state,b=H.force,_=H.replace===!0,x=w(G,ee);if(x)return D(xe(T(x),{state:typeof x=="object"?xe({},ue,x.state):ue,force:b,replace:_}),Y||G);const R=G;R.redirectedFrom=Y;let $;return!b&&Yh(r,ee,G)&&($=br(Oe.NAVIGATION_DUPLICATED,{to:R,from:ee}),Re(ee,ee,!0,!1)),($?Promise.resolve($):U(R,ee)).catch(N=>Qt(N)?Qt(N,Oe.NAVIGATION_GUARD_REDIRECT)?N:ft(N):de(N,R,ee)).then(N=>{if(N){if(Qt(N,Oe.NAVIGATION_GUARD_REDIRECT))return D(xe({replace:_},T(N.to),{state:typeof N.to=="object"?xe({},ue,N.to.state):ue,force:b}),Y||R)}else N=k(R,ee,!0,_,ue);return X(R,ee,N),N})}function F(H,Y){const G=v(H,Y);return G?Promise.reject(G):Promise.resolve()}function P(H){const Y=ht.values().next().value;return Y&&typeof Y.runWithContext=="function"?Y.runWithContext(H):H()}function U(H,Y){let G;const[ee,ue,b]=ug(H,Y);G=Yi(ee.reverse(),"beforeRouteLeave",H,Y);for(const x of ee)x.leaveGuards.forEach(R=>{G.push(yo(R,H,Y))});const _=F.bind(null,H,Y);return G.push(_),We(G).then(()=>{G=[];for(const x of i.list())G.push(yo(x,H,Y));return G.push(_),We(G)}).then(()=>{G=Yi(ue,"beforeRouteUpdate",H,Y);for(const x of ue)x.updateGuards.forEach(R=>{G.push(yo(R,H,Y))});return G.push(_),We(G)}).then(()=>{G=[];for(const x of b)if(x.beforeEnter)if(Ht(x.beforeEnter))for(const R of x.beforeEnter)G.push(yo(R,H,Y));else G.push(yo(x.beforeEnter,H,Y));return G.push(_),We(G)}).then(()=>(H.matched.forEach(x=>x.enterCallbacks={}),G=Yi(b,"beforeRouteEnter",H,Y,P),G.push(_),We(G))).then(()=>{G=[];for(const x of l.list())G.push(yo(x,H,Y));return G.push(_),We(G)}).catch(x=>Qt(x,Oe.NAVIGATION_CANCELLED)?x:Promise.reject(x))}function X(H,Y,G){a.list().forEach(ee=>P(()=>ee(H,Y,G)))}function k(H,Y,G,ee,ue){const b=v(H,Y);if(b)return b;const _=Y===Co,x=cr?history.state:{};G&&(ee||_?n.replace(H.fullPath,xe({scroll:_&&x&&x.scroll},ue)):n.push(H.fullPath,ue)),s.value=H,Re(H,Y,G,_),ft()}let Q;function me(){Q||(Q=n.listen((H,Y,G)=>{if(!gt.listening)return;const ee=E(H),ue=w(ee,gt.currentRoute.value);if(ue){D(xe(ue,{replace:!0,force:!0}),ee).catch(jr);return}c=ee;const b=s.value;cr&&og(hs(b.fullPath,G.delta),Ci()),U(ee,b).catch(_=>Qt(_,Oe.NAVIGATION_ABORTED|Oe.NAVIGATION_CANCELLED)?_:Qt(_,Oe.NAVIGATION_GUARD_REDIRECT)?(D(xe(T(_.to),{force:!0}),ee).then(x=>{Qt(x,Oe.NAVIGATION_ABORTED|Oe.NAVIGATION_DUPLICATED)&&!G.delta&&G.type===bl.pop&&n.go(-1,!1)}).catch(jr),Promise.reject()):(G.delta&&n.go(-G.delta,!1),de(_,ee,b))).then(_=>{_=_||k(ee,b,!1),_&&(G.delta&&!Qt(_,Oe.NAVIGATION_CANCELLED)?n.go(-G.delta,!1):G.type===bl.pop&&Qt(_,Oe.NAVIGATION_ABORTED|Oe.NAVIGATION_DUPLICATED)&&n.go(-1,!1)),X(ee,b,_)}).catch(jr)}))}let ye=Dr(),se=Dr(),ne;function de(H,Y,G){ft(H);const ee=se.list();return ee.length?ee.forEach(ue=>ue(H,Y,G)):console.error(H),Promise.reject(H)}function tt(){return ne&&s.value!==Co?Promise.resolve():new Promise((H,Y)=>{ye.add([H,Y])})}function ft(H){return ne||(ne=!H,me(),ye.list().forEach(([Y,G])=>H?G(H):Y()),ye.reset()),H}function Re(H,Y,G,ee){const{scrollBehavior:ue}=e;if(!cr||!ue)return Promise.resolve();const b=!G&&rg(hs(H.fullPath,0))||(ee||!G)&&history.state&&history.state.scroll||null;return ci().then(()=>ue(H,Y,b)).then(_=>_&&tg(_)).catch(_=>de(_,H,Y))}const Fe=H=>n.go(H);let Tt;const ht=new Set,gt={currentRoute:s,listening:!0,addRoute:p,removeRoute:g,clearRoutes:t.clearRoutes,hasRoute:S,getRoutes:C,resolve:E,options:e,push:y,replace:L,go:Fe,back:()=>Fe(-1),forward:()=>Fe(1),beforeEach:i.add,beforeResolve:l.add,afterEach:a.add,onError:se.add,isReady:tt,install(H){H.component("RouterLink",Dg),H.component("RouterView",Ng),H.config.globalProperties.$router=gt,Object.defineProperty(H.config.globalProperties,"$route",{enumerable:!0,get:()=>bt(s)}),cr&&!Tt&&s.value===Co&&(Tt=!0,y(n.location).catch(ee=>{}));const Y={};for(const ee in Co)Object.defineProperty(Y,ee,{get:()=>s.value[ee],enumerable:!0});H.provide(bi,gt),H.provide(na,ru(Y)),H.provide(_l,s);const G=H.unmount;ht.add(H),H.unmount=function(){ht.delete(H),ht.size<1&&(c=Co,Q&&Q(),Q=null,s.value=Co,Tt=!1,ne=!1),G()}}};function We(H){return H.reduce((Y,G)=>Y.then(()=>P(G)),Promise.resolve())}return gt}function CT(){return Ze(bi)}function kg(e){return Ze(na)}function Hg(e){let t=".",o="__",r="--",n;if(e){let g=e.blockPrefix;g&&(t=g),g=e.elementPrefix,g&&(o=g),g=e.modifierPrefix,g&&(r=g)}const i={install(g){n=g.c;const C=g.context;C.bem={},C.bem.b=null,C.bem.els=null}};function l(g){let C,S;return{before(E){C=E.bem.b,S=E.bem.els,E.bem.els=null},after(E){E.bem.b=C,E.bem.els=S},$({context:E,props:T}){return g=typeof g=="string"?g:g({context:E,props:T}),E.bem.b=g,`${T?.bPrefix||t}${E.bem.b}`}}}function a(g){let C;return{before(S){C=S.bem.els},after(S){S.bem.els=C},$({context:S,props:E}){return g=typeof g=="string"?g:g({context:S,props:E}),S.bem.els=g.split(",").map(T=>T.trim()),S.bem.els.map(T=>`${E?.bPrefix||t}${S.bem.b}${o}${T}`).join(", ")}}}function s(g){return{$({context:C,props:S}){g=typeof g=="string"?g:g({context:C,props:S});const E=g.split(",").map(y=>y.trim());function T(y){return E.map(L=>`&${S?.bPrefix||t}${C.bem.b}${y!==void 0?`${o}${y}`:""}${r}${L}`).join(", ")}const v=C.bem.els;return v!==null?T(v[0]):T()}}}function c(g){return{$({context:C,props:S}){g=typeof g=="string"?g:g({context:C,props:S});const E=C.bem.els;return`&:not(${S?.bPrefix||t}${C.bem.b}${E!==null&&E.length>0?`${o}${E[0]}`:""}${r}${g})`}}}return Object.assign(i,{cB:((...g)=>n(l(g[0]),g[1],g[2])),cE:((...g)=>n(a(g[0]),g[1],g[2])),cM:((...g)=>n(s(g[0]),g[1],g[2])),cNotM:((...g)=>n(c(g[0]),g[1],g[2]))}),i}function $g(e){let t=0;for(let o=0;o{let n=$g(r);if(n){if(n===1){e.forEach(l=>{o.push(r.replace("&",l))});return}}else{e.forEach(l=>{o.push((l&&l+" ")+r)});return}let i=[r];for(;n--;){const l=[];i.forEach(a=>{e.forEach(s=>{l.push(a.replace("&",s))})}),i=l}i.forEach(l=>o.push(l))}),o}function zg(e,t){const o=[];return t.split(uf).forEach(r=>{e.forEach(n=>{o.push((n&&n+" ")+r)})}),o}function Ug(e){let t=[""];return e.forEach(o=>{o=o&&o.trim(),o&&(o.includes("&")?t=Wg(t,o):t=zg(t,o))}),t.join(", ").replace(Bg," ")}function As(e){if(!e)return;const t=e.parentElement;t&&t.removeChild(e)}function ia(e,t){return(t??document.head).querySelector(`style[cssr-id="${e}"]`)}function Vg(e){const t=document.createElement("style");return t.setAttribute("cssr-id",e),t}function yn(e){return e?/^\s*@(s|m)/.test(e):!1}const jg=/[A-Z]/g;function ff(e){return e.replace(jg,t=>"-"+t.toLowerCase())}function Gg(e,t=" "){return typeof e=="object"&&e!==null?` { `+Object.entries(e).map(o=>t+` ${ff(o[0])}: ${o[1]};`).join(` @@ -25,4 +25,4 @@ ${n} ${t} `}function Hx(e,t,o){const{styles:r,ids:n}=o;n.has(e)||r!==null&&(n.add(e),r.push(kx(e,t)))}const $x=typeof document<"u";function Bx(){if($x)return;const e=Ze(Mx,null);if(e!==null)return{adapter:(t,o)=>Hx(t,o,e),context:e}}const js={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#0FF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000",blanchedalmond:"#FFEBCD",blue:"#00F",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#0FF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",darkgreen:"#006400",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#F0F",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",lightgreen:"#90EE90",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#0F0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#F0F",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#663399",red:"#F00",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFF",whitesmoke:"#F5F5F5",yellow:"#FF0",yellowgreen:"#9ACD32",transparent:"#0000"};function Wx(e,t,o){t/=100,o/=100;let r=(n,i=(n+e/60)%6)=>o-o*t*Math.max(Math.min(i,4-i,1),0);return[r(5)*255,r(3)*255,r(1)*255]}function zx(e,t,o){t/=100,o/=100;let r=t*Math.min(o,1-o),n=(i,l=(i+e/30)%12)=>o-r*Math.max(Math.min(l-3,9-l,1),-1);return[n(0)*255,n(8)*255,n(4)*255]}const Yt="^\\s*",qt="\\s*$",Lo="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))%\\s*",_t="\\s*((\\.\\d+)|(\\d+(\\.\\d*)?))\\s*",qo="([0-9A-Fa-f])",Xo="([0-9A-Fa-f]{2})",Rf=new RegExp(`${Yt}hsl\\s*\\(${_t},${Lo},${Lo}\\)${qt}`),Ff=new RegExp(`${Yt}hsv\\s*\\(${_t},${Lo},${Lo}\\)${qt}`),Of=new RegExp(`${Yt}hsla\\s*\\(${_t},${Lo},${Lo},${_t}\\)${qt}`),Nf=new RegExp(`${Yt}hsva\\s*\\(${_t},${Lo},${Lo},${_t}\\)${qt}`),Ux=new RegExp(`${Yt}rgb\\s*\\(${_t},${_t},${_t}\\)${qt}`),Vx=new RegExp(`${Yt}rgba\\s*\\(${_t},${_t},${_t},${_t}\\)${qt}`),jx=new RegExp(`${Yt}#${qo}${qo}${qo}${qt}`),Gx=new RegExp(`${Yt}#${Xo}${Xo}${Xo}${qt}`),Kx=new RegExp(`${Yt}#${qo}${qo}${qo}${qo}${qt}`),Yx=new RegExp(`${Yt}#${Xo}${Xo}${Xo}${Xo}${qt}`);function dt(e){return parseInt(e,16)}function qx(e){try{let t;if(t=Of.exec(e))return[Gn(t[1]),Eo(t[5]),Eo(t[9]),Zo(t[13])];if(t=Rf.exec(e))return[Gn(t[1]),Eo(t[5]),Eo(t[9]),1];throw new Error(`[seemly/hsla]: Invalid color value ${e}.`)}catch(t){throw t}}function Xx(e){try{let t;if(t=Nf.exec(e))return[Gn(t[1]),Eo(t[5]),Eo(t[9]),Zo(t[13])];if(t=Ff.exec(e))return[Gn(t[1]),Eo(t[5]),Eo(t[9]),1];throw new Error(`[seemly/hsva]: Invalid color value ${e}.`)}catch(t){throw t}}function fo(e){try{let t;if(t=Gx.exec(e))return[dt(t[1]),dt(t[2]),dt(t[3]),1];if(t=Ux.exec(e))return[Xe(t[1]),Xe(t[5]),Xe(t[9]),1];if(t=Vx.exec(e))return[Xe(t[1]),Xe(t[5]),Xe(t[9]),Zo(t[13])];if(t=jx.exec(e))return[dt(t[1]+t[1]),dt(t[2]+t[2]),dt(t[3]+t[3]),1];if(t=Yx.exec(e))return[dt(t[1]),dt(t[2]),dt(t[3]),Zo(dt(t[4])/255)];if(t=Kx.exec(e))return[dt(t[1]+t[1]),dt(t[2]+t[2]),dt(t[3]+t[3]),Zo(dt(t[4]+t[4])/255)];if(e in js)return fo(js[e]);if(Rf.test(e)||Of.test(e)){const[o,r,n,i]=qx(e);return[...zx(o,r,n),i]}else if(Ff.test(e)||Nf.test(e)){const[o,r,n,i]=Xx(e);return[...Wx(o,r,n),i]}throw new Error(`[seemly/rgba]: Invalid color value ${e}.`)}catch(t){throw t}}function Jx(e){return e>1?1:e<0?0:e}function Al(e,t,o,r){return`rgba(${Xe(e)}, ${Xe(t)}, ${Xe(o)}, ${Jx(r)})`}function Ji(e,t,o,r,n){return Xe((e*t*(1-r)+o*r)/n)}function Z(e,t){Array.isArray(e)||(e=fo(e)),Array.isArray(t)||(t=fo(t));const o=e[3],r=t[3],n=Zo(o+r-o*r);return Al(Ji(e[0],o,t[0],r,n),Ji(e[1],o,t[1],r,n),Ji(e[2],o,t[2],r,n),n)}function J(e,t){const[o,r,n,i=1]=Array.isArray(e)?e:fo(e);return typeof t.alpha=="number"?Al(o,r,n,t.alpha):Al(o,r,n,i)}function Ne(e,t){const[o,r,n,i=1]=Array.isArray(e)?e:fo(e),{lightness:l=1,alpha:a=1}=t;return Qx([o*l,r*l,n*l,i*a])}function Zo(e){const t=Math.round(Number(e)*100)/100;return t>1?1:t<0?0:t}function Gn(e){const t=Math.round(Number(e));return t>=360||t<0?0:t}function Xe(e){const t=Math.round(Number(e));return t>255?255:t<0?0:t}function Eo(e){const t=Math.round(Number(e));return t>100?100:t<0?0:t}function Qx(e){const[t,o,r]=e;return 3 in e?`rgba(${Xe(t)}, ${Xe(o)}, ${Xe(r)}, ${Zo(e[3])})`:`rgba(${Xe(t)}, ${Xe(o)}, ${Xe(r)}, 1)`}const q={neutralBase:"#000",neutralInvertBase:"#fff",neutralTextBase:"#fff",neutralPopover:"rgb(72, 72, 78)",neutralCard:"rgb(24, 24, 28)",neutralModal:"rgb(44, 44, 50)",neutralBody:"rgb(16, 16, 20)",alpha1:"0.9",alpha2:"0.82",alpha3:"0.52",alpha4:"0.38",alpha5:"0.28",alphaClose:"0.52",alphaDisabled:"0.38",alphaDisabledInput:"0.06",alphaPending:"0.09",alphaTablePending:"0.06",alphaTableStriped:"0.05",alphaPressed:"0.05",alphaAvatar:"0.18",alphaRail:"0.2",alphaProgressRail:"0.12",alphaBorder:"0.24",alphaDivider:"0.09",alphaInput:"0.1",alphaAction:"0.06",alphaTab:"0.04",alphaScrollbar:"0.2",alphaScrollbarHover:"0.3",alphaCode:"0.12",alphaTag:"0.2",primaryHover:"#7fe7c4",primaryDefault:"#63e2b7",primaryActive:"#5acea7",primarySuppl:"rgb(42, 148, 125)",infoHover:"#8acbec",infoDefault:"#70c0e8",infoActive:"#66afd3",infoSuppl:"rgb(56, 137, 197)",errorHover:"#e98b8b",errorDefault:"#e88080",errorActive:"#e57272",errorSuppl:"rgb(208, 58, 82)",warningHover:"#f5d599",warningDefault:"#f2c97d",warningActive:"#e6c260",warningSuppl:"rgb(240, 138, 0)",successHover:"#7fe7c4",successDefault:"#63e2b7",successActive:"#5acea7",successSuppl:"rgb(42, 148, 125)"},Zx=fo(q.neutralBase),Mf=fo(q.neutralInvertBase),e_=`rgba(${Mf.slice(0,3).join(", ")}, `;function he(e){return`${e_+String(e)})`}function t_(e){const t=Array.from(Mf);return t[3]=Number(e),Z(Zx,t)}const W={name:"common",...ua,baseColor:q.neutralBase,primaryColor:q.primaryDefault,primaryColorHover:q.primaryHover,primaryColorPressed:q.primaryActive,primaryColorSuppl:q.primarySuppl,infoColor:q.infoDefault,infoColorHover:q.infoHover,infoColorPressed:q.infoActive,infoColorSuppl:q.infoSuppl,successColor:q.successDefault,successColorHover:q.successHover,successColorPressed:q.successActive,successColorSuppl:q.successSuppl,warningColor:q.warningDefault,warningColorHover:q.warningHover,warningColorPressed:q.warningActive,warningColorSuppl:q.warningSuppl,errorColor:q.errorDefault,errorColorHover:q.errorHover,errorColorPressed:q.errorActive,errorColorSuppl:q.errorSuppl,textColorBase:q.neutralTextBase,textColor1:he(q.alpha1),textColor2:he(q.alpha2),textColor3:he(q.alpha3),textColorDisabled:he(q.alpha4),placeholderColor:he(q.alpha4),placeholderColorDisabled:he(q.alpha5),iconColor:he(q.alpha4),iconColorDisabled:he(q.alpha5),iconColorHover:he(Number(q.alpha4)*1.25),iconColorPressed:he(Number(q.alpha4)*.8),opacity1:q.alpha1,opacity2:q.alpha2,opacity3:q.alpha3,opacity4:q.alpha4,opacity5:q.alpha5,dividerColor:he(q.alphaDivider),borderColor:he(q.alphaBorder),closeIconColorHover:he(Number(q.alphaClose)),closeIconColor:he(Number(q.alphaClose)),closeIconColorPressed:he(Number(q.alphaClose)),closeColorHover:"rgba(255, 255, 255, .12)",closeColorPressed:"rgba(255, 255, 255, .08)",clearColor:he(q.alpha4),clearColorHover:Ne(he(q.alpha4),{alpha:1.25}),clearColorPressed:Ne(he(q.alpha4),{alpha:.8}),scrollbarColor:he(q.alphaScrollbar),scrollbarColorHover:he(q.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:he(q.alphaProgressRail),railColor:he(q.alphaRail),popoverColor:q.neutralPopover,tableColor:q.neutralCard,cardColor:q.neutralCard,modalColor:q.neutralModal,bodyColor:q.neutralBody,tagColor:t_(q.alphaTag),avatarColor:he(q.alphaAvatar),invertedColor:q.neutralBase,inputColor:he(q.alphaInput),codeColor:he(q.alphaCode),tabColor:he(q.alphaTab),actionColor:he(q.alphaAction),tableHeaderColor:he(q.alphaAction),hoverColor:he(q.alphaPending),tableColorHover:he(q.alphaTablePending),tableColorStriped:he(q.alphaTableStriped),pressedColor:he(q.alphaPressed),opacityDisabled:q.alphaDisabled,inputColorDisabled:he(q.alphaDisabledInput),buttonColor2:"rgba(255, 255, 255, .08)",buttonColor2Hover:"rgba(255, 255, 255, .12)",buttonColor2Pressed:"rgba(255, 255, 255, .08)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .24), 0 3px 6px 0 rgba(0, 0, 0, .18), 0 5px 12px 4px rgba(0, 0, 0, .12)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .24), 0 6px 12px 0 rgba(0, 0, 0, .16), 0 9px 18px 8px rgba(0, 0, 0, .10)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"},re={neutralBase:"#FFF",neutralInvertBase:"#000",neutralTextBase:"#000",neutralPopover:"#fff",neutralCard:"#fff",neutralModal:"#fff",neutralBody:"#fff",alpha1:"0.82",alpha2:"0.72",alpha3:"0.38",alpha4:"0.24",alpha5:"0.18",alphaClose:"0.6",alphaDisabled:"0.5",alphaAvatar:"0.2",alphaProgressRail:".08",alphaInput:"0",alphaScrollbar:"0.25",alphaScrollbarHover:"0.4",primaryHover:"#36ad6a",primaryDefault:"#18a058",primaryActive:"#0c7a43",primarySuppl:"#36ad6a",infoHover:"#4098fc",infoDefault:"#2080f0",infoActive:"#1060c9",infoSuppl:"#4098fc",errorHover:"#de576d",errorDefault:"#d03050",errorActive:"#ab1f3f",errorSuppl:"#de576d",warningHover:"#fcb040",warningDefault:"#f0a020",warningActive:"#c97c10",warningSuppl:"#fcb040",successHover:"#36ad6a",successDefault:"#18a058",successActive:"#0c7a43",successSuppl:"#36ad6a"},o_=fo(re.neutralBase),kf=fo(re.neutralInvertBase),r_=`rgba(${kf.slice(0,3).join(", ")}, `;function Gs(e){return`${r_+String(e)})`}function Ke(e){const t=Array.from(kf);return t[3]=Number(e),Z(o_,t)}const n_={name:"common",...ua,baseColor:re.neutralBase,primaryColor:re.primaryDefault,primaryColorHover:re.primaryHover,primaryColorPressed:re.primaryActive,primaryColorSuppl:re.primarySuppl,infoColor:re.infoDefault,infoColorHover:re.infoHover,infoColorPressed:re.infoActive,infoColorSuppl:re.infoSuppl,successColor:re.successDefault,successColorHover:re.successHover,successColorPressed:re.successActive,successColorSuppl:re.successSuppl,warningColor:re.warningDefault,warningColorHover:re.warningHover,warningColorPressed:re.warningActive,warningColorSuppl:re.warningSuppl,errorColor:re.errorDefault,errorColorHover:re.errorHover,errorColorPressed:re.errorActive,errorColorSuppl:re.errorSuppl,textColorBase:re.neutralTextBase,textColor1:"rgb(31, 34, 37)",textColor2:"rgb(51, 54, 57)",textColor3:"rgb(118, 124, 130)",textColorDisabled:Ke(re.alpha4),placeholderColor:Ke(re.alpha4),placeholderColorDisabled:Ke(re.alpha5),iconColor:Ke(re.alpha4),iconColorHover:Ne(Ke(re.alpha4),{lightness:.75}),iconColorPressed:Ne(Ke(re.alpha4),{lightness:.9}),iconColorDisabled:Ke(re.alpha5),opacity1:re.alpha1,opacity2:re.alpha2,opacity3:re.alpha3,opacity4:re.alpha4,opacity5:re.alpha5,dividerColor:"rgb(239, 239, 245)",borderColor:"rgb(224, 224, 230)",closeIconColor:Ke(Number(re.alphaClose)),closeIconColorHover:Ke(Number(re.alphaClose)),closeIconColorPressed:Ke(Number(re.alphaClose)),closeColorHover:"rgba(0, 0, 0, .09)",closeColorPressed:"rgba(0, 0, 0, .13)",clearColor:Ke(re.alpha4),clearColorHover:Ne(Ke(re.alpha4),{lightness:.75}),clearColorPressed:Ne(Ke(re.alpha4),{lightness:.9}),scrollbarColor:Gs(re.alphaScrollbar),scrollbarColorHover:Gs(re.alphaScrollbarHover),scrollbarWidth:"5px",scrollbarHeight:"5px",scrollbarBorderRadius:"5px",progressRailColor:Ke(re.alphaProgressRail),railColor:"rgb(219, 219, 223)",popoverColor:re.neutralPopover,tableColor:re.neutralCard,cardColor:re.neutralCard,modalColor:re.neutralModal,bodyColor:re.neutralBody,tagColor:"#eee",avatarColor:Ke(re.alphaAvatar),invertedColor:"rgb(0, 20, 40)",inputColor:Ke(re.alphaInput),codeColor:"rgb(244, 244, 248)",tabColor:"rgb(247, 247, 250)",actionColor:"rgb(250, 250, 252)",tableHeaderColor:"rgb(250, 250, 252)",hoverColor:"rgb(243, 243, 245)",tableColorHover:"rgba(0, 0, 100, 0.03)",tableColorStriped:"rgba(0, 0, 100, 0.02)",pressedColor:"rgb(237, 237, 239)",opacityDisabled:re.alphaDisabled,inputColorDisabled:"rgb(250, 250, 252)",buttonColor2:"rgba(46, 51, 56, .05)",buttonColor2Hover:"rgba(46, 51, 56, .09)",buttonColor2Pressed:"rgba(46, 51, 56, .13)",boxShadow1:"0 1px 2px -2px rgba(0, 0, 0, .08), 0 3px 6px 0 rgba(0, 0, 0, .06), 0 5px 12px 4px rgba(0, 0, 0, .04)",boxShadow2:"0 3px 6px -4px rgba(0, 0, 0, .12), 0 6px 16px 0 rgba(0, 0, 0, .08), 0 9px 28px 8px rgba(0, 0, 0, .05)",boxShadow3:"0 6px 16px -9px rgba(0, 0, 0, .08), 0 9px 28px 0 rgba(0, 0, 0, .05), 0 12px 48px 16px rgba(0, 0, 0, .03)"},i_={railInsetHorizontalBottom:"auto 2px 4px 2px",railInsetHorizontalTop:"4px 2px auto 2px",railInsetVerticalRight:"2px 4px 2px auto",railInsetVerticalLeft:"2px auto 2px 4px",railColor:"transparent"};function l_(e){const{scrollbarColor:t,scrollbarColorHover:o,scrollbarHeight:r,scrollbarWidth:n,scrollbarBorderRadius:i}=e;return{...i_,height:r,width:n,borderRadius:i,color:t,colorHover:o}}const et={name:"Scrollbar",common:W,self:l_};var a_={iconSizeTiny:"28px",iconSizeSmall:"34px",iconSizeMedium:"40px",iconSizeLarge:"46px",iconSizeHuge:"52px"};function Hf(e){const{textColorDisabled:t,iconColor:o,textColor2:r,fontSizeTiny:n,fontSizeSmall:i,fontSizeMedium:l,fontSizeLarge:a,fontSizeHuge:s}=e;return{...a_,fontSizeTiny:n,fontSizeSmall:i,fontSizeMedium:l,fontSizeLarge:a,fontSizeHuge:s,textColor:t,iconColor:o,extraTextColor:r}}const s_={name:"Empty",common:n_,self:Hf},rr={name:"Empty",common:W,self:Hf};function c_(e,t,o,r,n,i){const l=Bx(),a=Ze(Il,null);if(o){const s=()=>{const c=i?.value;o.mount({id:c===void 0?t:c+t,head:!0,props:{bPrefix:c?`.${c}-`:void 0},anchorMetaName:Vs,ssr:l,parent:a?.styleMountTarget}),a?.preflightStyleDisabled||Nx.mount({id:"n-global",head:!0,anchorMetaName:Vs,ssr:l,parent:a?.styleMountTarget})};l?s():Jl(s)}return fe(()=>{const{theme:{common:s,self:c,peers:u={}}={},themeOverrides:f={},builtinThemeOverrides:d={}}=n,{common:p,peers:g}=f,{common:C=void 0,[e]:{common:S=void 0,self:E=void 0,peers:T={}}={}}=a?.mergedThemeRef.value||{},{common:v=void 0,[e]:y={}}=a?.mergedThemeOverridesRef.value||{},{common:L,peers:w={}}=y,D=kr({},s||S||C||r.common,v,L,p);return{common:D,self:kr((c||E||r.self)?.(D),d,y,f),peers:kr({},r.peers,T,u),peerOverrides:kr({},d.peers,w,g)}})}c_.props={theme:Object,themeOverrides:Object,builtinThemeOverrides:Object};var u_={height:"calc(var(--n-option-height) * 7.6)",paddingTiny:"4px 0",paddingSmall:"4px 0",paddingMedium:"4px 0",paddingLarge:"4px 0",paddingHuge:"4px 0",optionPaddingTiny:"0 12px",optionPaddingSmall:"0 12px",optionPaddingMedium:"0 12px",optionPaddingLarge:"0 12px",optionPaddingHuge:"0 12px",loadingSize:"18px"};function f_(e){const{borderRadius:t,popoverColor:o,textColor3:r,dividerColor:n,textColor2:i,primaryColorPressed:l,textColorDisabled:a,primaryColor:s,opacityDisabled:c,hoverColor:u,fontSizeTiny:f,fontSizeSmall:d,fontSizeMedium:p,fontSizeLarge:g,fontSizeHuge:C,heightTiny:S,heightSmall:E,heightMedium:T,heightLarge:v,heightHuge:y}=e;return{...u_,optionFontSizeTiny:f,optionFontSizeSmall:d,optionFontSizeMedium:p,optionFontSizeLarge:g,optionFontSizeHuge:C,optionHeightTiny:S,optionHeightSmall:E,optionHeightMedium:T,optionHeightLarge:v,optionHeightHuge:y,borderRadius:t,color:o,groupHeaderTextColor:r,actionDividerColor:n,optionTextColor:i,optionTextColorPressed:l,optionTextColorDisabled:a,optionTextColorActive:s,optionOpacityDisabled:c,optionCheckColor:s,optionColorPending:u,optionColorActive:"rgba(0, 0, 0, 0)",optionColorActivePending:u,actionTextColor:i,loadingColor:s}}const gn={name:"InternalSelectMenu",common:W,peers:{Scrollbar:et,Empty:rr},self:f_};var d_={space:"6px",spaceArrow:"10px",arrowOffset:"10px",arrowOffsetVertical:"10px",arrowHeight:"6px",padding:"8px 14px"};function p_(e){const{boxShadow2:t,popoverColor:o,textColor2:r,borderRadius:n,fontSize:i,dividerColor:l}=e;return{...d_,fontSize:i,borderRadius:n,color:o,dividerColor:l,textColor:r,boxShadow:t}}const nr={name:"Popover",common:W,peers:{Scrollbar:et},self:p_};function Ks(e){const t=fe(e),o=mt(t.value);return St(t,r=>{o.value=r}),typeof e=="function"?o:{__v_isRef:!0,get value(){return o.value},set value(r){e.set(r)}}}var m_={closeIconSizeTiny:"12px",closeIconSizeSmall:"12px",closeIconSizeMedium:"14px",closeIconSizeLarge:"14px",closeSizeTiny:"16px",closeSizeSmall:"16px",closeSizeMedium:"18px",closeSizeLarge:"18px",padding:"0 7px",closeMargin:"0 0 0 4px"};const $f={name:"Tag",common:W,self(e){const{textColor2:t,primaryColorHover:o,primaryColorPressed:r,primaryColor:n,infoColor:i,successColor:l,warningColor:a,errorColor:s,baseColor:c,borderColor:u,tagColor:f,opacityDisabled:d,closeIconColor:p,closeIconColorHover:g,closeIconColorPressed:C,closeColorHover:S,closeColorPressed:E,borderRadiusSmall:T,fontSizeMini:v,fontSizeTiny:y,fontSizeSmall:L,fontSizeMedium:w,heightMini:D,heightTiny:F,heightSmall:P,heightMedium:U,buttonColor2Hover:X,buttonColor2Pressed:k,fontWeightStrong:Q}=e;return{...m_,closeBorderRadius:T,heightTiny:D,heightSmall:F,heightMedium:P,heightLarge:U,borderRadius:T,opacityDisabled:d,fontSizeTiny:v,fontSizeSmall:y,fontSizeMedium:L,fontSizeLarge:w,fontWeightStrong:Q,textColorCheckable:t,textColorHoverCheckable:t,textColorPressedCheckable:t,textColorChecked:c,colorCheckable:"#0000",colorHoverCheckable:X,colorPressedCheckable:k,colorChecked:n,colorCheckedHover:o,colorCheckedPressed:r,border:`1px solid ${u}`,textColor:t,color:f,colorBordered:"#0000",closeIconColor:p,closeIconColorHover:g,closeIconColorPressed:C,closeColorHover:S,closeColorPressed:E,borderPrimary:`1px solid ${J(n,{alpha:.3})}`,textColorPrimary:n,colorPrimary:J(n,{alpha:.16}),colorBorderedPrimary:"#0000",closeIconColorPrimary:Ne(n,{lightness:.7}),closeIconColorHoverPrimary:Ne(n,{lightness:.7}),closeIconColorPressedPrimary:Ne(n,{lightness:.7}),closeColorHoverPrimary:J(n,{alpha:.16}),closeColorPressedPrimary:J(n,{alpha:.12}),borderInfo:`1px solid ${J(i,{alpha:.3})}`,textColorInfo:i,colorInfo:J(i,{alpha:.16}),colorBorderedInfo:"#0000",closeIconColorInfo:Ne(i,{alpha:.7}),closeIconColorHoverInfo:Ne(i,{alpha:.7}),closeIconColorPressedInfo:Ne(i,{alpha:.7}),closeColorHoverInfo:J(i,{alpha:.16}),closeColorPressedInfo:J(i,{alpha:.12}),borderSuccess:`1px solid ${J(l,{alpha:.3})}`,textColorSuccess:l,colorSuccess:J(l,{alpha:.16}),colorBorderedSuccess:"#0000",closeIconColorSuccess:Ne(l,{alpha:.7}),closeIconColorHoverSuccess:Ne(l,{alpha:.7}),closeIconColorPressedSuccess:Ne(l,{alpha:.7}),closeColorHoverSuccess:J(l,{alpha:.16}),closeColorPressedSuccess:J(l,{alpha:.12}),borderWarning:`1px solid ${J(a,{alpha:.3})}`,textColorWarning:a,colorWarning:J(a,{alpha:.16}),colorBorderedWarning:"#0000",closeIconColorWarning:Ne(a,{alpha:.7}),closeIconColorHoverWarning:Ne(a,{alpha:.7}),closeIconColorPressedWarning:Ne(a,{alpha:.7}),closeColorHoverWarning:J(a,{alpha:.16}),closeColorPressedWarning:J(a,{alpha:.11}),borderError:`1px solid ${J(s,{alpha:.3})}`,textColorError:s,colorError:J(s,{alpha:.16}),colorBorderedError:"#0000",closeIconColorError:Ne(s,{alpha:.7}),closeIconColorHoverError:Ne(s,{alpha:.7}),closeIconColorPressedError:Ne(s,{alpha:.7}),closeColorHoverError:J(s,{alpha:.16}),closeColorPressedError:J(s,{alpha:.12})}}};var h_={paddingSingle:"0 26px 0 12px",paddingMultiple:"3px 26px 0 12px",clearSize:"16px",arrowSize:"16px"};const fa={name:"InternalSelection",common:W,peers:{Popover:nr},self(e){const{borderRadius:t,textColor2:o,textColorDisabled:r,inputColor:n,inputColorDisabled:i,primaryColor:l,primaryColorHover:a,warningColor:s,warningColorHover:c,errorColor:u,errorColorHover:f,iconColor:d,iconColorDisabled:p,clearColor:g,clearColorHover:C,clearColorPressed:S,placeholderColor:E,placeholderColorDisabled:T,fontSizeTiny:v,fontSizeSmall:y,fontSizeMedium:L,fontSizeLarge:w,heightTiny:D,heightSmall:F,heightMedium:P,heightLarge:U,fontWeight:X}=e;return{...h_,fontWeight:X,fontSizeTiny:v,fontSizeSmall:y,fontSizeMedium:L,fontSizeLarge:w,heightTiny:D,heightSmall:F,heightMedium:P,heightLarge:U,borderRadius:t,textColor:o,textColorDisabled:r,placeholderColor:E,placeholderColorDisabled:T,color:n,colorDisabled:i,colorActive:J(l,{alpha:.1}),border:"1px solid #0000",borderHover:`1px solid ${a}`,borderActive:`1px solid ${l}`,borderFocus:`1px solid ${a}`,boxShadowHover:"none",boxShadowActive:`0 0 8px 0 ${J(l,{alpha:.4})}`,boxShadowFocus:`0 0 8px 0 ${J(l,{alpha:.4})}`,caretColor:l,arrowColor:d,arrowColorDisabled:p,loadingColor:l,borderWarning:`1px solid ${s}`,borderHoverWarning:`1px solid ${c}`,borderActiveWarning:`1px solid ${s}`,borderFocusWarning:`1px solid ${c}`,boxShadowHoverWarning:"none",boxShadowActiveWarning:`0 0 8px 0 ${J(s,{alpha:.4})}`,boxShadowFocusWarning:`0 0 8px 0 ${J(s,{alpha:.4})}`,colorActiveWarning:J(s,{alpha:.1}),caretColorWarning:s,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,borderActiveError:`1px solid ${u}`,borderFocusError:`1px solid ${f}`,boxShadowHoverError:"none",boxShadowActiveError:`0 0 8px 0 ${J(u,{alpha:.4})}`,boxShadowFocusError:`0 0 8px 0 ${J(u,{alpha:.4})}`,colorActiveError:J(u,{alpha:.1}),caretColorError:u,clearColor:g,clearColorHover:C,clearColorPressed:S}}};var g_={iconMargin:"11px 8px 0 12px",iconMarginRtl:"11px 12px 0 8px",iconSize:"24px",closeIconSize:"16px",closeSize:"20px",closeMargin:"13px 14px 0 0",closeMarginRtl:"13px 0 0 14px",padding:"13px"};const C_={name:"Alert",common:W,self(e){const{lineHeight:t,borderRadius:o,fontWeightStrong:r,dividerColor:n,inputColor:i,textColor1:l,textColor2:a,closeColorHover:s,closeColorPressed:c,closeIconColor:u,closeIconColorHover:f,closeIconColorPressed:d,infoColorSuppl:p,successColorSuppl:g,warningColorSuppl:C,errorColorSuppl:S,fontSize:E}=e;return{...g_,fontSize:E,lineHeight:t,titleFontWeight:r,borderRadius:o,border:`1px solid ${n}`,color:i,titleTextColor:l,iconColor:a,contentTextColor:a,closeBorderRadius:o,closeColorHover:s,closeColorPressed:c,closeIconColor:u,closeIconColorHover:f,closeIconColorPressed:d,borderInfo:`1px solid ${J(p,{alpha:.35})}`,colorInfo:J(p,{alpha:.25}),titleTextColorInfo:l,iconColorInfo:p,contentTextColorInfo:a,closeColorHoverInfo:s,closeColorPressedInfo:c,closeIconColorInfo:u,closeIconColorHoverInfo:f,closeIconColorPressedInfo:d,borderSuccess:`1px solid ${J(g,{alpha:.35})}`,colorSuccess:J(g,{alpha:.25}),titleTextColorSuccess:l,iconColorSuccess:g,contentTextColorSuccess:a,closeColorHoverSuccess:s,closeColorPressedSuccess:c,closeIconColorSuccess:u,closeIconColorHoverSuccess:f,closeIconColorPressedSuccess:d,borderWarning:`1px solid ${J(C,{alpha:.35})}`,colorWarning:J(C,{alpha:.25}),titleTextColorWarning:l,iconColorWarning:C,contentTextColorWarning:a,closeColorHoverWarning:s,closeColorPressedWarning:c,closeIconColorWarning:u,closeIconColorHoverWarning:f,closeIconColorPressedWarning:d,borderError:`1px solid ${J(S,{alpha:.35})}`,colorError:J(S,{alpha:.25}),titleTextColorError:l,iconColorError:S,contentTextColorError:a,closeColorHoverError:s,closeColorPressedError:c,closeIconColorError:u,closeIconColorHoverError:f,closeIconColorPressedError:d}}};var b_={linkFontSize:"13px",linkPadding:"0 0 0 16px",railWidth:"4px"};function x_(e){const{borderRadius:t,railColor:o,primaryColor:r,primaryColorHover:n,primaryColorPressed:i,textColor2:l}=e;return{...b_,borderRadius:t,railColor:o,railColorActive:r,linkColor:J(r,{alpha:.15}),linkTextColor:l,linkTextColorHover:n,linkTextColorPressed:i,linkTextColorActive:r}}const __={name:"Anchor",common:W,self:x_};var v_={paddingTiny:"0 8px",paddingSmall:"0 10px",paddingMedium:"0 12px",paddingLarge:"0 14px",clearSize:"16px"};function S_(e){const{textColor2:t,textColor3:o,textColorDisabled:r,primaryColor:n,primaryColorHover:i,inputColor:l,inputColorDisabled:a,warningColor:s,warningColorHover:c,errorColor:u,errorColorHover:f,borderRadius:d,lineHeight:p,fontSizeTiny:g,fontSizeSmall:C,fontSizeMedium:S,fontSizeLarge:E,heightTiny:T,heightSmall:v,heightMedium:y,heightLarge:L,clearColor:w,clearColorHover:D,clearColorPressed:F,placeholderColor:P,placeholderColorDisabled:U,iconColor:X,iconColorDisabled:k,iconColorHover:Q,iconColorPressed:me,fontWeight:ye}=e;return{...v_,fontWeight:ye,countTextColorDisabled:r,countTextColor:o,heightTiny:T,heightSmall:v,heightMedium:y,heightLarge:L,fontSizeTiny:g,fontSizeSmall:C,fontSizeMedium:S,fontSizeLarge:E,lineHeight:p,lineHeightTextarea:p,borderRadius:d,iconSize:"16px",groupLabelColor:l,textColor:t,textColorDisabled:r,textDecorationColor:t,groupLabelTextColor:t,caretColor:n,placeholderColor:P,placeholderColorDisabled:U,color:l,colorHover:l,colorDisabled:a,colorFocus:J(n,{alpha:.1}),groupLabelBorder:"1px solid #0000",border:"1px solid #0000",borderHover:`1px solid ${i}`,borderDisabled:"1px solid #0000",borderFocus:`1px solid ${i}`,boxShadowFocus:`0 0 8px 0 ${J(n,{alpha:.3})}`,loadingColor:n,loadingColorWarning:s,borderWarning:`1px solid ${s}`,borderHoverWarning:`1px solid ${c}`,colorFocusWarning:J(s,{alpha:.1}),borderFocusWarning:`1px solid ${c}`,boxShadowFocusWarning:`0 0 8px 0 ${J(s,{alpha:.3})}`,caretColorWarning:s,loadingColorError:u,borderError:`1px solid ${u}`,borderHoverError:`1px solid ${f}`,colorFocusError:J(u,{alpha:.1}),borderFocusError:`1px solid ${f}`,boxShadowFocusError:`0 0 8px 0 ${J(u,{alpha:.3})}`,caretColorError:u,clearColor:w,clearColorHover:D,clearColorPressed:F,iconColor:X,iconColorDisabled:k,iconColorHover:Q,iconColorPressed:me,suffixTextColor:t}}const Et={name:"Input",common:W,peers:{Scrollbar:et},self:S_};function y_(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const E_={name:"AutoComplete",common:W,peers:{InternalSelectMenu:gn,Input:Et},self:y_};function T_(e){const{borderRadius:t,avatarColor:o,cardColor:r,fontSize:n,heightTiny:i,heightSmall:l,heightMedium:a,heightLarge:s,heightHuge:c,modalColor:u,popoverColor:f}=e;return{borderRadius:t,fontSize:n,border:`2px solid ${r}`,heightTiny:i,heightSmall:l,heightMedium:a,heightLarge:s,heightHuge:c,color:Z(r,o),colorModal:Z(u,o),colorPopover:Z(f,o)}}const Bf={name:"Avatar",common:W,self:T_};function P_(){return{gap:"-12px"}}var I_={width:"44px",height:"44px",borderRadius:"22px",iconSize:"26px"};const A_={name:"BackTop",common:W,self(e){const{popoverColor:t,textColor2:o,primaryColorHover:r,primaryColorPressed:n}=e;return{...I_,color:t,textColor:o,iconColor:o,iconColorHover:r,iconColorPressed:n,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)"}}},L_={name:"Badge",common:W,self(e){const{errorColorSuppl:t,infoColorSuppl:o,successColorSuppl:r,warningColorSuppl:n,fontFamily:i}=e;return{color:t,colorInfo:o,colorSuccess:r,colorError:t,colorWarning:n,fontSize:"12px",fontFamily:i}}};var w_={fontWeightActive:"400"};function D_(e){const{fontSize:t,textColor3:o,textColor2:r,borderRadius:n,buttonColor2Hover:i,buttonColor2Pressed:l}=e;return{...w_,fontSize:t,itemLineHeight:"1.25",itemTextColor:o,itemTextColorHover:r,itemTextColorPressed:r,itemTextColorActive:r,itemBorderRadius:n,itemColorHover:i,itemColorPressed:l,separatorColor:o}}const R_={name:"Breadcrumb",common:W,self:D_};var F_={paddingTiny:"0 6px",paddingSmall:"0 10px",paddingMedium:"0 14px",paddingLarge:"0 18px",paddingRoundTiny:"0 10px",paddingRoundSmall:"0 14px",paddingRoundMedium:"0 18px",paddingRoundLarge:"0 22px",iconMarginTiny:"6px",iconMarginSmall:"6px",iconMarginMedium:"6px",iconMarginLarge:"6px",iconSizeTiny:"14px",iconSizeSmall:"18px",iconSizeMedium:"18px",iconSizeLarge:"20px",rippleDuration:".6s"};function O_(e){const{heightTiny:t,heightSmall:o,heightMedium:r,heightLarge:n,borderRadius:i,fontSizeTiny:l,fontSizeSmall:a,fontSizeMedium:s,fontSizeLarge:c,opacityDisabled:u,textColor2:f,textColor3:d,primaryColorHover:p,primaryColorPressed:g,borderColor:C,primaryColor:S,baseColor:E,infoColor:T,infoColorHover:v,infoColorPressed:y,successColor:L,successColorHover:w,successColorPressed:D,warningColor:F,warningColorHover:P,warningColorPressed:U,errorColor:X,errorColorHover:k,errorColorPressed:Q,fontWeight:me,buttonColor2:ye,buttonColor2Hover:se,buttonColor2Pressed:ne,fontWeightStrong:de}=e;return{...F_,heightTiny:t,heightSmall:o,heightMedium:r,heightLarge:n,borderRadiusTiny:i,borderRadiusSmall:i,borderRadiusMedium:i,borderRadiusLarge:i,fontSizeTiny:l,fontSizeSmall:a,fontSizeMedium:s,fontSizeLarge:c,opacityDisabled:u,colorOpacitySecondary:"0.16",colorOpacitySecondaryHover:"0.22",colorOpacitySecondaryPressed:"0.28",colorSecondary:ye,colorSecondaryHover:se,colorSecondaryPressed:ne,colorTertiary:ye,colorTertiaryHover:se,colorTertiaryPressed:ne,colorQuaternary:"#0000",colorQuaternaryHover:se,colorQuaternaryPressed:ne,color:"#0000",colorHover:"#0000",colorPressed:"#0000",colorFocus:"#0000",colorDisabled:"#0000",textColor:f,textColorTertiary:d,textColorHover:p,textColorPressed:g,textColorFocus:p,textColorDisabled:f,textColorText:f,textColorTextHover:p,textColorTextPressed:g,textColorTextFocus:p,textColorTextDisabled:f,textColorGhost:f,textColorGhostHover:p,textColorGhostPressed:g,textColorGhostFocus:p,textColorGhostDisabled:f,border:`1px solid ${C}`,borderHover:`1px solid ${p}`,borderPressed:`1px solid ${g}`,borderFocus:`1px solid ${p}`,borderDisabled:`1px solid ${C}`,rippleColor:S,colorPrimary:S,colorHoverPrimary:p,colorPressedPrimary:g,colorFocusPrimary:p,colorDisabledPrimary:S,textColorPrimary:E,textColorHoverPrimary:E,textColorPressedPrimary:E,textColorFocusPrimary:E,textColorDisabledPrimary:E,textColorTextPrimary:S,textColorTextHoverPrimary:p,textColorTextPressedPrimary:g,textColorTextFocusPrimary:p,textColorTextDisabledPrimary:f,textColorGhostPrimary:S,textColorGhostHoverPrimary:p,textColorGhostPressedPrimary:g,textColorGhostFocusPrimary:p,textColorGhostDisabledPrimary:S,borderPrimary:`1px solid ${S}`,borderHoverPrimary:`1px solid ${p}`,borderPressedPrimary:`1px solid ${g}`,borderFocusPrimary:`1px solid ${p}`,borderDisabledPrimary:`1px solid ${S}`,rippleColorPrimary:S,colorInfo:T,colorHoverInfo:v,colorPressedInfo:y,colorFocusInfo:v,colorDisabledInfo:T,textColorInfo:E,textColorHoverInfo:E,textColorPressedInfo:E,textColorFocusInfo:E,textColorDisabledInfo:E,textColorTextInfo:T,textColorTextHoverInfo:v,textColorTextPressedInfo:y,textColorTextFocusInfo:v,textColorTextDisabledInfo:f,textColorGhostInfo:T,textColorGhostHoverInfo:v,textColorGhostPressedInfo:y,textColorGhostFocusInfo:v,textColorGhostDisabledInfo:T,borderInfo:`1px solid ${T}`,borderHoverInfo:`1px solid ${v}`,borderPressedInfo:`1px solid ${y}`,borderFocusInfo:`1px solid ${v}`,borderDisabledInfo:`1px solid ${T}`,rippleColorInfo:T,colorSuccess:L,colorHoverSuccess:w,colorPressedSuccess:D,colorFocusSuccess:w,colorDisabledSuccess:L,textColorSuccess:E,textColorHoverSuccess:E,textColorPressedSuccess:E,textColorFocusSuccess:E,textColorDisabledSuccess:E,textColorTextSuccess:L,textColorTextHoverSuccess:w,textColorTextPressedSuccess:D,textColorTextFocusSuccess:w,textColorTextDisabledSuccess:f,textColorGhostSuccess:L,textColorGhostHoverSuccess:w,textColorGhostPressedSuccess:D,textColorGhostFocusSuccess:w,textColorGhostDisabledSuccess:L,borderSuccess:`1px solid ${L}`,borderHoverSuccess:`1px solid ${w}`,borderPressedSuccess:`1px solid ${D}`,borderFocusSuccess:`1px solid ${w}`,borderDisabledSuccess:`1px solid ${L}`,rippleColorSuccess:L,colorWarning:F,colorHoverWarning:P,colorPressedWarning:U,colorFocusWarning:P,colorDisabledWarning:F,textColorWarning:E,textColorHoverWarning:E,textColorPressedWarning:E,textColorFocusWarning:E,textColorDisabledWarning:E,textColorTextWarning:F,textColorTextHoverWarning:P,textColorTextPressedWarning:U,textColorTextFocusWarning:P,textColorTextDisabledWarning:f,textColorGhostWarning:F,textColorGhostHoverWarning:P,textColorGhostPressedWarning:U,textColorGhostFocusWarning:P,textColorGhostDisabledWarning:F,borderWarning:`1px solid ${F}`,borderHoverWarning:`1px solid ${P}`,borderPressedWarning:`1px solid ${U}`,borderFocusWarning:`1px solid ${P}`,borderDisabledWarning:`1px solid ${F}`,rippleColorWarning:F,colorError:X,colorHoverError:k,colorPressedError:Q,colorFocusError:k,colorDisabledError:X,textColorError:E,textColorHoverError:E,textColorPressedError:E,textColorFocusError:E,textColorDisabledError:E,textColorTextError:X,textColorTextHoverError:k,textColorTextPressedError:Q,textColorTextFocusError:k,textColorTextDisabledError:f,textColorGhostError:X,textColorGhostHoverError:k,textColorGhostPressedError:Q,textColorGhostFocusError:k,textColorGhostDisabledError:X,borderError:`1px solid ${X}`,borderHoverError:`1px solid ${k}`,borderPressedError:`1px solid ${Q}`,borderFocusError:`1px solid ${k}`,borderDisabledError:`1px solid ${X}`,rippleColorError:X,waveOpacity:"0.6",fontWeight:me,fontWeightStrong:de}}const ut={name:"Button",common:W,self(e){const t=O_(e);return t.waveOpacity="0.8",t.colorOpacitySecondary="0.16",t.colorOpacitySecondaryHover="0.2",t.colorOpacitySecondaryPressed="0.12",t}};var N_={titleFontSize:"22px"};function M_(e){const{borderRadius:t,fontSize:o,lineHeight:r,textColor2:n,textColor1:i,textColorDisabled:l,dividerColor:a,fontWeightStrong:s,primaryColor:c,baseColor:u,hoverColor:f,cardColor:d,modalColor:p,popoverColor:g}=e;return{...N_,borderRadius:t,borderColor:Z(d,a),borderColorModal:Z(p,a),borderColorPopover:Z(g,a),textColor:n,titleFontWeight:s,titleTextColor:i,dayTextColor:l,fontSize:o,lineHeight:r,dateColorCurrent:c,dateTextColorCurrent:u,cellColorHover:Z(d,f),cellColorHoverModal:Z(p,f),cellColorHoverPopover:Z(g,f),cellColor:d,cellColorModal:p,cellColorPopover:g,barColor:c}}var k_={paddingSmall:"12px 16px 12px",paddingMedium:"19px 24px 20px",paddingLarge:"23px 32px 24px",paddingHuge:"27px 40px 28px",titleFontSizeSmall:"16px",titleFontSizeMedium:"18px",titleFontSizeLarge:"18px",titleFontSizeHuge:"18px",closeIconSize:"18px",closeSize:"22px"};function H_(e){const{primaryColor:t,borderRadius:o,lineHeight:r,fontSize:n,cardColor:i,textColor2:l,textColor1:a,dividerColor:s,fontWeightStrong:c,closeIconColor:u,closeIconColorHover:f,closeIconColorPressed:d,closeColorHover:p,closeColorPressed:g,modalColor:C,boxShadow1:S,popoverColor:E,actionColor:T}=e;return{...k_,lineHeight:r,color:i,colorModal:C,colorPopover:E,colorTarget:t,colorEmbedded:T,colorEmbeddedModal:T,colorEmbeddedPopover:T,textColor:l,titleTextColor:a,borderColor:s,actionColor:T,titleFontWeight:c,closeColorHover:p,closeColorPressed:g,closeBorderRadius:o,closeIconColor:u,closeIconColorHover:f,closeIconColorPressed:d,fontSizeSmall:n,fontSizeMedium:n,fontSizeLarge:n,fontSizeHuge:n,boxShadow:S,borderRadius:o}}const Wf={name:"Card",common:W,self(e){const t=H_(e),{cardColor:o,modalColor:r,popoverColor:n}=e;return t.colorEmbedded=o,t.colorEmbeddedModal=r,t.colorEmbeddedPopover=n,t}};function $_(){return{dotSize:"8px",dotColor:"rgba(255, 255, 255, .3)",dotColorActive:"rgba(255, 255, 255, 1)",dotColorFocus:"rgba(255, 255, 255, .5)",dotLineWidth:"16px",dotLineWidthActive:"24px",arrowColor:"#eee"}}var B_={sizeSmall:"14px",sizeMedium:"16px",sizeLarge:"18px",labelPadding:"0 8px",labelFontWeight:"400"};function W_(e){const{baseColor:t,inputColorDisabled:o,cardColor:r,modalColor:n,popoverColor:i,textColorDisabled:l,borderColor:a,primaryColor:s,textColor2:c,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:d,borderRadiusSmall:p,lineHeight:g}=e;return{...B_,labelLineHeight:g,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:d,borderRadius:p,color:t,colorChecked:s,colorDisabled:o,colorDisabledChecked:o,colorTableHeader:r,colorTableHeaderModal:n,colorTableHeaderPopover:i,checkMarkColor:t,checkMarkColorDisabled:l,checkMarkColorDisabledChecked:l,border:`1px solid ${a}`,borderDisabled:`1px solid ${a}`,borderDisabledChecked:`1px solid ${a}`,borderChecked:`1px solid ${s}`,borderFocus:`1px solid ${s}`,boxShadowFocus:`0 0 0 2px ${J(s,{alpha:.3})}`,textColor:c,textColorDisabled:l}}const Tr={name:"Checkbox",common:W,self(e){const{cardColor:t}=e,o=W_(e);return o.color="#0000",o.checkMarkColor=t,o}};function z_(e){const{borderRadius:t,boxShadow2:o,popoverColor:r,textColor2:n,textColor3:i,primaryColor:l,textColorDisabled:a,dividerColor:s,hoverColor:c,fontSizeMedium:u,heightMedium:f}=e;return{menuBorderRadius:t,menuColor:r,menuBoxShadow:o,menuDividerColor:s,menuHeight:"calc(var(--n-option-height) * 6.6)",optionArrowColor:i,optionHeight:f,optionFontSize:u,optionColorHover:c,optionTextColor:n,optionTextColorActive:l,optionTextColorDisabled:a,optionCheckMarkColor:l,loadingColor:l,columnWidth:"180px"}}const U_={name:"Cascader",common:W,peers:{InternalSelectMenu:gn,InternalSelection:fa,Scrollbar:et,Checkbox:Tr,Empty:s_},self:z_},zf={name:"Code",common:W,self(e){const{textColor2:t,fontSize:o,fontWeightStrong:r,textColor3:n}=e;return{textColor:t,fontSize:o,fontWeightStrong:r,"mono-3":"#5c6370","hue-1":"#56b6c2","hue-2":"#61aeee","hue-3":"#c678dd","hue-4":"#98c379","hue-5":"#e06c75","hue-5-2":"#be5046","hue-6":"#d19a66","hue-6-2":"#e6c07b",lineNumberTextColor:n}}};function V_(e){const{fontWeight:t,textColor1:o,textColor2:r,textColorDisabled:n,dividerColor:i,fontSize:l}=e;return{titleFontSize:l,titleFontWeight:t,dividerColor:i,titleTextColor:o,titleTextColorDisabled:n,fontSize:l,textColor:r,arrowColor:r,arrowColorDisabled:n,itemMargin:"16px 0 0 0",titlePadding:"16px 0 0 0"}}const j_={name:"Collapse",common:W,self:V_};function G_(e){const{cubicBezierEaseInOut:t}=e;return{bezier:t}}function K_(e){const{fontSize:t,boxShadow2:o,popoverColor:r,textColor2:n,borderRadius:i,borderColor:l,heightSmall:a,heightMedium:s,heightLarge:c,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:d,dividerColor:p}=e;return{panelFontSize:t,boxShadow:o,color:r,textColor:n,borderRadius:i,border:`1px solid ${l}`,heightSmall:a,heightMedium:s,heightLarge:c,fontSizeSmall:u,fontSizeMedium:f,fontSizeLarge:d,dividerColor:p}}const Y_={abstract:Boolean,bordered:{type:Boolean,default:void 0},clsPrefix:String,locale:Object,dateLocale:Object,namespace:String,rtl:Array,tag:{type:String,default:"div"},hljs:Object,katex:Object,theme:Object,themeOverrides:Object,componentOptions:Object,icons:Object,breakpoints:Object,preflightStyleDisabled:Boolean,styleMountTarget:Object,inlineThemeDisabled:{type:Boolean,default:void 0},as:{type:String,validator:()=>(Dx("config-provider","`as` is deprecated, please use `tag` instead."),!0),default:void 0}};var q_=po({name:"ConfigProvider",alias:["App"],props:Y_,setup(e){const t=Ze(Il,null),o=fe(()=>{const{theme:C}=e;if(C===null)return;const S=t?.mergedThemeRef.value;return C===void 0?S:S===void 0?C:Object.assign({},S,C)}),r=fe(()=>{const{themeOverrides:C}=e;if(C!==null){if(C===void 0)return t?.mergedThemeOverridesRef.value;{const S=t?.mergedThemeOverridesRef.value;return S===void 0?C:kr({},S,C)}}}),n=Ks(()=>{const{namespace:C}=e;return C===void 0?t?.mergedNamespaceRef.value:C}),i=Ks(()=>{const{bordered:C}=e;return C===void 0?t?.mergedBorderedRef.value:C}),l=fe(()=>{const{icons:C}=e;return C===void 0?t?.mergedIconsRef.value:C}),a=fe(()=>{const{componentOptions:C}=e;return C!==void 0?C:t?.mergedComponentPropsRef.value}),s=fe(()=>{const{clsPrefix:C}=e;return C!==void 0?C:t?t.mergedClsPrefixRef.value:"n"}),c=fe(()=>{const{rtl:C}=e;if(C===void 0)return t?.mergedRtlRef.value;const S={};for(const E of C)S[E.name]=qr(E),E.peers?.forEach(T=>{T.name in S||(S[T.name]=qr(T))});return S}),u=fe(()=>e.breakpoints||t?.mergedBreakpointsRef.value),f=e.inlineThemeDisabled||t?.inlineThemeDisabled,d=e.preflightStyleDisabled||t?.preflightStyleDisabled,p=e.styleMountTarget||t?.styleMountTarget,g=fe(()=>{const{value:C}=o,{value:S}=r,E=S&&Object.keys(S).length!==0,T=C?.name;return T?E?`${T}-${Sl(JSON.stringify(r.value))}`:T:E?Sl(JSON.stringify(r.value)):""});return Wr(Il,{mergedThemeHashRef:g,mergedBreakpointsRef:u,mergedRtlRef:c,mergedIconsRef:l,mergedComponentPropsRef:a,mergedBorderedRef:i,mergedNamespaceRef:n,mergedClsPrefixRef:s,mergedLocaleRef:fe(()=>{const{locale:C}=e;if(C!==null)return C===void 0?t?.mergedLocaleRef.value:C}),mergedDateLocaleRef:fe(()=>{const{dateLocale:C}=e;if(C!==null)return C===void 0?t?.mergedDateLocaleRef.value:C}),mergedHljsRef:fe(()=>{const{hljs:C}=e;return C===void 0?t?.mergedHljsRef.value:C}),mergedKatexRef:fe(()=>{const{katex:C}=e;return C===void 0?t?.mergedKatexRef.value:C}),mergedThemeRef:o,mergedThemeOverridesRef:r,inlineThemeDisabled:f||!1,preflightStyleDisabled:d||!1,styleMountTarget:p}),{mergedClsPrefix:s,mergedBordered:i,mergedNamespace:n,mergedTheme:o,mergedThemeOverrides:r}},render(){return this.abstract?this.$slots.default?.():vr(this.as||this.tag,{class:`${this.mergedClsPrefix||"n"}-config-provider`},this.$slots.default?.())}});const Uf={name:"Popselect",common:W,peers:{Popover:nr,InternalSelectMenu:gn}};function X_(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}const Vf={name:"Select",common:W,peers:{InternalSelection:fa,InternalSelectMenu:gn},self:X_};var J_={itemPaddingSmall:"0 4px",itemMarginSmall:"0 0 0 8px",itemMarginSmallRtl:"0 8px 0 0",itemPaddingMedium:"0 4px",itemMarginMedium:"0 0 0 8px",itemMarginMediumRtl:"0 8px 0 0",itemPaddingLarge:"0 4px",itemMarginLarge:"0 0 0 8px",itemMarginLargeRtl:"0 8px 0 0",buttonIconSizeSmall:"14px",buttonIconSizeMedium:"16px",buttonIconSizeLarge:"18px",inputWidthSmall:"60px",selectWidthSmall:"unset",inputMarginSmall:"0 0 0 8px",inputMarginSmallRtl:"0 8px 0 0",selectMarginSmall:"0 0 0 8px",prefixMarginSmall:"0 8px 0 0",suffixMarginSmall:"0 0 0 8px",inputWidthMedium:"60px",selectWidthMedium:"unset",inputMarginMedium:"0 0 0 8px",inputMarginMediumRtl:"0 8px 0 0",selectMarginMedium:"0 0 0 8px",prefixMarginMedium:"0 8px 0 0",suffixMarginMedium:"0 0 0 8px",inputWidthLarge:"60px",selectWidthLarge:"unset",inputMarginLarge:"0 0 0 8px",inputMarginLargeRtl:"0 8px 0 0",selectMarginLarge:"0 0 0 8px",prefixMarginLarge:"0 8px 0 0",suffixMarginLarge:"0 0 0 8px"};function Q_(e){const{textColor2:t,primaryColor:o,primaryColorHover:r,primaryColorPressed:n,inputColorDisabled:i,textColorDisabled:l,borderColor:a,borderRadius:s,fontSizeTiny:c,fontSizeSmall:u,fontSizeMedium:f,heightTiny:d,heightSmall:p,heightMedium:g}=e;return{...J_,buttonColor:"#0000",buttonColorHover:"#0000",buttonColorPressed:"#0000",buttonBorder:`1px solid ${a}`,buttonBorderHover:`1px solid ${a}`,buttonBorderPressed:`1px solid ${a}`,buttonIconColor:t,buttonIconColorHover:t,buttonIconColorPressed:t,itemTextColor:t,itemTextColorHover:r,itemTextColorPressed:n,itemTextColorActive:o,itemTextColorDisabled:l,itemColor:"#0000",itemColorHover:"#0000",itemColorPressed:"#0000",itemColorActive:"#0000",itemColorActiveHover:"#0000",itemColorDisabled:i,itemBorder:"1px solid #0000",itemBorderHover:"1px solid #0000",itemBorderPressed:"1px solid #0000",itemBorderActive:`1px solid ${o}`,itemBorderDisabled:`1px solid ${a}`,itemBorderRadius:s,itemSizeSmall:d,itemSizeMedium:p,itemSizeLarge:g,itemFontSizeSmall:c,itemFontSizeMedium:u,itemFontSizeLarge:f,jumperFontSizeSmall:c,jumperFontSizeMedium:u,jumperFontSizeLarge:f,jumperTextColor:t,jumperTextColorDisabled:l}}const jf={name:"Pagination",common:W,peers:{Select:Vf,Input:Et,Popselect:Uf},self(e){const{primaryColor:t,opacity3:o}=e,r=J(t,{alpha:Number(o)}),n=Q_(e);return n.itemBorderActive=`1px solid ${r}`,n.itemBorderDisabled="1px solid #0000",n}};var Z_={padding:"4px 0",optionIconSizeSmall:"14px",optionIconSizeMedium:"16px",optionIconSizeLarge:"16px",optionIconSizeHuge:"18px",optionSuffixWidthSmall:"14px",optionSuffixWidthMedium:"14px",optionSuffixWidthLarge:"16px",optionSuffixWidthHuge:"16px",optionIconSuffixWidthSmall:"32px",optionIconSuffixWidthMedium:"32px",optionIconSuffixWidthLarge:"36px",optionIconSuffixWidthHuge:"36px",optionPrefixWidthSmall:"14px",optionPrefixWidthMedium:"14px",optionPrefixWidthLarge:"16px",optionPrefixWidthHuge:"16px",optionIconPrefixWidthSmall:"36px",optionIconPrefixWidthMedium:"36px",optionIconPrefixWidthLarge:"40px",optionIconPrefixWidthHuge:"40px"};function ev(e){const{primaryColor:t,textColor2:o,dividerColor:r,hoverColor:n,popoverColor:i,invertedColor:l,borderRadius:a,fontSizeSmall:s,fontSizeMedium:c,fontSizeLarge:u,fontSizeHuge:f,heightSmall:d,heightMedium:p,heightLarge:g,heightHuge:C,textColor3:S,opacityDisabled:E}=e;return{...Z_,optionHeightSmall:d,optionHeightMedium:p,optionHeightLarge:g,optionHeightHuge:C,borderRadius:a,fontSizeSmall:s,fontSizeMedium:c,fontSizeLarge:u,fontSizeHuge:f,optionTextColor:o,optionTextColorHover:o,optionTextColorActive:t,optionTextColorChildActive:t,color:i,dividerColor:r,suffixColor:o,prefixColor:o,optionColorHover:n,optionColorActive:J(t,{alpha:.1}),groupHeaderTextColor:S,optionTextColorInverted:"#BBB",optionTextColorHoverInverted:"#FFF",optionTextColorActiveInverted:"#FFF",optionTextColorChildActiveInverted:"#FFF",colorInverted:l,dividerColorInverted:"#BBB",suffixColorInverted:"#BBB",prefixColorInverted:"#BBB",optionColorHoverInverted:t,optionColorActiveInverted:t,groupHeaderTextColorInverted:"#AAA",optionOpacityDisabled:E}}const da={name:"Dropdown",common:W,peers:{Popover:nr},self(e){const{primaryColorSuppl:t,primaryColor:o,popoverColor:r}=e,n=ev(e);return n.colorInverted=r,n.optionColorActive=J(o,{alpha:.15}),n.optionColorActiveInverted=t,n.optionColorHoverInverted=t,n}};var tv={padding:"8px 14px"};const yi={name:"Tooltip",common:W,peers:{Popover:nr},self(e){const{borderRadius:t,boxShadow2:o,popoverColor:r,textColor2:n}=e;return{...tv,borderRadius:t,boxShadow:o,color:r,textColor:n}}};var ov={radioSizeSmall:"14px",radioSizeMedium:"16px",radioSizeLarge:"18px",labelPadding:"0 8px",labelFontWeight:"400"};const Gf={name:"Radio",common:W,self(e){const{borderColor:t,primaryColor:o,baseColor:r,textColorDisabled:n,inputColorDisabled:i,textColor2:l,opacityDisabled:a,borderRadius:s,fontSizeSmall:c,fontSizeMedium:u,fontSizeLarge:f,heightSmall:d,heightMedium:p,heightLarge:g,lineHeight:C}=e;return{...ov,labelLineHeight:C,buttonHeightSmall:d,buttonHeightMedium:p,buttonHeightLarge:g,fontSizeSmall:c,fontSizeMedium:u,fontSizeLarge:f,boxShadow:`inset 0 0 0 1px ${t}`,boxShadowActive:`inset 0 0 0 1px ${o}`,boxShadowFocus:`inset 0 0 0 1px ${o}, 0 0 0 2px ${J(o,{alpha:.3})}`,boxShadowHover:`inset 0 0 0 1px ${o}`,boxShadowDisabled:`inset 0 0 0 1px ${t}`,color:"#0000",colorDisabled:i,colorActive:"#0000",textColor:l,textColorDisabled:n,dotColorActive:o,dotColorDisabled:t,buttonBorderColor:t,buttonBorderColorActive:o,buttonBorderColorHover:o,buttonColor:"#0000",buttonColorActive:o,buttonTextColor:l,buttonTextColorActive:r,buttonTextColorHover:o,opacityDisabled:a,buttonBoxShadowFocus:`inset 0 0 0 1px ${o}, 0 0 0 2px ${J(o,{alpha:.3})}`,buttonBoxShadowHover:`inset 0 0 0 1px ${o}`,buttonBoxShadow:"inset 0 0 0 1px #0000",buttonBorderRadius:s}}},Kf={name:"Ellipsis",common:W,peers:{Tooltip:yi}};var rv={thPaddingSmall:"8px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"8px",tdPaddingMedium:"12px",tdPaddingLarge:"12px",sorterSize:"15px",resizableContainerSize:"8px",resizableSize:"2px",filterSize:"15px",paginationMargin:"12px 0 0 0",emptyPadding:"48px 0",actionPadding:"8px 12px",actionButtonMargin:"0 8px 0 0"};function nv(e){const{cardColor:t,modalColor:o,popoverColor:r,textColor2:n,textColor1:i,tableHeaderColor:l,tableColorHover:a,iconColor:s,primaryColor:c,fontWeightStrong:u,borderRadius:f,lineHeight:d,fontSizeSmall:p,fontSizeMedium:g,fontSizeLarge:C,dividerColor:S,heightSmall:E,opacityDisabled:T,tableColorStriped:v}=e;return{...rv,actionDividerColor:S,lineHeight:d,borderRadius:f,fontSizeSmall:p,fontSizeMedium:g,fontSizeLarge:C,borderColor:Z(t,S),tdColorHover:Z(t,a),tdColorSorting:Z(t,a),tdColorStriped:Z(t,v),thColor:Z(t,l),thColorHover:Z(Z(t,l),a),thColorSorting:Z(Z(t,l),a),tdColor:t,tdTextColor:n,thTextColor:i,thFontWeight:u,thButtonColorHover:a,thIconColor:s,thIconColorActive:c,borderColorModal:Z(o,S),tdColorHoverModal:Z(o,a),tdColorSortingModal:Z(o,a),tdColorStripedModal:Z(o,v),thColorModal:Z(o,l),thColorHoverModal:Z(Z(o,l),a),thColorSortingModal:Z(Z(o,l),a),tdColorModal:o,borderColorPopover:Z(r,S),tdColorHoverPopover:Z(r,a),tdColorSortingPopover:Z(r,a),tdColorStripedPopover:Z(r,v),thColorPopover:Z(r,l),thColorHoverPopover:Z(Z(r,l),a),thColorSortingPopover:Z(Z(r,l),a),tdColorPopover:r,boxShadowBefore:"inset -12px 0 8px -12px rgba(0, 0, 0, .18)",boxShadowAfter:"inset 12px 0 8px -12px rgba(0, 0, 0, .18)",loadingColor:c,loadingSize:E,opacityLoading:T}}const iv={name:"DataTable",common:W,peers:{Button:ut,Checkbox:Tr,Radio:Gf,Pagination:jf,Scrollbar:et,Empty:rr,Popover:nr,Ellipsis:Kf,Dropdown:da},self(e){const t=nv(e);return t.boxShadowAfter="inset 12px 0 8px -12px rgba(0, 0, 0, .36)",t.boxShadowBefore="inset -12px 0 8px -12px rgba(0, 0, 0, .36)",t}};function lv(e){const{textColorBase:t,opacity1:o,opacity2:r,opacity3:n,opacity4:i,opacity5:l}=e;return{color:t,opacity1Depth:o,opacity2Depth:r,opacity3Depth:n,opacity4Depth:i,opacity5Depth:l}}const av={name:"Icon",common:W,self:lv};var sv={itemFontSize:"12px",itemHeight:"36px",itemWidth:"52px",panelActionPadding:"8px 0"};function cv(e){const{popoverColor:t,textColor2:o,primaryColor:r,hoverColor:n,dividerColor:i,opacityDisabled:l,boxShadow2:a,borderRadius:s,iconColor:c,iconColorDisabled:u}=e;return{...sv,panelColor:t,panelBoxShadow:a,panelDividerColor:i,itemTextColor:o,itemTextColorActive:r,itemColorHover:n,itemOpacityDisabled:l,itemBorderRadius:s,borderRadius:s,iconColor:c,iconColorDisabled:u}}const Yf={name:"TimePicker",common:W,peers:{Scrollbar:et,Button:ut,Input:Et},self:cv};var uv={itemSize:"24px",itemCellWidth:"38px",itemCellHeight:"32px",scrollItemWidth:"80px",scrollItemHeight:"40px",panelExtraFooterPadding:"8px 12px",panelActionPadding:"8px 12px",calendarTitlePadding:"0",calendarTitleHeight:"28px",arrowSize:"14px",panelHeaderPadding:"8px 12px",calendarDaysHeight:"32px",calendarTitleGridTempateColumns:"28px 28px 1fr 28px 28px",calendarLeftPaddingDate:"6px 12px 4px 12px",calendarLeftPaddingDatetime:"4px 12px",calendarLeftPaddingDaterange:"6px 12px 4px 12px",calendarLeftPaddingDatetimerange:"4px 12px",calendarLeftPaddingMonth:"0",calendarLeftPaddingYear:"0",calendarLeftPaddingQuarter:"0",calendarLeftPaddingMonthrange:"0",calendarLeftPaddingQuarterrange:"0",calendarLeftPaddingYearrange:"0",calendarLeftPaddingWeek:"6px 12px 4px 12px",calendarRightPaddingDate:"6px 12px 4px 12px",calendarRightPaddingDatetime:"4px 12px",calendarRightPaddingDaterange:"6px 12px 4px 12px",calendarRightPaddingDatetimerange:"4px 12px",calendarRightPaddingMonth:"0",calendarRightPaddingYear:"0",calendarRightPaddingQuarter:"0",calendarRightPaddingMonthrange:"0",calendarRightPaddingQuarterrange:"0",calendarRightPaddingYearrange:"0",calendarRightPaddingWeek:"0"};function fv(e){const{hoverColor:t,fontSize:o,textColor2:r,textColorDisabled:n,popoverColor:i,primaryColor:l,borderRadiusSmall:a,iconColor:s,iconColorDisabled:c,textColor1:u,dividerColor:f,boxShadow2:d,borderRadius:p,fontWeightStrong:g}=e;return{...uv,itemFontSize:o,calendarDaysFontSize:o,calendarTitleFontSize:o,itemTextColor:r,itemTextColorDisabled:n,itemTextColorActive:i,itemTextColorCurrent:l,itemColorIncluded:J(l,{alpha:.1}),itemColorHover:t,itemColorDisabled:t,itemColorActive:l,itemBorderRadius:a,panelColor:i,panelTextColor:r,arrowColor:s,calendarTitleTextColor:u,calendarTitleColorHover:t,calendarDaysTextColor:r,panelHeaderDividerColor:f,calendarDaysDividerColor:f,calendarDividerColor:f,panelActionDividerColor:f,panelBoxShadow:d,panelBorderRadius:p,calendarTitleFontWeight:g,scrollItemBorderRadius:p,iconColor:s,iconColorDisabled:c}}const dv={name:"DatePicker",common:W,peers:{Input:Et,Button:ut,TimePicker:Yf,Scrollbar:et},self(e){const{popoverColor:t,hoverColor:o,primaryColor:r}=e,n=fv(e);return n.itemColorDisabled=Z(t,o),n.itemColorIncluded=J(r,{alpha:.15}),n.itemColorHover=Z(t,o),n}};var pv={thPaddingBorderedSmall:"8px 12px",thPaddingBorderedMedium:"12px 16px",thPaddingBorderedLarge:"16px 24px",thPaddingSmall:"0",thPaddingMedium:"0",thPaddingLarge:"0",tdPaddingBorderedSmall:"8px 12px",tdPaddingBorderedMedium:"12px 16px",tdPaddingBorderedLarge:"16px 24px",tdPaddingSmall:"0 0 8px 0",tdPaddingMedium:"0 0 12px 0",tdPaddingLarge:"0 0 16px 0"};function mv(e){const{tableHeaderColor:t,textColor2:o,textColor1:r,cardColor:n,modalColor:i,popoverColor:l,dividerColor:a,borderRadius:s,fontWeightStrong:c,lineHeight:u,fontSizeSmall:f,fontSizeMedium:d,fontSizeLarge:p}=e;return{...pv,lineHeight:u,fontSizeSmall:f,fontSizeMedium:d,fontSizeLarge:p,titleTextColor:r,thColor:Z(n,t),thColorModal:Z(i,t),thColorPopover:Z(l,t),thTextColor:r,thFontWeight:c,tdTextColor:o,tdColor:n,tdColorModal:i,tdColorPopover:l,borderColor:Z(n,a),borderColorModal:Z(i,a),borderColorPopover:Z(l,a),borderRadius:s}}const hv={name:"Descriptions",common:W,self:mv};var gv={titleFontSize:"18px",padding:"16px 28px 20px 28px",iconSize:"28px",actionSpace:"12px",contentMargin:"8px 0 16px 0",iconMargin:"0 4px 0 0",iconMarginIconTop:"4px 0 8px 0",closeSize:"22px",closeIconSize:"18px",closeMargin:"20px 26px 0 0",closeMarginIconTop:"10px 16px 0 0"};function Cv(e){const{textColor1:t,textColor2:o,modalColor:r,closeIconColor:n,closeIconColorHover:i,closeIconColorPressed:l,closeColorHover:a,closeColorPressed:s,infoColor:c,successColor:u,warningColor:f,errorColor:d,primaryColor:p,dividerColor:g,borderRadius:C,fontWeightStrong:S,lineHeight:E,fontSize:T}=e;return{...gv,fontSize:T,lineHeight:E,border:`1px solid ${g}`,titleTextColor:t,textColor:o,color:r,closeColorHover:a,closeColorPressed:s,closeIconColor:n,closeIconColorHover:i,closeIconColorPressed:l,closeBorderRadius:C,iconColor:p,iconColorInfo:c,iconColorSuccess:u,iconColorWarning:f,iconColorError:d,borderRadius:C,titleFontWeight:S}}const qf={name:"Dialog",common:W,peers:{Button:ut},self:Cv};function bv(e){const{modalColor:t,textColor2:o,boxShadow3:r}=e;return{color:t,textColor:o,boxShadow:r}}const xv={name:"Modal",common:W,peers:{Scrollbar:et,Dialog:qf,Card:Wf},self:bv},_v={name:"LoadingBar",common:W,self(e){const{primaryColor:t}=e;return{colorError:"red",colorLoading:t,height:"2px"}}};var vv={margin:"0 0 8px 0",padding:"10px 20px",maxWidth:"720px",minWidth:"420px",iconMargin:"0 10px 0 0",closeMargin:"0 0 0 10px",closeSize:"20px",closeIconSize:"16px",iconSize:"20px",fontSize:"14px"};function Sv(e){const{textColor2:t,closeIconColor:o,closeIconColorHover:r,closeIconColorPressed:n,infoColor:i,successColor:l,errorColor:a,warningColor:s,popoverColor:c,boxShadow2:u,primaryColor:f,lineHeight:d,borderRadius:p,closeColorHover:g,closeColorPressed:C}=e;return{...vv,closeBorderRadius:p,textColor:t,textColorInfo:t,textColorSuccess:t,textColorError:t,textColorWarning:t,textColorLoading:t,color:c,colorInfo:c,colorSuccess:c,colorError:c,colorWarning:c,colorLoading:c,boxShadow:u,boxShadowInfo:u,boxShadowSuccess:u,boxShadowError:u,boxShadowWarning:u,boxShadowLoading:u,iconColor:t,iconColorInfo:i,iconColorSuccess:l,iconColorWarning:s,iconColorError:a,iconColorLoading:f,closeColorHover:g,closeColorPressed:C,closeIconColor:o,closeIconColorHover:r,closeIconColorPressed:n,closeColorHoverInfo:g,closeColorPressedInfo:C,closeIconColorInfo:o,closeIconColorHoverInfo:r,closeIconColorPressedInfo:n,closeColorHoverSuccess:g,closeColorPressedSuccess:C,closeIconColorSuccess:o,closeIconColorHoverSuccess:r,closeIconColorPressedSuccess:n,closeColorHoverError:g,closeColorPressedError:C,closeIconColorError:o,closeIconColorHoverError:r,closeIconColorPressedError:n,closeColorHoverWarning:g,closeColorPressedWarning:C,closeIconColorWarning:o,closeIconColorHoverWarning:r,closeIconColorPressedWarning:n,closeColorHoverLoading:g,closeColorPressedLoading:C,closeIconColorLoading:o,closeIconColorHoverLoading:r,closeIconColorPressedLoading:n,loadingColor:f,lineHeight:d,borderRadius:p,border:"0"}}const yv={name:"Message",common:W,self:Sv};var Ev={closeMargin:"16px 12px",closeSize:"20px",closeIconSize:"16px",width:"365px",padding:"16px",titleFontSize:"16px",metaFontSize:"12px",descriptionFontSize:"12px"};function Tv(e){const{textColor2:t,successColor:o,infoColor:r,warningColor:n,errorColor:i,popoverColor:l,closeIconColor:a,closeIconColorHover:s,closeIconColorPressed:c,closeColorHover:u,closeColorPressed:f,textColor1:d,textColor3:p,borderRadius:g,fontWeightStrong:C,boxShadow2:S,lineHeight:E,fontSize:T}=e;return{...Ev,borderRadius:g,lineHeight:E,fontSize:T,headerFontWeight:C,iconColor:t,iconColorSuccess:o,iconColorInfo:r,iconColorWarning:n,iconColorError:i,color:l,textColor:t,closeIconColor:a,closeIconColorHover:s,closeIconColorPressed:c,closeBorderRadius:g,closeColorHover:u,closeColorPressed:f,headerTextColor:d,descriptionTextColor:p,actionTextColor:t,boxShadow:S}}const Pv={name:"Notification",common:W,peers:{Scrollbar:et},self:Tv};function Iv(e){const{textColor1:t,dividerColor:o,fontWeightStrong:r}=e;return{textColor:t,color:o,fontWeight:r}}const Av={name:"Divider",common:W,self:Iv};function Lv(e){const{modalColor:t,textColor1:o,textColor2:r,boxShadow3:n,lineHeight:i,fontWeightStrong:l,dividerColor:a,closeColorHover:s,closeColorPressed:c,closeIconColor:u,closeIconColorHover:f,closeIconColorPressed:d,borderRadius:p,primaryColorHover:g}=e;return{bodyPadding:"16px 24px",borderRadius:p,headerPadding:"16px 24px",footerPadding:"16px 24px",color:t,textColor:r,titleTextColor:o,titleFontSize:"18px",titleFontWeight:l,boxShadow:n,lineHeight:i,headerBorderBottom:`1px solid ${a}`,footerBorderTop:`1px solid ${a}`,closeIconColor:u,closeIconColorHover:f,closeIconColorPressed:d,closeSize:"22px",closeIconSize:"18px",closeColorHover:s,closeColorPressed:c,closeBorderRadius:p,resizableTriggerColorHover:g}}const wv={name:"Drawer",common:W,peers:{Scrollbar:et},self:Lv};var Dv={actionMargin:"0 0 0 20px",actionMarginRtl:"0 20px 0 0"};const Rv={name:"DynamicInput",common:W,peers:{Input:Et,Button:ut},self(){return Dv}};var Fv={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"};const Xf={name:"Space",self(){return Fv}},Ov={name:"DynamicTags",common:W,peers:{Input:Et,Button:ut,Tag:$f,Space:Xf},self(){return{inputWidth:"64px"}}},Nv={name:"Element",common:W};var Mv={gapSmall:"4px 8px",gapMedium:"8px 12px",gapLarge:"12px 16px"};const kv={name:"Flex",self(){return Mv}},Hv={name:"ButtonGroup",common:W};var $v={feedbackPadding:"4px 0 0 2px",feedbackHeightSmall:"24px",feedbackHeightMedium:"24px",feedbackHeightLarge:"26px",feedbackFontSizeSmall:"13px",feedbackFontSizeMedium:"14px",feedbackFontSizeLarge:"14px",labelFontSizeLeftSmall:"14px",labelFontSizeLeftMedium:"14px",labelFontSizeLeftLarge:"15px",labelFontSizeTopSmall:"13px",labelFontSizeTopMedium:"14px",labelFontSizeTopLarge:"14px",labelHeightSmall:"24px",labelHeightMedium:"26px",labelHeightLarge:"28px",labelPaddingVertical:"0 0 6px 2px",labelPaddingHorizontal:"0 12px 0 0",labelTextAlignVertical:"left",labelTextAlignHorizontal:"right",labelFontWeight:"400"};function Bv(e){const{heightSmall:t,heightMedium:o,heightLarge:r,textColor1:n,errorColor:i,warningColor:l,lineHeight:a,textColor3:s}=e;return{...$v,blankHeightSmall:t,blankHeightMedium:o,blankHeightLarge:r,lineHeight:a,labelTextColor:n,asteriskColor:i,feedbackTextColorError:i,feedbackTextColorWarning:l,feedbackTextColor:s}}const Wv={name:"Form",common:W,self:Bv},zv={name:"GradientText",common:W,self(e){const{primaryColor:t,successColor:o,warningColor:r,errorColor:n,infoColor:i,primaryColorSuppl:l,successColorSuppl:a,warningColorSuppl:s,errorColorSuppl:c,infoColorSuppl:u,fontWeightStrong:f}=e;return{fontWeight:f,rotate:"252deg",colorStartPrimary:t,colorEndPrimary:l,colorStartInfo:i,colorEndInfo:u,colorStartWarning:r,colorEndWarning:s,colorStartError:n,colorEndError:c,colorStartSuccess:o,colorEndSuccess:a}}},Uv={name:"InputNumber",common:W,peers:{Button:ut,Input:Et},self(e){const{textColorDisabled:t}=e;return{iconColorDisabled:t}}};function Vv(){return{inputWidthSmall:"24px",inputWidthMedium:"30px",inputWidthLarge:"36px",gapSmall:"8px",gapMedium:"8px",gapLarge:"8px"}}const jv={name:"InputOtp",common:W,peers:{Input:Et},self:Vv},Gv={name:"Layout",common:W,peers:{Scrollbar:et},self(e){const{textColor2:t,bodyColor:o,popoverColor:r,cardColor:n,dividerColor:i,scrollbarColor:l,scrollbarColorHover:a}=e;return{textColor:t,textColorInverted:t,color:o,colorEmbedded:o,headerColor:n,headerColorInverted:n,footerColor:n,footerColorInverted:n,headerBorderColor:i,headerBorderColorInverted:i,footerBorderColor:i,footerBorderColorInverted:i,siderBorderColor:i,siderBorderColorInverted:i,siderColor:n,siderColorInverted:n,siderToggleButtonBorder:"1px solid transparent",siderToggleButtonColor:r,siderToggleButtonIconColor:t,siderToggleButtonIconColorInverted:t,siderToggleBarColor:Z(o,l),siderToggleBarColorHover:Z(o,a),__invertScrollbar:"false"}}};function Kv(e){const{textColor2:t,cardColor:o,modalColor:r,popoverColor:n,dividerColor:i,borderRadius:l,fontSize:a,hoverColor:s}=e;return{textColor:t,color:o,colorHover:s,colorModal:r,colorHoverModal:Z(r,s),colorPopover:n,colorHoverPopover:Z(n,s),borderColor:i,borderColorModal:Z(r,i),borderColorPopover:Z(n,i),borderRadius:l,fontSize:a}}const Yv={name:"List",common:W,self:Kv},qv={name:"Log",common:W,peers:{Scrollbar:et,Code:zf},self(e){const{textColor2:t,inputColor:o,fontSize:r,primaryColor:n}=e;return{loaderFontSize:r,loaderTextColor:t,loaderColor:o,loaderBorder:"1px solid #0000",loadingColor:n}}},Xv={name:"Mention",common:W,peers:{InternalSelectMenu:gn,Input:Et},self(e){const{boxShadow2:t}=e;return{menuBoxShadow:t}}};function Jv(e,t,o,r){return{itemColorHoverInverted:"#0000",itemColorActiveInverted:t,itemColorActiveHoverInverted:t,itemColorActiveCollapsedInverted:t,itemTextColorInverted:e,itemTextColorHoverInverted:o,itemTextColorChildActiveInverted:o,itemTextColorChildActiveHoverInverted:o,itemTextColorActiveInverted:o,itemTextColorActiveHoverInverted:o,itemTextColorHorizontalInverted:e,itemTextColorHoverHorizontalInverted:o,itemTextColorChildActiveHorizontalInverted:o,itemTextColorChildActiveHoverHorizontalInverted:o,itemTextColorActiveHorizontalInverted:o,itemTextColorActiveHoverHorizontalInverted:o,itemIconColorInverted:e,itemIconColorHoverInverted:o,itemIconColorActiveInverted:o,itemIconColorActiveHoverInverted:o,itemIconColorChildActiveInverted:o,itemIconColorChildActiveHoverInverted:o,itemIconColorCollapsedInverted:e,itemIconColorHorizontalInverted:e,itemIconColorHoverHorizontalInverted:o,itemIconColorActiveHorizontalInverted:o,itemIconColorActiveHoverHorizontalInverted:o,itemIconColorChildActiveHorizontalInverted:o,itemIconColorChildActiveHoverHorizontalInverted:o,arrowColorInverted:e,arrowColorHoverInverted:o,arrowColorActiveInverted:o,arrowColorActiveHoverInverted:o,arrowColorChildActiveInverted:o,arrowColorChildActiveHoverInverted:o,groupTextColorInverted:r}}function Qv(e){const{borderRadius:t,textColor3:o,primaryColor:r,textColor2:n,textColor1:i,fontSize:l,dividerColor:a,hoverColor:s,primaryColorHover:c}=e;return{borderRadius:t,color:"#0000",groupTextColor:o,itemColorHover:s,itemColorActive:J(r,{alpha:.1}),itemColorActiveHover:J(r,{alpha:.1}),itemColorActiveCollapsed:J(r,{alpha:.1}),itemTextColor:n,itemTextColorHover:n,itemTextColorActive:r,itemTextColorActiveHover:r,itemTextColorChildActive:r,itemTextColorChildActiveHover:r,itemTextColorHorizontal:n,itemTextColorHoverHorizontal:c,itemTextColorActiveHorizontal:r,itemTextColorActiveHoverHorizontal:r,itemTextColorChildActiveHorizontal:r,itemTextColorChildActiveHoverHorizontal:r,itemIconColor:i,itemIconColorHover:i,itemIconColorActive:r,itemIconColorActiveHover:r,itemIconColorChildActive:r,itemIconColorChildActiveHover:r,itemIconColorCollapsed:i,itemIconColorHorizontal:i,itemIconColorHoverHorizontal:c,itemIconColorActiveHorizontal:r,itemIconColorActiveHoverHorizontal:r,itemIconColorChildActiveHorizontal:r,itemIconColorChildActiveHoverHorizontal:r,itemHeight:"42px",arrowColor:n,arrowColorHover:n,arrowColorActive:r,arrowColorActiveHover:r,arrowColorChildActive:r,arrowColorChildActiveHover:r,colorInverted:"#0000",borderColorHorizontal:"#0000",fontSize:l,dividerColor:a,...Jv("#BBB",r,"#FFF","#AAA")}}const Zv={name:"Menu",common:W,peers:{Tooltip:yi,Dropdown:da},self(e){const{primaryColor:t,primaryColorSuppl:o}=e,r=Qv(e);return r.itemColorActive=J(t,{alpha:.15}),r.itemColorActiveHover=J(t,{alpha:.15}),r.itemColorActiveCollapsed=J(t,{alpha:.15}),r.itemColorActiveInverted=o,r.itemColorActiveHoverInverted=o,r.itemColorActiveCollapsedInverted=o,r}};var e0={iconSize:"22px"};function t0(e){const{fontSize:t,warningColor:o}=e;return{...e0,fontSize:t,iconColor:o}}const o0={name:"Popconfirm",common:W,peers:{Button:ut,Popover:nr},self:t0};function r0(e){const{infoColor:t,successColor:o,warningColor:r,errorColor:n,textColor2:i,progressRailColor:l,fontSize:a,fontWeight:s}=e;return{fontSize:a,fontSizeCircle:"28px",fontWeightCircle:s,railColor:l,railHeight:"8px",iconSizeCircle:"36px",iconSizeLine:"18px",iconColor:t,iconColorInfo:t,iconColorSuccess:o,iconColorWarning:r,iconColorError:n,textColorCircle:i,textColorLineInner:"rgb(255, 255, 255)",textColorLineOuter:i,fillColor:t,fillColorInfo:t,fillColorSuccess:o,fillColorWarning:r,fillColorError:n,lineBgProcessing:"linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)"}}const Jf={name:"Progress",common:W,self(e){const t=r0(e);return t.textColorLineInner="rgb(0, 0, 0)",t.lineBgProcessing="linear-gradient(90deg, rgba(255, 255, 255, .3) 0%, rgba(255, 255, 255, .5) 100%)",t}},n0={name:"Rate",common:W,self(e){const{railColor:t}=e;return{itemColor:t,itemColorActive:"#CCAA33",itemSize:"20px",sizeSmall:"16px",sizeMedium:"20px",sizeLarge:"24px"}}};var i0={titleFontSizeSmall:"26px",titleFontSizeMedium:"32px",titleFontSizeLarge:"40px",titleFontSizeHuge:"48px",fontSizeSmall:"14px",fontSizeMedium:"14px",fontSizeLarge:"15px",fontSizeHuge:"16px",iconSizeSmall:"64px",iconSizeMedium:"80px",iconSizeLarge:"100px",iconSizeHuge:"125px",iconColor418:void 0,iconColor404:void 0,iconColor403:void 0,iconColor500:void 0};function l0(e){const{textColor2:t,textColor1:o,errorColor:r,successColor:n,infoColor:i,warningColor:l,lineHeight:a,fontWeightStrong:s}=e;return{...i0,lineHeight:a,titleFontWeight:s,titleTextColor:o,textColor:t,iconColorError:r,iconColorSuccess:n,iconColorInfo:i,iconColorWarning:l}}const a0={name:"Result",common:W,self:l0};var s0={railHeight:"4px",railWidthVertical:"4px",handleSize:"18px",dotHeight:"8px",dotWidth:"8px",dotBorderRadius:"4px"};const c0={name:"Slider",common:W,self(e){const t="0 2px 8px 0 rgba(0, 0, 0, 0.12)",{railColor:o,modalColor:r,primaryColorSuppl:n,popoverColor:i,textColor2:l,cardColor:a,borderRadius:s,fontSize:c,opacityDisabled:u}=e;return{...s0,fontSize:c,markFontSize:c,railColor:o,railColorHover:o,fillColor:n,fillColorHover:n,opacityDisabled:u,handleColor:"#FFF",dotColor:a,dotColorModal:r,dotColorPopover:i,handleBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowHover:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowActive:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",handleBoxShadowFocus:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",indicatorColor:i,indicatorBoxShadow:t,indicatorTextColor:l,indicatorBorderRadius:s,dotBorder:`2px solid ${o}`,dotBorderActive:`2px solid ${n}`,dotBoxShadow:""}}};function u0(e){const{opacityDisabled:t,heightTiny:o,heightSmall:r,heightMedium:n,heightLarge:i,heightHuge:l,primaryColor:a,fontSize:s}=e;return{fontSize:s,textColor:a,sizeTiny:o,sizeSmall:r,sizeMedium:n,sizeLarge:i,sizeHuge:l,color:a,opacitySpinning:t}}const f0={name:"Spin",common:W,self:u0};function d0(e){const{textColor2:t,textColor3:o,fontSize:r,fontWeight:n}=e;return{labelFontSize:r,labelFontWeight:n,valueFontWeight:n,valueFontSize:"24px",labelTextColor:o,valuePrefixTextColor:t,valueSuffixTextColor:t,valueTextColor:t}}const p0={name:"Statistic",common:W,self:d0};var m0={stepHeaderFontSizeSmall:"14px",stepHeaderFontSizeMedium:"16px",indicatorIndexFontSizeSmall:"14px",indicatorIndexFontSizeMedium:"16px",indicatorSizeSmall:"22px",indicatorSizeMedium:"28px",indicatorIconSizeSmall:"14px",indicatorIconSizeMedium:"18px"};function h0(e){const{fontWeightStrong:t,baseColor:o,textColorDisabled:r,primaryColor:n,errorColor:i,textColor1:l,textColor2:a}=e;return{...m0,stepHeaderFontWeight:t,indicatorTextColorProcess:o,indicatorTextColorWait:r,indicatorTextColorFinish:n,indicatorTextColorError:i,indicatorBorderColorProcess:n,indicatorBorderColorWait:r,indicatorBorderColorFinish:n,indicatorBorderColorError:i,indicatorColorProcess:n,indicatorColorWait:"#0000",indicatorColorFinish:"#0000",indicatorColorError:"#0000",splitorColorProcess:r,splitorColorWait:r,splitorColorFinish:n,splitorColorError:r,headerTextColorProcess:l,headerTextColorWait:r,headerTextColorFinish:r,headerTextColorError:i,descriptionTextColorProcess:a,descriptionTextColorWait:r,descriptionTextColorFinish:r,descriptionTextColorError:i}}const g0={name:"Steps",common:W,self:h0};var C0={buttonHeightSmall:"14px",buttonHeightMedium:"18px",buttonHeightLarge:"22px",buttonWidthSmall:"14px",buttonWidthMedium:"18px",buttonWidthLarge:"22px",buttonWidthPressedSmall:"20px",buttonWidthPressedMedium:"24px",buttonWidthPressedLarge:"28px",railHeightSmall:"18px",railHeightMedium:"22px",railHeightLarge:"26px",railWidthSmall:"32px",railWidthMedium:"40px",railWidthLarge:"48px"};const b0={name:"Switch",common:W,self(e){const{primaryColorSuppl:t,opacityDisabled:o,borderRadius:r,primaryColor:n,textColor2:i,baseColor:l}=e;return{...C0,iconColor:l,textColor:i,loadingColor:t,opacityDisabled:o,railColor:"rgba(255, 255, 255, .20)",railColorActive:t,buttonBoxShadow:"0px 2px 4px 0 rgba(0, 0, 0, 0.4)",buttonColor:"#FFF",railBorderRadiusSmall:r,railBorderRadiusMedium:r,railBorderRadiusLarge:r,buttonBorderRadiusSmall:r,buttonBorderRadiusMedium:r,buttonBorderRadiusLarge:r,boxShadowFocus:`0 0 8px 0 ${J(n,{alpha:.3})}`}}};var x0={thPaddingSmall:"6px",thPaddingMedium:"12px",thPaddingLarge:"12px",tdPaddingSmall:"6px",tdPaddingMedium:"12px",tdPaddingLarge:"12px"};function _0(e){const{dividerColor:t,cardColor:o,modalColor:r,popoverColor:n,tableHeaderColor:i,tableColorStriped:l,textColor1:a,textColor2:s,borderRadius:c,fontWeightStrong:u,lineHeight:f,fontSizeSmall:d,fontSizeMedium:p,fontSizeLarge:g}=e;return{...x0,fontSizeSmall:d,fontSizeMedium:p,fontSizeLarge:g,lineHeight:f,borderRadius:c,borderColor:Z(o,t),borderColorModal:Z(r,t),borderColorPopover:Z(n,t),tdColor:o,tdColorModal:r,tdColorPopover:n,tdColorStriped:Z(o,l),tdColorStripedModal:Z(r,l),tdColorStripedPopover:Z(n,l),thColor:Z(o,i),thColorModal:Z(r,i),thColorPopover:Z(n,i),thTextColor:a,tdTextColor:s,thFontWeight:u}}const v0={name:"Table",common:W,self:_0};var S0={tabFontSizeSmall:"14px",tabFontSizeMedium:"14px",tabFontSizeLarge:"16px",tabGapSmallLine:"36px",tabGapMediumLine:"36px",tabGapLargeLine:"36px",tabGapSmallLineVertical:"8px",tabGapMediumLineVertical:"8px",tabGapLargeLineVertical:"8px",tabPaddingSmallLine:"6px 0",tabPaddingMediumLine:"10px 0",tabPaddingLargeLine:"14px 0",tabPaddingVerticalSmallLine:"6px 12px",tabPaddingVerticalMediumLine:"8px 16px",tabPaddingVerticalLargeLine:"10px 20px",tabGapSmallBar:"36px",tabGapMediumBar:"36px",tabGapLargeBar:"36px",tabGapSmallBarVertical:"8px",tabGapMediumBarVertical:"8px",tabGapLargeBarVertical:"8px",tabPaddingSmallBar:"4px 0",tabPaddingMediumBar:"6px 0",tabPaddingLargeBar:"10px 0",tabPaddingVerticalSmallBar:"6px 12px",tabPaddingVerticalMediumBar:"8px 16px",tabPaddingVerticalLargeBar:"10px 20px",tabGapSmallCard:"4px",tabGapMediumCard:"4px",tabGapLargeCard:"4px",tabGapSmallCardVertical:"4px",tabGapMediumCardVertical:"4px",tabGapLargeCardVertical:"4px",tabPaddingSmallCard:"8px 16px",tabPaddingMediumCard:"10px 20px",tabPaddingLargeCard:"12px 24px",tabPaddingSmallSegment:"4px 0",tabPaddingMediumSegment:"6px 0",tabPaddingLargeSegment:"8px 0",tabPaddingVerticalLargeSegment:"0 8px",tabPaddingVerticalSmallCard:"8px 12px",tabPaddingVerticalMediumCard:"10px 16px",tabPaddingVerticalLargeCard:"12px 20px",tabPaddingVerticalSmallSegment:"0 4px",tabPaddingVerticalMediumSegment:"0 6px",tabGapSmallSegment:"0",tabGapMediumSegment:"0",tabGapLargeSegment:"0",tabGapSmallSegmentVertical:"0",tabGapMediumSegmentVertical:"0",tabGapLargeSegmentVertical:"0",panePaddingSmall:"8px 0 0 0",panePaddingMedium:"12px 0 0 0",panePaddingLarge:"16px 0 0 0",closeSize:"18px",closeIconSize:"14px"};function y0(e){const{textColor2:t,primaryColor:o,textColorDisabled:r,closeIconColor:n,closeIconColorHover:i,closeIconColorPressed:l,closeColorHover:a,closeColorPressed:s,tabColor:c,baseColor:u,dividerColor:f,fontWeight:d,textColor1:p,borderRadius:g,fontSize:C,fontWeightStrong:S}=e;return{...S0,colorSegment:c,tabFontSizeCard:C,tabTextColorLine:p,tabTextColorActiveLine:o,tabTextColorHoverLine:o,tabTextColorDisabledLine:r,tabTextColorSegment:p,tabTextColorActiveSegment:t,tabTextColorHoverSegment:t,tabTextColorDisabledSegment:r,tabTextColorBar:p,tabTextColorActiveBar:o,tabTextColorHoverBar:o,tabTextColorDisabledBar:r,tabTextColorCard:p,tabTextColorHoverCard:p,tabTextColorActiveCard:o,tabTextColorDisabledCard:r,barColor:o,closeIconColor:n,closeIconColorHover:i,closeIconColorPressed:l,closeColorHover:a,closeColorPressed:s,closeBorderRadius:g,tabColor:c,tabColorSegment:u,tabBorderColor:f,tabFontWeightActive:d,tabFontWeight:d,tabBorderRadius:g,paneTextColor:t,fontWeightStrong:S}}const E0={name:"Tabs",common:W,peers:{Button:ut},self(e){const t=y0(e),{inputColor:o}=e;return t.colorSegment=o,t.tabColorSegment=o,t}};function T0(e){const{textColor1:t,textColor2:o,fontWeightStrong:r,fontSize:n}=e;return{fontSize:n,titleTextColor:t,textColor:o,titleFontWeight:r}}const P0={name:"Thing",common:W,self:T0};var I0={titleMarginMedium:"0 0 6px 0",titleMarginLarge:"-2px 0 6px 0",titleFontSizeMedium:"14px",titleFontSizeLarge:"16px",iconSizeMedium:"14px",iconSizeLarge:"14px"};const A0={name:"Timeline",common:W,self(e){const{textColor3:t,infoColorSuppl:o,errorColorSuppl:r,successColorSuppl:n,warningColorSuppl:i,textColor1:l,textColor2:a,railColor:s,fontWeightStrong:c,fontSize:u}=e;return{...I0,contentFontSize:u,titleFontWeight:c,circleBorder:`2px solid ${t}`,circleBorderInfo:`2px solid ${o}`,circleBorderError:`2px solid ${r}`,circleBorderSuccess:`2px solid ${n}`,circleBorderWarning:`2px solid ${i}`,iconColor:t,iconColorInfo:o,iconColorError:r,iconColorSuccess:n,iconColorWarning:i,titleTextColor:l,contentTextColor:a,metaTextColor:t,lineColor:s}}};var L0={extraFontSizeSmall:"12px",extraFontSizeMedium:"12px",extraFontSizeLarge:"14px",titleFontSizeSmall:"14px",titleFontSizeMedium:"16px",titleFontSizeLarge:"16px",closeSize:"20px",closeIconSize:"16px",headerHeightSmall:"44px",headerHeightMedium:"44px",headerHeightLarge:"50px"};const w0={name:"Transfer",common:W,peers:{Checkbox:Tr,Scrollbar:et,Input:Et,Empty:rr,Button:ut},self(e){const{fontWeight:t,fontSizeLarge:o,fontSizeMedium:r,fontSizeSmall:n,heightLarge:i,heightMedium:l,borderRadius:a,inputColor:s,tableHeaderColor:c,textColor1:u,textColorDisabled:f,textColor2:d,textColor3:p,hoverColor:g,closeColorHover:C,closeColorPressed:S,closeIconColor:E,closeIconColorHover:T,closeIconColorPressed:v,dividerColor:y}=e;return{...L0,itemHeightSmall:l,itemHeightMedium:l,itemHeightLarge:i,fontSizeSmall:n,fontSizeMedium:r,fontSizeLarge:o,borderRadius:a,dividerColor:y,borderColor:"#0000",listColor:s,headerColor:c,titleTextColor:u,titleTextColorDisabled:f,extraTextColor:p,extraTextColorDisabled:f,itemTextColor:d,itemTextColorDisabled:f,itemColorPending:g,titleFontWeight:t,closeColorHover:C,closeColorPressed:S,closeIconColor:E,closeIconColorHover:T,closeIconColorPressed:v}}};function D0(e){const{borderRadiusSmall:t,dividerColor:o,hoverColor:r,pressedColor:n,primaryColor:i,textColor3:l,textColor2:a,textColorDisabled:s,fontSize:c}=e;return{fontSize:c,lineHeight:"1.5",nodeHeight:"30px",nodeWrapperPadding:"3px 0",nodeBorderRadius:t,nodeColorHover:r,nodeColorPressed:n,nodeColorActive:J(i,{alpha:.1}),arrowColor:l,nodeTextColor:a,nodeTextColorDisabled:s,loadingColor:i,dropMarkColor:i,lineColor:o}}const Qf={name:"Tree",common:W,peers:{Checkbox:Tr,Scrollbar:et,Empty:rr},self(e){const{primaryColor:t}=e,o=D0(e);return o.nodeColorActive=J(t,{alpha:.15}),o}},R0={name:"TreeSelect",common:W,peers:{Tree:Qf,Empty:rr,InternalSelection:fa}};var F0={headerFontSize1:"30px",headerFontSize2:"22px",headerFontSize3:"18px",headerFontSize4:"16px",headerFontSize5:"16px",headerFontSize6:"16px",headerMargin1:"28px 0 20px 0",headerMargin2:"28px 0 20px 0",headerMargin3:"28px 0 20px 0",headerMargin4:"28px 0 18px 0",headerMargin5:"28px 0 18px 0",headerMargin6:"28px 0 18px 0",headerPrefixWidth1:"16px",headerPrefixWidth2:"16px",headerPrefixWidth3:"12px",headerPrefixWidth4:"12px",headerPrefixWidth5:"12px",headerPrefixWidth6:"12px",headerBarWidth1:"4px",headerBarWidth2:"4px",headerBarWidth3:"3px",headerBarWidth4:"3px",headerBarWidth5:"3px",headerBarWidth6:"3px",pMargin:"16px 0 16px 0",liMargin:".25em 0 0 0",olPadding:"0 0 0 2em",ulPadding:"0 0 0 2em"};function O0(e){const{primaryColor:t,textColor2:o,borderColor:r,lineHeight:n,fontSize:i,borderRadiusSmall:l,dividerColor:a,fontWeightStrong:s,textColor1:c,textColor3:u,infoColor:f,warningColor:d,errorColor:p,successColor:g,codeColor:C}=e;return{...F0,aTextColor:t,blockquoteTextColor:o,blockquotePrefixColor:r,blockquoteLineHeight:n,blockquoteFontSize:i,codeBorderRadius:l,liTextColor:o,liLineHeight:n,liFontSize:i,hrColor:a,headerFontWeight:s,headerTextColor:c,pTextColor:o,pTextColor1Depth:c,pTextColor2Depth:o,pTextColor3Depth:u,pLineHeight:n,pFontSize:i,headerBarColor:t,headerBarColorPrimary:t,headerBarColorInfo:f,headerBarColorError:p,headerBarColorWarning:d,headerBarColorSuccess:g,textColor:o,textColor1Depth:c,textColor2Depth:o,textColor3Depth:u,textColorPrimary:t,textColorInfo:f,textColorSuccess:g,textColorWarning:d,textColorError:p,codeTextColor:o,codeColor:C,codeBorder:"1px solid #0000"}}const N0={name:"Typography",common:W,self:O0};function M0(e){const{iconColor:t,primaryColor:o,errorColor:r,textColor2:n,successColor:i,opacityDisabled:l,actionColor:a,borderColor:s,hoverColor:c,lineHeight:u,borderRadius:f,fontSize:d}=e;return{fontSize:d,lineHeight:u,borderRadius:f,draggerColor:a,draggerBorder:`1px dashed ${s}`,draggerBorderHover:`1px dashed ${o}`,itemColorHover:c,itemColorHoverError:J(r,{alpha:.06}),itemTextColor:n,itemTextColorError:r,itemTextColorSuccess:i,itemIconColor:t,itemDisabledOpacity:l,itemBorderImageCardError:`1px solid ${r}`,itemBorderImageCard:`1px solid ${s}`}}const k0={name:"Upload",common:W,peers:{Button:ut,Progress:Jf},self(e){const{errorColor:t}=e,o=M0(e);return o.itemColorHoverError=J(t,{alpha:.09}),o}},H0={name:"Watermark",common:W,self(e){const{fontFamily:t}=e;return{fontFamily:t}}};function $0(e){const{borderRadius:t,fontSizeMini:o,fontSizeTiny:r,fontSizeSmall:n,fontWeight:i,textColor2:l,cardColor:a,buttonColor2Hover:s}=e;return{activeColors:["#9be9a8","#40c463","#30a14e","#216e39"],borderRadius:t,borderColor:a,textColor:l,mininumColor:s,fontWeight:i,loadingColorStart:"rgba(0, 0, 0, 0.06)",loadingColorEnd:"rgba(0, 0, 0, 0.12)",rectSizeSmall:"10px",rectSizeMedium:"11px",rectSizeLarge:"12px",borderRadiusSmall:"2px",borderRadiusMedium:"2px",borderRadiusLarge:"2px",xGapSmall:"2px",xGapMedium:"3px",xGapLarge:"3px",yGapSmall:"2px",yGapMedium:"3px",yGapLarge:"3px",fontSizeSmall:r,fontSizeMedium:o,fontSizeLarge:n}}function B0(e){const{primaryColor:t,baseColor:o}=e;return{color:t,iconColor:o}}var W0={extraFontSize:"12px",width:"440px"};function z0(){return{}}var U0={titleFontSize:"18px",backSize:"22px"};function V0(e){const{textColor1:t,textColor2:o,textColor3:r,fontSize:n,fontWeightStrong:i,primaryColorHover:l,primaryColorPressed:a}=e;return{...U0,titleFontWeight:i,fontSize:n,titleTextColor:t,backColor:o,backColorHover:l,backColorPressed:a,subtitleTextColor:r}}const j0=()=>({}),G0={name:"AvatarGroup",common:W,peers:{Avatar:Bf},self:P_},K0={name:"Calendar",common:W,peers:{Button:ut},self:M_},Y0={name:"Carousel",common:W,self:$_},q0={name:"CollapseTransition",common:W,self:G_},X0={name:"ColorPicker",common:W,peers:{Input:Et,Button:ut},self:K_},J0={name:"Row",common:W},Q0={name:"PageHeader",common:W,self:V0},Z0={name:"FloatButton",common:W,self(e){const{popoverColor:t,textColor2:o,buttonColor2Hover:r,buttonColor2Pressed:n,primaryColor:i,primaryColorHover:l,primaryColorPressed:a,baseColor:s,borderRadius:c}=e;return{color:t,textColor:o,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)",boxShadowHover:"0 2px 12px 0px rgba(0, 0, 0, .18)",boxShadowPressed:"0 2px 12px 0px rgba(0, 0, 0, .18)",colorHover:r,colorPressed:n,colorPrimary:i,colorPrimaryHover:l,colorPrimaryPressed:a,textColorPrimary:s,borderRadiusSquare:c}}},eS={name:"IconWrapper",common:W,self:B0},tS={name:"Image",common:W,peers:{Tooltip:yi},self:e=>{const{textColor2:t}=e;return{toolbarIconColor:t,toolbarColor:"rgba(0, 0, 0, .35)",toolbarBoxShadow:"none",toolbarBorderRadius:"24px"}}},oS={name:"Transfer",common:W,peers:{Checkbox:Tr,Scrollbar:et,Input:Et,Empty:rr,Button:ut},self(e){const{iconColorDisabled:t,iconColor:o,fontWeight:r,fontSizeLarge:n,fontSizeMedium:i,fontSizeSmall:l,heightLarge:a,heightMedium:s,heightSmall:c,borderRadius:u,inputColor:f,tableHeaderColor:d,textColor1:p,textColorDisabled:g,textColor2:C,hoverColor:S}=e;return{...W0,itemHeightSmall:c,itemHeightMedium:s,itemHeightLarge:a,fontSizeSmall:l,fontSizeMedium:i,fontSizeLarge:n,borderRadius:u,borderColor:"#0000",listColor:f,headerColor:d,titleTextColor:p,titleTextColorDisabled:g,extraTextColor:C,filterDividerColor:"#0000",itemTextColor:C,itemTextColorDisabled:g,itemColorPending:S,titleFontWeight:r,iconColor:o,iconColorDisabled:t}}},rS={name:"Marquee",common:W,self:z0},nS={name:"QrCode",common:W,self:e=>({borderRadius:e.borderRadius})},iS={name:"Skeleton",common:W,self(e){const{heightSmall:t,heightMedium:o,heightLarge:r,borderRadius:n}=e;return{color:"rgba(255, 255, 255, 0.12)",colorEnd:"rgba(255, 255, 255, 0.18)",borderRadius:n,heightSmall:t,heightMedium:o,heightLarge:r}}},lS={name:"Split",common:W},aS={name:"Equation",common:W,self:j0},sS={name:"FloatButtonGroup",common:W,self(e){const{popoverColor:t,dividerColor:o,borderRadius:r}=e;return{color:t,buttonBorderColor:o,borderRadiusSquare:r,boxShadow:"0 2px 8px 0px rgba(0, 0, 0, .12)"}}},cS={name:"Heatmap",common:W,self(e){return{...$0(e),activeColors:["#0d4429","#006d32","#26a641","#39d353"],mininumColor:"rgba(255, 255, 255, 0.1)",loadingColorStart:"rgba(255, 255, 255, 0.12)",loadingColorEnd:"rgba(255, 255, 255, 0.18)"}}},uS={name:"dark",common:W,Alert:C_,Anchor:__,AutoComplete:E_,Avatar:Bf,AvatarGroup:G0,BackTop:A_,Badge:L_,Breadcrumb:R_,Button:ut,ButtonGroup:Hv,Calendar:K0,Card:Wf,Carousel:Y0,Cascader:U_,Checkbox:Tr,Code:zf,Collapse:j_,CollapseTransition:q0,ColorPicker:X0,DataTable:iv,DatePicker:dv,Descriptions:hv,Dialog:qf,Divider:Av,Drawer:wv,Dropdown:da,DynamicInput:Rv,DynamicTags:Ov,Element:Nv,Empty:rr,Ellipsis:Kf,Equation:aS,Flex:kv,Form:Wv,GradientText:zv,Heatmap:cS,Icon:av,IconWrapper:eS,Image:tS,Input:Et,InputNumber:Uv,InputOtp:jv,LegacyTransfer:oS,Layout:Gv,List:Yv,LoadingBar:_v,Log:qv,Menu:Zv,Mention:Xv,Message:yv,Modal:xv,Notification:Pv,PageHeader:Q0,Pagination:jf,Popconfirm:o0,Popover:nr,Popselect:Uf,Progress:Jf,QrCode:nS,Radio:Gf,Rate:n0,Result:a0,Row:J0,Scrollbar:et,Select:Vf,Skeleton:iS,Slider:c0,Space:Xf,Spin:f0,Statistic:p0,Steps:g0,Switch:b0,Table:v0,Tabs:E0,Tag:$f,Thing:P0,TimePicker:Yf,Timeline:A0,Tooltip:yi,Transfer:w0,Tree:Qf,TreeSelect:R0,Typography:N0,Upload:k0,Watermark:H0,Split:lS,FloatButton:Z0,FloatButtonGroup:sS,Marquee:rS},Ei="".trim().replace(/\/+$/,"");function Zf(e){return`${Ei}${e}`}function fS(){return"/s/"}function dS(e,t){return`${(t?.trim()||location.origin).replace(/\/$/,"")}${fS()}${encodeURIComponent(e)}`}const ed={health:"/api/v1/health",publicConfig:"/api/v1/config",setup:"/setup",shareText:"/share/text",shareFile:"/share/file",shareMetadata:"/share/metadata",shareSelect:"/share/select",shareDownload:"/share/download",chunkInit:"/chunk/upload/init",chunkUpload:(e,t)=>`/chunk/upload/${encodeURIComponent(e)}/${t}`,chunkStatus:e=>`/chunk/upload/status/${encodeURIComponent(e)}`,chunkFinish:e=>`/chunk/upload/complete/${encodeURIComponent(e)}`,chunkCancel:e=>`/chunk/upload/${encodeURIComponent(e)}`,presignInit:"/presign/upload/init",presignProxyUpload:e=>`/presign/upload/proxy/${encodeURIComponent(e)}`,presignConfirm:e=>`/presign/upload/confirm/${encodeURIComponent(e)}`,presignStatus:e=>`/presign/upload/status/${encodeURIComponent(e)}`,presignCancel:e=>`/presign/upload/${encodeURIComponent(e)}`,adminLogin:"/admin/login",adminVerify:"/admin/verify",adminLogout:"/admin/logout",adminDashboard:"/admin/dashboard",adminFileList:"/admin/file/list",adminFileDelete:"/admin/file/delete",adminFileBatchDelete:"/admin/file/batch-delete",adminFileUpdate:"/admin/file/update",adminConfigGet:"/admin/config/get",adminConfigUpdate:"/admin/config/update",adminAuditList:"/admin/audit/list",adminPasswordUpdate:"/admin/settings/password",adminStorageSwitch:"/admin/storage/switch"};function pS(e){return`${Ei}/docs/api/${encodeURIComponent(e)}.md`}function mS(){return`${Ei}/docs/openapi.yaml`}const PT=Object.freeze(Object.defineProperty({__proto__:null,API_BASE:Ei,api:Zf,paths:ed,pickupPageUrl:dS,remoteDocUrl:pS,remoteOpenApiUrl:mS},Symbol.toStringTag,{value:"Module"}));class st extends Error{code;msg;httpStatus;constructor(t,o,r){super(o||`请求失败(${t})`),this.name="ApiError",this.code=t,this.msg=o||`请求失败(${t})`,this.httpStatus=r}}const Ll="fcb_admin_token";function td(){try{return localStorage.getItem(Ll)??""}catch{return""}}function od(e){try{e?localStorage.setItem(Ll,e):localStorage.removeItem(Ll)}catch{}}let pa=null;function hS(e){pa=e}function ma(e,t){const o=new URL(Zf(e),location.origin);if(t)for(const[r,n]of Object.entries(t))n!=null&&`${n}`!=""&&o.searchParams.set(r,`${n}`);return o.toString()}function rd(){const e=td();return e?{Authorization:`Bearer ${e}`}:{}}async function gS(e,t={}){const{method:o="GET",json:r,form:n,formData:i,query:l,timeout:a=3e4,signal:s}=t,c=new AbortController,u=setTimeout(()=>c.abort(new DOMException("请求超时","TimeoutError")),a);s&&s.addEventListener("abort",()=>c.abort(s.reason),{once:!0});const f={...rd()};r!==void 0&&(f["Content-Type"]="application/json");let d;r!==void 0?d=JSON.stringify(r):i?d=i:n&&(d=new URLSearchParams(n).toString(),f["Content-Type"]="application/x-www-form-urlencoded;charset=UTF-8");let p;try{p=await fetch(ma(e,l),{method:o,headers:f,body:d,signal:c.signal})}catch(S){throw S instanceof DOMException&&S.name==="TimeoutError"?new st(0,"请求超时,请检查网络或稍后重试"):new st(0,"网络异常,无法连接服务器")}finally{clearTimeout(u)}if(!(p.headers.get("content-type")??"").includes("application/json")){const S=await p.text().catch(()=>"");throw p.ok?new st(p.status,"响应格式异常(非 JSON)",p.status):new st(p.status,S.slice(0,200)||`请求失败(HTTP ${p.status})`,p.status)}let C;try{C=await p.json()}catch{throw new st(p.status,"响应 JSON 解析失败",p.status)}if(!p.ok||C.code!==200){const S=C.code??p.status;throw(S===401||p.status===401)&&(od(""),pa?.()),new st(S,C.msg||`请求失败(${S})`,p.status)}return C.data}async function IT(e,t={}){const{query:o,timeout:r=12e4}=t,n=new AbortController,i=setTimeout(()=>n.abort(new DOMException("请求超时","TimeoutError")),r);let l;try{l=await fetch(ma(e,o),{method:"GET",headers:rd(),signal:n.signal})}catch{throw new st(0,"网络异常,无法连接服务器")}finally{clearTimeout(i)}const a=l.headers.get("content-type")??"";if(a.includes("application/json"))try{const s=await l.json();throw new st(s.code??l.status,s.msg||"取件失败",l.status)}catch(s){throw s instanceof st?s:new st(l.status,"取件失败",l.status)}if(!l.ok)throw new st(l.status,`取件失败(HTTP ${l.status})`,l.status);return{blob:await l.blob(),contentType:a}}function AT(e,t,o,r=6e5){return new Promise((n,i)=>{const l=new XMLHttpRequest;l.open("POST",ma(e)),l.timeout=r;const a=td();a&&l.setRequestHeader("Authorization",`Bearer ${a}`),l.upload.onprogress=s=>{s.lengthComputable&&o&&o(Math.round(s.loaded/s.total*100))},l.onload=()=>{try{const s=JSON.parse(l.responseText);l.status>=200&&l.status<300&&s.code===200?n(s.data):((s.code===401||l.status===401)&&(od(""),pa?.()),i(new st(s.code??l.status,s.msg||`上传失败(HTTP ${l.status})`,l.status)))}catch{i(new st(l.status,`上传失败(HTTP ${l.status})`,l.status))}},l.onerror=()=>i(new st(0,"网络异常,上传失败")),l.ontimeout=()=>i(new st(0,"上传超时,请重试")),l.send(t)})}const Kn=typeof window<"u",Fo=(e,t=!1)=>t?Symbol.for(e):Symbol(e),CS=(e,t,o)=>bS({l:e,k:t,s:o}),bS=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),Me=e=>typeof e=="number"&&isFinite(e),xS=e=>id(e)==="[object Date]",wo=e=>id(e)==="[object RegExp]",Ti=e=>ae(e)&&Object.keys(e).length===0,Ge=Object.assign,_S=Object.create,ve=(e=null)=>_S(e);let Ys;const io=()=>Ys||(Ys=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:ve());function qs(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const vS=Object.prototype.hasOwnProperty;function Ot(e,t){return vS.call(e,t)}const Ae=Array.isArray,Pe=e=>typeof e=="function",K=e=>typeof e=="string",pe=e=>typeof e=="boolean",Ce=e=>e!==null&&typeof e=="object",SS=e=>Ce(e)&&Pe(e.then)&&Pe(e.catch),nd=Object.prototype.toString,id=e=>nd.call(e),ae=e=>{if(!Ce(e))return!1;const t=Object.getPrototypeOf(e);return t===null||t.constructor===Object},yS=e=>e==null?"":Ae(e)||ae(e)&&e.toString===nd?JSON.stringify(e,null,2):String(e);function ES(e,t=""){return e.reduce((o,r,n)=>n===0?o+r:o+t+r,"")}function Pi(e){let t=e;return()=>++t}function TS(e,t){typeof console<"u"&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}const Tn=e=>!Ce(e)||Ae(e);function wn(e,t){if(Tn(e)||Tn(t))throw new Error("Invalid value");const o=[{src:e,des:t}];for(;o.length;){const{src:r,des:n}=o.pop();Object.keys(r).forEach(i=>{i!=="__proto__"&&(Ce(r[i])&&!Ce(n[i])&&(n[i]=Array.isArray(r[i])?[]:ve()),Tn(n[i])||Tn(r[i])?n[i]=r[i]:o.push({src:r[i],des:n[i]}))})}}function PS(e,t,o){return{line:e,column:t,offset:o}}function Yn(e,t,o){return{start:e,end:t}}const IS=/\{([0-9a-zA-Z]+)\}/g;function ld(e,...t){return t.length===1&&AS(t[0])&&(t=t[0]),(!t||!t.hasOwnProperty)&&(t={}),e.replace(IS,(o,r)=>t.hasOwnProperty(r)?t[r]:"")}const ad=Object.assign,Xs=e=>typeof e=="string",AS=e=>e!==null&&typeof e=="object";function sd(e,t=""){return e.reduce((o,r,n)=>n===0?o+r:o+t+r,"")}const ha={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},LS={[ha.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function wS(e,t,...o){const r=ld(LS[e],...o||[]),n={message:String(r),code:e};return t&&(n.location=t),n}const ie={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},DS={[ie.EXPECTED_TOKEN]:"Expected token: '{0}'",[ie.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[ie.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[ie.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[ie.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[ie.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[ie.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[ie.EMPTY_PLACEHOLDER]:"Empty placeholder",[ie.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[ie.INVALID_LINKED_FORMAT]:"Invalid linked format",[ie.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[ie.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[ie.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[ie.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[ie.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[ie.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function Pr(e,t,o={}){const{domain:r,messages:n,args:i}=o,l=ld((n||DS)[e]||"",...i||[]),a=new SyntaxError(String(l));return a.code=e,t&&(a.location=t),a.domain=r,a}function RS(e){throw e}const Zt=" ",FS="\r",it=` `,OS="\u2028",NS="\u2029";function MS(e){const t=e;let o=0,r=1,n=1,i=0;const l=D=>t[D]===FS&&t[D+1]===it,a=D=>t[D]===it,s=D=>t[D]===NS,c=D=>t[D]===OS,u=D=>l(D)||a(D)||s(D)||c(D),f=()=>o,d=()=>r,p=()=>n,g=()=>i,C=D=>l(D)||s(D)||c(D)?it:t[D],S=()=>C(o),E=()=>C(o+i);function T(){return i=0,u(o)&&(r++,n=0),l(o)&&o++,o++,n++,t[o]}function v(){return l(o+i)&&i++,i++,t[o+i]}function y(){o=0,r=1,n=1,i=0}function L(D=0){i=D}function w(){const D=o+i;for(;D!==o;)T();i=0}return{index:f,line:d,column:p,peekOffset:g,charAt:C,currentChar:S,currentPeek:E,next:T,peek:v,reset:y,resetPeek:L,skipToPeek:w}}const bo=void 0,kS=".",Js="'",HS="tokenizer";function $S(e,t={}){const o=t.location!==!1,r=MS(e),n=()=>r.index(),i=()=>PS(r.line(),r.column(),r.index()),l=i(),a=n(),s={currentType:14,offset:a,startLoc:l,endLoc:l,lastType:14,lastOffset:a,lastStartLoc:l,lastEndLoc:l,braceNest:0,inLinked:!1,text:""},c=()=>s,{onError:u}=t;function f(m,h,A,...O){const j=c();if(h.column+=A,h.offset+=A,u){const B=o?Yn(j.startLoc,h):null,I=Pr(m,B,{domain:HS,args:O});u(I)}}function d(m,h,A){m.endLoc=i(),m.currentType=h;const O={type:h};return o&&(O.loc=Yn(m.startLoc,m.endLoc)),A!=null&&(O.value=A),O}const p=m=>d(m,14);function g(m,h){return m.currentChar()===h?(m.next(),h):(f(ie.EXPECTED_TOKEN,i(),0,h),"")}function C(m){let h="";for(;m.currentPeek()===Zt||m.currentPeek()===it;)h+=m.currentPeek(),m.peek();return h}function S(m){const h=C(m);return m.skipToPeek(),h}function E(m){if(m===bo)return!1;const h=m.charCodeAt(0);return h>=97&&h<=122||h>=65&&h<=90||h===95}function T(m){if(m===bo)return!1;const h=m.charCodeAt(0);return h>=48&&h<=57}function v(m,h){const{currentType:A}=h;if(A!==2)return!1;C(m);const O=E(m.currentPeek());return m.resetPeek(),O}function y(m,h){const{currentType:A}=h;if(A!==2)return!1;C(m);const O=m.currentPeek()==="-"?m.peek():m.currentPeek(),j=T(O);return m.resetPeek(),j}function L(m,h){const{currentType:A}=h;if(A!==2)return!1;C(m);const O=m.currentPeek()===Js;return m.resetPeek(),O}function w(m,h){const{currentType:A}=h;if(A!==8)return!1;C(m);const O=m.currentPeek()===".";return m.resetPeek(),O}function D(m,h){const{currentType:A}=h;if(A!==9)return!1;C(m);const O=E(m.currentPeek());return m.resetPeek(),O}function F(m,h){const{currentType:A}=h;if(!(A===8||A===12))return!1;C(m);const O=m.currentPeek()===":";return m.resetPeek(),O}function P(m,h){const{currentType:A}=h;if(A!==10)return!1;const O=()=>{const B=m.currentPeek();return B==="{"?E(m.peek()):B==="@"||B==="%"||B==="|"||B===":"||B==="."||B===Zt||!B?!1:B===it?(m.peek(),O()):k(m,!1)},j=O();return m.resetPeek(),j}function U(m){C(m);const h=m.currentPeek()==="|";return m.resetPeek(),h}function X(m){const h=C(m),A=m.currentPeek()==="%"&&m.peek()==="{";return m.resetPeek(),{isModulo:A,hasSpace:h.length>0}}function k(m,h=!0){const A=(j=!1,B="",I=!1)=>{const M=m.currentPeek();return M==="{"?B==="%"?!1:j:M==="@"||!M?B==="%"?!0:j:M==="%"?(m.peek(),A(j,"%",!0)):M==="|"?B==="%"||I?!0:!(B===Zt||B===it):M===Zt?(m.peek(),A(!0,Zt,I)):M===it?(m.peek(),A(!0,it,I)):!0},O=A();return h&&m.resetPeek(),O}function Q(m,h){const A=m.currentChar();return A===bo?bo:h(A)?(m.next(),A):null}function me(m){const h=m.charCodeAt(0);return h>=97&&h<=122||h>=65&&h<=90||h>=48&&h<=57||h===95||h===36}function ye(m){return Q(m,me)}function se(m){const h=m.charCodeAt(0);return h>=97&&h<=122||h>=65&&h<=90||h>=48&&h<=57||h===95||h===36||h===45}function ne(m){return Q(m,se)}function de(m){const h=m.charCodeAt(0);return h>=48&&h<=57}function tt(m){return Q(m,de)}function ft(m){const h=m.charCodeAt(0);return h>=48&&h<=57||h>=65&&h<=70||h>=97&&h<=102}function Re(m){return Q(m,ft)}function Fe(m){let h="",A="";for(;h=tt(m);)A+=h;return A}function Tt(m){S(m);const h=m.currentChar();return h!=="%"&&f(ie.EXPECTED_TOKEN,i(),0,h),m.next(),"%"}function ht(m){let h="";for(;;){const A=m.currentChar();if(A==="{"||A==="}"||A==="@"||A==="|"||!A)break;if(A==="%")if(k(m))h+=A,m.next();else break;else if(A===Zt||A===it)if(k(m))h+=A,m.next();else{if(U(m))break;h+=A,m.next()}else h+=A,m.next()}return h}function gt(m){S(m);let h="",A="";for(;h=ne(m);)A+=h;return m.currentChar()===bo&&f(ie.UNTERMINATED_CLOSING_BRACE,i(),0),A}function We(m){S(m);let h="";return m.currentChar()==="-"?(m.next(),h+=`-${Fe(m)}`):h+=Fe(m),m.currentChar()===bo&&f(ie.UNTERMINATED_CLOSING_BRACE,i(),0),h}function H(m){return m!==Js&&m!==it}function Y(m){S(m),g(m,"'");let h="",A="";for(;h=Q(m,H);)h==="\\"?A+=G(m):A+=h;const O=m.currentChar();return O===it||O===bo?(f(ie.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,i(),0),O===it&&(m.next(),g(m,"'")),A):(g(m,"'"),A)}function G(m){const h=m.currentChar();switch(h){case"\\":case"'":return m.next(),`\\${h}`;case"u":return ee(m,h,4);case"U":return ee(m,h,6);default:return f(ie.UNKNOWN_ESCAPE_SEQUENCE,i(),0,h),""}}function ee(m,h,A){g(m,h);let O="";for(let j=0;j{const O=m.currentChar();return O==="{"||O==="%"||O==="@"||O==="|"||O==="("||O===")"||!O||O===Zt?A:(A+=O,m.next(),h(A))};return h("")}function R(m){S(m);const h=g(m,"|");return S(m),h}function $(m,h){let A=null;switch(m.currentChar()){case"{":return h.braceNest>=1&&f(ie.NOT_ALLOW_NEST_PLACEHOLDER,i(),0),m.next(),A=d(h,2,"{"),S(m),h.braceNest++,A;case"}":return h.braceNest>0&&h.currentType===2&&f(ie.EMPTY_PLACEHOLDER,i(),0),m.next(),A=d(h,3,"}"),h.braceNest--,h.braceNest>0&&S(m),h.inLinked&&h.braceNest===0&&(h.inLinked=!1),A;case"@":return h.braceNest>0&&f(ie.UNTERMINATED_CLOSING_BRACE,i(),0),A=N(m,h)||p(h),h.braceNest=0,A;default:{let j=!0,B=!0,I=!0;if(U(m))return h.braceNest>0&&f(ie.UNTERMINATED_CLOSING_BRACE,i(),0),A=d(h,1,R(m)),h.braceNest=0,h.inLinked=!1,A;if(h.braceNest>0&&(h.currentType===5||h.currentType===6||h.currentType===7))return f(ie.UNTERMINATED_CLOSING_BRACE,i(),0),h.braceNest=0,V(m,h);if(j=v(m,h))return A=d(h,5,gt(m)),S(m),A;if(B=y(m,h))return A=d(h,6,We(m)),S(m),A;if(I=L(m,h))return A=d(h,7,Y(m)),S(m),A;if(!j&&!B&&!I)return A=d(h,13,b(m)),f(ie.INVALID_TOKEN_IN_PLACEHOLDER,i(),0,A.value),S(m),A;break}}return A}function N(m,h){const{currentType:A}=h;let O=null;const j=m.currentChar();switch((A===8||A===9||A===12||A===10)&&(j===it||j===Zt)&&f(ie.INVALID_LINKED_FORMAT,i(),0),j){case"@":return m.next(),O=d(h,8,"@"),h.inLinked=!0,O;case".":return S(m),m.next(),d(h,9,".");case":":return S(m),m.next(),d(h,10,":");default:return U(m)?(O=d(h,1,R(m)),h.braceNest=0,h.inLinked=!1,O):w(m,h)||F(m,h)?(S(m),N(m,h)):D(m,h)?(S(m),d(h,12,_(m))):P(m,h)?(S(m),j==="{"?$(m,h)||O:d(h,11,x(m))):(A===8&&f(ie.INVALID_LINKED_FORMAT,i(),0),h.braceNest=0,h.inLinked=!1,V(m,h))}}function V(m,h){let A={type:14};if(h.braceNest>0)return $(m,h)||p(h);if(h.inLinked)return N(m,h)||p(h);switch(m.currentChar()){case"{":return $(m,h)||p(h);case"}":return f(ie.UNBALANCED_CLOSING_BRACE,i(),0),m.next(),d(h,3,"}");case"@":return N(m,h)||p(h);default:{if(U(m))return A=d(h,1,R(m)),h.braceNest=0,h.inLinked=!1,A;const{isModulo:j,hasSpace:B}=X(m);if(j)return B?d(h,0,ht(m)):d(h,4,Tt(m));if(k(m))return d(h,0,ht(m));break}}return A}function z(){const{currentType:m,offset:h,startLoc:A,endLoc:O}=s;return s.lastType=m,s.lastOffset=h,s.lastStartLoc=A,s.lastEndLoc=O,s.offset=n(),s.startLoc=i(),r.currentChar()===bo?d(s,14):V(r,s)}return{nextToken:z,currentOffset:n,currentPosition:i,context:c}}const BS="parser",WS=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function zS(e,t,o){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const r=parseInt(t||o,16);return r<=55295||r>=57344?String.fromCodePoint(r):"�"}}}function US(e={}){const t=e.location!==!1,{onError:o,onWarn:r}=e;function n(v,y,L,w,...D){const F=v.currentPosition();if(F.offset+=w,F.column+=w,o){const P=t?Yn(L,F):null,U=Pr(y,P,{domain:BS,args:D});o(U)}}function i(v,y,L,w,...D){const F=v.currentPosition();if(F.offset+=w,F.column+=w,r){const P=t?Yn(L,F):null;r(wS(y,P,D))}}function l(v,y,L){const w={type:v};return t&&(w.start=y,w.end=y,w.loc={start:L,end:L}),w}function a(v,y,L,w){t&&(v.end=y,v.loc&&(v.loc.end=L))}function s(v,y){const L=v.context(),w=l(3,L.offset,L.startLoc);return w.value=y,a(w,v.currentOffset(),v.currentPosition()),w}function c(v,y){const L=v.context(),{lastOffset:w,lastStartLoc:D}=L,F=l(5,w,D);return F.index=parseInt(y,10),v.nextToken(),a(F,v.currentOffset(),v.currentPosition()),F}function u(v,y,L){const w=v.context(),{lastOffset:D,lastStartLoc:F}=w,P=l(4,D,F);return P.key=y,L===!0&&(P.modulo=!0),v.nextToken(),a(P,v.currentOffset(),v.currentPosition()),P}function f(v,y){const L=v.context(),{lastOffset:w,lastStartLoc:D}=L,F=l(9,w,D);return F.value=y.replace(WS,zS),v.nextToken(),a(F,v.currentOffset(),v.currentPosition()),F}function d(v){const y=v.nextToken(),L=v.context(),{lastOffset:w,lastStartLoc:D}=L,F=l(8,w,D);return y.type!==12?(n(v,ie.UNEXPECTED_EMPTY_LINKED_MODIFIER,L.lastStartLoc,0),F.value="",a(F,w,D),{nextConsumeToken:y,node:F}):(y.value==null&&n(v,ie.UNEXPECTED_LEXICAL_ANALYSIS,L.lastStartLoc,0,wt(y)),F.value=y.value||"",a(F,v.currentOffset(),v.currentPosition()),{node:F})}function p(v,y){const L=v.context(),w=l(7,L.offset,L.startLoc);return w.value=y,a(w,v.currentOffset(),v.currentPosition()),w}function g(v){const y=v.context(),L=l(6,y.offset,y.startLoc);let w=v.nextToken();if(w.type===9){const D=d(v);L.modifier=D.node,w=D.nextConsumeToken||v.nextToken()}switch(w.type!==10&&n(v,ie.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,wt(w)),w=v.nextToken(),w.type===2&&(w=v.nextToken()),w.type){case 11:w.value==null&&n(v,ie.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,wt(w)),L.key=p(v,w.value||"");break;case 5:w.value==null&&n(v,ie.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,wt(w)),L.key=u(v,w.value||"");break;case 6:w.value==null&&n(v,ie.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,wt(w)),L.key=c(v,w.value||"");break;case 7:w.value==null&&n(v,ie.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,wt(w)),L.key=f(v,w.value||"");break;default:{n(v,ie.UNEXPECTED_EMPTY_LINKED_KEY,y.lastStartLoc,0);const D=v.context(),F=l(7,D.offset,D.startLoc);return F.value="",a(F,D.offset,D.startLoc),L.key=F,a(L,D.offset,D.startLoc),{nextConsumeToken:w,node:L}}}return a(L,v.currentOffset(),v.currentPosition()),{node:L}}function C(v){const y=v.context(),L=y.currentType===1?v.currentOffset():y.offset,w=y.currentType===1?y.endLoc:y.startLoc,D=l(2,L,w);D.items=[];let F=null,P=null;do{const k=F||v.nextToken();switch(F=null,k.type){case 0:k.value==null&&n(v,ie.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,wt(k)),D.items.push(s(v,k.value||""));break;case 6:k.value==null&&n(v,ie.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,wt(k)),D.items.push(c(v,k.value||""));break;case 4:P=!0;break;case 5:k.value==null&&n(v,ie.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,wt(k)),D.items.push(u(v,k.value||"",!!P)),P&&(i(v,ha.USE_MODULO_SYNTAX,y.lastStartLoc,0,wt(k)),P=null);break;case 7:k.value==null&&n(v,ie.UNEXPECTED_LEXICAL_ANALYSIS,y.lastStartLoc,0,wt(k)),D.items.push(f(v,k.value||""));break;case 8:{const Q=g(v);D.items.push(Q.node),F=Q.nextConsumeToken||null;break}}}while(y.currentType!==14&&y.currentType!==1);const U=y.currentType===1?y.lastOffset:v.currentOffset(),X=y.currentType===1?y.lastEndLoc:v.currentPosition();return a(D,U,X),D}function S(v,y,L,w){const D=v.context();let F=w.items.length===0;const P=l(1,y,L);P.cases=[],P.cases.push(w);do{const U=C(v);F||(F=U.items.length===0),P.cases.push(U)}while(D.currentType!==14);return F&&n(v,ie.MUST_HAVE_MESSAGES_IN_PLURAL,L,0),a(P,v.currentOffset(),v.currentPosition()),P}function E(v){const y=v.context(),{offset:L,startLoc:w}=y,D=C(v);return y.currentType===14?D:S(v,L,w,D)}function T(v){const y=$S(v,ad({},e)),L=y.context(),w=l(0,L.offset,L.startLoc);return t&&w.loc&&(w.loc.source=v),w.body=E(y),e.onCacheKey&&(w.cacheKey=e.onCacheKey(v)),L.currentType!==14&&n(y,ie.UNEXPECTED_LEXICAL_ANALYSIS,L.lastStartLoc,0,v[L.offset]||""),a(w,y.currentOffset(),y.currentPosition()),w}return{parse:T}}function wt(e){if(e.type===14)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function VS(e,t={}){const o={ast:e,helpers:new Set};return{context:()=>o,helper:i=>(o.helpers.add(i),i)}}function Qs(e,t){for(let o=0;oZs(o)),e}function Zs(e){if(e.items.length===1){const t=e.items[0];(t.type===3||t.type===9)&&(e.static=t.value,delete t.value)}else{const t=[];for(let o=0;ol;function s(C,S){l.code+=C}function c(C,S=!0){const E=S?r:"";s(n?E+" ".repeat(C):E)}function u(C=!0){const S=++l.indentLevel;C&&c(S)}function f(C=!0){const S=--l.indentLevel;C&&c(S)}function d(){c(l.indentLevel)}return{context:a,push:s,indent:u,deindent:f,newline:d,helper:C=>`_${C}`,needIndent:()=>l.needIndent}}function XS(e,t){const{helper:o}=e;e.push(`${o("linked")}(`),xr(e,t.key),t.modifier?(e.push(", "),xr(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function JS(e,t){const{helper:o,needIndent:r}=e;e.push(`${o("normalize")}([`),e.indent(r());const n=t.items.length;for(let i=0;i1){e.push(`${o("plural")}([`),e.indent(r());const n=t.cases.length;for(let i=0;i{const o=Xs(t.mode)?t.mode:"normal",r=Xs(t.filename)?t.filename:"message.intl";t.sourceMap;const n=t.breakLineCode!=null?t.breakLineCode:o==="arrow"?";":` -`,i=t.needIndent?t.needIndent:o!=="arrow",l=e.helpers||[],a=qS(e,{filename:r,breakLineCode:n,needIndent:i});a.push(o==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),a.indent(i),l.length>0&&(a.push(`const { ${sd(l.map(u=>`${u}: _${u}`),", ")} } = ctx`),a.newline()),a.push("return "),xr(a,e),a.deindent(i),a.push("}"),delete e.helpers;const{code:s,map:c}=a.context();return{ast:e,code:s,map:c?c.toJSON():void 0}};function ty(e,t={}){const o=ad({},t),r=!!o.jit,n=!!o.minify,i=o.optimize==null?!0:o.optimize,a=US(o).parse(e);return r?(i&&GS(a),n&&ur(a),{ast:a,code:""}):(jS(a,o),ey(a,o))}function oy(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(io().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(io().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(io().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function Kt(e){return Ce(e)&&Ca(e)===0&&(Ot(e,"b")||Ot(e,"body"))}const cd=["b","body"];function ry(e){return Oo(e,cd)}const ud=["c","cases"];function ny(e){return Oo(e,ud,[])}const fd=["s","static"];function iy(e){return Oo(e,fd)}const dd=["i","items"];function ly(e){return Oo(e,dd,[])}const pd=["t","type"];function Ca(e){return Oo(e,pd)}const md=["v","value"];function Pn(e,t){const o=Oo(e,md);if(o!=null)return o;throw an(t)}const hd=["m","modifier"];function ay(e){return Oo(e,hd)}const gd=["k","key"];function sy(e){const t=Oo(e,gd);if(t)return t;throw an(6)}function Oo(e,t,o){for(let r=0;r{l===void 0?l=a:l+=a},d[1]=()=>{l!==void 0&&(t.push(l),l=void 0)},d[2]=()=>{d[0](),n++},d[3]=()=>{if(n>0)n--,r=4,d[0]();else{if(n=0,l===void 0||(l=py(l),l===!1))return!1;d[1]()}};function p(){const g=e[o+1];if(r===5&&g==="'"||r===6&&g==='"')return o++,a="\\"+g,d[0](),!0}for(;r!==null;)if(o++,i=e[o],!(i==="\\"&&p())){if(s=dy(i),f=No[r],c=f[s]||f.l||8,c===8||(r=c[0],c[1]!==void 0&&(u=d[c[1]],u&&(a=i,u()===!1))))return;if(r===7)return t}}const ec=new Map;function hy(e,t){return Ce(e)?e[t]:null}function gy(e,t){if(!Ce(e))return null;let o=ec.get(t);if(o||(o=my(t),o&&ec.set(t,o)),!o)return null;const r=o.length;let n=e,i=0;for(;ie,by=e=>"",xy="text",_y=e=>e.length===0?"":ES(e),vy=yS;function tc(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function Sy(e){const t=Me(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(Me(e.named.count)||Me(e.named.n))?Me(e.named.count)?e.named.count:Me(e.named.n)?e.named.n:t:t}function yy(e,t){t.count||(t.count=e),t.n||(t.n=e)}function Ey(e={}){const t=e.locale,o=Sy(e),r=Ce(e.pluralRules)&&K(t)&&Pe(e.pluralRules[t])?e.pluralRules[t]:tc,n=Ce(e.pluralRules)&&K(t)&&Pe(e.pluralRules[t])?tc:void 0,i=E=>E[r(o,E.length,n)],l=e.list||[],a=E=>l[E],s=e.named||ve();Me(e.pluralIndex)&&yy(o,s);const c=E=>s[E];function u(E){const T=Pe(e.messages)?e.messages(E):Ce(e.messages)?e.messages[E]:!1;return T||(e.parent?e.parent.message(E):by)}const f=E=>e.modifiers?e.modifiers[E]:Cy,d=ae(e.processor)&&Pe(e.processor.normalize)?e.processor.normalize:_y,p=ae(e.processor)&&Pe(e.processor.interpolate)?e.processor.interpolate:vy,g=ae(e.processor)&&K(e.processor.type)?e.processor.type:xy,S={list:a,named:c,plural:i,linked:(E,...T)=>{const[v,y]=T;let L="text",w="";T.length===1?Ce(v)?(w=v.modifier||w,L=v.type||L):K(v)&&(w=v||w):T.length===2&&(K(v)&&(w=v||w),K(y)&&(L=y||L));const D=u(E)(S),F=L==="vnode"&&Ae(D)&&w?D[0]:D;return w?f(w)(F,L):F},message:u,type:g,interpolate:p,normalize:d,values:Ge(ve(),l,s)};return S}let sn=null;function Ty(e){sn=e}function Py(e,t,o){sn&&sn.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:o})}const Iy=Ay("function:translate");function Ay(e){return t=>sn&&sn.emit(e,t)}const Ly=ha.__EXTEND_POINT__,Wo=Pi(Ly),wy={FALLBACK_TO_TRANSLATE:Wo(),CANNOT_FORMAT_NUMBER:Wo(),FALLBACK_TO_NUMBER_FORMAT:Wo(),CANNOT_FORMAT_DATE:Wo(),FALLBACK_TO_DATE_FORMAT:Wo(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:Wo(),__EXTEND_POINT__:Wo()},bd=ie.__EXTEND_POINT__,zo=Pi(bd),Nt={INVALID_ARGUMENT:bd,INVALID_DATE_ARGUMENT:zo(),INVALID_ISO_DATE_ARGUMENT:zo(),NOT_SUPPORT_NON_STRING_MESSAGE:zo(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:zo(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:zo(),NOT_SUPPORT_LOCALE_TYPE:zo(),__EXTEND_POINT__:zo()};function jt(e){return Pr(e,null,void 0)}function ba(e,t){return t.locale!=null?oc(t.locale):oc(e.locale)}let Qi;function oc(e){if(K(e))return e;if(Pe(e)){if(e.resolvedOnce&&Qi!=null)return Qi;if(e.constructor.name==="Function"){const t=e();if(SS(t))throw jt(Nt.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Qi=t}else throw jt(Nt.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw jt(Nt.NOT_SUPPORT_LOCALE_TYPE)}function Dy(e,t,o){return[...new Set([o,...Ae(t)?t:Ce(t)?Object.keys(t):K(t)?[t]:[o]])]}function xd(e,t,o){const r=K(o)?o:_r,n=e;n.__localeChainCache||(n.__localeChainCache=new Map);let i=n.__localeChainCache.get(r);if(!i){i=[];let l=[o];for(;Ae(l);)l=rc(i,l,t);const a=Ae(t)||!ae(t)?t:t.default?t.default:null;l=K(a)?[a]:a,Ae(l)&&rc(i,l,!1),n.__localeChainCache.set(r,i)}return i}function rc(e,t,o){let r=!0;for(let n=0;n`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function Ny(){return{upper:(e,t)=>t==="text"&&K(e)?e.toUpperCase():t==="vnode"&&Ce(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&K(e)?e.toLowerCase():t==="vnode"&&Ce(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&K(e)?ic(e):t==="vnode"&&Ce(e)&&"__v_isVNode"in e?ic(e.children):e}}let _d;function lc(e){_d=e}let vd;function My(e){vd=e}let Sd;function ky(e){Sd=e}let yd=null;const Hy=e=>{yd=e},$y=()=>yd;let Ed=null;const ac=e=>{Ed=e},By=()=>Ed;let sc=0;function Wy(e={}){const t=Pe(e.onWarn)?e.onWarn:TS,o=K(e.version)?e.version:Oy,r=K(e.locale)||Pe(e.locale)?e.locale:_r,n=Pe(r)?_r:r,i=Ae(e.fallbackLocale)||ae(e.fallbackLocale)||K(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:n,l=ae(e.messages)?e.messages:Zi(n),a=ae(e.datetimeFormats)?e.datetimeFormats:Zi(n),s=ae(e.numberFormats)?e.numberFormats:Zi(n),c=Ge(ve(),e.modifiers,Ny()),u=e.pluralRules||ve(),f=Pe(e.missing)?e.missing:null,d=pe(e.missingWarn)||wo(e.missingWarn)?e.missingWarn:!0,p=pe(e.fallbackWarn)||wo(e.fallbackWarn)?e.fallbackWarn:!0,g=!!e.fallbackFormat,C=!!e.unresolving,S=Pe(e.postTranslation)?e.postTranslation:null,E=ae(e.processor)?e.processor:null,T=pe(e.warnHtmlMessage)?e.warnHtmlMessage:!0,v=!!e.escapeParameter,y=Pe(e.messageCompiler)?e.messageCompiler:_d,L=Pe(e.messageResolver)?e.messageResolver:vd||hy,w=Pe(e.localeFallbacker)?e.localeFallbacker:Sd||Dy,D=Ce(e.fallbackContext)?e.fallbackContext:void 0,F=e,P=Ce(F.__datetimeFormatters)?F.__datetimeFormatters:new Map,U=Ce(F.__numberFormatters)?F.__numberFormatters:new Map,X=Ce(F.__meta)?F.__meta:{};sc++;const k={version:o,cid:sc,locale:r,fallbackLocale:i,messages:l,modifiers:c,pluralRules:u,missing:f,missingWarn:d,fallbackWarn:p,fallbackFormat:g,unresolving:C,postTranslation:S,processor:E,warnHtmlMessage:T,escapeParameter:v,messageCompiler:y,messageResolver:L,localeFallbacker:w,fallbackContext:D,onWarn:t,__meta:X};return k.datetimeFormats=a,k.numberFormats=s,k.__datetimeFormatters=P,k.__numberFormatters=U,__INTLIFY_PROD_DEVTOOLS__&&Py(k,o,X),k}const Zi=e=>({[e]:ve()});function xa(e,t,o,r,n){const{missing:i,onWarn:l}=e;if(i!==null){const a=i(e,o,t,n);return K(a)?a:t}else return t}function Fr(e,t,o){const r=e;r.__localeChainCache=new Map,e.localeFallbacker(e,o,t)}function zy(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function Uy(e,t){const o=t.indexOf(e);if(o===-1)return!1;for(let r=o+1;rVy(o,e)}function Vy(e,t){const o=ry(t);if(o==null)throw an(0);if(Ca(o)===1){const i=ny(o);return e.plural(i.reduce((l,a)=>[...l,cc(e,a)],[]))}else return cc(e,o)}function cc(e,t){const o=iy(t);if(o!=null)return e.type==="text"?o:e.normalize([o]);{const r=ly(t).reduce((n,i)=>[...n,wl(e,i)],[]);return e.normalize(r)}}function wl(e,t){const o=Ca(t);switch(o){case 3:return Pn(t,o);case 9:return Pn(t,o);case 4:{const r=t;if(Ot(r,"k")&&r.k)return e.interpolate(e.named(r.k));if(Ot(r,"key")&&r.key)return e.interpolate(e.named(r.key));throw an(o)}case 5:{const r=t;if(Ot(r,"i")&&Me(r.i))return e.interpolate(e.list(r.i));if(Ot(r,"index")&&Me(r.index))return e.interpolate(e.list(r.index));throw an(o)}case 6:{const r=t,n=ay(r),i=sy(r);return e.linked(wl(e,i),n?wl(e,n):void 0,e.type)}case 7:return Pn(t,o);case 8:return Pn(t,o);default:throw new Error(`unhandled node on format message part: ${o}`)}}const Td=e=>e;let fr=ve();function Pd(e,t={}){let o=!1;const r=t.onError||RS;return t.onError=n=>{o=!0,r(n)},{...ty(e,t),detectError:o}}const jy=(e,t)=>{if(!K(e))throw jt(Nt.NOT_SUPPORT_NON_STRING_MESSAGE);{pe(t.warnHtmlMessage)&&t.warnHtmlMessage;const r=(t.onCacheKey||Td)(e),n=fr[r];if(n)return n;const{code:i,detectError:l}=Pd(e,t),a=new Function(`return ${i}`)();return l?a:fr[r]=a}};function Gy(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&K(e)){pe(t.warnHtmlMessage)&&t.warnHtmlMessage;const r=(t.onCacheKey||Td)(e),n=fr[r];if(n)return n;const{ast:i,detectError:l}=Pd(e,{...t,location:!1,jit:!0}),a=el(i);return l?a:fr[r]=a}else{const o=e.cacheKey;if(o){const r=fr[o];return r||(fr[o]=el(e))}else return el(e)}}const uc=()=>"",At=e=>Pe(e);function fc(e,...t){const{fallbackFormat:o,postTranslation:r,unresolving:n,messageCompiler:i,fallbackLocale:l,messages:a}=e,[s,c]=Dl(...t),u=pe(c.missingWarn)?c.missingWarn:e.missingWarn,f=pe(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,d=pe(c.escapeParameter)?c.escapeParameter:e.escapeParameter,p=!!c.resolvedMessage,g=K(c.default)||pe(c.default)?pe(c.default)?i?s:()=>s:c.default:o?i?s:()=>s:"",C=o||g!=="",S=ba(e,c);d&&Ky(c);let[E,T,v]=p?[s,S,a[S]||ve()]:Id(e,s,S,l,f,u),y=E,L=s;if(!p&&!(K(y)||Kt(y)||At(y))&&C&&(y=g,L=y),!p&&(!(K(y)||Kt(y)||At(y))||!K(T)))return n?Ii:s;let w=!1;const D=()=>{w=!0},F=At(y)?y:Ad(e,s,T,y,L,D);if(w)return y;const P=Xy(e,T,v,c),U=Ey(P),X=Yy(e,F,U),k=r?r(X,s):X;if(__INTLIFY_PROD_DEVTOOLS__){const Q={timestamp:Date.now(),key:K(s)?s:At(y)?y.key:"",locale:T||(At(y)?y.locale:""),format:K(y)?y:At(y)?y.source:"",message:k};Q.meta=Ge({},e.__meta,$y()||{}),Iy(Q)}return k}function Ky(e){Ae(e.list)?e.list=e.list.map(t=>K(t)?qs(t):t):Ce(e.named)&&Object.keys(e.named).forEach(t=>{K(e.named[t])&&(e.named[t]=qs(e.named[t]))})}function Id(e,t,o,r,n,i){const{messages:l,onWarn:a,messageResolver:s,localeFallbacker:c}=e,u=c(e,r,o);let f=ve(),d,p=null;const g="translate";for(let C=0;Cr);return c.locale=o,c.key=t,c}const s=l(r,qy(e,o,n,r,a,i));return s.locale=o,s.key=t,s.source=r,s}function Yy(e,t,o){return t(o)}function Dl(...e){const[t,o,r]=e,n=ve();if(!K(t)&&!Me(t)&&!At(t)&&!Kt(t))throw jt(Nt.INVALID_ARGUMENT);const i=Me(t)?String(t):(At(t),t);return Me(o)?n.plural=o:K(o)?n.default=o:ae(o)&&!Ti(o)?n.named=o:Ae(o)&&(n.list=o),Me(r)?n.plural=r:K(r)?n.default=r:ae(r)&&Ge(n,r),[i,n]}function qy(e,t,o,r,n,i){return{locale:t,key:o,warnHtmlMessage:n,onError:l=>{throw i&&i(l),l},onCacheKey:l=>CS(t,o,l)}}function Xy(e,t,o,r){const{modifiers:n,pluralRules:i,messageResolver:l,fallbackLocale:a,fallbackWarn:s,missingWarn:c,fallbackContext:u}=e,d={locale:t,modifiers:n,pluralRules:i,messages:p=>{let g=l(o,p);if(g==null&&u){const[,,C]=Id(u,p,t,a,s,c);g=l(C,p)}if(K(g)||Kt(g)){let C=!1;const E=Ad(e,p,t,g,p,()=>{C=!0});return C?uc:E}else return At(g)?g:uc}};return e.processor&&(d.processor=e.processor),r.list&&(d.list=r.list),r.named&&(d.named=r.named),Me(r.plural)&&(d.pluralIndex=r.plural),d}function dc(e,...t){const{datetimeFormats:o,unresolving:r,fallbackLocale:n,onWarn:i,localeFallbacker:l}=e,{__datetimeFormatters:a}=e,[s,c,u,f]=Rl(...t),d=pe(u.missingWarn)?u.missingWarn:e.missingWarn;pe(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const p=!!u.part,g=ba(e,u),C=l(e,n,g);if(!K(s)||s==="")return new Intl.DateTimeFormat(g,f).format(c);let S={},E,T=null;const v="datetime format";for(let w=0;w{Ld.includes(s)?l[s]=o[s]:i[s]=o[s]}),K(r)?i.locale=r:ae(r)&&(l=r),ae(n)&&(l=n),[i.key||"",a,i,l]}function pc(e,t,o){const r=e;for(const n in o){const i=`${t}__${n}`;r.__datetimeFormatters.has(i)&&r.__datetimeFormatters.delete(i)}}function mc(e,...t){const{numberFormats:o,unresolving:r,fallbackLocale:n,onWarn:i,localeFallbacker:l}=e,{__numberFormatters:a}=e,[s,c,u,f]=Fl(...t),d=pe(u.missingWarn)?u.missingWarn:e.missingWarn;pe(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const p=!!u.part,g=ba(e,u),C=l(e,n,g);if(!K(s)||s==="")return new Intl.NumberFormat(g,f).format(c);let S={},E,T=null;const v="number format";for(let w=0;w{wd.includes(s)?l[s]=o[s]:i[s]=o[s]}),K(r)?i.locale=r:ae(r)&&(l=r),ae(n)&&(l=n),[i.key||"",a,i,l]}function hc(e,t,o){const r=e;for(const n in o){const i=`${t}__${n}`;r.__numberFormatters.has(i)&&r.__numberFormatters.delete(i)}}oy();const Jy="9.14.4";function Qy(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(io().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(io().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(io().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(io().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(io().__INTLIFY_PROD_DEVTOOLS__=!1)}const Zy=wy.__EXTEND_POINT__,eo=Pi(Zy);eo(),eo(),eo(),eo(),eo(),eo(),eo(),eo(),eo();const Dd=Nt.__EXTEND_POINT__,pt=Pi(Dd),$e={UNEXPECTED_RETURN_TYPE:Dd,INVALID_ARGUMENT:pt(),MUST_BE_CALL_SETUP_TOP:pt(),NOT_INSTALLED:pt(),NOT_AVAILABLE_IN_LEGACY_MODE:pt(),REQUIRED_VALUE:pt(),INVALID_VALUE:pt(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:pt(),NOT_INSTALLED_WITH_PROVIDE:pt(),UNEXPECTED_ERROR:pt(),NOT_COMPATIBLE_LEGACY_VUE_I18N:pt(),BRIDGE_SUPPORT_VUE_2_ONLY:pt(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:pt(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:pt(),__EXTEND_POINT__:pt()};function ze(e,...t){return Pr(e,null,void 0)}const Ol=Fo("__translateVNode"),Nl=Fo("__datetimeParts"),Ml=Fo("__numberParts"),Rd=Fo("__setPluralRules"),Fd=Fo("__injectWithOption"),kl=Fo("__dispose");function cn(e){if(!Ce(e)||Kt(e))return e;for(const t in e)if(Ot(e,t))if(!t.includes("."))Ce(e[t])&&cn(e[t]);else{const o=t.split("."),r=o.length-1;let n=e,i=!1;for(let l=0;l{if("locale"in a&&"resource"in a){const{locale:s,resource:c}=a;s?(l[s]=l[s]||ve(),wn(c,l[s])):wn(c,l)}else K(a)&&wn(JSON.parse(a),l)}),n==null&&i)for(const a in l)Ot(l,a)&&cn(l[a]);return l}function Od(e){return e.type}function Nd(e,t,o){let r=Ce(t.messages)?t.messages:ve();"__i18nGlobal"in o&&(r=Ai(e.locale.value,{messages:r,__i18n:o.__i18nGlobal}));const n=Object.keys(r);n.length&&n.forEach(i=>{e.mergeLocaleMessage(i,r[i])});{if(Ce(t.datetimeFormats)){const i=Object.keys(t.datetimeFormats);i.length&&i.forEach(l=>{e.mergeDateTimeFormat(l,t.datetimeFormats[l])})}if(Ce(t.numberFormats)){const i=Object.keys(t.numberFormats);i.length&&i.forEach(l=>{e.mergeNumberFormat(l,t.numberFormats[l])})}}}function gc(e){return je(pn,null,e,0)}const Cc="__INTLIFY_META__",bc=()=>[],eE=()=>!1;let xc=0;function _c(e){return((t,o,r,n)=>e(o,r,Ao()||void 0,n))}const tE=()=>{const e=Ao();let t=null;return e&&(t=Od(e)[Cc])?{[Cc]:t}:null};function _a(e={},t){const{__root:o,__injectWithOption:r}=e,n=o===void 0,i=e.flatJson,l=Kn?mt:Yl,a=!!e.translateExistCompatible;let s=pe(e.inheritLocale)?e.inheritLocale:!0;const c=l(o&&s?o.locale.value:K(e.locale)?e.locale:_r),u=l(o&&s?o.fallbackLocale.value:K(e.fallbackLocale)||Ae(e.fallbackLocale)||ae(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),f=l(Ai(c.value,e)),d=l(ae(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),p=l(ae(e.numberFormats)?e.numberFormats:{[c.value]:{}});let g=o?o.missingWarn:pe(e.missingWarn)||wo(e.missingWarn)?e.missingWarn:!0,C=o?o.fallbackWarn:pe(e.fallbackWarn)||wo(e.fallbackWarn)?e.fallbackWarn:!0,S=o?o.fallbackRoot:pe(e.fallbackRoot)?e.fallbackRoot:!0,E=!!e.fallbackFormat,T=Pe(e.missing)?e.missing:null,v=Pe(e.missing)?_c(e.missing):null,y=Pe(e.postTranslation)?e.postTranslation:null,L=o?o.warnHtmlMessage:pe(e.warnHtmlMessage)?e.warnHtmlMessage:!0,w=!!e.escapeParameter;const D=o?o.modifiers:ae(e.modifiers)?e.modifiers:{};let F=e.pluralRules||o&&o.pluralRules,P;P=(()=>{n&&ac(null);const I={version:Jy,locale:c.value,fallbackLocale:u.value,messages:f.value,modifiers:D,pluralRules:F,missing:v===null?void 0:v,missingWarn:g,fallbackWarn:C,fallbackFormat:E,unresolving:!0,postTranslation:y===null?void 0:y,warnHtmlMessage:L,escapeParameter:w,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};I.datetimeFormats=d.value,I.numberFormats=p.value,I.__datetimeFormatters=ae(P)?P.__datetimeFormatters:void 0,I.__numberFormatters=ae(P)?P.__numberFormatters:void 0;const M=Wy(I);return n&&ac(M),M})(),Fr(P,c.value,u.value);function X(){return[c.value,u.value,f.value,d.value,p.value]}const k=fe({get:()=>c.value,set:I=>{c.value=I,P.locale=c.value}}),Q=fe({get:()=>u.value,set:I=>{u.value=I,P.fallbackLocale=u.value,Fr(P,c.value,I)}}),me=fe(()=>f.value),ye=fe(()=>d.value),se=fe(()=>p.value);function ne(){return Pe(y)?y:null}function de(I){y=I,P.postTranslation=I}function tt(){return T}function ft(I){I!==null&&(v=_c(I)),T=I,P.missing=v}const Re=(I,M,te,ce,Ee,ot)=>{X();let Ue;try{__INTLIFY_PROD_DEVTOOLS__,n||(P.fallbackContext=o?By():void 0),Ue=I(P)}finally{__INTLIFY_PROD_DEVTOOLS__,n||(P.fallbackContext=void 0)}if(te!=="translate exists"&&Me(Ue)&&Ue===Ii||te==="translate exists"&&!Ue){const[Mo,wi]=M();return o&&S?ce(o):Ee(Mo)}else{if(ot(Ue))return Ue;throw ze($e.UNEXPECTED_RETURN_TYPE)}};function Fe(...I){return Re(M=>Reflect.apply(fc,null,[M,...I]),()=>Dl(...I),"translate",M=>Reflect.apply(M.t,M,[...I]),M=>M,M=>K(M))}function Tt(...I){const[M,te,ce]=I;if(ce&&!Ce(ce))throw ze($e.INVALID_ARGUMENT);return Fe(M,te,Ge({resolvedMessage:!0},ce||{}))}function ht(...I){return Re(M=>Reflect.apply(dc,null,[M,...I]),()=>Rl(...I),"datetime format",M=>Reflect.apply(M.d,M,[...I]),()=>nc,M=>K(M))}function gt(...I){return Re(M=>Reflect.apply(mc,null,[M,...I]),()=>Fl(...I),"number format",M=>Reflect.apply(M.n,M,[...I]),()=>nc,M=>K(M))}function We(I){return I.map(M=>K(M)||Me(M)||pe(M)?gc(String(M)):M)}const Y={normalize:We,interpolate:I=>I,type:"vnode"};function G(...I){return Re(M=>{let te;const ce=M;try{ce.processor=Y,te=Reflect.apply(fc,null,[ce,...I])}finally{ce.processor=null}return te},()=>Dl(...I),"translate",M=>M[Ol](...I),M=>[gc(M)],M=>Ae(M))}function ee(...I){return Re(M=>Reflect.apply(mc,null,[M,...I]),()=>Fl(...I),"number format",M=>M[Ml](...I),bc,M=>K(M)||Ae(M))}function ue(...I){return Re(M=>Reflect.apply(dc,null,[M,...I]),()=>Rl(...I),"datetime format",M=>M[Nl](...I),bc,M=>K(M)||Ae(M))}function b(I){F=I,P.pluralRules=F}function _(I,M){return Re(()=>{if(!I)return!1;const te=K(M)?M:c.value,ce=$(te),Ee=P.messageResolver(ce,I);return a?Ee!=null:Kt(Ee)||At(Ee)||K(Ee)},()=>[I],"translate exists",te=>Reflect.apply(te.te,te,[I,M]),eE,te=>pe(te))}function x(I){let M=null;const te=xd(P,u.value,c.value);for(let ce=0;ce{s&&(c.value=I,P.locale=I,Fr(P,c.value,u.value))}),St(o.fallbackLocale,I=>{s&&(u.value=I,P.fallbackLocale=I,Fr(P,c.value,u.value))}));const B={id:xc,locale:k,fallbackLocale:Q,get inheritLocale(){return s},set inheritLocale(I){s=I,I&&o&&(c.value=o.locale.value,u.value=o.fallbackLocale.value,Fr(P,c.value,u.value))},get availableLocales(){return Object.keys(f.value).sort()},messages:me,get modifiers(){return D},get pluralRules(){return F||{}},get isGlobal(){return n},get missingWarn(){return g},set missingWarn(I){g=I,P.missingWarn=g},get fallbackWarn(){return C},set fallbackWarn(I){C=I,P.fallbackWarn=C},get fallbackRoot(){return S},set fallbackRoot(I){S=I},get fallbackFormat(){return E},set fallbackFormat(I){E=I,P.fallbackFormat=E},get warnHtmlMessage(){return L},set warnHtmlMessage(I){L=I,P.warnHtmlMessage=I},get escapeParameter(){return w},set escapeParameter(I){w=I,P.escapeParameter=I},t:Fe,getLocaleMessage:$,setLocaleMessage:N,mergeLocaleMessage:V,getPostTranslationHandler:ne,setPostTranslationHandler:de,getMissingHandler:tt,setMissingHandler:ft,[Rd]:b};return B.datetimeFormats=ye,B.numberFormats=se,B.rt=Tt,B.te=_,B.tm=R,B.d=ht,B.n=gt,B.getDateTimeFormat=z,B.setDateTimeFormat=m,B.mergeDateTimeFormat=h,B.getNumberFormat=A,B.setNumberFormat=O,B.mergeNumberFormat=j,B[Fd]=r,B[Ol]=G,B[Nl]=ue,B[Ml]=ee,B}function oE(e){const t=K(e.locale)?e.locale:_r,o=K(e.fallbackLocale)||Ae(e.fallbackLocale)||ae(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,r=Pe(e.missing)?e.missing:void 0,n=pe(e.silentTranslationWarn)||wo(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,i=pe(e.silentFallbackWarn)||wo(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,l=pe(e.fallbackRoot)?e.fallbackRoot:!0,a=!!e.formatFallbackMessages,s=ae(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,u=Pe(e.postTranslation)?e.postTranslation:void 0,f=K(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,d=!!e.escapeParameterHtml,p=pe(e.sync)?e.sync:!0;let g=e.messages;if(ae(e.sharedMessages)){const w=e.sharedMessages;g=Object.keys(w).reduce((F,P)=>{const U=F[P]||(F[P]={});return Ge(U,w[P]),F},g||{})}const{__i18n:C,__root:S,__injectWithOption:E}=e,T=e.datetimeFormats,v=e.numberFormats,y=e.flatJson,L=e.translateExistCompatible;return{locale:t,fallbackLocale:o,messages:g,flatJson:y,datetimeFormats:T,numberFormats:v,missing:r,missingWarn:n,fallbackWarn:i,fallbackRoot:l,fallbackFormat:a,modifiers:s,pluralRules:c,postTranslation:u,warnHtmlMessage:f,escapeParameter:d,messageResolver:e.messageResolver,inheritLocale:p,translateExistCompatible:L,__i18n:C,__root:S,__injectWithOption:E}}function Hl(e={},t){{const o=_a(oE(e)),{__extender:r}=e,n={id:o.id,get locale(){return o.locale.value},set locale(i){o.locale.value=i},get fallbackLocale(){return o.fallbackLocale.value},set fallbackLocale(i){o.fallbackLocale.value=i},get messages(){return o.messages.value},get datetimeFormats(){return o.datetimeFormats.value},get numberFormats(){return o.numberFormats.value},get availableLocales(){return o.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(i){},get missing(){return o.getMissingHandler()},set missing(i){o.setMissingHandler(i)},get silentTranslationWarn(){return pe(o.missingWarn)?!o.missingWarn:o.missingWarn},set silentTranslationWarn(i){o.missingWarn=pe(i)?!i:i},get silentFallbackWarn(){return pe(o.fallbackWarn)?!o.fallbackWarn:o.fallbackWarn},set silentFallbackWarn(i){o.fallbackWarn=pe(i)?!i:i},get modifiers(){return o.modifiers},get formatFallbackMessages(){return o.fallbackFormat},set formatFallbackMessages(i){o.fallbackFormat=i},get postTranslation(){return o.getPostTranslationHandler()},set postTranslation(i){o.setPostTranslationHandler(i)},get sync(){return o.inheritLocale},set sync(i){o.inheritLocale=i},get warnHtmlInMessage(){return o.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(i){o.warnHtmlMessage=i!=="off"},get escapeParameterHtml(){return o.escapeParameter},set escapeParameterHtml(i){o.escapeParameter=i},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(i){},get pluralizationRules(){return o.pluralRules||{}},__composer:o,t(...i){const[l,a,s]=i,c={};let u=null,f=null;if(!K(l))throw ze($e.INVALID_ARGUMENT);const d=l;return K(a)?c.locale=a:Ae(a)?u=a:ae(a)&&(f=a),Ae(s)?u=s:ae(s)&&(f=s),Reflect.apply(o.t,o,[d,u||f||{},c])},rt(...i){return Reflect.apply(o.rt,o,[...i])},tc(...i){const[l,a,s]=i,c={plural:1};let u=null,f=null;if(!K(l))throw ze($e.INVALID_ARGUMENT);const d=l;return K(a)?c.locale=a:Me(a)?c.plural=a:Ae(a)?u=a:ae(a)&&(f=a),K(s)?c.locale=s:Ae(s)?u=s:ae(s)&&(f=s),Reflect.apply(o.t,o,[d,u||f||{},c])},te(i,l){return o.te(i,l)},tm(i){return o.tm(i)},getLocaleMessage(i){return o.getLocaleMessage(i)},setLocaleMessage(i,l){o.setLocaleMessage(i,l)},mergeLocaleMessage(i,l){o.mergeLocaleMessage(i,l)},d(...i){return Reflect.apply(o.d,o,[...i])},getDateTimeFormat(i){return o.getDateTimeFormat(i)},setDateTimeFormat(i,l){o.setDateTimeFormat(i,l)},mergeDateTimeFormat(i,l){o.mergeDateTimeFormat(i,l)},n(...i){return Reflect.apply(o.n,o,[...i])},getNumberFormat(i){return o.getNumberFormat(i)},setNumberFormat(i,l){o.setNumberFormat(i,l)},mergeNumberFormat(i,l){o.mergeNumberFormat(i,l)},getChoiceIndex(i,l){return-1}};return n.__extender=r,n}}const va={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function rE({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((r,n)=>[...r,...n.type===qe?n.children:[n]],[]):t.reduce((o,r)=>{const n=e[r];return n&&(o[r]=n()),o},ve())}function Md(e){return qe}const nE=po({name:"i18n-t",props:Ge({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>Me(e)||!isNaN(e)}},va),setup(e,t){const{slots:o,attrs:r}=t,n=e.i18n||Sa({useScope:e.scope,__useComponent:!0});return()=>{const i=Object.keys(o).filter(f=>f!=="_"),l=ve();e.locale&&(l.locale=e.locale),e.plural!==void 0&&(l.plural=K(e.plural)?+e.plural:e.plural);const a=rE(t,i),s=n[Ol](e.keypath,a,l),c=Ge(ve(),r),u=K(e.tag)||Ce(e.tag)?e.tag:Md();return vr(u,c,s)}}}),vc=nE;function iE(e){return Ae(e)&&!K(e[0])}function kd(e,t,o,r){const{slots:n,attrs:i}=t;return()=>{const l={part:!0};let a=ve();e.locale&&(l.locale=e.locale),K(e.format)?l.key=e.format:Ce(e.format)&&(K(e.format.key)&&(l.key=e.format.key),a=Object.keys(e.format).reduce((d,p)=>o.includes(p)?Ge(ve(),d,{[p]:e.format[p]}):d,ve()));const s=r(e.value,l,a);let c=[l.key];Ae(s)?c=s.map((d,p)=>{const g=n[d.type],C=g?g({[d.type]:d.value,index:p,parts:s}):[d.value];return iE(C)&&(C[0].key=`${d.type}-${p}`),C}):K(s)&&(c=[s]);const u=Ge(ve(),i),f=K(e.tag)||Ce(e.tag)?e.tag:Md();return vr(f,u,c)}}const lE=po({name:"i18n-n",props:Ge({value:{type:Number,required:!0},format:{type:[String,Object]}},va),setup(e,t){const o=e.i18n||Sa({useScope:e.scope,__useComponent:!0});return kd(e,t,wd,(...r)=>o[Ml](...r))}}),Sc=lE,aE=po({name:"i18n-d",props:Ge({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},va),setup(e,t){const o=e.i18n||Sa({useScope:e.scope,__useComponent:!0});return kd(e,t,Ld,(...r)=>o[Nl](...r))}}),yc=aE;function sE(e,t){const o=e;if(e.mode==="composition")return o.__getInstance(t)||e.global;{const r=o.__getInstance(t);return r!=null?r.__composer:e.global.__composer}}function cE(e){const t=l=>{const{instance:a,modifiers:s,value:c}=l;if(!a||!a.$)throw ze($e.UNEXPECTED_ERROR);const u=sE(e,a.$),f=Ec(c);return[Reflect.apply(u.t,u,[...Tc(f)]),u]};return{created:(l,a)=>{const[s,c]=t(a);Kn&&e.global===c&&(l.__i18nWatcher=St(c.locale,()=>{a.instance&&a.instance.$forceUpdate()})),l.__composer=c,l.textContent=s},unmounted:l=>{Kn&&l.__i18nWatcher&&(l.__i18nWatcher(),l.__i18nWatcher=void 0,delete l.__i18nWatcher),l.__composer&&(l.__composer=void 0,delete l.__composer)},beforeUpdate:(l,{value:a})=>{if(l.__composer){const s=l.__composer,c=Ec(a);l.textContent=Reflect.apply(s.t,s,[...Tc(c)])}},getSSRProps:l=>{const[a]=t(l);return{textContent:a}}}}function Ec(e){if(K(e))return{path:e};if(ae(e)){if(!("path"in e))throw ze($e.REQUIRED_VALUE,"path");return e}else throw ze($e.INVALID_VALUE)}function Tc(e){const{path:t,locale:o,args:r,choice:n,plural:i}=e,l={},a=r||{};return K(o)&&(l.locale=o),Me(n)&&(l.plural=n),Me(i)&&(l.plural=i),[t,a,l]}function uE(e,t,...o){const r=ae(o[0])?o[0]:{},n=!!r.useI18nComponentName;(!pe(r.globalInstall)||r.globalInstall)&&([n?"i18n":vc.name,"I18nT"].forEach(l=>e.component(l,vc)),[Sc.name,"I18nN"].forEach(l=>e.component(l,Sc)),[yc.name,"I18nD"].forEach(l=>e.component(l,yc))),e.directive("t",cE(t))}function fE(e,t,o){return{beforeCreate(){const r=Ao();if(!r)throw ze($e.UNEXPECTED_ERROR);const n=this.$options;if(n.i18n){const i=n.i18n;if(n.__i18n&&(i.__i18n=n.__i18n),i.__root=t,this===this.$root)this.$i18n=Pc(e,i);else{i.__injectWithOption=!0,i.__extender=o.__vueI18nExtend,this.$i18n=Hl(i);const l=this.$i18n;l.__extender&&(l.__disposer=l.__extender(this.$i18n))}}else if(n.__i18n)if(this===this.$root)this.$i18n=Pc(e,n);else{this.$i18n=Hl({__i18n:n.__i18n,__injectWithOption:!0,__extender:o.__vueI18nExtend,__root:t});const i=this.$i18n;i.__extender&&(i.__disposer=i.__extender(this.$i18n))}else this.$i18n=e;n.__i18nGlobal&&Nd(t,n,n),this.$t=(...i)=>this.$i18n.t(...i),this.$rt=(...i)=>this.$i18n.rt(...i),this.$tc=(...i)=>this.$i18n.tc(...i),this.$te=(i,l)=>this.$i18n.te(i,l),this.$d=(...i)=>this.$i18n.d(...i),this.$n=(...i)=>this.$i18n.n(...i),this.$tm=i=>this.$i18n.tm(i),o.__setInstance(r,this.$i18n)},mounted(){},unmounted(){const r=Ao();if(!r)throw ze($e.UNEXPECTED_ERROR);const n=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,n.__disposer&&(n.__disposer(),delete n.__disposer,delete n.__extender),o.__deleteInstance(r),delete this.$i18n}}}function Pc(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Rd](t.pluralizationRules||e.pluralizationRules);const o=Ai(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(o).forEach(r=>e.mergeLocaleMessage(r,o[r])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(r=>e.mergeDateTimeFormat(r,t.datetimeFormats[r])),t.numberFormats&&Object.keys(t.numberFormats).forEach(r=>e.mergeNumberFormat(r,t.numberFormats[r])),e}const dE=Fo("global-vue-i18n");function pE(e={},t){const o=__VUE_I18N_LEGACY_API__&&pe(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,r=pe(e.globalInjection)?e.globalInjection:!0,n=__VUE_I18N_LEGACY_API__&&o?!!e.allowComposition:!0,i=new Map,[l,a]=mE(e,o),s=Fo("");function c(d){return i.get(d)||null}function u(d,p){i.set(d,p)}function f(d){i.delete(d)}{const d={get mode(){return __VUE_I18N_LEGACY_API__&&o?"legacy":"composition"},get allowComposition(){return n},async install(p,...g){if(p.__VUE_I18N_SYMBOL__=s,p.provide(p.__VUE_I18N_SYMBOL__,d),ae(g[0])){const E=g[0];d.__composerExtend=E.__composerExtend,d.__vueI18nExtend=E.__vueI18nExtend}let C=null;!o&&r&&(C=yE(p,d.global)),__VUE_I18N_FULL_INSTALL__&&uE(p,d,...g),__VUE_I18N_LEGACY_API__&&o&&p.mixin(fE(a,a.__composer,d));const S=p.unmount;p.unmount=()=>{C&&C(),d.dispose(),S()}},get global(){return a},dispose(){l.stop()},__instances:i,__getInstance:c,__setInstance:u,__deleteInstance:f};return d}}function Sa(e={}){const t=Ao();if(t==null)throw ze($e.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw ze($e.NOT_INSTALLED);const o=hE(t),r=CE(o),n=Od(t),i=gE(e,n);if(__VUE_I18N_LEGACY_API__&&o.mode==="legacy"&&!e.__useComponent){if(!o.allowComposition)throw ze($e.NOT_AVAILABLE_IN_LEGACY_MODE);return vE(t,i,r,e)}if(i==="global")return Nd(r,e,n),r;if(i==="parent"){let s=bE(o,t,e.__useComponent);return s==null&&(s=r),s}const l=o;let a=l.__getInstance(t);if(a==null){const s=Ge({},e);"__i18n"in n&&(s.__i18n=n.__i18n),r&&(s.__root=r),a=_a(s),l.__composerExtend&&(a[kl]=l.__composerExtend(a)),_E(l,t,a),l.__setInstance(t,a)}return a}function mE(e,t,o){const r=Wl();{const n=__VUE_I18N_LEGACY_API__&&t?r.run(()=>Hl(e)):r.run(()=>_a(e));if(n==null)throw ze($e.UNEXPECTED_ERROR);return[r,n]}}function hE(e){{const t=Ze(e.isCE?dE:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw ze(e.isCE?$e.NOT_INSTALLED_WITH_PROVIDE:$e.UNEXPECTED_ERROR);return t}}function gE(e,t){return Ti(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function CE(e){return e.mode==="composition"?e.global:e.global.__composer}function bE(e,t,o=!1){let r=null;const n=t.root;let i=xE(t,o);for(;i!=null;){const l=e;if(e.mode==="composition")r=l.__getInstance(i);else if(__VUE_I18N_LEGACY_API__){const a=l.__getInstance(i);a!=null&&(r=a.__composer,o&&r&&!r[Fd]&&(r=null))}if(r!=null||n===i)break;i=i.parent}return r}function xE(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function _E(e,t,o){pi(()=>{},t),Ql(()=>{const r=o;e.__deleteInstance(t);const n=r[kl];n&&(n(),delete r[kl])},t)}function vE(e,t,o,r={}){const n=t==="local",i=Yl(null);if(n&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw ze($e.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const l=pe(r.inheritLocale)?r.inheritLocale:!K(r.locale),a=mt(!n||l?o.locale.value:K(r.locale)?r.locale:_r),s=mt(!n||l?o.fallbackLocale.value:K(r.fallbackLocale)||Ae(r.fallbackLocale)||ae(r.fallbackLocale)||r.fallbackLocale===!1?r.fallbackLocale:a.value),c=mt(Ai(a.value,r)),u=mt(ae(r.datetimeFormats)?r.datetimeFormats:{[a.value]:{}}),f=mt(ae(r.numberFormats)?r.numberFormats:{[a.value]:{}}),d=n?o.missingWarn:pe(r.missingWarn)||wo(r.missingWarn)?r.missingWarn:!0,p=n?o.fallbackWarn:pe(r.fallbackWarn)||wo(r.fallbackWarn)?r.fallbackWarn:!0,g=n?o.fallbackRoot:pe(r.fallbackRoot)?r.fallbackRoot:!0,C=!!r.fallbackFormat,S=Pe(r.missing)?r.missing:null,E=Pe(r.postTranslation)?r.postTranslation:null,T=n?o.warnHtmlMessage:pe(r.warnHtmlMessage)?r.warnHtmlMessage:!0,v=!!r.escapeParameter,y=n?o.modifiers:ae(r.modifiers)?r.modifiers:{},L=r.pluralRules||n&&o.pluralRules;function w(){return[a.value,s.value,c.value,u.value,f.value]}const D=fe({get:()=>i.value?i.value.locale.value:a.value,set:x=>{i.value&&(i.value.locale.value=x),a.value=x}}),F=fe({get:()=>i.value?i.value.fallbackLocale.value:s.value,set:x=>{i.value&&(i.value.fallbackLocale.value=x),s.value=x}}),P=fe(()=>i.value?i.value.messages.value:c.value),U=fe(()=>u.value),X=fe(()=>f.value);function k(){return i.value?i.value.getPostTranslationHandler():E}function Q(x){i.value&&i.value.setPostTranslationHandler(x)}function me(){return i.value?i.value.getMissingHandler():S}function ye(x){i.value&&i.value.setMissingHandler(x)}function se(x){return w(),x()}function ne(...x){return i.value?se(()=>Reflect.apply(i.value.t,null,[...x])):se(()=>"")}function de(...x){return i.value?Reflect.apply(i.value.rt,null,[...x]):""}function tt(...x){return i.value?se(()=>Reflect.apply(i.value.d,null,[...x])):se(()=>"")}function ft(...x){return i.value?se(()=>Reflect.apply(i.value.n,null,[...x])):se(()=>"")}function Re(x){return i.value?i.value.tm(x):{}}function Fe(x,R){return i.value?i.value.te(x,R):!1}function Tt(x){return i.value?i.value.getLocaleMessage(x):{}}function ht(x,R){i.value&&(i.value.setLocaleMessage(x,R),c.value[x]=R)}function gt(x,R){i.value&&i.value.mergeLocaleMessage(x,R)}function We(x){return i.value?i.value.getDateTimeFormat(x):{}}function H(x,R){i.value&&(i.value.setDateTimeFormat(x,R),u.value[x]=R)}function Y(x,R){i.value&&i.value.mergeDateTimeFormat(x,R)}function G(x){return i.value?i.value.getNumberFormat(x):{}}function ee(x,R){i.value&&(i.value.setNumberFormat(x,R),f.value[x]=R)}function ue(x,R){i.value&&i.value.mergeNumberFormat(x,R)}const b={get id(){return i.value?i.value.id:-1},locale:D,fallbackLocale:F,messages:P,datetimeFormats:U,numberFormats:X,get inheritLocale(){return i.value?i.value.inheritLocale:l},set inheritLocale(x){i.value&&(i.value.inheritLocale=x)},get availableLocales(){return i.value?i.value.availableLocales:Object.keys(c.value)},get modifiers(){return i.value?i.value.modifiers:y},get pluralRules(){return i.value?i.value.pluralRules:L},get isGlobal(){return i.value?i.value.isGlobal:!1},get missingWarn(){return i.value?i.value.missingWarn:d},set missingWarn(x){i.value&&(i.value.missingWarn=x)},get fallbackWarn(){return i.value?i.value.fallbackWarn:p},set fallbackWarn(x){i.value&&(i.value.missingWarn=x)},get fallbackRoot(){return i.value?i.value.fallbackRoot:g},set fallbackRoot(x){i.value&&(i.value.fallbackRoot=x)},get fallbackFormat(){return i.value?i.value.fallbackFormat:C},set fallbackFormat(x){i.value&&(i.value.fallbackFormat=x)},get warnHtmlMessage(){return i.value?i.value.warnHtmlMessage:T},set warnHtmlMessage(x){i.value&&(i.value.warnHtmlMessage=x)},get escapeParameter(){return i.value?i.value.escapeParameter:v},set escapeParameter(x){i.value&&(i.value.escapeParameter=x)},t:ne,getPostTranslationHandler:k,setPostTranslationHandler:Q,getMissingHandler:me,setMissingHandler:ye,rt:de,d:tt,n:ft,tm:Re,te:Fe,getLocaleMessage:Tt,setLocaleMessage:ht,mergeLocaleMessage:gt,getDateTimeFormat:We,setDateTimeFormat:H,mergeDateTimeFormat:Y,getNumberFormat:G,setNumberFormat:ee,mergeNumberFormat:ue};function _(x){x.locale.value=a.value,x.fallbackLocale.value=s.value,Object.keys(c.value).forEach(R=>{x.mergeLocaleMessage(R,c.value[R])}),Object.keys(u.value).forEach(R=>{x.mergeDateTimeFormat(R,u.value[R])}),Object.keys(f.value).forEach(R=>{x.mergeNumberFormat(R,f.value[R])}),x.escapeParameter=v,x.fallbackFormat=C,x.fallbackRoot=g,x.fallbackWarn=p,x.missingWarn=d,x.warnHtmlMessage=T}return Jl(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw ze($e.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const x=i.value=e.proxy.$i18n.__composer;t==="global"?(a.value=x.locale.value,s.value=x.fallbackLocale.value,c.value=x.messages.value,u.value=x.datetimeFormats.value,f.value=x.numberFormats.value):n&&_(x)}),b}const SE=["locale","fallbackLocale","availableLocales"],Ic=["t","rt","d","n","tm","te"];function yE(e,t){const o=Object.create(null);return SE.forEach(n=>{const i=Object.getOwnPropertyDescriptor(t,n);if(!i)throw ze($e.UNEXPECTED_ERROR);const l=we(i.value)?{get(){return i.value.value},set(a){i.value.value=a}}:{get(){return i.get&&i.get()}};Object.defineProperty(o,n,l)}),e.config.globalProperties.$i18n=o,Ic.forEach(n=>{const i=Object.getOwnPropertyDescriptor(t,n);if(!i||!i.value)throw ze($e.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${n}`,i)}),()=>{delete e.config.globalProperties.$i18n,Ic.forEach(n=>{delete e.config.globalProperties[`$${n}`]})}}Qy();__INTLIFY_JIT_COMPILATION__?lc(Gy):lc(jy);My(gy);ky(xd);if(__INTLIFY_PROD_DEVTOOLS__){const e=io();e.__INTLIFY__=!0,Ty(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const EE={app:{tagline:"文件快传",description:"开箱即用的文件快传系统"},nav:{home:"分享",docs:"API 文档",openapi:"OpenAPI",admin:"管理后台",homeTitle:"{name} — 首页",mainNav:"主导航"},theme:{label:"主题",light:"浅色",dark:"深色",system:"跟随系统"},lang:{label:"语言"},footer:{linkNav:"页脚链接",docs:"API 文档",openapi:"OpenAPI",admin:"管理后台",copyright:"© {year} {name}"},notify:{title:"系统通知",close:"知道了"},common:{loading:"加载中…",cancel:"取消",save:"保存",search:"搜索",refresh:"刷新",copy:"复制",copied:"已复制",copyFailed:"复制失败",close:"关闭",actions:"操作",all:"全部",query:"查询",reset:"重置",previousPage:"上一页",nextPage:"下一页",pagerInfo:"共 {total} 条 · 第 {page}/{pages} 页",text:"文本",file:"文件",success:"成功",failed:"失败",denied:"拒绝",none:"-"},time:{forever:"永久有效",permanent:"永久",expired:"已过期",lessThanMinute:"不足 1 分钟",minutes:"{n} 分钟",hoursMinutes:"{h} 小时 {m} 分",daysHours:"{d} 天 {h} 小时"},expireStyle:{day:"天",hour:"小时",minute:"分钟",count:"次数",forever:"永久"},home:{heroTitle:"{name} · 文件快传",heroDesc:"无需注册,文本文件一键分享,取件码即可领取",pickupPlaceholder:"输入取件码直接领取",pickupButton:"取 件",pickupRequired:"请输入取件码",tabText:"分享文本",tabFile:"分享文件",textContent:"文本内容",textPlaceholder:"粘贴要分享的文本、代码片段…",textBytes:"{bytes} / 222 KB(超出请改用文件分享)",textTooLong:"内容过多(超过 222KB),建议采用文件形式分享",textRequired:"请输入要分享的文本内容",customCode:"自定义提取码(可选)",customCodeHint:"留空随机生成;4-8 位字母或数字",customCodeInvalid:"提取码须为 4-8 位字母或数字",customCodeTaken:"该提取码已被占用,请换一个",generateCode:"生成取件码",fileRequired:"请选择要分享的文件",fileTooLarge:"文件大小超过限制(最大 {size})",chunkedUploading:"分片上传中",uploading:"上传中",uploadingDots:"上传中…",uploadAndShare:"上传并生成取件码",uploadDisabled:"管理员已关闭访客上传功能,如需分享请联系管理员",shareAnother:"再分享一个",textShared:"文本分享成功",fileShared:"文件分享成功",uploadCancelled:"上传已取消",shareFailed:"分享失败,请稍后重试",uploadFailed:"上传失败,请重试",rateLimited:"操作过于频繁,请稍后再试",notInitialized:"系统尚未初始化,请管理员先完成初始化配置"},result:{badge:"分享成功",code:"取件码",link:"取件链接",copyLink:"复制链接",copyLinkCode:"复制链接和提取码",copyCode:"复制取件码",codeCopied:"取件码已复制",linkCopied:"取件链接已复制",linkCodeCopied:"链接和提取码已复制",clickCopyCode:"点击复制提取码",expires:"有效期:{value}",forever:"永久",hint:"把取件码或链接发给对方,对方在首页输入取件码即可领取。",copyFailed:"复制失败,请手动选择复制"},pickup:{emptyCode:"取件码为空",querying:"正在查询取件码 {code} …",failed:"取件失败",failedDefault:"取件失败,请稍后重试",notFound:"取件码不存在或分享已过期",confirmHint:"请确认取件码是否正确,或联系分享人重新发送",retryPlaceholder:"输入其他取件码",retryButton:"重新取件",remainingUnlimited:"不限次数",remainingCount:"剩余 {n} 次",expireAt:"过期时间:{time}",loadingText:"正在获取内容…",copyContent:"复制内容",downloadTxt:"下载为 .txt",downloaded:"下载完成",downloadFailed:"下载失败,请重试",copied:"内容已复制",sizeUsed:"大小 {size} · 已被领取 {n} 次",downloading:"下载中 {percent}%",downloadFile:"下载文件({size})"},expire:{value:"数值",label:"有效期",foreverOption:"永久有效",countOption:"按次数",countHint:"分享在被领取指定次数后失效",timeHint:"有效期 {value} {unit}",foreverHint:"分享将一直有效,直到管理员删除",maxSecondsHint:"最长 {value}",maxCountHint:"最多 {n} 次"},drop:{aria:"选择或拖拽文件",zone:"点击选择或拖拽文件到此处",maxSize:"单文件最大 {size}",noLimit:"上传后自动生成取件码",remove:"移除",tooLarge:"文件大小 {size} 超过限制 {limit}",typeHint:"仅支持 {types}"},docs:{searchPlaceholder:"检索文档内容…",notGenerated:"文档尚未生成",buildHint:"构建时将从 docs/api/*.md 自动收录",noMatch:"没有匹配的章节",tocTitle:"本页目录",loading:"加载文档…",preparing:"API 文档筹备中",preparingHint:"文档源位于项目 docs/api/ 目录(每个 .md 一级标题作为章节名)。重新构建前端后,文档将内嵌到页面中离线可用。",emptyContent:"文档内容为空",loadFailed:"文档「{title}」加载失败",sidebar:"文档章节"},openapi:{title:"OpenAPI 3.0 接口规范",statusOk:"加载成功",statusError:"规范加载失败",statusLoading:"加载中…",source:"来源:{source}",sourceEmbedded:"构建内嵌 docs/openapi.yaml",notAvailable:"openapi.yaml 尚未生成或无法访问",notAvailableHint:"规范文件位于项目 docs/openapi.yaml。重新构建前端会将其内嵌;也可将文件部署到 {url} 供运行时加载。"},notFound:{title:"页面不存在",desc:"你访问的地址可能已变更",back:"回到首页"},admin:{login:{title:"管理员登录",subtitle:"{name} · 管理后台",password:"管理员密码",passwordPlaceholder:"请输入管理员密码",submit:"登 录",wrongPassword:"密码错误",failed:"登录失败,请稍后重试",required:"请输入管理员密码",hint:"密码由部署方在环境变量或系统设置中配置;连续输错会触发 IP 限流保护。"},nav:{title:"管理后台",files:"文件管理",audit:"审计日志",settings:"系统设置",logout:"退出登录",menu:"后台菜单",loggedOut:"已退出登录"},files:{title:"文件管理",totalRecords:"共 {total} 个分享记录",searchPlaceholder:"搜索取件码 / 文件名",batchDelete:"批量删除",batchDeleteWithCount:"批量删除({count})",deleteSelectedTitle:"删除选中的 {count} 项",selectFirst:"先勾选要删除的行",loading:"加载中…",empty:"暂无分享记录",loadFailed:"文件列表加载失败",colCode:"取件码",colName:"名称",colType:"类型",colSize:"大小",colUsed:"已领取",colRemaining:"剩余",colExpireAt:"过期时间",colStatus:"状态",colCreatedAt:"创建时间",remainingUnlimited:"不限",remainingCount:"{n} 次",statusValid:"有效",statusExpired:"已过期",copyCode:"复制码",copyLink:"复制链接",edit:"编辑",fetchText:"取内容",delete:"删除",confirmDelete:"确认删除分享「{name}」?该操作不可恢复。",confirmBatchDelete:"确认删除选中的 {count} 个分享?该操作不可恢复。",deleteSuccess:"删除成功",batchDeleteSuccess:"批量删除成功",deleteFailed:"删除失败",batchDeleteFailed:"批量删除失败",nothingChanged:"没有修改任何字段",updateSuccess:"更新成功",updateFailed:"更新失败",fetchTextFailed:"内容获取失败(分享可能已过期)",linkCopied:"取件链接已复制",codeCopied:"取件码已复制",editModalTitle:"编辑分享",expireAtHint:"过期时间(留空表示永久)",expireCountHint:"剩余可领取次数(-1 表示不限)"},audit:{title:"审计日志",subtitle:"记录上传 / 下载动作:时间、IP、UA、设备、结果、字节数与耗时",action:"动作",result:"结果",actionUpload:"上传",actionDownload:"下载",filterIp:"IP",filterStart:"开始时间",filterEnd:"结束时间",empty:"暂无审计记录(审计仅记录上传 / 下载动作)",loadFailed:"审计日志加载失败",colTime:"时间",colAction:"动作",colResult:"结果",colFile:"文件",colCode:"取件码",colBytes:"字节数",colIp:"IP",colDevice:"设备",colDuration:"耗时",colUaError:"UA / 错误"},settings:{title:"系统设置",subtitle:"站点名称与 Logo(自定义优先,留空恢复内置默认)",restoreDefaults:"恢复默认值",restoreDefaultsDone:"已填回默认值,点击保存生效",loading:"加载配置中…",loadFailed:"配置读取失败",sectionBasic:"基本",siteName:"站点名称 site_name",siteNameHint:"显示在导航栏、登录页与浏览器标题",siteDomain:"网站对外域名",siteDomainHint:"http(s)://域名[:端口],不带路径;留空则分享链接用当前访问地址",sectionLogo:"导航 Logo",logoUrl:"Logo 图片地址 logo_url",uploadImage:"上传图片",logoHint:"支持填写 URL 或上传本地图片(≤256KB,转存为内嵌数据);留空使用内置默认",imageTooLarge:"图片超过 256KB,请压缩后重试或直接填写图片 URL",imageLoaded:"图片已载入,点击保存后全站生效",imageReadFailed:"图片读取失败",navPreview:"导航栏实际效果:",sectionFavicon:"浏览器图标 Favicon",faviconUrl:"Favicon 地址 favicon_url",faviconHint:"建议使用 PNG/ICO 方形图标;留空使用内置默认",faviconPreviewHint:"浏览器标签页图标(保存后刷新页面生效)",saveAll:"保存设置(全站生效)",saved:"设置已保存,全站生效",saveFailed:"保存失败",sectionPassword:"修改管理员密码",passwordHint:"保存后所有已登录会话失效,需重新登录",oldPassword:"旧密码",newPassword:"新密码(至少 6 位)",confirmPassword:"确认新密码",pwdRequired:"请填写旧密码与新密码",pwdTooShort:"新密码至少 6 位",pwdMismatch:"两次输入的新密码不一致",pwdChanged:"密码已修改,请使用新密码重新登录",pwdChangeFailed:"修改失败",pwdWrong:"旧密码错误",sectionBackground:"背景图",backgroundUrl:"背景图地址 background_url",backgroundHint:"支持 http(s) 图片地址、data:image 图片或站内相对路径(≤2048 字符);留空使用主题默认",sectionFooter:"页脚",footerText:"页脚文案 footer_text",footerTextHint:"展示在页面底部,支持纯文本(≤2000 字符);留空显示默认标语",footerBeian:"备案号 footer_beian",footerBeianHint:"如 京ICP备2024xxxxxx号-1(≤128 字符)",sectionNotify:"系统通知",notifyEnabled:"启用右上角通知 notify_enabled",notifyTitle:"通知标题 notify_title",notifyTitleHint:"留空显示默认标题「系统通知」(≤128 字符)",notifyContent:"通知内容 notify_content",notifyContentHint:"支持 等受控 HTML(≤2000 字符)",sectionSavePolicy:"保存策略",maxSaveSeconds:"最长保存秒数 max_save_seconds",maxSaveSecondsHint:"0 = 不限制(服务端默认 7 天兜底),最大 {max} 秒(365 天)",maxSaveCount:"最大可取次数 max_save_count",maxSaveCountHint:"0 = 不限制,最大 {max} 次",sectionStorage:"存储策略",maxFileSize:"单文件上限 max_file_size(字节)",maxFileSizeHint:"0 = 回落 uploadSize(当前 {fallback}),最大 {max} 字节(10 GiB)",allowedFileTypes:"允许类型 allowed_file_types",allowedFileTypesHint:"逗号分隔:扩展名(jpg)或 MIME(image/*),* 不限制",sectionUploadRate:"上传频率限制",uploadCount:"窗口内允许上传次数 uploadCount",uploadCountHint:"最小 1,最大 {max}",uploadMinute:"频率窗口(分钟)uploadMinute",uploadMinuteHint:"最小 1,最大 {max}",unitHour:"小时",unitDay:"天",unitMB:"MB",unitGB:"GB",maxSaveTime:"最长保存时间 max_save_seconds",maxSaveTimeHint:"0 = 不限制(服务端默认 7 天兜底),最大 365 天",saveTimeUnlimited:"不限制(0)",maxFileSizeFriendly:"单文件上限 max_file_size",maxFileSizeHintV3:"0 = 回落 uploadSize(当前 {fallback}),最大 10 GB",sizeUnlimited:"不限制(0)",sectionEngine:"存储引擎",engineCurrent:"当前引擎",engineLocal:"本地存储",engineWebdav:"WebDAV",engineS3:"S3 对象存储",engineSwitch:"切换到该引擎",engineSwitching:"切换中…",engineSwitchOk:"存储引擎已切换为 {engine}",engineSwitchFail:"切换失败(已保持原引擎)",engineParamsTitle:"引擎参数",engineParamsSaved:"引擎参数已保存",localRoot:"存储根目录 local_storage_path",localRootHint:"留空 = 系统默认数据目录;修改后对新写入生效",webdavUrl:"服务地址 webdav_url",webdavUrlHint:"如 https://dav.example.com/dav/",webdavRoot:"远端根目录 webdav_root_path",webdavRootHint:"远端起始目录(不存在会自动逐级创建)",webdavUser:"用户名 webdav_username",webdavPass:"密码 webdav_password",secretKeepHint:"留空或 ****** = 不修改",s3Endpoint:"端点 s3_endpoint_url",s3EndpointHint:"如 https://s3.example.com:9000(AWS 官方可留空)",s3Bucket:"存储桶 s3_bucket_name",s3Region:"区域 s3_region_name",s3Ak:"AccessKeyID s3_access_key_id",s3Sk:"SecretAccessKey s3_secret_access_key",s3Token:"会话令牌 aws_session_token(可选)",s3Style:"寻址样式 s3_addressing_style",styleAuto:"auto(自动)",stylePath:"path(路径式,MinIO 常用)",styleVirtual:"virtual(虚拟主机式)",engineParamsSave:"保存引擎参数",approxSize:"≈ {size}"}}},TE={app:{tagline:"File Drop",description:"A ready-to-use file sharing service"},nav:{home:"Share",docs:"API Docs",openapi:"OpenAPI",admin:"Admin",homeTitle:"{name} — Home",mainNav:"Main navigation"},theme:{label:"Theme",light:"Light",dark:"Dark",system:"System"},lang:{label:"Language"},footer:{linkNav:"Footer links",docs:"API Docs",openapi:"OpenAPI",admin:"Admin",copyright:"© {year} {name}"},notify:{title:"System Notice",close:"Got it"},common:{loading:"Loading…",cancel:"Cancel",save:"Save",search:"Search",refresh:"Refresh",copy:"Copy",copied:"Copied",copyFailed:"Copy failed",close:"Close",actions:"Actions",all:"All",query:"Query",reset:"Reset",previousPage:"Previous",nextPage:"Next",pagerInfo:"{total} records · page {page}/{pages}",text:"Text",file:"File",success:"Success",failed:"Failed",denied:"Denied",none:"-"},time:{forever:"Never expires",permanent:"Permanent",expired:"Expired",lessThanMinute:"less than a minute",minutes:"{n} min",hoursMinutes:"{h} h {m} min",daysHours:"{d} d {h} h"},expireStyle:{day:"Days",hour:"Hours",minute:"Minutes",count:"Times",forever:"Forever"},home:{heroTitle:"{name} · File Drop",heroDesc:"No signup — share text or files and hand over a pickup code",pickupPlaceholder:"Enter a pickup code",pickupButton:"Pick up",pickupRequired:"Please enter a pickup code",tabText:"Share text",tabFile:"Share file",textContent:"Text content",textPlaceholder:"Paste the text or code snippet to share…",textBytes:"{bytes} / 222 KB (use file sharing for larger content)",textTooLong:"Content too long (over 222KB) — please share it as a file instead",textRequired:"Enter the text to share",customCode:"Custom pickup code (optional)",customCodeHint:"Leave empty for random; 4-8 letters/digits",customCodeInvalid:"Pickup code must be 4-8 letters or digits",customCodeTaken:"This pickup code is already taken",generateCode:"Generate code",fileRequired:"Please choose a file to share",fileTooLarge:"File exceeds the size limit (max {size})",chunkedUploading:"Chunked upload",uploading:"Uploading",uploadingDots:"Uploading…",uploadAndShare:"Upload & generate code",uploadDisabled:"Guest uploads are disabled. Please contact the administrator if you need to share.",shareAnother:"Share another one",textShared:"Text shared",fileShared:"File shared",uploadCancelled:"Upload cancelled",shareFailed:"Share failed, please try again later",uploadFailed:"Upload failed, please retry",rateLimited:"Too many requests, please slow down",notInitialized:"System is not initialized yet. An administrator must finish the setup first."},result:{badge:"Shared",code:"Pickup code",link:"Pickup link",copyLink:"Copy link",copyLinkCode:"Copy link & code",copyCode:"Copy code",codeCopied:"Pickup code copied",linkCopied:"Pickup link copied",linkCodeCopied:"Link and code copied",clickCopyCode:"Click to copy pickup code",expires:"Expires in: {value}",forever:"Forever",hint:"Send the code or link to the recipient; they can pick it up from the home page.",copyFailed:"Copy failed — please select the text manually"},pickup:{emptyCode:"Pickup code is empty",querying:"Looking up code {code} …",failed:"Pickup failed",failedDefault:"Pickup failed, please try again later",notFound:"Code not found or the share has expired",confirmHint:"Double-check the code, or ask the sender to share it again",retryPlaceholder:"Enter another pickup code",retryButton:"Try again",remainingUnlimited:"Unlimited",remainingCount:"{n} left",expireAt:"Expires: {time}",loadingText:"Fetching content…",copyContent:"Copy content",downloadTxt:"Download as .txt",downloaded:"Download complete",downloadFailed:"Download failed, please retry",copied:"Content copied",sizeUsed:"Size {size} · picked up {n} times",downloading:"Downloading {percent}%",downloadFile:"Download ({size})"},expire:{value:"Amount",label:"Expires in",foreverOption:"Never expires",countOption:"After N pickups",countHint:"The share becomes invalid after the given number of pickups",timeHint:"Valid for {value} {unit}",foreverHint:"The share stays valid until an administrator deletes it",maxSecondsHint:"At most {value}",maxCountHint:"At most {n} pickups"},drop:{aria:"Choose or drop a file",zone:"Click to choose or drop a file here",maxSize:"Max {size} per file",noLimit:"A pickup code is generated after upload",remove:"Remove",tooLarge:"File size {size} exceeds the limit {limit}",typeHint:"Allowed types: {types}"},docs:{searchPlaceholder:"Search documentation…",notGenerated:"Docs not generated yet",buildHint:"They are collected from docs/api/*.md at build time",noMatch:"No matching sections",tocTitle:"On this page",loading:"Loading document…",preparing:"API docs are on the way",preparingHint:"Sources live in the project docs/api/ directory (each .md is one section). Rebuild the frontend to embed them for offline use.",emptyContent:"Document is empty",loadFailed:'Failed to load document "{title}"',sidebar:"Documentation sections"},openapi:{title:"OpenAPI 3.0 Specification",statusOk:"Loaded",statusError:"Failed to load spec",statusLoading:"Loading…",source:"Source: {source}",sourceEmbedded:"Embedded docs/openapi.yaml at build time",notAvailable:"openapi.yaml is not generated or cannot be accessed",notAvailableHint:"The spec file lives in the project docs/openapi.yaml. Rebuilding the frontend embeds it; you can also deploy it to {url} for runtime loading."},notFound:{title:"Page not found",desc:"The address may have changed",back:"Back home"},admin:{login:{title:"Administrator Sign-in",subtitle:"{name} · Admin Console",password:"Admin password",passwordPlaceholder:"Enter the admin password",submit:"Sign in",wrongPassword:"Incorrect password",failed:"Sign-in failed, please try again later",required:"Please enter the admin password",hint:"The password is configured by the deployer via env vars or system settings; repeated failures trigger IP rate limiting."},nav:{title:"Admin",files:"Files",audit:"Audit Log",settings:"Settings",logout:"Sign out",menu:"Admin menu",loggedOut:"Signed out"},files:{title:"File Management",totalRecords:"{total} shares in total",searchPlaceholder:"Search code / file name",batchDelete:"Delete selected",batchDeleteWithCount:"Delete selected ({count})",deleteSelectedTitle:"Delete {count} selected items",selectFirst:"Select rows first",loading:"Loading…",empty:"No shares yet",loadFailed:"Failed to load the file list",colCode:"Code",colName:"Name",colType:"Type",colSize:"Size",colUsed:"Picked",colRemaining:"Remaining",colExpireAt:"Expires",colStatus:"Status",colCreatedAt:"Created",remainingUnlimited:"∞",remainingCount:"{n} left",statusValid:"Active",statusExpired:"Expired",copyCode:"Copy code",copyLink:"Copy link",edit:"Edit",fetchText:"Fetch text",delete:"Delete",confirmDelete:'Delete "{name}"? This cannot be undone.',confirmBatchDelete:"Delete {count} selected shares? This cannot be undone.",deleteSuccess:"Deleted",batchDeleteSuccess:"Batch deleted",deleteFailed:"Delete failed",batchDeleteFailed:"Batch delete failed",nothingChanged:"Nothing changed",updateSuccess:"Updated",updateFailed:"Update failed",fetchTextFailed:"Failed to fetch content (the share may have expired)",linkCopied:"Pickup link copied",codeCopied:"Pickup code copied",editModalTitle:"Edit share",expireAtHint:"Expires at (leave empty for never)",expireCountHint:"Remaining pickups (-1 for unlimited)"},audit:{title:"Audit Log",subtitle:"Upload / download events: time, IP, UA, device, result, bytes and duration",action:"Action",result:"Result",actionUpload:"Upload",actionDownload:"Download",filterIp:"IP",filterStart:"Start time",filterEnd:"End time",empty:"No audit records yet (only upload / download actions are recorded)",loadFailed:"Failed to load the audit log",colTime:"Time",colAction:"Action",colResult:"Result",colFile:"File",colCode:"Code",colBytes:"Bytes",colIp:"IP",colDevice:"Device",colDuration:"Duration",colUaError:"UA / Error"},settings:{title:"System Settings",subtitle:"Site name and branding (custom values win; leave empty to restore built-in defaults)",restoreDefaults:"Restore defaults",restoreDefaultsDone:"Defaults filled in — click save to apply",loading:"Loading settings…",loadFailed:"Failed to load settings",sectionBasic:"Basic",siteName:"Site name · site_name",siteNameHint:"Shown in the nav bar, login page and browser title",siteDomain:"Public site domain",siteDomainHint:"http(s)://host[:port], no path; leave empty to use the current address in share links",sectionLogo:"Nav logo",logoUrl:"Logo image URL · logo_url",uploadImage:"Upload image",logoHint:"Enter a URL or upload a local image (≤256KB, stored inline); leave empty for the built-in default",imageTooLarge:"Image exceeds 256KB — compress it or paste an image URL instead",imageLoaded:"Image loaded — click save to apply site-wide",imageReadFailed:"Failed to read the image",navPreview:"Nav bar preview:",sectionFavicon:"Browser favicon",faviconUrl:"Favicon URL · favicon_url",faviconHint:"Use a square PNG/ICO; leave empty for the built-in default",faviconPreviewHint:"Browser tab icon (applied after saving and refreshing)",saveAll:"Save settings (applies site-wide)",saved:"Settings saved site-wide",saveFailed:"Save failed",sectionPassword:"Change admin password",passwordHint:"After saving, all signed-in sessions are invalidated and you must sign in again",oldPassword:"Old password",newPassword:"New password (at least 6 characters)",confirmPassword:"Confirm new password",pwdRequired:"Please fill in the old and new passwords",pwdTooShort:"The new password must be at least 6 characters",pwdMismatch:"The two passwords do not match",pwdChanged:"Password changed — please sign in again with the new password",pwdChangeFailed:"Change failed",pwdWrong:"Old password is incorrect",sectionBackground:"Background image",backgroundUrl:"Background URL · background_url",backgroundHint:"http(s) image URL, data:image image or site-relative path (≤2048 chars); leave empty for the theme default",sectionFooter:"Footer",footerText:"Footer text · footer_text",footerTextHint:"Shown at the page bottom as plain text (≤2000 chars); leave empty for the default tagline",footerBeian:"ICP filing number · footer_beian",footerBeianHint:"e.g. 京ICP备2024xxxxxx号-1 (≤128 chars)",sectionNotify:"System notice",notifyEnabled:"Show floating notice · notify_enabled",notifyTitle:"Notice title · notify_title",notifyTitleHint:'Leave empty for the default title "System Notice" (≤128 chars)',notifyContent:"Notice content · notify_content",notifyContentHint:"Controlled HTML such as is allowed (≤2000 chars)",sectionSavePolicy:"Save policy",maxSaveSeconds:"Max save seconds · max_save_seconds",maxSaveSecondsHint:"0 = unlimited (server default 7-day fallback), max {max} seconds (365 days)",maxSaveCount:"Max pickup count · max_save_count",maxSaveCountHint:"0 = unlimited, max {max}",sectionStorage:"Storage policy",maxFileSize:"Max file size · max_file_size (bytes)",maxFileSizeHint:"0 = fall back to uploadSize (currently {fallback}), max {max} bytes (10 GiB)",allowedFileTypes:"Allowed types · allowed_file_types",allowedFileTypesHint:"Comma separated: extensions (jpg) or MIME (image/*); * means no limit",sectionUploadRate:"Upload rate limit",uploadCount:"Uploads per window · uploadCount",uploadCountHint:"Min 1, max {max}",uploadMinute:"Window length (minutes) · uploadMinute",uploadMinuteHint:"Min 1, max {max}",unitHour:"Hour(s)",unitDay:"Day(s)",unitMB:"MB",unitGB:"GB",maxSaveTime:"Max save time · max_save_seconds",maxSaveTimeHint:"0 = unlimited (server default 7-day fallback), max 365 days",saveTimeUnlimited:"Unlimited (0)",maxFileSizeFriendly:"Max file size · max_file_size",maxFileSizeHintV3:"0 = fall back to uploadSize (current {fallback}), max 10 GB",sizeUnlimited:"Unlimited (0)",sectionEngine:"Storage engine",engineCurrent:"Current engine",engineLocal:"Local storage",engineWebdav:"WebDAV",engineS3:"S3 object storage",engineSwitch:"Switch to this engine",engineSwitching:"Switching…",engineSwitchOk:"Storage engine switched to {engine}",engineSwitchFail:"Switch failed (previous engine kept)",engineParamsTitle:"Engine parameters",engineParamsSaved:"Engine parameters saved",localRoot:"Storage root · local_storage_path",localRootHint:"Empty = system default data directory; applies to new writes",webdavUrl:"Server URL · webdav_url",webdavUrlHint:"e.g. https://dav.example.com/dav/",webdavRoot:"Remote root · webdav_root_path",webdavRootHint:"Remote base directory (created recursively if missing)",webdavUser:"Username · webdav_username",webdavPass:"Password · webdav_password",secretKeepHint:"Empty or ****** = keep unchanged",s3Endpoint:"Endpoint · s3_endpoint_url",s3EndpointHint:"e.g. https://s3.example.com:9000 (leave empty for AWS)",s3Bucket:"Bucket · s3_bucket_name",s3Region:"Region · s3_region_name",s3Ak:"AccessKeyID · s3_access_key_id",s3Sk:"SecretAccessKey · s3_secret_access_key",s3Token:"Session token · aws_session_token (optional)",s3Style:"Addressing style · s3_addressing_style",styleAuto:"auto",stylePath:"path (typical for MinIO)",styleVirtual:"virtual-hosted",engineParamsSave:"Save engine parameters",approxSize:"≈ {size}"}}},Hd="fcb_locale";function PE(){try{const e=localStorage.getItem(Hd);return e==="zh-CN"||e==="en-US"?e:null}catch{return null}}function IE(){const e=PE();return e||(((typeof navigator<"u"?navigator.language:"en")??"en").toLowerCase().startsWith("zh")?"zh-CN":"en-US")}function AE(e){try{localStorage.setItem(Hd,e)}catch{}}const Ir=pE({legacy:!1,locale:IE(),fallbackLocale:"zh-CN",messages:{"zh-CN":EE,"en-US":TE},missingWarn:!1,fallbackWarn:!1});function Ac(){return Ir.global.locale.value??"zh-CN"}function LT(e){Ir.global.locale.value=e,document.documentElement.lang=e,AE(e)}Ir.global.t;function vo(e,t){return Ir.global.t(e,t??{})}function wT(e){if(e==null||Number.isNaN(e))return"-";if(e<1024)return`${e} B`;const t=["KB","MB","GB","TB"];let o=e,r=-1;do o/=1024,r++;while(o>=1024&&r=100?0:1)} ${t[r]}`}function DT(e){if(!e)return"-";const t=new Date(e);if(Number.isNaN(t.getTime()))return String(e);const o=r=>`${r}`.padStart(2,"0");return`${t.getFullYear()}-${o(t.getMonth()+1)}-${o(t.getDate())} ${o(t.getHours())}:${o(t.getMinutes())}:${o(t.getSeconds())}`}function RT(e){if(!e)return vo("time.forever");const t=new Date(e).getTime();if(Number.isNaN(t))return vo("time.forever");const o=t-Date.now();if(o<=0)return vo("time.expired");const r=Math.floor(o/6e4);if(r<1)return vo("time.lessThanMinute");if(r<60)return vo("time.minutes",{n:r});const n=Math.floor(r/60);if(n<24)return vo("time.hoursMinutes",{h:n,m:r%60});const i=Math.floor(n/24);return vo("time.daysHours",{d:i,h:n%24})}function FT(e){return e==null?"-":e<1e3?`${e} ms`:`${(e/1e3).toFixed(2)} s`}const LE=[{value:"day",label:"day"},{value:"hour",label:"hour"},{value:"minute",label:"minute"},{value:"count",label:"count"},{value:"forever",label:"forever"}];function OT(e){const t=LE.find(o=>o.value===e);return t?vo(`expireStyle.${t.value}`):e}function NT(e){if(!e)return null;const t=/filename\*=(?:UTF-8'')?([^;]+)/i.exec(e);if(t)try{return decodeURIComponent(t[1].replace(/["']/g,"").trim())}catch{}const o=/filename="?([^";]+)"?/i.exec(e);return o?o[1]:null}function MT(e,t){const o=URL.createObjectURL(e),r=document.createElement("a");r.href=o,r.download=t,document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(o),5e3)}async function kT(e){try{return await navigator.clipboard.writeText(e),!0}catch{try{const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();const o=document.execCommand("copy");return t.remove(),o}catch{return!1}}}async function HT(e){const t=await crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(t)).map(o=>o.toString(16).padStart(2,"0")).join("")}function De(e,t){for(const o of t)if(e&&typeof e=="object"&&o in e&&e[o]!==void 0&&e[o]!==null)return e[o]}const wE="/assets/logo-CBe6oOaL.svg",DE="/assets/favicon-Dl6ZLL7S.png",RE=wE,FE=DE,tl="文件快传";function ol(e,t=!0){return e==null?t:typeof e=="boolean"?e:typeof e=="number"?e!==0:String(e)!=="0"&&String(e)!=="false"&&String(e)!==""}function Lc(e){return Array.isArray(e)?e.map(t=>String(t).trim()).filter(Boolean):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function ar(e,t){const o=Number(e);return Number.isFinite(o)?o:t}const OE=Xu("config",{state:()=>({loaded:!1,loading:!1,siteName:tl,siteDomain:"",description:"",explain:"",uploadSize:10*1024*1024,allowedFileTypes:[],expireStyle:["day","hour","minute","forever","count"],enableChunk:!1,openUpload:!0,notifyEnabled:!1,notifyTitle:"",notifyContent:"",logoUrl:"",faviconUrl:"",backgroundUrl:"",footerText:"",footerBeian:"",maxFileSize:0,maxSaveSeconds:0,maxSaveCount:0,uploadCount:0,uploadMinute:0}),getters:{displayLogoUrl:e=>e.logoUrl?.trim()?e.logoUrl:RE,displayFaviconUrl:e=>e.faviconUrl?.trim()?e.faviconUrl:FE,displayName:e=>e.siteName?.trim()?e.siteName:tl,shareLinkBase:e=>e.siteDomain?.trim()?e.siteDomain.trim().replace(/\/$/,""):location.origin,effectiveMaxFileSize(){return this.maxFileSize>0?this.maxFileSize:this.uploadSize}},actions:{async load(){this.loading=!0;try{const e=await gS(ed.publicConfig,{timeout:8e3}),t=De(e,["config"])??e;this.siteName=String(De(t,["name","site_name","siteName"])??tl),this.siteDomain=String(De(t,["site_domain","siteDomain"])??"").trim(),this.description=String(De(t,["description"])??""),this.explain=String(De(t,["explain","page_explain"])??""),this.uploadSize=ar(De(t,["uploadSize","upload_size"]),10*1024*1024),this.allowedFileTypes=Lc(De(t,["allowedFileTypes","allowed_file_types"]));const o=Lc(De(t,["expireStyle","expire_style"]));o.length&&(this.expireStyle=o),this.enableChunk=ol(De(t,["enableChunk","enable_chunk"]),!1),this.openUpload=ol(De(t,["openUpload","open_upload"]),!0),this.notifyTitle=String(De(t,["notify_title","notifyTitle"])??""),this.notifyContent=String(De(t,["notify_content","notifyContent"])??""),this.notifyEnabled=ol(De(t,["notify_enabled","notifyEnabled"]),!1),this.backgroundUrl=String(De(t,["background_url","backgroundUrl"])??"").trim(),this.footerText=String(De(t,["footer_text","footerText"])??""),this.footerBeian=String(De(t,["footer_beian","footerBeian"])??""),this.maxFileSize=ar(De(t,["max_file_size","maxFileSize","maxFileSize"]),0),this.maxSaveSeconds=ar(De(t,["max_save_seconds","maxSaveSeconds"]),0),this.maxSaveCount=ar(De(t,["max_save_count","maxSaveCount"]),0),this.uploadCount=ar(De(t,["uploadCount","upload_count"]),0),this.uploadMinute=ar(De(t,["uploadMinute","upload_minute"]),0),this.logoUrl=String(De(t,["logo_url","logoUrl"])??"").trim(),this.faviconUrl=String(De(t,["favicon_url","faviconUrl"])??"").trim(),this.loaded=!0,this.applyToDocument()}catch{}finally{this.loading=!1}},applyToDocument(){let e=document.querySelector('link[rel="icon"]');e||(e=document.createElement("link"),e.rel="icon",document.head.appendChild(e)),e.href=this.displayFaviconUrl}}}),$T=["light","dark","system"],$d="fcb_theme_mode";function NE(){try{const e=localStorage.getItem($d);return e==="light"||e==="dark"||e==="system"?e:null}catch{return null}}function ME(e){try{localStorage.setItem($d,e)}catch{}}function Bd(){return typeof matchMedia=="function"&&matchMedia("(prefers-color-scheme: dark)").matches}const Do=mt(NE()??"system"),qn=mt(Do.value==="system"?Bd()?"dark":"light":Do.value);let wc=!1;function kE(){if(wc||typeof matchMedia!="function")return;wc=!0;const e=matchMedia("(prefers-color-scheme: dark)");e.addEventListener?.("change",()=>{Do.value==="system"&&(qn.value=e.matches?"dark":"light")})}function HE(){kE(),qn.value=Do.value==="system"?Bd()?"dark":"light":Do.value,document.documentElement.dataset.theme=qn.value}St(Do,HE,{immediate:!0});function $E(e){Do.value=e,ME(e)}function BE(){return{mode:Do,resolved:qn,setMode:$E}}let WE=0;const zE=Xu("toast",{state:()=>({items:[]}),actions:{push(e,t="info",o=3200){const r=++WE;this.items.push({id:r,type:t,text:e}),this.items.length>4&&this.items.shift(),setTimeout(()=>this.dismiss(r),o)},success(e){this.push(e,"success")},error(e){this.push(e,"error",4200)},info(e){this.push(e,"info")},dismiss(e){this.items=this.items.filter(t=>t.id!==e)}}}),UE={class:"toast-host","aria-live":"polite"},VE=["onClick"],jE={class:"toast-icon","aria-hidden":"true"},GE=po({__name:"ToastHost",setup(e){const t=zE();return(o,r)=>(Ft(),hr("div",UE,[(Ft(!0),hr(qe,null,tm(bt(t).items,n=>(Ft(),hr("div",{key:n.id,class:ii(["toast",`toast-${n.type}`]),role:"status",onClick:i=>bt(t).dismiss(n.id)},[Rt("span",jE,Dn(n.type==="success"?"✅":n.type==="error"?"⚠️":"ℹ️"),1),Rt("span",null,Dn(n.text),1)],10,VE))),128))]))}}),KE=["aria-label"],YE={class:"notify-head"},qE={class:"notify-title-text"},XE=["title","aria-label"],JE=["innerHTML"],QE=po({__name:"NotifyPop",props:{title:{},content:{}},emits:["close"],setup(e,{emit:t}){const o=t;return(r,n)=>(Ft(),hr("aside",{class:"notify-pop",role:"dialog","aria-live":"polite","aria-label":e.title||r.$t("notify.title")},[Rt("div",YE,[n[1]||(n[1]=Rt("span",{"aria-hidden":"true"},"🔔",-1)),Rt("span",qE,Dn(e.title||r.$t("notify.title")),1),Rt("button",{class:"notify-close",type:"button",title:r.$t("notify.close"),"aria-label":r.$t("notify.close"),onClick:n[0]||(n[0]=i=>o("close"))}," ✕ ",8,XE)]),Rt("div",{class:"notify-content",innerHTML:e.content},null,8,JE)],8,KE))}}),Wd=(e,t)=>{const o=e.__vccOpts||e;for(const[r,n]of t)o[r]=n;return o},ZE=Wd(QE,[["__scopeId","data-v-6154d8f4"]]),eT={class:"app-root"},tT={key:1,class:"app-bg-tint","aria-hidden":"true"},Dc="fcb_notify_read",oT=po({__name:"App",setup(e){const t=OE(),o=kg(),{resolved:r}=BE();St(Ac,d=>{document.documentElement.lang=d},{immediate:!0}),St([()=>o.fullPath,Ac,()=>t.displayName],()=>{const d=o.meta.titleKey,p=typeof d=="string"?Ir.global.t(d):t.displayName;document.title=`${p} · ${t.displayName}`},{immediate:!0});const n=fe(()=>r.value==="dark"?uS:null),i=fe(()=>r.value==="dark"?{common:{primaryColor:"#7d95ff",primaryColorHover:"#98abff",primaryColorPressed:"#6c86f5",primaryColorSuppl:"#98abff"}}:{common:{primaryColor:"#4f6ef7",primaryColorHover:"#3d5bf0",primaryColorPressed:"#4359e0",primaryColorSuppl:"#3d5bf0"}}),l=fe(()=>!!t.backgroundUrl.trim()),a=mt(!1),s=mt(!1);function c(){return`${t.notifyEnabled}|${t.notifyTitle}|${t.notifyContent}`}function u(){try{s.value=localStorage.getItem(Dc)===c()}catch{s.value=!1}}function f(){a.value=!1,s.value=!0;try{localStorage.setItem(Dc,c())}catch{}}return St(()=>[t.loaded,c()],()=>{const d=s.value;u(),!(!d&&s.value)&&t.loaded&&t.notifyEnabled&&t.notifyContent.trim()&&!s.value&&(a.value=!0)}),pi(()=>{t.load(),u(),t.loaded&&t.notifyEnabled&&t.notifyContent.trim()&&!s.value&&(a.value=!0)}),(d,p)=>{const g=Qp("RouterView");return Ft(),Zr(bt(q_),{theme:n.value,"theme-overrides":i.value,"inline-theme-disabled":""},{default:du(()=>[Rt("div",eT,[p[0]||(p[0]=Rt("div",{class:"app-ambient","aria-hidden":"true"},null,-1)),l.value?(Ft(),hr("div",{key:0,class:"app-bg","aria-hidden":"true",style:ni({backgroundImage:`url(${bt(t).backgroundUrl})`})},null,4)):Ln("",!0),l.value?(Ft(),hr("div",tT)):Ln("",!0),a.value?(Ft(),Zr(ZE,{key:2,title:bt(t).notifyTitle,content:bt(t).notifyContent,onClose:f},null,8,["title","content"])):Ln("",!0),je(GE),je(g)])]),_:1},8,["theme","theme-overrides"])}}}),rT=Wd(oT,[["__scopeId","data-v-b2dd3b97"]]),nT="modulepreload",iT=function(e){return"/"+e},Rc={},Dt=function(t,o,r){let n=Promise.resolve();if(o&&o.length>0){let s=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),a=l?.nonce||l?.getAttribute("nonce");n=s(o.map(c=>{if(c=iT(c),c in Rc)return;Rc[c]=!0;const u=c.endsWith(".css"),f=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${f}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":nT,u||(d.as="script"),d.crossOrigin="",d.href=c,a&&d.setAttribute("nonce",a),document.head.appendChild(d),u)return new Promise((p,g)=>{d.addEventListener("load",p),d.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(l){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=l,window.dispatchEvent(a),!a.defaultPrevented)throw l}return n.then(l=>{for(const a of l||[])a.status==="rejected"&&i(a.reason);return t().catch(i)})},lT=mg(),Xn=Mg({history:lT,routes:[{path:"/",name:"home",component:()=>Dt(()=>import("./HomeView-D38U_AAJ.js"),__vite__mapDeps([0,1,2,3,4,5])),meta:{titleKey:"nav.home"}},{path:"/s/:code",name:"pickup",component:()=>Dt(()=>import("./PickupView-ClAAhXsM.js"),__vite__mapDeps([6,1,2,3,4])),meta:{titleKey:"nav.home"}},{path:"/admin/login",name:"admin-login",component:()=>Dt(()=>import("./LoginView-BnVXNxFO.js"),__vite__mapDeps([7,1,2,3,8,9,10])),meta:{titleKey:"admin.nav.title"}},{path:"/admin",component:()=>Dt(()=>import("./AdminLayout-DJ2FR9f-.js"),__vite__mapDeps([11,2,8,9])),meta:{requiresAuth:!0,titleKey:"admin.nav.title"},children:[{path:"",redirect:{name:"admin-files"}},{path:"files",name:"admin-files",component:()=>Dt(()=>import("./FilesView-ZJ5eqPp5.js"),__vite__mapDeps([12,9,4,13])),meta:{titleKey:"admin.nav.files"}},{path:"audit",name:"admin-audit",component:()=>Dt(()=>import("./AuditView-BHN4e5xt.js"),__vite__mapDeps([14,9,13,15])),meta:{titleKey:"admin.nav.audit"}},{path:"settings",name:"admin-settings",component:()=>Dt(()=>import("./SettingsView-CjSvbH8z.js"),__vite__mapDeps([16,9,8,17])),meta:{titleKey:"admin.nav.settings"}}]},{path:"/docs",name:"docs",component:()=>Dt(()=>import("./DocsView-Ds78oqBY.js"),__vite__mapDeps([18,1,2,3,19,20])),meta:{titleKey:"nav.docs"}},{path:"/docs/:slug",name:"docs-detail",component:()=>Dt(()=>import("./DocsView-Ds78oqBY.js"),__vite__mapDeps([18,1,2,3,19,20])),meta:{titleKey:"nav.docs"}},{path:"/openapi",name:"openapi",component:()=>Dt(()=>import("./OpenApiView-4SbIV1Bx.js"),__vite__mapDeps([21,1,2,3,22,19,23])),meta:{titleKey:"nav.openapi"}},{path:"/:pathMatch(.*)*",name:"not-found",component:()=>Dt(()=>import("./NotFoundView-CbfqSXyJ.js"),__vite__mapDeps([24,1,2,3])),meta:{titleKey:"notFound.title"}}],scrollBehavior(e,t,o){return o||(e.hash?{el:e.hash,behavior:"smooth"}:{top:0})}});Xn.beforeEach(e=>{if(e.meta.requiresAuth&&!localStorage.getItem("fcb_admin_token"))return{name:"admin-login",query:{redirect:e.fullPath}}});hS(()=>{const e=Xn.currentRoute.value;e.name!=="admin-login"&&Xn.push({name:"admin-login",query:{redirect:e.fullPath}})});const Li=Sh(rT);Li.use(Th());Li.use(Ir);Li.use(Xn);Li.mount("#app");export{FT as $,du as A,CT as B,sT as C,pT as D,LE as E,qe as F,je as G,st as H,pi as I,St as J,DT as K,RT as L,MT as M,kg as N,Qp as O,Su as P,fT as Q,fn as R,De as S,uT as T,IT as U,Zf as V,td as W,NT as X,AT as Y,mT as Z,Wd as _,OE as a,Ze as a0,Yl as a1,Il as a2,Bx as a3,Jl as a4,Vs as a5,Nx as a6,en as a7,Je as a8,pn as a9,Ac as aA,LT as aB,BE as aC,PT as aD,Io as aa,ET as ab,cT as ac,Sl as ad,Ds as ae,ll as af,TT as ag,Wr as ah,dT as ai,ua as aj,xT as ak,_T as al,aT as am,n_ as an,C0 as ao,J as ap,vT as aq,ST as ar,c_ as as,yT as at,Dm as au,Xu as av,od as aw,mS as ax,Dt as ay,$T as az,Rt as b,hr as c,po as d,ii as e,bt as f,Ln as g,fe as h,zE as i,mt as j,kT as k,OT as l,gT as m,ni as n,Ft as o,dS as p,wm as q,tm as r,wT as s,Dn as t,Sa as u,gS as v,hT as w,ed as x,HT as y,Zr as z}; +`,i=t.needIndent?t.needIndent:o!=="arrow",l=e.helpers||[],a=qS(e,{filename:r,breakLineCode:n,needIndent:i});a.push(o==="normal"?"function __msg__ (ctx) {":"(ctx) => {"),a.indent(i),l.length>0&&(a.push(`const { ${sd(l.map(u=>`${u}: _${u}`),", ")} } = ctx`),a.newline()),a.push("return "),xr(a,e),a.deindent(i),a.push("}"),delete e.helpers;const{code:s,map:c}=a.context();return{ast:e,code:s,map:c?c.toJSON():void 0}};function ty(e,t={}){const o=ad({},t),r=!!o.jit,n=!!o.minify,i=o.optimize==null?!0:o.optimize,a=US(o).parse(e);return r?(i&&GS(a),n&&ur(a),{ast:a,code:""}):(jS(a,o),ey(a,o))}function oy(){typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(io().__INTLIFY_PROD_DEVTOOLS__=!1),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(io().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(io().__INTLIFY_DROP_MESSAGE_COMPILER__=!1)}function Kt(e){return Ce(e)&&Ca(e)===0&&(Ot(e,"b")||Ot(e,"body"))}const cd=["b","body"];function ry(e){return Oo(e,cd)}const ud=["c","cases"];function ny(e){return Oo(e,ud,[])}const fd=["s","static"];function iy(e){return Oo(e,fd)}const dd=["i","items"];function ly(e){return Oo(e,dd,[])}const pd=["t","type"];function Ca(e){return Oo(e,pd)}const md=["v","value"];function Pn(e,t){const o=Oo(e,md);if(o!=null)return o;throw an(t)}const hd=["m","modifier"];function ay(e){return Oo(e,hd)}const gd=["k","key"];function sy(e){const t=Oo(e,gd);if(t)return t;throw an(6)}function Oo(e,t,o){for(let r=0;r{l===void 0?l=a:l+=a},d[1]=()=>{l!==void 0&&(t.push(l),l=void 0)},d[2]=()=>{d[0](),n++},d[3]=()=>{if(n>0)n--,r=4,d[0]();else{if(n=0,l===void 0||(l=py(l),l===!1))return!1;d[1]()}};function p(){const g=e[o+1];if(r===5&&g==="'"||r===6&&g==='"')return o++,a="\\"+g,d[0](),!0}for(;r!==null;)if(o++,i=e[o],!(i==="\\"&&p())){if(s=dy(i),f=No[r],c=f[s]||f.l||8,c===8||(r=c[0],c[1]!==void 0&&(u=d[c[1]],u&&(a=i,u()===!1))))return;if(r===7)return t}}const ec=new Map;function hy(e,t){return Ce(e)?e[t]:null}function gy(e,t){if(!Ce(e))return null;let o=ec.get(t);if(o||(o=my(t),o&&ec.set(t,o)),!o)return null;const r=o.length;let n=e,i=0;for(;ie,by=e=>"",xy="text",_y=e=>e.length===0?"":ES(e),vy=yS;function tc(e,t){return e=Math.abs(e),t===2?e?e>1?1:0:1:e?Math.min(e,2):0}function Sy(e){const t=Me(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(Me(e.named.count)||Me(e.named.n))?Me(e.named.count)?e.named.count:Me(e.named.n)?e.named.n:t:t}function yy(e,t){t.count||(t.count=e),t.n||(t.n=e)}function Ey(e={}){const t=e.locale,o=Sy(e),r=Ce(e.pluralRules)&&K(t)&&Pe(e.pluralRules[t])?e.pluralRules[t]:tc,n=Ce(e.pluralRules)&&K(t)&&Pe(e.pluralRules[t])?tc:void 0,i=E=>E[r(o,E.length,n)],l=e.list||[],a=E=>l[E],s=e.named||ve();Me(e.pluralIndex)&&yy(o,s);const c=E=>s[E];function u(E){const T=Pe(e.messages)?e.messages(E):Ce(e.messages)?e.messages[E]:!1;return T||(e.parent?e.parent.message(E):by)}const f=E=>e.modifiers?e.modifiers[E]:Cy,d=ae(e.processor)&&Pe(e.processor.normalize)?e.processor.normalize:_y,p=ae(e.processor)&&Pe(e.processor.interpolate)?e.processor.interpolate:vy,g=ae(e.processor)&&K(e.processor.type)?e.processor.type:xy,S={list:a,named:c,plural:i,linked:(E,...T)=>{const[v,y]=T;let L="text",w="";T.length===1?Ce(v)?(w=v.modifier||w,L=v.type||L):K(v)&&(w=v||w):T.length===2&&(K(v)&&(w=v||w),K(y)&&(L=y||L));const D=u(E)(S),F=L==="vnode"&&Ae(D)&&w?D[0]:D;return w?f(w)(F,L):F},message:u,type:g,interpolate:p,normalize:d,values:Ge(ve(),l,s)};return S}let sn=null;function Ty(e){sn=e}function Py(e,t,o){sn&&sn.emit("i18n:init",{timestamp:Date.now(),i18n:e,version:t,meta:o})}const Iy=Ay("function:translate");function Ay(e){return t=>sn&&sn.emit(e,t)}const Ly=ha.__EXTEND_POINT__,Wo=Pi(Ly),wy={FALLBACK_TO_TRANSLATE:Wo(),CANNOT_FORMAT_NUMBER:Wo(),FALLBACK_TO_NUMBER_FORMAT:Wo(),CANNOT_FORMAT_DATE:Wo(),FALLBACK_TO_DATE_FORMAT:Wo(),EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER:Wo(),__EXTEND_POINT__:Wo()},bd=ie.__EXTEND_POINT__,zo=Pi(bd),Nt={INVALID_ARGUMENT:bd,INVALID_DATE_ARGUMENT:zo(),INVALID_ISO_DATE_ARGUMENT:zo(),NOT_SUPPORT_NON_STRING_MESSAGE:zo(),NOT_SUPPORT_LOCALE_PROMISE_VALUE:zo(),NOT_SUPPORT_LOCALE_ASYNC_FUNCTION:zo(),NOT_SUPPORT_LOCALE_TYPE:zo(),__EXTEND_POINT__:zo()};function jt(e){return Pr(e,null,void 0)}function ba(e,t){return t.locale!=null?oc(t.locale):oc(e.locale)}let Qi;function oc(e){if(K(e))return e;if(Pe(e)){if(e.resolvedOnce&&Qi!=null)return Qi;if(e.constructor.name==="Function"){const t=e();if(SS(t))throw jt(Nt.NOT_SUPPORT_LOCALE_PROMISE_VALUE);return Qi=t}else throw jt(Nt.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION)}else throw jt(Nt.NOT_SUPPORT_LOCALE_TYPE)}function Dy(e,t,o){return[...new Set([o,...Ae(t)?t:Ce(t)?Object.keys(t):K(t)?[t]:[o]])]}function xd(e,t,o){const r=K(o)?o:_r,n=e;n.__localeChainCache||(n.__localeChainCache=new Map);let i=n.__localeChainCache.get(r);if(!i){i=[];let l=[o];for(;Ae(l);)l=rc(i,l,t);const a=Ae(t)||!ae(t)?t:t.default?t.default:null;l=K(a)?[a]:a,Ae(l)&&rc(i,l,!1),n.__localeChainCache.set(r,i)}return i}function rc(e,t,o){let r=!0;for(let n=0;n`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;function Ny(){return{upper:(e,t)=>t==="text"&&K(e)?e.toUpperCase():t==="vnode"&&Ce(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>t==="text"&&K(e)?e.toLowerCase():t==="vnode"&&Ce(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>t==="text"&&K(e)?ic(e):t==="vnode"&&Ce(e)&&"__v_isVNode"in e?ic(e.children):e}}let _d;function lc(e){_d=e}let vd;function My(e){vd=e}let Sd;function ky(e){Sd=e}let yd=null;const Hy=e=>{yd=e},$y=()=>yd;let Ed=null;const ac=e=>{Ed=e},By=()=>Ed;let sc=0;function Wy(e={}){const t=Pe(e.onWarn)?e.onWarn:TS,o=K(e.version)?e.version:Oy,r=K(e.locale)||Pe(e.locale)?e.locale:_r,n=Pe(r)?_r:r,i=Ae(e.fallbackLocale)||ae(e.fallbackLocale)||K(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:n,l=ae(e.messages)?e.messages:Zi(n),a=ae(e.datetimeFormats)?e.datetimeFormats:Zi(n),s=ae(e.numberFormats)?e.numberFormats:Zi(n),c=Ge(ve(),e.modifiers,Ny()),u=e.pluralRules||ve(),f=Pe(e.missing)?e.missing:null,d=pe(e.missingWarn)||wo(e.missingWarn)?e.missingWarn:!0,p=pe(e.fallbackWarn)||wo(e.fallbackWarn)?e.fallbackWarn:!0,g=!!e.fallbackFormat,C=!!e.unresolving,S=Pe(e.postTranslation)?e.postTranslation:null,E=ae(e.processor)?e.processor:null,T=pe(e.warnHtmlMessage)?e.warnHtmlMessage:!0,v=!!e.escapeParameter,y=Pe(e.messageCompiler)?e.messageCompiler:_d,L=Pe(e.messageResolver)?e.messageResolver:vd||hy,w=Pe(e.localeFallbacker)?e.localeFallbacker:Sd||Dy,D=Ce(e.fallbackContext)?e.fallbackContext:void 0,F=e,P=Ce(F.__datetimeFormatters)?F.__datetimeFormatters:new Map,U=Ce(F.__numberFormatters)?F.__numberFormatters:new Map,X=Ce(F.__meta)?F.__meta:{};sc++;const k={version:o,cid:sc,locale:r,fallbackLocale:i,messages:l,modifiers:c,pluralRules:u,missing:f,missingWarn:d,fallbackWarn:p,fallbackFormat:g,unresolving:C,postTranslation:S,processor:E,warnHtmlMessage:T,escapeParameter:v,messageCompiler:y,messageResolver:L,localeFallbacker:w,fallbackContext:D,onWarn:t,__meta:X};return k.datetimeFormats=a,k.numberFormats=s,k.__datetimeFormatters=P,k.__numberFormatters=U,__INTLIFY_PROD_DEVTOOLS__&&Py(k,o,X),k}const Zi=e=>({[e]:ve()});function xa(e,t,o,r,n){const{missing:i,onWarn:l}=e;if(i!==null){const a=i(e,o,t,n);return K(a)?a:t}else return t}function Fr(e,t,o){const r=e;r.__localeChainCache=new Map,e.localeFallbacker(e,o,t)}function zy(e,t){return e===t?!1:e.split("-")[0]===t.split("-")[0]}function Uy(e,t){const o=t.indexOf(e);if(o===-1)return!1;for(let r=o+1;rVy(o,e)}function Vy(e,t){const o=ry(t);if(o==null)throw an(0);if(Ca(o)===1){const i=ny(o);return e.plural(i.reduce((l,a)=>[...l,cc(e,a)],[]))}else return cc(e,o)}function cc(e,t){const o=iy(t);if(o!=null)return e.type==="text"?o:e.normalize([o]);{const r=ly(t).reduce((n,i)=>[...n,wl(e,i)],[]);return e.normalize(r)}}function wl(e,t){const o=Ca(t);switch(o){case 3:return Pn(t,o);case 9:return Pn(t,o);case 4:{const r=t;if(Ot(r,"k")&&r.k)return e.interpolate(e.named(r.k));if(Ot(r,"key")&&r.key)return e.interpolate(e.named(r.key));throw an(o)}case 5:{const r=t;if(Ot(r,"i")&&Me(r.i))return e.interpolate(e.list(r.i));if(Ot(r,"index")&&Me(r.index))return e.interpolate(e.list(r.index));throw an(o)}case 6:{const r=t,n=ay(r),i=sy(r);return e.linked(wl(e,i),n?wl(e,n):void 0,e.type)}case 7:return Pn(t,o);case 8:return Pn(t,o);default:throw new Error(`unhandled node on format message part: ${o}`)}}const Td=e=>e;let fr=ve();function Pd(e,t={}){let o=!1;const r=t.onError||RS;return t.onError=n=>{o=!0,r(n)},{...ty(e,t),detectError:o}}const jy=(e,t)=>{if(!K(e))throw jt(Nt.NOT_SUPPORT_NON_STRING_MESSAGE);{pe(t.warnHtmlMessage)&&t.warnHtmlMessage;const r=(t.onCacheKey||Td)(e),n=fr[r];if(n)return n;const{code:i,detectError:l}=Pd(e,t),a=new Function(`return ${i}`)();return l?a:fr[r]=a}};function Gy(e,t){if(__INTLIFY_JIT_COMPILATION__&&!__INTLIFY_DROP_MESSAGE_COMPILER__&&K(e)){pe(t.warnHtmlMessage)&&t.warnHtmlMessage;const r=(t.onCacheKey||Td)(e),n=fr[r];if(n)return n;const{ast:i,detectError:l}=Pd(e,{...t,location:!1,jit:!0}),a=el(i);return l?a:fr[r]=a}else{const o=e.cacheKey;if(o){const r=fr[o];return r||(fr[o]=el(e))}else return el(e)}}const uc=()=>"",At=e=>Pe(e);function fc(e,...t){const{fallbackFormat:o,postTranslation:r,unresolving:n,messageCompiler:i,fallbackLocale:l,messages:a}=e,[s,c]=Dl(...t),u=pe(c.missingWarn)?c.missingWarn:e.missingWarn,f=pe(c.fallbackWarn)?c.fallbackWarn:e.fallbackWarn,d=pe(c.escapeParameter)?c.escapeParameter:e.escapeParameter,p=!!c.resolvedMessage,g=K(c.default)||pe(c.default)?pe(c.default)?i?s:()=>s:c.default:o?i?s:()=>s:"",C=o||g!=="",S=ba(e,c);d&&Ky(c);let[E,T,v]=p?[s,S,a[S]||ve()]:Id(e,s,S,l,f,u),y=E,L=s;if(!p&&!(K(y)||Kt(y)||At(y))&&C&&(y=g,L=y),!p&&(!(K(y)||Kt(y)||At(y))||!K(T)))return n?Ii:s;let w=!1;const D=()=>{w=!0},F=At(y)?y:Ad(e,s,T,y,L,D);if(w)return y;const P=Xy(e,T,v,c),U=Ey(P),X=Yy(e,F,U),k=r?r(X,s):X;if(__INTLIFY_PROD_DEVTOOLS__){const Q={timestamp:Date.now(),key:K(s)?s:At(y)?y.key:"",locale:T||(At(y)?y.locale:""),format:K(y)?y:At(y)?y.source:"",message:k};Q.meta=Ge({},e.__meta,$y()||{}),Iy(Q)}return k}function Ky(e){Ae(e.list)?e.list=e.list.map(t=>K(t)?qs(t):t):Ce(e.named)&&Object.keys(e.named).forEach(t=>{K(e.named[t])&&(e.named[t]=qs(e.named[t]))})}function Id(e,t,o,r,n,i){const{messages:l,onWarn:a,messageResolver:s,localeFallbacker:c}=e,u=c(e,r,o);let f=ve(),d,p=null;const g="translate";for(let C=0;Cr);return c.locale=o,c.key=t,c}const s=l(r,qy(e,o,n,r,a,i));return s.locale=o,s.key=t,s.source=r,s}function Yy(e,t,o){return t(o)}function Dl(...e){const[t,o,r]=e,n=ve();if(!K(t)&&!Me(t)&&!At(t)&&!Kt(t))throw jt(Nt.INVALID_ARGUMENT);const i=Me(t)?String(t):(At(t),t);return Me(o)?n.plural=o:K(o)?n.default=o:ae(o)&&!Ti(o)?n.named=o:Ae(o)&&(n.list=o),Me(r)?n.plural=r:K(r)?n.default=r:ae(r)&&Ge(n,r),[i,n]}function qy(e,t,o,r,n,i){return{locale:t,key:o,warnHtmlMessage:n,onError:l=>{throw i&&i(l),l},onCacheKey:l=>CS(t,o,l)}}function Xy(e,t,o,r){const{modifiers:n,pluralRules:i,messageResolver:l,fallbackLocale:a,fallbackWarn:s,missingWarn:c,fallbackContext:u}=e,d={locale:t,modifiers:n,pluralRules:i,messages:p=>{let g=l(o,p);if(g==null&&u){const[,,C]=Id(u,p,t,a,s,c);g=l(C,p)}if(K(g)||Kt(g)){let C=!1;const E=Ad(e,p,t,g,p,()=>{C=!0});return C?uc:E}else return At(g)?g:uc}};return e.processor&&(d.processor=e.processor),r.list&&(d.list=r.list),r.named&&(d.named=r.named),Me(r.plural)&&(d.pluralIndex=r.plural),d}function dc(e,...t){const{datetimeFormats:o,unresolving:r,fallbackLocale:n,onWarn:i,localeFallbacker:l}=e,{__datetimeFormatters:a}=e,[s,c,u,f]=Rl(...t),d=pe(u.missingWarn)?u.missingWarn:e.missingWarn;pe(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const p=!!u.part,g=ba(e,u),C=l(e,n,g);if(!K(s)||s==="")return new Intl.DateTimeFormat(g,f).format(c);let S={},E,T=null;const v="datetime format";for(let w=0;w{Ld.includes(s)?l[s]=o[s]:i[s]=o[s]}),K(r)?i.locale=r:ae(r)&&(l=r),ae(n)&&(l=n),[i.key||"",a,i,l]}function pc(e,t,o){const r=e;for(const n in o){const i=`${t}__${n}`;r.__datetimeFormatters.has(i)&&r.__datetimeFormatters.delete(i)}}function mc(e,...t){const{numberFormats:o,unresolving:r,fallbackLocale:n,onWarn:i,localeFallbacker:l}=e,{__numberFormatters:a}=e,[s,c,u,f]=Fl(...t),d=pe(u.missingWarn)?u.missingWarn:e.missingWarn;pe(u.fallbackWarn)?u.fallbackWarn:e.fallbackWarn;const p=!!u.part,g=ba(e,u),C=l(e,n,g);if(!K(s)||s==="")return new Intl.NumberFormat(g,f).format(c);let S={},E,T=null;const v="number format";for(let w=0;w{wd.includes(s)?l[s]=o[s]:i[s]=o[s]}),K(r)?i.locale=r:ae(r)&&(l=r),ae(n)&&(l=n),[i.key||"",a,i,l]}function hc(e,t,o){const r=e;for(const n in o){const i=`${t}__${n}`;r.__numberFormatters.has(i)&&r.__numberFormatters.delete(i)}}oy();const Jy="9.14.4";function Qy(){typeof __VUE_I18N_FULL_INSTALL__!="boolean"&&(io().__VUE_I18N_FULL_INSTALL__=!0),typeof __VUE_I18N_LEGACY_API__!="boolean"&&(io().__VUE_I18N_LEGACY_API__=!0),typeof __INTLIFY_JIT_COMPILATION__!="boolean"&&(io().__INTLIFY_JIT_COMPILATION__=!1),typeof __INTLIFY_DROP_MESSAGE_COMPILER__!="boolean"&&(io().__INTLIFY_DROP_MESSAGE_COMPILER__=!1),typeof __INTLIFY_PROD_DEVTOOLS__!="boolean"&&(io().__INTLIFY_PROD_DEVTOOLS__=!1)}const Zy=wy.__EXTEND_POINT__,eo=Pi(Zy);eo(),eo(),eo(),eo(),eo(),eo(),eo(),eo(),eo();const Dd=Nt.__EXTEND_POINT__,pt=Pi(Dd),$e={UNEXPECTED_RETURN_TYPE:Dd,INVALID_ARGUMENT:pt(),MUST_BE_CALL_SETUP_TOP:pt(),NOT_INSTALLED:pt(),NOT_AVAILABLE_IN_LEGACY_MODE:pt(),REQUIRED_VALUE:pt(),INVALID_VALUE:pt(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:pt(),NOT_INSTALLED_WITH_PROVIDE:pt(),UNEXPECTED_ERROR:pt(),NOT_COMPATIBLE_LEGACY_VUE_I18N:pt(),BRIDGE_SUPPORT_VUE_2_ONLY:pt(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:pt(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:pt(),__EXTEND_POINT__:pt()};function ze(e,...t){return Pr(e,null,void 0)}const Ol=Fo("__translateVNode"),Nl=Fo("__datetimeParts"),Ml=Fo("__numberParts"),Rd=Fo("__setPluralRules"),Fd=Fo("__injectWithOption"),kl=Fo("__dispose");function cn(e){if(!Ce(e)||Kt(e))return e;for(const t in e)if(Ot(e,t))if(!t.includes("."))Ce(e[t])&&cn(e[t]);else{const o=t.split("."),r=o.length-1;let n=e,i=!1;for(let l=0;l{if("locale"in a&&"resource"in a){const{locale:s,resource:c}=a;s?(l[s]=l[s]||ve(),wn(c,l[s])):wn(c,l)}else K(a)&&wn(JSON.parse(a),l)}),n==null&&i)for(const a in l)Ot(l,a)&&cn(l[a]);return l}function Od(e){return e.type}function Nd(e,t,o){let r=Ce(t.messages)?t.messages:ve();"__i18nGlobal"in o&&(r=Ai(e.locale.value,{messages:r,__i18n:o.__i18nGlobal}));const n=Object.keys(r);n.length&&n.forEach(i=>{e.mergeLocaleMessage(i,r[i])});{if(Ce(t.datetimeFormats)){const i=Object.keys(t.datetimeFormats);i.length&&i.forEach(l=>{e.mergeDateTimeFormat(l,t.datetimeFormats[l])})}if(Ce(t.numberFormats)){const i=Object.keys(t.numberFormats);i.length&&i.forEach(l=>{e.mergeNumberFormat(l,t.numberFormats[l])})}}}function gc(e){return je(pn,null,e,0)}const Cc="__INTLIFY_META__",bc=()=>[],eE=()=>!1;let xc=0;function _c(e){return((t,o,r,n)=>e(o,r,Ao()||void 0,n))}const tE=()=>{const e=Ao();let t=null;return e&&(t=Od(e)[Cc])?{[Cc]:t}:null};function _a(e={},t){const{__root:o,__injectWithOption:r}=e,n=o===void 0,i=e.flatJson,l=Kn?mt:Yl,a=!!e.translateExistCompatible;let s=pe(e.inheritLocale)?e.inheritLocale:!0;const c=l(o&&s?o.locale.value:K(e.locale)?e.locale:_r),u=l(o&&s?o.fallbackLocale.value:K(e.fallbackLocale)||Ae(e.fallbackLocale)||ae(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:c.value),f=l(Ai(c.value,e)),d=l(ae(e.datetimeFormats)?e.datetimeFormats:{[c.value]:{}}),p=l(ae(e.numberFormats)?e.numberFormats:{[c.value]:{}});let g=o?o.missingWarn:pe(e.missingWarn)||wo(e.missingWarn)?e.missingWarn:!0,C=o?o.fallbackWarn:pe(e.fallbackWarn)||wo(e.fallbackWarn)?e.fallbackWarn:!0,S=o?o.fallbackRoot:pe(e.fallbackRoot)?e.fallbackRoot:!0,E=!!e.fallbackFormat,T=Pe(e.missing)?e.missing:null,v=Pe(e.missing)?_c(e.missing):null,y=Pe(e.postTranslation)?e.postTranslation:null,L=o?o.warnHtmlMessage:pe(e.warnHtmlMessage)?e.warnHtmlMessage:!0,w=!!e.escapeParameter;const D=o?o.modifiers:ae(e.modifiers)?e.modifiers:{};let F=e.pluralRules||o&&o.pluralRules,P;P=(()=>{n&&ac(null);const I={version:Jy,locale:c.value,fallbackLocale:u.value,messages:f.value,modifiers:D,pluralRules:F,missing:v===null?void 0:v,missingWarn:g,fallbackWarn:C,fallbackFormat:E,unresolving:!0,postTranslation:y===null?void 0:y,warnHtmlMessage:L,escapeParameter:w,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};I.datetimeFormats=d.value,I.numberFormats=p.value,I.__datetimeFormatters=ae(P)?P.__datetimeFormatters:void 0,I.__numberFormatters=ae(P)?P.__numberFormatters:void 0;const M=Wy(I);return n&&ac(M),M})(),Fr(P,c.value,u.value);function X(){return[c.value,u.value,f.value,d.value,p.value]}const k=fe({get:()=>c.value,set:I=>{c.value=I,P.locale=c.value}}),Q=fe({get:()=>u.value,set:I=>{u.value=I,P.fallbackLocale=u.value,Fr(P,c.value,I)}}),me=fe(()=>f.value),ye=fe(()=>d.value),se=fe(()=>p.value);function ne(){return Pe(y)?y:null}function de(I){y=I,P.postTranslation=I}function tt(){return T}function ft(I){I!==null&&(v=_c(I)),T=I,P.missing=v}const Re=(I,M,te,ce,Ee,ot)=>{X();let Ue;try{__INTLIFY_PROD_DEVTOOLS__,n||(P.fallbackContext=o?By():void 0),Ue=I(P)}finally{__INTLIFY_PROD_DEVTOOLS__,n||(P.fallbackContext=void 0)}if(te!=="translate exists"&&Me(Ue)&&Ue===Ii||te==="translate exists"&&!Ue){const[Mo,wi]=M();return o&&S?ce(o):Ee(Mo)}else{if(ot(Ue))return Ue;throw ze($e.UNEXPECTED_RETURN_TYPE)}};function Fe(...I){return Re(M=>Reflect.apply(fc,null,[M,...I]),()=>Dl(...I),"translate",M=>Reflect.apply(M.t,M,[...I]),M=>M,M=>K(M))}function Tt(...I){const[M,te,ce]=I;if(ce&&!Ce(ce))throw ze($e.INVALID_ARGUMENT);return Fe(M,te,Ge({resolvedMessage:!0},ce||{}))}function ht(...I){return Re(M=>Reflect.apply(dc,null,[M,...I]),()=>Rl(...I),"datetime format",M=>Reflect.apply(M.d,M,[...I]),()=>nc,M=>K(M))}function gt(...I){return Re(M=>Reflect.apply(mc,null,[M,...I]),()=>Fl(...I),"number format",M=>Reflect.apply(M.n,M,[...I]),()=>nc,M=>K(M))}function We(I){return I.map(M=>K(M)||Me(M)||pe(M)?gc(String(M)):M)}const Y={normalize:We,interpolate:I=>I,type:"vnode"};function G(...I){return Re(M=>{let te;const ce=M;try{ce.processor=Y,te=Reflect.apply(fc,null,[ce,...I])}finally{ce.processor=null}return te},()=>Dl(...I),"translate",M=>M[Ol](...I),M=>[gc(M)],M=>Ae(M))}function ee(...I){return Re(M=>Reflect.apply(mc,null,[M,...I]),()=>Fl(...I),"number format",M=>M[Ml](...I),bc,M=>K(M)||Ae(M))}function ue(...I){return Re(M=>Reflect.apply(dc,null,[M,...I]),()=>Rl(...I),"datetime format",M=>M[Nl](...I),bc,M=>K(M)||Ae(M))}function b(I){F=I,P.pluralRules=F}function _(I,M){return Re(()=>{if(!I)return!1;const te=K(M)?M:c.value,ce=$(te),Ee=P.messageResolver(ce,I);return a?Ee!=null:Kt(Ee)||At(Ee)||K(Ee)},()=>[I],"translate exists",te=>Reflect.apply(te.te,te,[I,M]),eE,te=>pe(te))}function x(I){let M=null;const te=xd(P,u.value,c.value);for(let ce=0;ce{s&&(c.value=I,P.locale=I,Fr(P,c.value,u.value))}),St(o.fallbackLocale,I=>{s&&(u.value=I,P.fallbackLocale=I,Fr(P,c.value,u.value))}));const B={id:xc,locale:k,fallbackLocale:Q,get inheritLocale(){return s},set inheritLocale(I){s=I,I&&o&&(c.value=o.locale.value,u.value=o.fallbackLocale.value,Fr(P,c.value,u.value))},get availableLocales(){return Object.keys(f.value).sort()},messages:me,get modifiers(){return D},get pluralRules(){return F||{}},get isGlobal(){return n},get missingWarn(){return g},set missingWarn(I){g=I,P.missingWarn=g},get fallbackWarn(){return C},set fallbackWarn(I){C=I,P.fallbackWarn=C},get fallbackRoot(){return S},set fallbackRoot(I){S=I},get fallbackFormat(){return E},set fallbackFormat(I){E=I,P.fallbackFormat=E},get warnHtmlMessage(){return L},set warnHtmlMessage(I){L=I,P.warnHtmlMessage=I},get escapeParameter(){return w},set escapeParameter(I){w=I,P.escapeParameter=I},t:Fe,getLocaleMessage:$,setLocaleMessage:N,mergeLocaleMessage:V,getPostTranslationHandler:ne,setPostTranslationHandler:de,getMissingHandler:tt,setMissingHandler:ft,[Rd]:b};return B.datetimeFormats=ye,B.numberFormats=se,B.rt=Tt,B.te=_,B.tm=R,B.d=ht,B.n=gt,B.getDateTimeFormat=z,B.setDateTimeFormat=m,B.mergeDateTimeFormat=h,B.getNumberFormat=A,B.setNumberFormat=O,B.mergeNumberFormat=j,B[Fd]=r,B[Ol]=G,B[Nl]=ue,B[Ml]=ee,B}function oE(e){const t=K(e.locale)?e.locale:_r,o=K(e.fallbackLocale)||Ae(e.fallbackLocale)||ae(e.fallbackLocale)||e.fallbackLocale===!1?e.fallbackLocale:t,r=Pe(e.missing)?e.missing:void 0,n=pe(e.silentTranslationWarn)||wo(e.silentTranslationWarn)?!e.silentTranslationWarn:!0,i=pe(e.silentFallbackWarn)||wo(e.silentFallbackWarn)?!e.silentFallbackWarn:!0,l=pe(e.fallbackRoot)?e.fallbackRoot:!0,a=!!e.formatFallbackMessages,s=ae(e.modifiers)?e.modifiers:{},c=e.pluralizationRules,u=Pe(e.postTranslation)?e.postTranslation:void 0,f=K(e.warnHtmlInMessage)?e.warnHtmlInMessage!=="off":!0,d=!!e.escapeParameterHtml,p=pe(e.sync)?e.sync:!0;let g=e.messages;if(ae(e.sharedMessages)){const w=e.sharedMessages;g=Object.keys(w).reduce((F,P)=>{const U=F[P]||(F[P]={});return Ge(U,w[P]),F},g||{})}const{__i18n:C,__root:S,__injectWithOption:E}=e,T=e.datetimeFormats,v=e.numberFormats,y=e.flatJson,L=e.translateExistCompatible;return{locale:t,fallbackLocale:o,messages:g,flatJson:y,datetimeFormats:T,numberFormats:v,missing:r,missingWarn:n,fallbackWarn:i,fallbackRoot:l,fallbackFormat:a,modifiers:s,pluralRules:c,postTranslation:u,warnHtmlMessage:f,escapeParameter:d,messageResolver:e.messageResolver,inheritLocale:p,translateExistCompatible:L,__i18n:C,__root:S,__injectWithOption:E}}function Hl(e={},t){{const o=_a(oE(e)),{__extender:r}=e,n={id:o.id,get locale(){return o.locale.value},set locale(i){o.locale.value=i},get fallbackLocale(){return o.fallbackLocale.value},set fallbackLocale(i){o.fallbackLocale.value=i},get messages(){return o.messages.value},get datetimeFormats(){return o.datetimeFormats.value},get numberFormats(){return o.numberFormats.value},get availableLocales(){return o.availableLocales},get formatter(){return{interpolate(){return[]}}},set formatter(i){},get missing(){return o.getMissingHandler()},set missing(i){o.setMissingHandler(i)},get silentTranslationWarn(){return pe(o.missingWarn)?!o.missingWarn:o.missingWarn},set silentTranslationWarn(i){o.missingWarn=pe(i)?!i:i},get silentFallbackWarn(){return pe(o.fallbackWarn)?!o.fallbackWarn:o.fallbackWarn},set silentFallbackWarn(i){o.fallbackWarn=pe(i)?!i:i},get modifiers(){return o.modifiers},get formatFallbackMessages(){return o.fallbackFormat},set formatFallbackMessages(i){o.fallbackFormat=i},get postTranslation(){return o.getPostTranslationHandler()},set postTranslation(i){o.setPostTranslationHandler(i)},get sync(){return o.inheritLocale},set sync(i){o.inheritLocale=i},get warnHtmlInMessage(){return o.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(i){o.warnHtmlMessage=i!=="off"},get escapeParameterHtml(){return o.escapeParameter},set escapeParameterHtml(i){o.escapeParameter=i},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(i){},get pluralizationRules(){return o.pluralRules||{}},__composer:o,t(...i){const[l,a,s]=i,c={};let u=null,f=null;if(!K(l))throw ze($e.INVALID_ARGUMENT);const d=l;return K(a)?c.locale=a:Ae(a)?u=a:ae(a)&&(f=a),Ae(s)?u=s:ae(s)&&(f=s),Reflect.apply(o.t,o,[d,u||f||{},c])},rt(...i){return Reflect.apply(o.rt,o,[...i])},tc(...i){const[l,a,s]=i,c={plural:1};let u=null,f=null;if(!K(l))throw ze($e.INVALID_ARGUMENT);const d=l;return K(a)?c.locale=a:Me(a)?c.plural=a:Ae(a)?u=a:ae(a)&&(f=a),K(s)?c.locale=s:Ae(s)?u=s:ae(s)&&(f=s),Reflect.apply(o.t,o,[d,u||f||{},c])},te(i,l){return o.te(i,l)},tm(i){return o.tm(i)},getLocaleMessage(i){return o.getLocaleMessage(i)},setLocaleMessage(i,l){o.setLocaleMessage(i,l)},mergeLocaleMessage(i,l){o.mergeLocaleMessage(i,l)},d(...i){return Reflect.apply(o.d,o,[...i])},getDateTimeFormat(i){return o.getDateTimeFormat(i)},setDateTimeFormat(i,l){o.setDateTimeFormat(i,l)},mergeDateTimeFormat(i,l){o.mergeDateTimeFormat(i,l)},n(...i){return Reflect.apply(o.n,o,[...i])},getNumberFormat(i){return o.getNumberFormat(i)},setNumberFormat(i,l){o.setNumberFormat(i,l)},mergeNumberFormat(i,l){o.mergeNumberFormat(i,l)},getChoiceIndex(i,l){return-1}};return n.__extender=r,n}}const va={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>e==="parent"||e==="global",default:"parent"},i18n:{type:Object}};function rE({slots:e},t){return t.length===1&&t[0]==="default"?(e.default?e.default():[]).reduce((r,n)=>[...r,...n.type===qe?n.children:[n]],[]):t.reduce((o,r)=>{const n=e[r];return n&&(o[r]=n()),o},ve())}function Md(e){return qe}const nE=po({name:"i18n-t",props:Ge({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>Me(e)||!isNaN(e)}},va),setup(e,t){const{slots:o,attrs:r}=t,n=e.i18n||Sa({useScope:e.scope,__useComponent:!0});return()=>{const i=Object.keys(o).filter(f=>f!=="_"),l=ve();e.locale&&(l.locale=e.locale),e.plural!==void 0&&(l.plural=K(e.plural)?+e.plural:e.plural);const a=rE(t,i),s=n[Ol](e.keypath,a,l),c=Ge(ve(),r),u=K(e.tag)||Ce(e.tag)?e.tag:Md();return vr(u,c,s)}}}),vc=nE;function iE(e){return Ae(e)&&!K(e[0])}function kd(e,t,o,r){const{slots:n,attrs:i}=t;return()=>{const l={part:!0};let a=ve();e.locale&&(l.locale=e.locale),K(e.format)?l.key=e.format:Ce(e.format)&&(K(e.format.key)&&(l.key=e.format.key),a=Object.keys(e.format).reduce((d,p)=>o.includes(p)?Ge(ve(),d,{[p]:e.format[p]}):d,ve()));const s=r(e.value,l,a);let c=[l.key];Ae(s)?c=s.map((d,p)=>{const g=n[d.type],C=g?g({[d.type]:d.value,index:p,parts:s}):[d.value];return iE(C)&&(C[0].key=`${d.type}-${p}`),C}):K(s)&&(c=[s]);const u=Ge(ve(),i),f=K(e.tag)||Ce(e.tag)?e.tag:Md();return vr(f,u,c)}}const lE=po({name:"i18n-n",props:Ge({value:{type:Number,required:!0},format:{type:[String,Object]}},va),setup(e,t){const o=e.i18n||Sa({useScope:e.scope,__useComponent:!0});return kd(e,t,wd,(...r)=>o[Ml](...r))}}),Sc=lE,aE=po({name:"i18n-d",props:Ge({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},va),setup(e,t){const o=e.i18n||Sa({useScope:e.scope,__useComponent:!0});return kd(e,t,Ld,(...r)=>o[Nl](...r))}}),yc=aE;function sE(e,t){const o=e;if(e.mode==="composition")return o.__getInstance(t)||e.global;{const r=o.__getInstance(t);return r!=null?r.__composer:e.global.__composer}}function cE(e){const t=l=>{const{instance:a,modifiers:s,value:c}=l;if(!a||!a.$)throw ze($e.UNEXPECTED_ERROR);const u=sE(e,a.$),f=Ec(c);return[Reflect.apply(u.t,u,[...Tc(f)]),u]};return{created:(l,a)=>{const[s,c]=t(a);Kn&&e.global===c&&(l.__i18nWatcher=St(c.locale,()=>{a.instance&&a.instance.$forceUpdate()})),l.__composer=c,l.textContent=s},unmounted:l=>{Kn&&l.__i18nWatcher&&(l.__i18nWatcher(),l.__i18nWatcher=void 0,delete l.__i18nWatcher),l.__composer&&(l.__composer=void 0,delete l.__composer)},beforeUpdate:(l,{value:a})=>{if(l.__composer){const s=l.__composer,c=Ec(a);l.textContent=Reflect.apply(s.t,s,[...Tc(c)])}},getSSRProps:l=>{const[a]=t(l);return{textContent:a}}}}function Ec(e){if(K(e))return{path:e};if(ae(e)){if(!("path"in e))throw ze($e.REQUIRED_VALUE,"path");return e}else throw ze($e.INVALID_VALUE)}function Tc(e){const{path:t,locale:o,args:r,choice:n,plural:i}=e,l={},a=r||{};return K(o)&&(l.locale=o),Me(n)&&(l.plural=n),Me(i)&&(l.plural=i),[t,a,l]}function uE(e,t,...o){const r=ae(o[0])?o[0]:{},n=!!r.useI18nComponentName;(!pe(r.globalInstall)||r.globalInstall)&&([n?"i18n":vc.name,"I18nT"].forEach(l=>e.component(l,vc)),[Sc.name,"I18nN"].forEach(l=>e.component(l,Sc)),[yc.name,"I18nD"].forEach(l=>e.component(l,yc))),e.directive("t",cE(t))}function fE(e,t,o){return{beforeCreate(){const r=Ao();if(!r)throw ze($e.UNEXPECTED_ERROR);const n=this.$options;if(n.i18n){const i=n.i18n;if(n.__i18n&&(i.__i18n=n.__i18n),i.__root=t,this===this.$root)this.$i18n=Pc(e,i);else{i.__injectWithOption=!0,i.__extender=o.__vueI18nExtend,this.$i18n=Hl(i);const l=this.$i18n;l.__extender&&(l.__disposer=l.__extender(this.$i18n))}}else if(n.__i18n)if(this===this.$root)this.$i18n=Pc(e,n);else{this.$i18n=Hl({__i18n:n.__i18n,__injectWithOption:!0,__extender:o.__vueI18nExtend,__root:t});const i=this.$i18n;i.__extender&&(i.__disposer=i.__extender(this.$i18n))}else this.$i18n=e;n.__i18nGlobal&&Nd(t,n,n),this.$t=(...i)=>this.$i18n.t(...i),this.$rt=(...i)=>this.$i18n.rt(...i),this.$tc=(...i)=>this.$i18n.tc(...i),this.$te=(i,l)=>this.$i18n.te(i,l),this.$d=(...i)=>this.$i18n.d(...i),this.$n=(...i)=>this.$i18n.n(...i),this.$tm=i=>this.$i18n.tm(i),o.__setInstance(r,this.$i18n)},mounted(){},unmounted(){const r=Ao();if(!r)throw ze($e.UNEXPECTED_ERROR);const n=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,n.__disposer&&(n.__disposer(),delete n.__disposer,delete n.__extender),o.__deleteInstance(r),delete this.$i18n}}}function Pc(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[Rd](t.pluralizationRules||e.pluralizationRules);const o=Ai(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(o).forEach(r=>e.mergeLocaleMessage(r,o[r])),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach(r=>e.mergeDateTimeFormat(r,t.datetimeFormats[r])),t.numberFormats&&Object.keys(t.numberFormats).forEach(r=>e.mergeNumberFormat(r,t.numberFormats[r])),e}const dE=Fo("global-vue-i18n");function pE(e={},t){const o=__VUE_I18N_LEGACY_API__&&pe(e.legacy)?e.legacy:__VUE_I18N_LEGACY_API__,r=pe(e.globalInjection)?e.globalInjection:!0,n=__VUE_I18N_LEGACY_API__&&o?!!e.allowComposition:!0,i=new Map,[l,a]=mE(e,o),s=Fo("");function c(d){return i.get(d)||null}function u(d,p){i.set(d,p)}function f(d){i.delete(d)}{const d={get mode(){return __VUE_I18N_LEGACY_API__&&o?"legacy":"composition"},get allowComposition(){return n},async install(p,...g){if(p.__VUE_I18N_SYMBOL__=s,p.provide(p.__VUE_I18N_SYMBOL__,d),ae(g[0])){const E=g[0];d.__composerExtend=E.__composerExtend,d.__vueI18nExtend=E.__vueI18nExtend}let C=null;!o&&r&&(C=yE(p,d.global)),__VUE_I18N_FULL_INSTALL__&&uE(p,d,...g),__VUE_I18N_LEGACY_API__&&o&&p.mixin(fE(a,a.__composer,d));const S=p.unmount;p.unmount=()=>{C&&C(),d.dispose(),S()}},get global(){return a},dispose(){l.stop()},__instances:i,__getInstance:c,__setInstance:u,__deleteInstance:f};return d}}function Sa(e={}){const t=Ao();if(t==null)throw ze($e.MUST_BE_CALL_SETUP_TOP);if(!t.isCE&&t.appContext.app!=null&&!t.appContext.app.__VUE_I18N_SYMBOL__)throw ze($e.NOT_INSTALLED);const o=hE(t),r=CE(o),n=Od(t),i=gE(e,n);if(__VUE_I18N_LEGACY_API__&&o.mode==="legacy"&&!e.__useComponent){if(!o.allowComposition)throw ze($e.NOT_AVAILABLE_IN_LEGACY_MODE);return vE(t,i,r,e)}if(i==="global")return Nd(r,e,n),r;if(i==="parent"){let s=bE(o,t,e.__useComponent);return s==null&&(s=r),s}const l=o;let a=l.__getInstance(t);if(a==null){const s=Ge({},e);"__i18n"in n&&(s.__i18n=n.__i18n),r&&(s.__root=r),a=_a(s),l.__composerExtend&&(a[kl]=l.__composerExtend(a)),_E(l,t,a),l.__setInstance(t,a)}return a}function mE(e,t,o){const r=Wl();{const n=__VUE_I18N_LEGACY_API__&&t?r.run(()=>Hl(e)):r.run(()=>_a(e));if(n==null)throw ze($e.UNEXPECTED_ERROR);return[r,n]}}function hE(e){{const t=Ze(e.isCE?dE:e.appContext.app.__VUE_I18N_SYMBOL__);if(!t)throw ze(e.isCE?$e.NOT_INSTALLED_WITH_PROVIDE:$e.UNEXPECTED_ERROR);return t}}function gE(e,t){return Ti(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}function CE(e){return e.mode==="composition"?e.global:e.global.__composer}function bE(e,t,o=!1){let r=null;const n=t.root;let i=xE(t,o);for(;i!=null;){const l=e;if(e.mode==="composition")r=l.__getInstance(i);else if(__VUE_I18N_LEGACY_API__){const a=l.__getInstance(i);a!=null&&(r=a.__composer,o&&r&&!r[Fd]&&(r=null))}if(r!=null||n===i)break;i=i.parent}return r}function xE(e,t=!1){return e==null?null:t&&e.vnode.ctx||e.parent}function _E(e,t,o){pi(()=>{},t),Ql(()=>{const r=o;e.__deleteInstance(t);const n=r[kl];n&&(n(),delete r[kl])},t)}function vE(e,t,o,r={}){const n=t==="local",i=Yl(null);if(n&&e.proxy&&!(e.proxy.$options.i18n||e.proxy.$options.__i18n))throw ze($e.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const l=pe(r.inheritLocale)?r.inheritLocale:!K(r.locale),a=mt(!n||l?o.locale.value:K(r.locale)?r.locale:_r),s=mt(!n||l?o.fallbackLocale.value:K(r.fallbackLocale)||Ae(r.fallbackLocale)||ae(r.fallbackLocale)||r.fallbackLocale===!1?r.fallbackLocale:a.value),c=mt(Ai(a.value,r)),u=mt(ae(r.datetimeFormats)?r.datetimeFormats:{[a.value]:{}}),f=mt(ae(r.numberFormats)?r.numberFormats:{[a.value]:{}}),d=n?o.missingWarn:pe(r.missingWarn)||wo(r.missingWarn)?r.missingWarn:!0,p=n?o.fallbackWarn:pe(r.fallbackWarn)||wo(r.fallbackWarn)?r.fallbackWarn:!0,g=n?o.fallbackRoot:pe(r.fallbackRoot)?r.fallbackRoot:!0,C=!!r.fallbackFormat,S=Pe(r.missing)?r.missing:null,E=Pe(r.postTranslation)?r.postTranslation:null,T=n?o.warnHtmlMessage:pe(r.warnHtmlMessage)?r.warnHtmlMessage:!0,v=!!r.escapeParameter,y=n?o.modifiers:ae(r.modifiers)?r.modifiers:{},L=r.pluralRules||n&&o.pluralRules;function w(){return[a.value,s.value,c.value,u.value,f.value]}const D=fe({get:()=>i.value?i.value.locale.value:a.value,set:x=>{i.value&&(i.value.locale.value=x),a.value=x}}),F=fe({get:()=>i.value?i.value.fallbackLocale.value:s.value,set:x=>{i.value&&(i.value.fallbackLocale.value=x),s.value=x}}),P=fe(()=>i.value?i.value.messages.value:c.value),U=fe(()=>u.value),X=fe(()=>f.value);function k(){return i.value?i.value.getPostTranslationHandler():E}function Q(x){i.value&&i.value.setPostTranslationHandler(x)}function me(){return i.value?i.value.getMissingHandler():S}function ye(x){i.value&&i.value.setMissingHandler(x)}function se(x){return w(),x()}function ne(...x){return i.value?se(()=>Reflect.apply(i.value.t,null,[...x])):se(()=>"")}function de(...x){return i.value?Reflect.apply(i.value.rt,null,[...x]):""}function tt(...x){return i.value?se(()=>Reflect.apply(i.value.d,null,[...x])):se(()=>"")}function ft(...x){return i.value?se(()=>Reflect.apply(i.value.n,null,[...x])):se(()=>"")}function Re(x){return i.value?i.value.tm(x):{}}function Fe(x,R){return i.value?i.value.te(x,R):!1}function Tt(x){return i.value?i.value.getLocaleMessage(x):{}}function ht(x,R){i.value&&(i.value.setLocaleMessage(x,R),c.value[x]=R)}function gt(x,R){i.value&&i.value.mergeLocaleMessage(x,R)}function We(x){return i.value?i.value.getDateTimeFormat(x):{}}function H(x,R){i.value&&(i.value.setDateTimeFormat(x,R),u.value[x]=R)}function Y(x,R){i.value&&i.value.mergeDateTimeFormat(x,R)}function G(x){return i.value?i.value.getNumberFormat(x):{}}function ee(x,R){i.value&&(i.value.setNumberFormat(x,R),f.value[x]=R)}function ue(x,R){i.value&&i.value.mergeNumberFormat(x,R)}const b={get id(){return i.value?i.value.id:-1},locale:D,fallbackLocale:F,messages:P,datetimeFormats:U,numberFormats:X,get inheritLocale(){return i.value?i.value.inheritLocale:l},set inheritLocale(x){i.value&&(i.value.inheritLocale=x)},get availableLocales(){return i.value?i.value.availableLocales:Object.keys(c.value)},get modifiers(){return i.value?i.value.modifiers:y},get pluralRules(){return i.value?i.value.pluralRules:L},get isGlobal(){return i.value?i.value.isGlobal:!1},get missingWarn(){return i.value?i.value.missingWarn:d},set missingWarn(x){i.value&&(i.value.missingWarn=x)},get fallbackWarn(){return i.value?i.value.fallbackWarn:p},set fallbackWarn(x){i.value&&(i.value.missingWarn=x)},get fallbackRoot(){return i.value?i.value.fallbackRoot:g},set fallbackRoot(x){i.value&&(i.value.fallbackRoot=x)},get fallbackFormat(){return i.value?i.value.fallbackFormat:C},set fallbackFormat(x){i.value&&(i.value.fallbackFormat=x)},get warnHtmlMessage(){return i.value?i.value.warnHtmlMessage:T},set warnHtmlMessage(x){i.value&&(i.value.warnHtmlMessage=x)},get escapeParameter(){return i.value?i.value.escapeParameter:v},set escapeParameter(x){i.value&&(i.value.escapeParameter=x)},t:ne,getPostTranslationHandler:k,setPostTranslationHandler:Q,getMissingHandler:me,setMissingHandler:ye,rt:de,d:tt,n:ft,tm:Re,te:Fe,getLocaleMessage:Tt,setLocaleMessage:ht,mergeLocaleMessage:gt,getDateTimeFormat:We,setDateTimeFormat:H,mergeDateTimeFormat:Y,getNumberFormat:G,setNumberFormat:ee,mergeNumberFormat:ue};function _(x){x.locale.value=a.value,x.fallbackLocale.value=s.value,Object.keys(c.value).forEach(R=>{x.mergeLocaleMessage(R,c.value[R])}),Object.keys(u.value).forEach(R=>{x.mergeDateTimeFormat(R,u.value[R])}),Object.keys(f.value).forEach(R=>{x.mergeNumberFormat(R,f.value[R])}),x.escapeParameter=v,x.fallbackFormat=C,x.fallbackRoot=g,x.fallbackWarn=p,x.missingWarn=d,x.warnHtmlMessage=T}return Jl(()=>{if(e.proxy==null||e.proxy.$i18n==null)throw ze($e.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const x=i.value=e.proxy.$i18n.__composer;t==="global"?(a.value=x.locale.value,s.value=x.fallbackLocale.value,c.value=x.messages.value,u.value=x.datetimeFormats.value,f.value=x.numberFormats.value):n&&_(x)}),b}const SE=["locale","fallbackLocale","availableLocales"],Ic=["t","rt","d","n","tm","te"];function yE(e,t){const o=Object.create(null);return SE.forEach(n=>{const i=Object.getOwnPropertyDescriptor(t,n);if(!i)throw ze($e.UNEXPECTED_ERROR);const l=we(i.value)?{get(){return i.value.value},set(a){i.value.value=a}}:{get(){return i.get&&i.get()}};Object.defineProperty(o,n,l)}),e.config.globalProperties.$i18n=o,Ic.forEach(n=>{const i=Object.getOwnPropertyDescriptor(t,n);if(!i||!i.value)throw ze($e.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${n}`,i)}),()=>{delete e.config.globalProperties.$i18n,Ic.forEach(n=>{delete e.config.globalProperties[`$${n}`]})}}Qy();__INTLIFY_JIT_COMPILATION__?lc(Gy):lc(jy);My(gy);ky(xd);if(__INTLIFY_PROD_DEVTOOLS__){const e=io();e.__INTLIFY__=!0,Ty(e.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__)}const EE={app:{tagline:"文件快传",description:"开箱即用的文件快传系统"},nav:{home:"分享",docs:"API 文档",openapi:"OpenAPI",admin:"管理后台",homeTitle:"{name} — 首页",mainNav:"主导航"},theme:{label:"主题",light:"浅色",dark:"深色",system:"跟随系统"},lang:{label:"语言"},footer:{linkNav:"页脚链接",docs:"API 文档",openapi:"OpenAPI",admin:"管理后台",copyright:"© {year} {name}"},notify:{title:"系统通知",close:"知道了"},common:{loading:"加载中…",cancel:"取消",save:"保存",search:"搜索",refresh:"刷新",copy:"复制",copied:"已复制",copyFailed:"复制失败",close:"关闭",actions:"操作",all:"全部",query:"查询",reset:"重置",previousPage:"上一页",nextPage:"下一页",pagerInfo:"共 {total} 条 · 第 {page}/{pages} 页",text:"文本",file:"文件",success:"成功",failed:"失败",denied:"拒绝",none:"-"},time:{forever:"永久有效",permanent:"永久",expired:"已过期",lessThanMinute:"不足 1 分钟",minutes:"{n} 分钟",hoursMinutes:"{h} 小时 {m} 分",daysHours:"{d} 天 {h} 小时"},expireStyle:{day:"天",hour:"小时",minute:"分钟",count:"次数",forever:"永久"},home:{heroTitle:"{name} · 文件快传",heroDesc:"无需注册,文本文件一键分享,取件码即可领取",pickupPlaceholder:"输入取件码直接领取",pickupButton:"取 件",pickupRequired:"请输入取件码",tabText:"分享文本",tabFile:"分享文件",textContent:"文本内容",textPlaceholder:"粘贴要分享的文本、代码片段…",textBytes:"{bytes} / 222 KB(超出请改用文件分享)",textTooLong:"内容过多(超过 222KB),建议采用文件形式分享",textRequired:"请输入要分享的文本内容",customCode:"自定义提取码(可选)",customCodeHint:"留空随机生成;4-8 位字母或数字",customCodeInvalid:"提取码须为 4-8 位字母或数字",customCodeTaken:"该提取码已被占用,请换一个",generateCode:"生成取件码",fileRequired:"请选择要分享的文件",fileTooLarge:"文件大小超过限制(最大 {size})",chunkedUploading:"分片上传中",uploading:"上传中",uploadingDots:"上传中…",uploadAndShare:"上传并生成取件码",uploadDisabled:"管理员已关闭访客上传功能,如需分享请联系管理员",shareAnother:"再分享一个",textShared:"文本分享成功",fileShared:"文件分享成功",uploadCancelled:"上传已取消",shareFailed:"分享失败,请稍后重试",uploadFailed:"上传失败,请重试",rateLimited:"操作过于频繁,请稍后再试",notInitialized:"系统尚未初始化,请管理员先完成初始化配置"},result:{badge:"分享成功",code:"取件码",link:"取件链接",copyLink:"复制链接",copyLinkCode:"复制链接和提取码",copyCode:"复制取件码",codeCopied:"取件码已复制",linkCopied:"取件链接已复制",linkCodeCopied:"链接和提取码已复制",clickCopyCode:"点击复制提取码",expires:"有效期:{value}",forever:"永久",hint:"把取件码或链接发给对方,对方在首页输入取件码即可领取。",copyFailed:"复制失败,请手动选择复制"},pickup:{emptyCode:"取件码为空",querying:"正在查询取件码 {code} …",failed:"取件失败",failedDefault:"取件失败,请稍后重试",notFound:"取件码不存在或分享已过期",confirmHint:"请确认取件码是否正确,或联系分享人重新发送",retryPlaceholder:"输入其他取件码",retryButton:"重新取件",remainingUnlimited:"不限次数",remainingCount:"剩余 {n} 次",expireAt:"过期时间:{time}",loadingText:"正在获取内容…",copyContent:"复制内容",downloadTxt:"下载为 .txt",downloaded:"下载完成",downloadFailed:"下载失败,请重试",copied:"内容已复制",sizeUsed:"大小 {size} · 已被领取 {n} 次",downloading:"下载中 {percent}%",downloadFile:"下载文件({size})"},expire:{value:"数值",label:"有效期",foreverOption:"永久有效",countOption:"按次数",countHint:"分享在被领取指定次数后失效",timeHint:"有效期 {value} {unit}",foreverHint:"分享将一直有效,直到管理员删除",maxSecondsHint:"最长 {value}",maxCountHint:"最多 {n} 次"},drop:{aria:"选择或拖拽文件",zone:"点击选择或拖拽文件到此处",maxSize:"单文件最大 {size}",noLimit:"上传后自动生成取件码",remove:"移除",tooLarge:"文件大小 {size} 超过限制 {limit}",typeHint:"仅支持 {types}"},docs:{searchPlaceholder:"检索文档内容…",notGenerated:"文档尚未生成",buildHint:"构建时将从 docs/api/*.md 自动收录",noMatch:"没有匹配的章节",tocTitle:"本页目录",loading:"加载文档…",preparing:"API 文档筹备中",preparingHint:"文档源位于项目 docs/api/ 目录(每个 .md 一级标题作为章节名)。重新构建前端后,文档将内嵌到页面中离线可用。",emptyContent:"文档内容为空",loadFailed:"文档「{title}」加载失败",sidebar:"文档章节"},openapi:{title:"OpenAPI 3.0 接口规范",statusOk:"加载成功",statusError:"规范加载失败",statusLoading:"加载中…",source:"来源:{source}",sourceEmbedded:"构建内嵌 docs/openapi.yaml",notAvailable:"openapi.yaml 尚未生成或无法访问",notAvailableHint:"规范文件位于项目 docs/openapi.yaml。重新构建前端会将其内嵌;也可将文件部署到 {url} 供运行时加载。"},notFound:{title:"页面不存在",desc:"你访问的地址可能已变更",back:"回到首页"},admin:{login:{title:"管理员登录",subtitle:"{name} · 管理后台",password:"管理员密码",passwordPlaceholder:"请输入管理员密码",submit:"登 录",wrongPassword:"密码错误",failed:"登录失败,请稍后重试",required:"请输入管理员密码",hint:"密码由部署方在环境变量或系统设置中配置;连续输错会触发 IP 限流保护。"},nav:{title:"管理后台",files:"文件管理",audit:"审计日志",settings:"系统设置",logout:"退出登录",menu:"后台菜单",loggedOut:"已退出登录"},files:{title:"文件管理",totalRecords:"共 {total} 个分享记录",searchPlaceholder:"搜索取件码 / 文件名",batchDelete:"批量删除",batchDeleteWithCount:"批量删除({count})",deleteSelectedTitle:"删除选中的 {count} 项",selectFirst:"先勾选要删除的行",loading:"加载中…",empty:"暂无分享记录",loadFailed:"文件列表加载失败",colCode:"取件码",colName:"名称",colType:"类型",colSize:"大小",colUsed:"已领取",colRemaining:"剩余",colExpireAt:"过期时间",colStatus:"状态",colCreatedAt:"创建时间",remainingUnlimited:"不限",remainingCount:"{n} 次",statusValid:"有效",statusExpired:"已过期",copyCode:"复制码",copyLink:"复制链接",edit:"编辑",fetchText:"取内容",delete:"删除",confirmDelete:"确认删除分享「{name}」?该操作不可恢复。",confirmBatchDelete:"确认删除选中的 {count} 个分享?该操作不可恢复。",deleteSuccess:"删除成功",batchDeleteSuccess:"批量删除成功",deleteFailed:"删除失败",batchDeleteFailed:"批量删除失败",nothingChanged:"没有修改任何字段",updateSuccess:"更新成功",updateFailed:"更新失败",fetchTextFailed:"内容获取失败(分享可能已过期)",linkCopied:"取件链接已复制",codeCopied:"取件码已复制",editModalTitle:"编辑分享",expireAtHint:"过期时间(留空表示永久)",expireCountHint:"剩余可领取次数(-1 表示不限)"},audit:{title:"审计日志",subtitle:"记录上传 / 下载动作:时间、IP、UA、设备、结果、字节数与耗时",action:"动作",result:"结果",actionUpload:"上传",actionDownload:"下载",filterIp:"IP",filterStart:"开始时间",filterEnd:"结束时间",empty:"暂无审计记录(审计仅记录上传 / 下载动作)",loadFailed:"审计日志加载失败",colTime:"时间",colAction:"动作",colResult:"结果",colFile:"文件",colCode:"取件码",colBytes:"字节数",colIp:"IP",colDevice:"设备",colDuration:"耗时",colUaError:"UA / 错误"},settings:{title:"系统设置",subtitle:"站点名称与 Logo(自定义优先,留空恢复内置默认)",restoreDefaults:"恢复默认值",restoreDefaultsDone:"已填回默认值,点击保存生效",loading:"加载配置中…",loadFailed:"配置读取失败",sectionBasic:"基本",siteName:"站点名称 site_name",siteNameHint:"显示在导航栏、登录页与浏览器标题",siteDomain:"网站对外域名",siteDomainHint:"http(s)://域名[:端口],不带路径;留空则分享链接用当前访问地址",sectionLogo:"导航 Logo",logoUrl:"Logo 图片地址 logo_url",uploadImage:"上传图片",logoHint:"支持填写 URL 或上传本地图片(≤256KB,转存为内嵌数据);留空使用内置默认",imageTooLarge:"图片超过 256KB,请压缩后重试或直接填写图片 URL",imageLoaded:"图片已载入,点击保存后全站生效",imageReadFailed:"图片读取失败",navPreview:"导航栏实际效果:",sectionFavicon:"浏览器图标 Favicon",faviconUrl:"Favicon 地址 favicon_url",faviconHint:"建议使用 PNG/ICO 方形图标;留空使用内置默认",faviconPreviewHint:"浏览器标签页图标(保存后刷新页面生效)",saveAll:"保存设置(全站生效)",saved:"设置已保存,全站生效",saveFailed:"保存失败",sectionPassword:"修改管理员密码",passwordHint:"保存后所有已登录会话失效,需重新登录",oldPassword:"旧密码",newPassword:"新密码(至少 6 位)",confirmPassword:"确认新密码",pwdRequired:"请填写旧密码与新密码",pwdTooShort:"新密码至少 6 位",pwdMismatch:"两次输入的新密码不一致",pwdChanged:"密码已修改,请使用新密码重新登录",pwdChangeFailed:"修改失败",pwdWrong:"旧密码错误",sectionBackground:"背景图",backgroundUrl:"背景图地址 background_url",backgroundHint:"支持 http(s) 图片地址、data:image 图片或站内相对路径(≤2048 字符);留空使用主题默认",sectionFooter:"页脚",footerText:"页脚文案 footer_text",footerTextHint:"展示在页面底部,支持纯文本(≤2000 字符);留空显示默认标语",footerBeian:"备案号 footer_beian",footerBeianHint:"如 京ICP备2024xxxxxx号-1(≤128 字符)",sectionNotify:"系统通知",notifyEnabled:"启用右上角通知 notify_enabled",notifyTitle:"通知标题 notify_title",notifyTitleHint:"留空显示默认标题「系统通知」(≤128 字符)",notifyContent:"通知内容 notify_content",notifyContentHint:"支持 等受控 HTML(≤2000 字符)",sectionSavePolicy:"保存策略",maxSaveSeconds:"最长保存秒数 max_save_seconds",maxSaveSecondsHint:"0 = 不限制(服务端默认 7 天兜底),最大 {max} 秒(365 天)",maxSaveCount:"最大可取次数 max_save_count",maxSaveCountHint:"0 = 不限制,最大 {max} 次",sectionStorage:"存储策略",maxFileSize:"单文件上限 max_file_size(字节)",maxFileSizeHint:"0 = 回落 uploadSize(当前 {fallback}),最大 {max} 字节(10 GiB)",allowedFileTypes:"允许类型 allowed_file_types",allowedFileTypesHint:"逗号分隔:扩展名(jpg)或 MIME(image/*),* 不限制",sectionUploadRate:"上传频率限制",uploadCount:"窗口内允许上传次数 uploadCount",uploadCountHint:"最小 1,最大 {max}",uploadMinute:"频率窗口(分钟)uploadMinute",uploadMinuteHint:"最小 1,最大 {max}",unitHour:"小时",unitDay:"天",unitMB:"MB",unitGB:"GB",maxSaveTime:"最长保存时间 max_save_seconds",maxSaveTimeHint:"0 = 不限制(服务端默认 7 天兜底),最大 365 天",saveTimeUnlimited:"不限制(0)",maxFileSizeFriendly:"单文件上限 max_file_size",maxFileSizeHintV3:"0 = 回落 uploadSize(当前 {fallback}),最大 10 GB",sizeUnlimited:"不限制(0)",sectionEngine:"存储引擎",engineCurrent:"当前引擎",engineLocal:"本地存储",engineWebdav:"WebDAV",engineS3:"S3 对象存储",engineSwitch:"切换到该引擎",engineSwitching:"切换中…",engineSwitchOk:"存储引擎已切换为 {engine}",engineSwitchFail:"切换失败(已保持原引擎)",engineParamsTitle:"引擎参数",engineParamsSaved:"引擎参数已保存",localRoot:"存储根目录 local_storage_path",localRootHint:"留空 = 系统默认数据目录;修改后对新写入生效",webdavUrl:"服务地址 webdav_url",webdavUrlHint:"如 https://dav.example.com/dav/",webdavRoot:"远端根目录 webdav_root_path",webdavRootHint:"远端起始目录(不存在会自动逐级创建)",webdavUser:"用户名 webdav_username",webdavPass:"密码 webdav_password",secretKeepHint:"留空或 ****** = 不修改",s3Endpoint:"端点 s3_endpoint_url",s3EndpointHint:"如 https://s3.example.com:9000(AWS 官方可留空)",s3Bucket:"存储桶 s3_bucket_name",s3Region:"区域 s3_region_name",s3Ak:"AccessKeyID s3_access_key_id",s3Sk:"SecretAccessKey s3_secret_access_key",s3Token:"会话令牌 aws_session_token(可选)",s3Style:"寻址样式 s3_addressing_style",styleAuto:"auto(自动)",stylePath:"path(路径式,MinIO 常用)",styleVirtual:"virtual(虚拟主机式)",engineParamsSave:"保存引擎参数",approxSize:"≈ {size}"}}},TE={app:{tagline:"File Drop",description:"A ready-to-use file sharing service"},nav:{home:"Share",docs:"API Docs",openapi:"OpenAPI",admin:"Admin",homeTitle:"{name} — Home",mainNav:"Main navigation"},theme:{label:"Theme",light:"Light",dark:"Dark",system:"System"},lang:{label:"Language"},footer:{linkNav:"Footer links",docs:"API Docs",openapi:"OpenAPI",admin:"Admin",copyright:"© {year} {name}"},notify:{title:"System Notice",close:"Got it"},common:{loading:"Loading…",cancel:"Cancel",save:"Save",search:"Search",refresh:"Refresh",copy:"Copy",copied:"Copied",copyFailed:"Copy failed",close:"Close",actions:"Actions",all:"All",query:"Query",reset:"Reset",previousPage:"Previous",nextPage:"Next",pagerInfo:"{total} records · page {page}/{pages}",text:"Text",file:"File",success:"Success",failed:"Failed",denied:"Denied",none:"-"},time:{forever:"Never expires",permanent:"Permanent",expired:"Expired",lessThanMinute:"less than a minute",minutes:"{n} min",hoursMinutes:"{h} h {m} min",daysHours:"{d} d {h} h"},expireStyle:{day:"Days",hour:"Hours",minute:"Minutes",count:"Times",forever:"Forever"},home:{heroTitle:"{name} · File Drop",heroDesc:"No signup — share text or files and hand over a pickup code",pickupPlaceholder:"Enter a pickup code",pickupButton:"Pick up",pickupRequired:"Please enter a pickup code",tabText:"Share text",tabFile:"Share file",textContent:"Text content",textPlaceholder:"Paste the text or code snippet to share…",textBytes:"{bytes} / 222 KB (use file sharing for larger content)",textTooLong:"Content too long (over 222KB) — please share it as a file instead",textRequired:"Enter the text to share",customCode:"Custom pickup code (optional)",customCodeHint:"Leave empty for random; 4-8 letters/digits",customCodeInvalid:"Pickup code must be 4-8 letters or digits",customCodeTaken:"This pickup code is already taken",generateCode:"Generate code",fileRequired:"Please choose a file to share",fileTooLarge:"File exceeds the size limit (max {size})",chunkedUploading:"Chunked upload",uploading:"Uploading",uploadingDots:"Uploading…",uploadAndShare:"Upload & generate code",uploadDisabled:"Guest uploads are disabled. Please contact the administrator if you need to share.",shareAnother:"Share another one",textShared:"Text shared",fileShared:"File shared",uploadCancelled:"Upload cancelled",shareFailed:"Share failed, please try again later",uploadFailed:"Upload failed, please retry",rateLimited:"Too many requests, please slow down",notInitialized:"System is not initialized yet. An administrator must finish the setup first."},result:{badge:"Shared",code:"Pickup code",link:"Pickup link",copyLink:"Copy link",copyLinkCode:"Copy link & code",copyCode:"Copy code",codeCopied:"Pickup code copied",linkCopied:"Pickup link copied",linkCodeCopied:"Link and code copied",clickCopyCode:"Click to copy pickup code",expires:"Expires in: {value}",forever:"Forever",hint:"Send the code or link to the recipient; they can pick it up from the home page.",copyFailed:"Copy failed — please select the text manually"},pickup:{emptyCode:"Pickup code is empty",querying:"Looking up code {code} …",failed:"Pickup failed",failedDefault:"Pickup failed, please try again later",notFound:"Code not found or the share has expired",confirmHint:"Double-check the code, or ask the sender to share it again",retryPlaceholder:"Enter another pickup code",retryButton:"Try again",remainingUnlimited:"Unlimited",remainingCount:"{n} left",expireAt:"Expires: {time}",loadingText:"Fetching content…",copyContent:"Copy content",downloadTxt:"Download as .txt",downloaded:"Download complete",downloadFailed:"Download failed, please retry",copied:"Content copied",sizeUsed:"Size {size} · picked up {n} times",downloading:"Downloading {percent}%",downloadFile:"Download ({size})"},expire:{value:"Amount",label:"Expires in",foreverOption:"Never expires",countOption:"After N pickups",countHint:"The share becomes invalid after the given number of pickups",timeHint:"Valid for {value} {unit}",foreverHint:"The share stays valid until an administrator deletes it",maxSecondsHint:"At most {value}",maxCountHint:"At most {n} pickups"},drop:{aria:"Choose or drop a file",zone:"Click to choose or drop a file here",maxSize:"Max {size} per file",noLimit:"A pickup code is generated after upload",remove:"Remove",tooLarge:"File size {size} exceeds the limit {limit}",typeHint:"Allowed types: {types}"},docs:{searchPlaceholder:"Search documentation…",notGenerated:"Docs not generated yet",buildHint:"They are collected from docs/api/*.md at build time",noMatch:"No matching sections",tocTitle:"On this page",loading:"Loading document…",preparing:"API docs are on the way",preparingHint:"Sources live in the project docs/api/ directory (each .md is one section). Rebuild the frontend to embed them for offline use.",emptyContent:"Document is empty",loadFailed:'Failed to load document "{title}"',sidebar:"Documentation sections"},openapi:{title:"OpenAPI 3.0 Specification",statusOk:"Loaded",statusError:"Failed to load spec",statusLoading:"Loading…",source:"Source: {source}",sourceEmbedded:"Embedded docs/openapi.yaml at build time",notAvailable:"openapi.yaml is not generated or cannot be accessed",notAvailableHint:"The spec file lives in the project docs/openapi.yaml. Rebuilding the frontend embeds it; you can also deploy it to {url} for runtime loading."},notFound:{title:"Page not found",desc:"The address may have changed",back:"Back home"},admin:{login:{title:"Administrator Sign-in",subtitle:"{name} · Admin Console",password:"Admin password",passwordPlaceholder:"Enter the admin password",submit:"Sign in",wrongPassword:"Incorrect password",failed:"Sign-in failed, please try again later",required:"Please enter the admin password",hint:"The password is configured by the deployer via env vars or system settings; repeated failures trigger IP rate limiting."},nav:{title:"Admin",files:"Files",audit:"Audit Log",settings:"Settings",logout:"Sign out",menu:"Admin menu",loggedOut:"Signed out"},files:{title:"File Management",totalRecords:"{total} shares in total",searchPlaceholder:"Search code / file name",batchDelete:"Delete selected",batchDeleteWithCount:"Delete selected ({count})",deleteSelectedTitle:"Delete {count} selected items",selectFirst:"Select rows first",loading:"Loading…",empty:"No shares yet",loadFailed:"Failed to load the file list",colCode:"Code",colName:"Name",colType:"Type",colSize:"Size",colUsed:"Picked",colRemaining:"Remaining",colExpireAt:"Expires",colStatus:"Status",colCreatedAt:"Created",remainingUnlimited:"∞",remainingCount:"{n} left",statusValid:"Active",statusExpired:"Expired",copyCode:"Copy code",copyLink:"Copy link",edit:"Edit",fetchText:"Fetch text",delete:"Delete",confirmDelete:'Delete "{name}"? This cannot be undone.',confirmBatchDelete:"Delete {count} selected shares? This cannot be undone.",deleteSuccess:"Deleted",batchDeleteSuccess:"Batch deleted",deleteFailed:"Delete failed",batchDeleteFailed:"Batch delete failed",nothingChanged:"Nothing changed",updateSuccess:"Updated",updateFailed:"Update failed",fetchTextFailed:"Failed to fetch content (the share may have expired)",linkCopied:"Pickup link copied",codeCopied:"Pickup code copied",editModalTitle:"Edit share",expireAtHint:"Expires at (leave empty for never)",expireCountHint:"Remaining pickups (-1 for unlimited)"},audit:{title:"Audit Log",subtitle:"Upload / download events: time, IP, UA, device, result, bytes and duration",action:"Action",result:"Result",actionUpload:"Upload",actionDownload:"Download",filterIp:"IP",filterStart:"Start time",filterEnd:"End time",empty:"No audit records yet (only upload / download actions are recorded)",loadFailed:"Failed to load the audit log",colTime:"Time",colAction:"Action",colResult:"Result",colFile:"File",colCode:"Code",colBytes:"Bytes",colIp:"IP",colDevice:"Device",colDuration:"Duration",colUaError:"UA / Error"},settings:{title:"System Settings",subtitle:"Site name and branding (custom values win; leave empty to restore built-in defaults)",restoreDefaults:"Restore defaults",restoreDefaultsDone:"Defaults filled in — click save to apply",loading:"Loading settings…",loadFailed:"Failed to load settings",sectionBasic:"Basic",siteName:"Site name · site_name",siteNameHint:"Shown in the nav bar, login page and browser title",siteDomain:"Public site domain",siteDomainHint:"http(s)://host[:port], no path; leave empty to use the current address in share links",sectionLogo:"Nav logo",logoUrl:"Logo image URL · logo_url",uploadImage:"Upload image",logoHint:"Enter a URL or upload a local image (≤256KB, stored inline); leave empty for the built-in default",imageTooLarge:"Image exceeds 256KB — compress it or paste an image URL instead",imageLoaded:"Image loaded — click save to apply site-wide",imageReadFailed:"Failed to read the image",navPreview:"Nav bar preview:",sectionFavicon:"Browser favicon",faviconUrl:"Favicon URL · favicon_url",faviconHint:"Use a square PNG/ICO; leave empty for the built-in default",faviconPreviewHint:"Browser tab icon (applied after saving and refreshing)",saveAll:"Save settings (applies site-wide)",saved:"Settings saved site-wide",saveFailed:"Save failed",sectionPassword:"Change admin password",passwordHint:"After saving, all signed-in sessions are invalidated and you must sign in again",oldPassword:"Old password",newPassword:"New password (at least 6 characters)",confirmPassword:"Confirm new password",pwdRequired:"Please fill in the old and new passwords",pwdTooShort:"The new password must be at least 6 characters",pwdMismatch:"The two passwords do not match",pwdChanged:"Password changed — please sign in again with the new password",pwdChangeFailed:"Change failed",pwdWrong:"Old password is incorrect",sectionBackground:"Background image",backgroundUrl:"Background URL · background_url",backgroundHint:"http(s) image URL, data:image image or site-relative path (≤2048 chars); leave empty for the theme default",sectionFooter:"Footer",footerText:"Footer text · footer_text",footerTextHint:"Shown at the page bottom as plain text (≤2000 chars); leave empty for the default tagline",footerBeian:"ICP filing number · footer_beian",footerBeianHint:"e.g. 京ICP备2024xxxxxx号-1 (≤128 chars)",sectionNotify:"System notice",notifyEnabled:"Show floating notice · notify_enabled",notifyTitle:"Notice title · notify_title",notifyTitleHint:'Leave empty for the default title "System Notice" (≤128 chars)',notifyContent:"Notice content · notify_content",notifyContentHint:"Controlled HTML such as is allowed (≤2000 chars)",sectionSavePolicy:"Save policy",maxSaveSeconds:"Max save seconds · max_save_seconds",maxSaveSecondsHint:"0 = unlimited (server default 7-day fallback), max {max} seconds (365 days)",maxSaveCount:"Max pickup count · max_save_count",maxSaveCountHint:"0 = unlimited, max {max}",sectionStorage:"Storage policy",maxFileSize:"Max file size · max_file_size (bytes)",maxFileSizeHint:"0 = fall back to uploadSize (currently {fallback}), max {max} bytes (10 GiB)",allowedFileTypes:"Allowed types · allowed_file_types",allowedFileTypesHint:"Comma separated: extensions (jpg) or MIME (image/*); * means no limit",sectionUploadRate:"Upload rate limit",uploadCount:"Uploads per window · uploadCount",uploadCountHint:"Min 1, max {max}",uploadMinute:"Window length (minutes) · uploadMinute",uploadMinuteHint:"Min 1, max {max}",unitHour:"Hour(s)",unitDay:"Day(s)",unitMB:"MB",unitGB:"GB",maxSaveTime:"Max save time · max_save_seconds",maxSaveTimeHint:"0 = unlimited (server default 7-day fallback), max 365 days",saveTimeUnlimited:"Unlimited (0)",maxFileSizeFriendly:"Max file size · max_file_size",maxFileSizeHintV3:"0 = fall back to uploadSize (current {fallback}), max 10 GB",sizeUnlimited:"Unlimited (0)",sectionEngine:"Storage engine",engineCurrent:"Current engine",engineLocal:"Local storage",engineWebdav:"WebDAV",engineS3:"S3 object storage",engineSwitch:"Switch to this engine",engineSwitching:"Switching…",engineSwitchOk:"Storage engine switched to {engine}",engineSwitchFail:"Switch failed (previous engine kept)",engineParamsTitle:"Engine parameters",engineParamsSaved:"Engine parameters saved",localRoot:"Storage root · local_storage_path",localRootHint:"Empty = system default data directory; applies to new writes",webdavUrl:"Server URL · webdav_url",webdavUrlHint:"e.g. https://dav.example.com/dav/",webdavRoot:"Remote root · webdav_root_path",webdavRootHint:"Remote base directory (created recursively if missing)",webdavUser:"Username · webdav_username",webdavPass:"Password · webdav_password",secretKeepHint:"Empty or ****** = keep unchanged",s3Endpoint:"Endpoint · s3_endpoint_url",s3EndpointHint:"e.g. https://s3.example.com:9000 (leave empty for AWS)",s3Bucket:"Bucket · s3_bucket_name",s3Region:"Region · s3_region_name",s3Ak:"AccessKeyID · s3_access_key_id",s3Sk:"SecretAccessKey · s3_secret_access_key",s3Token:"Session token · aws_session_token (optional)",s3Style:"Addressing style · s3_addressing_style",styleAuto:"auto",stylePath:"path (typical for MinIO)",styleVirtual:"virtual-hosted",engineParamsSave:"Save engine parameters",approxSize:"≈ {size}"}}},Hd="fcb_locale";function PE(){try{const e=localStorage.getItem(Hd);return e==="zh-CN"||e==="en-US"?e:null}catch{return null}}function IE(){const e=PE();return e||(((typeof navigator<"u"?navigator.language:"en")??"en").toLowerCase().startsWith("zh")?"zh-CN":"en-US")}function AE(e){try{localStorage.setItem(Hd,e)}catch{}}const Ir=pE({legacy:!1,locale:IE(),fallbackLocale:"zh-CN",messages:{"zh-CN":EE,"en-US":TE},missingWarn:!1,fallbackWarn:!1});function Ac(){return Ir.global.locale.value??"zh-CN"}function LT(e){Ir.global.locale.value=e,document.documentElement.lang=e,AE(e)}Ir.global.t;function vo(e,t){return Ir.global.t(e,t??{})}function wT(e){if(e==null||Number.isNaN(e))return"-";if(e<1024)return`${e} B`;const t=["KB","MB","GB","TB"];let o=e,r=-1;do o/=1024,r++;while(o>=1024&&r=100?0:1)} ${t[r]}`}function DT(e){if(!e)return"-";const t=new Date(e);if(Number.isNaN(t.getTime()))return String(e);const o=r=>`${r}`.padStart(2,"0");return`${t.getFullYear()}-${o(t.getMonth()+1)}-${o(t.getDate())} ${o(t.getHours())}:${o(t.getMinutes())}:${o(t.getSeconds())}`}function RT(e){if(!e)return vo("time.forever");const t=new Date(e).getTime();if(Number.isNaN(t))return vo("time.forever");const o=t-Date.now();if(o<=0)return vo("time.expired");const r=Math.floor(o/6e4);if(r<1)return vo("time.lessThanMinute");if(r<60)return vo("time.minutes",{n:r});const n=Math.floor(r/60);if(n<24)return vo("time.hoursMinutes",{h:n,m:r%60});const i=Math.floor(n/24);return vo("time.daysHours",{d:i,h:n%24})}function FT(e){return e==null?"-":e<1e3?`${e} ms`:`${(e/1e3).toFixed(2)} s`}const LE=[{value:"day",label:"day"},{value:"hour",label:"hour"},{value:"minute",label:"minute"},{value:"count",label:"count"},{value:"forever",label:"forever"}];function OT(e){const t=LE.find(o=>o.value===e);return t?vo(`expireStyle.${t.value}`):e}function NT(e){if(!e)return null;const t=/filename\*=(?:UTF-8'')?([^;]+)/i.exec(e);if(t)try{return decodeURIComponent(t[1].replace(/["']/g,"").trim())}catch{}const o=/filename="?([^";]+)"?/i.exec(e);return o?o[1]:null}function MT(e,t){const o=URL.createObjectURL(e),r=document.createElement("a");r.href=o,r.download=t,document.body.appendChild(r),r.click(),r.remove(),setTimeout(()=>URL.revokeObjectURL(o),5e3)}async function kT(e){try{return await navigator.clipboard.writeText(e),!0}catch{try{const t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();const o=document.execCommand("copy");return t.remove(),o}catch{return!1}}}async function HT(e){const t=await crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(t)).map(o=>o.toString(16).padStart(2,"0")).join("")}function De(e,t){for(const o of t)if(e&&typeof e=="object"&&o in e&&e[o]!==void 0&&e[o]!==null)return e[o]}const wE="/assets/logo-CBe6oOaL.svg",DE="/assets/favicon-Dl6ZLL7S.png",RE=wE,FE=DE,tl="文件快传";function ol(e,t=!0){return e==null?t:typeof e=="boolean"?e:typeof e=="number"?e!==0:String(e)!=="0"&&String(e)!=="false"&&String(e)!==""}function Lc(e){return Array.isArray(e)?e.map(t=>String(t).trim()).filter(Boolean):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function ar(e,t){const o=Number(e);return Number.isFinite(o)?o:t}const OE=Xu("config",{state:()=>({loaded:!1,loading:!1,siteName:tl,siteDomain:"",description:"",explain:"",uploadSize:10*1024*1024,allowedFileTypes:[],expireStyle:["day","hour","minute","forever","count"],enableChunk:!1,openUpload:!0,notifyEnabled:!1,notifyTitle:"",notifyContent:"",logoUrl:"",faviconUrl:"",backgroundUrl:"",footerText:"",footerBeian:"",maxFileSize:0,maxSaveSeconds:0,maxSaveCount:0,uploadCount:0,uploadMinute:0}),getters:{displayLogoUrl:e=>e.logoUrl?.trim()?e.logoUrl:RE,displayFaviconUrl:e=>e.faviconUrl?.trim()?e.faviconUrl:FE,displayName:e=>e.siteName?.trim()?e.siteName:tl,shareLinkBase:e=>e.siteDomain?.trim()?e.siteDomain.trim().replace(/\/$/,""):location.origin,effectiveMaxFileSize(){return this.maxFileSize>0?this.maxFileSize:this.uploadSize}},actions:{async load(){this.loading=!0;try{const e=await gS(ed.publicConfig,{timeout:8e3}),t=De(e,["config"])??e;this.siteName=String(De(t,["name","site_name","siteName"])??tl),this.siteDomain=String(De(t,["site_domain","siteDomain"])??"").trim(),this.description=String(De(t,["description"])??""),this.explain=String(De(t,["explain","page_explain"])??""),this.uploadSize=ar(De(t,["uploadSize","upload_size"]),10*1024*1024),this.allowedFileTypes=Lc(De(t,["allowedFileTypes","allowed_file_types"]));const o=Lc(De(t,["expireStyle","expire_style"]));o.length&&(this.expireStyle=o),this.enableChunk=ol(De(t,["enableChunk","enable_chunk"]),!1),this.openUpload=ol(De(t,["openUpload","open_upload"]),!0),this.notifyTitle=String(De(t,["notify_title","notifyTitle"])??""),this.notifyContent=String(De(t,["notify_content","notifyContent"])??""),this.notifyEnabled=ol(De(t,["notify_enabled","notifyEnabled"]),!1),this.backgroundUrl=String(De(t,["background_url","backgroundUrl"])??"").trim(),this.footerText=String(De(t,["footer_text","footerText"])??""),this.footerBeian=String(De(t,["footer_beian","footerBeian"])??""),this.maxFileSize=ar(De(t,["max_file_size","maxFileSize","maxFileSize"]),0),this.maxSaveSeconds=ar(De(t,["max_save_seconds","maxSaveSeconds"]),0),this.maxSaveCount=ar(De(t,["max_save_count","maxSaveCount"]),0),this.uploadCount=ar(De(t,["uploadCount","upload_count"]),0),this.uploadMinute=ar(De(t,["uploadMinute","upload_minute"]),0),this.logoUrl=String(De(t,["logo_url","logoUrl"])??"").trim(),this.faviconUrl=String(De(t,["favicon_url","faviconUrl"])??"").trim(),this.loaded=!0,this.applyToDocument()}catch{}finally{this.loading=!1}},applyToDocument(){let e=document.querySelector('link[rel="icon"]');e||(e=document.createElement("link"),e.rel="icon",document.head.appendChild(e)),e.href=this.displayFaviconUrl}}}),$T=["light","dark","system"],$d="fcb_theme_mode";function NE(){try{const e=localStorage.getItem($d);return e==="light"||e==="dark"||e==="system"?e:null}catch{return null}}function ME(e){try{localStorage.setItem($d,e)}catch{}}function Bd(){return typeof matchMedia=="function"&&matchMedia("(prefers-color-scheme: dark)").matches}const Do=mt(NE()??"system"),qn=mt(Do.value==="system"?Bd()?"dark":"light":Do.value);let wc=!1;function kE(){if(wc||typeof matchMedia!="function")return;wc=!0;const e=matchMedia("(prefers-color-scheme: dark)");e.addEventListener?.("change",()=>{Do.value==="system"&&(qn.value=e.matches?"dark":"light")})}function HE(){kE(),qn.value=Do.value==="system"?Bd()?"dark":"light":Do.value,document.documentElement.dataset.theme=qn.value}St(Do,HE,{immediate:!0});function $E(e){Do.value=e,ME(e)}function BE(){return{mode:Do,resolved:qn,setMode:$E}}let WE=0;const zE=Xu("toast",{state:()=>({items:[]}),actions:{push(e,t="info",o=3200){const r=++WE;this.items.push({id:r,type:t,text:e}),this.items.length>4&&this.items.shift(),setTimeout(()=>this.dismiss(r),o)},success(e){this.push(e,"success")},error(e){this.push(e,"error",4200)},info(e){this.push(e,"info")},dismiss(e){this.items=this.items.filter(t=>t.id!==e)}}}),UE={class:"toast-host","aria-live":"polite"},VE=["onClick"],jE={class:"toast-icon","aria-hidden":"true"},GE=po({__name:"ToastHost",setup(e){const t=zE();return(o,r)=>(Ft(),hr("div",UE,[(Ft(!0),hr(qe,null,tm(bt(t).items,n=>(Ft(),hr("div",{key:n.id,class:ii(["toast",`toast-${n.type}`]),role:"status",onClick:i=>bt(t).dismiss(n.id)},[Rt("span",jE,Dn(n.type==="success"?"✅":n.type==="error"?"⚠️":"ℹ️"),1),Rt("span",null,Dn(n.text),1)],10,VE))),128))]))}}),KE=["aria-label"],YE={class:"notify-head"},qE={class:"notify-title-text"},XE=["title","aria-label"],JE=["innerHTML"],QE=po({__name:"NotifyPop",props:{title:{},content:{}},emits:["close"],setup(e,{emit:t}){const o=t;return(r,n)=>(Ft(),hr("aside",{class:"notify-pop",role:"dialog","aria-live":"polite","aria-label":e.title||r.$t("notify.title")},[Rt("div",YE,[n[1]||(n[1]=Rt("span",{"aria-hidden":"true"},"🔔",-1)),Rt("span",qE,Dn(e.title||r.$t("notify.title")),1),Rt("button",{class:"notify-close",type:"button",title:r.$t("notify.close"),"aria-label":r.$t("notify.close"),onClick:n[0]||(n[0]=i=>o("close"))}," ✕ ",8,XE)]),Rt("div",{class:"notify-content",innerHTML:e.content},null,8,JE)],8,KE))}}),Wd=(e,t)=>{const o=e.__vccOpts||e;for(const[r,n]of t)o[r]=n;return o},ZE=Wd(QE,[["__scopeId","data-v-6154d8f4"]]),eT={class:"app-root"},tT={key:1,class:"app-bg-tint","aria-hidden":"true"},Dc="fcb_notify_read",oT=po({__name:"App",setup(e){const t=OE(),o=kg(),{resolved:r}=BE();St(Ac,d=>{document.documentElement.lang=d},{immediate:!0}),St([()=>o.fullPath,Ac,()=>t.displayName],()=>{const d=o.meta.titleKey,p=typeof d=="string"?Ir.global.t(d):t.displayName;document.title=`${p} · ${t.displayName}`},{immediate:!0});const n=fe(()=>r.value==="dark"?uS:null),i=fe(()=>r.value==="dark"?{common:{primaryColor:"#7d95ff",primaryColorHover:"#98abff",primaryColorPressed:"#6c86f5",primaryColorSuppl:"#98abff"}}:{common:{primaryColor:"#4f6ef7",primaryColorHover:"#3d5bf0",primaryColorPressed:"#4359e0",primaryColorSuppl:"#3d5bf0"}}),l=fe(()=>!!t.backgroundUrl.trim()),a=mt(!1),s=mt(!1);function c(){return`${t.notifyEnabled}|${t.notifyTitle}|${t.notifyContent}`}function u(){try{s.value=localStorage.getItem(Dc)===c()}catch{s.value=!1}}function f(){a.value=!1,s.value=!0;try{localStorage.setItem(Dc,c())}catch{}}return St(()=>[t.loaded,c()],()=>{const d=s.value;u(),!(!d&&s.value)&&t.loaded&&t.notifyEnabled&&t.notifyContent.trim()&&!s.value&&(a.value=!0)}),pi(()=>{t.load(),u(),t.loaded&&t.notifyEnabled&&t.notifyContent.trim()&&!s.value&&(a.value=!0)}),(d,p)=>{const g=Qp("RouterView");return Ft(),Zr(bt(q_),{theme:n.value,"theme-overrides":i.value,"inline-theme-disabled":""},{default:du(()=>[Rt("div",eT,[p[0]||(p[0]=Rt("div",{class:"app-ambient","aria-hidden":"true"},null,-1)),l.value?(Ft(),hr("div",{key:0,class:"app-bg","aria-hidden":"true",style:ni({backgroundImage:`url(${bt(t).backgroundUrl})`})},null,4)):Ln("",!0),l.value?(Ft(),hr("div",tT)):Ln("",!0),a.value?(Ft(),Zr(ZE,{key:2,title:bt(t).notifyTitle,content:bt(t).notifyContent,onClose:f},null,8,["title","content"])):Ln("",!0),je(GE),je(g)])]),_:1},8,["theme","theme-overrides"])}}}),rT=Wd(oT,[["__scopeId","data-v-b2dd3b97"]]),nT="modulepreload",iT=function(e){return"/"+e},Rc={},Dt=function(t,o,r){let n=Promise.resolve();if(o&&o.length>0){let s=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const l=document.querySelector("meta[property=csp-nonce]"),a=l?.nonce||l?.getAttribute("nonce");n=s(o.map(c=>{if(c=iT(c),c in Rc)return;Rc[c]=!0;const u=c.endsWith(".css"),f=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${f}`))return;const d=document.createElement("link");if(d.rel=u?"stylesheet":nT,u||(d.as="script"),d.crossOrigin="",d.href=c,a&&d.setAttribute("nonce",a),document.head.appendChild(d),u)return new Promise((p,g)=>{d.addEventListener("load",p),d.addEventListener("error",()=>g(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(l){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=l,window.dispatchEvent(a),!a.defaultPrevented)throw l}return n.then(l=>{for(const a of l||[])a.status==="rejected"&&i(a.reason);return t().catch(i)})},lT=mg(),Xn=Mg({history:lT,routes:[{path:"/",name:"home",component:()=>Dt(()=>import("./HomeView-BUGc7QyM.js"),__vite__mapDeps([0,1,2,3,4,5])),meta:{titleKey:"nav.home"}},{path:"/s/:code",name:"pickup",component:()=>Dt(()=>import("./PickupView-CUVFjD6g.js"),__vite__mapDeps([6,1,2,3,4])),meta:{titleKey:"nav.home"}},{path:"/admin/login",name:"admin-login",component:()=>Dt(()=>import("./LoginView-mkNZ67cf.js"),__vite__mapDeps([7,1,2,3,8,9,10])),meta:{titleKey:"admin.nav.title"}},{path:"/admin",component:()=>Dt(()=>import("./AdminLayout-CmvNXPHJ.js"),__vite__mapDeps([11,2,8,9])),meta:{requiresAuth:!0,titleKey:"admin.nav.title"},children:[{path:"",redirect:{name:"admin-files"}},{path:"files",name:"admin-files",component:()=>Dt(()=>import("./FilesView-lLPRhmyI.js"),__vite__mapDeps([12,9,4,13])),meta:{titleKey:"admin.nav.files"}},{path:"audit",name:"admin-audit",component:()=>Dt(()=>import("./AuditView-BSm5VfBI.js"),__vite__mapDeps([14,9,13,15])),meta:{titleKey:"admin.nav.audit"}},{path:"settings",name:"admin-settings",component:()=>Dt(()=>import("./SettingsView-DgvAWaBc.js"),__vite__mapDeps([16,9,8,17])),meta:{titleKey:"admin.nav.settings"}}]},{path:"/docs",name:"docs",component:()=>Dt(()=>import("./DocsView-DPtCYlAM.js"),__vite__mapDeps([18,1,2,3,19,20])),meta:{titleKey:"nav.docs"}},{path:"/docs/:slug",name:"docs-detail",component:()=>Dt(()=>import("./DocsView-DPtCYlAM.js"),__vite__mapDeps([18,1,2,3,19,20])),meta:{titleKey:"nav.docs"}},{path:"/openapi",name:"openapi",component:()=>Dt(()=>import("./OpenApiView-qf3nWBmo.js"),__vite__mapDeps([21,1,2,3,22,19,23])),meta:{titleKey:"nav.openapi"}},{path:"/:pathMatch(.*)*",name:"not-found",component:()=>Dt(()=>import("./NotFoundView-DdQb5mYe.js"),__vite__mapDeps([24,1,2,3])),meta:{titleKey:"notFound.title"}}],scrollBehavior(e,t,o){return o||(e.hash?{el:e.hash,behavior:"smooth"}:{top:0})}});Xn.beforeEach(e=>{if(e.meta.requiresAuth&&!localStorage.getItem("fcb_admin_token"))return{name:"admin-login",query:{redirect:e.fullPath}}});hS(()=>{const e=Xn.currentRoute.value;e.name!=="admin-login"&&Xn.push({name:"admin-login",query:{redirect:e.fullPath}})});const Li=Sh(rT);Li.use(Th());Li.use(Ir);Li.use(Xn);Li.mount("#app");export{FT as $,du as A,CT as B,sT as C,pT as D,LE as E,qe as F,je as G,st as H,pi as I,St as J,DT as K,RT as L,MT as M,kg as N,Qp as O,Su as P,fT as Q,fn as R,De as S,uT as T,IT as U,Zf as V,td as W,NT as X,AT as Y,mT as Z,Wd as _,OE as a,Ze as a0,Yl as a1,Il as a2,Bx as a3,Jl as a4,Vs as a5,Nx as a6,en as a7,Je as a8,pn as a9,Ac as aA,LT as aB,BE as aC,PT as aD,Io as aa,ET as ab,cT as ac,Sl as ad,Ds as ae,ll as af,TT as ag,Wr as ah,dT as ai,ua as aj,xT as ak,_T as al,aT as am,n_ as an,C0 as ao,J as ap,vT as aq,ST as ar,c_ as as,yT as at,Dm as au,Xu as av,od as aw,mS as ax,Dt as ay,$T as az,Rt as b,hr as c,po as d,ii as e,bt as f,Ln as g,fe as h,zE as i,mt as j,kT as k,OT as l,gT as m,ni as n,Ft as o,dS as p,wm as q,tm as r,wT as s,Dn as t,Sa as u,gS as v,hT as w,ed as x,HT as y,Zr as z}; diff --git a/server/web/dist/assets/share-CqDDLJWI.js b/server/web/dist/assets/share-B-zR67vw.js similarity index 96% rename from server/web/dist/assets/share-CqDDLJWI.js rename to server/web/dist/assets/share-B-zR67vw.js index 6be96a6..ce7a1b7 100644 --- a/server/web/dist/assets/share-CqDDLJWI.js +++ b/server/web/dist/assets/share-B-zR67vw.js @@ -1 +1 @@ -import{v as x,S as s,U as m,V as g,x as u,W as w,H as i,X as f,Y as h}from"./index-DYsKpclu.js";function T(n,t,r,a=""){return x(u.shareText,{method:"POST",form:{text:n,expire_value:String(t),expire_style:r,code:a}})}function y(n,t,r,a,o=""){const e=new FormData;return e.append("file",n),e.append("expire_value",String(t)),e.append("expire_style",r),o&&e.append("code",o),h(u.shareFile,e,a)}async function S(n){const t=await x(u.shareMetadata,{query:{code:n}}),r=!!(s(t,["is_text","isText"])??s(t,["type"])==="text");return{code:String(s(t,["code"])??n),name:String(s(t,["name"])??"未命名"),size:Number(s(t,["size"])??0),type:r?"text":"file",isText:r,createdAt:s(t,["created_at","createdAt"])??null,expiredAt:s(t,["expired_at","expires_at","expiredAt","expiresAt"])??null,expiredCount:s(t,["expired_count","expiredCount","remaining_downloads","remainingDownloads"])??null,usedCount:Number(s(t,["used_count","usedCount"])??0),remainingDownloads:s(t,["remaining_downloads","remainingDownloads","expired_count","expiredCount"])??null}}async function b(n){const{blob:t}=await m(u.shareSelect,{query:{code:n}});return t.text()}function A(n,t){return new Promise((r,a)=>{const o=new URL(g(u.shareSelect),location.origin);o.searchParams.set("code",n);const e=new XMLHttpRequest;e.open("GET",o.toString()),e.timeout=6e5,e.responseType="blob";const l=w();l&&e.setRequestHeader("Authorization",`Bearer ${l}`),e.onprogress=p=>{p.lengthComputable&&t&&t(Math.round(p.loaded/p.total*100))},e.onload=()=>{if((e.getResponseHeader("content-type")??"").includes("application/json")){const d=new FileReader;d.onload=()=>{try{const c=JSON.parse(String(d.result));a(new i(c.code??e.status,c.msg||"取件失败",e.status))}catch{a(new i(e.status,"取件失败",e.status))}},d.readAsText(e.response);return}e.status>=200&&e.status<300?r({blob:e.response,filename:f(e.getResponseHeader("content-disposition"))}):a(new i(e.status,`取件失败(HTTP ${e.status})`,e.status))},e.onerror=()=>a(new i(0,"网络异常,取件失败")),e.ontimeout=()=>a(new i(0,"下载超时,请重试")),e.send()})}export{y as a,A as b,S as g,b as p,T as s}; +import{v as x,S as s,U as m,V as g,x as u,W as w,H as i,X as f,Y as h}from"./index-BKnWAKao.js";function T(n,t,r,a=""){return x(u.shareText,{method:"POST",form:{text:n,expire_value:String(t),expire_style:r,code:a}})}function y(n,t,r,a,o=""){const e=new FormData;return e.append("file",n),e.append("expire_value",String(t)),e.append("expire_style",r),o&&e.append("code",o),h(u.shareFile,e,a)}async function S(n){const t=await x(u.shareMetadata,{query:{code:n}}),r=!!(s(t,["is_text","isText"])??s(t,["type"])==="text");return{code:String(s(t,["code"])??n),name:String(s(t,["name"])??"未命名"),size:Number(s(t,["size"])??0),type:r?"text":"file",isText:r,createdAt:s(t,["created_at","createdAt"])??null,expiredAt:s(t,["expired_at","expires_at","expiredAt","expiresAt"])??null,expiredCount:s(t,["expired_count","expiredCount","remaining_downloads","remainingDownloads"])??null,usedCount:Number(s(t,["used_count","usedCount"])??0),remainingDownloads:s(t,["remaining_downloads","remainingDownloads","expired_count","expiredCount"])??null}}async function b(n){const{blob:t}=await m(u.shareSelect,{query:{code:n}});return t.text()}function A(n,t){return new Promise((r,a)=>{const o=new URL(g(u.shareSelect),location.origin);o.searchParams.set("code",n);const e=new XMLHttpRequest;e.open("GET",o.toString()),e.timeout=6e5,e.responseType="blob";const l=w();l&&e.setRequestHeader("Authorization",`Bearer ${l}`),e.onprogress=p=>{p.lengthComputable&&t&&t(Math.round(p.loaded/p.total*100))},e.onload=()=>{if((e.getResponseHeader("content-type")??"").includes("application/json")){const d=new FileReader;d.onload=()=>{try{const c=JSON.parse(String(d.result));a(new i(c.code??e.status,c.msg||"取件失败",e.status))}catch{a(new i(e.status,"取件失败",e.status))}},d.readAsText(e.response);return}e.status>=200&&e.status<300?r({blob:e.response,filename:f(e.getResponseHeader("content-disposition"))}):a(new i(e.status,`取件失败(HTTP ${e.status})`,e.status))},e.onerror=()=>a(new i(0,"网络异常,取件失败")),e.ontimeout=()=>a(new i(0,"下载超时,请重试")),e.send()})}export{y as a,A as b,S as g,b as p,T as s}; diff --git a/server/web/dist/index.html b/server/web/dist/index.html index 583145b..9ad2c12 100644 --- a/server/web/dist/index.html +++ b/server/web/dist/index.html @@ -27,7 +27,7 @@ background: #0b0f1a; } - + diff --git a/web/package-lock.json b/web/package-lock.json index 538626d..2ae66ca 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,12 +1,12 @@ { - "name": "filecodebox-web", - "version": "1.0.0", + "name": "fileshare-web", + "version": "26.9", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "filecodebox-web", - "version": "1.0.0", + "name": "fileshare-web", + "version": "26.9", "dependencies": { "marked": "^16.3.0", "naive-ui": "^2.45.3", @@ -1957,4 +1957,4 @@ } } } -} +} \ No newline at end of file diff --git a/web/package.json b/web/package.json index 1c42b26..cb41204 100644 --- a/web/package.json +++ b/web/package.json @@ -1,7 +1,7 @@ { - "name": "filecodebox-web", + "name": "fileshare-web", "private": true, - "version": "1.0.0", + "version": "26.9", "type": "module", "description": "FileCodeBox Go 版前端:分享 / 取件 / 管理后台 / 审计日志 / 站内文档", "scripts": {