diff --git a/cmd/server.go b/cmd/server.go index da00c31..63a4990 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -89,8 +89,8 @@ func startFiber(cfg *config.Config, db *sqlx.DB) error { // Global middleware app.Use(middleware.SecurityHeaders()) + app.Use(middleware.CORS("*")) app.Use(middleware.HandleOptions()) - app.Use(middleware.CORS("")) app.Use(middleware.DownloadHostIsolation(cfg.Auth.DownloadHosts)) // Register routes diff --git a/docs/architecture-analysis.md b/docs/architecture-analysis.md index 62fcde8..d900475 100644 --- a/docs/architecture-analysis.md +++ b/docs/architecture-analysis.md @@ -269,9 +269,9 @@ sub-store-cloudflare/ | GET | `/api/link/collection/:name` | 生成下载链接 | | GET | `/api/source/flow/:name` | 流量信息(解析 subscription-userinfo 头) | -### 5.3 下载 API (`/download/*`) +### 5.3 下载 API -**路由**: `GET /download/collection/:name/:target?/:token?` 和 `GET /download/source/:name/:target?/:token?` +**路由**: `GET /collections/:name/:token` 和 `GET /sources/:name/:token`,目标格式通过 `?target=` 指定 **鉴权**: 1. 先校验全局 `SUB_STORE_PUBLIC_DOWNLOAD_TOKEN`(timingSafeEqual) diff --git a/docs/backend-dev-plan.md b/docs/backend-dev-plan.md index 96a1631..11141cd 100644 --- a/docs/backend-dev-plan.md +++ b/docs/backend-dev-plan.md @@ -566,8 +566,8 @@ func RunSettledWithConcurrency[T any](tasks []func() (T, error), concurrency int | 任务 | 产出 | 原项目对照 | |------|------|-----------| -| `GET /download/collection/:name/:target?/:token?` | `handler/download.go` | `download.ts` | -| `GET /download/source/:name/:target?/:token?` | `handler/download.go` | `download.ts` | +| `GET /collections/:name/:token` | `handler/download.go` | `download.ts` | +| `GET /sources/:name/:token` | `handler/download.go` | `download.ts` | | Download token 验证 (全局 + scoped grant) | `handler/download.go` | `download.ts` rejectInvalidDownloadToken | | Target 推断 (显式 + UA 推断) | `handler/download.go` | `download.ts` getDownloadTarget | | 临时源覆盖 (url/content/ua query) | `handler/download.go` | `download.ts` getTemporarySourceOverride | @@ -720,8 +720,8 @@ func RunSettledWithConcurrency[T any](tasks []func() (T, error), concurrency int | 方法 | 路径 | Phase | 说明 | |------|------|-------|------| -| GET | `/download/collection/:name/:target?/:token?` | 8 | 下载集合 | -| GET | `/download/source/:name/:target?/:token?` | 8 | 下载源 | +| GET | `/collections/:name/:token` | 8 | 下载集合 | +| GET | `/sources/:name/:token` | 8 | 下载源 | ### 其他 @@ -808,7 +808,7 @@ output: YAML with proxies: [{name:"test", type:"ss", ...}] ``` 1. 创建 remote source (url: mock server) 2. 创建 collection (sourceIds: [source.id]) -3. GET /download/collection/:id/mihomo?token=xxx +3. GET /collections/:id/xxx?target=mihomo 4. 验证 YAML 输出包含正确的 proxy 节点 ``` diff --git a/docs/review-resolutions.md b/docs/review-resolutions.md index c60d4f8..8e513ec 100644 --- a/docs/review-resolutions.md +++ b/docs/review-resolutions.md @@ -47,7 +47,7 @@ | 35 | 缓存操作错误吞咽 | recover + 日志,不传播 | `database/cache_repo.go` | | 36 | 并发 wait 延迟 | 保留 waitMs 参数 | `service/concurrency.go` | | 37 | MAX_SCRIPT_ACTIONS | custom 规则上限 32 条 | `filter/custom.go` | -| 38 | restoreDownloadGrantSnapshot | 恢复时写回 tokenHash | `handler/recycle.go` | +| 38 | restoreDownloadGrantSnapshot | 不实现,分享已移除 | `handler/recycle.go` | | 39 | FRONTEND_VERSION 常量 | 定义 = "1.0.0" | `config/` | | 40 | TEST_URL 常量 | 定义 generate_204 | `render/` | | 41 | defaultProxyGroups | 无模板时生成 3 默认组 | `template/builtin.go` | @@ -118,7 +118,6 @@ buildTimeScripts: false // 无 JS 引擎 proxyConversion: true // POST /api/proxy/parse ruleConversion: true // POST /api/rule/parse -scopedShares: true // 分享令牌 recycleBin: true // 回收站 nodeInfo: true // POST /api/utils/node-info surgeMac: true // surge-mac 渲染 @@ -568,11 +567,11 @@ func safeCacheGet(repo *CacheRepo, key string) (string, bool) { **落地**:`filter/custom.go` 的验证逻辑。 -#### #38 restoreDownloadGrantSnapshot → 恢复时写回 tokenHash +#### #38 restoreDownloadGrantSnapshot → 不实现 -**决议**:从回收站恢复 `share` 类型时,快照中的 `tokenHash` 需写回 `download_grants` 表。这是 share 恢复的特殊逻辑——其他资源类型(source/collection/template)恢复时不需要处理 tokenHash。 +**决议**:分享功能已移除,不再创建或恢复 `share` 类型回收站记录。 -**落地**:`handler/recycle.go` 的 restore 逻辑。 +**落地**:`handler/recycle.go` 的 restore 逻辑不包含 share 分支。 #### #39 FRONTEND_VERSION 常量 diff --git a/frontend/README.md b/frontend/README.md index 12c3be8..01d7eef 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -84,7 +84,6 @@ npm run preview # 预览生产构建 | 订阅源 | `/sources` | CRUD + 过滤器编辑 + 预览 + 下载链接 | | 合集 | `/collections` | CRUD + 源多选 + 模板选择 | | 模板 | `/templates` | CRUD + JSON 配置编辑 + 内置模板查看 | -| 分享 | `/shares` | 创建 + 启用/禁用 + 删除 + 过期时间 | | 回收站 | `/recycle-bin` | 恢复 + 彻底删除 | | 工具 | `/tools` | 代理/规则转换 + 节点信息查询 + 数据导入导出 | | 设置 | `/settings` | UA/超时/缓存/节点API/主题 | diff --git a/frontend/dist/assets/index-2qQf5Bht.css b/frontend/dist/assets/index-2qQf5Bht.css new file mode 100644 index 0000000..0be30be --- /dev/null +++ b/frontend/dist/assets/index-2qQf5Bht.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.right-4{right:1rem}.top-0{top:0}.z-30{z-index:30}.z-50{z-index:50}.z-\[60\]{z-index:60}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.ml-3{margin-left:.75rem}.ml-60{margin-left:15rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-2{height:.5rem}.max-h-32{max-height:8rem}.max-h-96{max-height:24rem}.max-h-\[85vh\]{max-height:85vh}.min-h-screen{min-height:100vh}.w-2{width:.5rem}.w-24{width:6rem}.w-28{width:7rem}.w-60{width:15rem}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-2xl{max-width:42rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.border-collapse{border-collapse:collapse}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(243 244 246 / var(--tw-divide-opacity, 1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-primary-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.bg-black\/40{background-color:#0006}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-primary-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-primary-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-primary-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-8{padding-top:2rem;padding-bottom:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-7xl{font-size:4.5rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-primary-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-primary-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter-from,.fade-leave-to{opacity:0}.hover\:bg-blue-50:hover{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-800\/50:hover{background-color:#1f293780}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-primary-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-primary-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-100:disabled{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.disabled\:opacity-60:disabled{opacity:.6}@media(min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}} diff --git a/frontend/dist/assets/index-CJWAL95F.css b/frontend/dist/assets/index-CJWAL95F.css deleted file mode 100644 index c8b11c9..0000000 --- a/frontend/dist/assets/index-CJWAL95F.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.right-4{right:1rem}.z-30{z-index:30}.z-50{z-index:50}.z-\[60\]{z-index:60}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-60{margin-left:15rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-2{height:.5rem}.max-h-32{max-height:8rem}.max-h-96{max-height:24rem}.max-h-\[85vh\]{max-height:85vh}.min-h-screen{min-height:100vh}.w-2{width:.5rem}.w-24{width:6rem}.w-28{width:7rem}.w-60{width:15rem}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-2xl{max-width:42rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-primary-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.bg-black\/40{background-color:#0006}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-primary-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-primary-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-8{padding-top:2rem;padding-bottom:2rem}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-7xl{font-size:4.5rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-primary-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter-from,.fade-leave-to{opacity:0}.hover\:bg-blue-50:hover{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-800\/50:hover{background-color:#1f293780}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-primary-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.disabled\:bg-gray-100:disabled{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}@media(min-width:768px){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}} diff --git a/frontend/dist/assets/index-CtUpN0Ye.js b/frontend/dist/assets/index-CtUpN0Ye.js new file mode 100644 index 0000000..f8935b5 --- /dev/null +++ b/frontend/dist/assets/index-CtUpN0Ye.js @@ -0,0 +1,37 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();/** +* @vue/shared v3.5.40 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Wr(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Re={},gn=[],Rt=()=>{},nl=()=>!1,Fs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ms=e=>e.startsWith("onUpdate:"),Le=Object.assign,Gr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},fu=Object.prototype.hasOwnProperty,xe=(e,t)=>fu.call(e,t),Z=Array.isArray,yn=e=>is(e)==="[object Map]",Pn=e=>is(e)==="[object Set]",No=e=>is(e)==="[object Date]",oe=e=>typeof e=="function",Oe=e=>typeof e=="string",pt=e=>typeof e=="symbol",_e=e=>e!==null&&typeof e=="object",sl=e=>(_e(e)||oe(e))&&oe(e.then)&&oe(e.catch),rl=Object.prototype.toString,is=e=>rl.call(e),du=e=>is(e).slice(8,-1),ol=e=>is(e)==="[object Object]",zr=e=>Oe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Hn=Wr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Vs=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},pu=/-\w/g,Ze=Vs(e=>e.replace(pu,t=>t.slice(1).toUpperCase())),hu=/\B([A-Z])/g,Jt=Vs(e=>e.replace(hu,"-$1").toLowerCase()),Bs=Vs(e=>e.charAt(0).toUpperCase()+e.slice(1)),sr=Vs(e=>e?`on${Bs(e)}`:""),St=(e,t)=>!Object.is(e,t),bs=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},js=e=>{const t=parseFloat(e);return isNaN(t)?e:t},mu=e=>{const t=Oe(e)?Number(e):NaN;return isNaN(t)?e:t};let Io;const Hs=()=>Io||(Io=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Jr(e){if(Z(e)){const t={};for(let n=0;n{if(n){const s=n.split(yu);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Be(e){let t="";if(Oe(e))t=e;else if(Z(e))for(let n=0;nWt(n,t))}const al=e=>!!(e&&e.__v_isRef===!0),G=e=>Oe(e)?e:e==null?"":Z(e)||_e(e)&&(e.toString===rl||!oe(e.toString))?al(e)?G(e.value):JSON.stringify(e,ul,2):String(e),ul=(e,t)=>al(t)?ul(e,t.value):yn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[rr(s,o)+" =>"]=r,n),{})}:Pn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>rr(n))}:pt(t)?rr(t):_e(t)&&!Z(t)&&!ol(t)?String(t):t,rr=(e,t="")=>{var n;return pt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.40 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Fe;class cl{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&&Fe&&(Fe.active?(this.parent=Fe,this.index=(Fe.scopes||(Fe.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){const s=this.scopes.slice();for(t=0,n=s.length;t0&&--this._on===0){if(Fe===this)Fe=this.prevScope;else{let t=Fe;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 n,s;for(n=0,s=this.effects.length;n0)return;if(Kn){let t=Kn;for(Kn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;qn;){let t=qn;for(qn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function hl(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ml(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Zr(s),Ru(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Er(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(gl(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function gl(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Jn)||(e.globalVersion=Jn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Er(e))))return;e.flags|=2;const t=e.dep,n=Ce,s=ct;Ce=e,ct=!0;try{hl(e);const r=e.fn(e._value);(t.version===0||St(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{Ce=n,ct=s,ml(e),e.flags&=-3}}function Zr(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Zr(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ru(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let ct=!0;const yl=[];function Lt(){yl.push(ct),ct=!1}function Ut(){const e=yl.pop();ct=e===void 0?!0:e}function ko(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Ce;Ce=void 0;try{t()}finally{Ce=n}}}let Jn=0;class Cu{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class eo{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(!Ce||!ct||Ce===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Ce)n=this.activeLink=new Cu(Ce,this),Ce.deps?(n.prevDep=Ce.depsTail,Ce.depsTail.nextDep=n,Ce.depsTail=n):Ce.deps=Ce.depsTail=n,bl(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=Ce.depsTail,n.nextDep=void 0,Ce.depsTail.nextDep=n,Ce.depsTail=n,Ce.deps===n&&(Ce.deps=s)}return n}trigger(t){this.version++,Jn++,this.notify(t)}notify(t){Qr();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Yr()}}}function bl(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)bl(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Sr=new WeakMap,on=Symbol(""),Rr=Symbol(""),Xn=Symbol("");function qe(e,t,n){if(ct&&Ce){let s=Sr.get(e);s||Sr.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new eo),r.map=s,r.key=n),r.track()}}function It(e,t,n,s,r,o){const i=Sr.get(e);if(!i){Jn++;return}const l=a=>{a&&a.trigger()};if(Qr(),t==="clear")i.forEach(l);else{const a=Z(e),c=a&&zr(n);if(a&&n==="length"){const u=Number(s);i.forEach((f,p)=>{(p==="length"||p===Xn||!pt(p)&&p>=u)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),c&&l(i.get(Xn)),t){case"add":a?c&&l(i.get("length")):(l(i.get(on)),yn(e)&&l(i.get(Rr)));break;case"delete":a||(l(i.get(on)),yn(e)&&l(i.get(Rr)));break;case"set":yn(e)&&l(i.get(on));break}}Yr()}function dn(e){const t=me(e);return t===e?t:(qe(t,"iterate",Xn),lt(e)?t:t.map(ht))}function qs(e){return qe(e=me(e),"iterate",Xn),e}function wt(e,t){return Ft(e)?En(ln(e)?ht(t):t):ht(t)}const Au={__proto__:null,[Symbol.iterator](){return ir(this,Symbol.iterator,e=>wt(this,e))},concat(...e){return dn(this).concat(...e.map(t=>Z(t)?dn(t):t))},entries(){return ir(this,"entries",e=>(e[1]=wt(this,e[1]),e))},every(e,t){return At(this,"every",e,t,void 0,arguments)},filter(e,t){return At(this,"filter",e,t,n=>n.map(s=>wt(this,s)),arguments)},find(e,t){return At(this,"find",e,t,n=>wt(this,n),arguments)},findIndex(e,t){return At(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return At(this,"findLast",e,t,n=>wt(this,n),arguments)},findLastIndex(e,t){return At(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return At(this,"forEach",e,t,void 0,arguments)},includes(...e){return lr(this,"includes",e)},indexOf(...e){return lr(this,"indexOf",e)},join(e){return dn(this).join(e)},lastIndexOf(...e){return lr(this,"lastIndexOf",e)},map(e,t){return At(this,"map",e,t,void 0,arguments)},pop(){return Dn(this,"pop")},push(...e){return Dn(this,"push",e)},reduce(e,...t){return Do(this,"reduce",e,t)},reduceRight(e,...t){return Do(this,"reduceRight",e,t)},shift(){return Dn(this,"shift")},some(e,t){return At(this,"some",e,t,void 0,arguments)},splice(...e){return Dn(this,"splice",e)},toReversed(){return dn(this).toReversed()},toSorted(e){return dn(this).toSorted(e)},toSpliced(...e){return dn(this).toSpliced(...e)},unshift(...e){return Dn(this,"unshift",e)},values(){return ir(this,"values",e=>wt(this,e))}};function ir(e,t,n){const s=qs(e),r=s[t]();return s!==e&&!lt(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=n(o.value)),o}),r}const Ou=Array.prototype;function At(e,t,n,s,r,o){const i=qs(e),l=i!==e&&!lt(e),a=i[t];if(a!==Ou[t]){const f=a.apply(e,o);return l?ht(f):f}let c=n;i!==e&&(l?c=function(f,p){return n.call(this,wt(e,f),p,e)}:n.length>2&&(c=function(f,p){return n.call(this,f,p,e)}));const u=a.call(i,c,s);return l&&r?r(u):u}function Do(e,t,n,s){const r=qs(e),o=r!==e&&!lt(e);let i=n,l=!1;r!==e&&(o?(l=s.length===0,i=function(c,u,f){return l&&(l=!1,c=wt(e,c)),n.call(this,c,wt(e,u),f,e)}):n.length>3&&(i=function(c,u,f){return n.call(this,c,u,f,e)}));const a=r[t](i,...s);return l?wt(e,a):a}function lr(e,t,n){const s=me(e);qe(s,"iterate",Xn);const r=s[t](...n);return(r===-1||r===!1)&&so(n[0])?(n[0]=me(n[0]),s[t](...n)):r}function Dn(e,t,n=[]){Lt(),Qr();const s=me(e)[t].apply(e,n);return Yr(),Ut(),s}const Tu=Wr("__proto__,__v_isRef,__isVue"),xl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(pt));function Pu(e){pt(e)||(e=String(e));const t=me(this);return qe(t,"has",e),t.hasOwnProperty(e)}class vl{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?Vu:Sl:o?El:wl).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=Z(t);if(!r){let a;if(i&&(a=Au[n]))return a;if(n==="hasOwnProperty")return Pu}const l=Reflect.get(t,n,Ge(t)?t:s);if((pt(n)?xl.has(n):Tu(n))||(r||qe(t,"get",n),o))return l;if(Ge(l)){const a=i&&zr(n)?l:l.value;return r&&_e(a)?Ar(a):a}return _e(l)?r?Ar(l):Ct(l):l}}class _l extends vl{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];const i=Z(t)&&zr(n);if(!this._isShallow){const c=Ft(o);if(!lt(s)&&!Ft(s)&&(o=me(o),s=me(s)),!i&&Ge(o)&&!Ge(s))return c||(o.value=s),!0}const l=i?Number(n)e,ps=e=>Reflect.getPrototypeOf(e);function $u(e,t,n){return function(...s){const r=this.__v_raw,o=me(r),i=yn(o),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,c=r[e](...s),u=n?Cr:t?En:ht;return!t&&qe(o,"iterate",a?Rr:on),Le(Object.create(c),{next(){const{value:f,done:p}=c.next();return p?{value:f,done:p}:{value:l?[u(f[0]),u(f[1])]:u(f),done:p}}})}}function hs(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Lu(e,t){const n={get(r){const o=this.__v_raw,i=me(o),l=me(r);e||(St(r,l)&&qe(i,"get",r),qe(i,"get",l));const{has:a}=ps(i),c=t?Cr:e?En:ht;if(a.call(i,r))return c(o.get(r));if(a.call(i,l))return c(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&qe(me(r),"iterate",on),r.size},has(r){const o=this.__v_raw,i=me(o),l=me(r);return e||(St(r,l)&&qe(i,"has",r),qe(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,a=me(l),c=t?Cr:e?En:ht;return!e&&qe(a,"iterate",on),l.forEach((u,f)=>r.call(o,c(u),c(f),i))}};return Le(n,e?{add:hs("add"),set:hs("set"),delete:hs("delete"),clear:hs("clear")}:{add(r){const o=me(this),i=ps(o),l=me(r),a=!t&&!lt(r)&&!Ft(r)?l:r;return i.has.call(o,a)||St(r,a)&&i.has.call(o,r)||St(l,a)&&i.has.call(o,l)||(o.add(a),It(o,"add",a,a)),this},set(r,o){!t&&!lt(o)&&!Ft(o)&&(o=me(o));const i=me(this),{has:l,get:a}=ps(i);let c=l.call(i,r);c||(r=me(r),c=l.call(i,r));const u=a.call(i,r);return i.set(r,o),c?St(o,u)&&It(i,"set",r,o):It(i,"add",r,o),this},delete(r){const o=me(this),{has:i,get:l}=ps(o);let a=i.call(o,r);a||(r=me(r),a=i.call(o,r)),l&&l.call(o,r);const c=o.delete(r);return a&&It(o,"delete",r,void 0),c},clear(){const r=me(this),o=r.size!==0,i=r.clear();return o&&It(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=$u(r,e,t)}),n}function to(e,t){const n=Lu(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(xe(n,r)&&r in s?n:s,r,o)}const Uu={get:to(!1,!1)},Fu={get:to(!1,!0)},Mu={get:to(!0,!1)};const wl=new WeakMap,El=new WeakMap,Sl=new WeakMap,Vu=new WeakMap;function Bu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ct(e){return Ft(e)?e:no(e,!1,Iu,Uu,wl)}function Rl(e){return no(e,!1,Du,Fu,El)}function Ar(e){return no(e,!0,ku,Mu,Sl)}function no(e,t,n,s,r){if(!_e(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=r.get(e);if(o)return o;const i=Bu(du(e));if(i===0)return e;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function ln(e){return Ft(e)?ln(e.__v_raw):!!(e&&e.__v_isReactive)}function Ft(e){return!!(e&&e.__v_isReadonly)}function lt(e){return!!(e&&e.__v_isShallow)}function so(e){return e?!!e.__v_raw:!1}function me(e){const t=e&&e.__v_raw;return t?me(t):e}function Cl(e){return!xe(e,"__v_skip")&&Object.isExtensible(e)&&il(e,"__v_skip",!0),e}const ht=e=>_e(e)?Ct(e):e,En=e=>_e(e)?Ar(e):e;function Ge(e){return e?e.__v_isRef===!0:!1}function Y(e){return Al(e,!1)}function ju(e){return Al(e,!0)}function Al(e,t){return Ge(e)?e:new Hu(e,t)}class Hu{constructor(t,n){this.dep=new eo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:me(t),this._value=n?t:ht(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||lt(t)||Ft(t);t=s?t:me(t),St(t,n)&&(this._rawValue=t,this._value=s?t:ht(t),this.dep.trigger())}}function bn(e){return Ge(e)?e.value:e}const qu={get:(e,t,n)=>t==="__v_raw"?e:bn(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return Ge(r)&&!Ge(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Ol(e){return ln(e)?e:new Proxy(e,qu)}class Ku{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new eo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Jn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&Ce!==this)return pl(this,!0),!0}get value(){const t=this.dep.track();return gl(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Wu(e,t,n=!1){let s,r;return oe(e)?s=e:(s=e.get,r=e.set),new Ku(s,r,n)}const ms={},Rs=new WeakMap;let en;function Gu(e,t=!1,n=en){if(n){let s=Rs.get(n);s||Rs.set(n,s=[]),s.push(e)}}function zu(e,t,n=Re){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:a}=n,c=S=>r?S:lt(S)||r===!1||r===0?kt(S,1):kt(S);let u,f,p,m,A=!1,P=!1;if(Ge(e)?(f=()=>e.value,A=lt(e)):ln(e)?(f=()=>c(e),A=!0):Z(e)?(P=!0,A=e.some(S=>ln(S)||lt(S)),f=()=>e.map(S=>{if(Ge(S))return S.value;if(ln(S))return c(S);if(oe(S))return a?a(S,2):S()})):oe(e)?t?f=a?()=>a(e,2):e:f=()=>{if(p){Lt();try{p()}finally{Ut()}}const S=en;en=u;try{return a?a(e,3,[m]):e(m)}finally{en=S}}:f=Rt,t&&r){const S=f,x=r===!0?1/0:r;f=()=>kt(S(),x)}const w=Su(),v=()=>{u.stop(),w&&w.active&&Gr(w.effects,u)};if(o&&t){const S=t;t=(...x)=>{const _=S(...x);return v(),_}}let R=P?new Array(e.length).fill(ms):ms;const k=S=>{if(!(!(u.flags&1)||!u.dirty&&!S))if(t){const x=u.run();if(S||r||A||(P?x.some((_,O)=>St(_,R[O])):St(x,R))){p&&p();const _=en;en=u;try{const O=[x,R===ms?void 0:P&&R[0]===ms?[]:R,m];R=x,a?a(t,3,O):t(...O)}finally{en=_}}}else u.run()};return l&&l(k),u=new fl(f),u.scheduler=i?()=>i(k,!1):k,m=S=>Gu(S,!1,u),p=u.onStop=()=>{const S=Rs.get(u);if(S){if(a)a(S,4);else for(const x of S)x();Rs.delete(u)}},t?s?k(!0):R=u.run():i?i(k.bind(null,!0),!0):u.run(),v.pause=u.pause.bind(u),v.resume=u.resume.bind(u),v.stop=v,v}function kt(e,t=1/0,n){if(t<=0||!_e(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Ge(e))kt(e.value,t,n);else if(Z(e))for(let s=0;s{kt(s,t,n)});else if(ol(e)){for(const s in e)kt(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&kt(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.40 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function ls(e,t,n,s){try{return s?e(...s):e()}catch(r){Ks(r,t,n)}}function ut(e,t,n,s){if(oe(e)){const r=ls(e,t,n,s);return r&&sl(r)&&r.catch(o=>{Ks(o,t,n)}),r}if(Z(e)){const r=[];for(let o=0;o>>1,r=Ye[s],o=Qn(r);o=Qn(n)?Ye.push(e):Ye.splice(Xu(t),0,e),e.flags|=1,Pl()}}function Pl(){Cs||(Cs=Tl.then(Il))}function Qu(e){Z(e)?xn.push(...e):qt&&e.id===-1?qt.splice(hn+1,0,e):e.flags&1||(xn.push(e),e.flags|=1),Pl()}function $o(e,t,n=_t+1){for(;nQn(n)-Qn(s));if(xn.length=0,qt){qt.push(...t);return}for(qt=t,hn=0;hne.id==null?e.flags&2?-1:1/0:e.id;function Il(e){try{for(_t=0;_t{s._d&&Ps(-1);const o=As(t),i=$t.length;let l;try{l=e(...r)}finally{for(let a=$t.length;a>i;a--)uo();As(o),s._d&&Ps(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function ae(e,t){if(je===null)return e;const n=Xs(je),s=e.dirs||(e.dirs=[]);for(let r=0;r1)return n&&oe(t)?t.call(s&&s.proxy):t}}const Yu=Symbol.for("v-scx"),Zu=()=>dt(Yu);function vs(e,t,n){return Dl(e,t,n)}function Dl(e,t,n=Re){const{immediate:s,deep:r,flush:o,once:i}=n,l=Le({},n),a=t&&s||!t&&o!=="post";let c;if(ns){if(o==="sync"){const m=Zu();c=m.__watcherHandles||(m.__watcherHandles=[])}else if(!a){const m=()=>{};return m.stop=Rt,m.resume=Rt,m.pause=Rt,m}}const u=We;l.call=(m,A,P)=>ut(m,u,A,P);let f=!1;o==="post"?l.scheduler=m=>{Xe(m,u&&u.suspense)}:o!=="sync"&&(f=!0,l.scheduler=(m,A)=>{A?m():oo(m)}),l.augmentJob=m=>{t&&(m.flags|=4),f&&(m.flags|=2,u&&(m.id=u.uid,m.i=u))};const p=zu(e,t,l);return ns&&(c?c.push(p):a&&p()),p}function ec(e,t,n){const s=this.proxy,r=Oe(e)?e.includes(".")?$l(s,e):()=>s[e]:e.bind(s,s);let o;oe(t)?o=t:(o=t.handler,n=t);const i=as(this),l=Dl(r,o.bind(s),n);return i(),l}function $l(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;re.__isTeleport,tn=e=>e&&(e.disabled||e.disabled===""),tc=e=>e&&(e.defer||e.defer===""),Lo=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Uo=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Or=(e,t)=>{const n=e&&e.to;return Oe(n)?t?t(n):null:n},nc={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,o,i,l,a,c){const{mc:u,pc:f,pbc:p,o:{insert:m,querySelector:A,createText:P,createComment:w,parentNode:v}}=c,R=tn(t.props);let{dynamicChildren:k}=t;const S=(O,te,B)=>{O.shapeFlag&16&&u(O.children,te,B,r,o,i,l,a)},x=(O=t)=>{const te=tn(O.props),B=O.target=Or(O.props,A),ee=Tr(B,O,P,m);B&&(i!=="svg"&&Lo(B)?i="svg":i!=="mathml"&&Uo(B)&&(i="mathml"),r&&r.isCE&&(r.ce._teleportTargets||(r.ce._teleportTargets=new Set)).add(B),te||(S(O,B,ee),Mn(O,!1)))},_=O=>{const te=()=>{if(Ht.get(O)===te){if(Ht.delete(O),tn(O.props)){const B=v(O.el)||n;S(O,B,O.anchor),Mn(O,!0)}x(O)}};Ht.set(O,te),Xe(te,o)};if(e==null){const O=t.el=P(""),te=t.anchor=P("");if(m(O,n,s),m(te,n,s),tc(t.props)||o&&o.pendingBranch){_(t);return}R&&(S(t,n,te),Mn(t,!0)),x()}else{t.el=e.el;const O=t.anchor=e.anchor,te=Ht.get(e);if(te){te.flags|=8,Ht.delete(e),_(t);return}t.targetStart=e.targetStart;const B=t.target=e.target,ee=t.targetAnchor=e.targetAnchor,re=tn(e.props),H=re?n:B,ie=re?O:ee;if(i==="svg"||Lo(B)?i="svg":(i==="mathml"||Uo(B))&&(i="mathml"),k?(p(e.dynamicChildren,k,H,r,o,i,l),ao(e,t,!0)):a||f(e,t,H,ie,r,o,i,l,!1),R)re?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):gs(t,n,O,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const ce=Or(t.props,A);ce&&(t.target=ce,gs(t,ce,null,c,0))}else re&&gs(t,B,ee,c,1);Mn(t,R)}},remove(e,t,n,{um:s,o:{remove:r}},o){const{shapeFlag:i,children:l,anchor:a,targetStart:c,targetAnchor:u,target:f,props:p}=e,m=tn(p),A=o||!m,P=Ht.get(e);if(P&&(P.flags|=8,Ht.delete(e)),f&&(r(c),r(u)),o&&r(a),!P&&(m||f)&&i&16)for(let w=0;w{e.isMounted=!0}),Gl(()=>{e.isUnmounting=!0}),e}const ot=[Function,Array],Ml={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ot,onEnter:ot,onAfterEnter:ot,onEnterCancelled:ot,onBeforeLeave:ot,onLeave:ot,onAfterLeave:ot,onLeaveCancelled:ot,onBeforeAppear:ot,onAppear:ot,onAfterAppear:ot,onAppearCancelled:ot},Vl=e=>{const t=e.subTree;return t.component?Vl(t.component):t},oc={name:"BaseTransition",props:Ml,setup(e,{slots:t}){const n=ya(),s=rc();return()=>{const r=t.default&&Hl(t.default(),!0),o=r&&r.length?Bl(r):n.subTree?he():void 0;if(!o)return;const i=me(e),{mode:l}=i;if(s.isLeaving)return ar(o);const a=Fo(o);if(!a)return ar(o);let c=Pr(a,i,s,n,f=>c=f);a.type!==Ke&&Yn(a,c);let u=n.subTree&&Fo(n.subTree);if(u&&u.type!==Ke&&!nn(u,a)&&Vl(n).type!==Ke){let f=Pr(u,i,s,n);if(Yn(u,f),l==="out-in"&&a.type!==Ke)return s.isLeaving=!0,f.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,u=void 0},ar(o);l==="in-out"&&a.type!==Ke?f.delayLeave=(p,m,A)=>{const P=jl(s,u);P[String(u.key)]=u,p[it]=()=>{m(),p[it]=void 0,delete c.delayedLeave,u=void 0},c.delayedLeave=()=>{A(),delete c.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return o}}};function Bl(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ke){t=n;break}}return t}const ic=oc;function jl(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Pr(e,t,n,s,r){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:a,onEnter:c,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:p,onLeave:m,onAfterLeave:A,onLeaveCancelled:P,onBeforeAppear:w,onAppear:v,onAfterAppear:R,onAppearCancelled:k}=t,S=String(e.key),x=jl(n,e),_=(B,ee)=>{B&&ut(B,s,9,ee)},O=(B,ee)=>{const re=ee[1];_(B,ee),Z(B)?B.every(H=>H.length<=1)&&re():B.length<=1&&re()},te={mode:i,persisted:l,beforeEnter(B){let ee=a;if(!n.isMounted)if(o)ee=w||a;else return;B[it]&&B[it](!0);const re=x[S];re&&nn(e,re)&&re.el[it]&&re.el[it](),_(ee,[B])},enter(B){if(x[S]===e)return;let ee=c,re=u,H=f;if(!n.isMounted)if(o)ee=v||c,re=R||u,H=k||f;else return;let ie=!1;B[$n]=Ie=>{ie||(ie=!0,Ie?_(H,[B]):_(re,[B]),te.delayedLeave&&te.delayedLeave(),B[$n]=void 0)};const ce=B[$n].bind(null,!1);ee?O(ee,[B,ce]):ce()},leave(B,ee){const re=String(e.key);if(B[$n]&&B[$n](!0),n.isUnmounting)return ee();_(p,[B]);let H=!1;B[it]=ce=>{H||(H=!0,ee(),ce?_(P,[B]):_(A,[B]),B[it]=void 0,x[re]===e&&delete x[re])};const ie=B[it].bind(null,!1);x[re]=e,m?O(m,[B,ie]):ie()},clone(B){const ee=Pr(B,t,n,s,r);return r&&r(ee),ee}};return te}function ar(e){if(Ws(e))return e=Gt(e),e.children=null,e}function Fo(e){if(!Ws(e))return Ul(e.type)&&e.children?Bl(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&oe(n.default))return n.default()}}function Yn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Hl(e,t=!1,n){let s=[],r=0;for(let o=0;o1)for(let o=0;oWn(P,t&&(Z(t)?t[w]:t),n,s,r));return}if(vn(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Wn(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?Xs(s.component):s.el,i=r?null:o,{i:l,r:a}=e,c=t&&t.r,u=l.refs===Re?l.refs={}:l.refs,f=l.setupState,p=me(f),m=f===Re?nl:P=>Mo(u,P)?!1:xe(p,P),A=(P,w)=>!(w&&Mo(u,w));if(c!=null&&c!==a){if(Vo(t),Oe(c))u[c]=null,m(c)&&(f[c]=null);else if(Ge(c)){const P=t;A(c,P.k)&&(c.value=null),P.k&&(u[P.k]=null)}}if(oe(a))ls(a,l,12,[i,u]);else{const P=Oe(a),w=Ge(a);if(P||w){const v=()=>{if(e.f){const R=P?m(a)?f[a]:u[a]:A()||!e.k?a.value:u[e.k];if(r)Z(R)&&Gr(R,o);else if(Z(R))R.includes(o)||R.push(o);else if(P)u[a]=[o],m(a)&&(f[a]=u[a]);else{const k=[o];A(a,e.k)&&(a.value=k),e.k&&(u[e.k]=k)}}else P?(u[a]=i,m(a)&&(f[a]=i)):w&&(A(a,e.k)&&(a.value=i),e.k&&(u[e.k]=i))};if(i){const R=()=>{v(),Os.delete(e)};R.id=-1,Os.set(e,R),Xe(R,n)}else Vo(e),v()}}}function Vo(e){const t=Os.get(e);t&&(t.flags|=8,Os.delete(e))}Hs().requestIdleCallback;Hs().cancelIdleCallback;const vn=e=>!!e.type.__asyncLoader,Ws=e=>e.type.__isKeepAlive;function lc(e,t){Wl(e,"a",t)}function ac(e,t){Wl(e,"da",t)}function Wl(e,t,n=We){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Gs(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Ws(r.parent.vnode)&&uc(s,t,n,r),r=r.parent}}function uc(e,t,n,s){const r=Gs(t,e,s,!0);zl(()=>{Gr(s[t],r)},n)}function Gs(e,t,n=We,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Lt();const l=as(n),a=ut(t,n,e,i);return l(),Ut(),a});return s?r.unshift(o):r.push(o),o}}const Mt=e=>(t,n=We)=>{(!ns||e==="sp")&&Gs(e,(...s)=>t(...s),n)},cc=Mt("bm"),Vt=Mt("m"),fc=Mt("bu"),dc=Mt("u"),Gl=Mt("bum"),zl=Mt("um"),pc=Mt("sp"),hc=Mt("rtg"),mc=Mt("rtc");function gc(e,t=We){Gs("ec",e,t)}const Jl="components";function Nr(e,t){return Ql(Jl,e,!0,t)||e}const Xl=Symbol.for("v-ndc");function yc(e){return Oe(e)?Ql(Jl,e,!1)||e:e||Xl}function Ql(e,t,n=!0,s=!1){const r=je||We;if(r){const o=r.type;{const l=ef(o,!1);if(l&&(l===t||l===Ze(t)||l===Bs(Ze(t))))return o}const i=Bo(r[e]||o[e],t)||Bo(r.appContext[e],t);return!i&&s?o:i}}function Bo(e,t){return e&&(e[t]||e[Ze(t)]||e[Bs(Ze(t))])}function Me(e,t,n,s){let r;const o=n,i=Z(e);if(i||Oe(e)){const l=i&&ln(e);let a=!1,c=!1;l&&(a=!lt(e),c=Ft(e),e=qs(e)),r=new Array(e.length);for(let u=0,f=e.length;ut(l,a,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let a=0,c=l.length;a0;return t!=="default"&&(c.name=t),L(),un(ve,null,[Ae("slot",c,s)],u?-2:64)}let i=e[t];i&&i._c&&(i._d=!1);const l=$t.length;L();let a;try{const c=i&&Yl(i(n)),u=n.key||o||c&&c.key;a=un(ve,{key:(u&&!pt(u)?u:`_${t}`)+(!c&&s?"_fb":"")},c||(s?s():[]),c&&e._===1?64:-2)}catch(c){for(let u=$t.length;u>l;u--)uo();throw c}finally{i&&i._c&&(i._d=!0)}return a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),a}function Yl(e){return e.some(t=>es(t)?!(t.type===Ke||t.type===ve&&!Yl(t.children)):!0)?e:null}const Ir=e=>e?ba(e)?Xs(e):Ir(e.parent):null,Gn=Le(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=>Ir(e.parent),$root:e=>Ir(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>ea(e),$forceUpdate:e=>e.f||(e.f=()=>{oo(e.update)}),$nextTick:e=>e.n||(e.n=ro.bind(e.proxy)),$watch:e=>ec.bind(e)}),ur=(e,t)=>e!==Re&&!e.__isScriptSetup&&xe(e,t),bc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:a}=e;if(t[0]!=="$"){const p=i[t];if(p!==void 0)switch(p){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(ur(s,t))return i[t]=1,s[t];if(r!==Re&&xe(r,t))return i[t]=2,r[t];if(xe(o,t))return i[t]=3,o[t];if(n!==Re&&xe(n,t))return i[t]=4,n[t];kr&&(i[t]=0)}}const c=Gn[t];let u,f;if(c)return t==="$attrs"&&qe(e.attrs,"get",""),c(e);if((u=l.__cssModules)&&(u=u[t]))return u;if(n!==Re&&xe(n,t))return i[t]=4,n[t];if(f=a.config.globalProperties,xe(f,t))return f[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return ur(r,t)?(r[t]=n,!0):s!==Re&&xe(s,t)?(s[t]=n,!0):xe(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:o,type:i}},l){let a;return!!(n[l]||e!==Re&&l[0]!=="$"&&xe(e,l)||ur(t,l)||xe(o,l)||xe(s,l)||xe(Gn,l)||xe(r.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:xe(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Ho(e){return Z(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let kr=!0;function xc(e){const t=ea(e),n=e.proxy,s=e.ctx;kr=!1,t.beforeCreate&&qo(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:a,inject:c,created:u,beforeMount:f,mounted:p,beforeUpdate:m,updated:A,activated:P,deactivated:w,beforeDestroy:v,beforeUnmount:R,destroyed:k,unmounted:S,render:x,renderTracked:_,renderTriggered:O,errorCaptured:te,serverPrefetch:B,expose:ee,inheritAttrs:re,components:H,directives:ie,filters:ce}=t;if(c&&vc(c,s,null),i)for(const fe in i){const ue=i[fe];oe(ue)&&(s[fe]=ue.bind(n))}if(r){const fe=r.call(n,n);_e(fe)&&(e.data=Ct(fe))}if(kr=!0,o)for(const fe in o){const ue=o[fe],et=oe(ue)?ue.bind(n,n):oe(ue.get)?ue.get.bind(n,n):Rt,De=!oe(ue)&&oe(ue.set)?ue.set.bind(n):Rt,D=tt({get:et,set:De});Object.defineProperty(s,fe,{enumerable:!0,configurable:!0,get:()=>D.value,set:I=>D.value=I})}if(l)for(const fe in l)Zl(l[fe],s,n,fe);if(a){const fe=oe(a)?a.call(n):a;Reflect.ownKeys(fe).forEach(ue=>{xs(ue,fe[ue])})}u&&qo(u,e,"c");function we(fe,ue){Z(ue)?ue.forEach(et=>fe(et.bind(n))):ue&&fe(ue.bind(n))}if(we(cc,f),we(Vt,p),we(fc,m),we(dc,A),we(lc,P),we(ac,w),we(gc,te),we(mc,_),we(hc,O),we(Gl,R),we(zl,S),we(pc,B),Z(ee))if(ee.length){const fe=e.exposed||(e.exposed={});ee.forEach(ue=>{Object.defineProperty(fe,ue,{get:()=>n[ue],set:et=>n[ue]=et,enumerable:!0})})}else e.exposed||(e.exposed={});x&&e.render===Rt&&(e.render=x),re!=null&&(e.inheritAttrs=re),H&&(e.components=H),ie&&(e.directives=ie),B&&Kl(e)}function vc(e,t,n=Rt){Z(e)&&(e=Dr(e));for(const s in e){const r=e[s];let o;_e(r)?"default"in r?o=dt(r.from||s,r.default,!0):o=dt(r.from||s):o=dt(r),Ge(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function qo(e,t,n){ut(Z(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Zl(e,t,n,s){let r=s.includes(".")?$l(n,s):()=>n[s];if(Oe(e)){const o=t[e];oe(o)&&vs(r,o)}else if(oe(e))vs(r,e.bind(n));else if(_e(e))if(Z(e))e.forEach(o=>Zl(o,t,n,s));else{const o=oe(e.handler)?e.handler.bind(n):t[e.handler];oe(o)&&vs(r,o,e)}}function ea(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let a;return l?a=l:!r.length&&!n&&!s?a=t:(a={},r.length&&r.forEach(c=>Ts(a,c,i,!0)),Ts(a,t,i)),_e(t)&&o.set(t,a),a}function Ts(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Ts(e,o,n,!0),r&&r.forEach(i=>Ts(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=_c[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const _c={data:Ko,props:Wo,emits:Wo,methods:Vn,computed:Vn,beforeCreate:Je,created:Je,beforeMount:Je,mounted:Je,beforeUpdate:Je,updated:Je,beforeDestroy:Je,beforeUnmount:Je,destroyed:Je,unmounted:Je,activated:Je,deactivated:Je,errorCaptured:Je,serverPrefetch:Je,components:Vn,directives:Vn,watch:Ec,provide:Ko,inject:wc};function Ko(e,t){return t?e?function(){return Le(oe(e)?e.call(this,this):e,oe(t)?t.call(this,this):t)}:t:e}function wc(e,t){return Vn(Dr(e),Dr(t))}function Dr(e){if(Z(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ze(t)}Modifiers`]||e[`${Jt(t)}Modifiers`];function Ac(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Re;let r=n;const o=t.startsWith("update:"),i=o&&Cc(s,t.slice(7));i&&(i.trim&&(r=n.map(u=>Oe(u)?u.trim():u)),i.number&&(r=n.map(js)));let l,a=s[l=sr(t)]||s[l=sr(Ze(t))];!a&&o&&(a=s[l=sr(Jt(t))]),a&&ut(a,e,6,r);const c=s[l+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,ut(c,e,6,r)}}const Oc=new WeakMap;function na(e,t,n=!1){const s=n?Oc:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!oe(e)){const a=c=>{const u=na(c,t,!0);u&&(l=!0,Le(i,u))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!l?(_e(e)&&s.set(e,null),null):(Z(o)?o.forEach(a=>i[a]=null):Le(i,o),_e(e)&&s.set(e,i),i)}function zs(e,t){return!e||!Fs(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),xe(e,t[0].toLowerCase()+t.slice(1))||xe(e,Jt(t))||xe(e,t))}function Go(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:a,render:c,renderCache:u,props:f,data:p,setupState:m,ctx:A,inheritAttrs:P}=e,w=As(e);let v,R;try{if(n.shapeFlag&4){const S=r||s,x=S;v=Et(c.call(x,S,u,f,m,p,A)),R=l}else{const S=t;v=Et(S.length>1?S(f,{attrs:l,slots:i,emit:a}):S(f,null)),R=t.props?l:Tc(l)}}catch(S){$t.length=0,Ks(S,e,1),v=Ae(Ke)}let k=v;if(R&&P!==!1){const S=Object.keys(R),{shapeFlag:x}=k;S.length&&x&7&&(o&&S.some(Ms)&&(R=Pc(R,o)),k=Gt(k,R,!1,!0))}return n.dirs&&(k=Gt(k,null,!1,!0),k.dirs=k.dirs?k.dirs.concat(n.dirs):n.dirs),n.transition&&Yn(k,n.transition),v=k,As(w),v}const Tc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Fs(n))&&((t||(t={}))[n]=e[n]);return t},Pc=(e,t)=>{const n={};for(const s in e)(!Ms(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Nc(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:a}=t,c=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?zo(s,i,c):!!i;if(a&8){const u=t.dynamicProps;for(let f=0;fObject.create(ra),ia=e=>Object.getPrototypeOf(e)===ra;function kc(e,t,n,s=!1){const r={},o=oa();e.propsDefaults=Object.create(null),la(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:Rl(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Dc(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=me(r),[a]=e.propsOptions;let c=!1;if((s||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let f=0;f{a=!0;const[p,m]=aa(f,t,!0);Le(i,p),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!a)return _e(e)&&s.set(e,gn),gn;if(Z(o))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",lo=e=>Z(e)?e.map(Et):[Et(e)],Lc=(e,t,n)=>{if(t._n)return t;const s=ft((...r)=>lo(t(...r)),n);return s._c=!1,s},ua=(e,t,n)=>{const s=e._ctx;for(const r in e){if(io(r))continue;const o=e[r];if(oe(o))t[r]=Lc(r,o,s);else if(o!=null){const i=lo(o);t[r]=()=>i}}},ca=(e,t)=>{const n=lo(t);e.slots.default=()=>n},fa=(e,t,n)=>{for(const s in t)(n||!io(s))&&(e[s]=t[s])},Uc=(e,t,n)=>{const s=e.slots=oa();if(e.vnode.shapeFlag&32){const r=t._;r?(fa(s,t,n),n&&il(s,"_",r,!0)):ua(t,s)}else t&&ca(e,t)},Fc=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=Re;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:fa(r,t,n):(o=!t.$stable,ua(t,r)),i=t}else t&&(ca(e,t),i={default:1});if(o)for(const l in r)!io(l)&&i[l]==null&&delete r[l]},Xe=Hc;function Mc(e){return Vc(e)}function Vc(e,t){const n=Hs();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:a,setText:c,setElementText:u,parentNode:f,nextSibling:p,setScopeId:m=Rt,insertStaticContent:A}=e,P=(h,g,b,N=null,E=null,T=null,V=void 0,F=null,M=!!g.dynamicChildren)=>{if(h===g)return;h&&!nn(h,g)&&(N=C(h),I(h,E,T,!0),h=null),g.patchFlag===-2&&(M=!1,g.dynamicChildren=null);const{type:$,ref:J,shapeFlag:z}=g;switch($){case Js:w(h,g,b,N);break;case Ke:v(h,g,b,N);break;case fr:h==null&&R(g,b,N,V);break;case ve:H(h,g,b,N,E,T,V,F,M);break;default:z&1?x(h,g,b,N,E,T,V,F,M):z&6?ie(h,g,b,N,E,T,V,F,M):(z&64||z&128)&&$.process(h,g,b,N,E,T,V,F,M,X)}J!=null&&E?Wn(J,h&&h.ref,T,g||h,!g):J==null&&h&&h.ref!=null&&Wn(h.ref,null,T,h,!0)},w=(h,g,b,N)=>{if(h==null)s(g.el=l(g.children),b,N);else{const E=g.el=h.el;g.children!==h.children&&c(E,g.children)}},v=(h,g,b,N)=>{h==null?s(g.el=a(g.children||""),b,N):g.el=h.el},R=(h,g,b,N)=>{[h.el,h.anchor]=A(h.children,g,b,N,h.el,h.anchor)},k=({el:h,anchor:g},b,N)=>{let E;for(;h&&h!==g;)E=p(h),s(h,b,N),h=E;s(g,b,N)},S=({el:h,anchor:g})=>{let b;for(;h&&h!==g;)b=p(h),r(h),h=b;r(g)},x=(h,g,b,N,E,T,V,F,M)=>{if(g.type==="svg"?V="svg":g.type==="math"&&(V="mathml"),h==null)_(g,b,N,E,T,V,F,M);else{const $=h.el&&h.el._isVueCE?h.el:null;try{$&&$._beginPatch(),B(h,g,E,T,V,F,M)}finally{$&&$._endPatch()}}},_=(h,g,b,N,E,T,V,F)=>{let M,$;const{props:J,shapeFlag:z,transition:Q,dirs:se}=h;if(M=h.el=i(h.type,T,J&&J.is,J),z&8?u(M,h.children):z&16&&te(h.children,M,null,N,E,cr(h,T),V,F),se&&Xt(h,null,N,"created"),O(M,h,h.scopeId,V,N),J){for(const Se in J)Se!=="value"&&!Hn(Se)&&o(M,Se,null,J[Se],T,N);"value"in J&&o(M,"value",null,J.value,T),($=J.onVnodeBeforeMount)&&vt($,N,h)}se&&Xt(h,null,N,"beforeMount");const de=Bc(E,Q);de&&Q.beforeEnter(M),s(M,g,b),(($=J&&J.onVnodeMounted)||de||se)&&Xe(()=>{try{$&&vt($,N,h),de&&Q.enter(M),se&&Xt(h,null,N,"mounted")}finally{}},E)},O=(h,g,b,N,E)=>{if(b&&m(h,b),N)for(let T=0;T{for(let $=M;${const F=g.el=h.el;let{patchFlag:M,dynamicChildren:$,dirs:J}=g;M|=h.patchFlag&16;const z=h.props||Re,Q=g.props||Re;let se;if(b&&Qt(b,!1),(se=Q.onVnodeBeforeUpdate)&&vt(se,b,g,h),J&&Xt(g,h,b,"beforeUpdate"),b&&Qt(b,!0),$&&(!h.dynamicChildren||h.dynamicChildren.length!==$.length)&&(M=0,V=!1,$=null),(z.innerHTML&&Q.innerHTML==null||z.textContent&&Q.textContent==null)&&u(F,""),$?ee(h.dynamicChildren,$,F,b,N,cr(g,E),T):V||ue(h,g,F,null,b,N,cr(g,E),T,!1),M>0){if(M&16)re(F,z,Q,b,E);else if(M&2&&z.class!==Q.class&&o(F,"class",null,Q.class,E),M&4&&o(F,"style",z.style,Q.style,E),M&8){const de=g.dynamicProps;for(let Se=0;Se{se&&vt(se,b,g,h),J&&Xt(g,h,b,"updated")},N)},ee=(h,g,b,N,E,T,V)=>{for(let F=0;F{if(g!==b){if(g!==Re)for(const T in g)!Hn(T)&&!(T in b)&&o(h,T,g[T],null,E,N);for(const T in b){if(Hn(T))continue;const V=b[T],F=g[T];V!==F&&T!=="value"&&o(h,T,F,V,E,N)}"value"in b&&o(h,"value",g.value,b.value,E)}},H=(h,g,b,N,E,T,V,F,M)=>{const $=g.el=h?h.el:l(""),J=g.anchor=h?h.anchor:l("");let{patchFlag:z,dynamicChildren:Q,slotScopeIds:se}=g;se&&(F=F?F.concat(se):se),h==null?(s($,b,N),s(J,b,N),te(g.children||[],b,J,E,T,V,F,M)):z>0&&z&64&&Q&&h.dynamicChildren&&h.dynamicChildren.length===Q.length?(ee(h.dynamicChildren,Q,b,E,T,V,F),(g.key!=null||E&&g===E.subTree)&&ao(h,g,!0)):ue(h,g,b,J,E,T,V,F,M)},ie=(h,g,b,N,E,T,V,F,M)=>{g.slotScopeIds=F,h==null?g.shapeFlag&512?E.ctx.activate(g,b,N,V,M):ce(g,b,N,E,T,V,M):Ie(h,g,M)},ce=(h,g,b,N,E,T,V)=>{const F=h.component=Jc(h,N,E);if(Ws(h)&&(F.ctx.renderer=X),Xc(F,!1,V),F.asyncDep){if(E&&E.registerDep(F,we,V),!h.el){const M=F.subTree=Ae(Ke);v(null,M,g,b),h.placeholder=M.el}}else we(F,h,g,b,E,T,V)},Ie=(h,g,b)=>{const N=g.component=h.component;if(Nc(h,g,b))if(N.asyncDep&&!N.asyncResolved){fe(N,g,b);return}else N.next=g,N.update();else g.el=h.el,N.vnode=g},we=(h,g,b,N,E,T,V)=>{const F=()=>{if(h.isMounted){let{next:z,bu:Q,u:se,parent:de,vnode:Se}=h;{const bt=da(h);if(bt){z&&(z.el=Se.el,fe(h,z,V)),bt.asyncDep.then(()=>{Xe(()=>{h.isUnmounted||$()},E)});return}}let Ee=z,ke;Qt(h,!1),z?(z.el=Se.el,fe(h,z,V)):z=Se,Q&&bs(Q),(ke=z.props&&z.props.onVnodeBeforeUpdate)&&vt(ke,de,z,Se),Qt(h,!0);const Ue=Go(h),yt=h.subTree;h.subTree=Ue,P(yt,Ue,f(yt.el),C(yt),h,E,T),z.el=Ue.el,Ee===null&&Ic(h,Ue.el),se&&Xe(se,E),(ke=z.props&&z.props.onVnodeUpdated)&&Xe(()=>vt(ke,de,z,Se),E)}else{let z;const{el:Q,props:se}=g,{bm:de,m:Se,parent:Ee,root:ke,type:Ue}=h,yt=vn(g);Qt(h,!1),de&&bs(de),!yt&&(z=se&&se.onVnodeBeforeMount)&&vt(z,Ee,g),Qt(h,!0);{ke.ce&&ke.ce._hasShadowRoot()&&ke.ce._injectChildStyle(Ue,h.parent?h.parent.type:void 0);const bt=h.subTree=Go(h);P(null,bt,b,N,h,E,T),g.el=bt.el}if(Se&&Xe(Se,E),!yt&&(z=se&&se.onVnodeMounted)){const bt=g;Xe(()=>vt(z,Ee,bt),E)}(g.shapeFlag&256||Ee&&vn(Ee.vnode)&&Ee.vnode.shapeFlag&256)&&h.a&&Xe(h.a,E),h.isMounted=!0,g=b=N=null}};h.scope.on();const M=h.effect=new fl(F);h.scope.off();const $=h.update=M.run.bind(M),J=h.job=M.runIfDirty.bind(M);J.i=h,J.id=h.uid,M.scheduler=()=>oo(J),Qt(h,!0),$()},fe=(h,g,b)=>{g.component=h;const N=h.vnode.props;h.vnode=g,h.next=null,Dc(h,g.props,N,b),Fc(h,g.children,b),Lt(),$o(h),Ut()},ue=(h,g,b,N,E,T,V,F,M=!1)=>{const $=h&&h.children,J=h?h.shapeFlag:0,z=g.children,{patchFlag:Q,shapeFlag:se}=g;if(Q>0){if(Q&128){De($,z,b,N,E,T,V,F,M);return}else if(Q&256){et($,z,b,N,E,T,V,F,M);return}}se&8?(J&16&&ne($,E,T),z!==$&&u(b,z)):J&16?se&16?De($,z,b,N,E,T,V,F,M):ne($,E,T,!0):(J&8&&u(b,""),se&16&&te(z,b,N,E,T,V,F,M))},et=(h,g,b,N,E,T,V,F,M)=>{h=h||gn,g=g||gn;const $=h.length,J=g.length,z=Math.min($,J);let Q;for(Q=0;QJ?ne(h,E,T,!0,!1,z):te(g,b,N,E,T,V,F,M,z)},De=(h,g,b,N,E,T,V,F,M)=>{let $=0;const J=g.length;let z=h.length-1,Q=J-1;for(;$<=z&&$<=Q;){const se=h[$],de=g[$]=M?Nt(g[$]):Et(g[$]);if(nn(se,de))P(se,de,b,null,E,T,V,F,M);else break;$++}for(;$<=z&&$<=Q;){const se=h[z],de=g[Q]=M?Nt(g[Q]):Et(g[Q]);if(nn(se,de))P(se,de,b,null,E,T,V,F,M);else break;z--,Q--}if($>z){if($<=Q){const se=Q+1,de=seQ)for(;$<=z;)I(h[$],E,T,!0),$++;else{const se=$,de=$,Se=new Map;for($=de;$<=Q;$++){const st=g[$]=M?Nt(g[$]):Et(g[$]);st.key!=null&&Se.set(st.key,$)}let Ee,ke=0;const Ue=Q-de+1;let yt=!1,bt=0;const kn=new Array(Ue);for($=0;$=Ue){I(st,E,T,!0);continue}let xt;if(st.key!=null)xt=Se.get(st.key);else for(Ee=de;Ee<=Q;Ee++)if(kn[Ee-de]===0&&nn(st,g[Ee])){xt=Ee;break}xt===void 0?I(st,E,T,!0):(kn[xt-de]=$+1,xt>=bt?bt=xt:yt=!0,P(st,g[xt],b,null,E,T,V,F,M),ke++)}const Oo=yt?jc(kn):gn;for(Ee=Oo.length-1,$=Ue-1;$>=0;$--){const st=de+$,xt=g[st],To=g[st+1],Po=st+1{const{el:T,type:V,transition:F,children:M,shapeFlag:$}=h;if($&6){D(h.component.subTree,g,b,N);return}if($&128){h.suspense.move(g,b,N);return}if($&64){V.move(h,g,b,X);return}if(V===ve){s(T,g,b);for(let z=0;zF.enter(T),E));else{const{leave:z,delayLeave:Q,afterLeave:se}=F,de=()=>{h.ctx.isUnmounted?r(T):s(T,g,b)},Se=()=>{const Ee=T._isLeaving||!!T[it];T._isLeaving&&T[it](!0),F.persisted&&!Ee?de():z(T,()=>{de(),se&&se()})};Q?Q(T,de,Se):Se()}else s(T,g,b)},I=(h,g,b,N=!1,E=!1)=>{const{type:T,props:V,ref:F,children:M,dynamicChildren:$,shapeFlag:J,patchFlag:z,dirs:Q,cacheIndex:se,memo:de}=h;if(z===-2&&(E=!1),F!=null&&(Lt(),Wn(F,null,b,h,!0),Ut()),se!=null&&(g.renderCache[se]=void 0),J&256){g.ctx.deactivate(h);return}const Se=J&1&&Q,Ee=!vn(h);let ke;if(Ee&&(ke=V&&V.onVnodeBeforeUnmount)&&vt(ke,g,h),J&6)ye(h.component,b,N);else{if(J&128){h.suspense.unmount(b,N);return}Se&&Xt(h,null,g,"beforeUnmount"),J&64?h.type.remove(h,g,b,X,N):$&&!$.hasOnce&&(T!==ve||z>0&&z&64)?ne($,g,b,!1,!0):(T===ve&&z&384||!E&&J&16)&&ne(M,g,b),N&&j(h)}const Ue=de!=null&&se==null;(Ee&&(ke=V&&V.onVnodeUnmounted)||Se||Ue)&&Xe(()=>{ke&&vt(ke,g,h),Se&&Xt(h,null,g,"unmounted"),Ue&&(h.el=null)},b)},j=h=>{const{type:g,el:b,anchor:N,transition:E}=h;if(g===ve){pe(b,N);return}if(g===fr){S(h);return}const T=()=>{r(b),E&&!E.persisted&&E.afterLeave&&E.afterLeave()};if(h.shapeFlag&1&&E&&!E.persisted){const{leave:V,delayLeave:F}=E,M=()=>V(b,T);F?F(h.el,T,M):M()}else T()},pe=(h,g)=>{let b;for(;h!==g;)b=p(h),r(h),h=b;r(g)},ye=(h,g,b)=>{const{bum:N,scope:E,job:T,subTree:V,um:F,m:M,a:$}=h;Xo(M),Xo($),N&&bs(N),E.stop(),T&&(T.flags|=8,I(V,h,g,b)),F&&Xe(F,g),Xe(()=>{h.isUnmounted=!0},g)},ne=(h,g,b,N=!1,E=!1,T=0)=>{for(let V=T;V{if(h.shapeFlag&6)return C(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const g=p(h.anchor||h.el),b=g&&g[Ll];return b?p(b):g};let W=!1;const q=(h,g,b)=>{let N;h==null?g._vnode&&(I(g._vnode,null,null,!0),N=g._vnode.component):P(g._vnode||null,h,g,null,null,null,b),g._vnode=h,W||(W=!0,$o(N),Nl(),W=!1)},X={p:P,um:I,m:D,r:j,mt:ce,mc:te,pc:ue,pbc:ee,n:C,o:e};return{render:q,hydrate:void 0,createApp:Rc(q)}}function cr({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Qt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Bc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function ao(e,t,n=!1){const s=e.children,r=t.children;if(Z(s)&&Z(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function da(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:da(t)}function Xo(e){if(e)for(let t=0;te.__isSuspense;function Hc(e,t){t&&t.pendingBranch?Z(e)?t.effects.push(...e):t.effects.push(e):Qu(e)}const ve=Symbol.for("v-fgt"),Js=Symbol.for("v-txt"),Ke=Symbol.for("v-cmt"),fr=Symbol.for("v-stc"),$t=[];let rt=null;function L(e=!1){$t.push(rt=e?null:[])}function uo(){$t.pop(),rt=$t[$t.length-1]||null}let Zn=1;function Ps(e,t=!1){Zn+=e,e<0&&rt&&t&&(rt.hasOnce=!0)}function ma(e){return e.dynamicChildren=Zn>0?rt||gn:null,uo(),Zn>0&&rt&&rt.push(e),e}function U(e,t,n,s,r,o){return ma(d(e,t,n,s,r,o,!0))}function un(e,t,n,s,r){return ma(Ae(e,t,n,s,r,!0))}function es(e){return e?e.__v_isVNode===!0:!1}function nn(e,t){return e.type===t.type&&e.key===t.key}const ga=({key:e})=>e??null,_s=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Oe(e)||Ge(e)||oe(e)?{i:je,r:e,k:t,f:!!n}:e:null);function d(e,t=null,n=null,s=0,r=null,o=e===ve?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ga(t),ref:t&&_s(t),scopeId:kl,slotScopeIds:null,children:n,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:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:je};return l?(Ns(a,n),o&128&&e.normalize(a)):n&&(a.shapeFlag|=Oe(n)?8:16),Zn>0&&!i&&rt&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&rt.push(a),a}const Ae=qc;function qc(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Xl)&&(e=Ke),es(e)){const l=Gt(e,t,!0);return n&&Ns(l,n),Zn>0&&!o&&rt&&(l.shapeFlag&6?rt[rt.indexOf(e)]=l:rt.push(l)),l.patchFlag=-2,l}if(tf(e)&&(e=e.__vccOpts),t){t=Kc(t);let{class:l,style:a}=t;l&&!Oe(l)&&(t.class=Be(l)),_e(a)&&(so(a)&&!Z(a)&&(a=Le({},a)),t.style=Jr(a))}const i=Oe(e)?1:ha(e)?128:Ul(e)?64:_e(e)?4:oe(e)?2:0;return d(e,t,n,s,r,i,o,!0)}function Kc(e){return e?so(e)||ia(e)?Le({},e):e:null}function Gt(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:a}=e,c=t?Wc(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&ga(c),ref:t&&t.ref?n&&o?Z(o)?o.concat(_s(t)):[o,_s(t)]:_s(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ve?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Gt(e.ssContent),ssFallback:e.ssFallback&&Gt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&Yn(u,a.clone(u)),u}function ts(e=" ",t=0){return Ae(Js,null,e,t)}function he(e="",t=!1){return t?(L(),un(Ke,null,e)):Ae(Ke,null,e)}function Et(e){return e==null||typeof e=="boolean"?Ae(Ke):Z(e)?Ae(ve,null,e.slice()):es(e)?Nt(e):Ae(Js,null,String(e))}function Nt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Gt(e)}function Ns(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(Z(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ns(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!ia(t)?t._ctx=je:r===3&&je&&(je.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(oe(t)){if(s&65){Ns(e,{default:t});return}t={default:t,_ctx:je},n=32}else t=String(t),s&64?(n=16,t=[ts(t)]):n=8;e.children=t,e.shapeFlag|=n}function Wc(...e){const t={};for(let n=0;nWe||je;let Is,Lr;{const e=Hs(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Is=t("__VUE_INSTANCE_SETTERS__",n=>We=n),Lr=t("__VUE_SSR_SETTERS__",n=>ns=n)}const as=e=>{const t=We;return Is(e),e.scope.on(),()=>{e.scope.off(),Is(t)}},Qo=()=>{We&&We.scope.off(),Is(null)};function ba(e){return e.vnode.shapeFlag&4}let ns=!1;function Xc(e,t=!1,n=!1){t&&Lr(t);const{props:s,children:r}=e.vnode,o=ba(e);kc(e,s,o,t),Uc(e,r,n||t);const i=o?Qc(e,t):void 0;return t&&Lr(!1),i}function Qc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,bc);const{setup:s}=n;if(s){Lt();const r=e.setupContext=s.length>1?Zc(e):null,o=as(e),i=ls(s,e,0,[e.props,r]),l=sl(i);if(Ut(),o(),(l||e.sp)&&!vn(e)&&Kl(e),l){if(i.then(Qo,Qo),t)return i.then(a=>{Yo(e,a)}).catch(a=>{Ks(a,e,0)});e.asyncDep=i}else Yo(e,i)}else xa(e)}function Yo(e,t,n){oe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:_e(t)&&(e.setupState=Ol(t)),xa(e)}function xa(e,t,n){const s=e.type;e.render||(e.render=s.render||Rt);{const r=as(e);Lt();try{xc(e)}finally{Ut(),r()}}}const Yc={get(e,t){return qe(e,"get",""),e[t]}};function Zc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Yc),slots:e.slots,emit:e.emit,expose:t}}function Xs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ol(Cl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Gn)return Gn[n](e)},has(t,n){return n in t||n in Gn}})):e.proxy}function ef(e,t=!0){return oe(e)?e.displayName||e.name:e.name||t&&e.__name}function tf(e){return oe(e)&&"__vccOpts"in e}const tt=(e,t)=>Wu(e,t,ns);function co(e,t,n){try{Ps(-1);const s=arguments.length;return s===2?_e(t)&&!Z(t)?es(t)?Ae(e,null,[t]):Ae(e,t):Ae(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&es(n)&&(n=[n]),Ae(e,t,n))}finally{Ps(1)}}const nf="3.5.40";/** +* @vue/runtime-dom v3.5.40 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ur;const Zo=typeof window<"u"&&window.trustedTypes;if(Zo)try{Ur=Zo.createPolicy("vue",{createHTML:e=>e})}catch{}const va=Ur?e=>Ur.createHTML(e):e=>e,sf="http://www.w3.org/2000/svg",rf="http://www.w3.org/1998/Math/MathML",Pt=typeof document<"u"?document:null,ei=Pt&&Pt.createElement("template"),of={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Pt.createElementNS(sf,e):t==="mathml"?Pt.createElementNS(rf,e):n?Pt.createElement(e,{is:n}):Pt.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Pt.createTextNode(e),createComment:e=>Pt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Pt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{ei.innerHTML=va(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=ei.content;if(s==="svg"||s==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Bt="transition",Ln="animation",ss=Symbol("_vtc"),_a={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},lf=Le({},Ml,_a),af=e=>(e.displayName="Transition",e.props=lf,e),uf=af((e,{slots:t})=>co(ic,cf(e),t)),Yt=(e,t=[])=>{Z(e)?e.forEach(n=>n(...t)):e&&e(...t)},ti=e=>e?Z(e)?e.some(t=>t.length>1):e.length>1:!1;function cf(e){const t={};for(const H in e)H in _a||(t[H]=e[H]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=o,appearActiveClass:c=i,appearToClass:u=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,A=ff(r),P=A&&A[0],w=A&&A[1],{onBeforeEnter:v,onEnter:R,onEnterCancelled:k,onLeave:S,onLeaveCancelled:x,onBeforeAppear:_=v,onAppear:O=R,onAppearCancelled:te=k}=t,B=(H,ie,ce,Ie)=>{H._enterCancelled=Ie,Zt(H,ie?u:l),Zt(H,ie?c:i),ce&&ce()},ee=(H,ie)=>{H._isLeaving=!1,Zt(H,f),Zt(H,m),Zt(H,p),ie&&ie()},re=H=>(ie,ce)=>{const Ie=H?O:R,we=()=>B(ie,H,ce);Yt(Ie,[ie,we]),ni(()=>{Zt(ie,H?a:o),Ot(ie,H?u:l),ti(Ie)||si(ie,s,P,we)})};return Le(t,{onBeforeEnter(H){Yt(v,[H]),Ot(H,o),Ot(H,i)},onBeforeAppear(H){Yt(_,[H]),Ot(H,a),Ot(H,c)},onEnter:re(!1),onAppear:re(!0),onLeave(H,ie){H._isLeaving=!0;const ce=()=>ee(H,ie);Ot(H,f),H._enterCancelled?(Ot(H,p),ii(H)):(ii(H),Ot(H,p)),ni(()=>{H._isLeaving&&(Zt(H,f),Ot(H,m),ti(S)||si(H,s,w,ce))}),Yt(S,[H,ce])},onEnterCancelled(H){B(H,!1,void 0,!0),Yt(k,[H])},onAppearCancelled(H){B(H,!0,void 0,!0),Yt(te,[H])},onLeaveCancelled(H){ee(H),Yt(x,[H])}})}function ff(e){if(e==null)return null;if(_e(e))return[dr(e.enter),dr(e.leave)];{const t=dr(e);return[t,t]}}function dr(e){return mu(e)}function Ot(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[ss]||(e[ss]=new Set)).add(t)}function Zt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[ss];n&&(n.delete(t),n.size||(e[ss]=void 0))}function ni(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let df=0;function si(e,t,n,s){const r=e._endId=++df,o=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:l,propCount:a}=pf(e,t);if(!i)return s();const c=i+"end";let u=0;const f=()=>{e.removeEventListener(c,p),o()},p=m=>{m.target===e&&++u>=a&&f()};setTimeout(()=>{u(n[A]||"").split(", "),r=s(`${Bt}Delay`),o=s(`${Bt}Duration`),i=ri(r,o),l=s(`${Ln}Delay`),a=s(`${Ln}Duration`),c=ri(l,a);let u=null,f=0,p=0;t===Bt?i>0&&(u=Bt,f=i,p=o.length):t===Ln?c>0&&(u=Ln,f=c,p=a.length):(f=Math.max(i,c),u=f>0?i>c?Bt:Ln:null,p=u?u===Bt?o.length:a.length:0);const m=u===Bt&&/\b(?:transform|all)(?:,|$)/.test(s(`${Bt}Property`).toString());return{type:u,timeout:f,propCount:p,hasTransform:m}}function ri(e,t){for(;e.lengthoi(n)+oi(e[s])))}function oi(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ii(e){return(e?e.ownerDocument:document).body.offsetHeight}function hf(e,t,n){const s=e[ss];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const li=Symbol("_vod"),mf=Symbol("_vsh"),gf=Symbol(""),yf=/(?:^|;)\s*display\s*:/;function bf(e,t,n){const s=e.style,r=Oe(n);let o=!1;if(n&&!r){if(t)if(Oe(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Bn(s,l,"")}else for(const i in t)n[i]==null&&Bn(s,i,"");for(const i in n){i==="display"&&(o=!0);const l=n[i];l!=null?vf(e,i,!Oe(t)&&t?t[i]:void 0,l)||Bn(s,i,l):Bn(s,i,"")}}else if(r){if(t!==n){const i=s[gf];i&&(n+=";"+i),s.cssText=n,o=yf.test(n)}}else t&&e.removeAttribute("style");li in e&&(e[li]=o?s.display:"",e[mf]&&(s.display="none"))}const ai=/\s*!important$/;function Bn(e,t,n){if(Z(n))n.forEach(s=>Bn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=xf(e,t);ai.test(n)?e.setProperty(Jt(s),n.replace(ai,""),"important"):e[s]=n}}const ui=["Webkit","Moz","ms"],pr={};function xf(e,t){const n=pr[t];if(n)return n;let s=Ze(t);if(s!=="filter"&&s in e)return pr[t]=s;s=Bs(s);for(let r=0;rhr||(Cf.then(()=>hr=0),hr=Date.now());function Of(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;const r=n.value;if(Z(r)){const o=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{o.call(s),s._stopped=!0};const i=r.slice(),l=[s];for(let a=0;ae.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Tf=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?hf(e,s,i):t==="style"?bf(e,n,s):Fs(t)?Ms(t)||wf(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Pf(e,t,s,i))?(di(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&fi(e,t,s,i,o,t!=="value")):e._isVueCE&&(Nf(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Oe(s)))?di(e,Ze(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),fi(e,t,s,i))};function Pf(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&hi(t)&&oe(n));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 r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return hi(t)&&Oe(n)?!1:t in e}function Nf(e,t){const n=e._def.props;if(!n)return!1;const s=Ze(t);return Array.isArray(n)?n.some(r=>Ze(r)===s):Object.keys(n).some(r=>Ze(r)===s)}const zt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Z(t)?n=>bs(t,n):t};function If(e){e.target.composing=!0}function mi(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const at=Symbol("_assign");function gi(e,t,n){return t&&(e=e.trim()),n&&(e=js(e)),e}const Te={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[at]=zt(r);const o=s||r.props&&r.props.type==="number";Dt(e,t?"change":"input",i=>{i.target.composing||e[at](gi(e.value,n,o))}),(n||o)&&Dt(e,"change",()=>{e.value=gi(e.value,n,o)}),t||(Dt(e,"compositionstart",If),Dt(e,"compositionend",mi),Dt(e,"change",mi))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[at]=zt(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?js(e.value):e.value,a=t??"";if(l===a)return;const c=e.getRootNode();(c instanceof Document||c instanceof ShadowRoot)&&c.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===a)||(e.value=a)}},wn={deep:!0,created(e,t,n){e[at]=zt(n),Dt(e,"change",()=>{const s=e._modelValue,r=Rn(e),o=e.checked,i=e[at];if(Z(s)){const l=Xr(s,r),a=l!==-1;if(o&&!a)i(s.concat(r));else if(!o&&a){const c=[...s];c.splice(l,1),i(c)}}else if(Pn(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(wa(e,o))})},mounted:yi,beforeUpdate(e,t,n){e[at]=zt(n),yi(e,t,n)}};function yi(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(Z(t))r=Xr(t,s.props.value)>-1;else if(Pn(t))r=t.has(s.props.value);else{if(t===n)return;r=Wt(t,wa(e,!0))}e.checked!==r&&(e.checked=r)}const bi={created(e,{value:t},n){e.checked=Wt(t,n.props.value),e[at]=zt(n),Dt(e,"change",()=>{e[at](Rn(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[at]=zt(s),t!==n&&(e.checked=Wt(t,s.props.value))}},Sn={deep:!0,created(e,{value:t,modifiers:{number:n}},s){e._modelValue=t,Dt(e,"change",()=>{const r=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>n?js(Rn(o)):Rn(o));e[at](e.multiple?Pn(e._modelValue)?new Set(r):r:r[0]),e._assigning=!0,ro(()=>{e._assigning=!1})}),e[at]=zt(s)},mounted(e,{value:t}){xi(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[at]=zt(n)},updated(e,{value:t}){e._assigning||xi(e,t)}};function xi(e,t){const n=e.multiple,s=Z(t);if(!(n&&!s&&!Pn(t))){for(let r=0,o=e.options.length;rString(c)===String(l)):i.selected=Xr(t,l)>-1}else i.selected=t.has(l);else if(Wt(Rn(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Rn(e){return"_value"in e?e._value:e.value}function wa(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const kf=["ctrl","shift","alt","meta"],Df={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)=>kf.some(n=>e[`${n}Key`]&&!t.includes(n))},jn=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=((r,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(r=>{if(!("key"in r))return;const o=Jt(r.key);if(t.some(i=>i===o||$f[i]===o))return e(r)}))},Uf=Le({patchProp:Tf},of);let vi;function Ff(){return vi||(vi=Mc(Uf))}const Mf=((...e)=>{const t=Ff().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Bf(s);if(!r)return;const o=t._component;!oe(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,Vf(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t});function Vf(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Bf(e){return Oe(e)?document.querySelector(e):e}/*! + * pinia v2.3.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const jf=Symbol();var _i;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(_i||(_i={}));function Hf(){const e=Eu(!0),t=e.run(()=>Y({}));let n=[],s=[];const r=Cl({install(o){r._a=o,o.provide(jf,r),o.config.globalProperties.$pinia=r,s.forEach(i=>n.push(i)),s=[]},use(o){return this._a?n.push(o):s.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const qf={__name:"App",setup(e){return(t,n)=>{const s=Nr("router-view");return L(),un(s,null,{default:ft(({Component:r})=>[Ae(uf,{name:"fade",mode:"out-in"},{default:ft(()=>[(L(),un(yc(r)))]),_:2},1024)]),_:1})}}};/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const mn=typeof document<"u";function Ea(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Kf(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Ea(e.default)}const be=Object.assign;function mr(e,t){const n={};for(const s in t){const r=t[s];n[s]=mt(r)?r.map(e):e(r)}return n}const zn=()=>{},mt=Array.isArray;function wi(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const Sa=/#/g,Wf=/&/g,Gf=/\//g,zf=/=/g,Jf=/\?/g,Ra=/\+/g,Xf=/%5B/g,Qf=/%5D/g,Ca=/%5E/g,Yf=/%60/g,Aa=/%7B/g,Zf=/%7C/g,Oa=/%7D/g,ed=/%20/g;function fo(e){return e==null?"":encodeURI(""+e).replace(Zf,"|").replace(Xf,"[").replace(Qf,"]")}function td(e){return fo(e).replace(Aa,"{").replace(Oa,"}").replace(Ca,"^")}function Fr(e){return fo(e).replace(Ra,"%2B").replace(ed,"+").replace(Sa,"%23").replace(Wf,"%26").replace(Yf,"`").replace(Aa,"{").replace(Oa,"}").replace(Ca,"^")}function nd(e){return Fr(e).replace(zf,"%3D")}function sd(e){return fo(e).replace(Sa,"%23").replace(Jf,"%3F")}function rd(e){return sd(e).replace(Gf,"%2F")}function rs(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const od=/\/$/,id=e=>e.replace(od,"");function gr(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let a=t.indexOf("?");return a=l>=0&&a>l?-1:a,a>=0&&(s=t.slice(0,a),o=t.slice(a,l>0?l:t.length),r=e(o.slice(1))),l>=0&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=cd(s??t,n),{fullPath:s+o+i,path:s,query:r,hash:rs(i)}}function ld(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Ei(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function ad(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Cn(t.matched[s],n.matched[r])&&Ta(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Cn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ta(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!ud(e[n],t[n]))return!1;return!0}function ud(e,t){return mt(e)?Si(e,t):mt(t)?Si(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function Si(e,t){return mt(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function cd(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const jt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Mr=(function(e){return e.pop="pop",e.push="push",e})({}),yr=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function fd(e){if(!e)if(mn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),id(e)}const dd=/^[^#]+#/;function pd(e,t){return e.replace(dd,"#")+t}function hd(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Qs=()=>({left:window.scrollX,top:window.scrollY});function md(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=hd(r,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 Ri(e,t){return(history.state?history.state.position-t:-1)+e}const Vr=new Map;function gd(e,t){Vr.set(e,t)}function yd(e){const t=Vr.get(e);return Vr.delete(e),t}function bd(e){return typeof e=="string"||e&&typeof e=="object"}function Pa(e){return typeof e=="string"||typeof e=="symbol"}let Pe=(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 Na=Symbol("");Pe.MATCHER_NOT_FOUND+"",Pe.NAVIGATION_GUARD_REDIRECT+"",Pe.NAVIGATION_ABORTED+"",Pe.NAVIGATION_CANCELLED+"",Pe.NAVIGATION_DUPLICATED+"";function An(e,t){return be(new Error,{type:e,[Na]:!0},t)}function Tt(e,t){return e instanceof Error&&Na in e&&(t==null||!!(e.type&t))}const xd=["params","query","hash"];function vd(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of xd)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function _d(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&Fr(r)):[s&&Fr(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function wd(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=mt(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Ed=Symbol(""),Ai=Symbol(""),Ys=Symbol(""),po=Symbol(""),Br=Symbol("");function Un(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function Kt(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,a)=>{const c=p=>{p===!1?a(An(Pe.NAVIGATION_ABORTED,{from:n,to:t})):p instanceof Error?a(p):bd(p)?a(An(Pe.NAVIGATION_GUARD_REDIRECT,{from:t,to:p})):(i&&s.enterCallbacks[r]===i&&typeof p=="function"&&i.push(p),l())},u=o(()=>e.call(s&&s.instances[r],t,n,c));let f=Promise.resolve(u);e.length<3&&(f=f.then(c)),f.catch(p=>a(p))})}function br(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let a=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(Ea(a)){const c=(a.__vccOpts||a)[t];c&&o.push(Kt(c,n,s,i,l,r))}else{let c=a();o.push(()=>c.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const f=Kf(u)?u.default:u;i.mods[l]=u,i.components[l]=f;const p=(f.__vccOpts||f)[t];return p&&Kt(p,n,s,i,l,r)()}))}}return o}function Sd(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iCn(c,l))?s.push(l):n.push(l));const a=e.matched[i];a&&(t.matched.find(c=>Cn(c,a))||r.push(a))}return[n,s,r]}/*! + * vue-router v4.6.4 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let Rd=()=>location.protocol+"//"+location.host;function Ia(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),Ei(l,"")}return Ei(n,e)+s+r}function Cd(e,t,n,s){let r=[],o=[],i=null;const l=({state:p})=>{const m=Ia(e,location),A=n.value,P=t.value;let w=0;if(p){if(n.value=m,t.value=p,i&&i===A){i=null;return}w=P?p.position-P.position:0}else s(m);r.forEach(v=>{v(n.value,A,{delta:w,type:Mr.pop,direction:w?w>0?yr.forward:yr.back:yr.unknown})})};function a(){i=n.value}function c(p){r.push(p);const m=()=>{const A=r.indexOf(p);A>-1&&r.splice(A,1)};return o.push(m),m}function u(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(be({},p.state,{scroll:Qs()}),"")}}function f(){for(const p of o)p();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",u),document.removeEventListener("visibilitychange",u)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",u),document.addEventListener("visibilitychange",u),{pauseListeners:a,listen:c,destroy:f}}function Oi(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Qs():null}}function Ad(e){const{history:t,location:n}=window,s={value:Ia(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(a,c,u){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+a:Rd()+e+a;try{t[u?"replaceState":"pushState"](c,"",p),r.value=c}catch(m){console.error(m),n[u?"replace":"assign"](p)}}function i(a,c){o(a,be({},t.state,Oi(r.value.back,a,r.value.forward,!0),c,{position:r.value.position}),!0),s.value=a}function l(a,c){const u=be({},r.value,t.state,{forward:a,scroll:Qs()});o(u.current,u,!0),o(a,be({},Oi(s.value,a,null),{position:u.position+1},c),!1),s.value=a}return{location:s,state:r,push:l,replace:i}}function Od(e){e=fd(e);const t=Ad(e),n=Cd(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=be({location:"",base:e,go:s,createHref:pd.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let sn=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var $e=(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})($e||{});const Td={type:sn.Static,value:""},Pd=/[a-zA-Z0-9_]/;function Nd(e){if(!e)return[[]];if(e==="/")return[[Td]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${c}": ${m}`)}let n=$e.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,a,c="",u="";function f(){c&&(n===$e.Static?o.push({type:sn.Static,value:c}):n===$e.Param||n===$e.ParamRegExp||n===$e.ParamRegExpEnd?(o.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),o.push({type:sn.Param,value:c,regexp:u,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),c="")}function p(){c+=a}for(;lt.length?t.length===1&&t[0]===Qe.Static+Qe.Segment?1:-1:0}function ka(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Ld={strict:!1,end:!0,sensitive:!1};function Ud(e,t,n){const s=Dd(Nd(e.path),n),r=be(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Fd(e,t){const n=[],s=new Map;t=wi(Ld,t);function r(f){return s.get(f)}function o(f,p,m){const A=!m,P=Ii(f);P.aliasOf=m&&m.record;const w=wi(t,f),v=[P];if("alias"in f){const S=typeof f.alias=="string"?[f.alias]:f.alias;for(const x of S)v.push(Ii(be({},P,{components:m?m.record.components:P.components,path:x,aliasOf:m?m.record:P})))}let R,k;for(const S of v){const{path:x}=S;if(p&&x[0]!=="/"){const _=p.record.path,O=_[_.length-1]==="/"?"":"/";S.path=p.record.path+(x&&O+x)}if(R=Ud(S,p,w),m?m.alias.push(R):(k=k||R,k!==R&&k.alias.push(R),A&&f.name&&!ki(R)&&i(f.name)),Da(R)&&a(R),P.children){const _=P.children;for(let O=0;O<_.length;O++)o(_[O],R,m&&m.children[O])}m=m||R}return k?()=>{i(k)}:zn}function i(f){if(Pa(f)){const p=s.get(f);p&&(s.delete(f),n.splice(n.indexOf(p),1),p.children.forEach(i),p.alias.forEach(i))}else{const p=n.indexOf(f);p>-1&&(n.splice(p,1),f.record.name&&s.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function l(){return n}function a(f){const p=Bd(f,n);n.splice(p,0,f),f.record.name&&!ki(f)&&s.set(f.record.name,f)}function c(f,p){let m,A={},P,w;if("name"in f&&f.name){if(m=s.get(f.name),!m)throw An(Pe.MATCHER_NOT_FOUND,{location:f});w=m.record.name,A=be(Ni(p.params,m.keys.filter(k=>!k.optional).concat(m.parent?m.parent.keys.filter(k=>k.optional):[]).map(k=>k.name)),f.params&&Ni(f.params,m.keys.map(k=>k.name))),P=m.stringify(A)}else if(f.path!=null)P=f.path,m=n.find(k=>k.re.test(P)),m&&(A=m.parse(P),w=m.record.name);else{if(m=p.name?s.get(p.name):n.find(k=>k.re.test(p.path)),!m)throw An(Pe.MATCHER_NOT_FOUND,{location:f,currentLocation:p});w=m.record.name,A=be({},p.params,f.params),P=m.stringify(A)}const v=[];let R=m;for(;R;)v.unshift(R.record),R=R.parent;return{name:w,path:P,params:A,matched:v,meta:Vd(v)}}e.forEach(f=>o(f));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:c,removeRoute:i,clearRoutes:u,getRoutes:l,getRecordMatcher:r}}function Ni(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Ii(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Md(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 Md(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function ki(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Vd(e){return e.reduce((t,n)=>be(t,n.meta),{})}function Bd(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;ka(e,t[o])<0?s=o:n=o+1}const r=jd(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function jd(e){let t=e;for(;t=t.parent;)if(Da(t)&&ka(e,t)===0)return t}function Da({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Di(e){const t=dt(Ys),n=dt(po),s=tt(()=>{const a=bn(e.to);return t.resolve(a)}),r=tt(()=>{const{matched:a}=s.value,{length:c}=a,u=a[c-1],f=n.matched;if(!u||!f.length)return-1;const p=f.findIndex(Cn.bind(null,u));if(p>-1)return p;const m=$i(a[c-2]);return c>1&&$i(u)===m&&f[f.length-1].path!==m?f.findIndex(Cn.bind(null,a[c-2])):p}),o=tt(()=>r.value>-1&&Gd(n.params,s.value.params)),i=tt(()=>r.value>-1&&r.value===n.matched.length-1&&Ta(n.params,s.value.params));function l(a={}){if(Wd(a)){const c=t[bn(e.replace)?"replace":"push"](bn(e.to)).catch(zn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>c),c}return Promise.resolve()}return{route:s,href:tt(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function Hd(e){return e.length===1?e[0]:e}const qd=ql({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:Di,setup(e,{slots:t}){const n=Ct(Di(e)),{options:s}=dt(Ys),r=tt(()=>({[Li(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Li(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Hd(t.default(n));return e.custom?o:co("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Kd=qd;function Wd(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 Gd(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!mt(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function $i(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Li=(e,t,n)=>e??t??n,zd=ql({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=dt(Br),r=tt(()=>e.route||s.value),o=dt(Ai,0),i=tt(()=>{let c=bn(o);const{matched:u}=r.value;let f;for(;(f=u[c])&&!f.components;)c++;return c}),l=tt(()=>r.value.matched[i.value]);xs(Ai,tt(()=>i.value+1)),xs(Ed,l),xs(Br,r);const a=Y();return vs(()=>[a.value,l.value,e.name],([c,u,f],[p,m,A])=>{u&&(u.instances[f]=c,m&&m!==u&&c&&c===p&&(u.leaveGuards.size||(u.leaveGuards=m.leaveGuards),u.updateGuards.size||(u.updateGuards=m.updateGuards))),c&&u&&(!m||!Cn(u,m)||!p)&&(u.enterCallbacks[f]||[]).forEach(P=>P(c))},{flush:"post"}),()=>{const c=r.value,u=e.name,f=l.value,p=f&&f.components[u];if(!p)return Ui(n.default,{Component:p,route:c});const m=f.props[u],A=m?m===!0?c.params:typeof m=="function"?m(c):m:null,w=co(p,be({},A,t,{onVnodeUnmounted:v=>{v.component.isUnmounted&&(f.instances[u]=null)},ref:a}));return Ui(n.default,{Component:w,route:c})||w}}});function Ui(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Jd=zd;function Xd(e){const t=Fd(e.routes,e),n=e.parseQuery||_d,s=e.stringifyQuery||Ci,r=e.history,o=Un(),i=Un(),l=Un(),a=ju(jt);let c=jt;mn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=mr.bind(null,C=>""+C),f=mr.bind(null,rd),p=mr.bind(null,rs);function m(C,W){let q,X;return Pa(C)?(q=t.getRecordMatcher(C),X=W):X=C,t.addRoute(X,q)}function A(C){const W=t.getRecordMatcher(C);W&&t.removeRoute(W)}function P(){return t.getRoutes().map(C=>C.record)}function w(C){return!!t.getRecordMatcher(C)}function v(C,W){if(W=be({},W||a.value),typeof C=="string"){const b=gr(n,C,W.path),N=t.resolve({path:b.path},W),E=r.createHref(b.fullPath);return be(b,N,{params:p(N.params),hash:rs(b.hash),redirectedFrom:void 0,href:E})}let q;if(C.path!=null)q=be({},C,{path:gr(n,C.path,W.path).path});else{const b=be({},C.params);for(const N in b)b[N]==null&&delete b[N];q=be({},C,{params:f(b)}),W.params=f(W.params)}const X=t.resolve(q,W),le=C.hash||"";X.params=u(p(X.params));const h=ld(s,be({},C,{hash:td(le),path:X.path})),g=r.createHref(h);return be({fullPath:h,hash:le,query:s===Ci?wd(C.query):C.query||{}},X,{redirectedFrom:void 0,href:g})}function R(C){return typeof C=="string"?gr(n,C,a.value.path):be({},C)}function k(C,W){if(c!==C)return An(Pe.NAVIGATION_CANCELLED,{from:W,to:C})}function S(C){return O(C)}function x(C){return S(be(R(C),{replace:!0}))}function _(C,W){const q=C.matched[C.matched.length-1];if(q&&q.redirect){const{redirect:X}=q;let le=typeof X=="function"?X(C,W):X;return typeof le=="string"&&(le=le.includes("?")||le.includes("#")?le=R(le):{path:le},le.params={}),be({query:C.query,hash:C.hash,params:le.path!=null?{}:C.params},le)}}function O(C,W){const q=c=v(C),X=a.value,le=C.state,h=C.force,g=C.replace===!0,b=_(q,X);if(b)return O(be(R(b),{state:typeof b=="object"?be({},le,b.state):le,force:h,replace:g}),W||q);const N=q;N.redirectedFrom=W;let E;return!h&&ad(s,X,q)&&(E=An(Pe.NAVIGATION_DUPLICATED,{to:N,from:X}),D(X,X,!0,!1)),(E?Promise.resolve(E):ee(N,X)).catch(T=>Tt(T)?Tt(T,Pe.NAVIGATION_GUARD_REDIRECT)?T:De(T):ue(T,N,X)).then(T=>{if(T){if(Tt(T,Pe.NAVIGATION_GUARD_REDIRECT))return O(be({replace:g},R(T.to),{state:typeof T.to=="object"?be({},le,T.to.state):le,force:h}),W||N)}else T=H(N,X,!0,g,le);return re(N,X,T),T})}function te(C,W){const q=k(C,W);return q?Promise.reject(q):Promise.resolve()}function B(C){const W=pe.values().next().value;return W&&typeof W.runWithContext=="function"?W.runWithContext(C):C()}function ee(C,W){let q;const[X,le,h]=Sd(C,W);q=br(X.reverse(),"beforeRouteLeave",C,W);for(const b of X)b.leaveGuards.forEach(N=>{q.push(Kt(N,C,W))});const g=te.bind(null,C,W);return q.push(g),ne(q).then(()=>{q=[];for(const b of o.list())q.push(Kt(b,C,W));return q.push(g),ne(q)}).then(()=>{q=br(le,"beforeRouteUpdate",C,W);for(const b of le)b.updateGuards.forEach(N=>{q.push(Kt(N,C,W))});return q.push(g),ne(q)}).then(()=>{q=[];for(const b of h)if(b.beforeEnter)if(mt(b.beforeEnter))for(const N of b.beforeEnter)q.push(Kt(N,C,W));else q.push(Kt(b.beforeEnter,C,W));return q.push(g),ne(q)}).then(()=>(C.matched.forEach(b=>b.enterCallbacks={}),q=br(h,"beforeRouteEnter",C,W,B),q.push(g),ne(q))).then(()=>{q=[];for(const b of i.list())q.push(Kt(b,C,W));return q.push(g),ne(q)}).catch(b=>Tt(b,Pe.NAVIGATION_CANCELLED)?b:Promise.reject(b))}function re(C,W,q){l.list().forEach(X=>B(()=>X(C,W,q)))}function H(C,W,q,X,le){const h=k(C,W);if(h)return h;const g=W===jt,b=mn?history.state:{};q&&(X||g?r.replace(C.fullPath,be({scroll:g&&b&&b.scroll},le)):r.push(C.fullPath,le)),a.value=C,D(C,W,q,g),De()}let ie;function ce(){ie||(ie=r.listen((C,W,q)=>{if(!ye.listening)return;const X=v(C),le=_(X,ye.currentRoute.value);if(le){O(be(le,{replace:!0,force:!0}),X).catch(zn);return}c=X;const h=a.value;mn&&gd(Ri(h.fullPath,q.delta),Qs()),ee(X,h).catch(g=>Tt(g,Pe.NAVIGATION_ABORTED|Pe.NAVIGATION_CANCELLED)?g:Tt(g,Pe.NAVIGATION_GUARD_REDIRECT)?(O(be(R(g.to),{force:!0}),X).then(b=>{Tt(b,Pe.NAVIGATION_ABORTED|Pe.NAVIGATION_DUPLICATED)&&!q.delta&&q.type===Mr.pop&&r.go(-1,!1)}).catch(zn),Promise.reject()):(q.delta&&r.go(-q.delta,!1),ue(g,X,h))).then(g=>{g=g||H(X,h,!1),g&&(q.delta&&!Tt(g,Pe.NAVIGATION_CANCELLED)?r.go(-q.delta,!1):q.type===Mr.pop&&Tt(g,Pe.NAVIGATION_ABORTED|Pe.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),re(X,h,g)}).catch(zn)}))}let Ie=Un(),we=Un(),fe;function ue(C,W,q){De(C);const X=we.list();return X.length?X.forEach(le=>le(C,W,q)):console.error(C),Promise.reject(C)}function et(){return fe&&a.value!==jt?Promise.resolve():new Promise((C,W)=>{Ie.add([C,W])})}function De(C){return fe||(fe=!C,ce(),Ie.list().forEach(([W,q])=>C?q(C):W()),Ie.reset()),C}function D(C,W,q,X){const{scrollBehavior:le}=e;if(!mn||!le)return Promise.resolve();const h=!q&&yd(Ri(C.fullPath,0))||(X||!q)&&history.state&&history.state.scroll||null;return ro().then(()=>le(C,W,h)).then(g=>g&&md(g)).catch(g=>ue(g,C,W))}const I=C=>r.go(C);let j;const pe=new Set,ye={currentRoute:a,listening:!0,addRoute:m,removeRoute:A,clearRoutes:t.clearRoutes,hasRoute:w,getRoutes:P,resolve:v,options:e,push:S,replace:x,go:I,back:()=>I(-1),forward:()=>I(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:we.add,isReady:et,install(C){C.component("RouterLink",Kd),C.component("RouterView",Jd),C.config.globalProperties.$router=ye,Object.defineProperty(C.config.globalProperties,"$route",{enumerable:!0,get:()=>bn(a)}),mn&&!j&&a.value===jt&&(j=!0,S(r.location).catch(X=>{}));const W={};for(const X in jt)Object.defineProperty(W,X,{get:()=>a.value[X],enumerable:!0});C.provide(Ys,ye),C.provide(po,Rl(W)),C.provide(Br,a);const q=C.unmount;pe.add(C),C.unmount=function(){pe.delete(C),pe.size<1&&(c=jt,ie&&ie(),ie=null,a.value=jt,j=!1,fe=!1),q()}}};function ne(C){return C.reduce((W,q)=>W.then(()=>B(q)),Promise.resolve())}return ye}function Qd(){return dt(Ys)}function Yd(e){return dt(po)}const ho="sub_store_remote_uri",mo="sub_store_admin_token",go="sub_store_token_validated";function $a(e){const t=(e||"").trim().replace(/\/+$/,"").replace(/\/api$/,"");if(!t)return"";const n=new URL(t);if(!["http:","https:"].includes(n.protocol))throw new Error("Remote URI must use http or https");return n.toString().replace(/\/+$/,"")}function Zd(e,t){const n=$a(e);n&&t&&(localStorage.setItem(ho,n),localStorage.setItem(mo,t),localStorage.setItem(go,"true"))}function yo(){return localStorage.getItem(ho)||""}function La(){return localStorage.getItem(mo)||""}function ep(){return localStorage.getItem(go)==="true"}function tp(){localStorage.removeItem(ho),localStorage.removeItem(mo),localStorage.removeItem(go)}async function np(e,t){if(!e)return!1;try{const n=$a(t),s=await fetch(`${n}/api/env`,{headers:{Authorization:`Bearer ${e}`}});return s.ok?(await s.json()).status==="success":!1}catch{return!1}}function sp(){return La()}function rp(){var e;return yo()||((e=window.SUB_STORE_CONFIG)==null?void 0:e.apiBaseUrl)||""}function Ua(e,t){return function(){return e.apply(t,arguments)}}const{toString:op}=Object.prototype,{getPrototypeOf:On}=Object,{iterator:us,toStringTag:Fa}=Symbol,ks=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),os=(e,t)=>{let n=e;const s=[];for(;n!=null&&n!==Object.prototype;){if(s.indexOf(n)!==-1)return!1;if(s.push(n),ks(n,t))return!0;n=On(n)}return!1},ip=(e,t)=>e!=null&&os(e,t)?e[t]:void 0,bo=(e=>t=>{const n=op.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),gt=e=>(e=e.toLowerCase(),t=>bo(t)===e),Zs=e=>t=>typeof t===e,{isArray:cn}=Array,Tn=Zs("undefined");function Nn(e){return e!==null&&!Tn(e)&&e.constructor!==null&&!Tn(e.constructor)&&nt(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Ma=gt("ArrayBuffer");function lp(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Ma(e.buffer),t}const ap=Zs("string"),nt=Zs("function"),Va=Zs("number"),In=e=>e!==null&&typeof e=="object",up=e=>e===!0||e===!1,ws=e=>{if(!In(e))return!1;const t=On(e);return(t===null||t===Object.prototype||On(t)===null)&&!os(e,Fa)&&!os(e,us)},cp=e=>{if(!In(e)||Nn(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},fp=gt("Date"),dp=gt("File"),pp=e=>!!(e&&typeof e.uri<"u"),hp=e=>e&&typeof e.getParts<"u",mp=gt("Blob"),gp=gt("FileList"),yp=e=>In(e)&&nt(e.pipe);function bp(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const Fi=bp(),Mi=typeof Fi.FormData<"u"?Fi.FormData:void 0,xp=e=>{if(!e)return!1;if(Mi&&e instanceof Mi)return!0;const t=On(e);if(!t||t===Object.prototype||!nt(e.append))return!1;const n=bo(e);return n==="formdata"||n==="object"&&nt(e.toString)&&e.toString()==="[object FormData]"},vp=gt("URLSearchParams"),[_p,wp,Ep,Sp]=["ReadableStream","Request","Response","Headers"].map(gt),Rp=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function cs(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let s,r;if(typeof e!="object"&&(e=[e]),cn(e))for(s=0,r=e.length;s0;)if(r=n[s],t===r.toLowerCase())return r;return null}const rn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,ja=e=>!Tn(e)&&e!==rn;function jr(...e){const{caseless:t,skipUndefined:n}=ja(this)&&this||{},s={},r=(o,i)=>{if(i==="__proto__"||i==="constructor"||i==="prototype")return;const l=t&&typeof i=="string"&&Ba(s,i)||i,a=ks(s,l)?s[l]:void 0;ws(a)&&ws(o)?s[l]=jr(a,o):ws(o)?s[l]=jr({},o):cn(o)?s[l]=o.slice():(!n||!Tn(o))&&(s[l]=o)};for(let o=0,i=e.length;o(cs(t,(r,o)=>{n&&nt(r)?Object.defineProperty(e,o,{__proto__:null,value:Ua(r,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,o,{__proto__:null,value:r,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:s}),e),Ap=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Op=(e,t,n,s)=>{e.prototype=Object.create(t.prototype,s),Object.defineProperty(e.prototype,"constructor",{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{__proto__:null,value:t.prototype}),n&&Object.assign(e.prototype,n)},Tp=(e,t,n,s)=>{let r,o,i;const l={};if(t=t||{},e==null)return t;do{for(r=Object.getOwnPropertyNames(e),o=r.length;o-- >0;)i=r[o],(!s||s(i,e,t))&&!l[i]&&(t[i]=e[i],l[i]=!0);e=n!==!1&&On(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Pp=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const s=e.indexOf(t,n);return s!==-1&&s===n},Np=e=>{if(!e)return null;if(cn(e))return e;let t=e.length;if(!Va(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Ip=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&On(Uint8Array)),kp=(e,t)=>{const s=(e&&e[us]).call(e);let r;for(;(r=s.next())&&!r.done;){const o=r.value;t.call(e,o[0],o[1])}},Dp=(e,t)=>{let n;const s=[];for(;(n=e.exec(t))!==null;)s.push(n);return s},$p=gt("HTMLFormElement"),Lp=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,s,r){return s.toUpperCase()+r}),{propertyIsEnumerable:Up}=Object.prototype,Fp=gt("RegExp"),Ha=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),s={};cs(n,(r,o)=>{let i;(i=t(r,o,e))!==!1&&(s[o]=i||r)}),Object.defineProperties(e,s)},Mp=e=>{Ha(e,(t,n)=>{if(nt(e)&&["arguments","caller","callee"].includes(n))return!1;const s=e[n];if(nt(s)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Vp=(e,t)=>{const n={},s=r=>{r.forEach(o=>{n[o]=!0})};return cn(e)?s(e):s(String(e).split(t)),n},Bp=()=>{},jp=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function Hp(e){return!!(e&&nt(e.append)&&e[Fa]==="FormData"&&e[us])}const qp=e=>{const t=new WeakSet,n=s=>{if(In(s)){if(t.has(s))return;if(Nn(s))return s;if(!("toJSON"in s)){t.add(s);const r=cn(s)?[]:{};return cs(s,(o,i)=>{const l=n(o);!Tn(l)&&(r[i]=l)}),t.delete(s),r}}return s};return n(e)},Kp=gt("AsyncFunction"),Wp=e=>e&&(In(e)||nt(e))&&nt(e.then)&&nt(e.catch),qa=((e,t)=>e?setImmediate:t?((n,s)=>(rn.addEventListener("message",({source:r,data:o})=>{r===rn&&o===n&&s.length&&s.shift()()},!1),r=>{s.push(r),rn.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",nt(rn.postMessage)),Gp=typeof queueMicrotask<"u"?queueMicrotask.bind(rn):typeof process<"u"&&process.nextTick||qa,Ka=e=>e!=null&&nt(e[us]),zp=e=>e!=null&&os(e,us)&&Ka(e),y={isArray:cn,isArrayBuffer:Ma,isBuffer:Nn,isFormData:xp,isArrayBufferView:lp,isString:ap,isNumber:Va,isBoolean:up,isObject:In,isPlainObject:ws,isEmptyObject:cp,isReadableStream:_p,isRequest:wp,isResponse:Ep,isHeaders:Sp,isUndefined:Tn,isDate:fp,isFile:dp,isReactNativeBlob:pp,isReactNative:hp,isBlob:mp,isRegExp:Fp,isFunction:nt,isStream:yp,isURLSearchParams:vp,isTypedArray:Ip,isFileList:gp,forEach:cs,merge:jr,extend:Cp,trim:Rp,stripBOM:Ap,inherits:Op,toFlatObject:Tp,kindOf:bo,kindOfTest:gt,endsWith:Pp,toArray:Np,forEachEntry:kp,matchAll:Dp,isHTMLForm:$p,hasOwnProperty:ks,hasOwnProp:ks,hasOwnInPrototypeChain:os,getSafeProp:ip,reduceDescriptors:Ha,freezeMethods:Mp,toObjectSet:Vp,toCamelCase:Lp,noop:Bp,toFiniteNumber:jp,findKey:Ba,global:rn,isContextDefined:ja,isSpecCompliantForm:Hp,toJSONObject:qp,isAsyncFn:Kp,isThenable:Wp,setImmediate:qa,asap:Gp,isIterable:Ka,isSafeIterable:zp},Jp=y.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Xp=e=>{const t={};let n,s,r;return e&&e.split(` +`).forEach(function(i){r=i.indexOf(":"),n=i.substring(0,r).trim().toLowerCase(),s=i.substring(r+1).trim(),!(!n||t[n]&&Jp[n])&&(n==="set-cookie"?t[n]?t[n].push(s):t[n]=[s]:t[n]=t[n]?t[n]+", "+s:s)}),t};function Qp(e){let t=0,n=e.length;for(;tt;){const s=e.charCodeAt(n-1);if(s!==9&&s!==32)break;n-=1}return t===0&&n===e.length?e:e.slice(t,n)}const Yp=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),Zp=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function xo(e,t){return y.isArray(e)?e.map(n=>xo(n,t)):Qp(String(e).replace(t,""))}const eh=e=>xo(e,Yp),th=e=>xo(e,Zp);function Wa(e){const t=Object.create(null);return y.forEach(e.toJSON(),(n,s)=>{t[s]=th(n)}),t}const Vi=Symbol("internals");function Fn(e){return e&&String(e).trim().toLowerCase()}function Es(e){return e===!1||e==null?e:y.isArray(e)?e.map(Es):eh(String(e))}function nh(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let s;for(;s=n.exec(e);)t[s[1]]=s[2];return t}const sh=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function xr(e,t,n,s,r){if(y.isFunction(s))return s.call(this,t,n);if(r&&(t=n),!!y.isString(t)){if(y.isString(s))return t.indexOf(s)!==-1;if(y.isRegExp(s))return s.test(t)}}function rh(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,s)=>n.toUpperCase()+s)}function oh(e,t){const n=y.toCamelCase(" "+t);["get","set","has"].forEach(s=>{Object.defineProperty(e,s+n,{__proto__:null,value:function(r,o,i){return this[s].call(this,t,r,o,i)},configurable:!0})})}let ze=class{constructor(t){t&&this.set(t)}set(t,n,s){const r=this;function o(l,a,c){const u=Fn(a);if(!u)return;const f=y.findKey(r,u);(!f||r[f]===void 0||c===!0||c===void 0&&r[f]!==!1)&&(r[f||a]=Es(l))}const i=(l,a)=>y.forEach(l,(c,u)=>o(c,u,a));if(y.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(y.isString(t)&&(t=t.trim())&&!sh(t))i(Xp(t),n);else if(y.isObject(t)&&y.isSafeIterable(t)){let l=Object.create(null),a,c;for(const u of t){if(!y.isArray(u))throw new TypeError("Object iterator must return a key-value pair");c=u[0],y.hasOwnProp(l,c)?(a=l[c],l[c]=y.isArray(a)?[...a,u[1]]:[a,u[1]]):l[c]=u[1]}i(l,n)}else t!=null&&o(n,t,s);return this}get(t,n){if(t=Fn(t),t){const s=y.findKey(this,t);if(s){const r=this[s];if(!n)return r;if(n===!0)return nh(r);if(y.isFunction(n))return n.call(this,r,s);if(y.isRegExp(n))return n.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=Fn(t),t){const s=y.findKey(this,t);return!!(s&&this[s]!==void 0&&(!n||xr(this,this[s],s,n)))}return!1}delete(t,n){const s=this;let r=!1;function o(i){if(i=Fn(i),i){const l=y.findKey(s,i);l&&(!n||xr(s,s[l],l,n))&&(delete s[l],r=!0)}}return y.isArray(t)?t.forEach(o):o(t),r}clear(t){const n=Object.keys(this);let s=n.length,r=!1;for(;s--;){const o=n[s];(!t||xr(this,this[o],o,t,!0))&&(delete this[o],r=!0)}return r}normalize(t){const n=this,s={};return y.forEach(this,(r,o)=>{const i=y.findKey(s,o);if(i){n[i]=Es(r),delete n[o];return}const l=t?rh(o):String(o).trim();l!==o&&delete n[o],n[l]=Es(r),s[l]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return y.forEach(this,(s,r)=>{s!=null&&s!==!1&&(n[r]=t&&y.isArray(s)?s.join(", "):s)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const s=new this(t);return n.forEach(r=>s.set(r)),s}static accessor(t){const s=(this[Vi]=this[Vi]={accessors:{}}).accessors,r=this.prototype;function o(i){const l=Fn(i);s[l]||(oh(r,i),s[l]=!0)}return y.isArray(t)?t.forEach(o):o(t),this}};ze.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);y.reduceDescriptors(ze.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(s){this[n]=s}}});y.freezeMethods(ze);const ih="[REDACTED ****]";function lh(e){if(y.hasOwnProp(e,"toJSON"))return!0;let t=Object.getPrototypeOf(e);for(;t&&t!==Object.prototype;){if(y.hasOwnProp(t,"toJSON"))return!0;t=Object.getPrototypeOf(t)}return!1}function ah(e,t){const n=new Set(t.map(o=>String(o).toLowerCase())),s=[],r=o=>{if(o===null||typeof o!="object"||y.isBuffer(o))return o;if(s.indexOf(o)!==-1)return;o instanceof ze&&(o=o.toJSON()),s.push(o);let i;if(y.isArray(o))i=[],o.forEach((l,a)=>{const c=r(l);y.isUndefined(c)||(i[a]=c)});else{if(!y.isPlainObject(o)&&lh(o))return s.pop(),o;i=Object.create(null);for(const[l,a]of Object.entries(o)){const c=n.has(l.toLowerCase())?ih:r(a);y.isUndefined(c)||(i[l]=c)}}return s.pop(),i};return r(e)}let K=class Ga extends Error{static from(t,n,s,r,o,i){const l=new Ga(t.message,n||t.code,s,r,o);return Object.defineProperty(l,"cause",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),l.name=t.name,t.status!=null&&l.status==null&&(l.status=t.status),i&&Object.assign(l,i),l}constructor(t,n,s,r,o){super(t),Object.defineProperty(this,"message",{__proto__:null,value:t,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),s&&(this.config=s),r&&(this.request=r),o&&(this.response=o,this.status=o.status)}toJSON(){const t=this.config,n=t&&y.hasOwnProp(t,"redact")?t.redact:void 0,s=y.isArray(n)&&n.length>0?ah(t,n):y.toJSONObject(t);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:s,code:this.code,status:this.status}}};K.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";K.ERR_BAD_OPTION="ERR_BAD_OPTION";K.ECONNABORTED="ECONNABORTED";K.ETIMEDOUT="ETIMEDOUT";K.ECONNREFUSED="ECONNREFUSED";K.ERR_NETWORK="ERR_NETWORK";K.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";K.ERR_DEPRECATED="ERR_DEPRECATED";K.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";K.ERR_BAD_REQUEST="ERR_BAD_REQUEST";K.ERR_CANCELED="ERR_CANCELED";K.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";K.ERR_INVALID_URL="ERR_INVALID_URL";K.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";const uh=null,za=100;function Hr(e){return y.isPlainObject(e)||y.isArray(e)}function Ja(e){return y.endsWith(e,"[]")?e.slice(0,-2):e}function vr(e,t,n){return e?e.concat(t).map(function(r,o){return r=Ja(r),!n&&o?"["+r+"]":r}).join(n?".":""):t}function ch(e){return y.isArray(e)&&!e.some(Hr)}const fh=y.toFlatObject(y,{},null,function(t){return/^is[A-Z]/.test(t)});function er(e,t,n){if(!y.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=y.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(R,k){return!y.isUndefined(k[R])});const s=n.metaTokens,r=n.visitor||A,o=n.dots,i=n.indexes,l=n.Blob||typeof Blob<"u"&&Blob,a=n.maxDepth===void 0?za:n.maxDepth,c=l&&y.isSpecCompliantForm(t),u=[];if(!y.isFunction(r))throw new TypeError("visitor must be a function");function f(v){if(v===null)return"";if(y.isDate(v))return v.toISOString();if(y.isBoolean(v))return v.toString();if(!c&&y.isBlob(v))throw new K("Blob is not supported. Use a Buffer instead.");if(y.isArrayBuffer(v)||y.isTypedArray(v)){if(c&&typeof l=="function")return new l([v]);if(typeof Buffer<"u")return Buffer.from(v);throw new K("Blob is not supported. Use a Buffer instead.",K.ERR_NOT_SUPPORT)}return v}function p(v){if(v>a)throw new K("Object is too deeply nested ("+v+" levels). Max depth: "+a,K.ERR_FORM_DATA_DEPTH_EXCEEDED)}function m(v,R){if(a===1/0)return JSON.stringify(v);const k=[];return JSON.stringify(v,function(x,_){if(!y.isObject(_))return _;for(;k.length&&k[k.length-1]!==this;)k.pop();return k.push(_),p(R+k.length-1),_})}function A(v,R,k){let S=v;if(y.isReactNative(t)&&y.isReactNativeBlob(v))return t.append(vr(k,R,o),f(v)),!1;if(v&&!k&&typeof v=="object"){if(y.endsWith(R,"{}"))R=s?R:R.slice(0,-2),v=m(v,1);else if(y.isArray(v)&&ch(v)||(y.isFileList(v)||y.endsWith(R,"[]"))&&(S=y.toArray(v)))return R=Ja(R),S.forEach(function(_,O){!(y.isUndefined(_)||_===null)&&t.append(i===!0?vr([R],O,o):i===null?R:R+"[]",f(_))}),!1}return Hr(v)?!0:(t.append(vr(k,R,o),f(v)),!1)}const P=Object.assign(fh,{defaultVisitor:A,convertValue:f,isVisitable:Hr});function w(v,R,k=0){if(!y.isUndefined(v)){if(p(k),u.indexOf(v)!==-1)throw new Error("Circular reference detected in "+R.join("."));u.push(v),y.forEach(v,function(x,_){(!(y.isUndefined(x)||x===null)&&r.call(t,x,y.isString(_)?_.trim():_,R,P))===!0&&w(x,R?R.concat(_):[_],k+1)}),u.pop()}}if(!y.isObject(e))throw new TypeError("data must be an object");return w(e),t}function Bi(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(e).replace(/[!'()~]|%20/g,function(s){return t[s]})}function vo(e,t){this._pairs=[],e&&er(e,this,t)}const Xa=vo.prototype;Xa.append=function(t,n){this._pairs.push([t,n])};Xa.toString=function(t){const n=t?s=>t.call(this,s,Bi):Bi;return this._pairs.map(function(r){return n(r[0])+"="+n(r[1])},"").join("&")};function dh(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Qa(e,t,n){if(!t)return e;e=e||"";const s=y.isFunction(n)?{serialize:n}:n,r=y.getSafeProp(s,"encode")||dh,o=y.getSafeProp(s,"serialize");let i;if(o?i=o(t,s):i=y.isURLSearchParams(t)?t.toString():new vo(t,s).toString(r),i){const l=e.indexOf("#");l!==-1&&(e=e.slice(0,l)),e+=(e.indexOf("?")===-1?"?":"&")+i}return e}class ji{constructor(){this.handlers=[]}use(t,n,s){return this.handlers.push({fulfilled:t,rejected:n,synchronous:s?s.synchronous:!1,runWhen:s?s.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){y.forEach(this.handlers,function(s){s!==null&&t(s)})}}const _o={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1,validateStatusUndefinedResolves:!0},ph=typeof URLSearchParams<"u"?URLSearchParams:vo,hh=typeof FormData<"u"?FormData:null,mh=typeof Blob<"u"?Blob:null,gh={isBrowser:!0,classes:{URLSearchParams:ph,FormData:hh,Blob:mh},protocols:["http","https","file","blob","url","data"]},wo=typeof window<"u"&&typeof document<"u",qr=typeof navigator=="object"&&navigator||void 0,yh=wo&&(!qr||["ReactNative","NativeScript","NS"].indexOf(qr.product)<0),bh=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",xh=wo&&window.location.href||"http://localhost",vh=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:wo,hasStandardBrowserEnv:yh,hasStandardBrowserWebWorkerEnv:bh,navigator:qr,origin:xh},Symbol.toStringTag,{value:"Module"})),Ve={...vh,...gh};function _h(e,t){return er(e,new Ve.classes.URLSearchParams,{visitor:function(n,s,r,o){return Ve.isNode&&y.isBuffer(n)?(this.append(s,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)},...t})}const Hi=za;function Ya(e){if(e>Hi)throw new K("FormData field is too deeply nested ("+e+" levels). Max depth: "+Hi,K.ERR_FORM_DATA_DEPTH_EXCEEDED)}function wh(e){const t=[],n=/\w+|\[(\w*)]/g;let s;for(;(s=n.exec(e))!==null;)Ya(t.length),t.push(s[0]==="[]"?"":s[1]||s[0]);return t}function Eh(e){const t={},n=Object.keys(e);let s;const r=n.length;let o;for(s=0;s=n.length;return i=!i&&y.isArray(r)?r.length:i,a?(y.hasOwnProp(r,i)?r[i]=y.isArray(r[i])?r[i].concat(s):[r[i],s]:r[i]=s,!l):((!y.hasOwnProp(r,i)||!y.isObject(r[i]))&&(r[i]=[]),t(n,s,r[i],o)&&y.isArray(r[i])&&(r[i]=Eh(r[i])),!l)}if(y.isFormData(e)&&y.isFunction(e.entries)){const n={};return y.forEachEntry(e,(s,r)=>{t(wh(s),r,n,0)}),n}return null}const pn=(e,t)=>e!=null&&y.hasOwnProp(e,t)?e[t]:void 0;function Sh(e,t,n){if(y.isString(e))try{return(t||JSON.parse)(e),y.trim(e)}catch(s){if(s.name!=="SyntaxError")throw s}return(n||JSON.stringify)(e)}const fs={transitional:_o,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const s=n.getContentType()||"",r=s.indexOf("application/json")>-1,o=y.isObject(t);if(o&&y.isHTMLForm(t)&&(t=new FormData(t)),y.isFormData(t))return r?JSON.stringify(Za(t)):t;if(y.isArrayBuffer(t)||y.isBuffer(t)||y.isStream(t)||y.isFile(t)||y.isBlob(t)||y.isReadableStream(t))return t;if(y.isArrayBufferView(t))return t.buffer;if(y.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let l;if(o){const a=pn(this,"formSerializer");if(s.indexOf("application/x-www-form-urlencoded")>-1)return _h(t,a).toString();if((l=y.isFileList(t))||s.indexOf("multipart/form-data")>-1){const c=pn(this,"env"),u=c&&c.FormData;return er(l?{"files[]":t}:t,u&&new u,a)}}return o||r?(n.setContentType("application/json",!1),Sh(t)):t}],transformResponse:[function(t){const n=pn(this,"transitional")||fs.transitional,s=n&&n.forcedJSONParsing,r=pn(this,"responseType"),o=r==="json";if(y.isResponse(t)||y.isReadableStream(t))return t;if(t&&y.isString(t)&&(s&&!r||o)){const l=!(n&&n.silentJSONParsing)&&o;try{return JSON.parse(t,pn(this,"parseReviver"))}catch(a){if(l)throw a.name==="SyntaxError"?K.from(a,K.ERR_BAD_RESPONSE,this,null,pn(this,"response")):a}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ve.classes.FormData,Blob:Ve.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};y.forEach(["delete","get","head","post","put","patch","query"],e=>{fs.headers[e]={}});function _r(e,t){const n=this||fs,s=t||n,r=ze.from(s.headers);let o=s.data;return y.forEach(e,function(l){o=l.call(n,o,r.normalize(),t?t.status:void 0)}),r.normalize(),o}function eu(e){return!!(e&&e.__CANCEL__)}let ds=class extends K{constructor(t,n,s){super(t??"canceled",K.ERR_CANCELED,n,s),this.name="CanceledError",this.__CANCEL__=!0}};function tu(e,t,n){const s=n.config.validateStatus;!n.status||!s||s(n.status)?e(n):t(new K("Request failed with status code "+n.status,n.status>=400&&n.status<500?K.ERR_BAD_REQUEST:K.ERR_BAD_RESPONSE,n.config,n.request,n))}function Rh(e){const t=/^([-+\w]{1,25}):(?:\/\/)?/.exec(e);return t&&t[1]||""}function Ch(e,t){e=e||10;const n=new Array(e),s=new Array(e);let r=0,o=0,i;return t=t!==void 0?t:1e3,function(a){const c=Date.now(),u=s[o];i||(i=c),n[r]=a,s[r]=c;let f=o,p=0;for(;f!==r;)p+=n[f++],f=f%e;if(r=(r+1)%e,r===o&&(o=(o+1)%e),c-i{n=u,r=null,o&&(clearTimeout(o),o=null),e(...c)};return[(...c)=>{const u=Date.now(),f=u-n;f>=s?i(c,u):(r=c,o||(o=setTimeout(()=>{o=null,i(r)},s-f)))},()=>r&&i(r)]}const Ds=(e,t,n=3)=>{let s=0;const r=Ch(50,250);return Ah(o=>{if(!o||typeof o.loaded!="number")return;const i=o.loaded,l=o.lengthComputable?o.total:void 0,a=l!=null?Math.min(i,l):i,c=Math.max(0,a-s),u=r(c);s=Math.max(s,a);const f={loaded:a,total:l,progress:l?a/l:void 0,bytes:c,rate:u||void 0,estimated:u&&l?(l-a)/u:void 0,event:o,lengthComputable:l!=null,[t?"download":"upload"]:!0};e(f)},n)},qi=(e,t)=>{const n=e!=null;return[s=>t[0]({lengthComputable:n,total:e,loaded:s}),t[1]]},Ki=e=>(...t)=>y.asap(()=>e(...t)),Oh=Ve.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,Ve.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(Ve.origin),Ve.navigator&&/(msie|trident)/i.test(Ve.navigator.userAgent)):()=>!0,Th=Ve.hasStandardBrowserEnv?{write(e,t,n,s,r,o,i){if(typeof document>"u")return;const l=[`${e}=${encodeURIComponent(t)}`];y.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),y.isString(s)&&l.push(`path=${s}`),y.isString(r)&&l.push(`domain=${r}`),o===!0&&l.push("secure"),y.isString(i)&&l.push(`SameSite=${i}`),document.cookie=l.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.split(";");for(let n=0;ne instanceof ze?{...e}:e;function fn(e,t){e=e||{},t=t||{};const n=Object.create(null);Object.defineProperty(n,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function s(u,f,p,m){return y.isPlainObject(u)&&y.isPlainObject(f)?y.merge.call({caseless:m},u,f):y.isPlainObject(f)?y.merge({},f):y.isArray(f)?f.slice():f}function r(u,f,p,m){if(y.isUndefined(f)){if(!y.isUndefined(u))return s(void 0,u,p,m)}else return s(u,f,p,m)}function o(u,f){if(!y.isUndefined(f))return s(void 0,f)}function i(u,f){if(y.isUndefined(f)){if(!y.isUndefined(u))return s(void 0,u)}else return s(void 0,f)}function l(u){const f=y.hasOwnProp(t,"transitional")?t.transitional:void 0;if(!y.isUndefined(f))if(y.isPlainObject(f)){if(y.hasOwnProp(f,u))return f[u]}else return;const p=y.hasOwnProp(e,"transitional")?e.transitional:void 0;if(y.isPlainObject(p)&&y.hasOwnProp(p,u))return p[u]}function a(u,f,p){if(y.hasOwnProp(t,p))return s(u,f);if(y.hasOwnProp(e,p))return s(void 0,u)}const c={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,allowedSocketPaths:i,responseEncoding:i,validateStatus:a,headers:(u,f,p)=>r(Gi(u),Gi(f),p,!0)};return y.forEach(Object.keys({...e,...t}),function(f){if(f==="__proto__"||f==="constructor"||f==="prototype")return;const p=y.hasOwnProp(c,f)?c[f]:r,m=y.hasOwnProp(e,f)?e[f]:void 0,A=y.hasOwnProp(t,f)?t[f]:void 0,P=p(m,A,f);y.isUndefined(P)&&p!==a||(n[f]=P)}),y.hasOwnProp(t,"validateStatus")&&y.isUndefined(t.validateStatus)&&l("validateStatusUndefinedResolves")===!1&&(y.hasOwnProp(e,"validateStatus")?n.validateStatus=s(void 0,e.validateStatus):delete n.validateStatus),n}const Lh=["content-type","content-length"];function Uh(e,t,n){if(n!=="content-only"){e.set(t);return}Object.entries(t||{}).forEach(([s,r])=>{Lh.includes(s.toLowerCase())&&e.set(s,r)})}const Fh=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(t,n)=>String.fromCharCode(parseInt(n,16)));function su(e){const t=fn({},e),n=p=>y.hasOwnProp(t,p)?t[p]:void 0,s=n("data");let r=n("withXSRFToken");const o=n("xsrfHeaderName"),i=n("xsrfCookieName");let l=n("headers");const a=n("auth"),c=n("baseURL"),u=n("allowAbsoluteUrls"),f=n("url");if(t.headers=l=ze.from(l),t.url=Qa(nu(c,f,u,t),n("params"),n("paramsSerializer")),a){const p=y.getSafeProp(a,"username")||"",m=y.getSafeProp(a,"password")||"";try{l.set("Authorization","Basic "+btoa(p+":"+(m?Fh(m):"")))}catch(A){throw K.from(A,K.ERR_BAD_OPTION_VALUE,e)}}if(y.isFormData(s)&&(Ve.hasStandardBrowserEnv||Ve.hasStandardBrowserWebWorkerEnv||y.isReactNative(s)?l.setContentType(void 0):y.isFunction(s.getHeaders)&&Uh(l,s.getHeaders(),n("formDataHeaderPolicy"))),Ve.hasStandardBrowserEnv&&(y.isFunction(r)&&(r=r(t)),r===!0||r==null&&Oh(t.url))){const m=o&&i&&Th.read(i);m&&l.set(o,m)}return t}const Mh=typeof XMLHttpRequest<"u",Vh=Mh&&function(e){return new Promise(function(n,s){const r=su(e);let o=r.data;const i=ze.from(r.headers).normalize();let{responseType:l,onUploadProgress:a,onDownloadProgress:c}=r,u,f,p,m,A;function P(){m&&m(),A&&A(),r.cancelToken&&r.cancelToken.unsubscribe(u),r.signal&&r.signal.removeEventListener("abort",u)}let w=new XMLHttpRequest;w.open(r.method.toUpperCase(),r.url,!0),w.timeout=r.timeout;function v(){if(!w)return;const k=ze.from("getAllResponseHeaders"in w&&w.getAllResponseHeaders()),x={data:!l||l==="text"||l==="json"?w.responseText:w.response,status:w.status,statusText:w.statusText,headers:k,config:e,request:w};tu(function(O){n(O),P()},function(O){s(O),P()},x),w=null}"onloadend"in w?w.onloadend=v:w.onreadystatechange=function(){!w||w.readyState!==4||w.status===0&&!(w.responseURL&&w.responseURL.startsWith("file:"))||setTimeout(v)},w.onabort=function(){w&&(s(new K("Request aborted",K.ECONNABORTED,e,w)),P(),w=null)},w.onerror=function(S){const x=S&&S.message?S.message:"Network Error",_=new K(x,K.ERR_NETWORK,e,w);_.event=S||null,s(_),P(),w=null},w.ontimeout=function(){let S=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const x=r.transitional||_o;r.timeoutErrorMessage&&(S=r.timeoutErrorMessage),s(new K(S,x.clarifyTimeoutError?K.ETIMEDOUT:K.ECONNABORTED,e,w)),P(),w=null},o===void 0&&i.setContentType(null),"setRequestHeader"in w&&y.forEach(Wa(i),function(S,x){w.setRequestHeader(x,S)}),y.isUndefined(r.withCredentials)||(w.withCredentials=!!r.withCredentials),l&&l!=="json"&&(w.responseType=r.responseType),c&&([p,A]=Ds(c,!0),w.addEventListener("progress",p)),a&&w.upload&&([f,m]=Ds(a),w.upload.addEventListener("progress",f),w.upload.addEventListener("loadend",m)),(r.cancelToken||r.signal)&&(u=k=>{w&&(s(!k||k.type?new ds(null,e,w):k),w.abort(),P(),w=null)},r.cancelToken&&r.cancelToken.subscribe(u),r.signal&&(r.signal.aborted?u():r.signal.addEventListener("abort",u)));const R=Rh(r.url);if(R&&!Ve.protocols.includes(R)){s(new K("Unsupported protocol "+R+":",K.ERR_BAD_REQUEST,e)),P();return}w.send(o||null)})},Bh=(e,t)=>{if(e=e?e.filter(Boolean):[],!t&&!e.length)return;const n=new AbortController;let s=!1;const r=function(a){if(!s){s=!0,i();const c=a instanceof Error?a:this.reason;n.abort(c instanceof K?c:new ds(c instanceof Error?c.message:c))}};let o=t&&setTimeout(()=>{o=null,r(new K(`timeout of ${t}ms exceeded`,K.ETIMEDOUT))},t);const i=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(a=>{a.unsubscribe?a.unsubscribe(r):a.removeEventListener("abort",r)}),e=null)};e.forEach(a=>a.addEventListener("abort",r,{once:!0}));const{signal:l}=n;return l.unsubscribe=()=>y.asap(i),l},jh=function*(e,t){let n=e.byteLength;if(n{const r=Hh(e,t);let o=0,i,l=a=>{i||(i=!0,s&&s(a))};return new ReadableStream({async pull(a){try{const{done:c,value:u}=await r.next();if(c){l(),a.close();return}let f=u.byteLength;if(n){let p=o+=f;n(p)}a.enqueue(new Uint8Array(u))}catch(c){throw l(c),c}},cancel(a){return l(a),r.return()}},{highWaterMark:2})},$s=e=>e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102,Kh=(e,t,n)=>t+2m>=2&&s.charCodeAt(m-2)===37&&s.charCodeAt(m-1)===51&&(s.charCodeAt(m)===68||s.charCodeAt(m)===100);c>=0&&(s.charCodeAt(c)===61?(a++,c--):u(c)&&(a++,c-=3)),a===1&&c>=0&&(s.charCodeAt(c)===61||u(c))&&a++;const p=Math.floor(i/4)*3-(a||0);return p>0?p:0}let o=0;for(let i=0,l=s.length;i=55296&&a<=56319&&i+1=56320&&c<=57343?(o+=4,i++):o+=3}else o+=3}return o}const Eo="1.18.1",Ji=64*1024,{isFunction:ys}=y,Gh=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(t,n)=>String.fromCharCode(parseInt(n,16))),Xi=e=>{if(!y.isString(e))return e;try{return decodeURIComponent(e)}catch{return e}},Qi=(e,...t)=>{try{return!!e(...t)}catch{return!1}},zh=e=>{const t=e.indexOf("://");let n=e;return t!==-1&&(n=n.slice(t+3)),n.includes("@")||n.includes(":")},Jh=e=>{const t=y.global!==void 0&&y.global!==null?y.global:globalThis,{ReadableStream:n,TextEncoder:s}=t;e=y.merge.call({skipUndefined:!0},{Request:t.Request,Response:t.Response},e);const{fetch:r,Request:o,Response:i}=e,l=r?ys(r):typeof fetch=="function",a=ys(o),c=ys(i);if(!l)return!1;const u=l&&ys(n),f=l&&(typeof s=="function"?(v=>R=>v.encode(R))(new s):async v=>new Uint8Array(await new o(v).arrayBuffer())),p=a&&u&&Qi(()=>{let v=!1;const R=new o(Ve.origin,{body:new n,method:"POST",get duplex(){return v=!0,"half"}}),k=R.headers.has("Content-Type");return R.body!=null&&R.body.cancel(),v&&!k}),m=c&&u&&Qi(()=>y.isReadableStream(new i("").body)),A={stream:m&&(v=>v.body)};l&&["text","arrayBuffer","blob","formData","stream"].forEach(v=>{!A[v]&&(A[v]=(R,k)=>{let S=R&&R[v];if(S)return S.call(R);throw new K(`Response type '${v}' is not supported`,K.ERR_NOT_SUPPORT,k)})});const P=async v=>{if(v==null)return 0;if(y.isBlob(v))return v.size;if(y.isSpecCompliantForm(v))return(await new o(Ve.origin,{method:"POST",body:v}).arrayBuffer()).byteLength;if(y.isArrayBufferView(v)||y.isArrayBuffer(v))return v.byteLength;if(y.isURLSearchParams(v)&&(v=v+""),y.isString(v))return(await f(v)).byteLength},w=async(v,R)=>{const k=y.toFiniteNumber(v.getContentLength());return k??P(R)};return async v=>{let{url:R,method:k,data:S,signal:x,cancelToken:_,timeout:O,onDownloadProgress:te,onUploadProgress:B,responseType:ee,headers:re,withCredentials:H="same-origin",fetchOptions:ie,maxContentLength:ce,maxBodyLength:Ie}=su(v);const we=y.isNumber(ce)&&ce>-1,fe=y.isNumber(Ie)&&Ie>-1,ue=ne=>y.hasOwnProp(v,ne)?v[ne]:void 0;let et=r||fetch;ee=ee?(ee+"").toLowerCase():"text";let De=Bh([x,_&&_.toAbortSignal()],O),D=null;const I=De&&De.unsubscribe&&(()=>{De.unsubscribe()});let j,pe=null;const ye=()=>new K("Request body larger than maxBodyLength limit",K.ERR_BAD_REQUEST,v,D);try{let ne;const C=ue("auth");if(C){const E=y.getSafeProp(C,"username")||"",T=y.getSafeProp(C,"password")||"";ne={username:E,password:T}}if(zh(R)){const E=new URL(R,Ve.origin);if(!ne&&(E.username||E.password)){const T=Xi(E.username),V=Xi(E.password);ne={username:T,password:V}}(E.username||E.password)&&(E.username="",E.password="",R=E.href)}if(ne&&(re.delete("authorization"),re.set("Authorization","Basic "+btoa(Gh((ne.username||"")+":"+(ne.password||""))))),we&&typeof R=="string"&&R.startsWith("data:")&&Wh(R)>ce)throw new K("maxContentLength size of "+ce+" exceeded",K.ERR_BAD_RESPONSE,v,D);if(fe&&k!=="get"&&k!=="head"){const E=await P(S);if(typeof E=="number"&&isFinite(E)&&(j=E,E>Ie))throw ye()}const W=fe&&(y.isReadableStream(S)||y.isStream(S)),q=(E,T,V)=>zi(E,Ji,F=>{if(fe&&F>Ie)throw pe=ye();T&&T(F)},V);if(p&&k!=="get"&&k!=="head"&&(B||W)){if(j=j??await w(re,S),j!==0||W){let E=new o(R,{method:"POST",body:S,duplex:"half"}),T;if(y.isFormData(S)&&(T=E.headers.get("content-type"))&&re.setContentType(T),E.body){const[V,F]=B&&qi(j,Ds(Ki(B)))||[];S=q(E.body,V,F)}}}else if(W&&!a&&u&&k!=="get"&&k!=="head")S=q(S);else if(W&&a&&!p&&k!=="get"&&k!=="head")throw new K("Stream request bodies are not supported by the current fetch implementation",K.ERR_NOT_SUPPORT,v,D);y.isString(H)||(H=H?"include":"omit");const X=a&&"credentials"in o.prototype;if(y.isFormData(S)){const E=re.getContentType();E&&/^multipart\/form-data/i.test(E)&&!/boundary=/i.test(E)&&re.delete("content-type")}re.set("User-Agent","axios/"+Eo,!1);const le={...ie,signal:De,method:k.toUpperCase(),headers:Wa(re.normalize()),body:S,duplex:"half",credentials:X?H:void 0};D=a&&new o(R,le);let h=await(a?et(D,ie):et(R,le));const g=ze.from(h.headers);if(we){const E=y.toFiniteNumber(g.getContentLength());if(E!=null&&E>ce)throw new K("maxContentLength size of "+ce+" exceeded",K.ERR_BAD_RESPONSE,v,D)}const b=m&&(ee==="stream"||ee==="response");if(m&&h.body&&(te||we||b&&I)){const E={};["status","statusText","headers"].forEach(J=>{E[J]=h[J]});const T=y.toFiniteNumber(g.getContentLength()),[V,F]=te&&qi(T,Ds(Ki(te),!0))||[];let M=0;const $=J=>{if(we&&(M=J,M>ce))throw new K("maxContentLength size of "+ce+" exceeded",K.ERR_BAD_RESPONSE,v,D);V&&V(J)};h=new i(zi(h.body,Ji,$,()=>{F&&F(),I&&I()}),E)}ee=ee||"text";let N=await A[y.findKey(A,ee)||"text"](h,v);if(we&&!m&&!b){let E;if(N!=null&&(typeof N.byteLength=="number"?E=N.byteLength:typeof N.size=="number"?E=N.size:typeof N=="string"&&(E=typeof s=="function"?new s().encode(N).byteLength:N.length)),typeof E=="number"&&E>ce)throw new K("maxContentLength size of "+ce+" exceeded",K.ERR_BAD_RESPONSE,v,D)}return!b&&I&&I(),await new Promise((E,T)=>{tu(E,T,{data:N,headers:ze.from(h.headers),status:h.status,statusText:h.statusText,config:v,request:D})})}catch(ne){if(I&&I(),De&&De.aborted&&De.reason instanceof K){const C=De.reason;throw C.config=v,D&&(C.request=D),ne!==C&&Object.defineProperty(C,"cause",{__proto__:null,value:ne,writable:!0,enumerable:!1,configurable:!0}),C}if(pe)throw D&&!pe.request&&(pe.request=D),pe;if(ne instanceof K)throw D&&!ne.request&&(ne.request=D),ne;if(ne&&ne.name==="TypeError"&&/Load failed|fetch/i.test(ne.message)){const C=new K("Network Error",K.ERR_NETWORK,v,D,ne&&ne.response);throw Object.defineProperty(C,"cause",{__proto__:null,value:ne.cause||ne,writable:!0,enumerable:!1,configurable:!0}),C}throw K.from(ne,ne&&ne.code,v,D,ne&&ne.response)}}},Xh=new Map,ru=e=>{let t=e&&e.env||{};const{fetch:n,Request:s,Response:r}=t,o=[s,r,n];let i=o.length,l=i,a,c,u=Xh;for(;l--;)a=o[l],c=u.get(a),c===void 0&&u.set(a,c=l?new Map:Jh(t)),u=c;return c};ru();const So={http:uh,xhr:Vh,fetch:{get:ru}};y.forEach(So,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{__proto__:null,value:t})}catch{}Object.defineProperty(e,"adapterName",{__proto__:null,value:t})}});const Yi=e=>`- ${e}`,Qh=e=>y.isFunction(e)||e===null||e===!1;function Yh(e,t){e=y.isArray(e)?e:[e];const{length:n}=e;let s,r;const o={};for(let i=0;i`adapter ${a} `+(c===!1?"is not supported by the environment":"is not available in the build"));let l=n?i.length>1?`since : +`+i.map(Yi).join(` +`):" "+Yi(i[0]):"as no adapter specified";throw new K("There is no suitable adapter to dispatch the request "+l,K.ERR_NOT_SUPPORT)}return r}const ou={getAdapter:Yh,adapters:So};function wr(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ds(null,e)}function Zi(e){return wr(e),e.headers=ze.from(e.headers),e.data=_r.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),ou.getAdapter(e.adapter||fs.adapter,e)(e).then(function(s){wr(e),e.response=s;try{s.data=_r.call(e,e.transformResponse,s)}finally{delete e.response}return s.headers=ze.from(s.headers),s},function(s){if(!eu(s)&&(wr(e),s&&s.response)){e.response=s.response;try{s.response.data=_r.call(e,e.transformResponse,s.response)}finally{delete e.response}s.response.headers=ze.from(s.response.headers)}return Promise.reject(s)})}const tr={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{tr[e]=function(s){return typeof s===e||"a"+(t<1?"n ":" ")+e}});const el={};tr.transitional=function(t,n,s){function r(o,i){return"[Axios v"+Eo+"] Transitional option '"+o+"'"+i+(s?". "+s:"")}return(o,i,l)=>{if(t===!1)throw new K(r(i," has been removed"+(n?" in "+n:"")),K.ERR_DEPRECATED);return n&&!el[i]&&(el[i]=!0,console.warn(r(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,l):!0}};tr.spelling=function(t){return(n,s)=>(console.warn(`${s} is likely a misspelling of ${t}`),!0)};function Zh(e,t,n){if(typeof e!="object"||e===null)throw new K("options must be an object",K.ERR_BAD_OPTION_VALUE);const s=Object.keys(e);let r=s.length;for(;r-- >0;){const o=s[r],i=Object.prototype.hasOwnProperty.call(t,o)?t[o]:void 0;if(i){const l=e[o],a=l===void 0||i(l,o,e);if(a!==!0)throw new K("option "+o+" must be "+a,K.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new K("Unknown option "+o,K.ERR_BAD_OPTION)}}const Ss={assertOptions:Zh,validators:tr},He=Ss.validators;let an=class{constructor(t){this.defaults=t||{},this.interceptors={request:new ji,response:new ji}}async request(t,n){try{return await this._request(t,n)}catch(s){if(s instanceof Error){let r={};Error.captureStackTrace?Error.captureStackTrace(r):r=new Error;const o=(()=>{if(!r.stack)return"";const i=r.stack.indexOf(` +`);return i===-1?"":r.stack.slice(i+1)})();try{if(!s.stack)s.stack=o;else if(o){const i=o.indexOf(` +`),l=i===-1?-1:o.indexOf(` +`,i+1),a=l===-1?"":o.slice(l+1);String(s.stack).endsWith(a)||(s.stack+=` +`+o)}}catch{}}throw s}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=fn(this.defaults,n);const{transitional:s,paramsSerializer:r,headers:o}=n;s!==void 0&&Ss.assertOptions(s,{silentJSONParsing:He.transitional(He.boolean),forcedJSONParsing:He.transitional(He.boolean),clarifyTimeoutError:He.transitional(He.boolean),legacyInterceptorReqResOrdering:He.transitional(He.boolean),advertiseZstdAcceptEncoding:He.transitional(He.boolean),validateStatusUndefinedResolves:He.transitional(He.boolean)},!1),r!=null&&(y.isFunction(r)?n.paramsSerializer={serialize:r}:Ss.assertOptions(r,{encode:He.function,serialize:He.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Ss.assertOptions(n,{baseUrl:He.spelling("baseURL"),withXsrfToken:He.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&y.merge(o.common,o[n.method]);o&&y.forEach(["delete","get","head","post","put","patch","query","common"],A=>{delete o[A]}),n.headers=ze.concat(i,o);const l=[];let a=!0;this.interceptors.request.forEach(function(P){if(typeof P.runWhen=="function"&&P.runWhen(n)===!1)return;a=a&&P.synchronous;const w=n.transitional||_o;w&&w.legacyInterceptorReqResOrdering?l.unshift(P.fulfilled,P.rejected):l.push(P.fulfilled,P.rejected)});const c=[];this.interceptors.response.forEach(function(P){c.push(P.fulfilled,P.rejected)});let u,f=0,p;if(!a){const A=[Zi.bind(this),void 0];for(A.unshift(...l),A.push(...c),p=A.length,u=Promise.resolve(n);f{if(!s._listeners)return;let o=s._listeners.length;for(;o-- >0;)s._listeners[o](r);s._listeners=null}),this.promise.then=r=>{let o;const i=new Promise(l=>{s.subscribe(l),o=l}).then(r);return i.cancel=function(){s.unsubscribe(o)},i},t(function(o,i,l){s.reason||(s.reason=new ds(o,i,l),n(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=s=>{t.abort(s)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new iu(function(r){t=r}),cancel:t}}};function tm(e){return function(n){return e.apply(null,n)}}function nm(e){return y.isObject(e)&&e.isAxiosError===!0}const Kr={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Kr).forEach(([e,t])=>{Kr[t]=e});function lu(e){const t=new an(e),n=Ua(an.prototype.request,t);return y.extend(n,an.prototype,t,{allOwnKeys:!0}),y.extend(n,t,null,{allOwnKeys:!0}),n.create=function(r){return lu(fn(e,r))},n}const Ne=lu(fs);Ne.Axios=an;Ne.CanceledError=ds;Ne.CancelToken=em;Ne.isCancel=eu;Ne.VERSION=Eo;Ne.toFormData=er;Ne.AxiosError=K;Ne.Cancel=Ne.CanceledError;Ne.all=function(t){return Promise.all(t)};Ne.spread=tm;Ne.isAxiosError=nm;Ne.mergeConfig=fn;Ne.AxiosHeaders=ze;Ne.formToJSON=e=>Za(y.isHTMLForm(e)?new FormData(e):e);Ne.getAdapter=ou.getAdapter;Ne.HttpStatusCode=Kr;Ne.default=Ne;const{Axios:zb,AxiosError:Jb,CanceledError:Xb,isCancel:Qb,CancelToken:Yb,VERSION:Zb,all:e0,Cancel:t0,isAxiosError:n0,spread:s0,toFormData:r0,AxiosHeaders:o0,HttpStatusCode:i0,formToJSON:l0,getAdapter:a0,mergeConfig:u0,create:c0}=Ne,ge=Ne.create({timeout:3e4});ge.interceptors.request.use(e=>{e.baseURL=`${rp()}/api`;const t=sp();return t&&(e.headers.Authorization=`Bearer ${t}`),e});ge.interceptors.response.use(e=>e.data,e=>{var n,s,r,o;((n=e.response)==null?void 0:n.status)===401&&tp();const t=((o=(r=(s=e.response)==null?void 0:s.data)==null?void 0:r.error)==null?void 0:o.message)||e.message||"Request failed";return Promise.reject(new Error(t))});const au=()=>ge.get("/env"),sm=()=>ge.get("/settings"),rm=e=>ge.patch("/settings",e),om=()=>ge.get("/storage"),im=e=>ge.post("/storage",e),Ro=()=>ge.get("/sources"),lm=e=>ge.post("/sources",e),am=(e,t)=>ge.patch(`/sources/${e}`,t),um=e=>ge.delete(`/sources/${e}`),uu=()=>ge.get("/collections"),cm=e=>ge.post("/collections",e),fm=(e,t)=>ge.patch(`/collections/${e}`,t),dm=e=>ge.delete(`/collections/${e}`),Co=()=>ge.get("/templates"),pm=e=>ge.post("/templates",e),hm=(e,t)=>ge.patch(`/templates/${e}`,t),mm=e=>ge.delete(`/templates/${e}`),gm=()=>ge.get("/recycle-bin"),ym=e=>ge.delete(`/recycle-bin/${e}`),bm=e=>ge.post(`/recycle-bin/${e}/restore`),tl=e=>ge.post("/preview/source",e),xm=e=>ge.post("/preview/collection",e),vm=(e,t)=>ge.get(`/link/source/${e}`,{params:{}}),_m=(e,t)=>ge.get(`/link/collection/${e}`,{params:{}}),wm=e=>ge.get(`/source/flow/${e}`),Em=e=>ge.post("/proxy/parse",e),Sm=e=>ge.post("/rule/parse",e),Rm=e=>ge.post("/utils/proxy-uri",e),Cm=e=>ge.post("/utils/node-info",{server:e}),Am={class:"min-h-screen flex bg-gray-50"},Om={class:"w-60 bg-gray-900 text-gray-300 flex flex-col fixed inset-y-0 left-0 z-30"},Tm={class:"px-5 py-4 border-b border-gray-700"},Pm={key:0,class:"text-xs text-gray-500 mt-0.5"},Nm={class:"flex-1 py-3 overflow-y-auto"},Im={class:"text-base"},km={class:"flex-1 ml-60 min-h-screen"},Dm={class:"px-6 py-5"},$m={__name:"AdminLayout",setup(e){const t=Y(null),n=[{to:"/",icon:"📊",label:"概览"},{to:"/sources",icon:"📡",label:"订阅源"},{to:"/collections",icon:"📁",label:"合集"},{to:"/templates",icon:"📋",label:"模板"},{to:"/recycle-bin",icon:"♻️",label:"回收站"},{to:"/tools",icon:"🔧",label:"工具"},{to:"/settings",icon:"⚙️",label:"设置"}];return Vt(async()=>{try{const s=await au();t.value=s.data}catch{}}),(s,r)=>{const o=Nr("router-link"),i=Nr("router-view");return L(),U("div",Am,[d("aside",Om,[d("div",Tm,[r[0]||(r[0]=d("h1",{class:"text-lg font-bold text-white flex items-center gap-2"},[d("span",{class:"inline-block w-2 h-2 bg-primary-500 rounded-full"}),ts(" Sub-Store ")],-1)),t.value?(L(),U("p",Pm,G(t.value.backend)+" · "+G(t.value.version),1)):he("",!0)]),d("nav",Nm,[(L(),U(ve,null,Me(n,l=>Ae(o,{key:l.to,to:l.to,class:Be(["flex items-center gap-3 px-5 py-2.5 text-sm transition-colors",s.$route.path===l.to||l.to!=="/"&&s.$route.path.startsWith(l.to)?"bg-gray-800 text-white border-l-2 border-primary-500":"hover:bg-gray-800/50 border-l-2 border-transparent"])},{default:ft(()=>[d("span",Im,G(l.icon),1),d("span",null,G(l.label),1)]),_:2},1032,["to","class"])),64))]),r[1]||(r[1]=d("div",{class:"px-5 py-3 border-t border-gray-700 text-xs text-gray-500"},[d("p",null,"SQLite · Go")],-1))]),d("main",km,[d("div",Dm,[Ae(i)])])])}}},Lm={class:"min-h-screen bg-gray-50 flex items-center justify-center px-4"},Um={key:0,class:"mt-4 text-sm text-red-600"},Fm=["disabled"],Mm={__name:"Login",setup(e){const t=Yd(),n=Qd(),s=Y(yo()||window.location.origin),r=Y(""),o=Y(!1),i=Y("");async function l(){i.value="",o.value=!0;try{if(!await np(r.value,s.value)){i.value="远程 URI 或 TOKEN 无效";return}Zd(s.value,r.value),n.replace(typeof t.query.redirect=="string"?t.query.redirect:"/")}catch{i.value="远程 URI 格式无效"}finally{o.value=!1}}return(a,c)=>(L(),U("div",Lm,[d("form",{class:"w-full max-w-sm bg-white border border-gray-200 rounded-lg p-6 shadow-sm",onSubmit:jn(l,["prevent"])},[c[2]||(c[2]=d("label",{class:"block text-sm font-medium text-gray-700",for:"remote-uri"},"远程 URI",-1)),ae(d("input",{id:"remote-uri","onUpdate:modelValue":c[0]||(c[0]=u=>s.value=u),type:"url",required:"",autocomplete:"url",placeholder:"https://sub-store.example.com",class:"mt-2 w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-primary-500"},null,512),[[Te,s.value,void 0,{trim:!0}]]),c[3]||(c[3]=d("label",{class:"block mt-4 text-sm font-medium text-gray-700",for:"token"},"TOKEN",-1)),ae(d("input",{id:"token","onUpdate:modelValue":c[1]||(c[1]=u=>r.value=u),type:"password",required:"",autocomplete:"current-password",class:"mt-2 w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-primary-500"},null,512),[[Te,r.value,void 0,{trim:!0}]]),i.value?(L(),U("p",Um,G(i.value),1)):he("",!0),d("button",{type:"submit",disabled:o.value,class:"mt-6 w-full px-4 py-2 rounded-lg bg-primary-600 text-white text-sm font-medium hover:bg-primary-700 disabled:opacity-60 disabled:cursor-not-allowed"},G(o.value?"登录中...":"登录"),9,Fm)],32)]))}},Vm={class:"min-h-screen flex items-center justify-center bg-gray-50"},Bm={__name:"NotFound",setup(e){return(t,n)=>(L(),U("div",Vm,[...n[0]||(n[0]=[d("div",{class:"text-center"},[d("p",{class:"text-7xl font-bold text-gray-300"},"404"),d("p",{class:"mt-4 text-gray-400"},"Page Not Found")],-1)])]))}},jm={class:"grid grid-cols-2 lg:grid-cols-4 gap-4 mb-6"},Hm={class:"text-sm text-gray-500"},qm={class:"grid grid-cols-1 lg:grid-cols-2 gap-4"},Km={class:"bg-white rounded-lg p-4 shadow-sm border"},Wm={key:0,class:"space-y-1.5 text-sm"},Gm={class:"flex justify-between"},zm={class:"flex justify-between"},Jm={class:"flex justify-between"},Xm={class:"flex justify-between"},Qm={class:"flex justify-between"},Ym={key:1,class:"text-gray-400 text-sm"},Zm={class:"bg-white rounded-lg p-4 shadow-sm border"},eg={key:0,class:"flex flex-wrap gap-2"},tg={__name:"Dashboard",setup(e){const t=Y(null),n=Y([]),s=Y([]),r=Y([]),o=tt(()=>[{label:"订阅源",value:n.value.length,color:"text-blue-600"},{label:"合集",value:s.value.length,color:"text-purple-600"},{label:"模板",value:r.value.length,color:"text-green-600"}]),i={buildTimeScripts:"脚本引擎",proxyConversion:"代理转换",ruleConversion:"规则转换",recycleBin:"回收站",nodeInfo:"节点信息",surgeMac:"Surge Mac"};return Vt(async()=>{try{const[l,a,c,u]=await Promise.all([au(),Ro(),uu(),Co()]);t.value=l.data,n.value=a.data||[],s.value=c.data||[],r.value=u.data||[]}catch(l){console.error("Failed to load dashboard",l)}}),(l,a)=>{var c;return L(),U("div",null,[a[7]||(a[7]=d("h2",{class:"text-xl font-bold mb-5"},"概览",-1)),d("div",jm,[(L(!0),U(ve,null,Me(o.value,u=>(L(),U("div",{key:u.label,class:"bg-white rounded-lg p-4 shadow-sm border"},[d("p",Hm,G(u.label),1),d("p",{class:Be(["text-2xl font-bold mt-1",u.color])},G(u.value),3)]))),128))]),d("div",qm,[d("div",Km,[a[5]||(a[5]=d("h3",{class:"font-semibold mb-3"},"环境信息",-1)),t.value?(L(),U("div",Wm,[d("div",Gm,[a[0]||(a[0]=d("span",{class:"text-gray-500"},"应用",-1)),d("span",null,G(t.value.app),1)]),d("div",zm,[a[1]||(a[1]=d("span",{class:"text-gray-500"},"后端",-1)),d("span",null,G(t.value.backend),1)]),d("div",Jm,[a[2]||(a[2]=d("span",{class:"text-gray-500"},"版本",-1)),d("span",null,G(t.value.version),1)]),d("div",Xm,[a[3]||(a[3]=d("span",{class:"text-gray-500"},"运行时",-1)),d("span",null,G(t.value.runtime),1)]),d("div",Qm,[a[4]||(a[4]=d("span",{class:"text-gray-500"},"存储",-1)),d("span",null,G(t.value.storage),1)])])):(L(),U("div",Ym,"加载中..."))]),d("div",Zm,[a[6]||(a[6]=d("h3",{class:"font-semibold mb-3"},"功能特性",-1)),(c=t.value)!=null&&c.feature?(L(),U("div",eg,[(L(!0),U(ve,null,Me(t.value.feature,(u,f)=>(L(),U("span",{key:f,class:Be(["px-2 py-1 rounded text-xs",u?"bg-green-100 text-green-700":"bg-gray-100 text-gray-500"])},G(i[f]||f)+": "+G(u?"✓":"✗"),3))),128))])):he("",!0)])])])}}},ng={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4"},sg={class:"relative bg-white rounded-lg shadow-xl w-full max-w-2xl max-h-[85vh] flex flex-col"},rg={class:"flex items-center justify-between px-6 py-3 border-b"},og={class:"text-base font-semibold text-gray-900"},ig={class:"flex-1 overflow-y-auto px-6 py-4"},lg={key:0,class:"px-6 py-3 border-t flex justify-end gap-2"},Ls={__name:"Modal",props:{modelValue:Boolean,title:{type:String,default:""}},emits:["update:modelValue"],setup(e){return(t,n)=>(L(),un(Fl,{to:"body"},[e.modelValue?(L(),U("div",ng,[d("div",{class:"absolute inset-0 bg-black/40",onClick:n[0]||(n[0]=s=>t.$emit("update:modelValue",!1))}),d("div",sg,[d("div",rg,[d("h3",og,G(e.title),1),d("button",{class:"text-gray-400 hover:text-gray-600 text-xl",onClick:n[1]||(n[1]=s=>t.$emit("update:modelValue",!1))},"×")]),d("div",ig,[jo(t.$slots,"default")]),t.$slots.footer?(L(),U("div",lg,[jo(t.$slots,"footer")])):he("",!0)])])):he("",!0)]))}},ag={key:0,class:"fixed inset-0 z-[60] flex items-center justify-center p-4"},ug={class:"relative bg-white rounded-lg shadow-xl w-full max-w-sm p-5"},cg={class:"text-base font-semibold text-gray-900 mb-2"},fg={class:"text-sm text-gray-600 mb-4"},dg={class:"flex justify-end gap-2"},nr={__name:"ConfirmDialog",props:{modelValue:Boolean,title:{type:String,default:"确认"},message:{type:String,default:"确定执行此操作?"},confirmText:{type:String,default:"确定"},danger:{type:Boolean,default:!1}},emits:["update:modelValue","confirm"],setup(e){return(t,n)=>(L(),un(Fl,{to:"body"},[e.modelValue?(L(),U("div",ag,[d("div",{class:"absolute inset-0 bg-black/40",onClick:n[0]||(n[0]=s=>t.$emit("update:modelValue",!1))}),d("div",ug,[d("h3",cg,G(e.title),1),d("p",fg,G(e.message),1),d("div",dg,[d("button",{class:"px-4 py-2 text-sm rounded-lg hover:bg-gray-100",onClick:n[1]||(n[1]=s=>t.$emit("update:modelValue",!1))},"取消"),d("button",{class:Be(["px-4 py-2 text-sm rounded-lg text-white",e.danger?"bg-red-600 hover:bg-red-700":"bg-primary-600 hover:bg-primary-700"]),onClick:n[2]||(n[2]=s=>t.$emit("confirm"))},G(e.confirmText),3)])])])):he("",!0)]))}};async function Us(e){var n;if((n=navigator.clipboard)!=null&&n.writeText){await navigator.clipboard.writeText(e);return}const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{if(!document.execCommand("copy"))throw new Error("复制失败")}finally{document.body.removeChild(t)}}const pg={key:0,class:"text-gray-400 text-sm"},hg={key:1,class:"text-gray-400 text-sm py-8 text-center"},mg={key:2,class:"space-y-2"},gg=["onClick"],yg={class:"flex-1 min-w-0"},bg={class:"flex items-center gap-2"},xg={class:"font-medium text-gray-900"},vg={key:0,class:"px-1.5 py-0.5 rounded text-xs bg-red-100 text-red-700"},_g={key:0,class:"text-xs text-gray-500 mt-1"},wg={class:"flex gap-2 mt-1 text-xs text-gray-400"},Eg={key:0},Sg={key:1,class:"text-xs text-gray-500 mt-1 truncate"},Rg={class:"flex gap-1 ml-3"},Cg=["onClick"],Ag=["onClick"],Og=["onClick"],Tg={key:0,class:"text-gray-400 text-sm py-4 text-center"},Pg={key:1},Ng={class:"overflow-x-auto rounded-lg bg-white"},Ig={class:"w-full text-left text-xs"},kg={class:"divide-y divide-gray-100"},Dg={class:"px-3 py-2 text-gray-500"},$g={class:"px-3 py-2 text-blue-600"},Lg={class:"px-3 py-2 font-mono text-gray-500"},Ug={class:"px-3 py-2 font-mono text-gray-500"},Fg={class:"px-3 py-2 text-gray-500"},Mg={class:"px-3 py-2 text-gray-500"},Vg={class:"px-3 py-2 font-mono text-gray-500"},Bg={class:"px-3 py-2 font-mono text-gray-500"},jg={class:"px-3 py-2"},Hg=["onClick"],qg={key:0,class:"text-xs text-gray-400 mt-2"},Kg={class:"space-y-4"},Wg=["disabled"],Gg={class:"flex gap-2"},zg={key:0},Jg={key:1},Xg={class:"flex items-center gap-2"},Qg={class:"mb-2 rounded-lg bg-gray-50 px-3 py-2 text-xs text-gray-500"},Yg={class:"mt-2"},Zg={class:"mt-2 w-full border-collapse overflow-hidden rounded-lg bg-white text-left"},ey={class:"border border-gray-200 px-2 py-1 text-gray-700"},ty={class:"border border-gray-200 px-2 py-1"},ny=["onUpdate:modelValue"],sy=["value"],ry=["onUpdate:modelValue"],oy=["onUpdate:modelValue"],iy=["onClick"],ly={__name:"Sources",setup(e){const t=Y([]),n=Y(!0),s=Y(!1),r=Y(!1),o=Y(""),i=Y(!1),l=Y(null),a=Ct({}),c=Ct({}),u=Y(null),f=Y({show:!1,title:"",message:"",danger:!1,action:null}),p=["include","exclude","rename","dedupe","sort","delete-field","flag","quick","resolve","custom"],m={include:"包含(include)",exclude:"排除(exclude)",rename:"重命名(rename)",dedupe:"去重(dedupe)",sort:"排序(sort)","delete-field":"删除字段(delete-field)",flag:"旗帜(flag)",quick:"快捷规则(quick)",resolve:"解析域名(resolve)",custom:"自定义(custom)"},A=[{type:"include",label:m.include,help:"只保留 field 匹配 pattern 的节点"},{type:"exclude",label:m.exclude,help:"删除 field 匹配 pattern 的节点"},{type:"rename",label:m.rename,help:"按 pattern 处理名称,简易表单适合清理固定前缀/后缀"},{type:"dedupe",label:m.dedupe,help:"按 field 去重,留空按 name 去重"},{type:"sort",label:m.sort,help:"按名称排序"},{type:"delete-field",label:m["delete-field"],help:"从 field 文本中删除匹配 pattern 的片段"},{type:"flag",label:m.flag,help:"给节点名补充或整理地区旗帜"},{type:"quick",label:m.quick,help:"应用快捷清理规则"},{type:"resolve",label:m.resolve,help:"把 server 域名解析为 IP"},{type:"custom",label:m.custom,help:"高级声明式规则链,适合 API/导入配置使用"}],P=()=>({name:"",type:"remote",url:"",content:"",enabled:!0,filters:[]}),w=Ct(P());function v(D,I="success"){u.value={msg:D,type:I},setTimeout(()=>u.value=null,2500)}function R(D){return D?new Date(D).toLocaleString("zh-CN"):""}function k(D){return D?new Date(D*1e3).toLocaleDateString("zh-CN"):""}function S(D){if(!Number.isFinite(D))return"";const I=["B","KB","MB","GB","TB"];let j=D,pe=0;for(;j>=1024&&pe=10||pe===0?j.toFixed(0):j.toFixed(1)}${I[pe]}`}function x(D,...I){for(const j of I){const pe=D==null?void 0:D[j];if(pe!=null&&pe!=="")return pe}return"-"}function _(D){const I=x(D,"tls","security");return I===!0?"TLS":I===!1?"-":I}function O(D){var ne,C,W;const I=c[D.id];if(!I)return"";const j=[];I.planName&&j.push(`套餐: ${I.planName}`);const pe=Number(((ne=I.usage)==null?void 0:ne.upload)||0)+Number(((C=I.usage)==null?void 0:C.download)||0),ye=Number(I.total||0);return ye>0&&j.push(`流量: ${S(pe)} / ${S(ye)}`),ye>pe&&j.push(`剩余: ${S(ye-pe)}`),I.expires&&j.push(`到期: ${k(I.expires)}`),(W=D.meta)!=null&&W.price&&j.push(`计费: ${D.meta.price}${D.meta.billingCycle?`/${D.meta.billingCycle}`:""}`),j.join(" · ")}function te(D){return{original:(D==null?void 0:D.originalCount)??(Array.isArray(D==null?void 0:D.original)?D.original.length:(D==null?void 0:D.nodes)??0),processed:Array.isArray(D==null?void 0:D.processed)?D.processed.length:0}}function B(D){return{id:D.id,name:D.name,type:D.type,url:D.url,content:D.content,filters:D.filters}}function ee(){Object.assign(w,P()),r.value=!1,s.value=!0}function re(D){Object.assign(w,{name:D.id,type:D.type||"remote",url:D.url||"",content:D.content||"",enabled:D.enabled!==!1,filters:JSON.parse(JSON.stringify(D.filters||[]))}),r.value=!0,s.value=!0}function H(){w.filters.push({type:"include",pattern:"",field:""})}async function ie(){try{const D={name:w.name,type:w.type,url:w.url,content:w.content,enabled:w.enabled,filters:w.filters.filter(I=>I.type)};r.value?await am(w.name,D):await lm(D),s.value=!1,await ue(),v(r.value?"已更新":"已创建")}catch(D){v(D.message,"error")}}async function ce(D){f.value={show:!0,title:"删除订阅源",message:`确定删除 "${D.name}"?`,danger:!0,action:async()=>{try{await um(D.id),await ue(),v("已删除")}catch(I){v(I.message,"error")}}}}async function Ie(D){if(o.value===D.id){o.value="",l.value=null;return}o.value=D.id,i.value=!0,l.value=null;try{const I=await tl(B(D));l.value=I.data,a[D.id]=te(I.data)}catch(I){v(I.message,"error"),o.value=""}finally{i.value=!1}}async function we(D){try{const I=await vm(D.id);await Us(I.data.url),v("链接已复制")}catch(I){v(I.message,"error")}}async function fe(D){try{const I=await Rm(D);await Us(I.data.uri),v("节点链接已复制")}catch(I){v(I.message,"error")}}async function ue(){n.value=!0;try{const D=await Ro();t.value=D.data||[];for(const I of t.value)et(I),De(I)}catch(D){v(D.message,"error")}finally{n.value=!1}}async function et(D){try{const I=await tl(B(D));a[D.id]=te(I.data)}catch{a[D.id]={original:"-",processed:"-"}}}async function De(D){var I;if(!(D.type!=="remote"&&!((I=D.meta)!=null&&I.subUserinfo)))try{const j=await wm(D.id);c[D.id]=j.data}catch{delete c[D.id]}}return Vt(ue),(D,I)=>(L(),U("div",null,[d("div",{class:"flex items-center justify-between mb-5"},[I[11]||(I[11]=d("h2",{class:"text-xl font-bold"},"订阅源",-1)),d("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:ee},"+ 新建")]),n.value?(L(),U("div",pg,"加载中...")):t.value.length===0?(L(),U("div",hg,"暂无订阅源")):(L(),U("div",mg,[(L(!0),U(ve,null,Me(t.value,j=>{var pe,ye,ne;return L(),U("div",{key:j.id,class:"bg-white rounded-lg shadow-sm border overflow-hidden hover:shadow-md transition-shadow"},[d("div",{class:"p-4 flex items-center justify-between cursor-pointer",onClick:C=>Ie(j)},[d("div",yg,[d("div",bg,[d("span",xg,G(j.name),1),d("span",{class:Be(["px-1.5 py-0.5 rounded text-xs",j.type==="remote"?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-600"])},G(j.type),3),j.enabled?he("",!0):(L(),U("span",vg,"已禁用"))]),j.type==="local"?(L(),U("p",_g,"(本地内容)")):he("",!0),d("div",wg,[d("span",null,"原始节点: "+G(((pe=a[j.id])==null?void 0:pe.original)??"-"),1),d("span",null,"处理后: "+G(((ye=a[j.id])==null?void 0:ye.processed)??"-"),1),d("span",null,"过滤器: "+G(((ne=j.filters)==null?void 0:ne.length)||0),1),j.createdAt?(L(),U("span",Eg,"创建: "+G(R(j.createdAt)),1)):he("",!0)]),O(j)?(L(),U("p",Sg,G(O(j)),1)):he("",!0)]),d("div",Rg,[d("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-gray-100",onClick:jn(C=>we(j),["stop"])},"复制链接",8,Cg),d("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-blue-50 text-blue-600",onClick:jn(C=>re(j),["stop"])},"编辑",8,Ag),d("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-red-50 text-red-600",onClick:jn(C=>ce(j),["stop"])},"删除",8,Og)])],8,gg),o.value===j.id?(L(),U("div",{key:0,class:"border-t bg-gray-50",onClick:I[0]||(I[0]=jn(()=>{},["stop"]))},[i.value?(L(),U("div",Tg,"解析中...")):l.value?(L(),U("div",Pg,[d("div",Ng,[d("table",Ig,[I[12]||(I[12]=d("thead",{class:"sticky top-0 bg-gray-100 text-gray-600"},[d("tr",null,[d("th",{class:"px-3 py-2 font-medium"},"Type"),d("th",{class:"px-3 py-2 font-medium"},"Name"),d("th",{class:"px-3 py-2 font-medium"},"Server"),d("th",{class:"px-3 py-2 font-medium"},"Port"),d("th",{class:"px-3 py-2 font-medium"},"Transport"),d("th",{class:"px-3 py-2 font-medium"},"Tls"),d("th",{class:"px-3 py-2 font-medium"},"Delay"),d("th",{class:"px-3 py-2 font-medium"},"Speed"),d("th",{class:"px-3 py-2 font-medium"},"Link")])],-1)),d("tbody",kg,[(L(!0),U(ve,null,Me(l.value.processed||l.value.original||[],(C,W)=>(L(),U("tr",{key:W},[d("td",Dg,G(x(C,"type")),1),d("td",$g,G(x(C,"name","remarks")),1),d("td",Lg,G(x(C,"server","address")),1),d("td",Ug,G(x(C,"port")),1),d("td",Fg,G(x(C,"transport","network")),1),d("td",Mg,G(_(C)),1),d("td",Vg,G(x(C,"delay","latency","ping")),1),d("td",Bg,G(x(C,"speed","downloadSpeed")),1),d("td",jg,[d("button",{class:"px-2 py-1 text-xs rounded hover:bg-gray-100 text-blue-600",onClick:q=>fe(C)},"复制",8,Hg)])]))),128))])])]),(l.value.processed||l.value.original||[]).length===0?(L(),U("p",qg,"暂无节点")):he("",!0)])):he("",!0)])):he("",!0)])}),128))])),Ae(Ls,{modelValue:s.value,"onUpdate:modelValue":I[8]||(I[8]=j=>s.value=j),title:r.value?"编辑订阅源":"新建订阅源"},{footer:ft(()=>[d("button",{class:"px-4 py-2 text-sm rounded-lg hover:bg-gray-100",onClick:I[7]||(I[7]=j=>s.value=!1)},"取消"),d("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:ie},"保存")]),default:ft(()=>[d("div",Kg,[d("div",null,[I[13]||(I[13]=d("label",{class:"block text-sm font-medium mb-1"},"名称 / ID",-1)),ae(d("input",{"onUpdate:modelValue":I[1]||(I[1]=j=>w.name=j),disabled:r.value,placeholder:"my-sub",class:"w-full px-3 py-2 border rounded-lg text-sm disabled:bg-gray-100"},null,8,Wg),[[Te,w.name]]),I[14]||(I[14]=d("p",{class:"text-xs text-gray-400 mt-0.5"},"仅支持小写字母、数字、下划线、连字符",-1))]),d("div",null,[I[17]||(I[17]=d("label",{class:"block text-sm font-medium mb-1"},"类型",-1)),d("div",Gg,[d("label",{class:Be(["flex-1 flex items-center gap-2 px-3 py-2 border rounded-lg text-sm cursor-pointer",w.type==="remote"?"border-primary-500 bg-primary-50 text-primary-700":"border-gray-200"])},[ae(d("input",{type:"radio","onUpdate:modelValue":I[2]||(I[2]=j=>w.type=j),value:"remote",class:"text-primary-600"},null,512),[[bi,w.type]]),I[15]||(I[15]=d("span",null,"远程 (URL)",-1))],2),d("label",{class:Be(["flex-1 flex items-center gap-2 px-3 py-2 border rounded-lg text-sm cursor-pointer",w.type==="local"?"border-primary-500 bg-primary-50 text-primary-700":"border-gray-200"])},[ae(d("input",{type:"radio","onUpdate:modelValue":I[3]||(I[3]=j=>w.type=j),value:"local",class:"text-primary-600"},null,512),[[bi,w.type]]),I[16]||(I[16]=d("span",null,"本地 (内容)",-1))],2)])]),w.type==="remote"?(L(),U("div",zg,[I[18]||(I[18]=d("label",{class:"block text-sm font-medium mb-1"},"URL",-1)),ae(d("textarea",{"onUpdate:modelValue":I[4]||(I[4]=j=>w.url=j),rows:"3",placeholder:"https://example.com/sub (多个URL换行)",class:"w-full px-3 py-2 border rounded-lg text-sm font-mono"},null,512),[[Te,w.url]])])):he("",!0),w.type==="local"?(L(),U("div",Jg,[I[19]||(I[19]=d("label",{class:"block text-sm font-medium mb-1"},"内容",-1)),ae(d("textarea",{"onUpdate:modelValue":I[5]||(I[5]=j=>w.content=j),rows:"6",placeholder:"ss://... 或 base64 内容",class:"w-full px-3 py-2 border rounded-lg text-sm font-mono"},null,512),[[Te,w.content]])])):he("",!0),d("div",Xg,[ae(d("input",{type:"checkbox",id:"src-enabled","onUpdate:modelValue":I[6]||(I[6]=j=>w.enabled=j),class:"rounded"},null,512),[[wn,w.enabled]]),I[20]||(I[20]=d("label",{for:"src-enabled",class:"text-sm"},"启用",-1))]),d("div",null,[d("div",{class:"flex items-center justify-between mb-1"},[I[21]||(I[21]=d("label",{class:"text-sm font-medium"},"过滤器",-1)),d("button",{class:"text-xs text-primary-600 hover:underline",onClick:H},"+ 添加")]),d("details",Qg,[I[24]||(I[24]=d("summary",{class:"cursor-pointer text-gray-700"},"使用说明",-1)),d("div",Yg,[I[23]||(I[23]=d("p",null,"pattern 支持正则;field 留空默认匹配 name。常用字段:name、type、server、port。",-1)),d("table",Zg,[I[22]||(I[22]=d("thead",{class:"bg-gray-100 text-gray-700"},[d("tr",null,[d("th",{class:"border border-gray-200 px-2 py-1 font-medium"},"过滤器"),d("th",{class:"border border-gray-200 px-2 py-1 font-medium"},"说明")])],-1)),d("tbody",null,[(L(),U(ve,null,Me(A,j=>d("tr",{key:j.type},[d("td",ey,G(j.label),1),d("td",ty,G(j.help),1)])),64))])])])]),(L(!0),U(ve,null,Me(w.filters,(j,pe)=>(L(),U("div",{key:pe,class:"flex gap-1 mb-1.5"},[ae(d("select",{"onUpdate:modelValue":ye=>j.type=ye,class:"px-2 py-1 border rounded text-xs w-28"},[(L(),U(ve,null,Me(p,ye=>d("option",{key:ye,value:ye},G(m[ye]||ye),9,sy)),64))],8,ny),[[Sn,j.type]]),ae(d("input",{"onUpdate:modelValue":ye=>j.pattern=ye,placeholder:"pattern",class:"flex-1 px-2 py-1 border rounded text-xs"},null,8,ry),[[Te,j.pattern]]),ae(d("input",{"onUpdate:modelValue":ye=>j.field=ye,placeholder:"field",class:"w-24 px-2 py-1 border rounded text-xs"},null,8,oy),[[Te,j.field]]),d("button",{class:"px-2 py-1 text-xs text-red-500 hover:bg-red-50 rounded",onClick:ye=>w.filters.splice(pe,1)},"×",8,iy)]))),128))])])]),_:1},8,["modelValue","title"]),Ae(nr,{modelValue:f.value.show,"onUpdate:modelValue":I[9]||(I[9]=j=>f.value.show=j),title:f.value.title,message:f.value.message,danger:f.value.danger,onConfirm:I[10]||(I[10]=j=>{f.value.action(),f.value.show=!1})},null,8,["modelValue","title","message","danger"]),u.value?(L(),U("div",{key:3,class:Be(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",u.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},G(u.value.msg),3)):he("",!0)]))}},ay={key:0,class:"text-gray-400 text-sm"},uy={key:1,class:"text-gray-400 text-sm py-8 text-center"},cy={key:2,class:"space-y-2"},fy={class:"flex-1 min-w-0"},dy={class:"flex items-center gap-2"},py={class:"font-medium text-gray-900"},hy={key:0,class:"px-1.5 py-0.5 rounded text-xs bg-red-100 text-red-700"},my={class:"flex gap-3 mt-1 text-xs text-gray-400"},gy={key:0},yy={class:"flex gap-1 ml-3"},by=["onClick"],xy=["onClick"],vy=["onClick"],_y={class:"space-y-4"},wy=["disabled"],Ey={class:"max-h-32 overflow-y-auto border rounded-lg p-2 space-y-1"},Sy=["value"],Ry={class:"text-xs text-gray-400"},Cy={key:0,class:"text-xs text-gray-400 py-1"},Ay=["value"],Oy={class:"flex items-center gap-4"},Ty={class:"flex items-center gap-2 text-sm"},Py={class:"flex items-center gap-2 text-sm"},Ny={class:"flex items-center justify-between mb-1"},Iy=["onUpdate:modelValue"],ky=["value"],Dy=["onUpdate:modelValue"],$y=["onClick"],Ly={__name:"Collections",setup(e){const t=Y([]),n=Y([]),s=Y([]),r=Y(!0),o=Y(!1),i=Y(!1),l=Y(null),a=Ct({}),c=Y({show:!1,title:"",message:"",danger:!1,action:null}),u=["include","exclude","rename","dedupe","sort","delete-field","flag","quick","resolve","custom"],f=()=>({name:"",sourceIds:[],filters:[],templateId:"",ignoreFailed:!0,enabled:!0}),p=Ct(f());function m(x,_="success"){l.value={msg:x,type:_},setTimeout(()=>l.value=null,2500)}function A(){Object.assign(p,f()),i.value=!1,o.value=!0}function P(x){Object.assign(p,{name:x.id,sourceIds:[...x.sourceIds||[]],filters:JSON.parse(JSON.stringify(x.filters||[])),templateId:x.templateId||"",ignoreFailed:x.ignoreFailed!==!1,enabled:x.enabled!==!1}),i.value=!0,o.value=!0}async function w(){try{const x={...p};i.value?await fm(p.name,x):await cm(x),o.value=!1,await k(),m(i.value?"已更新":"已创建")}catch(x){m(x.message,"error")}}async function v(x){c.value={show:!0,title:"删除合集",message:`确定删除 "${x.name}"?`,danger:!0,action:async()=>{try{await dm(x.id),await k(),m("已删除")}catch(_){m(_.message,"error")}}}}async function R(x){try{const _=await _m(x.id);await Us(_.data.url),m("链接已复制")}catch(_){m(_.message,"error")}}async function k(){r.value=!0;try{const[x,_,O]=await Promise.all([uu(),Ro(),Co()]);t.value=x.data||[],n.value=_.data||[],s.value=O.data||[];for(const te of t.value)S(te)}catch(x){m(x.message,"error")}finally{r.value=!1}}async function S(x){try{const _=await xm(x);a[x.id]={original:_.data.originalCount??_.data.nodes??0,processed:Array.isArray(_.data.processed)?_.data.processed.length:0}}catch{a[x.id]={original:"-",processed:"-"}}}return Vt(k),(x,_)=>(L(),U("div",null,[d("div",{class:"flex items-center justify-between mb-5"},[_[10]||(_[10]=d("h2",{class:"text-xl font-bold"},"合集",-1)),d("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:A},"+ 新建")]),r.value?(L(),U("div",ay,"加载中...")):t.value.length===0?(L(),U("div",uy,"暂无合集")):(L(),U("div",cy,[(L(!0),U(ve,null,Me(t.value,O=>{var te,B,ee,re;return L(),U("div",{key:O.id,class:"bg-white rounded-lg p-4 shadow-sm border flex items-center justify-between hover:shadow-md transition-shadow"},[d("div",fy,[d("div",dy,[d("span",py,G(O.name),1),O.enabled?he("",!0):(L(),U("span",hy,"已禁用"))]),d("div",my,[d("span",null,"原始节点: "+G(((te=a[O.id])==null?void 0:te.original)??"-"),1),d("span",null,"处理后: "+G(((B=a[O.id])==null?void 0:B.processed)??"-"),1),d("span",null,"订阅源: "+G(((ee=O.sourceIds)==null?void 0:ee.length)||0),1),d("span",null,"过滤器: "+G(((re=O.filters)==null?void 0:re.length)||0),1),d("span",null,"模板: "+G(O.templateId||"default"),1),O.ignoreFailed?(L(),U("span",gy,"忽略失败")):he("",!0)])]),d("div",yy,[d("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-gray-100",onClick:H=>R(O)},"链接",8,by),d("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-blue-50 text-blue-600",onClick:H=>P(O)},"编辑",8,xy),d("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-red-50 text-red-600",onClick:H=>v(O)},"删除",8,vy)])])}),128))])),Ae(Ls,{modelValue:o.value,"onUpdate:modelValue":_[7]||(_[7]=O=>o.value=O),title:i.value?"编辑合集":"新建合集"},{footer:ft(()=>[d("button",{class:"px-4 py-2 text-sm rounded-lg hover:bg-gray-100",onClick:_[6]||(_[6]=O=>o.value=!1)},"取消"),d("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:w},"保存")]),default:ft(()=>[d("div",_y,[d("div",null,[_[11]||(_[11]=d("label",{class:"block text-sm font-medium mb-1"},"名称 / ID",-1)),ae(d("input",{"onUpdate:modelValue":_[0]||(_[0]=O=>p.name=O),disabled:i.value,placeholder:"my-collection",class:"w-full px-3 py-2 border rounded-lg text-sm disabled:bg-gray-100"},null,8,wy),[[Te,p.name]])]),d("div",null,[_[12]||(_[12]=d("label",{class:"block text-sm font-medium mb-1"},"订阅源 (多选)",-1)),d("div",Ey,[(L(!0),U(ve,null,Me(n.value,O=>(L(),U("label",{key:O.id,class:"flex items-center gap-2 text-sm cursor-pointer hover:bg-gray-50 px-1 py-0.5 rounded"},[ae(d("input",{type:"checkbox",value:O.id,"onUpdate:modelValue":_[1]||(_[1]=te=>p.sourceIds=te),class:"rounded"},null,8,Sy),[[wn,p.sourceIds]]),d("span",null,G(O.name),1),d("span",Ry,"("+G(O.type)+")",1)]))),128)),n.value.length===0?(L(),U("p",Cy,"无可用订阅源")):he("",!0)])]),d("div",null,[_[14]||(_[14]=d("label",{class:"block text-sm font-medium mb-1"},"模板",-1)),ae(d("select",{"onUpdate:modelValue":_[2]||(_[2]=O=>p.templateId=O),class:"w-full px-3 py-2 border rounded-lg text-sm"},[_[13]||(_[13]=d("option",{value:""},"默认",-1)),(L(!0),U(ve,null,Me(s.value,O=>(L(),U("option",{key:O.id,value:O.id},G(O.name)+" ("+G(O.target)+")",9,Ay))),128))],512),[[Sn,p.templateId]])]),d("div",Oy,[d("label",Ty,[ae(d("input",{type:"checkbox","onUpdate:modelValue":_[3]||(_[3]=O=>p.enabled=O),class:"rounded"},null,512),[[wn,p.enabled]]),_[15]||(_[15]=ts(" 启用 ",-1))]),d("label",Py,[ae(d("input",{type:"checkbox","onUpdate:modelValue":_[4]||(_[4]=O=>p.ignoreFailed=O),class:"rounded"},null,512),[[wn,p.ignoreFailed]]),_[16]||(_[16]=ts(" 忽略失败源 ",-1))])]),d("div",null,[d("div",Ny,[_[17]||(_[17]=d("label",{class:"text-sm font-medium"},"过滤器",-1)),d("button",{class:"text-xs text-primary-600 hover:underline",onClick:_[5]||(_[5]=O=>p.filters.push({type:"include",pattern:""}))},"+ 添加")]),(L(!0),U(ve,null,Me(p.filters,(O,te)=>(L(),U("div",{key:te,class:"flex gap-1 mb-1.5"},[ae(d("select",{"onUpdate:modelValue":B=>O.type=B,class:"px-2 py-1 border rounded text-xs w-28"},[(L(),U(ve,null,Me(u,B=>d("option",{key:B,value:B},G(B),9,ky)),64))],8,Iy),[[Sn,O.type]]),ae(d("input",{"onUpdate:modelValue":B=>O.pattern=B,placeholder:"pattern",class:"flex-1 px-2 py-1 border rounded text-xs"},null,8,Dy),[[Te,O.pattern]]),d("button",{class:"px-2 py-1 text-xs text-red-500 hover:bg-red-50 rounded",onClick:B=>p.filters.splice(te,1)},"×",8,$y)]))),128))])])]),_:1},8,["modelValue","title"]),Ae(nr,{modelValue:c.value.show,"onUpdate:modelValue":_[8]||(_[8]=O=>c.value.show=O),title:c.value.title,message:c.value.message,danger:c.value.danger,onConfirm:_[9]||(_[9]=O=>{c.value.action(),c.value.show=!1})},null,8,["modelValue","title","message","danger"]),l.value?(L(),U("div",{key:3,class:Be(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",l.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},G(l.value.msg),3)):he("",!0)]))}},Uy={key:0,class:"text-gray-400 text-sm"},Fy={key:1,class:"text-gray-400 text-sm py-8 text-center"},My={key:2,class:"space-y-2"},Vy={class:"flex-1 min-w-0"},By={class:"flex items-center gap-2"},jy={class:"font-medium text-gray-900"},Hy={class:"px-1.5 py-0.5 rounded text-xs bg-purple-100 text-purple-700"},qy={key:0,class:"px-1.5 py-0.5 rounded text-xs bg-gray-100 text-gray-500"},Ky={class:"text-xs text-gray-500 mt-1"},Wy={key:0,class:"flex gap-1 ml-3"},Gy=["onClick"],zy=["onClick"],Jy={key:1,class:"flex gap-1 ml-3"},Xy=["onClick"],Qy={class:"space-y-4"},Yy=["disabled"],Zy=["value"],eb={key:0,class:"text-xs text-red-500 mt-1"},tb={class:"text-xs font-mono bg-gray-50 p-3 rounded max-h-96 overflow-auto"},nb={__name:"Templates",setup(e){const t=Y([]),n=Y(!0),s=Y(!1),r=Y(!1),o=Y(!1),i=Y(null),l=Y(null),a=Y({show:!1,title:"",message:"",danger:!1,action:null}),c=["mihomo","stash","surge","surge-mac","surfboard","loon","egern","shadowrocket","qx","sing-box","v2ray","uri","json"],u=()=>({name:"",target:"mihomo",configStr:"{}"}),f=Ct(u()),p=tt(()=>{try{return JSON.parse(f.configStr),""}catch{return"JSON 格式错误"}});function m(S,x="success"){l.value={msg:S,type:x},setTimeout(()=>l.value=null,2500)}function A(){Object.assign(f,u()),r.value=!1,s.value=!0}function P(S){Object.assign(f,{name:S.id,target:S.target,configStr:JSON.stringify(S.config||{},null,2)}),r.value=!0,s.value=!0}function w(S){i.value=S.config,o.value=!0}async function v(){if(p.value){m(p.value,"error");return}try{const S={name:f.name,target:f.target,config:JSON.parse(f.configStr)};r.value?await hm(f.name,S):await pm(S),s.value=!1,await k(),m(r.value?"已更新":"已创建")}catch(S){m(S.message,"error")}}async function R(S){a.value={show:!0,title:"删除模板",message:`确定删除 "${S.name}"?`,danger:!0,action:async()=>{try{await mm(S.id),await k(),m("已删除")}catch(x){m(x.message,"error")}}}}async function k(){n.value=!0;try{const S=await Co();t.value=S.data||[]}catch(S){m(S.message,"error")}finally{n.value=!1}}return Vt(k),(S,x)=>(L(),U("div",null,[d("div",{class:"flex items-center justify-between mb-5"},[x[8]||(x[8]=d("h2",{class:"text-xl font-bold"},"模板",-1)),d("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:A},"+ 新建")]),n.value?(L(),U("div",Uy,"加载中...")):t.value.length===0?(L(),U("div",Fy,"暂无模板")):(L(),U("div",My,[(L(!0),U(ve,null,Me(t.value,_=>(L(),U("div",{key:_.id,class:"bg-white rounded-lg p-4 shadow-sm border flex items-center justify-between hover:shadow-md transition-shadow"},[d("div",Vy,[d("div",By,[d("span",jy,G(_.name),1),d("span",Hy,G(_.target),1),_.readonly?(L(),U("span",qy,"内置")):he("",!0)]),d("p",Ky,G(Object.keys(_.config||{}).length)+" 个配置项",1)]),_.readonly?(L(),U("div",Jy,[d("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-gray-100",onClick:O=>w(_)},"查看",8,Xy)])):(L(),U("div",Wy,[d("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-blue-50 text-blue-600",onClick:O=>P(_)},"编辑",8,Gy),d("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-red-50 text-red-600",onClick:O=>R(_)},"删除",8,zy)]))]))),128))])),Ae(Ls,{modelValue:s.value,"onUpdate:modelValue":x[4]||(x[4]=_=>s.value=_),title:r.value?"编辑模板":"新建模板"},{footer:ft(()=>[d("button",{class:"px-4 py-2 text-sm rounded-lg hover:bg-gray-100",onClick:x[3]||(x[3]=_=>s.value=!1)},"取消"),d("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:v},"保存")]),default:ft(()=>[d("div",Qy,[d("div",null,[x[9]||(x[9]=d("label",{class:"block text-sm font-medium mb-1"},"名称 / ID",-1)),ae(d("input",{"onUpdate:modelValue":x[0]||(x[0]=_=>f.name=_),disabled:r.value,placeholder:"my-template",class:"w-full px-3 py-2 border rounded-lg text-sm disabled:bg-gray-100"},null,8,Yy),[[Te,f.name]])]),d("div",null,[x[10]||(x[10]=d("label",{class:"block text-sm font-medium mb-1"},"目标平台",-1)),ae(d("select",{"onUpdate:modelValue":x[1]||(x[1]=_=>f.target=_),class:"w-full px-3 py-2 border rounded-lg text-sm"},[(L(),U(ve,null,Me(c,_=>d("option",{key:_,value:_},G(_),9,Zy)),64))],512),[[Sn,f.target]])]),d("div",null,[x[11]||(x[11]=d("label",{class:"block text-sm font-medium mb-1"},"配置 (JSON)",-1)),ae(d("textarea",{"onUpdate:modelValue":x[2]||(x[2]=_=>f.configStr=_),rows:"12",placeholder:'{"proxy-groups": [], "rules": []}',class:"w-full px-3 py-2 border rounded-lg text-sm font-mono"},null,512),[[Te,f.configStr]]),p.value?(L(),U("p",eb,G(p.value),1)):he("",!0)])])]),_:1},8,["modelValue","title"]),Ae(Ls,{modelValue:o.value,"onUpdate:modelValue":x[5]||(x[5]=_=>o.value=_),title:"查看模板配置"},{default:ft(()=>[d("pre",tb,G(JSON.stringify(i.value,null,2)),1)]),_:1},8,["modelValue"]),Ae(nr,{modelValue:a.value.show,"onUpdate:modelValue":x[6]||(x[6]=_=>a.value.show=_),title:a.value.title,message:a.value.message,danger:a.value.danger,onConfirm:x[7]||(x[7]=_=>{a.value.action(),a.value.show=!1})},null,8,["modelValue","title","message","danger"]),l.value?(L(),U("div",{key:3,class:Be(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",l.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},G(l.value.msg),3)):he("",!0)]))}},sb={key:0,class:"text-gray-400 text-sm"},rb={key:1,class:"text-gray-400 text-sm py-8 text-center"},ob={key:2,class:"space-y-2"},ib={class:"flex-1 min-w-0"},lb={class:"flex items-center gap-2"},ab={class:"font-medium text-gray-900"},ub={class:"text-xs text-gray-400 mt-1"},cb={class:"flex gap-1 ml-3"},fb=["onClick"],db=["onClick"],pb={__name:"RecycleBin",setup(e){const t=Y([]),n=Y(!0),s=Y(null),r=Y({show:!1,title:"",message:"",danger:!1,confirmText:"确定",action:null});function o(f,p="success"){s.value={msg:f,type:p},setTimeout(()=>s.value=null,2500)}function i(f){return f?new Date(f).toLocaleString("zh-CN"):""}function l(f){return{source:"bg-blue-100 text-blue-700",collection:"bg-purple-100 text-purple-700",template:"bg-green-100 text-green-700"}[f]||"bg-gray-100 text-gray-600"}async function a(f){r.value={show:!0,title:"恢复",message:`恢复 "${f.resourceId}"?`,danger:!1,confirmText:"恢复",action:async()=>{try{await bm(f.id),await u(),o("已恢复")}catch(p){o(p.message,"error")}}}}async function c(f){r.value={show:!0,title:"彻底删除",message:`彻底删除 "${f.resourceId}"?此操作不可撤销!`,danger:!0,confirmText:"彻底删除",action:async()=>{try{await ym(f.id),await u(),o("已彻底删除")}catch(p){o(p.message,"error")}}}}async function u(){n.value=!0;try{const f=await gm();t.value=f.data||[]}catch(f){o(f.message,"error")}finally{n.value=!1}}return Vt(u),(f,p)=>(L(),U("div",null,[p[2]||(p[2]=d("h2",{class:"text-xl font-bold mb-5"},"回收站",-1)),n.value?(L(),U("div",sb,"加载中...")):t.value.length===0?(L(),U("div",rb,"回收站为空")):(L(),U("div",ob,[(L(!0),U(ve,null,Me(t.value,m=>(L(),U("div",{key:m.id,class:"bg-white rounded-lg p-4 shadow-sm border flex items-center justify-between"},[d("div",ib,[d("div",lb,[d("span",{class:Be(["px-1.5 py-0.5 rounded text-xs",l(m.resourceType)])},G(m.resourceType),3),d("span",ab,G(m.resourceId),1)]),d("p",ub,"删除于: "+G(i(m.deletedAt)),1)]),d("div",cb,[d("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-blue-50 text-blue-600",onClick:A=>a(m)},"恢复",8,fb),d("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-red-50 text-red-600",onClick:A=>c(m)},"彻底删除",8,db)])]))),128))])),Ae(nr,{modelValue:r.value.show,"onUpdate:modelValue":p[0]||(p[0]=m=>r.value.show=m),title:r.value.title,message:r.value.message,danger:r.value.danger,confirmText:r.value.confirmText,onConfirm:p[1]||(p[1]=m=>{r.value.action(),r.value.show=!1})},null,8,["modelValue","title","message","danger","confirmText"]),s.value?(L(),U("div",{key:3,class:Be(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",s.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},G(s.value.msg),3)):he("",!0)]))}},hb={class:"bg-white rounded-lg p-4 shadow-sm border mb-4"},mb={class:"flex gap-2 mb-3"},gb=["value"],yb={class:"flex gap-2 mb-2"},bb=["disabled"],xb={key:0,class:"text-xs text-gray-500 mb-2"},vb={class:"bg-white rounded-lg p-4 shadow-sm border mb-4"},_b={class:"flex gap-2 mb-3"},wb=["disabled"],Eb={key:0,class:"bg-gray-50 rounded-lg p-3 text-sm space-y-1"},Sb={class:"flex justify-between"},Rb={class:"flex justify-between"},Cb={class:"flex justify-between"},Ab={class:"flex justify-between"},Ob={key:0,class:"flex justify-between"},Tb={class:"bg-white rounded-lg p-4 shadow-sm border"},Pb={class:"flex gap-2"},Nb={class:"px-4 py-2 bg-gray-600 text-white rounded-lg text-sm hover:bg-gray-700 cursor-pointer"},Ib={__name:"Tools",setup(e){const t=["mihomo","stash","surge","surge-mac","surfboard","loon","egern","shadowrocket","qx","sing-box","v2ray","uri","json"],n=["mihomo","surge","loon","qx"],s=Y("proxy"),r=Y("mihomo"),o=Y(""),i=Y(""),l=Y(""),a=Y(!1),c=Y(""),u=Y(null),f=Y(!1),p=Y(null),m=tt(()=>s.value==="proxy"?t:n);function A(S,x="success"){p.value={msg:S,type:x},setTimeout(()=>p.value=null,2500)}async function P(S){try{await Us(S),A("已复制")}catch(x){A(x.message,"error")}}async function w(){var S;if(!o.value.trim()){A("请输入内容","error");return}a.value=!0,i.value="",l.value="";try{const _=await(s.value==="proxy"?Em:Sm)({content:o.value,target:r.value});i.value=_.data.content||_.data.par_res||"",l.value=`解析: ${_.data.parsed||0} · 输出: ${_.data.emitted||0} · 跳过: ${_.data.skipped||0}`,(S=_.data.warnings)!=null&&S.length&&(l.value+=" · ⚠ "+_.data.warnings.join("; ")),A("转换成功")}catch(x){A(x.message,"error")}finally{a.value=!1}}async function v(){f.value=!0,u.value=null;try{const S=await Cm(c.value);u.value=S.data}catch(S){A(S.message,"error")}finally{f.value=!1}}async function R(){try{const S=await om(),x=new Blob([JSON.stringify(S,null,2)],{type:"application/json"}),_=URL.createObjectURL(x),O=document.createElement("a");O.href=_,O.download=`sub-store-backup-${Date.now()}.json`,O.click(),URL.revokeObjectURL(_),A("已导出")}catch(S){A(S.message,"error")}}async function k(S){var _;const x=(_=S.target.files)==null?void 0:_[0];if(x){try{const O=await x.text(),te=JSON.parse(O);await im(te),A("导入成功")}catch(O){A(O.message,"error")}S.target.value=""}}return(S,x)=>{var _;return L(),U("div",null,[x[16]||(x[16]=d("h2",{class:"text-xl font-bold mb-5"},"工具",-1)),d("div",hb,[x[7]||(x[7]=d("h3",{class:"font-semibold mb-3"},"转换器",-1)),d("div",mb,[ae(d("select",{"onUpdate:modelValue":x[0]||(x[0]=O=>s.value=O),class:"px-3 py-2 border rounded-lg text-sm"},[...x[6]||(x[6]=[d("option",{value:"proxy"},"代理转换",-1),d("option",{value:"rule"},"规则转换",-1)])],512),[[Sn,s.value]]),ae(d("select",{"onUpdate:modelValue":x[1]||(x[1]=O=>r.value=O),class:"px-3 py-2 border rounded-lg text-sm"},[(L(!0),U(ve,null,Me(m.value,O=>(L(),U("option",{key:O,value:O},G(O),9,gb))),128))],512),[[Sn,r.value]])]),ae(d("textarea",{"onUpdate:modelValue":x[2]||(x[2]=O=>o.value=O),rows:"5",placeholder:"粘贴订阅内容或规则...",class:"w-full px-3 py-2 border rounded-lg text-sm font-mono mb-2"},null,512),[[Te,o.value]]),d("div",yb,[d("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",disabled:a.value,onClick:w},G(a.value?"转换中...":"转换"),9,bb),i.value?(L(),U("button",{key:0,class:"px-4 py-2 text-sm rounded-lg hover:bg-gray-100",onClick:x[3]||(x[3]=O=>P(i.value))},"复制结果")):he("",!0)]),l.value?(L(),U("p",xb,G(l.value),1)):he("",!0),i.value?ae((L(),U("textarea",{key:1,"onUpdate:modelValue":x[4]||(x[4]=O=>i.value=O),rows:"8",readonly:"",class:"w-full px-3 py-2 border rounded-lg text-sm font-mono bg-gray-50"},null,512)),[[Te,i.value]]):he("",!0)]),d("div",vb,[x[13]||(x[13]=d("h3",{class:"font-semibold mb-3"},"节点信息查询",-1)),d("div",_b,[ae(d("input",{"onUpdate:modelValue":x[5]||(x[5]=O=>c.value=O),placeholder:"服务器地址 / IP",class:"flex-1 px-3 py-2 border rounded-lg text-sm",onKeyup:Lf(v,["enter"])},null,544),[[Te,c.value]]),d("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",disabled:!c.value||f.value,onClick:v},G(f.value?"查询中...":"查询"),9,wb)]),u.value?(L(),U("div",Eb,[d("div",Sb,[x[8]||(x[8]=d("span",{class:"text-gray-500"},"IP",-1)),d("span",null,G(u.value.ip),1)]),d("div",Rb,[x[9]||(x[9]=d("span",{class:"text-gray-500"},"国家",-1)),d("span",null,G(u.value.country),1)]),d("div",Cb,[x[10]||(x[10]=d("span",{class:"text-gray-500"},"地区",-1)),d("span",null,G(u.value.region),1)]),d("div",Ab,[x[11]||(x[11]=d("span",{class:"text-gray-500"},"城市",-1)),d("span",null,G(u.value.city),1)]),u.value.connection?(L(),U("div",Ob,[x[12]||(x[12]=d("span",{class:"text-gray-500"},"ISP",-1)),d("span",null,G(((_=u.value.connection)==null?void 0:_.isp)||"-"),1)])):he("",!0)])):he("",!0)]),d("div",Tb,[x[15]||(x[15]=d("h3",{class:"font-semibold mb-3"},"数据备份",-1)),d("div",Pb,[d("button",{class:"px-4 py-2 bg-green-600 text-white rounded-lg text-sm hover:bg-green-700",onClick:R},"导出全部"),d("label",Nb,[x[14]||(x[14]=ts(" 导入备份 ",-1)),d("input",{type:"file",accept:".json",class:"hidden",onChange:k},null,32)])])]),p.value?(L(),U("div",{key:0,class:Be(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",p.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},G(p.value.msg),3)):he("",!0)])}}},kb={key:0,class:"text-gray-400 text-sm"},Db={key:1,class:"space-y-4"},$b={class:"bg-white rounded-lg p-4 shadow-sm border"},Lb={class:"space-y-3"},Ub={class:"flex items-center gap-2"},Fb={class:"bg-white rounded-lg p-4 shadow-sm border"},Mb={class:"bg-white rounded-lg p-4 shadow-sm border"},Vb={class:"flex items-center gap-2 mb-2"},Bb={class:"grid grid-cols-2 gap-2"},jb={class:"bg-white rounded-lg p-4 shadow-sm border"},Hb={__name:"Settings",setup(e){const t=Y(null),n=Y(!0),s=Y(null);function r(i,l="success"){s.value={msg:i,type:l},setTimeout(()=>s.value=null,2500)}async function o(){try{await rm(t.value),r("设置已保存")}catch(i){r(i.message,"error")}}return Vt(async()=>{try{const i=await sm();t.value=i.data}catch(i){r(i.message,"error")}finally{n.value=!1}}),(i,l)=>(L(),U("div",null,[l[26]||(l[26]=d("h2",{class:"text-xl font-bold mb-5"},"设置",-1)),n.value?(L(),U("div",kb,"加载中...")):(L(),U("div",Db,[d("div",$b,[l[17]||(l[17]=d("h3",{class:"font-semibold mb-3 text-sm"},"通用",-1)),d("div",Lb,[d("div",null,[l[11]||(l[11]=d("label",{class:"block text-sm mb-1"},"默认 User-Agent",-1)),ae(d("input",{"onUpdate:modelValue":l[0]||(l[0]=a=>t.value.defaultUserAgent=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Te,t.value.defaultUserAgent]])]),d("div",null,[l[12]||(l[12]=d("label",{class:"block text-sm mb-1"},"默认流量查询 User-Agent",-1)),ae(d("input",{"onUpdate:modelValue":l[1]||(l[1]=a=>t.value.defaultFlowUserAgent=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Te,t.value.defaultFlowUserAgent]])]),d("div",null,[l[13]||(l[13]=d("label",{class:"block text-sm mb-1"},"请求超时 (ms)",-1)),ae(d("input",{"onUpdate:modelValue":l[2]||(l[2]=a=>t.value.defaultTimeout=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Te,t.value.defaultTimeout]])]),d("div",null,[l[14]||(l[14]=d("label",{class:"block text-sm mb-1"},"后端并发数",-1)),ae(d("input",{"onUpdate:modelValue":l[3]||(l[3]=a=>t.value.backendRequestConcurrency=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Te,t.value.backendRequestConcurrency]])]),d("div",null,[l[15]||(l[15]=d("label",{class:"block text-sm mb-1"},"远程缓存 TTL (秒)",-1)),ae(d("input",{"onUpdate:modelValue":l[4]||(l[4]=a=>t.value.remoteCacheTtl=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Te,t.value.remoteCacheTtl]])]),d("div",Ub,[ae(d("input",{type:"checkbox",id:"cache-stale","onUpdate:modelValue":l[5]||(l[5]=a=>t.value.remoteCacheStaleOnError=a),class:"rounded"},null,512),[[wn,t.value.remoteCacheStaleOnError]]),l[16]||(l[16]=d("label",{for:"cache-stale",class:"text-sm"},"缓存过期时仍返回旧数据",-1))])])]),d("div",Fb,[l[18]||(l[18]=d("h3",{class:"font-semibold mb-3 text-sm"},"节点信息 API",-1)),ae(d("input",{"onUpdate:modelValue":l[6]||(l[6]=a=>t.value.nodeInfoApiUrl=a),placeholder:"https://ipwho.is/{ip}",class:"w-full px-3 py-2 border rounded-lg text-sm font-mono"},null,512),[[Te,t.value.nodeInfoApiUrl]]),l[19]||(l[19]=d("p",{class:"text-xs text-gray-400 mt-1"},"URL 中 {ip} 会被替换为查询的 IP",-1))]),d("div",Mb,[l[23]||(l[23]=d("h3",{class:"font-semibold mb-3 text-sm"},"主题",-1)),d("div",Vb,[ae(d("input",{type:"checkbox",id:"theme-auto","onUpdate:modelValue":l[7]||(l[7]=a=>t.value.theme.auto=a),class:"rounded"},null,512),[[wn,t.value.theme.auto]]),l[20]||(l[20]=d("label",{for:"theme-auto",class:"text-sm"},"自动跟随系统",-1))]),d("div",Bb,[d("div",null,[l[21]||(l[21]=d("label",{class:"text-xs text-gray-500"},"亮色主题",-1)),ae(d("input",{"onUpdate:modelValue":l[8]||(l[8]=a=>t.value.theme.light=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Te,t.value.theme.light]])]),d("div",null,[l[22]||(l[22]=d("label",{class:"text-xs text-gray-500"},"暗色主题",-1)),ae(d("input",{"onUpdate:modelValue":l[9]||(l[9]=a=>t.value.theme.dark=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Te,t.value.theme.dark]])])])]),d("div",jb,[l[25]||(l[25]=d("h3",{class:"font-semibold mb-3 text-sm"},"应用",-1)),d("div",null,[l[24]||(l[24]=d("label",{class:"block text-sm mb-1"},"应用名称",-1)),ae(d("input",{"onUpdate:modelValue":l[10]||(l[10]=a=>t.value.appName=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Te,t.value.appName]])])]),d("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:o},"保存设置")])),s.value?(L(),U("div",{key:2,class:Be(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",s.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},G(s.value.msg),3)):he("",!0)]))}},qb=[{path:"/login",name:"login",component:Mm,meta:{title:"登录"}},{path:"/",component:$m,children:[{path:"",name:"dashboard",component:tg,meta:{title:"概览"}},{path:"sources",name:"sources",component:ly,meta:{title:"订阅源"}},{path:"collections",name:"collections",component:Ly,meta:{title:"合集"}},{path:"templates",name:"templates",component:nb,meta:{title:"模板"}},{path:"recycle-bin",name:"recycle-bin",component:pb,meta:{title:"回收站"}},{path:"tools",name:"tools",component:Ib,meta:{title:"工具"}},{path:"settings",name:"settings",component:Hb,meta:{title:"设置"}}]},{path:"/:pathMatch(.*)*",name:"not-found",component:Bm}],cu=Xd({history:Od(),routes:qb});cu.beforeEach((e,t,n)=>{if(e.name==="login"||e.name==="not-found")return n();const s=yo(),r=La(),o=ep();if(!s||!r||!o)return n({name:"login",query:{redirect:e.fullPath}});n()});const Ao=Mf(qf);Ao.use(Hf());Ao.use(cu);Ao.mount("#app"); diff --git a/frontend/dist/assets/index-DuuGFjFx.js b/frontend/dist/assets/index-DuuGFjFx.js deleted file mode 100644 index c940c12..0000000 --- a/frontend/dist/assets/index-DuuGFjFx.js +++ /dev/null @@ -1,37 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&s(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerPolicy&&(o.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?o.credentials="include":r.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();/** -* @vue/shared v3.5.40 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Kr(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const _e={},gn=[],Et=()=>{},Yi=()=>!1,Fs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Vs=e=>e.startsWith("onUpdate:"),Ie=Object.assign,Wr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},au=Object.prototype.hasOwnProperty,me=(e,t)=>au.call(e,t),Z=Array.isArray,yn=e=>is(e)==="[object Map]",On=e=>is(e)==="[object Set]",To=e=>is(e)==="[object Date]",te=e=>typeof e=="function",Se=e=>typeof e=="string",ct=e=>typeof e=="symbol",ge=e=>e!==null&&typeof e=="object",Zi=e=>(ge(e)||te(e))&&te(e.then)&&te(e.catch),el=Object.prototype.toString,is=e=>el.call(e),uu=e=>is(e).slice(8,-1),tl=e=>is(e)==="[object Object]",Gr=e=>Se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,jn=Kr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ms=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},cu=/-\w/g,Qe=Ms(e=>e.replace(cu,t=>t.slice(1).toUpperCase())),fu=/\B([A-Z])/g,Gt=Ms(e=>e.replace(fu,"-$1").toLowerCase()),Bs=Ms(e=>e.charAt(0).toUpperCase()+e.slice(1)),nr=Ms(e=>e?`on${Bs(e)}`:""),wt=(e,t)=>!Object.is(e,t),vs=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},js=e=>{const t=parseFloat(e);return isNaN(t)?e:t},du=e=>{const t=Se(e)?Number(e):NaN;return isNaN(t)?e:t};let Oo;const Hs=()=>Oo||(Oo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function zr(e){if(Z(e)){const t={};for(let n=0;n{if(n){const s=n.split(hu);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ve(e){let t="";if(Se(e))t=e;else if(Z(e))for(let n=0;nPn(n,t))}const rl=e=>!!(e&&e.__v_isRef===!0),q=e=>Se(e)?e:e==null?"":Z(e)||ge(e)&&(e.toString===el||!te(e.toString))?rl(e)?q(e.value):JSON.stringify(e,ol,2):String(e),ol=(e,t)=>rl(t)?ol(e,t.value):yn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[sr(s,o)+" =>"]=r,n),{})}:On(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>sr(n))}:ct(t)?sr(t):ge(t)&&!Z(t)&&!tl(t)?String(t):t,sr=(e,t="")=>{var n;return ct(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.40 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Le;class il{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&&Le&&(Le.active?(this.parent=Le,this.index=(Le.scopes||(Le.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes){const s=this.scopes.slice();for(t=0,n=s.length;t0&&--this._on===0){if(Le===this)Le=this.prevScope;else{let t=Le;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 n,s;for(n=0,s=this.effects.length;n0)return;if(qn){let t=qn;for(qn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Hn;){let t=Hn;for(Hn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function cl(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function fl(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Yr(s),wu(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function wr(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(dl(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function dl(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===zn)||(e.globalVersion=zn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!wr(e))))return;e.flags|=2;const t=e.dep,n=Ee,s=ut;Ee=e,ut=!0;try{cl(e);const r=e.fn(e._value);(t.version===0||wt(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{Ee=n,ut=s,fl(e),e.flags&=-3}}function Yr(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Yr(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function wu(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let ut=!0;const pl=[];function Lt(){pl.push(ut),ut=!1}function Ut(){const e=pl.pop();ut=e===void 0?!0:e}function Po(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Ee;Ee=void 0;try{t()}finally{Ee=n}}}let zn=0;class Eu{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Zr{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(!Ee||!ut||Ee===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Ee)n=this.activeLink=new Eu(Ee,this),Ee.deps?(n.prevDep=Ee.depsTail,Ee.depsTail.nextDep=n,Ee.depsTail=n):Ee.deps=Ee.depsTail=n,hl(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=Ee.depsTail,n.nextDep=void 0,Ee.depsTail.nextDep=n,Ee.depsTail=n,Ee.deps===n&&(Ee.deps=s)}return n}trigger(t){this.version++,zn++,this.notify(t)}notify(t){Xr();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Qr()}}}function hl(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)hl(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Er=new WeakMap,rn=Symbol(""),Sr=Symbol(""),Jn=Symbol("");function Be(e,t,n){if(ut&&Ee){let s=Er.get(e);s||Er.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Zr),r.map=s,r.key=n),r.track()}}function Nt(e,t,n,s,r,o){const i=Er.get(e);if(!i){zn++;return}const l=a=>{a&&a.trigger()};if(Xr(),t==="clear")i.forEach(l);else{const a=Z(e),u=a&&Gr(n);if(a&&n==="length"){const c=Number(s);i.forEach((f,d)=>{(d==="length"||d===Jn||!ct(d)&&d>=c)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),u&&l(i.get(Jn)),t){case"add":a?u&&l(i.get("length")):(l(i.get(rn)),yn(e)&&l(i.get(Sr)));break;case"delete":a||(l(i.get(rn)),yn(e)&&l(i.get(Sr)));break;case"set":yn(e)&&l(i.get(rn));break}}Qr()}function dn(e){const t=pe(e);return t===e?t:(Be(t,"iterate",Jn),it(e)?t:t.map(ft))}function qs(e){return Be(e=pe(e),"iterate",Jn),e}function vt(e,t){return Ft(e)?En(on(e)?ft(t):t):ft(t)}const Su={__proto__:null,[Symbol.iterator](){return or(this,Symbol.iterator,e=>vt(this,e))},concat(...e){return dn(this).concat(...e.map(t=>Z(t)?dn(t):t))},entries(){return or(this,"entries",e=>(e[1]=vt(this,e[1]),e))},every(e,t){return Ct(this,"every",e,t,void 0,arguments)},filter(e,t){return Ct(this,"filter",e,t,n=>n.map(s=>vt(this,s)),arguments)},find(e,t){return Ct(this,"find",e,t,n=>vt(this,n),arguments)},findIndex(e,t){return Ct(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ct(this,"findLast",e,t,n=>vt(this,n),arguments)},findLastIndex(e,t){return Ct(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ct(this,"forEach",e,t,void 0,arguments)},includes(...e){return ir(this,"includes",e)},indexOf(...e){return ir(this,"indexOf",e)},join(e){return dn(this).join(e)},lastIndexOf(...e){return ir(this,"lastIndexOf",e)},map(e,t){return Ct(this,"map",e,t,void 0,arguments)},pop(){return Dn(this,"pop")},push(...e){return Dn(this,"push",e)},reduce(e,...t){return No(this,"reduce",e,t)},reduceRight(e,...t){return No(this,"reduceRight",e,t)},shift(){return Dn(this,"shift")},some(e,t){return Ct(this,"some",e,t,void 0,arguments)},splice(...e){return Dn(this,"splice",e)},toReversed(){return dn(this).toReversed()},toSorted(e){return dn(this).toSorted(e)},toSpliced(...e){return dn(this).toSpliced(...e)},unshift(...e){return Dn(this,"unshift",e)},values(){return or(this,"values",e=>vt(this,e))}};function or(e,t,n){const s=qs(e),r=s[t]();return s!==e&&!it(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.done||(o.value=n(o.value)),o}),r}const Ru=Array.prototype;function Ct(e,t,n,s,r,o){const i=qs(e),l=i!==e&&!it(e),a=i[t];if(a!==Ru[t]){const f=a.apply(e,o);return l?ft(f):f}let u=n;i!==e&&(l?u=function(f,d){return n.call(this,vt(e,f),d,e)}:n.length>2&&(u=function(f,d){return n.call(this,f,d,e)}));const c=a.call(i,u,s);return l&&r?r(c):c}function No(e,t,n,s){const r=qs(e),o=r!==e&&!it(e);let i=n,l=!1;r!==e&&(o?(l=s.length===0,i=function(u,c,f){return l&&(l=!1,u=vt(e,u)),n.call(this,u,vt(e,c),f,e)}):n.length>3&&(i=function(u,c,f){return n.call(this,u,c,f,e)}));const a=r[t](i,...s);return l?vt(e,a):a}function ir(e,t,n){const s=pe(e);Be(s,"iterate",Jn);const r=s[t](...n);return(r===-1||r===!1)&&no(n[0])?(n[0]=pe(n[0]),s[t](...n)):r}function Dn(e,t,n=[]){Lt(),Xr();const s=pe(e)[t].apply(e,n);return Qr(),Ut(),s}const Cu=Kr("__proto__,__v_isRef,__isVue"),ml=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ct));function Au(e){ct(e)||(e=String(e));const t=pe(this);return Be(t,"has",e),t.hasOwnProperty(e)}class gl{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?Uu:vl:o?xl:bl).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=Z(t);if(!r){let a;if(i&&(a=Su[n]))return a;if(n==="hasOwnProperty")return Au}const l=Reflect.get(t,n,qe(t)?t:s);if((ct(n)?ml.has(n):Cu(n))||(r||Be(t,"get",n),o))return l;if(qe(l)){const a=i&&Gr(n)?l:l.value;return r&&ge(a)?Cr(a):a}return ge(l)?r?Cr(l):zt(l):l}}class yl extends gl{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];const i=Z(t)&&Gr(n);if(!this._isShallow){const u=Ft(o);if(!it(s)&&!Ft(s)&&(o=pe(o),s=pe(s)),!i&&qe(o)&&!qe(s))return u||(o.value=s),!0}const l=i?Number(n)e,hs=e=>Reflect.getPrototypeOf(e);function Iu(e,t,n){return function(...s){const r=this.__v_raw,o=pe(r),i=yn(o),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=r[e](...s),c=n?Rr:t?En:ft;return!t&&Be(o,"iterate",a?Sr:rn),Ie(Object.create(u),{next(){const{value:f,done:d}=u.next();return d?{value:f,done:d}:{value:l?[c(f[0]),c(f[1])]:c(f),done:d}}})}}function ms(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ku(e,t){const n={get(r){const o=this.__v_raw,i=pe(o),l=pe(r);e||(wt(r,l)&&Be(i,"get",r),Be(i,"get",l));const{has:a}=hs(i),u=t?Rr:e?En:ft;if(a.call(i,r))return u(o.get(r));if(a.call(i,l))return u(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&Be(pe(r),"iterate",rn),r.size},has(r){const o=this.__v_raw,i=pe(o),l=pe(r);return e||(wt(r,l)&&Be(i,"has",r),Be(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,a=pe(l),u=t?Rr:e?En:ft;return!e&&Be(a,"iterate",rn),l.forEach((c,f)=>r.call(o,u(c),u(f),i))}};return Ie(n,e?{add:ms("add"),set:ms("set"),delete:ms("delete"),clear:ms("clear")}:{add(r){const o=pe(this),i=hs(o),l=pe(r),a=!t&&!it(r)&&!Ft(r)?l:r;return i.has.call(o,a)||wt(r,a)&&i.has.call(o,r)||wt(l,a)&&i.has.call(o,l)||(o.add(a),Nt(o,"add",a,a)),this},set(r,o){!t&&!it(o)&&!Ft(o)&&(o=pe(o));const i=pe(this),{has:l,get:a}=hs(i);let u=l.call(i,r);u||(r=pe(r),u=l.call(i,r));const c=a.call(i,r);return i.set(r,o),u?wt(o,c)&&Nt(i,"set",r,o):Nt(i,"add",r,o),this},delete(r){const o=pe(this),{has:i,get:l}=hs(o);let a=i.call(o,r);a||(r=pe(r),a=i.call(o,r)),l&&l.call(o,r);const u=o.delete(r);return a&&Nt(o,"delete",r,void 0),u},clear(){const r=pe(this),o=r.size!==0,i=r.clear();return o&&Nt(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Iu(r,e,t)}),n}function eo(e,t){const n=ku(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(me(n,r)&&r in s?n:s,r,o)}const Du={get:eo(!1,!1)},$u={get:eo(!1,!0)},Lu={get:eo(!0,!1)};const bl=new WeakMap,xl=new WeakMap,vl=new WeakMap,Uu=new WeakMap;function Fu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function zt(e){return Ft(e)?e:to(e,!1,Ou,Du,bl)}function _l(e){return to(e,!1,Nu,$u,xl)}function Cr(e){return to(e,!0,Pu,Lu,vl)}function to(e,t,n,s,r){if(!ge(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=r.get(e);if(o)return o;const i=Fu(uu(e));if(i===0)return e;const l=new Proxy(e,i===2?s:n);return r.set(e,l),l}function on(e){return Ft(e)?on(e.__v_raw):!!(e&&e.__v_isReactive)}function Ft(e){return!!(e&&e.__v_isReadonly)}function it(e){return!!(e&&e.__v_isShallow)}function no(e){return e?!!e.__v_raw:!1}function pe(e){const t=e&&e.__v_raw;return t?pe(t):e}function wl(e){return!me(e,"__v_skip")&&Object.isExtensible(e)&&nl(e,"__v_skip",!0),e}const ft=e=>ge(e)?zt(e):e,En=e=>ge(e)?Cr(e):e;function qe(e){return e?e.__v_isRef===!0:!1}function z(e){return El(e,!1)}function Vu(e){return El(e,!0)}function El(e,t){return qe(e)?e:new Mu(e,t)}class Mu{constructor(t,n){this.dep=new Zr,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:pe(t),this._value=n?t:ft(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||it(t)||Ft(t);t=s?t:pe(t),wt(t,n)&&(this._rawValue=t,this._value=s?t:ft(t),this.dep.trigger())}}function bn(e){return qe(e)?e.value:e}const Bu={get:(e,t,n)=>t==="__v_raw"?e:bn(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return qe(r)&&!qe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Sl(e){return on(e)?e:new Proxy(e,Bu)}class ju{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Zr(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=zn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&Ee!==this)return ul(this,!0),!0}get value(){const t=this.dep.track();return dl(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Hu(e,t,n=!1){let s,r;return te(e)?s=e:(s=e.get,r=e.set),new ju(s,r,n)}const gs={},As=new WeakMap;let Zt;function qu(e,t=!1,n=Zt){if(n){let s=As.get(n);s||As.set(n,s=[]),s.push(e)}}function Ku(e,t,n=_e){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:a}=n,u=g=>r?g:it(g)||r===!1||r===0?It(g,1):It(g);let c,f,d,m,R=!1,A=!1;if(qe(e)?(f=()=>e.value,R=it(e)):on(e)?(f=()=>u(e),R=!0):Z(e)?(A=!0,R=e.some(g=>on(g)||it(g)),f=()=>e.map(g=>{if(qe(g))return g.value;if(on(g))return u(g);if(te(g))return a?a(g,2):g()})):te(e)?t?f=a?()=>a(e,2):e:f=()=>{if(d){Lt();try{d()}finally{Ut()}}const g=Zt;Zt=c;try{return a?a(e,3,[m]):e(m)}finally{Zt=g}}:f=Et,t&&r){const g=f,x=r===!0?1/0:r;f=()=>It(g(),x)}const O=_u(),E=()=>{c.stop(),O&&O.active&&Wr(O.effects,c)};if(o&&t){const g=t;t=(...x)=>{const I=g(...x);return E(),I}}let w=A?new Array(e.length).fill(gs):gs;const v=g=>{if(!(!(c.flags&1)||!c.dirty&&!g))if(t){const x=c.run();if(g||r||R||(A?x.some((I,C)=>wt(I,w[C])):wt(x,w))){d&&d();const I=Zt;Zt=c;try{const C=[x,w===gs?void 0:A&&w[0]===gs?[]:w,m];w=x,a?a(t,3,C):t(...C)}finally{Zt=I}}}else c.run()};return l&&l(v),c=new ll(f),c.scheduler=i?()=>i(v,!1):v,m=g=>qu(g,!1,c),d=c.onStop=()=>{const g=As.get(c);if(g){if(a)a(g,4);else for(const x of g)x();As.delete(c)}},t?s?v(!0):w=c.run():i?i(v.bind(null,!0),!0):c.run(),E.pause=c.pause.bind(c),E.resume=c.resume.bind(c),E.stop=E,E}function It(e,t=1/0,n){if(t<=0||!ge(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,qe(e))It(e.value,t,n);else if(Z(e))for(let s=0;s{It(s,t,n)});else if(tl(e)){for(const s in e)It(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&It(e[s],t,n)}return e}/** -* @vue/runtime-core v3.5.40 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function ls(e,t,n,s){try{return s?e(...s):e()}catch(r){Ks(r,t,n)}}function at(e,t,n,s){if(te(e)){const r=ls(e,t,n,s);return r&&Zi(r)&&r.catch(o=>{Ks(o,t,n)}),r}if(Z(e)){const r=[];for(let o=0;o>>1,r=Je[s],o=Xn(r);o=Xn(n)?Je.push(e):Je.splice(Gu(t),0,e),e.flags|=1,Cl()}}function Cl(){Ts||(Ts=Rl.then(Tl))}function zu(e){Z(e)?xn.push(...e):Ht&&e.id===-1?Ht.splice(hn+1,0,e):e.flags&1||(xn.push(e),e.flags|=1),Cl()}function Io(e,t,n=xt+1){for(;nXn(n)-Xn(s));if(xn.length=0,Ht){Ht.push(...t);return}for(Ht=t,hn=0;hne.id==null?e.flags&2?-1:1/0:e.id;function Tl(e){try{for(xt=0;xt{s._d&&Is(-1);const o=Os(t),i=Dt.length;let l;try{l=e(...r)}finally{for(let a=Dt.length;a>i;a--)ao();Os(o),s._d&&Is(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function se(e,t){if(Fe===null)return e;const n=Xs(Fe),s=e.dirs||(e.dirs=[]);for(let r=0;r1)return n&&te(t)?t.call(s&&s.proxy):t}}const Ju=Symbol.for("v-scx"),Xu=()=>kt(Ju);function ws(e,t,n){return Pl(e,t,n)}function Pl(e,t,n=_e){const{immediate:s,deep:r,flush:o,once:i}=n,l=Ie({},n),a=t&&s||!t&&o!=="post";let u;if(es){if(o==="sync"){const m=Xu();u=m.__watcherHandles||(m.__watcherHandles=[])}else if(!a){const m=()=>{};return m.stop=Et,m.resume=Et,m.pause=Et,m}}const c=He;l.call=(m,R,A)=>at(m,c,R,A);let f=!1;o==="post"?l.scheduler=m=>{Ge(m,c&&c.suspense)}:o!=="sync"&&(f=!0,l.scheduler=(m,R)=>{R?m():ro(m)}),l.augmentJob=m=>{t&&(m.flags|=4),f&&(m.flags|=2,c&&(m.id=c.uid,m.i=c))};const d=Ku(e,t,l);return es&&(u?u.push(d):a&&d()),d}function Qu(e,t,n){const s=this.proxy,r=Se(e)?e.includes(".")?Nl(s,e):()=>s[e]:e.bind(s,s);let o;te(t)?o=t:(o=t.handler,n=t);const i=as(this),l=Pl(r,o.bind(s),n);return i(),l}function Nl(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;re.__isTeleport,en=e=>e&&(e.disabled||e.disabled===""),Yu=e=>e&&(e.defer||e.defer===""),ko=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Do=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ar=(e,t)=>{const n=e&&e.to;return Se(n)?t?t(n):null:n},Zu={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,o,i,l,a,u){const{mc:c,pc:f,pbc:d,o:{insert:m,querySelector:R,createText:A,createComment:O,parentNode:E}}=u,w=en(t.props);let{dynamicChildren:v}=t;const g=(C,U,k)=>{C.shapeFlag&16&&c(C.children,U,k,r,o,i,l,a)},x=(C=t)=>{const U=en(C.props),k=C.target=Ar(C.props,R),Q=Tr(k,C,A,m);k&&(i!=="svg"&&ko(k)?i="svg":i!=="mathml"&&Do(k)&&(i="mathml"),r&&r.isCE&&(r.ce._teleportTargets||(r.ce._teleportTargets=new Set)).add(k),U||(g(C,k,Q),Vn(C,!1)))},I=C=>{const U=()=>{if(jt.get(C)===U){if(jt.delete(C),en(C.props)){const k=E(C.el)||n;g(C,k,C.anchor),Vn(C,!0)}x(C)}};jt.set(C,U),Ge(U,o)};if(e==null){const C=t.el=A(""),U=t.anchor=A("");if(m(C,n,s),m(U,n,s),Yu(t.props)||o&&o.pendingBranch){I(t);return}w&&(g(t,n,U),Vn(t,!0)),x()}else{t.el=e.el;const C=t.anchor=e.anchor,U=jt.get(e);if(U){U.flags|=8,jt.delete(e),I(t);return}t.targetStart=e.targetStart;const k=t.target=e.target,Q=t.targetAnchor=e.targetAnchor,G=en(e.props),B=G?n:k,oe=G?C:Q;if(i==="svg"||ko(k)?i="svg":(i==="mathml"||Do(k))&&(i="mathml"),v?(d(e.dynamicChildren,v,B,r,o,i,l),lo(e,t,!0)):a||f(e,t,B,oe,r,o,i,l,!1),w)G?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ys(t,n,C,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const ie=Ar(t.props,R);ie&&(t.target=ie,ys(t,ie,null,u,0))}else G&&ys(t,k,Q,u,1);Vn(t,w)}},remove(e,t,n,{um:s,o:{remove:r}},o){const{shapeFlag:i,children:l,anchor:a,targetStart:u,targetAnchor:c,target:f,props:d}=e,m=en(d),R=o||!m,A=jt.get(e);if(A&&(A.flags|=8,jt.delete(e)),f&&(r(u),r(c)),o&&r(a),!A&&(m||f)&&i&16)for(let O=0;O{e.isMounted=!0}),Hl(()=>{e.isUnmounting=!0}),e}const rt=[Function,Array],$l={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:rt,onEnter:rt,onAfterEnter:rt,onEnterCancelled:rt,onBeforeLeave:rt,onLeave:rt,onAfterLeave:rt,onLeaveCancelled:rt,onBeforeAppear:rt,onAppear:rt,onAfterAppear:rt,onAppearCancelled:rt},Ll=e=>{const t=e.subTree;return t.component?Ll(t.component):t},nc={name:"BaseTransition",props:$l,setup(e,{slots:t}){const n=pa(),s=tc();return()=>{const r=t.default&&Vl(t.default(),!0),o=r&&r.length?Ul(r):n.subTree?ce():void 0;if(!o)return;const i=pe(e),{mode:l}=i;if(s.isLeaving)return lr(o);const a=$o(o);if(!a)return lr(o);let u=Or(a,i,s,n,f=>u=f);a.type!==je&&Qn(a,u);let c=n.subTree&&$o(n.subTree);if(c&&c.type!==je&&!tn(c,a)&&Ll(n).type!==je){let f=Or(c,i,s,n);if(Qn(c,f),l==="out-in"&&a.type!==je)return s.isLeaving=!0,f.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,c=void 0},lr(o);l==="in-out"&&a.type!==je?f.delayLeave=(d,m,R)=>{const A=Fl(s,c);A[String(c.key)]=c,d[ot]=()=>{m(),d[ot]=void 0,delete u.delayedLeave,c=void 0},u.delayedLeave=()=>{R(),delete u.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return o}}};function Ul(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==je){t=n;break}}return t}const sc=nc;function Fl(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Or(e,t,n,s,r){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:a,onEnter:u,onAfterEnter:c,onEnterCancelled:f,onBeforeLeave:d,onLeave:m,onAfterLeave:R,onLeaveCancelled:A,onBeforeAppear:O,onAppear:E,onAfterAppear:w,onAppearCancelled:v}=t,g=String(e.key),x=Fl(n,e),I=(k,Q)=>{k&&at(k,s,9,Q)},C=(k,Q)=>{const G=Q[1];I(k,Q),Z(k)?k.every(B=>B.length<=1)&&G():k.length<=1&&G()},U={mode:i,persisted:l,beforeEnter(k){let Q=a;if(!n.isMounted)if(o)Q=O||a;else return;k[ot]&&k[ot](!0);const G=x[g];G&&tn(e,G)&&G.el[ot]&&G.el[ot](),I(Q,[k])},enter(k){if(x[g]===e)return;let Q=u,G=c,B=f;if(!n.isMounted)if(o)Q=E||u,G=w||c,B=v||f;else return;let oe=!1;k[$n]=ke=>{oe||(oe=!0,ke?I(B,[k]):I(G,[k]),U.delayedLeave&&U.delayedLeave(),k[$n]=void 0)};const ie=k[$n].bind(null,!1);Q?C(Q,[k,ie]):ie()},leave(k,Q){const G=String(e.key);if(k[$n]&&k[$n](!0),n.isUnmounting)return Q();I(d,[k]);let B=!1;k[ot]=ie=>{B||(B=!0,Q(),ie?I(A,[k]):I(R,[k]),k[ot]=void 0,x[G]===e&&delete x[G])};const oe=k[ot].bind(null,!1);x[G]=e,m?C(m,[k,oe]):oe()},clone(k){const Q=Or(k,t,n,s,r);return r&&r(Q),Q}};return U}function lr(e){if(Ws(e))return e=Wt(e),e.children=null,e}function $o(e){if(!Ws(e))return kl(e.type)&&e.children?Ul(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&te(n.default))return n.default()}}function Qn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Qn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Vl(e,t=!1,n){let s=[],r=0;for(let o=0;o1)for(let o=0;oKn(A,t&&(Z(t)?t[O]:t),n,s,r));return}if(vn(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Kn(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?Xs(s.component):s.el,i=r?null:o,{i:l,r:a}=e,u=t&&t.r,c=l.refs===_e?l.refs={}:l.refs,f=l.setupState,d=pe(f),m=f===_e?Yi:A=>Lo(c,A)?!1:me(d,A),R=(A,O)=>!(O&&Lo(c,O));if(u!=null&&u!==a){if(Uo(t),Se(u))c[u]=null,m(u)&&(f[u]=null);else if(qe(u)){const A=t;R(u,A.k)&&(u.value=null),A.k&&(c[A.k]=null)}}if(te(a))ls(a,l,12,[i,c]);else{const A=Se(a),O=qe(a);if(A||O){const E=()=>{if(e.f){const w=A?m(a)?f[a]:c[a]:R()||!e.k?a.value:c[e.k];if(r)Z(w)&&Wr(w,o);else if(Z(w))w.includes(o)||w.push(o);else if(A)c[a]=[o],m(a)&&(f[a]=c[a]);else{const v=[o];R(a,e.k)&&(a.value=v),e.k&&(c[e.k]=v)}}else A?(c[a]=i,m(a)&&(f[a]=i)):O&&(R(a,e.k)&&(a.value=i),e.k&&(c[e.k]=i))};if(i){const w=()=>{E(),Ps.delete(e)};w.id=-1,Ps.set(e,w),Ge(w,n)}else Uo(e),E()}}}function Uo(e){const t=Ps.get(e);t&&(t.flags|=8,Ps.delete(e))}Hs().requestIdleCallback;Hs().cancelIdleCallback;const vn=e=>!!e.type.__asyncLoader,Ws=e=>e.type.__isKeepAlive;function rc(e,t){jl(e,"a",t)}function oc(e,t){jl(e,"da",t)}function jl(e,t,n=He){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Gs(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Ws(r.parent.vnode)&&ic(s,t,n,r),r=r.parent}}function ic(e,t,n,s){const r=Gs(t,e,s,!0);ql(()=>{Wr(s[t],r)},n)}function Gs(e,t,n=He,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{Lt();const l=as(n),a=at(t,n,e,i);return l(),Ut(),a});return s?r.unshift(o):r.push(o),o}}const Vt=e=>(t,n=He)=>{(!es||e==="sp")&&Gs(e,(...s)=>t(...s),n)},lc=Vt("bm"),Rt=Vt("m"),ac=Vt("bu"),uc=Vt("u"),Hl=Vt("bum"),ql=Vt("um"),cc=Vt("sp"),fc=Vt("rtg"),dc=Vt("rtc");function pc(e,t=He){Gs("ec",e,t)}const Kl="components";function Pr(e,t){return Gl(Kl,e,!0,t)||e}const Wl=Symbol.for("v-ndc");function hc(e){return Se(e)?Gl(Kl,e,!1)||e:e||Wl}function Gl(e,t,n=!0,s=!1){const r=Fe||He;if(r){const o=r.type;{const l=Qc(o,!1);if(l&&(l===t||l===Qe(t)||l===Bs(Qe(t))))return o}const i=Fo(r[e]||o[e],t)||Fo(r.appContext[e],t);return!i&&s?o:i}}function Fo(e,t){return e&&(e[t]||e[Qe(t)]||e[Bs(Qe(t))])}function Ne(e,t,n,s){let r;const o=n,i=Z(e);if(i||Se(e)){const l=i&&on(e);let a=!1,u=!1;l&&(a=!it(e),u=Ft(e),e=qs(e)),r=new Array(e.length);for(let c=0,f=e.length;ct(l,a,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let a=0,u=l.length;a0;return t!=="default"&&(u.name=t),D(),an(fe,null,[we("slot",u,s)],c?-2:64)}let i=e[t];i&&i._c&&(i._d=!1);const l=Dt.length;D();let a;try{const u=i&&zl(i(n)),c=n.key||o||u&&u.key;a=an(fe,{key:(c&&!ct(c)?c:`_${t}`)+(!u&&s?"_fb":"")},u||(s?s():[]),u&&e._===1?64:-2)}catch(u){for(let c=Dt.length;c>l;c--)ao();throw u}finally{i&&i._c&&(i._d=!0)}return a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),a}function zl(e){return e.some(t=>Zn(t)?!(t.type===je||t.type===fe&&!zl(t.children)):!0)?e:null}const Nr=e=>e?ha(e)?Xs(e):Nr(e.parent):null,Wn=Ie(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=>Nr(e.parent),$root:e=>Nr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Xl(e),$forceUpdate:e=>e.f||(e.f=()=>{ro(e.update)}),$nextTick:e=>e.n||(e.n=so.bind(e.proxy)),$watch:e=>Qu.bind(e)}),ar=(e,t)=>e!==_e&&!e.__isScriptSetup&&me(e,t),mc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:a}=e;if(t[0]!=="$"){const d=i[t];if(d!==void 0)switch(d){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(ar(s,t))return i[t]=1,s[t];if(r!==_e&&me(r,t))return i[t]=2,r[t];if(me(o,t))return i[t]=3,o[t];if(n!==_e&&me(n,t))return i[t]=4,n[t];Ir&&(i[t]=0)}}const u=Wn[t];let c,f;if(u)return t==="$attrs"&&Be(e.attrs,"get",""),u(e);if((c=l.__cssModules)&&(c=c[t]))return c;if(n!==_e&&me(n,t))return i[t]=4,n[t];if(f=a.config.globalProperties,me(f,t))return f[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return ar(r,t)?(r[t]=n,!0):s!==_e&&me(s,t)?(s[t]=n,!0):me(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:o,type:i}},l){let a;return!!(n[l]||e!==_e&&l[0]!=="$"&&me(e,l)||ar(t,l)||me(o,l)||me(s,l)||me(Wn,l)||me(r.config.globalProperties,l)||(a=i.__cssModules)&&a[l])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:me(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Mo(e){return Z(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Ir=!0;function gc(e){const t=Xl(e),n=e.proxy,s=e.ctx;Ir=!1,t.beforeCreate&&Bo(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:a,inject:u,created:c,beforeMount:f,mounted:d,beforeUpdate:m,updated:R,activated:A,deactivated:O,beforeDestroy:E,beforeUnmount:w,destroyed:v,unmounted:g,render:x,renderTracked:I,renderTriggered:C,errorCaptured:U,serverPrefetch:k,expose:Q,inheritAttrs:G,components:B,directives:oe,filters:ie}=t;if(u&&yc(u,s,null),i)for(const ae in i){const ue=i[ae];te(ue)&&(s[ae]=ue.bind(n))}if(r){const ae=r.call(n,n);ge(ae)&&(e.data=zt(ae))}if(Ir=!0,o)for(const ae in o){const ue=o[ae],nt=te(ue)?ue.bind(n,n):te(ue.get)?ue.get.bind(n,n):Et,De=!te(ue)&&te(ue.set)?ue.set.bind(n):Et,ye=Xe({get:nt,set:De});Object.defineProperty(s,ae,{enumerable:!0,configurable:!0,get:()=>ye.value,set:Re=>ye.value=Re})}if(l)for(const ae in l)Jl(l[ae],s,n,ae);if(a){const ae=te(a)?a.call(n):a;Reflect.ownKeys(ae).forEach(ue=>{_s(ue,ae[ue])})}c&&Bo(c,e,"c");function xe(ae,ue){Z(ue)?ue.forEach(nt=>ae(nt.bind(n))):ue&&ae(ue.bind(n))}if(xe(lc,f),xe(Rt,d),xe(ac,m),xe(uc,R),xe(rc,A),xe(oc,O),xe(pc,U),xe(dc,I),xe(fc,C),xe(Hl,w),xe(ql,g),xe(cc,k),Z(Q))if(Q.length){const ae=e.exposed||(e.exposed={});Q.forEach(ue=>{Object.defineProperty(ae,ue,{get:()=>n[ue],set:nt=>n[ue]=nt,enumerable:!0})})}else e.exposed||(e.exposed={});x&&e.render===Et&&(e.render=x),G!=null&&(e.inheritAttrs=G),B&&(e.components=B),oe&&(e.directives=oe),k&&Bl(e)}function yc(e,t,n=Et){Z(e)&&(e=kr(e));for(const s in e){const r=e[s];let o;ge(r)?"default"in r?o=kt(r.from||s,r.default,!0):o=kt(r.from||s):o=kt(r),qe(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function Bo(e,t,n){at(Z(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Jl(e,t,n,s){let r=s.includes(".")?Nl(n,s):()=>n[s];if(Se(e)){const o=t[e];te(o)&&ws(r,o)}else if(te(e))ws(r,e.bind(n));else if(ge(e))if(Z(e))e.forEach(o=>Jl(o,t,n,s));else{const o=te(e.handler)?e.handler.bind(n):t[e.handler];te(o)&&ws(r,o,e)}}function Xl(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let a;return l?a=l:!r.length&&!n&&!s?a=t:(a={},r.length&&r.forEach(u=>Ns(a,u,i,!0)),Ns(a,t,i)),ge(t)&&o.set(t,a),a}function Ns(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Ns(e,o,n,!0),r&&r.forEach(i=>Ns(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=bc[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const bc={data:jo,props:Ho,emits:Ho,methods:Mn,computed:Mn,beforeCreate:We,created:We,beforeMount:We,mounted:We,beforeUpdate:We,updated:We,beforeDestroy:We,beforeUnmount:We,destroyed:We,unmounted:We,activated:We,deactivated:We,errorCaptured:We,serverPrefetch:We,components:Mn,directives:Mn,watch:vc,provide:jo,inject:xc};function jo(e,t){return t?e?function(){return Ie(te(e)?e.call(this,this):e,te(t)?t.call(this,this):t)}:t:e}function xc(e,t){return Mn(kr(e),kr(t))}function kr(e){if(Z(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Qe(t)}Modifiers`]||e[`${Gt(t)}Modifiers`];function Sc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||_e;let r=n;const o=t.startsWith("update:"),i=o&&Ec(s,t.slice(7));i&&(i.trim&&(r=n.map(c=>Se(c)?c.trim():c)),i.number&&(r=n.map(js)));let l,a=s[l=nr(t)]||s[l=nr(Qe(t))];!a&&o&&(a=s[l=nr(Gt(t))]),a&&at(a,e,6,r);const u=s[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,at(u,e,6,r)}}const Rc=new WeakMap;function Yl(e,t,n=!1){const s=n?Rc:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!te(e)){const a=u=>{const c=Yl(u,t,!0);c&&(l=!0,Ie(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!l?(ge(e)&&s.set(e,null),null):(Z(o)?o.forEach(a=>i[a]=null):Ie(i,o),ge(e)&&s.set(e,i),i)}function zs(e,t){return!e||!Fs(t)?!1:(t=t.slice(2),t=t==="Once"?t:t.replace(/Once$/,""),me(e,t[0].toLowerCase()+t.slice(1))||me(e,Gt(t))||me(e,t))}function qo(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:a,render:u,renderCache:c,props:f,data:d,setupState:m,ctx:R,inheritAttrs:A}=e,O=Os(e);let E,w;try{if(n.shapeFlag&4){const g=r||s,x=g;E=_t(u.call(x,g,c,f,m,d,R)),w=l}else{const g=t;E=_t(g.length>1?g(f,{attrs:l,slots:i,emit:a}):g(f,null)),w=t.props?l:Cc(l)}}catch(g){Dt.length=0,Ks(g,e,1),E=we(je)}let v=E;if(w&&A!==!1){const g=Object.keys(w),{shapeFlag:x}=v;g.length&&x&7&&(o&&g.some(Vs)&&(w=Ac(w,o)),v=Wt(v,w,!1,!0))}return n.dirs&&(v=Wt(v,null,!1,!0),v.dirs=v.dirs?v.dirs.concat(n.dirs):n.dirs),n.transition&&Qn(v,n.transition),E=v,Os(O),E}const Cc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Fs(n))&&((t||(t={}))[n]=e[n]);return t},Ac=(e,t)=>{const n={};for(const s in e)(!Vs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Tc(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:a}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return s?Ko(s,i,u):!!i;if(a&8){const c=t.dynamicProps;for(let f=0;fObject.create(ea),na=e=>Object.getPrototypeOf(e)===ea;function Pc(e,t,n,s=!1){const r={},o=ta();e.propsDefaults=Object.create(null),sa(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:_l(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Nc(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=pe(r),[a]=e.propsOptions;let u=!1;if((s||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f{a=!0;const[d,m]=ra(f,t,!0);Ie(i,d),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!a)return ge(e)&&s.set(e,gn),gn;if(Z(o))for(let c=0;ce==="_"||e==="_ctx"||e==="$stable",io=e=>Z(e)?e.map(_t):[_t(e)],kc=(e,t,n)=>{if(t._n)return t;const s=lt((...r)=>io(t(...r)),n);return s._c=!1,s},oa=(e,t,n)=>{const s=e._ctx;for(const r in e){if(oo(r))continue;const o=e[r];if(te(o))t[r]=kc(r,o,s);else if(o!=null){const i=io(o);t[r]=()=>i}}},ia=(e,t)=>{const n=io(t);e.slots.default=()=>n},la=(e,t,n)=>{for(const s in t)(n||!oo(s))&&(e[s]=t[s])},Dc=(e,t,n)=>{const s=e.slots=ta();if(e.vnode.shapeFlag&32){const r=t._;r?(la(s,t,n),n&&nl(s,"_",r,!0)):oa(t,s)}else t&&ia(e,t)},$c=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=_e;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:la(r,t,n):(o=!t.$stable,oa(t,r)),i=t}else t&&(ia(e,t),i={default:1});if(o)for(const l in r)!oo(l)&&i[l]==null&&delete r[l]},Ge=Mc;function Lc(e){return Uc(e)}function Uc(e,t){const n=Hs();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:a,setText:u,setElementText:c,parentNode:f,nextSibling:d,setScopeId:m=Et,insertStaticContent:R}=e,A=(h,y,_,P=null,S=null,T=null,M=void 0,F=null,V=!!y.dynamicChildren)=>{if(h===y)return;h&&!tn(h,y)&&(P=N(h),Re(h,S,T,!0),h=null),y.patchFlag===-2&&(V=!1,y.dynamicChildren=null);const{type:$,ref:J,shapeFlag:W}=y;switch($){case Js:O(h,y,_,P);break;case je:E(h,y,_,P);break;case cr:h==null&&w(y,_,P,M);break;case fe:B(h,y,_,P,S,T,M,F,V);break;default:W&1?x(h,y,_,P,S,T,M,F,V):W&6?oe(h,y,_,P,S,T,M,F,V):(W&64||W&128)&&$.process(h,y,_,P,S,T,M,F,V,X)}J!=null&&S?Kn(J,h&&h.ref,T,y||h,!y):J==null&&h&&h.ref!=null&&Kn(h.ref,null,T,h,!0)},O=(h,y,_,P)=>{if(h==null)s(y.el=l(y.children),_,P);else{const S=y.el=h.el;y.children!==h.children&&u(S,y.children)}},E=(h,y,_,P)=>{h==null?s(y.el=a(y.children||""),_,P):y.el=h.el},w=(h,y,_,P)=>{[h.el,h.anchor]=R(h.children,y,_,P,h.el,h.anchor)},v=({el:h,anchor:y},_,P)=>{let S;for(;h&&h!==y;)S=d(h),s(h,_,P),h=S;s(y,_,P)},g=({el:h,anchor:y})=>{let _;for(;h&&h!==y;)_=d(h),r(h),h=_;r(y)},x=(h,y,_,P,S,T,M,F,V)=>{if(y.type==="svg"?M="svg":y.type==="math"&&(M="mathml"),h==null)I(y,_,P,S,T,M,F,V);else{const $=h.el&&h.el._isVueCE?h.el:null;try{$&&$._beginPatch(),k(h,y,S,T,M,F,V)}finally{$&&$._endPatch()}}},I=(h,y,_,P,S,T,M,F)=>{let V,$;const{props:J,shapeFlag:W,transition:Y,dirs:ee}=h;if(V=h.el=i(h.type,T,J&&J.is,J),W&8?c(V,h.children):W&16&&U(h.children,V,null,P,S,ur(h,T),M,F),ee&&Jt(h,null,P,"created"),C(V,h,h.scopeId,M,P),J){for(const ve in J)ve!=="value"&&!jn(ve)&&o(V,ve,null,J[ve],T,P);"value"in J&&o(V,"value",null,J.value,T),($=J.onVnodeBeforeMount)&&bt($,P,h)}ee&&Jt(h,null,P,"beforeMount");const le=Fc(S,Y);le&&Y.beforeEnter(V),s(V,y,_),(($=J&&J.onVnodeMounted)||le||ee)&&Ge(()=>{try{$&&bt($,P,h),le&&Y.enter(V),ee&&Jt(h,null,P,"mounted")}finally{}},S)},C=(h,y,_,P,S)=>{if(_&&m(h,_),P)for(let T=0;T{for(let $=V;${const F=y.el=h.el;let{patchFlag:V,dynamicChildren:$,dirs:J}=y;V|=h.patchFlag&16;const W=h.props||_e,Y=y.props||_e;let ee;if(_&&Xt(_,!1),(ee=Y.onVnodeBeforeUpdate)&&bt(ee,_,y,h),J&&Jt(y,h,_,"beforeUpdate"),_&&Xt(_,!0),$&&(!h.dynamicChildren||h.dynamicChildren.length!==$.length)&&(V=0,M=!1,$=null),(W.innerHTML&&Y.innerHTML==null||W.textContent&&Y.textContent==null)&&c(F,""),$?Q(h.dynamicChildren,$,F,_,P,ur(y,S),T):M||ue(h,y,F,null,_,P,ur(y,S),T,!1),V>0){if(V&16)G(F,W,Y,_,S);else if(V&2&&W.class!==Y.class&&o(F,"class",null,Y.class,S),V&4&&o(F,"style",W.style,Y.style,S),V&8){const le=y.dynamicProps;for(let ve=0;ve{ee&&bt(ee,_,y,h),J&&Jt(y,h,_,"updated")},P)},Q=(h,y,_,P,S,T,M)=>{for(let F=0;F{if(y!==_){if(y!==_e)for(const T in y)!jn(T)&&!(T in _)&&o(h,T,y[T],null,S,P);for(const T in _){if(jn(T))continue;const M=_[T],F=y[T];M!==F&&T!=="value"&&o(h,T,F,M,S,P)}"value"in _&&o(h,"value",y.value,_.value,S)}},B=(h,y,_,P,S,T,M,F,V)=>{const $=y.el=h?h.el:l(""),J=y.anchor=h?h.anchor:l("");let{patchFlag:W,dynamicChildren:Y,slotScopeIds:ee}=y;ee&&(F=F?F.concat(ee):ee),h==null?(s($,_,P),s(J,_,P),U(y.children||[],_,J,S,T,M,F,V)):W>0&&W&64&&Y&&h.dynamicChildren&&h.dynamicChildren.length===Y.length?(Q(h.dynamicChildren,Y,_,S,T,M,F),(y.key!=null||S&&y===S.subTree)&&lo(h,y,!0)):ue(h,y,_,J,S,T,M,F,V)},oe=(h,y,_,P,S,T,M,F,V)=>{y.slotScopeIds=F,h==null?y.shapeFlag&512?S.ctx.activate(y,_,P,M,V):ie(y,_,P,S,T,M,V):ke(h,y,V)},ie=(h,y,_,P,S,T,M)=>{const F=h.component=Wc(h,P,S);if(Ws(h)&&(F.ctx.renderer=X),Gc(F,!1,M),F.asyncDep){if(S&&S.registerDep(F,xe,M),!h.el){const V=F.subTree=we(je);E(null,V,y,_),h.placeholder=V.el}}else xe(F,h,y,_,S,T,M)},ke=(h,y,_)=>{const P=y.component=h.component;if(Tc(h,y,_))if(P.asyncDep&&!P.asyncResolved){ae(P,y,_);return}else P.next=y,P.update();else y.el=h.el,P.vnode=y},xe=(h,y,_,P,S,T,M)=>{const F=()=>{if(h.isMounted){let{next:W,bu:Y,u:ee,parent:le,vnode:ve}=h;{const gt=aa(h);if(gt){W&&(W.el=ve.el,ae(h,W,M)),gt.asyncDep.then(()=>{Ge(()=>{h.isUnmounted||$()},S)});return}}let be=W,Oe;Xt(h,!1),W?(W.el=ve.el,ae(h,W,M)):W=ve,Y&&vs(Y),(Oe=W.props&&W.props.onVnodeBeforeUpdate)&&bt(Oe,le,W,ve),Xt(h,!0);const $e=qo(h),mt=h.subTree;h.subTree=$e,A(mt,$e,f(mt.el),N(mt),h,S,T),W.el=$e.el,be===null&&Oc(h,$e.el),ee&&Ge(ee,S),(Oe=W.props&&W.props.onVnodeUpdated)&&Ge(()=>bt(Oe,le,W,ve),S)}else{let W;const{el:Y,props:ee}=y,{bm:le,m:ve,parent:be,root:Oe,type:$e}=h,mt=vn(y);Xt(h,!1),le&&vs(le),!mt&&(W=ee&&ee.onVnodeBeforeMount)&&bt(W,be,y),Xt(h,!0);{Oe.ce&&Oe.ce._hasShadowRoot()&&Oe.ce._injectChildStyle($e,h.parent?h.parent.type:void 0);const gt=h.subTree=qo(h);A(null,gt,_,P,h,S,T),y.el=gt.el}if(ve&&Ge(ve,S),!mt&&(W=ee&&ee.onVnodeMounted)){const gt=y;Ge(()=>bt(W,be,gt),S)}(y.shapeFlag&256||be&&vn(be.vnode)&&be.vnode.shapeFlag&256)&&h.a&&Ge(h.a,S),h.isMounted=!0,y=_=P=null}};h.scope.on();const V=h.effect=new ll(F);h.scope.off();const $=h.update=V.run.bind(V),J=h.job=V.runIfDirty.bind(V);J.i=h,J.id=h.uid,V.scheduler=()=>ro(J),Xt(h,!0),$()},ae=(h,y,_)=>{y.component=h;const P=h.vnode.props;h.vnode=y,h.next=null,Nc(h,y.props,P,_),$c(h,y.children,_),Lt(),Io(h),Ut()},ue=(h,y,_,P,S,T,M,F,V=!1)=>{const $=h&&h.children,J=h?h.shapeFlag:0,W=y.children,{patchFlag:Y,shapeFlag:ee}=y;if(Y>0){if(Y&128){De($,W,_,P,S,T,M,F,V);return}else if(Y&256){nt($,W,_,P,S,T,M,F,V);return}}ee&8?(J&16&&ne($,S,T),W!==$&&c(_,W)):J&16?ee&16?De($,W,_,P,S,T,M,F,V):ne($,S,T,!0):(J&8&&c(_,""),ee&16&&U(W,_,P,S,T,M,F,V))},nt=(h,y,_,P,S,T,M,F,V)=>{h=h||gn,y=y||gn;const $=h.length,J=y.length,W=Math.min($,J);let Y;for(Y=0;YJ?ne(h,S,T,!0,!1,W):U(y,_,P,S,T,M,F,V,W)},De=(h,y,_,P,S,T,M,F,V)=>{let $=0;const J=y.length;let W=h.length-1,Y=J-1;for(;$<=W&&$<=Y;){const ee=h[$],le=y[$]=V?Pt(y[$]):_t(y[$]);if(tn(ee,le))A(ee,le,_,null,S,T,M,F,V);else break;$++}for(;$<=W&&$<=Y;){const ee=h[W],le=y[Y]=V?Pt(y[Y]):_t(y[Y]);if(tn(ee,le))A(ee,le,_,null,S,T,M,F,V);else break;W--,Y--}if($>W){if($<=Y){const ee=Y+1,le=eeY)for(;$<=W;)Re(h[$],S,T,!0),$++;else{const ee=$,le=$,ve=new Map;for($=le;$<=Y;$++){const et=y[$]=V?Pt(y[$]):_t(y[$]);et.key!=null&&ve.set(et.key,$)}let be,Oe=0;const $e=Y-le+1;let mt=!1,gt=0;const kn=new Array($e);for($=0;$<$e;$++)kn[$]=0;for($=ee;$<=W;$++){const et=h[$];if(Oe>=$e){Re(et,S,T,!0);continue}let yt;if(et.key!=null)yt=ve.get(et.key);else for(be=le;be<=Y;be++)if(kn[be-le]===0&&tn(et,y[be])){yt=be;break}yt===void 0?Re(et,S,T,!0):(kn[yt-le]=$+1,yt>=gt?gt=yt:mt=!0,A(et,y[yt],_,null,S,T,M,F,V),Oe++)}const Ro=mt?Vc(kn):gn;for(be=Ro.length-1,$=$e-1;$>=0;$--){const et=le+$,yt=y[et],Co=y[et+1],Ao=et+1{const{el:T,type:M,transition:F,children:V,shapeFlag:$}=h;if($&6){ye(h.component.subTree,y,_,P);return}if($&128){h.suspense.move(y,_,P);return}if($&64){M.move(h,y,_,X);return}if(M===fe){s(T,y,_);for(let W=0;WF.enter(T),S));else{const{leave:W,delayLeave:Y,afterLeave:ee}=F,le=()=>{h.ctx.isUnmounted?r(T):s(T,y,_)},ve=()=>{const be=T._isLeaving||!!T[ot];T._isLeaving&&T[ot](!0),F.persisted&&!be?le():W(T,()=>{le(),ee&&ee()})};Y?Y(T,le,ve):ve()}else s(T,y,_)},Re=(h,y,_,P=!1,S=!1)=>{const{type:T,props:M,ref:F,children:V,dynamicChildren:$,shapeFlag:J,patchFlag:W,dirs:Y,cacheIndex:ee,memo:le}=h;if(W===-2&&(S=!1),F!=null&&(Lt(),Kn(F,null,_,h,!0),Ut()),ee!=null&&(y.renderCache[ee]=void 0),J&256){y.ctx.deactivate(h);return}const ve=J&1&&Y,be=!vn(h);let Oe;if(be&&(Oe=M&&M.onVnodeBeforeUnmount)&&bt(Oe,y,h),J&6)ht(h.component,_,P);else{if(J&128){h.suspense.unmount(_,P);return}ve&&Jt(h,null,y,"beforeUnmount"),J&64?h.type.remove(h,y,_,X,P):$&&!$.hasOnce&&(T!==fe||W>0&&W&64)?ne($,y,_,!1,!0):(T===fe&&W&384||!S&&J&16)&&ne(V,y,_),P&&Ze(h)}const $e=le!=null&&ee==null;(be&&(Oe=M&&M.onVnodeUnmounted)||ve||$e)&&Ge(()=>{Oe&&bt(Oe,y,h),ve&&Jt(h,null,y,"unmounted"),$e&&(h.el=null)},_)},Ze=h=>{const{type:y,el:_,anchor:P,transition:S}=h;if(y===fe){st(_,P);return}if(y===cr){g(h);return}const T=()=>{r(_),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(h.shapeFlag&1&&S&&!S.persisted){const{leave:M,delayLeave:F}=S,V=()=>M(_,T);F?F(h.el,T,V):V()}else T()},st=(h,y)=>{let _;for(;h!==y;)_=d(h),r(h),h=_;r(y)},ht=(h,y,_)=>{const{bum:P,scope:S,job:T,subTree:M,um:F,m:V,a:$}=h;Go(V),Go($),P&&vs(P),S.stop(),T&&(T.flags|=8,Re(M,h,y,_)),F&&Ge(F,y),Ge(()=>{h.isUnmounted=!0},y)},ne=(h,y,_,P=!1,S=!1,T=0)=>{for(let M=T;M{if(h.shapeFlag&6)return N(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const y=d(h.anchor||h.el),_=y&&y[Il];return _?d(_):y};let K=!1;const H=(h,y,_)=>{let P;h==null?y._vnode&&(Re(y._vnode,null,null,!0),P=y._vnode.component):A(y._vnode||null,h,y,null,null,null,_),y._vnode=h,K||(K=!0,Io(P),Al(),K=!1)},X={p:A,um:Re,m:ye,r:Ze,mt:ie,mc:U,pc:ue,pbc:Q,n:N,o:e};return{render:H,hydrate:void 0,createApp:wc(H)}}function ur({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Xt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Fc(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function lo(e,t,n=!1){const s=e.children,r=t.children;if(Z(s)&&Z(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function aa(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:aa(t)}function Go(e){if(e)for(let t=0;te.__isSuspense;function Mc(e,t){t&&t.pendingBranch?Z(e)?t.effects.push(...e):t.effects.push(e):zu(e)}const fe=Symbol.for("v-fgt"),Js=Symbol.for("v-txt"),je=Symbol.for("v-cmt"),cr=Symbol.for("v-stc"),Dt=[];let tt=null;function D(e=!1){Dt.push(tt=e?null:[])}function ao(){Dt.pop(),tt=Dt[Dt.length-1]||null}let Yn=1;function Is(e,t=!1){Yn+=e,e<0&&tt&&t&&(tt.hasOnce=!0)}function fa(e){return e.dynamicChildren=Yn>0?tt||gn:null,ao(),Yn>0&&tt&&tt.push(e),e}function L(e,t,n,s,r,o){return fa(p(e,t,n,s,r,o,!0))}function an(e,t,n,s,r){return fa(we(e,t,n,s,r,!0))}function Zn(e){return e?e.__v_isVNode===!0:!1}function tn(e,t){return e.type===t.type&&e.key===t.key}const da=({key:e})=>e??null,Es=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Se(e)||qe(e)||te(e)?{i:Fe,r:e,k:t,f:!!n}:e:null);function p(e,t=null,n=null,s=0,r=null,o=e===fe?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&da(t),ref:t&&Es(t),scopeId:Ol,slotScopeIds:null,children:n,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:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Fe};return l?(ks(a,n),o&128&&e.normalize(a)):n&&(a.shapeFlag|=Se(n)?8:16),Yn>0&&!i&&tt&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&tt.push(a),a}const we=Bc;function Bc(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Wl)&&(e=je),Zn(e)){const l=Wt(e,t,!0);return n&&ks(l,n),Yn>0&&!o&&tt&&(l.shapeFlag&6?tt[tt.indexOf(e)]=l:tt.push(l)),l.patchFlag=-2,l}if(Yc(e)&&(e=e.__vccOpts),t){t=jc(t);let{class:l,style:a}=t;l&&!Se(l)&&(t.class=Ve(l)),ge(a)&&(no(a)&&!Z(a)&&(a=Ie({},a)),t.style=zr(a))}const i=Se(e)?1:ca(e)?128:kl(e)?64:ge(e)?4:te(e)?2:0;return p(e,t,n,s,r,i,o,!0)}function jc(e){return e?no(e)||na(e)?Ie({},e):e:null}function Wt(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:a}=e,u=t?Hc(r||{},t):r,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&da(u),ref:t&&t.ref?n&&o?Z(o)?o.concat(Es(t)):[o,Es(t)]:Es(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==fe?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Wt(e.ssContent),ssFallback:e.ssFallback&&Wt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&s&&Qn(c,a.clone(c)),c}function un(e=" ",t=0){return we(Js,null,e,t)}function ce(e="",t=!1){return t?(D(),an(je,null,e)):we(je,null,e)}function _t(e){return e==null||typeof e=="boolean"?we(je):Z(e)?we(fe,null,e.slice()):Zn(e)?Pt(e):we(Js,null,String(e))}function Pt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Wt(e)}function ks(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(Z(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),ks(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!na(t)?t._ctx=Fe:r===3&&Fe&&(Fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else if(te(t)){if(s&65){ks(e,{default:t});return}t={default:t,_ctx:Fe},n=32}else t=String(t),s&64?(n=16,t=[un(t)]):n=8;e.children=t,e.shapeFlag|=n}function Hc(...e){const t={};for(let n=0;nHe||Fe;let Ds,$r;{const e=Hs(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Ds=t("__VUE_INSTANCE_SETTERS__",n=>He=n),$r=t("__VUE_SSR_SETTERS__",n=>es=n)}const as=e=>{const t=He;return Ds(e),e.scope.on(),()=>{e.scope.off(),Ds(t)}},zo=()=>{He&&He.scope.off(),Ds(null)};function ha(e){return e.vnode.shapeFlag&4}let es=!1;function Gc(e,t=!1,n=!1){t&&$r(t);const{props:s,children:r}=e.vnode,o=ha(e);Pc(e,s,o,t),Dc(e,r,n||t);const i=o?zc(e,t):void 0;return t&&$r(!1),i}function zc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,mc);const{setup:s}=n;if(s){Lt();const r=e.setupContext=s.length>1?Xc(e):null,o=as(e),i=ls(s,e,0,[e.props,r]),l=Zi(i);if(Ut(),o(),(l||e.sp)&&!vn(e)&&Bl(e),l){if(i.then(zo,zo),t)return i.then(a=>{Jo(e,a)}).catch(a=>{Ks(a,e,0)});e.asyncDep=i}else Jo(e,i)}else ma(e)}function Jo(e,t,n){te(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ge(t)&&(e.setupState=Sl(t)),ma(e)}function ma(e,t,n){const s=e.type;e.render||(e.render=s.render||Et);{const r=as(e);Lt();try{gc(e)}finally{Ut(),r()}}}const Jc={get(e,t){return Be(e,"get",""),e[t]}};function Xc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Jc),slots:e.slots,emit:e.emit,expose:t}}function Xs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Sl(wl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Wn)return Wn[n](e)},has(t,n){return n in t||n in Wn}})):e.proxy}function Qc(e,t=!0){return te(e)?e.displayName||e.name:e.name||t&&e.__name}function Yc(e){return te(e)&&"__vccOpts"in e}const Xe=(e,t)=>Hu(e,t,es);function uo(e,t,n){try{Is(-1);const s=arguments.length;return s===2?ge(t)&&!Z(t)?Zn(t)?we(e,null,[t]):we(e,t):we(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Zn(n)&&(n=[n]),we(e,t,n))}finally{Is(1)}}const Zc="3.5.40";/** -* @vue/runtime-dom v3.5.40 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Lr;const Xo=typeof window<"u"&&window.trustedTypes;if(Xo)try{Lr=Xo.createPolicy("vue",{createHTML:e=>e})}catch{}const ga=Lr?e=>Lr.createHTML(e):e=>e,ef="http://www.w3.org/2000/svg",tf="http://www.w3.org/1998/Math/MathML",Ot=typeof document<"u"?document:null,Qo=Ot&&Ot.createElement("template"),nf={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ot.createElementNS(ef,e):t==="mathml"?Ot.createElementNS(tf,e):n?Ot.createElement(e,{is:n}):Ot.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ot.createTextNode(e),createComment:e=>Ot.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ot.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Qo.innerHTML=ga(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Qo.content;if(s==="svg"||s==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Mt="transition",Ln="animation",ts=Symbol("_vtc"),ya={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},sf=Ie({},$l,ya),rf=e=>(e.displayName="Transition",e.props=sf,e),of=rf((e,{slots:t})=>uo(sc,lf(e),t)),Qt=(e,t=[])=>{Z(e)?e.forEach(n=>n(...t)):e&&e(...t)},Yo=e=>e?Z(e)?e.some(t=>t.length>1):e.length>1:!1;function lf(e){const t={};for(const B in e)B in ya||(t[B]=e[B]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=o,appearActiveClass:u=i,appearToClass:c=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,R=af(r),A=R&&R[0],O=R&&R[1],{onBeforeEnter:E,onEnter:w,onEnterCancelled:v,onLeave:g,onLeaveCancelled:x,onBeforeAppear:I=E,onAppear:C=w,onAppearCancelled:U=v}=t,k=(B,oe,ie,ke)=>{B._enterCancelled=ke,Yt(B,oe?c:l),Yt(B,oe?u:i),ie&&ie()},Q=(B,oe)=>{B._isLeaving=!1,Yt(B,f),Yt(B,m),Yt(B,d),oe&&oe()},G=B=>(oe,ie)=>{const ke=B?C:w,xe=()=>k(oe,B,ie);Qt(ke,[oe,xe]),Zo(()=>{Yt(oe,B?a:o),At(oe,B?c:l),Yo(ke)||ei(oe,s,A,xe)})};return Ie(t,{onBeforeEnter(B){Qt(E,[B]),At(B,o),At(B,i)},onBeforeAppear(B){Qt(I,[B]),At(B,a),At(B,u)},onEnter:G(!1),onAppear:G(!0),onLeave(B,oe){B._isLeaving=!0;const ie=()=>Q(B,oe);At(B,f),B._enterCancelled?(At(B,d),si(B)):(si(B),At(B,d)),Zo(()=>{B._isLeaving&&(Yt(B,f),At(B,m),Yo(g)||ei(B,s,O,ie))}),Qt(g,[B,ie])},onEnterCancelled(B){k(B,!1,void 0,!0),Qt(v,[B])},onAppearCancelled(B){k(B,!0,void 0,!0),Qt(U,[B])},onLeaveCancelled(B){Q(B),Qt(x,[B])}})}function af(e){if(e==null)return null;if(ge(e))return[fr(e.enter),fr(e.leave)];{const t=fr(e);return[t,t]}}function fr(e){return du(e)}function At(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[ts]||(e[ts]=new Set)).add(t)}function Yt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[ts];n&&(n.delete(t),n.size||(e[ts]=void 0))}function Zo(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let uf=0;function ei(e,t,n,s){const r=e._endId=++uf,o=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:l,propCount:a}=cf(e,t);if(!i)return s();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,d),o()},d=m=>{m.target===e&&++c>=a&&f()};setTimeout(()=>{c(n[R]||"").split(", "),r=s(`${Mt}Delay`),o=s(`${Mt}Duration`),i=ti(r,o),l=s(`${Ln}Delay`),a=s(`${Ln}Duration`),u=ti(l,a);let c=null,f=0,d=0;t===Mt?i>0&&(c=Mt,f=i,d=o.length):t===Ln?u>0&&(c=Ln,f=u,d=a.length):(f=Math.max(i,u),c=f>0?i>u?Mt:Ln:null,d=c?c===Mt?o.length:a.length:0);const m=c===Mt&&/\b(?:transform|all)(?:,|$)/.test(s(`${Mt}Property`).toString());return{type:c,timeout:f,propCount:d,hasTransform:m}}function ti(e,t){for(;e.lengthni(n)+ni(e[s])))}function ni(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function si(e){return(e?e.ownerDocument:document).body.offsetHeight}function ff(e,t,n){const s=e[ts];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const ri=Symbol("_vod"),df=Symbol("_vsh"),pf=Symbol(""),hf=/(?:^|;)\s*display\s*:/;function mf(e,t,n){const s=e.style,r=Se(n);let o=!1;if(n&&!r){if(t)if(Se(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Bn(s,l,"")}else for(const i in t)n[i]==null&&Bn(s,i,"");for(const i in n){i==="display"&&(o=!0);const l=n[i];l!=null?yf(e,i,!Se(t)&&t?t[i]:void 0,l)||Bn(s,i,l):Bn(s,i,"")}}else if(r){if(t!==n){const i=s[pf];i&&(n+=";"+i),s.cssText=n,o=hf.test(n)}}else t&&e.removeAttribute("style");ri in e&&(e[ri]=o?s.display:"",e[df]&&(s.display="none"))}const oi=/\s*!important$/;function Bn(e,t,n){if(Z(n))n.forEach(s=>Bn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=gf(e,t);oi.test(n)?e.setProperty(Gt(s),n.replace(oi,""),"important"):e[s]=n}}const ii=["Webkit","Moz","ms"],dr={};function gf(e,t){const n=dr[t];if(n)return n;let s=Qe(t);if(s!=="filter"&&s in e)return dr[t]=s;s=Bs(s);for(let r=0;rpr||(Ef.then(()=>pr=0),pr=Date.now());function Rf(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;const r=n.value;if(Z(r)){const o=s.stopImmediatePropagation;s.stopImmediatePropagation=()=>{o.call(s),s._stopped=!0};const i=r.slice(),l=[s];for(let a=0;ae.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Cf=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?ff(e,s,i):t==="style"?mf(e,n,s):Fs(t)?Vs(t)||xf(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Af(e,t,s,i))?(ui(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ai(e,t,s,i,o,t!=="value")):e._isVueCE&&(Tf(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!Se(s)))?ui(e,Qe(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),ai(e,t,s,i))};function Af(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&fi(t)&&te(n));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 r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return fi(t)&&Se(n)?!1:t in e}function Tf(e,t){const n=e._def.props;if(!n)return!1;const s=Qe(t);return Array.isArray(n)?n.some(r=>Qe(r)===s):Object.keys(n).some(r=>Qe(r)===s)}const Sn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Z(t)?n=>vs(t,n):t};function Of(e){e.target.composing=!0}function di(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const $t=Symbol("_assign");function pi(e,t,n){return t&&(e=e.trim()),n&&(e=js(e)),e}const Ae={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[$t]=Sn(r);const o=s||r.props&&r.props.type==="number";Kt(e,t?"change":"input",i=>{i.target.composing||e[$t](pi(e.value,n,o))}),(n||o)&&Kt(e,"change",()=>{e.value=pi(e.value,n,o)}),t||(Kt(e,"compositionstart",Of),Kt(e,"compositionend",di),Kt(e,"change",di))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[$t]=Sn(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?js(e.value):e.value,a=t??"";if(l===a)return;const u=e.getRootNode();(u instanceof Document||u instanceof ShadowRoot)&&u.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===a)||(e.value=a)}},wn={deep:!0,created(e,t,n){e[$t]=Sn(n),Kt(e,"change",()=>{const s=e._modelValue,r=ns(e),o=e.checked,i=e[$t];if(Z(s)){const l=Jr(s,r),a=l!==-1;if(o&&!a)i(s.concat(r));else if(!o&&a){const u=[...s];u.splice(l,1),i(u)}}else if(On(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(ba(e,o))})},mounted:hi,beforeUpdate(e,t,n){e[$t]=Sn(n),hi(e,t,n)}};function hi(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(Z(t))r=Jr(t,s.props.value)>-1;else if(On(t))r=t.has(s.props.value);else{if(t===n)return;r=Pn(t,ba(e,!0))}e.checked!==r&&(e.checked=r)}const St={deep:!0,created(e,{value:t,modifiers:{number:n}},s){e._modelValue=t,Kt(e,"change",()=>{const r=Array.prototype.filter.call(e.options,o=>o.selected).map(o=>n?js(ns(o)):ns(o));e[$t](e.multiple?On(e._modelValue)?new Set(r):r:r[0]),e._assigning=!0,so(()=>{e._assigning=!1})}),e[$t]=Sn(s)},mounted(e,{value:t}){mi(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[$t]=Sn(n)},updated(e,{value:t}){e._assigning||mi(e,t)}};function mi(e,t){const n=e.multiple,s=Z(t);if(!(n&&!s&&!On(t))){for(let r=0,o=e.options.length;rString(u)===String(l)):i.selected=Jr(t,l)>-1}else i.selected=t.has(l);else if(Pn(ns(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function ns(e){return"_value"in e?e._value:e.value}function ba(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Pf={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Nf=(e,t)=>{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=(r=>{if(!("key"in r))return;const o=Gt(r.key);if(t.some(i=>i===o||Pf[i]===o))return e(r)}))},If=Ie({patchProp:Cf},nf);let gi;function kf(){return gi||(gi=Lc(If))}const Df=((...e)=>{const t=kf().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Lf(s);if(!r)return;const o=t._component;!te(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,$f(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t});function $f(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Lf(e){return Se(e)?document.querySelector(e):e}/*! - * pinia v2.3.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */const Uf=Symbol();var yi;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(yi||(yi={}));function Ff(){const e=vu(!0),t=e.run(()=>z({}));let n=[],s=[];const r=wl({install(o){r._a=o,o.provide(Uf,r),o.config.globalProperties.$pinia=r,s.forEach(i=>n.push(i)),s=[]},use(o){return this._a?n.push(o):s.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const Vf={__name:"App",setup(e){return(t,n)=>{const s=Pr("router-view");return D(),an(s,null,{default:lt(({Component:r})=>[we(of,{name:"fade",mode:"out-in"},{default:lt(()=>[(D(),an(hc(r)))]),_:2},1024)]),_:1})}}};/*! - * vue-router v4.6.4 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */const mn=typeof document<"u";function xa(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Mf(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&xa(e.default)}const he=Object.assign;function hr(e,t){const n={};for(const s in t){const r=t[s];n[s]=dt(r)?r.map(e):e(r)}return n}const Gn=()=>{},dt=Array.isArray;function bi(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}const va=/#/g,Bf=/&/g,jf=/\//g,Hf=/=/g,qf=/\?/g,_a=/\+/g,Kf=/%5B/g,Wf=/%5D/g,wa=/%5E/g,Gf=/%60/g,Ea=/%7B/g,zf=/%7C/g,Sa=/%7D/g,Jf=/%20/g;function co(e){return e==null?"":encodeURI(""+e).replace(zf,"|").replace(Kf,"[").replace(Wf,"]")}function Xf(e){return co(e).replace(Ea,"{").replace(Sa,"}").replace(wa,"^")}function Ur(e){return co(e).replace(_a,"%2B").replace(Jf,"+").replace(va,"%23").replace(Bf,"%26").replace(Gf,"`").replace(Ea,"{").replace(Sa,"}").replace(wa,"^")}function Qf(e){return Ur(e).replace(Hf,"%3D")}function Yf(e){return co(e).replace(va,"%23").replace(qf,"%3F")}function Zf(e){return Yf(e).replace(jf,"%2F")}function ss(e){if(e==null)return null;try{return decodeURIComponent(""+e)}catch{}return""+e}const ed=/\/$/,td=e=>e.replace(ed,"");function mr(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let a=t.indexOf("?");return a=l>=0&&a>l?-1:a,a>=0&&(s=t.slice(0,a),o=t.slice(a,l>0?l:t.length),r=e(o.slice(1))),l>=0&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=od(s??t,n),{fullPath:s+o+i,path:s,query:r,hash:ss(i)}}function nd(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function xi(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function sd(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Rn(t.matched[s],n.matched[r])&&Ra(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Rn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Ra(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!rd(e[n],t[n]))return!1;return!0}function rd(e,t){return dt(e)?vi(e,t):dt(t)?vi(t,e):(e==null?void 0:e.valueOf())===(t==null?void 0:t.valueOf())}function vi(e,t){return dt(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function od(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const Bt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};let Fr=(function(e){return e.pop="pop",e.push="push",e})({}),gr=(function(e){return e.back="back",e.forward="forward",e.unknown="",e})({});function id(e){if(!e)if(mn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),td(e)}const ld=/^[^#]+#/;function ad(e,t){return e.replace(ld,"#")+t}function ud(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Qs=()=>({left:window.scrollX,top:window.scrollY});function cd(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=ud(r,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 _i(e,t){return(history.state?history.state.position-t:-1)+e}const Vr=new Map;function fd(e,t){Vr.set(e,t)}function dd(e){const t=Vr.get(e);return Vr.delete(e),t}function pd(e){return typeof e=="string"||e&&typeof e=="object"}function Ca(e){return typeof e=="string"||typeof e=="symbol"}let Ce=(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 Aa=Symbol("");Ce.MATCHER_NOT_FOUND+"",Ce.NAVIGATION_GUARD_REDIRECT+"",Ce.NAVIGATION_ABORTED+"",Ce.NAVIGATION_CANCELLED+"",Ce.NAVIGATION_DUPLICATED+"";function Cn(e,t){return he(new Error,{type:e,[Aa]:!0},t)}function Tt(e,t){return e instanceof Error&&Aa in e&&(t==null||!!(e.type&t))}const hd=["params","query","hash"];function md(e){if(typeof e=="string")return e;if(e.path!=null)return e.path;const t={};for(const n of hd)n in e&&(t[n]=e[n]);return JSON.stringify(t,null,2)}function gd(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let s=0;sr&&Ur(r)):[s&&Ur(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function yd(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=dt(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const bd=Symbol(""),Ei=Symbol(""),fo=Symbol(""),Ta=Symbol(""),Mr=Symbol("");function Un(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function qt(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,a)=>{const u=d=>{d===!1?a(Cn(Ce.NAVIGATION_ABORTED,{from:n,to:t})):d instanceof Error?a(d):pd(d)?a(Cn(Ce.NAVIGATION_GUARD_REDIRECT,{from:t,to:d})):(i&&s.enterCallbacks[r]===i&&typeof d=="function"&&i.push(d),l())},c=o(()=>e.call(s&&s.instances[r],t,n,u));let f=Promise.resolve(c);e.length<3&&(f=f.then(u)),f.catch(d=>a(d))})}function yr(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let a=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(xa(a)){const u=(a.__vccOpts||a)[t];u&&o.push(qt(u,n,s,i,l,r))}else{let u=a();o.push(()=>u.then(c=>{if(!c)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const f=Mf(c)?c.default:c;i.mods[l]=c,i.components[l]=f;const d=(f.__vccOpts||f)[t];return d&&qt(d,n,s,i,l,r)()}))}}return o}function xd(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iRn(u,l))?s.push(l):n.push(l));const a=e.matched[i];a&&(t.matched.find(u=>Rn(u,a))||r.push(a))}return[n,s,r]}/*! - * vue-router v4.6.4 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */let vd=()=>location.protocol+"//"+location.host;function Oa(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,l=r.slice(i);return l[0]!=="/"&&(l="/"+l),xi(l,"")}return xi(n,e)+s+r}function _d(e,t,n,s){let r=[],o=[],i=null;const l=({state:d})=>{const m=Oa(e,location),R=n.value,A=t.value;let O=0;if(d){if(n.value=m,t.value=d,i&&i===R){i=null;return}O=A?d.position-A.position:0}else s(m);r.forEach(E=>{E(n.value,R,{delta:O,type:Fr.pop,direction:O?O>0?gr.forward:gr.back:gr.unknown})})};function a(){i=n.value}function u(d){r.push(d);const m=()=>{const R=r.indexOf(d);R>-1&&r.splice(R,1)};return o.push(m),m}function c(){if(document.visibilityState==="hidden"){const{history:d}=window;if(!d.state)return;d.replaceState(he({},d.state,{scroll:Qs()}),"")}}function f(){for(const d of o)d();o=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",c),document.removeEventListener("visibilitychange",c)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",c),document.addEventListener("visibilitychange",c),{pauseListeners:a,listen:u,destroy:f}}function Si(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Qs():null}}function wd(e){const{history:t,location:n}=window,s={value:Oa(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(a,u,c){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+a:vd()+e+a;try{t[c?"replaceState":"pushState"](u,"",d),r.value=u}catch(m){console.error(m),n[c?"replace":"assign"](d)}}function i(a,u){o(a,he({},t.state,Si(r.value.back,a,r.value.forward,!0),u,{position:r.value.position}),!0),s.value=a}function l(a,u){const c=he({},r.value,t.state,{forward:a,scroll:Qs()});o(c.current,c,!0),o(a,he({},Si(s.value,a,null),{position:c.position+1},u),!1),s.value=a}return{location:s,state:r,push:l,replace:i}}function Ed(e){e=id(e);const t=wd(e),n=_d(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=he({location:"",base:e,go:s,createHref:ad.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let nn=(function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e})({});var Pe=(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})(Pe||{});const Sd={type:nn.Static,value:""},Rd=/[a-zA-Z0-9_]/;function Cd(e){if(!e)return[[]];if(e==="/")return[[Sd]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(m){throw new Error(`ERR (${n})/"${u}": ${m}`)}let n=Pe.Static,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,a,u="",c="";function f(){u&&(n===Pe.Static?o.push({type:nn.Static,value:u}):n===Pe.Param||n===Pe.ParamRegExp||n===Pe.ParamRegExpEnd?(o.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:nn.Param,value:u,regexp:c,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),u="")}function d(){u+=a}for(;lt.length?t.length===1&&t[0]===ze.Static+ze.Segment?1:-1:0}function Pa(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Nd={strict:!1,end:!0,sensitive:!1};function Id(e,t,n){const s=Od(Cd(e.path),n),r=he(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function kd(e,t){const n=[],s=new Map;t=bi(Nd,t);function r(f){return s.get(f)}function o(f,d,m){const R=!m,A=Ti(f);A.aliasOf=m&&m.record;const O=bi(t,f),E=[A];if("alias"in f){const g=typeof f.alias=="string"?[f.alias]:f.alias;for(const x of g)E.push(Ti(he({},A,{components:m?m.record.components:A.components,path:x,aliasOf:m?m.record:A})))}let w,v;for(const g of E){const{path:x}=g;if(d&&x[0]!=="/"){const I=d.record.path,C=I[I.length-1]==="/"?"":"/";g.path=d.record.path+(x&&C+x)}if(w=Id(g,d,O),m?m.alias.push(w):(v=v||w,v!==w&&v.alias.push(w),R&&f.name&&!Oi(w)&&i(f.name)),Na(w)&&a(w),A.children){const I=A.children;for(let C=0;C{i(v)}:Gn}function i(f){if(Ca(f)){const d=s.get(f);d&&(s.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&s.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function l(){return n}function a(f){const d=Ld(f,n);n.splice(d,0,f),f.record.name&&!Oi(f)&&s.set(f.record.name,f)}function u(f,d){let m,R={},A,O;if("name"in f&&f.name){if(m=s.get(f.name),!m)throw Cn(Ce.MATCHER_NOT_FOUND,{location:f});O=m.record.name,R=he(Ai(d.params,m.keys.filter(v=>!v.optional).concat(m.parent?m.parent.keys.filter(v=>v.optional):[]).map(v=>v.name)),f.params&&Ai(f.params,m.keys.map(v=>v.name))),A=m.stringify(R)}else if(f.path!=null)A=f.path,m=n.find(v=>v.re.test(A)),m&&(R=m.parse(A),O=m.record.name);else{if(m=d.name?s.get(d.name):n.find(v=>v.re.test(d.path)),!m)throw Cn(Ce.MATCHER_NOT_FOUND,{location:f,currentLocation:d});O=m.record.name,R=he({},d.params,f.params),A=m.stringify(R)}const E=[];let w=m;for(;w;)E.unshift(w.record),w=w.parent;return{name:O,path:A,params:R,matched:E,meta:$d(E)}}e.forEach(f=>o(f));function c(){n.length=0,s.clear()}return{addRoute:o,resolve:u,removeRoute:i,clearRoutes:c,getRoutes:l,getRecordMatcher:r}}function Ai(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Ti(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Dd(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 Dd(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Oi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function $d(e){return e.reduce((t,n)=>he(t,n.meta),{})}function Ld(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;Pa(e,t[o])<0?s=o:n=o+1}const r=Ud(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function Ud(e){let t=e;for(;t=t.parent;)if(Na(t)&&Pa(e,t)===0)return t}function Na({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Pi(e){const t=kt(fo),n=kt(Ta),s=Xe(()=>{const a=bn(e.to);return t.resolve(a)}),r=Xe(()=>{const{matched:a}=s.value,{length:u}=a,c=a[u-1],f=n.matched;if(!c||!f.length)return-1;const d=f.findIndex(Rn.bind(null,c));if(d>-1)return d;const m=Ni(a[u-2]);return u>1&&Ni(c)===m&&f[f.length-1].path!==m?f.findIndex(Rn.bind(null,a[u-2])):d}),o=Xe(()=>r.value>-1&&jd(n.params,s.value.params)),i=Xe(()=>r.value>-1&&r.value===n.matched.length-1&&Ra(n.params,s.value.params));function l(a={}){if(Bd(a)){const u=t[bn(e.replace)?"replace":"push"](bn(e.to)).catch(Gn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:s,href:Xe(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function Fd(e){return e.length===1?e[0]:e}const Vd=Ml({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:Pi,setup(e,{slots:t}){const n=zt(Pi(e)),{options:s}=kt(fo),r=Xe(()=>({[Ii(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Ii(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Fd(t.default(n));return e.custom?o:uo("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Md=Vd;function Bd(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 jd(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!dt(r)||r.length!==s.length||s.some((o,i)=>o.valueOf()!==r[i].valueOf()))return!1}return!0}function Ni(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ii=(e,t,n)=>e??t??n,Hd=Ml({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=kt(Mr),r=Xe(()=>e.route||s.value),o=kt(Ei,0),i=Xe(()=>{let u=bn(o);const{matched:c}=r.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),l=Xe(()=>r.value.matched[i.value]);_s(Ei,Xe(()=>i.value+1)),_s(bd,l),_s(Mr,r);const a=z();return ws(()=>[a.value,l.value,e.name],([u,c,f],[d,m,R])=>{c&&(c.instances[f]=u,m&&m!==c&&u&&u===d&&(c.leaveGuards.size||(c.leaveGuards=m.leaveGuards),c.updateGuards.size||(c.updateGuards=m.updateGuards))),u&&c&&(!m||!Rn(c,m)||!d)&&(c.enterCallbacks[f]||[]).forEach(A=>A(u))},{flush:"post"}),()=>{const u=r.value,c=e.name,f=l.value,d=f&&f.components[c];if(!d)return ki(n.default,{Component:d,route:u});const m=f.props[c],R=m?m===!0?u.params:typeof m=="function"?m(u):m:null,O=uo(d,he({},R,t,{onVnodeUnmounted:E=>{E.component.isUnmounted&&(f.instances[c]=null)},ref:a}));return ki(n.default,{Component:O,route:u})||O}}});function ki(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const qd=Hd;function Kd(e){const t=kd(e.routes,e),n=e.parseQuery||gd,s=e.stringifyQuery||wi,r=e.history,o=Un(),i=Un(),l=Un(),a=Vu(Bt);let u=Bt;mn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=hr.bind(null,N=>""+N),f=hr.bind(null,Zf),d=hr.bind(null,ss);function m(N,K){let H,X;return Ca(N)?(H=t.getRecordMatcher(N),X=K):X=N,t.addRoute(X,H)}function R(N){const K=t.getRecordMatcher(N);K&&t.removeRoute(K)}function A(){return t.getRoutes().map(N=>N.record)}function O(N){return!!t.getRecordMatcher(N)}function E(N,K){if(K=he({},K||a.value),typeof N=="string"){const _=mr(n,N,K.path),P=t.resolve({path:_.path},K),S=r.createHref(_.fullPath);return he(_,P,{params:d(P.params),hash:ss(_.hash),redirectedFrom:void 0,href:S})}let H;if(N.path!=null)H=he({},N,{path:mr(n,N.path,K.path).path});else{const _=he({},N.params);for(const P in _)_[P]==null&&delete _[P];H=he({},N,{params:f(_)}),K.params=f(K.params)}const X=t.resolve(H,K),re=N.hash||"";X.params=c(d(X.params));const h=nd(s,he({},N,{hash:Xf(re),path:X.path})),y=r.createHref(h);return he({fullPath:h,hash:re,query:s===wi?yd(N.query):N.query||{}},X,{redirectedFrom:void 0,href:y})}function w(N){return typeof N=="string"?mr(n,N,a.value.path):he({},N)}function v(N,K){if(u!==N)return Cn(Ce.NAVIGATION_CANCELLED,{from:K,to:N})}function g(N){return C(N)}function x(N){return g(he(w(N),{replace:!0}))}function I(N,K){const H=N.matched[N.matched.length-1];if(H&&H.redirect){const{redirect:X}=H;let re=typeof X=="function"?X(N,K):X;return typeof re=="string"&&(re=re.includes("?")||re.includes("#")?re=w(re):{path:re},re.params={}),he({query:N.query,hash:N.hash,params:re.path!=null?{}:N.params},re)}}function C(N,K){const H=u=E(N),X=a.value,re=N.state,h=N.force,y=N.replace===!0,_=I(H,X);if(_)return C(he(w(_),{state:typeof _=="object"?he({},re,_.state):re,force:h,replace:y}),K||H);const P=H;P.redirectedFrom=K;let S;return!h&&sd(s,X,H)&&(S=Cn(Ce.NAVIGATION_DUPLICATED,{to:P,from:X}),ye(X,X,!0,!1)),(S?Promise.resolve(S):Q(P,X)).catch(T=>Tt(T)?Tt(T,Ce.NAVIGATION_GUARD_REDIRECT)?T:De(T):ue(T,P,X)).then(T=>{if(T){if(Tt(T,Ce.NAVIGATION_GUARD_REDIRECT))return C(he({replace:y},w(T.to),{state:typeof T.to=="object"?he({},re,T.to.state):re,force:h}),K||P)}else T=B(P,X,!0,y,re);return G(P,X,T),T})}function U(N,K){const H=v(N,K);return H?Promise.reject(H):Promise.resolve()}function k(N){const K=st.values().next().value;return K&&typeof K.runWithContext=="function"?K.runWithContext(N):N()}function Q(N,K){let H;const[X,re,h]=xd(N,K);H=yr(X.reverse(),"beforeRouteLeave",N,K);for(const _ of X)_.leaveGuards.forEach(P=>{H.push(qt(P,N,K))});const y=U.bind(null,N,K);return H.push(y),ne(H).then(()=>{H=[];for(const _ of o.list())H.push(qt(_,N,K));return H.push(y),ne(H)}).then(()=>{H=yr(re,"beforeRouteUpdate",N,K);for(const _ of re)_.updateGuards.forEach(P=>{H.push(qt(P,N,K))});return H.push(y),ne(H)}).then(()=>{H=[];for(const _ of h)if(_.beforeEnter)if(dt(_.beforeEnter))for(const P of _.beforeEnter)H.push(qt(P,N,K));else H.push(qt(_.beforeEnter,N,K));return H.push(y),ne(H)}).then(()=>(N.matched.forEach(_=>_.enterCallbacks={}),H=yr(h,"beforeRouteEnter",N,K,k),H.push(y),ne(H))).then(()=>{H=[];for(const _ of i.list())H.push(qt(_,N,K));return H.push(y),ne(H)}).catch(_=>Tt(_,Ce.NAVIGATION_CANCELLED)?_:Promise.reject(_))}function G(N,K,H){l.list().forEach(X=>k(()=>X(N,K,H)))}function B(N,K,H,X,re){const h=v(N,K);if(h)return h;const y=K===Bt,_=mn?history.state:{};H&&(X||y?r.replace(N.fullPath,he({scroll:y&&_&&_.scroll},re)):r.push(N.fullPath,re)),a.value=N,ye(N,K,H,y),De()}let oe;function ie(){oe||(oe=r.listen((N,K,H)=>{if(!ht.listening)return;const X=E(N),re=I(X,ht.currentRoute.value);if(re){C(he(re,{replace:!0,force:!0}),X).catch(Gn);return}u=X;const h=a.value;mn&&fd(_i(h.fullPath,H.delta),Qs()),Q(X,h).catch(y=>Tt(y,Ce.NAVIGATION_ABORTED|Ce.NAVIGATION_CANCELLED)?y:Tt(y,Ce.NAVIGATION_GUARD_REDIRECT)?(C(he(w(y.to),{force:!0}),X).then(_=>{Tt(_,Ce.NAVIGATION_ABORTED|Ce.NAVIGATION_DUPLICATED)&&!H.delta&&H.type===Fr.pop&&r.go(-1,!1)}).catch(Gn),Promise.reject()):(H.delta&&r.go(-H.delta,!1),ue(y,X,h))).then(y=>{y=y||B(X,h,!1),y&&(H.delta&&!Tt(y,Ce.NAVIGATION_CANCELLED)?r.go(-H.delta,!1):H.type===Fr.pop&&Tt(y,Ce.NAVIGATION_ABORTED|Ce.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),G(X,h,y)}).catch(Gn)}))}let ke=Un(),xe=Un(),ae;function ue(N,K,H){De(N);const X=xe.list();return X.length?X.forEach(re=>re(N,K,H)):console.error(N),Promise.reject(N)}function nt(){return ae&&a.value!==Bt?Promise.resolve():new Promise((N,K)=>{ke.add([N,K])})}function De(N){return ae||(ae=!N,ie(),ke.list().forEach(([K,H])=>N?H(N):K()),ke.reset()),N}function ye(N,K,H,X){const{scrollBehavior:re}=e;if(!mn||!re)return Promise.resolve();const h=!H&&dd(_i(N.fullPath,0))||(X||!H)&&history.state&&history.state.scroll||null;return so().then(()=>re(N,K,h)).then(y=>y&&cd(y)).catch(y=>ue(y,N,K))}const Re=N=>r.go(N);let Ze;const st=new Set,ht={currentRoute:a,listening:!0,addRoute:m,removeRoute:R,clearRoutes:t.clearRoutes,hasRoute:O,getRoutes:A,resolve:E,options:e,push:g,replace:x,go:Re,back:()=>Re(-1),forward:()=>Re(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:xe.add,isReady:nt,install(N){N.component("RouterLink",Md),N.component("RouterView",qd),N.config.globalProperties.$router=ht,Object.defineProperty(N.config.globalProperties,"$route",{enumerable:!0,get:()=>bn(a)}),mn&&!Ze&&a.value===Bt&&(Ze=!0,g(r.location).catch(X=>{}));const K={};for(const X in Bt)Object.defineProperty(K,X,{get:()=>a.value[X],enumerable:!0});N.provide(fo,ht),N.provide(Ta,_l(K)),N.provide(Mr,a);const H=N.unmount;st.add(N),N.unmount=function(){st.delete(N),st.size<1&&(u=Bt,oe&&oe(),oe=null,a.value=Bt,Ze=!1,ae=!1),H()}}};function ne(N){return N.reduce((K,H)=>K.then(()=>k(H)),Promise.resolve())}return ht}const po="sub_store_admin_token",ho="sub_store_token_validated";function Wd(){return new URLSearchParams(window.location.search).get("token")||""}function Gd(e){e&&(localStorage.setItem(po,e),localStorage.setItem(ho,"true"))}function Ia(){return localStorage.getItem(po)||""}function zd(){return localStorage.getItem(ho)==="true"}function ka(){localStorage.removeItem(po),localStorage.removeItem(ho)}async function Jd(e){var t;if(!e)return!1;try{const n=((t=window.SUB_STORE_CONFIG)==null?void 0:t.apiBaseUrl)||"",s=await fetch(`${n}/api/env?token=${encodeURIComponent(e)}`);return s.ok?(await s.json()).status==="success":!1}catch{return!1}}function Xd(){const e=Wd();return e||Ia()}function Da(e,t){return function(){return e.apply(t,arguments)}}const{toString:Qd}=Object.prototype,{getPrototypeOf:An}=Object,{iterator:us,toStringTag:$a}=Symbol,$s=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),rs=(e,t)=>{let n=e;const s=[];for(;n!=null&&n!==Object.prototype;){if(s.indexOf(n)!==-1)return!1;if(s.push(n),$s(n,t))return!0;n=An(n)}return!1},Yd=(e,t)=>e!=null&&rs(e,t)?e[t]:void 0,mo=(e=>t=>{const n=Qd.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),pt=e=>(e=e.toLowerCase(),t=>mo(t)===e),Ys=e=>t=>typeof t===e,{isArray:cn}=Array,Tn=Ys("undefined");function Nn(e){return e!==null&&!Tn(e)&&e.constructor!==null&&!Tn(e.constructor)&&Ye(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const La=pt("ArrayBuffer");function Zd(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&La(e.buffer),t}const ep=Ys("string"),Ye=Ys("function"),Ua=Ys("number"),In=e=>e!==null&&typeof e=="object",tp=e=>e===!0||e===!1,Ss=e=>{if(!In(e))return!1;const t=An(e);return(t===null||t===Object.prototype||An(t)===null)&&!rs(e,$a)&&!rs(e,us)},np=e=>{if(!In(e)||Nn(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},sp=pt("Date"),rp=pt("File"),op=e=>!!(e&&typeof e.uri<"u"),ip=e=>e&&typeof e.getParts<"u",lp=pt("Blob"),ap=pt("FileList"),up=e=>In(e)&&Ye(e.pipe);function cp(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const Di=cp(),$i=typeof Di.FormData<"u"?Di.FormData:void 0,fp=e=>{if(!e)return!1;if($i&&e instanceof $i)return!0;const t=An(e);if(!t||t===Object.prototype||!Ye(e.append))return!1;const n=mo(e);return n==="formdata"||n==="object"&&Ye(e.toString)&&e.toString()==="[object FormData]"},dp=pt("URLSearchParams"),[pp,hp,mp,gp]=["ReadableStream","Request","Response","Headers"].map(pt),yp=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function cs(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let s,r;if(typeof e!="object"&&(e=[e]),cn(e))for(s=0,r=e.length;s0;)if(r=n[s],t===r.toLowerCase())return r;return null}const sn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Va=e=>!Tn(e)&&e!==sn;function Br(...e){const{caseless:t,skipUndefined:n}=Va(this)&&this||{},s={},r=(o,i)=>{if(i==="__proto__"||i==="constructor"||i==="prototype")return;const l=t&&typeof i=="string"&&Fa(s,i)||i,a=$s(s,l)?s[l]:void 0;Ss(a)&&Ss(o)?s[l]=Br(a,o):Ss(o)?s[l]=Br({},o):cn(o)?s[l]=o.slice():(!n||!Tn(o))&&(s[l]=o)};for(let o=0,i=e.length;o(cs(t,(r,o)=>{n&&Ye(r)?Object.defineProperty(e,o,{__proto__:null,value:Da(r,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(e,o,{__proto__:null,value:r,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:s}),e),xp=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),vp=(e,t,n,s)=>{e.prototype=Object.create(t.prototype,s),Object.defineProperty(e.prototype,"constructor",{__proto__:null,value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{__proto__:null,value:t.prototype}),n&&Object.assign(e.prototype,n)},_p=(e,t,n,s)=>{let r,o,i;const l={};if(t=t||{},e==null)return t;do{for(r=Object.getOwnPropertyNames(e),o=r.length;o-- >0;)i=r[o],(!s||s(i,e,t))&&!l[i]&&(t[i]=e[i],l[i]=!0);e=n!==!1&&An(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},wp=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const s=e.indexOf(t,n);return s!==-1&&s===n},Ep=e=>{if(!e)return null;if(cn(e))return e;let t=e.length;if(!Ua(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},Sp=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&An(Uint8Array)),Rp=(e,t)=>{const s=(e&&e[us]).call(e);let r;for(;(r=s.next())&&!r.done;){const o=r.value;t.call(e,o[0],o[1])}},Cp=(e,t)=>{let n;const s=[];for(;(n=e.exec(t))!==null;)s.push(n);return s},Ap=pt("HTMLFormElement"),Tp=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,s,r){return s.toUpperCase()+r}),{propertyIsEnumerable:Op}=Object.prototype,Pp=pt("RegExp"),Ma=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),s={};cs(n,(r,o)=>{let i;(i=t(r,o,e))!==!1&&(s[o]=i||r)}),Object.defineProperties(e,s)},Np=e=>{Ma(e,(t,n)=>{if(Ye(e)&&["arguments","caller","callee"].includes(n))return!1;const s=e[n];if(Ye(s)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Ip=(e,t)=>{const n={},s=r=>{r.forEach(o=>{n[o]=!0})};return cn(e)?s(e):s(String(e).split(t)),n},kp=()=>{},Dp=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function $p(e){return!!(e&&Ye(e.append)&&e[$a]==="FormData"&&e[us])}const Lp=e=>{const t=new WeakSet,n=s=>{if(In(s)){if(t.has(s))return;if(Nn(s))return s;if(!("toJSON"in s)){t.add(s);const r=cn(s)?[]:{};return cs(s,(o,i)=>{const l=n(o);!Tn(l)&&(r[i]=l)}),t.delete(s),r}}return s};return n(e)},Up=pt("AsyncFunction"),Fp=e=>e&&(In(e)||Ye(e))&&Ye(e.then)&&Ye(e.catch),Ba=((e,t)=>e?setImmediate:t?((n,s)=>(sn.addEventListener("message",({source:r,data:o})=>{r===sn&&o===n&&s.length&&s.shift()()},!1),r=>{s.push(r),sn.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",Ye(sn.postMessage)),Vp=typeof queueMicrotask<"u"?queueMicrotask.bind(sn):typeof process<"u"&&process.nextTick||Ba,ja=e=>e!=null&&Ye(e[us]),Mp=e=>e!=null&&rs(e,us)&&ja(e),b={isArray:cn,isArrayBuffer:La,isBuffer:Nn,isFormData:fp,isArrayBufferView:Zd,isString:ep,isNumber:Ua,isBoolean:tp,isObject:In,isPlainObject:Ss,isEmptyObject:np,isReadableStream:pp,isRequest:hp,isResponse:mp,isHeaders:gp,isUndefined:Tn,isDate:sp,isFile:rp,isReactNativeBlob:op,isReactNative:ip,isBlob:lp,isRegExp:Pp,isFunction:Ye,isStream:up,isURLSearchParams:dp,isTypedArray:Sp,isFileList:ap,forEach:cs,merge:Br,extend:bp,trim:yp,stripBOM:xp,inherits:vp,toFlatObject:_p,kindOf:mo,kindOfTest:pt,endsWith:wp,toArray:Ep,forEachEntry:Rp,matchAll:Cp,isHTMLForm:Ap,hasOwnProperty:$s,hasOwnProp:$s,hasOwnInPrototypeChain:rs,getSafeProp:Yd,reduceDescriptors:Ma,freezeMethods:Np,toObjectSet:Ip,toCamelCase:Tp,noop:kp,toFiniteNumber:Dp,findKey:Fa,global:sn,isContextDefined:Va,isSpecCompliantForm:$p,toJSONObject:Lp,isAsyncFn:Up,isThenable:Fp,setImmediate:Ba,asap:Vp,isIterable:ja,isSafeIterable:Mp},Bp=b.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),jp=e=>{const t={};let n,s,r;return e&&e.split(` -`).forEach(function(i){r=i.indexOf(":"),n=i.substring(0,r).trim().toLowerCase(),s=i.substring(r+1).trim(),!(!n||t[n]&&Bp[n])&&(n==="set-cookie"?t[n]?t[n].push(s):t[n]=[s]:t[n]=t[n]?t[n]+", "+s:s)}),t};function Hp(e){let t=0,n=e.length;for(;tt;){const s=e.charCodeAt(n-1);if(s!==9&&s!==32)break;n-=1}return t===0&&n===e.length?e:e.slice(t,n)}const qp=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),Kp=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function go(e,t){return b.isArray(e)?e.map(n=>go(n,t)):Hp(String(e).replace(t,""))}const Wp=e=>go(e,qp),Gp=e=>go(e,Kp);function Ha(e){const t=Object.create(null);return b.forEach(e.toJSON(),(n,s)=>{t[s]=Gp(n)}),t}const Li=Symbol("internals");function Fn(e){return e&&String(e).trim().toLowerCase()}function Rs(e){return e===!1||e==null?e:b.isArray(e)?e.map(Rs):Wp(String(e))}function zp(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let s;for(;s=n.exec(e);)t[s[1]]=s[2];return t}const Jp=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function br(e,t,n,s,r){if(b.isFunction(s))return s.call(this,t,n);if(r&&(t=n),!!b.isString(t)){if(b.isString(s))return t.indexOf(s)!==-1;if(b.isRegExp(s))return s.test(t)}}function Xp(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,s)=>n.toUpperCase()+s)}function Qp(e,t){const n=b.toCamelCase(" "+t);["get","set","has"].forEach(s=>{Object.defineProperty(e,s+n,{__proto__:null,value:function(r,o,i){return this[s].call(this,t,r,o,i)},configurable:!0})})}let Ke=class{constructor(t){t&&this.set(t)}set(t,n,s){const r=this;function o(l,a,u){const c=Fn(a);if(!c)return;const f=b.findKey(r,c);(!f||r[f]===void 0||u===!0||u===void 0&&r[f]!==!1)&&(r[f||a]=Rs(l))}const i=(l,a)=>b.forEach(l,(u,c)=>o(u,c,a));if(b.isPlainObject(t)||t instanceof this.constructor)i(t,n);else if(b.isString(t)&&(t=t.trim())&&!Jp(t))i(jp(t),n);else if(b.isObject(t)&&b.isSafeIterable(t)){let l=Object.create(null),a,u;for(const c of t){if(!b.isArray(c))throw new TypeError("Object iterator must return a key-value pair");u=c[0],b.hasOwnProp(l,u)?(a=l[u],l[u]=b.isArray(a)?[...a,c[1]]:[a,c[1]]):l[u]=c[1]}i(l,n)}else t!=null&&o(n,t,s);return this}get(t,n){if(t=Fn(t),t){const s=b.findKey(this,t);if(s){const r=this[s];if(!n)return r;if(n===!0)return zp(r);if(b.isFunction(n))return n.call(this,r,s);if(b.isRegExp(n))return n.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=Fn(t),t){const s=b.findKey(this,t);return!!(s&&this[s]!==void 0&&(!n||br(this,this[s],s,n)))}return!1}delete(t,n){const s=this;let r=!1;function o(i){if(i=Fn(i),i){const l=b.findKey(s,i);l&&(!n||br(s,s[l],l,n))&&(delete s[l],r=!0)}}return b.isArray(t)?t.forEach(o):o(t),r}clear(t){const n=Object.keys(this);let s=n.length,r=!1;for(;s--;){const o=n[s];(!t||br(this,this[o],o,t,!0))&&(delete this[o],r=!0)}return r}normalize(t){const n=this,s={};return b.forEach(this,(r,o)=>{const i=b.findKey(s,o);if(i){n[i]=Rs(r),delete n[o];return}const l=t?Xp(o):String(o).trim();l!==o&&delete n[o],n[l]=Rs(r),s[l]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return b.forEach(this,(s,r)=>{s!=null&&s!==!1&&(n[r]=t&&b.isArray(s)?s.join(", "):s)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const s=new this(t);return n.forEach(r=>s.set(r)),s}static accessor(t){const s=(this[Li]=this[Li]={accessors:{}}).accessors,r=this.prototype;function o(i){const l=Fn(i);s[l]||(Qp(r,i),s[l]=!0)}return b.isArray(t)?t.forEach(o):o(t),this}};Ke.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);b.reduceDescriptors(Ke.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(s){this[n]=s}}});b.freezeMethods(Ke);const Yp="[REDACTED ****]";function Zp(e){if(b.hasOwnProp(e,"toJSON"))return!0;let t=Object.getPrototypeOf(e);for(;t&&t!==Object.prototype;){if(b.hasOwnProp(t,"toJSON"))return!0;t=Object.getPrototypeOf(t)}return!1}function eh(e,t){const n=new Set(t.map(o=>String(o).toLowerCase())),s=[],r=o=>{if(o===null||typeof o!="object"||b.isBuffer(o))return o;if(s.indexOf(o)!==-1)return;o instanceof Ke&&(o=o.toJSON()),s.push(o);let i;if(b.isArray(o))i=[],o.forEach((l,a)=>{const u=r(l);b.isUndefined(u)||(i[a]=u)});else{if(!b.isPlainObject(o)&&Zp(o))return s.pop(),o;i=Object.create(null);for(const[l,a]of Object.entries(o)){const u=n.has(l.toLowerCase())?Yp:r(a);b.isUndefined(u)||(i[l]=u)}}return s.pop(),i};return r(e)}let j=class qa extends Error{static from(t,n,s,r,o,i){const l=new qa(t.message,n||t.code,s,r,o);return Object.defineProperty(l,"cause",{__proto__:null,value:t,writable:!0,enumerable:!1,configurable:!0}),l.name=t.name,t.status!=null&&l.status==null&&(l.status=t.status),i&&Object.assign(l,i),l}constructor(t,n,s,r,o){super(t),Object.defineProperty(this,"message",{__proto__:null,value:t,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),s&&(this.config=s),r&&(this.request=r),o&&(this.response=o,this.status=o.status)}toJSON(){const t=this.config,n=t&&b.hasOwnProp(t,"redact")?t.redact:void 0,s=b.isArray(n)&&n.length>0?eh(t,n):b.toJSONObject(t);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:s,code:this.code,status:this.status}}};j.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";j.ERR_BAD_OPTION="ERR_BAD_OPTION";j.ECONNABORTED="ECONNABORTED";j.ETIMEDOUT="ETIMEDOUT";j.ECONNREFUSED="ECONNREFUSED";j.ERR_NETWORK="ERR_NETWORK";j.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";j.ERR_DEPRECATED="ERR_DEPRECATED";j.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";j.ERR_BAD_REQUEST="ERR_BAD_REQUEST";j.ERR_CANCELED="ERR_CANCELED";j.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";j.ERR_INVALID_URL="ERR_INVALID_URL";j.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";const th=null,Ka=100;function jr(e){return b.isPlainObject(e)||b.isArray(e)}function Wa(e){return b.endsWith(e,"[]")?e.slice(0,-2):e}function xr(e,t,n){return e?e.concat(t).map(function(r,o){return r=Wa(r),!n&&o?"["+r+"]":r}).join(n?".":""):t}function nh(e){return b.isArray(e)&&!e.some(jr)}const sh=b.toFlatObject(b,{},null,function(t){return/^is[A-Z]/.test(t)});function Zs(e,t,n){if(!b.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=b.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,v){return!b.isUndefined(v[w])});const s=n.metaTokens,r=n.visitor||R,o=n.dots,i=n.indexes,l=n.Blob||typeof Blob<"u"&&Blob,a=n.maxDepth===void 0?Ka:n.maxDepth,u=l&&b.isSpecCompliantForm(t),c=[];if(!b.isFunction(r))throw new TypeError("visitor must be a function");function f(E){if(E===null)return"";if(b.isDate(E))return E.toISOString();if(b.isBoolean(E))return E.toString();if(!u&&b.isBlob(E))throw new j("Blob is not supported. Use a Buffer instead.");if(b.isArrayBuffer(E)||b.isTypedArray(E)){if(u&&typeof l=="function")return new l([E]);if(typeof Buffer<"u")return Buffer.from(E);throw new j("Blob is not supported. Use a Buffer instead.",j.ERR_NOT_SUPPORT)}return E}function d(E){if(E>a)throw new j("Object is too deeply nested ("+E+" levels). Max depth: "+a,j.ERR_FORM_DATA_DEPTH_EXCEEDED)}function m(E,w){if(a===1/0)return JSON.stringify(E);const v=[];return JSON.stringify(E,function(x,I){if(!b.isObject(I))return I;for(;v.length&&v[v.length-1]!==this;)v.pop();return v.push(I),d(w+v.length-1),I})}function R(E,w,v){let g=E;if(b.isReactNative(t)&&b.isReactNativeBlob(E))return t.append(xr(v,w,o),f(E)),!1;if(E&&!v&&typeof E=="object"){if(b.endsWith(w,"{}"))w=s?w:w.slice(0,-2),E=m(E,1);else if(b.isArray(E)&&nh(E)||(b.isFileList(E)||b.endsWith(w,"[]"))&&(g=b.toArray(E)))return w=Wa(w),g.forEach(function(I,C){!(b.isUndefined(I)||I===null)&&t.append(i===!0?xr([w],C,o):i===null?w:w+"[]",f(I))}),!1}return jr(E)?!0:(t.append(xr(v,w,o),f(E)),!1)}const A=Object.assign(sh,{defaultVisitor:R,convertValue:f,isVisitable:jr});function O(E,w,v=0){if(!b.isUndefined(E)){if(d(v),c.indexOf(E)!==-1)throw new Error("Circular reference detected in "+w.join("."));c.push(E),b.forEach(E,function(x,I){(!(b.isUndefined(x)||x===null)&&r.call(t,x,b.isString(I)?I.trim():I,w,A))===!0&&O(x,w?w.concat(I):[I],v+1)}),c.pop()}}if(!b.isObject(e))throw new TypeError("data must be an object");return O(e),t}function Ui(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(e).replace(/[!'()~]|%20/g,function(s){return t[s]})}function yo(e,t){this._pairs=[],e&&Zs(e,this,t)}const Ga=yo.prototype;Ga.append=function(t,n){this._pairs.push([t,n])};Ga.toString=function(t){const n=t?s=>t.call(this,s,Ui):Ui;return this._pairs.map(function(r){return n(r[0])+"="+n(r[1])},"").join("&")};function rh(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function za(e,t,n){if(!t)return e;e=e||"";const s=b.isFunction(n)?{serialize:n}:n,r=b.getSafeProp(s,"encode")||rh,o=b.getSafeProp(s,"serialize");let i;if(o?i=o(t,s):i=b.isURLSearchParams(t)?t.toString():new yo(t,s).toString(r),i){const l=e.indexOf("#");l!==-1&&(e=e.slice(0,l)),e+=(e.indexOf("?")===-1?"?":"&")+i}return e}class Fi{constructor(){this.handlers=[]}use(t,n,s){return this.handlers.push({fulfilled:t,rejected:n,synchronous:s?s.synchronous:!1,runWhen:s?s.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){b.forEach(this.handlers,function(s){s!==null&&t(s)})}}const bo={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0,advertiseZstdAcceptEncoding:!1,validateStatusUndefinedResolves:!0},oh=typeof URLSearchParams<"u"?URLSearchParams:yo,ih=typeof FormData<"u"?FormData:null,lh=typeof Blob<"u"?Blob:null,ah={isBrowser:!0,classes:{URLSearchParams:oh,FormData:ih,Blob:lh},protocols:["http","https","file","blob","url","data"]},xo=typeof window<"u"&&typeof document<"u",Hr=typeof navigator=="object"&&navigator||void 0,uh=xo&&(!Hr||["ReactNative","NativeScript","NS"].indexOf(Hr.product)<0),ch=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",fh=xo&&window.location.href||"http://localhost",dh=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:xo,hasStandardBrowserEnv:uh,hasStandardBrowserWebWorkerEnv:ch,navigator:Hr,origin:fh},Symbol.toStringTag,{value:"Module"})),Ue={...dh,...ah};function ph(e,t){return Zs(e,new Ue.classes.URLSearchParams,{visitor:function(n,s,r,o){return Ue.isNode&&b.isBuffer(n)?(this.append(s,n.toString("base64")),!1):o.defaultVisitor.apply(this,arguments)},...t})}const Vi=Ka;function Ja(e){if(e>Vi)throw new j("FormData field is too deeply nested ("+e+" levels). Max depth: "+Vi,j.ERR_FORM_DATA_DEPTH_EXCEEDED)}function hh(e){const t=[],n=/\w+|\[(\w*)]/g;let s;for(;(s=n.exec(e))!==null;)Ja(t.length),t.push(s[0]==="[]"?"":s[1]||s[0]);return t}function mh(e){const t={},n=Object.keys(e);let s;const r=n.length;let o;for(s=0;s=n.length;return i=!i&&b.isArray(r)?r.length:i,a?(b.hasOwnProp(r,i)?r[i]=b.isArray(r[i])?r[i].concat(s):[r[i],s]:r[i]=s,!l):((!b.hasOwnProp(r,i)||!b.isObject(r[i]))&&(r[i]=[]),t(n,s,r[i],o)&&b.isArray(r[i])&&(r[i]=mh(r[i])),!l)}if(b.isFormData(e)&&b.isFunction(e.entries)){const n={};return b.forEachEntry(e,(s,r)=>{t(hh(s),r,n,0)}),n}return null}const pn=(e,t)=>e!=null&&b.hasOwnProp(e,t)?e[t]:void 0;function gh(e,t,n){if(b.isString(e))try{return(t||JSON.parse)(e),b.trim(e)}catch(s){if(s.name!=="SyntaxError")throw s}return(n||JSON.stringify)(e)}const fs={transitional:bo,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const s=n.getContentType()||"",r=s.indexOf("application/json")>-1,o=b.isObject(t);if(o&&b.isHTMLForm(t)&&(t=new FormData(t)),b.isFormData(t))return r?JSON.stringify(Xa(t)):t;if(b.isArrayBuffer(t)||b.isBuffer(t)||b.isStream(t)||b.isFile(t)||b.isBlob(t)||b.isReadableStream(t))return t;if(b.isArrayBufferView(t))return t.buffer;if(b.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let l;if(o){const a=pn(this,"formSerializer");if(s.indexOf("application/x-www-form-urlencoded")>-1)return ph(t,a).toString();if((l=b.isFileList(t))||s.indexOf("multipart/form-data")>-1){const u=pn(this,"env"),c=u&&u.FormData;return Zs(l?{"files[]":t}:t,c&&new c,a)}}return o||r?(n.setContentType("application/json",!1),gh(t)):t}],transformResponse:[function(t){const n=pn(this,"transitional")||fs.transitional,s=n&&n.forcedJSONParsing,r=pn(this,"responseType"),o=r==="json";if(b.isResponse(t)||b.isReadableStream(t))return t;if(t&&b.isString(t)&&(s&&!r||o)){const l=!(n&&n.silentJSONParsing)&&o;try{return JSON.parse(t,pn(this,"parseReviver"))}catch(a){if(l)throw a.name==="SyntaxError"?j.from(a,j.ERR_BAD_RESPONSE,this,null,pn(this,"response")):a}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ue.classes.FormData,Blob:Ue.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};b.forEach(["delete","get","head","post","put","patch","query"],e=>{fs.headers[e]={}});function vr(e,t){const n=this||fs,s=t||n,r=Ke.from(s.headers);let o=s.data;return b.forEach(e,function(l){o=l.call(n,o,r.normalize(),t?t.status:void 0)}),r.normalize(),o}function Qa(e){return!!(e&&e.__CANCEL__)}let ds=class extends j{constructor(t,n,s){super(t??"canceled",j.ERR_CANCELED,n,s),this.name="CanceledError",this.__CANCEL__=!0}};function Ya(e,t,n){const s=n.config.validateStatus;!n.status||!s||s(n.status)?e(n):t(new j("Request failed with status code "+n.status,n.status>=400&&n.status<500?j.ERR_BAD_REQUEST:j.ERR_BAD_RESPONSE,n.config,n.request,n))}function yh(e){const t=/^([-+\w]{1,25}):(?:\/\/)?/.exec(e);return t&&t[1]||""}function bh(e,t){e=e||10;const n=new Array(e),s=new Array(e);let r=0,o=0,i;return t=t!==void 0?t:1e3,function(a){const u=Date.now(),c=s[o];i||(i=u),n[r]=a,s[r]=u;let f=o,d=0;for(;f!==r;)d+=n[f++],f=f%e;if(r=(r+1)%e,r===o&&(o=(o+1)%e),u-i{n=c,r=null,o&&(clearTimeout(o),o=null),e(...u)};return[(...u)=>{const c=Date.now(),f=c-n;f>=s?i(u,c):(r=u,o||(o=setTimeout(()=>{o=null,i(r)},s-f)))},()=>r&&i(r)]}const Ls=(e,t,n=3)=>{let s=0;const r=bh(50,250);return xh(o=>{if(!o||typeof o.loaded!="number")return;const i=o.loaded,l=o.lengthComputable?o.total:void 0,a=l!=null?Math.min(i,l):i,u=Math.max(0,a-s),c=r(u);s=Math.max(s,a);const f={loaded:a,total:l,progress:l?a/l:void 0,bytes:u,rate:c||void 0,estimated:c&&l?(l-a)/c:void 0,event:o,lengthComputable:l!=null,[t?"download":"upload"]:!0};e(f)},n)},Mi=(e,t)=>{const n=e!=null;return[s=>t[0]({lengthComputable:n,total:e,loaded:s}),t[1]]},Bi=e=>(...t)=>b.asap(()=>e(...t)),vh=Ue.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,Ue.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(Ue.origin),Ue.navigator&&/(msie|trident)/i.test(Ue.navigator.userAgent)):()=>!0,_h=Ue.hasStandardBrowserEnv?{write(e,t,n,s,r,o,i){if(typeof document>"u")return;const l=[`${e}=${encodeURIComponent(t)}`];b.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),b.isString(s)&&l.push(`path=${s}`),b.isString(r)&&l.push(`domain=${r}`),o===!0&&l.push("secure"),b.isString(i)&&l.push(`SameSite=${i}`),document.cookie=l.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.split(";");for(let n=0;ne instanceof Ke?{...e}:e;function fn(e,t){e=e||{},t=t||{};const n=Object.create(null);Object.defineProperty(n,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function s(c,f,d,m){return b.isPlainObject(c)&&b.isPlainObject(f)?b.merge.call({caseless:m},c,f):b.isPlainObject(f)?b.merge({},f):b.isArray(f)?f.slice():f}function r(c,f,d,m){if(b.isUndefined(f)){if(!b.isUndefined(c))return s(void 0,c,d,m)}else return s(c,f,d,m)}function o(c,f){if(!b.isUndefined(f))return s(void 0,f)}function i(c,f){if(b.isUndefined(f)){if(!b.isUndefined(c))return s(void 0,c)}else return s(void 0,f)}function l(c){const f=b.hasOwnProp(t,"transitional")?t.transitional:void 0;if(!b.isUndefined(f))if(b.isPlainObject(f)){if(b.hasOwnProp(f,c))return f[c]}else return;const d=b.hasOwnProp(e,"transitional")?e.transitional:void 0;if(b.isPlainObject(d)&&b.hasOwnProp(d,c))return d[c]}function a(c,f,d){if(b.hasOwnProp(t,d))return s(c,f);if(b.hasOwnProp(e,d))return s(void 0,c)}const u={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,allowedSocketPaths:i,responseEncoding:i,validateStatus:a,headers:(c,f,d)=>r(Hi(c),Hi(f),d,!0)};return b.forEach(Object.keys({...e,...t}),function(f){if(f==="__proto__"||f==="constructor"||f==="prototype")return;const d=b.hasOwnProp(u,f)?u[f]:r,m=b.hasOwnProp(e,f)?e[f]:void 0,R=b.hasOwnProp(t,f)?t[f]:void 0,A=d(m,R,f);b.isUndefined(A)&&d!==a||(n[f]=A)}),b.hasOwnProp(t,"validateStatus")&&b.isUndefined(t.validateStatus)&&l("validateStatusUndefinedResolves")===!1&&(b.hasOwnProp(e,"validateStatus")?n.validateStatus=s(void 0,e.validateStatus):delete n.validateStatus),n}const Th=["content-type","content-length"];function Oh(e,t,n){if(n!=="content-only"){e.set(t);return}Object.entries(t||{}).forEach(([s,r])=>{Th.includes(s.toLowerCase())&&e.set(s,r)})}const Ph=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(t,n)=>String.fromCharCode(parseInt(n,16)));function eu(e){const t=fn({},e),n=d=>b.hasOwnProp(t,d)?t[d]:void 0,s=n("data");let r=n("withXSRFToken");const o=n("xsrfHeaderName"),i=n("xsrfCookieName");let l=n("headers");const a=n("auth"),u=n("baseURL"),c=n("allowAbsoluteUrls"),f=n("url");if(t.headers=l=Ke.from(l),t.url=za(Za(u,f,c,t),n("params"),n("paramsSerializer")),a){const d=b.getSafeProp(a,"username")||"",m=b.getSafeProp(a,"password")||"";try{l.set("Authorization","Basic "+btoa(d+":"+(m?Ph(m):"")))}catch(R){throw j.from(R,j.ERR_BAD_OPTION_VALUE,e)}}if(b.isFormData(s)&&(Ue.hasStandardBrowserEnv||Ue.hasStandardBrowserWebWorkerEnv||b.isReactNative(s)?l.setContentType(void 0):b.isFunction(s.getHeaders)&&Oh(l,s.getHeaders(),n("formDataHeaderPolicy"))),Ue.hasStandardBrowserEnv&&(b.isFunction(r)&&(r=r(t)),r===!0||r==null&&vh(t.url))){const m=o&&i&&_h.read(i);m&&l.set(o,m)}return t}const Nh=typeof XMLHttpRequest<"u",Ih=Nh&&function(e){return new Promise(function(n,s){const r=eu(e);let o=r.data;const i=Ke.from(r.headers).normalize();let{responseType:l,onUploadProgress:a,onDownloadProgress:u}=r,c,f,d,m,R;function A(){m&&m(),R&&R(),r.cancelToken&&r.cancelToken.unsubscribe(c),r.signal&&r.signal.removeEventListener("abort",c)}let O=new XMLHttpRequest;O.open(r.method.toUpperCase(),r.url,!0),O.timeout=r.timeout;function E(){if(!O)return;const v=Ke.from("getAllResponseHeaders"in O&&O.getAllResponseHeaders()),x={data:!l||l==="text"||l==="json"?O.responseText:O.response,status:O.status,statusText:O.statusText,headers:v,config:e,request:O};Ya(function(C){n(C),A()},function(C){s(C),A()},x),O=null}"onloadend"in O?O.onloadend=E:O.onreadystatechange=function(){!O||O.readyState!==4||O.status===0&&!(O.responseURL&&O.responseURL.startsWith("file:"))||setTimeout(E)},O.onabort=function(){O&&(s(new j("Request aborted",j.ECONNABORTED,e,O)),A(),O=null)},O.onerror=function(g){const x=g&&g.message?g.message:"Network Error",I=new j(x,j.ERR_NETWORK,e,O);I.event=g||null,s(I),A(),O=null},O.ontimeout=function(){let g=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const x=r.transitional||bo;r.timeoutErrorMessage&&(g=r.timeoutErrorMessage),s(new j(g,x.clarifyTimeoutError?j.ETIMEDOUT:j.ECONNABORTED,e,O)),A(),O=null},o===void 0&&i.setContentType(null),"setRequestHeader"in O&&b.forEach(Ha(i),function(g,x){O.setRequestHeader(x,g)}),b.isUndefined(r.withCredentials)||(O.withCredentials=!!r.withCredentials),l&&l!=="json"&&(O.responseType=r.responseType),u&&([d,R]=Ls(u,!0),O.addEventListener("progress",d)),a&&O.upload&&([f,m]=Ls(a),O.upload.addEventListener("progress",f),O.upload.addEventListener("loadend",m)),(r.cancelToken||r.signal)&&(c=v=>{O&&(s(!v||v.type?new ds(null,e,O):v),O.abort(),A(),O=null)},r.cancelToken&&r.cancelToken.subscribe(c),r.signal&&(r.signal.aborted?c():r.signal.addEventListener("abort",c)));const w=yh(r.url);if(w&&!Ue.protocols.includes(w)){s(new j("Unsupported protocol "+w+":",j.ERR_BAD_REQUEST,e)),A();return}O.send(o||null)})},kh=(e,t)=>{if(e=e?e.filter(Boolean):[],!t&&!e.length)return;const n=new AbortController;let s=!1;const r=function(a){if(!s){s=!0,i();const u=a instanceof Error?a:this.reason;n.abort(u instanceof j?u:new ds(u instanceof Error?u.message:u))}};let o=t&&setTimeout(()=>{o=null,r(new j(`timeout of ${t}ms exceeded`,j.ETIMEDOUT))},t);const i=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(a=>{a.unsubscribe?a.unsubscribe(r):a.removeEventListener("abort",r)}),e=null)};e.forEach(a=>a.addEventListener("abort",r,{once:!0}));const{signal:l}=n;return l.unsubscribe=()=>b.asap(i),l},Dh=function*(e,t){let n=e.byteLength;if(n{const r=$h(e,t);let o=0,i,l=a=>{i||(i=!0,s&&s(a))};return new ReadableStream({async pull(a){try{const{done:u,value:c}=await r.next();if(u){l(),a.close();return}let f=c.byteLength;if(n){let d=o+=f;n(d)}a.enqueue(new Uint8Array(c))}catch(u){throw l(u),u}},cancel(a){return l(a),r.return()}},{highWaterMark:2})},Us=e=>e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102,Uh=(e,t,n)=>t+2m>=2&&s.charCodeAt(m-2)===37&&s.charCodeAt(m-1)===51&&(s.charCodeAt(m)===68||s.charCodeAt(m)===100);u>=0&&(s.charCodeAt(u)===61?(a++,u--):c(u)&&(a++,u-=3)),a===1&&u>=0&&(s.charCodeAt(u)===61||c(u))&&a++;const d=Math.floor(i/4)*3-(a||0);return d>0?d:0}let o=0;for(let i=0,l=s.length;i=55296&&a<=56319&&i+1=56320&&u<=57343?(o+=4,i++):o+=3}else o+=3}return o}const vo="1.18.1",Ki=64*1024,{isFunction:bs}=b,Vh=e=>encodeURIComponent(e).replace(/%([0-9A-F]{2})/gi,(t,n)=>String.fromCharCode(parseInt(n,16))),Wi=e=>{if(!b.isString(e))return e;try{return decodeURIComponent(e)}catch{return e}},Gi=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Mh=e=>{const t=e.indexOf("://");let n=e;return t!==-1&&(n=n.slice(t+3)),n.includes("@")||n.includes(":")},Bh=e=>{const t=b.global!==void 0&&b.global!==null?b.global:globalThis,{ReadableStream:n,TextEncoder:s}=t;e=b.merge.call({skipUndefined:!0},{Request:t.Request,Response:t.Response},e);const{fetch:r,Request:o,Response:i}=e,l=r?bs(r):typeof fetch=="function",a=bs(o),u=bs(i);if(!l)return!1;const c=l&&bs(n),f=l&&(typeof s=="function"?(E=>w=>E.encode(w))(new s):async E=>new Uint8Array(await new o(E).arrayBuffer())),d=a&&c&&Gi(()=>{let E=!1;const w=new o(Ue.origin,{body:new n,method:"POST",get duplex(){return E=!0,"half"}}),v=w.headers.has("Content-Type");return w.body!=null&&w.body.cancel(),E&&!v}),m=u&&c&&Gi(()=>b.isReadableStream(new i("").body)),R={stream:m&&(E=>E.body)};l&&["text","arrayBuffer","blob","formData","stream"].forEach(E=>{!R[E]&&(R[E]=(w,v)=>{let g=w&&w[E];if(g)return g.call(w);throw new j(`Response type '${E}' is not supported`,j.ERR_NOT_SUPPORT,v)})});const A=async E=>{if(E==null)return 0;if(b.isBlob(E))return E.size;if(b.isSpecCompliantForm(E))return(await new o(Ue.origin,{method:"POST",body:E}).arrayBuffer()).byteLength;if(b.isArrayBufferView(E)||b.isArrayBuffer(E))return E.byteLength;if(b.isURLSearchParams(E)&&(E=E+""),b.isString(E))return(await f(E)).byteLength},O=async(E,w)=>{const v=b.toFiniteNumber(E.getContentLength());return v??A(w)};return async E=>{let{url:w,method:v,data:g,signal:x,cancelToken:I,timeout:C,onDownloadProgress:U,onUploadProgress:k,responseType:Q,headers:G,withCredentials:B="same-origin",fetchOptions:oe,maxContentLength:ie,maxBodyLength:ke}=eu(E);const xe=b.isNumber(ie)&&ie>-1,ae=b.isNumber(ke)&&ke>-1,ue=ne=>b.hasOwnProp(E,ne)?E[ne]:void 0;let nt=r||fetch;Q=Q?(Q+"").toLowerCase():"text";let De=kh([x,I&&I.toAbortSignal()],C),ye=null;const Re=De&&De.unsubscribe&&(()=>{De.unsubscribe()});let Ze,st=null;const ht=()=>new j("Request body larger than maxBodyLength limit",j.ERR_BAD_REQUEST,E,ye);try{let ne;const N=ue("auth");if(N){const S=b.getSafeProp(N,"username")||"",T=b.getSafeProp(N,"password")||"";ne={username:S,password:T}}if(Mh(w)){const S=new URL(w,Ue.origin);if(!ne&&(S.username||S.password)){const T=Wi(S.username),M=Wi(S.password);ne={username:T,password:M}}(S.username||S.password)&&(S.username="",S.password="",w=S.href)}if(ne&&(G.delete("authorization"),G.set("Authorization","Basic "+btoa(Vh((ne.username||"")+":"+(ne.password||""))))),xe&&typeof w=="string"&&w.startsWith("data:")&&Fh(w)>ie)throw new j("maxContentLength size of "+ie+" exceeded",j.ERR_BAD_RESPONSE,E,ye);if(ae&&v!=="get"&&v!=="head"){const S=await A(g);if(typeof S=="number"&&isFinite(S)&&(Ze=S,S>ke))throw ht()}const K=ae&&(b.isReadableStream(g)||b.isStream(g)),H=(S,T,M)=>qi(S,Ki,F=>{if(ae&&F>ke)throw st=ht();T&&T(F)},M);if(d&&v!=="get"&&v!=="head"&&(k||K)){if(Ze=Ze??await O(G,g),Ze!==0||K){let S=new o(w,{method:"POST",body:g,duplex:"half"}),T;if(b.isFormData(g)&&(T=S.headers.get("content-type"))&&G.setContentType(T),S.body){const[M,F]=k&&Mi(Ze,Ls(Bi(k)))||[];g=H(S.body,M,F)}}}else if(K&&!a&&c&&v!=="get"&&v!=="head")g=H(g);else if(K&&a&&!d&&v!=="get"&&v!=="head")throw new j("Stream request bodies are not supported by the current fetch implementation",j.ERR_NOT_SUPPORT,E,ye);b.isString(B)||(B=B?"include":"omit");const X=a&&"credentials"in o.prototype;if(b.isFormData(g)){const S=G.getContentType();S&&/^multipart\/form-data/i.test(S)&&!/boundary=/i.test(S)&&G.delete("content-type")}G.set("User-Agent","axios/"+vo,!1);const re={...oe,signal:De,method:v.toUpperCase(),headers:Ha(G.normalize()),body:g,duplex:"half",credentials:X?B:void 0};ye=a&&new o(w,re);let h=await(a?nt(ye,oe):nt(w,re));const y=Ke.from(h.headers);if(xe){const S=b.toFiniteNumber(y.getContentLength());if(S!=null&&S>ie)throw new j("maxContentLength size of "+ie+" exceeded",j.ERR_BAD_RESPONSE,E,ye)}const _=m&&(Q==="stream"||Q==="response");if(m&&h.body&&(U||xe||_&&Re)){const S={};["status","statusText","headers"].forEach(J=>{S[J]=h[J]});const T=b.toFiniteNumber(y.getContentLength()),[M,F]=U&&Mi(T,Ls(Bi(U),!0))||[];let V=0;const $=J=>{if(xe&&(V=J,V>ie))throw new j("maxContentLength size of "+ie+" exceeded",j.ERR_BAD_RESPONSE,E,ye);M&&M(J)};h=new i(qi(h.body,Ki,$,()=>{F&&F(),Re&&Re()}),S)}Q=Q||"text";let P=await R[b.findKey(R,Q)||"text"](h,E);if(xe&&!m&&!_){let S;if(P!=null&&(typeof P.byteLength=="number"?S=P.byteLength:typeof P.size=="number"?S=P.size:typeof P=="string"&&(S=typeof s=="function"?new s().encode(P).byteLength:P.length)),typeof S=="number"&&S>ie)throw new j("maxContentLength size of "+ie+" exceeded",j.ERR_BAD_RESPONSE,E,ye)}return!_&&Re&&Re(),await new Promise((S,T)=>{Ya(S,T,{data:P,headers:Ke.from(h.headers),status:h.status,statusText:h.statusText,config:E,request:ye})})}catch(ne){if(Re&&Re(),De&&De.aborted&&De.reason instanceof j){const N=De.reason;throw N.config=E,ye&&(N.request=ye),ne!==N&&Object.defineProperty(N,"cause",{__proto__:null,value:ne,writable:!0,enumerable:!1,configurable:!0}),N}if(st)throw ye&&!st.request&&(st.request=ye),st;if(ne instanceof j)throw ye&&!ne.request&&(ne.request=ye),ne;if(ne&&ne.name==="TypeError"&&/Load failed|fetch/i.test(ne.message)){const N=new j("Network Error",j.ERR_NETWORK,E,ye,ne&&ne.response);throw Object.defineProperty(N,"cause",{__proto__:null,value:ne.cause||ne,writable:!0,enumerable:!1,configurable:!0}),N}throw j.from(ne,ne&&ne.code,E,ye,ne&&ne.response)}}},jh=new Map,tu=e=>{let t=e&&e.env||{};const{fetch:n,Request:s,Response:r}=t,o=[s,r,n];let i=o.length,l=i,a,u,c=jh;for(;l--;)a=o[l],u=c.get(a),u===void 0&&c.set(a,u=l?new Map:Bh(t)),c=u;return u};tu();const _o={http:th,xhr:Ih,fetch:{get:tu}};b.forEach(_o,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{__proto__:null,value:t})}catch{}Object.defineProperty(e,"adapterName",{__proto__:null,value:t})}});const zi=e=>`- ${e}`,Hh=e=>b.isFunction(e)||e===null||e===!1;function qh(e,t){e=b.isArray(e)?e:[e];const{length:n}=e;let s,r;const o={};for(let i=0;i`adapter ${a} `+(u===!1?"is not supported by the environment":"is not available in the build"));let l=n?i.length>1?`since : -`+i.map(zi).join(` -`):" "+zi(i[0]):"as no adapter specified";throw new j("There is no suitable adapter to dispatch the request "+l,j.ERR_NOT_SUPPORT)}return r}const nu={getAdapter:qh,adapters:_o};function _r(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ds(null,e)}function Ji(e){return _r(e),e.headers=Ke.from(e.headers),e.data=vr.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),nu.getAdapter(e.adapter||fs.adapter,e)(e).then(function(s){_r(e),e.response=s;try{s.data=vr.call(e,e.transformResponse,s)}finally{delete e.response}return s.headers=Ke.from(s.headers),s},function(s){if(!Qa(s)&&(_r(e),s&&s.response)){e.response=s.response;try{s.response.data=vr.call(e,e.transformResponse,s.response)}finally{delete e.response}s.response.headers=Ke.from(s.response.headers)}return Promise.reject(s)})}const er={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{er[e]=function(s){return typeof s===e||"a"+(t<1?"n ":" ")+e}});const Xi={};er.transitional=function(t,n,s){function r(o,i){return"[Axios v"+vo+"] Transitional option '"+o+"'"+i+(s?". "+s:"")}return(o,i,l)=>{if(t===!1)throw new j(r(i," has been removed"+(n?" in "+n:"")),j.ERR_DEPRECATED);return n&&!Xi[i]&&(Xi[i]=!0,console.warn(r(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,l):!0}};er.spelling=function(t){return(n,s)=>(console.warn(`${s} is likely a misspelling of ${t}`),!0)};function Kh(e,t,n){if(typeof e!="object"||e===null)throw new j("options must be an object",j.ERR_BAD_OPTION_VALUE);const s=Object.keys(e);let r=s.length;for(;r-- >0;){const o=s[r],i=Object.prototype.hasOwnProperty.call(t,o)?t[o]:void 0;if(i){const l=e[o],a=l===void 0||i(l,o,e);if(a!==!0)throw new j("option "+o+" must be "+a,j.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new j("Unknown option "+o,j.ERR_BAD_OPTION)}}const Cs={assertOptions:Kh,validators:er},Me=Cs.validators;let ln=class{constructor(t){this.defaults=t||{},this.interceptors={request:new Fi,response:new Fi}}async request(t,n){try{return await this._request(t,n)}catch(s){if(s instanceof Error){let r={};Error.captureStackTrace?Error.captureStackTrace(r):r=new Error;const o=(()=>{if(!r.stack)return"";const i=r.stack.indexOf(` -`);return i===-1?"":r.stack.slice(i+1)})();try{if(!s.stack)s.stack=o;else if(o){const i=o.indexOf(` -`),l=i===-1?-1:o.indexOf(` -`,i+1),a=l===-1?"":o.slice(l+1);String(s.stack).endsWith(a)||(s.stack+=` -`+o)}}catch{}}throw s}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=fn(this.defaults,n);const{transitional:s,paramsSerializer:r,headers:o}=n;s!==void 0&&Cs.assertOptions(s,{silentJSONParsing:Me.transitional(Me.boolean),forcedJSONParsing:Me.transitional(Me.boolean),clarifyTimeoutError:Me.transitional(Me.boolean),legacyInterceptorReqResOrdering:Me.transitional(Me.boolean),advertiseZstdAcceptEncoding:Me.transitional(Me.boolean),validateStatusUndefinedResolves:Me.transitional(Me.boolean)},!1),r!=null&&(b.isFunction(r)?n.paramsSerializer={serialize:r}:Cs.assertOptions(r,{encode:Me.function,serialize:Me.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Cs.assertOptions(n,{baseUrl:Me.spelling("baseURL"),withXsrfToken:Me.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&b.merge(o.common,o[n.method]);o&&b.forEach(["delete","get","head","post","put","patch","query","common"],R=>{delete o[R]}),n.headers=Ke.concat(i,o);const l=[];let a=!0;this.interceptors.request.forEach(function(A){if(typeof A.runWhen=="function"&&A.runWhen(n)===!1)return;a=a&&A.synchronous;const O=n.transitional||bo;O&&O.legacyInterceptorReqResOrdering?l.unshift(A.fulfilled,A.rejected):l.push(A.fulfilled,A.rejected)});const u=[];this.interceptors.response.forEach(function(A){u.push(A.fulfilled,A.rejected)});let c,f=0,d;if(!a){const R=[Ji.bind(this),void 0];for(R.unshift(...l),R.push(...u),d=R.length,c=Promise.resolve(n);f{if(!s._listeners)return;let o=s._listeners.length;for(;o-- >0;)s._listeners[o](r);s._listeners=null}),this.promise.then=r=>{let o;const i=new Promise(l=>{s.subscribe(l),o=l}).then(r);return i.cancel=function(){s.unsubscribe(o)},i},t(function(o,i,l){s.reason||(s.reason=new ds(o,i,l),n(s.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=s=>{t.abort(s)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new su(function(r){t=r}),cancel:t}}};function Gh(e){return function(n){return e.apply(null,n)}}function zh(e){return b.isObject(e)&&e.isAxiosError===!0}const qr={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(qr).forEach(([e,t])=>{qr[t]=e});function ru(e){const t=new ln(e),n=Da(ln.prototype.request,t);return b.extend(n,ln.prototype,t,{allOwnKeys:!0}),b.extend(n,t,null,{allOwnKeys:!0}),n.create=function(r){return ru(fn(e,r))},n}const Te=ru(fs);Te.Axios=ln;Te.CanceledError=ds;Te.CancelToken=Wh;Te.isCancel=Qa;Te.VERSION=vo;Te.toFormData=Zs;Te.AxiosError=j;Te.Cancel=Te.CanceledError;Te.all=function(t){return Promise.all(t)};Te.spread=Gh;Te.isAxiosError=zh;Te.mergeConfig=fn;Te.AxiosHeaders=Ke;Te.formToJSON=e=>Xa(b.isHTMLForm(e)?new FormData(e):e);Te.getAdapter=nu.getAdapter;Te.HttpStatusCode=qr;Te.default=Te;const{Axios:Hb,AxiosError:qb,CanceledError:Kb,isCancel:Wb,CancelToken:Gb,VERSION:zb,all:Jb,Cancel:Xb,isAxiosError:Qb,spread:Yb,toFormData:Zb,AxiosHeaders:e0,HttpStatusCode:t0,formToJSON:n0,getAdapter:s0,mergeConfig:r0,create:o0}=Te;var Qi;const Jh=((Qi=window.SUB_STORE_CONFIG)==null?void 0:Qi.apiBaseUrl)||"",de=Te.create({baseURL:Jh+"/api",timeout:3e4});de.interceptors.request.use(e=>{const t=Xd();return t&&(e.headers.Authorization=`Bearer ${t}`),e});de.interceptors.response.use(e=>e.data,e=>{var n,s,r,o;((n=e.response)==null?void 0:n.status)===401&&ka();const t=((o=(r=(s=e.response)==null?void 0:s.data)==null?void 0:r.error)==null?void 0:o.message)||e.message||"Request failed";return Promise.reject(new Error(t))});const ou=()=>de.get("/env"),Xh=()=>de.get("/settings"),Qh=e=>de.patch("/settings",e),Yh=()=>de.get("/storage"),Zh=e=>de.post("/storage",e),tr=()=>de.get("/sources"),em=e=>de.post("/sources",e),tm=(e,t)=>de.patch(`/sources/${e}`,t),nm=e=>de.delete(`/sources/${e}`),wo=()=>de.get("/collections"),sm=e=>de.post("/collections",e),rm=(e,t)=>de.patch(`/collections/${e}`,t),om=e=>de.delete(`/collections/${e}`),Eo=()=>de.get("/templates"),im=e=>de.post("/templates",e),lm=(e,t)=>de.patch(`/templates/${e}`,t),am=e=>de.delete(`/templates/${e}`),iu=()=>de.get("/shares"),um=e=>de.post("/shares",e),cm=(e,t)=>de.patch(`/shares/${e}`,t),fm=e=>de.delete(`/shares/${e}`),dm=()=>de.get("/recycle-bin"),pm=e=>de.delete(`/recycle-bin/${e}`),hm=e=>de.post(`/recycle-bin/${e}/restore`),mm=e=>de.post("/preview/source",e),gm=(e,t)=>de.get(`/link/source/${e}`,{params:{}}),ym=(e,t)=>de.get(`/link/collection/${e}`,{params:{}}),bm=e=>de.post("/proxy/parse",e),xm=e=>de.post("/rule/parse",e),vm=e=>de.post("/utils/node-info",{server:e}),_m={class:"min-h-screen flex bg-gray-50"},wm={class:"w-60 bg-gray-900 text-gray-300 flex flex-col fixed inset-y-0 left-0 z-30"},Em={class:"px-5 py-4 border-b border-gray-700"},Sm={key:0,class:"text-xs text-gray-500 mt-0.5"},Rm={class:"flex-1 py-3 overflow-y-auto"},Cm={class:"text-base"},Am={class:"flex-1 ml-60 min-h-screen"},Tm={class:"px-6 py-5"},Om={__name:"AdminLayout",setup(e){const t=z(null),n=[{to:"/",icon:"📊",label:"概览"},{to:"/sources",icon:"📡",label:"订阅源"},{to:"/collections",icon:"📁",label:"合集"},{to:"/templates",icon:"📋",label:"模板"},{to:"/shares",icon:"🔗",label:"分享"},{to:"/recycle-bin",icon:"♻️",label:"回收站"},{to:"/tools",icon:"🔧",label:"工具"},{to:"/settings",icon:"⚙️",label:"设置"}];return Rt(async()=>{try{const s=await ou();t.value=s.data}catch{}}),(s,r)=>{const o=Pr("router-link"),i=Pr("router-view");return D(),L("div",_m,[p("aside",wm,[p("div",Em,[r[0]||(r[0]=p("h1",{class:"text-lg font-bold text-white flex items-center gap-2"},[p("span",{class:"inline-block w-2 h-2 bg-primary-500 rounded-full"}),un(" Sub-Store ")],-1)),t.value?(D(),L("p",Sm,q(t.value.backend)+" · "+q(t.value.version),1)):ce("",!0)]),p("nav",Rm,[(D(),L(fe,null,Ne(n,l=>we(o,{key:l.to,to:l.to,class:Ve(["flex items-center gap-3 px-5 py-2.5 text-sm transition-colors",s.$route.path===l.to||l.to!=="/"&&s.$route.path.startsWith(l.to)?"bg-gray-800 text-white border-l-2 border-primary-500":"hover:bg-gray-800/50 border-l-2 border-transparent"])},{default:lt(()=>[p("span",Cm,q(l.icon),1),p("span",null,q(l.label),1)]),_:2},1032,["to","class"])),64))]),r[1]||(r[1]=p("div",{class:"px-5 py-3 border-t border-gray-700 text-xs text-gray-500"},[p("p",null,"SQLite · Go")],-1))]),p("main",Am,[p("div",Tm,[we(i)])])])}}},Pm={class:"min-h-screen flex items-center justify-center bg-gray-50"},Nm={__name:"NotFound",setup(e){return(t,n)=>(D(),L("div",Pm,[...n[0]||(n[0]=[p("div",{class:"text-center"},[p("p",{class:"text-7xl font-bold text-gray-300"},"404"),p("p",{class:"mt-4 text-gray-400"},"Page Not Found")],-1)])]))}},Im={class:"grid grid-cols-2 lg:grid-cols-4 gap-4 mb-6"},km={class:"text-sm text-gray-500"},Dm={class:"grid grid-cols-1 lg:grid-cols-2 gap-4"},$m={class:"bg-white rounded-lg p-4 shadow-sm border"},Lm={key:0,class:"space-y-1.5 text-sm"},Um={class:"flex justify-between"},Fm={class:"flex justify-between"},Vm={class:"flex justify-between"},Mm={class:"flex justify-between"},Bm={class:"flex justify-between"},jm={key:1,class:"text-gray-400 text-sm"},Hm={class:"bg-white rounded-lg p-4 shadow-sm border"},qm={key:0,class:"flex flex-wrap gap-2"},Km={__name:"Dashboard",setup(e){const t=z(null),n=z([]),s=z([]),r=z([]),o=z([]),i=Xe(()=>[{label:"订阅源",value:n.value.length,color:"text-blue-600"},{label:"合集",value:s.value.length,color:"text-purple-600"},{label:"模板",value:r.value.length,color:"text-green-600"},{label:"分享链接",value:o.value.length,color:"text-orange-600"}]),l={buildTimeScripts:"脚本引擎",proxyConversion:"代理转换",ruleConversion:"规则转换",scopedShares:"作用域分享",recycleBin:"回收站",nodeInfo:"节点信息",surgeMac:"Surge Mac"};return Rt(async()=>{try{const[a,u,c,f,d]=await Promise.all([ou(),tr(),wo(),Eo(),iu()]);t.value=a.data,n.value=u.data||[],s.value=c.data||[],r.value=f.data||[],o.value=d.data||[]}catch(a){console.error("Failed to load dashboard",a)}}),(a,u)=>{var c;return D(),L("div",null,[u[7]||(u[7]=p("h2",{class:"text-xl font-bold mb-5"},"概览",-1)),p("div",Im,[(D(!0),L(fe,null,Ne(i.value,f=>(D(),L("div",{key:f.label,class:"bg-white rounded-lg p-4 shadow-sm border"},[p("p",km,q(f.label),1),p("p",{class:Ve(["text-2xl font-bold mt-1",f.color])},q(f.value),3)]))),128))]),p("div",Dm,[p("div",$m,[u[5]||(u[5]=p("h3",{class:"font-semibold mb-3"},"环境信息",-1)),t.value?(D(),L("div",Lm,[p("div",Um,[u[0]||(u[0]=p("span",{class:"text-gray-500"},"应用",-1)),p("span",null,q(t.value.app),1)]),p("div",Fm,[u[1]||(u[1]=p("span",{class:"text-gray-500"},"后端",-1)),p("span",null,q(t.value.backend),1)]),p("div",Vm,[u[2]||(u[2]=p("span",{class:"text-gray-500"},"版本",-1)),p("span",null,q(t.value.version),1)]),p("div",Mm,[u[3]||(u[3]=p("span",{class:"text-gray-500"},"运行时",-1)),p("span",null,q(t.value.runtime),1)]),p("div",Bm,[u[4]||(u[4]=p("span",{class:"text-gray-500"},"存储",-1)),p("span",null,q(t.value.storage),1)])])):(D(),L("div",jm,"加载中..."))]),p("div",Hm,[u[6]||(u[6]=p("h3",{class:"font-semibold mb-3"},"功能特性",-1)),(c=t.value)!=null&&c.feature?(D(),L("div",qm,[(D(!0),L(fe,null,Ne(t.value.feature,(f,d)=>(D(),L("span",{key:d,class:Ve(["px-2 py-1 rounded text-xs",f?"bg-green-100 text-green-700":"bg-gray-100 text-gray-500"])},q(l[d]||d)+": "+q(f?"✓":"✗"),3))),128))])):ce("",!0)])])])}}},Wm={key:0,class:"fixed inset-0 z-50 flex items-center justify-center p-4"},Gm={class:"relative bg-white rounded-lg shadow-xl w-full max-w-2xl max-h-[85vh] flex flex-col"},zm={class:"flex items-center justify-between px-6 py-3 border-b"},Jm={class:"text-base font-semibold text-gray-900"},Xm={class:"flex-1 overflow-y-auto px-6 py-4"},Qm={key:0,class:"px-6 py-3 border-t flex justify-end gap-2"},os={__name:"Modal",props:{modelValue:Boolean,title:{type:String,default:""}},emits:["update:modelValue"],setup(e){return(t,n)=>(D(),an(Dl,{to:"body"},[e.modelValue?(D(),L("div",Wm,[p("div",{class:"absolute inset-0 bg-black/40",onClick:n[0]||(n[0]=s=>t.$emit("update:modelValue",!1))}),p("div",Gm,[p("div",zm,[p("h3",Jm,q(e.title),1),p("button",{class:"text-gray-400 hover:text-gray-600 text-xl",onClick:n[1]||(n[1]=s=>t.$emit("update:modelValue",!1))},"×")]),p("div",Xm,[Vo(t.$slots,"default")]),t.$slots.footer?(D(),L("div",Qm,[Vo(t.$slots,"footer")])):ce("",!0)])])):ce("",!0)]))}},Ym={key:0,class:"fixed inset-0 z-[60] flex items-center justify-center p-4"},Zm={class:"relative bg-white rounded-lg shadow-xl w-full max-w-sm p-5"},eg={class:"text-base font-semibold text-gray-900 mb-2"},tg={class:"text-sm text-gray-600 mb-4"},ng={class:"flex justify-end gap-2"},ps={__name:"ConfirmDialog",props:{modelValue:Boolean,title:{type:String,default:"确认"},message:{type:String,default:"确定执行此操作?"},confirmText:{type:String,default:"确定"},danger:{type:Boolean,default:!1}},emits:["update:modelValue","confirm"],setup(e){return(t,n)=>(D(),an(Dl,{to:"body"},[e.modelValue?(D(),L("div",Ym,[p("div",{class:"absolute inset-0 bg-black/40",onClick:n[0]||(n[0]=s=>t.$emit("update:modelValue",!1))}),p("div",Zm,[p("h3",eg,q(e.title),1),p("p",tg,q(e.message),1),p("div",ng,[p("button",{class:"px-4 py-2 text-sm rounded-lg hover:bg-gray-100",onClick:n[1]||(n[1]=s=>t.$emit("update:modelValue",!1))},"取消"),p("button",{class:Ve(["px-4 py-2 text-sm rounded-lg text-white",e.danger?"bg-red-600 hover:bg-red-700":"bg-primary-600 hover:bg-primary-700"]),onClick:n[2]||(n[2]=s=>t.$emit("confirm"))},q(e.confirmText),3)])])])):ce("",!0)]))}},sg={key:0,class:"text-gray-400 text-sm"},rg={key:1,class:"text-gray-400 text-sm py-8 text-center"},og={key:2,class:"space-y-2"},ig={class:"flex-1 min-w-0"},lg={class:"flex items-center gap-2"},ag={class:"font-medium text-gray-900"},ug={key:0,class:"px-1.5 py-0.5 rounded text-xs bg-red-100 text-red-700"},cg={class:"text-xs text-gray-500 mt-1 truncate"},fg={class:"flex gap-2 mt-1 text-xs text-gray-400"},dg={key:0},pg={class:"flex gap-1 ml-3"},hg=["onClick"],mg=["onClick"],gg=["onClick"],yg=["onClick"],bg={class:"space-y-4"},xg=["disabled"],vg={key:0},_g={key:1},wg={class:"flex items-center gap-2"},Eg=["onUpdate:modelValue"],Sg=["value"],Rg=["onUpdate:modelValue"],Cg=["onUpdate:modelValue"],Ag=["onClick"],Tg={key:0,class:"text-gray-400 text-sm py-4 text-center"},Og={key:1},Pg={class:"text-xs text-gray-500 mb-2"},Ng={class:"max-h-96 overflow-y-auto text-xs font-mono bg-gray-50 p-3 rounded"},Ig={class:"text-gray-400"},kg={class:"text-blue-600"},Dg={class:"text-gray-400 ml-2"},$g={key:0,class:"text-gray-400 ml-2"},Lg={__name:"Sources",setup(e){const t=z([]),n=z(!0),s=z(!1),r=z(!1),o=z(!1),i=z(!1),l=z(null),a=z(null),u=z({show:!1,title:"",message:"",danger:!1,action:null}),c=["include","exclude","rename","dedupe","sort","delete-field","flag","quick","resolve","custom"],f=()=>({name:"",type:"remote",url:"",content:"",enabled:!0,filters:[]}),d=zt(f());function m(C,U="success"){a.value={msg:C,type:U},setTimeout(()=>a.value=null,2500)}function R(C){return C?new Date(C).toLocaleString("zh-CN"):""}function A(){Object.assign(d,f()),r.value=!1,s.value=!0}function O(C){Object.assign(d,{name:C.id,type:C.type||"remote",url:C.url||"",content:C.content||"",enabled:C.enabled!==!1,filters:JSON.parse(JSON.stringify(C.filters||[]))}),r.value=!0,s.value=!0}function E(){d.filters.push({type:"include",pattern:"",field:""})}async function w(){try{const C={name:d.name,type:d.type,url:d.url,content:d.content,enabled:d.enabled,filters:d.filters.filter(U=>U.type)};r.value?await tm(d.name,C):await em(C),s.value=!1,await I(),m(r.value?"已更新":"已创建")}catch(C){m(C.message,"error")}}async function v(C){u.value={show:!0,title:"删除订阅源",message:`确定删除 "${C.name}"?`,danger:!0,action:async()=>{try{await nm(C.id),await I(),m("已删除")}catch(U){m(U.message,"error")}}}}async function g(C){o.value=!0,i.value=!0,l.value=null;try{const U=await mm({id:C.id,name:C.name,type:C.type,url:C.url,content:C.content,filters:C.filters});l.value=U.data}catch(U){m(U.message,"error"),o.value=!1}finally{i.value=!1}}async function x(C){try{const U=await gm(C.id);await navigator.clipboard.writeText(U.data.url),m("链接已复制")}catch(U){m(U.message,"error")}}async function I(){n.value=!0;try{const C=await tr();t.value=C.data||[]}catch(C){m(C.message,"error")}finally{n.value=!1}}return Rt(I),(C,U)=>(D(),L("div",null,[p("div",{class:"flex items-center justify-between mb-5"},[U[10]||(U[10]=p("h2",{class:"text-xl font-bold"},"订阅源",-1)),p("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:A},"+ 新建")]),n.value?(D(),L("div",sg,"加载中...")):t.value.length===0?(D(),L("div",rg,"暂无订阅源")):(D(),L("div",og,[(D(!0),L(fe,null,Ne(t.value,k=>{var Q;return D(),L("div",{key:k.id,class:"bg-white rounded-lg p-4 shadow-sm border flex items-center justify-between hover:shadow-md transition-shadow"},[p("div",ig,[p("div",lg,[p("span",ag,q(k.name),1),p("span",{class:Ve(["px-1.5 py-0.5 rounded text-xs",k.type==="remote"?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-600"])},q(k.type),3),k.enabled?ce("",!0):(D(),L("span",ug,"已禁用"))]),p("p",cg,q(k.type==="local"?"(本地内容)":k.url),1),p("div",fg,[p("span",null,"过滤器: "+q(((Q=k.filters)==null?void 0:Q.length)||0),1),k.createdAt?(D(),L("span",dg,"创建: "+q(R(k.createdAt)),1)):ce("",!0)])]),p("div",pg,[p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-gray-100",onClick:G=>x(k)},"链接",8,hg),p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-gray-100",onClick:G=>g(k)},"预览",8,mg),p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-blue-50 text-blue-600",onClick:G=>O(k)},"编辑",8,gg),p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-red-50 text-red-600",onClick:G=>v(k)},"删除",8,yg)])])}),128))])),we(os,{modelValue:s.value,"onUpdate:modelValue":U[6]||(U[6]=k=>s.value=k),title:r.value?"编辑订阅源":"新建订阅源"},{footer:lt(()=>[p("button",{class:"px-4 py-2 text-sm rounded-lg hover:bg-gray-100",onClick:U[5]||(U[5]=k=>s.value=!1)},"取消"),p("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:w},"保存")]),default:lt(()=>[p("div",bg,[p("div",null,[U[11]||(U[11]=p("label",{class:"block text-sm font-medium mb-1"},"名称 / ID",-1)),se(p("input",{"onUpdate:modelValue":U[0]||(U[0]=k=>d.name=k),disabled:r.value,placeholder:"my-sub",class:"w-full px-3 py-2 border rounded-lg text-sm disabled:bg-gray-100"},null,8,xg),[[Ae,d.name]]),U[12]||(U[12]=p("p",{class:"text-xs text-gray-400 mt-0.5"},"仅支持小写字母、数字、下划线、连字符",-1))]),p("div",null,[U[14]||(U[14]=p("label",{class:"block text-sm font-medium mb-1"},"类型",-1)),se(p("select",{"onUpdate:modelValue":U[1]||(U[1]=k=>d.type=k),class:"w-full px-3 py-2 border rounded-lg text-sm"},[...U[13]||(U[13]=[p("option",{value:"remote"},"远程 (URL)",-1),p("option",{value:"local"},"本地 (内容)",-1)])],512),[[St,d.type]])]),d.type==="remote"?(D(),L("div",vg,[U[15]||(U[15]=p("label",{class:"block text-sm font-medium mb-1"},"URL",-1)),se(p("textarea",{"onUpdate:modelValue":U[2]||(U[2]=k=>d.url=k),rows:"3",placeholder:"https://example.com/sub (多个URL换行)",class:"w-full px-3 py-2 border rounded-lg text-sm font-mono"},null,512),[[Ae,d.url]])])):ce("",!0),d.type==="local"?(D(),L("div",_g,[U[16]||(U[16]=p("label",{class:"block text-sm font-medium mb-1"},"内容",-1)),se(p("textarea",{"onUpdate:modelValue":U[3]||(U[3]=k=>d.content=k),rows:"6",placeholder:"ss://... 或 base64 内容",class:"w-full px-3 py-2 border rounded-lg text-sm font-mono"},null,512),[[Ae,d.content]])])):ce("",!0),p("div",wg,[se(p("input",{type:"checkbox",id:"src-enabled","onUpdate:modelValue":U[4]||(U[4]=k=>d.enabled=k),class:"rounded"},null,512),[[wn,d.enabled]]),U[17]||(U[17]=p("label",{for:"src-enabled",class:"text-sm"},"启用",-1))]),p("div",null,[p("div",{class:"flex items-center justify-between mb-1"},[U[18]||(U[18]=p("label",{class:"text-sm font-medium"},"过滤器",-1)),p("button",{class:"text-xs text-primary-600 hover:underline",onClick:E},"+ 添加")]),(D(!0),L(fe,null,Ne(d.filters,(k,Q)=>(D(),L("div",{key:Q,class:"flex gap-1 mb-1.5"},[se(p("select",{"onUpdate:modelValue":G=>k.type=G,class:"px-2 py-1 border rounded text-xs w-28"},[(D(),L(fe,null,Ne(c,G=>p("option",{key:G,value:G},q(G),9,Sg)),64))],8,Eg),[[St,k.type]]),se(p("input",{"onUpdate:modelValue":G=>k.pattern=G,placeholder:"pattern",class:"flex-1 px-2 py-1 border rounded text-xs"},null,8,Rg),[[Ae,k.pattern]]),se(p("input",{"onUpdate:modelValue":G=>k.field=G,placeholder:"field",class:"w-24 px-2 py-1 border rounded text-xs"},null,8,Cg),[[Ae,k.field]]),p("button",{class:"px-2 py-1 text-xs text-red-500 hover:bg-red-50 rounded",onClick:G=>d.filters.splice(Q,1)},"×",8,Ag)]))),128))])])]),_:1},8,["modelValue","title"]),we(os,{modelValue:o.value,"onUpdate:modelValue":U[7]||(U[7]=k=>o.value=k),title:"预览结果"},{default:lt(()=>{var k,Q;return[i.value?(D(),L("div",Tg,"解析中...")):l.value?(D(),L("div",Og,[p("p",Pg,"原始节点: "+q(((k=l.value.original)==null?void 0:k.length)||0)+" · 处理后: "+q(((Q=l.value.processed)==null?void 0:Q.length)||0),1),p("div",Ng,[(D(!0),L(fe,null,Ne(l.value.processed||l.value.original||[],(G,B)=>(D(),L("div",{key:B,class:"py-0.5"},[p("span",Ig,q(B+1)+".",1),p("span",kg,q(G.name||G.remarks||"unnamed"),1),p("span",Dg,q(G.type),1),G.server?(D(),L("span",$g,q(G.server)+":"+q(G.port),1)):ce("",!0)]))),128))])])):ce("",!0)]}),_:1},8,["modelValue"]),we(ps,{modelValue:u.value.show,"onUpdate:modelValue":U[8]||(U[8]=k=>u.value.show=k),title:u.value.title,message:u.value.message,danger:u.value.danger,onConfirm:U[9]||(U[9]=k=>{u.value.action(),u.value.show=!1})},null,8,["modelValue","title","message","danger"]),a.value?(D(),L("div",{key:3,class:Ve(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",a.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},q(a.value.msg),3)):ce("",!0)]))}},Ug={key:0,class:"text-gray-400 text-sm"},Fg={key:1,class:"text-gray-400 text-sm py-8 text-center"},Vg={key:2,class:"space-y-2"},Mg={class:"flex-1 min-w-0"},Bg={class:"flex items-center gap-2"},jg={class:"font-medium text-gray-900"},Hg={key:0,class:"px-1.5 py-0.5 rounded text-xs bg-red-100 text-red-700"},qg={class:"flex gap-3 mt-1 text-xs text-gray-400"},Kg={key:0},Wg={class:"flex gap-1 ml-3"},Gg=["onClick"],zg=["onClick"],Jg=["onClick"],Xg={class:"space-y-4"},Qg=["disabled"],Yg={class:"max-h-32 overflow-y-auto border rounded-lg p-2 space-y-1"},Zg=["value"],ey={class:"text-xs text-gray-400"},ty={key:0,class:"text-xs text-gray-400 py-1"},ny=["value"],sy={class:"flex items-center gap-4"},ry={class:"flex items-center gap-2 text-sm"},oy={class:"flex items-center gap-2 text-sm"},iy={class:"flex items-center justify-between mb-1"},ly=["onUpdate:modelValue"],ay=["value"],uy=["onUpdate:modelValue"],cy=["onClick"],fy={__name:"Collections",setup(e){const t=z([]),n=z([]),s=z([]),r=z(!0),o=z(!1),i=z(!1),l=z(null),a=z({show:!1,title:"",message:"",danger:!1,action:null}),u=["include","exclude","rename","dedupe","sort","delete-field","flag","quick","resolve","custom"],c=()=>({name:"",sourceIds:[],filters:[],templateId:"",ignoreFailed:!0,enabled:!0}),f=zt(c());function d(v,g="success"){l.value={msg:v,type:g},setTimeout(()=>l.value=null,2500)}function m(){Object.assign(f,c()),i.value=!1,o.value=!0}function R(v){Object.assign(f,{name:v.id,sourceIds:[...v.sourceIds||[]],filters:JSON.parse(JSON.stringify(v.filters||[])),templateId:v.templateId||"",ignoreFailed:v.ignoreFailed!==!1,enabled:v.enabled!==!1}),i.value=!0,o.value=!0}async function A(){try{const v={...f};i.value?await rm(f.name,v):await sm(v),o.value=!1,await w(),d(i.value?"已更新":"已创建")}catch(v){d(v.message,"error")}}async function O(v){a.value={show:!0,title:"删除合集",message:`确定删除 "${v.name}"?`,danger:!0,action:async()=>{try{await om(v.id),await w(),d("已删除")}catch(g){d(g.message,"error")}}}}async function E(v){try{const g=await ym(v.id);await navigator.clipboard.writeText(g.data.url),d("链接已复制")}catch(g){d(g.message,"error")}}async function w(){r.value=!0;try{const[v,g,x]=await Promise.all([wo(),tr(),Eo()]);t.value=v.data||[],n.value=g.data||[],s.value=x.data||[]}catch(v){d(v.message,"error")}finally{r.value=!1}}return Rt(w),(v,g)=>(D(),L("div",null,[p("div",{class:"flex items-center justify-between mb-5"},[g[10]||(g[10]=p("h2",{class:"text-xl font-bold"},"合集",-1)),p("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:m},"+ 新建")]),r.value?(D(),L("div",Ug,"加载中...")):t.value.length===0?(D(),L("div",Fg,"暂无合集")):(D(),L("div",Vg,[(D(!0),L(fe,null,Ne(t.value,x=>{var I,C;return D(),L("div",{key:x.id,class:"bg-white rounded-lg p-4 shadow-sm border flex items-center justify-between hover:shadow-md transition-shadow"},[p("div",Mg,[p("div",Bg,[p("span",jg,q(x.name),1),x.enabled?ce("",!0):(D(),L("span",Hg,"已禁用"))]),p("div",qg,[p("span",null,"订阅源: "+q(((I=x.sourceIds)==null?void 0:I.length)||0),1),p("span",null,"过滤器: "+q(((C=x.filters)==null?void 0:C.length)||0),1),p("span",null,"模板: "+q(x.templateId||"default"),1),x.ignoreFailed?(D(),L("span",Kg,"忽略失败")):ce("",!0)])]),p("div",Wg,[p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-gray-100",onClick:U=>E(x)},"链接",8,Gg),p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-blue-50 text-blue-600",onClick:U=>R(x)},"编辑",8,zg),p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-red-50 text-red-600",onClick:U=>O(x)},"删除",8,Jg)])])}),128))])),we(os,{modelValue:o.value,"onUpdate:modelValue":g[7]||(g[7]=x=>o.value=x),title:i.value?"编辑合集":"新建合集"},{footer:lt(()=>[p("button",{class:"px-4 py-2 text-sm rounded-lg hover:bg-gray-100",onClick:g[6]||(g[6]=x=>o.value=!1)},"取消"),p("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:A},"保存")]),default:lt(()=>[p("div",Xg,[p("div",null,[g[11]||(g[11]=p("label",{class:"block text-sm font-medium mb-1"},"名称 / ID",-1)),se(p("input",{"onUpdate:modelValue":g[0]||(g[0]=x=>f.name=x),disabled:i.value,placeholder:"my-collection",class:"w-full px-3 py-2 border rounded-lg text-sm disabled:bg-gray-100"},null,8,Qg),[[Ae,f.name]])]),p("div",null,[g[12]||(g[12]=p("label",{class:"block text-sm font-medium mb-1"},"订阅源 (多选)",-1)),p("div",Yg,[(D(!0),L(fe,null,Ne(n.value,x=>(D(),L("label",{key:x.id,class:"flex items-center gap-2 text-sm cursor-pointer hover:bg-gray-50 px-1 py-0.5 rounded"},[se(p("input",{type:"checkbox",value:x.id,"onUpdate:modelValue":g[1]||(g[1]=I=>f.sourceIds=I),class:"rounded"},null,8,Zg),[[wn,f.sourceIds]]),p("span",null,q(x.name),1),p("span",ey,"("+q(x.type)+")",1)]))),128)),n.value.length===0?(D(),L("p",ty,"无可用订阅源")):ce("",!0)])]),p("div",null,[g[14]||(g[14]=p("label",{class:"block text-sm font-medium mb-1"},"模板",-1)),se(p("select",{"onUpdate:modelValue":g[2]||(g[2]=x=>f.templateId=x),class:"w-full px-3 py-2 border rounded-lg text-sm"},[g[13]||(g[13]=p("option",{value:""},"默认",-1)),(D(!0),L(fe,null,Ne(s.value,x=>(D(),L("option",{key:x.id,value:x.id},q(x.name)+" ("+q(x.target)+")",9,ny))),128))],512),[[St,f.templateId]])]),p("div",sy,[p("label",ry,[se(p("input",{type:"checkbox","onUpdate:modelValue":g[3]||(g[3]=x=>f.enabled=x),class:"rounded"},null,512),[[wn,f.enabled]]),g[15]||(g[15]=un(" 启用 ",-1))]),p("label",oy,[se(p("input",{type:"checkbox","onUpdate:modelValue":g[4]||(g[4]=x=>f.ignoreFailed=x),class:"rounded"},null,512),[[wn,f.ignoreFailed]]),g[16]||(g[16]=un(" 忽略失败源 ",-1))])]),p("div",null,[p("div",iy,[g[17]||(g[17]=p("label",{class:"text-sm font-medium"},"过滤器",-1)),p("button",{class:"text-xs text-primary-600 hover:underline",onClick:g[5]||(g[5]=x=>f.filters.push({type:"include",pattern:""}))},"+ 添加")]),(D(!0),L(fe,null,Ne(f.filters,(x,I)=>(D(),L("div",{key:I,class:"flex gap-1 mb-1.5"},[se(p("select",{"onUpdate:modelValue":C=>x.type=C,class:"px-2 py-1 border rounded text-xs w-28"},[(D(),L(fe,null,Ne(u,C=>p("option",{key:C,value:C},q(C),9,ay)),64))],8,ly),[[St,x.type]]),se(p("input",{"onUpdate:modelValue":C=>x.pattern=C,placeholder:"pattern",class:"flex-1 px-2 py-1 border rounded text-xs"},null,8,uy),[[Ae,x.pattern]]),p("button",{class:"px-2 py-1 text-xs text-red-500 hover:bg-red-50 rounded",onClick:C=>f.filters.splice(I,1)},"×",8,cy)]))),128))])])]),_:1},8,["modelValue","title"]),we(ps,{modelValue:a.value.show,"onUpdate:modelValue":g[8]||(g[8]=x=>a.value.show=x),title:a.value.title,message:a.value.message,danger:a.value.danger,onConfirm:g[9]||(g[9]=x=>{a.value.action(),a.value.show=!1})},null,8,["modelValue","title","message","danger"]),l.value?(D(),L("div",{key:3,class:Ve(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",l.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},q(l.value.msg),3)):ce("",!0)]))}},dy={key:0,class:"text-gray-400 text-sm"},py={key:1,class:"text-gray-400 text-sm py-8 text-center"},hy={key:2,class:"space-y-2"},my={class:"flex-1 min-w-0"},gy={class:"flex items-center gap-2"},yy={class:"font-medium text-gray-900"},by={class:"px-1.5 py-0.5 rounded text-xs bg-purple-100 text-purple-700"},xy={key:0,class:"px-1.5 py-0.5 rounded text-xs bg-gray-100 text-gray-500"},vy={class:"text-xs text-gray-500 mt-1"},_y={key:0,class:"flex gap-1 ml-3"},wy=["onClick"],Ey=["onClick"],Sy={key:1,class:"flex gap-1 ml-3"},Ry=["onClick"],Cy={class:"space-y-4"},Ay=["disabled"],Ty=["value"],Oy={key:0,class:"text-xs text-red-500 mt-1"},Py={class:"text-xs font-mono bg-gray-50 p-3 rounded max-h-96 overflow-auto"},Ny={__name:"Templates",setup(e){const t=z([]),n=z(!0),s=z(!1),r=z(!1),o=z(!1),i=z(null),l=z(null),a=z({show:!1,title:"",message:"",danger:!1,action:null}),u=["mihomo","stash","surge","surge-mac","surfboard","loon","egern","shadowrocket","qx","sing-box","v2ray","uri","json"],c=()=>({name:"",target:"mihomo",configStr:"{}"}),f=zt(c()),d=Xe(()=>{try{return JSON.parse(f.configStr),""}catch{return"JSON 格式错误"}});function m(g,x="success"){l.value={msg:g,type:x},setTimeout(()=>l.value=null,2500)}function R(){Object.assign(f,c()),r.value=!1,s.value=!0}function A(g){Object.assign(f,{name:g.id,target:g.target,configStr:JSON.stringify(g.config||{},null,2)}),r.value=!0,s.value=!0}function O(g){i.value=g.config,o.value=!0}async function E(){if(d.value){m(d.value,"error");return}try{const g={name:f.name,target:f.target,config:JSON.parse(f.configStr)};r.value?await lm(f.name,g):await im(g),s.value=!1,await v(),m(r.value?"已更新":"已创建")}catch(g){m(g.message,"error")}}async function w(g){a.value={show:!0,title:"删除模板",message:`确定删除 "${g.name}"?`,danger:!0,action:async()=>{try{await am(g.id),await v(),m("已删除")}catch(x){m(x.message,"error")}}}}async function v(){n.value=!0;try{const g=await Eo();t.value=g.data||[]}catch(g){m(g.message,"error")}finally{n.value=!1}}return Rt(v),(g,x)=>(D(),L("div",null,[p("div",{class:"flex items-center justify-between mb-5"},[x[8]||(x[8]=p("h2",{class:"text-xl font-bold"},"模板",-1)),p("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:R},"+ 新建")]),n.value?(D(),L("div",dy,"加载中...")):t.value.length===0?(D(),L("div",py,"暂无模板")):(D(),L("div",hy,[(D(!0),L(fe,null,Ne(t.value,I=>(D(),L("div",{key:I.id,class:"bg-white rounded-lg p-4 shadow-sm border flex items-center justify-between hover:shadow-md transition-shadow"},[p("div",my,[p("div",gy,[p("span",yy,q(I.name),1),p("span",by,q(I.target),1),I.readonly?(D(),L("span",xy,"内置")):ce("",!0)]),p("p",vy,q(Object.keys(I.config||{}).length)+" 个配置项",1)]),I.readonly?(D(),L("div",Sy,[p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-gray-100",onClick:C=>O(I)},"查看",8,Ry)])):(D(),L("div",_y,[p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-blue-50 text-blue-600",onClick:C=>A(I)},"编辑",8,wy),p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-red-50 text-red-600",onClick:C=>w(I)},"删除",8,Ey)]))]))),128))])),we(os,{modelValue:s.value,"onUpdate:modelValue":x[4]||(x[4]=I=>s.value=I),title:r.value?"编辑模板":"新建模板"},{footer:lt(()=>[p("button",{class:"px-4 py-2 text-sm rounded-lg hover:bg-gray-100",onClick:x[3]||(x[3]=I=>s.value=!1)},"取消"),p("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:E},"保存")]),default:lt(()=>[p("div",Cy,[p("div",null,[x[9]||(x[9]=p("label",{class:"block text-sm font-medium mb-1"},"名称 / ID",-1)),se(p("input",{"onUpdate:modelValue":x[0]||(x[0]=I=>f.name=I),disabled:r.value,placeholder:"my-template",class:"w-full px-3 py-2 border rounded-lg text-sm disabled:bg-gray-100"},null,8,Ay),[[Ae,f.name]])]),p("div",null,[x[10]||(x[10]=p("label",{class:"block text-sm font-medium mb-1"},"目标平台",-1)),se(p("select",{"onUpdate:modelValue":x[1]||(x[1]=I=>f.target=I),class:"w-full px-3 py-2 border rounded-lg text-sm"},[(D(),L(fe,null,Ne(u,I=>p("option",{key:I,value:I},q(I),9,Ty)),64))],512),[[St,f.target]])]),p("div",null,[x[11]||(x[11]=p("label",{class:"block text-sm font-medium mb-1"},"配置 (JSON)",-1)),se(p("textarea",{"onUpdate:modelValue":x[2]||(x[2]=I=>f.configStr=I),rows:"12",placeholder:'{"proxy-groups": [], "rules": []}',class:"w-full px-3 py-2 border rounded-lg text-sm font-mono"},null,512),[[Ae,f.configStr]]),d.value?(D(),L("p",Oy,q(d.value),1)):ce("",!0)])])]),_:1},8,["modelValue","title"]),we(os,{modelValue:o.value,"onUpdate:modelValue":x[5]||(x[5]=I=>o.value=I),title:"查看模板配置"},{default:lt(()=>[p("pre",Py,q(JSON.stringify(i.value,null,2)),1)]),_:1},8,["modelValue"]),we(ps,{modelValue:a.value.show,"onUpdate:modelValue":x[6]||(x[6]=I=>a.value.show=I),title:a.value.title,message:a.value.message,danger:a.value.danger,onConfirm:x[7]||(x[7]=I=>{a.value.action(),a.value.show=!1})},null,8,["modelValue","title","message","danger"]),l.value?(D(),L("div",{key:3,class:Ve(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",l.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},q(l.value.msg),3)):ce("",!0)]))}},Iy={class:"bg-white rounded-lg p-4 shadow-sm border mb-4"},ky={class:"grid grid-cols-1 md:grid-cols-4 gap-2 mb-3"},Dy=["value"],$y=["value"],Ly=["disabled"],Uy={key:0,class:"text-gray-400 text-sm"},Fy={key:1,class:"text-gray-400 text-sm py-4 text-center"},Vy={key:2,class:"space-y-2"},My={class:"flex-1 min-w-0"},By={class:"flex items-center gap-2"},jy={class:"font-medium text-gray-900"},Hy={key:0,class:"text-xs text-gray-400"},qy={key:1,class:"px-1.5 py-0.5 rounded text-xs bg-red-100 text-red-700"},Ky={class:"text-xs text-gray-400 mt-1"},Wy={key:0},Gy={key:1},zy={class:"flex gap-1 ml-3"},Jy=["onClick"],Xy=["onClick"],Qy={__name:"Shares",setup(e){const t=z([]),n=z([]),s=z([]),r=z(!0),o=z(""),i=z(null),l=z({show:!1,title:"",message:"",danger:!1,action:null}),a=["mihomo","stash","surge","surge-mac","surfboard","loon","egern","shadowrocket","qx","sing-box","v2ray","uri","json"],u=zt({resourceType:"source",resourceId:"",target:"",expiresHours:"0"}),c=Xe(()=>u.resourceType==="source"?n.value:s.value);function f(w,v="success"){i.value={msg:w,type:v},setTimeout(()=>i.value=null,2500)}function d(w){return w?new Date(w).toLocaleString("zh-CN"):""}async function m(w){await navigator.clipboard.writeText(w),f("已复制")}async function R(){try{const w={resourceType:u.resourceType,resourceId:u.resourceId,target:u.target||void 0,expiresIn:Math.max(0,Number(u.expiresHours)||0)*3600},v=await um(w);o.value=v.data.url,await E(),f("分享已创建")}catch(w){f(w.message,"error")}}async function A(w){try{await cm(w.id,{enabled:!w.enabled}),await E()}catch(v){f(v.message,"error")}}async function O(w){l.value={show:!0,title:"删除分享",message:"确定删除此分享?",danger:!0,action:async()=>{try{await fm(w.id),await E(),f("已删除")}catch(v){f(v.message,"error")}}}}async function E(){r.value=!0;try{const[w,v,g]=await Promise.all([iu(),tr(),wo()]);t.value=w.data||[],n.value=v.data||[],s.value=g.data||[]}catch(w){f(w.message,"error")}finally{r.value=!1}}return Rt(E),(w,v)=>(D(),L("div",null,[v[12]||(v[12]=p("h2",{class:"text-xl font-bold mb-5"},"分享链接",-1)),p("div",Iy,[v[11]||(v[11]=p("h3",{class:"font-semibold mb-3 text-sm"},"创建分享",-1)),p("div",ky,[se(p("select",{"onUpdate:modelValue":v[0]||(v[0]=g=>u.resourceType=g),class:"px-3 py-2 border rounded-lg text-sm"},[...v[7]||(v[7]=[p("option",{value:"source"},"订阅源",-1),p("option",{value:"collection"},"合集",-1)])],512),[[St,u.resourceType]]),se(p("select",{"onUpdate:modelValue":v[1]||(v[1]=g=>u.resourceId=g),class:"px-3 py-2 border rounded-lg text-sm"},[v[8]||(v[8]=p("option",{value:""},"选择资源",-1)),(D(!0),L(fe,null,Ne(c.value,g=>(D(),L("option",{key:g.id,value:g.id},q(g.name),9,Dy))),128))],512),[[St,u.resourceId]]),se(p("select",{"onUpdate:modelValue":v[2]||(v[2]=g=>u.target=g),class:"px-3 py-2 border rounded-lg text-sm"},[v[9]||(v[9]=p("option",{value:""},"自动",-1)),(D(),L(fe,null,Ne(a,g=>p("option",{key:g,value:g},q(g),9,$y)),64))],512),[[St,u.target]]),se(p("input",{"onUpdate:modelValue":v[3]||(v[3]=g=>u.expiresHours=g),type:"number",min:"0",placeholder:"有效小时(0=永久)",class:"px-3 py-2 border rounded-lg text-sm"},null,512),[[Ae,u.expiresHours]])]),p("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",disabled:!u.resourceId,onClick:R},"创建分享",8,Ly),o.value?(D(),L("div",{key:0,class:"mt-3 p-3 bg-gray-50 rounded-lg break-all text-xs font-mono cursor-pointer hover:bg-gray-100",onClick:v[4]||(v[4]=g=>m(o.value))},[un(q(o.value)+" ",1),v[10]||(v[10]=p("span",{class:"text-primary-600"},"[点击复制]",-1))])):ce("",!0)]),r.value?(D(),L("div",Uy,"加载中...")):t.value.length===0?(D(),L("div",Fy,"暂无分享")):(D(),L("div",Vy,[(D(!0),L(fe,null,Ne(t.value,g=>(D(),L("div",{key:g.id,class:"bg-white rounded-lg p-4 shadow-sm border flex items-center justify-between"},[p("div",My,[p("div",By,[p("span",{class:Ve(["px-1.5 py-0.5 rounded text-xs",g.resourceType==="source"?"bg-blue-100 text-blue-700":"bg-purple-100 text-purple-700"])},q(g.resourceType),3),p("span",jy,q(g.resourceId),1),g.target?(D(),L("span",Hy,"→ "+q(g.target),1)):ce("",!0),g.enabled?ce("",!0):(D(),L("span",qy,"已禁用"))]),p("p",Ky,[un(" 创建: "+q(d(g.createdAt))+" ",1),g.expiresAt?(D(),L("span",Wy," · 过期: "+q(d(g.expiresAt)),1)):(D(),L("span",Gy," · 永久有效"))])]),p("div",zy,[p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-gray-100",onClick:x=>A(g)},q(g.enabled?"禁用":"启用"),9,Jy),p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-red-50 text-red-600",onClick:x=>O(g)},"删除",8,Xy)])]))),128))])),we(ps,{modelValue:l.value.show,"onUpdate:modelValue":v[5]||(v[5]=g=>l.value.show=g),title:l.value.title,message:l.value.message,danger:l.value.danger,onConfirm:v[6]||(v[6]=g=>{l.value.action(),l.value.show=!1})},null,8,["modelValue","title","message","danger"]),i.value?(D(),L("div",{key:3,class:Ve(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",i.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},q(i.value.msg),3)):ce("",!0)]))}},Yy={key:0,class:"text-gray-400 text-sm"},Zy={key:1,class:"text-gray-400 text-sm py-8 text-center"},eb={key:2,class:"space-y-2"},tb={class:"flex-1 min-w-0"},nb={class:"flex items-center gap-2"},sb={class:"font-medium text-gray-900"},rb={class:"text-xs text-gray-400 mt-1"},ob={class:"flex gap-1 ml-3"},ib=["onClick"],lb=["onClick"],ab={__name:"RecycleBin",setup(e){const t=z([]),n=z(!0),s=z(null),r=z({show:!1,title:"",message:"",danger:!1,confirmText:"确定",action:null});function o(f,d="success"){s.value={msg:f,type:d},setTimeout(()=>s.value=null,2500)}function i(f){return f?new Date(f).toLocaleString("zh-CN"):""}function l(f){return{source:"bg-blue-100 text-blue-700",collection:"bg-purple-100 text-purple-700",template:"bg-green-100 text-green-700",share:"bg-orange-100 text-orange-700"}[f]||"bg-gray-100 text-gray-600"}async function a(f){r.value={show:!0,title:"恢复",message:`恢复 "${f.resourceId}"?`,danger:!1,confirmText:"恢复",action:async()=>{try{await hm(f.id),await c(),o("已恢复")}catch(d){o(d.message,"error")}}}}async function u(f){r.value={show:!0,title:"彻底删除",message:`彻底删除 "${f.resourceId}"?此操作不可撤销!`,danger:!0,confirmText:"彻底删除",action:async()=>{try{await pm(f.id),await c(),o("已彻底删除")}catch(d){o(d.message,"error")}}}}async function c(){n.value=!0;try{const f=await dm();t.value=f.data||[]}catch(f){o(f.message,"error")}finally{n.value=!1}}return Rt(c),(f,d)=>(D(),L("div",null,[d[2]||(d[2]=p("h2",{class:"text-xl font-bold mb-5"},"回收站",-1)),n.value?(D(),L("div",Yy,"加载中...")):t.value.length===0?(D(),L("div",Zy,"回收站为空")):(D(),L("div",eb,[(D(!0),L(fe,null,Ne(t.value,m=>(D(),L("div",{key:m.id,class:"bg-white rounded-lg p-4 shadow-sm border flex items-center justify-between"},[p("div",tb,[p("div",nb,[p("span",{class:Ve(["px-1.5 py-0.5 rounded text-xs",l(m.resourceType)])},q(m.resourceType),3),p("span",sb,q(m.resourceId),1)]),p("p",rb,"删除于: "+q(i(m.deletedAt)),1)]),p("div",ob,[p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-blue-50 text-blue-600",onClick:R=>a(m)},"恢复",8,ib),p("button",{class:"px-2.5 py-1 text-xs rounded hover:bg-red-50 text-red-600",onClick:R=>u(m)},"彻底删除",8,lb)])]))),128))])),we(ps,{modelValue:r.value.show,"onUpdate:modelValue":d[0]||(d[0]=m=>r.value.show=m),title:r.value.title,message:r.value.message,danger:r.value.danger,confirmText:r.value.confirmText,onConfirm:d[1]||(d[1]=m=>{r.value.action(),r.value.show=!1})},null,8,["modelValue","title","message","danger","confirmText"]),s.value?(D(),L("div",{key:3,class:Ve(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",s.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},q(s.value.msg),3)):ce("",!0)]))}},ub={class:"bg-white rounded-lg p-4 shadow-sm border mb-4"},cb={class:"flex gap-2 mb-3"},fb=["value"],db={class:"flex gap-2 mb-2"},pb=["disabled"],hb={key:0,class:"text-xs text-gray-500 mb-2"},mb={class:"bg-white rounded-lg p-4 shadow-sm border mb-4"},gb={class:"flex gap-2 mb-3"},yb=["disabled"],bb={key:0,class:"bg-gray-50 rounded-lg p-3 text-sm space-y-1"},xb={class:"flex justify-between"},vb={class:"flex justify-between"},_b={class:"flex justify-between"},wb={class:"flex justify-between"},Eb={key:0,class:"flex justify-between"},Sb={class:"bg-white rounded-lg p-4 shadow-sm border"},Rb={class:"flex gap-2"},Cb={class:"px-4 py-2 bg-gray-600 text-white rounded-lg text-sm hover:bg-gray-700 cursor-pointer"},Ab={__name:"Tools",setup(e){const t=["mihomo","stash","surge","surge-mac","surfboard","loon","egern","shadowrocket","qx","sing-box","v2ray","uri","json"],n=["mihomo","surge","loon","qx"],s=z("proxy"),r=z("mihomo"),o=z(""),i=z(""),l=z(""),a=z(!1),u=z(""),c=z(null),f=z(!1),d=z(null),m=Xe(()=>s.value==="proxy"?t:n);function R(g,x="success"){d.value={msg:g,type:x},setTimeout(()=>d.value=null,2500)}async function A(g){await navigator.clipboard.writeText(g),R("已复制")}async function O(){var g;if(!o.value.trim()){R("请输入内容","error");return}a.value=!0,i.value="",l.value="";try{const I=await(s.value==="proxy"?bm:xm)({content:o.value,target:r.value});i.value=I.data.content||I.data.par_res||"",l.value=`解析: ${I.data.parsed||0} · 输出: ${I.data.emitted||0} · 跳过: ${I.data.skipped||0}`,(g=I.data.warnings)!=null&&g.length&&(l.value+=" · ⚠ "+I.data.warnings.join("; ")),R("转换成功")}catch(x){R(x.message,"error")}finally{a.value=!1}}async function E(){f.value=!0,c.value=null;try{const g=await vm(u.value);c.value=g.data}catch(g){R(g.message,"error")}finally{f.value=!1}}async function w(){try{const g=await Yh(),x=new Blob([JSON.stringify(g,null,2)],{type:"application/json"}),I=URL.createObjectURL(x),C=document.createElement("a");C.href=I,C.download=`sub-store-backup-${Date.now()}.json`,C.click(),URL.revokeObjectURL(I),R("已导出")}catch(g){R(g.message,"error")}}async function v(g){var I;const x=(I=g.target.files)==null?void 0:I[0];if(x){try{const C=await x.text(),U=JSON.parse(C);await Zh(U),R("导入成功")}catch(C){R(C.message,"error")}g.target.value=""}}return(g,x)=>{var I;return D(),L("div",null,[x[16]||(x[16]=p("h2",{class:"text-xl font-bold mb-5"},"工具",-1)),p("div",ub,[x[7]||(x[7]=p("h3",{class:"font-semibold mb-3"},"转换器",-1)),p("div",cb,[se(p("select",{"onUpdate:modelValue":x[0]||(x[0]=C=>s.value=C),class:"px-3 py-2 border rounded-lg text-sm"},[...x[6]||(x[6]=[p("option",{value:"proxy"},"代理转换",-1),p("option",{value:"rule"},"规则转换",-1)])],512),[[St,s.value]]),se(p("select",{"onUpdate:modelValue":x[1]||(x[1]=C=>r.value=C),class:"px-3 py-2 border rounded-lg text-sm"},[(D(!0),L(fe,null,Ne(m.value,C=>(D(),L("option",{key:C,value:C},q(C),9,fb))),128))],512),[[St,r.value]])]),se(p("textarea",{"onUpdate:modelValue":x[2]||(x[2]=C=>o.value=C),rows:"5",placeholder:"粘贴订阅内容或规则...",class:"w-full px-3 py-2 border rounded-lg text-sm font-mono mb-2"},null,512),[[Ae,o.value]]),p("div",db,[p("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",disabled:a.value,onClick:O},q(a.value?"转换中...":"转换"),9,pb),i.value?(D(),L("button",{key:0,class:"px-4 py-2 text-sm rounded-lg hover:bg-gray-100",onClick:x[3]||(x[3]=C=>A(i.value))},"复制结果")):ce("",!0)]),l.value?(D(),L("p",hb,q(l.value),1)):ce("",!0),i.value?se((D(),L("textarea",{key:1,"onUpdate:modelValue":x[4]||(x[4]=C=>i.value=C),rows:"8",readonly:"",class:"w-full px-3 py-2 border rounded-lg text-sm font-mono bg-gray-50"},null,512)),[[Ae,i.value]]):ce("",!0)]),p("div",mb,[x[13]||(x[13]=p("h3",{class:"font-semibold mb-3"},"节点信息查询",-1)),p("div",gb,[se(p("input",{"onUpdate:modelValue":x[5]||(x[5]=C=>u.value=C),placeholder:"服务器地址 / IP",class:"flex-1 px-3 py-2 border rounded-lg text-sm",onKeyup:Nf(E,["enter"])},null,544),[[Ae,u.value]]),p("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",disabled:!u.value||f.value,onClick:E},q(f.value?"查询中...":"查询"),9,yb)]),c.value?(D(),L("div",bb,[p("div",xb,[x[8]||(x[8]=p("span",{class:"text-gray-500"},"IP",-1)),p("span",null,q(c.value.ip),1)]),p("div",vb,[x[9]||(x[9]=p("span",{class:"text-gray-500"},"国家",-1)),p("span",null,q(c.value.country),1)]),p("div",_b,[x[10]||(x[10]=p("span",{class:"text-gray-500"},"地区",-1)),p("span",null,q(c.value.region),1)]),p("div",wb,[x[11]||(x[11]=p("span",{class:"text-gray-500"},"城市",-1)),p("span",null,q(c.value.city),1)]),c.value.connection?(D(),L("div",Eb,[x[12]||(x[12]=p("span",{class:"text-gray-500"},"ISP",-1)),p("span",null,q(((I=c.value.connection)==null?void 0:I.isp)||"-"),1)])):ce("",!0)])):ce("",!0)]),p("div",Sb,[x[15]||(x[15]=p("h3",{class:"font-semibold mb-3"},"数据备份",-1)),p("div",Rb,[p("button",{class:"px-4 py-2 bg-green-600 text-white rounded-lg text-sm hover:bg-green-700",onClick:w},"导出全部"),p("label",Cb,[x[14]||(x[14]=un(" 导入备份 ",-1)),p("input",{type:"file",accept:".json",class:"hidden",onChange:v},null,32)])])]),d.value?(D(),L("div",{key:0,class:Ve(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",d.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},q(d.value.msg),3)):ce("",!0)])}}},Tb={key:0,class:"text-gray-400 text-sm"},Ob={key:1,class:"space-y-4 max-w-2xl"},Pb={class:"bg-white rounded-lg p-4 shadow-sm border"},Nb={class:"space-y-3"},Ib={class:"flex items-center gap-2"},kb={class:"bg-white rounded-lg p-4 shadow-sm border"},Db={class:"bg-white rounded-lg p-4 shadow-sm border"},$b={class:"flex items-center gap-2 mb-2"},Lb={class:"grid grid-cols-2 gap-2"},Ub={class:"bg-white rounded-lg p-4 shadow-sm border"},Fb={__name:"Settings",setup(e){const t=z(null),n=z(!0),s=z(null);function r(i,l="success"){s.value={msg:i,type:l},setTimeout(()=>s.value=null,2500)}async function o(){try{await Qh(t.value),r("设置已保存")}catch(i){r(i.message,"error")}}return Rt(async()=>{try{const i=await Xh();t.value=i.data}catch(i){r(i.message,"error")}finally{n.value=!1}}),(i,l)=>(D(),L("div",null,[l[26]||(l[26]=p("h2",{class:"text-xl font-bold mb-5"},"设置",-1)),n.value?(D(),L("div",Tb,"加载中...")):(D(),L("div",Ob,[p("div",Pb,[l[17]||(l[17]=p("h3",{class:"font-semibold mb-3 text-sm"},"通用",-1)),p("div",Nb,[p("div",null,[l[11]||(l[11]=p("label",{class:"block text-sm mb-1"},"默认 User-Agent",-1)),se(p("input",{"onUpdate:modelValue":l[0]||(l[0]=a=>t.value.defaultUserAgent=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Ae,t.value.defaultUserAgent]])]),p("div",null,[l[12]||(l[12]=p("label",{class:"block text-sm mb-1"},"默认流量查询 User-Agent",-1)),se(p("input",{"onUpdate:modelValue":l[1]||(l[1]=a=>t.value.defaultFlowUserAgent=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Ae,t.value.defaultFlowUserAgent]])]),p("div",null,[l[13]||(l[13]=p("label",{class:"block text-sm mb-1"},"请求超时 (ms)",-1)),se(p("input",{"onUpdate:modelValue":l[2]||(l[2]=a=>t.value.defaultTimeout=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Ae,t.value.defaultTimeout]])]),p("div",null,[l[14]||(l[14]=p("label",{class:"block text-sm mb-1"},"后端并发数",-1)),se(p("input",{"onUpdate:modelValue":l[3]||(l[3]=a=>t.value.backendRequestConcurrency=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Ae,t.value.backendRequestConcurrency]])]),p("div",null,[l[15]||(l[15]=p("label",{class:"block text-sm mb-1"},"远程缓存 TTL (秒)",-1)),se(p("input",{"onUpdate:modelValue":l[4]||(l[4]=a=>t.value.remoteCacheTtl=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Ae,t.value.remoteCacheTtl]])]),p("div",Ib,[se(p("input",{type:"checkbox",id:"cache-stale","onUpdate:modelValue":l[5]||(l[5]=a=>t.value.remoteCacheStaleOnError=a),class:"rounded"},null,512),[[wn,t.value.remoteCacheStaleOnError]]),l[16]||(l[16]=p("label",{for:"cache-stale",class:"text-sm"},"缓存过期时仍返回旧数据",-1))])])]),p("div",kb,[l[18]||(l[18]=p("h3",{class:"font-semibold mb-3 text-sm"},"节点信息 API",-1)),se(p("input",{"onUpdate:modelValue":l[6]||(l[6]=a=>t.value.nodeInfoApiUrl=a),placeholder:"https://ipwho.is/{ip}",class:"w-full px-3 py-2 border rounded-lg text-sm font-mono"},null,512),[[Ae,t.value.nodeInfoApiUrl]]),l[19]||(l[19]=p("p",{class:"text-xs text-gray-400 mt-1"},"URL 中 {ip} 会被替换为查询的 IP",-1))]),p("div",Db,[l[23]||(l[23]=p("h3",{class:"font-semibold mb-3 text-sm"},"主题",-1)),p("div",$b,[se(p("input",{type:"checkbox",id:"theme-auto","onUpdate:modelValue":l[7]||(l[7]=a=>t.value.theme.auto=a),class:"rounded"},null,512),[[wn,t.value.theme.auto]]),l[20]||(l[20]=p("label",{for:"theme-auto",class:"text-sm"},"自动跟随系统",-1))]),p("div",Lb,[p("div",null,[l[21]||(l[21]=p("label",{class:"text-xs text-gray-500"},"亮色主题",-1)),se(p("input",{"onUpdate:modelValue":l[8]||(l[8]=a=>t.value.theme.light=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Ae,t.value.theme.light]])]),p("div",null,[l[22]||(l[22]=p("label",{class:"text-xs text-gray-500"},"暗色主题",-1)),se(p("input",{"onUpdate:modelValue":l[9]||(l[9]=a=>t.value.theme.dark=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Ae,t.value.theme.dark]])])])]),p("div",Ub,[l[25]||(l[25]=p("h3",{class:"font-semibold mb-3 text-sm"},"应用",-1)),p("div",null,[l[24]||(l[24]=p("label",{class:"block text-sm mb-1"},"应用名称",-1)),se(p("input",{"onUpdate:modelValue":l[10]||(l[10]=a=>t.value.appName=a),class:"w-full px-3 py-2 border rounded-lg text-sm"},null,512),[[Ae,t.value.appName]])])]),p("button",{class:"px-4 py-2 bg-primary-600 text-white rounded-lg text-sm hover:bg-primary-700",onClick:o},"保存设置")])),s.value?(D(),L("div",{key:2,class:Ve(["fixed bottom-4 right-4 px-4 py-2 rounded-lg shadow-lg text-sm z-50",s.value.type==="error"?"bg-red-500 text-white":"bg-green-500 text-white"])},q(s.value.msg),3)):ce("",!0)]))}},Vb=[{path:"/",component:Om,children:[{path:"",name:"dashboard",component:Km,meta:{title:"概览"}},{path:"sources",name:"sources",component:Lg,meta:{title:"订阅源"}},{path:"collections",name:"collections",component:fy,meta:{title:"合集"}},{path:"templates",name:"templates",component:Ny,meta:{title:"模板"}},{path:"shares",name:"shares",component:Qy,meta:{title:"分享"}},{path:"recycle-bin",name:"recycle-bin",component:ab,meta:{title:"回收站"}},{path:"tools",name:"tools",component:Ab,meta:{title:"工具"}},{path:"settings",name:"settings",component:Fb,meta:{title:"设置"}}]},{path:"/:pathMatch(.*)*",name:"not-found",component:Nm}],lu=Kd({history:Ed(),routes:Vb});let xs=null;lu.beforeEach(async(e,t,n)=>{if(e.name==="not-found")return n();const s=e.query.token;if(s){xs||(xs=Jd(s));const i=await xs;if(xs=null,i){Gd(s);const l={...e.query};return delete l.token,n({...e,query:l,replace:!0})}else return ka(),n({name:"not-found"})}const r=Ia(),o=zd();if(!r||!o)return n({name:"not-found"});n()});const So=Df(Vf);So.use(Ff());So.use(lu);So.mount("#app"); diff --git a/frontend/dist/index.html b/frontend/dist/index.html index dbad744..10c12f9 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -5,8 +5,8 @@ Sub-Store - - + +
diff --git a/frontend/src/api/index.js b/frontend/src/api/index.js index 6363814..6c921a9 100644 --- a/frontend/src/api/index.js +++ b/frontend/src/api/index.js @@ -1,16 +1,13 @@ import axios from 'axios' -import { getEffectiveToken, clearToken } from '@/utils/token' - -// Read runtime config (injected by config.js, defaults to same-origin) -const apiBaseUrl = (window.SUB_STORE_CONFIG?.apiBaseUrl) || '' +import { getApiBaseUrl, getEffectiveToken, clearToken } from '@/utils/token' const api = axios.create({ - baseURL: apiBaseUrl + '/api', timeout: 30000, }) // Request interceptor — attach admin token api.interceptors.request.use((config) => { + config.baseURL = `${getApiBaseUrl()}/api` const token = getEffectiveToken() if (token) { config.headers.Authorization = `Bearer ${token}` @@ -68,12 +65,6 @@ export const getTemplate = (name) => api.get(`/templates/${name}`) export const updateTemplate = (name, data) => api.patch(`/templates/${name}`, data) export const deleteTemplate = (name) => api.delete(`/templates/${name}`) -// Shares -export const listShares = () => api.get('/shares') -export const createShare = (data) => api.post('/shares', data) -export const updateShare = (id, data) => api.patch(`/shares/${id}`, data) -export const deleteShare = (id) => api.delete(`/shares/${id}`) - // Recycle bin export const listRecycleBin = () => api.get('/recycle-bin') export const deleteRecycleEntry = (id) => api.delete(`/recycle-bin/${id}`) @@ -93,6 +84,7 @@ export const getFlowInfo = (name) => api.get(`/source/flow/${name}`) // Tools export const parseProxy = (data) => api.post('/proxy/parse', data) export const parseRule = (data) => api.post('/rule/parse', data) +export const exportProxyUri = (node) => api.post('/utils/proxy-uri', node) export const getNodeInfo = (server) => api.post('/utils/node-info', { server }) export default api diff --git a/frontend/src/layouts/AdminLayout.vue b/frontend/src/layouts/AdminLayout.vue index b96d411..125fd76 100644 --- a/frontend/src/layouts/AdminLayout.vue +++ b/frontend/src/layouts/AdminLayout.vue @@ -47,7 +47,6 @@ const menu = [ { to: '/sources', icon: '📡', label: '订阅源' }, { to: '/collections', icon: '📁', label: '合集' }, { to: '/templates', icon: '📋', label: '模板' }, - { to: '/shares', icon: '🔗', label: '分享' }, { to: '/recycle-bin', icon: '♻️', label: '回收站' }, { to: '/tools', icon: '🔧', label: '工具' }, { to: '/settings', icon: '⚙️', label: '设置' }, diff --git a/frontend/src/pages/Collections.vue b/frontend/src/pages/Collections.vue index 3221067..2199548 100644 --- a/frontend/src/pages/Collections.vue +++ b/frontend/src/pages/Collections.vue @@ -16,6 +16,8 @@ 已禁用
+ 原始节点: {{ nodeCounts[col.id]?.original ?? '-' }} + 处理后: {{ nodeCounts[col.id]?.processed ?? '-' }} 订阅源: {{ col.sourceIds?.length || 0 }} 过滤器: {{ col.filters?.length || 0 }} 模板: {{ col.templateId || 'default' }} @@ -97,7 +99,8 @@ import { ref, reactive, onMounted } from 'vue' import Modal from '@/components/Modal.vue' import ConfirmDialog from '@/components/ConfirmDialog.vue' -import { listCollections, createCollection, updateCollection, deleteCollection, listSources, listTemplates, getLinkCollection } from '@/api' +import { listCollections, createCollection, updateCollection, deleteCollection, listSources, listTemplates, getLinkCollection, previewCollection } from '@/api' +import { copyText } from '@/utils/clipboard' const collections = ref([]) const allSources = ref([]) @@ -106,6 +109,7 @@ const loading = ref(true) const showModal = ref(false) const editing = ref(false) const toast = ref(null) +const nodeCounts = reactive({}) const confirmDialog = ref({ show: false, title: '', message: '', danger: false, action: null }) const filterTypes = ['include', 'exclude', 'rename', 'dedupe', 'sort', 'delete-field', 'flag', 'quick', 'resolve', 'custom'] @@ -173,7 +177,7 @@ async function remove(col) { async function copyLink(col) { try { const res = await getLinkCollection(col.id) - await navigator.clipboard.writeText(res.data.url) + await copyText(res.data.url) showToast('链接已复制') } catch (e) { showToast(e.message, 'error') @@ -187,6 +191,7 @@ async function load() { collections.value = colRes.data || [] allSources.value = srcRes.data || [] allTemplates.value = tplRes.data || [] + for (const col of collections.value) loadNodeCount(col) } catch (e) { showToast(e.message, 'error') } finally { @@ -194,5 +199,17 @@ async function load() { } } +async function loadNodeCount(col) { + try { + const res = await previewCollection(col) + nodeCounts[col.id] = { + original: res.data.originalCount ?? res.data.nodes ?? 0, + processed: Array.isArray(res.data.processed) ? res.data.processed.length : 0, + } + } catch { + nodeCounts[col.id] = { original: '-', processed: '-' } + } +} + onMounted(load) diff --git a/frontend/src/pages/Dashboard.vue b/frontend/src/pages/Dashboard.vue index 8347178..1ae71b2 100644 --- a/frontend/src/pages/Dashboard.vue +++ b/frontend/src/pages/Dashboard.vue @@ -37,26 +37,23 @@ diff --git a/frontend/src/pages/NotFound.vue b/frontend/src/pages/NotFound.vue index 94047c5..2e23226 100644 --- a/frontend/src/pages/NotFound.vue +++ b/frontend/src/pages/NotFound.vue @@ -8,5 +8,5 @@ diff --git a/frontend/src/pages/RecycleBin.vue b/frontend/src/pages/RecycleBin.vue index 4393933..28e79ac 100644 --- a/frontend/src/pages/RecycleBin.vue +++ b/frontend/src/pages/RecycleBin.vue @@ -60,7 +60,6 @@ function resourceTypeColor(type) { source: 'bg-blue-100 text-blue-700', collection: 'bg-purple-100 text-purple-700', template: 'bg-green-100 text-green-700', - share: 'bg-orange-100 text-orange-700', } return map[type] || 'bg-gray-100 text-gray-600' } diff --git a/frontend/src/pages/Settings.vue b/frontend/src/pages/Settings.vue index ff3cff2..553951b 100644 --- a/frontend/src/pages/Settings.vue +++ b/frontend/src/pages/Settings.vue @@ -3,7 +3,7 @@

设置

加载中...
-
+

通用

diff --git a/frontend/src/pages/Shares.vue b/frontend/src/pages/Shares.vue deleted file mode 100644 index 2f344f2..0000000 --- a/frontend/src/pages/Shares.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - diff --git a/frontend/src/pages/Sources.vue b/frontend/src/pages/Sources.vue index be42772..3246a5c 100644 --- a/frontend/src/pages/Sources.vue +++ b/frontend/src/pages/Sources.vue @@ -9,25 +9,67 @@
暂无订阅源
-
-
- {{ src.name }} - {{ src.type }} - 已禁用 + class="bg-white rounded-lg shadow-sm border overflow-hidden hover:shadow-md transition-shadow"> +
+
+
+ {{ src.name }} + {{ src.type }} + 已禁用 +
+

(本地内容)

+
+ 原始节点: {{ nodeCounts[src.id]?.original ?? '-' }} + 处理后: {{ nodeCounts[src.id]?.processed ?? '-' }} + 过滤器: {{ src.filters?.length || 0 }} + 创建: {{ formatTime(src.createdAt) }} +
+

{{ flowSummary(src) }}

-

{{ src.type === 'local' ? '(本地内容)' : src.url }}

-
- 过滤器: {{ src.filters?.length || 0 }} - 创建: {{ formatTime(src.createdAt) }} +
+ + +
-
- - - - +
+
解析中...
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeNameServerPortTransportTlsDelaySpeedLink
{{ nodeField(node, 'type') }}{{ nodeField(node, 'name', 'remarks') }}{{ nodeField(node, 'server', 'address') }}{{ nodeField(node, 'port') }}{{ nodeField(node, 'transport', 'network') }}{{ formatTls(node) }}{{ nodeField(node, 'delay', 'latency', 'ping') }}{{ nodeField(node, 'speed', 'downloadSpeed') }} + +
+
+

暂无节点

+
@@ -43,10 +85,18 @@
- +
+ + +
@@ -69,9 +119,29 @@
+
+ 使用说明 +
+

pattern 支持正则;field 留空默认匹配 name。常用字段:name、type、server、port。

+ + + + + + + + + + + + + +
过滤器说明
{{ item.label }}{{ item.help }}
+
+
@@ -85,22 +155,6 @@ - - -
解析中...
-
-

原始节点: {{ previewData.original?.length || 0 }} · 处理后: {{ previewData.processed?.length || 0 }}

-
-
- {{ i+1 }}. - {{ node.name || node.remarks || 'unnamed' }} - {{ node.type }} - {{ node.server }}:{{ node.port }} -
-
-
-
- @@ -117,19 +171,46 @@ import { ref, reactive, onMounted } from 'vue' import Modal from '@/components/Modal.vue' import ConfirmDialog from '@/components/ConfirmDialog.vue' -import { listSources, createSource, updateSource, deleteSource, previewSource, getLinkSource } from '@/api' +import { listSources, createSource, updateSource, deleteSource, previewSource, getLinkSource, getFlowInfo, exportProxyUri } from '@/api' +import { copyText } from '@/utils/clipboard' const sources = ref([]) const loading = ref(true) const showModal = ref(false) const editing = ref(false) -const showPreview = ref(false) -const previewLoading = ref(false) -const previewData = ref(null) +const expandedSourceId = ref('') +const expandedLoading = ref(false) +const expandedData = ref(null) +const nodeCounts = reactive({}) +const flowInfos = reactive({}) const toast = ref(null) const confirmDialog = ref({ show: false, title: '', message: '', danger: false, action: null }) const filterTypes = ['include', 'exclude', 'rename', 'dedupe', 'sort', 'delete-field', 'flag', 'quick', 'resolve', 'custom'] +const filterTypeLabels = { + include: '包含(include)', + exclude: '排除(exclude)', + rename: '重命名(rename)', + dedupe: '去重(dedupe)', + sort: '排序(sort)', + 'delete-field': '删除字段(delete-field)', + flag: '旗帜(flag)', + quick: '快捷规则(quick)', + resolve: '解析域名(resolve)', + custom: '自定义(custom)', +} +const filterGuides = [ + { type: 'include', label: filterTypeLabels.include, help: '只保留 field 匹配 pattern 的节点' }, + { type: 'exclude', label: filterTypeLabels.exclude, help: '删除 field 匹配 pattern 的节点' }, + { type: 'rename', label: filterTypeLabels.rename, help: '按 pattern 处理名称,简易表单适合清理固定前缀/后缀' }, + { type: 'dedupe', label: filterTypeLabels.dedupe, help: '按 field 去重,留空按 name 去重' }, + { type: 'sort', label: filterTypeLabels.sort, help: '按名称排序' }, + { type: 'delete-field', label: filterTypeLabels['delete-field'], help: '从 field 文本中删除匹配 pattern 的片段' }, + { type: 'flag', label: filterTypeLabels.flag, help: '给节点名补充或整理地区旗帜' }, + { type: 'quick', label: filterTypeLabels.quick, help: '应用快捷清理规则' }, + { type: 'resolve', label: filterTypeLabels.resolve, help: '把 server 域名解析为 IP' }, + { type: 'custom', label: filterTypeLabels.custom, help: '高级声明式规则链,适合 API/导入配置使用' }, +] const emptyForm = () => ({ name: '', type: 'remote', url: '', content: '', enabled: true, filters: [] @@ -146,6 +227,70 @@ function formatTime(ts) { return new Date(ts).toLocaleString('zh-CN') } +function formatDate(seconds) { + if (!seconds) return '' + return new Date(seconds * 1000).toLocaleDateString('zh-CN') +} + +function formatBytes(bytes) { + if (!Number.isFinite(bytes)) return '' + const units = ['B', 'KB', 'MB', 'GB', 'TB'] + let value = bytes + let unit = 0 + while (value >= 1024 && unit < units.length - 1) { + value /= 1024 + unit += 1 + } + return `${value >= 10 || unit === 0 ? value.toFixed(0) : value.toFixed(1)}${units[unit]}` +} + +function nodeField(node, ...keys) { + for (const key of keys) { + const value = node?.[key] + if (value !== undefined && value !== null && value !== '') return value + } + return '-' +} + +function formatTls(node) { + const value = nodeField(node, 'tls', 'security') + if (value === true) return 'TLS' + if (value === false) return '-' + return value +} + +function flowSummary(src) { + const flow = flowInfos[src.id] + if (!flow) return '' + const parts = [] + if (flow.planName) parts.push(`套餐: ${flow.planName}`) + const used = Number(flow.usage?.upload || 0) + Number(flow.usage?.download || 0) + const total = Number(flow.total || 0) + if (total > 0) parts.push(`流量: ${formatBytes(used)} / ${formatBytes(total)}`) + if (total > used) parts.push(`剩余: ${formatBytes(total - used)}`) + if (flow.expires) parts.push(`到期: ${formatDate(flow.expires)}`) + if (src.meta?.price) parts.push(`计费: ${src.meta.price}${src.meta.billingCycle ? `/${src.meta.billingCycle}` : ''}`) + return parts.join(' · ') +} + +function countsFromPreview(data) { + return { + original: data?.originalCount ?? (Array.isArray(data?.original) ? data.original.length : (data?.nodes ?? 0)), + processed: Array.isArray(data?.processed) ? data.processed.length : 0, + } +} + +function sourcePreviewPayload(src) { + return { + id: src.id, + name: src.name, + type: src.type, + url: src.url, + content: src.content, + filters: src.filters, + } +} + function openCreate() { Object.assign(form, emptyForm()) editing.value = false @@ -207,39 +352,57 @@ async function remove(src) { } } -async function preview(src) { - showPreview.value = true - previewLoading.value = true - previewData.value = null +async function toggleExpand(src) { + if (expandedSourceId.value === src.id) { + expandedSourceId.value = '' + expandedData.value = null + return + } + + expandedSourceId.value = src.id + expandedLoading.value = true + expandedData.value = null try { - const res = await previewSource({ - id: src.id, name: src.name, type: src.type, url: src.url, content: src.content, - filters: src.filters - }) - previewData.value = res.data + const res = await previewSource(sourcePreviewPayload(src)) + expandedData.value = res.data + nodeCounts[src.id] = countsFromPreview(res.data) } catch (e) { showToast(e.message, 'error') - showPreview.value = false + expandedSourceId.value = '' } finally { - previewLoading.value = false + expandedLoading.value = false } } async function copyLink(src) { try { const res = await getLinkSource(src.id) - await navigator.clipboard.writeText(res.data.url) + await copyText(res.data.url) showToast('链接已复制') } catch (e) { showToast(e.message, 'error') } } +async function copyNodeLink(node) { + try { + const res = await exportProxyUri(node) + await copyText(res.data.uri) + showToast('节点链接已复制') + } catch (e) { + showToast(e.message, 'error') + } +} + async function load() { loading.value = true try { const res = await listSources() sources.value = res.data || [] + for (const src of sources.value) { + loadNodeCount(src) + loadFlowInfo(src) + } } catch (e) { showToast(e.message, 'error') } finally { @@ -247,5 +410,24 @@ async function load() { } } +async function loadNodeCount(src) { + try { + const res = await previewSource(sourcePreviewPayload(src)) + nodeCounts[src.id] = countsFromPreview(res.data) + } catch { + nodeCounts[src.id] = { original: '-', processed: '-' } + } +} + +async function loadFlowInfo(src) { + if (src.type !== 'remote' && !src.meta?.subUserinfo) return + try { + const res = await getFlowInfo(src.id) + flowInfos[src.id] = res.data + } catch { + delete flowInfos[src.id] + } +} + onMounted(load) diff --git a/frontend/src/pages/Tools.vue b/frontend/src/pages/Tools.vue index 17e8c03..19111b1 100644 --- a/frontend/src/pages/Tools.vue +++ b/frontend/src/pages/Tools.vue @@ -66,6 +66,7 @@