From f523ae2a4d6864267bfcec97c255420f9d62d888 Mon Sep 17 00:00:00 2001 From: luluxiaoyu Date: Sun, 5 Apr 2026 17:11:46 +0800 Subject: [PATCH 1/2] =?UTF-8?q?bumpver(webpanel=20&=20daemon):=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=88=B0v1.3.5=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MSLX.Daemon/Controllers/AppInfoController.cs | 2 +- ...B1wWuQl.css => mslx-app-main.KGY2rMx0.css} | 2 +- .../assets/js/mslx-app-main.Cdym3WOG.js | 94 ++++++++++++++ .../assets/js/mslx-app-main.Te7AUO8s.js | 94 -------------- ...try.DLeduHlf.js => mslx-entry.rmwTM72S.js} | 2 +- MSLX.Daemon/Frontend/build.json | 118 +++++++++--------- MSLX.Daemon/Frontend/index.html | 6 +- MSLX.Daemon/MSLX.Daemon.csproj | 6 +- MSLX.WebPanel/package.json | 2 +- 9 files changed, 163 insertions(+), 163 deletions(-) rename MSLX.Daemon/Frontend/assets/css/{mslx-app-main.CB1wWuQl.css => mslx-app-main.KGY2rMx0.css} (56%) create mode 100644 MSLX.Daemon/Frontend/assets/js/mslx-app-main.Cdym3WOG.js delete mode 100644 MSLX.Daemon/Frontend/assets/js/mslx-app-main.Te7AUO8s.js rename MSLX.Daemon/Frontend/assets/js/{mslx-entry.DLeduHlf.js => mslx-entry.rmwTM72S.js} (93%) diff --git a/MSLX.Daemon/Controllers/AppInfoController.cs b/MSLX.Daemon/Controllers/AppInfoController.cs index 363e2f4..77ebb32 100644 --- a/MSLX.Daemon/Controllers/AppInfoController.cs +++ b/MSLX.Daemon/Controllers/AppInfoController.cs @@ -105,7 +105,7 @@ public IActionResult GetStatus() ["targetFrontendVersion"] = new JObject { ["desktop"] = "1.0.0", - ["panel"] = "1.3.4" + ["panel"] = "1.3.5" }, ["systemInfo"] = systemInfo }; diff --git a/MSLX.Daemon/Frontend/assets/css/mslx-app-main.CB1wWuQl.css b/MSLX.Daemon/Frontend/assets/css/mslx-app-main.KGY2rMx0.css similarity index 56% rename from MSLX.Daemon/Frontend/assets/css/mslx-app-main.CB1wWuQl.css rename to MSLX.Daemon/Frontend/assets/css/mslx-app-main.KGY2rMx0.css index 9e647d2..4840e59 100644 --- a/MSLX.Daemon/Frontend/assets/css/mslx-app-main.CB1wWuQl.css +++ b/MSLX.Daemon/Frontend/assets/css/mslx-app-main.KGY2rMx0.css @@ -1,2 +1,2 @@ /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}[data-v-8a882e36],[data-v-8a882e36]:before,[data-v-8a882e36]:after{--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-duration:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}[data-v-8a882e36]::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-duration:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}[data-v-f46b0d89],[data-v-f46b0d89]:before,[data-v-f46b0d89]:after{--tw-duration:initial;--tw-font-weight:initial}[data-v-f46b0d89]::backdrop{--tw-duration:initial;--tw-font-weight:initial}[data-v-9ac7176f],[data-v-9ac7176f]:before,[data-v-9ac7176f]:after{--tw-duration:initial;--tw-font-weight:initial}[data-v-9ac7176f]::backdrop{--tw-duration:initial;--tw-font-weight:initial}[data-v-4d8c8b99],[data-v-4d8c8b99]:before,[data-v-4d8c8b99]:after{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}[data-v-4d8c8b99]::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}[data-v-beedb160],[data-v-beedb160]:before,[data-v-beedb160]:after{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}[data-v-beedb160]::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:#fef2f2;--color-red-100:#ffe2e2;--color-red-200:#ffcaca;--color-red-300:#ffa3a3;--color-red-400:#ff6568;--color-red-500:#fb2c36;--color-red-600:#e40014;--color-red-700:#bf000f;--color-red-800:#9f0712;--color-red-900:#82181a;--color-red-950:#460809;--color-amber-100:#fef3c6;--color-amber-200:#fee685;--color-amber-300:#ffd236;--color-amber-400:#fcbb00;--color-amber-500:#f99c00;--color-amber-600:#dd7400;--color-amber-700:#b75000;--color-amber-800:#953d00;--color-emerald-50:#ecfdf5;--color-emerald-100:#d0fae5;--color-emerald-200:#a4f4cf;--color-emerald-300:#5ee9b5;--color-emerald-400:#00d294;--color-emerald-500:#00bb7f;--color-emerald-600:#009767;--color-emerald-700:#007956;--color-emerald-800:#005f46;--color-emerald-900:#004e3b;--color-blue-50:#eff6ff;--color-blue-100:#dbeafe;--color-blue-200:#bedbff;--color-blue-300:#90c5ff;--color-blue-400:#54a2ff;--color-blue-500:#3080ff;--color-blue-600:#155dfc;--color-blue-800:#193cb8;--color-blue-900:#1c398e;--color-rose-400:#ff667f;--color-rose-500:#ff2357;--color-rose-600:#e70044;--color-zinc-50:#fafafa;--color-zinc-100:#f4f4f5;--color-zinc-200:#e4e4e7;--color-zinc-300:#d4d4d8;--color-zinc-400:#9f9fa9;--color-zinc-500:#71717b;--color-zinc-600:#52525c;--color-zinc-700:#3f3f46;--color-zinc-800:#27272a;--color-zinc-900:#18181b;--color-zinc-950:#09090b;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-sm:0 1px 2px #00000026;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-md:12px;--blur-xl:24px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:var(--td-brand-color);--color-primary-hover:var(--td-brand-color-hover);--color-primary-active:var(--td-brand-color-active);--color-primary-light:var(--td-brand-color-light);--color-success:var(--td-success-color);--color-warning:var(--td-warning-color)}@supports (color:color(display-p3 0 0 0)){:root,:host{--color-red-50:color(display-p3 .988669 .951204 .950419);--color-red-100:color(display-p3 .980386 .889727 .887779);--color-red-200:color(display-p3 .969562 .798149 .794299);--color-red-300:color(display-p3 .956922 .651886 .645122);--color-red-400:color(display-p3 .933534 .431676 .423491);--color-red-500:color(display-p3 .903738 .262579 .253307);--color-red-600:color(display-p3 .830323 .140383 .133196);--color-red-700:color(display-p3 .692737 .116232 .104679);--color-red-800:color(display-p3 .569606 .121069 .108493);--color-red-900:color(display-p3 .466906 .133198 .12139);--color-red-950:color(display-p3 .25064 .0550983 .0468818);--color-amber-100:color(display-p3 .989391 .954583 .796328);--color-amber-200:color(display-p3 .979824 .904554 .57325);--color-amber-300:color(display-p3 .974327 .83063 .33298);--color-amber-400:color(display-p3 .959186 .738519 .118268);--color-amber-500:color(display-p3 .93994 .620584 .0585367);--color-amber-600:color(display-p3 .827144 .467166 .0336006);--color-amber-700:color(display-p3 .67989 .32771 .0520514);--color-amber-800:color(display-p3 .547533 .256058 .0728326);--color-emerald-50:color(display-p3 .936818 .989882 .961937);--color-emerald-100:color(display-p3 .848335 .975974 .901691);--color-emerald-200:color(display-p3 .713164 .947563 .822283);--color-emerald-300:color(display-p3 .524941 .903425 .722352);--color-emerald-400:color(display-p3 .334701 .819603 .591575);--color-emerald-500:color(display-p3 .267113 .726847 .508397);--color-emerald-600:color(display-p3 .206557 .589057 .413962);--color-emerald-700:color(display-p3 .164041 .470229 .343508);--color-emerald-800:color(display-p3 .135396 .371401 .277561);--color-emerald-900:color(display-p3 .117821 .302975 .234501);--color-blue-50:color(display-p3 .941826 .963151 .995385);--color-blue-100:color(display-p3 .869214 .915931 .989622);--color-blue-200:color(display-p3 .76688 .855207 .987483);--color-blue-300:color(display-p3 .602559 .767214 .993938);--color-blue-400:color(display-p3 .397443 .62813 .992116);--color-blue-500:color(display-p3 .266422 .491219 .988624);--color-blue-600:color(display-p3 .174493 .358974 .950247);--color-blue-800:color(display-p3 .134023 .230646 .695537);--color-blue-900:color(display-p3 .136395 .219428 .537145);--color-rose-400:color(display-p3 .942928 .430764 .503101);--color-rose-500:color(display-p3 .921824 .240748 .355666);--color-rose-600:color(display-p3 .848792 .102011 .269259);--color-zinc-50:color(display-p3 .980256 .980256 .980256);--color-zinc-100:color(display-p3 .956385 .956385 .959079);--color-zinc-200:color(display-p3 .894477 .894477 .905114);--color-zinc-300:color(display-p3 .831087 .831083 .846819);--color-zinc-400:color(display-p3 .622604 .622563 .659842);--color-zinc-500:color(display-p3 .442983 .442931 .480324);--color-zinc-600:color(display-p3 .321166 .321093 .358668);--color-zinc-700:color(display-p3 .246478 .246448 .273934);--color-zinc-800:color(display-p3 .152895 .152887 .16466);--color-zinc-900:color(display-p3 .0937957 .093793 .104806);--color-zinc-950:color(display-p3 .0353716 .0353595 .0435539)}}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18508 1.52328);--color-red-100:lab(92.243% 10.2865 3.83865);--color-red-200:lab(86.017% 19.8815 7.75869);--color-red-300:lab(76.5514% 36.422 15.5335);--color-red-400:lab(63.7053% 60.745 31.3109);--color-red-500:lab(55.4814% 75.0732 48.8528);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-700:lab(40.4273% 67.2623 53.7441);--color-red-800:lab(33.7174% 55.8993 41.0293);--color-red-900:lab(28.5139% 44.5539 29.0463);--color-red-950:lab(13.003% 29.04 16.7519);--color-amber-100:lab(95.916% -1.21653 23.111);--color-amber-200:lab(91.7203% -.505269 49.9084);--color-amber-300:lab(86.4156% 6.13147 78.3961);--color-amber-400:lab(80.1641% 16.6016 99.2089);--color-amber-500:lab(72.7183% 31.8672 97.9407);--color-amber-600:lab(60.3514% 40.5624 87.1228);--color-amber-700:lab(47.2709% 42.9082 69.2966);--color-amber-800:lab(37.8822% 37.1699 52.2718);--color-emerald-50:lab(97.8462% -6.94966 1.85487);--color-emerald-100:lab(94.9004% -17.0769 5.63836);--color-emerald-200:lab(90.2247% -31.039 9.47084);--color-emerald-300:lab(83.9203% -48.7124 13.8849);--color-emerald-400:lab(75.0771% -60.7313 19.4147);--color-emerald-500:lab(66.9756% -58.27 19.5419);--color-emerald-600:lab(55.0481% -49.9246 15.93);--color-emerald-700:lab(44.4871% -41.0396 11.0361);--color-emerald-800:lab(35.3675% -33.1188 8.04002);--color-emerald-900:lab(28.8637% -26.9249 5.45986);--color-blue-50:lab(96.492% -1.14644 -5.11479);--color-blue-100:lab(92.0301% -2.24757 -11.6453);--color-blue-200:lab(86.15% -4.04379 -21.0797);--color-blue-300:lab(77.5052% -6.4629 -36.42);--color-blue-400:lab(65.0361% -1.42065 -56.9802);--color-blue-500:lab(54.1736% 13.3369 -74.6839);--color-blue-600:lab(44.0605% 29.0279 -86.0352);--color-blue-800:lab(30.2514% 27.7853 -70.2699);--color-blue-900:lab(26.1542% 15.7545 -51.5504);--color-rose-400:lab(64.4125% 63.0291 19.2068);--color-rose-500:lab(56.101% 79.4328 31.4532);--color-rose-600:lab(49.1882% 81.577 36.0311);--color-zinc-50:lab(98.26% 0 0);--color-zinc-100:lab(96.1634% .0993311 -.364041);--color-zinc-200:lab(90.6853% .399232 -1.45452);--color-zinc-300:lab(84.9837% .601262 -2.17986);--color-zinc-400:lab(65.6464% 1.53497 -5.42429);--color-zinc-500:lab(47.8878% 1.65477 -5.77283);--color-zinc-600:lab(35.1166% 1.78212 -6.1173);--color-zinc-700:lab(26.8019% 1.35387 -4.68303);--color-zinc-800:lab(15.7305% .613764 -2.16959);--color-zinc-900:lab(8.30603% .618205 -2.16572);--color-zinc-950:lab(2.51107% .242703 -.886115)}}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::-webkit-file-upload-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::-webkit-file-upload-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:-webkit-any([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:-webkit-any([multiple],[size])) optgroup option{padding-inline-start:20px}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::-webkit-file-upload-button{margin-inline-end:4px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-year-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-month-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-day-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-hour-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-minute-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-second-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-millisecond-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-meridiem-field{padding-block-start:0;padding-block-end:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button{-webkit-appearance:button;appearance:button}input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.\!absolute{position:absolute!important}.\!relative{position:relative!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--spacing)}.start:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--spacing)}.start:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--spacing)}.start:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--spacing)}.end:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:var(--spacing)}.end:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:var(--spacing)}.end:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:var(--spacing)}.end:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:var(--spacing)}.\!top-8{top:calc(var(--spacing) * 8)!important}.-top-10{top:calc(var(--spacing) * -10)}.-top-20{top:calc(var(--spacing) * -20)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-\[38px\]{top:38px}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-10{right:calc(var(--spacing) * -10)}.-right-20{right:calc(var(--spacing) * -20)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.\!bottom-0{bottom:calc(var(--spacing) * 0)!important}.-bottom-0\.5{bottom:calc(var(--spacing) * -.5)}.-bottom-10{bottom:calc(var(--spacing) * -10)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-1{bottom:calc(var(--spacing) * 1)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-\[50px\]{bottom:50px}.\!left-\[15px\]{left:15px!important}.-left-10{left:calc(var(--spacing) * -10)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-4{left:calc(var(--spacing) * 4)}.\!z-10{z-index:10!important}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[500\]{z-index:500}.z-\[501\]{z-index:501}.\!m-0{margin:calc(var(--spacing) * 0)!important}.m-0{margin:calc(var(--spacing) * 0)}.m-auto{margin:auto}.\!mx-1{margin-inline:calc(var(--spacing) * 1)!important}.\!mx-2{margin-inline:calc(var(--spacing) * 2)!important}.\!mx-3{margin-inline:calc(var(--spacing) * 3)!important}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-auto{margin-inline-start:auto;margin-inline-end:auto}.\!my-1{margin-block:calc(var(--spacing) * 1)!important}.\!my-2{margin-block:calc(var(--spacing) * 2)!important}.\!my-6{margin-block:calc(var(--spacing) * 6)!important}.my-1{margin-block:calc(var(--spacing) * 1)}.my-6{margin-block:calc(var(--spacing) * 6)}.\!mt-2{margin-top:calc(var(--spacing) * 2)!important}.\!mt-4{margin-top:calc(var(--spacing) * 4)!important}.\!mt-8{margin-top:calc(var(--spacing) * 8)!important}.-mt-\[7px\]{margin-top:-7px}.-mt-\[256px\]{margin-top:-256px}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-4{margin-right:calc(var(--spacing) * 4)}.\!mb-0{margin-bottom:calc(var(--spacing) * 0)!important}.\!mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)!important}.\!mb-2{margin-bottom:calc(var(--spacing) * 2)!important}.\!mb-4{margin-bottom:calc(var(--spacing) * 4)!important}.\!mb-5{margin-bottom:calc(var(--spacing) * 5)!important}.\!mb-6{margin-bottom:calc(var(--spacing) * 6)!important}.\!mb-8{margin-bottom:calc(var(--spacing) * 8)!important}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.\!ml-0{margin-left:calc(var(--spacing) * 0)!important}.\!ml-1{margin-left:calc(var(--spacing) * 1)!important}.-ml-\[7px\]{margin-left:-7px}.-ml-\[256px\]{margin-left:-256px}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\!flex{display:flex!important}.\!inline-flex{display:inline-flex!important}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.\!h-5{height:calc(var(--spacing) * 5)!important}.\!h-7{height:calc(var(--spacing) * 7)!important}.\!h-8{height:calc(var(--spacing) * 8)!important}.\!h-10{height:calc(var(--spacing) * 10)!important}.\!h-11{height:calc(var(--spacing) * 11)!important}.\!h-12{height:calc(var(--spacing) * 12)!important}.\!h-\[40px\]{height:40px!important}.\!h-\[44px\]{height:44px!important}.\!h-auto{height:auto!important}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-60{height:calc(var(--spacing) * 60)}.h-64{height:calc(var(--spacing) * 64)}.h-\[3px\]{height:3px}.h-\[14px\]{height:14px}.h-\[38px\]{height:38px}.h-\[50px\]{height:50px}.h-\[64px\]{height:64px}.h-\[65vh\]{height:65vh}.h-\[70vh\]{height:70vh}.h-\[72px\]{height:72px}.h-\[75vh\]{height:75vh}.h-\[100px\]{height:100px}.h-\[512px\]{height:512px}.h-\[580px\]{height:580px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[200px\]{max-height:200px}.max-h-\[260px\]{max-height:260px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[500px\]{max-height:500px}.max-h-\[calc\(100vh-64px\)\]{max-height:calc(100vh - 64px)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[16px\]{min-height:16px}.min-h-\[22px\]{min-height:22px}.min-h-\[32px\]{min-height:32px}.min-h-\[40px\]{min-height:40px}.min-h-\[50vh\]{min-height:50vh}.min-h-\[70px\]{min-height:70px}.min-h-\[70vh\]{min-height:70vh}.min-h-\[120px\]{min-height:120px}.min-h-\[150px\]{min-height:150px}.min-h-\[200px\]{min-height:200px}.min-h-\[240px\]{min-height:240px}.min-h-\[260px\]{min-height:260px}.min-h-\[400px\]{min-height:400px}.min-h-\[450px\]{min-height:450px}.min-h-\[500px\]{min-height:500px}.min-h-\[600px\]{min-height:600px}.min-h-\[calc\(100vh-100px\)\]{min-height:calc(100vh - 100px)}.min-h-screen{min-height:100vh}.\!w-8{width:calc(var(--spacing) * 8)!important}.\!w-10{width:calc(var(--spacing) * 10)!important}.\!w-20{width:calc(var(--spacing) * 20)!important}.\!w-\[2px\]{width:2px!important}.\!w-\[70px\]{width:70px!important}.\!w-\[90px\]{width:90px!important}.\!w-\[100px\]{width:100px!important}.\!w-auto{width:auto!important}.\!w-full{width:100%!important}.w-1{width:calc(var(--spacing) * 1)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11\/12{width:91.6667%}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-40{width:calc(var(--spacing) * 40)}.w-60{width:calc(var(--spacing) * 60)}.w-\[1px\]{width:1px}.w-\[2px\]{width:2px}.w-\[72px\]{width:72px}.w-\[140px\]{width:140px}.w-\[240px\]{width:240px}.w-\[420px\]{width:420px}.w-\[512px\]{width:512px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[90\%\]{max-width:90%}.max-w-\[100px\]{max-width:100px}.max-w-\[140px\]{max-width:140px}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[250px\]{max-width:250px}.max-w-\[calc\(100vw-140px\)\]{max-width:calc(100vw - 140px)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[70px\]{min-width:70px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[200px\]{min-width:200px}.min-w-\[280px\]{min-width:280px}.min-w-\[320px\]{min-width:320px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.\!flex-1{flex:1!important}.\!flex-\[1\.5\]{flex:1.5!important}.flex-1{flex:1}.\!shrink-0{flex-shrink:0!important}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-bottom{transform-origin:bottom}.origin-center{transform-origin:50%}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-2{--tw-translate-y:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.\!scale-110{--tw-scale-x:110%!important;--tw-scale-y:110%!important;--tw-scale-z:110%!important;scale:var(--tw-scale-x) var(--tw-scale-y)!important}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-y-0{--tw-scale-y:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-y-100{--tw-scale-y:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\[0\.99\]{scale:.99}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[spin_10s_linear_infinite\]{animation:10s linear infinite spin}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(55px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(55px,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(260px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.\!items-center{align-items:center!important}.\!items-start{align-items:flex-start!important}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.\!justify-center{justify-content:center!important}.\!justify-start{justify-content:flex-start!important}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.\!gap-2\.5{gap:calc(var(--spacing) * 2.5)!important}.\!gap-4{gap:calc(var(--spacing) * 4)!important}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-10{column-gap:calc(var(--spacing) * 10)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-dashed>:not(:last-child)){--tw-border-style:dashed;border-style:dashed}:where(.divide-zinc-200\/60>:not(:last-child)){border-color:#e4e4e799}@supports (color:color-mix(in lab, red, red)){:where(.divide-zinc-200\/60>:not(:last-child)){border-color:color-mix(in oklab, var(--color-zinc-200) 60%, transparent)}}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.\!rounded{border-radius:.25rem!important}.\!rounded-2xl{border-radius:var(--radius-2xl)!important}.\!rounded-full{border-radius:3.40282e38px!important}.\!rounded-lg{border-radius:var(--radius-lg)!important}.\!rounded-md{border-radius:var(--radius-md)!important}.\!rounded-xl{border-radius:var(--radius-xl)!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[var\(--td-radius-medium\)\]{border-radius:var(--td-radius-medium)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-sm{border-top-left-radius:var(--radius-sm);border-top-right-radius:var(--radius-sm)}.rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.\!border{border-style:var(--tw-border-style)!important;border-width:1px!important}.\!border-2{border-style:var(--tw-border-style)!important;border-width:2px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-start-width:1px;border-block-end-width:1px}.\!border-t{border-top-style:var(--tw-border-style)!important;border-top-width:1px!important}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.\!border-b{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\!border-l{border-left-style:var(--tw-border-style)!important;border-left-width:1px!important}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.\!border-none{--tw-border-style:none!important;border-style:none!important}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.\!border-\[var\(--color-primary\)\],.\!border-\[var\(--color-primary\)\]\/20{border-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.\!border-\[var\(--color-primary\)\]\/20{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)!important}}.\!border-\[var\(--color-primary\)\]\/30{border-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.\!border-\[var\(--color-primary\)\]\/30{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)!important}}.\!border-\[var\(--color-success\)\],.\!border-\[var\(--color-success\)\]\/20{border-color:var(--color-success)!important}@supports (color:color-mix(in lab, red, red)){.\!border-\[var\(--color-success\)\]\/20{border-color:color-mix(in oklab, var(--color-success) 20%, transparent)!important}}.\!border-amber-500\/20{border-color:#f99c0033!important}@supports (color:color-mix(in lab, red, red)){.\!border-amber-500\/20{border-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)!important}}.\!border-amber-500\/30{border-color:#f99c004d!important}@supports (color:color-mix(in lab, red, red)){.\!border-amber-500\/30{border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)!important}}.\!border-blue-100{border-color:var(--color-blue-100)!important}.\!border-red-500\/30{border-color:#fb2c364d!important}@supports (color:color-mix(in lab, red, red)){.\!border-red-500\/30{border-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)!important}}.\!border-transparent{border-color:#0000!important}.\!border-zinc-100{border-color:var(--color-zinc-100)!important}.\!border-zinc-200{border-color:var(--color-zinc-200)!important}.\!border-zinc-200\/50{border-color:#e4e4e780!important}@supports (color:color-mix(in lab, red, red)){.\!border-zinc-200\/50{border-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.\!border-zinc-200\/80{border-color:#e4e4e7cc!important}@supports (color:color-mix(in lab, red, red)){.\!border-zinc-200\/80{border-color:color-mix(in oklab, var(--color-zinc-200) 80%, transparent)!important}}.\!border-zinc-300{border-color:var(--color-zinc-300)!important}.border-\[var\(--color-primary\)\],.border-\[var\(--color-primary\)\]\/20{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-primary\)\]\/20{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.border-\[var\(--color-primary\)\]\/30{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-primary\)\]\/30{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.border-\[var\(--color-primary\)\]\/40{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-primary\)\]\/40{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.border-\[var\(--color-success\)\]\/20{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-success\)\]\/20{border-color:color-mix(in oklab, var(--color-success) 20%, transparent)}}.border-\[var\(--color-success\)\]\/40{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-success\)\]\/40{border-color:color-mix(in oklab, var(--color-success) 40%, transparent)}}.border-\[var\(--td-component-border\)\]{border-color:var(--td-component-border)}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/20{border-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.border-black\/20{border-color:#0003}@supports (color:color-mix(in lab, red, red)){.border-black\/20{border-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.border-blue-200\/60{border-color:#bedbff99}@supports (color:color-mix(in lab, red, red)){.border-blue-200\/60{border-color:color-mix(in oklab, var(--color-blue-200) 60%, transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-200\/50{border-color:#a4f4cf80}@supports (color:color-mix(in lab, red, red)){.border-emerald-200\/50{border-color:color-mix(in oklab, var(--color-emerald-200) 50%, transparent)}}.border-primary\/20{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/20{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.border-red-100{border-color:var(--color-red-100)}.border-red-200{border-color:var(--color-red-200)}.border-red-200\/60{border-color:#ffcaca99}@supports (color:color-mix(in lab, red, red)){.border-red-200\/60{border-color:color-mix(in oklab, var(--color-red-200) 60%, transparent)}}.border-red-200\/80{border-color:#ffcacacc}@supports (color:color-mix(in lab, red, red)){.border-red-200\/80{border-color:color-mix(in oklab, var(--color-red-200) 80%, transparent)}}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.border-red-500\/20{border-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.border-white\/40{border-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.border-white\/60{border-color:#fff9}@supports (color:color-mix(in lab, red, red)){.border-white\/60{border-color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.border-white\/80{border-color:#fffc}@supports (color:color-mix(in lab, red, red)){.border-white\/80{border-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.border-zinc-100{border-color:var(--color-zinc-100)}.border-zinc-200{border-color:var(--color-zinc-200)}.border-zinc-200\/60{border-color:#e4e4e799}@supports (color:color-mix(in lab, red, red)){.border-zinc-200\/60{border-color:color-mix(in oklab, var(--color-zinc-200) 60%, transparent)}}.border-zinc-200\/70{border-color:#e4e4e7b3}@supports (color:color-mix(in lab, red, red)){.border-zinc-200\/70{border-color:color-mix(in oklab, var(--color-zinc-200) 70%, transparent)}}.border-zinc-200\/80{border-color:#e4e4e7cc}@supports (color:color-mix(in lab, red, red)){.border-zinc-200\/80{border-color:color-mix(in oklab, var(--color-zinc-200) 80%, transparent)}}.border-zinc-300{border-color:var(--color-zinc-300)}.border-zinc-800{border-color:var(--color-zinc-800)}.\!bg-\[var\(--color-primary\)\]\/5{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--color-primary\)\]\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)!important}}.\!bg-\[var\(--color-primary\)\]\/10{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--color-primary\)\]\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.\!bg-\[var\(--color-primary-light\)\]\/15{background-color:var(--color-primary-light)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--color-primary-light\)\]\/15{background-color:color-mix(in oklab, var(--color-primary-light) 15%, transparent)!important}}.\!bg-\[var\(--color-primary-light\)\]\/20{background-color:var(--color-primary-light)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--color-primary-light\)\]\/20{background-color:color-mix(in oklab, var(--color-primary-light) 20%, transparent)!important}}.\!bg-\[var\(--color-success\)\]\/10{background-color:var(--color-success)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--color-success\)\]\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)!important}}.\!bg-\[var\(--td-bg-color-secondarycontainer\)\],.\!bg-\[var\(--td-bg-color-secondarycontainer\)\]\/50{background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--td-bg-color-secondarycontainer\)\]\/50{background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}.\!bg-amber-500\/10{background-color:#f99c001a!important}@supports (color:color-mix(in lab, red, red)){.\!bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)!important}}.\!bg-blue-50\/50{background-color:#eff6ff80!important}@supports (color:color-mix(in lab, red, red)){.\!bg-blue-50\/50{background-color:color-mix(in oklab, var(--color-blue-50) 50%, transparent)!important}}.\!bg-inherit{background-color:inherit!important}.\!bg-red-500\/10{background-color:#fb2c361a!important}@supports (color:color-mix(in lab, red, red)){.\!bg-red-500\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)!important}}.\!bg-transparent{background-color:#0000!important}.\!bg-white{background-color:var(--color-white)!important}.\!bg-white\/50{background-color:#ffffff80!important}@supports (color:color-mix(in lab, red, red)){.\!bg-white\/50{background-color:color-mix(in oklab, var(--color-white) 50%, transparent)!important}}.\!bg-white\/95{background-color:#fffffff2!important}@supports (color:color-mix(in lab, red, red)){.\!bg-white\/95{background-color:color-mix(in oklab, var(--color-white) 95%, transparent)!important}}.\!bg-zinc-50{background-color:var(--color-zinc-50)!important}.\!bg-zinc-50\/50{background-color:#fafafa80!important}@supports (color:color-mix(in lab, red, red)){.\!bg-zinc-50\/50{background-color:color-mix(in oklab, var(--color-zinc-50) 50%, transparent)!important}}.\!bg-zinc-100{background-color:var(--color-zinc-100)!important}.\!bg-zinc-100\/80{background-color:#f4f4f5cc!important}@supports (color:color-mix(in lab, red, red)){.\!bg-zinc-100\/80{background-color:color-mix(in oklab, var(--color-zinc-100) 80%, transparent)!important}}.\!bg-zinc-200{background-color:var(--color-zinc-200)!important}.bg-\[\#0000000a\]{background-color:#0000000a}.bg-\[\#1e1e1e\]{background-color:#1e1e1e}.bg-\[\#27c93f\]{background-color:#27c93f}.bg-\[\#512bd4\]\/10{background-color:#512bd41a;background-color:color(display-p3 .297411 .175904 .799285/.1);background-color:lab(33.0354% 51.0448 -81.673/.1)}.bg-\[\#ff5f56\]{background-color:#ff5f56}.bg-\[\#ffbd2e\]{background-color:#ffbd2e}.bg-\[var\(--color-primary\)\],.bg-\[var\(--color-primary\)\]\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--color-primary\)\]\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-\[var\(--color-primary\)\]\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--color-primary\)\]\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-\[var\(--color-success\)\],.bg-\[var\(--color-success\)\]\/10{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--color-success\)\]\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.bg-\[var\(--color-warning\)\]{background-color:var(--color-warning)}.bg-\[var\(--td-bg-color-container\)\],.bg-\[var\(--td-bg-color-container\)\]\/80{background-color:var(--td-bg-color-container)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--td-bg-color-container\)\]\/80{background-color:color-mix(in oklab, var(--td-bg-color-container) 80%, transparent)}}.bg-\[var\(--td-bg-color-secondarycontainer\)\],.bg-\[var\(--td-bg-color-secondarycontainer\)\]\/70{background-color:var(--td-bg-color-secondarycontainer)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--td-bg-color-secondarycontainer\)\]\/70{background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 70%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-50\/50{background-color:#ecfdf580}@supports (color:color-mix(in lab, red, red)){.bg-emerald-50\/50{background-color:color-mix(in oklab, var(--color-emerald-50) 50%, transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-primary\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-50\/50{background-color:#fef2f280}@supports (color:color-mix(in lab, red, red)){.bg-red-50\/50{background-color:color-mix(in oklab, var(--color-red-50) 50%, transparent)}}.bg-red-50\/80{background-color:#fef2f2cc}@supports (color:color-mix(in lab, red, red)){.bg-red-50\/80{background-color:color-mix(in oklab, var(--color-red-50) 80%, transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/5{background-color:color-mix(in oklab, var(--color-red-500) 5%, transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/40{background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.bg-white\/40{background-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-white\/50{background-color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-white\/60{background-color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.bg-white\/80{background-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-white\/90{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.bg-zinc-50{background-color:var(--color-zinc-50)}.bg-zinc-50\/50{background-color:#fafafa80}@supports (color:color-mix(in lab, red, red)){.bg-zinc-50\/50{background-color:color-mix(in oklab, var(--color-zinc-50) 50%, transparent)}}.bg-zinc-50\/80{background-color:#fafafacc}@supports (color:color-mix(in lab, red, red)){.bg-zinc-50\/80{background-color:color-mix(in oklab, var(--color-zinc-50) 80%, transparent)}}.bg-zinc-100{background-color:var(--color-zinc-100)}.bg-zinc-100\/50{background-color:#f4f4f580}@supports (color:color-mix(in lab, red, red)){.bg-zinc-100\/50{background-color:color-mix(in oklab, var(--color-zinc-100) 50%, transparent)}}.bg-zinc-100\/80{background-color:#f4f4f5cc}@supports (color:color-mix(in lab, red, red)){.bg-zinc-100\/80{background-color:color-mix(in oklab, var(--color-zinc-100) 80%, transparent)}}.bg-zinc-200{background-color:var(--color-zinc-200)}.bg-zinc-200\/50{background-color:#e4e4e780}@supports (color:color-mix(in lab, red, red)){.bg-zinc-200\/50{background-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)}}.bg-zinc-200\/60{background-color:#e4e4e799}@supports (color:color-mix(in lab, red, red)){.bg-zinc-200\/60{background-color:color-mix(in oklab, var(--color-zinc-200) 60%, transparent)}}.bg-zinc-300{background-color:var(--color-zinc-300)}.bg-zinc-400{background-color:var(--color-zinc-400)}.bg-zinc-950{background-color:var(--color-zinc-950)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-\[\#40a9ff\]{--tw-gradient-from:#40a9ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#1890ff\]{--tw-gradient-to:#1890ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-cover{background-size:cover}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.\!p-0{padding:calc(var(--spacing) * 0)!important}.\!p-1\.5{padding:calc(var(--spacing) * 1.5)!important}.\!p-4{padding:calc(var(--spacing) * 4)!important}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.p-12{padding:calc(var(--spacing) * 12)}.\!px-0{padding-inline:calc(var(--spacing) * 0)!important}.\!px-1\.5{padding-inline:calc(var(--spacing) * 1.5)!important}.\!px-2{padding-inline:calc(var(--spacing) * 2)!important}.\!px-3{padding-inline:calc(var(--spacing) * 3)!important}.\!px-4{padding-inline:calc(var(--spacing) * 4)!important}.\!px-5{padding-inline:calc(var(--spacing) * 5)!important}.\!px-6{padding-inline:calc(var(--spacing) * 6)!important}.\!px-8{padding-inline:calc(var(--spacing) * 8)!important}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.\!py-1{padding-block:calc(var(--spacing) * 1)!important}.\!py-1\.5{padding-block:calc(var(--spacing) * 1.5)!important}.\!py-3{padding-block:calc(var(--spacing) * 3)!important}.\!py-5{padding-block:calc(var(--spacing) * 5)!important}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-24{padding-block:calc(var(--spacing) * 24)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.\!pr-3{padding-right:calc(var(--spacing) * 3)!important}.pr-0{padding-right:calc(var(--spacing) * 0)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.\!pb-4{padding-bottom:calc(var(--spacing) * 4)!important}.\!pb-8{padding-bottom:calc(var(--spacing) * 8)!important}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.\!pl-4{padding-left:calc(var(--spacing) * 4)!important}.\!pl-\[42px\]{padding-left:42px!important}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-4{padding-left:calc(var(--spacing) * 4)}.\!text-center{text-align:center!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.\!font-mono{font-family:var(--font-mono)!important}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.\!text-base{font-size:var(--text-base)!important;line-height:var(--tw-leading,var(--text-base--line-height))!important}.\!text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}.\!text-xs{font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\!text-\[10px\]{font-size:10px!important}.\!text-\[13\.5px\]{font-size:13.5px!important}.\!text-\[13px\]{font-size:13px!important}.\!text-\[14\.5px\]{font-size:14.5px!important}.\!text-\[14px\]{font-size:14px!important}.\!text-\[16px\]{font-size:16px!important}.\!text-\[20px\]{font-size:20px!important}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[24px\]{font-size:24px}.text-\[28px\]{font-size:28px}.text-\[40px\]{font-size:40px}.text-\[72px\]{font-size:72px}.\!leading-none{--tw-leading:1!important;line-height:1!important}.leading-\[1\.6\]{--tw-leading:1.6;line-height:1.6}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.\!font-bold{--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important}.\!font-extrabold{--tw-font-weight:var(--font-weight-extrabold)!important;font-weight:var(--font-weight-extrabold)!important}.\!font-medium{--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important}.\!font-normal{--tw-font-weight:var(--font-weight-normal)!important;font-weight:var(--font-weight-normal)!important}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.3em\]{--tw-tracking:.3em;letter-spacing:.3em}.tracking-\[0\.5px\]{--tw-tracking:.5px;letter-spacing:.5px}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-\[var\(--color-primary\)\]{color:var(--color-primary)!important}.\!text-\[var\(--color-success\)\]{color:var(--color-success)!important}.\!text-\[var\(--td-text-color-primary\)\]{color:var(--td-text-color-primary)!important}.\!text-\[var\(--td-text-color-secondary\)\]{color:var(--td-text-color-secondary)!important}.\!text-amber-600{color:var(--color-amber-600)!important}.\!text-red-500{color:var(--color-red-500)!important}.\!text-zinc-400{color:var(--color-zinc-400)!important}.\!text-zinc-500{color:var(--color-zinc-500)!important}.\!text-zinc-600{color:var(--color-zinc-600)!important}.\!text-zinc-700{color:var(--color-zinc-700)!important}.\!text-zinc-800{color:var(--color-zinc-800)!important}.\!text-zinc-900{color:var(--color-zinc-900)!important}.text-\[\#42b883\]{color:#42b883}.text-\[\#512bd4\]{color:#512bd4}.text-\[\#d4d4d4\]{color:#d4d4d4}.text-\[var\(--color-primary\)\]{color:var(--color-primary)}.text-\[var\(--color-success\)\]{color:var(--color-success)}.text-\[var\(--color-warning\)\]{color:var(--color-warning)}.text-\[var\(--td-text-color-primary\)\]{color:var(--td-text-color-primary)}.text-\[var\(--td-text-color-secondary\)\],.text-\[var\(--td-text-color-secondary\)\]\/60{color:var(--td-text-color-secondary)}@supports (color:color-mix(in lab, red, red)){.text-\[var\(--td-text-color-secondary\)\]\/60{color:color-mix(in oklab, var(--td-text-color-secondary) 60%, transparent)}}.text-amber-500{color:var(--color-amber-500)}.text-amber-500\/80{color:#f99c00cc}@supports (color:color-mix(in lab, red, red)){.text-amber-500\/80{color:color-mix(in oklab, var(--color-amber-500) 80%, transparent)}}.text-amber-600{color:var(--color-amber-600)}.text-amber-600\/80{color:#dd7400cc}@supports (color:color-mix(in lab, red, red)){.text-amber-600\/80{color:color-mix(in oklab, var(--color-amber-600) 80%, transparent)}}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-600\/80{color:#009767cc}@supports (color:color-mix(in lab, red, red)){.text-emerald-600\/80{color:color-mix(in oklab, var(--color-emerald-600) 80%, transparent)}}.text-primary{color:var(--color-primary)}.text-red-500{color:var(--color-red-500)}.text-red-500\/80{color:#fb2c36cc}@supports (color:color-mix(in lab, red, red)){.text-red-500\/80{color:color-mix(in oklab, var(--color-red-500) 80%, transparent)}}.text-red-600{color:var(--color-red-600)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.text-zinc-300{color:var(--color-zinc-300)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.text-zinc-700{color:var(--color-zinc-700)}.text-zinc-800{color:var(--color-zinc-800)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.\!opacity-70{opacity:.7!important}.\!opacity-100{opacity:1!important}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow-\[var\(--color-primary\)\]\/20{--tw-shadow-alpha:20%;--tw-shadow:var(--color-primary);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--color-primary\)\]\/30{--tw-shadow-alpha:30%;--tw-shadow:var(--color-primary);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--color-primary-light\)\]\/30{--tw-shadow-alpha:30%;--tw-shadow:var(--color-primary-light);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--color-primary-light\)\]\/40{--tw-shadow-alpha:40%;--tw-shadow:var(--color-primary-light);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\!shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.\!shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(0\,0\,0\,0\.5\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(16\,185\,129\,0\.8\)\]{--tw-shadow:0 0 6px var(--tw-shadow-color,#10b981cc);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--color-primary\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--color-primary));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--color-primary-light\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--color-primary-light));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--color-success\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--color-success));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--color-warning\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--color-warning));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_8px_32px_0_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[1px_0_12px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:1px 0 12px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[2px_0_8px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:2px 0 8px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-black\/10{--tw-shadow-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.shadow-black\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-\[var\(--color-primary\)\]\/30{--tw-ring-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.ring-\[var\(--color-primary\)\]\/30{--tw-ring-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.ring-blue-500\/20{--tw-ring-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.ring-blue-500\/20{--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.ring-white{--tw-ring-color:var(--color-white)}.ring-white\/50{--tw-ring-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.ring-white\/50{--tw-ring-color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.ring-zinc-100{--tw-ring-color:var(--color-zinc-100)}.ring-zinc-200\/50{--tw-ring-color:#e4e4e780}@supports (color:color-mix(in lab, red, red)){.ring-zinc-200\/50{--tw-ring-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);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,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));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,)}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));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,)}.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,)}.backdrop-blur-\[10px\]{--tw-backdrop-blur:blur(10px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.\!transition-all{transition-property:all!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.\!transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.\!duration-200{--tw-duration:.2s!important;transition-duration:.2s!important}.\!duration-300{--tw-duration:.3s!important;transition-duration:.3s!important}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-\[50ms\]{--tw-duration:50ms;transition-duration:50ms}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\[image-rendering\:pixelated\]{image-rendering:pixelated}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:-rotate-6:is(:where(.group):hover *){rotate:-6deg}.group-hover\:rotate-6:is(:where(.group):hover *){rotate:6deg}.group-hover\:text-\[var\(--color-primary\)\]:is(:where(.group):hover *){color:var(--color-primary)}.group-hover\:text-zinc-700:is(:where(.group):hover *){color:var(--color-zinc-700)}.group-hover\:text-zinc-800:is(:where(.group):hover *){color:var(--color-zinc-800)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:shadow-\[var\(--color-primary\)\]\/20:is(:where(.group):hover *){--tw-shadow-alpha:20%;--tw-shadow:var(--color-primary);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-hover\:shadow-xl:is(:where(.group):hover *){--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.placeholder\:text-zinc-400::placeholder{color:var(--color-zinc-400)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:-inset-2\.5:before{content:var(--tw-content);inset:calc(var(--spacing) * -2.5)}.before\:inset-0:before{content:var(--tw-content);inset:calc(var(--spacing) * 0)}.before\:top-0:before{content:var(--tw-content);top:calc(var(--spacing) * 0)}.before\:left-\[6px\]:before{content:var(--tw-content);left:6px}.before\:h-\[14px\]:before{content:var(--tw-content);height:14px}.before\:w-\[2px\]:before{content:var(--tw-content);width:2px}.before\:bg-red-500\/80:before{content:var(--tw-content);background-color:#fb2c36cc}@supports (color:color-mix(in lab, red, red)){.before\:bg-red-500\/80:before{background-color:color-mix(in oklab, var(--color-red-500) 80%, transparent)}}.before\:bg-white\/20:before{content:var(--tw-content);background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.before\:bg-white\/20:before{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.before\:shadow-\[0_0_2px_rgba\(0\,0\,0\,0\.5\)\]:before{content:var(--tw-content);--tw-shadow:0 0 2px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\:transition-colors:before{content:var(--tw-content);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-\[6px\]:after{content:var(--tw-content);top:6px}.after\:left-0:after{content:var(--tw-content);left:calc(var(--spacing) * 0)}.after\:h-\[2px\]:after{content:var(--tw-content);height:2px}.after\:w-\[14px\]:after{content:var(--tw-content);width:14px}.after\:bg-red-500\/80:after{content:var(--tw-content);background-color:#fb2c36cc}@supports (color:color-mix(in lab, red, red)){.after\:bg-red-500\/80:after{background-color:color-mix(in oklab, var(--color-red-500) 80%, transparent)}}.after\:shadow-\[0_0_2px_rgba\(0\,0\,0\,0\.5\)\]:after{content:var(--tw-content);--tw-shadow:0 0 2px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media (hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:\!border-\[var\(--color-primary\)\]:hover,.hover\:\!border-\[var\(--color-primary\)\]\/50:hover{border-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!border-\[var\(--color-primary\)\]\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)!important}}.hover\:border-\[var\(--color-primary\)\]:hover,.hover\:border-\[var\(--color-primary\)\]\/30:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-\[var\(--color-primary\)\]\/30:hover{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.hover\:border-\[var\(--color-primary\)\]\/40:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-\[var\(--color-primary\)\]\/40:hover{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.hover\:border-\[var\(--color-primary\)\]\/50:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-\[var\(--color-primary\)\]\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\:border-\[var\(--color-success\)\]\/50:hover{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.hover\:border-\[var\(--color-success\)\]\/50:hover{border-color:color-mix(in oklab, var(--color-success) 50%, transparent)}}.hover\:border-zinc-200:hover{border-color:var(--color-zinc-200)}.hover\:border-zinc-300:hover{border-color:var(--color-zinc-300)}.hover\:\!bg-\[var\(--color-primary\)\]:hover,.hover\:\!bg-\[var\(--color-primary\)\]\/10:hover{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-\[var\(--color-primary\)\]\/10:hover{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.hover\:\!bg-\[var\(--color-primary\)\]\/20:hover{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-\[var\(--color-primary\)\]\/20:hover{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)!important}}.hover\:\!bg-\[var\(--color-success\)\]\/10:hover{background-color:var(--color-success)!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-\[var\(--color-success\)\]\/10:hover{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)!important}}.hover\:\!bg-amber-500\/10:hover{background-color:#f99c001a!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-amber-500\/10:hover{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)!important}}.hover\:\!bg-amber-500\/20:hover{background-color:#f99c0033!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-amber-500\/20:hover{background-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)!important}}.hover\:\!bg-emerald-500\/10:hover{background-color:#00bb7f1a!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-emerald-500\/10:hover{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)!important}}.hover\:\!bg-red-50:hover{background-color:var(--color-red-50)!important}.hover\:\!bg-red-500:hover{background-color:var(--color-red-500)!important}.hover\:\!bg-red-500\/10:hover{background-color:#fb2c361a!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-red-500\/10:hover{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)!important}}.hover\:\!bg-red-500\/20:hover{background-color:#fb2c3633!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-red-500\/20:hover{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)!important}}.hover\:\!bg-zinc-100:hover{background-color:var(--color-zinc-100)!important}.hover\:\!bg-zinc-200:hover{background-color:var(--color-zinc-200)!important}.hover\:\!bg-zinc-200\/50:hover{background-color:#e4e4e780!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-zinc-200\/50:hover{background-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.hover\:bg-\[var\(--color-primary\)\]\/5:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[var\(--color-primary\)\]\/5:hover{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.hover\:bg-\[var\(--color-primary\)\]\/10:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[var\(--color-primary\)\]\/10:hover{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-zinc-50:hover{background-color:var(--color-zinc-50)}.hover\:bg-zinc-50\/50:hover{background-color:#fafafa80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-zinc-50\/50:hover{background-color:color-mix(in oklab, var(--color-zinc-50) 50%, transparent)}}.hover\:bg-zinc-100:hover{background-color:var(--color-zinc-100)}.hover\:bg-zinc-100\/50:hover{background-color:#f4f4f580}@supports (color:color-mix(in lab, red, red)){.hover\:bg-zinc-100\/50:hover{background-color:color-mix(in oklab, var(--color-zinc-100) 50%, transparent)}}.hover\:bg-zinc-200\/50:hover{background-color:#e4e4e780}@supports (color:color-mix(in lab, red, red)){.hover\:bg-zinc-200\/50:hover{background-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)}}.hover\:\!text-\[var\(--color-primary\)\]:hover{color:var(--color-primary)!important}.hover\:\!text-red-500:hover{color:var(--color-red-500)!important}.hover\:\!text-white:hover{color:var(--color-white)!important}.hover\:\!text-zinc-600:hover{color:var(--color-zinc-600)!important}.hover\:text-\[var\(--color-primary\)\]:hover{color:var(--color-primary)}.hover\:text-zinc-500:hover{color:var(--color-zinc-500)}.hover\:text-zinc-700:hover{color:var(--color-zinc-700)}.hover\:text-zinc-800:hover{color:var(--color-zinc-800)}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-\[var\(--color-primary\)\]\/40:hover{--tw-shadow-alpha:40%;--tw-shadow:var(--color-primary);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[var\(--color-primary-light\)\]\/50:hover{--tw-shadow-alpha:50%;--tw-shadow:var(--color-primary-light);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[var\(--color-primary-light\)\]\/60:hover{--tw-shadow-alpha:60%;--tw-shadow:var(--color-primary-light);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);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,)}}.focus\:border-\[var\(--color-primary\)\]:focus{border-color:var(--color-primary)}.focus\:bg-white:focus{background-color:var(--color-white)}.active\:translate-y-0:active{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:cursor-grabbing:active{cursor:grabbing}.active\:brightness-90:active{--tw-brightness:brightness(90%);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,)}@media not all and (min-width:1012px){.max-\[1012px\]\:hidden{display:none}}@media (min-width:40rem){.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:mb-0{margin-bottom:calc(var(--spacing) * 0)}.sm\:block{display:block}.sm\:min-h-\[40vh\]{min-height:40vh}.sm\:\!w-48{width:calc(var(--spacing) * 48)!important}.sm\:\!w-64{width:calc(var(--spacing) * 64)!important}.sm\:\!w-72{width:calc(var(--spacing) * 72)!important}.sm\:\!w-96{width:calc(var(--spacing) * 96)!important}.sm\:\!w-\[28rem\]{width:28rem!important}.sm\:\!w-\[40rem\]{width:40rem!important}.sm\:\!w-auto{width:auto!important}.sm\:w-72{width:calc(var(--spacing) * 72)}.sm\:w-96{width:calc(var(--spacing) * 96)}.sm\:w-\[28rem\]{width:28rem}.sm\:w-\[32rem\]{width:32rem}.sm\:w-\[40rem\]{width:40rem}.sm\:w-auto{width:auto}.sm\:max-w-\[250px\]{max-width:250px}.sm\:max-w-\[280px\]{max-width:280px}.sm\:max-w-\[300px\]{max-width:300px}.sm\:max-w-\[350px\]{max-width:350px}.sm\:max-w-md{max-width:var(--container-md)}.sm\:\!flex-none{flex:none!important}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:items-start{align-items:flex-start}.sm\:justify-end{justify-content:flex-end}.sm\:justify-start{justify-content:flex-start}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:self-auto{align-self:auto}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:p-12{padding:calc(var(--spacing) * 12)}.sm\:\!px-10{padding-inline:calc(var(--spacing) * 10)!important}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.sm\:text-\[13px\]{font-size:13px}}@media (min-width:48rem){.md\:top-1\/2{top:50%}.md\:bottom-10{bottom:calc(var(--spacing) * 10)}.md\:left-0{left:calc(var(--spacing) * 0)}.md\:mx-0{margin-inline:calc(var(--spacing) * 0)}.md\:mt-0{margin-top:calc(var(--spacing) * 0)}.md\:mb-0{margin-bottom:calc(var(--spacing) * 0)}.md\:block{display:block}.md\:inline-flex{display:inline-flex}.md\:h-6{height:calc(var(--spacing) * 6)}.md\:h-12{height:calc(var(--spacing) * 12)}.md\:h-\[70vh\]{height:70vh}.md\:h-\[72vh\]{height:72vh}.md\:h-full{height:100%}.md\:min-h-0{min-height:calc(var(--spacing) * 0)}.md\:min-h-\[600px\]{min-height:600px}.md\:w-1{width:calc(var(--spacing) * 1)}.md\:w-40{width:calc(var(--spacing) * 40)}.md\:w-56{width:calc(var(--spacing) * 56)}.md\:w-60{width:calc(var(--spacing) * 60)}.md\:w-64{width:calc(var(--spacing) * 64)}.md\:w-80{width:calc(var(--spacing) * 80)}.md\:w-\[40\%\]{width:40%}.md\:w-\[140px\]{width:140px}.md\:w-\[340px\]{width:340px}.md\:w-auto{width:auto}.md\:w-max{width:max-content}.md\:max-w-\[40\%\]{max-width:40%}.md\:max-w-\[60\%\]{max-width:60%}.md\:max-w-\[400px\]{max-width:400px}.md\:max-w-full{max-width:100%}.md\:flex-1{flex:1}.md\:flex-none{flex:none}.md\:shrink{flex-shrink:1}.md\:translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-col{flex-direction:column}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-start{align-items:flex-start}.md\:justify-between{justify-content:space-between}.md\:justify-end{justify-content:flex-end}.md\:justify-start{justify-content:flex-start}.md\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}.md\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.md\:gap-8{gap:calc(var(--spacing) * 8)}.md\:overflow-hidden{overflow:hidden}.md\:overflow-y-auto{overflow-y:auto}.md\:rounded-xl{border-radius:var(--radius-xl)}.md\:rounded-tl-none{border-top-left-radius:0}.md\:rounded-r-sm{border-top-right-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm)}.md\:border{border-style:var(--tw-border-style);border-width:1px}.md\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.md\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:bg-transparent{background-color:#0000}.md\:p-0{padding:calc(var(--spacing) * 0)}.md\:p-3{padding:calc(var(--spacing) * 3)}.md\:p-4{padding:calc(var(--spacing) * 4)}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:p-12{padding:calc(var(--spacing) * 12)}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:py-0{padding-block:calc(var(--spacing) * 0)}.md\:py-2{padding-block:calc(var(--spacing) * 2)}.md\:py-4{padding-block:calc(var(--spacing) * 4)}.md\:pt-0{padding-top:calc(var(--spacing) * 0)}.md\:pt-3{padding-top:calc(var(--spacing) * 3)}.md\:pr-0{padding-right:calc(var(--spacing) * 0)}.md\:pr-1{padding-right:calc(var(--spacing) * 1)}.md\:pr-2{padding-right:calc(var(--spacing) * 2)}.md\:pr-8{padding-right:calc(var(--spacing) * 8)}.md\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.md\:pb-12{padding-bottom:calc(var(--spacing) * 12)}.md\:pl-8{padding-left:calc(var(--spacing) * 8)}.md\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-\[96px\]{font-size:96px}}@media (min-width:64rem){.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:mr-6{margin-right:calc(var(--spacing) * 6)}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-72{width:calc(var(--spacing) * 72)}.lg\:w-\[340px\]{width:340px}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:gap-12{gap:calc(var(--spacing) * 12)}}@media (min-width:80rem){.xl\:col-span-4{grid-column:span 4/span 4}.xl\:col-span-8{grid-column:span 8/span 8}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}@media (min-width:96rem){.\32 xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}:where(.dark\:divide-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *)>:not(:last-child)){border-color:#3f3f4699}@supports (color:color-mix(in lab, red, red)){:where(.dark\:divide-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *)>:not(:last-child)){border-color:color-mix(in oklab, var(--color-zinc-700) 60%, transparent)}}.dark\:\!border-blue-800\/30:where([theme-mode=dark],[theme-mode=dark] *){border-color:#193cb84d!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!border-blue-800\/30:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-blue-800) 30%, transparent)!important}}.dark\:\!border-zinc-500:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-500)!important}.dark\:\!border-zinc-700:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-700)!important}.dark\:\!border-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!border-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}.dark\:\!border-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f46cc!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!border-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 80%, transparent)!important}}.dark\:border-blue-800\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:#193cb899}@supports (color:color-mix(in lab, red, red)){.dark\:border-blue-800\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-blue-800) 60%, transparent)}}.dark\:border-emerald-800\/30:where([theme-mode=dark],[theme-mode=dark] *){border-color:#005f464d}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-800\/30:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-emerald-800) 30%, transparent)}}.dark\:border-emerald-800\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:#005f4680}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-800\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-emerald-800) 50%, transparent)}}.dark\:border-red-900\/40:where([theme-mode=dark],[theme-mode=dark] *){border-color:#82181a66}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/40:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-red-900) 40%, transparent)}}.dark\:border-red-900\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:#82181a80}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-red-900) 50%, transparent)}}.dark\:border-red-900\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:#82181a99}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-red-900) 60%, transparent)}}.dark\:border-white\/5:where([theme-mode=dark],[theme-mode=dark] *){border-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/5:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.dark\:border-white\/15:where([theme-mode=dark],[theme-mode=dark] *){border-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/15:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.dark\:border-zinc-700:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-700)}.dark\:border-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}.dark\:border-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4699}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 60%, transparent)}}.dark\:border-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f46cc}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 80%, transparent)}}.dark\:border-zinc-800:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-800)}.dark\:border-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:#27272a80}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-800) 50%, transparent)}}.dark\:border-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:#27272a99}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-800) 60%, transparent)}}.dark\:border-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:#27272acc}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)}}.dark\:\!bg-\[var\(--color-primary\)\]\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-\[var\(--color-primary\)\]\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.dark\:\!bg-\[var\(--color-primary\)\]\/15:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-\[var\(--color-primary\)\]\/15:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 15%, transparent)!important}}.dark\:\!bg-blue-900\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:#1c398e1a!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-blue-900\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-blue-900) 10%, transparent)!important}}.dark\:\!bg-zinc-700:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-700)!important}.dark\:\!bg-zinc-800:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800)!important}.dark\:\!bg-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a80!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 50%, transparent)!important}}.dark\:\!bg-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a99!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 60%, transparent)!important}}.dark\:\!bg-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272acc!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)!important}}.dark\:\!bg-zinc-800\/95:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272af2!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-800\/95:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 95%, transparent)!important}}.dark\:\!bg-zinc-900:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-900)!important}.dark\:\!bg-zinc-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b4d!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 30%, transparent)!important}}.dark\:\!bg-zinc-900\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b80!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-900\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 50%, transparent)!important}}.dark\:bg-\[\#1e1e28\]\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#1e1e2880;background-color:color(display-p3 .117647 .117647 .153765/.5);background-color:lab(11.6087% 2.08957 -6.78738/.5)}.dark\:bg-blue-500\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-500\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.dark\:bg-blue-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#1c398e33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-blue-900) 20%, transparent)}}.dark\:bg-emerald-400:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-emerald-400)}.dark\:bg-emerald-900\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:#004e3b1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-emerald-900) 10%, transparent)}}.dark\:bg-emerald-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#004e3b33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-emerald-900) 20%, transparent)}}.dark\:bg-emerald-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#004e3b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-emerald-900) 30%, transparent)}}.dark\:bg-emerald-900\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:#004e3b66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-emerald-900) 40%, transparent)}}.dark\:bg-red-400:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-red-400)}.dark\:bg-red-950\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#46080933}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-red-950) 20%, transparent)}}.dark\:bg-red-950\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#4608094d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-red-950) 30%, transparent)}}.dark\:bg-zinc-600:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-600)}.dark\:bg-zinc-700:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-700)}.dark\:bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}.dark\:bg-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:#3f3f4699}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-700) 60%, transparent)}}.dark\:bg-zinc-800:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800)}.dark\:bg-zinc-800\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 20%, transparent)}}.dark\:bg-zinc-800\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 30%, transparent)}}.dark\:bg-zinc-800\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 40%, transparent)}}.dark\:bg-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 50%, transparent)}}.dark\:bg-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a99}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 60%, transparent)}}.dark\:bg-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272acc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)}}.dark\:bg-zinc-800\/90:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272ae6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/90:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 90%, transparent)}}.dark\:bg-zinc-900:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-900)}.dark\:bg-zinc-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 20%, transparent)}}.dark\:bg-zinc-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 30%, transparent)}}.dark\:bg-zinc-900\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 40%, transparent)}}.dark\:bg-zinc-900\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 50%, transparent)}}.dark\:bg-zinc-900\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181bcc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 80%, transparent)}}.dark\:bg-zinc-950:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-950)}.dark\:bg-zinc-950\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#09090b33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-950\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-950) 20%, transparent)}}.dark\:bg-zinc-950\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#09090b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-950\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-950) 30%, transparent)}}.dark\:from-\[\#69c0ff\]:where([theme-mode=dark],[theme-mode=dark] *){--tw-gradient-from:#69c0ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-\[\#40a9ff\]:where([theme-mode=dark],[theme-mode=dark] *){--tw-gradient-to:#40a9ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:\!text-amber-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-400)!important}.dark\:\!text-zinc-200:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200)!important}.dark\:\!text-zinc-300:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)!important}.dark\:\!text-zinc-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}.dark\:\!text-zinc-500:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-500)!important}.dark\:text-\[\#42b883\]:where([theme-mode=dark],[theme-mode=dark] *){color:#42b883}.dark\:text-\[\#a084fb\]:where([theme-mode=dark],[theme-mode=dark] *){color:#a084fb}.dark\:text-amber-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-400)}.dark\:text-amber-500:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-500)}.dark\:text-amber-500\/70:where([theme-mode=dark],[theme-mode=dark] *){color:#f99c00b3}@supports (color:color-mix(in lab, red, red)){.dark\:text-amber-500\/70:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-amber-500) 70%, transparent)}}.dark\:text-amber-500\/80:where([theme-mode=dark],[theme-mode=dark] *){color:#f99c00cc}@supports (color:color-mix(in lab, red, red)){.dark\:text-amber-500\/80:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-amber-500) 80%, transparent)}}.dark\:text-blue-300:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-blue-300)}.dark\:text-blue-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-blue-400)}.dark\:text-emerald-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-emerald-400)}.dark\:text-emerald-500\/80:where([theme-mode=dark],[theme-mode=dark] *){color:#00bb7fcc}@supports (color:color-mix(in lab, red, red)){.dark\:text-emerald-500\/80:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-emerald-500) 80%, transparent)}}.dark\:text-red-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-red-400)}.dark\:text-white:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-white)}.dark\:text-zinc-100:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100)}.dark\:text-zinc-200:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200)}.dark\:text-zinc-300:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)}.dark\:text-zinc-300\/80:where([theme-mode=dark],[theme-mode=dark] *){color:#d4d4d8cc}@supports (color:color-mix(in lab, red, red)){.dark\:text-zinc-300\/80:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-zinc-300) 80%, transparent)}}.dark\:text-zinc-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)}.dark\:text-zinc-600:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-600)}.dark\:shadow-none:where([theme-mode=dark],[theme-mode=dark] *){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-black\/40:where([theme-mode=dark],[theme-mode=dark] *){--tw-shadow-color:#0006}@supports (color:color-mix(in lab, red, red)){.dark\:shadow-black\/40:where([theme-mode=dark],[theme-mode=dark] *){--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.dark\:ring-blue-500\/30:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:#3080ff4d}@supports (color:color-mix(in lab, red, red)){.dark\:ring-blue-500\/30:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 30%, transparent)}}.dark\:ring-zinc-700:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:var(--color-zinc-700)}.dark\:ring-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.dark\:ring-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}.dark\:ring-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:#3f3f46cc}@supports (color:color-mix(in lab, red, red)){.dark\:ring-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700) 80%, transparent)}}.dark\:ring-zinc-800:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:var(--color-zinc-800)}@media (hover:hover){.dark\:group-hover\:text-zinc-200:where([theme-mode=dark],[theme-mode=dark] *):is(:where(.group):hover *){color:var(--color-zinc-200)}}.dark\:placeholder\:text-zinc-500:where([theme-mode=dark],[theme-mode=dark] *)::placeholder{color:var(--color-zinc-500)}.dark\:before\:bg-black\/40:where([theme-mode=dark],[theme-mode=dark] *):before{content:var(--tw-content);background-color:#0006}@supports (color:color-mix(in lab, red, red)){.dark\:before\:bg-black\/40:where([theme-mode=dark],[theme-mode=dark] *):before{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}@media (hover:hover){.dark\:hover\:border-zinc-500:where([theme-mode=dark],[theme-mode=dark] *):hover{border-color:var(--color-zinc-500)}.dark\:hover\:border-zinc-600:where([theme-mode=dark],[theme-mode=dark] *):hover{border-color:var(--color-zinc-600)}.dark\:hover\:\!bg-red-500\/10:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#fb2c361a!important}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:\!bg-red-500\/10:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)!important}}.dark\:hover\:\!bg-red-900\/20:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#82181a33!important}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:\!bg-red-900\/20:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-red-900) 20%, transparent)!important}}.dark\:hover\:\!bg-zinc-700:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-700)!important}.dark\:hover\:\!bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:\!bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}.dark\:hover\:\!bg-zinc-800:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-800)!important}.dark\:hover\:bg-red-500\/10:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-red-500\/10:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.dark\:hover\:bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}.dark\:hover\:bg-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#3f3f4699}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-zinc-700) 60%, transparent)}}.dark\:hover\:bg-zinc-800:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-800)}.dark\:hover\:bg-zinc-800\/20:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#27272a33}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-zinc-800\/20:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-zinc-800) 20%, transparent)}}.dark\:hover\:bg-zinc-800\/40:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#27272a66}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-zinc-800\/40:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-zinc-800) 40%, transparent)}}.dark\:hover\:\!text-zinc-300:where([theme-mode=dark],[theme-mode=dark] *):hover{color:var(--color-zinc-300)!important}.dark\:hover\:text-zinc-200:where([theme-mode=dark],[theme-mode=dark] *):hover{color:var(--color-zinc-200)}.dark\:hover\:text-zinc-300:where([theme-mode=dark],[theme-mode=dark] *):hover{color:var(--color-zinc-300)}}.dark\:focus\:bg-zinc-900:where([theme-mode=dark],[theme-mode=dark] *):focus{background-color:var(--color-zinc-900)}.\[\&_\.t-form__item\]\:\!mb-5 .t-form item{margin-bottom:calc(var(--spacing) * 5)!important}.\[\&_\.t-form__item\]\:\!mb-6 .t-form item{margin-bottom:calc(var(--spacing) * 6)!important}.\[\&_\.t-form__item\]\:\!mb-\[22px\] .t-form item{margin-bottom:22px!important}.\[\&_\.t-input__inner\]\:\!font-mono .t-input inner{font-family:var(--font-mono)!important}.\[\&_\.t-input__inner\]\:\!text-\[15px\] .t-input inner{font-size:15px!important}.\[\&_\.t-table\]\:\!border-t-0 .t-table,.\[\&_\.t-table\\_\\_header\]\:\!border-t-0 .t-table__header,.\[\&_\.t-table\\_\\_header\>tr\>th\]\:\!border-t-0 .t-table__header>tr>th{border-top-style:var(--tw-border-style)!important;border-top-width:0!important}.\[\&_textarea\]\:\!h-full textarea{height:100%!important}.\[\&_textarea\]\:\!resize-none textarea{resize:none!important}}.t-tag{border-style:var(--tw-border-style);padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * .5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));-webkit-user-select:none;user-select:none;border-width:1px;align-items:center;display:flex}.t-tag:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.t-tag{border-radius:var(--td-radius-default,8px)!important}.t-tag--round{border-radius:3.40282e38px!important}.t-tag--primary,.t-tag.t-tag--primary{border-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.t-tag--primary,.t-tag.t-tag--primary{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)!important}}.t-tag--primary,.t-tag.t-tag--primary{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.t-tag--primary,.t-tag.t-tag--primary{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.t-tag--primary,.t-tag.t-tag--primary{color:var(--color-primary)!important}.t-tag--success,.t-tag.t-tag--success{border-color:#00bb7f33!important}@supports (color:color-mix(in lab, red, red)){.t-tag--success,.t-tag.t-tag--success{border-color:color-mix(in oklab, var(--color-emerald-500) 20%, transparent)!important}}.t-tag--success,.t-tag.t-tag--success{background-color:#00bb7f1a!important}@supports (color:color-mix(in lab, red, red)){.t-tag--success,.t-tag.t-tag--success{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)!important}}.t-tag--success,.t-tag.t-tag--success{color:var(--color-emerald-600)!important}:-webkit-any(.t-tag--success,.t-tag.t-tag--success):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-emerald-400)!important}:is(.t-tag--success,.t-tag.t-tag--success):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-emerald-400)!important}.t-tag--warning,.t-tag.t-tag--warning{border-color:#f99c0033!important}@supports (color:color-mix(in lab, red, red)){.t-tag--warning,.t-tag.t-tag--warning{border-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)!important}}.t-tag--warning,.t-tag.t-tag--warning{background-color:#f99c001a!important}@supports (color:color-mix(in lab, red, red)){.t-tag--warning,.t-tag.t-tag--warning{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)!important}}.t-tag--warning,.t-tag.t-tag--warning{color:var(--color-amber-600)!important}:-webkit-any(.t-tag--warning,.t-tag.t-tag--warning):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-400)!important}:is(.t-tag--warning,.t-tag.t-tag--warning):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-400)!important}.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error{border-color:#ff235733!important}@supports (color:color-mix(in lab, red, red)){.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error{border-color:color-mix(in oklab, var(--color-rose-500) 20%, transparent)!important}}.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error{background-color:#ff23571a!important}@supports (color:color-mix(in lab, red, red)){.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error{background-color:color-mix(in oklab, var(--color-rose-500) 10%, transparent)!important}}.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error{color:var(--color-rose-600)!important}:-webkit-any(.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-rose-400)!important}:is(.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-rose-400)!important}.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info{border-color:#e4e4e7cc!important}@supports (color:color-mix(in lab, red, red)){.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info{border-color:color-mix(in oklab, var(--color-zinc-200) 80%, transparent)!important}}.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info{background-color:#f4f4f5cc!important}@supports (color:color-mix(in lab, red, red)){.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info{background-color:color-mix(in oklab, var(--color-zinc-100) 80%, transparent)!important}}.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info{color:var(--color-zinc-600)!important}:-webkit-any(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}:is(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}:is(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}:-webkit-any(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a99!important}:is(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a99!important}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 60%, transparent)!important}:is(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 60%, transparent)!important}}:-webkit-any(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}:is(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}.t-tag--light,.t-tag--outline,.t-tag--dark{color:inherit!important;background-color:#0000!important;border-color:#0000!important}.t-tag .t-icon,.t-tag .t-tag__icon{margin-right:calc(var(--spacing) * 1);opacity:.8;font-size:1.1em}.t-alert{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s;align-items:flex-start!important;gap:calc(var(--spacing) * 3)!important;border-radius:var(--radius-xl)!important;border-style:var(--tw-border-style)!important;padding:calc(var(--spacing) * 4)!important;border-width:1px!important;display:flex!important}.t-alert__icon{margin:calc(var(--spacing) * 0)!important;margin-top:calc(var(--spacing) * .5)!important;font-size:var(--text-xl)!important;line-height:var(--tw-leading,var(--text-xl--line-height))!important;flex-shrink:0!important}.t-alert__content{margin:calc(var(--spacing) * 0)!important;padding:calc(var(--spacing) * 0)!important;flex:1!important}.t-alert__title{margin-bottom:calc(var(--spacing) * 1)!important;font-size:var(--text-base)!important;line-height:var(--tw-leading,var(--text-base--line-height))!important;--tw-leading:1!important;--tw-font-weight:var(--font-weight-bold)!important;line-height:1!important;font-weight:var(--font-weight-bold)!important}.t-alert__message,.t-alert__description{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;--tw-leading:var(--leading-relaxed)!important;line-height:var(--leading-relaxed)!important;--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important}.t-alert__operation{margin-top:calc(var(--spacing) * 2)!important}@media (min-width:40rem){.t-alert__operation{margin-top:calc(var(--spacing) * 0)!important}}.t-alert--warning{border-color:#fee685cc!important}@supports (color:color-mix(in lab, red, red)){.t-alert--warning{border-color:color-mix(in oklab, var(--color-amber-200) 80%, transparent)!important}}.t-alert--warning{background-color:#fef3c680!important}@supports (color:color-mix(in lab, red, red)){.t-alert--warning{background-color:color-mix(in oklab, var(--color-amber-100) 50%, transparent)!important}}.t-alert--warning:where([theme-mode=dark],[theme-mode=dark] *){border-color:#f99c004d!important}@supports (color:color-mix(in lab, red, red)){.t-alert--warning:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)!important}}.t-alert--warning:where([theme-mode=dark],[theme-mode=dark] *){background-color:#f99c001a!important}@supports (color:color-mix(in lab, red, red)){.t-alert--warning:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)!important}}.t-alert--warning .t-alert__icon{color:var(--color-amber-500)!important}.t-alert--warning .t-alert__title{color:var(--color-amber-800)!important}.t-alert--warning .t-alert__title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-400)!important}.t-alert--warning .t-alert__message{color:var(--color-amber-700)!important}.t-alert--warning .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:#ffd236cc!important}@supports (color:color-mix(in lab, red, red)){.t-alert--warning .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-amber-300) 80%, transparent)!important}}.t-alert--info{border-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.t-alert--info{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)!important}}.t-alert--info{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.t-alert--info{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.t-alert--info:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.t-alert--info:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.t-alert--info .t-alert__icon{color:var(--color-primary)!important}.t-alert--info .t-alert__title{color:var(--color-zinc-900)!important}.t-alert--info .t-alert__title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100)!important}.t-alert--info .t-alert__message{color:var(--color-zinc-700)!important}.t-alert--info .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:#d4d4d8e6!important}@supports (color:color-mix(in lab, red, red)){.t-alert--info .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-zinc-300) 90%, transparent)!important}}.t-alert--success{border-color:#00bb7f4d!important}@supports (color:color-mix(in lab, red, red)){.t-alert--success{border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)!important}}.t-alert--success{background-color:#d0fae580!important}@supports (color:color-mix(in lab, red, red)){.t-alert--success{background-color:color-mix(in oklab, var(--color-emerald-100) 50%, transparent)!important}}.t-alert--success:where([theme-mode=dark],[theme-mode=dark] *){background-color:#00bb7f1a!important}@supports (color:color-mix(in lab, red, red)){.t-alert--success:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)!important}}.t-alert--success .t-alert__icon{color:var(--color-emerald-500)!important}.t-alert--success .t-alert__title{color:var(--color-emerald-800)!important}.t-alert--success .t-alert__title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-emerald-400)!important}.t-alert--success .t-alert__message{color:var(--color-emerald-700)!important}.t-alert--success .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:#5ee9b5cc!important}@supports (color:color-mix(in lab, red, red)){.t-alert--success .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-emerald-300) 80%, transparent)!important}}.t-alert--error{border-color:#fb2c364d!important}@supports (color:color-mix(in lab, red, red)){.t-alert--error{border-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)!important}}.t-alert--error{background-color:#ffe2e280!important}@supports (color:color-mix(in lab, red, red)){.t-alert--error{background-color:color-mix(in oklab, var(--color-red-100) 50%, transparent)!important}}.t-alert--error:where([theme-mode=dark],[theme-mode=dark] *){background-color:#fb2c361a!important}@supports (color:color-mix(in lab, red, red)){.t-alert--error:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)!important}}.t-alert--error .t-alert__icon{color:var(--color-red-500)!important}.t-alert--error .t-alert__title{color:var(--color-red-800)!important}.t-alert--error .t-alert__title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-red-400)!important}.t-alert--error .t-alert__message{color:var(--color-red-700)!important}.t-alert--error .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:#ffa3a3cc!important}@supports (color:color-mix(in lab, red, red)){.t-alert--error .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-red-300) 80%, transparent)!important}}.t-popup__content.t-dropdown{--tw-border-style:none!important;padding:calc(var(--spacing) * 0)!important;--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;background-color:#0000!important;border-style:none!important;border-radius:0!important}.t-dropdown__menu,.t-menu__popup{border-radius:var(--radius-2xl)!important;border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:#e4e4e780!important;overflow:hidden!important}@supports (color:color-mix(in lab, red, red)){.t-dropdown__menu,.t-menu__popup{border-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.t-dropdown__menu,.t-menu__popup{background-color:#ffffffe6!important}@supports (color:color-mix(in lab, red, red)){.t-dropdown__menu,.t-menu__popup{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)!important}}.t-dropdown__menu,.t-menu__popup{padding:calc(var(--spacing) * 2)!important;--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;--tw-backdrop-blur:blur(var(--blur-md))!important;-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)!important;backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)!important}:-webkit-any(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}:is(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}:is(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}:-webkit-any(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272ae6!important}:is(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272ae6!important}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 90%, transparent)!important}:is(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 90%, transparent)!important}}.t-dropdown__menu,.t-menu__popup{box-shadow:0 10px 30px -10px #0000001a!important}html[theme-mode=dark] .t-dropdown__menu,html[theme-mode=dark] .t-menu__popup{box-shadow:0 10px 30px -10px #00000080!important}.t-dropdown__item{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));margin-bottom:calc(var(--spacing) * 1)!important;border-radius:var(--radius-xl)!important;padding-inline:calc(var(--spacing) * 4)!important;padding-block:calc(var(--spacing) * 2.5)!important;font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important;color:var(--color-zinc-700)!important}.t-dropdown__item:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)!important}.t-dropdown__item{white-space:nowrap!important;min-width:120px!important;max-width:none!important}.t-dropdown__item:last-child{margin-bottom:calc(var(--spacing) * 0)!important}.t-dropdown__item:hover{background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){.t-dropdown__item:hover{background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}.t-dropdown__item:hover{color:var(--color-zinc-900)!important}.t-dropdown__item:hover:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-white)!important}.danger-item:hover{background-color:var(--color-red-50)!important;color:var(--color-red-600)!important}.danger-item:hover:where([theme-mode=dark],[theme-mode=dark] *){background-color:#fb2c361a!important}@supports (color:color-mix(in lab, red, red)){.danger-item:hover:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)!important}}.danger-item:hover:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-red-400)!important}.t-dropdown__item .t-dropdown__item__content,.t-dropdown__item .t-dropdown__item-text{align-items:center;gap:calc(var(--spacing) * 2);width:100%;display:flex}.t-tooltip--default .t-popup__content{border-radius:var(--radius-lg)!important;--tw-border-style:none!important;background-color:var(--color-zinc-800)!important;padding-inline:calc(var(--spacing) * 3)!important;padding-block:calc(var(--spacing) * 1.5)!important;font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important;--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important;color:var(--color-white)!important;border-style:none!important}.t-tooltip--default .t-popup__content:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-700)!important}.t-tooltip--default .t-popup__content{box-shadow:0 4px 6px -1px #0000001a!important}.t-tooltip--default .t-popup__arrow{background-color:#27272a!important;border:none!important}html[theme-mode=dark] .t-tooltip--default .t-popup__arrow{background-color:#3f3f46!important}.t-popup__content:has(.t-popconfirm__content){--tw-border-style:none!important;padding:calc(var(--spacing) * 0)!important;--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;background-color:#0000!important;border-style:none!important}.t-popconfirm__content{border-radius:var(--radius-2xl)!important;border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:#e4e4e780!important;min-width:240px!important;max-width:300px!important}@supports (color:color-mix(in lab, red, red)){.t-popconfirm__content{border-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.t-popconfirm__content{background-color:#fffffff2!important}@supports (color:color-mix(in lab, red, red)){.t-popconfirm__content{background-color:color-mix(in oklab, var(--color-white) 95%, transparent)!important}}.t-popconfirm__content{padding:calc(var(--spacing) * 5)!important;--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;--tw-backdrop-blur:blur(var(--blur-md))!important;-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)!important;backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)!important}.t-popconfirm__content:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){.t-popconfirm__content:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}.t-popconfirm__content:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272af2!important}@supports (color:color-mix(in lab, red, red)){.t-popconfirm__content:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 95%, transparent)!important}}.t-popconfirm__body{margin-bottom:calc(var(--spacing) * 5)!important;align-items:flex-start!important;gap:calc(var(--spacing) * 3)!important;display:flex!important}.t-popconfirm__icon--default{margin-top:calc(var(--spacing) * .5)!important;color:var(--color-blue-500)!important;flex-shrink:0!important;font-size:20px!important}.t-popconfirm__icon--default:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-blue-400)!important}.t-popconfirm__inner{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;--tw-leading:var(--leading-relaxed)!important;line-height:var(--leading-relaxed)!important;--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important;color:var(--color-zinc-800)!important}.t-popconfirm__inner:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200)!important}.t-popconfirm__buttons{justify-content:flex-end!important;align-items:center!important;gap:calc(var(--spacing) * 2)!important;width:100%!important;padding:calc(var(--spacing) * 0)!important;flex-direction:row!important;display:flex!important}.t-popconfirm__buttons .t-button{--tw-border-style:none;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-style:none;height:calc(var(--spacing) * 8)!important;border-radius:var(--radius-xl)!important;padding-inline:calc(var(--spacing) * 4)!important;font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important;--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important}.t-popconfirm__cancel{background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){.t-popconfirm__cancel{background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}.t-popconfirm__cancel{color:var(--color-zinc-500)!important}@media (hover:hover){.t-popconfirm__cancel:hover{background-color:var(--color-zinc-200)!important}}.t-popconfirm__cancel:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}@media (hover:hover){.t-popconfirm__cancel:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-600)!important}}.t-popconfirm__confirm{--tw-shadow-alpha:20%;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);background-color:var(--color-primary)!important;color:var(--color-white)!important}@media (hover:hover){.t-popconfirm__confirm:hover{opacity:.9}}.t-popconfirm .t-popup__arrow{background-color:#fff!important}html[theme-mode=dark] .t-popconfirm .t-popup__arrow{background-color:#27272a!important}.t-popconfirm__buttons button{flex:none!important;width:auto!important}.t-popup__content:has(.t-popconfirm__content) .t-popup__arrow{background-color:#fff!important;border:none!important}html[theme-mode=dark] .t-popup__content:has(.t-popconfirm__content) .t-popup__arrow{background-color:#27272a!important}.t-button{cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-xl);border-style:var(--tw-border-style);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-width:0;display:flex}.t-button:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.t-button--variant-base.t-button--theme-primary{background-color:var(--color-primary);color:var(--color-white)}@media (hover:hover){.t-button--variant-base.t-button--theme-primary:hover{background-color:var(--color-primary-hover)}}.t-button--variant-base.t-button--theme-primary:active{background-color:var(--color-primary-active)}.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline{background-color:var(--color-zinc-100);color:var(--color-zinc-700);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--color-zinc-200);--tw-ring-inset:inset}@media (hover:hover){:-webkit-any(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):hover{background-color:var(--color-zinc-200)}:is(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):hover{background-color:var(--color-zinc-200)}}:-webkit-any(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800);color:var(--color-zinc-200);--tw-ring-color:#3f3f4680}:is(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800);color:var(--color-zinc-200);--tw-ring-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}:is(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}@media (hover:hover){:-webkit-any(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-700)}:is(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-700)}}.t-button--theme-danger{background-color:var(--color-red-50);color:var(--color-red-600)}@media (hover:hover){.t-button--theme-danger:hover{background-color:var(--color-red-100)}}.t-button--theme-danger:where([theme-mode=dark],[theme-mode=dark] *){background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.t-button--theme-danger:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.t-button--theme-danger:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-red-400)}@media (hover:hover){.t-button--theme-danger:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.t-button--theme-danger:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}}.t-button--variant-text{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);background-color:#0000}@media (hover:hover){.t-button--variant-text:hover{background-color:var(--color-zinc-100)}}.t-button--variant-text:active{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (hover:hover){.t-button--variant-text:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-800)}}.t-dialog{border-radius:var(--radius-2xl)!important;border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:var(--color-zinc-200)!important;background-color:var(--color-white)!important;padding:calc(var(--spacing) * 0)!important;--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;overflow:hidden!important}.t-dialog:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-800)!important;background-color:var(--color-zinc-900)!important}.t-dialog__header{margin:calc(var(--spacing) * 0)!important;border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important;border-color:var(--color-zinc-100)!important;padding-inline:calc(var(--spacing) * 6)!important;padding-block:calc(var(--spacing) * 5)!important;font-size:var(--text-lg)!important;line-height:var(--tw-leading,var(--text-lg--line-height))!important;--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important;color:var(--color-zinc-900)!important}.t-dialog__header:where([theme-mode=dark],[theme-mode=dark] *){border-color:#27272acc!important}@supports (color:color-mix(in lab, red, red)){.t-dialog__header:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)!important}}.t-dialog__header:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-white)!important}.t-dialog__header-content{align-items:center;gap:calc(var(--spacing) * 2);display:flex}.t-dialog__header-content .t-icon-error-circle-filled{font-size:var(--text-xl)!important;line-height:var(--tw-leading,var(--text-xl--line-height))!important;color:var(--color-red-500)!important}.t-dialog__body,.t-dialog__body__icon{margin:calc(var(--spacing) * 0)!important;padding-inline:calc(var(--spacing) * 6)!important;padding-block:calc(var(--spacing) * 8)!important;font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;--tw-leading:var(--leading-relaxed)!important;line-height:var(--leading-relaxed)!important;color:var(--color-zinc-600)!important}:-webkit-any(.t-dialog__body,.t-dialog__body__icon):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}:is(.t-dialog__body,.t-dialog__body__icon):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}.t-dialog__body,.t-dialog__body__icon{display:block!important}.t-dialog__footer{margin:calc(var(--spacing) * 0)!important;border-top-style:var(--tw-border-style)!important;border-top-width:1px!important;border-color:var(--color-zinc-100)!important;background-color:#fafafa80!important}@supports (color:color-mix(in lab, red, red)){.t-dialog__footer{background-color:color-mix(in oklab, var(--color-zinc-50) 50%, transparent)!important}}.t-dialog__footer{padding-inline:calc(var(--spacing) * 6)!important;padding-block:calc(var(--spacing) * 4)!important}.t-dialog__footer:where([theme-mode=dark],[theme-mode=dark] *){border-color:#27272acc!important}@supports (color:color-mix(in lab, red, red)){.t-dialog__footer:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)!important}}.t-dialog__footer:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b80!important}@supports (color:color-mix(in lab, red, red)){.t-dialog__footer:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 50%, transparent)!important}}.t-dialog__footer{display:block!important}.t-dialog__footer>div{justify-content:flex-end!important;align-items:center!important;gap:calc(var(--spacing) * 3)!important;flex-direction:row!important;width:100%!important;display:flex!important}.t-dialog__footer .t-button{margin:calc(var(--spacing) * 0)!important;height:calc(var(--spacing) * 9)!important;border-radius:var(--radius-xl)!important;padding-inline:calc(var(--spacing) * 5)!important;font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important;--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;transition-property:all!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.t-dialog__footer .t-button:active{--tw-scale-x:95%!important;--tw-scale-y:95%!important;--tw-scale-z:95%!important;scale:var(--tw-scale-x) var(--tw-scale-y)!important}.t-dialog__footer .t-button{margin-left:0!important}.t-dialog__cancel{--tw-border-style:none!important;background-color:var(--color-zinc-100)!important;color:var(--color-zinc-500)!important;border-style:none!important}@media (hover:hover){.t-dialog__cancel:hover{background-color:var(--color-zinc-200)!important}}.t-dialog__cancel:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800)!important;color:var(--color-zinc-400)!important}@media (hover:hover){.t-dialog__cancel:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-700)!important}}.t-dialog__modal-danger .t-dialog__confirm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-shadow-color:#fb2c3633;--tw-border-style:none!important;background-color:var(--color-red-500)!important;color:var(--color-white)!important;border-style:none!important}@supports (color:color-mix(in lab, red, red)){.t-dialog__modal-danger .t-dialog__confirm{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-red-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}@media (hover:hover){.t-dialog__modal-danger .t-dialog__confirm:hover{background-color:var(--color-red-600)!important}}.t-dialog__close{top:calc(var(--spacing) * 5)!important;right:calc(var(--spacing) * 5)!important;border-radius:var(--radius-lg)!important;padding:calc(var(--spacing) * 1)!important;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}@media (hover:hover){.t-dialog__close:hover{background-color:var(--color-zinc-100)!important}.t-dialog__close:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-800)!important}}.t-input,.t-textarea__inner,.t-select__wrap .t-input{border-radius:var(--radius-xl);background-color:var(--color-white);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}:is(.t-input,.t-textarea__inner,.t-select__wrap .t-input):where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-900)}.t-input,.t-textarea__inner,.t-select__wrap .t-input{box-shadow:inset 0 0 0 1px #e4e4e7;border:none!important}html[theme-mode=dark] .t-input,.dark .t-input,html[theme-mode=dark] .t-textarea__inner,.dark .t-textarea__inner{box-shadow:inset 0 0 0 1px #3f3f46}.t-input:focus-within,.t-textarea__inner:focus,.t-input--focused{box-shadow:inset 0 0 0 2px var(--color-primary)!important}.t-input__inner,.t-textarea__inner{color:var(--color-zinc-700)}:-webkit-any(.t-input__inner,.t-textarea__inner):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200)}:is(.t-input__inner,.t-textarea__inner):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200)}.t-input__inner::placeholder,.t-textarea__inner::placeholder{color:var(--td-text-color-secondary)}.t-form__label{margin-bottom:calc(var(--spacing) * 1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-zinc-700)}.t-form__label:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)}.t-select-input__wrap .t-tag,.t-select__wrap .t-tag{margin:calc(var(--spacing) * .5)!important;border-radius:var(--radius-md)!important;--tw-border-style:none!important;background-color:#e4e4e780!important;border-style:none!important;align-items:center!important;height:auto!important;display:inline-flex!important}@supports (color:color-mix(in lab, red, red)){.t-select-input__wrap .t-tag,.t-select__wrap .t-tag{background-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.t-select-input__wrap .t-tag,.t-select__wrap .t-tag{padding-inline:calc(var(--spacing) * 2)!important;padding-block:calc(var(--spacing) * .5)!important;font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important;--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important;color:var(--color-zinc-700)!important}:is(.t-select-input__wrap .t-tag,.t-select__wrap .t-tag):where([theme-mode=dark],[theme-mode=dark] *){background-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){:is(.t-select-input__wrap .t-tag,.t-select__wrap .t-tag):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}:is(.t-select-input__wrap .t-tag,.t-select__wrap .t-tag):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)!important}.t-select-input__wrap .t-tag,.t-select__wrap .t-tag{max-width:calc(100% - 8px)!important}.t-select-input__wrap .t-tag__text,.t-select__wrap .t-tag__text{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important}.t-select-input__wrap .t-tag__close,.t-select__wrap .t-tag__close{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));margin-top:calc(var(--spacing) * .5)!important;margin-left:calc(var(--spacing) * 1)!important;color:var(--color-zinc-400)!important}@media (hover:hover){:is(.t-select-input__wrap .t-tag__close,.t-select__wrap .t-tag__close):hover{color:var(--color-red-500)!important}}.t-table{--td-bg-color-container:transparent;--td-border-level-2-color:#e4e4e780;background-color:#0000!important}html[theme-mode=dark] .t-table,.dark .t-table{--td-border-level-2-color:#3f3f4680}.t-table th{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);color:var(--td-text-color-secondary);text-transform:uppercase;border-bottom:1px solid var(--td-border-level-2-color);background-color:#0000!important}.t-table td{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-zinc-700);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.t-table td:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)}.t-table td{border-bottom:1px solid var(--td-border-level-2-color);background-color:#0000!important}.t-table--striped:not(.t-table--header-fixed)>.t-table__content>table>tbody>tr:nth-of-type(odd):not(.t-table__expanded-row){background-color:#fafafa80!important}@supports (color:color-mix(in lab, red, red)){.t-table--striped:not(.t-table--header-fixed)>.t-table__content>table>tbody>tr:nth-of-type(odd):not(.t-table__expanded-row){background-color:color-mix(in oklab, var(--color-zinc-50) 50%, transparent)!important}}.t-table--striped:not(.t-table--header-fixed)>.t-table__content>table>tbody>tr:nth-of-type(odd):not(.t-table__expanded-row):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a4d!important}@supports (color:color-mix(in lab, red, red)){.t-table--striped:not(.t-table--header-fixed)>.t-table__content>table>tbody>tr:nth-of-type(odd):not(.t-table__expanded-row):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 30%, transparent)!important}}.t-table tr:hover td{background-color:#f4f4f5cc!important}@supports (color:color-mix(in lab, red, red)){.t-table tr:hover td{background-color:color-mix(in oklab, var(--color-zinc-100) 80%, transparent)!important}}.t-table tr:hover td:where([theme-mode=dark],[theme-mode=dark] *){background-color:#3f3f4666!important}@supports (color:color-mix(in lab, red, red)){.t-table tr:hover td:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-700) 40%, transparent)!important}}.t-table__pagination{padding:calc(var(--spacing) * 3);border-top:1px solid var(--td-border-level-2-color);background-color:#0000!important}.t-timeline{background-color:#0000}.t-timeline-item__tail{border-color:#e4e4e780!important}@supports (color:color-mix(in lab, red, red)){.t-timeline-item__tail{border-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.t-timeline-item__tail:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){.t-timeline-item__tail:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}.t-timeline-item__content{color:inherit!important}.t-collapse,.t-collapse-panel,.t-collapse-panel__header,.t-collapse-panel__body{--tw-border-style:none!important;color:inherit!important;background-color:#0000!important;border-style:none!important}.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled{margin:calc(var(--spacing) * 0)!important;gap:calc(var(--spacing) * 0)!important;--tw-border-style:none!important;background-color:#f4f4f5cc!important;border-style:none!important;border-radius:8px!important;width:auto!important;display:inline-flex!important;position:relative!important}@supports (color:color-mix(in lab, red, red)){.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled{background-color:color-mix(in oklab, var(--color-zinc-100) 80%, transparent)!important}}.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;padding:2px!important}:-webkit-any(.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled):where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181bcc!important}:is(.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled):where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181bcc!important}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 80%, transparent)!important}:is(.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 80%, transparent)!important}}.t-radio-group__bg-block{--tw-border-style:none!important;background-color:var(--color-white)!important;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;border-style:none!important;border-radius:6px!important}.t-radio-group__bg-block:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-700)!important}.t-radio-group__bg-block{transition:all .3s cubic-bezier(.38,0,.24,1)!important}.t-radio-button,.t-radio-button.t-is-checked,.t-radio-button:hover{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s;z-index:10!important;margin:calc(var(--spacing) * 0)!important;--tw-border-style:none!important;padding:calc(var(--spacing) * 0)!important;background:0 0!important;border-style:none!important;border-radius:6px!important}.t-radio-button:not(.t-is-checked){color:var(--color-zinc-500)!important}.t-radio-button:not(.t-is-checked):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}.t-radio-button.t-is-checked{--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important;color:var(--color-zinc-900)!important}.t-radio-button.t-is-checked:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100)!important}.t-radio-button__label{justify-content:center!important;align-items:center!important;gap:calc(var(--spacing) * 1.5)!important;height:auto!important;padding-inline:calc(var(--spacing) * 2.5)!important;padding-block:calc(var(--spacing) * 1)!important;font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important;--tw-leading:1!important;--tw-font-weight:var(--font-weight-medium)!important;line-height:1!important;font-weight:var(--font-weight-medium)!important;display:flex!important}.t-radio-button__label .t-icon{margin:calc(var(--spacing) * 0)!important;font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}.t-radio-button:before,.t-radio-button:after,.t-radio-button:hover:before,.t-radio-button:hover:after{display:none!important}.t-checkbox__ui{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-radius:var(--radius-md)!important;border-color:var(--color-zinc-300)!important;background-color:var(--color-white)!important}.t-checkbox__ui:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-600)!important;background-color:var(--color-zinc-900)!important}.t-checkbox.t-is-checked .t-checkbox__ui{border-color:var(--color-primary)!important;background-color:var(--color-primary)!important}.t-checkbox__label{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;color:var(--color-zinc-700)!important}.t-checkbox__label:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)!important}:root,html[theme-mode=light]{--td-bg-color-page:var(--color-zinc-50)!important;--td-bg-color-container:var(--color-white)!important;--td-bg-color-secondarycontainer:var(--color-zinc-100)!important;--td-component-border:#e4e4e780!important}@supports (color:color-mix(in lab, red, red)){:root,html[theme-mode=light]{--td-component-border:color-mix(in srgb, var(--color-zinc-200), transparent 50%)!important}}:root,html[theme-mode=light]{--td-border-level-1-color:#e4e4e7cc!important}@supports (color:color-mix(in lab, red, red)){:root,html[theme-mode=light]{--td-border-level-1-color:color-mix(in srgb, var(--color-zinc-200), transparent 20%)!important}}:root,html[theme-mode=light]{--td-border-level-2-color:var(--color-zinc-200)!important;--td-text-color-primary:var(--color-zinc-900)!important;--td-text-color-secondary:var(--color-zinc-600)!important}html[theme-mode=dark]{--td-bg-color-page:var(--color-zinc-900)!important;--td-bg-color-container:var(--color-zinc-800)!important;--td-bg-color-secondarycontainer:var(--color-zinc-700)!important;--td-component-border:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){html[theme-mode=dark]{--td-component-border:color-mix(in srgb, var(--color-zinc-700), transparent 50%)!important}}html[theme-mode=dark]{--td-border-level-1-color:#3f3f46cc!important}@supports (color:color-mix(in lab, red, red)){html[theme-mode=dark]{--td-border-level-1-color:color-mix(in srgb, var(--color-zinc-700), transparent 20%)!important}}html[theme-mode=dark]{--td-border-level-2-color:var(--color-zinc-700)!important;--td-text-color-primary:var(--color-zinc-100)!important;--td-text-color-secondary:var(--color-zinc-400)!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}.color-container[data-v-f4b82387]{border-radius:50%;width:24px;height:24px;display:inline-block}[data-v-8a882e36] .t-drawer__content-wrapper{border-left-style:var(--tw-border-style)!important;border-color:#e4e4e780!important;border-left-width:1px!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .t-drawer__content-wrapper{border-color:color-mix(in oklab, var(--color-zinc-200,lab(90.6853% .399232 -1.45452)) 50%, transparent)!important}}[data-v-8a882e36] .t-drawer__content-wrapper{background-color:var(--color-white,#fff)!important}[data-v-8a882e36] .t-drawer__content-wrapper:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .t-drawer__content-wrapper:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)!important}}[data-v-8a882e36] .t-drawer__content-wrapper:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,#27272a)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .t-drawer__content-wrapper:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,color(display-p3 .152895 .152887 .16466))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .t-drawer__content-wrapper:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,lab(15.7305% .613764 -2.16959))!important}}[data-v-8a882e36] .t-drawer__header{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important;border-color:var(--color-zinc-100,#f4f4f5)!important;padding-inline:calc(var(--spacing,.25rem) * 6)!important;padding-block:calc(var(--spacing,.25rem) * 5)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .t-drawer__header{border-color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .t-drawer__header{border-color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}[data-v-8a882e36] .t-drawer__header:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .t-drawer__header:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)!important}}[data-v-8a882e36] .t-drawer__header-title{--tw-font-weight:var(--font-weight-bold,700)!important;font-size:16px!important;font-weight:var(--font-weight-bold,700)!important;color:var(--color-zinc-800,#27272a)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .t-drawer__header-title{color:var(--color-zinc-800,color(display-p3 .152895 .152887 .16466))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .t-drawer__header-title{color:var(--color-zinc-800,lab(15.7305% .613764 -2.16959))!important}}[data-v-8a882e36] .t-drawer__header-title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,#f4f4f5)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .t-drawer__header-title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .t-drawer__header-title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}[data-v-8a882e36] .t-drawer__body{padding:calc(var(--spacing,.25rem) * 0)!important}.setting-title[data-v-8a882e36]{margin-bottom:calc(var(--spacing,.25rem) * 4);--tw-font-weight:var(--font-weight-bold,700);font-size:13px;font-weight:var(--font-weight-bold,700);--tw-tracking:var(--tracking-widest,.1em);letter-spacing:var(--tracking-widest,.1em);color:var(--td-text-color-secondary);text-transform:uppercase}.custom-radio-group[data-v-8a882e36],.color-radio-group[data-v-8a882e36]{gap:calc(var(--spacing,.25rem) * 3)!important;--tw-border-style:none!important;width:100%!important;padding:calc(var(--spacing,.25rem) * 0)!important;background-color:#0000!important;border-style:none!important;display:flex!important}[data-v-8a882e36] .icon-card-radio{border-radius:var(--radius-xl,.75rem)!important;border-style:var(--tw-border-style)!important;border-width:2px!important;border-color:var(--color-zinc-100,#f4f4f5)!important;background-color:#fafafa80!important;flex:1!important;height:auto!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .icon-card-radio{border-color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .icon-card-radio{border-color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .icon-card-radio{background-color:color-mix(in oklab, var(--color-zinc-50,lab(98.26% 0 0)) 50%, transparent)!important}}[data-v-8a882e36] .icon-card-radio{padding:calc(var(--spacing,.25rem) * 4)!important;color:var(--color-zinc-500,#71717b)!important;transition-property:all!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)))!important;transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))!important;--tw-duration:.3s!important;transition-duration:.3s!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .icon-card-radio{color:var(--color-zinc-500,color(display-p3 .442983 .442931 .480324))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .icon-card-radio{color:var(--color-zinc-500,lab(47.8878% 1.65477 -5.77283))!important}}[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)!important}}[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b4d!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900,lab(8.30603% .618205 -2.16572)) 30%, transparent)!important}}[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,#9f9fa9)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,color(display-p3 .622604 .622563 .659842))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,lab(65.6464% 1.53497 -5.42429))!important}}[data-v-8a882e36] .icon-card-radio .t-radio-button__label{width:100%!important;padding-inline:calc(var(--spacing,.25rem) * 0)!important}[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked){border-color:var(--color-zinc-300,#d4d4d8)!important;color:var(--color-zinc-700,#3f3f46)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked){border-color:var(--color-zinc-300,color(display-p3 .831087 .831083 .846819))!important;color:var(--color-zinc-700,color(display-p3 .246478 .246448 .273934))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked){border-color:var(--color-zinc-300,lab(84.9837% .601262 -2.17986))!important;color:var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303))!important}}[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked):where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-500,#71717b)!important;color:var(--color-zinc-200,#e4e4e7)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked):where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-500,color(display-p3 .442983 .442931 .480324))!important;color:var(--color-zinc-200,color(display-p3 .894477 .894477 .905114))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked):where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-500,lab(47.8878% 1.65477 -5.77283))!important;color:var(--color-zinc-200,lab(90.6853% .399232 -1.45452))!important}}[data-v-8a882e36] .icon-card-radio.t-is-checked{border-color:var(--color-primary)!important;background-color:var(--color-primary-light)!important;scale:1.02!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .icon-card-radio.t-is-checked{background-color:color-mix(in oklab, var(--color-primary-light) 15%, transparent)!important}}[data-v-8a882e36] .icon-card-radio.t-is-checked{color:var(--color-primary)!important;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}[data-v-8a882e36] .icon-card-radio.t-is-checked:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .icon-card-radio.t-is-checked:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}[data-v-8a882e36] .color-dot-wrapper{--tw-duration:.3s;transition-duration:.3s;border-style:var(--tw-border-style)!important;height:auto!important;padding:calc(var(--spacing,.25rem) * 1.5)!important;transition-property:all!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)))!important;transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))!important;background-color:#0000!important;border-width:2px!important;border-color:#0000!important;border-radius:3.40282e38px!important}[data-v-8a882e36] .color-dot-wrapper .t-radio-button__label{padding:calc(var(--spacing,.25rem) * 0)!important}[data-v-8a882e36] .color-dot-wrapper:hover:not(.t-is-checked){background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .color-dot-wrapper:hover:not(.t-is-checked){background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}[data-v-8a882e36] .color-dot-wrapper.t-is-checked{--tw-scale-x:110%!important;--tw-scale-y:110%!important;--tw-scale-z:110%!important;scale:var(--tw-scale-x) var(--tw-scale-y)!important;border-color:var(--color-primary)!important;--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}[data-v-8a882e36] .custom-color-picker{border-radius:var(--radius-2xl,1rem)!important;border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:#e4e4e780!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .custom-color-picker{border-color:color-mix(in oklab, var(--color-zinc-200,lab(90.6853% .399232 -1.45452)) 50%, transparent)!important}}[data-v-8a882e36] .custom-color-picker{background-color:var(--color-white,#fff)!important;--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}[data-v-8a882e36] .custom-color-picker:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .custom-color-picker:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)!important}}[data-v-8a882e36] .custom-color-picker:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,#27272a)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .custom-color-picker:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,color(display-p3 .152895 .152887 .16466))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .custom-color-picker:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,lab(15.7305% .613764 -2.16959))!important}}[data-v-8a882e36] .custom-color-picker .t-color-picker__panel{background-color:#0000!important}:-webkit-any(){display:none!important}:is(){display:none!important}[data-v-f46b0d89] .t-menu__sub{--padding-left:0px!important;margin:calc(var(--spacing,.25rem) * 0)!important;--tw-border-style:none!important;padding:calc(var(--spacing,.25rem) * 0)!important;background-color:#0000!important;border-style:none!important;overflow:hidden!important}:is([data-v-f46b0d89] .t-menu__item,[data-v-f46b0d89] .t-submenu__title){margin-inline:calc(var(--spacing,.25rem) * 3)!important;margin-block:calc(var(--spacing,.25rem) * 1)!important;cursor:pointer!important;align-items:center!important;gap:calc(var(--spacing,.25rem) * 2.5)!important;border-radius:var(--radius-xl,.75rem)!important;--tw-border-style:none!important;width:auto!important;transition-property:all!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)))!important;transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))!important;--tw-duration:.2s!important;background-color:#0000!important;border-style:none!important;transition-duration:.2s!important;display:flex!important;position:relative!important}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:not(.t-submenu__item)){height:44px!important;padding-inline:calc(var(--spacing,.25rem) * 3)!important;--tw-font-weight:var(--font-weight-medium,500)!important;font-size:14.5px!important;font-weight:var(--font-weight-medium,500)!important;color:var(--td-text-color-primary)!important}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:not(.t-submenu__item)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,#9f9fa9)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:not(.t-submenu__item)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,color(display-p3 .622604 .622563 .659842))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:not(.t-submenu__item)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,lab(65.6464% 1.53497 -5.42429))!important}}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__item{height:40px!important;padding-right:calc(var(--spacing,.25rem) * 3)!important;--tw-font-weight:var(--font-weight-normal,400)!important;font-size:13.5px!important;font-weight:var(--font-weight-normal,400)!important;color:var(--td-text-color-secondary)!important;padding-left:42px!important}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__item:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,#9f9fa9)!important}@supports (color:color(display-p3 0 0 0)){.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__item:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,color(display-p3 .622604 .622563 .659842))!important}}@supports (color:lab(0% 0 0)){.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__item:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,lab(65.6464% 1.53497 -5.42429))!important}}[data-v-f46b0d89] .t-icon{opacity:.7!important;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)))!important;transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))!important;--tw-duration:.2s!important;flex-shrink:0!important;font-size:20px!important;transition-duration:.2s!important}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)){background-color:#f4f4f5cc!important}@supports (color:color-mix(in lab, red, red)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)){background-color:color-mix(in oklab, var(--color-zinc-100,lab(96.1634% .0993311 -.364041)) 80%, transparent)!important}}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,#18181b)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,color(display-p3 .0937957 .093793 .104806))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,lab(8.30603% .618205 -2.16572))!important}}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a99!important}@supports (color:color-mix(in lab, red, red)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800,lab(15.7305% .613764 -2.16959)) 60%, transparent)!important}}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,#f4f4f5)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon){color:var(--color-zinc-800,#27272a)!important;opacity:1!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon){color:var(--color-zinc-800,color(display-p3 .152895 .152887 .16466))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon){color:var(--color-zinc-800,lab(15.7305% .613764 -2.16959))!important}}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200,#e4e4e7)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200,color(display-p3 .894477 .894477 .905114))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200,lab(90.6853% .399232 -1.45452))!important}}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active{background-color:var(--color-primary-light)!important}@supports (color:color-mix(in lab, red, red)){.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active{background-color:color-mix(in oklab, var(--color-primary-light) 20%, transparent)!important}}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active{--tw-font-weight:var(--font-weight-semibold,600)!important;font-weight:var(--font-weight-semibold,600)!important;color:var(--color-primary)!important}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 15%, transparent)!important}}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active .t-icon{color:var(--color-primary)!important;opacity:1!important}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__item.t-is-active{--tw-font-weight:var(--font-weight-bold,700)!important;font-weight:var(--font-weight-bold,700)!important}.modern-menu-wrapper.is-horizontal[data-v-f46b0d89]{align-items:center!important;display:flex!important}:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item,.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title){margin-inline:calc(var(--spacing,.25rem) * 1)!important;border-radius:var(--radius-lg,.5rem)!important;height:40px!important;padding-inline:calc(var(--spacing,.25rem) * 3)!important;--tw-font-weight:var(--font-weight-medium,500)!important;font-size:14px!important;font-weight:var(--font-weight-medium,500)!important}:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)){background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)){background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,#18181b)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,color(display-p3 .0937957 .093793 .104806))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,lab(8.30603% .618205 -2.16572))!important}}:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,#f4f4f5)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active{background-color:var(--color-primary-light)!important}@supports (color:color-mix(in lab, red, red)){.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active{background-color:color-mix(in oklab, var(--color-primary-light) 20%, transparent)!important}}.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active{--tw-font-weight:var(--font-weight-bold,700)!important;font-weight:var(--font-weight-bold,700)!important;color:var(--color-primary)!important}.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 15%, transparent)!important}}.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active .t-icon{color:var(--color-primary)!important;opacity:1!important}:-webkit-any(html[theme-mode=dark],html[theme-mode=dark]){color:#fff!important}:is(html[theme-mode=dark],html[theme-mode=dark]){color:#fff!important}@reference "@/style/tailwind/index.css";.mslx-webpanel-header-menu-fixed[data-v-018b1da6]{z-index:1001;width:100%;position:fixed;top:0}.mslx-webpanel-header-menu-fixed-side[data-v-018b1da6]{z-index:10;width:auto;transition:all .3s;left:232px;right:0}.mslx-webpanel-header-menu-fixed-side-compact[data-v-018b1da6]{left:64px}[data-v-018b1da6] .t-menu,[data-v-018b1da6] .t-head-menu,[data-v-018b1da6] .t-menu--dark,[data-v-018b1da6] .t-menu--light,[data-v-018b1da6] .t-head-menu__inner{background:0 0!important}[data-v-018b1da6] .t-head-menu__inner,[data-v-018b1da6] .t-menu__item{box-shadow:none!important;border:none!important;outline:none!important}@apply px-4 sm:px-6;[data-v-018b1da6] .t-menu__item:after,[data-v-018b1da6] .t-menu__item:before,[data-v-018b1da6] .t-menu__item.t-is-active:after{display:none!important}.header-menu-reset[data-v-018b1da6] .t-menu__item{min-width:unset}@apply px-4 mx-1 rounded-xl transition-all border-none !important;@apply !border-none !bg-transparent hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50 !text-zinc-600 dark:!text-zinc-300 transition-colors !rounded-lg;@apply !border-none !bg-transparent hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50 !px-2 !py-1 !rounded-xl transition-colors !h-auto;html[theme-mode=dark]{color:#fff;background:#ffffff0d!important}.t-layout__header{background:0 0!important;border-bottom:none!important}.mslx-webpanel-header-layout[data-v-018b1da6]{height:100%}.mobile-full-width-popup{width:100vw!important;max-width:100vw!important;margin-top:0!important;position:fixed!important;top:48px!important;left:0!important;transform:none!important}.mobile-full-width-popup .t-default-menu{width:100%!important;max-width:100%!important}@apply !h-12 !text-[15px];.design-card[data-v-018b1da6]:not(.enable-custom-theme){border-bottom:1px solid #00000014!important}html[theme-mode=dark]{border-bottom:1px solid #ffffff14!important}.design-card.enable-custom-theme[data-v-018b1da6]{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid #ffffff26!important}[data-v-018b1da6] .t-head-menu{background-color:#0000!important}@keyframes jellyPop-018b1da6{0%{transform:scale(1)}30%{transform:scale(.85)}50%{transform:scale(1.15)}65%{transform:scale(.95)}80%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes magicBurst-018b1da6{0%{box-shadow:0 0 0 0 var(--color-primary);opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.2);box-shadow:0 0 0 35px #0000}}.animate-jelly-pop[data-v-018b1da6]{animation:.6s cubic-bezier(.25,1,.5,1) both jellyPop-018b1da6}.animate-magic-burst[data-v-018b1da6]{animation:.6s cubic-bezier(.1,.8,.3,1) both magicBurst-018b1da6}.fade-leave-active[data-v-323e6e6f],.fade-enter-active[data-v-323e6e6f]{transition:opacity .28s cubic-bezier(.38,0,.24,1)}.fade-enter[data-v-323e6e6f],.fade-leave-to[data-v-323e6e6f]{opacity:0}.tdesign-breadcrumb[data-v-b09aa6cf]{margin-bottom:24px}.glass-capsule[data-v-f1245484]:hover{border-color:var(--color-primary);transform:translateY(-2px)}@supports (color:color-mix(in lab, red, red)){.glass-capsule[data-v-f1245484]:hover{border-color:color-mix(in srgb, var(--color-primary), transparent 50%)}}.glass-capsule[data-v-f1245484]:hover{box-shadow:0 6px 20px #00000014, 0 0 15px var(--color-primary), inset 0 0 8px var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.glass-capsule[data-v-f1245484]:hover{box-shadow:0 6px 20px #00000014, 0 0 15px color-mix(in srgb, var(--color-primary), transparent 85%), inset 0 0 8px color-mix(in srgb, var(--color-primary), transparent 90%)}}html[theme-mode=dark]{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){html[theme-mode=dark]{border-color:color-mix(in srgb, var(--color-primary), transparent 60%)}}html[theme-mode=dark]{box-shadow:0 6px 20px #0006, 0 0 20px var(--color-primary), inset 0 0 8px var(--color-primary)}@supports (color:color-mix(in lab, red, red)){html[theme-mode=dark]{box-shadow:0 6px 20px #0006, 0 0 20px color-mix(in srgb, var(--color-primary), transparent 80%), inset 0 0 8px color-mix(in srgb, var(--color-primary), transparent 85%)}}:-webkit-any(:-webkit-any(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .sidebar-menu-clear,:-webkit-any(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-menu,:-webkit-any(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-menu--dark,:-webkit-any(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-default-menu__inner){background:0 0!important}:is(:is(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .sidebar-menu-clear,:is(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-menu,:is(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-menu--dark,:is(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-default-menu__inner){background:0 0!important}[data-v-9ac7176f] .t-menu__logo>*{margin-left:0!important}[data-v-9ac7176f] .t-menu{border-right:none!important}[data-v-9ac7176f] .t-menu__logo{border-bottom:none!important;padding:0!important}[data-v-9ac7176f] .t-menu__operations{border-top:none!important}html[theme-mode=dark]{background:0 0!important}[data-v-9ac7176f] .t-menu__item{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.2s;transition-duration:.2s;margin-inline:calc(var(--spacing,.25rem) * 2)!important;margin-block:calc(var(--spacing,.25rem) * 1)!important;border-radius:var(--radius-xl,.75rem)!important;--tw-border-style:none!important;border-style:none!important}[data-v-9ac7176f] .t-menu__item.t-is-active:after{display:none!important}[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active){background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active){background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active){color:var(--color-zinc-900,#18181b)!important}@supports (color:color(display-p3 0 0 0)){[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active){color:var(--color-zinc-900,color(display-p3 .0937957 .093793 .104806))!important}}@supports (color:lab(0% 0 0)){[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active){color:var(--color-zinc-900,lab(8.30603% .618205 -2.16572))!important}}[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,#f4f4f5)!important}@supports (color:color(display-p3 0 0 0)){[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}[data-v-9ac7176f] .t-menu__item.t-is-active{background-color:var(--color-primary-light)!important}@supports (color:color-mix(in lab, red, red)){[data-v-9ac7176f] .t-menu__item.t-is-active{background-color:color-mix(in oklab, var(--color-primary-light) 20%, transparent)!important}}[data-v-9ac7176f] .t-menu__item.t-is-active{--tw-font-weight:var(--font-weight-bold,700);font-weight:var(--font-weight-bold,700);color:var(--color-primary)!important}[data-v-9ac7176f] .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){[data-v-9ac7176f] .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}[data-v-9ac7176f] .t-menu__sub{background:0 0!important}[data-v-9ac7176f] .t-menu__sub .t-menu__item{margin-inline:calc(var(--spacing,.25rem) * 3)!important}html[theme-mode=dark]{color:#ffffffb3;color:var(--color-primary)!important}:-webkit-any(.t-layout__sider,.t-aside){background:0 0!important}:is(.t-layout__sider,.t-aside){background:0 0!important}@font-face{font-family:TencentSansW7;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAusAA4AAAAAEJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAALkAAAABwAAAAchqPqzUdERUYAAAtwAAAAHgAAAB4AKQAbT1MvMgAAAbgAAABZAAAAYGmceoNjbWFwAAACYAAAAJcAAAHsPmfPZmdhc3AAAAtkAAAADAAAAAwACAAbZ2x5ZgAAAywAAAW8AAAG/Ivn/ztoZWFkAAABRAAAADYAAAA2E+AL5GhoZWEAAAF8AAAAIAAAACQIawJ9aG10eAAAAhQAAABMAAAATCG/Auxsb2NhAAADAAAAACwAAAAsDjIQIm1heHAAAAGcAAAAGgAAACAAfgBDbmFtZQAACOgAAAIUAAAEm0zGvtJwb3N0AAAK/AAAAGYAAAB/4wuGdnByZXAAAAL4AAAACAAAAAhwAgESAAEAAAABBR/xlpGAXw889QALA+gAAAAA2Ac3gwAAAADY+IxB//L/HAPPAwAAAAAIAAIAAAAAAAB42mNgZGBgWf7vFAMD84v/n/7vZD7PABRBAYIAwxQH7XjaY2BkYGAQZXBiYGEAAUYGGEiBUAAMEQDCAAB42mNgYepm2sPAysDA1MUUwcDA4A2hGeMYjBjNgKI8HMxMTCz8TCwLGJj2CzCAgRiI8PX382d0YGBMEmQ2+u/FcIJlOVA9CwMjSI6JlekwkFJgYAQAR1kL+QAAAAJYAHYAAAAAAU0AAAEEAAACUAAhAlYAFQJUACACKgAdAZUANgEUABUBYAAkA5wAFQINABsBqAA0AnAAKgJYACoD6ACF//YANP/yACN42mNgYGBmgGAZBkYGEHgG5DGC+SwMp4C0HIMAUISPQYEhiSGNIZMhl6GUoZJhgeIkfS6/N4GpQQuSBP//B+tMZEgByucwFGOT/7/4/6L/C/7P+z/z/7T/yffqLrJvVFu3Zm3xPJBtcgz4ADPFkIGRDWgMIcBAIWBhZWBj52Bg4GRg4OIGi/Dw8gFJfgYqA/JcCgA99Se8ALgB/4W4AAGNAAAAFAAUABQAFABSAIIAsgD6ASIBOAFYAYIBxgHwAhQCRAJaAogCygMYA3542k1Ua2xTZRj+LmtP23Vdz2lPz3pZb2dr1+u2nq2H0d3Z2OhI5mC4AZMBo0gM98E0oRn1AqgoIYDG4BAkakDkJ4iyiCZGAiISUH8YjIQfEhNUMCoJrme+bTfkx/nxveec53ne533eDxE0Nn0V/0V2I4oYhATWw1ZKrDiGx5Vfzp6NkXPZ7mH8ECGCPNNXiZWokANVIYRjFt7MUI83iuvrWnAzTWA5Xl/nC2G/SZJFr7oUq3mzBaf7F5S0Kt+F59i1aq0j0tbwJmXcwUtsz3HHhEtQaYr0RFUbL0sqB8yRClvcG2uwa7hKg4VLKdFjZmeEN5SwwM0Dd4DcRaXAXuAuxQYqekwSIxRoqRRrxjLevrK/RNCUhXt7lYevpQMf6StjW1sz/gCrIqqm+Z7krsjCmJU67/zexrvMykE+CniA7wb8oUf4EhW9vtm2qGQSvQY808+t9Ov/5ih0zlhfyytfbGodd/ht2rJiH7k7dTtP0NQTYpUo3qDzSnsSVpc5j18O+DzRIzeqyel34nwDOISZHGoCM6I3SvKMRJppKM8pxeIy3tbU4S4y6Oc231Sp3OFLgXMV7dV2xq8L9K9IUZvY5XAZi4wfms2U6K21PoHvnVfvchitXEorhH2O4K253RUTnIYt0Xv4ITanB6M4zPwm9GuBQ4GIEaloEmVJzvXM4JeqXaxWfYg7tCi9qIddqNZZg53yKEv2lLgkEWaDr6fERHfEnEL5/mA+uJzcLmTIJEsMNUl0t5AR7o+kR8jqTCa7nsjZS3nuCvg2DtwcpC3ftQzfgg1ODMRfBjt8eiP8ZLAE7HNDsRJPUKhYTmqy13osvJGm4H/gomsgh8Ksk2oGpM+kAHqAh0wmuitpSWO6SWer2NOX7vu8D2SouFCACSSVk3hgjmBllRp8Takhck6THTT9DZjVoMkPprfgmSE8igHzKNOJ//MX4X4rN6m0VF022lan02g4R11DNngDahqoPQe1YoZ31SRiKWN5fammqNgddMiRcNheAoXIbKGlKsoXo7w3daDjFDmNbOAiM+uJOONSbjoSIzEPI1owpyO0oL6twlAcSbI9zrTzKIePTdeaeZamOHe4zJtA06kTJ3J+BSF7vdCbKZ/swsbGZzyHZvCN9BrlzmN+vUVU2UsFq/CAcjJnVV5bcNpB2gCnPI9jILDquZ1rwflleQzwqx1ri8PJzh+4K3GnUcPsg32pSdfAJmYA+dPm+a61rBj0N3Z5ktio3Gu1uAqZ3IVW0R2Ar4GDwIiyp97jJ5MXLuzbn71IGvYT1fXrR545kvdp+p/pNB0nvyI7QiqR+A2UEZupLPmjOK/KIlg4On741U6xf3hj49Ha0e2bov3tVFd6oOx2uVvb9dlLeOTjxt1797XUvDBx+snTOv1Sk/2y0g7YRTCDNP2WIqSHhLqQCHQGnEuYmpHhhvFYBNHnV8UsUPJLpjjwYZNA8ZC+yv7Uxu5QiG/vMWOfNzzq9uH7XqFoyz3byRWUv1ClnNowsoqi+CYp248fhN0TC94YXrSkYyRod03dWkYOmpdOfUAetGWTiE7/CRomQYML+VG0kHOG5AjjpjjE0kAYMc7JubMsqZnK3GvqMQmNOHcR4u9t5Woai31t3xXxYVrcaZQXt+5cOWZZV7ZXp94Io6u1C5Q+rZzY+pP62YEdZEmpx6QcUb4ZnMJ2nXbs2uWtb+P57w6sSoYytQYnl62juhVEnT1e2HURtF0EbQnUBsrAD9AADglwhfgLHkWxX2TiMqPOeyQzftinXHjhbVwuJVIdiOY9fvBRstDzyh9Ys6B6W2h0HnvO85DbvMsa2xJhNPgiPzBkaN4W/NF+0PaOd/ug7Yz+DNfVp3/v5+Jx8yRdT3F5dLMorLXik6PrnhhYfKAxM/hyb0Oanycm3+86bHMPC6JyZfB8YJnN8sngi4xqqdq3nN0//vzOTNXq5YsR+g8984WfeNq1Us1qFEEQ/npnk0X8IQGJIjnUSRLYLLt7MMlFCHvNKRvMuTPTmZ1kdib0zAY3ePMFfAAvigi5+Ry+gA8iiOLFr3tbTFZWcnGgu76qrvqqpqoAPMQ3KMy+A3wMWOGBehRwAy31LOAIayoPuEmfdwEv4Z76HPAy7quvAbfwqvEz4BXcjd4EvIpG9J5sqnmH2gfP7LDCOn4E3CD/04AjtNXzgJtYV68DXsJj9SngZTxRXwJu4XtDBbyCtehlwKtoRm8xQIlzTGGRIcUINQRXPH100cMOtgLape0QBgVif9dBjxlTkCPnSckj2MCQNudzGeQmrS5PB22ifcYmxII9RuWUf3JXXjOUhvKCt/PEoDyf2iwd1XIl/W5vZ4vXrhyaIjZFTRmPijIv06lsDEemuOTZlEHZact+nXRkL8/FR1diTWXshUnIefNnhtCULv0Rtvk4ox7qopKjbbcNhhVOWK1mXTgw6STX9t8kMh91k1RuRfJXJS98Zyp2rKSbcDIdzqfPB2OrrCyk1+n2F3HOMzrC+aFmPrcOg0i9XvukbhhCbPmaUBv73zqjrcTJf1gPV7PL6PK4yGN6L6oq882IvaWm/0w/ZfOt9014x3yZta1yS/V7fbJKNBcjzaraWJNIbXVixtqeSXly6x3TRSJjPZVjc50qKyQ2ttaUpxObVUkW15xRtXD9rg8Hs3FxRr8ATJnl93jaY2BiAIP/zQxGDNiAKBAzMjAxMjG4MLgyuDN4MHgy+DD4MwQwhDGEM0QwxDAyM7IwsjKyMbKzl+ZlGhgYGHIlFhXllxdlpmeUgISM3AwcQbSJq6sziDY1cjQA0WZGhoYAgBwU3AAAAAEAAgAIAAr//wAPAAEAAAAMAAAAFgAAAAIAAQADABQAAQAEAAAAAgAAAAAAAAABAAAAANWkJwgAAAAA2Ac3gwAAAADY+IxB)format("woff");font-weight:400;font-style:normal}.t-layout__sider{width:-moz-fit-content;width:fit-content}.t-button+.t-button{margin-left:var(--td-comp-margin-s)}.t-pagination-mini .t-button+.t-button,.t-jumper .t-button+.t-button{margin-left:0}.mslx-webpanel-link{color:var(--td-brand-color);cursor:pointer;margin-right:24px;text-decoration:none;transition:color .2s cubic-bezier(.38,0,.24,1)}.left-operation-container .t-button+.t-button,.operation-container .t-button+.t-button{margin-left:var(--td-comp-margin-s)}.t-layout.t-layout--with-sider>.t-layout{flex:1}.t-menu--dark .t-menu__operations .t-icon{color:#ffffff8c}.t-menu--dark .t-menu__operations .t-icon:hover{cursor:pointer}.t-default-menu.t-menu--dark{background:var(--td-gray-color-13)}.t-default-menu:not(.t-menu--dark) .t-menu__item.t-is-active:not(.t-is-opened){background-color:var(--td-brand-color-1);color:var(--td-brand-color)}.t-default-menu:not(.t-menu--dark) .t-menu__item.t-is-active:not(.t-is-opened) .t-icon{color:var(--td-brand-color)}.mslx-webpanel-wrapper{flex-direction:column;height:100vh;display:flex}.mslx-webpanel-main-wrapper{height:500px;overflow:scroll}.mslx-webpanel-side-nav-layout-relative{height:100%}.mslx-webpanel-content-layout{padding:var(--td-comp-paddingTB-l) var(--td-comp-paddingLR-l)}@media (max-width:768px){.mslx-webpanel-content-layout{padding:var(--td-comp-paddingTB-s) var(--td-comp-paddingLR-s)}}.mslx-webpanel-layout{height:calc(100vh - var(--td-comp-size-xxxl));overflow-y:scroll}.mslx-webpanel-layout::-webkit-scrollbar{background:0 0;width:8px}.mslx-webpanel-layout::-webkit-scrollbar-thumb{background-clip:content-box;background-color:var(--td-scrollbar-color);border:2px solid #0000;border-radius:6px}.mslx-webpanel-footer-layout{margin-bottom:var(--td-comp-margin-xxl);padding:0}.mslx-webpanel-sidebar-layout{height:100%}.mslx-webpanel-sidebar-compact{width:64px}.mslx-webpanel-sidebar-layout-side{z-index:100}.mslx-webpanel-side-nav{z-index:200;min-height:100%;transition:all .3s;position:fixed;top:0;bottom:0}.mslx-webpanel-side-nav-mix{top:var(--td-comp-size-xxxl)}.mslx-webpanel-side-nav-mix-fixed{top:var(--td-comp-size-xxxl);z-index:0}.mslx-webpanel-side-nav-no-fixed{z-index:1;position:relative}.mslx-webpanel-side-nav-no-logo{z-index:1}.mslx-webpanel-side-nav-logo-wrapper{justify-content:center;align-items:center;width:100%;display:flex}.mslx-webpanel-side-nav-logo-wrapper:hover{cursor:pointer}.mslx-webpanel-side-nav-logo-t-logo{width:100%;height:32px}.mslx-webpanel-side-nav-logo-tdesign-logo{width:100%;height:32px;color:var(--td-text-color-primary);padding:0 24px}.mslx-webpanel-side-nav-logo-normal{color:var(--td-brand-color);font:var(--td-font-body-large);transition:all .3s}.mslx-webpanel-side-nav-placeholder{flex:232px;min-width:232px;transition:all .3s}.mslx-webpanel-side-nav-placeholder-hidden{flex:72px;min-width:72px;transition:all .3s}.route-tabs-dropdown .t-icon{margin-right:8px}.logo-container{cursor:pointer;height:64px;margin-left:24px;display:inline-flex}.version-container{color:var(--td-text-color-primary);opacity:.4}.t-menu__popup{z-index:1000}.container-base-margin-top{margin-top:16px}.global-layout-bg[data-v-b0aaaf37]{z-index:1;background-color:var(--td-bg-color-page);width:100%;min-height:100vh;transition:background-color .3s;position:relative}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37]{color:var(--td-text-color-primary);--current-comp-op:var(--comp-op-light)}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37]:before{content:"";z-index:-1;background-position:50%;background-repeat:no-repeat;background-size:cover;background-image:var(--bg-img-light);width:100%;height:100%;opacity:var(--bg-op-light);transition:background-image .3s,opacity .3s;position:fixed;top:0;left:0}.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37]:before,html[theme-mode=dark]{background-image:var(--bg-img-dark)!important;opacity:var(--bg-op-dark)!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-layout,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-layout__content,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-content,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-layout__header,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-header,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-layout__sider,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-aside{box-shadow:none!important;background:0 0!important;border:none!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-menu,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-head-menu,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-default-menu,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-default-menu__inner,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-head-menu__inner,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-menu__scroll,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .mslx-webpanel-side-nav,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .mslx-webpanel-header-layout,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-card__header,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-card__footer,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-card__body{box-shadow:none!important;--td-bg-color-container:transparent!important;--td-bg-color-secondarycontainer:color-mix(in srgb, var(--td-bg-color-container-hover) calc(var(--current-comp-op) * 100%), transparent)!important;--td-component-stroke:transparent!important;--td-gray-color-13:transparent!important;background:0 0!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-menu--dark{--td-bg-color-container:transparent!important;background:0 0!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-card,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .design-card,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-textarea__inner,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-input-number,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-input{transition:background-color .3s,border-color .3s;background-color:rgba(255, 255, 255, var(--comp-op-light))!important;-webkit-backdrop-filter:none!important;border-color:#ffffff4d!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-input,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-textarea__inner,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-input-number{border-color:var(--td-component-border)!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .terminal-wrapper{background-color:rgba(255, 255, 255, var(--comp-op-light))!important;border:1px solid #ffffff4d!important}.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37],html[theme-mode=dark]{--current-comp-op:var(--comp-op-dark)}.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .design-card,html[theme-mode=dark],.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .t-card,html[theme-mode=dark]{background-color:rgba(20, 20, 20, var(--comp-op-dark))!important;border-color:#ffffff14!important}.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .t-input,html[theme-mode=dark],.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .t-textarea__inner,html[theme-mode=dark],.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .t-input-number,html[theme-mode=dark]{border-color:var(--td-component-border)!important;background-color:#0000!important}.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .terminal-wrapper,html[theme-mode=dark]{background-color:rgba(20, 20, 20, var(--comp-op-dark))!important;--td-component-stroke:#ffffff1a!important;border:1px solid #ffffff14!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .md-editor-preview blockquote{background-color:color-mix(in srgb, var(--md-theme-quote-bg-color), transparent 80%)!important}html[theme-mode=dark],html.dark{border:0!important;outline:none!important}@font-face{font-family:TencentSansW7;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAusAA4AAAAAEJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAALkAAAABwAAAAchqPqzUdERUYAAAtwAAAAHgAAAB4AKQAbT1MvMgAAAbgAAABZAAAAYGmceoNjbWFwAAACYAAAAJcAAAHsPmfPZmdhc3AAAAtkAAAADAAAAAwACAAbZ2x5ZgAAAywAAAW8AAAG/Ivn/ztoZWFkAAABRAAAADYAAAA2E+AL5GhoZWEAAAF8AAAAIAAAACQIawJ9aG10eAAAAhQAAABMAAAATCG/Auxsb2NhAAADAAAAACwAAAAsDjIQIm1heHAAAAGcAAAAGgAAACAAfgBDbmFtZQAACOgAAAIUAAAEm0zGvtJwb3N0AAAK/AAAAGYAAAB/4wuGdnByZXAAAAL4AAAACAAAAAhwAgESAAEAAAABBR/xlpGAXw889QALA+gAAAAA2Ac3gwAAAADY+IxB//L/HAPPAwAAAAAIAAIAAAAAAAB42mNgZGBgWf7vFAMD84v/n/7vZD7PABRBAYIAwxQH7XjaY2BkYGAQZXBiYGEAAUYGGEiBUAAMEQDCAAB42mNgYepm2sPAysDA1MUUwcDA4A2hGeMYjBjNgKI8HMxMTCz8TCwLGJj2CzCAgRiI8PX382d0YGBMEmQ2+u/FcIJlOVA9CwMjSI6JlekwkFJgYAQAR1kL+QAAAAJYAHYAAAAAAU0AAAEEAAACUAAhAlYAFQJUACACKgAdAZUANgEUABUBYAAkA5wAFQINABsBqAA0AnAAKgJYACoD6ACF//YANP/yACN42mNgYGBmgGAZBkYGEHgG5DGC+SwMp4C0HIMAUISPQYEhiSGNIZMhl6GUoZJhgeIkfS6/N4GpQQuSBP//B+tMZEgByucwFGOT/7/4/6L/C/7P+z/z/7T/yffqLrJvVFu3Zm3xPJBtcgz4ADPFkIGRDWgMIcBAIWBhZWBj52Bg4GRg4OIGi/Dw8gFJfgYqA/JcCgA99Se8ALgB/4W4AAGNAAAAFAAUABQAFABSAIIAsgD6ASIBOAFYAYIBxgHwAhQCRAJaAogCygMYA3542k1Ua2xTZRj+LmtP23Vdz2lPz3pZb2dr1+u2nq2H0d3Z2OhI5mC4AZMBo0gM98E0oRn1AqgoIYDG4BAkakDkJ4iyiCZGAiISUH8YjIQfEhNUMCoJrme+bTfkx/nxveec53ne533eDxE0Nn0V/0V2I4oYhATWw1ZKrDiGx5Vfzp6NkXPZ7mH8ECGCPNNXiZWokANVIYRjFt7MUI83iuvrWnAzTWA5Xl/nC2G/SZJFr7oUq3mzBaf7F5S0Kt+F59i1aq0j0tbwJmXcwUtsz3HHhEtQaYr0RFUbL0sqB8yRClvcG2uwa7hKg4VLKdFjZmeEN5SwwM0Dd4DcRaXAXuAuxQYqekwSIxRoqRRrxjLevrK/RNCUhXt7lYevpQMf6StjW1sz/gCrIqqm+Z7krsjCmJU67/zexrvMykE+CniA7wb8oUf4EhW9vtm2qGQSvQY808+t9Ov/5ih0zlhfyytfbGodd/ht2rJiH7k7dTtP0NQTYpUo3qDzSnsSVpc5j18O+DzRIzeqyel34nwDOISZHGoCM6I3SvKMRJppKM8pxeIy3tbU4S4y6Oc231Sp3OFLgXMV7dV2xq8L9K9IUZvY5XAZi4wfms2U6K21PoHvnVfvchitXEorhH2O4K253RUTnIYt0Xv4ITanB6M4zPwm9GuBQ4GIEaloEmVJzvXM4JeqXaxWfYg7tCi9qIddqNZZg53yKEv2lLgkEWaDr6fERHfEnEL5/mA+uJzcLmTIJEsMNUl0t5AR7o+kR8jqTCa7nsjZS3nuCvg2DtwcpC3ftQzfgg1ODMRfBjt8eiP8ZLAE7HNDsRJPUKhYTmqy13osvJGm4H/gomsgh8Ksk2oGpM+kAHqAh0wmuitpSWO6SWer2NOX7vu8D2SouFCACSSVk3hgjmBllRp8Takhck6THTT9DZjVoMkPprfgmSE8igHzKNOJ//MX4X4rN6m0VF022lan02g4R11DNngDahqoPQe1YoZ31SRiKWN5fammqNgddMiRcNheAoXIbKGlKsoXo7w3daDjFDmNbOAiM+uJOONSbjoSIzEPI1owpyO0oL6twlAcSbI9zrTzKIePTdeaeZamOHe4zJtA06kTJ3J+BSF7vdCbKZ/swsbGZzyHZvCN9BrlzmN+vUVU2UsFq/CAcjJnVV5bcNpB2gCnPI9jILDquZ1rwflleQzwqx1ri8PJzh+4K3GnUcPsg32pSdfAJmYA+dPm+a61rBj0N3Z5ktio3Gu1uAqZ3IVW0R2Ar4GDwIiyp97jJ5MXLuzbn71IGvYT1fXrR545kvdp+p/pNB0nvyI7QiqR+A2UEZupLPmjOK/KIlg4On741U6xf3hj49Ha0e2bov3tVFd6oOx2uVvb9dlLeOTjxt1797XUvDBx+snTOv1Sk/2y0g7YRTCDNP2WIqSHhLqQCHQGnEuYmpHhhvFYBNHnV8UsUPJLpjjwYZNA8ZC+yv7Uxu5QiG/vMWOfNzzq9uH7XqFoyz3byRWUv1ClnNowsoqi+CYp248fhN0TC94YXrSkYyRod03dWkYOmpdOfUAetGWTiE7/CRomQYML+VG0kHOG5AjjpjjE0kAYMc7JubMsqZnK3GvqMQmNOHcR4u9t5Woai31t3xXxYVrcaZQXt+5cOWZZV7ZXp94Io6u1C5Q+rZzY+pP62YEdZEmpx6QcUb4ZnMJ2nXbs2uWtb+P57w6sSoYytQYnl62juhVEnT1e2HURtF0EbQnUBsrAD9AADglwhfgLHkWxX2TiMqPOeyQzftinXHjhbVwuJVIdiOY9fvBRstDzyh9Ys6B6W2h0HnvO85DbvMsa2xJhNPgiPzBkaN4W/NF+0PaOd/ug7Yz+DNfVp3/v5+Jx8yRdT3F5dLMorLXik6PrnhhYfKAxM/hyb0Oanycm3+86bHMPC6JyZfB8YJnN8sngi4xqqdq3nN0//vzOTNXq5YsR+g8984WfeNq1Us1qFEEQ/npnk0X8IQGJIjnUSRLYLLt7MMlFCHvNKRvMuTPTmZ1kdib0zAY3ePMFfAAvigi5+Ry+gA8iiOLFr3tbTFZWcnGgu76qrvqqpqoAPMQ3KMy+A3wMWOGBehRwAy31LOAIayoPuEmfdwEv4Z76HPAy7quvAbfwqvEz4BXcjd4EvIpG9J5sqnmH2gfP7LDCOn4E3CD/04AjtNXzgJtYV68DXsJj9SngZTxRXwJu4XtDBbyCtehlwKtoRm8xQIlzTGGRIcUINQRXPH100cMOtgLape0QBgVif9dBjxlTkCPnSckj2MCQNudzGeQmrS5PB22ifcYmxII9RuWUf3JXXjOUhvKCt/PEoDyf2iwd1XIl/W5vZ4vXrhyaIjZFTRmPijIv06lsDEemuOTZlEHZact+nXRkL8/FR1diTWXshUnIefNnhtCULv0Rtvk4ox7qopKjbbcNhhVOWK1mXTgw6STX9t8kMh91k1RuRfJXJS98Zyp2rKSbcDIdzqfPB2OrrCyk1+n2F3HOMzrC+aFmPrcOg0i9XvukbhhCbPmaUBv73zqjrcTJf1gPV7PL6PK4yGN6L6oq882IvaWm/0w/ZfOt9014x3yZta1yS/V7fbJKNBcjzaraWJNIbXVixtqeSXly6x3TRSJjPZVjc50qKyQ2ttaUpxObVUkW15xRtXD9rg8Hs3FxRr8ATJnl93jaY2BiAIP/zQxGDNiAKBAzMjAxMjG4MLgyuDN4MHgy+DD4MwQwhDGEM0QwxDAyM7IwsjKyMbKzl+ZlGhgYGHIlFhXllxdlpmeUgISM3AwcQbSJq6sziDY1cjQA0WZGhoYAgBwU3AAAAAEAAgAIAAr//wAPAAEAAAAMAAAAFgAAAAIAAQADABQAAQAEAAAAAgAAAAAAAAABAAAAANWkJwgAAAAA2Ac3gwAAAADY+IxB)format("woff");font-weight:400;font-style:normal}:root,:root[theme-mode=light]{--td-brand-color-1:#f2f3ff;--td-brand-color-2:#d9e1ff;--td-brand-color-3:#b5c7ff;--td-brand-color-4:#8eabff;--td-brand-color-5:#618dff;--td-brand-color-6:#366ef4;--td-brand-color-7:#0052d9;--td-brand-color-8:#003cab;--td-brand-color-9:#002a7c;--td-brand-color-10:#001a57}:root[theme-mode=dark]{--td-brand-color-1:#1b2f51;--td-brand-color-2:#173463;--td-brand-color-3:#143975;--td-brand-color-4:#103d88;--td-brand-color-5:#0d429a;--td-brand-color-6:#054bbe;--td-brand-color-7:#2667d4;--td-brand-color-8:#4582e6;--td-brand-color-9:#699ef5;--td-brand-color-10:#96bbf8}:root[theme-color=cyan]{--td-brand-color:#0594fa;--td-brand-color-1:#d7eefe;--td-brand-color-2:#aeddfd;--td-brand-color-3:#84cafd;--td-brand-color-4:#58b8fc;--td-brand-color-5:#29a4fb;--td-brand-color-6:#0594fa;--td-brand-color-7:#29a4fb;--td-brand-color-8:#0594fa;--td-brand-color-9:#0378df;--td-brand-color-10:#01409b}:root[theme-color=cyan][theme-mode=dark]{--td-brand-color:#29a4fb;--td-brand-color-1:#01409b;--td-brand-color-2:#0152b3;--td-brand-color-3:#0264ca;--td-brand-color-4:#0378df;--td-brand-color-5:#0594fa;--td-brand-color-6:#29a4fb;--td-brand-color-7:#0594fa;--td-brand-color-8:#29a4fb;--td-brand-color-9:#58b8fc;--td-brand-color-10:#d7eefe}:root[theme-color=green]{--td-brand-color-1:#e8f8f2;--td-brand-color-2:#bcebdc;--td-brand-color-3:#85dbbe;--td-brand-color-4:#48c79c;--td-brand-color-5:#00a870;--td-brand-color-6:#078d5c;--td-brand-color-7:#067945;--td-brand-color-8:#00a870;--td-brand-color-9:#044f2a;--td-brand-color-10:#033017}:root[theme-color=green][theme-mode=dark]{--td-brand-color:#03a56f;--td-brand-color-1:#024b15;--td-brand-color-2:#03965c;--td-brand-color-3:#03a56f;--td-brand-color-4:#04c383;--td-brand-color-5:#03965c;--td-brand-color-6:#03a56f;--td-brand-color-7:#04c383;--td-brand-color-8:#03a56f;--td-brand-color-9:#05eb9f;--td-brand-color-10:#91fdd9}:root[theme-color=orange]{--td-brand-color-1:#fce5d7;--td-brand-color-2:#f8cdaf;--td-brand-color-3:#f4b285;--td-brand-color-4:#f19659;--td-brand-color-5:#ed7b2f;--td-brand-color-6:#e75510;--td-brand-color-7:#f19659;--td-brand-color-8:#ed7b2f;--td-brand-color-9:#e75510;--td-brand-color-10:#7f0a02;--td-brand-color:#ed7b2f}:root[theme-color=orange][theme-mode=dark]{--td-brand-color:#ed7b2f;--td-brand-color-1:#692204;--td-brand-color-2:#873105;--td-brand-color-3:#a24006;--td-brand-color-4:#c25110;--td-brand-color-5:#d66724;--td-brand-color-6:#ed8139;--td-brand-color-7:#ff9852;--td-brand-color-8:#ed7b2f;--td-brand-color-9:#ed7b2f;--td-brand-color-10:#fce5d7}:root[theme-color=pink]{--td-brand-color:#ed49b4;--td-brand-color-1:#fce5f4;--td-brand-color-2:#facae9;--td-brand-color-3:#f7aede;--td-brand-color-4:#f491d2;--td-brand-color-5:#f172c5;--td-brand-color-6:#ed49b4;--td-brand-color-7:#f172c5;--td-brand-color-8:#ed49b4;--td-brand-color-9:#e80f9d;--td-brand-color-10:#8f025e}:root[theme-color=pink][theme-mode=dark]{--td-brand-color:#ff70cf;--td-brand-color-1:#5b374f;--td-brand-color-2:#9b066d;--td-brand-color-3:#bc088a;--td-brand-color-4:#d435a0;--td-brand-color-5:#ed53b7;--td-brand-color-6:#ff70cf;--td-brand-color-7:#ff99e4;--td-brand-color-8:#ff70cf;--td-brand-color-9:#ffdbfd;--td-brand-color-10:#fff2ff}:root[theme-color=purple]{--td-brand-color:#834ec2;--td-brand-color-1:#eee6f7;--td-brand-color-2:#ddceee;--td-brand-color-3:#ccb6e6;--td-brand-color-4:#bb9edc;--td-brand-color-5:#ab87d5;--td-brand-color-6:#9a6fce;--td-brand-color-7:#9a6fce;--td-brand-color-8:#834ec2;--td-brand-color-9:#783ac3;--td-brand-color-10:#4c1397}:root[theme-color=purple][theme-mode=dark]{--td-brand-color:#ab87d5;--td-brand-color-1:#4c1397;--td-brand-color-2:#6325b0;--td-brand-color-3:#783ac3;--td-brand-color-4:#834ec2;--td-brand-color-5:#9a6fce;--td-brand-color-6:#ab87d5;--td-brand-color-7:#ab87d5;--td-brand-color-8:#ab87d5;--td-brand-color-9:#ccb6e6;--td-brand-color-10:#eee6f7}:root[theme-color=red]{---td-brand-color:#e34d59;--td-brand-color-1:#fbe5e7;--td-brand-color-2:#f7ccd0;--td-brand-color-3:#f3b2b8;--td-brand-color-4:#ef989f;--td-brand-color-5:#ea7b84;--td-brand-color-6:#e34d59;--td-brand-color-7:#ea7b84;--td-brand-color-8:#e34d59;--td-brand-color-9:#e42c3a;--td-brand-color-10:#8d0309}:root[theme-color=red][theme-mode=dark]{--td-brand-color:#fb6e77;--td-brand-color-1:#4f3335;--td-brand-color-2:#960627;--td-brand-color-3:#b01c37;--td-brand-color-4:#c9384a;--td-brand-color-5:#e35661;--td-brand-color-6:#fb6e77;--td-brand-color-7:#ff9195;--td-brand-color-8:#fb6e77;--td-brand-color-9:#ffd6d8;--td-brand-color-10:#fff2f2}:root[theme-color=yellow]{--td-brand-color:#ebb105;--td-brand-color-1:#fde9ab;--td-brand-color-2:#fbd152;--td-brand-color-3:#ebb105;--td-brand-color-4:#dda204;--td-brand-color-5:#ca8d03;--td-brand-color-6:#b67803;--td-brand-color-7:#fbd152;--td-brand-color-8:#ebb105;--td-brand-color-9:#dda204;--td-brand-color-10:#603100}:root[theme-color=yellow][theme-mode=dark]{--td-brand-color:#ca8d03;--td-brand-color-1:#603100;--td-brand-color-2:#764101;--td-brand-color-3:#8c5201;--td-brand-color-4:#a16502;--td-brand-color-5:#b67803;--td-brand-color-6:#ca8d03;--td-brand-color-7:#764101;--td-brand-color-8:#ca8d03;--td-brand-color-9:#a16502;--td-brand-color-10:#fde9ab}#app{height:100%;overflow:hidden}body{color:var(--td-text-color-secondary);font-family:-apple-system, BlinkMacSystemFont, var(--td-font-family);font:var(--td-font-body-medium);-webkit-font-smoothing:antialiased;margin:0;padding:0}pre{font-family:var(--td-font-family)}ul,dl,li,dd,dt{margin:0;padding:0;list-style:none}figure,h1,h2,h3,h4,h5,h6,p{margin:0}*{box-sizing:border-box}.t-button-link,a{color:var(--td-brand-color);cursor:pointer;text-decoration:none;transition:color .2s cubic-bezier(.38,0,.24,1)}.t-button-link:hover,a:hover{color:var(--td-brand-color-hover)}.t-button-link:active,a:active,.t-button-link--active,a--active{color:var(--td-brand-color-active)}.t-button-link:focus,a:focus{text-decoration:none}.t-button-link{margin-right:var(--td-comp-margin-xxl)}.t-button-link:last-child{margin-right:0}@reference "@/style/tailwind/index.css";@media (max-width:768px){[data-v-d3e49ecc] .update-modal{max-width:400px;width:90vw!important}}.custom-scrollbar[data-v-d3e49ecc]{scrollbar-width:thin;scrollbar-color:var(--td-scrollbar-color) transparent}.custom-scrollbar[data-v-d3e49ecc]::-webkit-scrollbar{width:6px}.custom-scrollbar[data-v-d3e49ecc]::-webkit-scrollbar-thumb{background:var(--td-scrollbar-color);border-radius:4px}#nprogress .bar[data-v-ae5a7772]{background:var(--td-brand-color)!important}@keyframes jellyPop-a7ac6aaa{0%{transform:scale(1)}30%{transform:scale(.85)}50%{transform:scale(1.15)}65%{transform:scale(.95)}80%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes magicBurst-a7ac6aaa{0%{box-shadow:0 0 0 0 var(--color-primary);opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.2);box-shadow:0 0 0 35px #0000}}.animate-jelly-pop[data-v-a7ac6aaa]{animation:.6s cubic-bezier(.25,1,.5,1) both jellyPop-a7ac6aaa}.animate-magic-burst[data-v-a7ac6aaa]{animation:.6s cubic-bezier(.1,.8,.3,1) both magicBurst-a7ac6aaa}@reference "@/style/tailwind/index.css";.custom-scrollbar[data-v-cf423ea7]::-webkit-scrollbar{width:6px}@apply bg-zinc-300 dark:bg-zinc-600 rounded-full;[data-v-cf423ea7] .custom-md-preview{--md-bk-color:transparent!important;--md-color:inherit!important;text-align:left!important}[data-v-cf423ea7] .md-editor-preview a{color:var(--color-primary);text-decoration:none}[data-v-cf423ea7] .md-editor-preview a:hover{text-decoration:underline}[data-v-cf423ea7] .md-editor-preview code:not([class*=language-]){color:var(--color-primary);background-color:color-mix(in srgb, var(--color-primary), transparent 90%);border-radius:4px;padding:2px 4px}[data-v-cf423ea7] .md-editor-preview blockquote{background:0 0}[data-v-cf423ea7] .md-editor div.default-theme{--md-theme-quote-border:4px solid var(--color-primary)}[data-v-cf423ea7] .md-editor-preview{--md-color:inherit!important}[data-v-cf423ea7] .md-editor-preview table tr:nth-child(2n),[data-v-cf423ea7] .md-editor-preview table tr:nth-child(n){background-color:#0000}.list-item-anim[data-v-53cd7119]{will-change:transform, opacity;animation:.5s cubic-bezier(.2,.8,.2,1) backwards slideUp-53cd7119}@keyframes slideUp-53cd7119{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.list-item-anim[data-v-4d8c8b99]{will-change:transform, opacity;animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-4d8c8b99}@keyframes slideUp-4d8c8b99{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}[data-v-4d8c8b99] .t-avatar{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:#e4e4e780}@supports (color:color-mix(in lab, red, red)){[data-v-4d8c8b99] .t-avatar{--tw-ring-color:color-mix(in oklab, var(--color-zinc-200,lab(90.6853% .399232 -1.45452)) 50%, transparent)}}[data-v-4d8c8b99] .t-avatar:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){[data-v-4d8c8b99] .t-avatar:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)}}@reference "@/style/tailwind/index.css";@apply !p-0 !overflow-hidden;@apply !pb-4 border-b border-zinc-100 dark:border-zinc-800;.custom-scrollbar[data-v-d4c19aa2]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-d4c19aa2]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-d4c19aa2]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-d4c19aa2]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-d4c19aa2]::-webkit-scrollbar-track{background:0 0}@media (max-width:768px){.hide-scrollbar-on-mobile[data-v-d4c19aa2]::-webkit-scrollbar{display:none}.hide-scrollbar-on-mobile[data-v-d4c19aa2]{scrollbar-width:none;-ms-overflow-style:none}}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-235e2927]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-235e2927}@keyframes slideUp-235e2927{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.custom-scrollbar[data-v-235e2927]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-235e2927]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-235e2927]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-235e2927]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-235e2927]::-webkit-scrollbar-track{background:0 0}@apply !flex !items-start !gap-4 !pb-8 !m-0;@apply !w-8 !h-8 !rounded-full !flex !items-center !justify-center !border-2 !text-sm !font-extrabold !bg-transparent !transition-colors !duration-300 !z-10 !relative;@apply !border-[var(--color-primary)] !text-[var(--color-primary)] !bg-[var(--color-primary)]/10 shadow-[0_0_12px_var(--color-primary-light)]/40;@apply !border-zinc-200 dark:!border-zinc-700 !text-zinc-400 dark:!text-zinc-500 !bg-transparent;@apply !border-[var(--color-success)] !text-[var(--color-success)] !bg-[var(--color-success)]/10;@apply !text-sm !font-extrabold !text-zinc-800 dark:!text-zinc-200 !leading-none !mb-1.5 !transition-colors;@apply !text-[var(--color-primary)];@apply !text-xs !font-medium !text-zinc-500 dark:!text-zinc-400 !leading-relaxed;[data-v-235e2927] .custom-steps .t-steps-item:not(:last-child):after{content:""}@apply !absolute !w-[2px] !bg-zinc-200 dark:!bg-zinc-700 !top-8 !bottom-0 !left-[15px] !z-0;@apply !bg-[var(--color-primary)]/50;@reference "@/style/tailwind/index.css";.list-item-anim[data-v-af6238d0]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-af6238d0}@keyframes slideUp-af6238d0{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}[data-v-af6238d0] .code-font-textarea textarea{white-space:pre;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.6}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-bfac10be]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-bfac10be}@keyframes slideUp-bfac10be{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.custom-scrollbar[data-v-bfac10be]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-bfac10be]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-bfac10be]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-bfac10be]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-bfac10be]::-webkit-scrollbar-track{background:0 0}@apply !flex !items-start !gap-4 !pb-8 !m-0;@apply !w-8 !h-8 !rounded-full !flex !items-center !justify-center !border-2 !text-sm !font-extrabold !bg-transparent !transition-colors !duration-300 !z-10 !relative;@apply !border-[var(--color-primary)] !text-[var(--color-primary)] !bg-[var(--color-primary)]/10 shadow-[0_0_12px_var(--color-primary-light)]/40;@apply !border-zinc-200 dark:!border-zinc-700 !text-zinc-400 dark:!text-zinc-500 !bg-transparent;@apply !border-[var(--color-success)] !text-[var(--color-success)] !bg-[var(--color-success)]/10;@apply !text-sm !font-extrabold !text-zinc-800 dark:!text-zinc-200 !leading-none !mb-1.5 !transition-colors;@apply !text-[var(--color-primary)];@apply !text-xs !font-medium !text-zinc-500 dark:!text-zinc-400 !leading-relaxed;[data-v-bfac10be] .custom-steps .t-steps-item:not(:last-child):after{content:""}@apply !absolute !w-[2px] !bg-zinc-200 dark:!bg-zinc-700 !top-8 !bottom-0 !left-[15px] !z-0;@apply !bg-[var(--color-primary)]/50;@reference "@/style/tailwind/index.css";.list-item-anim[data-v-d33adaae]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-d33adaae}@keyframes slideUp-d33adaae{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.custom-scrollbar[data-v-d33adaae]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-d33adaae]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-d33adaae]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-d33adaae]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-d33adaae]::-webkit-scrollbar-track{background:0 0}[data-v-d33adaae] .code-font-textarea textarea{white-space:pre;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.6}@apply !flex !items-start !gap-4 !pb-8 !m-0;@apply !w-8 !h-8 !rounded-full !flex !items-center !justify-center !border-2 !text-sm !font-extrabold !bg-transparent !transition-colors !duration-300 !z-10 !relative;@apply !border-[var(--color-primary)] !text-[var(--color-primary)] !bg-[var(--color-primary)]/10 shadow-[0_0_12px_var(--color-primary-light)]/40;@apply !border-zinc-200 dark:!border-zinc-700 !text-zinc-400 dark:!text-zinc-500 !bg-transparent;@apply !border-[var(--color-success)] !text-[var(--color-success)] !bg-[var(--color-success)]/10;@apply !text-sm !font-extrabold !text-zinc-800 dark:!text-zinc-200 !leading-none !mb-1.5 !transition-colors;@apply !text-[var(--color-primary)];@apply !text-xs !font-medium !text-zinc-500 dark:!text-zinc-400 !leading-relaxed;[data-v-d33adaae] .custom-steps .t-steps-item:not(:last-child):after{content:""}@apply !absolute !w-[2px] !bg-zinc-200 dark:!bg-zinc-700 !top-8 !bottom-0 !left-[15px] !z-0;@apply !bg-[var(--color-primary)]/50;@reference "@/style/tailwind/index.css";.list-item-anim[data-v-5d3f8bde]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-5d3f8bde}@keyframes slideUp-5d3f8bde{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.list-item-anim[data-v-fb34b079]{will-change:transform, opacity;animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-fb34b079}@keyframes slideUp-fb34b079{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@reference "@/style/tailwind/index.css";.custom-scrollbar[data-v-71bc696a]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-71bc696a]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-71bc696a]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-71bc696a]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-71bc696a]::-webkit-scrollbar-track{background:0 0}.custom-tabs[data-v-71bc696a] .t-tabs__nav-container{padding:0 12px;border-bottom:1px solid var(--td-component-stroke)!important;background-color:#0000!important}.custom-tabs[data-v-71bc696a] .t-tabs__content,.custom-tabs[data-v-71bc696a] .t-tab-panel{background-color:#0000!important;padding:0!important}.custom-tabs[data-v-71bc696a] .t-tabs__nav-item{color:var(--td-text-color-secondary);font-size:13px;background-color:#0000!important}.custom-tabs[data-v-71bc696a] .t-tabs__nav-item:hover{color:var(--td-text-color-primary)}.custom-tabs[data-v-71bc696a] .t-tabs__nav-item.t-is-active{color:var(--td-brand-color);font-weight:700}.list-item-anim[data-v-2e07fa53]{will-change:transform, opacity;animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-2e07fa53}@keyframes slideUp-2e07fa53{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.list-anim-enter-active[data-v-2e07fa53],.list-anim-leave-active[data-v-2e07fa53]{will-change:transform, opacity;transition:transform .4s cubic-bezier(.2,.8,.2,1),opacity .4s}.list-anim-enter-from[data-v-2e07fa53],.list-anim-leave-to[data-v-2e07fa53]{opacity:0;transform:translateY(16px)scale(.98)}.list-anim-leave-active[data-v-2e07fa53]{width:100%;position:absolute}.result-link[data-v-635c4716]{color:var(--td-brand-color);cursor:pointer;text-decoration:none}.result-link[data-v-635c4716]:hover,.result-link[data-v-635c4716]:active,.result-link--active[data-v-635c4716]{color:var(--td-brand-color)}.result-link[data-v-635c4716]:focus{text-decoration:none}.result-container[data-v-635c4716]{flex-direction:column;justify-content:center;align-items:center;height:75vh;min-height:400px;padding:24px;display:flex}.result-bg-img[data-v-635c4716]{width:200px;color:var(--td-brand-color)}.result-title[data-v-635c4716]{color:var(--td-text-color-primary);font-style:normal;font:var(--td-font-title-large);margin-top:8px;font-weight:500}.result-tip[data-v-635c4716]{font:var(--td-font-body-medium);color:var(--td-text-color-secondary);margin:8px 0 32px}.grid>div[data-v-beedb160]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-beedb160}@keyframes slideUp-beedb160{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}[data-v-beedb160] .t-avatar{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:#e4e4e780}@supports (color:color-mix(in lab, red, red)){[data-v-beedb160] .t-avatar{--tw-ring-color:color-mix(in oklab, var(--color-zinc-200,lab(90.6853% .399232 -1.45452)) 50%, transparent)}}[data-v-beedb160] .t-avatar:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){[data-v-beedb160] .t-avatar:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)}}[data-v-beedb160] .t-dialog{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);border-radius:var(--radius-2xl,1rem)!important}[data-v-beedb160] .t-checkbox__label{width:100%!important}@reference "@/style/tailwind/index.css";[data-v-132cd77f] .code-font-textarea textarea{white-space:pre;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.6}@apply !text-zinc-800 dark:!text-zinc-300;.fade-enter-active[data-v-132cd77f],.fade-leave-active[data-v-132cd77f]{transition:opacity .3s,transform .3s}.fade-enter-from[data-v-132cd77f],.fade-leave-to[data-v-132cd77f]{opacity:0;transform:translate(-10px)}@reference "@/style/tailwind/index.css";.custom-scrollbar[data-v-d3ff2a1d]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-d3ff2a1d]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-d3ff2a1d]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-d3ff2a1d]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-d3ff2a1d]::-webkit-scrollbar-track{background:0 0}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-8adb5690]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-8adb5690}@keyframes slideUp-8adb5690{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes smoothLoadingGlass-8adb5690{0%{-webkit-backdrop-filter:blur(.01px)!important}to{-webkit-backdrop-filter:blur(4px)!important}}@apply !rounded-2xl !bg-white/50 dark:!bg-zinc-900/50;[data-v-8adb5690] .t-loading__overlay{animation:.3s cubic-bezier(.2,.8,.2,1) forwards smoothLoadingGlass-8adb5690!important}.custom-scrollbar[data-v-8adb5690]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-8adb5690]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-8adb5690]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-8adb5690]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-8adb5690]::-webkit-scrollbar-track{background:0 0}@reference "@/style/tailwind/index.css";.fade-enter-active[data-v-31ad130e],.fade-leave-active[data-v-31ad130e]{transition:opacity .3s,transform .3s}.fade-enter-from[data-v-31ad130e],.fade-leave-to[data-v-31ad130e]{opacity:0;transform:translate(-10px)}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-52e19a3b]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-52e19a3b}@keyframes slideUp-52e19a3b{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes smoothLoadingGlass-52e19a3b{0%{-webkit-backdrop-filter:blur(.01px)!important}to{-webkit-backdrop-filter:blur(4px)!important}}.custom-scrollbar[data-v-52e19a3b]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-52e19a3b]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-52e19a3b]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-52e19a3b]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-52e19a3b]::-webkit-scrollbar-track{background:0 0}@apply !rounded-2xl !bg-white/50 dark:!bg-zinc-900/50;[data-v-52e19a3b] .t-loading__overlay{animation:.3s cubic-bezier(.2,.8,.2,1) forwards smoothLoadingGlass-52e19a3b!important}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-61762945]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-61762945}@keyframes slideUp-61762945{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes smoothLoadingGlass-61762945{0%{-webkit-backdrop-filter:blur(.01px)!important}to{-webkit-backdrop-filter:blur(4px)!important}}.custom-scrollbar[data-v-61762945]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-61762945]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-61762945]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-61762945]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-61762945]::-webkit-scrollbar-track{background:0 0}@apply !rounded-2xl !bg-white/50 dark:!bg-zinc-900/50;[data-v-61762945] .t-loading__overlay{animation:.3s cubic-bezier(.2,.8,.2,1) forwards smoothLoadingGlass-61762945!important}.list-item-anim[data-v-afef353c]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-afef353c}@keyframes slideUp-afef353c{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes smoothLoadingGlass-afef353c{0%{-webkit-backdrop-filter:blur(.01px)!important}to{-webkit-backdrop-filter:blur(4px)!important}}.custom-scrollbar[data-v-afef353c]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-afef353c]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-afef353c]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-afef353c]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-afef353c]::-webkit-scrollbar-track{background:0 0}[data-v-afef353c] .t-loading__overlay{background:#ffffff80!important;border-radius:1rem!important;animation:.3s cubic-bezier(.2,.8,.2,1) forwards smoothLoadingGlass-afef353c!important}.dark{background:#18181b80!important}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-02481195]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-02481195}@keyframes slideUp-02481195{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@reference "@/style/tailwind/index.css";.terminal-body-container[data-v-ac76d718] .xterm,.terminal-body-container[data-v-ac76d718] .xterm-viewport,.terminal-body-container[data-v-ac76d718] .xterm-screen,.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element{touch-action:none;background-color:#0000!important}.terminal-body-container[data-v-ac76d718] .xterm-viewport{overflow-y:hidden!important}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto;overflow-y:auto!important}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar-thumb:hover{background:#797979cc}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar-track{background:0 0}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar{background-color:#0000;width:12px!important}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar-thumb{background-color:#d4d4d8;background-clip:content-box;border:3px solid #0000;border-radius:10px}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar-thumb:hover{border-width:2px}@reference "@/style/tailwind/index.css";[data-v-454d5ea2] .t-dialog{max-width:95vw!important}[data-v-454d5ea2] .cm-editor{font-variant-ligatures:common-ligatures;font-family:Maple Mono,Maple Mono CN,Cascadia Code,Consolas,Menlo,PingFang SC,Microsoft YaHei,monospace!important}[data-v-454d5ea2] .cm-editor.cm-focused{outline:none!important}[data-v-454d5ea2] .cm-scroller,[data-v-454d5ea2] .cm-gutters{font-family:inherit!important}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-7b7858f8]{animation:.6s cubic-bezier(.2,.8,.2,1) backwards slideUp-7b7858f8}@keyframes slideUp-7b7858f8{0%{transform:translateY(20px)}to{transform:translateY(0)}}.list-item-anim[data-v-7b7858f8] .terminal-wrapper{animation:.6s cubic-bezier(.2,.8,.2,1) backwards glassFadeIn-7b7858f8;animation-delay:inherit}@keyframes glassFadeIn-7b7858f8{0%{opacity:0;-webkit-backdrop-filter:blur()!important}}.custom-scrollbar[data-v-7b7858f8]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-7b7858f8]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-7b7858f8]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-7b7858f8]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-7b7858f8]::-webkit-scrollbar-track{background:0 0}@media (max-width:768px){.hide-scrollbar-on-mobile[data-v-7b7858f8]::-webkit-scrollbar{display:none}.hide-scrollbar-on-mobile[data-v-7b7858f8]{scrollbar-width:none;-ms-overflow-style:none}}.terminal-body-container[data-v-72f4600a] .xterm,.terminal-body-container[data-v-72f4600a] .xterm-viewport,.terminal-body-container[data-v-72f4600a] .xterm-screen,.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element{touch-action:none;background-color:#0000!important}.terminal-body-container[data-v-72f4600a] .xterm-viewport{overflow-y:hidden!important}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto;overflow-y:auto!important}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar-thumb:hover{background:#797979cc}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar-track{background:0 0}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar{background-color:#0000;width:12px!important}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar-thumb{background-color:#d4d4d8;background-clip:content-box;border:3px solid #0000;border-radius:10px}html[theme-mode=dark],html.dark{background-color:#52525b}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar-thumb:hover{border-width:2px}@reference "@/style/tailwind/index.css";.memory-input-group[data-v-aad52783]{align-items:center;width:100%;max-width:110px;display:flex}.memory-input-group .input-left[data-v-aad52783]{flex:1;min-width:0}.memory-input-group .input-left[data-v-aad52783] .t-input{border-right:none!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;padding:0!important}.memory-input-group .input-left[data-v-aad52783] .t-input__inner{text-align:center!important}.memory-input-group .select-right[data-v-aad52783]{flex-shrink:0;width:40px!important}.memory-input-group .select-right[data-v-aad52783] .t-input{background-color:var(--td-bg-color-secondarycontainer)!important;border-top-left-radius:0!important;border-bottom-left-radius:0!important;padding:0!important}.memory-input-group .select-right[data-v-aad52783] .t-input__inner{text-align:center!important;color:var(--td-text-color-secondary)!important;padding:0!important;font-size:12px!important}.memory-input-group .select-right[data-v-aad52783] .t-select__right-icon{display:none!important}@reference "@/style/tailwind/index.css";.custom-scrollbar[data-v-77a13c75]{scrollbar-width:thin;scrollbar-color:var(--td-scrollbar-color) transparent}.custom-scrollbar[data-v-77a13c75]::-webkit-scrollbar{width:4px}.custom-scrollbar[data-v-77a13c75]::-webkit-scrollbar-thumb{background:var(--td-scrollbar-color);border-radius:2px}@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";.cropper-bg-pattern[data-v-3f8d4992]{background-color:#f4f4f5;background-image:repeating-conic-gradient(#e4e4e7 0% 25%,#0000 0% 50%);background-size:20px 20px}html[theme-mode=dark],html.dark{background-color:#27272a;background-image:repeating-conic-gradient(#3f3f46 0% 25%,#0000 0% 50%)}@reference "@/style/tailwind/index.css";.hide-scrollbar[data-v-903854e9]{scrollbar-width:none;-ms-overflow-style:none}.hide-scrollbar[data-v-903854e9]::-webkit-scrollbar{display:none}.custom-scrollbar[data-v-903854e9]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-903854e9]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-903854e9]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-903854e9]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-903854e9]::-webkit-scrollbar-track{background:0 0}.tab-panel-anim[data-v-903854e9]{will-change:transform, opacity;animation:.3s cubic-bezier(.2,.8,.2,1) forwards fadeSlideUp-903854e9}@keyframes fadeSlideUp-903854e9{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-fb7f5681]{will-change:transform, opacity;animation:.5s cubic-bezier(.2,.8,.2,1) backwards slideUp-fb7f5681}@keyframes slideUp-fb7f5681{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.custom-scrollbar[data-v-fb7f5681]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-fb7f5681]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-fb7f5681]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-fb7f5681]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-fb7f5681]::-webkit-scrollbar-track{background:0 0}[data-v-fb7f5681] .md-editor-preview a{color:var(--td-brand-color);font-weight:500;text-decoration:none}[data-v-fb7f5681] .md-editor-preview a:hover{text-decoration:underline}[data-v-fb7f5681] .md-editor-preview code{color:var(--td-brand-color);background-color:color-mix(in srgb, var(--td-brand-color), transparent 90%);border-radius:4px;padding:2px 4px;font-family:monospace}[data-v-fb7f5681] .md-editor div.default-theme{--md-theme-quote-border:4px solid var(--td-brand-color)}[data-v-fb7f5681] .md-editor-preview{--md-bk-color:transparent;--md-color:var(--td-text-color-primary)!important}@reference "@/style/tailwind/index.css";.hide-scrollbar[data-v-300a4e27]{scrollbar-width:none;-ms-overflow-style:none}.hide-scrollbar[data-v-300a4e27]::-webkit-scrollbar{display:none}.custom-scrollbar[data-v-300a4e27]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-300a4e27]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-300a4e27]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-300a4e27]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-300a4e27]::-webkit-scrollbar-track{background:0 0}@reference "@/style/tailwind/index.css";.custom-grid-bg[data-v-427a8642]{background-image:linear-gradient(#a1a1aa33 1px,#0000 1px),linear-gradient(90deg,#a1a1aa33 1px,#0000 1px);background-size:32px 32px}@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";.list-item-anim[data-v-7544ac33]{animation:.6s cubic-bezier(.2,.8,.2,1) backwards slideUp-7544ac33}@keyframes slideUp-7544ac33{0%{transform:translateY(20px)}to{transform:translateY(0)}}.list-item-anim[data-v-7544ac33] .terminal-wrapper{animation:.6s cubic-bezier(.2,.8,.2,1) backwards glassFadeIn-7544ac33;animation-delay:inherit}@keyframes glassFadeIn-7544ac33{0%{opacity:0;-webkit-backdrop-filter:blur()!important}}.custom-scrollbar[data-v-7544ac33]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-7544ac33]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-7544ac33]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-7544ac33]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-7544ac33]::-webkit-scrollbar-track{background:0 0}@media (max-width:768px){.hide-scrollbar-on-mobile[data-v-7544ac33]::-webkit-scrollbar{display:none}.hide-scrollbar-on-mobile[data-v-7544ac33]{scrollbar-width:none;-ms-overflow-style:none}}@reference "@/style/tailwind/index.css";[data-v-640ae127] .t-dialog{min-width:300px;max-width:90vw}[data-v-640ae127] .t-dialog__body{padding:0}@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";.hide-scrollbar[data-v-b8115d5f]{scrollbar-width:none;-ms-overflow-style:none}.hide-scrollbar[data-v-b8115d5f]::-webkit-scrollbar{display:none}[data-v-b8115d5f] .t-breadcrumb__item.light{color:unset!important;background-color:#0000!important}.card-enter-anim[data-v-b8115d5f]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUpFade-b8115d5f}@keyframes slideUpFade-b8115d5f{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.slide-up-enter-active[data-v-b8115d5f],.slide-up-leave-active[data-v-b8115d5f]{transition:transform .3s cubic-bezier(.34,1.56,.64,1),opacity .3s}.slide-up-enter-from[data-v-b8115d5f],.slide-up-leave-to[data-v-b8115d5f]{opacity:0;transform:translate(-50%,100%)}@keyframes tableRowSlideUp-b8115d5f{0%{opacity:0;transform:translateY(12px)translateZ(0)}to{opacity:1;transform:translateY(0)translateZ(0)}}[data-v-b8115d5f] .t-table tbody tr{will-change:transform, opacity;animation:.35s cubic-bezier(.2,.8,.2,1) backwards tableRowSlideUp-b8115d5f}[data-v-b8115d5f] .t-table tbody tr:first-child{animation-delay:25ms}[data-v-b8115d5f] .t-table tbody tr:nth-child(2){animation-delay:50ms}[data-v-b8115d5f] .t-table tbody tr:nth-child(3){animation-delay:75ms}[data-v-b8115d5f] .t-table tbody tr:nth-child(4){animation-delay:.1s}[data-v-b8115d5f] .t-table tbody tr:nth-child(5){animation-delay:.125s}[data-v-b8115d5f] .t-table tbody tr:nth-child(6){animation-delay:.15s}[data-v-b8115d5f] .t-table tbody tr:nth-child(7){animation-delay:.175s}[data-v-b8115d5f] .t-table tbody tr:nth-child(8){animation-delay:.2s}[data-v-b8115d5f] .t-table tbody tr:nth-child(9){animation-delay:.225s}[data-v-b8115d5f] .t-table tbody tr:nth-child(10){animation-delay:.25s}[data-v-b8115d5f] .t-table tbody tr:nth-child(11){animation-delay:.275s}[data-v-b8115d5f] .t-table tbody tr:nth-child(12){animation-delay:.3s}[data-v-b8115d5f] .t-table tbody tr:nth-child(13){animation-delay:.325s}[data-v-b8115d5f] .t-table tbody tr:nth-child(14){animation-delay:.35s}[data-v-b8115d5f] .t-table tbody tr:nth-child(15){animation-delay:.375s}[data-v-b8115d5f] .t-table tbody tr:nth-child(n+16){animation-delay:.35s}.list-item-anim[data-v-d4c14e83]{animation:.5s cubic-bezier(.2,.8,.2,1) backwards slideUp-d4c14e83}@keyframes slideUp-d4c14e83{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){[data-v-d4c14e83] .hidden-xs{display:none!important}}[data-v-d4c14e83] .t-table__content{scrollbar-width:thin;scrollbar-color:#a1a1aa4d transparent}[data-v-d4c14e83] .t-table__content::-webkit-scrollbar{width:6px;height:6px}[data-v-d4c14e83] .t-table__content::-webkit-scrollbar-thumb{background-color:#a1a1aa4d;border-radius:4px}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-5a8b9e90]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-5a8b9e90}@keyframes slideUp-5a8b9e90{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes jellyPop-5a8b9e90{0%{transform:scale(1)}30%{transform:scale(.85)}50%{transform:scale(1.15)}65%{transform:scale(.95)}80%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes magicBurst-5a8b9e90{0%{box-shadow:0 0 0 0 var(--color-primary);opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.2);box-shadow:0 0 0 35px #0000}}.animate-jelly-pop[data-v-5a8b9e90]{animation:.6s cubic-bezier(.25,1,.5,1) both jellyPop-5a8b9e90}.animate-magic-burst[data-v-5a8b9e90]{animation:.6s cubic-bezier(.1,.8,.3,1) both magicBurst-5a8b9e90}.list-item-anim[data-v-f0fede5e]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-f0fede5e}@keyframes slideUp-f0fede5e{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-v-f0fede5e] .t-input__suffix{align-items:center!important;display:flex!important}[data-v-f0fede5e] .t-upload{vertical-align:middle!important;width:auto!important;display:inline-flex!important}[data-v-f0fede5e] .t-upload__content{display:flex!important}[data-v-f0fede5e] .t-upload__tips{display:none!important}.settings-page[data-v-4a19a959]{width:100%}.construction-container[data-v-d8b4c962]{width:100%;height:100%;color:var(--td-text-color-primary);box-sizing:border-box;justify-content:center;align-items:center;padding:20px;display:flex;overflow:hidden}.content-wrapper[data-v-d8b4c962]{text-align:center;flex-direction:column;align-items:center;gap:24px;width:100%;max-width:500px;display:flex}.image-box[data-v-d8b4c962]{justify-content:center;align-items:center;width:200px;height:200px;display:flex;position:relative}.image-box .mascot-img[data-v-d8b4c962]{object-fit:contain;z-index:2;filter:drop-shadow(0 4px 12px #0000001a);border-radius:50%;width:100%;height:100%}.image-box .halo[data-v-d8b4c962]{background:var(--td-brand-color-focus);opacity:.2;z-index:1;filter:blur(20px);border-radius:50%;width:180px;height:180px;animation:3s ease-in-out infinite breathe-d8b4c962;position:absolute}.main-title[data-v-d8b4c962]{color:var(--td-brand-color);margin:0;font-family:Comic Sans MS,Chalkboard SE,sans-serif;font-size:28px;font-weight:700}.description[data-v-d8b4c962]{color:var(--td-text-color-secondary);min-height:24px;margin:0;font-size:16px;line-height:1.5}.progress-decoration[data-v-d8b4c962]{opacity:.8;width:80%}.action-area[data-v-d8b4c962]{flex-wrap:wrap;justify-content:center;gap:16px;margin-top:10px;display:flex}.urge-btn[data-v-d8b4c962]{transition:all .2s}.urge-btn[data-v-d8b4c962]:active{transform:scale(.95)}@keyframes breathe-d8b4c962{0%,to{opacity:.2;transform:scale(1)}50%{opacity:.3;transform:scale(1.2)}}.shake-anim[data-v-d8b4c962]{animation:.5s cubic-bezier(.36,.07,.19,.97) both shake-d8b4c962}@keyframes shake-d8b4c962{10%,90%{transform:translate(-1px)rotate(-1deg)}20%,80%{transform:translate(2px)rotate(2deg)}30%,50%,70%{transform:translate(-4px)rotate(-4deg)}40%,60%{transform:translate(4px)rotate(4deg)}}@media (max-width:768px){.image-box[data-v-d8b4c962]{width:150px;height:150px}.main-title[data-v-d8b4c962]{font-size:24px}}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-690d640f]{animation:.5s cubic-bezier(.2,.8,.2,1) backwards slideUp-690d640f}@keyframes slideUp-690d640f{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.custom-scrollbar[data-v-690d640f]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-690d640f]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-690d640f]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-690d640f]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-690d640f]::-webkit-scrollbar-track{background:0 0}[data-v-690d640f] .t-timeline-item__wrapper{margin-left:0!important}[data-v-690d640f] .t-timeline-item__label{display:none!important}.login-form .loading-wrapper[data-v-b95f4e77]{justify-content:center;padding:20px 0;display:flex}.login-form .input-group[data-v-b95f4e77]{flex-direction:column;gap:16px;display:flex}.login-form[data-v-b95f4e77] .t-input{box-shadow:none;background-color:#fff9;border-radius:8px;transition:all .3s}.login-form[data-v-b95f4e77] .t-input:hover,.login-form[data-v-b95f4e77] .t-input:focus-within{background-color:#fffffff2}.login-form .check-container[data-v-b95f4e77]{justify-content:space-between;align-items:center;margin:16px 0 24px;display:flex}.login-form .login-btn[data-v-b95f4e77]{color:#333;background-color:#fff;border:none;border-radius:24px;height:48px;font-size:16px;font-weight:700;transition:transform .2s}.login-form .login-btn[data-v-b95f4e77]:hover{background-color:#f2f2f2;transform:scale(1.02)}.login-form .btn-container[data-v-b95f4e77] .t-form__content{width:100%}.login-form .btn-wrapper[data-v-b95f4e77]{flex-direction:column;width:100%;display:flex}.login-form .msl-login-wrapper[data-v-b95f4e77]{justify-content:center;width:100%;margin-top:20px;display:flex}.login-form .msl-link-btn[data-v-b95f4e77]{color:var(--td-text-color-secondary);cursor:pointer;justify-content:center;align-items:center;padding:4px 0;font-size:14px;transition:all .3s cubic-bezier(.4,0,.2,1);display:inline-flex;position:relative}.login-form .msl-link-btn[data-v-b95f4e77] .t-icon{margin-right:6px;font-size:16px;transition:transform .3s}.login-form .msl-link-btn[data-v-b95f4e77]:after{content:"";background-color:var(--td-brand-color);opacity:0;width:0;height:2px;transition:all .3s ease-in-out;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.login-form .msl-link-btn[data-v-b95f4e77]:hover{color:var(--td-brand-color)}.login-form .msl-link-btn[data-v-b95f4e77]:hover .t-icon{transform:translateY(-1px)}.login-form .msl-link-btn[data-v-b95f4e77]:hover:after{opacity:1;width:100%}.login-form .msl-link-btn[data-v-b95f4e77]:active{opacity:.8;transform:scale(.98)}.light{background-color:var(--td-brand-color);color:#fff}.reset-guide[data-v-b95f4e77]{padding:8px 4px}.reset-guide .guide-item .guide-title[data-v-b95f4e77]{color:var(--td-text-color-primary);align-items:center;gap:8px;margin-bottom:8px;font-size:15px;font-weight:600;display:flex}.reset-guide .guide-item .guide-desc[data-v-b95f4e77]{color:var(--td-text-color-secondary);margin-bottom:8px;font-size:13px;line-height:1.6}.reset-guide .guide-item .code-block[data-v-b95f4e77]{background-color:var(--td-bg-color-secondarycontainer);color:var(--td-brand-color);word-break:break-all;border:1px dashed var(--td-component-border);border-radius:6px;padding:8px 12px;font-family:monospace;font-size:13px}.login-header[data-v-c06bbccc]{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);color:var(--td-text-color-primary);justify-content:space-between;align-items:center;padding:12px 24px;display:flex}.login-header .logo[data-v-c06bbccc]{align-items:center;display:flex}.login-header .logo img[data-v-c06bbccc]{width:32px;margin-right:8px}.login-header .logo span[data-v-c06bbccc]{white-space:nowrap;font-size:18px;font-weight:700}.login-header .operations-container[data-v-c06bbccc]{align-items:center;display:flex}.login-header .operations-container .t-button[data-v-c06bbccc]{margin-left:16px}.login-header .operations-container .icon[data-v-c06bbccc]{box-sizing:content-box;width:20px;height:20px;padding:6px}.login-header .operations-container .icon[data-v-c06bbccc]:hover{cursor:pointer}@keyframes gradient-flow-786dd78b{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes text-shine-786dd78b{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.light.login-wrapper .title-container .title[data-v-786dd78b]{-webkit-text-fill-color:transparent;background:linear-gradient(-45deg,#405bff,#9333ea,#20bdff,#d333ea) 0 0/300% 300%;-webkit-background-clip:text;background-clip:text;animation:8s ease-in-out infinite text-shine-786dd78b}.dark.login-wrapper[data-v-786dd78b] .t-input,.dark.login-wrapper[data-v-786dd78b] .t-textarea,.dark.login-wrapper[data-v-786dd78b] .t-select__single{background-color:#0000004d!important;border-color:#fff3!important}.dark.login-wrapper[data-v-786dd78b] .t-input__inner,.dark.login-wrapper[data-v-786dd78b] .t-textarea__inner{color:var(--td-text-color-primary)!important}.dark.login-wrapper .title-container .title[data-v-786dd78b]{-webkit-text-fill-color:transparent;background:linear-gradient(-45deg,#a7b2ff,#d8b4fe,#89f7fe,#f7b4ff) 0 0/300% 300%;-webkit-background-clip:text;background-clip:text;animation:8s ease-in-out infinite text-shine-786dd78b}.login-wrapper[data-v-786dd78b]{flex-direction:column;min-height:100vh;display:flex;position:relative;overflow:hidden}@media (max-width:768px){.login-wrapper[data-v-786dd78b]{min-height:100vh;overflow-y:auto}}.login-panel[data-v-786dd78b]{flex-grow:1;justify-content:center;align-items:center;padding:40px;display:flex}@media (max-width:768px){.login-panel[data-v-786dd78b]{flex-direction:column;padding:20px}}.login-container[data-v-786dd78b]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-sizing:border-box;border-radius:12px;padding:40px;position:relative;top:auto;left:auto;box-shadow:0 8px 32px #0000001a}@media (max-width:992px){.login-container[data-v-786dd78b]{margin-right:0}}@media (max-width:768px){.login-container[data-v-786dd78b]{width:100%;max-width:400px;margin-top:20px;margin-bottom:20px;padding:32px 24px}}.title-container[data-v-786dd78b]{text-align:center}.title-container .title[data-v-786dd78b]{margin-top:4px;font-size:36px;line-height:44px}.title-container .title.margin-no[data-v-786dd78b]{margin-top:0}.item-container[data-v-786dd78b]{margin-top:48px}.item-container .check-container[data-v-786dd78b]{align-items:center;display:flex}.item-container .check-container.remember-pwd[data-v-786dd78b]{justify-content:space-between;margin-bottom:16px}.item-container .check-container[data-v-786dd78b] .t-checkbox__label{color:var(--td-text-color-secondary)}.item-container .check-container span[data-v-786dd78b]{color:var(--td-brand-color)}.item-container .check-container span[data-v-786dd78b]:hover{cursor:pointer}.item-container .btn-container[data-v-786dd78b]{margin-top:48px}@media (max-width:768px){.item-container[data-v-786dd78b]{width:100%;margin-top:32px}}.copyright[data-v-786dd78b]{text-align:center;color:var(--td-text-color-secondary);margin-top:32px;font-size:14px;position:relative;bottom:auto;left:auto}@media (max-width:768px){.copyright[data-v-786dd78b]{margin-top:20px;padding-bottom:0}}@media (max-width:768px){.tdesign-setting-outside[data-v-786dd78b]{top:60px;right:10px}}.login-wrapper[data-v-786dd78b]{background-position:50%;background-repeat:no-repeat;background-size:cover;background-image:var(--custom-bg-light,url(/assets/jpg/mslx-bg_light_new.CL71WzMj.jpg));justify-content:center;align-items:center;width:100vw;min-height:100vh;transition:all .3s;display:flex;position:relative}.dark.login-wrapper[data-v-786dd78b]{background-image:var(--custom-bg-dark,url(/assets/jpg/mslx-bg_night_new.CfCwUDBl.jpg))!important}.login-container[data-v-786dd78b]{-webkit-backdrop-filter:blur(12px);z-index:10;border:1px solid #ffffff1a;border-radius:16px;flex-direction:column;width:420px;max-width:90%;padding:40px;transition:transform .3s,background .3s;display:flex;box-shadow:0 8px 32px #0003}.title-container[data-v-786dd78b]{text-align:center;margin-bottom:32px}.title-container .title[data-v-786dd78b]{letter-spacing:1px;margin-bottom:8px;font-size:28px;font-weight:600}.title-container .sub-title[data-v-786dd78b]{opacity:.8;margin:0;font-size:16px}.copyright[data-v-786dd78b]{text-align:center;opacity:.6;margin-top:24px;font-size:12px}.light.login-wrapper[data-v-786dd78b]{background-color:#fff3}.light.login-wrapper .login-container[data-v-786dd78b]{background:#ffffffa6;border:1px solid #fff6}.light.login-wrapper .login-container .title[data-v-786dd78b],.light.login-wrapper .login-container .sub-title[data-v-786dd78b],.light.login-wrapper .login-container .copyright[data-v-786dd78b]{color:#333}.dark.login-wrapper[data-v-786dd78b]{background-blend-mode:overlay;background-color:#0003}.dark.login-wrapper .login-container[data-v-786dd78b]{background:#1e1e2880;border:1px solid #ffffff26}.dark.login-wrapper .login-container .title[data-v-786dd78b],.dark.login-wrapper .login-container .sub-title[data-v-786dd78b],.dark.login-wrapper .login-container .copyright[data-v-786dd78b],.dark.login-wrapper[data-v-786dd78b] .t-input,.dark.login-wrapper[data-v-786dd78b] .t-input__inner,.dark.login-wrapper[data-v-786dd78b] .t-icon{color:#fff}.dark.login-wrapper[data-v-786dd78b] .t-input{border:1px solid #ffffff1a;background:#0003!important}.dark.login-wrapper[data-v-786dd78b] .t-input:hover,.dark.login-wrapper[data-v-786dd78b] .t-input:focus-within{border-color:#ffffff4d;background:#0006!important}.tdesign-setting-outside[data-v-786dd78b]{z-index:100;position:fixed;top:20px;right:20px}.login-header-fixed[data-v-786dd78b]{z-index:20;width:100%;position:absolute;top:0;left:0;box-shadow:none!important;background:0 0!important}@media (max-width:768px){.login-container[data-v-786dd78b]{width:100%;margin:20px;padding:30px 20px}.title-container .title[data-v-786dd78b]{font-size:24px}.tdesign-setting-outside[data-v-786dd78b]{top:10px;right:10px}}[data-v-786dd78b] .welcome-dialog{border-radius:16px;overflow:hidden}[data-v-786dd78b] .welcome-dialog .t-dialog__header{padding-top:32px;padding-bottom:0}[data-v-786dd78b] .welcome-dialog .t-dialog__body{padding:24px 32px 32px}.dialog-header-row[data-v-786dd78b]{align-items:center;gap:12px;display:flex}.dialog-header-row .emoji-icon[data-v-786dd78b]{font-size:28px}.dialog-header-row .header-text[data-v-786dd78b]{color:var(--td-text-color-primary);font-size:20px;font-weight:700}.welcome-content .welcome-desc[data-v-786dd78b]{color:var(--td-text-color-secondary);margin-bottom:24px;font-size:14px;line-height:1.6}.welcome-content .account-card[data-v-786dd78b]{background-color:var(--td-bg-color-secondarycontainer);border:1px solid var(--td-component-border);border-radius:8px;margin-bottom:24px;padding:20px}.welcome-content .account-card .info-row[data-v-786dd78b]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.welcome-content .account-card .info-row[data-v-786dd78b]:last-child{margin-bottom:0}.welcome-content .account-card .info-row .label[data-v-786dd78b]{color:var(--td-text-color-secondary);align-items:center;gap:8px;font-size:14px;display:flex}.welcome-content .account-card .info-row .value[data-v-786dd78b]{color:var(--td-text-color-primary);font-weight:600}.welcome-content .account-card .info-row .value.highlight[data-v-786dd78b]{color:var(--td-brand-color);font-size:16px}.welcome-content .account-card .info-row .value.mono[data-v-786dd78b]{opacity:.8;font-family:Consolas,Monaco,monospace;font-size:12px}.welcome-content .security-alert[data-v-786dd78b]{border-radius:8px;margin-bottom:24px}@keyframes gradient-flow-4a099a27{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes text-shine-4a099a27{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.light.login-wrapper .title-container .title[data-v-4a099a27]{-webkit-text-fill-color:transparent;background:linear-gradient(-45deg,#405bff,#9333ea,#20bdff,#d333ea) 0 0/300% 300%;-webkit-background-clip:text;background-clip:text;animation:8s ease-in-out infinite text-shine-4a099a27}.dark.login-wrapper[data-v-4a099a27] .t-input,.dark.login-wrapper[data-v-4a099a27] .t-textarea,.dark.login-wrapper[data-v-4a099a27] .t-select__single{background-color:#0000004d!important;border-color:#fff3!important}.dark.login-wrapper[data-v-4a099a27] .t-input__inner,.dark.login-wrapper[data-v-4a099a27] .t-textarea__inner{color:var(--td-text-color-primary)!important}.dark.login-wrapper .title-container .title[data-v-4a099a27]{-webkit-text-fill-color:transparent;background:linear-gradient(-45deg,#a7b2ff,#d8b4fe,#89f7fe,#f7b4ff) 0 0/300% 300%;-webkit-background-clip:text;background-clip:text;animation:8s ease-in-out infinite text-shine-4a099a27}.login-wrapper[data-v-4a099a27]{flex-direction:column;min-height:100vh;display:flex;position:relative;overflow:hidden}@media (max-width:768px){.login-wrapper[data-v-4a099a27]{min-height:100vh;overflow-y:auto}}.login-panel[data-v-4a099a27]{flex-grow:1;justify-content:center;align-items:center;padding:40px;display:flex}@media (max-width:768px){.login-panel[data-v-4a099a27]{flex-direction:column;padding:20px}}.login-container[data-v-4a099a27]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-sizing:border-box;border-radius:12px;padding:40px;position:relative;top:auto;left:auto;box-shadow:0 8px 32px #0000001a}@media (max-width:992px){.login-container[data-v-4a099a27]{margin-right:0}}@media (max-width:768px){.login-container[data-v-4a099a27]{width:100%;max-width:400px;margin-top:20px;margin-bottom:20px;padding:32px 24px}}.title-container[data-v-4a099a27]{text-align:center}.title-container .title[data-v-4a099a27]{margin-top:4px;font-size:36px;line-height:44px}.title-container .title.margin-no[data-v-4a099a27]{margin-top:0}.item-container[data-v-4a099a27]{margin-top:48px}.item-container .check-container[data-v-4a099a27]{align-items:center;display:flex}.item-container .check-container.remember-pwd[data-v-4a099a27]{justify-content:space-between;margin-bottom:16px}.item-container .check-container[data-v-4a099a27] .t-checkbox__label{color:var(--td-text-color-secondary)}.item-container .check-container span[data-v-4a099a27]{color:var(--td-brand-color)}.item-container .check-container span[data-v-4a099a27]:hover{cursor:pointer}.item-container .btn-container[data-v-4a099a27]{margin-top:48px}@media (max-width:768px){.item-container[data-v-4a099a27]{width:100%;margin-top:32px}}.copyright[data-v-4a099a27]{text-align:center;color:var(--td-text-color-secondary);margin-top:32px;font-size:14px;position:relative;bottom:auto;left:auto}@media (max-width:768px){.copyright[data-v-4a099a27]{margin-top:20px;padding-bottom:0}}@media (max-width:768px){.tdesign-setting-outside[data-v-4a099a27]{top:60px;right:10px}}.login-wrapper[data-v-4a099a27]{background-position:50%;background-repeat:no-repeat;background-size:cover;background-image:var(--custom-bg-light,url(/assets/jpg/mslx-bg_light_new.CL71WzMj.jpg));justify-content:center;align-items:center;width:100vw;min-height:100vh;transition:all .3s;display:flex;position:relative}.dark.login-wrapper[data-v-4a099a27]{background-image:var(--custom-bg-dark,url(/assets/jpg/mslx-bg_night_new.CfCwUDBl.jpg))!important}.login-container[data-v-4a099a27]{-webkit-backdrop-filter:blur(12px);z-index:10;box-sizing:border-box;border:1px solid #ffffff1a;border-radius:16px;flex-direction:column;width:420px;max-width:90%;padding:40px;transition:transform .3s,background .3s;display:flex;box-shadow:0 8px 32px #0003}.login-container .title[data-v-4a099a27]{letter-spacing:1px;margin-bottom:8px;font-size:28px;font-weight:600}.callback-content[data-v-4a099a27]{justify-content:center;align-items:center;width:100%;min-height:220px;display:flex}.status-box[data-v-4a099a27]{text-align:center;flex-direction:column;align-items:center;width:100%;animation:.5s fadeIn-4a099a27;display:flex}.status-box .loading-icon-wrapper[data-v-4a099a27]{margin-bottom:24px;transform:scale(1.2)}.status-box .tip-text[data-v-4a099a27]{color:var(--td-text-color-secondary);font-size:16px}.status-box .status-title[data-v-4a099a27]{margin-top:16px;margin-bottom:8px;font-size:20px;font-weight:600}.status-box .desc[data-v-4a099a27]{color:var(--td-text-color-secondary);margin-bottom:4px;font-size:15px}.status-box .sub-desc[data-v-4a099a27]{color:var(--td-text-color-placeholder);margin-bottom:24px;font-size:13px}.status-box .error-msg-box[data-v-4a099a27]{color:var(--td-error-color);word-break:break-all;background:#ff58581a;border-radius:8px;width:100%;margin:24px 0 32px;padding:12px 16px;font-size:14px;line-height:1.5}.status-box .btn-group[data-v-4a099a27]{width:100%}.status-box .icon-success[data-v-4a099a27]{color:var(--td-success-color);font-size:56px}.status-box .icon-error[data-v-4a099a27]{color:var(--td-error-color);font-size:56px}.login-btn[data-v-4a099a27]{color:#333;background-color:#fff;border:none;border-radius:24px;width:100%;height:48px;font-size:16px;font-weight:700;transition:transform .2s}.login-btn[data-v-4a099a27]:hover{background-color:#f2f2f2;transform:scale(1.02)}.light.login-wrapper[data-v-4a099a27]{background-color:#fff3}.light.login-wrapper .login-container[data-v-4a099a27]{background:#ffffffa6;border:1px solid #fff6}.light.login-wrapper .login-container .title[data-v-4a099a27],.light.login-wrapper .login-container .copyright[data-v-4a099a27],.light.login-wrapper .login-container .status-title[data-v-4a099a27]{color:#333}.light.login-wrapper .login-btn[data-v-4a099a27]{background-color:var(--td-brand-color);color:#fff}.light.login-wrapper .login-btn[data-v-4a099a27]:hover{opacity:.9}.dark.login-wrapper[data-v-4a099a27]{background-blend-mode:overlay;background-color:#0003}.dark.login-wrapper .login-container[data-v-4a099a27]{background:#1e1e2880;border:1px solid #ffffff26}.dark.login-wrapper .login-container .title[data-v-4a099a27],.dark.login-wrapper .login-container .sub-title[data-v-4a099a27],.dark.login-wrapper .login-container .copyright[data-v-4a099a27],.dark.login-wrapper .login-container .status-title[data-v-4a099a27]{color:#fff}.dark.login-wrapper .login-btn[data-v-4a099a27]{color:#000;background-color:#ffffffe6}.login-header-fixed[data-v-4a099a27]{z-index:20;width:100%;position:absolute;top:0;left:0;box-shadow:none!important;background:0 0!important}@keyframes fadeIn-4a099a27{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.login-container[data-v-4a099a27]{width:100%;margin:20px;padding:30px 20px}}.tdesign-setting-outside[data-v-4a099a27]{z-index:100;position:fixed;top:20px;right:20px}@media (max-width:768px){.tdesign-setting-outside[data-v-4a099a27]{top:10px;right:10px}}@reference "@/style/tailwind/index.css";.page-bg[data-v-f8d3a3f9]{background-image:url(/assets/jpg/mslx-bg_light_new.CL71WzMj.jpg)}html[theme-mode=dark],html.dark{background-image:url(/assets/jpg/mslx-bg_night_new.CfCwUDBl.jpg)} +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}[data-v-8a882e36],[data-v-8a882e36]:before,[data-v-8a882e36]:after{--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-duration:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}[data-v-8a882e36]::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-duration:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}[data-v-f46b0d89],[data-v-f46b0d89]:before,[data-v-f46b0d89]:after{--tw-duration:initial;--tw-font-weight:initial}[data-v-f46b0d89]::backdrop{--tw-duration:initial;--tw-font-weight:initial}[data-v-9ac7176f],[data-v-9ac7176f]:before,[data-v-9ac7176f]:after{--tw-duration:initial;--tw-font-weight:initial}[data-v-9ac7176f]::backdrop{--tw-duration:initial;--tw-font-weight:initial}[data-v-4d8c8b99],[data-v-4d8c8b99]:before,[data-v-4d8c8b99]:after{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}[data-v-4d8c8b99]::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}[data-v-beedb160],[data-v-beedb160]:before,[data-v-beedb160]:after{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}[data-v-beedb160]::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:#fef2f2;--color-red-100:#ffe2e2;--color-red-200:#ffcaca;--color-red-300:#ffa3a3;--color-red-400:#ff6568;--color-red-500:#fb2c36;--color-red-600:#e40014;--color-red-700:#bf000f;--color-red-800:#9f0712;--color-red-900:#82181a;--color-red-950:#460809;--color-amber-100:#fef3c6;--color-amber-200:#fee685;--color-amber-300:#ffd236;--color-amber-400:#fcbb00;--color-amber-500:#f99c00;--color-amber-600:#dd7400;--color-amber-700:#b75000;--color-amber-800:#953d00;--color-emerald-50:#ecfdf5;--color-emerald-100:#d0fae5;--color-emerald-200:#a4f4cf;--color-emerald-300:#5ee9b5;--color-emerald-400:#00d294;--color-emerald-500:#00bb7f;--color-emerald-600:#009767;--color-emerald-700:#007956;--color-emerald-800:#005f46;--color-emerald-900:#004e3b;--color-blue-50:#eff6ff;--color-blue-100:#dbeafe;--color-blue-200:#bedbff;--color-blue-300:#90c5ff;--color-blue-400:#54a2ff;--color-blue-500:#3080ff;--color-blue-600:#155dfc;--color-blue-800:#193cb8;--color-blue-900:#1c398e;--color-rose-400:#ff667f;--color-rose-500:#ff2357;--color-rose-600:#e70044;--color-zinc-50:#fafafa;--color-zinc-100:#f4f4f5;--color-zinc-200:#e4e4e7;--color-zinc-300:#d4d4d8;--color-zinc-400:#9f9fa9;--color-zinc-500:#71717b;--color-zinc-600:#52525c;--color-zinc-700:#3f3f46;--color-zinc-800:#27272a;--color-zinc-900:#18181b;--color-zinc-950:#09090b;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--drop-shadow-sm:0 1px 2px #00000026;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-md:12px;--blur-xl:24px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:var(--td-brand-color);--color-primary-hover:var(--td-brand-color-hover);--color-primary-active:var(--td-brand-color-active);--color-primary-light:var(--td-brand-color-light);--color-success:var(--td-success-color);--color-warning:var(--td-warning-color)}@supports (color:color(display-p3 0 0 0)){:root,:host{--color-red-50:color(display-p3 .988669 .951204 .950419);--color-red-100:color(display-p3 .980386 .889727 .887779);--color-red-200:color(display-p3 .969562 .798149 .794299);--color-red-300:color(display-p3 .956922 .651886 .645122);--color-red-400:color(display-p3 .933534 .431676 .423491);--color-red-500:color(display-p3 .903738 .262579 .253307);--color-red-600:color(display-p3 .830323 .140383 .133196);--color-red-700:color(display-p3 .692737 .116232 .104679);--color-red-800:color(display-p3 .569606 .121069 .108493);--color-red-900:color(display-p3 .466906 .133198 .12139);--color-red-950:color(display-p3 .25064 .0550983 .0468818);--color-amber-100:color(display-p3 .989391 .954583 .796328);--color-amber-200:color(display-p3 .979824 .904554 .57325);--color-amber-300:color(display-p3 .974327 .83063 .33298);--color-amber-400:color(display-p3 .959186 .738519 .118268);--color-amber-500:color(display-p3 .93994 .620584 .0585367);--color-amber-600:color(display-p3 .827144 .467166 .0336006);--color-amber-700:color(display-p3 .67989 .32771 .0520514);--color-amber-800:color(display-p3 .547533 .256058 .0728326);--color-emerald-50:color(display-p3 .936818 .989882 .961937);--color-emerald-100:color(display-p3 .848335 .975974 .901691);--color-emerald-200:color(display-p3 .713164 .947563 .822283);--color-emerald-300:color(display-p3 .524941 .903425 .722352);--color-emerald-400:color(display-p3 .334701 .819603 .591575);--color-emerald-500:color(display-p3 .267113 .726847 .508397);--color-emerald-600:color(display-p3 .206557 .589057 .413962);--color-emerald-700:color(display-p3 .164041 .470229 .343508);--color-emerald-800:color(display-p3 .135396 .371401 .277561);--color-emerald-900:color(display-p3 .117821 .302975 .234501);--color-blue-50:color(display-p3 .941826 .963151 .995385);--color-blue-100:color(display-p3 .869214 .915931 .989622);--color-blue-200:color(display-p3 .76688 .855207 .987483);--color-blue-300:color(display-p3 .602559 .767214 .993938);--color-blue-400:color(display-p3 .397443 .62813 .992116);--color-blue-500:color(display-p3 .266422 .491219 .988624);--color-blue-600:color(display-p3 .174493 .358974 .950247);--color-blue-800:color(display-p3 .134023 .230646 .695537);--color-blue-900:color(display-p3 .136395 .219428 .537145);--color-rose-400:color(display-p3 .942928 .430764 .503101);--color-rose-500:color(display-p3 .921824 .240748 .355666);--color-rose-600:color(display-p3 .848792 .102011 .269259);--color-zinc-50:color(display-p3 .980256 .980256 .980256);--color-zinc-100:color(display-p3 .956385 .956385 .959079);--color-zinc-200:color(display-p3 .894477 .894477 .905114);--color-zinc-300:color(display-p3 .831087 .831083 .846819);--color-zinc-400:color(display-p3 .622604 .622563 .659842);--color-zinc-500:color(display-p3 .442983 .442931 .480324);--color-zinc-600:color(display-p3 .321166 .321093 .358668);--color-zinc-700:color(display-p3 .246478 .246448 .273934);--color-zinc-800:color(display-p3 .152895 .152887 .16466);--color-zinc-900:color(display-p3 .0937957 .093793 .104806);--color-zinc-950:color(display-p3 .0353716 .0353595 .0435539)}}@supports (color:lab(0% 0 0)){:root,:host{--color-red-50:lab(96.5005% 4.18508 1.52328);--color-red-100:lab(92.243% 10.2865 3.83865);--color-red-200:lab(86.017% 19.8815 7.75869);--color-red-300:lab(76.5514% 36.422 15.5335);--color-red-400:lab(63.7053% 60.745 31.3109);--color-red-500:lab(55.4814% 75.0732 48.8528);--color-red-600:lab(48.4493% 77.4328 61.5452);--color-red-700:lab(40.4273% 67.2623 53.7441);--color-red-800:lab(33.7174% 55.8993 41.0293);--color-red-900:lab(28.5139% 44.5539 29.0463);--color-red-950:lab(13.003% 29.04 16.7519);--color-amber-100:lab(95.916% -1.21653 23.111);--color-amber-200:lab(91.7203% -.505269 49.9084);--color-amber-300:lab(86.4156% 6.13147 78.3961);--color-amber-400:lab(80.1641% 16.6016 99.2089);--color-amber-500:lab(72.7183% 31.8672 97.9407);--color-amber-600:lab(60.3514% 40.5624 87.1228);--color-amber-700:lab(47.2709% 42.9082 69.2966);--color-amber-800:lab(37.8822% 37.1699 52.2718);--color-emerald-50:lab(97.8462% -6.94966 1.85487);--color-emerald-100:lab(94.9004% -17.0769 5.63836);--color-emerald-200:lab(90.2247% -31.039 9.47084);--color-emerald-300:lab(83.9203% -48.7124 13.8849);--color-emerald-400:lab(75.0771% -60.7313 19.4147);--color-emerald-500:lab(66.9756% -58.27 19.5419);--color-emerald-600:lab(55.0481% -49.9246 15.93);--color-emerald-700:lab(44.4871% -41.0396 11.0361);--color-emerald-800:lab(35.3675% -33.1188 8.04002);--color-emerald-900:lab(28.8637% -26.9249 5.45986);--color-blue-50:lab(96.492% -1.14644 -5.11479);--color-blue-100:lab(92.0301% -2.24757 -11.6453);--color-blue-200:lab(86.15% -4.04379 -21.0797);--color-blue-300:lab(77.5052% -6.4629 -36.42);--color-blue-400:lab(65.0361% -1.42065 -56.9802);--color-blue-500:lab(54.1736% 13.3369 -74.6839);--color-blue-600:lab(44.0605% 29.0279 -86.0352);--color-blue-800:lab(30.2514% 27.7853 -70.2699);--color-blue-900:lab(26.1542% 15.7545 -51.5504);--color-rose-400:lab(64.4125% 63.0291 19.2068);--color-rose-500:lab(56.101% 79.4328 31.4532);--color-rose-600:lab(49.1882% 81.577 36.0311);--color-zinc-50:lab(98.26% 0 0);--color-zinc-100:lab(96.1634% .0993311 -.364041);--color-zinc-200:lab(90.6853% .399232 -1.45452);--color-zinc-300:lab(84.9837% .601262 -2.17986);--color-zinc-400:lab(65.6464% 1.53497 -5.42429);--color-zinc-500:lab(47.8878% 1.65477 -5.77283);--color-zinc-600:lab(35.1166% 1.78212 -6.1173);--color-zinc-700:lab(26.8019% 1.35387 -4.68303);--color-zinc-800:lab(15.7305% .613764 -2.16959);--color-zinc-900:lab(8.30603% .618205 -2.16572);--color-zinc-950:lab(2.51107% .242703 -.886115)}}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::-webkit-file-upload-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::-webkit-file-upload-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:-webkit-any([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:-webkit-any([multiple],[size])) optgroup option{padding-inline-start:20px}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::-webkit-file-upload-button{margin-inline-end:4px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-year-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-month-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-day-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-hour-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-minute-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-second-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-millisecond-field{padding-block-start:0;padding-block-end:0}::-webkit-datetime-edit-meridiem-field{padding-block-start:0;padding-block-end:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button{-webkit-appearance:button;appearance:button}input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.\!absolute{position:absolute!important}.\!relative{position:relative!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--spacing)}.start:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){left:var(--spacing)}.start:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--spacing)}.start:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){right:var(--spacing)}.end:not(:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:var(--spacing)}.end:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:var(--spacing)}.end:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:var(--spacing)}.end:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:var(--spacing)}.\!top-8{top:calc(var(--spacing) * 8)!important}.-top-10{top:calc(var(--spacing) * -10)}.-top-20{top:calc(var(--spacing) * -20)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-4{top:calc(var(--spacing) * 4)}.top-\[38px\]{top:38px}.-right-0\.5{right:calc(var(--spacing) * -.5)}.-right-10{right:calc(var(--spacing) * -10)}.-right-20{right:calc(var(--spacing) * -20)}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.\!bottom-0{bottom:calc(var(--spacing) * 0)!important}.-bottom-0\.5{bottom:calc(var(--spacing) * -.5)}.-bottom-10{bottom:calc(var(--spacing) * -10)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-1{bottom:calc(var(--spacing) * 1)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-\[50px\]{bottom:50px}.\!left-\[15px\]{left:15px!important}.-left-10{left:calc(var(--spacing) * -10)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-4{left:calc(var(--spacing) * 4)}.\!z-10{z-index:10!important}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[500\]{z-index:500}.z-\[501\]{z-index:501}.\!m-0{margin:calc(var(--spacing) * 0)!important}.m-0{margin:calc(var(--spacing) * 0)}.m-auto{margin:auto}.\!mx-1{margin-inline:calc(var(--spacing) * 1)!important}.\!mx-2{margin-inline:calc(var(--spacing) * 2)!important}.\!mx-3{margin-inline:calc(var(--spacing) * 3)!important}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-0\.5{margin-inline:calc(var(--spacing) * .5)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-1\.5{margin-inline:calc(var(--spacing) * 1.5)}.mx-5{margin-inline:calc(var(--spacing) * 5)}.mx-auto{margin-inline-start:auto;margin-inline-end:auto}.\!my-1{margin-block:calc(var(--spacing) * 1)!important}.\!my-2{margin-block:calc(var(--spacing) * 2)!important}.\!my-6{margin-block:calc(var(--spacing) * 6)!important}.my-1{margin-block:calc(var(--spacing) * 1)}.my-6{margin-block:calc(var(--spacing) * 6)}.\!mt-2{margin-top:calc(var(--spacing) * 2)!important}.\!mt-4{margin-top:calc(var(--spacing) * 4)!important}.\!mt-8{margin-top:calc(var(--spacing) * 8)!important}.-mt-\[7px\]{margin-top:-7px}.-mt-\[256px\]{margin-top:-256px}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing) * -1)}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-3{margin-right:calc(var(--spacing) * 3)}.mr-4{margin-right:calc(var(--spacing) * 4)}.\!mb-0{margin-bottom:calc(var(--spacing) * 0)!important}.\!mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)!important}.\!mb-2{margin-bottom:calc(var(--spacing) * 2)!important}.\!mb-4{margin-bottom:calc(var(--spacing) * 4)!important}.\!mb-5{margin-bottom:calc(var(--spacing) * 5)!important}.\!mb-6{margin-bottom:calc(var(--spacing) * 6)!important}.\!mb-8{margin-bottom:calc(var(--spacing) * 8)!important}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\.5{margin-bottom:calc(var(--spacing) * 2.5)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.\!ml-0{margin-left:calc(var(--spacing) * 0)!important}.\!ml-1{margin-left:calc(var(--spacing) * 1)!important}.-ml-\[7px\]{margin-left:-7px}.-ml-\[256px\]{margin-left:-256px}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\!flex{display:flex!important}.\!inline-flex{display:inline-flex!important}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.\!h-5{height:calc(var(--spacing) * 5)!important}.\!h-7{height:calc(var(--spacing) * 7)!important}.\!h-8{height:calc(var(--spacing) * 8)!important}.\!h-10{height:calc(var(--spacing) * 10)!important}.\!h-11{height:calc(var(--spacing) * 11)!important}.\!h-12{height:calc(var(--spacing) * 12)!important}.\!h-\[40px\]{height:40px!important}.\!h-\[44px\]{height:44px!important}.\!h-auto{height:auto!important}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-60{height:calc(var(--spacing) * 60)}.h-64{height:calc(var(--spacing) * 64)}.h-\[3px\]{height:3px}.h-\[14px\]{height:14px}.h-\[38px\]{height:38px}.h-\[50px\]{height:50px}.h-\[64px\]{height:64px}.h-\[65vh\]{height:65vh}.h-\[70vh\]{height:70vh}.h-\[72px\]{height:72px}.h-\[75vh\]{height:75vh}.h-\[100px\]{height:100px}.h-\[512px\]{height:512px}.h-\[580px\]{height:580px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[200px\]{max-height:200px}.max-h-\[260px\]{max-height:260px}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[500px\]{max-height:500px}.max-h-\[calc\(100vh-64px\)\]{max-height:calc(100vh - 64px)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[16px\]{min-height:16px}.min-h-\[22px\]{min-height:22px}.min-h-\[32px\]{min-height:32px}.min-h-\[40px\]{min-height:40px}.min-h-\[50vh\]{min-height:50vh}.min-h-\[70px\]{min-height:70px}.min-h-\[70vh\]{min-height:70vh}.min-h-\[120px\]{min-height:120px}.min-h-\[150px\]{min-height:150px}.min-h-\[200px\]{min-height:200px}.min-h-\[240px\]{min-height:240px}.min-h-\[260px\]{min-height:260px}.min-h-\[400px\]{min-height:400px}.min-h-\[450px\]{min-height:450px}.min-h-\[500px\]{min-height:500px}.min-h-\[600px\]{min-height:600px}.min-h-\[calc\(100vh-100px\)\]{min-height:calc(100vh - 100px)}.min-h-screen{min-height:100vh}.\!w-8{width:calc(var(--spacing) * 8)!important}.\!w-10{width:calc(var(--spacing) * 10)!important}.\!w-20{width:calc(var(--spacing) * 20)!important}.\!w-\[2px\]{width:2px!important}.\!w-\[70px\]{width:70px!important}.\!w-\[90px\]{width:90px!important}.\!w-\[100px\]{width:100px!important}.\!w-auto{width:auto!important}.\!w-full{width:100%!important}.w-1{width:calc(var(--spacing) * 1)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-10{width:calc(var(--spacing) * 10)}.w-11\/12{width:91.6667%}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-40{width:calc(var(--spacing) * 40)}.w-60{width:calc(var(--spacing) * 60)}.w-\[1px\]{width:1px}.w-\[2px\]{width:2px}.w-\[72px\]{width:72px}.w-\[140px\]{width:140px}.w-\[240px\]{width:240px}.w-\[420px\]{width:420px}.w-\[512px\]{width:512px}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.w-screen{width:100vw}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\[90\%\]{max-width:90%}.max-w-\[100px\]{max-width:100px}.max-w-\[140px\]{max-width:140px}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[250px\]{max-width:250px}.max-w-\[calc\(100vw-140px\)\]{max-width:calc(100vw - 140px)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[70px\]{min-width:70px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[200px\]{min-width:200px}.min-w-\[280px\]{min-width:280px}.min-w-\[320px\]{min-width:320px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.\!flex-1{flex:1!important}.\!flex-\[1\.5\]{flex:1.5!important}.flex-1{flex:1}.\!shrink-0{flex-shrink:0!important}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-bottom{transform-origin:bottom}.origin-center{transform-origin:50%}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-2{--tw-translate-y:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.\!scale-110{--tw-scale-x:110%!important;--tw-scale-y:110%!important;--tw-scale-z:110%!important;scale:var(--tw-scale-x) var(--tw-scale-y)!important}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-y-0{--tw-scale-y:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-y-100{--tw-scale-y:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-\[0\.99\]{scale:.99}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[spin_10s_linear_infinite\]{animation:10s linear infinite spin}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-help{cursor:help}.cursor-move{cursor:move}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(55px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(55px,1fr))}.grid-cols-\[repeat\(auto-fill\,minmax\(260px\,1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.\!items-center{align-items:center!important}.\!items-start{align-items:flex-start!important}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.\!justify-center{justify-content:center!important}.\!justify-start{justify-content:flex-start!important}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.\!gap-2\.5{gap:calc(var(--spacing) * 2.5)!important}.\!gap-4{gap:calc(var(--spacing) * 4)!important}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-10{column-gap:calc(var(--spacing) * 10)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-dashed>:not(:last-child)){--tw-border-style:dashed;border-style:dashed}:where(.divide-zinc-200\/60>:not(:last-child)){border-color:#e4e4e799}@supports (color:color-mix(in lab, red, red)){:where(.divide-zinc-200\/60>:not(:last-child)){border-color:color-mix(in oklab, var(--color-zinc-200) 60%, transparent)}}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.\!rounded{border-radius:.25rem!important}.\!rounded-2xl{border-radius:var(--radius-2xl)!important}.\!rounded-full{border-radius:3.40282e38px!important}.\!rounded-lg{border-radius:var(--radius-lg)!important}.\!rounded-md{border-radius:var(--radius-md)!important}.\!rounded-xl{border-radius:var(--radius-xl)!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-3xl{border-radius:var(--radius-3xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[var\(--td-radius-medium\)\]{border-radius:var(--td-radius-medium)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-sm{border-top-left-radius:var(--radius-sm);border-top-right-radius:var(--radius-sm)}.rounded-b-xl{border-bottom-right-radius:var(--radius-xl);border-bottom-left-radius:var(--radius-xl)}.\!border{border-style:var(--tw-border-style)!important;border-width:1px!important}.\!border-2{border-style:var(--tw-border-style)!important;border-width:2px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-start-width:1px;border-block-end-width:1px}.\!border-t{border-top-style:var(--tw-border-style)!important;border-top-width:1px!important}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.\!border-b{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\!border-l{border-left-style:var(--tw-border-style)!important;border-left-width:1px!important}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.\!border-none{--tw-border-style:none!important;border-style:none!important}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.\!border-\[var\(--color-primary\)\],.\!border-\[var\(--color-primary\)\]\/20{border-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.\!border-\[var\(--color-primary\)\]\/20{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)!important}}.\!border-\[var\(--color-primary\)\]\/30{border-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.\!border-\[var\(--color-primary\)\]\/30{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)!important}}.\!border-\[var\(--color-success\)\],.\!border-\[var\(--color-success\)\]\/20{border-color:var(--color-success)!important}@supports (color:color-mix(in lab, red, red)){.\!border-\[var\(--color-success\)\]\/20{border-color:color-mix(in oklab, var(--color-success) 20%, transparent)!important}}.\!border-amber-500\/20{border-color:#f99c0033!important}@supports (color:color-mix(in lab, red, red)){.\!border-amber-500\/20{border-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)!important}}.\!border-amber-500\/30{border-color:#f99c004d!important}@supports (color:color-mix(in lab, red, red)){.\!border-amber-500\/30{border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)!important}}.\!border-blue-100{border-color:var(--color-blue-100)!important}.\!border-red-500\/30{border-color:#fb2c364d!important}@supports (color:color-mix(in lab, red, red)){.\!border-red-500\/30{border-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)!important}}.\!border-transparent{border-color:#0000!important}.\!border-zinc-100{border-color:var(--color-zinc-100)!important}.\!border-zinc-200{border-color:var(--color-zinc-200)!important}.\!border-zinc-200\/50{border-color:#e4e4e780!important}@supports (color:color-mix(in lab, red, red)){.\!border-zinc-200\/50{border-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.\!border-zinc-200\/80{border-color:#e4e4e7cc!important}@supports (color:color-mix(in lab, red, red)){.\!border-zinc-200\/80{border-color:color-mix(in oklab, var(--color-zinc-200) 80%, transparent)!important}}.\!border-zinc-300{border-color:var(--color-zinc-300)!important}.border-\[var\(--color-primary\)\],.border-\[var\(--color-primary\)\]\/20{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-primary\)\]\/20{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.border-\[var\(--color-primary\)\]\/30{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-primary\)\]\/30{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.border-\[var\(--color-primary\)\]\/40{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-primary\)\]\/40{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.border-\[var\(--color-success\)\]\/20{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-success\)\]\/20{border-color:color-mix(in oklab, var(--color-success) 20%, transparent)}}.border-\[var\(--color-success\)\]\/40{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.border-\[var\(--color-success\)\]\/40{border-color:color-mix(in oklab, var(--color-success) 40%, transparent)}}.border-\[var\(--td-component-border\)\]{border-color:var(--td-component-border)}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab, red, red)){.border-amber-500\/20{border-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)}}.border-black\/20{border-color:#0003}@supports (color:color-mix(in lab, red, red)){.border-black\/20{border-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.border-blue-200\/60{border-color:#bedbff99}@supports (color:color-mix(in lab, red, red)){.border-blue-200\/60{border-color:color-mix(in oklab, var(--color-blue-200) 60%, transparent)}}.border-emerald-200{border-color:var(--color-emerald-200)}.border-emerald-200\/50{border-color:#a4f4cf80}@supports (color:color-mix(in lab, red, red)){.border-emerald-200\/50{border-color:color-mix(in oklab, var(--color-emerald-200) 50%, transparent)}}.border-primary\/20{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.border-primary\/20{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)}}.border-red-100{border-color:var(--color-red-100)}.border-red-200{border-color:var(--color-red-200)}.border-red-200\/60{border-color:#ffcaca99}@supports (color:color-mix(in lab, red, red)){.border-red-200\/60{border-color:color-mix(in oklab, var(--color-red-200) 60%, transparent)}}.border-red-200\/80{border-color:#ffcacacc}@supports (color:color-mix(in lab, red, red)){.border-red-200\/80{border-color:color-mix(in oklab, var(--color-red-200) 80%, transparent)}}.border-red-500\/20{border-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.border-red-500\/20{border-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.border-white\/40{border-color:#fff6}@supports (color:color-mix(in lab, red, red)){.border-white\/40{border-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.border-white\/60{border-color:#fff9}@supports (color:color-mix(in lab, red, red)){.border-white\/60{border-color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.border-white\/80{border-color:#fffc}@supports (color:color-mix(in lab, red, red)){.border-white\/80{border-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.border-zinc-100{border-color:var(--color-zinc-100)}.border-zinc-200{border-color:var(--color-zinc-200)}.border-zinc-200\/60{border-color:#e4e4e799}@supports (color:color-mix(in lab, red, red)){.border-zinc-200\/60{border-color:color-mix(in oklab, var(--color-zinc-200) 60%, transparent)}}.border-zinc-200\/70{border-color:#e4e4e7b3}@supports (color:color-mix(in lab, red, red)){.border-zinc-200\/70{border-color:color-mix(in oklab, var(--color-zinc-200) 70%, transparent)}}.border-zinc-200\/80{border-color:#e4e4e7cc}@supports (color:color-mix(in lab, red, red)){.border-zinc-200\/80{border-color:color-mix(in oklab, var(--color-zinc-200) 80%, transparent)}}.border-zinc-300{border-color:var(--color-zinc-300)}.border-zinc-800{border-color:var(--color-zinc-800)}.\!bg-\[var\(--color-primary\)\]\/5{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--color-primary\)\]\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)!important}}.\!bg-\[var\(--color-primary\)\]\/10{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--color-primary\)\]\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.\!bg-\[var\(--color-primary-light\)\]\/15{background-color:var(--color-primary-light)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--color-primary-light\)\]\/15{background-color:color-mix(in oklab, var(--color-primary-light) 15%, transparent)!important}}.\!bg-\[var\(--color-primary-light\)\]\/20{background-color:var(--color-primary-light)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--color-primary-light\)\]\/20{background-color:color-mix(in oklab, var(--color-primary-light) 20%, transparent)!important}}.\!bg-\[var\(--color-success\)\]\/10{background-color:var(--color-success)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--color-success\)\]\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)!important}}.\!bg-\[var\(--td-bg-color-secondarycontainer\)\],.\!bg-\[var\(--td-bg-color-secondarycontainer\)\]\/50{background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){.\!bg-\[var\(--td-bg-color-secondarycontainer\)\]\/50{background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}.\!bg-amber-500\/10{background-color:#f99c001a!important}@supports (color:color-mix(in lab, red, red)){.\!bg-amber-500\/10{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)!important}}.\!bg-blue-50\/50{background-color:#eff6ff80!important}@supports (color:color-mix(in lab, red, red)){.\!bg-blue-50\/50{background-color:color-mix(in oklab, var(--color-blue-50) 50%, transparent)!important}}.\!bg-inherit{background-color:inherit!important}.\!bg-red-500\/10{background-color:#fb2c361a!important}@supports (color:color-mix(in lab, red, red)){.\!bg-red-500\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)!important}}.\!bg-transparent{background-color:#0000!important}.\!bg-white{background-color:var(--color-white)!important}.\!bg-white\/50{background-color:#ffffff80!important}@supports (color:color-mix(in lab, red, red)){.\!bg-white\/50{background-color:color-mix(in oklab, var(--color-white) 50%, transparent)!important}}.\!bg-white\/95{background-color:#fffffff2!important}@supports (color:color-mix(in lab, red, red)){.\!bg-white\/95{background-color:color-mix(in oklab, var(--color-white) 95%, transparent)!important}}.\!bg-zinc-50{background-color:var(--color-zinc-50)!important}.\!bg-zinc-50\/50{background-color:#fafafa80!important}@supports (color:color-mix(in lab, red, red)){.\!bg-zinc-50\/50{background-color:color-mix(in oklab, var(--color-zinc-50) 50%, transparent)!important}}.\!bg-zinc-100{background-color:var(--color-zinc-100)!important}.\!bg-zinc-100\/80{background-color:#f4f4f5cc!important}@supports (color:color-mix(in lab, red, red)){.\!bg-zinc-100\/80{background-color:color-mix(in oklab, var(--color-zinc-100) 80%, transparent)!important}}.\!bg-zinc-200{background-color:var(--color-zinc-200)!important}.bg-\[\#0000000a\]{background-color:#0000000a}.bg-\[\#1e1e1e\]{background-color:#1e1e1e}.bg-\[\#27c93f\]{background-color:#27c93f}.bg-\[\#512bd4\]\/10{background-color:#512bd41a;background-color:color(display-p3 .297411 .175904 .799285/.1);background-color:lab(33.0354% 51.0448 -81.673/.1)}.bg-\[\#ff5f56\]{background-color:#ff5f56}.bg-\[\#ffbd2e\]{background-color:#ffbd2e}.bg-\[var\(--color-primary\)\],.bg-\[var\(--color-primary\)\]\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--color-primary\)\]\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-\[var\(--color-primary\)\]\/10{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--color-primary\)\]\/10{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.bg-\[var\(--color-success\)\],.bg-\[var\(--color-success\)\]\/10{background-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--color-success\)\]\/10{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)}}.bg-\[var\(--color-warning\)\]{background-color:var(--color-warning)}.bg-\[var\(--td-bg-color-container\)\],.bg-\[var\(--td-bg-color-container\)\]\/80{background-color:var(--td-bg-color-container)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--td-bg-color-container\)\]\/80{background-color:color-mix(in oklab, var(--td-bg-color-container) 80%, transparent)}}.bg-\[var\(--td-bg-color-secondarycontainer\)\],.bg-\[var\(--td-bg-color-secondarycontainer\)\]\/70{background-color:var(--td-bg-color-secondarycontainer)}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--td-bg-color-secondarycontainer\)\]\/70{background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 70%, transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab, red, red)){.bg-black\/60{background-color:color-mix(in oklab, var(--color-black) 60%, transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-50\/50{background-color:#ecfdf580}@supports (color:color-mix(in lab, red, red)){.bg-emerald-50\/50{background-color:color-mix(in oklab, var(--color-emerald-50) 50%, transparent)}}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-primary\/5{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.bg-primary\/5{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-50\/50{background-color:#fef2f280}@supports (color:color-mix(in lab, red, red)){.bg-red-50\/50{background-color:color-mix(in oklab, var(--color-red-50) 50%, transparent)}}.bg-red-50\/80{background-color:#fef2f2cc}@supports (color:color-mix(in lab, red, red)){.bg-red-50\/80{background-color:color-mix(in oklab, var(--color-red-50) 80%, transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/5{background-color:color-mix(in oklab, var(--color-red-500) 5%, transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.bg-red-500\/10{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/40{background-color:#fff6}@supports (color:color-mix(in lab, red, red)){.bg-white\/40{background-color:color-mix(in oklab, var(--color-white) 40%, transparent)}}.bg-white\/50{background-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.bg-white\/50{background-color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-white\/60{background-color:color-mix(in oklab, var(--color-white) 60%, transparent)}}.bg-white\/80{background-color:#fffc}@supports (color:color-mix(in lab, red, red)){.bg-white\/80{background-color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.bg-white\/90{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.bg-zinc-50{background-color:var(--color-zinc-50)}.bg-zinc-50\/50{background-color:#fafafa80}@supports (color:color-mix(in lab, red, red)){.bg-zinc-50\/50{background-color:color-mix(in oklab, var(--color-zinc-50) 50%, transparent)}}.bg-zinc-50\/80{background-color:#fafafacc}@supports (color:color-mix(in lab, red, red)){.bg-zinc-50\/80{background-color:color-mix(in oklab, var(--color-zinc-50) 80%, transparent)}}.bg-zinc-100{background-color:var(--color-zinc-100)}.bg-zinc-100\/50{background-color:#f4f4f580}@supports (color:color-mix(in lab, red, red)){.bg-zinc-100\/50{background-color:color-mix(in oklab, var(--color-zinc-100) 50%, transparent)}}.bg-zinc-100\/80{background-color:#f4f4f5cc}@supports (color:color-mix(in lab, red, red)){.bg-zinc-100\/80{background-color:color-mix(in oklab, var(--color-zinc-100) 80%, transparent)}}.bg-zinc-200{background-color:var(--color-zinc-200)}.bg-zinc-200\/50{background-color:#e4e4e780}@supports (color:color-mix(in lab, red, red)){.bg-zinc-200\/50{background-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)}}.bg-zinc-200\/60{background-color:#e4e4e799}@supports (color:color-mix(in lab, red, red)){.bg-zinc-200\/60{background-color:color-mix(in oklab, var(--color-zinc-200) 60%, transparent)}}.bg-zinc-300{background-color:var(--color-zinc-300)}.bg-zinc-400{background-color:var(--color-zinc-400)}.bg-zinc-950{background-color:var(--color-zinc-950)}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-\[\#40a9ff\]{--tw-gradient-from:#40a9ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-\[\#1890ff\]{--tw-gradient-to:#1890ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-cover{background-size:cover}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.\!p-0{padding:calc(var(--spacing) * 0)!important}.\!p-1\.5{padding:calc(var(--spacing) * 1.5)!important}.\!p-4{padding:calc(var(--spacing) * 4)!important}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-10{padding:calc(var(--spacing) * 10)}.p-12{padding:calc(var(--spacing) * 12)}.\!px-0{padding-inline:calc(var(--spacing) * 0)!important}.\!px-1\.5{padding-inline:calc(var(--spacing) * 1.5)!important}.\!px-2{padding-inline:calc(var(--spacing) * 2)!important}.\!px-3{padding-inline:calc(var(--spacing) * 3)!important}.\!px-4{padding-inline:calc(var(--spacing) * 4)!important}.\!px-5{padding-inline:calc(var(--spacing) * 5)!important}.\!px-6{padding-inline:calc(var(--spacing) * 6)!important}.\!px-8{padding-inline:calc(var(--spacing) * 8)!important}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.\!py-1{padding-block:calc(var(--spacing) * 1)!important}.\!py-1\.5{padding-block:calc(var(--spacing) * 1.5)!important}.\!py-3{padding-block:calc(var(--spacing) * 3)!important}.\!py-5{padding-block:calc(var(--spacing) * 5)!important}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-24{padding-block:calc(var(--spacing) * 24)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.\!pr-3{padding-right:calc(var(--spacing) * 3)!important}.pr-0{padding-right:calc(var(--spacing) * 0)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-8{padding-right:calc(var(--spacing) * 8)}.\!pb-4{padding-bottom:calc(var(--spacing) * 4)!important}.\!pb-8{padding-bottom:calc(var(--spacing) * 8)!important}.pb-0{padding-bottom:calc(var(--spacing) * 0)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.\!pl-4{padding-left:calc(var(--spacing) * 4)!important}.\!pl-\[42px\]{padding-left:42px!important}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-4{padding-left:calc(var(--spacing) * 4)}.\!text-center{text-align:center!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.\!font-mono{font-family:var(--font-mono)!important}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.\!text-base{font-size:var(--text-base)!important;line-height:var(--tw-leading,var(--text-base--line-height))!important}.\!text-sm{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}.\!text-xs{font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\!text-\[10px\]{font-size:10px!important}.\!text-\[13\.5px\]{font-size:13.5px!important}.\!text-\[13px\]{font-size:13px!important}.\!text-\[14\.5px\]{font-size:14.5px!important}.\!text-\[14px\]{font-size:14px!important}.\!text-\[16px\]{font-size:16px!important}.\!text-\[20px\]{font-size:20px!important}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[20px\]{font-size:20px}.text-\[24px\]{font-size:24px}.text-\[28px\]{font-size:28px}.text-\[40px\]{font-size:40px}.text-\[72px\]{font-size:72px}.\!leading-none{--tw-leading:1!important;line-height:1!important}.leading-\[1\.6\]{--tw-leading:1.6;line-height:1.6}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.\!font-bold{--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important}.\!font-extrabold{--tw-font-weight:var(--font-weight-extrabold)!important;font-weight:var(--font-weight-extrabold)!important}.\!font-medium{--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important}.\!font-normal{--tw-font-weight:var(--font-weight-normal)!important;font-weight:var(--font-weight-normal)!important}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.3em\]{--tw-tracking:.3em;letter-spacing:.3em}.tracking-\[0\.5px\]{--tw-tracking:.5px;letter-spacing:.5px}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-\[var\(--color-primary\)\]{color:var(--color-primary)!important}.\!text-\[var\(--color-success\)\]{color:var(--color-success)!important}.\!text-\[var\(--td-text-color-primary\)\]{color:var(--td-text-color-primary)!important}.\!text-\[var\(--td-text-color-secondary\)\]{color:var(--td-text-color-secondary)!important}.\!text-amber-600{color:var(--color-amber-600)!important}.\!text-red-500{color:var(--color-red-500)!important}.\!text-zinc-400{color:var(--color-zinc-400)!important}.\!text-zinc-500{color:var(--color-zinc-500)!important}.\!text-zinc-600{color:var(--color-zinc-600)!important}.\!text-zinc-700{color:var(--color-zinc-700)!important}.\!text-zinc-800{color:var(--color-zinc-800)!important}.\!text-zinc-900{color:var(--color-zinc-900)!important}.text-\[\#42b883\]{color:#42b883}.text-\[\#512bd4\]{color:#512bd4}.text-\[\#d4d4d4\]{color:#d4d4d4}.text-\[var\(--color-primary\)\]{color:var(--color-primary)}.text-\[var\(--color-success\)\]{color:var(--color-success)}.text-\[var\(--color-warning\)\]{color:var(--color-warning)}.text-\[var\(--td-text-color-primary\)\]{color:var(--td-text-color-primary)}.text-\[var\(--td-text-color-secondary\)\],.text-\[var\(--td-text-color-secondary\)\]\/60{color:var(--td-text-color-secondary)}@supports (color:color-mix(in lab, red, red)){.text-\[var\(--td-text-color-secondary\)\]\/60{color:color-mix(in oklab, var(--td-text-color-secondary) 60%, transparent)}}.text-amber-500{color:var(--color-amber-500)}.text-amber-500\/80{color:#f99c00cc}@supports (color:color-mix(in lab, red, red)){.text-amber-500\/80{color:color-mix(in oklab, var(--color-amber-500) 80%, transparent)}}.text-amber-600{color:var(--color-amber-600)}.text-amber-600\/80{color:#dd7400cc}@supports (color:color-mix(in lab, red, red)){.text-amber-600\/80{color:color-mix(in oklab, var(--color-amber-600) 80%, transparent)}}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-600\/80{color:#009767cc}@supports (color:color-mix(in lab, red, red)){.text-emerald-600\/80{color:color-mix(in oklab, var(--color-emerald-600) 80%, transparent)}}.text-primary{color:var(--color-primary)}.text-red-500{color:var(--color-red-500)}.text-red-500\/80{color:#fb2c36cc}@supports (color:color-mix(in lab, red, red)){.text-red-500\/80{color:color-mix(in oklab, var(--color-red-500) 80%, transparent)}}.text-red-600{color:var(--color-red-600)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab, red, red)){.text-white\/80{color:color-mix(in oklab, var(--color-white) 80%, transparent)}}.text-zinc-300{color:var(--color-zinc-300)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.text-zinc-700{color:var(--color-zinc-700)}.text-zinc-800{color:var(--color-zinc-800)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.\!opacity-70{opacity:.7!important}.\!opacity-100{opacity:1!important}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow-\[var\(--color-primary\)\]\/20{--tw-shadow-alpha:20%;--tw-shadow:var(--color-primary);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--color-primary\)\]\/30{--tw-shadow-alpha:30%;--tw-shadow:var(--color-primary);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--color-primary-light\)\]\/30{--tw-shadow-alpha:30%;--tw-shadow:var(--color-primary-light);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[var\(--color-primary-light\)\]\/40{--tw-shadow-alpha:40%;--tw-shadow:var(--color-primary-light);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\!shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.\!shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(0\,0\,0\,0\.5\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(16\,185\,129\,0\.8\)\]{--tw-shadow:0 0 6px var(--tw-shadow-color,#10b981cc);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--color-primary\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--color-primary));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--color-primary-light\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--color-primary-light));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--color-success\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--color-success));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_var\(--color-warning\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,var(--color-warning));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_8px_30px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 8px 30px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_8px_32px_0_rgba\(0\,0\,0\,0\.2\)\]{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[1px_0_12px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:1px 0 12px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[2px_0_8px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:2px 0 8px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-black\/10{--tw-shadow-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.shadow-black\/10{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 10%, transparent) var(--tw-shadow-alpha), transparent)}}.ring-\[var\(--color-primary\)\]\/30{--tw-ring-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.ring-\[var\(--color-primary\)\]\/30{--tw-ring-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.ring-blue-500\/20{--tw-ring-color:#3080ff33}@supports (color:color-mix(in lab, red, red)){.ring-blue-500\/20{--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 20%, transparent)}}.ring-white{--tw-ring-color:var(--color-white)}.ring-white\/50{--tw-ring-color:#ffffff80}@supports (color:color-mix(in lab, red, red)){.ring-white\/50{--tw-ring-color:color-mix(in oklab, var(--color-white) 50%, transparent)}}.ring-zinc-100{--tw-ring-color:var(--color-zinc-100)}.ring-zinc-200\/50{--tw-ring-color:#e4e4e780}@supports (color:color-mix(in lab, red, red)){.ring-zinc-200\/50{--tw-ring-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);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,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));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,)}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));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,)}.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,)}.backdrop-blur-\[10px\]{--tw-backdrop-blur:blur(10px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.\!transition-all{transition-property:all!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.\!transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.\!duration-200{--tw-duration:.2s!important;transition-duration:.2s!important}.\!duration-300{--tw-duration:.3s!important;transition-duration:.3s!important}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-\[50ms\]{--tw-duration:50ms;transition-duration:50ms}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\[image-rendering\:pixelated\]{image-rendering:pixelated}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:-rotate-6:is(:where(.group):hover *){rotate:-6deg}.group-hover\:rotate-6:is(:where(.group):hover *){rotate:6deg}.group-hover\:text-\[var\(--color-primary\)\]:is(:where(.group):hover *){color:var(--color-primary)}.group-hover\:text-zinc-700:is(:where(.group):hover *){color:var(--color-zinc-700)}.group-hover\:text-zinc-800:is(:where(.group):hover *){color:var(--color-zinc-800)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:shadow-\[var\(--color-primary\)\]\/20:is(:where(.group):hover *){--tw-shadow-alpha:20%;--tw-shadow:var(--color-primary);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.group-hover\:shadow-xl:is(:where(.group):hover *){--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.placeholder\:text-zinc-400::placeholder{color:var(--color-zinc-400)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:-inset-2\.5:before{content:var(--tw-content);inset:calc(var(--spacing) * -2.5)}.before\:inset-0:before{content:var(--tw-content);inset:calc(var(--spacing) * 0)}.before\:top-0:before{content:var(--tw-content);top:calc(var(--spacing) * 0)}.before\:left-\[6px\]:before{content:var(--tw-content);left:6px}.before\:h-\[14px\]:before{content:var(--tw-content);height:14px}.before\:w-\[2px\]:before{content:var(--tw-content);width:2px}.before\:bg-red-500\/80:before{content:var(--tw-content);background-color:#fb2c36cc}@supports (color:color-mix(in lab, red, red)){.before\:bg-red-500\/80:before{background-color:color-mix(in oklab, var(--color-red-500) 80%, transparent)}}.before\:bg-white\/20:before{content:var(--tw-content);background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.before\:bg-white\/20:before{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.before\:shadow-\[0_0_2px_rgba\(0\,0\,0\,0\.5\)\]:before{content:var(--tw-content);--tw-shadow:0 0 2px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.before\:transition-colors:before{content:var(--tw-content);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:top-\[6px\]:after{content:var(--tw-content);top:6px}.after\:left-0:after{content:var(--tw-content);left:calc(var(--spacing) * 0)}.after\:h-\[2px\]:after{content:var(--tw-content);height:2px}.after\:w-\[14px\]:after{content:var(--tw-content);width:14px}.after\:bg-red-500\/80:after{content:var(--tw-content);background-color:#fb2c36cc}@supports (color:color-mix(in lab, red, red)){.after\:bg-red-500\/80:after{background-color:color-mix(in oklab, var(--color-red-500) 80%, transparent)}}.after\:shadow-\[0_0_2px_rgba\(0\,0\,0\,0\.5\)\]:after{content:var(--tw-content);--tw-shadow:0 0 2px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media (hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:\!border-\[var\(--color-primary\)\]:hover,.hover\:\!border-\[var\(--color-primary\)\]\/50:hover{border-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!border-\[var\(--color-primary\)\]\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)!important}}.hover\:border-\[var\(--color-primary\)\]:hover,.hover\:border-\[var\(--color-primary\)\]\/30:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-\[var\(--color-primary\)\]\/30:hover{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)}}.hover\:border-\[var\(--color-primary\)\]\/40:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-\[var\(--color-primary\)\]\/40:hover{border-color:color-mix(in oklab, var(--color-primary) 40%, transparent)}}.hover\:border-\[var\(--color-primary\)\]\/50:hover{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:border-\[var\(--color-primary\)\]\/50:hover{border-color:color-mix(in oklab, var(--color-primary) 50%, transparent)}}.hover\:border-\[var\(--color-success\)\]\/50:hover{border-color:var(--color-success)}@supports (color:color-mix(in lab, red, red)){.hover\:border-\[var\(--color-success\)\]\/50:hover{border-color:color-mix(in oklab, var(--color-success) 50%, transparent)}}.hover\:border-zinc-200:hover{border-color:var(--color-zinc-200)}.hover\:border-zinc-300:hover{border-color:var(--color-zinc-300)}.hover\:\!bg-\[var\(--color-primary\)\]:hover,.hover\:\!bg-\[var\(--color-primary\)\]\/10:hover{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-\[var\(--color-primary\)\]\/10:hover{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.hover\:\!bg-\[var\(--color-primary\)\]\/20:hover{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-\[var\(--color-primary\)\]\/20:hover{background-color:color-mix(in oklab, var(--color-primary) 20%, transparent)!important}}.hover\:\!bg-\[var\(--color-success\)\]\/10:hover{background-color:var(--color-success)!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-\[var\(--color-success\)\]\/10:hover{background-color:color-mix(in oklab, var(--color-success) 10%, transparent)!important}}.hover\:\!bg-amber-500\/10:hover{background-color:#f99c001a!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-amber-500\/10:hover{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)!important}}.hover\:\!bg-amber-500\/20:hover{background-color:#f99c0033!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-amber-500\/20:hover{background-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)!important}}.hover\:\!bg-emerald-500\/10:hover{background-color:#00bb7f1a!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-emerald-500\/10:hover{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)!important}}.hover\:\!bg-red-50:hover{background-color:var(--color-red-50)!important}.hover\:\!bg-red-500:hover{background-color:var(--color-red-500)!important}.hover\:\!bg-red-500\/10:hover{background-color:#fb2c361a!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-red-500\/10:hover{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)!important}}.hover\:\!bg-red-500\/20:hover{background-color:#fb2c3633!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-red-500\/20:hover{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)!important}}.hover\:\!bg-zinc-100:hover{background-color:var(--color-zinc-100)!important}.hover\:\!bg-zinc-200:hover{background-color:var(--color-zinc-200)!important}.hover\:\!bg-zinc-200\/50:hover{background-color:#e4e4e780!important}@supports (color:color-mix(in lab, red, red)){.hover\:\!bg-zinc-200\/50:hover{background-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.hover\:bg-\[var\(--color-primary\)\]\/5:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[var\(--color-primary\)\]\/5:hover{background-color:color-mix(in oklab, var(--color-primary) 5%, transparent)}}.hover\:bg-\[var\(--color-primary\)\]\/10:hover{background-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-\[var\(--color-primary\)\]\/10:hover{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-zinc-50:hover{background-color:var(--color-zinc-50)}.hover\:bg-zinc-50\/50:hover{background-color:#fafafa80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-zinc-50\/50:hover{background-color:color-mix(in oklab, var(--color-zinc-50) 50%, transparent)}}.hover\:bg-zinc-100:hover{background-color:var(--color-zinc-100)}.hover\:bg-zinc-100\/50:hover{background-color:#f4f4f580}@supports (color:color-mix(in lab, red, red)){.hover\:bg-zinc-100\/50:hover{background-color:color-mix(in oklab, var(--color-zinc-100) 50%, transparent)}}.hover\:bg-zinc-200\/50:hover{background-color:#e4e4e780}@supports (color:color-mix(in lab, red, red)){.hover\:bg-zinc-200\/50:hover{background-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)}}.hover\:\!text-\[var\(--color-primary\)\]:hover{color:var(--color-primary)!important}.hover\:\!text-red-500:hover{color:var(--color-red-500)!important}.hover\:\!text-white:hover{color:var(--color-white)!important}.hover\:\!text-zinc-600:hover{color:var(--color-zinc-600)!important}.hover\:text-\[var\(--color-primary\)\]:hover{color:var(--color-primary)}.hover\:text-zinc-500:hover{color:var(--color-zinc-500)}.hover\:text-zinc-700:hover{color:var(--color-zinc-700)}.hover\:text-zinc-800:hover{color:var(--color-zinc-800)}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-\[var\(--color-primary\)\]\/40:hover{--tw-shadow-alpha:40%;--tw-shadow:var(--color-primary);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[var\(--color-primary-light\)\]\/50:hover{--tw-shadow-alpha:50%;--tw-shadow:var(--color-primary-light);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[var\(--color-primary-light\)\]\/60:hover{--tw-shadow-alpha:60%;--tw-shadow:var(--color-primary-light);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);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,)}}.focus\:border-\[var\(--color-primary\)\]:focus{border-color:var(--color-primary)}.focus\:bg-white:focus{background-color:var(--color-white)}.active\:translate-y-0:active{--tw-translate-y:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:cursor-grabbing:active{cursor:grabbing}.active\:brightness-90:active{--tw-brightness:brightness(90%);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,)}@media not all and (min-width:1012px){.max-\[1012px\]\:hidden{display:none}}@media (min-width:40rem){.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:mb-0{margin-bottom:calc(var(--spacing) * 0)}.sm\:block{display:block}.sm\:min-h-\[40vh\]{min-height:40vh}.sm\:\!w-48{width:calc(var(--spacing) * 48)!important}.sm\:\!w-64{width:calc(var(--spacing) * 64)!important}.sm\:\!w-72{width:calc(var(--spacing) * 72)!important}.sm\:\!w-96{width:calc(var(--spacing) * 96)!important}.sm\:\!w-\[28rem\]{width:28rem!important}.sm\:\!w-\[40rem\]{width:40rem!important}.sm\:\!w-auto{width:auto!important}.sm\:w-72{width:calc(var(--spacing) * 72)}.sm\:w-96{width:calc(var(--spacing) * 96)}.sm\:w-\[28rem\]{width:28rem}.sm\:w-\[32rem\]{width:32rem}.sm\:w-\[40rem\]{width:40rem}.sm\:w-auto{width:auto}.sm\:max-w-\[250px\]{max-width:250px}.sm\:max-w-\[280px\]{max-width:280px}.sm\:max-w-\[300px\]{max-width:300px}.sm\:max-w-\[350px\]{max-width:350px}.sm\:max-w-md{max-width:var(--container-md)}.sm\:\!flex-none{flex:none!important}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:items-start{align-items:flex-start}.sm\:justify-end{justify-content:flex-end}.sm\:justify-start{justify-content:flex-start}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:gap-3{gap:calc(var(--spacing) * 3)}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:self-auto{align-self:auto}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:p-12{padding:calc(var(--spacing) * 12)}.sm\:\!px-10{padding-inline:calc(var(--spacing) * 10)!important}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.sm\:text-\[13px\]{font-size:13px}}@media (min-width:48rem){.md\:top-1\/2{top:50%}.md\:bottom-10{bottom:calc(var(--spacing) * 10)}.md\:left-0{left:calc(var(--spacing) * 0)}.md\:mx-0{margin-inline:calc(var(--spacing) * 0)}.md\:mt-0{margin-top:calc(var(--spacing) * 0)}.md\:mb-0{margin-bottom:calc(var(--spacing) * 0)}.md\:block{display:block}.md\:inline-flex{display:inline-flex}.md\:h-6{height:calc(var(--spacing) * 6)}.md\:h-12{height:calc(var(--spacing) * 12)}.md\:h-\[70vh\]{height:70vh}.md\:h-\[72vh\]{height:72vh}.md\:h-full{height:100%}.md\:min-h-0{min-height:calc(var(--spacing) * 0)}.md\:min-h-\[600px\]{min-height:600px}.md\:w-1{width:calc(var(--spacing) * 1)}.md\:w-40{width:calc(var(--spacing) * 40)}.md\:w-56{width:calc(var(--spacing) * 56)}.md\:w-60{width:calc(var(--spacing) * 60)}.md\:w-64{width:calc(var(--spacing) * 64)}.md\:w-80{width:calc(var(--spacing) * 80)}.md\:w-\[40\%\]{width:40%}.md\:w-\[140px\]{width:140px}.md\:w-\[340px\]{width:340px}.md\:w-auto{width:auto}.md\:w-max{width:max-content}.md\:max-w-\[40\%\]{max-width:40%}.md\:max-w-\[60\%\]{max-width:60%}.md\:max-w-\[400px\]{max-width:400px}.md\:max-w-full{max-width:100%}.md\:flex-1{flex:1}.md\:flex-none{flex:none}.md\:shrink{flex-shrink:1}.md\:translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-col{flex-direction:column}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:items-start{align-items:flex-start}.md\:justify-between{justify-content:space-between}.md\:justify-end{justify-content:flex-end}.md\:justify-start{justify-content:flex-start}.md\:gap-1\.5{gap:calc(var(--spacing) * 1.5)}.md\:gap-2\.5{gap:calc(var(--spacing) * 2.5)}.md\:gap-8{gap:calc(var(--spacing) * 8)}.md\:overflow-hidden{overflow:hidden}.md\:overflow-y-auto{overflow-y:auto}.md\:rounded-xl{border-radius:var(--radius-xl)}.md\:rounded-tl-none{border-top-left-radius:0}.md\:rounded-r-sm{border-top-right-radius:var(--radius-sm);border-bottom-right-radius:var(--radius-sm)}.md\:border{border-style:var(--tw-border-style);border-width:1px}.md\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.md\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:bg-transparent{background-color:#0000}.md\:p-0{padding:calc(var(--spacing) * 0)}.md\:p-3{padding:calc(var(--spacing) * 3)}.md\:p-4{padding:calc(var(--spacing) * 4)}.md\:p-6{padding:calc(var(--spacing) * 6)}.md\:p-12{padding:calc(var(--spacing) * 12)}.md\:px-5{padding-inline:calc(var(--spacing) * 5)}.md\:py-0{padding-block:calc(var(--spacing) * 0)}.md\:py-2{padding-block:calc(var(--spacing) * 2)}.md\:py-4{padding-block:calc(var(--spacing) * 4)}.md\:pt-0{padding-top:calc(var(--spacing) * 0)}.md\:pt-3{padding-top:calc(var(--spacing) * 3)}.md\:pr-0{padding-right:calc(var(--spacing) * 0)}.md\:pr-1{padding-right:calc(var(--spacing) * 1)}.md\:pr-2{padding-right:calc(var(--spacing) * 2)}.md\:pr-8{padding-right:calc(var(--spacing) * 8)}.md\:pb-0{padding-bottom:calc(var(--spacing) * 0)}.md\:pb-12{padding-bottom:calc(var(--spacing) * 12)}.md\:pl-8{padding-left:calc(var(--spacing) * 8)}.md\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-\[96px\]{font-size:96px}}@media (min-width:64rem){.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:mr-6{margin-right:calc(var(--spacing) * 6)}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-72{width:calc(var(--spacing) * 72)}.lg\:w-\[340px\]{width:340px}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:gap-12{gap:calc(var(--spacing) * 12)}}@media (min-width:80rem){.xl\:col-span-4{grid-column:span 4/span 4}.xl\:col-span-8{grid-column:span 8/span 8}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}@media (min-width:96rem){.\32 xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}:where(.dark\:divide-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *)>:not(:last-child)){border-color:#3f3f4699}@supports (color:color-mix(in lab, red, red)){:where(.dark\:divide-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *)>:not(:last-child)){border-color:color-mix(in oklab, var(--color-zinc-700) 60%, transparent)}}.dark\:\!border-blue-800\/30:where([theme-mode=dark],[theme-mode=dark] *){border-color:#193cb84d!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!border-blue-800\/30:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-blue-800) 30%, transparent)!important}}.dark\:\!border-zinc-500:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-500)!important}.dark\:\!border-zinc-700:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-700)!important}.dark\:\!border-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!border-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}.dark\:\!border-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f46cc!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!border-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 80%, transparent)!important}}.dark\:border-blue-800\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:#193cb899}@supports (color:color-mix(in lab, red, red)){.dark\:border-blue-800\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-blue-800) 60%, transparent)}}.dark\:border-emerald-800\/30:where([theme-mode=dark],[theme-mode=dark] *){border-color:#005f464d}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-800\/30:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-emerald-800) 30%, transparent)}}.dark\:border-emerald-800\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:#005f4680}@supports (color:color-mix(in lab, red, red)){.dark\:border-emerald-800\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-emerald-800) 50%, transparent)}}.dark\:border-red-900\/40:where([theme-mode=dark],[theme-mode=dark] *){border-color:#82181a66}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/40:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-red-900) 40%, transparent)}}.dark\:border-red-900\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:#82181a80}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-red-900) 50%, transparent)}}.dark\:border-red-900\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:#82181a99}@supports (color:color-mix(in lab, red, red)){.dark\:border-red-900\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-red-900) 60%, transparent)}}.dark\:border-white\/5:where([theme-mode=dark],[theme-mode=dark] *){border-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/5:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.dark\:border-white\/15:where([theme-mode=dark],[theme-mode=dark] *){border-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/15:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.dark\:border-zinc-700:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-700)}.dark\:border-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}.dark\:border-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4699}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 60%, transparent)}}.dark\:border-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f46cc}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 80%, transparent)}}.dark\:border-zinc-800:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-800)}.dark\:border-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:#27272a80}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-800) 50%, transparent)}}.dark\:border-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:#27272a99}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-800) 60%, transparent)}}.dark\:border-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:#27272acc}@supports (color:color-mix(in lab, red, red)){.dark\:border-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)}}.dark\:\!bg-\[var\(--color-primary\)\]\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-\[var\(--color-primary\)\]\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.dark\:\!bg-\[var\(--color-primary\)\]\/15:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-\[var\(--color-primary\)\]\/15:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 15%, transparent)!important}}.dark\:\!bg-blue-900\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:#1c398e1a!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-blue-900\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-blue-900) 10%, transparent)!important}}.dark\:\!bg-zinc-700:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-700)!important}.dark\:\!bg-zinc-800:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800)!important}.dark\:\!bg-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a80!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 50%, transparent)!important}}.dark\:\!bg-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a99!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 60%, transparent)!important}}.dark\:\!bg-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272acc!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)!important}}.dark\:\!bg-zinc-800\/95:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272af2!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-800\/95:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 95%, transparent)!important}}.dark\:\!bg-zinc-900:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-900)!important}.dark\:\!bg-zinc-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b4d!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 30%, transparent)!important}}.dark\:\!bg-zinc-900\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b80!important}@supports (color:color-mix(in lab, red, red)){.dark\:\!bg-zinc-900\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 50%, transparent)!important}}.dark\:bg-\[\#1e1e28\]\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#1e1e2880;background-color:color(display-p3 .117647 .117647 .153765/.5);background-color:lab(11.6087% 2.08957 -6.78738/.5)}.dark\:bg-blue-500\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:#3080ff1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-500\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-blue-500) 10%, transparent)}}.dark\:bg-blue-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#1c398e33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-blue-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-blue-900) 20%, transparent)}}.dark\:bg-emerald-400:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-emerald-400)}.dark\:bg-emerald-900\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:#004e3b1a}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/10:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-emerald-900) 10%, transparent)}}.dark\:bg-emerald-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#004e3b33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-emerald-900) 20%, transparent)}}.dark\:bg-emerald-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#004e3b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-emerald-900) 30%, transparent)}}.dark\:bg-emerald-900\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:#004e3b66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-emerald-900\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-emerald-900) 40%, transparent)}}.dark\:bg-red-400:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-red-400)}.dark\:bg-red-950\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#46080933}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-red-950) 20%, transparent)}}.dark\:bg-red-950\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#4608094d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-red-950\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-red-950) 30%, transparent)}}.dark\:bg-zinc-600:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-600)}.dark\:bg-zinc-700:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-700)}.dark\:bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}.dark\:bg-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:#3f3f4699}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-700) 60%, transparent)}}.dark\:bg-zinc-800:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800)}.dark\:bg-zinc-800\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 20%, transparent)}}.dark\:bg-zinc-800\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 30%, transparent)}}.dark\:bg-zinc-800\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 40%, transparent)}}.dark\:bg-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 50%, transparent)}}.dark\:bg-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a99}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/60:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 60%, transparent)}}.dark\:bg-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272acc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)}}.dark\:bg-zinc-800\/90:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272ae6}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-800\/90:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 90%, transparent)}}.dark\:bg-zinc-900:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-900)}.dark\:bg-zinc-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 20%, transparent)}}.dark\:bg-zinc-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 30%, transparent)}}.dark\:bg-zinc-900\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/40:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 40%, transparent)}}.dark\:bg-zinc-900\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b80}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/50:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 50%, transparent)}}.dark\:bg-zinc-900\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181bcc}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-900\/80:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 80%, transparent)}}.dark\:bg-zinc-950:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-950)}.dark\:bg-zinc-950\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:#09090b33}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-950\/20:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-950) 20%, transparent)}}.dark\:bg-zinc-950\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:#09090b4d}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-950\/30:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-950) 30%, transparent)}}.dark\:from-\[\#69c0ff\]:where([theme-mode=dark],[theme-mode=dark] *){--tw-gradient-from:#69c0ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:to-\[\#40a9ff\]:where([theme-mode=dark],[theme-mode=dark] *){--tw-gradient-to:#40a9ff;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.dark\:\!text-amber-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-400)!important}.dark\:\!text-zinc-200:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200)!important}.dark\:\!text-zinc-300:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)!important}.dark\:\!text-zinc-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}.dark\:\!text-zinc-500:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-500)!important}.dark\:text-\[\#42b883\]:where([theme-mode=dark],[theme-mode=dark] *){color:#42b883}.dark\:text-\[\#a084fb\]:where([theme-mode=dark],[theme-mode=dark] *){color:#a084fb}.dark\:text-amber-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-400)}.dark\:text-amber-500:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-500)}.dark\:text-amber-500\/70:where([theme-mode=dark],[theme-mode=dark] *){color:#f99c00b3}@supports (color:color-mix(in lab, red, red)){.dark\:text-amber-500\/70:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-amber-500) 70%, transparent)}}.dark\:text-amber-500\/80:where([theme-mode=dark],[theme-mode=dark] *){color:#f99c00cc}@supports (color:color-mix(in lab, red, red)){.dark\:text-amber-500\/80:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-amber-500) 80%, transparent)}}.dark\:text-blue-300:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-blue-300)}.dark\:text-blue-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-blue-400)}.dark\:text-emerald-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-emerald-400)}.dark\:text-emerald-500\/80:where([theme-mode=dark],[theme-mode=dark] *){color:#00bb7fcc}@supports (color:color-mix(in lab, red, red)){.dark\:text-emerald-500\/80:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-emerald-500) 80%, transparent)}}.dark\:text-red-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-red-400)}.dark\:text-white:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-white)}.dark\:text-zinc-100:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100)}.dark\:text-zinc-200:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200)}.dark\:text-zinc-300:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)}.dark\:text-zinc-300\/80:where([theme-mode=dark],[theme-mode=dark] *){color:#d4d4d8cc}@supports (color:color-mix(in lab, red, red)){.dark\:text-zinc-300\/80:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-zinc-300) 80%, transparent)}}.dark\:text-zinc-400:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)}.dark\:text-zinc-600:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-600)}.dark\:shadow-none:where([theme-mode=dark],[theme-mode=dark] *){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.dark\:shadow-black\/40:where([theme-mode=dark],[theme-mode=dark] *){--tw-shadow-color:#0006}@supports (color:color-mix(in lab, red, red)){.dark\:shadow-black\/40:where([theme-mode=dark],[theme-mode=dark] *){--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.dark\:ring-blue-500\/30:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:#3080ff4d}@supports (color:color-mix(in lab, red, red)){.dark\:ring-blue-500\/30:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 30%, transparent)}}.dark\:ring-zinc-700:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:var(--color-zinc-700)}.dark\:ring-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.dark\:ring-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}.dark\:ring-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:#3f3f46cc}@supports (color:color-mix(in lab, red, red)){.dark\:ring-zinc-700\/80:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700) 80%, transparent)}}.dark\:ring-zinc-800:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:var(--color-zinc-800)}@media (hover:hover){.dark\:group-hover\:text-zinc-200:where([theme-mode=dark],[theme-mode=dark] *):is(:where(.group):hover *){color:var(--color-zinc-200)}}.dark\:placeholder\:text-zinc-500:where([theme-mode=dark],[theme-mode=dark] *)::placeholder{color:var(--color-zinc-500)}.dark\:before\:bg-black\/40:where([theme-mode=dark],[theme-mode=dark] *):before{content:var(--tw-content);background-color:#0006}@supports (color:color-mix(in lab, red, red)){.dark\:before\:bg-black\/40:where([theme-mode=dark],[theme-mode=dark] *):before{background-color:color-mix(in oklab, var(--color-black) 40%, transparent)}}@media (hover:hover){.dark\:hover\:border-zinc-500:where([theme-mode=dark],[theme-mode=dark] *):hover{border-color:var(--color-zinc-500)}.dark\:hover\:border-zinc-600:where([theme-mode=dark],[theme-mode=dark] *):hover{border-color:var(--color-zinc-600)}.dark\:hover\:\!bg-red-500\/10:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#fb2c361a!important}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:\!bg-red-500\/10:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)!important}}.dark\:hover\:\!bg-red-900\/20:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#82181a33!important}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:\!bg-red-900\/20:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-red-900) 20%, transparent)!important}}.dark\:hover\:\!bg-zinc-700:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-700)!important}.dark\:hover\:\!bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:\!bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}.dark\:hover\:\!bg-zinc-800:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-800)!important}.dark\:hover\:bg-red-500\/10:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-red-500\/10:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.dark\:hover\:bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-zinc-700\/50:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}.dark\:hover\:bg-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#3f3f4699}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-zinc-700\/60:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-zinc-700) 60%, transparent)}}.dark\:hover\:bg-zinc-800:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-800)}.dark\:hover\:bg-zinc-800\/20:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#27272a33}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-zinc-800\/20:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-zinc-800) 20%, transparent)}}.dark\:hover\:bg-zinc-800\/40:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#27272a66}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-zinc-800\/40:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-zinc-800) 40%, transparent)}}.dark\:hover\:\!text-zinc-300:where([theme-mode=dark],[theme-mode=dark] *):hover{color:var(--color-zinc-300)!important}.dark\:hover\:text-zinc-200:where([theme-mode=dark],[theme-mode=dark] *):hover{color:var(--color-zinc-200)}.dark\:hover\:text-zinc-300:where([theme-mode=dark],[theme-mode=dark] *):hover{color:var(--color-zinc-300)}}.dark\:focus\:bg-zinc-900:where([theme-mode=dark],[theme-mode=dark] *):focus{background-color:var(--color-zinc-900)}.\[\&_\.t-form__item\]\:\!mb-5 .t-form item{margin-bottom:calc(var(--spacing) * 5)!important}.\[\&_\.t-form__item\]\:\!mb-6 .t-form item{margin-bottom:calc(var(--spacing) * 6)!important}.\[\&_\.t-form__item\]\:\!mb-\[22px\] .t-form item{margin-bottom:22px!important}.\[\&_\.t-input__inner\]\:\!font-mono .t-input inner{font-family:var(--font-mono)!important}.\[\&_\.t-input__inner\]\:\!text-\[15px\] .t-input inner{font-size:15px!important}.\[\&_\.t-table\]\:\!border-t-0 .t-table,.\[\&_\.t-table\\_\\_header\]\:\!border-t-0 .t-table__header,.\[\&_\.t-table\\_\\_header\>tr\>th\]\:\!border-t-0 .t-table__header>tr>th{border-top-style:var(--tw-border-style)!important;border-top-width:0!important}.\[\&_textarea\]\:\!h-full textarea{height:100%!important}.\[\&_textarea\]\:\!resize-none textarea{resize:none!important}}.t-tag{border-style:var(--tw-border-style);padding-inline:calc(var(--spacing) * 2.5);padding-block:calc(var(--spacing) * .5);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold);--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight);--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));-webkit-user-select:none;user-select:none;border-width:1px;align-items:center;display:flex}.t-tag:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.t-tag{border-radius:var(--td-radius-default,8px)!important}.t-tag--round{border-radius:3.40282e38px!important}.t-tag--primary,.t-tag.t-tag--primary{border-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.t-tag--primary,.t-tag.t-tag--primary{border-color:color-mix(in oklab, var(--color-primary) 20%, transparent)!important}}.t-tag--primary,.t-tag.t-tag--primary{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.t-tag--primary,.t-tag.t-tag--primary{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.t-tag--primary,.t-tag.t-tag--primary{color:var(--color-primary)!important}.t-tag--success,.t-tag.t-tag--success{border-color:#00bb7f33!important}@supports (color:color-mix(in lab, red, red)){.t-tag--success,.t-tag.t-tag--success{border-color:color-mix(in oklab, var(--color-emerald-500) 20%, transparent)!important}}.t-tag--success,.t-tag.t-tag--success{background-color:#00bb7f1a!important}@supports (color:color-mix(in lab, red, red)){.t-tag--success,.t-tag.t-tag--success{background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)!important}}.t-tag--success,.t-tag.t-tag--success{color:var(--color-emerald-600)!important}:-webkit-any(.t-tag--success,.t-tag.t-tag--success):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-emerald-400)!important}:is(.t-tag--success,.t-tag.t-tag--success):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-emerald-400)!important}.t-tag--warning,.t-tag.t-tag--warning{border-color:#f99c0033!important}@supports (color:color-mix(in lab, red, red)){.t-tag--warning,.t-tag.t-tag--warning{border-color:color-mix(in oklab, var(--color-amber-500) 20%, transparent)!important}}.t-tag--warning,.t-tag.t-tag--warning{background-color:#f99c001a!important}@supports (color:color-mix(in lab, red, red)){.t-tag--warning,.t-tag.t-tag--warning{background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)!important}}.t-tag--warning,.t-tag.t-tag--warning{color:var(--color-amber-600)!important}:-webkit-any(.t-tag--warning,.t-tag.t-tag--warning):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-400)!important}:is(.t-tag--warning,.t-tag.t-tag--warning):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-400)!important}.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error{border-color:#ff235733!important}@supports (color:color-mix(in lab, red, red)){.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error{border-color:color-mix(in oklab, var(--color-rose-500) 20%, transparent)!important}}.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error{background-color:#ff23571a!important}@supports (color:color-mix(in lab, red, red)){.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error{background-color:color-mix(in oklab, var(--color-rose-500) 10%, transparent)!important}}.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error{color:var(--color-rose-600)!important}:-webkit-any(.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-rose-400)!important}:is(.t-tag--danger,.t-tag--error,.t-tag.t-tag--danger,.t-tag.t-tag--error):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-rose-400)!important}.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info{border-color:#e4e4e7cc!important}@supports (color:color-mix(in lab, red, red)){.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info{border-color:color-mix(in oklab, var(--color-zinc-200) 80%, transparent)!important}}.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info{background-color:#f4f4f5cc!important}@supports (color:color-mix(in lab, red, red)){.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info{background-color:color-mix(in oklab, var(--color-zinc-100) 80%, transparent)!important}}.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info{color:var(--color-zinc-600)!important}:-webkit-any(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}:is(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}:is(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}:-webkit-any(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a99!important}:is(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a99!important}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 60%, transparent)!important}:is(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 60%, transparent)!important}}:-webkit-any(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}:is(.t-tag--default,.t-tag--info,.t-tag.t-tag--default,.t-tag.t-tag--info):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}.t-tag--light,.t-tag--outline,.t-tag--dark{color:inherit!important;background-color:#0000!important;border-color:#0000!important}.t-tag .t-icon,.t-tag .t-tag__icon{margin-right:calc(var(--spacing) * 1);opacity:.8;font-size:1.1em}.t-alert{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s;align-items:flex-start!important;gap:calc(var(--spacing) * 3)!important;border-radius:var(--radius-xl)!important;border-style:var(--tw-border-style)!important;padding:calc(var(--spacing) * 4)!important;border-width:1px!important;display:flex!important}.t-alert__icon{margin:calc(var(--spacing) * 0)!important;margin-top:calc(var(--spacing) * .5)!important;font-size:var(--text-xl)!important;line-height:var(--tw-leading,var(--text-xl--line-height))!important;flex-shrink:0!important}.t-alert__content{margin:calc(var(--spacing) * 0)!important;padding:calc(var(--spacing) * 0)!important;flex:1!important}.t-alert__title{margin-bottom:calc(var(--spacing) * 1)!important;font-size:var(--text-base)!important;line-height:var(--tw-leading,var(--text-base--line-height))!important;--tw-leading:1!important;--tw-font-weight:var(--font-weight-bold)!important;line-height:1!important;font-weight:var(--font-weight-bold)!important}.t-alert__message,.t-alert__description{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;--tw-leading:var(--leading-relaxed)!important;line-height:var(--leading-relaxed)!important;--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important}.t-alert__operation{margin-top:calc(var(--spacing) * 2)!important}@media (min-width:40rem){.t-alert__operation{margin-top:calc(var(--spacing) * 0)!important}}.t-alert--warning{border-color:#fee685cc!important}@supports (color:color-mix(in lab, red, red)){.t-alert--warning{border-color:color-mix(in oklab, var(--color-amber-200) 80%, transparent)!important}}.t-alert--warning{background-color:#fef3c680!important}@supports (color:color-mix(in lab, red, red)){.t-alert--warning{background-color:color-mix(in oklab, var(--color-amber-100) 50%, transparent)!important}}.t-alert--warning:where([theme-mode=dark],[theme-mode=dark] *){border-color:#f99c004d!important}@supports (color:color-mix(in lab, red, red)){.t-alert--warning:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-amber-500) 30%, transparent)!important}}.t-alert--warning:where([theme-mode=dark],[theme-mode=dark] *){background-color:#f99c001a!important}@supports (color:color-mix(in lab, red, red)){.t-alert--warning:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-amber-500) 10%, transparent)!important}}.t-alert--warning .t-alert__icon{color:var(--color-amber-500)!important}.t-alert--warning .t-alert__title{color:var(--color-amber-800)!important}.t-alert--warning .t-alert__title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-amber-400)!important}.t-alert--warning .t-alert__message{color:var(--color-amber-700)!important}.t-alert--warning .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:#ffd236cc!important}@supports (color:color-mix(in lab, red, red)){.t-alert--warning .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-amber-300) 80%, transparent)!important}}.t-alert--info{border-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.t-alert--info{border-color:color-mix(in oklab, var(--color-primary) 30%, transparent)!important}}.t-alert--info{background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.t-alert--info{background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.t-alert--info:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.t-alert--info:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}.t-alert--info .t-alert__icon{color:var(--color-primary)!important}.t-alert--info .t-alert__title{color:var(--color-zinc-900)!important}.t-alert--info .t-alert__title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100)!important}.t-alert--info .t-alert__message{color:var(--color-zinc-700)!important}.t-alert--info .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:#d4d4d8e6!important}@supports (color:color-mix(in lab, red, red)){.t-alert--info .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-zinc-300) 90%, transparent)!important}}.t-alert--success{border-color:#00bb7f4d!important}@supports (color:color-mix(in lab, red, red)){.t-alert--success{border-color:color-mix(in oklab, var(--color-emerald-500) 30%, transparent)!important}}.t-alert--success{background-color:#d0fae580!important}@supports (color:color-mix(in lab, red, red)){.t-alert--success{background-color:color-mix(in oklab, var(--color-emerald-100) 50%, transparent)!important}}.t-alert--success:where([theme-mode=dark],[theme-mode=dark] *){background-color:#00bb7f1a!important}@supports (color:color-mix(in lab, red, red)){.t-alert--success:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-emerald-500) 10%, transparent)!important}}.t-alert--success .t-alert__icon{color:var(--color-emerald-500)!important}.t-alert--success .t-alert__title{color:var(--color-emerald-800)!important}.t-alert--success .t-alert__title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-emerald-400)!important}.t-alert--success .t-alert__message{color:var(--color-emerald-700)!important}.t-alert--success .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:#5ee9b5cc!important}@supports (color:color-mix(in lab, red, red)){.t-alert--success .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-emerald-300) 80%, transparent)!important}}.t-alert--error{border-color:#fb2c364d!important}@supports (color:color-mix(in lab, red, red)){.t-alert--error{border-color:color-mix(in oklab, var(--color-red-500) 30%, transparent)!important}}.t-alert--error{background-color:#ffe2e280!important}@supports (color:color-mix(in lab, red, red)){.t-alert--error{background-color:color-mix(in oklab, var(--color-red-100) 50%, transparent)!important}}.t-alert--error:where([theme-mode=dark],[theme-mode=dark] *){background-color:#fb2c361a!important}@supports (color:color-mix(in lab, red, red)){.t-alert--error:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)!important}}.t-alert--error .t-alert__icon{color:var(--color-red-500)!important}.t-alert--error .t-alert__title{color:var(--color-red-800)!important}.t-alert--error .t-alert__title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-red-400)!important}.t-alert--error .t-alert__message{color:var(--color-red-700)!important}.t-alert--error .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:#ffa3a3cc!important}@supports (color:color-mix(in lab, red, red)){.t-alert--error .t-alert__message:where([theme-mode=dark],[theme-mode=dark] *){color:color-mix(in oklab, var(--color-red-300) 80%, transparent)!important}}.t-popup__content.t-dropdown{--tw-border-style:none!important;padding:calc(var(--spacing) * 0)!important;--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;background-color:#0000!important;border-style:none!important;border-radius:0!important}.t-dropdown__menu,.t-menu__popup{border-radius:var(--radius-2xl)!important;border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:#e4e4e780!important;overflow:hidden!important}@supports (color:color-mix(in lab, red, red)){.t-dropdown__menu,.t-menu__popup{border-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.t-dropdown__menu,.t-menu__popup{background-color:#ffffffe6!important}@supports (color:color-mix(in lab, red, red)){.t-dropdown__menu,.t-menu__popup{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)!important}}.t-dropdown__menu,.t-menu__popup{padding:calc(var(--spacing) * 2)!important;--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;--tw-backdrop-blur:blur(var(--blur-md))!important;-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)!important;backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)!important}:-webkit-any(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}:is(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}:is(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}:-webkit-any(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272ae6!important}:is(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272ae6!important}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 90%, transparent)!important}:is(.t-dropdown__menu,.t-menu__popup):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 90%, transparent)!important}}.t-dropdown__menu,.t-menu__popup{box-shadow:0 10px 30px -10px #0000001a!important}html[theme-mode=dark] .t-dropdown__menu,html[theme-mode=dark] .t-menu__popup{box-shadow:0 10px 30px -10px #00000080!important}.t-dropdown__item{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));margin-bottom:calc(var(--spacing) * 1)!important;border-radius:var(--radius-xl)!important;padding-inline:calc(var(--spacing) * 4)!important;padding-block:calc(var(--spacing) * 2.5)!important;font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important;color:var(--color-zinc-700)!important}.t-dropdown__item:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)!important}.t-dropdown__item{white-space:nowrap!important;min-width:120px!important;max-width:none!important}.t-dropdown__item:last-child{margin-bottom:calc(var(--spacing) * 0)!important}.t-dropdown__item:hover{background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){.t-dropdown__item:hover{background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}.t-dropdown__item:hover{color:var(--color-zinc-900)!important}.t-dropdown__item:hover:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-white)!important}.danger-item:hover{background-color:var(--color-red-50)!important;color:var(--color-red-600)!important}.danger-item:hover:where([theme-mode=dark],[theme-mode=dark] *){background-color:#fb2c361a!important}@supports (color:color-mix(in lab, red, red)){.danger-item:hover:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)!important}}.danger-item:hover:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-red-400)!important}.t-dropdown__item .t-dropdown__item__content,.t-dropdown__item .t-dropdown__item-text{align-items:center;gap:calc(var(--spacing) * 2);width:100%;display:flex}.t-tooltip--default .t-popup__content{border-radius:var(--radius-lg)!important;--tw-border-style:none!important;background-color:var(--color-zinc-800)!important;padding-inline:calc(var(--spacing) * 3)!important;padding-block:calc(var(--spacing) * 1.5)!important;font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important;--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important;color:var(--color-white)!important;border-style:none!important}.t-tooltip--default .t-popup__content:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-700)!important}.t-tooltip--default .t-popup__content{box-shadow:0 4px 6px -1px #0000001a!important}.t-tooltip--default .t-popup__arrow{background-color:#27272a!important;border:none!important}html[theme-mode=dark] .t-tooltip--default .t-popup__arrow{background-color:#3f3f46!important}.t-popup__content:has(.t-popconfirm__content){--tw-border-style:none!important;padding:calc(var(--spacing) * 0)!important;--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;background-color:#0000!important;border-style:none!important}.t-popconfirm__content{border-radius:var(--radius-2xl)!important;border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:#e4e4e780!important;min-width:240px!important;max-width:300px!important}@supports (color:color-mix(in lab, red, red)){.t-popconfirm__content{border-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.t-popconfirm__content{background-color:#fffffff2!important}@supports (color:color-mix(in lab, red, red)){.t-popconfirm__content{background-color:color-mix(in oklab, var(--color-white) 95%, transparent)!important}}.t-popconfirm__content{padding:calc(var(--spacing) * 5)!important;--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;--tw-backdrop-blur:blur(var(--blur-md))!important;-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)!important;backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)!important}.t-popconfirm__content:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){.t-popconfirm__content:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}.t-popconfirm__content:where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272af2!important}@supports (color:color-mix(in lab, red, red)){.t-popconfirm__content:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 95%, transparent)!important}}.t-popconfirm__body{margin-bottom:calc(var(--spacing) * 5)!important;align-items:flex-start!important;gap:calc(var(--spacing) * 3)!important;display:flex!important}.t-popconfirm__icon--default{margin-top:calc(var(--spacing) * .5)!important;color:var(--color-blue-500)!important;flex-shrink:0!important;font-size:20px!important}.t-popconfirm__icon--default:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-blue-400)!important}.t-popconfirm__inner{font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;--tw-leading:var(--leading-relaxed)!important;line-height:var(--leading-relaxed)!important;--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important;color:var(--color-zinc-800)!important}.t-popconfirm__inner:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200)!important}.t-popconfirm__buttons{justify-content:flex-end!important;align-items:center!important;gap:calc(var(--spacing) * 2)!important;width:100%!important;padding:calc(var(--spacing) * 0)!important;flex-direction:row!important;display:flex!important}.t-popconfirm__buttons .t-button{--tw-border-style:none;transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-style:none;height:calc(var(--spacing) * 8)!important;border-radius:var(--radius-xl)!important;padding-inline:calc(var(--spacing) * 4)!important;font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important;--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important}.t-popconfirm__cancel{background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){.t-popconfirm__cancel{background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}.t-popconfirm__cancel{color:var(--color-zinc-500)!important}@media (hover:hover){.t-popconfirm__cancel:hover{background-color:var(--color-zinc-200)!important}}.t-popconfirm__cancel:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}@media (hover:hover){.t-popconfirm__cancel:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-600)!important}}.t-popconfirm__confirm{--tw-shadow-alpha:20%;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);background-color:var(--color-primary)!important;color:var(--color-white)!important}@media (hover:hover){.t-popconfirm__confirm:hover{opacity:.9}}.t-popconfirm .t-popup__arrow{background-color:#fff!important}html[theme-mode=dark] .t-popconfirm .t-popup__arrow{background-color:#27272a!important}.t-popconfirm__buttons button{flex:none!important;width:auto!important}.t-popup__content:has(.t-popconfirm__content) .t-popup__arrow{background-color:#fff!important;border:none!important}html[theme-mode=dark] .t-popup__content:has(.t-popconfirm__content) .t-popup__arrow{background-color:#27272a!important}.t-button{cursor:pointer;justify-content:center;align-items:center;gap:calc(var(--spacing) * 1.5);border-radius:var(--radius-xl);border-style:var(--tw-border-style);--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-width:0;display:flex}.t-button:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.t-button--variant-base.t-button--theme-primary{background-color:var(--color-primary);color:var(--color-white)}@media (hover:hover){.t-button--variant-base.t-button--theme-primary:hover{background-color:var(--color-primary-hover)}}.t-button--variant-base.t-button--theme-primary:active{background-color:var(--color-primary-active)}.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline{background-color:var(--color-zinc-100);color:var(--color-zinc-700);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--color-zinc-200);--tw-ring-inset:inset}@media (hover:hover){:-webkit-any(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):hover{background-color:var(--color-zinc-200)}:is(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):hover{background-color:var(--color-zinc-200)}}:-webkit-any(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800);color:var(--color-zinc-200);--tw-ring-color:#3f3f4680}:is(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800);color:var(--color-zinc-200);--tw-ring-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}:is(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}@media (hover:hover){:-webkit-any(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-700)}:is(.t-button--variant-dashed.t-button--theme-primary,.t-button--variant-outline):where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-700)}}.t-button--theme-danger{background-color:var(--color-red-50);color:var(--color-red-600)}@media (hover:hover){.t-button--theme-danger:hover{background-color:var(--color-red-100)}}.t-button--theme-danger:where([theme-mode=dark],[theme-mode=dark] *){background-color:#fb2c361a}@supports (color:color-mix(in lab, red, red)){.t-button--theme-danger:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-red-500) 10%, transparent)}}.t-button--theme-danger:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-red-400)}@media (hover:hover){.t-button--theme-danger:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:#fb2c3633}@supports (color:color-mix(in lab, red, red)){.t-button--theme-danger:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:color-mix(in oklab, var(--color-red-500) 20%, transparent)}}}.t-button--variant-text{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);background-color:#0000}@media (hover:hover){.t-button--variant-text:hover{background-color:var(--color-zinc-100)}}.t-button--variant-text:active{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}@media (hover:hover){.t-button--variant-text:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-800)}}.t-dialog{border-radius:var(--radius-2xl)!important;border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:var(--color-zinc-200)!important;background-color:var(--color-white)!important;padding:calc(var(--spacing) * 0)!important;--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;overflow:hidden!important}.t-dialog:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-800)!important;background-color:var(--color-zinc-900)!important}.t-dialog__header{margin:calc(var(--spacing) * 0)!important;border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important;border-color:var(--color-zinc-100)!important;padding-inline:calc(var(--spacing) * 6)!important;padding-block:calc(var(--spacing) * 5)!important;font-size:var(--text-lg)!important;line-height:var(--tw-leading,var(--text-lg--line-height))!important;--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important;color:var(--color-zinc-900)!important}.t-dialog__header:where([theme-mode=dark],[theme-mode=dark] *){border-color:#27272acc!important}@supports (color:color-mix(in lab, red, red)){.t-dialog__header:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)!important}}.t-dialog__header:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-white)!important}.t-dialog__header-content{align-items:center;gap:calc(var(--spacing) * 2);display:flex}.t-dialog__header-content .t-icon-error-circle-filled{font-size:var(--text-xl)!important;line-height:var(--tw-leading,var(--text-xl--line-height))!important;color:var(--color-red-500)!important}.t-dialog__body,.t-dialog__body__icon{margin:calc(var(--spacing) * 0)!important;padding-inline:calc(var(--spacing) * 6)!important;padding-block:calc(var(--spacing) * 8)!important;font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;--tw-leading:var(--leading-relaxed)!important;line-height:var(--leading-relaxed)!important;color:var(--color-zinc-600)!important}:-webkit-any(.t-dialog__body,.t-dialog__body__icon):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}:is(.t-dialog__body,.t-dialog__body__icon):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}.t-dialog__body,.t-dialog__body__icon{display:block!important}.t-dialog__footer{margin:calc(var(--spacing) * 0)!important;border-top-style:var(--tw-border-style)!important;border-top-width:1px!important;border-color:var(--color-zinc-100)!important;background-color:#fafafa80!important}@supports (color:color-mix(in lab, red, red)){.t-dialog__footer{background-color:color-mix(in oklab, var(--color-zinc-50) 50%, transparent)!important}}.t-dialog__footer{padding-inline:calc(var(--spacing) * 6)!important;padding-block:calc(var(--spacing) * 4)!important}.t-dialog__footer:where([theme-mode=dark],[theme-mode=dark] *){border-color:#27272acc!important}@supports (color:color-mix(in lab, red, red)){.t-dialog__footer:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-800) 80%, transparent)!important}}.t-dialog__footer:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b80!important}@supports (color:color-mix(in lab, red, red)){.t-dialog__footer:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 50%, transparent)!important}}.t-dialog__footer{display:block!important}.t-dialog__footer>div{justify-content:flex-end!important;align-items:center!important;gap:calc(var(--spacing) * 3)!important;flex-direction:row!important;width:100%!important;display:flex!important}.t-dialog__footer .t-button{margin:calc(var(--spacing) * 0)!important;height:calc(var(--spacing) * 9)!important;border-radius:var(--radius-xl)!important;padding-inline:calc(var(--spacing) * 5)!important;font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important;--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;transition-property:all!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.t-dialog__footer .t-button:active{--tw-scale-x:95%!important;--tw-scale-y:95%!important;--tw-scale-z:95%!important;scale:var(--tw-scale-x) var(--tw-scale-y)!important}.t-dialog__footer .t-button{margin-left:0!important}.t-dialog__cancel{--tw-border-style:none!important;background-color:var(--color-zinc-100)!important;color:var(--color-zinc-500)!important;border-style:none!important}@media (hover:hover){.t-dialog__cancel:hover{background-color:var(--color-zinc-200)!important}}.t-dialog__cancel:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800)!important;color:var(--color-zinc-400)!important}@media (hover:hover){.t-dialog__cancel:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-700)!important}}.t-dialog__modal-danger .t-dialog__confirm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-shadow-color:#fb2c3633;--tw-border-style:none!important;background-color:var(--color-red-500)!important;color:var(--color-white)!important;border-style:none!important}@supports (color:color-mix(in lab, red, red)){.t-dialog__modal-danger .t-dialog__confirm{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-red-500) 20%, transparent) var(--tw-shadow-alpha), transparent)}}@media (hover:hover){.t-dialog__modal-danger .t-dialog__confirm:hover{background-color:var(--color-red-600)!important}}.t-dialog__close{top:calc(var(--spacing) * 5)!important;right:calc(var(--spacing) * 5)!important;border-radius:var(--radius-lg)!important;padding:calc(var(--spacing) * 1)!important;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}@media (hover:hover){.t-dialog__close:hover{background-color:var(--color-zinc-100)!important}.t-dialog__close:where([theme-mode=dark],[theme-mode=dark] *):hover{background-color:var(--color-zinc-800)!important}}.global-layout-bg.custom-theme-enabled .t-input,.global-layout-bg.custom-theme-enabled .t-input.t-is-readonly,.t-input,.t-textarea__inner,.t-select__wrap .t-input{border-radius:var(--radius-xl)!important;background-color:var(--color-white)!important;border:0!important;outline:none!important}:is(.global-layout-bg.custom-theme-enabled .t-input,.global-layout-bg.custom-theme-enabled .t-input.t-is-readonly,.t-input,.t-textarea__inner,.t-select__wrap .t-input):where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-900)!important}.global-layout-bg.custom-theme-enabled .t-input,.global-layout-bg.custom-theme-enabled .t-input.t-is-readonly,.t-input,.t-textarea__inner,.t-select__wrap .t-input{transition:all .2s cubic-bezier(.38,0,.24,1);background-clip:padding-box!important;box-shadow:0 0 0 1px #0000001a!important}.t-input .t-input__inner,.t-textarea__inner{--tw-border-style:none!important;--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;--tw-outline-style:none!important;background:0 0!important;border-style:none!important;outline-style:none!important}.t-input__wrap.shadow-sm{box-shadow:none!important}html[theme-mode=dark] .t-input,.dark .t-input{background-color:var(--color-zinc-900)!important;box-shadow:0 0 0 1px #3f3f46!important}.t-input:focus-within,.t-input--focused{box-shadow:0 0 0 2px var(--color-primary)!important}.t-input:after,.t-input:before{content:none!important;display:none!important}.t-input__inner,.t-textarea__inner{color:var(--color-zinc-700)}:-webkit-any(.t-input__inner,.t-textarea__inner):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200)}:is(.t-input__inner,.t-textarea__inner):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200)}.t-input__inner::placeholder,.t-textarea__inner::placeholder{color:var(--td-text-color-secondary)}.t-form__label{margin-bottom:calc(var(--spacing) * 1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);color:var(--color-zinc-700)}.t-form__label:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)}.t-select-input__wrap .t-tag,.t-select__wrap .t-tag{margin:calc(var(--spacing) * .5)!important;border-radius:var(--radius-md)!important;--tw-border-style:none!important;background-color:#e4e4e780!important;border-style:none!important;align-items:center!important;height:auto!important;display:inline-flex!important}@supports (color:color-mix(in lab, red, red)){.t-select-input__wrap .t-tag,.t-select__wrap .t-tag{background-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.t-select-input__wrap .t-tag,.t-select__wrap .t-tag{padding-inline:calc(var(--spacing) * 2)!important;padding-block:calc(var(--spacing) * .5)!important;font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important;--tw-font-weight:var(--font-weight-medium)!important;font-weight:var(--font-weight-medium)!important;color:var(--color-zinc-700)!important}:is(.t-select-input__wrap .t-tag,.t-select__wrap .t-tag):where([theme-mode=dark],[theme-mode=dark] *){background-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){:is(.t-select-input__wrap .t-tag,.t-select__wrap .t-tag):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}:is(.t-select-input__wrap .t-tag,.t-select__wrap .t-tag):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)!important}.t-select-input__wrap .t-tag,.t-select__wrap .t-tag{max-width:calc(100% - 8px)!important}.t-select-input__wrap .t-tag__text,.t-select__wrap .t-tag__text{text-overflow:ellipsis!important;white-space:nowrap!important;overflow:hidden!important}.t-select-input__wrap .t-tag__close,.t-select__wrap .t-tag__close{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));margin-top:calc(var(--spacing) * .5)!important;margin-left:calc(var(--spacing) * 1)!important;color:var(--color-zinc-400)!important}@media (hover:hover){:is(.t-select-input__wrap .t-tag__close,.t-select__wrap .t-tag__close):hover{color:var(--color-red-500)!important}}.t-table{--td-bg-color-container:transparent;--td-border-level-2-color:#e4e4e780;background-color:#0000!important}html[theme-mode=dark] .t-table,.dark .t-table{--td-border-level-2-color:#3f3f4680}.t-table th{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider);color:var(--td-text-color-secondary);text-transform:uppercase;border-bottom:1px solid var(--td-border-level-2-color);background-color:#0000!important}.t-table td{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-zinc-700);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.t-table td:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)}.t-table td{border-bottom:1px solid var(--td-border-level-2-color);background-color:#0000!important}.t-table--striped:not(.t-table--header-fixed)>.t-table__content>table>tbody>tr:nth-of-type(odd):not(.t-table__expanded-row){background-color:#fafafa80!important}@supports (color:color-mix(in lab, red, red)){.t-table--striped:not(.t-table--header-fixed)>.t-table__content>table>tbody>tr:nth-of-type(odd):not(.t-table__expanded-row){background-color:color-mix(in oklab, var(--color-zinc-50) 50%, transparent)!important}}.t-table--striped:not(.t-table--header-fixed)>.t-table__content>table>tbody>tr:nth-of-type(odd):not(.t-table__expanded-row):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a4d!important}@supports (color:color-mix(in lab, red, red)){.t-table--striped:not(.t-table--header-fixed)>.t-table__content>table>tbody>tr:nth-of-type(odd):not(.t-table__expanded-row):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800) 30%, transparent)!important}}.t-table tr:hover td{background-color:#f4f4f5cc!important}@supports (color:color-mix(in lab, red, red)){.t-table tr:hover td{background-color:color-mix(in oklab, var(--color-zinc-100) 80%, transparent)!important}}.t-table tr:hover td:where([theme-mode=dark],[theme-mode=dark] *){background-color:#3f3f4666!important}@supports (color:color-mix(in lab, red, red)){.t-table tr:hover td:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-700) 40%, transparent)!important}}.t-table__pagination{padding:calc(var(--spacing) * 3);border-top:1px solid var(--td-border-level-2-color);background-color:#0000!important}.t-timeline{background-color:#0000}.t-timeline-item__tail{border-color:#e4e4e780!important}@supports (color:color-mix(in lab, red, red)){.t-timeline-item__tail{border-color:color-mix(in oklab, var(--color-zinc-200) 50%, transparent)!important}}.t-timeline-item__tail:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){.t-timeline-item__tail:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)!important}}.t-timeline-item__content{color:inherit!important}.t-collapse,.t-collapse-panel,.t-collapse-panel__header,.t-collapse-panel__body{--tw-border-style:none!important;color:inherit!important;background-color:#0000!important;border-style:none!important}.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled{margin:calc(var(--spacing) * 0)!important;gap:calc(var(--spacing) * 0)!important;--tw-border-style:none!important;background-color:#f4f4f5cc!important;border-style:none!important;border-radius:8px!important;width:auto!important;display:inline-flex!important;position:relative!important}@supports (color:color-mix(in lab, red, red)){.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled{background-color:color-mix(in oklab, var(--color-zinc-100) 80%, transparent)!important}}.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;padding:2px!important}:-webkit-any(.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled):where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181bcc!important}:is(.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled):where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181bcc!important}@supports (color:color-mix(in lab, red, red)){:-webkit-any(.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 80%, transparent)!important}:is(.t-radio-group.t-radio-group__outline,.t-radio-group.t-radio-group--filled):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900) 80%, transparent)!important}}.t-radio-group__bg-block{--tw-border-style:none!important;background-color:var(--color-white)!important;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important;border-style:none!important;border-radius:6px!important}.t-radio-group__bg-block:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-700)!important}.t-radio-group__bg-block{transition:all .3s cubic-bezier(.38,0,.24,1)!important}.t-radio-button,.t-radio-button.t-is-checked,.t-radio-button:hover{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.3s;transition-duration:.3s;z-index:10!important;margin:calc(var(--spacing) * 0)!important;--tw-border-style:none!important;padding:calc(var(--spacing) * 0)!important;background:0 0!important;border-style:none!important;border-radius:6px!important}.t-radio-button:not(.t-is-checked){color:var(--color-zinc-500)!important}.t-radio-button:not(.t-is-checked):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400)!important}.t-radio-button.t-is-checked{--tw-font-weight:var(--font-weight-bold)!important;font-weight:var(--font-weight-bold)!important;color:var(--color-zinc-900)!important}.t-radio-button.t-is-checked:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100)!important}.t-radio-button__label{justify-content:center!important;align-items:center!important;gap:calc(var(--spacing) * 1.5)!important;height:auto!important;padding-inline:calc(var(--spacing) * 2.5)!important;padding-block:calc(var(--spacing) * 1)!important;font-size:var(--text-xs)!important;line-height:var(--tw-leading,var(--text-xs--line-height))!important;--tw-leading:1!important;--tw-font-weight:var(--font-weight-medium)!important;line-height:1!important;font-weight:var(--font-weight-medium)!important;display:flex!important}.t-radio-button__label .t-icon{margin:calc(var(--spacing) * 0)!important;font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important}.t-radio-button:before,.t-radio-button:after,.t-radio-button:hover:before,.t-radio-button:hover:after{display:none!important}.t-checkbox__ui{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));border-radius:var(--radius-md)!important;border-color:var(--color-zinc-300)!important;background-color:var(--color-white)!important}.t-checkbox__ui:where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-600)!important;background-color:var(--color-zinc-900)!important}.t-checkbox.t-is-checked .t-checkbox__ui{border-color:var(--color-primary)!important;background-color:var(--color-primary)!important}.t-checkbox__label{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);font-size:var(--text-sm)!important;line-height:var(--tw-leading,var(--text-sm--line-height))!important;color:var(--color-zinc-700)!important}.t-checkbox__label:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-300)!important}:root,html[theme-mode=light]{--td-bg-color-page:var(--color-zinc-50)!important;--td-bg-color-container:var(--color-white)!important;--td-bg-color-secondarycontainer:var(--color-zinc-100)!important;--td-component-border:#e4e4e780!important}@supports (color:color-mix(in lab, red, red)){:root,html[theme-mode=light]{--td-component-border:color-mix(in srgb, var(--color-zinc-200), transparent 50%)!important}}:root,html[theme-mode=light]{--td-border-level-1-color:#e4e4e7cc!important}@supports (color:color-mix(in lab, red, red)){:root,html[theme-mode=light]{--td-border-level-1-color:color-mix(in srgb, var(--color-zinc-200), transparent 20%)!important}}:root,html[theme-mode=light]{--td-border-level-2-color:var(--color-zinc-200)!important;--td-text-color-primary:var(--color-zinc-900)!important;--td-text-color-secondary:var(--color-zinc-600)!important}html[theme-mode=dark]{--td-bg-color-page:var(--color-zinc-900)!important;--td-bg-color-container:var(--color-zinc-800)!important;--td-bg-color-secondarycontainer:var(--color-zinc-700)!important;--td-component-border:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){html[theme-mode=dark]{--td-component-border:color-mix(in srgb, var(--color-zinc-700), transparent 50%)!important}}html[theme-mode=dark]{--td-border-level-1-color:#3f3f46cc!important}@supports (color:color-mix(in lab, red, red)){html[theme-mode=dark]{--td-border-level-1-color:color-mix(in srgb, var(--color-zinc-700), transparent 20%)!important}}html[theme-mode=dark]{--td-border-level-2-color:var(--color-zinc-700)!important;--td-text-color-primary:var(--color-zinc-100)!important;--td-text-color-secondary:var(--color-zinc-400)!important}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}.color-container[data-v-f4b82387]{border-radius:50%;width:24px;height:24px;display:inline-block}[data-v-8a882e36] .t-drawer__content-wrapper{border-left-style:var(--tw-border-style)!important;border-color:#e4e4e780!important;border-left-width:1px!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .t-drawer__content-wrapper{border-color:color-mix(in oklab, var(--color-zinc-200,lab(90.6853% .399232 -1.45452)) 50%, transparent)!important}}[data-v-8a882e36] .t-drawer__content-wrapper{background-color:var(--color-white,#fff)!important}[data-v-8a882e36] .t-drawer__content-wrapper:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .t-drawer__content-wrapper:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)!important}}[data-v-8a882e36] .t-drawer__content-wrapper:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,#27272a)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .t-drawer__content-wrapper:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,color(display-p3 .152895 .152887 .16466))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .t-drawer__content-wrapper:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,lab(15.7305% .613764 -2.16959))!important}}[data-v-8a882e36] .t-drawer__header{border-bottom-style:var(--tw-border-style)!important;border-bottom-width:1px!important;border-color:var(--color-zinc-100,#f4f4f5)!important;padding-inline:calc(var(--spacing,.25rem) * 6)!important;padding-block:calc(var(--spacing,.25rem) * 5)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .t-drawer__header{border-color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .t-drawer__header{border-color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}[data-v-8a882e36] .t-drawer__header:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .t-drawer__header:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)!important}}[data-v-8a882e36] .t-drawer__header-title{--tw-font-weight:var(--font-weight-bold,700)!important;font-size:16px!important;font-weight:var(--font-weight-bold,700)!important;color:var(--color-zinc-800,#27272a)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .t-drawer__header-title{color:var(--color-zinc-800,color(display-p3 .152895 .152887 .16466))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .t-drawer__header-title{color:var(--color-zinc-800,lab(15.7305% .613764 -2.16959))!important}}[data-v-8a882e36] .t-drawer__header-title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,#f4f4f5)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .t-drawer__header-title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .t-drawer__header-title:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}[data-v-8a882e36] .t-drawer__body{padding:calc(var(--spacing,.25rem) * 0)!important}.setting-title[data-v-8a882e36]{margin-bottom:calc(var(--spacing,.25rem) * 4);--tw-font-weight:var(--font-weight-bold,700);font-size:13px;font-weight:var(--font-weight-bold,700);--tw-tracking:var(--tracking-widest,.1em);letter-spacing:var(--tracking-widest,.1em);color:var(--td-text-color-secondary);text-transform:uppercase}.custom-radio-group[data-v-8a882e36],.color-radio-group[data-v-8a882e36]{gap:calc(var(--spacing,.25rem) * 3)!important;--tw-border-style:none!important;width:100%!important;padding:calc(var(--spacing,.25rem) * 0)!important;background-color:#0000!important;border-style:none!important;display:flex!important}[data-v-8a882e36] .icon-card-radio{border-radius:var(--radius-xl,.75rem)!important;border-style:var(--tw-border-style)!important;border-width:2px!important;border-color:var(--color-zinc-100,#f4f4f5)!important;background-color:#fafafa80!important;flex:1!important;height:auto!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .icon-card-radio{border-color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .icon-card-radio{border-color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .icon-card-radio{background-color:color-mix(in oklab, var(--color-zinc-50,lab(98.26% 0 0)) 50%, transparent)!important}}[data-v-8a882e36] .icon-card-radio{padding:calc(var(--spacing,.25rem) * 4)!important;color:var(--color-zinc-500,#71717b)!important;transition-property:all!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)))!important;transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))!important;--tw-duration:.3s!important;transition-duration:.3s!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .icon-card-radio{color:var(--color-zinc-500,color(display-p3 .442983 .442931 .480324))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .icon-card-radio{color:var(--color-zinc-500,lab(47.8878% 1.65477 -5.77283))!important}}[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)!important}}[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){background-color:#18181b4d!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-900,lab(8.30603% .618205 -2.16572)) 30%, transparent)!important}}[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,#9f9fa9)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,color(display-p3 .622604 .622563 .659842))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .icon-card-radio:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,lab(65.6464% 1.53497 -5.42429))!important}}[data-v-8a882e36] .icon-card-radio .t-radio-button__label{width:100%!important;padding-inline:calc(var(--spacing,.25rem) * 0)!important}[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked){border-color:var(--color-zinc-300,#d4d4d8)!important;color:var(--color-zinc-700,#3f3f46)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked){border-color:var(--color-zinc-300,color(display-p3 .831087 .831083 .846819))!important;color:var(--color-zinc-700,color(display-p3 .246478 .246448 .273934))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked){border-color:var(--color-zinc-300,lab(84.9837% .601262 -2.17986))!important;color:var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303))!important}}[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked):where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-500,#71717b)!important;color:var(--color-zinc-200,#e4e4e7)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked):where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-500,color(display-p3 .442983 .442931 .480324))!important;color:var(--color-zinc-200,color(display-p3 .894477 .894477 .905114))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .icon-card-radio:hover:not(.t-is-checked):where([theme-mode=dark],[theme-mode=dark] *){border-color:var(--color-zinc-500,lab(47.8878% 1.65477 -5.77283))!important;color:var(--color-zinc-200,lab(90.6853% .399232 -1.45452))!important}}[data-v-8a882e36] .icon-card-radio.t-is-checked{border-color:var(--color-primary)!important;background-color:var(--color-primary-light)!important;scale:1.02!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .icon-card-radio.t-is-checked{background-color:color-mix(in oklab, var(--color-primary-light) 15%, transparent)!important}}[data-v-8a882e36] .icon-card-radio.t-is-checked{color:var(--color-primary)!important;--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}[data-v-8a882e36] .icon-card-radio.t-is-checked:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .icon-card-radio.t-is-checked:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}[data-v-8a882e36] .color-dot-wrapper{--tw-duration:.3s;transition-duration:.3s;border-style:var(--tw-border-style)!important;height:auto!important;padding:calc(var(--spacing,.25rem) * 1.5)!important;transition-property:all!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)))!important;transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))!important;background-color:#0000!important;border-width:2px!important;border-color:#0000!important;border-radius:3.40282e38px!important}[data-v-8a882e36] .color-dot-wrapper .t-radio-button__label{padding:calc(var(--spacing,.25rem) * 0)!important}[data-v-8a882e36] .color-dot-wrapper:hover:not(.t-is-checked){background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .color-dot-wrapper:hover:not(.t-is-checked){background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}[data-v-8a882e36] .color-dot-wrapper.t-is-checked{--tw-scale-x:110%!important;--tw-scale-y:110%!important;--tw-scale-z:110%!important;scale:var(--tw-scale-x) var(--tw-scale-y)!important;border-color:var(--color-primary)!important;--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}[data-v-8a882e36] .custom-color-picker{border-radius:var(--radius-2xl,1rem)!important;border-style:var(--tw-border-style)!important;border-width:1px!important;border-color:#e4e4e780!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .custom-color-picker{border-color:color-mix(in oklab, var(--color-zinc-200,lab(90.6853% .399232 -1.45452)) 50%, transparent)!important}}[data-v-8a882e36] .custom-color-picker{background-color:var(--color-white,#fff)!important;--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}[data-v-8a882e36] .custom-color-picker:where([theme-mode=dark],[theme-mode=dark] *){border-color:#3f3f4680!important}@supports (color:color-mix(in lab, red, red)){[data-v-8a882e36] .custom-color-picker:where([theme-mode=dark],[theme-mode=dark] *){border-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)!important}}[data-v-8a882e36] .custom-color-picker:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,#27272a)!important}@supports (color:color(display-p3 0 0 0)){[data-v-8a882e36] .custom-color-picker:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,color(display-p3 .152895 .152887 .16466))!important}}@supports (color:lab(0% 0 0)){[data-v-8a882e36] .custom-color-picker:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-zinc-800,lab(15.7305% .613764 -2.16959))!important}}[data-v-8a882e36] .custom-color-picker .t-color-picker__panel{background-color:#0000!important}:-webkit-any(){display:none!important}:is(){display:none!important}[data-v-f46b0d89] .t-menu__sub{--padding-left:0px!important;margin:calc(var(--spacing,.25rem) * 0)!important;--tw-border-style:none!important;padding:calc(var(--spacing,.25rem) * 0)!important;background-color:#0000!important;border-style:none!important;overflow:hidden!important}:is([data-v-f46b0d89] .t-menu__item,[data-v-f46b0d89] .t-submenu__title){margin-inline:calc(var(--spacing,.25rem) * 3)!important;margin-block:calc(var(--spacing,.25rem) * 1)!important;cursor:pointer!important;align-items:center!important;gap:calc(var(--spacing,.25rem) * 2.5)!important;border-radius:var(--radius-xl,.75rem)!important;--tw-border-style:none!important;width:auto!important;transition-property:all!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)))!important;transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))!important;--tw-duration:.2s!important;background-color:#0000!important;border-style:none!important;transition-duration:.2s!important;display:flex!important;position:relative!important}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:not(.t-submenu__item)){height:44px!important;padding-inline:calc(var(--spacing,.25rem) * 3)!important;--tw-font-weight:var(--font-weight-medium,500)!important;font-size:14.5px!important;font-weight:var(--font-weight-medium,500)!important;color:var(--td-text-color-primary)!important}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:not(.t-submenu__item)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,#9f9fa9)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:not(.t-submenu__item)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,color(display-p3 .622604 .622563 .659842))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:not(.t-submenu__item)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,lab(65.6464% 1.53497 -5.42429))!important}}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__item{height:40px!important;padding-right:calc(var(--spacing,.25rem) * 3)!important;--tw-font-weight:var(--font-weight-normal,400)!important;font-size:13.5px!important;font-weight:var(--font-weight-normal,400)!important;color:var(--td-text-color-secondary)!important;padding-left:42px!important}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__item:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,#9f9fa9)!important}@supports (color:color(display-p3 0 0 0)){.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__item:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,color(display-p3 .622604 .622563 .659842))!important}}@supports (color:lab(0% 0 0)){.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__item:where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-400,lab(65.6464% 1.53497 -5.42429))!important}}[data-v-f46b0d89] .t-icon{opacity:.7!important;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)))!important;transition-duration:var(--tw-duration,var(--default-transition-duration,.15s))!important;--tw-duration:.2s!important;flex-shrink:0!important;font-size:20px!important;transition-duration:.2s!important}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)){background-color:#f4f4f5cc!important}@supports (color:color-mix(in lab, red, red)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)){background-color:color-mix(in oklab, var(--color-zinc-100,lab(96.1634% .0993311 -.364041)) 80%, transparent)!important}}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,#18181b)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,color(display-p3 .0937957 .093793 .104806))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,lab(8.30603% .618205 -2.16572))!important}}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){background-color:#27272a99!important}@supports (color:color-mix(in lab, red, red)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-zinc-800,lab(15.7305% .613764 -2.16959)) 60%, transparent)!important}}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,#f4f4f5)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon){color:var(--color-zinc-800,#27272a)!important;opacity:1!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon){color:var(--color-zinc-800,color(display-p3 .152895 .152887 .16466))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon){color:var(--color-zinc-800,lab(15.7305% .613764 -2.16959))!important}}:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200,#e4e4e7)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200,color(display-p3 .894477 .894477 .905114))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item:hover:not(.t-is-active) .t-icon,.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__title:hover:not(.t-is-opened) .t-icon):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-200,lab(90.6853% .399232 -1.45452))!important}}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active{background-color:var(--color-primary-light)!important}@supports (color:color-mix(in lab, red, red)){.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active{background-color:color-mix(in oklab, var(--color-primary-light) 20%, transparent)!important}}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active{--tw-font-weight:var(--font-weight-semibold,600)!important;font-weight:var(--font-weight-semibold,600)!important;color:var(--color-primary)!important}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 15%, transparent)!important}}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-menu__item.t-is-active .t-icon{color:var(--color-primary)!important;opacity:1!important}.modern-menu-wrapper[data-v-f46b0d89]:not(.is-horizontal) .t-submenu__item.t-is-active{--tw-font-weight:var(--font-weight-bold,700)!important;font-weight:var(--font-weight-bold,700)!important}.modern-menu-wrapper.is-horizontal[data-v-f46b0d89]{align-items:center!important;display:flex!important}:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item,.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title){margin-inline:calc(var(--spacing,.25rem) * 1)!important;border-radius:var(--radius-lg,.5rem)!important;height:40px!important;padding-inline:calc(var(--spacing,.25rem) * 3)!important;--tw-font-weight:var(--font-weight-medium,500)!important;font-size:14px!important;font-weight:var(--font-weight-medium,500)!important}:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)){background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)){background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,#18181b)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,color(display-p3 .0937957 .093793 .104806))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)){color:var(--color-zinc-900,lab(8.30603% .618205 -2.16572))!important}}:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,#f4f4f5)!important}@supports (color:color(display-p3 0 0 0)){:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){:is(.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item:hover:not(.t-is-active),.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-submenu__title:hover:not(.t-is-opened)):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active{background-color:var(--color-primary-light)!important}@supports (color:color-mix(in lab, red, red)){.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active{background-color:color-mix(in oklab, var(--color-primary-light) 20%, transparent)!important}}.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active{--tw-font-weight:var(--font-weight-bold,700)!important;font-weight:var(--font-weight-bold,700)!important;color:var(--color-primary)!important}.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 15%, transparent)!important}}.modern-menu-wrapper.is-horizontal[data-v-f46b0d89] .t-menu__item.t-is-active .t-icon{color:var(--color-primary)!important;opacity:1!important}:-webkit-any(html[theme-mode=dark],html[theme-mode=dark]){color:#fff!important}:is(html[theme-mode=dark],html[theme-mode=dark]){color:#fff!important}@reference "@/style/tailwind/index.css";.mslx-webpanel-header-menu-fixed[data-v-a81dfcc3]{z-index:1001;width:100%;position:fixed;top:0}.mslx-webpanel-header-menu-fixed-side[data-v-a81dfcc3]{z-index:10;width:auto;transition:all .3s;left:232px;right:0}.mslx-webpanel-header-menu-fixed-side-compact[data-v-a81dfcc3]{left:64px}[data-v-a81dfcc3] .t-menu,[data-v-a81dfcc3] .t-head-menu,[data-v-a81dfcc3] .t-menu--dark,[data-v-a81dfcc3] .t-menu--light,[data-v-a81dfcc3] .t-head-menu__inner{background:0 0!important}[data-v-a81dfcc3] .t-head-menu__inner,[data-v-a81dfcc3] .t-menu__item{box-shadow:none!important;border:none!important;outline:none!important}@apply px-4 sm:px-6;[data-v-a81dfcc3] .t-menu__item:after,[data-v-a81dfcc3] .t-menu__item:before,[data-v-a81dfcc3] .t-menu__item.t-is-active:after{display:none!important}.header-menu-reset[data-v-a81dfcc3] .t-menu__item{min-width:unset}@apply px-4 mx-1 rounded-xl transition-all border-none !important;@apply !border-none !bg-transparent hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50 !text-zinc-600 dark:!text-zinc-300 transition-colors !rounded-lg;@apply !border-none !bg-transparent hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50 !px-2 !py-1 !rounded-xl transition-colors !h-auto;html[theme-mode=dark]{color:#fff;background:#ffffff0d!important}.t-layout__header{background:0 0!important;border-bottom:none!important}.mslx-webpanel-header-layout[data-v-a81dfcc3]{height:100%}.mobile-full-width-popup{width:100vw!important;max-width:100vw!important;margin-top:0!important;position:fixed!important;top:48px!important;left:0!important;transform:none!important}.mobile-full-width-popup .t-default-menu{width:100%!important;max-width:100%!important}@apply !h-12 !text-[15px];.design-card[data-v-a81dfcc3]:not(.enable-custom-theme){border-bottom:1px solid #00000014!important}html[theme-mode=dark]{border-bottom:1px solid #ffffff14!important}.design-card.enable-custom-theme[data-v-a81dfcc3]{border-bottom:1px solid #ffffff26!important}[data-v-a81dfcc3] .t-head-menu{background-color:#0000!important}@keyframes jellyPop-a81dfcc3{0%{transform:scale(1)}30%{transform:scale(.85)}50%{transform:scale(1.15)}65%{transform:scale(.95)}80%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes magicBurst-a81dfcc3{0%{box-shadow:0 0 0 0 var(--color-primary);opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.2);box-shadow:0 0 0 35px #0000}}.animate-jelly-pop[data-v-a81dfcc3]{animation:.6s cubic-bezier(.25,1,.5,1) both jellyPop-a81dfcc3}.animate-magic-burst[data-v-a81dfcc3]{animation:.6s cubic-bezier(.1,.8,.3,1) both magicBurst-a81dfcc3}.fade-leave-active[data-v-323e6e6f],.fade-enter-active[data-v-323e6e6f]{transition:opacity .28s cubic-bezier(.38,0,.24,1)}.fade-enter[data-v-323e6e6f],.fade-leave-to[data-v-323e6e6f]{opacity:0}.tdesign-breadcrumb[data-v-b09aa6cf]{margin-bottom:24px}.glass-capsule[data-v-f1245484]:hover{border-color:var(--color-primary);transform:translateY(-2px)}@supports (color:color-mix(in lab, red, red)){.glass-capsule[data-v-f1245484]:hover{border-color:color-mix(in srgb, var(--color-primary), transparent 50%)}}.glass-capsule[data-v-f1245484]:hover{box-shadow:0 6px 20px #00000014, 0 0 15px var(--color-primary), inset 0 0 8px var(--color-primary)}@supports (color:color-mix(in lab, red, red)){.glass-capsule[data-v-f1245484]:hover{box-shadow:0 6px 20px #00000014, 0 0 15px color-mix(in srgb, var(--color-primary), transparent 85%), inset 0 0 8px color-mix(in srgb, var(--color-primary), transparent 90%)}}html[theme-mode=dark]{border-color:var(--color-primary)}@supports (color:color-mix(in lab, red, red)){html[theme-mode=dark]{border-color:color-mix(in srgb, var(--color-primary), transparent 60%)}}html[theme-mode=dark]{box-shadow:0 6px 20px #0006, 0 0 20px var(--color-primary), inset 0 0 8px var(--color-primary)}@supports (color:color-mix(in lab, red, red)){html[theme-mode=dark]{box-shadow:0 6px 20px #0006, 0 0 20px color-mix(in srgb, var(--color-primary), transparent 80%), inset 0 0 8px color-mix(in srgb, var(--color-primary), transparent 85%)}}:-webkit-any(:-webkit-any(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .sidebar-menu-clear,:-webkit-any(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-menu,:-webkit-any(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-menu--dark,:-webkit-any(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-default-menu__inner){background:0 0!important}:is(:is(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .sidebar-menu-clear,:is(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-menu,:is(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-menu--dark,:is(:scope.dark[data-v-9ac7176f],html[theme-mode=dark]) .t-default-menu__inner){background:0 0!important}[data-v-9ac7176f] .t-menu__logo>*{margin-left:0!important}[data-v-9ac7176f] .t-menu{border-right:none!important}[data-v-9ac7176f] .t-menu__logo{border-bottom:none!important;padding:0!important}[data-v-9ac7176f] .t-menu__operations{border-top:none!important}html[theme-mode=dark]{background:0 0!important}[data-v-9ac7176f] .t-menu__item{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.2s;transition-duration:.2s;margin-inline:calc(var(--spacing,.25rem) * 2)!important;margin-block:calc(var(--spacing,.25rem) * 1)!important;border-radius:var(--radius-xl,.75rem)!important;--tw-border-style:none!important;border-style:none!important}[data-v-9ac7176f] .t-menu__item.t-is-active:after{display:none!important}[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active){background-color:var(--td-bg-color-secondarycontainer)!important}@supports (color:color-mix(in lab, red, red)){[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active){background-color:color-mix(in oklab, var(--td-bg-color-secondarycontainer) 50%, transparent)!important}}[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active){color:var(--color-zinc-900,#18181b)!important}@supports (color:color(display-p3 0 0 0)){[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active){color:var(--color-zinc-900,color(display-p3 .0937957 .093793 .104806))!important}}@supports (color:lab(0% 0 0)){[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active){color:var(--color-zinc-900,lab(8.30603% .618205 -2.16572))!important}}[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,#f4f4f5)!important}@supports (color:color(display-p3 0 0 0)){[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,color(display-p3 .956385 .956385 .959079))!important}}@supports (color:lab(0% 0 0)){[data-v-9ac7176f] .t-menu__item:hover:not(.t-is-active):where([theme-mode=dark],[theme-mode=dark] *){color:var(--color-zinc-100,lab(96.1634% .0993311 -.364041))!important}}[data-v-9ac7176f] .t-menu__item.t-is-active{background-color:var(--color-primary-light)!important}@supports (color:color-mix(in lab, red, red)){[data-v-9ac7176f] .t-menu__item.t-is-active{background-color:color-mix(in oklab, var(--color-primary-light) 20%, transparent)!important}}[data-v-9ac7176f] .t-menu__item.t-is-active{--tw-font-weight:var(--font-weight-bold,700);font-weight:var(--font-weight-bold,700);color:var(--color-primary)!important}[data-v-9ac7176f] .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:var(--color-primary)!important}@supports (color:color-mix(in lab, red, red)){[data-v-9ac7176f] .t-menu__item.t-is-active:where([theme-mode=dark],[theme-mode=dark] *){background-color:color-mix(in oklab, var(--color-primary) 10%, transparent)!important}}[data-v-9ac7176f] .t-menu__sub{background:0 0!important}[data-v-9ac7176f] .t-menu__sub .t-menu__item{margin-inline:calc(var(--spacing,.25rem) * 3)!important}html[theme-mode=dark]{color:#ffffffb3;color:var(--color-primary)!important}:-webkit-any(.t-layout__sider,.t-aside){background:0 0!important}:is(.t-layout__sider,.t-aside){background:0 0!important}@font-face{font-family:TencentSansW7;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAusAA4AAAAAEJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAALkAAAABwAAAAchqPqzUdERUYAAAtwAAAAHgAAAB4AKQAbT1MvMgAAAbgAAABZAAAAYGmceoNjbWFwAAACYAAAAJcAAAHsPmfPZmdhc3AAAAtkAAAADAAAAAwACAAbZ2x5ZgAAAywAAAW8AAAG/Ivn/ztoZWFkAAABRAAAADYAAAA2E+AL5GhoZWEAAAF8AAAAIAAAACQIawJ9aG10eAAAAhQAAABMAAAATCG/Auxsb2NhAAADAAAAACwAAAAsDjIQIm1heHAAAAGcAAAAGgAAACAAfgBDbmFtZQAACOgAAAIUAAAEm0zGvtJwb3N0AAAK/AAAAGYAAAB/4wuGdnByZXAAAAL4AAAACAAAAAhwAgESAAEAAAABBR/xlpGAXw889QALA+gAAAAA2Ac3gwAAAADY+IxB//L/HAPPAwAAAAAIAAIAAAAAAAB42mNgZGBgWf7vFAMD84v/n/7vZD7PABRBAYIAwxQH7XjaY2BkYGAQZXBiYGEAAUYGGEiBUAAMEQDCAAB42mNgYepm2sPAysDA1MUUwcDA4A2hGeMYjBjNgKI8HMxMTCz8TCwLGJj2CzCAgRiI8PX382d0YGBMEmQ2+u/FcIJlOVA9CwMjSI6JlekwkFJgYAQAR1kL+QAAAAJYAHYAAAAAAU0AAAEEAAACUAAhAlYAFQJUACACKgAdAZUANgEUABUBYAAkA5wAFQINABsBqAA0AnAAKgJYACoD6ACF//YANP/yACN42mNgYGBmgGAZBkYGEHgG5DGC+SwMp4C0HIMAUISPQYEhiSGNIZMhl6GUoZJhgeIkfS6/N4GpQQuSBP//B+tMZEgByucwFGOT/7/4/6L/C/7P+z/z/7T/yffqLrJvVFu3Zm3xPJBtcgz4ADPFkIGRDWgMIcBAIWBhZWBj52Bg4GRg4OIGi/Dw8gFJfgYqA/JcCgA99Se8ALgB/4W4AAGNAAAAFAAUABQAFABSAIIAsgD6ASIBOAFYAYIBxgHwAhQCRAJaAogCygMYA3542k1Ua2xTZRj+LmtP23Vdz2lPz3pZb2dr1+u2nq2H0d3Z2OhI5mC4AZMBo0gM98E0oRn1AqgoIYDG4BAkakDkJ4iyiCZGAiISUH8YjIQfEhNUMCoJrme+bTfkx/nxveec53ne533eDxE0Nn0V/0V2I4oYhATWw1ZKrDiGx5Vfzp6NkXPZ7mH8ECGCPNNXiZWokANVIYRjFt7MUI83iuvrWnAzTWA5Xl/nC2G/SZJFr7oUq3mzBaf7F5S0Kt+F59i1aq0j0tbwJmXcwUtsz3HHhEtQaYr0RFUbL0sqB8yRClvcG2uwa7hKg4VLKdFjZmeEN5SwwM0Dd4DcRaXAXuAuxQYqekwSIxRoqRRrxjLevrK/RNCUhXt7lYevpQMf6StjW1sz/gCrIqqm+Z7krsjCmJU67/zexrvMykE+CniA7wb8oUf4EhW9vtm2qGQSvQY808+t9Ov/5ih0zlhfyytfbGodd/ht2rJiH7k7dTtP0NQTYpUo3qDzSnsSVpc5j18O+DzRIzeqyel34nwDOISZHGoCM6I3SvKMRJppKM8pxeIy3tbU4S4y6Oc231Sp3OFLgXMV7dV2xq8L9K9IUZvY5XAZi4wfms2U6K21PoHvnVfvchitXEorhH2O4K253RUTnIYt0Xv4ITanB6M4zPwm9GuBQ4GIEaloEmVJzvXM4JeqXaxWfYg7tCi9qIddqNZZg53yKEv2lLgkEWaDr6fERHfEnEL5/mA+uJzcLmTIJEsMNUl0t5AR7o+kR8jqTCa7nsjZS3nuCvg2DtwcpC3ftQzfgg1ODMRfBjt8eiP8ZLAE7HNDsRJPUKhYTmqy13osvJGm4H/gomsgh8Ksk2oGpM+kAHqAh0wmuitpSWO6SWer2NOX7vu8D2SouFCACSSVk3hgjmBllRp8Takhck6THTT9DZjVoMkPprfgmSE8igHzKNOJ//MX4X4rN6m0VF022lan02g4R11DNngDahqoPQe1YoZ31SRiKWN5fammqNgddMiRcNheAoXIbKGlKsoXo7w3daDjFDmNbOAiM+uJOONSbjoSIzEPI1owpyO0oL6twlAcSbI9zrTzKIePTdeaeZamOHe4zJtA06kTJ3J+BSF7vdCbKZ/swsbGZzyHZvCN9BrlzmN+vUVU2UsFq/CAcjJnVV5bcNpB2gCnPI9jILDquZ1rwflleQzwqx1ri8PJzh+4K3GnUcPsg32pSdfAJmYA+dPm+a61rBj0N3Z5ktio3Gu1uAqZ3IVW0R2Ar4GDwIiyp97jJ5MXLuzbn71IGvYT1fXrR545kvdp+p/pNB0nvyI7QiqR+A2UEZupLPmjOK/KIlg4On741U6xf3hj49Ha0e2bov3tVFd6oOx2uVvb9dlLeOTjxt1797XUvDBx+snTOv1Sk/2y0g7YRTCDNP2WIqSHhLqQCHQGnEuYmpHhhvFYBNHnV8UsUPJLpjjwYZNA8ZC+yv7Uxu5QiG/vMWOfNzzq9uH7XqFoyz3byRWUv1ClnNowsoqi+CYp248fhN0TC94YXrSkYyRod03dWkYOmpdOfUAetGWTiE7/CRomQYML+VG0kHOG5AjjpjjE0kAYMc7JubMsqZnK3GvqMQmNOHcR4u9t5Woai31t3xXxYVrcaZQXt+5cOWZZV7ZXp94Io6u1C5Q+rZzY+pP62YEdZEmpx6QcUb4ZnMJ2nXbs2uWtb+P57w6sSoYytQYnl62juhVEnT1e2HURtF0EbQnUBsrAD9AADglwhfgLHkWxX2TiMqPOeyQzftinXHjhbVwuJVIdiOY9fvBRstDzyh9Ys6B6W2h0HnvO85DbvMsa2xJhNPgiPzBkaN4W/NF+0PaOd/ug7Yz+DNfVp3/v5+Jx8yRdT3F5dLMorLXik6PrnhhYfKAxM/hyb0Oanycm3+86bHMPC6JyZfB8YJnN8sngi4xqqdq3nN0//vzOTNXq5YsR+g8984WfeNq1Us1qFEEQ/npnk0X8IQGJIjnUSRLYLLt7MMlFCHvNKRvMuTPTmZ1kdib0zAY3ePMFfAAvigi5+Ry+gA8iiOLFr3tbTFZWcnGgu76qrvqqpqoAPMQ3KMy+A3wMWOGBehRwAy31LOAIayoPuEmfdwEv4Z76HPAy7quvAbfwqvEz4BXcjd4EvIpG9J5sqnmH2gfP7LDCOn4E3CD/04AjtNXzgJtYV68DXsJj9SngZTxRXwJu4XtDBbyCtehlwKtoRm8xQIlzTGGRIcUINQRXPH100cMOtgLape0QBgVif9dBjxlTkCPnSckj2MCQNudzGeQmrS5PB22ifcYmxII9RuWUf3JXXjOUhvKCt/PEoDyf2iwd1XIl/W5vZ4vXrhyaIjZFTRmPijIv06lsDEemuOTZlEHZact+nXRkL8/FR1diTWXshUnIefNnhtCULv0Rtvk4ox7qopKjbbcNhhVOWK1mXTgw6STX9t8kMh91k1RuRfJXJS98Zyp2rKSbcDIdzqfPB2OrrCyk1+n2F3HOMzrC+aFmPrcOg0i9XvukbhhCbPmaUBv73zqjrcTJf1gPV7PL6PK4yGN6L6oq882IvaWm/0w/ZfOt9014x3yZta1yS/V7fbJKNBcjzaraWJNIbXVixtqeSXly6x3TRSJjPZVjc50qKyQ2ttaUpxObVUkW15xRtXD9rg8Hs3FxRr8ATJnl93jaY2BiAIP/zQxGDNiAKBAzMjAxMjG4MLgyuDN4MHgy+DD4MwQwhDGEM0QwxDAyM7IwsjKyMbKzl+ZlGhgYGHIlFhXllxdlpmeUgISM3AwcQbSJq6sziDY1cjQA0WZGhoYAgBwU3AAAAAEAAgAIAAr//wAPAAEAAAAMAAAAFgAAAAIAAQADABQAAQAEAAAAAgAAAAAAAAABAAAAANWkJwgAAAAA2Ac3gwAAAADY+IxB)format("woff");font-weight:400;font-style:normal}.t-layout__sider{width:-moz-fit-content;width:fit-content}.t-button+.t-button{margin-left:var(--td-comp-margin-s)}.t-pagination-mini .t-button+.t-button,.t-jumper .t-button+.t-button{margin-left:0}.mslx-webpanel-link{color:var(--td-brand-color);cursor:pointer;margin-right:24px;text-decoration:none;transition:color .2s cubic-bezier(.38,0,.24,1)}.left-operation-container .t-button+.t-button,.operation-container .t-button+.t-button{margin-left:var(--td-comp-margin-s)}.t-layout.t-layout--with-sider>.t-layout{flex:1}.t-menu--dark .t-menu__operations .t-icon{color:#ffffff8c}.t-menu--dark .t-menu__operations .t-icon:hover{cursor:pointer}.t-default-menu.t-menu--dark{background:var(--td-gray-color-13)}.t-default-menu:not(.t-menu--dark) .t-menu__item.t-is-active:not(.t-is-opened){background-color:var(--td-brand-color-1);color:var(--td-brand-color)}.t-default-menu:not(.t-menu--dark) .t-menu__item.t-is-active:not(.t-is-opened) .t-icon{color:var(--td-brand-color)}.mslx-webpanel-wrapper{flex-direction:column;height:100vh;display:flex}.mslx-webpanel-main-wrapper{height:500px;overflow:scroll}.mslx-webpanel-side-nav-layout-relative{height:100%}.mslx-webpanel-content-layout{padding:var(--td-comp-paddingTB-l) var(--td-comp-paddingLR-l)}@media (max-width:768px){.mslx-webpanel-content-layout{padding:var(--td-comp-paddingTB-s) var(--td-comp-paddingLR-s)}}.mslx-webpanel-layout{height:calc(100vh - var(--td-comp-size-xxxl));overflow-y:scroll}.mslx-webpanel-layout::-webkit-scrollbar{background:0 0;width:8px}.mslx-webpanel-layout::-webkit-scrollbar-thumb{background-clip:content-box;background-color:var(--td-scrollbar-color);border:2px solid #0000;border-radius:6px}.mslx-webpanel-footer-layout{margin-bottom:var(--td-comp-margin-xxl);padding:0}.mslx-webpanel-sidebar-layout{height:100%}.mslx-webpanel-sidebar-compact{width:64px}.mslx-webpanel-sidebar-layout-side{z-index:100}.mslx-webpanel-side-nav{z-index:200;min-height:100%;transition:all .3s;position:fixed;top:0;bottom:0}.mslx-webpanel-side-nav-mix{top:var(--td-comp-size-xxxl)}.mslx-webpanel-side-nav-mix-fixed{top:var(--td-comp-size-xxxl);z-index:0}.mslx-webpanel-side-nav-no-fixed{z-index:1;position:relative}.mslx-webpanel-side-nav-no-logo{z-index:1}.mslx-webpanel-side-nav-logo-wrapper{justify-content:center;align-items:center;width:100%;display:flex}.mslx-webpanel-side-nav-logo-wrapper:hover{cursor:pointer}.mslx-webpanel-side-nav-logo-t-logo{width:100%;height:32px}.mslx-webpanel-side-nav-logo-tdesign-logo{width:100%;height:32px;color:var(--td-text-color-primary);padding:0 24px}.mslx-webpanel-side-nav-logo-normal{color:var(--td-brand-color);font:var(--td-font-body-large);transition:all .3s}.mslx-webpanel-side-nav-placeholder{flex:232px;min-width:232px;transition:all .3s}.mslx-webpanel-side-nav-placeholder-hidden{flex:72px;min-width:72px;transition:all .3s}.route-tabs-dropdown .t-icon{margin-right:8px}.logo-container{cursor:pointer;height:64px;margin-left:24px;display:inline-flex}.version-container{color:var(--td-text-color-primary);opacity:.4}.t-menu__popup{z-index:1000}.container-base-margin-top{margin-top:16px}.global-layout-bg[data-v-b0aaaf37]{z-index:1;background-color:var(--td-bg-color-page);width:100%;min-height:100vh;transition:background-color .3s;position:relative}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37]{color:var(--td-text-color-primary);--current-comp-op:var(--comp-op-light)}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37]:before{content:"";z-index:-1;background-position:50%;background-repeat:no-repeat;background-size:cover;background-image:var(--bg-img-light);width:100%;height:100%;opacity:var(--bg-op-light);transition:background-image .3s,opacity .3s;position:fixed;top:0;left:0}.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37]:before,html[theme-mode=dark]{background-image:var(--bg-img-dark)!important;opacity:var(--bg-op-dark)!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-layout,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-layout__content,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-content,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-layout__header,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-header,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-layout__sider,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-aside{box-shadow:none!important;background:0 0!important;border:none!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-menu,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-head-menu,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-default-menu,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-default-menu__inner,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-head-menu__inner,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-menu__scroll,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .mslx-webpanel-side-nav,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .mslx-webpanel-header-layout,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-card__header,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-card__footer,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-card__body{box-shadow:none!important;--td-bg-color-container:transparent!important;--td-bg-color-secondarycontainer:color-mix(in srgb, var(--td-bg-color-container-hover) calc(var(--current-comp-op) * 100%), transparent)!important;--td-component-stroke:transparent!important;--td-gray-color-13:transparent!important;background:0 0!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-menu--dark{--td-bg-color-container:transparent!important;background:0 0!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-card,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .design-card,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-textarea__inner,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-input-number,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-input{transition:background-color .3s,border-color .3s;background-color:rgba(255, 255, 255, var(--comp-op-light))!important;-webkit-backdrop-filter:none!important;border-color:#ffffff4d!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-input,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-textarea__inner,.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .t-input-number{border-color:var(--td-component-border)!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .terminal-wrapper{background-color:rgba(255, 255, 255, var(--comp-op-light))!important;border:1px solid #ffffff4d!important}.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37],html[theme-mode=dark]{--current-comp-op:var(--comp-op-dark)}.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .design-card,html[theme-mode=dark],.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .t-card,html[theme-mode=dark]{background-color:rgba(20, 20, 20, var(--comp-op-dark))!important;border-color:#ffffff14!important}.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .t-input,html[theme-mode=dark],.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .t-textarea__inner,html[theme-mode=dark],.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .t-input-number,html[theme-mode=dark]{border-color:var(--td-component-border)!important;background-color:#0000!important}.global-layout-bg.custom-theme-enabled.dark[data-v-b0aaaf37] .terminal-wrapper,html[theme-mode=dark]{background-color:rgba(20, 20, 20, var(--comp-op-dark))!important;--td-component-stroke:#ffffff1a!important;border:1px solid #ffffff14!important}.global-layout-bg.custom-theme-enabled[data-v-b0aaaf37] .md-editor-preview blockquote{background-color:color-mix(in srgb, var(--md-theme-quote-bg-color), transparent 80%)!important}html[theme-mode=dark],html.dark{border:0!important;outline:none!important}@font-face{font-family:TencentSansW7;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAusAA4AAAAAEJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAALkAAAABwAAAAchqPqzUdERUYAAAtwAAAAHgAAAB4AKQAbT1MvMgAAAbgAAABZAAAAYGmceoNjbWFwAAACYAAAAJcAAAHsPmfPZmdhc3AAAAtkAAAADAAAAAwACAAbZ2x5ZgAAAywAAAW8AAAG/Ivn/ztoZWFkAAABRAAAADYAAAA2E+AL5GhoZWEAAAF8AAAAIAAAACQIawJ9aG10eAAAAhQAAABMAAAATCG/Auxsb2NhAAADAAAAACwAAAAsDjIQIm1heHAAAAGcAAAAGgAAACAAfgBDbmFtZQAACOgAAAIUAAAEm0zGvtJwb3N0AAAK/AAAAGYAAAB/4wuGdnByZXAAAAL4AAAACAAAAAhwAgESAAEAAAABBR/xlpGAXw889QALA+gAAAAA2Ac3gwAAAADY+IxB//L/HAPPAwAAAAAIAAIAAAAAAAB42mNgZGBgWf7vFAMD84v/n/7vZD7PABRBAYIAwxQH7XjaY2BkYGAQZXBiYGEAAUYGGEiBUAAMEQDCAAB42mNgYepm2sPAysDA1MUUwcDA4A2hGeMYjBjNgKI8HMxMTCz8TCwLGJj2CzCAgRiI8PX382d0YGBMEmQ2+u/FcIJlOVA9CwMjSI6JlekwkFJgYAQAR1kL+QAAAAJYAHYAAAAAAU0AAAEEAAACUAAhAlYAFQJUACACKgAdAZUANgEUABUBYAAkA5wAFQINABsBqAA0AnAAKgJYACoD6ACF//YANP/yACN42mNgYGBmgGAZBkYGEHgG5DGC+SwMp4C0HIMAUISPQYEhiSGNIZMhl6GUoZJhgeIkfS6/N4GpQQuSBP//B+tMZEgByucwFGOT/7/4/6L/C/7P+z/z/7T/yffqLrJvVFu3Zm3xPJBtcgz4ADPFkIGRDWgMIcBAIWBhZWBj52Bg4GRg4OIGi/Dw8gFJfgYqA/JcCgA99Se8ALgB/4W4AAGNAAAAFAAUABQAFABSAIIAsgD6ASIBOAFYAYIBxgHwAhQCRAJaAogCygMYA3542k1Ua2xTZRj+LmtP23Vdz2lPz3pZb2dr1+u2nq2H0d3Z2OhI5mC4AZMBo0gM98E0oRn1AqgoIYDG4BAkakDkJ4iyiCZGAiISUH8YjIQfEhNUMCoJrme+bTfkx/nxveec53ne533eDxE0Nn0V/0V2I4oYhATWw1ZKrDiGx5Vfzp6NkXPZ7mH8ECGCPNNXiZWokANVIYRjFt7MUI83iuvrWnAzTWA5Xl/nC2G/SZJFr7oUq3mzBaf7F5S0Kt+F59i1aq0j0tbwJmXcwUtsz3HHhEtQaYr0RFUbL0sqB8yRClvcG2uwa7hKg4VLKdFjZmeEN5SwwM0Dd4DcRaXAXuAuxQYqekwSIxRoqRRrxjLevrK/RNCUhXt7lYevpQMf6StjW1sz/gCrIqqm+Z7krsjCmJU67/zexrvMykE+CniA7wb8oUf4EhW9vtm2qGQSvQY808+t9Ov/5ih0zlhfyytfbGodd/ht2rJiH7k7dTtP0NQTYpUo3qDzSnsSVpc5j18O+DzRIzeqyel34nwDOISZHGoCM6I3SvKMRJppKM8pxeIy3tbU4S4y6Oc231Sp3OFLgXMV7dV2xq8L9K9IUZvY5XAZi4wfms2U6K21PoHvnVfvchitXEorhH2O4K253RUTnIYt0Xv4ITanB6M4zPwm9GuBQ4GIEaloEmVJzvXM4JeqXaxWfYg7tCi9qIddqNZZg53yKEv2lLgkEWaDr6fERHfEnEL5/mA+uJzcLmTIJEsMNUl0t5AR7o+kR8jqTCa7nsjZS3nuCvg2DtwcpC3ftQzfgg1ODMRfBjt8eiP8ZLAE7HNDsRJPUKhYTmqy13osvJGm4H/gomsgh8Ksk2oGpM+kAHqAh0wmuitpSWO6SWer2NOX7vu8D2SouFCACSSVk3hgjmBllRp8Takhck6THTT9DZjVoMkPprfgmSE8igHzKNOJ//MX4X4rN6m0VF022lan02g4R11DNngDahqoPQe1YoZ31SRiKWN5fammqNgddMiRcNheAoXIbKGlKsoXo7w3daDjFDmNbOAiM+uJOONSbjoSIzEPI1owpyO0oL6twlAcSbI9zrTzKIePTdeaeZamOHe4zJtA06kTJ3J+BSF7vdCbKZ/swsbGZzyHZvCN9BrlzmN+vUVU2UsFq/CAcjJnVV5bcNpB2gCnPI9jILDquZ1rwflleQzwqx1ri8PJzh+4K3GnUcPsg32pSdfAJmYA+dPm+a61rBj0N3Z5ktio3Gu1uAqZ3IVW0R2Ar4GDwIiyp97jJ5MXLuzbn71IGvYT1fXrR545kvdp+p/pNB0nvyI7QiqR+A2UEZupLPmjOK/KIlg4On741U6xf3hj49Ha0e2bov3tVFd6oOx2uVvb9dlLeOTjxt1797XUvDBx+snTOv1Sk/2y0g7YRTCDNP2WIqSHhLqQCHQGnEuYmpHhhvFYBNHnV8UsUPJLpjjwYZNA8ZC+yv7Uxu5QiG/vMWOfNzzq9uH7XqFoyz3byRWUv1ClnNowsoqi+CYp248fhN0TC94YXrSkYyRod03dWkYOmpdOfUAetGWTiE7/CRomQYML+VG0kHOG5AjjpjjE0kAYMc7JubMsqZnK3GvqMQmNOHcR4u9t5Woai31t3xXxYVrcaZQXt+5cOWZZV7ZXp94Io6u1C5Q+rZzY+pP62YEdZEmpx6QcUb4ZnMJ2nXbs2uWtb+P57w6sSoYytQYnl62juhVEnT1e2HURtF0EbQnUBsrAD9AADglwhfgLHkWxX2TiMqPOeyQzftinXHjhbVwuJVIdiOY9fvBRstDzyh9Ys6B6W2h0HnvO85DbvMsa2xJhNPgiPzBkaN4W/NF+0PaOd/ug7Yz+DNfVp3/v5+Jx8yRdT3F5dLMorLXik6PrnhhYfKAxM/hyb0Oanycm3+86bHMPC6JyZfB8YJnN8sngi4xqqdq3nN0//vzOTNXq5YsR+g8984WfeNq1Us1qFEEQ/npnk0X8IQGJIjnUSRLYLLt7MMlFCHvNKRvMuTPTmZ1kdib0zAY3ePMFfAAvigi5+Ry+gA8iiOLFr3tbTFZWcnGgu76qrvqqpqoAPMQ3KMy+A3wMWOGBehRwAy31LOAIayoPuEmfdwEv4Z76HPAy7quvAbfwqvEz4BXcjd4EvIpG9J5sqnmH2gfP7LDCOn4E3CD/04AjtNXzgJtYV68DXsJj9SngZTxRXwJu4XtDBbyCtehlwKtoRm8xQIlzTGGRIcUINQRXPH100cMOtgLape0QBgVif9dBjxlTkCPnSckj2MCQNudzGeQmrS5PB22ifcYmxII9RuWUf3JXXjOUhvKCt/PEoDyf2iwd1XIl/W5vZ4vXrhyaIjZFTRmPijIv06lsDEemuOTZlEHZact+nXRkL8/FR1diTWXshUnIefNnhtCULv0Rtvk4ox7qopKjbbcNhhVOWK1mXTgw6STX9t8kMh91k1RuRfJXJS98Zyp2rKSbcDIdzqfPB2OrrCyk1+n2F3HOMzrC+aFmPrcOg0i9XvukbhhCbPmaUBv73zqjrcTJf1gPV7PL6PK4yGN6L6oq882IvaWm/0w/ZfOt9014x3yZta1yS/V7fbJKNBcjzaraWJNIbXVixtqeSXly6x3TRSJjPZVjc50qKyQ2ttaUpxObVUkW15xRtXD9rg8Hs3FxRr8ATJnl93jaY2BiAIP/zQxGDNiAKBAzMjAxMjG4MLgyuDN4MHgy+DD4MwQwhDGEM0QwxDAyM7IwsjKyMbKzl+ZlGhgYGHIlFhXllxdlpmeUgISM3AwcQbSJq6sziDY1cjQA0WZGhoYAgBwU3AAAAAEAAgAIAAr//wAPAAEAAAAMAAAAFgAAAAIAAQADABQAAQAEAAAAAgAAAAAAAAABAAAAANWkJwgAAAAA2Ac3gwAAAADY+IxB)format("woff");font-weight:400;font-style:normal}:root,:root[theme-mode=light]{--td-brand-color-1:#f2f3ff;--td-brand-color-2:#d9e1ff;--td-brand-color-3:#b5c7ff;--td-brand-color-4:#8eabff;--td-brand-color-5:#618dff;--td-brand-color-6:#366ef4;--td-brand-color-7:#0052d9;--td-brand-color-8:#003cab;--td-brand-color-9:#002a7c;--td-brand-color-10:#001a57}:root[theme-mode=dark]{--td-brand-color-1:#1b2f51;--td-brand-color-2:#173463;--td-brand-color-3:#143975;--td-brand-color-4:#103d88;--td-brand-color-5:#0d429a;--td-brand-color-6:#054bbe;--td-brand-color-7:#2667d4;--td-brand-color-8:#4582e6;--td-brand-color-9:#699ef5;--td-brand-color-10:#96bbf8}:root[theme-color=cyan]{--td-brand-color:#0594fa;--td-brand-color-1:#d7eefe;--td-brand-color-2:#aeddfd;--td-brand-color-3:#84cafd;--td-brand-color-4:#58b8fc;--td-brand-color-5:#29a4fb;--td-brand-color-6:#0594fa;--td-brand-color-7:#29a4fb;--td-brand-color-8:#0594fa;--td-brand-color-9:#0378df;--td-brand-color-10:#01409b}:root[theme-color=cyan][theme-mode=dark]{--td-brand-color:#29a4fb;--td-brand-color-1:#01409b;--td-brand-color-2:#0152b3;--td-brand-color-3:#0264ca;--td-brand-color-4:#0378df;--td-brand-color-5:#0594fa;--td-brand-color-6:#29a4fb;--td-brand-color-7:#0594fa;--td-brand-color-8:#29a4fb;--td-brand-color-9:#58b8fc;--td-brand-color-10:#d7eefe}:root[theme-color=green]{--td-brand-color-1:#e8f8f2;--td-brand-color-2:#bcebdc;--td-brand-color-3:#85dbbe;--td-brand-color-4:#48c79c;--td-brand-color-5:#00a870;--td-brand-color-6:#078d5c;--td-brand-color-7:#067945;--td-brand-color-8:#00a870;--td-brand-color-9:#044f2a;--td-brand-color-10:#033017}:root[theme-color=green][theme-mode=dark]{--td-brand-color:#03a56f;--td-brand-color-1:#024b15;--td-brand-color-2:#03965c;--td-brand-color-3:#03a56f;--td-brand-color-4:#04c383;--td-brand-color-5:#03965c;--td-brand-color-6:#03a56f;--td-brand-color-7:#04c383;--td-brand-color-8:#03a56f;--td-brand-color-9:#05eb9f;--td-brand-color-10:#91fdd9}:root[theme-color=orange]{--td-brand-color-1:#fce5d7;--td-brand-color-2:#f8cdaf;--td-brand-color-3:#f4b285;--td-brand-color-4:#f19659;--td-brand-color-5:#ed7b2f;--td-brand-color-6:#e75510;--td-brand-color-7:#f19659;--td-brand-color-8:#ed7b2f;--td-brand-color-9:#e75510;--td-brand-color-10:#7f0a02;--td-brand-color:#ed7b2f}:root[theme-color=orange][theme-mode=dark]{--td-brand-color:#ed7b2f;--td-brand-color-1:#692204;--td-brand-color-2:#873105;--td-brand-color-3:#a24006;--td-brand-color-4:#c25110;--td-brand-color-5:#d66724;--td-brand-color-6:#ed8139;--td-brand-color-7:#ff9852;--td-brand-color-8:#ed7b2f;--td-brand-color-9:#ed7b2f;--td-brand-color-10:#fce5d7}:root[theme-color=pink]{--td-brand-color:#ed49b4;--td-brand-color-1:#fce5f4;--td-brand-color-2:#facae9;--td-brand-color-3:#f7aede;--td-brand-color-4:#f491d2;--td-brand-color-5:#f172c5;--td-brand-color-6:#ed49b4;--td-brand-color-7:#f172c5;--td-brand-color-8:#ed49b4;--td-brand-color-9:#e80f9d;--td-brand-color-10:#8f025e}:root[theme-color=pink][theme-mode=dark]{--td-brand-color:#ff70cf;--td-brand-color-1:#5b374f;--td-brand-color-2:#9b066d;--td-brand-color-3:#bc088a;--td-brand-color-4:#d435a0;--td-brand-color-5:#ed53b7;--td-brand-color-6:#ff70cf;--td-brand-color-7:#ff99e4;--td-brand-color-8:#ff70cf;--td-brand-color-9:#ffdbfd;--td-brand-color-10:#fff2ff}:root[theme-color=purple]{--td-brand-color:#834ec2;--td-brand-color-1:#eee6f7;--td-brand-color-2:#ddceee;--td-brand-color-3:#ccb6e6;--td-brand-color-4:#bb9edc;--td-brand-color-5:#ab87d5;--td-brand-color-6:#9a6fce;--td-brand-color-7:#9a6fce;--td-brand-color-8:#834ec2;--td-brand-color-9:#783ac3;--td-brand-color-10:#4c1397}:root[theme-color=purple][theme-mode=dark]{--td-brand-color:#ab87d5;--td-brand-color-1:#4c1397;--td-brand-color-2:#6325b0;--td-brand-color-3:#783ac3;--td-brand-color-4:#834ec2;--td-brand-color-5:#9a6fce;--td-brand-color-6:#ab87d5;--td-brand-color-7:#ab87d5;--td-brand-color-8:#ab87d5;--td-brand-color-9:#ccb6e6;--td-brand-color-10:#eee6f7}:root[theme-color=red]{---td-brand-color:#e34d59;--td-brand-color-1:#fbe5e7;--td-brand-color-2:#f7ccd0;--td-brand-color-3:#f3b2b8;--td-brand-color-4:#ef989f;--td-brand-color-5:#ea7b84;--td-brand-color-6:#e34d59;--td-brand-color-7:#ea7b84;--td-brand-color-8:#e34d59;--td-brand-color-9:#e42c3a;--td-brand-color-10:#8d0309}:root[theme-color=red][theme-mode=dark]{--td-brand-color:#fb6e77;--td-brand-color-1:#4f3335;--td-brand-color-2:#960627;--td-brand-color-3:#b01c37;--td-brand-color-4:#c9384a;--td-brand-color-5:#e35661;--td-brand-color-6:#fb6e77;--td-brand-color-7:#ff9195;--td-brand-color-8:#fb6e77;--td-brand-color-9:#ffd6d8;--td-brand-color-10:#fff2f2}:root[theme-color=yellow]{--td-brand-color:#ebb105;--td-brand-color-1:#fde9ab;--td-brand-color-2:#fbd152;--td-brand-color-3:#ebb105;--td-brand-color-4:#dda204;--td-brand-color-5:#ca8d03;--td-brand-color-6:#b67803;--td-brand-color-7:#fbd152;--td-brand-color-8:#ebb105;--td-brand-color-9:#dda204;--td-brand-color-10:#603100}:root[theme-color=yellow][theme-mode=dark]{--td-brand-color:#ca8d03;--td-brand-color-1:#603100;--td-brand-color-2:#764101;--td-brand-color-3:#8c5201;--td-brand-color-4:#a16502;--td-brand-color-5:#b67803;--td-brand-color-6:#ca8d03;--td-brand-color-7:#764101;--td-brand-color-8:#ca8d03;--td-brand-color-9:#a16502;--td-brand-color-10:#fde9ab}#app{height:100%;overflow:hidden}body{color:var(--td-text-color-secondary);font-family:-apple-system, BlinkMacSystemFont, var(--td-font-family);font:var(--td-font-body-medium);-webkit-font-smoothing:antialiased;margin:0;padding:0}pre{font-family:var(--td-font-family)}ul,dl,li,dd,dt{margin:0;padding:0;list-style:none}figure,h1,h2,h3,h4,h5,h6,p{margin:0}*{box-sizing:border-box}.t-button-link,a{color:var(--td-brand-color);cursor:pointer;text-decoration:none;transition:color .2s cubic-bezier(.38,0,.24,1)}.t-button-link:hover,a:hover{color:var(--td-brand-color-hover)}.t-button-link:active,a:active,.t-button-link--active,a--active{color:var(--td-brand-color-active)}.t-button-link:focus,a:focus{text-decoration:none}.t-button-link{margin-right:var(--td-comp-margin-xxl)}.t-button-link:last-child{margin-right:0}@reference "@/style/tailwind/index.css";@media (max-width:768px){[data-v-d3e49ecc] .update-modal{max-width:400px;width:90vw!important}}.custom-scrollbar[data-v-d3e49ecc]{scrollbar-width:thin;scrollbar-color:var(--td-scrollbar-color) transparent}.custom-scrollbar[data-v-d3e49ecc]::-webkit-scrollbar{width:6px}.custom-scrollbar[data-v-d3e49ecc]::-webkit-scrollbar-thumb{background:var(--td-scrollbar-color);border-radius:4px}#nprogress .bar[data-v-ae5a7772]{background:var(--td-brand-color)!important}@keyframes jellyPop-a7ac6aaa{0%{transform:scale(1)}30%{transform:scale(.85)}50%{transform:scale(1.15)}65%{transform:scale(.95)}80%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes magicBurst-a7ac6aaa{0%{box-shadow:0 0 0 0 var(--color-primary);opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.2);box-shadow:0 0 0 35px #0000}}.animate-jelly-pop[data-v-a7ac6aaa]{animation:.6s cubic-bezier(.25,1,.5,1) both jellyPop-a7ac6aaa}.animate-magic-burst[data-v-a7ac6aaa]{animation:.6s cubic-bezier(.1,.8,.3,1) both magicBurst-a7ac6aaa}@reference "@/style/tailwind/index.css";.custom-scrollbar[data-v-cf423ea7]::-webkit-scrollbar{width:6px}@apply bg-zinc-300 dark:bg-zinc-600 rounded-full;[data-v-cf423ea7] .custom-md-preview{--md-bk-color:transparent!important;--md-color:inherit!important;text-align:left!important}[data-v-cf423ea7] .md-editor-preview a{color:var(--color-primary);text-decoration:none}[data-v-cf423ea7] .md-editor-preview a:hover{text-decoration:underline}[data-v-cf423ea7] .md-editor-preview code:not([class*=language-]){color:var(--color-primary);background-color:color-mix(in srgb, var(--color-primary), transparent 90%);border-radius:4px;padding:2px 4px}[data-v-cf423ea7] .md-editor-preview blockquote{background:0 0}[data-v-cf423ea7] .md-editor div.default-theme{--md-theme-quote-border:4px solid var(--color-primary)}[data-v-cf423ea7] .md-editor-preview{--md-color:inherit!important}[data-v-cf423ea7] .md-editor-preview table tr:nth-child(2n),[data-v-cf423ea7] .md-editor-preview table tr:nth-child(n){background-color:#0000}.list-item-anim[data-v-53cd7119]{will-change:transform, opacity;animation:.5s cubic-bezier(.2,.8,.2,1) backwards slideUp-53cd7119}@keyframes slideUp-53cd7119{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.list-item-anim[data-v-4d8c8b99]{will-change:transform, opacity;animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-4d8c8b99}@keyframes slideUp-4d8c8b99{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}[data-v-4d8c8b99] .t-avatar{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:#e4e4e780}@supports (color:color-mix(in lab, red, red)){[data-v-4d8c8b99] .t-avatar{--tw-ring-color:color-mix(in oklab, var(--color-zinc-200,lab(90.6853% .399232 -1.45452)) 50%, transparent)}}[data-v-4d8c8b99] .t-avatar:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){[data-v-4d8c8b99] .t-avatar:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)}}@reference "@/style/tailwind/index.css";@apply !p-0 !overflow-hidden;@apply !pb-4 border-b border-zinc-100 dark:border-zinc-800;.custom-scrollbar[data-v-d4c19aa2]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-d4c19aa2]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-d4c19aa2]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-d4c19aa2]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-d4c19aa2]::-webkit-scrollbar-track{background:0 0}@media (max-width:768px){.hide-scrollbar-on-mobile[data-v-d4c19aa2]::-webkit-scrollbar{display:none}.hide-scrollbar-on-mobile[data-v-d4c19aa2]{scrollbar-width:none;-ms-overflow-style:none}}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-235e2927]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-235e2927}@keyframes slideUp-235e2927{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.custom-scrollbar[data-v-235e2927]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-235e2927]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-235e2927]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-235e2927]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-235e2927]::-webkit-scrollbar-track{background:0 0}@apply !flex !items-start !gap-4 !pb-8 !m-0;@apply !w-8 !h-8 !rounded-full !flex !items-center !justify-center !border-2 !text-sm !font-extrabold !bg-transparent !transition-colors !duration-300 !z-10 !relative;@apply !border-[var(--color-primary)] !text-[var(--color-primary)] !bg-[var(--color-primary)]/10 shadow-[0_0_12px_var(--color-primary-light)]/40;@apply !border-zinc-200 dark:!border-zinc-700 !text-zinc-400 dark:!text-zinc-500 !bg-transparent;@apply !border-[var(--color-success)] !text-[var(--color-success)] !bg-[var(--color-success)]/10;@apply !text-sm !font-extrabold !text-zinc-800 dark:!text-zinc-200 !leading-none !mb-1.5 !transition-colors;@apply !text-[var(--color-primary)];@apply !text-xs !font-medium !text-zinc-500 dark:!text-zinc-400 !leading-relaxed;[data-v-235e2927] .custom-steps .t-steps-item:not(:last-child):after{content:""}@apply !absolute !w-[2px] !bg-zinc-200 dark:!bg-zinc-700 !top-8 !bottom-0 !left-[15px] !z-0;@apply !bg-[var(--color-primary)]/50;@reference "@/style/tailwind/index.css";.list-item-anim[data-v-af6238d0]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-af6238d0}@keyframes slideUp-af6238d0{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}[data-v-af6238d0] .code-font-textarea textarea{white-space:pre;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.6}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-bfac10be]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-bfac10be}@keyframes slideUp-bfac10be{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.custom-scrollbar[data-v-bfac10be]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-bfac10be]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-bfac10be]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-bfac10be]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-bfac10be]::-webkit-scrollbar-track{background:0 0}@apply !flex !items-start !gap-4 !pb-8 !m-0;@apply !w-8 !h-8 !rounded-full !flex !items-center !justify-center !border-2 !text-sm !font-extrabold !bg-transparent !transition-colors !duration-300 !z-10 !relative;@apply !border-[var(--color-primary)] !text-[var(--color-primary)] !bg-[var(--color-primary)]/10 shadow-[0_0_12px_var(--color-primary-light)]/40;@apply !border-zinc-200 dark:!border-zinc-700 !text-zinc-400 dark:!text-zinc-500 !bg-transparent;@apply !border-[var(--color-success)] !text-[var(--color-success)] !bg-[var(--color-success)]/10;@apply !text-sm !font-extrabold !text-zinc-800 dark:!text-zinc-200 !leading-none !mb-1.5 !transition-colors;@apply !text-[var(--color-primary)];@apply !text-xs !font-medium !text-zinc-500 dark:!text-zinc-400 !leading-relaxed;[data-v-bfac10be] .custom-steps .t-steps-item:not(:last-child):after{content:""}@apply !absolute !w-[2px] !bg-zinc-200 dark:!bg-zinc-700 !top-8 !bottom-0 !left-[15px] !z-0;@apply !bg-[var(--color-primary)]/50;@reference "@/style/tailwind/index.css";.list-item-anim[data-v-d33adaae]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-d33adaae}@keyframes slideUp-d33adaae{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.custom-scrollbar[data-v-d33adaae]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-d33adaae]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-d33adaae]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-d33adaae]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-d33adaae]::-webkit-scrollbar-track{background:0 0}[data-v-d33adaae] .code-font-textarea textarea{white-space:pre;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.6}@apply !flex !items-start !gap-4 !pb-8 !m-0;@apply !w-8 !h-8 !rounded-full !flex !items-center !justify-center !border-2 !text-sm !font-extrabold !bg-transparent !transition-colors !duration-300 !z-10 !relative;@apply !border-[var(--color-primary)] !text-[var(--color-primary)] !bg-[var(--color-primary)]/10 shadow-[0_0_12px_var(--color-primary-light)]/40;@apply !border-zinc-200 dark:!border-zinc-700 !text-zinc-400 dark:!text-zinc-500 !bg-transparent;@apply !border-[var(--color-success)] !text-[var(--color-success)] !bg-[var(--color-success)]/10;@apply !text-sm !font-extrabold !text-zinc-800 dark:!text-zinc-200 !leading-none !mb-1.5 !transition-colors;@apply !text-[var(--color-primary)];@apply !text-xs !font-medium !text-zinc-500 dark:!text-zinc-400 !leading-relaxed;[data-v-d33adaae] .custom-steps .t-steps-item:not(:last-child):after{content:""}@apply !absolute !w-[2px] !bg-zinc-200 dark:!bg-zinc-700 !top-8 !bottom-0 !left-[15px] !z-0;@apply !bg-[var(--color-primary)]/50;@reference "@/style/tailwind/index.css";.list-item-anim[data-v-5d3f8bde]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-5d3f8bde}@keyframes slideUp-5d3f8bde{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.list-item-anim[data-v-fb34b079]{will-change:transform, opacity;animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-fb34b079}@keyframes slideUp-fb34b079{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@reference "@/style/tailwind/index.css";.custom-scrollbar[data-v-71bc696a]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-71bc696a]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-71bc696a]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-71bc696a]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-71bc696a]::-webkit-scrollbar-track{background:0 0}.custom-tabs[data-v-71bc696a] .t-tabs__nav-container{padding:0 12px;border-bottom:1px solid var(--td-component-stroke)!important;background-color:#0000!important}.custom-tabs[data-v-71bc696a] .t-tabs__content,.custom-tabs[data-v-71bc696a] .t-tab-panel{background-color:#0000!important;padding:0!important}.custom-tabs[data-v-71bc696a] .t-tabs__nav-item{color:var(--td-text-color-secondary);font-size:13px;background-color:#0000!important}.custom-tabs[data-v-71bc696a] .t-tabs__nav-item:hover{color:var(--td-text-color-primary)}.custom-tabs[data-v-71bc696a] .t-tabs__nav-item.t-is-active{color:var(--td-brand-color);font-weight:700}.list-item-anim[data-v-2e07fa53]{will-change:transform, opacity;animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-2e07fa53}@keyframes slideUp-2e07fa53{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.list-anim-enter-active[data-v-2e07fa53],.list-anim-leave-active[data-v-2e07fa53]{will-change:transform, opacity;transition:transform .4s cubic-bezier(.2,.8,.2,1),opacity .4s}.list-anim-enter-from[data-v-2e07fa53],.list-anim-leave-to[data-v-2e07fa53]{opacity:0;transform:translateY(16px)scale(.98)}.list-anim-leave-active[data-v-2e07fa53]{width:100%;position:absolute}.result-link[data-v-635c4716]{color:var(--td-brand-color);cursor:pointer;text-decoration:none}.result-link[data-v-635c4716]:hover,.result-link[data-v-635c4716]:active,.result-link--active[data-v-635c4716]{color:var(--td-brand-color)}.result-link[data-v-635c4716]:focus{text-decoration:none}.result-container[data-v-635c4716]{flex-direction:column;justify-content:center;align-items:center;height:75vh;min-height:400px;padding:24px;display:flex}.result-bg-img[data-v-635c4716]{width:200px;color:var(--td-brand-color)}.result-title[data-v-635c4716]{color:var(--td-text-color-primary);font-style:normal;font:var(--td-font-title-large);margin-top:8px;font-weight:500}.result-tip[data-v-635c4716]{font:var(--td-font-body-medium);color:var(--td-text-color-secondary);margin:8px 0 32px}.grid>div[data-v-beedb160]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-beedb160}@keyframes slideUp-beedb160{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}[data-v-beedb160] .t-avatar{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:#e4e4e780}@supports (color:color-mix(in lab, red, red)){[data-v-beedb160] .t-avatar{--tw-ring-color:color-mix(in oklab, var(--color-zinc-200,lab(90.6853% .399232 -1.45452)) 50%, transparent)}}[data-v-beedb160] .t-avatar:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){[data-v-beedb160] .t-avatar:where([theme-mode=dark],[theme-mode=dark] *){--tw-ring-color:color-mix(in oklab, var(--color-zinc-700,lab(26.8019% 1.35387 -4.68303)) 50%, transparent)}}[data-v-beedb160] .t-dialog{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);border-radius:var(--radius-2xl,1rem)!important}[data-v-beedb160] .t-checkbox__label{width:100%!important}@reference "@/style/tailwind/index.css";[data-v-132cd77f] .code-font-textarea textarea{white-space:pre;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.6}@apply !text-zinc-800 dark:!text-zinc-300;.fade-enter-active[data-v-132cd77f],.fade-leave-active[data-v-132cd77f]{transition:opacity .3s,transform .3s}.fade-enter-from[data-v-132cd77f],.fade-leave-to[data-v-132cd77f]{opacity:0;transform:translate(-10px)}@reference "@/style/tailwind/index.css";.custom-scrollbar[data-v-d3ff2a1d]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-d3ff2a1d]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-d3ff2a1d]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-d3ff2a1d]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-d3ff2a1d]::-webkit-scrollbar-track{background:0 0}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-8adb5690]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-8adb5690}@keyframes slideUp-8adb5690{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes smoothLoadingGlass-8adb5690{0%{-webkit-backdrop-filter:blur(.01px)!important}to{-webkit-backdrop-filter:blur(4px)!important}}@apply !rounded-2xl !bg-white/50 dark:!bg-zinc-900/50;[data-v-8adb5690] .t-loading__overlay{animation:.3s cubic-bezier(.2,.8,.2,1) forwards smoothLoadingGlass-8adb5690!important}.custom-scrollbar[data-v-8adb5690]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-8adb5690]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-8adb5690]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-8adb5690]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-8adb5690]::-webkit-scrollbar-track{background:0 0}@reference "@/style/tailwind/index.css";.fade-enter-active[data-v-31ad130e],.fade-leave-active[data-v-31ad130e]{transition:opacity .3s,transform .3s}.fade-enter-from[data-v-31ad130e],.fade-leave-to[data-v-31ad130e]{opacity:0;transform:translate(-10px)}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-5267eb05]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-5267eb05}@keyframes slideUp-5267eb05{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes smoothLoadingGlass-5267eb05{0%{-webkit-backdrop-filter:blur(.01px)!important}to{-webkit-backdrop-filter:blur(4px)!important}}.custom-scrollbar[data-v-5267eb05]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-5267eb05]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-5267eb05]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-5267eb05]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-5267eb05]::-webkit-scrollbar-track{background:0 0}@apply !rounded-2xl !bg-white/50 dark:!bg-zinc-900/50;[data-v-5267eb05] .t-loading__overlay{animation:.3s cubic-bezier(.2,.8,.2,1) forwards smoothLoadingGlass-5267eb05!important}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-61762945]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-61762945}@keyframes slideUp-61762945{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes smoothLoadingGlass-61762945{0%{-webkit-backdrop-filter:blur(.01px)!important}to{-webkit-backdrop-filter:blur(4px)!important}}.custom-scrollbar[data-v-61762945]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-61762945]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-61762945]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-61762945]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-61762945]::-webkit-scrollbar-track{background:0 0}@apply !rounded-2xl !bg-white/50 dark:!bg-zinc-900/50;[data-v-61762945] .t-loading__overlay{animation:.3s cubic-bezier(.2,.8,.2,1) forwards smoothLoadingGlass-61762945!important}.list-item-anim[data-v-dfc04ce3]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-dfc04ce3}@keyframes slideUp-dfc04ce3{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes smoothLoadingGlass-dfc04ce3{0%{-webkit-backdrop-filter:blur(.01px)!important}to{-webkit-backdrop-filter:blur(4px)!important}}.custom-scrollbar[data-v-dfc04ce3]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-dfc04ce3]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-dfc04ce3]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-dfc04ce3]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-dfc04ce3]::-webkit-scrollbar-track{background:0 0}[data-v-dfc04ce3] .t-loading__overlay{background:#ffffff80!important;border-radius:1rem!important;animation:.3s cubic-bezier(.2,.8,.2,1) forwards smoothLoadingGlass-dfc04ce3!important}.dark{background:#18181b80!important}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-02481195]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-02481195}@keyframes slideUp-02481195{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@reference "@/style/tailwind/index.css";.terminal-body-container[data-v-ac76d718] .xterm,.terminal-body-container[data-v-ac76d718] .xterm-viewport,.terminal-body-container[data-v-ac76d718] .xterm-screen,.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element{touch-action:none;background-color:#0000!important}.terminal-body-container[data-v-ac76d718] .xterm-viewport{overflow-y:hidden!important}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto;overflow-y:auto!important}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar-thumb:hover{background:#797979cc}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar-track{background:0 0}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar{background-color:#0000;width:12px!important}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar-thumb{background-color:#d4d4d8;background-clip:content-box;border:3px solid #0000;border-radius:10px}.terminal-body-container[data-v-ac76d718] .xterm-scrollable-element::-webkit-scrollbar-thumb:hover{border-width:2px}@reference "@/style/tailwind/index.css";[data-v-454d5ea2] .t-dialog{max-width:95vw!important}[data-v-454d5ea2] .cm-editor{font-variant-ligatures:common-ligatures;font-family:Maple Mono,Maple Mono CN,Cascadia Code,Consolas,Menlo,PingFang SC,Microsoft YaHei,monospace!important}[data-v-454d5ea2] .cm-editor.cm-focused{outline:none!important}[data-v-454d5ea2] .cm-scroller,[data-v-454d5ea2] .cm-gutters{font-family:inherit!important}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-7b7858f8]{animation:.6s cubic-bezier(.2,.8,.2,1) backwards slideUp-7b7858f8}@keyframes slideUp-7b7858f8{0%{transform:translateY(20px)}to{transform:translateY(0)}}.list-item-anim[data-v-7b7858f8] .terminal-wrapper{animation:.6s cubic-bezier(.2,.8,.2,1) backwards glassFadeIn-7b7858f8;animation-delay:inherit}@keyframes glassFadeIn-7b7858f8{0%{opacity:0;-webkit-backdrop-filter:blur()!important}}.custom-scrollbar[data-v-7b7858f8]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-7b7858f8]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-7b7858f8]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-7b7858f8]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-7b7858f8]::-webkit-scrollbar-track{background:0 0}@media (max-width:768px){.hide-scrollbar-on-mobile[data-v-7b7858f8]::-webkit-scrollbar{display:none}.hide-scrollbar-on-mobile[data-v-7b7858f8]{scrollbar-width:none;-ms-overflow-style:none}}.terminal-body-container[data-v-72f4600a] .xterm,.terminal-body-container[data-v-72f4600a] .xterm-viewport,.terminal-body-container[data-v-72f4600a] .xterm-screen,.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element{touch-action:none;background-color:#0000!important}.terminal-body-container[data-v-72f4600a] .xterm-viewport{overflow-y:hidden!important}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto;overflow-y:auto!important}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar-thumb:hover{background:#797979cc}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar-track{background:0 0}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar{background-color:#0000;width:12px!important}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar-thumb{background-color:#d4d4d8;background-clip:content-box;border:3px solid #0000;border-radius:10px}html[theme-mode=dark],html.dark{background-color:#52525b}.terminal-body-container[data-v-72f4600a] .xterm-scrollable-element::-webkit-scrollbar-thumb:hover{border-width:2px}@reference "@/style/tailwind/index.css";.memory-input-group[data-v-aad52783]{align-items:center;width:100%;max-width:110px;display:flex}.memory-input-group .input-left[data-v-aad52783]{flex:1;min-width:0}.memory-input-group .input-left[data-v-aad52783] .t-input{border-right:none!important;border-top-right-radius:0!important;border-bottom-right-radius:0!important;padding:0!important}.memory-input-group .input-left[data-v-aad52783] .t-input__inner{text-align:center!important}.memory-input-group .select-right[data-v-aad52783]{flex-shrink:0;width:40px!important}.memory-input-group .select-right[data-v-aad52783] .t-input{background-color:var(--td-bg-color-secondarycontainer)!important;border-top-left-radius:0!important;border-bottom-left-radius:0!important;padding:0!important}.memory-input-group .select-right[data-v-aad52783] .t-input__inner{text-align:center!important;color:var(--td-text-color-secondary)!important;padding:0!important;font-size:12px!important}.memory-input-group .select-right[data-v-aad52783] .t-select__right-icon{display:none!important}@reference "@/style/tailwind/index.css";.custom-scrollbar[data-v-77a13c75]{scrollbar-width:thin;scrollbar-color:var(--td-scrollbar-color) transparent}.custom-scrollbar[data-v-77a13c75]::-webkit-scrollbar{width:4px}.custom-scrollbar[data-v-77a13c75]::-webkit-scrollbar-thumb{background:var(--td-scrollbar-color);border-radius:2px}@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";.cropper-bg-pattern[data-v-3f8d4992]{background-color:#f4f4f5;background-image:repeating-conic-gradient(#e4e4e7 0% 25%,#0000 0% 50%);background-size:20px 20px}html[theme-mode=dark],html.dark{background-color:#27272a;background-image:repeating-conic-gradient(#3f3f46 0% 25%,#0000 0% 50%)}@reference "@/style/tailwind/index.css";.hide-scrollbar[data-v-903854e9]{scrollbar-width:none;-ms-overflow-style:none}.hide-scrollbar[data-v-903854e9]::-webkit-scrollbar{display:none}.custom-scrollbar[data-v-903854e9]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-903854e9]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-903854e9]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-903854e9]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-903854e9]::-webkit-scrollbar-track{background:0 0}.tab-panel-anim[data-v-903854e9]{will-change:transform, opacity;animation:.3s cubic-bezier(.2,.8,.2,1) forwards fadeSlideUp-903854e9}@keyframes fadeSlideUp-903854e9{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-fb7f5681]{will-change:transform, opacity;animation:.5s cubic-bezier(.2,.8,.2,1) backwards slideUp-fb7f5681}@keyframes slideUp-fb7f5681{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.custom-scrollbar[data-v-fb7f5681]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-fb7f5681]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-fb7f5681]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-fb7f5681]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-fb7f5681]::-webkit-scrollbar-track{background:0 0}[data-v-fb7f5681] .md-editor-preview a{color:var(--td-brand-color);font-weight:500;text-decoration:none}[data-v-fb7f5681] .md-editor-preview a:hover{text-decoration:underline}[data-v-fb7f5681] .md-editor-preview code{color:var(--td-brand-color);background-color:color-mix(in srgb, var(--td-brand-color), transparent 90%);border-radius:4px;padding:2px 4px;font-family:monospace}[data-v-fb7f5681] .md-editor div.default-theme{--md-theme-quote-border:4px solid var(--td-brand-color)}[data-v-fb7f5681] .md-editor-preview{--md-bk-color:transparent;--md-color:var(--td-text-color-primary)!important}@reference "@/style/tailwind/index.css";.hide-scrollbar[data-v-300a4e27]{scrollbar-width:none;-ms-overflow-style:none}.hide-scrollbar[data-v-300a4e27]::-webkit-scrollbar{display:none}.custom-scrollbar[data-v-300a4e27]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-300a4e27]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-300a4e27]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-300a4e27]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-300a4e27]::-webkit-scrollbar-track{background:0 0}@reference "@/style/tailwind/index.css";.custom-grid-bg[data-v-427a8642]{background-image:linear-gradient(#a1a1aa33 1px,#0000 1px),linear-gradient(90deg,#a1a1aa33 1px,#0000 1px);background-size:32px 32px}@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";.list-item-anim[data-v-7544ac33]{animation:.6s cubic-bezier(.2,.8,.2,1) backwards slideUp-7544ac33}@keyframes slideUp-7544ac33{0%{transform:translateY(20px)}to{transform:translateY(0)}}.list-item-anim[data-v-7544ac33] .terminal-wrapper{animation:.6s cubic-bezier(.2,.8,.2,1) backwards glassFadeIn-7544ac33;animation-delay:inherit}@keyframes glassFadeIn-7544ac33{0%{opacity:0;-webkit-backdrop-filter:blur()!important}}.custom-scrollbar[data-v-7544ac33]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-7544ac33]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-7544ac33]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-7544ac33]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-7544ac33]::-webkit-scrollbar-track{background:0 0}@media (max-width:768px){.hide-scrollbar-on-mobile[data-v-7544ac33]::-webkit-scrollbar{display:none}.hide-scrollbar-on-mobile[data-v-7544ac33]{scrollbar-width:none;-ms-overflow-style:none}}@reference "@/style/tailwind/index.css";[data-v-640ae127] .t-dialog{min-width:300px;max-width:90vw}[data-v-640ae127] .t-dialog__body{padding:0}@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";@reference "@/style/tailwind/index.css";.hide-scrollbar[data-v-b8115d5f]{scrollbar-width:none;-ms-overflow-style:none}.hide-scrollbar[data-v-b8115d5f]::-webkit-scrollbar{display:none}[data-v-b8115d5f] .t-breadcrumb__item.light{color:unset!important;background-color:#0000!important}.card-enter-anim[data-v-b8115d5f]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUpFade-b8115d5f}@keyframes slideUpFade-b8115d5f{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.slide-up-enter-active[data-v-b8115d5f],.slide-up-leave-active[data-v-b8115d5f]{transition:transform .3s cubic-bezier(.34,1.56,.64,1),opacity .3s}.slide-up-enter-from[data-v-b8115d5f],.slide-up-leave-to[data-v-b8115d5f]{opacity:0;transform:translate(-50%,100%)}@keyframes tableRowSlideUp-b8115d5f{0%{opacity:0;transform:translateY(12px)translateZ(0)}to{opacity:1;transform:translateY(0)translateZ(0)}}[data-v-b8115d5f] .t-table tbody tr{will-change:transform, opacity;animation:.35s cubic-bezier(.2,.8,.2,1) backwards tableRowSlideUp-b8115d5f}[data-v-b8115d5f] .t-table tbody tr:first-child{animation-delay:25ms}[data-v-b8115d5f] .t-table tbody tr:nth-child(2){animation-delay:50ms}[data-v-b8115d5f] .t-table tbody tr:nth-child(3){animation-delay:75ms}[data-v-b8115d5f] .t-table tbody tr:nth-child(4){animation-delay:.1s}[data-v-b8115d5f] .t-table tbody tr:nth-child(5){animation-delay:.125s}[data-v-b8115d5f] .t-table tbody tr:nth-child(6){animation-delay:.15s}[data-v-b8115d5f] .t-table tbody tr:nth-child(7){animation-delay:.175s}[data-v-b8115d5f] .t-table tbody tr:nth-child(8){animation-delay:.2s}[data-v-b8115d5f] .t-table tbody tr:nth-child(9){animation-delay:.225s}[data-v-b8115d5f] .t-table tbody tr:nth-child(10){animation-delay:.25s}[data-v-b8115d5f] .t-table tbody tr:nth-child(11){animation-delay:.275s}[data-v-b8115d5f] .t-table tbody tr:nth-child(12){animation-delay:.3s}[data-v-b8115d5f] .t-table tbody tr:nth-child(13){animation-delay:.325s}[data-v-b8115d5f] .t-table tbody tr:nth-child(14){animation-delay:.35s}[data-v-b8115d5f] .t-table tbody tr:nth-child(15){animation-delay:.375s}[data-v-b8115d5f] .t-table tbody tr:nth-child(n+16){animation-delay:.35s}.list-item-anim[data-v-d4c14e83]{animation:.5s cubic-bezier(.2,.8,.2,1) backwards slideUp-d4c14e83}@keyframes slideUp-d4c14e83{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){[data-v-d4c14e83] .hidden-xs{display:none!important}}[data-v-d4c14e83] .t-table__content{scrollbar-width:thin;scrollbar-color:#a1a1aa4d transparent}[data-v-d4c14e83] .t-table__content::-webkit-scrollbar{width:6px;height:6px}[data-v-d4c14e83] .t-table__content::-webkit-scrollbar-thumb{background-color:#a1a1aa4d;border-radius:4px}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-5a8b9e90]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-5a8b9e90}@keyframes slideUp-5a8b9e90{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes jellyPop-5a8b9e90{0%{transform:scale(1)}30%{transform:scale(.85)}50%{transform:scale(1.15)}65%{transform:scale(.95)}80%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes magicBurst-5a8b9e90{0%{box-shadow:0 0 0 0 var(--color-primary);opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.2);box-shadow:0 0 0 35px #0000}}.animate-jelly-pop[data-v-5a8b9e90]{animation:.6s cubic-bezier(.25,1,.5,1) both jellyPop-5a8b9e90}.animate-magic-burst[data-v-5a8b9e90]{animation:.6s cubic-bezier(.1,.8,.3,1) both magicBurst-5a8b9e90}.list-item-anim[data-v-f0fede5e]{animation:.4s cubic-bezier(.2,.8,.2,1) backwards slideUp-f0fede5e}@keyframes slideUp-f0fede5e{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}[data-v-f0fede5e] .t-input__suffix{align-items:center!important;display:flex!important}[data-v-f0fede5e] .t-upload{vertical-align:middle!important;width:auto!important;display:inline-flex!important}[data-v-f0fede5e] .t-upload__content{display:flex!important}[data-v-f0fede5e] .t-upload__tips{display:none!important}.settings-page[data-v-4a19a959]{width:100%}.construction-container[data-v-d8b4c962]{width:100%;height:100%;color:var(--td-text-color-primary);box-sizing:border-box;justify-content:center;align-items:center;padding:20px;display:flex;overflow:hidden}.content-wrapper[data-v-d8b4c962]{text-align:center;flex-direction:column;align-items:center;gap:24px;width:100%;max-width:500px;display:flex}.image-box[data-v-d8b4c962]{justify-content:center;align-items:center;width:200px;height:200px;display:flex;position:relative}.image-box .mascot-img[data-v-d8b4c962]{object-fit:contain;z-index:2;filter:drop-shadow(0 4px 12px #0000001a);border-radius:50%;width:100%;height:100%}.image-box .halo[data-v-d8b4c962]{background:var(--td-brand-color-focus);opacity:.2;z-index:1;filter:blur(20px);border-radius:50%;width:180px;height:180px;animation:3s ease-in-out infinite breathe-d8b4c962;position:absolute}.main-title[data-v-d8b4c962]{color:var(--td-brand-color);margin:0;font-family:Comic Sans MS,Chalkboard SE,sans-serif;font-size:28px;font-weight:700}.description[data-v-d8b4c962]{color:var(--td-text-color-secondary);min-height:24px;margin:0;font-size:16px;line-height:1.5}.progress-decoration[data-v-d8b4c962]{opacity:.8;width:80%}.action-area[data-v-d8b4c962]{flex-wrap:wrap;justify-content:center;gap:16px;margin-top:10px;display:flex}.urge-btn[data-v-d8b4c962]{transition:all .2s}.urge-btn[data-v-d8b4c962]:active{transform:scale(.95)}@keyframes breathe-d8b4c962{0%,to{opacity:.2;transform:scale(1)}50%{opacity:.3;transform:scale(1.2)}}.shake-anim[data-v-d8b4c962]{animation:.5s cubic-bezier(.36,.07,.19,.97) both shake-d8b4c962}@keyframes shake-d8b4c962{10%,90%{transform:translate(-1px)rotate(-1deg)}20%,80%{transform:translate(2px)rotate(2deg)}30%,50%,70%{transform:translate(-4px)rotate(-4deg)}40%,60%{transform:translate(4px)rotate(4deg)}}@media (max-width:768px){.image-box[data-v-d8b4c962]{width:150px;height:150px}.main-title[data-v-d8b4c962]{font-size:24px}}@reference "@/style/tailwind/index.css";.list-item-anim[data-v-9ca38208]{animation:.5s cubic-bezier(.2,.8,.2,1) backwards slideUp-9ca38208}@keyframes slideUp-9ca38208{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.custom-scrollbar[data-v-9ca38208]{scrollbar-color:#79797980 transparent;scrollbar-width:thin;background-color:#0000;overflow-y:auto}.custom-scrollbar[data-v-9ca38208]::-webkit-scrollbar{background-color:#0000;width:6px;height:6px}.custom-scrollbar[data-v-9ca38208]::-webkit-scrollbar-thumb{background:#79797980;border-radius:3px}.custom-scrollbar[data-v-9ca38208]::-webkit-scrollbar-thumb:hover{background:#797979cc}.custom-scrollbar[data-v-9ca38208]::-webkit-scrollbar-track{background:0 0}[data-v-9ca38208] .t-timeline-item__wrapper{margin-left:0!important}[data-v-9ca38208] .t-timeline-item__label{display:none!important}.login-form .loading-wrapper[data-v-b95f4e77]{justify-content:center;padding:20px 0;display:flex}.login-form .input-group[data-v-b95f4e77]{flex-direction:column;gap:16px;display:flex}.login-form[data-v-b95f4e77] .t-input{box-shadow:none;background-color:#fff9;border-radius:8px;transition:all .3s}.login-form[data-v-b95f4e77] .t-input:hover,.login-form[data-v-b95f4e77] .t-input:focus-within{background-color:#fffffff2}.login-form .check-container[data-v-b95f4e77]{justify-content:space-between;align-items:center;margin:16px 0 24px;display:flex}.login-form .login-btn[data-v-b95f4e77]{color:#333;background-color:#fff;border:none;border-radius:24px;height:48px;font-size:16px;font-weight:700;transition:transform .2s}.login-form .login-btn[data-v-b95f4e77]:hover{background-color:#f2f2f2;transform:scale(1.02)}.login-form .btn-container[data-v-b95f4e77] .t-form__content{width:100%}.login-form .btn-wrapper[data-v-b95f4e77]{flex-direction:column;width:100%;display:flex}.login-form .msl-login-wrapper[data-v-b95f4e77]{justify-content:center;width:100%;margin-top:20px;display:flex}.login-form .msl-link-btn[data-v-b95f4e77]{color:var(--td-text-color-secondary);cursor:pointer;justify-content:center;align-items:center;padding:4px 0;font-size:14px;transition:all .3s cubic-bezier(.4,0,.2,1);display:inline-flex;position:relative}.login-form .msl-link-btn[data-v-b95f4e77] .t-icon{margin-right:6px;font-size:16px;transition:transform .3s}.login-form .msl-link-btn[data-v-b95f4e77]:after{content:"";background-color:var(--td-brand-color);opacity:0;width:0;height:2px;transition:all .3s ease-in-out;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.login-form .msl-link-btn[data-v-b95f4e77]:hover{color:var(--td-brand-color)}.login-form .msl-link-btn[data-v-b95f4e77]:hover .t-icon{transform:translateY(-1px)}.login-form .msl-link-btn[data-v-b95f4e77]:hover:after{opacity:1;width:100%}.login-form .msl-link-btn[data-v-b95f4e77]:active{opacity:.8;transform:scale(.98)}.light{background-color:var(--td-brand-color);color:#fff}.reset-guide[data-v-b95f4e77]{padding:8px 4px}.reset-guide .guide-item .guide-title[data-v-b95f4e77]{color:var(--td-text-color-primary);align-items:center;gap:8px;margin-bottom:8px;font-size:15px;font-weight:600;display:flex}.reset-guide .guide-item .guide-desc[data-v-b95f4e77]{color:var(--td-text-color-secondary);margin-bottom:8px;font-size:13px;line-height:1.6}.reset-guide .guide-item .code-block[data-v-b95f4e77]{background-color:var(--td-bg-color-secondarycontainer);color:var(--td-brand-color);word-break:break-all;border:1px dashed var(--td-component-border);border-radius:6px;padding:8px 12px;font-family:monospace;font-size:13px}.login-header[data-v-c06bbccc]{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);color:var(--td-text-color-primary);justify-content:space-between;align-items:center;padding:12px 24px;display:flex}.login-header .logo[data-v-c06bbccc]{align-items:center;display:flex}.login-header .logo img[data-v-c06bbccc]{width:32px;margin-right:8px}.login-header .logo span[data-v-c06bbccc]{white-space:nowrap;font-size:18px;font-weight:700}.login-header .operations-container[data-v-c06bbccc]{align-items:center;display:flex}.login-header .operations-container .t-button[data-v-c06bbccc]{margin-left:16px}.login-header .operations-container .icon[data-v-c06bbccc]{box-sizing:content-box;width:20px;height:20px;padding:6px}.login-header .operations-container .icon[data-v-c06bbccc]:hover{cursor:pointer}@keyframes gradient-flow-786dd78b{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes text-shine-786dd78b{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.light.login-wrapper .title-container .title[data-v-786dd78b]{-webkit-text-fill-color:transparent;background:linear-gradient(-45deg,#405bff,#9333ea,#20bdff,#d333ea) 0 0/300% 300%;-webkit-background-clip:text;background-clip:text;animation:8s ease-in-out infinite text-shine-786dd78b}.dark.login-wrapper[data-v-786dd78b] .t-input,.dark.login-wrapper[data-v-786dd78b] .t-textarea,.dark.login-wrapper[data-v-786dd78b] .t-select__single{background-color:#0000004d!important;border-color:#fff3!important}.dark.login-wrapper[data-v-786dd78b] .t-input__inner,.dark.login-wrapper[data-v-786dd78b] .t-textarea__inner{color:var(--td-text-color-primary)!important}.dark.login-wrapper .title-container .title[data-v-786dd78b]{-webkit-text-fill-color:transparent;background:linear-gradient(-45deg,#a7b2ff,#d8b4fe,#89f7fe,#f7b4ff) 0 0/300% 300%;-webkit-background-clip:text;background-clip:text;animation:8s ease-in-out infinite text-shine-786dd78b}.login-wrapper[data-v-786dd78b]{flex-direction:column;min-height:100vh;display:flex;position:relative;overflow:hidden}@media (max-width:768px){.login-wrapper[data-v-786dd78b]{min-height:100vh;overflow-y:auto}}.login-panel[data-v-786dd78b]{flex-grow:1;justify-content:center;align-items:center;padding:40px;display:flex}@media (max-width:768px){.login-panel[data-v-786dd78b]{flex-direction:column;padding:20px}}.login-container[data-v-786dd78b]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-sizing:border-box;border-radius:12px;padding:40px;position:relative;top:auto;left:auto;box-shadow:0 8px 32px #0000001a}@media (max-width:992px){.login-container[data-v-786dd78b]{margin-right:0}}@media (max-width:768px){.login-container[data-v-786dd78b]{width:100%;max-width:400px;margin-top:20px;margin-bottom:20px;padding:32px 24px}}.title-container[data-v-786dd78b]{text-align:center}.title-container .title[data-v-786dd78b]{margin-top:4px;font-size:36px;line-height:44px}.title-container .title.margin-no[data-v-786dd78b]{margin-top:0}.item-container[data-v-786dd78b]{margin-top:48px}.item-container .check-container[data-v-786dd78b]{align-items:center;display:flex}.item-container .check-container.remember-pwd[data-v-786dd78b]{justify-content:space-between;margin-bottom:16px}.item-container .check-container[data-v-786dd78b] .t-checkbox__label{color:var(--td-text-color-secondary)}.item-container .check-container span[data-v-786dd78b]{color:var(--td-brand-color)}.item-container .check-container span[data-v-786dd78b]:hover{cursor:pointer}.item-container .btn-container[data-v-786dd78b]{margin-top:48px}@media (max-width:768px){.item-container[data-v-786dd78b]{width:100%;margin-top:32px}}.copyright[data-v-786dd78b]{text-align:center;color:var(--td-text-color-secondary);margin-top:32px;font-size:14px;position:relative;bottom:auto;left:auto}@media (max-width:768px){.copyright[data-v-786dd78b]{margin-top:20px;padding-bottom:0}}@media (max-width:768px){.tdesign-setting-outside[data-v-786dd78b]{top:60px;right:10px}}.login-wrapper[data-v-786dd78b]{background-position:50%;background-repeat:no-repeat;background-size:cover;background-image:var(--custom-bg-light,url(/assets/jpg/mslx-bg_light_new.CL71WzMj.jpg));justify-content:center;align-items:center;width:100vw;min-height:100vh;transition:all .3s;display:flex;position:relative}.dark.login-wrapper[data-v-786dd78b]{background-image:var(--custom-bg-dark,url(/assets/jpg/mslx-bg_night_new.CfCwUDBl.jpg))!important}.login-container[data-v-786dd78b]{-webkit-backdrop-filter:blur(12px);z-index:10;border:1px solid #ffffff1a;border-radius:16px;flex-direction:column;width:420px;max-width:90%;padding:40px;transition:transform .3s,background .3s;display:flex;box-shadow:0 8px 32px #0003}.title-container[data-v-786dd78b]{text-align:center;margin-bottom:32px}.title-container .title[data-v-786dd78b]{letter-spacing:1px;margin-bottom:8px;font-size:28px;font-weight:600}.title-container .sub-title[data-v-786dd78b]{opacity:.8;margin:0;font-size:16px}.copyright[data-v-786dd78b]{text-align:center;opacity:.6;margin-top:24px;font-size:12px}.light.login-wrapper[data-v-786dd78b]{background-color:#fff3}.light.login-wrapper .login-container[data-v-786dd78b]{background:#ffffffa6;border:1px solid #fff6}.light.login-wrapper .login-container .title[data-v-786dd78b],.light.login-wrapper .login-container .sub-title[data-v-786dd78b],.light.login-wrapper .login-container .copyright[data-v-786dd78b]{color:#333}.dark.login-wrapper[data-v-786dd78b]{background-blend-mode:overlay;background-color:#0003}.dark.login-wrapper .login-container[data-v-786dd78b]{background:#1e1e2880;border:1px solid #ffffff26}.dark.login-wrapper .login-container .title[data-v-786dd78b],.dark.login-wrapper .login-container .sub-title[data-v-786dd78b],.dark.login-wrapper .login-container .copyright[data-v-786dd78b],.dark.login-wrapper[data-v-786dd78b] .t-input,.dark.login-wrapper[data-v-786dd78b] .t-input__inner,.dark.login-wrapper[data-v-786dd78b] .t-icon{color:#fff}.dark.login-wrapper[data-v-786dd78b] .t-input{border:1px solid #ffffff1a;background:#0003!important}.dark.login-wrapper[data-v-786dd78b] .t-input:hover,.dark.login-wrapper[data-v-786dd78b] .t-input:focus-within{border-color:#ffffff4d;background:#0006!important}.tdesign-setting-outside[data-v-786dd78b]{z-index:100;position:fixed;top:20px;right:20px}.login-header-fixed[data-v-786dd78b]{z-index:20;width:100%;position:absolute;top:0;left:0;box-shadow:none!important;background:0 0!important}@media (max-width:768px){.login-container[data-v-786dd78b]{width:100%;margin:20px;padding:30px 20px}.title-container .title[data-v-786dd78b]{font-size:24px}.tdesign-setting-outside[data-v-786dd78b]{top:10px;right:10px}}[data-v-786dd78b] .welcome-dialog{border-radius:16px;overflow:hidden}[data-v-786dd78b] .welcome-dialog .t-dialog__header{padding-top:32px;padding-bottom:0}[data-v-786dd78b] .welcome-dialog .t-dialog__body{padding:24px 32px 32px}.dialog-header-row[data-v-786dd78b]{align-items:center;gap:12px;display:flex}.dialog-header-row .emoji-icon[data-v-786dd78b]{font-size:28px}.dialog-header-row .header-text[data-v-786dd78b]{color:var(--td-text-color-primary);font-size:20px;font-weight:700}.welcome-content .welcome-desc[data-v-786dd78b]{color:var(--td-text-color-secondary);margin-bottom:24px;font-size:14px;line-height:1.6}.welcome-content .account-card[data-v-786dd78b]{background-color:var(--td-bg-color-secondarycontainer);border:1px solid var(--td-component-border);border-radius:8px;margin-bottom:24px;padding:20px}.welcome-content .account-card .info-row[data-v-786dd78b]{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.welcome-content .account-card .info-row[data-v-786dd78b]:last-child{margin-bottom:0}.welcome-content .account-card .info-row .label[data-v-786dd78b]{color:var(--td-text-color-secondary);align-items:center;gap:8px;font-size:14px;display:flex}.welcome-content .account-card .info-row .value[data-v-786dd78b]{color:var(--td-text-color-primary);font-weight:600}.welcome-content .account-card .info-row .value.highlight[data-v-786dd78b]{color:var(--td-brand-color);font-size:16px}.welcome-content .account-card .info-row .value.mono[data-v-786dd78b]{opacity:.8;font-family:Consolas,Monaco,monospace;font-size:12px}.welcome-content .security-alert[data-v-786dd78b]{border-radius:8px;margin-bottom:24px}@keyframes gradient-flow-4a099a27{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes text-shine-4a099a27{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.light.login-wrapper .title-container .title[data-v-4a099a27]{-webkit-text-fill-color:transparent;background:linear-gradient(-45deg,#405bff,#9333ea,#20bdff,#d333ea) 0 0/300% 300%;-webkit-background-clip:text;background-clip:text;animation:8s ease-in-out infinite text-shine-4a099a27}.dark.login-wrapper[data-v-4a099a27] .t-input,.dark.login-wrapper[data-v-4a099a27] .t-textarea,.dark.login-wrapper[data-v-4a099a27] .t-select__single{background-color:#0000004d!important;border-color:#fff3!important}.dark.login-wrapper[data-v-4a099a27] .t-input__inner,.dark.login-wrapper[data-v-4a099a27] .t-textarea__inner{color:var(--td-text-color-primary)!important}.dark.login-wrapper .title-container .title[data-v-4a099a27]{-webkit-text-fill-color:transparent;background:linear-gradient(-45deg,#a7b2ff,#d8b4fe,#89f7fe,#f7b4ff) 0 0/300% 300%;-webkit-background-clip:text;background-clip:text;animation:8s ease-in-out infinite text-shine-4a099a27}.login-wrapper[data-v-4a099a27]{flex-direction:column;min-height:100vh;display:flex;position:relative;overflow:hidden}@media (max-width:768px){.login-wrapper[data-v-4a099a27]{min-height:100vh;overflow-y:auto}}.login-panel[data-v-4a099a27]{flex-grow:1;justify-content:center;align-items:center;padding:40px;display:flex}@media (max-width:768px){.login-panel[data-v-4a099a27]{flex-direction:column;padding:20px}}.login-container[data-v-4a099a27]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-sizing:border-box;border-radius:12px;padding:40px;position:relative;top:auto;left:auto;box-shadow:0 8px 32px #0000001a}@media (max-width:992px){.login-container[data-v-4a099a27]{margin-right:0}}@media (max-width:768px){.login-container[data-v-4a099a27]{width:100%;max-width:400px;margin-top:20px;margin-bottom:20px;padding:32px 24px}}.title-container[data-v-4a099a27]{text-align:center}.title-container .title[data-v-4a099a27]{margin-top:4px;font-size:36px;line-height:44px}.title-container .title.margin-no[data-v-4a099a27]{margin-top:0}.item-container[data-v-4a099a27]{margin-top:48px}.item-container .check-container[data-v-4a099a27]{align-items:center;display:flex}.item-container .check-container.remember-pwd[data-v-4a099a27]{justify-content:space-between;margin-bottom:16px}.item-container .check-container[data-v-4a099a27] .t-checkbox__label{color:var(--td-text-color-secondary)}.item-container .check-container span[data-v-4a099a27]{color:var(--td-brand-color)}.item-container .check-container span[data-v-4a099a27]:hover{cursor:pointer}.item-container .btn-container[data-v-4a099a27]{margin-top:48px}@media (max-width:768px){.item-container[data-v-4a099a27]{width:100%;margin-top:32px}}.copyright[data-v-4a099a27]{text-align:center;color:var(--td-text-color-secondary);margin-top:32px;font-size:14px;position:relative;bottom:auto;left:auto}@media (max-width:768px){.copyright[data-v-4a099a27]{margin-top:20px;padding-bottom:0}}@media (max-width:768px){.tdesign-setting-outside[data-v-4a099a27]{top:60px;right:10px}}.login-wrapper[data-v-4a099a27]{background-position:50%;background-repeat:no-repeat;background-size:cover;background-image:var(--custom-bg-light,url(/assets/jpg/mslx-bg_light_new.CL71WzMj.jpg));justify-content:center;align-items:center;width:100vw;min-height:100vh;transition:all .3s;display:flex;position:relative}.dark.login-wrapper[data-v-4a099a27]{background-image:var(--custom-bg-dark,url(/assets/jpg/mslx-bg_night_new.CfCwUDBl.jpg))!important}.login-container[data-v-4a099a27]{-webkit-backdrop-filter:blur(12px);z-index:10;box-sizing:border-box;border:1px solid #ffffff1a;border-radius:16px;flex-direction:column;width:420px;max-width:90%;padding:40px;transition:transform .3s,background .3s;display:flex;box-shadow:0 8px 32px #0003}.login-container .title[data-v-4a099a27]{letter-spacing:1px;margin-bottom:8px;font-size:28px;font-weight:600}.callback-content[data-v-4a099a27]{justify-content:center;align-items:center;width:100%;min-height:220px;display:flex}.status-box[data-v-4a099a27]{text-align:center;flex-direction:column;align-items:center;width:100%;animation:.5s fadeIn-4a099a27;display:flex}.status-box .loading-icon-wrapper[data-v-4a099a27]{margin-bottom:24px;transform:scale(1.2)}.status-box .tip-text[data-v-4a099a27]{color:var(--td-text-color-secondary);font-size:16px}.status-box .status-title[data-v-4a099a27]{margin-top:16px;margin-bottom:8px;font-size:20px;font-weight:600}.status-box .desc[data-v-4a099a27]{color:var(--td-text-color-secondary);margin-bottom:4px;font-size:15px}.status-box .sub-desc[data-v-4a099a27]{color:var(--td-text-color-placeholder);margin-bottom:24px;font-size:13px}.status-box .error-msg-box[data-v-4a099a27]{color:var(--td-error-color);word-break:break-all;background:#ff58581a;border-radius:8px;width:100%;margin:24px 0 32px;padding:12px 16px;font-size:14px;line-height:1.5}.status-box .btn-group[data-v-4a099a27]{width:100%}.status-box .icon-success[data-v-4a099a27]{color:var(--td-success-color);font-size:56px}.status-box .icon-error[data-v-4a099a27]{color:var(--td-error-color);font-size:56px}.login-btn[data-v-4a099a27]{color:#333;background-color:#fff;border:none;border-radius:24px;width:100%;height:48px;font-size:16px;font-weight:700;transition:transform .2s}.login-btn[data-v-4a099a27]:hover{background-color:#f2f2f2;transform:scale(1.02)}.light.login-wrapper[data-v-4a099a27]{background-color:#fff3}.light.login-wrapper .login-container[data-v-4a099a27]{background:#ffffffa6;border:1px solid #fff6}.light.login-wrapper .login-container .title[data-v-4a099a27],.light.login-wrapper .login-container .copyright[data-v-4a099a27],.light.login-wrapper .login-container .status-title[data-v-4a099a27]{color:#333}.light.login-wrapper .login-btn[data-v-4a099a27]{background-color:var(--td-brand-color);color:#fff}.light.login-wrapper .login-btn[data-v-4a099a27]:hover{opacity:.9}.dark.login-wrapper[data-v-4a099a27]{background-blend-mode:overlay;background-color:#0003}.dark.login-wrapper .login-container[data-v-4a099a27]{background:#1e1e2880;border:1px solid #ffffff26}.dark.login-wrapper .login-container .title[data-v-4a099a27],.dark.login-wrapper .login-container .sub-title[data-v-4a099a27],.dark.login-wrapper .login-container .copyright[data-v-4a099a27],.dark.login-wrapper .login-container .status-title[data-v-4a099a27]{color:#fff}.dark.login-wrapper .login-btn[data-v-4a099a27]{color:#000;background-color:#ffffffe6}.login-header-fixed[data-v-4a099a27]{z-index:20;width:100%;position:absolute;top:0;left:0;box-shadow:none!important;background:0 0!important}@keyframes fadeIn-4a099a27{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.login-container[data-v-4a099a27]{width:100%;margin:20px;padding:30px 20px}}.tdesign-setting-outside[data-v-4a099a27]{z-index:100;position:fixed;top:20px;right:20px}@media (max-width:768px){.tdesign-setting-outside[data-v-4a099a27]{top:10px;right:10px}}@reference "@/style/tailwind/index.css";.page-bg[data-v-f8d3a3f9]{background-image:url(/assets/jpg/mslx-bg_light_new.CL71WzMj.jpg)}html[theme-mode=dark],html.dark{background-image:url(/assets/jpg/mslx-bg_night_new.CfCwUDBl.jpg)} diff --git a/MSLX.Daemon/Frontend/assets/js/mslx-app-main.Cdym3WOG.js b/MSLX.Daemon/Frontend/assets/js/mslx-app-main.Cdym3WOG.js new file mode 100644 index 0000000..20fed9f --- /dev/null +++ b/MSLX.Daemon/Frontend/assets/js/mslx-app-main.Cdym3WOG.js @@ -0,0 +1,94 @@ +var Ws=Object.defineProperty;var Gs=(a,s,r)=>s in a?Ws(a,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):a[s]=r;var Eo=(a,s,r)=>Gs(a,typeof s!="symbol"?s+"":s,r);import{d as de,o as l,b as x,n as Oe,e as te,r as y,f as ze,h as Wa,w as Js,i as h,j as W,k as o,l as e,m as t,F as re,p as xe,t as S,q as ue,s as it,u as K,v as co,x as w,y as Ga,z as m,A as aa,T as Rt,K as Xs,B as Ye,C as bo,D as zt,M,E as _e,G as Qs,H as Ys,I as Zs,J as el,L as He,N as sa,O as Lt,P as uo,Q as Ja,R as la,S as ao,U as Bt,V as Ct,W as jt,X as tl,Y as ol,Z as vt,_ as ho,$ as Do,a0 as yt,a1 as qe,a2 as Xa,a3 as Qa,a4 as al,a5 as Le,a6 as Ke,a7 as Ya,a8 as Za,a9 as Pe,aa as at,ab as sl,ac as ra,ad as ct,ae as dt,af as ll,ag as rl,ah as Kt,ai as nl,aj as Te,ak as es,al as st,am as bt,an as il,ao as dl,ap as cl,aq as pt,ar as so,as as _t,at as Tt,au as ot,av as ul,aw as ml,ax as pl,ay as vl,az as ts,aA as os,aB as mo,aC as fl,aD as Ot,aE as as,aF as ss,aG as bl,aH as xl,aI as gl,aJ as hl,aK as ls,aL as rs,aM as Ut,aN as Nt,aO as yl,aP as Ao,aQ as ns,aR as xo,aS as No,aT as _l,aU as Ko,aV as lo,aW as yo,aX as _o,aY as qo,aZ as wo,a_ as So,a$ as is,b0 as Io,b1 as wl,b2 as kl,b3 as $l,b4 as na,b5 as zl,b6 as Ho,b7 as Cl,b8 as Al,b9 as Sl,ba as ds,bb as Il,bc as Vl,bd as cs,be as Ul,bf as Ml,bg as Ll,bh as Bl,bi as Tl,bj as Rl,bk as jl,bl as Pl,bm as El,bn as Dl,bo as Fl,bp as Ol,bq as Nl,br as Kl,bs as ql,bt as $a,bu as Hl,bv as Wl,bw as Gl}from"./mslx-core.DZWTbFWd.js";import{a3 as Wo,a4 as us,a5 as Jl,a6 as $t,a7 as Xl,a8 as Ql,a9 as Vt,aa as Yl,ab as Zl,ac as er,ad as oo,ae as tr,af as ye,ag as ms,ah as ps}from"./mslx-libs.BfFW5N8o.js";import{i as ko,L as vs}from"./mslx-charts.ByXhkWPm.js";import{o as or,a as ar,d as sr,t as lr,h as rr,e as nr,j as ir,y as dr,f as cr}from"./mslx-editor.DiM-SrP0.js";import{H as ur,w as mr,_ as pr,K as za,T as Ca,C as vr}from"./mslx-formatter.DCunR7Lr.js";const fr="modulepreload",br=function(a){return"/"+a},Aa={},Ge=function(s,r,d){let i=Promise.resolve();if(r&&r.length>0){let v=function(I){return Promise.all(I.map(u=>Promise.resolve(u).then(R=>({status:"fulfilled",value:R}),R=>({status:"rejected",reason:R}))))};document.getElementsByTagName("link");const f=document.querySelector("meta[property=csp-nonce]"),n=f?.nonce||f?.getAttribute("nonce");i=v(r.map(I=>{if(I=br(I),I in Aa)return;Aa[I]=!0;const u=I.endsWith(".css"),R=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${I}"]${R}`))return;const b=document.createElement("link");if(b.rel=u?"stylesheet":fr,u||(b.as="script"),b.crossOrigin="",b.href=I,n&&b.setAttribute("nonce",n),document.head.appendChild(b),u)return new Promise((A,p)=>{b.addEventListener("load",A),b.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${I}`)))})}))}function c(f){const n=new Event("vite:preloadError",{cancelable:!0});if(n.payload=f,window.dispatchEvent(n),!n.defaultPrevented)throw f}return i.then(f=>{for(const n of f||[])n.status==="rejected"&&c(n.reason);return s().catch(c)})},xr={DEFAULT:{"--td-brand-color":"#0052d9","--td-brand-color-1":"#f2f3ff","--td-brand-color-2":"#d9e1ff","--td-brand-color-3":"#b5c7ff","--td-brand-color-4":"#8eabff","--td-brand-color-5":"#618dff","--td-brand-color-6":"#366ef4","--td-brand-color-7":"#0052d9","--td-brand-color-8":"#003cab","--td-brand-color-9":"#002a7c","--td-brand-color-10":"#001a57"},CYAN:{"--td-brand-color":"#0594FA","--td-brand-color-1":"#d7eefe","--td-brand-color-2":"#aeddfd","--td-brand-color-3":"#84cafd","--td-brand-color-4":"#58b8fc","--td-brand-color-5":"#29a4fb","--td-brand-color-6":"#0594FA","--td-brand-color-7":"#29a4fb","--td-brand-color-8":"#0594FA","--td-brand-color-9":"#0378df","--td-brand-color-10":"#01409b"},GREEN:{"--td-brand-color":"#00A870","--td-brand-color-1":"#8dffd9","--td-brand-color-2":"#00f2a2","--td-brand-color-3":"#00dc92","--td-brand-color-4":"#00c583","--td-brand-color-5":"#00A870","--td-brand-color-6":"#009a5d","--td-brand-color-7":"#00c583","--td-brand-color-8":"#00A870","--td-brand-color-9":"#009a5d","--td-brand-color-10":"#004a14"},ORANGE:{"--td-brand-color":"#ED7B2F","--td-brand-color-1":"#fce5d7","--td-brand-color-2":"#f8cdaf","--td-brand-color-3":"#f4b285","--td-brand-color-4":"#f19659","--td-brand-color-5":"#ED7B2F","--td-brand-color-6":"#e75510","--td-brand-color-7":"#f19659","--td-brand-color-8":"#ED7B2F","--td-brand-color-9":"#e75510","--td-brand-color-10":"#7f0a02"},RED:{"--td-brand-color":"#E34D59","--td-brand-color-1":"#fbe5e7","--td-brand-color-2":"#f7ccd0","--td-brand-color-3":"#f3b2b8","--td-brand-color-4":"#ef989f","--td-brand-color-5":"#ea7b84","--td-brand-color-6":"#E34D59","--td-brand-color-7":"#ea7b84","--td-brand-color-8":"#E34D59","--td-brand-color-9":"#e42c3a","--td-brand-color-10":"#8d0309"},PINK:{"--td-brand-color":"#ED49B4","--td-brand-color-1":"#fce5f4","--td-brand-color-2":"#facae9","--td-brand-color-3":"#f7aede","--td-brand-color-4":"#f491d2","--td-brand-color-5":"#f172c5","--td-brand-color-6":"#ED49B4","--td-brand-color-7":"#f172c5","--td-brand-color-8":"#ED49B4","--td-brand-color-9":"#e80f9d","--td-brand-color-10":"#8f025e"},PURPLE:{"--td-brand-color":"#834EC2","--td-brand-color-1":"#eee6f7","--td-brand-color-2":"#ddceee","--td-brand-color-3":"#ccb6e6","--td-brand-color-4":"#bb9edc","--td-brand-color-5":"#ab87d5","--td-brand-color-6":"#9a6fce","--td-brand-color-7":"#9a6fce","--td-brand-color-8":"#834EC2","--td-brand-color-9":"#783ac3","--td-brand-color-10":"#4c1397"},YELLOW:{"--td-brand-color":"#EBB105","--td-brand-color-1":"#fde9ab","--td-brand-color-2":"#fbd152","--td-brand-color-3":"#EBB105","--td-brand-color-4":"#dda204","--td-brand-color-5":"#ca8d03","--td-brand-color-6":"#b67803","--td-brand-color-7":"#fbd152","--td-brand-color-8":"#EBB105","--td-brand-color-9":"#dda204","--td-brand-color-10":"#603100"}},fs={textColor:"rgba(0, 0, 0, 0.9)",placeholderColor:"rgba(0, 0, 0, 0.35)",borderColor:"#dcdcdc",containerColor:"#fff"},gr={textColor:"rgba(255, 255, 255, 0.9)",placeholderColor:"rgba(255, 255, 255, 0.35)",borderColor:"#5e5e5e",containerColor:"#242424"};function hr(a){return a.replace(/([A-Z])/g,"_$1").toUpperCase()}function yr(a,s){const r=/^#[A-F\d]{6}$/i.test(a)?a:hr(a);return s[r||"DEFAULT"]}function _r(a,s,r){const d=r==="dark";let i=s.indexOf(a);return d&&(s.reverse().map(f=>{const[n,v,I]=Wo.colorTransform(f,"hex","hsl");return Wo.colorTransform([n,Number(v)-4,I],"hsl","hex")}),i=5,s[0]=`${s[i]}20`),{"--td-brand-color":s[i],"--td-brand-color-1":s[0],"--td-brand-color-2":s[1],"--td-brand-color-3":s[2],"--td-brand-color-4":s[3],"--td-brand-color-5":s[4],"--td-brand-color-6":s[5],"--td-brand-color-7":i>0?s[i-1]:a,"--td-brand-color-8":s[i],"--td-brand-color-9":i>8?a:s[i+1],"--td-brand-color-10":s[9]}}function wr(a,s,r){const i=r==="dark"?`:root[theme-color='${a}'][theme-mode='dark']`:`:root[theme-color='${a}']`,c=document.createElement("style");c.type="text/css",c.innerText=`${i}{ + --td-brand-color: ${s["--td-brand-color"]}; + --td-brand-color-1: ${s["--td-brand-color-1"]}; + --td-brand-color-2: ${s["--td-brand-color-2"]}; + --td-brand-color-3: ${s["--td-brand-color-3"]}; + --td-brand-color-4: ${s["--td-brand-color-4"]}; + --td-brand-color-5: ${s["--td-brand-color-5"]}; + --td-brand-color-6: ${s["--td-brand-color-6"]}; + --td-brand-color-7: ${s["--td-brand-color-7"]}; + --td-brand-color-8: ${s["--td-brand-color-8"]}; + --td-brand-color-9: ${s["--td-brand-color-9"]}; + --td-brand-color-10: ${s["--td-brand-color-10"]}; + }`,document.head.appendChild(c)}const kr="conic-gradient(from 90deg at 50% 50%, #FF0000 -19.41deg, #FF0000 18.76deg, #FF8A00 59.32deg, #FFE600 99.87deg, #14FF00 141.65deg, #00A3FF 177.72deg, #0500FF 220.23deg, #AD00FF 260.13deg, #FF00C7 300.69deg, #FF0000 340.59deg, #FF0000 378.76deg)",$r=de({__name:"index",props:{value:{type:String}},setup(a){const s=ut(),r=a,d=te(()=>{const{value:i}=r,{colorList:c}=s;return{background:i!=="dynamic"?yr(i,c)["--td-brand-color"]:kr}});return(i,c)=>(l(),x("div",{style:Oe(d.value),class:"color-container"},null,4))}}),me=(a,s)=>{const r=a.__vccOpts||a;for(const[d,i]of s)r[d]=i;return r},Sa=me($r,[["__scopeId","data-v-f4b82387"]]),ia={showFooter:!0,isSidebarCompact:!1,showBreadcrumb:!1,mode:"auto",layout:"side",splitMenu:!1,isFooterAside:!1,isSidebarFixed:!0,isHeaderFixed:!0,showHeader:!0,backgroundTheme:"blueGrey",brandTheme:"default",enableCustomTheme:!1},zr={class:"p-6 sm:p-8 space-y-10 pb-24"},Cr={class:"flex flex-col items-center justify-center gap-2"},Ar={class:"text-[13px] font-medium"},Sr={class:"flex items-center justify-between p-4 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-[var(--td-component-border)] transition-colors hover:border-zinc-300 dark:hover:border-zinc-600"},Ir={class:"flex flex-col items-center justify-center gap-2"},Vr={class:"text-[13px] font-medium"},Ur=de({__name:"setting",setup(a){const s=ut(),r=y(window.innerWidth),d=te(()=>r.value<480),i=te(()=>d.value?"85%":"408px"),c=()=>{r.value=window.innerWidth},f=[{value:"side",text:"侧边栏",icon:"view-column"},{value:"top",text:"顶栏导航",icon:"view-agenda"}],n=["default","cyan","green","yellow","orange","red","pink","purple","dynamic"],v=[{type:"auto",text:"跟随系统",icon:"desktop"},{type:"light",text:"明亮模式",icon:"sunny"},{type:"dark",text:"暗黑模式",icon:"moon"}],u=y({...(()=>{const g={...ia};for(const B in g)Object.prototype.hasOwnProperty.call(g,B)&&(g[B]=s[B]);return g})()});d.value&&u.value.layout==="side"&&(u.value.layout="top");const R=y(!1),b=te({get:()=>s.showSettingPanel,set:g=>s.updateConfig({showSettingPanel:g})}),A=g=>{const B=Wo.getPaletteByGradation({colors:[g],step:10})[0],{mode:C}=s,T=_r(g,B,C);s.addColor({[g]:T}),s.updateConfig({...u.value,brandTheme:g}),wr(g,T,C)};ze(()=>{const g=document.querySelector(".dynamic-color-btn");g&&g.addEventListener("click",()=>{R.value=!0}),window.addEventListener("resize",c)}),Wa(()=>{window.removeEventListener("resize",c)});const p=(g,B)=>{!g&&B.trigger==="document"&&(R.value=g)},k=()=>{s.updateConfig({showSettingPanel:!1})};return Js(()=>{s.updateConfig({mode:u.value.mode,layout:u.value.layout,brandTheme:u.value.brandTheme,enableCustomTheme:u.value.enableCustomTheme})}),(g,B)=>{const C=h("t-icon"),T=h("t-radio-button"),U=h("t-radio-group"),D=h("t-switch"),N=h("t-color-picker-panel"),P=h("t-popup"),j=h("t-form"),O=h("t-drawer");return l(),W(O,{visible:b.value,"onUpdate:visible":B[4]||(B[4]=$=>b.value=$),size:i.value,footer:!1,header:"面板样式","close-btn":!0,class:"setting-drawer-container",onCloseBtnClick:k},{default:o(()=>[e("div",zr,[t(j,{ref:"form",data:u.value,"label-align":"left",class:"space-y-10"},{default:o(()=>[e("section",null,[B[5]||(B[5]=e("div",{class:"setting-title"},"主题模式",-1)),t(U,{modelValue:u.value.mode,"onUpdate:modelValue":B[0]||(B[0]=$=>u.value.mode=$),class:"custom-radio-group"},{default:o(()=>[(l(),x(re,null,xe(v,$=>t(T,{key:$.type,value:$.type,class:"icon-card-radio"},{default:o(()=>[e("div",Cr,[t(C,{name:$.icon,class:"text-[28px] transition-transform duration-300 group-hover:scale-110"},null,8,["name"]),e("span",Ar,S($.text),1)])]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),e("section",null,[B[7]||(B[7]=e("div",{class:"setting-title"},"个性化",-1)),e("div",Sr,[B[6]||(B[6]=e("div",{class:"flex flex-col"},[e("span",{class:"text-[14px] font-bold text-[var(--td-text-color-primary)]"},"开启背景美化"),e("span",{class:"text-[11px] text-zinc-400 mt-0.5"},"启用毛玻璃卡片与自定义壁纸")],-1)),t(D,{modelValue:u.value.enableCustomTheme,"onUpdate:modelValue":B[1]||(B[1]=$=>u.value.enableCustomTheme=$)},null,8,["modelValue"])])]),e("section",null,[B[8]||(B[8]=e("div",{class:"setting-title"},"主题色",-1)),t(U,{modelValue:u.value.brandTheme,"onUpdate:modelValue":B[2]||(B[2]=$=>u.value.brandTheme=$),class:"color-radio-group flex-wrap"},{default:o(()=>[(l(!0),x(re,null,xe(n.slice(0,-1),$=>(l(),W(T,{key:$,value:$,class:"color-dot-wrapper"},{default:o(()=>[t(Sa,{value:$},null,8,["value"])]),_:2},1032,["value"]))),128)),t(P,{"destroy-on-close":"",placement:"bottom-right",trigger:"click",visible:R.value,"overlay-style":{padding:0},onVisibleChange:p},{content:o(()=>[t(N,{class:"custom-color-picker","on-change":A,"color-modes":["monochrome"],format:"HEX","swatch-colors":[]})]),default:o(()=>[t(T,{value:n[n.length-1],class:"color-dot-wrapper dynamic-color-btn"},{default:o(()=>[t(Sa,{value:n[n.length-1]},null,8,["value"])]),_:1},8,["value"])]),_:1},8,["visible"])]),_:1},8,["modelValue"])]),e("section",null,[B[9]||(B[9]=e("div",{class:"setting-title"},"导航布局",-1)),t(U,{modelValue:u.value.layout,"onUpdate:modelValue":B[3]||(B[3]=$=>u.value.layout=$),class:"custom-radio-group"},{default:o(()=>[(l(),x(re,null,xe(f,$=>t(T,{key:$.value,value:$.value,class:"icon-card-radio"},{default:o(()=>[e("div",Ir,[t(C,{name:$.icon,class:"text-[28px] transition-transform duration-300 group-hover:scale-110"},null,8,["name"]),e("span",Vr,S($.text),1)])]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])])]),_:1},8,["data"])])]),_:1},8,["visible","size"])}}}),da=me(Ur,[["__scopeId","data-v-8a882e36"]]),Je="mslx-webpanel",Dt="mslx-web-token",Ft="mslx-base-url",Mr={class:"menu-text"},Lr={class:"menu-text"},Br=de({name:"MenuContent",__name:"MenuContent",props:{navData:{type:Array,default:()=>[]},isHorizontal:{type:Boolean,default:!1},maxItemCount:{type:Number,default:3}},setup(a){const s=a,r=te(()=>$o()),d=te(()=>{const{navData:b}=s;return f(b)}),i=te(()=>s.isHorizontal?d.value.slice(0,s.maxItemCount):d.value),c=te(()=>s.isHorizontal?d.value.slice(s.maxItemCount):[]),f=(b,A)=>b?(b.sort((p,k)=>(p.meta?.orderNo||0)-(k.meta?.orderNo||0)),b.map(p=>{const k=A&&!p.path.includes(A)?`${A}/${p.path}`:p.path;return{path:k,title:p.meta?.title,icon:p.meta?.icon||"",children:f(p.children,k),meta:p.meta,redirect:p.redirect}}).filter(p=>p.meta&&p.meta.hidden!==!0)):[],n=b=>{const{frameSrc:A,frameBlank:p}=b.meta;return A&&p?A.match(/(http|https):\/\/([\w.]+\/?)\S*/):null},v=b=>r.value.startsWith(b.path)?r.value:b.meta?.single?b.redirect:b.path,I=b=>b.icon&&typeof b.icon=="string",u=b=>us(b.icon)&&typeof b.icon.render=="function"?{can:!0,render:b.icon.render}:{can:!1,render:null},R=b=>{window.open(b)};return(b,A)=>{const p=h("t-icon"),k=h("t-menu-item"),g=h("menu-content",!0),B=h("t-submenu");return l(),x("div",{id:"menu-wrapper",class:ue(["modern-menu-wrapper",{"is-horizontal":a.isHorizontal}])},[(l(!0),x(re,null,xe(i.value,C=>(l(),x(re,{key:C.path},[!C.children||!C.children.length||C.meta?.single?(l(),x(re,{key:0},[n(C)?(l(),W(k,{key:0,name:C.path,value:v(C),class:"modern-menu-item",onClick:T=>R(n(C)[0])},{icon:o(()=>[I(C)?(l(),W(p,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),W(it(u(C).render),{key:1,class:"t-icon"})):K("",!0)]),default:o(()=>[e("span",Mr,S(C.title),1)]),_:2},1032,["name","value","onClick"])):(l(),W(k,{key:1,name:C.path,value:v(C),to:C.path,class:"modern-menu-item"},{icon:o(()=>[I(C)?(l(),W(p,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),W(it(u(C).render),{key:1,class:"t-icon"})):K("",!0)]),default:o(()=>[e("span",Lr,S(C.title),1)]),_:2},1032,["name","value","to"]))],64)):(l(),W(B,{key:1,name:C.path,value:C.path,title:C.title,class:"modern-submenu"},{icon:o(()=>[I(C)?(l(),W(p,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),W(it(u(C).render),{key:1,class:"t-icon"})):K("",!0)]),default:o(()=>[C.children?(l(),W(g,{key:0,"nav-data":C.children,"is-horizontal":!1},null,8,["nav-data"])):K("",!0)]),_:2},1032,["name","value","title"]))],64))),128)),a.isHorizontal&&c.value.length>0?(l(),W(B,{key:0,name:"more-menu",title:"更多",class:"modern-submenu"},{icon:o(()=>[t(p,{name:"ellipsis"})]),default:o(()=>[t(g,{"nav-data":c.value,"is-horizontal":!1},null,8,["nav-data"])]),_:1})):K("",!0)],2)}}}),Go=me(Br,[["__scopeId","data-v-f46b0d89"]]),Vo="/assets/png/mslx-logo.BqgIBdpC.png",Tr=["src"],Rr={key:1,class:"flex lg:hidden ml-1 items-center"},jr={key:2,class:"flex lg:hidden ml-1 items-center"},Pr={class:"hidden lg:flex flex-1 items-center"},Er={class:"flex items-center gap-1 sm:gap-2"},Dr={class:"hidden lg:flex items-center gap-1 sm:gap-2"},Fr=["src"],Or={class:"flex items-center text-sm font-bold text-zinc-700 dark:text-zinc-200 ml-1 truncate max-w-[100px]"},Nr={class:"flex flex-col w-[240px] bg-white dark:bg-zinc-800 rounded-xl shadow-xl border border-zinc-100 dark:border-zinc-700/60 overflow-hidden mt-1"},Kr={class:"px-4 py-4 flex items-center gap-3 border-b border-zinc-100 dark:border-zinc-700/60 bg-zinc-50/50 dark:bg-zinc-800/50"},qr=["src"],Hr={class:"flex flex-col min-w-0 flex-1"},Wr={class:"text-sm font-bold text-zinc-800 dark:text-zinc-100 truncate"},Gr={class:"text-xs text-zinc-500 dark:text-zinc-400 mt-1 flex items-center gap-1.5"},Jr={class:"p-2 flex flex-col gap-1"},Xr={class:"hidden lg:flex items-center"},Qr={class:"flex lg:hidden items-center"},Yr=de({__name:"Header",props:{theme:{type:String,default:"light"},layout:{type:String,default:"top"},showLogo:{type:Boolean,default:!0},menu:{type:Array,default:()=>[]},isFixed:{type:Boolean,default:!1},isCompact:{type:Boolean,default:!1},maxLevel:{type:Number,default:3}},setup(a){const s=Be(),r=a,d=co(),i=ut(),c=()=>{i.updateConfig({showSettingPanel:!0})},f=te(()=>$o()),n=y(!1),v=te(()=>[`${Je}-header-layout`]),I=te(()=>{const{isFixed:C,layout:T,isCompact:U}=r;return[{[`${Je}-header-menu`]:!C,[`${Je}-header-menu-fixed`]:C,[`${Je}-header-menu-fixed-side`]:T==="side"&&C,[`${Je}-header-menu-fixed-side-compact`]:T==="side"&&C&&U}]}),u=()=>{i.updateConfig({isSidebarCompact:!i.isSidebarCompact})},R=C=>{d.push(C)},b=C=>{C&&(d.push(C),n.value=!1)},A=()=>{d.push({path:"/login",query:{redirect:encodeURIComponent(d.currentRoute.value.fullPath)}})},p=()=>{window.open("https://github.com/MSLTeam/MSLX")},k=()=>{window.open("https://mslx.mslmc.cn")},g=y(!1),B=()=>{g.value||(g.value=!0,setTimeout(()=>{g.value=!1},600))};return(C,T)=>{const U=h("t-icon"),D=h("t-button"),N=h("t-menu"),P=h("t-popup"),j=h("t-tooltip"),O=h("t-dropdown-item"),$=h("t-dropdown-menu"),V=h("t-dropdown"),_=h("t-head-menu");return l(),x("div",{class:ue([v.value,"design-card w-full bg-white dark:bg-zinc-800 transition-all duration-300 relative z-50",{"enable-custom-theme":w(i).enableCustomTheme}])},[t(_,{class:ue([I.value,"header-menu-clear"]),theme:a.theme,"expand-type":"popup",value:f.value},Ga({logo:o(()=>[a.showLogo?(l(),x("span",{key:0,class:"flex items-center cursor-pointer mr-1 lg:mr-6 gap-2.5",onClick:T[0]||(T[0]=z=>R("/dashboard/base"))},[e("img",{class:"w-7 h-7 object-contain shrink-0",src:w(Vo),alt:"logo"},null,8,Tr),T[3]||(T[3]=e("span",{class:"text-[17px] font-bold truncate max-[1012px]:hidden text-[var(--td-text-color-primary)] tracking-tight leading-none mt-0.5"}," MSLX 管理中心 ",-1))])):K("",!0),a.layout=="side"?(l(),x("div",Rr,[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:u},{default:o(()=>[t(U,{class:"text-xl",name:"view-list"})]),_:1})])):K("",!0),a.layout!=="side"?(l(),x("div",jr,[t(P,{modelValue:n.value,"onUpdate:modelValue":T[1]||(T[1]=z=>n.value=z),placement:"bottom","overlay-class-name":"mobile-full-width-popup","overlay-style":{padding:"0",boxShadow:"none"},attach:"body"},{content:o(()=>[t(N,{value:f.value,theme:a.theme,"expand-mutex":"",class:"max-h-[calc(100vh-64px)] overflow-y-auto !bg-white/95 dark:!bg-zinc-800/95 backdrop-blur-xl !border-none !border-t !border-zinc-200/50 dark:!border-zinc-700/50 shadow-2xl",onChange:b},{default:o(()=>[t(Go,{"nav-data":a.menu,"is-horizontal":!1},null,8,["nav-data"])]),_:1},8,["value","theme"])]),default:o(()=>[t(D,{class:"header-btn",theme:"default",shape:"square",variant:"text"},{default:o(()=>[t(U,{name:"app",class:"text-[24px]"})]),_:1})]),_:1},8,["modelValue"])])):K("",!0)]),operations:o(()=>[e("div",Er,[e("div",Dr,[t(j,{placement:"bottom",content:"代码仓库"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:p},{default:o(()=>[t(U,{name:"logo-github",class:"text-[20px]"})]),_:1})]),_:1}),t(j,{placement:"bottom",content:"帮助文档"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:k},{default:o(()=>[t(U,{name:"help-circle",class:"text-[20px]"})]),_:1})]),_:1})]),t(P,{trigger:"click",placement:"bottom-right","overlay-inner-style":{padding:"0",background:"transparent",boxShadow:"none"},attach:"body"},{content:o(()=>[e("div",Nr,[e("div",Kr,[e("div",{class:"relative shrink-0 group cursor-pointer",onClick:B},[e("div",{class:ue(["absolute inset-0 rounded-full z-0 pointer-events-none transition-opacity",g.value?"animate-magic-burst":"opacity-0"]),style:{background:"radial-gradient(circle, var(--color-primary-light) 0%, transparent 70%)"}},null,2),e("img",{src:w(s).userInfo.avatar,class:ue(["w-10 h-10 rounded-full object-cover ring-2 ring-[var(--color-primary)]/30 shadow-sm transition-all duration-300 relative z-10",[g.value?"animate-jelly-pop":"group-hover:rotate-6 group-hover:scale-105"]]),alt:"avatar"},null,10,qr)]),e("div",Hr,[e("span",Wr,S(w(s).userInfo.name||w(s).userInfo.username||"未知用户"),1),e("span",Gr,[e("span",{class:ue(["inline-block w-1.5 h-1.5 rounded-full",w(s).isAdmin?"bg-emerald-500":"bg-blue-500"])},null,2),m(" "+S(w(s).isAdmin?"管理员":"普通用户"),1)])])]),e("div",Jr,[e("div",{class:"flex items-center px-3 py-2 text-sm text-zinc-600 dark:text-zinc-300 hover:bg-zinc-100 dark:hover:bg-zinc-700/50 rounded-lg cursor-pointer transition-colors",onClick:T[2]||(T[2]=z=>R("/settings"))},[t(U,{name:"user-circle",class:"text-lg mr-2 opacity-70"}),T[4]||(T[4]=e("span",{class:"font-medium"},"个人中心",-1))]),e("div",{class:"flex items-center px-3 py-2 text-sm text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-500/10 rounded-lg cursor-pointer transition-colors",onClick:A},[t(U,{name:"poweroff",class:"text-lg mr-2 opacity-70"}),T[5]||(T[5]=e("span",{class:"font-medium"},"退出登录",-1))])])])]),default:o(()=>[t(D,{class:"user-profile-btn",theme:"default",variant:"text"},{icon:o(()=>[e("img",{src:w(s).userInfo.avatar,class:"w-8 h-8 rounded-full object-cover ring-2 ring-zinc-100 dark:ring-zinc-700/80 shadow-sm",alt:"avatar"},null,8,Fr)]),suffix:o(()=>[t(U,{name:"chevron-down",class:"text-zinc-400 text-xs ml-0.5"})]),default:o(()=>[e("div",Or,S(w(s).userInfo.name||w(s).userInfo.username||"用户"),1)]),_:1})]),_:1}),e("div",Xr,[t(j,{placement:"bottom",content:"系统设置"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:c},{default:o(()=>[t(U,{name:"setting",class:"text-[20px]"})]),_:1})]),_:1})]),e("div",Qr,[t(V,{"min-column-width":140,trigger:"click"},{dropdown:o(()=>[t($,null,{default:o(()=>[t(O,{class:"operations-dropdown-item",onClick:p},{default:o(()=>[t(U,{name:"logo-github",class:"text-lg mr-2"}),T[6]||(T[6]=e("span",null,"代码仓库",-1))]),_:1}),t(O,{class:"operations-dropdown-item mt-1",onClick:k},{default:o(()=>[t(U,{name:"help-circle",class:"text-lg mr-2"}),T[7]||(T[7]=e("span",null,"帮助文档",-1))]),_:1}),t(O,{class:"operations-dropdown-item mt-1",onClick:c},{default:o(()=>[t(U,{name:"setting",class:"text-lg mr-2"}),T[8]||(T[8]=e("span",null,"系统设置",-1))]),_:1})]),_:1})]),default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn"},{default:o(()=>[t(U,{name:"more",class:"text-[20px]"})]),_:1})]),_:1})])])]),_:2},[a.layout!=="side"?{name:"default",fn:o(()=>[e("div",Pr,[t(Go,{class:"header-menu-reset","nav-data":a.menu,"is-horizontal":!0},null,8,["nav-data"])])]),key:"0"}:void 0]),1032,["class","theme","value"])],2)}}}),Zr=me(Yr,[["__scopeId","data-v-a81dfcc3"]]),Ia=de({__name:"LayoutHeader",setup(a){const s=ro(),r=ut(),{routers:d}=aa(s),i=te(()=>r.layout==="mix"?r.splitMenu?d.value.map(c=>({...c,children:[]})):[]:d.value);return(c,f)=>w(r).showHeader?(l(),W(Zr,{key:0,"show-logo":w(r).showHeaderLogo,theme:w(r).displayMode,layout:w(r).layout,"is-fixed":w(r).isHeaderFixed,menu:i.value,"is-compact":w(r).isSidebarCompact},null,8,["show-logo","theme","layout","is-fixed","menu","is-compact"])):K("",!0)}}),en={};function tn(a,s){const r=h("router-view");return l(),W(r,null,{default:o(({Component:d})=>[t(Rt,{name:"fade",mode:"out-in"},{default:o(()=>[(l(),W(Xs,null,[(l(),W(it(d)))],1024))]),_:2},1024)]),_:1})}const on=me(en,[["render",tn],["__scopeId","data-v-323e6e6f"]]),an=de({__name:"Breadcrumb",setup(a){const s=te(()=>{const r=Ye(),d=r.path.split("/");return d.shift(),d.reduce((c,f,n)=>(r.matched[n]?.meta?.hiddenBreadcrumb||Object.values(r.params).includes(f)||c.push({path:f,to:c[n-1]?`/${c[n-1].path}/${f}`:`/${f}`,title:r.matched[n]?.meta?.title??f}),c),[])});return(r,d)=>{const i=h("t-breadcrumbItem"),c=h("t-breadcrumb");return l(),W(c,{"max-item-width":"150",class:"tdesign-breadcrumb"},{default:o(()=>[(l(!0),x(re,null,xe(s.value,f=>(l(),W(i,{key:f.to,to:f.to},{default:o(()=>[m(S(f.title),1)]),_:2},1032,["to"]))),128))]),_:1})}}}),sn=me(an,[["__scopeId","data-v-b09aa6cf"]]),ln={class:"w-full flex justify-center items-center"},rn={class:"glass-capsule design-card group flex items-center gap-3 px-6 py-2 rounded-full bg-[var(--td-bg-color-container)]/80 backdrop-blur-[10px] border border-zinc-200/80 dark:border-zinc-700/60 shadow-sm transition-all duration-300 font-mono text-[13px] leading-none text-[var(--td-text-color-secondary)] cursor-default"},nn={class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"},dn=de({__name:"Footer",setup(a){return(s,r)=>(l(),x("footer",ln,[e("div",rn,[r[0]||(r[0]=e("span",{class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"}," MSLX-WEBPANEL ",-1)),r[1]||(r[1]=e("span",{class:"font-light text-zinc-500 dark:text-zinc-600"},"/",-1)),r[2]||(r[2]=e("span",{class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"}," MSLTEAM ",-1)),r[3]||(r[3]=e("span",{class:"font-light text-zinc-500 dark:text-zinc-600"},"/",-1)),e("span",nn," © 2021-"+S(new Date().getFullYear()),1)])]))}}),cn=me(dn,[["__scopeId","data-v-f1245484"]]),Va=de({__name:"LayoutContent",setup(a){const s=ut();return(r,d)=>{const i=h("t-content"),c=h("t-footer"),f=h("t-layout");return l(),W(f,{class:ue(`${w(Je)}-layout`)},{default:o(()=>[t(i,{class:ue(`${w(Je)}-content-layout`)},{default:o(()=>[w(s).showBreadcrumb?(l(),W(sn,{key:0})):K("",!0),t(on)]),_:1},8,["class"]),w(s).showFooter?(l(),W(c,{key:0,class:ue(`${w(Je)}-footer-layout`)},{default:o(()=>[t(cn)]),_:1},8,["class"])):K("",!0)]),_:1},8,["class"])}}}),un="mslx-webpanel",mn="1.3.5",pn={dev:"vite --mode development","dev:linux":"vite --mode development","build:test":"vite build --mode test",build:"vue-tsc --noEmit && vite build --mode release && node generate-build-info.js",preview:"vite preview",lint:"eslint --ext .vue,.js,.jsx,.ts,.tsx ./ --max-warnings 0","lint:fix":"eslint --ext .vue,.js,jsx,.ts,.tsx ./ --max-warnings 0 --fix",stylelint:"stylelint src/**/*.{html,vue,sass,less}","stylelint:fix":"stylelint --fix src/**/*.{html,vue,vss,sass,less}",prepare:`node -e "if(require('fs').existsSync('.git')){process.exit(1)}" || is-ci || husky install`,"site:preview":"npm run build && cp -r dist _site",test:'echo "no test specified,work in process"',"test:coverage":'echo "no test:coverage specified,work in process"'},vn={"@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-json":"^6.0.2","@codemirror/lang-yaml":"^6.1.2","@codemirror/language":"^6.12.1","@codemirror/legacy-modes":"^6.5.2","@codemirror/state":"^6.5.2","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.2","@eslint/js":"^9.38.0","@microsoft/signalr":"^10.0.0","@tailwindcss/vite":"^4.2.1","@vueuse/core":"^14.2.1","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ansi-colors":"^4.1.3",axios:"^1.13.5","cron-parser":"^5.4.0",dayjs:"^1.11.11",echarts:"^6.0.0",lodash:"4.17.23","md-editor-v3":"^6.1.0",nprogress:"^0.2.0",pinia:"^2.1.7","pinia-plugin-persistedstate":"^3.2.1","qrcode.vue":"^3.4.1",qs:"6.14.2",tailwindcss:"^4.2.1","tdesign-icons-vue-next":"^0.4.1","tdesign-vue-next":"^1.18.2","tvision-color":"^1.6.0","typescript-eslint":"^8.46.2",vue:"^3.5.29","vue-clipboard3":"^2.0.0","vue-codemirror":"^6.1.1","vue-router":"^4.4.0"},fn={"@commitlint/cli":"^19.3.0","@commitlint/config-conventional":"^19.2.2","@types/lodash":"^4.17.23","@types/qs":"^6.9.15","@types/ws":"^8.5.10","@typescript-eslint/eslint-plugin":"^8.46.2","@typescript-eslint/parser":"^8.46.2","@vitejs/plugin-vue":"^6.0.3","@vitejs/plugin-vue-jsx":"^5.1.3","@vue/compiler-sfc":"^3.4.31","@vue/eslint-config-typescript":"^14.6.0",browserslist:"^4.28.1",commitizen:"^4.3.0","cz-conventional-changelog":"^3.3.0",eslint:"^9.38.0","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.1.3","eslint-plugin-vue":"^10.7.0","eslint-plugin-vue-scoped-css":"^2.12.0",husky:"^9.1.1",less:"^4.2.0",lightningcss:"^1.32.0","lint-staged":"^15.2.7",prettier:"^3.3.3",stylelint:"^16.25.0","stylelint-config-standard":"^40.0.0","stylelint-config-standard-less":"^4.0.1","stylelint-less":"^3.0.0","stylelint-order":"^6.0.4",typescript:"^5.5.3",vite:"^7.3.1","vite-svg-loader":"^5.1.0","vue-tsc":"^2.0.26"},bn={commitizen:{path:"./node_modules/cz-conventional-changelog"}},xn="MSLX Web Panel",to={name:un,version:mn,scripts:pn,dependencies:vn,devDependencies:fn,config:bn,"lint-staged":{"*.{js,jsx,vue,ts,tsx}":["prettier --write","npm run lint:fix","git add ."],"*.{html,vue,vss,sass,less}":["npm run stylelint:fix","git add ."]},description:xn},gn=["src"],hn={key:0,class:"text-[17px] font-bold truncate text-[var(--td-text-color-primary)] tracking-tight transition-opacity duration-300 leading-none mt-0.5"},yn={class:"flex items-center justify-center h-12 text-[11px] font-mono font-medium text-[var(--td-text-color-secondary)] tracking-wider"},_n=991,wn=de({__name:"SideNav",props:{menu:{type:Array,default:()=>[]},showLogo:{type:Boolean,default:!0},isFixed:{type:Boolean,default:!0},layout:{type:String,default:""},headerHeight:{type:String,default:"64px"},theme:{type:String,default:"light"},isCompact:{type:Boolean,default:!1}},setup(a){const s=a,r=te(()=>ut().isSidebarCompact),d=te(()=>$o()),i=te(()=>{const R=$o(),b=R.substring(0,R.lastIndexOf("/")),A=ti();return Jl(A,b===""?[]:[b])}),c=te(()=>{const{isCompact:R}=s;return[`${Je}-sidebar-layout`,{[`${Je}-sidebar-compact`]:R}]}),f=te(()=>{const{showLogo:R,isFixed:b,layout:A}=s;return[`${Je}-side-nav`,{[`${Je}-side-nav-no-logo`]:!R,[`${Je}-side-nav-no-fixed`]:!b,[`${Je}-side-nav-mix-fixed`]:A==="mix"&&b}]}),n=co(),v=ut(),I=()=>{const R=window.innerWidth<=_n;v.updateConfig({isSidebarCompact:R})};ze(()=>{I(),window.onresize=()=>{I()}});const u=()=>{n.push("/dashboard/base")};return(R,b)=>{const A=h("t-menu");return l(),x("div",{class:ue(c.value)},[e("div",{class:ue(["design-card h-full bg-white dark:bg-zinc-800 transition-all duration-300 relative z-40",[w(v).enableCustomTheme?"border-r border-white/20 dark:border-white/5":"border-r border-white/20 dark:border-zinc-700/60 shadow-[1px_0_12px_rgba(0,0,0,0.02)] dark:shadow-none"]])},[t(A,{class:ue([f.value,"sidebar-menu-clear"]),theme:a.theme,value:d.value,collapsed:r.value,"default-expanded":i.value},{logo:o(()=>[a.showLogo?(l(),x("div",{key:0,class:ue(["flex items-center cursor-pointer h-[64px] px-5 overflow-hidden transition-all duration-300 !ml-0 border-b border-transparent",r.value?"justify-center px-0":"justify-start gap-2.5"]),onClick:u},[e("img",{class:"w-7 h-7 object-contain shrink-0",src:w(Vo),alt:"logo"},null,8,gn),r.value?K("",!0):(l(),x("span",hn," MSLX 管理中心 "))],2)):K("",!0)]),operations:o(()=>[e("div",yn,S(r.value?"":"MSLX-WEBPANEL ")+"v"+S(w(to).version),1)]),default:o(()=>[t(Go,{"nav-data":a.menu},null,8,["nav-data"])]),_:1},8,["class","theme","value","collapsed","default-expanded"])],2),e("div",{class:ue(`${w(Je)}-side-nav-placeholder${r.value?"-hidden":""}`)},null,2)],2)}}}),kn=me(wn,[["__scopeId","data-v-9ac7176f"]]),Ua=de({__name:"LayoutSideNav",setup(a){const s=Ye(),r=ro(),d=ut(),{routers:i}=aa(r),c=te(()=>{const{layout:f,splitMenu:n}=d;let v=i.value;return f==="mix"&&n&&v.forEach(I=>{s.path.indexOf(I.path)===0&&(v=I.children.map(u=>({...u,path:`${I.path}/${u.path}`})))}),v});return(f,n)=>w(d).showSidebar?(l(),W(kn,{key:0,"show-logo":w(d).showSidebarLogo,layout:w(d).layout,"is-fixed":w(d).isSidebarFixed,menu:c.value,theme:w(d).displayMode,"is-compact":w(d).isSidebarCompact},null,8,["show-logo","layout","is-fixed","menu","theme","is-compact"])):K("",!0)}}),ca="/assets/jpg/mslx-bg_light_new.CL71WzMj.jpg",ua="/assets/jpg/mslx-bg_night_new.CfCwUDBl.jpg";let kt=new Map;const Ma=a=>[a.method,a.url].join("&");class $n{addPending(s){this.removePending(s);const r=Ma(s);s.cancelToken=s.cancelToken||new bo.CancelToken(d=>{kt.has(r)||kt.set(r,d)})}removeAllPending(){kt.forEach(s=>{s&&$t(s)&&s()}),kt.clear()}removePending(s){const r=Ma(s);if(kt.has(r)){const d=kt.get(r);d&&d(r),kt.delete(r)}}reset(){kt=new Map}}class zn{constructor(s){Eo(this,"instance");Eo(this,"options");this.options=s,this.instance=bo.create(s),this.setupInterceptors()}createAxios(s){this.instance=bo.create(s)}getTransform(){const{transform:s}=this.options;return s}getAxios(){return this.instance}configAxios(s){this.instance&&this.createAxios(s)}setHeader(s){this.instance&&Object.assign(this.instance.defaults.headers,s)}setupInterceptors(){const s=this.getTransform();if(!s)return;const{requestInterceptors:r,requestInterceptorsCatch:d,responseInterceptors:i,responseInterceptorsCatch:c}=s,f=new $n;this.instance.interceptors.request.use(n=>{const{headers:{ignoreRepeatRequest:v}}=n;return(v??this.options.requestOptions?.ignoreRepeatRequest)||f.addPending(n),r&&$t(r)&&(n=r(n,this.options)),n},void 0),d&&$t(d)&&this.instance.interceptors.request.use(void 0,d),this.instance.interceptors.response.use(n=>(n&&f.removePending(n.config),i&&$t(i)&&(n=i(n)),n),void 0),c&&$t(c)&&this.instance.interceptors.response.use(void 0,c)}supportFormData(s){const r=s.headers||this.options.headers;return(r?.["Content-Type"]||r?.["content-type"])!=="application/x-www-form-urlencoded;charset=UTF-8"||!Reflect.has(s,"data")||s.method?.toUpperCase()==="GET"?s:{...s,data:Xl.stringify(s.data,{arrayFormat:"brackets"})}}get(s,r){return this.request({...s,method:"GET"},r)}post(s,r){return this.request({...s,method:"POST"},r)}put(s,r){return this.request({...s,method:"PUT"},r)}delete(s,r){return this.request({...s,method:"DELETE"},r)}patch(s,r){return this.request({...s,method:"PATCH"},r)}async request(s,r){let d=Ql(s);const i=this.getTransform(),{requestOptions:c}=this.options,f={...c,...r},{beforeRequestHook:n,requestCatchHook:v,transformRequestHook:I}=i||{};return n&&$t(n)&&(d=n(d,f)),d.requestOptions=f,d=this.supportFormData(d),new Promise((u,R)=>{this.instance.request(s.retryCount?s:d).then(b=>{if(I&&$t(I)){try{const A=I(b,f);u(A)}catch(A){R(A||new Error("请求错误!"))}return}u(b)}).catch(b=>{if(v&&$t(v)){R(v(b,f));return}bo.isAxiosError(b),R(b)})})}}const Cn="YYYY-MM-DD HH:mm:ss";function La(a,s=!1){if(!a)return s?"":{};const r=new Date().getTime();return s?`?_t=${r}`:{_t:r}}function Jo(a){if(Object.prototype.toString.call(a)==="[object Object]")for(const s in a){if(a[s]&&a[s]._isAMomentObject&&(a[s]=a[s].format(Cn)),Vt(s)){const r=a[s];if(r)try{a[s]=Vt(r)?r.trim():r}catch(d){throw new Error(d)}}us(a[s])&&Jo(a[s])}}function An(a,s){let r="";for(const d in s)r+=`${d}=${encodeURIComponent(s[d])}&`;return r=r.replace(/&$/,""),/\?$/.test(a)?a+r:a.replace(/\/?$/,"?")+r}const Sn={transformRequestHook:(a,s)=>{const{isTransformResponse:r,isReturnNativeResponse:d}=s,i=a.config.method?.toLowerCase();if(a.status===204||i==="put"||i==="patch"||d)return a;if(!r)return a.data;const{data:c}=a;if(!c)throw new Error("请求接口错误");if(c&&typeof c=="object"&&Reflect.has(c,"code")&&Reflect.has(c,"message")){const{code:n,message:v}=c;if(n===200)return c.data;throw new Error(v||`请求接口错误, 错误码: ${n}`)}else return c},beforeRequestHook:(a,s)=>{const{apiUrl:r,isJoinPrefix:d,urlPrefix:i,joinParamsToUrl:c,formatDate:f,joinTime:n=!0}=s;d&&i&&Vt(i)&&(a.url=`${i}${a.url}`),r&&Vt(r)&&!a.baseURL&&(a.url=`${r}${a.url}`);const v=a.params||{},I=a.data||!1;return f&&I&&!Vt(I)&&Jo(I),a.method?.toUpperCase()==="GET"?Vt(v)?(a.url=`${a.url+v}${La(n,!0)}`,a.params=void 0):a.params=Object.assign(v||{},La(n,!1)):Vt(v)?(a.url+=v,a.params=void 0):(f&&Jo(v),Reflect.has(a,"data")&&a.data&&(Object.keys(a.data).length>0||I instanceof FormData)?(a.data=I,a.params=v):(a.data=v,a.params=void 0),c&&(a.url=An(a.url,{...a.params,...a.data}))),a},requestInterceptors:(a,s)=>{const r=localStorage.getItem(Dt),d=localStorage.getItem(Ft);return d&&!/^(https?:)?\/\//.test(a.url||"")&&!a.baseURL&&(a.baseURL=d),r&&a?.requestOptions?.withToken!==!1&&(a.headers.hasAuthorization()||(a.headers["x-user-token"]=r)),a},responseInterceptors:a=>a,responseInterceptorsCatch:a=>{const{response:s}=a;if(s&&s.data){const d=s.data?.message;return d?Promise.reject(new Error(d)):Promise.reject(a)}return Promise.reject(a)}};function In(a){return new zn(Yl({authenticationScheme:"",timeout:10*1e3,withCredentials:!1,headers:{"Content-Type":"application/json;charset=UTF-8"},transform:Sn,requestOptions:{apiUrl:"",isJoinPrefix:!0,urlPrefix:"",isReturnNativeResponse:!1,isTransformResponse:!0,joinParamsToUrl:!1,formatDate:!0,joinTime:!1,ignoreRepeatRequest:!0,withToken:!0,retry:{count:3,delay:1e3}}},{}))}const Z=In();function Vn(){return Z.get({url:"/api/settings"})}function Un(a){return Z.post({url:"/api/settings",data:a})}function Mn(a){return Z.post({url:"/api/settings/webpanel/style",data:a})}function Ln(){return Z.get({url:"/api/settings/webpanel/style"})}async function qt(){return await Z.post({url:"/api/files/upload/init"})}async function Ht(a,s,r,d,i){const c=new FormData;return c.append("index",s.toString()),c.append("file",r),await Z.post({url:`/api/files/upload/chunk/${a}`,data:c,headers:{"Content-Type":"multipart/form-data"},timeout:300*1e3,onUploadProgress:d,signal:i})}async function Wt(a,s){return await Z.post({url:`/api/files/upload/finish/${a}`,data:{totalChunks:s},timeout:120*1e3})}async function Mt(a){return await Z.post({url:`/api/files/upload/delete/${a}`})}async function Bn(a){return await Z.get({url:`/api/files/upload/inspect/${a}`,timeout:60*1e3})}async function Tn(a,s=""){return await Z.get({url:`/api/files/instance/${a}/lists`,params:{path:s}})}async function Uo(a,s){return await Z.get({url:`/api/files/instance/${a}/content`,params:{path:s}})}function ma(a,s,r){return Z.post({url:`/api/files/instance/${a}/content`,data:{path:s,content:r}})}function Rn(a,s,r){return Z.post({url:`/api/files/instance/${a}/directory`,data:{path:s,name:r}})}function jn(a,s,r){return Z.post({url:`/api/files/instance/${a}/rename`,data:{oldPath:s,newPath:r}})}function Pn(a,s){return Z.post({url:`/api/files/instance/${a}/delete`,data:{paths:s}})}function bs(a,s,r,d){return Z.post({url:`/api/files/instance/${a}/upload`,data:{uploadId:s,fileName:r,currentPath:d}})}function xs(a,s){return Z.get({url:`/api/files/instance/${a}/download`,params:{path:s},responseType:"blob"})}function En(a,s,r,d){return Z.post({url:`/api/files/instance/${a}/compress`,data:{sources:s,targetName:r,currentPath:d}})}function Dn(a){return Z.get({url:`/api/files/task/compress/${a}`})}function gs(a,s,r,d="utf-8",i=!0){return Z.post({url:`/api/files/instance/${a}/decompress`,data:{fileName:s,currentPath:r,encoding:d,createSubFolder:i}})}function hs(a){return Z.get({url:`/api/files/task/decompress/${a}`})}async function ys(a,s,r){return await Z.post({url:`/api/files/instance/${a}/chmod`,data:{path:s,mode:r}})}async function Xo(a,s,r){return await Z.get({url:`/api/files/pm/instance/${a}/list?${r?"checkClient=true":""}`,params:{mode:s}})}async function Fn(a,s,r,d){return await Z.post({url:`/api/files/pm/instance/${a}/set`,data:{mode:s,action:r,targets:d}})}function On(a,s,r){return Z.post({url:`/api/files/instance/${a}/copy`,data:{sourcePaths:s,targetPath:r},timeout:120*1e3})}function Nn(a,s,r){return Z.post({url:`/api/files/instance/${a}/move`,data:{sourcePaths:s,targetPath:r},timeout:120*1e3})}function Kn(a,s){return Z.post({url:"/api/static/images/upload",data:{fileKey:a,fileName:s}})}async function _s(a,s,r,d){return await Z.post({url:`/api/files/instance/${a}/download`,data:{path:s,url:r,filename:d}})}function ws(a){return Z.get({url:`/api/files/task/download/${a}`})}const Gt=zt("webpanel",{state:()=>({settings:{webPanelStyleDarkBackgroundOpacity:1,webPanelStyleDarkComponentsOpacity:.4,webpPanelTerminalBlurDark:5,webPanelStyleLightBackground:"",webPanelStyleLightBackgroundOpacity:1,webPanelStyleLightComponentsOpacity:.6,webpPanelTerminalBlurLight:5,webPanelStyleDarkBackground:"",webPanelColorizeLogLevel:1},loading:!1,submitLoading:!1}),actions:{async fetchSettings(){this.loading=!0;try{const a=await Ln();this.settings=a}catch(a){console.error("获取面板样式失败",a)}finally{this.loading=!1}},async saveSettings(){this.submitLoading=!0;try{await Mn(this.settings),M.success("面板样式保存成功")}catch(a){M.error("保存失败: "+a.message)}finally{this.submitLoading=!1}},async uploadImage(a){if(!a)return M.error("文件对象无效"),null;if(!["image/png","image/jpeg","image/webp"].includes(a.type))return M.error("仅支持 PNG, JPG, WEBP 格式的图片"),null;if(!(a.size/1024/1024<10))return M.error("图片大小不能超过 10MB"),null;try{const{uploadId:d}=await qt();return await Ht(d,1,a),await Wt(d,1),await Kn(d,a.name),M.success(`上传成功: ${a.name}`),a.name}catch(d){return M.error("上传失败: "+(d.message||"网络错误")),null}}},persist:{key:"webpanel-style-storage",paths:["settings"]}}),qn=de({__name:"index",setup(a){const s=Ye(),r=ut(),d=Be(),i=Gt(),c=aa(r),f=(u,R)=>u?u.startsWith("http")?u:`${d.baseUrl||window.location.origin}/api/static/images/${u}`:R,n=te(()=>{const u=i.settings,R=f(u.webPanelStyleLightBackground,ca),b=f(u.webPanelStyleDarkBackground,ua);return{"--bg-img-light":`url('${R}')`,"--bg-img-dark":`url('${b}')`,"--bg-op-light":u.webPanelStyleLightBackgroundOpacity,"--bg-op-dark":u.webPanelStyleDarkBackgroundOpacity,"--comp-op-light":u.webPanelStyleLightComponentsOpacity,"--comp-op-dark":u.webPanelStyleDarkComponentsOpacity,"--term-blur-light":`${u.webpPanelTerminalBlurLight??5}px`,"--term-blur-dark":`${u.webpPanelTerminalBlurDark??5}px`}}),v=te(()=>r.enableCustomTheme),I=te(()=>[{"t-layout--with-sider":r.showSidebar}]);return ze(()=>{i.fetchSettings()}),_e(()=>s.path,()=>{document.querySelector(`.${Je}-layout`).scrollTo({top:0,behavior:"smooth"})}),(u,R)=>{const b=h("t-aside"),A=h("t-header"),p=h("t-content"),k=h("t-layout");return l(),x("div",{class:ue(["global-layout-bg",{"custom-theme-enabled":v.value}]),style:Oe(n.value)},[v.value?(l(),W(it("style"),{key:0},{default:o(()=>[...R[0]||(R[0]=[m(" .global-layout-bg.custom-theme-enabled .terminal-wrapper { backdrop-filter: blur(var(--term-blur-light)) !important; -webkit-backdrop-filter: blur(var(--term-blur-light)) !important; } html[theme-mode='dark'] .global-layout-bg.custom-theme-enabled .terminal-wrapper, .global-layout-bg.custom-theme-enabled.dark .terminal-wrapper { backdrop-filter: blur(var(--term-blur-dark)) !important; -webkit-backdrop-filter: blur(var(--term-blur-dark)) !important; } ",-1)])]),_:1})):K("",!0),w(c).layout.value==="side"?(l(),W(k,{key:"side",class:ue(I.value)},{default:o(()=>[t(b,null,{default:o(()=>[t(Ua)]),_:1}),t(k,null,{default:o(()=>[t(A,null,{default:o(()=>[t(Ia)]),_:1}),t(p,null,{default:o(()=>[t(Va)]),_:1})]),_:1})]),_:1},8,["class"])):(l(),W(k,{key:"no-side"},{default:o(()=>[t(A,null,{default:o(()=>[t(Ia)]),_:1}),t(k,{class:ue(I.value)},{default:o(()=>[t(Ua),t(Va)]),_:1},8,["class"])]),_:1})),t(da)],6)}}}),ft=me(qn,[["__scopeId","data-v-b0aaaf37"]]),Hn=[{path:"/dashboard",redirect:"/dashboard/base",component:ft,name:"dashboard",meta:{title:"仪表盘",icon:"dashboard",roleCode:["admin","user"]},children:[{path:"base",name:"DashboardBaseIndex",component:()=>Ge(()=>Promise.resolve().then(()=>hc),void 0),meta:{title:"仪表盘",hidden:!0,roleCode:["admin","user"]}}]},{path:"/instance",component:ft,name:"instance",meta:{title:"服务端管理",icon:"server",roleCode:["admin","user"]},children:[{path:"list",name:"InstanceList",component:()=>Ge(()=>Promise.resolve().then(()=>lu),void 0),meta:{title:"服务端列表",icon:"grid-view",roleCode:["admin","user"]}},{path:"create",name:"InstanceCreate",component:()=>Ge(()=>Promise.resolve().then(()=>K0),void 0),meta:{title:"创建服务端",icon:"add"}},{path:"backup",name:"InstanceBackupManager",component:()=>Ge(()=>Promise.resolve().then(()=>xf),void 0),meta:{title:"备份管理",icon:"backup",roleCode:["admin","user"]}},{path:"cron",name:"InstanceCronTasksManager",component:()=>Ge(()=>Promise.resolve().then(()=>v1),void 0),meta:{title:"定时任务",icon:"time",roleCode:["admin","user"]}}]},{path:"/frp",component:ft,name:"frp",meta:{title:"隧道管理",icon:"rocket",roleCode:["admin","user"]},children:[{path:"list",name:"FrpList",component:()=>Ge(()=>Promise.resolve().then(()=>fb),void 0),meta:{title:"隧道列表",icon:"format-vertical-align-left",roleCode:["admin","user"]}},{path:"create",name:"FrpCreate",component:()=>Ge(()=>Promise.resolve().then(()=>u2),void 0),meta:{title:"创建隧道",icon:"add"}}]}],Wn=Object.freeze(Object.defineProperty({__proto__:null,default:Hn},Symbol.toStringTag,{value:"Module"})),Gn=[{path:"/frp/console",component:ft,meta:{hidden:!0},children:[{path:":frpId",name:"FrpConsole",component:()=>Ge(()=>Promise.resolve().then(()=>iw),void 0),meta:{title:"隧道控制台",hidden:!0,activeMenu:"/frp/list"}}]},{path:"/instance/console",component:ft,meta:{hidden:!0},children:[{path:":serverId",name:"InstanceConsole",component:()=>Ge(()=>Promise.resolve().then(()=>X$),void 0),meta:{title:"服务器控制台",hidden:!0,activeMenu:"/instance/list"}}]},{path:"/instance/files",component:ft,meta:{hidden:!0},children:[{path:":serverFilesId",name:"InstanceFiles",component:()=>Ge(()=>Promise.resolve().then(()=>w6),void 0),meta:{title:"文件管理",hidden:!0,activeMenu:"/instance/list"}}]}],Jn=Object.freeze(Object.defineProperty({__proto__:null,default:Gn},Symbol.toStringTag,{value:"Module"})),Ba=()=>Ge(()=>Promise.resolve().then(()=>C6),void 0),Xn=[{path:"/frame",name:"Frame",component:ft,redirect:"/frame/doc",meta:{icon:"earth",title:"链接",roleCode:["admin","user"]},children:[{path:"MSLX",name:"MSLX",component:Ba,meta:{frameSrc:"https://mslx.mslmc.cn",frameBlank:!0,title:"MSLX 文档",icon:"book",roleCode:["admin","user"]}},{path:"MSLUser",name:"MSLUser",component:Ba,meta:{frameSrc:"https://user.mslmc.net",frameBlank:!0,title:"MSL 用户中心",icon:"user-arrow-left",roleCode:["admin","user"]}}]}],Qn=Object.freeze(Object.defineProperty({__proto__:null,default:Xn},Symbol.toStringTag,{value:"Module"})),Yn=[{path:"/users",component:ft,name:"usersBase",meta:{title:"用户管理",icon:"user"},children:[{path:"",name:"users",component:()=>Ge(()=>Promise.resolve().then(()=>e7),void 0),meta:{title:"用户管理",hidden:!0}}]},{path:"/settings",component:ft,name:"settingsBase",meta:{title:"设置",icon:"setting",roleCode:["admin","user"]},children:[{path:"",name:"settings",component:()=>Ge(()=>Promise.resolve().then(()=>W7),void 0),meta:{title:"设置",hidden:!0,roleCode:["admin","user"]}}]},{path:"/about",component:ft,name:"aboutBase",meta:{title:"关于面板",icon:"info-circle",roleCode:["admin","user"]},children:[{path:"",name:"about",component:()=>Ge(()=>Promise.resolve().then(()=>iA),void 0),meta:{title:"关于面板",hidden:!0,roleCode:["admin","user"]}}]}],Zn=Object.freeze(Object.defineProperty({__proto__:null,default:Yn},Symbol.toStringTag,{value:"Module"})),Ta=Object.assign({"./modules/base.ts":Wn,"./modules/components.ts":Jn,"./modules/iframe.ts":Qn,"./modules/others.ts":Zn}),ks=[];Object.keys(Ta).forEach(a=>{const s=Ta[a].default||{},r=Array.isArray(s)?[...s]:[s];ks.push(...r)});const Qo=[...ks],ei=[{path:"/login",name:"login",component:()=>Ge(()=>Promise.resolve().then(()=>PA),void 0)},{path:"/oauth/callback",name:"oauth",component:()=>Ge(()=>Promise.resolve().then(()=>t9),void 0)},{path:"/",redirect:"/dashboard/base"},{path:"/404",name:"404",component:()=>Ge(()=>Promise.resolve().then(()=>i9),void 0)},{path:"/:w+",name:"404Page",redirect:"/404"}],$s=[...ei,...Qo],ti=()=>{const a=[];return $s.forEach(s=>{s.meta&&s.meta.expanded&&a.push(s.path),s.children&&s.children.length>0&&s.children.filter(r=>r.meta&&r.meta.expanded).forEach(r=>{a.push(s.path),a.push(`${s.path}/${r.path}`)})}),Zl(a)},$o=(a=3)=>{const s=ht.currentRoute.value;return s.path?s.meta?.activeMenu?s.meta.activeMenu:s.path.split("/").filter((r,d)=>d<=a&&d>0).map(r=>`/${r}`).join(""):""};function Ie(a){a.includes("http")?window.open(a):ht.replace(a)}const ht=Qs({history:Ys(),routes:$s,scrollBehavior(){return{el:"#app",top:0,behavior:"smooth"}}});function zs(a,s){const r=[],d=[];return a.forEach(i=>{const c={...i};if((n=>n?Array.isArray(n)?s.some(v=>n.includes(v)):s.includes(n):!1)(c.meta?.roleCode||c.name)){if(c.children&&c.children.length>0){const n=zs(c.children,s);c.children=n.accessedRouters}r.push(c)}else d.push(c)}),{accessedRouters:r,removeRoutes:d}}const ro=zt("permission",{state:()=>({whiteListRouters:["/login","/oauth/callback"],routers:[],removeRoutes:[],dynamicRoutesAdded:[]}),actions:{async initRoutes(a){this.clearRoutes();let s=[],r=[];if(a.includes("all"))s=Qo;else{const i=zs(Qo,a);s=i.accessedRouters,r=i.removeRoutes}const d=[];s.forEach(i=>{ht.addRoute(i),i.name&&d.push(i.name)}),this.routers=s,this.removeRoutes=r,this.dynamicRoutesAdded=d},async clearRoutes(){this.dynamicRoutesAdded.forEach(s=>{ht.hasRoute(s)&&ht.removeRoute(s)}),this.routers=[],this.removeRoutes=[],this.dynamicRoutesAdded=[]}}});function oi(){return ro(Bo)}const ai={...ia,showSettingPanel:!1,colorList:xr,chartColors:fs,systemTheme:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},ut=zt("setting",{state:()=>ai,getters:{showSidebar:a=>a.layout!=="top",showSidebarLogo:a=>a.layout==="side",showHeaderLogo:a=>a.layout!=="side",displayMode:a=>a.mode==="auto"?a.systemTheme:a.mode},actions:{async changeMode(a){let s=a;a==="auto"&&(s=this.systemTheme);const r=s==="dark";document.documentElement.setAttribute("theme-mode",r?"dark":""),this.chartColors=r?gr:fs},setSystemTheme(a){this.systemTheme=a,this.mode==="auto"&&this.changeMode("auto")},changeBrandTheme(a){document.documentElement.setAttribute("theme-color",a)},addColor(a){this.colorList={...this.colorList,...a}},updateConfig(a){for(const s in a)a[s]!==void 0&&(this[s]=a[s]),s==="mode"&&this.changeMode(a[s]),s==="brandTheme"&&this.changeBrandTheme(a[s])}},persist:{paths:[...er(ia),"colorList","chartColors"]}});async function si(){return Z.get({url:"/api/update/info"})}async function li(){return Z.get({url:"/api/update/download"})}async function ri(){return Z.post({url:"/api/update"})}const pa=zt("update",()=>{const a=y(!1),s=y(null),r=y(null),d=y(!1);return{showUpdateModal:a,updateInfo:s,downloadInfo:r,loading:d,checkAppUpdate:async(f=!1)=>{if(Be().isAdmin&&!d.value){d.value=!0;try{const I=await si();if(I&&I.needUpdate){if(!f&&localStorage.getItem("mslx-skip-version")===I.latestVersion){console.log(`[Update] 用户已跳过版本 ${I.latestVersion}`);return}s.value=I;try{const u=await li();r.value=u}catch(u){console.error("获取下载链接失败",u),r.value={web:"",file:""}}a.value=!0,f&&M.success("发现新版本!")}else f&&(I.environment==="fnos"?M.success("请前往飞牛应用商店检查更新!"):M.success("当前已是最新版本"))}catch(v){console.error("[Update] 检查更新失败:",v),f&&M.error("检查更新失败,请检查网络日志")}finally{d.value=!1}}},handleSkipVersion:()=>{s.value?.latestVersion&&(localStorage.setItem("mslx-skip-version",s.value.latestVersion),M.success("已跳过该版本,下次将不再提醒"),a.value=!1)}}});async function Mo(a){return await Z.post({url:"/api/instance/createServer",data:a})}async function Ra(a,s=!1){return await Z.post({url:"/api/instance/delete",data:{id:a,deleteFiles:s}})}async function ni(){return await Z.get({url:"/api/instance/list"})}async function It(a,s){return await Z.post({url:"/api/instance/action",data:{id:a,action:s},timeout:60*1e3})}async function va(a){return await Z.get({url:"/api/instance/info",params:{id:a}})}async function ii(a){return await Z.get({url:`/api/instance/settings/general/${a}`})}async function di(a){return await Z.post({url:`/api/instance/settings/general/${a.id}`,data:a})}async function ci(a){return await Z.get({url:`/api/instance/backups/${a}`})}async function ui(){return await Z.get({url:"/api/instance/backups/all"})}async function Yo(a,s){return await Z.post({url:"/api/instance/backups/delete",data:{id:a,fileName:s}})}function Zo(a,s){const r=Be(),{baseUrl:d,token:i}=r;return`${d||window.location.origin}/api/instance/backups/download?id=${a}&fileName=${encodeURIComponent(s)}&x-user-token=${i}`}async function Cs(a){return await Z.get({url:`/api/instance/players/online/${a}`})}async function mi(a){return await Z.get({url:`/api/instance/players/whitelist/${a}`})}async function pi(a,s){return await Z.post({url:`/api/instance/players/whitelist/add/${a}`,data:{name:s}})}async function vi(a,s){return await Z.post({url:`/api/instance/players/whitelist/remove/${a}`,data:{name:s}})}async function fi(a){return await Z.get({url:`/api/instance/players/ops/${a}`})}async function bi(a,s){return await Z.post({url:`/api/instance/players/ops/add/${a}`,data:{name:s}})}async function xi(a,s){return await Z.post({url:`/api/instance/players/ops/remove/${a}`,data:{name:s}})}async function gi(a){return await Z.get({url:`/api/instance/players/banplayer/${a}`})}async function hi(a,s,r){return await Z.post({url:`/api/instance/players/banplayer/add/${a}`,data:{name:s,reason:r}})}async function yi(a,s){return await Z.post({url:`/api/instance/players/banplayer/remove/${a}`,data:{name:s}})}async function _i(a){return await Z.get({url:`/api/instance/players/banip/${a}`})}async function wi(a,s,r){return await Z.post({url:`/api/instance/players/banip/add/${a}`,data:{ip:s,reason:r}})}async function ki(a,s){return await Z.post({url:`/api/instance/players/banip/remove/${a}`,data:{ip:s}})}async function $i(a){return await Z.get({url:`/api/instance/players/history/${a}`})}async function zi(a){return await Z.get({url:`/api/instance/map/spawn/${a}`})}const At=zt("instanceList",()=>{const a=y([]),s=y(0),r=y(0);async function d(){try{a.value=await ni(),s.value=a.value.length,r.value=a.value.filter(i=>i.status).length}catch(i){M.error("获取实例列表失败:"+i.message)}}return{instanceList:a,refreshInstanceList:d,totalInstanceCount:s,onlineInstanceCount:r}});async function Ci(a,s,r,d="toml"){return await Z.post({url:"/api/frp/add",data:{name:a,config:s,provider:r,format:d}})}async function Ai(a){return await Z.post({url:"/api/frp/delete",data:{id:a}})}function Si(){return Z.get({url:"/api/frp/list"})}function ja(a,s){return Z.post({url:"/api/frp/action",data:{action:a,id:s}})}function Ii(a){return Z.get({url:"/api/frp/info",params:{id:a}})}function Vi(){return Z.get({url:"/api/frp/autostart"})}function Ui(a){return Z.post({url:"/api/frp/autostart",data:{frpIds:a}})}const Lo=zt("tunnels",()=>{const a=y([]);async function s(){try{a.value=await Si()}catch(r){M.error("获取Frp列表失败:"+r.message)}}return{frpList:a,getTunnels:s}}),Pa="remembered_url",Ea="remembered_username",Fo={name:"",username:"",avatar:"",id:"",version:"",systemInfo:{netVersion:"",osType:"",osVersion:"",osArchitecture:"",hostname:"",docker:!1},targetFrontendVersion:{desktop:"",panel:""},roles:[]},Be=zt("user",{state:()=>({token:localStorage.getItem(Dt)||"",baseUrl:localStorage.getItem(Ft)||window.location.origin,userInfo:{...Fo}}),getters:{roles:a=>a.userInfo?.roles||[],isAdmin:a=>a.userInfo?.roles?.includes("all")||!1},actions:{async checkConnection(a){let s=a;a&&!/^(https?:)?\/\//.test(a)&&(s=`http://${a}`);try{return await Z.get({url:"/api/ping",baseURL:s||void 0,timeout:3e3}),!0}catch{return!1}},async login(a){const{url:s,username:r,password:d,checked:i}=a;let c=s;c&&!/^(https?:)?\/\//.test(c)&&(c=`http://${c}`);const f=c||"";try{const n=await Z.post({url:"/api/auth/login",baseURL:f,data:{username:r,password:d}});this.token=n.token,this.baseUrl=f,localStorage.setItem(Dt,n.token),localStorage.setItem(Ft,f),i?(localStorage.setItem(Pa,s||""),localStorage.setItem(Ea,r)):(localStorage.removeItem(Pa),localStorage.removeItem(Ea)),await this.getUserInfo()}catch(n){throw console.error("Login failed:",n),n}},async loginByOAuth(a){try{this.token=a.token,localStorage.setItem(Dt,a.token),this.baseUrl||(this.baseUrl=window.location.origin,localStorage.setItem(Ft,this.baseUrl)),await this.getUserInfo()}catch(s){throw console.error("OAuth登录失败:",s),s}},async getUserInfo(){if(this.token)try{const a=await Z.get({url:"/api/status"});this.userInfo={...Fo,...a,name:a.user||a.username,roles:a.roles||[]},await ro().initRoutes(this.userInfo.roles)}catch(a){console.error("Get user info failed:",a),await this.logout(),Ie("/login")}},async logout(){await ro().clearRoutes(),localStorage.removeItem(Dt),localStorage.removeItem(Ft),this.token="",this.baseUrl="",this.userInfo={...Fo}},async removeToken(){this.token=""}},persist:{afterRestore:a=>{a.store.token&&a.store.getUserInfo()}}});function As(){return Be(Bo)}const Bo=Zs();Bo.use(el());oo.configure({showSpinner:!1});ht.beforeEach(async(a,s,r)=>{window.document.title=a.meta.title?`${a.meta.title} | MSLX 控制台`:"MSLX 控制台",oo.start();const d=As(),i=oi(),{whiteListRouters:c}=i,{token:f}=d;if(f){if(a.path==="/login"||a.path==="/oauth/callback"){r();return}const{roles:n}=d;if(n&&n.length>0)r();else try{await d.getUserInfo();const{roles:v}=d;await i.initRoutes(v),ht.hasRoute(a.name)?r():r("/")}catch(v){M.error(v),r({path:"/login",query:{redirect:encodeURIComponent(a.fullPath)}}),oo.done()}}else c.indexOf(a.path)!==-1?r():r({path:"/login",query:{redirect:encodeURIComponent(a.fullPath)}}),oo.done()});ht.afterEach(a=>{a.path==="/login"&&As().logout(),oo.done()});const Mi={class:"flex justify-between items-start mb-5"},Li={class:"flex flex-col"},Bi={class:"flex items-center gap-2"},Ti={class:"m-0 text-[20px] font-bold text-[var(--td-text-color-primary)] tracking-wide"},Ri={class:"mt-2.5 flex items-center gap-2"},ji={class:"mb-6 min-h-[120px] flex flex-col justify-center"},Pi={key:0,class:"flex flex-col items-center text-center py-2"},Ei={key:1,class:"py-2"},Di={key:2,class:"flex flex-col items-center text-center py-4"},Fi={key:3,class:"flex flex-col items-center text-center py-4"},Oi={key:4,class:"py-2"},Ni={key:0,class:"flex items-center gap-2 text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-950/30 p-3.5 rounded-xl border border-red-100 dark:border-red-900/50"},Ki={class:"text-sm font-medium"},qi={class:"flex justify-between items-end mb-2 text-sm"},Hi={class:"font-medium text-[var(--color-primary)]"},Wi={class:"text-xs font-mono text-[var(--td-text-color-secondary)]"},Gi={key:5,class:"flex flex-col gap-3"},Ji={class:"m-0 mt-1 pl-4 leading-relaxed opacity-90 space-y-1"},Xi={class:"flex flex-col gap-1.5 mt-1"},Qi={class:"bg-zinc-50 dark:bg-zinc-900/50 rounded-xl p-3.5 max-h-[200px] overflow-y-auto border border-zinc-200/60 dark:border-zinc-700/50 shadow-inner custom-scrollbar"},Yi={class:"font-mono text-[13px] leading-relaxed whitespace-pre-wrap text-zinc-700 dark:text-zinc-300"},Zi={key:0,class:"flex flex-col gap-3"},ed={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},td={key:0,class:"mt-2 flex justify-center"},od={key:1,class:"mt-4"},ad={key:2,class:"mt-4"},sd={key:3,class:"flex flex-col gap-3 mt-4"},ld=de({__name:"UpdateModal",props:{visible:{type:Boolean},updateInfo:{},downloadInfo:{}},emits:["close","skip","success"],setup(a,{emit:s}){const r=a,d=s,i=Be(),c=y(!1),f=y(0),n=y("0 KB/s"),v=y("准备中..."),I=y(!1),u=y(!1),R=y(!1),b=y("");let A=null;const p=()=>{u.value=!1,I.value=!1,b.value="",c.value=!1,R.value=!1,f.value=0},k=te(()=>r.updateInfo?.status==="beta"),g=te(()=>{const V=i.userInfo?.systemInfo?.osType||"";return V.includes("macOS")||V.includes("OSX")}),B=te(()=>(i.userInfo?.systemInfo?.osType||"").toLowerCase().includes("linux")),C=V=>{V&&window.open(V,"_blank")},T=()=>{d("close"),Ie("/instance/list")},U=()=>{if(c.value&&!R.value){M.warning("正在更新中,请勿关闭窗口");return}P(),d("close")},D=()=>{d("skip")},N=()=>{window.location.reload()};_e(()=>r.visible,(V,_)=>{V&&!_&&p()});const P=async()=>{if(A){try{await A.stop()}catch(V){console.error("Stop Hub Error:",V)}A=null}},j=async()=>{await P();const{baseUrl:V,token:_}=i,z=new URL("/api/hubs/daemonUpdate",V||window.location.origin);_&&z.searchParams.append("x-user-token",_),A=new Ct().withUrl(z.toString(),{withCredentials:!1}).configureLogging(jt.Warning).withAutomaticReconnect([0,2e3,5e3,1e4]).build(),A.on("UpdateProgress",E=>{f.value=E.progress||0,n.value=E.speed||"",E.stage==="permission_check"?v.value="等待服务端确认权限...":E.stage==="restarting"?(console.log("[Update] 收到重启信号,准备轮询..."),v.value="服务正在重启...",P(),setTimeout(()=>{$()},3e3)):v.value=E.status||"正在处理..."}),A.on("UpdateFailed",E=>{c.value=!1,b.value=E||"更新失败",P()}),A.onclose(E=>{A&&(c.value&&f.value>=100?setTimeout(()=>{$()},6e3):E&&(c.value=!1,b.value=`连接断开: ${E.message}`))});try{await A.start()}catch(E){b.value=`连接更新服务失败: ${E.message}`,c.value=!1}},O=async()=>{if(!c.value){c.value=!0,I.value=!1,u.value=!1,b.value="",f.value=0,R.value=!1,await j();try{await ri()}catch(V){c.value=!1,P();const _=V.message||"";_.includes("Docker")||_.includes("容器")?I.value=!0:_.includes("运行")&&(_.includes("服务器")||_.includes("实例"))?u.value=!0:b.value=_||"请求更新失败,请检查网络或日志"}}},$=async()=>{v.value="服务正在重启,请稍候...";const V=async()=>{try{return await Z.get({url:"/api/ping",timeout:3e3}),!0}catch{return!1}},_=60;let z=0;const E=setInterval(async()=>{z++,await V()?(clearInterval(E),c.value=!1,R.value=!0,v.value="更新成功!",P(),setTimeout(()=>d("success"),1e3)):z>_&&(clearInterval(E),c.value=!1,b.value="服务重启超时,请手动刷新页面检查状态。",P())},2e3)};return He(()=>{P()}),(V,_)=>{const z=h("t-tag"),E=h("t-button"),F=h("t-link"),X=h("t-alert"),q=h("t-progress"),H=h("t-popconfirm"),J=h("t-dialog");return l(),W(J,{visible:r.visible,header:!1,footer:!1,"close-on-overlay-click":!1,"close-btn":!1,width:"500px",class:"update-modal","destroy-on-close":"",attach:"body",onClose:U},{default:o(()=>[e("div",Mi,[e("div",Li,[e("div",Bi,[e("h3",Ti,S(R.value?"更新完成":"发现新版本"),1),k.value?(l(),W(z,{key:0,theme:"warning",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[..._[2]||(_[2]=[m("Beta",-1)])]),_:1})):(l(),W(z,{key:1,theme:"success",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[..._[3]||(_[3]=[m("Release",-1)])]),_:1}))]),e("div",Ri,[t(z,{variant:"outline",size:"small",class:"!font-mono !rounded-md"},{default:o(()=>[m(S(a.updateInfo?.currentVersion),1)]),_:1}),_[4]||(_[4]=e("span",{class:"text-zinc-400 font-mono font-bold"},"→",-1)),t(z,{theme:"primary",variant:"light-outline",size:"small",class:"!font-mono !rounded-md"},{default:o(()=>[m(S(a.updateInfo?.latestVersion),1)]),_:1})])]),c.value?K("",!0):(l(),W(E,{key:0,variant:"text",shape:"circle",class:"hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:U},{icon:o(()=>[t(w(sa))]),_:1}))]),e("div",ji,[R.value?(l(),x("div",Pi,[t(w(Lt),{size:"48px",class:"text-emerald-500 mb-4 drop-shadow-sm"}),_[5]||(_[5]=e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-1"},"MSLX守护进程端已成功更新",-1)),_[6]||(_[6]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"},"请刷新页面以加载最新功能",-1))])):I.value?(l(),x("div",Ei,[t(X,{theme:"warning",title:"检测到 Docker 环境",class:"!rounded-xl"},{message:o(()=>[_[8]||(_[8]=m(" 当前程序运行在 ",-1)),_[9]||(_[9]=e("b",null,"Docker 容器",-1)),_[10]||(_[10]=m(" 内,不支持热更新。",-1)),_[11]||(_[11]=e("br",null,null,-1)),_[12]||(_[12]=m("请使用以下命令或者参照 ",-1)),_[13]||(_[13]=e("b",null,"官方文档",-1)),_[14]||(_[14]=m(" 更新。",-1)),_[15]||(_[15]=e("br",null,null,-1)),t(F,{theme:"primary",href:"https://mslx.mslmc.cn/docs/install/docker/",target:"_blank",class:"mt-1 align-baseline"},{default:o(()=>[..._[7]||(_[7]=[e("b",null,"Docker安装/更新文档",-1)])]),_:1})]),_:1}),_[16]||(_[16]=e("div",{class:"mt-3 bg-[#1e1e1e] text-[#d4d4d4] p-3 rounded-xl font-mono text-[13px] break-all select-all shadow-inner border border-black/20"},[m(" sudo docker compose pull && docker compose up -d "),e("span",{class:"text-zinc-500"},"# 指令仅适用于Compose部署")],-1))])):u.value?(l(),x("div",Di,[t(w(uo),{size:"48px",class:"text-amber-500 mb-3 drop-shadow-sm"}),_[17]||(_[17]=e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-2"},"无法开始更新",-1)),_[18]||(_[18]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0 leading-relaxed"},[m(" 检测到当前有服务器实例正在运行。"),e("br"),m("为了防止数据丢失,请先停止所有实例。 ")],-1))])):v.value.includes("等待服务端确认权限")?(l(),x("div",Fi,[..._[19]||(_[19]=[e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-2"},"请在服务端确认权限",-1),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0 leading-relaxed"},[m(" macOS 系统已弹出提示:"),e("br"),e("strong",{class:"text-zinc-700 dark:text-zinc-300"},"“MSLX-Daemon 想要控制应用程序 终端.app”"),m(),e("br"),m(" 请务必点击 "),e("strong",null,"【好/OK】"),m(" 以继续更新。 ")],-1)])])):c.value||b.value?(l(),x("div",Oi,[b.value?(l(),x("div",Ni,[t(w(Ja),{class:"shrink-0 text-lg"}),e("span",Ki,S(b.value),1)])):(l(),x(re,{key:1},[e("div",qi,[e("span",Hi,S(v.value),1),e("span",Wi,S(n.value),1)]),t(q,{theme:"plump",percentage:f.value,status:f.value>=100?"active":"success"},null,8,["percentage","status"])],64))])):(l(),x("div",Gi,[g.value?(l(),W(X,{key:0,theme:"warning",variant:"outline",class:"!rounded-xl !text-[13px] leading-relaxed"},{message:o(()=>[..._[20]||(_[20]=[e("strong",null,"macOS 用户请注意:",-1),e("br",null,null,-1),m(" 受 Apple 安全机制 (Gatekeeper) 限制,更新重启后应用可能无法自动启动。如遇此情况,请前往「系统设置 > 隐私与安全性」手动允许应用运行。 ",-1)])]),_:1})):K("",!0),B.value?(l(),W(X,{key:1,theme:"info",variant:"outline",class:"!rounded-xl !text-[13px] leading-relaxed"},{message:o(()=>[_[26]||(_[26]=e("strong",null,"Linux 用户提示:",-1)),e("ul",Ji,[e("li",null,[_[22]||(_[22]=m("如使用一键脚本部署,推荐优先参考 ",-1)),t(F,{theme:"primary",href:"https://mslx.mslmc.cn/docs/install/linux/",target:"_blank",class:"align-baseline font-bold"},{default:o(()=>[..._[21]||(_[21]=[m("官方文档",-1)])]),_:1}),_[23]||(_[23]=m("。",-1))]),_[24]||(_[24]=e("li",null,[m("若启用 "),e("strong",null,"Systemd"),m(" 托管,请确保服务名称为 "),e("code",null,"mslx"),m(",否则无法自动重启。")],-1)),_[25]||(_[25]=e("li",null,"如果更新完成后仍然是旧版本,请尝试手动重启服务或手动更新!",-1))])]),_:1})):K("",!0),e("div",Xi,[_[27]||(_[27]=e("div",{class:"text-[13px] font-bold text-[var(--td-text-color-secondary)] tracking-wider"},"更新内容",-1)),e("div",Qi,[e("div",Yi,S(a.updateInfo?.log||"暂无详细日志"),1)])])]))]),!R.value&&!I.value&&!u.value?(l(),x("div",Zi,[t(E,{theme:"primary",block:"",size:"large",loading:c.value,disabled:c.value,class:"!rounded-xl shadow-sm",onClick:O},{icon:o(()=>[t(w(la))]),default:o(()=>[m(" "+S(c.value?"正在更新...":"立即更新"),1)]),_:1},8,["loading","disabled"]),e("div",ed,[t(E,{variant:"outline",block:"",class:"!rounded-xl !m-0",disabled:!a.downloadInfo?.file||c.value,onClick:_[0]||(_[0]=ae=>C(a.downloadInfo?.file||""))},{icon:o(()=>[t(w(ao))]),default:o(()=>[_[28]||(_[28]=m(" 下载新版本 ",-1))]),_:1},8,["disabled"]),t(E,{variant:"dashed",block:"",class:"!rounded-xl !m-0",disabled:!a.downloadInfo?.web||c.value,onClick:_[1]||(_[1]=ae=>C(a.downloadInfo?.web||""))},{icon:o(()=>[t(w(Bt))]),default:o(()=>[_[29]||(_[29]=m(" 前往下载页 ",-1))]),_:1},8,["disabled"])]),c.value?K("",!0):(l(),x("div",td,[t(H,{content:"确定要跳过此版本吗?跳过后将不再提示该版本。后续可在设置中更新。",theme:"warning",onConfirm:D},{default:o(()=>[t(F,{theme:"default",hover:"color",size:"small",class:"!text-zinc-400 hover:!text-zinc-600 dark:hover:!text-zinc-300"},{default:o(()=>[..._[30]||(_[30]=[m(" 跳过此版本 ",-1)])]),_:1})]),_:1})]))])):K("",!0),R.value?(l(),x("div",od,[t(E,{theme:"primary",size:"large",block:"",class:"!rounded-xl shadow-sm",onClick:N},{default:o(()=>[..._[31]||(_[31]=[m("刷新页面",-1)])]),_:1})])):K("",!0),I.value?(l(),x("div",ad,[t(E,{variant:"outline",size:"large",block:"",class:"!rounded-xl",onClick:U},{default:o(()=>[..._[32]||(_[32]=[m("我知道了",-1)])]),_:1})])):K("",!0),u.value?(l(),x("div",sd,[t(E,{theme:"primary",size:"large",block:"",class:"!rounded-xl shadow-sm",onClick:T},{default:o(()=>[..._[33]||(_[33]=[m("前往实例列表管理",-1)])]),_:1}),t(E,{variant:"outline",size:"large",block:"",class:"!rounded-xl !m-0",onClick:U},{default:o(()=>[..._[34]||(_[34]=[m("暂不更新",-1)])]),_:1})])):K("",!0)]),_:1},8,["visible"])}}}),rd=me(ld,[["__scopeId","data-v-d3e49ecc"]]),nd=de({__name:"App",setup(a){const s=ut(),r=pa(),d=te(()=>s.displayMode),i=window.matchMedia("(prefers-color-scheme: dark)"),c=f=>{s.setSystemTheme(f.matches?"dark":"light")};return ze(()=>{r.checkAppUpdate(!1),i.addEventListener("change",c),s.setSystemTheme(i.matches?"dark":"light")}),He(()=>{i.removeEventListener("change",c)}),(f,n)=>{const v=h("router-view");return l(),x(re,null,[t(v,{class:ue([d.value])},null,8,["class"]),t(rd,{visible:w(r).showUpdateModal,"update-info":w(r).updateInfo,"download-info":w(r).downloadInfo,onClose:n[0]||(n[0]=I=>w(r).showUpdateModal=!1),onSkip:w(r).handleSkipVersion},null,8,["visible","update-info","download-info","onSkip"])],64)}}}),id=me(nd,[["__scopeId","data-v-ae5a7772"]]),To=tl(id);To.use(ol);To.use(Bo);To.use(ht);To.mount("#app");console.log(` +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣶⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⠿⠛⠋⠉⠩⣄⠘⢿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⡏⠑⠒⠀⠀⣀⣀⠀⠀⢹⠈⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣷⡀⢀⣰⣿⡿⣿⣧⠀⠀⢡⣾⣧⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣯⣴⣿⠿⣄⣤⣾⡿⠟⠛⠛⠿⢿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣶⠿⠛⠋⠙⣿⣏⠀⠀⢻⣿⣡⣀⣀⠀⠀⠀⠀⢹⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⠿⠋⠁⠀⣀⣤⣶⣾⣿⣿⣤⣤⣾⣿⠉⠉⠙⠻⣿⠆⢀⣾⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠁⠀⣀⣴⣿⠿⠛⠉⠀⢀⣿⡿⠿⠟⢿⣆⠀⢀⣴⣯⣴⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠀⣠⣾⠟⠋⠀⠀⠀⠀⠀⣈⣿⣷⣤⣴⣾⣿⣈⣻⣿⡟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⣰⡿⠁⠀⣠⡾⠋⠁⠀⠀⢀⣠⣴⠶⠞⠛⠛⠋⠉⠉⠉⠉⠙⠛⠻⠷⣦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠰⣿⠁⠀⠀⣿⣄⣀⣠⣴⡾⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣿⠿⣶⣄⠀⠀⠀⢀⣠⡄⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠈⠛⠶⠶⢾⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢷⣄⠉⠙⠻⠿⠟⢹⡇⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⠁⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠘⣿⣿⣦⣀⠀⠲⣾⣁⠀⠀⠀⠀⠀⡀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣦⡀⠀⠀⠀⣿⡿⣿⣿⣿⡆⠀⠉⠛⠛⠛⠛⢻⡏⠀ +⠀⠀⠀⠀⠀⠀⠀⣠⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⡄⣸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⠛⢦⡀⠰⣿⣿⣿⣽⣿⡇⠀⠀⠀⠀⠀⢠⡿⠀⠀ +⠀⠀⠀⠀⣀⣤⡾⢻⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⡏⠙⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠰⣽⣶⣄⠉⠻⣿⣿⣧⠀⠀⢀⣤⣾⠟⠁⠀⠀ +⢰⣶⡾⠛⠋⠉⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⢸⣸⡇⠀⣨⣿⣾⡋⠀⠀⠀⠀⢀⠀⠀⣿⡀⠀⠈⠛⢷⣄⠈⠛⣿⡆⠀⠘⣿⡀⠀⠀⠀⠀ +⠀⠙⠿⣦⣀⠀⠀⠀⠀⠀⠀⡾⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠋⠀⠙⢿⣦⣀⠀⠀⠘⣷⣄⣹⣧⠀⠀⠀⠈⢻⣦⠀⠈⠋⠀⠀⠘⣧⠀⠀⠀⠀ +⠀⠀⠀⠈⠛⠿⢶⡶⠃⠀⣰⠃⠀⠀⠀⠀⠀⢠⣿⠃⠀⠀⠀⠀⠀⠀⠉⠻⢷⣦⣤⣘⣿⡛⠛⠀⢀⣴⣶⣦⡹⣷⡀⠀⠀⠀⠀⠸⣧⠀⠀⠀ +⠀⠀⠀⠀⠀⢠⡿⠃⠀⢀⡟⠀⠀⠀⠀⠀⠀⣼⣿⠀⠀⢀⣴⣿⣿⣷⡄⠀⠀⠈⠉⠉⠉⠉⠀⠀⢸⣿⣿⣿⣷⠻⣧⠀⠀⠀⠀⠀⢿⡆⠀⠀ +⠀⠀⠀⠀⢰⣿⠁⠀⠀⢸⠁⠀⠀⠀⠀⠀⠈⠋⣿⠀⠀⠸⣿⣿⣿⣿⡷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⠟⠃⠀⢻⣧⠀⠀⠀⠀⠸⣧⠀⠀ +⠀⠀⠀⠀⣿⡇⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠉⠻⠿⠋⠀⠀⢠⡀⠀⠀⣀⣀⣀⣸⠇⠀⠀⠀⠀⠀⠈⢿⣧⠀⠀⠀⠀⣿⡀⠀ +⠀⠀⠀⢰⣿⠁⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⢿⡀⠀⠀⠀⠀⠀⣸⠀⠀⠈⠛⠒⠛⠉⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⠀⠀⠀⠀⢸⡇⠀ +⠀⠀⠀⢸⣿⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠁⠀⠀⠀⠀⢸⣿⠀ +⠀⠀⠀⢸⣿⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣤⣶⡿⠋⣿⠀⠀⠀⠀⠀⠀⣿⠀ +⠀⠀⠀⠘⣿⡄⠀⠀⢸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣧⣄⣀⣀⣀⣠⣤⣶⣶⣾⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⣠⠀⠀⢠⣿⡄ +⠀⠀⠀⠀⢻⣧⠀⠀⠸⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣟⠛⢻⡟⢻⡉⠉⣫⣀⠀⠀⠀⠉⠉⠛⠙⠿⣷⣿⡿⠁⢀⣰⡟⠀⠀⢸⣿⠀ +⠀⠀⠀⠀⠈⢻⣧⡀⠀⠹⣷⡀⠀⠀⠀⠀⢠⠀⠀⠀⠘⣿⣿⣿⢻⡿⠀⠈⠷⠟⠁⠘⢾⣿⣶⣤⣶⣾⡇⠀⣿⣿⣤⣶⣿⣿⠃⠀⠀⣾⡟⠀ +⠀⠀⠀⠀⠀⠈⠻⣷⣄⡀⠹⣷⣄⠀⠀⠀⢸⣷⣤⡀⠀⠈⢻⣿⣯⣤⠀⠀⣠⡀⠀⢀⣼⣿⣿⣿⣿⣟⠁⠐⠿⣿⣿⣿⣿⠋⠀⢀⣾⠟⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⣷⣮⣽⣷⣶⣤⣤⣿⣿⣿⣷⣶⣦⣭⣿⣿⣧⣠⠵⢯⡆⠚⣯⢿⠋⠛⠛⢫⣀⣠⣾⣿⢿⣿⣥⣤⠶⠛⠁⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⢁⣾⣿⣿⣿⠿⠿⠿⠿⠻⢿⣿⣿⣷⣦⣤⣤⣀⣤⣤⣄⣶⣿⣿⡿⠟⠉⠀⠀⢻⡄⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⡇⠀⠀⣀⡀⠈⢿⣧⠀⠉⠙⠛⠛⠛⠛⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀⢿⡄⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣴⣿⣿⡏⠛⠉⢻⣿⣿⣿⣾⣿⣿⠀⢸⣿⠀⠀⠀⠀⠀⠙⠓⠢⠀⠀⠀⠀⠀⠸⠀⠀⠀⠘⣿⡄⠀⠀⠀⠀⠀`);console.log("人生得意须尽吃,莫使金箸空对月。 —— 派蒙");const dd={class:"design-card w-full bg-white dark:bg-zinc-800 p-5 sm:p-6 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},cd={class:"flex flex-col sm:flex-row items-center sm:items-start gap-5"},ud=["src"],md={class:"flex-1 min-w-0 flex flex-col justify-center gap-2.5 text-center sm:text-left mt-1"},pd={class:"flex flex-wrap items-center justify-center sm:justify-start gap-3"},vd={class:"text-l sm:text-xl font-bold text-[var(--td-text-color-primary)] m-0 flex items-center gap-2 tracking-tight"},fd={class:"text-[var(--color-primary)]"},bd={class:"text-sm sm:text-base text-[var(--td-text-color-secondary)] italic leading-relaxed m-0 whitespace-pre-line"},xd=de({__name:"Banner",setup(a){const s=Be(),r=y(""),d=y(!1),i=()=>{d.value||(d.value=!0,setTimeout(()=>{d.value=!1},600))};async function c(){const f=`Every little creature in the world has their own piece of paradise. +Plants take root in the boundless earth, and their leaves grow toward the stars.`;try{const n=await Z.get({url:"/?c=a&c=b&c=c&c=d",baseURL:"https://v1.hitokoto.cn"});n&&n.hitokoto?r.value=`${n.hitokoto} —— 《${n.from}》${n.from_who?` (${n.from_who})`:""}`:r.value=f}catch(n){r.value=f,console.error("获取一言(Hitokoto)失败:",n)}}return ze(()=>{c()}),(f,n)=>(l(),x("div",dd,[e("div",cd,[e("div",{class:"shrink-0 relative group cursor-pointer",onClick:i},[e("div",{class:ue(["absolute inset-0 rounded-full z-0 pointer-events-none transition-opacity",d.value?"animate-magic-burst":"opacity-0"]),style:{background:"radial-gradient(circle, var(--color-primary-light) 0%, transparent 70%)"}},null,2),e("img",{src:w(s).userInfo.avatar,alt:"头像",class:ue(["w-20 h-20 rounded-full object-cover ring-2 ring-[var(--color-primary)]/30 shadow-md transition-all duration-300 relative z-10",[d.value?"animate-jelly-pop":"group-hover:rotate-6 group-hover:scale-105"]])},null,10,ud)]),e("div",md,[e("div",pd,[e("h3",vd,[t(w(vt),{name:"sunny",class:"text-amber-500 animate-[spin_10s_linear_infinite]"}),n[0]||(n[0]=m(" 你好,",-1)),e("span",fd,S(w(s).userInfo.name),1)]),t(w(ho),{theme:w(s).isAdmin?"success":"primary",shape:"round"},{default:o(()=>[m(S(w(s).isAdmin?"管理员":"普通用户"),1)]),_:1},8,["theme"])]),e("p",bd,S(r.value),1)])])]))}}),gd=me(xd,[["__scopeId","data-v-a7ac6aaa"]]),hd={class:"design-card w-full bg-white dark:bg-zinc-800 p-5 sm:p-6 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},yd={class:"grid grid-cols-[repeat(auto-fill,minmax(260px,1fr))] gap-4"},_d={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},wd={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right break-all pl-2"},kd={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},$d={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},zd={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right break-all pl-2"},Cd={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Ad={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},Sd={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right truncate min-w-0 pl-2"},Id={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Vd={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},Ud={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right truncate min-w-0 pl-2"},Md={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Ld={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},Bd={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right truncate min-w-0 pl-2"},Td={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Rd={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},jd={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right break-all pl-2"},Pd={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Ed={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},Dd={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right truncate min-w-0 pl-2"},Fd={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Od={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},Nd={class:"flex justify-end pl-2"},Kd=de({__name:"InfoCard",setup(a){const s=Be(),r=At();return ze(()=>{r.refreshInstanceList()}),(d,i)=>(l(),x("div",hd,[e("div",yd,[e("div",{class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group cursor-pointer",onClick:i[0]||(i[0]=c=>w(Ie)("/instance/list"))},[e("span",_d,[t(w(vt),{name:"server",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[1]||(i[1]=e("span",null,"在线实例:",-1))]),e("span",wd,S(w(r).onlineInstanceCount)+" / "+S(w(r).totalInstanceCount),1)]),e("div",kd,[e("span",$d,[t(w(vt),{name:"logo-codepen",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[2]||(i[2]=e("span",null,"NET环境:",-1))]),e("span",zd,S(w(s).userInfo.systemInfo.netVersion),1)]),e("div",Cd,[e("span",Ad,[t(w(vt),{name:"dashboard",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[3]||(i[3]=e("span",null,"面板版本:",-1))]),t(w(Do),{content:w(to).version,"max-width":"400px"},{default:o(()=>[e("span",Sd," v"+S(w(to).version),1)]),_:1},8,["content"])]),e("div",Id,[e("span",Vd,[t(w(vt),{name:"cloud",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[4]||(i[4]=e("span",null,"节点版本:",-1))]),t(w(Do),{content:`v${w(s).userInfo.version}`,"max-width":"400px"},{default:o(()=>[e("span",Ud," v"+S(w(s).userInfo.version),1)]),_:1},8,["content"])]),e("div",Md,[e("span",Ld,[t(w(vt),{name:"desktop",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[5]||(i[5]=e("span",null,"主机名:",-1))]),e("span",Bd,S(w(s).userInfo.systemInfo.hostname),1)]),e("div",Td,[e("span",Rd,[t(w(vt),{name:"system-code",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[6]||(i[6]=e("span",null,"系统类型:",-1))]),e("span",jd,S(w(s).userInfo.systemInfo.osType)+" ("+S(w(s).userInfo.systemInfo.osArchitecture)+") ",1)]),e("div",Pd,[e("span",Ed,[t(w(vt),{name:"system-setting",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[7]||(i[7]=e("span",null,"系统版本:",-1))]),t(w(Do),{content:w(s).userInfo.systemInfo.osVersion,"max-width":"400px"},{default:o(()=>[e("span",Dd,S(w(s).userInfo.systemInfo.osVersion),1)]),_:1},8,["content"])]),e("div",Fd,[e("span",Od,[t(w(vt),{name:"check-circle",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[8]||(i[8]=e("span",null,"版本匹配:",-1))]),e("span",Nd,[t(w(ho),{theme:w(to).version.startsWith(w(s).userInfo.targetFrontendVersion.panel)?"success":"danger",shape:"round"},{default:o(()=>[m(S(w(to).version.startsWith(w(s).userInfo.targetFrontendVersion.panel)?"正确匹配":"请更新"),1)]),_:1},8,["theme"])])])])]))}}),qd=me(Kd,[["__scopeId","data-v-d5b9c201"]]),Hd={class:"w-full"},Wd={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Gd={class:"design-card w-full bg-white dark:bg-zinc-800 p-4 sm:p-5 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},Jd={class:"flex justify-between items-center h-[100px] w-full gap-2"},Xd={class:"flex flex-col justify-center min-w-[100px] shrink-0"},Qd={class:"flex items-baseline my-1"},Yd={class:"text-3xl font-bold font-mono text-[var(--td-text-color-primary)] leading-none"},Zd={class:"design-card w-full bg-white dark:bg-zinc-800 p-4 sm:p-5 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},ec={class:"flex justify-between items-center h-[100px] w-full gap-2"},tc={class:"flex flex-col justify-center min-w-[100px] shrink-0"},oc={class:"flex items-baseline my-1"},ac={class:"text-3xl font-bold font-mono text-[var(--td-text-color-primary)] leading-none"},sc={class:"mt-1 flex items-baseline gap-1 font-mono"},lc={class:"text-[14px] font-bold text-zinc-700 dark:text-zinc-200"},rc={class:"text-[11px] text-[var(--td-text-color-secondary)]"},nc=30,ic=de({__name:"SystemStatus",setup(a){const s=Be(),r=y(null),d=y(!1),i=y(null),c=y(null);let f=null,n=null;const v=qe({cpu:0,memUsage:0,memUsed:0,memTotal:0}),I=[],u=[],R=[],b=B=>getComputedStyle(document.documentElement).getPropertyValue(B).trim()||"#999999",A=(B,C,T)=>({grid:{top:10,right:10,bottom:0,left:0,containLabel:!1},tooltip:{trigger:"axis",backgroundColor:"var(--td-bg-color-container)",borderColor:"var(--td-component-border)",textStyle:{color:"var(--td-text-color-primary)"},formatter:U=>{const D=U[0];return`${D.name}
${C}: ${D.value}%`}},xAxis:{type:"category",boundaryGap:!1,data:I,show:!1},yAxis:{type:"value",max:100,min:0,show:!1},series:[{name:C,type:"line",smooth:!0,showSymbol:!1,lineStyle:{width:2,color:B},areaStyle:{opacity:.2,color:new vs(0,0,0,1,[{offset:0,color:B},{offset:1,color:"transparent"}])},data:T}]}),p=()=>{const B=b("--td-brand-color"),C=b("--td-success-color");i.value&&(f=ko(i.value),f.setOption(A(B,"CPU",[]))),c.value&&(n=ko(c.value),n.setOption(A(C,"Memory",[]))),window.addEventListener("resize",k)},k=()=>{f?.resize(),n?.resize()},g=async()=>{const{baseUrl:B,token:C}=s,T=new URL("/api/hubs/system",B||window.location.origin);C&&T.searchParams.append("x-user-token",C),r.value=new Ct().withUrl(T.toString(),{withCredentials:!1}).withAutomaticReconnect().build(),r.value.on("ReceiveSystemStats",U=>{v.cpu=U.cpu,v.memUsage=U.memUsage,v.memUsed=U.memUsed,v.memTotal=U.memTotal,I.length>=nc&&(I.shift(),u.shift(),R.shift()),I.push(U.timestamp),u.push(U.cpu),R.push(U.memUsage),f?.setOption({xAxis:{data:I},series:[{data:u}]}),n?.setOption({xAxis:{data:I},series:[{data:R}]})});try{await r.value.start(),d.value=!0,await r.value.invoke("JoinMonitor")}catch(U){console.error("SignalR 连接失败:",U)}r.value.onclose(()=>{d.value=!1})};return ze(()=>{yt(()=>{setTimeout(()=>{p(),g()},100)})}),He(async()=>{if(window.removeEventListener("resize",k),r.value)try{await r.value.invoke("LeaveMonitor"),await r.value.stop()}catch(B){console.error(B)}f?.dispose(),n?.dispose()}),(B,C)=>(l(),x("div",Hd,[e("div",Wd,[e("div",Gd,[e("div",Jd,[e("div",Xd,[C[5]||(C[5]=e("div",{class:"text-[13px] text-[var(--td-text-color-secondary)] font-medium"},"CPU 使用率",-1)),e("div",Qd,[e("span",Yd,S(v.cpu),1),C[0]||(C[0]=e("span",{class:"text-xs ml-0.5 text-[var(--td-text-color-secondary)]"},"%",-1))]),d.value?(l(),W(w(ho),{key:0,theme:"success",shape:"round",size:"small",class:"w-fit mt-1"},{icon:o(()=>[...C[1]||(C[1]=[e("span",{class:"w-1.5 h-1.5 rounded-full bg-emerald-500 dark:bg-emerald-400 animate-pulse mr-1"},null,-1)])]),default:o(()=>[C[2]||(C[2]=m(" 实时 ",-1))]),_:1})):(l(),W(w(ho),{key:1,theme:"danger",shape:"round",size:"small",class:"w-fit mt-1"},{icon:o(()=>[...C[3]||(C[3]=[e("span",{class:"w-1.5 h-1.5 rounded-full bg-red-500 dark:bg-red-400 mr-1"},null,-1)])]),default:o(()=>[C[4]||(C[4]=m(" 离线 ",-1))]),_:1}))]),e("div",{ref_key:"cpuChartRef",ref:i,class:"flex-1 h-full min-w-[120px] overflow-hidden"},null,512)])]),e("div",Zd,[e("div",ec,[e("div",tc,[C[8]||(C[8]=e("div",{class:"text-[13px] text-[var(--td-text-color-secondary)] font-medium"},"内存使用率",-1)),e("div",oc,[e("span",ac,S(v.memUsage),1),C[6]||(C[6]=e("span",{class:"text-xs ml-0.5 text-[var(--td-text-color-secondary)]"},"%",-1))]),e("div",sc,[e("span",lc,S((v.memUsed/1024).toFixed(1)),1),C[7]||(C[7]=e("span",{class:"text-[11px] text-[var(--td-text-color-secondary)] mx-0.5"},"/",-1)),e("span",rc,S((v.memTotal/1024).toFixed(1))+" GB",1)])]),e("div",{ref_key:"memChartRef",ref:c,class:"flex-1 h-full min-w-[120px] overflow-hidden"},null,512)])])])]))}}),dc=me(ic,[["__scopeId","data-v-e0da8a49"]]),cc={class:"design-card w-full bg-white dark:bg-zinc-800 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300 flex flex-col relative overflow-hidden"},uc={class:"flex items-center gap-2 p-5 sm:px-6 pb-4 dark:border-zinc-700/50 text-left"},mc={class:"p-5 sm:px-6 text-left w-full min-h-[150px]"},pc={class:"w-full overflow-y-auto custom-scrollbar"},vc=de({__name:"Announcement",setup(a){const s=y(!0),r=y(""),d=Xa(),i=y(d.value?"dark":"light");_e(d,()=>{i.value=d.value?"dark":"light"});async function c(){s.value=!0;const f=`## 🔴 公告加载失败 +- 请检查网络连接或联系管理员。`;try{const n=await Z.get({url:"https://api.mslmc.cn/v3/query/notice?query=mslxNoticeMd"});n&&n.mslxNoticeMd?r.value=n.mslxNoticeMd:r.value=f}catch(n){console.error("获取公告失败:",n),r.value=f}finally{s.value=!1}}return ze(()=>{c()}),(f,n)=>(l(),x("div",cc,[e("div",uc,[t(w(vt),{name:"system-messages",class:"text-[var(--color-primary)] text-lg"}),n[0]||(n[0]=e("h3",{class:"text-[16px] font-bold text-[var(--td-text-color-primary)] m-0"},"系统公告",-1))]),e("div",mc,[t(w(al),{loading:s.value,text:"加载中...",size:"small",class:"w-full"},{default:o(()=>[e("div",pc,[t(w(Qa),{"editor-id":"announcement-preview","model-value":r.value,theme:i.value,class:"custom-md-preview bg-transparent text-left !p-0"},null,8,["model-value","theme"])])]),_:1},8,["loading"])])]))}}),fc=me(vc,[["__scopeId","data-v-cf423ea7"]]),bc={class:"flex flex-col gap-6 mx-auto w-full min-h-screen pb-6"},xc=de({__name:"index",setup(a){const s=Be(),r=y(!1),d=y(!1);ze(()=>{typeof CSS<"u"&&CSS.supports?r.value=!CSS.supports("color: color-mix(in srgb, red, blue)"):r.value=!0;const n=navigator.userAgent;/(Windows NT 6\.1|Windows NT 6\.2|Windows NT 6\.3)/i.test(n)&&(d.value=!0)});const i=te(()=>r.value?d.value?{title:"系统版本过旧 (Windows 7/8)",message:"受限于操作系统,您的 Chrome/Edge 浏览器已被官方永远停更在 109 版本,无法渲染本控制面板的现代 UI。请升级至 Windows 10/11,或改用受支持的 Firefox 浏览器!",btnText:"获取 Firefox",url:"https://www.mozilla.org/zh-CN/firefox/new/"}:{title:"浏览器内核版本过低",message:"检测到您当前的浏览器不支持部分现代 Web 技术。为了保证 MSLX 面板的正常显示与完整功能,强烈建议您升级浏览器。",btnText:"获取新版 Chrome",url:"https://www.google.cn/chrome/"}:null),c=te(()=>s.userInfo?.username==="mslx"),f=n=>{let v=0;return i.value&&(v+=1),c.value&&(v+=1),`${(n+v)*.05}s`};return(n,v)=>{const I=h("t-alert");return l(),x("div",bc,[i.value?(l(),W(I,{key:0,theme:"error",title:i.value.title,message:i.value.message,class:"list-item-anim w-full shadow-sm",style:{"animation-delay":"0s"}},{operation:o(()=>[e("span",{class:"cursor-pointer font-bold flex items-center gap-1 hover:opacity-80 transition-opacity",onClick:v[0]||(v[0]=u=>w(Ie)(i.value.url))},[m(S(i.value.btnText)+" ",1),v[2]||(v[2]=e("i",{class:"fa-solid fa-arrow-right text-sm"},null,-1))])]),_:1},8,["title","message"])):K("",!0),c.value?(l(),W(I,{key:1,theme:"warning",title:"安全风险提示",message:"检测到您当前正在使用默认账号 (mslx)。为了保障系统安全,请务必尽快修改用户名和密码!",class:"list-item-anim w-full shadow-sm",style:Oe({animationDelay:i.value?"0.05s":"0s"})},{operation:o(()=>[e("span",{class:"cursor-pointer font-bold flex items-center gap-1 hover:opacity-80 transition-opacity",onClick:v[1]||(v[1]=u=>w(Ie)("/settings"))},[...v[3]||(v[3]=[m(" 去修改 ",-1),e("i",{class:"fa-solid fa-arrow-right text-sm"},null,-1)])])]),_:1},8,["style"])):K("",!0),t(gd,{class:"list-item-anim",style:Oe({animationDelay:f(0)})},null,8,["style"]),t(qd,{class:"list-item-anim",style:Oe({animationDelay:f(1)})},null,8,["style"]),t(dc,{class:"list-item-anim",style:Oe({animationDelay:f(2)})},null,8,["style"]),t(fc,{class:"list-item-anim",style:Oe({animationDelay:f(3)})},null,8,["style"])])}}}),gc=me(xc,[["__scopeId","data-v-53cd7119"]]),hc=Object.freeze(Object.defineProperty({__proto__:null,default:gc},Symbol.toStringTag,{value:"Module"})),yc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsSAAALEgHS3X78AAADgklEQVR42u2dPWhTYRSGk2qlZKia+BMNFuJQERehuFiogoNSJ7tIi4MKFkELInapVYOIS8SlCqKoiwji5OhStLQOlUz+YUFrC2li7I26hGCwEbXrOTec5OKN93nWw/363S8PJ7w9yU0oBAAAASWsFdPXb1Q5ouZn+Oxp8XVu4XiCDQIgACAAIAAgAASQlVrU6+07aFp0bTTqq5v8WiwG/XWu0gEAAQABAAEAAQABYDkGWuPc5PiEWIttXCfWIpGIebP3L4+arjt28YpYK5VKYu3Rtaumv3f43IgnL5bzedF05nQAQABAAEAAQABAAKgxBr5781asbUl2mKKVVnOLXts6EmLt/XzWdADWWKrtRbuHeiKiNerRAQABAAEAAQABAAGgxhgY3xQXa/lc3hSt3CZ6WrwaOHlKrF0akePVhwuDttNp3WDay8NbN00RsZ6YqE0K6QCAAIAAgACAAIAAgABQy/8BtKyvoY18eyoF9dqJebn2aXrBtG4i9tN0Hz1OwbQXbTTtdv9WtFHx3Mc5OgAgACAAIAAgACAA1BID/wX97TmxVh4/L9a6OitibXW8zbSXeL4sR2RlL/3t8ppZZ4Un58Y4GBAAEAAQABAAEAB8GgPdJnPxWKUpDs6rfS7RAQABAAEAAQABAAGg+WJgy+0hc3zampoSa8XsrFj7dueIaa/flYmfxpoTD8RaNJGUL0x1q+vmlbNbGhyjAwACAAIAAgACAAJAvTGwkFts+KJaXNFizp8YqNT2HDoq1p70Nj7qhYx7eTX9XL5/p1Vdt+3MXdN+HKWmvcZ0AN4CAAEAAQABAAEgcDHQeqH2XbQf9+QfatS+w/cbbeLnfMkpV643Ry8JbXKp7UW7B7dpaEZ5rO2q46N0AEAAQABAAEAAQACok/DwcKoqFQ/07TfFQA0tIv6NieX/+sAzM/rjaryIei+nMnQAQABAAEAAQABAAFjGd08KtU7udo89E2ubk52mNRdmZ8Tai6G9dABAAEAAQABAAEAAQADg/wAuuI07sy7jYguvJ582fE3rL394Me6lAwACAAIAAgACAAJAg2Kg9slf7ZOmu7q7PIuJEo8H9vkqznqBF2dOB+AtABAAEAAQABAAiIE1smPndl/diN+mbF7gxZnTAXgLAAQABAAEAASAoBHWitrzg6B5SKdTYToAIAAgACAAIAAgAAAAAECQ+QUUBtshXi5agwAAAABJRU5ErkJggg==",_c="/assets/png/mslx-150px-Anvil.BV3t5jxS.png",wc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAACWElEQVR42u3dPS8EURQG4G1RU6GWoFUqRK9Ao1BoJRJ+gEgUG4XERyJRKIQIFYVE0Gn8rPUPzolc1+zOPG/yljs7e89Tnczu9notz9zsxKBmewKAACAACAACgAAgAMjQDPBoYyns2+l+2O/DtbCAAAAAAAAAAAAAAAAAAAAAAADA3w0wG1DW99eXsDv95bDZ9TNgnQcCAAAAAAAAAAAAAAAAAAAAQKsAZB8wW6SUDvBxcz3sx/1l2M/r87DZ+3d+kQQAAAAAAAAAAAAAAAAAAAAAAL9obSAPdxdhn6/Own5vb4XtPBAAAAAAAAAAAAAAAAAAAAAAWgVgcmpqELV0wLW/2PHVXw5bOsDaD4xkzeYDAAAAAAAAAAAAAAAAAAAAAAC/yfzC4iBqdgO1D6gUSNMDzK6fnS8AAAAAAAAAAAAAAAAAAAAAAPwngJvbp7BNAyldRJX+gEXpAI+OT8ICAAAAAAAAAAAAAAAAAAAAAMB/AshusDaQ2g+clA5wd+8gbHZ+2esBAAAAAAAAAAAAAAAAAAAAAGCYFkFNA6m9iKk94JHfBAIAAAAAAAAAAAAAAAAAAADQKgClA64NpOkB2QQCAAAAAAAAAAAAAAAAAAAAMEoAhh3Iyupq2GEfcHZ+Y2PjYRv/xxAAAAAAAAAAAAAAAAAAAAAAOgWgaSAZgKYXMVmzAWfnBwAAAAAAAAAAAAAAAAAAAAAAo5RSIKWLoNYvYgAAAAAAAAAAAAAAAAAAAAAAoEVApmdmw1rEAAAAAAAAAAAAAAAAAAAAAACAiIiIiIiIiHQwP/KhHMCviKP2AAAAAElFTkSuQmCC",kc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAABi0lEQVR42u3cMWoCQRSAYW9mkzYHECGFYJXCKrWVTYpcQwIpUliICAaLEDxASiHn2GIs070njMgy+33wyhWZ91fD6mgEAAAAAAAAANAzh5euRLOdx5M974QFgAAQAAJAAAgAAXA/p7euRJMteL+I57yLJ/t8GxIAAkAACAABIAAEwO0ucrIF1T6fLXgzjed7FY8NCwABIAAEgAAQAALgX3bA2fy+x1MbQLbg7PvZsAAQAAJAAAgAASAArvd37Eo0tT8Mqb1osiEBIAAEgAAQAAJAAPTnImn+8RBO7QslNiAABIAAEAACQAAIgP54/ZmVaJyQABAAAkAACAABIADasdg8lmickAAQAAJAAAgAASAA2pG9EOKEBIAAEAACQAAIAAHQDhdBAhCAAAQgAAEIQAACEIAABCAAAQzH8mtSonFCAkAACAABIAAEgABohz+IEIAABCAAAQhAAAIQgAAEIAABCGA4nj/HJRonJAAEgAAQAAJAAAiAdjytxyUaJyQABIAAEAACQAAIYEAu6/zodBuokO4AAAAASUVORK5CYII=",$c={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},zc={class:"design-card flex flex-col sm:flex-row flex-wrap sm:items-center justify-between gap-4 p-5 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left"},Cc={class:"flex flex-col sm:flex-row flex-wrap items-center sm:justify-end gap-3"},Ac={class:"flex items-center bg-zinc-100 dark:bg-zinc-800/80 rounded-lg p-1"},Sc={class:"px-3 text-sm font-medium text-[var(--td-text-color-secondary)]"},Ic={class:"text-[var(--color-primary)] font-bold"},Vc={class:"flex items-center border-l border-[var(--td-component-border)] pl-1 ml-1 gap-1"},Uc={class:"relative min-h-[400px]"},Mc={key:0,class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-4"},Lc=["onClick"],Bc={key:0,class:"absolute top-4 right-4 z-10 pointer-events-none"},Tc={class:"flex items-center gap-4"},Rc={class:"relative shrink-0"},jc={class:"absolute -bottom-0.5 -right-0.5 flex h-3.5 w-3.5"},Pc={key:0,class:"animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75"},Ec={class:"flex-1 min-w-0 pr-4"},Dc={class:"flex items-center min-w-0"},Fc={class:"flex-1 text-base font-bold text-[var(--td-text-color-primary)] truncate tracking-tight"},Oc={class:"text-xs font-mono text-[var(--td-text-color-secondary)] ml-2 opacity-70 shrink-0"},Nc={class:"mt-2 flex items-center gap-4 w-full"},Kc={class:"flex-1 min-w-0 flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},qc={class:"truncate font-medium"},Hc={key:0,class:"flex items-center gap-1 text-xs text-emerald-600 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-900/30 px-1.5 py-0.5 rounded-md shrink-0 whitespace-nowrap"},Wc={class:"font-bold"},Gc={class:"flex items-center justify-between pt-3 mt-auto border-t border-dashed border-zinc-200 dark:border-zinc-700/60"},Jc={class:"text-xs text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors font-semibold"},Xc={key:0,class:"flex items-center gap-1"},Qc={key:1,class:"flex flex-col items-center justify-center py-24 bg-white/40 dark:bg-zinc-800/40 rounded-2xl border-2 border-dashed border-[var(--td-component-border)]"},Yc={class:"delete-dialog-body"},Zc={class:"alert-zinc bg-red-500/5 border border-red-500/20 p-4 rounded-xl mb-4"},eu={class:"text-[var(--td-text-color-primary)] font-bold mb-1"},tu={class:"text-red-500"},ou={class:"px-1"},au=de({__name:"index",setup(a){const s=At(),r=Be();ze(()=>{s.refreshInstanceList()});const d=k=>{switch(k){case 1:return{label:"启动中",theme:"primary",icon:nl,loading:!0};case 2:return{label:"运行中",theme:"success",icon:Kt,loading:!1};case 3:return{label:"停止中",theme:"warning",icon:rl,loading:!1};case 4:return{label:"重启中",theme:"primary",icon:Pe,loading:!0};default:return{label:"未启动",theme:"default",icon:ll,loading:!1}}},i=y(!1),c=y([]),f=y(!1),n=()=>{i.value=!i.value,c.value=[]},v=k=>{if(i.value){const g=c.value.indexOf(k.id);g===-1?c.value.push(k.id):c.value.splice(g,1)}else Ie(`/instance/console/${k.id}`)},I=k=>{if(c.value.length===0){M.warning("请先选择要操作的实例");return}const B={start:"启动",stop:"停止",restart:"重启",delete:"删除"}[k],C=k==="delete",T=Ke.confirm({header:`确认批量${B}`,body:`您确定要对已选中的 ${c.value.length} 个实例执行${B}操作吗?${C?"(注意:删除操作不可逆,批量删除默认不清理磁盘上的服务端数据文件)":""}`,theme:C?"danger":"primary",onConfirm:async()=>{T.hide(),f.value=!0;const U=M.loading(`正在批量${B}中,请稍候...`);try{const D=c.value.map(j=>C?Ra(j,!1):It(j,k)),P=(await Promise.allSettled(D)).filter(j=>j.status==="rejected");P.length>0?M.warning({content:`操作完成,但有 ${P.length} 个实例执行${B}失败`,duration:5e3}):M.success(`批量${B}操作成功`),c.value=[],i.value=!1,await s.refreshInstanceList()}catch(D){M.error(`批量操作出现异常: ${D.message}`)}finally{M.close(U),f.value=!1}}})},u=(k,g)=>{if(k.includes("http"))return k;switch(k){case"neoforge":return yc;case"forge":return _c;case"custom":return wc;case"server-icon":return new URL(`${localStorage.getItem(Ft)}/api/instance/icon/${g}.png?x-user-token=${localStorage.getItem(Dt)}`,import.meta.url).href;default:return kc}},R=k=>k==="none"?"自定义模式":k.startsWith("@")?k.includes("neoforge")?"NeoForge":"Forge":k.replace(".jar",""),b=qe({visible:!1,loading:!1,deleteFile:!1,item:null}),A=(k,g)=>{k.stopPropagation(),b.item=g,b.deleteFile=!1,b.loading=!1,b.visible=!0},p=async()=>{if(b.item){b.loading=!0;try{await Ra(b.item.id,b.deleteFile),M.success("删除成功"),b.visible=!1,await s.refreshInstanceList()}catch(k){M.error("删除失败: "+k.message)}finally{b.loading=!1}}};return(k,g)=>{const B=h("t-button"),C=h("t-checkbox"),T=h("t-avatar"),U=h("t-empty"),D=h("t-dialog"),N=Ya("loading");return l(),x("div",$c,[e("div",zc,[g[17]||(g[17]=e("div",{class:"flex flex-col gap-1 items-start shrink-0 flex-1 min-w-0"},[e("h2",{class:"text-lg font-bold tracking-tight text-[var(--td-text-color-primary)] m-0"},"服务端列表"),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"}," 管理您的 Minecraft 服务器实例,监控运行状态与核心版本 ")],-1)),e("div",Cc,[i.value?(l(),x(re,{key:1},[e("div",Ac,[e("span",Sc,[g[10]||(g[10]=m(" 已选 ",-1)),e("span",Ic,S(c.value.length),1),g[11]||(g[11]=m(" 项 ",-1))]),e("div",Vc,[t(B,{size:"small",theme:"primary",variant:"text",disabled:!c.value.length||f.value,onClick:g[1]||(g[1]=P=>I("start"))},{default:o(()=>[...g[12]||(g[12]=[m("启动",-1)])]),_:1},8,["disabled"]),t(B,{size:"small",theme:"warning",variant:"text",disabled:!c.value.length||f.value,onClick:g[2]||(g[2]=P=>I("restart"))},{default:o(()=>[...g[13]||(g[13]=[m("重启",-1)])]),_:1},8,["disabled"]),t(B,{size:"small",theme:"danger",variant:"text",disabled:!c.value.length||f.value,onClick:g[3]||(g[3]=P=>I("stop"))},{default:o(()=>[...g[14]||(g[14]=[m("停止",-1)])]),_:1},8,["disabled"]),w(r).isAdmin?(l(),W(B,{key:0,size:"small",theme:"danger",variant:"text",disabled:!c.value.length||f.value,onClick:g[4]||(g[4]=P=>I("delete"))},{default:o(()=>[...g[15]||(g[15]=[m("删除",-1)])]),_:1},8,["disabled"])):K("",!0)])]),t(B,{variant:"outline",disabled:f.value,onClick:n},{default:o(()=>[...g[16]||(g[16]=[m("取消批量",-1)])]),_:1},8,["disabled"])],64)):(l(),x(re,{key:0},[t(B,{variant:"outline",disabled:!w(s).instanceList?.length,onClick:n},{icon:o(()=>[t(w(Za))]),default:o(()=>[g[7]||(g[7]=m(" 批量操作 ",-1))]),_:1},8,["disabled"]),t(B,{variant:"dashed",onClick:w(s).refreshInstanceList},{icon:o(()=>[t(w(Pe))]),default:o(()=>[g[8]||(g[8]=m(" 刷新列表 ",-1))]),_:1},8,["onClick"]),w(r).isAdmin?(l(),W(B,{key:0,theme:"primary",onClick:g[0]||(g[0]=P=>w(Ie)("/instance/create"))},{icon:o(()=>[t(w(at))]),default:o(()=>[g[9]||(g[9]=m(" 添加服务端 ",-1))]),_:1})):K("",!0)],64))])]),Le((l(),x("div",Uc,[w(s).instanceList&&w(s).instanceList.length>0?(l(),x("div",Mc,[(l(!0),x(re,null,xe(w(s).instanceList,(P,j)=>(l(),x("div",{key:P.id,class:"list-item-anim h-full",style:Oe({animationDelay:`${j*.05}s`})},[e("div",{class:ue(["design-card relative h-full group flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm hover:shadow-md hover:border-[var(--color-primary)]/50 transition-all duration-300 p-5 gap-4 cursor-pointer",{"!border-[var(--color-primary)] !bg-[var(--color-primary)]/5 shadow-md":i.value&&c.value.includes(P.id)}]),onClick:O=>v(P)},[i.value?(l(),x("div",Bc,[t(C,{checked:c.value.includes(P.id)},null,8,["checked"])])):K("",!0),e("div",Tc,[e("div",Rc,[t(T,{image:u(P.icon,P.id),class:"shadow-sm border border-[var(--td-component-border)] !bg-[var(--td-bg-color-secondarycontainer)] !rounded-xl",shape:"round",size:"56px"},null,8,["image"]),e("span",jc,[P.status===2?(l(),x("span",Pc)):K("",!0),e("span",{class:ue([P.status===2?"bg-emerald-500":"bg-zinc-300 dark:bg-zinc-600","relative inline-flex rounded-full h-3.5 w-3.5 border-2 border-white dark:border-zinc-800"])},null,2)])]),e("div",Ec,[e("div",Dc,[e("h4",Fc,S(P.name),1),e("span",Oc,"#"+S(P.id),1)]),e("div",Nc,[e("div",Kc,[t(w(sl),{class:"opacity-80 shrink-0",size:"14px"}),e("span",qc,S(R(P.core)),1)]),P.extra&&P.extra.onlinePlayers>0&&P.status===2?(l(),x("div",Hc,[t(w(ra),{size:"14px"}),e("span",Wc,S(P.extra.onlinePlayers),1)])):K("",!0),e("div",{class:ue([d(P.status).theme==="success"?"text-emerald-600 dark:text-emerald-400":"text-[var(--td-text-color-secondary)]","text-xs font-bold shrink-0 whitespace-nowrap"])},S(d(P.status).label),3)])])]),e("div",Gc,[e("span",Jc,S(i.value?c.value.includes(P.id)?"点击取消选择":"点击选择实例":"控制台 →"),1),i.value?K("",!0):(l(),x("div",Xc,[w(r).isAdmin?(l(),W(B,{key:0,class:"hover:!bg-red-500/10",shape:"circle",size:"small",theme:"danger",variant:"text",onClick:dt(O=>A(O,P),["stop"])},{icon:o(()=>[t(w(ct),{size:"32"})]),_:1},8,["onClick"])):K("",!0)]))])],10,Lc)],4))),128))])):(l(),x("div",Qc,[t(U,{class:"!bg-transparent",description:"暂无服务端实例"})]))])),[[N,!1]]),t(D,{visible:b.visible,"onUpdate:visible":g[6]||(g[6]=P=>b.visible=P),"confirm-btn":{content:"确认删除",theme:"danger",loading:b.loading},"cancel-btn":"取消",header:"确认删除服务端",onConfirm:p},{default:o(()=>[e("div",Yc,[e("div",Zc,[e("p",eu,[g[18]||(g[18]=m(" 您确定要删除 ",-1)),e("span",tu,S(b.item?.name),1),g[19]||(g[19]=m(" 吗? ",-1))]),g[20]||(g[20]=e("p",{class:"text-xs text-red-500/80 italic"},"此操作不可撤销,服务端配置与运行记录将被抹除。",-1))]),e("div",ou,[t(C,{modelValue:b.deleteFile,"onUpdate:modelValue":g[5]||(g[5]=P=>b.deleteFile=P)},{default:o(()=>[...g[21]||(g[21]=[e("span",{class:"text-[var(--td-text-color-secondary)] text-sm"},"同时清理磁盘上的服务端数据文件",-1)])]),_:1},8,["modelValue"])])])]),_:1},8,["visible","confirm-btn"])])}}}),su=me(au,[["__scopeId","data-v-4d8c8b99"]]),lu=Object.freeze(Object.defineProperty({__proto__:null,default:su},Symbol.toStringTag,{value:"Module"}));async function ru(){return await Z.get({url:"/mirrors",baseURL:"https://api.mslmc.cn/v4"})}async function fa(a){return await Z.get({url:`/mirrors/${a}`,baseURL:"https://api.mslmc.cn/v4"})}async function nu(a,s){return await Z.get({url:`/mirrors/${a}/${s}`,baseURL:"https://api.mslmc.cn/v4"})}async function ba(a,s,r="latest"){return await Z.get({url:`/download/server/${a}/${s}?build=${r}`,baseURL:"https://api.mslmc.cn/v4"})}const iu={class:"flex flex-col md:flex-row h-[75vh] bg-zinc-50 dark:bg-zinc-900/80 overflow-hidden"},du={class:"w-full md:w-64 lg:w-72 shrink-0 bg-white/90 dark:bg-zinc-800/90 backdrop-blur-md border-b md:border-b-0 md:border-r border-zinc-200/70 dark:border-zinc-700/60 flex flex-col z-10 shadow-[2px_0_8px_rgba(0,0,0,0.02)]"},cu={class:"flex-1 overflow-x-auto md:overflow-y-auto custom-scrollbar flex flex-row md:flex-col gap-2 p-3 md:p-4 hide-scrollbar-on-mobile"},uu=["onClick"],mu={class:"flex flex-col min-w-0 pr-2 md:pr-0"},pu={class:"hidden md:block text-[11px] text-[var(--td-text-color-secondary)] leading-snug mt-0.5"},vu={key:0,class:"hidden md:inline-flex items-center mt-1.5 w-max px-1.5 py-0.5 rounded bg-zinc-200/50 dark:bg-zinc-700/50 text-[var(--td-text-color-secondary)] text-[10px] font-mono font-bold"},fu={class:"flex-1 flex flex-col min-w-0 relative overflow-y-auto md:overflow-hidden"},bu={class:"flex-1 flex flex-col min-h-[240px] shrink-0 md:min-h-0 md:shrink p-4 sm:p-6 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 bg-white/40 dark:bg-zinc-900/40"},xu={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 mb-4 shrink-0"},gu={class:"flex-1 overflow-y-auto custom-scrollbar pr-2 pb-2"},hu={key:0,class:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-3"},yu=["onClick"],_u={key:1,class:"h-full flex flex-col items-center justify-center opacity-60"},wu={class:"flex-1 flex flex-col min-h-[240px] shrink-0 md:min-h-0 md:shrink p-4 sm:p-6 bg-zinc-50/50 dark:bg-zinc-800/30"},ku={class:"flex items-center justify-between mb-4 shrink-0"},$u={class:"flex items-center gap-2"},zu={class:"text-sm font-bold text-[var(--td-text-color-primary)] m-0"},Cu={key:0,class:"text-[var(--color-primary)] mr-1"},Au={class:"flex-1 overflow-y-auto custom-scrollbar pr-2 pb-2 relative"},Su={key:0,class:"h-full flex items-center justify-center"},Iu={key:1,class:"grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 lg:grid-cols-6 xl:grid-cols-8 gap-2"},Vu=["onClick"],Uu={key:2,class:"h-full flex items-center justify-center opacity-60"},Mu={class:"min-h-[150px] max-h-[50vh] overflow-y-auto custom-scrollbar p-2"},Lu={key:0,class:"flex flex-col gap-2"},Bu=["onClick"],Tu={class:"flex items-center gap-3"},Ru={class:"font-mono text-sm font-bold text-zinc-700 dark:text-zinc-300 group-hover:text-[var(--color-primary)] transition-colors"},ju={class:"flex items-center"},Pu={key:0,class:"text-[11px] text-emerald-600 dark:text-emerald-400 font-bold bg-emerald-100 dark:bg-emerald-900/40 px-2 py-0.5 rounded-full border border-emerald-200 dark:border-emerald-800/50"},Eu={key:1,class:"flex flex-col items-center justify-center opacity-60 mt-8"},Du=de({__name:"ServerCoreSelector",props:{visible:{type:Boolean}},emits:["update:visible","confirm"],setup(a,{emit:s}){const r=a,d=s,i=te({get:()=>r.visible,set:$=>d("update:visible",$)}),c=y(!1),f=y(!1),n=y({}),v=y("plugins"),I=y(""),u=y([]),R=y(""),b=y(!1),A=y(!1),p=y([]),k=y(""),g=[{key:"plugins",name:"插件服务端",desc:"支持 Bukkit/Spigot/Paper 插件",icon:"app",dataKey:"pluginsCore"},{key:"forge_hybrid",name:"NeoForge 系混合服务端",desc:"同时支持 Neoforge/Forge模组 和 插件",icon:"layers",dataKey:"pluginsAndModsCore_Forge"},{key:"fabric_hybrid",name:"Fabric 混合服务端",desc:"同时支持 Fabric模组 和 插件",icon:"cpu",dataKey:"pluginsAndModsCore_Fabric"},{key:"mod_forge",name:"NeoForge 模组服务端",desc:"纯 NeoForge/Forge 模组支持",icon:"tools",dataKey:"modsCore_Forge"},{key:"mod_fabric",name:"Fabric 模组服务端",desc:"纯 Fabric 模组支持",icon:"ai-tool",dataKey:"modsCore_Fabric"},{key:"vanilla",name:"原版服务端",desc:"Minecraft 官方原版核心",icon:"tea",dataKey:"vanillaCore"},{key:"bedrock",name:"基岩版第三方端",desc:"第三方的基岩版服务端",icon:"gift",dataKey:"bedrockCore"},{key:"proxy",name:"代理服务端",desc:"BungeeCord / Velocity 等 用于群组服",icon:"share",dataKey:"proxyCore"}],B=te(()=>{const $=g.find(V=>V.key===v.value);return!$||!n.value?[]:n.value[$.dataKey]||[]}),C=te(()=>R.value?B.value.filter($=>$.toLowerCase().includes(R.value.toLowerCase())):B.value),T=async()=>{c.value=!0;try{const $=await ru();Array.isArray($)&&$.length>0?n.value=$[0]:$&&!Array.isArray($)&&(n.value=$)}catch($){M.error("获取服务端分类失败"),console.error($)}finally{c.value=!1}},U=$=>{v.value=$,I.value="",u.value=[],R.value=""},D=$=>{I.value!==$&&(I.value=$,N($))},N=async $=>{f.value=!0,u.value=[];try{const V=await fa($);u.value=V.versions||[]}catch(V){M.error(`获取 ${$} 版本列表失败`),console.error(V)}finally{f.value=!1}},P=async $=>{I.value==="forge"||I.value==="neoforge"?(k.value=$,await j(I.value,$)):await O(I.value,$,"latest")},j=async($,V)=>{A.value=!0,p.value=[],b.value=!0;try{const z=await nu($,V)||[];z&&z.length>0?p.value=z:p.value=["latest"]}catch(_){M.error(`获取 ${$} 构建版本失败`),console.error(_),p.value=["latest"]}finally{A.value=!1}},O=async($,V,_)=>{if($==="bedrock-server"){M.warning("不支持在此部署基岩版官方版服务端,请使用基岩版一键部署/更新功能!");return}const z=M.loading("正在获取核心下载信息...",0);try{const E=await ba($,V,_),F={core:$,version:V,build:_,url:E.url,sha256:E.sha256||"",filename:`${$}-${V}.jar`};M.close(z),d("confirm",F),i.value=!1,b.value=!1}catch(E){M.close(z),M.error("获取核心的下载信息失败"),console.error(E)}};return _e(()=>r.visible,$=>{$&&!n.value.pluginsCore&&T()}),($,V)=>{const _=h("t-loading"),z=h("t-icon"),E=h("t-input"),F=h("t-button"),X=h("t-dialog");return l(),W(X,{visible:i.value,"onUpdate:visible":V[3]||(V[3]=q=>i.value=q),header:"选择服务端核心",width:"90%",top:"5vh",attach:"body",footer:!1,"destroy-on-close":"",class:"core-selector-dialog"},{default:o(()=>[e("div",iu,[e("div",du,[V[4]||(V[4]=e("div",{class:"hidden md:block p-5 pb-3"},[e("h3",{class:"text-base font-extrabold text-[var(--td-text-color-primary)] m-0 tracking-tight"},"服务端分类"),e("p",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 font-medium"},"选择您需要的底层架构类型")],-1)),e("div",cu,[c.value?(l(),W(_,{key:0,loading:c.value,size:"small",text:"加载分类中...",class:"m-auto"},null,8,["loading"])):(l(),x(re,{key:1},xe(g,q=>e("div",{key:q.key,class:ue(["group flex items-center md:items-start gap-3 p-2.5 md:p-3 rounded-xl cursor-pointer border border-transparent transition-all duration-300 shrink-0 md:shrink",v.value===q.key?"bg-[var(--color-primary)]/10 border-[var(--color-primary)]/20 shadow-sm":"hover:bg-zinc-100 dark:hover:bg-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600"]),onClick:H=>U(q.key)},[e("div",{class:ue(["w-10 h-10 rounded-lg flex items-center justify-center shrink-0 transition-colors",v.value===q.key?"bg-[var(--color-primary)] text-white shadow-md shadow-[var(--color-primary)]/30":"bg-zinc-100 dark:bg-zinc-800 text-[var(--td-text-color-secondary)] group-hover:text-zinc-700 dark:group-hover:text-zinc-200"])},[t(z,{name:q.icon,size:"20px"},null,8,["name"])],2),e("div",mu,[e("div",{class:ue(["font-bold text-sm truncate transition-colors",v.value===q.key?"text-[var(--color-primary)]":"text-zinc-700 dark:text-zinc-300"])},S(q.name),3),e("div",pu,S(q.desc),1),n.value[q.dataKey]?(l(),x("div",vu,S(n.value[q.dataKey]?.length||0)+" CORES ",1)):K("",!0)])],10,uu)),64))])]),e("div",fu,[e("div",bu,[e("div",xu,[V[5]||(V[5]=e("div",{class:"flex items-center gap-2"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h3",{class:"text-sm font-bold text-[var(--td-text-color-primary)] m-0"},"选择服务端核心")],-1)),t(E,{modelValue:R.value,"onUpdate:modelValue":V[0]||(V[0]=q=>R.value=q),placeholder:"搜索核心名称...",class:"!w-full sm:!w-64 !bg-white dark:!bg-zinc-800"},{"prefix-icon":o(()=>[t(z,{name:"search",class:"opacity-60"})]),_:1},8,["modelValue"])]),e("div",gu,[C.value.length>0?(l(),x("div",hu,[(l(!0),x(re,null,xe(C.value,q=>(l(),x("div",{key:q,class:ue(["group relative flex items-center justify-center p-4 rounded-xl border bg-white dark:bg-zinc-800 cursor-pointer transition-all duration-300 select-none overflow-hidden",I.value===q?"border-[var(--color-primary)] shadow-md shadow-[var(--color-primary)]/20":"border-zinc-200 dark:border-zinc-700 hover:border-[var(--color-primary)]/50 hover:shadow-sm"]),onClick:H=>D(q)},[e("div",{class:ue(["absolute inset-0 bg-[var(--color-primary)] transition-transform duration-300 origin-bottom",I.value===q?"scale-y-100 opacity-100":"scale-y-0 opacity-0"])},null,2),e("span",{class:ue(["relative z-10 font-extrabold text-sm truncate transition-colors duration-300",I.value===q?"text-white":"text-zinc-700 dark:text-zinc-300 group-hover:text-[var(--color-primary)]"])},S(q),3),I.value===q?(l(),W(z,{key:0,name:"check",class:"absolute top-2 right-2 text-white/80 text-sm z-10"})):K("",!0)],10,yu))),128))])):(l(),x("div",_u,[t(z,{name:"search",size:"32px",class:"text-zinc-400 mb-2"}),V[6]||(V[6]=e("span",{class:"text-sm text-zinc-500 font-medium"},"该分类下暂无匹配的核心",-1))]))])]),e("div",wu,[e("div",ku,[e("div",$u,[V[8]||(V[8]=e("div",{class:"w-1 h-4 bg-emerald-500 rounded-full"},null,-1)),e("h3",zu,[I.value?(l(),x("span",Cu,S(I.value),1)):K("",!0),V[7]||(V[7]=m(" 支持版本列表 ",-1))])]),I.value?(l(),W(F,{key:0,size:"small",variant:"text",class:"hover:!bg-zinc-200/50 dark:hover:!bg-zinc-700/50",onClick:V[1]||(V[1]=q=>N(I.value))},{icon:o(()=>[t(z,{name:"refresh"})]),default:o(()=>[V[9]||(V[9]=m("刷新版本 ",-1))]),_:1})):K("",!0)]),e("div",Au,[f.value?(l(),W(_,{key:0,loading:f.value,size:"small",text:"获取版本中...",class:"absolute inset-0 m-auto"},null,8,["loading"])):(l(),x(re,{key:1},[I.value?u.value.length>0?(l(),x("div",Iu,[(l(!0),x(re,null,xe(u.value,q=>(l(),x("div",{key:q,class:"flex items-center justify-center px-2 py-1.5 rounded-lg border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-xs font-mono font-bold text-zinc-600 dark:text-zinc-300 cursor-pointer shadow-sm transition-all hover:bg-[var(--color-primary)]/10 hover:border-[var(--color-primary)]/40 hover:text-[var(--color-primary)] hover:-translate-y-0.5 active:translate-y-0",onClick:H=>P(q)},S(q),9,Vu))),128))])):(l(),x("div",Uu,[...V[11]||(V[11]=[e("span",{class:"text-sm text-zinc-500 font-medium"},"未找到该核心的版本信息",-1)])])):(l(),x("div",Su,[...V[10]||(V[10]=[e("span",{class:"text-sm font-medium text-[var(--td-text-color-secondary)] bg-white dark:bg-zinc-800 px-4 py-2 rounded-full shadow-sm border border-[var(--td-component-border)]"},"请先在上方选择一个核心",-1)])]))],64))])])])]),t(X,{visible:b.value,"onUpdate:visible":V[2]||(V[2]=q=>b.value=q),header:`${I.value} ${k.value} 选择构建版本`,width:"500px",top:"15vh",attach:"body",footer:!1,"z-index":10270},{default:o(()=>[e("div",Mu,[A.value?(l(),W(_,{key:0,loading:A.value,size:"small",text:"获取构建版本中...",class:"flex justify-center mt-10"},null,8,["loading"])):(l(),x(re,{key:1},[p.value.length>0?(l(),x("div",Lu,[(l(!0),x(re,null,xe(p.value,(q,H)=>(l(),x("div",{key:q,class:"flex items-center justify-between px-4 py-3 rounded-lg border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-zinc-800/40 cursor-pointer transition-all hover:border-[var(--color-primary)] hover:shadow-sm hover:bg-[var(--color-primary)]/5 group",onClick:J=>O(I.value,k.value,q)},[e("div",Tu,[t(z,{name:"server",class:"text-zinc-400 group-hover:text-[var(--color-primary)] transition-colors"}),e("span",Ru,S(q),1)]),e("div",ju,[H===0&&q!=="latest"?(l(),x("span",Pu," 推荐/最新 ")):K("",!0),t(z,{name:"chevron-right",class:"ml-2 text-zinc-300 group-hover:text-[var(--color-primary)] transition-colors"})])],8,Bu))),128))])):(l(),x("div",Eu,[t(z,{name:"error-circle",size:"24px",class:"text-zinc-400 mb-2"}),V[12]||(V[12]=e("span",{class:"text-sm text-zinc-500"},"未获取到构建版本",-1))]))],64))])]),_:1},8,["visible","header"])]),_:1},8,["visible"])}}}),xa=me(Du,[["__scopeId","data-v-d4c19aa2"]]);async function ga(a,s){return await Z.get({url:"/query/jdk",baseURL:"https://api.mslmc.cn/v3",params:{os:a,arch:s}})}async function ha(a=!1){return await Z.get({url:"/api/java/list",params:{refresh:a},timeout:60*1e3})}const Fu={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},Ou={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8 transition-all duration-300 flex flex-col md:flex-row gap-8 lg:gap-12 min-h-[600px]"},Nu={class:"w-full md:w-56 shrink-0 md:border-r border-dashed border-zinc-200/80 dark:border-zinc-700/60 md:pr-8 pb-4 md:pb-0 border-b md:border-b-0"},Ku={class:"flex-1 min-w-0 flex flex-col relative"},qu={key:0,class:"h-full flex flex-col"},Hu={class:"list-item-anim flex-1 pt-1"},Wu={class:"list-item-anim flex-1 pt-1"},Gu={class:"flex flex-col gap-2.5 mt-2"},Ju={class:"text-[11px] text-[var(--td-text-color-secondary)] mt-1 flex items-center gap-1 font-medium"},Xu={class:"w-full"},Qu={class:"w-full sm:w-[32rem] min-h-[70px] mt-2"},Yu={key:0},Zu={class:"text-[11px] text-[var(--td-text-color-secondary)] mt-2 font-medium"},em={class:"font-mono bg-zinc-100 dark:bg-zinc-800 px-1 rounded ml-1"},tm={key:1,class:"flex items-center gap-3"},om={key:2},am={key:3},sm={class:"list-item-anim flex-1 pt-1"},lm={class:"w-full sm:w-[32rem]"},rm={key:0},nm={class:"w-full"},im={key:0,class:"flex items-center gap-3 mt-4 p-3 bg-transparent rounded-lg border border-[var(--color-primary)]/40 relative overflow-hidden group"},dm={class:"flex-1 min-w-0"},cm={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},um={key:1},mm={class:"w-full"},pm={key:1,class:"w-full bg-transparent p-4 mt-4 rounded-lg border border-[var(--color-primary)]/40"},vm={class:"text-sm font-bold text-[var(--td-text-color-primary)] mb-2 truncate"},fm={key:2,class:"flex items-center gap-3 mt-4 p-3 bg-transparent rounded-lg border border-[var(--color-success)]/40 relative overflow-hidden"},bm={class:"flex-1 min-w-0"},xm={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},gm={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},hm={class:"flex items-center gap-1 shrink-0"},ym={key:2},_m={class:"list-item-anim flex-1 pt-1"},wm={class:"grid grid-cols-1 sm:grid-cols-2 gap-x-6 gap-y-6 w-full sm:w-[40rem]"},km={class:"flex items-center gap-2 w-full"},$m={class:"flex-1"},zm={class:"flex items-center gap-2 w-full"},Cm={class:"flex-1"},Am={class:"list-item-anim flex-1 pt-1"},Sm={class:"flex flex-col min-w-0 mb-8 pb-6 border-b border-zinc-200 dark:border-zinc-800"},Im={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] truncate tracking-tight"},Vm={class:"text-sm text-[var(--td-text-color-secondary)] mt-2 flex items-center gap-1.5 truncate"},Um={class:"flex flex-col w-full"},Mm={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},Lm={class:"flex flex-col sm:items-end text-left sm:text-right"},Bm={class:"flex items-center gap-2"},Tm={class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]"},Rm={class:"text-[11px] text-zinc-500 mt-1"},jm={key:0},Pm={key:1},Em={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},Dm={class:"flex flex-col sm:items-end text-left sm:text-right"},Fm={class:"flex items-center gap-2"},Om={key:0,class:"text-sm font-bold text-[var(--td-text-color-primary)]"},Nm=["title"],Km={class:"text-[11px] text-zinc-500 mt-1 truncate max-w-[250px] sm:max-w-[350px]"},qm={key:0},Hm={key:1},Wm={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},Gm={class:"flex items-center gap-3"},Jm={class:"text-sm font-bold text-[var(--color-primary)]"},Xm={class:"text-sm font-bold text-red-500 dark:text-red-400"},Qm={class:"flex flex-col sm:flex-row sm:items-start justify-between py-4"},Ym={key:0,class:"text-xs font-mono text-[var(--td-text-color-secondary)] break-all leading-relaxed bg-zinc-50/50 dark:bg-zinc-800/30 p-2.5 rounded-lg border border-zinc-100 dark:border-zinc-800 text-left sm:text-right max-w-full sm:max-w-md"},Zm={key:1,class:"text-sm text-zinc-500 mt-1"},ep={class:"mt-auto pt-6 border-t border-zinc-200 dark:border-zinc-700 flex items-center justify-between"},tp={key:1},op={key:1,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim"},ap={class:"text-lg font-bold text-[var(--td-text-color-primary)] mb-2 tracking-tight"},sp={class:"w-full max-w-lg !my-6"},lp={class:"w-full max-w-2xl bg-white/40 dark:bg-zinc-900/40 rounded-2xl border border-white/60 dark:border-zinc-700/50 p-4 h-64 flex flex-col mt-6 shadow-[0_4px_12px_rgba(0,0,0,0.02)]"},rp={class:"text-[var(--td-text-color-secondary)] mr-2"},np={class:"text-[var(--td-text-color-primary)] font-medium"},ip={key:2,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim min-h-[50vh] sm:min-h-[40vh]"},dp={class:"text-xl text-[var(--td-text-color-primary)] text-center font-medium leading-[22px] !mt-4"},cp={class:"flex gap-4"},up=de({__name:"QuickMode",setup(a){const s=Be(),r=y(null),d=At(),i=y(0),c=y(!1),f=y(!1),n=y(!1),v=y(0),I=y([]),u=y(null),R=y(null),b=y(null),A=y("online"),p=y(!1),k=y(null),g=y(!1),B=y(0),C=y(""),T=y(""),U=y("online"),D=y([]),N=y([]),P=y(""),j=y(""),O=async(ee=!1)=>{try{ee&&M.info("正在刷新Java版本列表(重新扫描耗时较长)...");const L=await ga(s.userInfo.systemInfo.osType.toLowerCase().replace("os",""),s.userInfo.systemInfo.osArchitecture.toLowerCase());L&&Array.isArray(L)&&(D.value=L.map(ce=>({label:`Java ${ce}`,value:ce})),D.value.length>0&&!P.value&&(P.value=D.value[1].value)),N.value=(await ha(ee)).map(ce=>({label:`Java ${ce.version}${ce.is64Bit?"":" (32位)"} (${ce.vendor} | ${ce.path})`,value:ce.path})),N.value.length>0&&(j.value=N.value[0].value),ee&&M.success("已刷新Java版本列表")}catch(L){M.warning("获取在线Java版本失败"+L.message)}};ze(()=>{O()});const $=y({name:"新建服务器",path:"",java:"",core:"",coreUrl:"",coreSha256:"",coreFileKey:"",packageFileKey:"",minM:1024,maxM:4096,args:""}),V=[{label:"GB",value:"GB"},{label:"MB",value:"MB"}],_=y("GB"),z=y("GB"),E=te({get:()=>_.value==="GB"?$.value.minM/1024:$.value.minM,set:ee=>{$.value.minM=_.value==="GB"?Math.round(ee*1024):ee}}),F=te({get:()=>z.value==="GB"?$.value.maxM/1024:$.value.maxM,set:ee=>{$.value.maxM=z.value==="GB"?Math.round(ee*1024):ee}});_e([U,P,j],([ee,L,ce])=>{ee==="env"?$.value.java="java":ee==="custom"||ee==="local"?$.value.java=ce:ee==="online"&&($.value.java=L?`MSLX://Java/${L}`:""),$.value.java&&r.value?.validate({fields:["java"]})},{immediate:!0});const X=te(()=>({name:[{required:!0,message:"实例名称不能为空",trigger:"blur"}],java:[{required:!0,message:"请配置 Java 环境",trigger:"change"}],core:[{required:!0,message:"核心名称/文件不能为空",trigger:"change"}],coreUrl:[{validator:ee=>{if(A.value==="online"){if(!ee)return{result:!1,message:"请选择一个服务端核心",type:"error"};if(ee&&!/^https?:\/\/.+/.test(ee))return{result:!1,message:"下载地址必须以 http(s) 开头",type:"error"}}return!0},trigger:"change"}],coreFileKey:[{validator:ee=>A.value==="manual"&&!ee?{result:!1,message:"请上传核心文件",type:"error"}:!0,trigger:"change"}],minM:[{required:!0,min:1,message:"最小内存必须大于0",trigger:"blur"}],maxM:[{required:!0,min:1,message:"最大内存必须大于0",trigger:"blur"}]})),q=[["name","path"],["java"],["core","coreUrl","coreSha256","coreFileKey"],["minM","maxM","args"],[]],H=()=>{i.value>0&&(i.value-=1)},J=async()=>{if(i.value===2){if(A.value==="online"){if(!$.value.coreUrl||!$.value.core){M.warning("请点击按钮选择一个服务端核心");return}}else if(A.value==="custom"){if(!$.value.core){M.warning("请输入核心文件名");return}}else if(!$.value.coreFileKey){M.warning("请先上传核心文件");return}}const ee=await r.value.validate();if(ee===!0){i.value<4&&(i.value+=1);return}const L=new Set(q[i.value]);Object.keys(ee).some(he=>L.has(he))?M.warning("请检查当前步骤的输入"):i.value<4&&(i.value+=1)},ae=ee=>{$.value.core=ee.filename,$.value.coreUrl=ee.url,$.value.coreSha256=ee.sha256,$.value.coreFileKey="",M.success(`已选择: ${ee.core} (${ee.version})`),r.value.validate({fields:["core","coreUrl"]})},le=()=>{k.value?.click()},fe=ee=>{if(ee===0)return"0 B";const L=1024,ce=["B","KB","MB","GB"],he=Math.floor(Math.log(ee)/Math.log(L));return parseFloat((ee/Math.pow(L,he)).toFixed(2))+" "+ce[he]},be=async ee=>{const L=ee.target;if(!L.files||L.files.length===0)return;if($.value.coreFileKey)try{await Mt($.value.coreFileKey),console.log("旧临时文件已清理:",$.value.coreFileKey)}catch(ie){console.warn("清理旧文件失败,可能文件已过期",ie)}const ce=L.files[0],he=ce.name;$.value.core=he,$.value.coreUrl="",$.value.coreSha256="",$.value.coreFileKey="",C.value=he,T.value=fe(ce.size),await Ee(ce),L.value=""};let Se=null;const Ee=async ee=>{Se&&Se.abort(),Se=new AbortController,g.value=!0,B.value=0;const ce=ee.size>200*1024*1024?50*1024*1024:5*1024*1024,he=Math.ceil(ee.size/ce),ie=4,G=5,pe=new Map;let Ve=0;const Ce=()=>{const Ue=Date.now();if(Ue-Ve<100)return;Ve=Ue;const we=Array.from(pe.values()).reduce((Re,Fe)=>Re+Fe,0),Ae=Math.min(we/ee.size*98,98);B.value=Number(Ae.toFixed(1))};try{const we=(await qt()).uploadId;if(!we)throw new Error("无法获取上传凭证");const Ae=Array.from({length:he},(ge,et)=>et),Re=async ge=>{if(Se?.signal.aborted)throw new Error("已取消");const et=ge*ce,tt=Math.min(ee.size,et+ce),rt=ee.slice(et,tt);let je;for(let lt=1;lt<=G;lt++){if(Se?.signal.aborted)throw new Error("已取消");try{await Ht(we,ge,rt,ke=>{ke&&ke.loaded&&(pe.set(ge,ke.loaded),Ce())},Se?.signal),pe.set(ge,rt.size),Ce();return}catch(ke){je=ke,pe.set(ge,0),Ce(),ltsetTimeout(wt,1e3*lt))}}throw new Error(`分片 ${ge} 失败: ${je?.message}`)},Fe=async()=>{for(;Ae.length>0&&!Se?.signal.aborted;){const ge=Ae.shift();ge!==void 0&&await Re(ge)}},Ze=Array(Math.min(ie,he)).fill(null).map(()=>Fe());if(await Promise.all(Ze),Se?.signal.aborted)throw new Error("已取消");const Xe=(await Wt(we,he)).uploadId;B.value=100,$.value.coreFileKey=Xe,M.success("核心文件上传成功!"),r.value?.validate({fields:["core","coreFileKey"]})}catch(Ue){if(Ue.message==="已取消")return;console.error(Ue),M.error(`上传失败: ${Ue.message||"未知错误"}`),$.value.core="",C.value="",B.value=0,$.value.coreFileKey&&(Mt($.value.coreFileKey).catch(()=>{}),$.value.coreFileKey="")}finally{Se?.signal.aborted||(g.value=!1)}},Y=async()=>{$.value.coreFileKey&&(await Mt($.value.coreFileKey),$.value.coreFileKey="",$.value.core="",C.value="",M.success("文件已移除"))},se=async()=>{if(!(await r.value.validate()===!0)){M.warning("请检查表单所有内容");return}c.value=!0,I.value=[];const ce={...$.value,path:$.value.path||null,coreUrl:$.value.coreUrl||null,coreSha256:$.value.coreSha256||null,coreFileKey:$.value.coreFileKey||null,args:$.value.args||null};A.value==="manual"?(ce.coreUrl=null,ce.coreSha256=null):ce.coreFileKey=null;try{const ie=(await Mo(ce)).serverId;if(!ie)throw new Error("服务器未返回 ServerId");R.value=ie.toString(),f.value=!0,i.value=5,await De(R.value)}catch(he){const ie=he.message||"创建请求失败,请检查网络或后端服务";M.error(ie),c.value=!1}},De=async ee=>{const{baseUrl:L,token:ce}=s;let he=!1;const ie=new URL("/api/hubs/creationProgressHub",L||window.location.origin);ie.searchParams.append("x-user-token",ce),u.value=new Ct().withUrl(ie.toString(),{withCredentials:!1}).configureLogging(jt.Information).build();const G=(pe,Ve=null)=>{I.value.push({time:new Date().toLocaleTimeString(),message:pe,progress:Ve}),yt(()=>{b.value&&(b.value.scrollTop=b.value.scrollHeight)})};u.value.on("StatusUpdate",(pe,Ve,Ce)=>{pe.toString()===ee&&(G(Ve,Ce),Ce!==null&&Ce>=0&&(v.value=Ce),Ce===100?(he=!0,M.success("服务器创建成功!"),u.value?.stop(),f.value=!1,n.value=!0,i.value=6,c.value=!1,d.refreshInstanceList()):Ce===-1&&(M.error(Ve||"创建过程中发生未知错误"),u.value?.stop(),f.value=!1,c.value=!1,i.value=0))});try{await u.value.start(),G("已连接到实时进度服务..."),await u.value.invoke("TrackServer",ee),G("已订阅任务,等待服务器响应...")}catch(pe){he||(G(`SignalR 连接失败: ${pe.message}`,-1),M.error("无法连接到实时进度服务"),f.value=!1,c.value=!1,i.value=0)}};He(()=>{u.value?.stop(),Se&&Se.abort()});const Me=()=>{n.value=!1,i.value=0,$.value={...$.value,name:"新建服务器",core:"",coreUrl:"",coreSha256:"",path:"",args:"",coreFileKey:""},C.value="",A.value="online",U.value="online",j.value=""};return(ee,L)=>{const ce=h("t-step-item"),he=h("t-steps"),ie=h("t-input"),G=h("t-form-item"),pe=h("t-icon"),Ve=h("t-alert"),Ce=h("t-radio-button"),Ue=h("t-radio-group"),we=h("t-select"),Ae=h("t-button"),Re=h("t-progress"),Fe=h("t-input-number"),Ze=h("t-textarea"),ne=h("t-tag"),Xe=h("t-form");return l(),x("div",Fu,[e("div",Ou,[e("div",Nu,[t(he,{layout:"vertical",current:i.value,status:"process",readonly:"",class:"custom-steps !bg-transparent !mt-2"},{default:o(()=>[t(ce,{title:"基本信息",content:"填写实例名称和路径"}),t(ce,{title:"Java 环境",content:"配置 Java 运行时"}),t(ce,{title:"核心文件",content:"指定核心文件及下载"}),t(ce,{title:"资源配置",content:"设置内存与 JVM 参数"}),t(ce,{title:"确认信息",content:"核对并提交"}),t(ce,{title:"创建实例",content:"提交并等待创建"}),t(ce,{title:"完成",content:"查看创建结果"})]),_:1},8,["current"])]),e("div",Ku,[!f.value&&!n.value?(l(),x("div",qu,[t(Xe,{ref_key:"formRef",ref:r,data:$.value,rules:X.value,"label-align":"top",class:"flex-1 flex flex-col [&_.t-form__item]:!mb-6",onSubmit:se},{default:o(()=>[Le(e("div",Hu,[t(G,{label:"实例名称",name:"name"},{default:o(()=>[t(ie,{modelValue:$.value.name,"onUpdate:modelValue":L[0]||(L[0]=ge=>$.value.name=ge),placeholder:"为你的服务器起个名字",class:"!w-full sm:!w-[28rem]"},null,8,["modelValue"])]),_:1}),t(G,{label:"实例路径",name:"path",help:w(s).userInfo.systemInfo.docker?"您正在使用Docker容器部署,为保数据安全,仅支持使用默认数据路径":"选填,留空将使用默认路径"},{default:o(()=>[t(ie,{modelValue:$.value.path,"onUpdate:modelValue":L[1]||(L[1]=ge=>$.value.path=ge),disabled:w(s).userInfo.systemInfo.docker,placeholder:"例如: D:\\MyServer",class:"!w-full sm:!w-[28rem] !font-mono"},null,8,["modelValue","disabled"])]),_:1},8,["help"])],512),[[Te,i.value===0]]),Le(e("div",Wu,[t(Ve,{theme:"info",title:"Java 版本选择指南",class:"!mb-6 !rounded-xl"},{message:o(()=>[e("div",Gu,[L[21]||(L[21]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 26.1 - 最新版本"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 25")],-1)),L[22]||(L[22]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.20.5 - 1.21.11"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 21")],-1)),L[23]||(L[23]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.18 - 1.20.4"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 17")],-1)),L[24]||(L[24]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.17 / 1.17.1"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 16")],-1)),L[25]||(L[25]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-zinc-100 dark:bg-zinc-800 text-zinc-600 dark:text-zinc-300 border border-zinc-200 dark:border-zinc-700 font-bold text-xs tracking-wide shadow-sm"},"MC 1.13 - 更低版本"),e("span",{class:"font-extrabold text-xs text-[var(--td-text-color-secondary)] bg-zinc-100 dark:bg-zinc-800 px-2.5 py-1 rounded-md border border-zinc-200 dark:border-zinc-700"},"Java 8")],-1)),e("div",Ju,[t(pe,{name:"info-circle",size:"14px"}),L[20]||(L[20]=m(" 建议直接使用推荐版本,避免兼容性问题。 ",-1))])])]),_:1}),t(G,{label:"Java 来源",name:"java",class:"!mb-0"},{default:o(()=>[e("div",Xu,[t(Ue,{modelValue:U.value,"onUpdate:modelValue":L[2]||(L[2]=ge=>U.value=ge),variant:"default-filled",class:"!mb-4"},{default:o(()=>[t(Ce,{value:"online"},{default:o(()=>[...L[26]||(L[26]=[m("在线下载",-1)])]),_:1}),t(Ce,{value:"local"},{default:o(()=>[...L[27]||(L[27]=[m("选择电脑上的 Java",-1)])]),_:1}),t(Ce,{value:"env"},{default:o(()=>[...L[28]||(L[28]=[m("环境变量",-1)])]),_:1}),t(Ce,{value:"custom"},{default:o(()=>[...L[29]||(L[29]=[m("自定义路径",-1)])]),_:1})]),_:1},8,["modelValue"]),e("div",Qu,[U.value==="online"?(l(),x("div",Yu,[t(we,{modelValue:P.value,"onUpdate:modelValue":L[3]||(L[3]=ge=>P.value=ge),options:D.value,placeholder:"请选择 Java 版本",class:"!w-full sm:!w-64"},null,8,["modelValue","options"]),e("div",Zu,[m(" 将下载并使用 Java "+S(P.value||"?")+" ",1),e("span",em,S(w(s).userInfo.systemInfo.osType.toLowerCase().replace("os",""))+" / "+S(w(s).userInfo.systemInfo.osArchitecture.toLowerCase()),1)])])):K("",!0),U.value==="local"?(l(),x("div",tm,[t(we,{modelValue:j.value,"onUpdate:modelValue":L[4]||(L[4]=ge=>j.value=ge),options:N.value,placeholder:"请选择 Java 版本",class:"!flex-1"},null,8,["modelValue","options"]),t(Ae,{variant:"outline",theme:"primary",onClick:L[5]||(L[5]=ge=>O(!0))},{default:o(()=>[...L[30]||(L[30]=[m("重新扫描",-1)])]),_:1})])):K("",!0),U.value==="env"?(l(),x("div",om,[t(ie,{"model-value":"java",readonly:"",disabled:"",class:"!font-mono !bg-zinc-100 dark:!bg-zinc-800/50"}),L[31]||(L[31]=e("div",{class:"text-[11px] text-zinc-500 mt-2 font-medium"},"将使用系统环境变量中的 java 命令",-1))])):K("",!0),U.value==="custom"?(l(),x("div",am,[t(ie,{modelValue:j.value,"onUpdate:modelValue":L[6]||(L[6]=ge=>j.value=ge),placeholder:"例如: C:\\Program Files\\Java\\jdk-17\\bin\\java.exe",class:"!font-mono"},null,8,["modelValue"])])):K("",!0)])])]),_:1})],512),[[Te,i.value===1]]),Le(e("div",sm,[t(G,{label:"选择您的Minecraft开服使用的服务端核心",class:"!mb-5"},{default:o(()=>[t(Ue,{modelValue:A.value,"onUpdate:modelValue":L[7]||(L[7]=ge=>A.value=ge),variant:"default-filled"},{default:o(()=>[t(Ce,{value:"online"},{default:o(()=>[...L[32]||(L[32]=[m("在线下载 (推荐)",-1)])]),_:1}),t(Ce,{value:"manual"},{default:o(()=>[...L[33]||(L[33]=[m("选择本地文件",-1)])]),_:1}),t(Ce,{value:"custom"},{default:o(()=>[...L[34]||(L[34]=[m("自定义文件名",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),e("div",lm,[A.value==="online"?(l(),x("div",rm,[t(G,{label:"选择服务端核心",name:"coreUrl",class:"!mb-0"},{default:o(()=>[e("div",nm,[t(Ae,{variant:"outline",class:"!w-full !justify-start !pl-4 !h-10 !bg-transparent border-zinc-200 dark:border-zinc-700 hover:!border-[var(--color-primary)]",onClick:L[8]||(L[8]=ge=>p.value=!0)},{icon:o(()=>[t(pe,{name:"cloud-download",class:"opacity-70"})]),default:o(()=>[L[35]||(L[35]=m(" 点击打开服务端核心选择库 ",-1))]),_:1}),$.value.core?(l(),x("div",im,[L[37]||(L[37]=e("div",{class:"absolute left-0 top-0 bottom-0 w-1 bg-[var(--color-primary)] opacity-80"},null,-1)),t(pe,{name:"check-circle-filled",class:"text-[var(--color-primary)] text-xl shrink-0 ml-1"}),e("div",dm,[e("div",cm,S($.value.core),1),L[36]||(L[36]=e("div",{class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},"MSLX 将在稍后帮您自动下载此文件...",-1))]),t(Ae,{shape:"circle",variant:"text",theme:"danger",class:"shrink-0 hover:!bg-red-500/10 opacity-0 group-hover:opacity-100 transition-opacity",onClick:L[9]||(L[9]=ge=>{$.value.core="",$.value.coreUrl=""})},{default:o(()=>[t(pe,{name:"close"})]),_:1})])):K("",!0)])]),_:1}),Le(e("input",{"onUpdate:modelValue":L[10]||(L[10]=ge=>$.value.coreSha256=ge),type:"hidden"},null,512),[[es,$.value.coreSha256]])])):K("",!0),A.value==="manual"?(l(),x("div",um,[t(G,{label:"上传核心文件",name:"coreFileKey",class:"!mb-0"},{default:o(()=>[e("div",mm,[e("input",{ref_key:"uploadInputRef",ref:k,accept:".jar",type:"file",style:{display:"none"},onChange:be},null,544),!g.value&&!$.value.coreFileKey?(l(),W(Ae,{key:0,variant:"outline",class:"!w-full !justify-start !pl-4 !h-10 !bg-transparent border-zinc-200 dark:border-zinc-700 hover:!border-[var(--color-primary)]",onClick:le},{icon:o(()=>[t(pe,{name:"upload",class:"opacity-70"})]),default:o(()=>[L[38]||(L[38]=m(" 点击选择文件并上传 (.jar) ",-1))]),_:1})):K("",!0),g.value?(l(),x("div",pm,[e("div",vm,"正在上传: "+S(C.value)+" ("+S(T.value)+")",1),t(Re,{theme:"line",percentage:B.value},null,8,["percentage"]),L[39]||(L[39]=e("div",{class:"text-[11px] text-zinc-500 mt-2 text-center"},"别着急,喝杯茶🍵...",-1))])):K("",!0),$.value.coreFileKey&&!g.value?(l(),x("div",fm,[L[40]||(L[40]=e("div",{class:"absolute left-0 top-0 bottom-0 w-1 bg-[var(--color-success)] opacity-80"},null,-1)),t(pe,{name:"check-circle-filled",class:"text-[var(--color-success)] text-xl shrink-0 ml-1"}),e("div",bm,[e("div",xm,S(C.value),1),e("div",gm,S(T.value)+" | 已上传准备就绪",1)]),e("div",hm,[t(Ae,{shape:"square",variant:"text",theme:"primary",onClick:le},{default:o(()=>[t(pe,{name:"swap"})]),_:1}),t(Ae,{shape:"square",variant:"text",theme:"danger",onClick:Y},{default:o(()=>[t(pe,{name:"delete"})]),_:1})])])):K("",!0)])]),_:1})])):K("",!0),A.value==="custom"?(l(),x("div",ym,[t(Ve,{theme:"warning",class:"!mb-5 !rounded-xl"},{message:o(()=>[...L[41]||(L[41]=[m("此模式通常用于服务器目录中已经存在核心文件,或者您打算稍后手动通过文件管理上传核心。",-1)])]),_:1}),t(G,{label:"核心文件名",name:"core",class:"!mb-0"},{help:o(()=>[...L[42]||(L[42]=[e("span",{class:"text-[11px] text-zinc-500 mt-1 inline-block"},"请确保文件名包含后缀,例如: server.jar",-1)])]),default:o(()=>[t(ie,{modelValue:$.value.core,"onUpdate:modelValue":L[11]||(L[11]=ge=>$.value.core=ge),placeholder:"请输入核心文件名",class:"!font-mono"},null,8,["modelValue"])]),_:1})])):K("",!0)])],512),[[Te,i.value===2]]),Le(e("div",_m,[e("div",wm,[t(G,{label:"最小内存",name:"minM",class:"!mb-0"},{default:o(()=>[e("div",km,[e("div",$m,[t(Fe,{modelValue:E.value,"onUpdate:modelValue":L[12]||(L[12]=ge=>E.value=ge),min:0,"decimal-places":_.value==="GB"?1:0,placeholder:"Xms",theme:"column",class:"!w-full"},null,8,["modelValue","decimal-places"])]),t(we,{modelValue:_.value,"onUpdate:modelValue":L[13]||(L[13]=ge=>_.value=ge),options:V,clearable:!1,class:"!w-20 shrink-0"},null,8,["modelValue"])])]),_:1}),t(G,{label:"最大内存",name:"maxM",class:"!mb-0"},{default:o(()=>[e("div",zm,[e("div",Cm,[t(Fe,{modelValue:F.value,"onUpdate:modelValue":L[14]||(L[14]=ge=>F.value=ge),min:0,"decimal-places":z.value==="GB"?1:0,placeholder:"Xmx",theme:"column",class:"!w-full"},null,8,["modelValue","decimal-places"])]),t(we,{modelValue:z.value,"onUpdate:modelValue":L[15]||(L[15]=ge=>z.value=ge),options:V,clearable:!1,class:"!w-20 shrink-0"},null,8,["modelValue"])])]),_:1})]),t(G,{label:"额外 JVM 参数 (可选)",name:"args",class:"!mt-8 w-full sm:w-[40rem]"},{help:o(()=>[...L[43]||(L[43]=[e("span",{class:"text-[11px] text-zinc-500 mt-1 inline-block"},"例如: -XX:+UseG1GC",-1)])]),default:o(()=>[t(Ze,{modelValue:$.value.args,"onUpdate:modelValue":L[16]||(L[16]=ge=>$.value.args=ge),placeholder:"-XX:+UseG1GC",autosize:{minRows:3,maxRows:6},class:"!font-mono !bg-transparent"},null,8,["modelValue"])]),_:1})],512),[[Te,i.value===3]]),Le(e("div",Am,[e("div",Sm,[e("div",Im,S($.value.name),1),e("div",Vm,[t(pe,{name:"folder-open",class:"opacity-70"}),m(" "+S($.value.path||"默认数据路径 (/DaemonData/Servers)"),1)])]),e("div",Um,[e("div",Mm,[L[47]||(L[47]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"服务端核心",-1)),e("div",Lm,[e("div",Bm,[e("span",Tm,S($.value.core||"未指定"),1),A.value==="online"?(l(),W(ne,{key:0,theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...L[44]||(L[44]=[m("在线下载",-1)])]),_:1})):A.value==="manual"?(l(),W(ne,{key:1,theme:"warning",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...L[45]||(L[45]=[m("手动上传",-1)])]),_:1})):(l(),W(ne,{key:2,theme:"default",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...L[46]||(L[46]=[m("自定义",-1)])]),_:1}))]),e("div",Rm,[A.value==="online"?(l(),x("span",jm,"来源: MSL 镜像源 ("+S($.value.coreUrl?"已匹配":"未匹配")+")",1)):(l(),x("span",Pm,"大小: "+S(T.value||"未知"),1))])])]),e("div",Em,[L[49]||(L[49]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"Java 运行时",-1)),e("div",Dm,[e("div",Fm,[U.value==="online"?(l(),x("span",Om,"Java "+S(P.value),1)):(l(),x("span",{key:1,class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]",title:$.value.java},S($.value.java),9,Nm)),U.value==="online"?(l(),W(ne,{key:2,theme:"success",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...L[48]||(L[48]=[m("自动安装",-1)])]),_:1})):K("",!0)]),e("div",Km,[U.value==="online"?(l(),x("span",qm,"将自动从镜像源下载并解压 JDK")):(l(),x("span",Hm,"目标环境: "+S($.value.java),1))])])]),e("div",Wm,[L[50]||(L[50]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"内存分配 (JVM)",-1)),e("div",Gm,[e("span",Jm,"初始 (Xms): "+S(E.value)+" "+S(_.value),1),t(pe,{name:"arrow-right",class:"text-zinc-300 dark:text-zinc-600"}),e("span",Xm,"最大 (Xmx): "+S(F.value)+" "+S(z.value),1)])]),e("div",Qm,[L[51]||(L[51]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-2 sm:mb-0 shrink-0 mt-1"},"启动参数",-1)),$.value.args?(l(),x("div",Ym,S($.value.args),1)):(l(),x("div",Zm,"无额外参数"))])]),t(Ve,{theme:"info",class:"!mt-8 !rounded-xl !bg-[var(--color-primary)]/5 !border-[var(--color-primary)]/20"},{message:o(()=>[...L[52]||(L[52]=[m("确认无误后点击下方 ",-1),e("strong",{class:"text-[var(--color-primary)] mx-1"},"提交创建",-1),m(",系统将自动开始下载资源并部署实例。",-1)])]),_:1})],512),[[Te,i.value===4]]),e("div",ep,[i.value>0&&i.value<5?(l(),W(Ae,{key:0,theme:"default",onClick:H},{default:o(()=>[...L[53]||(L[53]=[m("上一步",-1)])]),_:1})):(l(),x("div",tp)),L[56]||(L[56]=m()),i.value<4?(l(),W(Ae,{key:2,theme:"primary",type:"button",onClick:J},{default:o(()=>[...L[54]||(L[54]=[m("下一步",-1)])]),_:1})):K("",!0),i.value===4?(l(),W(Ae,{key:3,theme:"primary",type:"submit",loading:c.value},{default:o(()=>[...L[55]||(L[55]=[m("提交创建",-1)])]),_:1},8,["loading"])):K("",!0)])]),_:1},8,["data","rules"])])):K("",!0),f.value?(l(),x("div",op,[e("div",ap,"正在创建实例 ("+S(R.value)+")",1),L[57]||(L[57]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] mb-6"},"请勿关闭此页面,创建过程可能需要几分钟...",-1)),e("div",sp,[t(Re,{theme:"plump",percentage:v.value,label:`${v.value.toFixed(2)}%`},null,8,["percentage","label"])]),e("div",lp,[e("div",{ref_key:"logContainerRef",ref:b,class:"flex-1 overflow-y-auto custom-scrollbar pr-2"},[(l(!0),x(re,null,xe(I.value,(ge,et)=>(l(),x("div",{key:et,class:"text-xs font-mono mb-2 leading-relaxed"},[e("span",rp,"["+S(ge.time)+"]",1),e("span",np,S(ge.message),1)]))),128))],512)])])):K("",!0),n.value?(l(),x("div",ip,[t(pe,{name:"check-circle",size:"64px",class:"text-[var(--color-success)]"}),e("div",dp," 服务器 ("+S(R.value)+") 已创建成功 ",1),L[60]||(L[60]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] leading-[22px] !my-2 !mb-8"}," 你现在可以去服务器列表启动它了 ",-1)),e("div",cp,[t(Ae,{onClick:L[17]||(L[17]=()=>{Me(),w(Ie)("/instance/list")})},{default:o(()=>[...L[58]||(L[58]=[m("返回服务端列表",-1)])]),_:1}),t(Ae,{theme:"default",onClick:L[18]||(L[18]=()=>{Me(),w(Ie)(`/instance/console/${R.value}`)})},{default:o(()=>[...L[59]||(L[59]=[m("前往控制台",-1)])]),_:1})])])):K("",!0)])]),t(xa,{visible:p.value,"onUpdate:visible":L[19]||(L[19]=ge=>p.value=ge),onConfirm:ae},null,8,["visible"])])}}}),mp=me(up,[["__scopeId","data-v-235e2927"]]),pp={class:"design-card list-item-anim bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8"},vp={key:0,class:"flex flex-col relative pt-1"},fp={class:"flex items-center gap-3"},bp={class:"mt-6 pt-6 border-t border-zinc-200 dark:border-zinc-700"},xp={key:1,class:"flex flex-col items-center justify-center py-8 min-h-[50vh] sm:min-h-[40vh]"},gp={class:"text-xl text-[var(--td-text-color-primary)] text-center font-medium leading-[22px] !mt-4"},hp={class:"flex gap-4"},yp=de({__name:"CustomMode",setup(a){const s=Be(),r=y(!1),d=y(0),i=y(null),c=qe({name:"",path:null,java:"none",core:"none",coreUrl:"",coreSha256:"",coreFileKey:"",packageFileKey:"",minM:1027,maxM:1027,args:"",ignoreEula:!0}),f={name:[{required:!0,message:"请输入服务器名称",type:"error"}],args:[{required:!0,message:"请输入自定义启动参数",type:"error"}]},n=async({validateResult:I})=>{if(I===!0)try{const u=await Mo(c);d.value=u.serverId,M.success("创建成功"),r.value=!0}catch(u){M.error("创建失败!"+u.message)}else M.warning("请检查表单填写")},v=()=>{r.value=!1,Object.assign(c,{name:"新建服务器",path:null,java:"none",core:"none",packageFileKey:"",coreFileKey:"",coreUrl:"",coreSha256:"",minM:1027,maxM:1027,args:"",ignoreEula:!0})};return(I,u)=>{const R=h("t-input"),b=h("t-form-item"),A=h("t-textarea"),p=h("t-switch"),k=h("t-button"),g=h("t-form"),B=h("t-icon");return l(),x("div",pp,[r.value?(l(),x("div",xp,[t(B,{name:"check-circle",size:"64px",class:"text-[var(--color-success)]"}),e("div",gp," 服务器 ("+S(d.value)+") 已创建成功 ",1),u[11]||(u[11]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] leading-[22px] !my-2 !mb-8"}," 你现在可以去服务器列表启动它了 ",-1)),e("div",hp,[t(k,{onClick:u[4]||(u[4]=()=>{v(),w(Ie)("/instance/list")})},{default:o(()=>[...u[9]||(u[9]=[m("返回服务端列表",-1)])]),_:1}),t(k,{theme:"default",onClick:u[5]||(u[5]=()=>{v(),w(Ie)(`/instance/console/${d.value}`)})},{default:o(()=>[...u[10]||(u[10]=[m("前往控制台",-1)])]),_:1})])])):(l(),x("div",vp,[t(g,{ref_key:"formRef",ref:i,rules:f,data:c,"label-align":"top",class:"flex-1 flex flex-col [&_.t-form__item]:!mb-6",onSubmit:n},{default:o(()=>[t(b,{label:"实例名称",name:"name"},{default:o(()=>[t(R,{modelValue:c.name,"onUpdate:modelValue":u[0]||(u[0]=C=>c.name=C),placeholder:"给你的服务器起一个名字",class:"!w-full sm:!w-[28rem]"},null,8,["modelValue"])]),_:1}),t(b,{label:"存储路径 (可选)",name:"path",help:w(s).userInfo.systemInfo.docker?"您正在使用Docker容器部署,为保数据安全,仅支持使用默认数据路径":"选填,留空将使用默认路径"},{default:o(()=>[t(R,{modelValue:c.path,"onUpdate:modelValue":u[1]||(u[1]=C=>c.path=C),disabled:w(s).userInfo.systemInfo.docker,placeholder:"请填写服务端保存位置",class:"!w-full sm:!w-[28rem] !font-mono"},null,8,["modelValue","disabled"])]),_:1},8,["help"]),t(b,{label:"启动指令",name:"args",class:"w-full sm:!w-[40rem]"},{help:o(()=>[...u[6]||(u[6]=[e("span",{class:"text-[11px] text-zinc-500 mt-1 inline-block"},"此模式不会自动帮您配置 Java 环境,您需要填写完整的启动命令。",-1)])]),default:o(()=>[t(A,{modelValue:c.args,"onUpdate:modelValue":u[2]||(u[2]=C=>c.args=C),placeholder:"例如: ./start.sh 或 java -jar server.jar...",autosize:{minRows:5,maxRows:25},class:"code-font-textarea !bg-zinc-50/50 dark:!bg-zinc-900/30 !rounded-xl"},null,8,["modelValue"])]),_:1}),t(b,{label:"忽略 EULA 提示",name:"ignoreEula"},{help:o(()=>[...u[7]||(u[7]=[e("span",{class:"text-[11px] text-zinc-500 mt-1 inline-block"},"若您的实例并非 MC 服务器,可打开此选项。",-1)])]),default:o(()=>[e("div",fp,[t(p,{modelValue:c.ignoreEula,"onUpdate:modelValue":u[3]||(u[3]=C=>c.ignoreEula=C),size:"large"},null,8,["modelValue"]),e("span",{class:ue(["text-sm font-bold transition-colors",c.ignoreEula?"text-[var(--color-primary)]":"text-[var(--td-text-color-secondary)]"])},S(c.ignoreEula?"已开启":"已关闭"),3)])]),_:1}),e("div",bp,[t(k,{theme:"primary",type:"submit",class:"!rounded-xl !font-bold !h-11 !px-8 shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[...u[8]||(u[8]=[m("提交创建",-1)])]),_:1})])]),_:1},8,["data"])]))])}}}),_p=me(yp,[["__scopeId","data-v-af6238d0"]]),wp={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},kp={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8 transition-all duration-300 flex flex-col md:flex-row gap-8 lg:gap-12 min-h-[600px]"},$p={class:"w-full md:w-56 shrink-0 md:border-r border-dashed border-zinc-200/80 dark:border-zinc-700/60 md:pr-8 pb-4 md:pb-0 border-b md:border-b-0"},zp={class:"flex-1 min-w-0 flex flex-col relative"},Cp={key:0,class:"h-full flex flex-col"},Ap={class:"list-item-anim flex-1 pt-1"},Sp={class:"list-item-anim flex-1 pt-1"},Ip={class:"w-full sm:w-[32rem]"},Vp={key:1,class:"w-full bg-transparent p-4 mt-4 rounded-lg border border-[var(--color-primary)]/40"},Up={class:"text-sm font-bold text-[var(--td-text-color-primary)] mb-2 truncate"},Mp={key:2,class:"w-full bg-transparent p-4 mt-4 rounded-lg border border-[var(--color-primary)]/40 flex items-center justify-center"},Lp={key:3,class:"flex items-center gap-3 mt-4 p-3 bg-transparent rounded-lg border border-[var(--color-success)]/40 relative overflow-hidden group"},Bp={class:"flex-1 min-w-0"},Tp={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},Rp={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},jp={class:"flex items-center gap-1 shrink-0 opacity-0 group-hover:opacity-100 transition-opacity"},Pp={class:"list-item-anim flex-1 pt-1"},Ep={key:0},Dp={key:1},Fp={class:"w-full sm:w-[32rem]"},Op={key:0},Np={class:"w-full"},Kp={key:0,class:"flex items-center gap-3 mt-4 p-3 bg-transparent rounded-lg border border-[var(--color-primary)]/40 shadow-sm relative overflow-hidden group"},qp={class:"flex-1 min-w-0"},Hp={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},Wp={key:1,class:"mt-2"},Gp={class:"list-item-anim flex-1 pt-1"},Jp={class:"flex flex-col gap-2.5 mt-2"},Xp={class:"text-[11px] text-[var(--td-text-color-secondary)] mt-1 flex items-center gap-1 font-medium"},Qp={class:"w-full"},Yp={class:"w-full sm:w-[32rem] min-h-[70px] mt-2"},Zp={key:0},ev={key:1,class:"flex items-center gap-3"},tv={key:2},ov={key:3},av={class:"list-item-anim flex-1 pt-1"},sv={class:"grid grid-cols-1 sm:grid-cols-2 gap-x-6 gap-y-6 w-full sm:w-[40rem]"},lv={class:"flex items-center gap-2 w-full"},rv={class:"flex-1"},nv={class:"flex items-center gap-2 w-full"},iv={class:"flex-1"},dv={class:"list-item-anim flex-1 pt-1"},cv={class:"flex flex-col min-w-0 mb-8 pb-6 border-b border-zinc-200 dark:border-zinc-800"},uv={class:"text-3xl font-extrabold text-[var(--td-text-color-primary)] truncate tracking-tight"},mv={class:"text-sm text-[var(--td-text-color-secondary)] mt-2 flex items-center gap-1.5 truncate"},pv={class:"flex flex-col w-full"},vv={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},fv={class:"flex flex-col sm:items-end text-left sm:text-right"},bv={class:"flex items-center gap-2"},xv=["title"],gv={class:"text-[11px] text-zinc-500 mt-1"},hv={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},yv={class:"flex flex-col sm:items-end text-left sm:text-right"},_v={class:"flex items-center gap-2"},wv=["title"],kv={class:"text-[11px] text-zinc-500 mt-1 truncate"},$v={key:0},zv={key:1},Cv={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},Av={class:"flex flex-col sm:items-end text-left sm:text-right"},Sv={class:"flex items-center gap-2"},Iv={key:0,class:"text-sm font-bold text-[var(--td-text-color-primary)]"},Vv=["title"],Uv={key:0,class:"text-[11px] text-zinc-500 mt-1 truncate"},Mv={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},Lv={class:"flex items-center gap-3"},Bv={class:"text-sm font-bold text-[var(--color-primary)]"},Tv={class:"text-sm font-bold text-red-500 dark:text-red-400"},Rv={key:0,class:"flex flex-col sm:flex-row sm:items-start justify-between py-4"},jv={class:"text-xs font-mono text-[var(--td-text-color-secondary)] break-all leading-relaxed bg-zinc-50/50 dark:bg-zinc-800/30 p-2.5 rounded-lg border border-zinc-100 dark:border-zinc-800 text-left sm:text-right max-w-full sm:max-w-md"},Pv={class:"mt-auto pt-6 border-t border-zinc-200 dark:border-zinc-700 flex items-center justify-between"},Ev={key:1},Dv={key:1,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim"},Fv={class:"text-lg font-bold text-[var(--td-text-color-primary)] mb-2 tracking-tight"},Ov={class:"w-full max-w-lg !my-6"},Nv={class:"w-full max-w-2xl bg-white/40 dark:bg-zinc-900/40 rounded-2xl border border-white/60 dark:border-zinc-700/50 p-4 h-64 flex flex-col mt-6 shadow-[0_4px_12px_rgba(0,0,0,0.02)]"},Kv={class:"text-[var(--td-text-color-secondary)] mr-2"},qv={class:"text-[var(--td-text-color-primary)] font-medium"},Hv={key:2,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim min-h-[50vh] sm:min-h-[40vh]"},Wv={class:"flex gap-4"},Gv=de({__name:"PackageMode",setup(a){const s=Be(),r=y(null),d=At(),i=y(0),c=y(!1),f=y(!1),n=y(!1),v=y(0),I=y([]),u=y(null),R=y(null),b=y(null),A=y("online"),p=y(!1),k=y([]),g=y(!1),B=y(""),C=y(null),T=y(!1),U=y(0),D=y(""),N=y(""),P=y("online"),j=y([]),O=y([]),$=y(""),V=y(""),_=async(ie=!1)=>{try{ie&&M.info("正在刷新Java版本列表...");const G=await ga(s.userInfo.systemInfo.osType.toLowerCase().replace("os",""),s.userInfo.systemInfo.osArchitecture.toLowerCase());G&&Array.isArray(G)&&(j.value=G.map(pe=>({label:`Java ${pe}`,value:pe})),j.value.length>0&&!$.value&&($.value=j.value[1].value)),O.value=(await ha(ie)).map(pe=>({label:`Java ${pe.version}${pe.is64Bit?"":" (32位)"} (${pe.vendor} | ${pe.path})`,value:pe.path})),O.value.length>0&&(V.value=O.value[0].value),ie&&M.success("已刷新Java版本列表")}catch(G){M.warning("获取在线Java版本失败: "+G.message)}};ze(()=>{_()});const z=y({name:"新建整合包服务器",path:"",java:"",core:"",coreUrl:"",coreSha256:"",coreFileKey:"",packageFileKey:"",minM:2048,maxM:6144,args:""}),E=y("GB"),F=y("GB"),X=[{label:"MB",value:"MB"},{label:"GB",value:"GB"}],q=te({get:()=>E.value==="GB"?z.value.minM/1024:z.value.minM,set:ie=>{z.value.minM=E.value==="GB"?Math.round(ie*1024):ie}}),H=te({get:()=>F.value==="GB"?z.value.maxM/1024:z.value.maxM,set:ie=>{z.value.maxM=F.value==="GB"?Math.round(ie*1024):ie}});_e([P,$,V],([ie,G,pe])=>{ie==="env"?z.value.java="java":ie==="custom"||ie==="local"?z.value.java=pe:ie==="online"&&(z.value.java=G?`MSLX://Java/${G}`:""),z.value.java&&r.value?.validate({fields:["java"]})},{immediate:!0});const J=te(()=>({name:[{required:!0,message:"实例名称不能为空",trigger:"blur"}],packageFileKey:[{required:!0,message:"请上传整合包文件",trigger:"change"}],core:[{validator:ie=>{if(k.value.length>0){if(!ie)return{result:!1,message:"请选择一个启动Jar",type:"error"}}else{if(A.value==="online"&&!z.value.coreUrl)return{result:!1,message:"请选择服务端核心",type:"error"};if(A.value==="manual"&&!z.value.coreFileKey)return{result:!1,message:"请上传核心文件",type:"error"}}return!0},trigger:"change"}],java:[{required:!0,message:"请配置 Java 环境",trigger:"change"}],minM:[{required:!0,min:1,message:"必须大于0",trigger:"blur"}],maxM:[{required:!0,min:1,message:"必须大于0",trigger:"blur"}]})),ae=[["name","path"],["packageFileKey"],["core","coreUrl","coreFileKey"],["java"],["minM","maxM","args"],[]],le=()=>{i.value>0&&(i.value-=1)},fe=async()=>{if(i.value===1){if(!z.value.packageFileKey){M.warning("请先上传服务端整合包(Zip)");return}if(T.value||g.value){M.warning("请等待上传或分析完成");return}}if(i.value===2)if(k.value.length>0){if(!z.value.core){M.warning("请从列表中选择一个启动核心");return}}else{if(A.value==="online"&&(!z.value.coreUrl||!z.value.core)){M.warning("请选择一个服务端核心");return}if(A.value==="manual"&&!z.value.coreFileKey){M.warning("请上传核心文件");return}}const ie=await r.value.validate();if(ie===!0){i.value<5&&(i.value+=1);return}const G=new Set(ae[i.value]);Object.keys(ie).some(Ve=>G.has(Ve))?M.warning("请检查当前步骤的输入"):i.value<5&&(i.value+=1)},be=()=>{C.value?.click()},Se=ie=>{if(ie===0)return"0 B";const G=1024,pe=["B","KB","MB","GB"],Ve=Math.floor(Math.log(ie)/Math.log(G));return parseFloat((ie/Math.pow(G,Ve)).toFixed(2))+" "+pe[Ve]},Ee=async ie=>{const G=ie.target;if(!G.files||G.files.length===0)return;if(z.value.packageFileKey)try{await Mt(z.value.packageFileKey)}catch(Ve){console.error(Ve)}z.value.core="",k.value=[],B.value="";const pe=G.files[0];D.value=pe.name,N.value=Se(pe.size),await se(pe),G.value=""};let Y=null;const se=async ie=>{Y&&Y.abort(),Y=new AbortController,T.value=!0,U.value=0;const pe=ie.size>200*1024*1024?50*1024*1024:10*1024*1024,Ve=Math.ceil(ie.size/pe),Ce=4,Ue=5,we=new Map;let Ae=0;const Re=()=>{const Fe=Date.now();if(Fe-Ae<100)return;Ae=Fe;const Ze=Array.from(we.values()).reduce((Xe,ge)=>Xe+ge,0),ne=Math.min(Ze/ie.size*98,98);U.value=Number(ne.toFixed(1))};try{const Ze=(await qt()).uploadId;if(!Ze)throw new Error("无法获取上传凭证");const ne=Array.from({length:Ve},(je,lt)=>lt),Xe=async je=>{if(Y?.signal.aborted)throw new Error("已取消");const lt=je*pe,ke=Math.min(ie.size,lt+pe),wt=ie.slice(lt,ke);let vo;for(let Pt=1;Pt<=Ue;Pt++){if(Y?.signal.aborted)throw new Error("已取消");try{await Ht(Ze,je,wt,St=>{St&&St.loaded&&(we.set(je,St.loaded),Re())},Y?.signal),we.set(je,wt.size),Re();return}catch(St){vo=St,we.set(je,0),Re(),PtsetTimeout(Et,1e3*Pt))}}throw new Error(`分片 ${je} 失败: ${vo?.message}`)},ge=async()=>{for(;ne.length>0&&!Y?.signal.aborted;){const je=ne.shift();je!==void 0&&await Xe(je)}},et=Array(Math.min(Ce,Ve)).fill(null).map(()=>ge());if(await Promise.all(et),Y?.signal.aborted)throw new Error("已取消");U.value=99;const rt=(await Wt(Ze,Ve)).uploadId;U.value=100,z.value.packageFileKey=rt,M.success("上传成功,正在分析整合包内容..."),await De(rt)}catch(Fe){if(Fe.message==="已取消")return;Y?.abort(),console.error(Fe),M.error(`上传失败: ${Fe.message||"未知错误"}`),D.value="",U.value=0,z.value.packageFileKey&&(Mt(z.value.packageFileKey).catch(()=>{}),z.value.packageFileKey="")}finally{Y?.signal.aborted||(T.value=!1)}},De=async ie=>{g.value=!0;try{const G=await Bn(ie);k.value=G.jars||[],B.value=G.detectedRoot||"",G.count===1&&G.jars.length>0?(z.value.core=G.jars[0],M.success(`自动识别到服务端核心: ${G.jars[0]}`)):G.count>1?M.info(`整合包内检测到 ${G.count} 个服务端核心,请在下一步选择`):M.warning("未检测到整合包内存在服务端核心,请在下一步手动配置核心")}catch(G){M.error("整合包分析失败: "+G.message)}finally{g.value=!1}},Me=async()=>{z.value.packageFileKey&&(await Mt(z.value.packageFileKey),z.value.packageFileKey="",D.value="",k.value=[],z.value.core="",M.success("文件已移除"))},ee=ie=>{z.value.core=ie.filename,z.value.coreUrl=ie.url,z.value.coreSha256=ie.sha256,z.value.coreFileKey="",M.success(`已选择: ${ie.core} (${ie.version})`)},L=async()=>{if(await r.value.validate()!==!0){M.warning("请检查表单所有内容");return}c.value=!0,I.value=[];const G={...z.value,path:z.value.path||null,coreUrl:z.value.coreUrl||null,coreSha256:z.value.coreSha256||null,coreFileKey:z.value.coreFileKey||null,args:z.value.args||null};k.value.length>0?(G.coreUrl=null,G.coreSha256=null,G.coreFileKey=null):A.value==="manual"?(G.coreUrl=null,G.coreSha256=null):G.coreFileKey=null;try{const Ve=(await Mo(G)).serverId;if(!Ve)throw new Error("服务器未返回 ServerId");R.value=Ve.toString(),f.value=!0,i.value=6,await ce(R.value)}catch(pe){M.error(pe.message||"创建请求失败"),c.value=!1}},ce=async ie=>{const{baseUrl:G,token:pe}=s,Ve=new URL("/api/hubs/creationProgressHub",G||window.location.origin);Ve.searchParams.append("x-user-token",pe),u.value=new Ct().withUrl(Ve.toString(),{withCredentials:!1}).configureLogging(jt.Information).build(),u.value.on("StatusUpdate",(Ce,Ue,we)=>{Ce.toString()===ie&&(I.value.push({time:new Date().toLocaleTimeString(),message:Ue,progress:we}),yt(()=>{b.value&&(b.value.scrollTop=b.value.scrollHeight)}),we!==null&&we>=0&&(v.value=we),we===100?(M.success("服务器创建成功!"),u.value?.stop(),f.value=!1,n.value=!0,i.value=7,c.value=!1,d.refreshInstanceList()):we===-1&&(M.error(Ue||"错误"),u.value?.stop(),f.value=!1,c.value=!1,i.value=0))});try{await u.value.start(),await u.value.invoke("TrackServer",ie)}catch(Ce){console.error("SignalR Error",Ce)}};He(()=>{u.value?.stop()});const he=()=>{n.value=!1,i.value=0,z.value={name:"新建整合包服务器",path:"",java:"",core:"",coreUrl:"",coreSha256:"",coreFileKey:"",packageFileKey:"",minM:2048,maxM:6144,args:""},k.value=[],D.value="",A.value="online",P.value="online"};return(ie,G)=>{const pe=h("t-step-item"),Ve=h("t-steps"),Ce=h("t-input"),Ue=h("t-form-item"),we=h("t-alert"),Ae=h("t-icon"),Re=h("t-button"),Fe=h("t-progress"),Ze=h("t-loading"),ne=h("t-radio"),Xe=h("t-radio-group"),ge=h("t-radio-button"),et=h("t-select"),tt=h("t-input-number"),rt=h("t-textarea"),je=h("t-tag"),lt=h("t-form");return l(),x("div",wp,[e("div",kp,[e("div",$p,[t(Ve,{layout:"vertical",current:i.value,status:"process",readonly:"",class:"custom-steps !bg-transparent !mt-2"},{default:o(()=>[t(pe,{title:"基本信息",content:"填写实例名称"}),t(pe,{title:"上传整合包",content:"上传服务端 Zip 包"}),t(pe,{title:"核心配置",content:"确认启动的服务端核心"}),t(pe,{title:"Java 环境",content:"配置 Java 运行时"}),t(pe,{title:"资源配置",content:"设置内存参数"}),t(pe,{title:"确认信息",content:"核对并提交"}),t(pe,{title:"创建实例",content:"提交并等待解压"}),t(pe,{title:"完成",content:"查看结果"})]),_:1},8,["current"])]),e("div",zp,[!f.value&&!n.value?(l(),x("div",Cp,[t(lt,{ref_key:"formRef",ref:r,data:z.value,rules:J.value,"label-align":"top",class:"flex-1 flex flex-col [&_.t-form__item]:!mb-6",onSubmit:L},{default:o(()=>[Le(e("div",Ap,[t(Ue,{label:"实例名称",name:"name"},{default:o(()=>[t(Ce,{modelValue:z.value.name,"onUpdate:modelValue":G[0]||(G[0]=ke=>z.value.name=ke),placeholder:"为你的服务器起个名字",class:"!w-full sm:!w-[28rem]"},null,8,["modelValue"])]),_:1}),t(Ue,{label:"实例路径",name:"path",help:w(s).userInfo.systemInfo.docker?"您正在使用Docker容器部署,为保数据安全,仅支持使用默认数据路径":"选填,留空将使用默认路径"},{default:o(()=>[t(Ce,{modelValue:z.value.path,"onUpdate:modelValue":G[1]||(G[1]=ke=>z.value.path=ke),disabled:w(s).userInfo.systemInfo.docker,placeholder:"例如: D:\\MyServer",class:"!w-full sm:!w-[28rem] !font-mono"},null,8,["modelValue","disabled"])]),_:1},8,["help"])],512),[[Te,i.value===0]]),Le(e("div",Sp,[t(we,{theme:"info",class:"!mb-6 !rounded-xl"},{message:o(()=>[...G[19]||(G[19]=[m("请上传包含服务端文件的 ",-1),e("b",null,".zip",-1),m(" 压缩包。上传完成后系统将自动分析包内的服务端核心文件。",-1)])]),_:1}),t(Ue,{label:"上传服务端整合包 (Zip)",name:"packageFileKey",class:"!mb-0"},{default:o(()=>[e("div",Ip,[e("input",{ref_key:"uploadInputRef",ref:C,accept:".zip",type:"file",style:{display:"none"},onChange:Ee},null,544),!T.value&&!z.value.packageFileKey?(l(),W(Re,{key:0,variant:"outline",class:"!w-full !justify-start !pl-4 !h-10 !bg-transparent border-zinc-200 dark:border-zinc-700 hover:!border-[var(--color-primary)]",onClick:be},{icon:o(()=>[t(Ae,{name:"upload",class:"opacity-70"})]),default:o(()=>[G[20]||(G[20]=m(" 点击选择 Zip 文件并上传 ",-1))]),_:1})):K("",!0),T.value?(l(),x("div",Vp,[e("div",Up,"正在上传: "+S(D.value)+" ("+S(N.value)+")",1),t(Fe,{theme:"line",percentage:U.value},null,8,["percentage"]),G[21]||(G[21]=e("div",{class:"text-[11px] text-zinc-500 mt-2 text-center"},"别着急,喝杯咖啡☕️...",-1))])):K("",!0),!T.value&&g.value?(l(),x("div",Mp,[t(Ze,{text:"正在分析压缩包结构...",size:"small"})])):K("",!0),z.value.packageFileKey&&!T.value&&!g.value?(l(),x("div",Lp,[G[22]||(G[22]=e("div",{class:"absolute left-0 top-0 bottom-0 w-1 bg-[var(--color-success)] opacity-80"},null,-1)),t(Ae,{name:"folder-zip",class:"text-[var(--color-success)] text-xl shrink-0 ml-1"}),e("div",Bp,[e("div",Tp,S(D.value),1),e("div",Rp,S(k.value.length>0?`发现 ${k.value.length} 个服务端核心文件`:"未发现服务端核心文件")+" "+S(B.value?`| 根目录: /${B.value}`:""),1)]),e("div",jp,[t(Re,{shape:"square",variant:"text",theme:"primary",onClick:be},{default:o(()=>[t(Ae,{name:"swap"})]),_:1}),t(Re,{shape:"square",variant:"text",theme:"danger",class:"hover:!bg-red-500/10",onClick:Me},{default:o(()=>[t(Ae,{name:"delete"})]),_:1})])])):K("",!0)])]),_:1})],512),[[Te,i.value===1]]),Le(e("div",Pp,[k.value.length>0?(l(),x("div",Ep,[t(we,{theme:"success",class:"!mb-6 !rounded-xl !bg-[var(--color-success)]/10 !border-[var(--color-success)]/20"},{message:o(()=>[...G[23]||(G[23]=[m("我们在压缩包中发现了以下服务端核心文件,请选择哪一个作为",-1),e("b",null,"启动核心",-1),m("。",-1)])]),_:1}),t(Ue,{label:"选择启动核心",name:"core"},{default:o(()=>[t(Xe,{modelValue:z.value.core,"onUpdate:modelValue":G[2]||(G[2]=ke=>z.value.core=ke),class:"flex flex-col gap-3"},{default:o(()=>[(l(!0),x(re,null,xe(k.value,ke=>(l(),x("div",{key:ke,class:"flex items-center"},[t(ne,{value:ke,class:"!font-mono !text-sm"},{default:o(()=>[m(S(ke),1)]),_:2},1032,["value"])]))),128))]),_:1},8,["modelValue"])]),_:1})])):(l(),x("div",Dp,[t(we,{theme:"warning",class:"!mb-6 !rounded-xl !bg-amber-500/10 !border-amber-500/20"},{message:o(()=>[...G[24]||(G[24]=[m("在上传的包中未发现服务端核心文件。请在此处下载一个或等待创建后手动补充。",-1)])]),_:1}),t(Ue,{label:"补充服务端核心",class:"!mb-5"},{default:o(()=>[t(Xe,{modelValue:A.value,"onUpdate:modelValue":G[3]||(G[3]=ke=>A.value=ke),variant:"default-filled"},{default:o(()=>[t(ge,{value:"online"},{default:o(()=>[...G[25]||(G[25]=[m("在线下载核心",-1)])]),_:1}),t(ge,{disabled:"",value:"manual"},{default:o(()=>[...G[26]||(G[26]=[m("自行上传(不支持)",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),e("div",Fp,[A.value==="online"?(l(),x("div",Op,[t(Ue,{label:"选择服务端核心",name:"coreUrl",class:"!mb-0"},{default:o(()=>[e("div",Np,[t(Re,{variant:"outline",class:"!w-full !justify-start !pl-4 !h-10 !bg-transparent border-zinc-200 dark:border-zinc-700 hover:!border-[var(--color-primary)]",onClick:G[4]||(G[4]=ke=>p.value=!0)},{icon:o(()=>[t(Ae,{name:"cloud-download",class:"opacity-70"})]),default:o(()=>[G[27]||(G[27]=m(" 打开核心库 ",-1))]),_:1}),z.value.core?(l(),x("div",Kp,[G[29]||(G[29]=e("div",{class:"absolute left-0 top-0 bottom-0 w-1 bg-[var(--color-primary)] opacity-80"},null,-1)),t(Ae,{name:"check-circle-filled",class:"text-[var(--color-primary)] text-xl shrink-0 ml-1"}),e("div",qp,[e("div",Hp,S(z.value.core),1),G[28]||(G[28]=e("div",{class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},"将在创建时自动下载",-1))]),t(Re,{shape:"circle",variant:"text",theme:"danger",class:"shrink-0 hover:!bg-red-500/10 opacity-0 group-hover:opacity-100 transition-opacity",onClick:G[5]||(G[5]=ke=>{z.value.core="",z.value.coreUrl=""})},{default:o(()=>[t(Ae,{name:"close"})]),_:1})])):K("",!0)])]),_:1})])):K("",!0),A.value==="manual"?(l(),x("div",Wp,[G[30]||(G[30]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] mb-4"},"请在整合包解压后手动放入核心,或在此处不填写等待创建后手动上传。",-1)),t(we,{theme:"error",message:"此模式下建议确保压缩包内包含核心,或者使用在线下载功能。",class:"!rounded-xl"})])):K("",!0)])]))],512),[[Te,i.value===2]]),Le(e("div",Gp,[t(we,{theme:"info",title:"Java 版本选择指南",class:"!mb-6 !rounded-xl"},{message:o(()=>[e("div",Jp,[G[32]||(G[32]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 26.1 - 最新版本"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 25")],-1)),G[33]||(G[33]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.20.5 - 1.21.11"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 21")],-1)),G[34]||(G[34]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.18 - 1.20.4"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 17")],-1)),G[35]||(G[35]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.17 / 1.17.1"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 16")],-1)),G[36]||(G[36]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-zinc-100 dark:bg-zinc-800 text-zinc-600 dark:text-zinc-300 border border-zinc-200 dark:border-zinc-700 font-bold text-xs tracking-wide shadow-sm"},"MC 1.13 - 更低版本"),e("span",{class:"font-extrabold text-xs text-[var(--td-text-color-secondary)] bg-zinc-100 dark:bg-zinc-800 px-2.5 py-1 rounded-md border border-zinc-200 dark:border-zinc-700"},"Java 8")],-1)),e("div",Xp,[t(Ae,{name:"info-circle",size:"14px"}),G[31]||(G[31]=m(" 建议直接使用推荐版本,避免兼容性问题。 ",-1))])])]),_:1}),t(Ue,{label:"Java 来源",name:"java",class:"!mb-0"},{default:o(()=>[e("div",Qp,[t(Xe,{modelValue:P.value,"onUpdate:modelValue":G[6]||(G[6]=ke=>P.value=ke),variant:"default-filled",class:"!mb-4"},{default:o(()=>[t(ge,{value:"online"},{default:o(()=>[...G[37]||(G[37]=[m("在线下载",-1)])]),_:1}),t(ge,{value:"local"},{default:o(()=>[...G[38]||(G[38]=[m("本机 Java",-1)])]),_:1}),t(ge,{value:"env"},{default:o(()=>[...G[39]||(G[39]=[m("环境变量",-1)])]),_:1}),t(ge,{value:"custom"},{default:o(()=>[...G[40]||(G[40]=[m("自定义路径",-1)])]),_:1})]),_:1},8,["modelValue"]),e("div",Yp,[P.value==="online"?(l(),x("div",Zp,[t(et,{modelValue:$.value,"onUpdate:modelValue":G[7]||(G[7]=ke=>$.value=ke),options:j.value,placeholder:"请选择 Java 版本",class:"!w-full sm:!w-64"},null,8,["modelValue","options"])])):K("",!0),P.value==="local"?(l(),x("div",ev,[t(et,{modelValue:V.value,"onUpdate:modelValue":G[8]||(G[8]=ke=>V.value=ke),options:O.value,placeholder:"请选择 Java",class:"!flex-1"},null,8,["modelValue","options"]),t(Re,{variant:"text",onClick:G[9]||(G[9]=ke=>_(!0))},{default:o(()=>[...G[41]||(G[41]=[m("刷新",-1)])]),_:1})])):K("",!0),P.value==="env"?(l(),x("div",tv,[t(Ce,{"model-value":"java",readonly:"",disabled:"",class:"!font-mono !bg-zinc-100 dark:!bg-zinc-800/50"})])):K("",!0),P.value==="custom"?(l(),x("div",ov,[t(Ce,{modelValue:V.value,"onUpdate:modelValue":G[10]||(G[10]=ke=>V.value=ke),placeholder:"C:\\Path\\To\\java.exe",class:"!font-mono"},null,8,["modelValue"])])):K("",!0)])])]),_:1})],512),[[Te,i.value===3]]),Le(e("div",av,[e("div",sv,[t(Ue,{label:"最小内存",name:"minM",class:"!mb-0"},{default:o(()=>[e("div",lv,[e("div",rv,[t(tt,{modelValue:q.value,"onUpdate:modelValue":G[11]||(G[11]=ke=>q.value=ke),min:0,"decimal-places":E.value==="GB"?1:0,placeholder:"Xms",theme:"column",class:"!w-full"},null,8,["modelValue","decimal-places"])]),t(et,{modelValue:E.value,"onUpdate:modelValue":G[12]||(G[12]=ke=>E.value=ke),options:X,clearable:!1,class:"!w-20 shrink-0"},null,8,["modelValue"])])]),_:1}),t(Ue,{label:"最大内存",name:"maxM",class:"!mb-0"},{default:o(()=>[e("div",nv,[e("div",iv,[t(tt,{modelValue:H.value,"onUpdate:modelValue":G[13]||(G[13]=ke=>H.value=ke),min:0,"decimal-places":F.value==="GB"?1:0,placeholder:"Xmx",theme:"column",class:"!w-full"},null,8,["modelValue","decimal-places"])]),t(et,{modelValue:F.value,"onUpdate:modelValue":G[14]||(G[14]=ke=>F.value=ke),options:X,clearable:!1,class:"!w-20 shrink-0"},null,8,["modelValue"])])]),_:1})]),t(Ue,{label:"JVM 参数",name:"args",class:"!mt-8 w-full sm:w-[40rem]"},{default:o(()=>[t(rt,{modelValue:z.value.args,"onUpdate:modelValue":G[15]||(G[15]=ke=>z.value.args=ke),placeholder:"-XX:+UseG1GC",autosize:{minRows:3,maxRows:6},class:"!font-mono !bg-transparent"},null,8,["modelValue"])]),_:1})],512),[[Te,i.value===4]]),Le(e("div",dv,[e("div",cv,[e("div",uv,S(z.value.name),1),e("div",mv,[t(Ae,{name:"folder-open",class:"opacity-70"}),m(" "+S(z.value.path||"默认数据路径 (/DaemonData/Servers)"),1)])]),e("div",pv,[e("div",vv,[G[43]||(G[43]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"服务端整合包",-1)),e("div",fv,[e("div",bv,[e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]",title:D.value},S(D.value),9,xv),t(je,{theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...G[42]||(G[42]=[m("ZIP",-1)])]),_:1})]),e("div",gv,"大小: "+S(N.value||"未知"),1)])]),e("div",hv,[G[47]||(G[47]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"启动核心 (Jar)",-1)),e("div",yv,[e("div",_v,[e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]",title:z.value.core},S(z.value.core),9,wv),k.value.length>0?(l(),W(je,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...G[44]||(G[44]=[m("整合包内核心",-1)])]),_:1})):A.value==="online"?(l(),W(je,{key:1,theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...G[45]||(G[45]=[m("在线下载",-1)])]),_:1})):(l(),W(je,{key:2,theme:"warning",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...G[46]||(G[46]=[m("手动配置",-1)])]),_:1}))]),e("div",kv,[k.value.length>0?(l(),x("span",$v,"已从压缩包中选定启动文件")):A.value==="online"?(l(),x("span",zv,"来源: MSL 镜像源 ("+S(z.value.coreUrl?"已匹配":"未匹配")+")",1)):K("",!0)])])]),e("div",Cv,[G[51]||(G[51]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"Java 运行时",-1)),e("div",Av,[e("div",Sv,[P.value==="online"?(l(),x("span",Iv,"Java "+S($.value),1)):(l(),x("span",{key:1,class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]",title:z.value.java},S(z.value.java),9,Vv)),P.value==="online"?(l(),W(je,{key:2,theme:"success",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...G[48]||(G[48]=[m("自动安装",-1)])]),_:1})):P.value==="local"?(l(),W(je,{key:3,theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...G[49]||(G[49]=[m("本机环境",-1)])]),_:1})):(l(),W(je,{key:4,theme:"default",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...G[50]||(G[50]=[m("自定义",-1)])]),_:1}))]),P.value==="online"?(l(),x("div",Uv,"将自动从镜像源下载并解压 JDK")):K("",!0)])]),e("div",Mv,[G[52]||(G[52]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"内存分配 (JVM)",-1)),e("div",Lv,[e("span",Bv,"初始 (Xms): "+S(q.value)+" "+S(E.value),1),t(Ae,{name:"arrow-right",class:"text-zinc-300 dark:text-zinc-600"}),e("span",Tv,"最大 (Xmx): "+S(H.value)+" "+S(F.value),1)])]),z.value.args?(l(),x("div",Rv,[G[53]||(G[53]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-2 sm:mb-0 shrink-0 mt-1"},"启动参数",-1)),e("div",jv,S(z.value.args),1)])):K("",!0)]),t(we,{theme:"info",class:"!mt-8 !rounded-xl !bg-[var(--color-primary)]/5 !border-[var(--color-primary)]/20"},{message:o(()=>[...G[54]||(G[54]=[m("确认无误后点击下方 ",-1),e("strong",{class:"text-[var(--color-primary)] mx-1"},"提交创建",-1),m(",系统自动部署服务端。",-1)])]),_:1})],512),[[Te,i.value===5]]),e("div",Pv,[i.value>0&&i.value<6?(l(),W(Re,{key:0,theme:"default",onClick:le},{default:o(()=>[...G[55]||(G[55]=[m("上一步",-1)])]),_:1})):(l(),x("div",Ev)),G[58]||(G[58]=m()),i.value<5?(l(),W(Re,{key:2,type:"button",theme:"primary",loading:T.value||g.value,onClick:fe},{default:o(()=>[...G[56]||(G[56]=[m("下一步",-1)])]),_:1},8,["loading"])):K("",!0),i.value===5?(l(),W(Re,{key:3,theme:"primary",type:"submit",loading:c.value},{default:o(()=>[...G[57]||(G[57]=[m("提交创建",-1)])]),_:1},8,["loading"])):K("",!0)])]),_:1},8,["data","rules"])])):K("",!0),f.value?(l(),x("div",Dv,[e("div",Fv,"正在创建整合包实例 ("+S(R.value)+")",1),G[59]||(G[59]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] mb-6"},"正在解压文件并配置环境...",-1)),e("div",Ov,[t(Fe,{theme:"plump",percentage:v.value,label:`${v.value.toFixed(2)}%`},null,8,["percentage","label"])]),e("div",Nv,[e("div",{ref_key:"logContainerRef",ref:b,class:"flex-1 overflow-y-auto custom-scrollbar pr-2"},[(l(!0),x(re,null,xe(I.value,(ke,wt)=>(l(),x("div",{key:wt,class:"text-xs font-mono mb-2 leading-relaxed"},[e("span",Kv,"["+S(ke.time)+"]",1),e("span",qv,S(ke.message),1)]))),128))],512)])])):K("",!0),n.value?(l(),x("div",Hv,[t(Ae,{name:"check-circle",size:"64px",class:"text-[var(--color-success)]"}),G[62]||(G[62]=e("div",{class:"text-xl text-[var(--td-text-color-primary)] text-center font-medium leading-[22px] !mt-4"}," 整合包服务器已部署成功 ",-1)),G[63]||(G[63]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] leading-[22px] !my-2 !mb-8"}," 文件已解压,环境已配置就绪 ",-1)),e("div",Wv,[t(Re,{onClick:G[16]||(G[16]=()=>{he(),w(Ie)("/instance/list")})},{default:o(()=>[...G[60]||(G[60]=[m("返回服务端列表",-1)])]),_:1}),t(Re,{theme:"default",onClick:G[17]||(G[17]=()=>{he(),w(Ie)(`/instance/console/${R.value}`)})},{default:o(()=>[...G[61]||(G[61]=[m("前往控制台",-1)])]),_:1})])])):K("",!0)])]),t(xa,{visible:p.value,"onUpdate:visible":G[18]||(G[18]=ke=>p.value=ke),onConfirm:ee},null,8,["visible"])])}}}),Jv=me(Gv,[["__scopeId","data-v-bfac10be"]]),Xv={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},Qv={key:0,class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-12 transition-all duration-300 flex flex-col items-center justify-center min-h-[500px] list-item-anim"},Yv={class:"p-6 bg-zinc-50 dark:bg-zinc-900/50 rounded-2xl border border-zinc-200 dark:border-zinc-800 w-full max-w-lg"},Zv={class:"font-bold text-[var(--td-text-color-primary)] mb-2 flex items-center gap-2"},e0={key:1,class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8 transition-all duration-300 flex flex-col md:flex-row gap-8 lg:gap-12 min-h-[600px]"},t0={class:"w-full md:w-56 shrink-0 md:border-r border-dashed border-zinc-200/80 dark:border-zinc-700/60 md:pr-8 pb-4 md:pb-0 border-b md:border-b-0"},o0={class:"flex-1 min-w-0 flex flex-col relative"},a0={key:0,class:"h-full flex flex-col"},s0={class:"list-item-anim flex-1 pt-1"},l0={class:"flex items-center gap-3"},r0={class:"list-item-anim flex-1 pt-1"},n0={class:"text-[12px] mt-1 text-zinc-600 dark:text-zinc-400"},i0={class:"w-full sm:w-[28rem]"},d0={class:"list-item-anim flex-1 pt-1"},c0={class:"list-item-anim flex-1 pt-1"},u0={class:"flex flex-col min-w-0 mb-8 pb-6 border-b border-zinc-200 dark:border-zinc-800"},m0={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] truncate tracking-tight"},p0={class:"text-sm text-[var(--td-text-color-secondary)] mt-2 flex items-center gap-1.5 truncate"},v0={class:"flex flex-col w-full"},f0={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},b0={class:"flex flex-col sm:items-end text-left sm:text-right"},x0={class:"flex items-center gap-2"},g0={class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]"},h0={class:"flex flex-col sm:flex-row sm:items-start justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},y0={class:"text-xs font-mono text-[var(--td-text-color-secondary)] break-all leading-relaxed bg-zinc-50/50 dark:bg-zinc-800/30 p-2.5 rounded-lg border border-zinc-100 dark:border-zinc-800 text-left sm:text-right max-w-full sm:max-w-md"},_0={class:"mt-auto pt-6 border-t border-zinc-200 dark:border-zinc-700 flex items-center justify-between"},w0={key:1},k0={key:1,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim"},$0={class:"text-lg font-bold text-[var(--td-text-color-primary)] mb-2 tracking-tight"},z0={class:"w-full max-w-lg !my-6"},C0={class:"w-full max-w-2xl bg-white/40 dark:bg-zinc-900/40 rounded-2xl border border-white/60 dark:border-zinc-700/50 p-4 h-64 flex flex-col mt-6 shadow-[0_4px_12px_rgba(0,0,0,0.02)]"},A0={class:"text-[var(--td-text-color-secondary)] mr-2"},S0={class:"text-[var(--td-text-color-primary)] font-medium"},I0={key:2,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim min-h-[50vh] sm:min-h-[40vh]"},V0={class:"text-xl text-[var(--td-text-color-primary)] text-center font-medium leading-[22px] !mt-4"},U0={class:"flex gap-4"},M0=de({__name:"BedrockMode",setup(a){const s=Be(),r=y(null),d=At(),i=te(()=>s.userInfo.systemInfo.osType?.toLowerCase()||""),c=te(()=>i.value.includes("mac")),f=te(()=>i.value.includes("window")),n=y(0),v=y(!1),I=y(!1),u=y(!1),R=y(0),b=y([]),A=y(null),p=y(null),k=y(null),g=y([]),B=y(""),C=y(!1),T=y({name:"新建基岩版服务器",path:"",java:"none",core:"none",coreUrl:"",coreSha256:"",coreFileKey:"",packageFileKey:"",packageUrl:"",packageSha256:"",minM:1027,maxM:1027,args:"",ignoreEula:!0}),U=async()=>{if(!c.value){C.value=!0;try{const z=(await fa("bedrock-server")).versions||[];let E=[];f.value?E=z.filter(F=>F.includes("win-")):E=z.filter(F=>F.includes("linux-")),g.value=E.map(F=>({label:F,value:F})),g.value.length>0&&(B.value=g.value[0].value)}catch(_){M.warning("获取基岩版版本列表失败: "+_.message)}finally{C.value=!1}}};ze(()=>{T.value.args=f.value?"bedrock_server.exe":"./bedrock_server",U()});const D=te(()=>({name:[{required:!0,message:"实例名称不能为空",trigger:"blur"}],args:[{required:!0,message:"请输入启动指令",trigger:"blur"}]})),N=[["name","path"],[],["args"],[]],P=()=>{n.value>0&&(n.value-=1)},j=async()=>{if(n.value===1){if(!B.value){M.warning("请选择一个基岩版服务端版本");return}try{v.value=!0;const F=await ba("bedrock-server",B.value);T.value.packageUrl=F.url,T.value.packageSha256=F.sha256,v.value=!1}catch(F){v.value=!1,M.error("获取版本下载信息失败: "+F.message);return}}const _=await r.value.validate();if(_===!0){n.value<3&&(n.value+=1);return}const z=new Set(N[n.value]);Object.keys(_).some(F=>z.has(F))?M.warning("请检查当前步骤的输入"):n.value<3&&(n.value+=1)},O=async()=>{if(await r.value.validate()!==!0){M.warning("请检查表单所有内容");return}v.value=!0,b.value=[];const z={...T.value,path:T.value.path||null};try{const F=(await Mo(z)).serverId;if(!F)throw new Error("服务器未返回 ServerId");p.value=F.toString(),I.value=!0,n.value=4,await $(p.value)}catch(E){const F=E.message||"创建请求失败,请检查网络或后端服务";M.error(F),v.value=!1}},$=async _=>{const{baseUrl:z,token:E}=s;let F=!1;const X=new URL("/api/hubs/creationProgressHub",z||window.location.origin);X.searchParams.append("x-user-token",E),A.value=new Ct().withUrl(X.toString(),{withCredentials:!1}).configureLogging(jt.Information).build();const q=(H,J=null)=>{b.value.push({time:new Date().toLocaleTimeString(),message:H,progress:J}),yt(()=>{k.value&&(k.value.scrollTop=k.value.scrollHeight)})};A.value.on("StatusUpdate",(H,J,ae)=>{H.toString()===_&&(q(J,ae),ae!==null&&ae>=0&&(R.value=ae),ae===100?(F=!0,M.success("服务器创建成功!"),A.value?.stop(),I.value=!1,u.value=!0,n.value=5,v.value=!1,d.refreshInstanceList()):ae===-1&&(M.error(J||"创建过程中发生未知错误"),A.value?.stop(),I.value=!1,v.value=!1,n.value=0))});try{await A.value.start(),q("已连接到实时进度服务..."),await A.value.invoke("TrackServer",_),q("已订阅任务,等待服务器响应...")}catch(H){F||(q(`SignalR 连接失败: ${H.message}`,-1),M.error("无法连接到实时进度服务"),I.value=!1,v.value=!1,n.value=0)}};He(()=>{A.value?.stop()});const V=()=>{u.value=!1,n.value=0,T.value={...T.value,name:"新建基岩版服务器",path:"",args:f.value?"bedrock_server.exe":"./bedrock_server",packageUrl:"",packageSha256:""}};return(_,z)=>{const E=h("t-icon"),F=h("t-button"),X=h("t-step-item"),q=h("t-steps"),H=h("t-input"),J=h("t-form-item"),ae=h("t-switch"),le=h("t-alert"),fe=h("t-select"),be=h("t-textarea"),Se=h("t-tag"),Ee=h("t-form"),Y=h("t-progress");return l(),x("div",Xv,[c.value?(l(),x("div",Qv,[t(E,{name:"error-circle",size:"64px",class:"text-[var(--color-warning)] mb-6"}),z[10]||(z[10]=e("div",{class:"text-2xl font-bold text-[var(--td-text-color-primary)] mb-4"},"暂不支持 macOS 原生运行基岩版服务端",-1)),z[11]||(z[11]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] max-w-lg text-center leading-relaxed mb-8"}," 抱歉,由于基岩版官方服务端仅提供 Windows 和 Linux 平台的支持,您当前的 macOS 系统无法直接原生运行。 ",-1)),e("div",Yv,[e("div",Zv,[t(E,{name:"lightbulb",class:"text-[var(--color-primary)]"}),z[7]||(z[7]=m(" 备用方案推荐 ",-1))]),z[9]||(z[9]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] mb-4"}," 如果您使用的是 macOS,我们强烈建议您通过 Docker 运行 MSLX,借助 Docker 的 Linux 虚拟化环境来部署基岩版服务端。 ",-1)),t(F,{tag:"a",href:"https://mslx.mslmc.cn/docs/install/docker/",target:"_blank",theme:"primary",variant:"outline",class:"!w-full"},{default:o(()=>[...z[8]||(z[8]=[m(" 查看 Docker 部署文档 ",-1)])]),_:1})])])):(l(),x("div",e0,[e("div",t0,[t(q,{layout:"vertical",current:n.value,status:"process",readonly:"",class:"custom-steps !bg-transparent !mt-2"},{default:o(()=>[t(X,{title:"基本信息",content:"填写实例名称和路径"}),t(X,{title:"服务端版本",content:"选择官方基岩版核心"}),t(X,{title:"启动配置",content:"设置启动指令与参数"}),t(X,{title:"确认信息",content:"核对并提交"}),t(X,{title:"部署实例",content:"提交并等待创建"}),t(X,{title:"完成",content:"查看创建结果"})]),_:1},8,["current"])]),e("div",o0,[!I.value&&!u.value?(l(),x("div",a0,[t(Ee,{ref_key:"formRef",ref:r,data:T.value,rules:D.value,"label-align":"top",class:"flex-1 flex flex-col [&_.t-form__item]:!mb-6",onSubmit:O},{default:o(()=>[Le(e("div",s0,[t(J,{label:"实例名称",name:"name"},{default:o(()=>[t(H,{modelValue:T.value.name,"onUpdate:modelValue":z[0]||(z[0]=se=>T.value.name=se),placeholder:"为你的服务器起个名字",class:"!w-full sm:!w-[28rem]"},null,8,["modelValue"])]),_:1}),t(J,{label:"实例路径 (可选)",name:"path",help:w(s).userInfo.systemInfo.docker?"您正在使用Docker容器部署,为保数据安全,仅支持使用默认数据路径":"选填,留空将使用默认路径"},{default:o(()=>[t(H,{modelValue:T.value.path,"onUpdate:modelValue":z[1]||(z[1]=se=>T.value.path=se),disabled:w(s).userInfo.systemInfo.docker,placeholder:"例如: D:\\BedrockServer",class:"!w-full sm:!w-[28rem] !font-mono"},null,8,["modelValue","disabled"])]),_:1},8,["help"]),t(J,{label:"忽略 EULA 提示 (基岩版请保持本功能开启)",name:"ignoreEula"},{default:o(()=>[e("div",l0,[t(ae,{modelValue:T.value.ignoreEula,"onUpdate:modelValue":z[2]||(z[2]=se=>T.value.ignoreEula=se),size:"large"},null,8,["modelValue"]),e("span",{class:ue(["text-sm font-bold transition-colors",T.value.ignoreEula?"text-[var(--color-primary)]":"text-[var(--td-text-color-secondary)]"])},S(T.value.ignoreEula?"已开启":"已关闭"),3)])]),_:1})],512),[[Te,n.value===0]]),Le(e("div",r0,[t(le,{theme:"info",title:"基岩版服务端说明",class:"!mb-6 !rounded-xl"},{message:o(()=>[e("div",n0," MSLX 将为您自动拉取官方 Bedrock Server,并根据您的系统架构提供对应的可用版本(当前系统: "+S(i.value)+")。 ",1)]),_:1}),t(J,{label:"选择服务端版本",name:"selectedVersion"},{default:o(()=>[e("div",i0,[t(fe,{modelValue:B.value,"onUpdate:modelValue":z[3]||(z[3]=se=>B.value=se),options:g.value,loading:C.value,placeholder:"请选择基岩版版本",class:"!w-full",filterable:""},null,8,["modelValue","options","loading"])])]),_:1})],512),[[Te,n.value===1]]),Le(e("div",d0,[t(J,{label:"启动指令",name:"args",class:"w-full sm:!w-[40rem]"},{help:o(()=>[...z[12]||(z[12]=[e("span",{class:"text-[11px] text-zinc-500 mt-1 inline-block"}," 已为您自动匹配启动指令,非必要请勿修改哦~ ",-1)])]),default:o(()=>[t(be,{modelValue:T.value.args,"onUpdate:modelValue":z[4]||(z[4]=se=>T.value.args=se),placeholder:"例如: bedrock_server.exe 或 ./bedrock_server",autosize:{minRows:3,maxRows:6},class:"code-font-textarea !bg-zinc-50/50 dark:!bg-zinc-900/30 !rounded-xl !font-mono"},null,8,["modelValue"])]),_:1})],512),[[Te,n.value===2]]),Le(e("div",c0,[e("div",u0,[e("div",m0,S(T.value.name),1),e("div",p0,[t(E,{name:"folder-open",class:"opacity-70"}),m(" "+S(T.value.path||"默认数据路径 (/DaemonData/Servers)"),1)])]),e("div",v0,[e("div",f0,[z[14]||(z[14]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"服务端核心",-1)),e("div",b0,[e("div",x0,[e("span",g0,"基岩版 "+S(B.value),1),t(Se,{theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...z[13]||(z[13]=[m("在线下载",-1)])]),_:1})])])]),e("div",h0,[z[15]||(z[15]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-2 sm:mb-0 shrink-0 mt-1"},"启动指令",-1)),e("div",y0,S(T.value.args),1)])]),t(le,{theme:"info",class:"!mt-8 !rounded-xl !bg-[var(--color-primary)]/5 !border-[var(--color-primary)]/20"},{message:o(()=>[...z[16]||(z[16]=[m("确认无误后点击下方 ",-1),e("strong",{class:"text-[var(--color-primary)] mx-1"},"提交创建",-1),m(",系统将自动开始下载资源并部署基岩版实例。",-1)])]),_:1})],512),[[Te,n.value===3]]),e("div",_0,[n.value>0&&n.value<4?(l(),W(F,{key:0,theme:"default",onClick:P},{default:o(()=>[...z[17]||(z[17]=[m("上一步",-1)])]),_:1})):(l(),x("div",w0)),n.value<3?(l(),W(F,{key:2,theme:"primary",type:"button",loading:v.value,onClick:j},{default:o(()=>[...z[18]||(z[18]=[m("下一步",-1)])]),_:1},8,["loading"])):K("",!0),n.value===3?(l(),W(F,{key:3,theme:"primary",type:"submit",loading:v.value},{default:o(()=>[...z[19]||(z[19]=[m("提交创建",-1)])]),_:1},8,["loading"])):K("",!0)])]),_:1},8,["data","rules"])])):K("",!0),I.value?(l(),x("div",k0,[e("div",$0," 正在创建实例 ("+S(p.value)+") ",1),z[20]||(z[20]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] mb-6"}," 请勿关闭此页面,下载与创建过程可能需要几分钟... ",-1)),e("div",z0,[t(Y,{theme:"plump",percentage:R.value,label:`${R.value.toFixed(2)}%`},null,8,["percentage","label"])]),e("div",C0,[e("div",{ref_key:"logContainerRef",ref:k,class:"flex-1 overflow-y-auto custom-scrollbar pr-2"},[(l(!0),x(re,null,xe(b.value,(se,De)=>(l(),x("div",{key:De,class:"text-xs font-mono mb-2 leading-relaxed"},[e("span",A0,"["+S(se.time)+"]",1),e("span",S0,S(se.message),1)]))),128))],512)])])):K("",!0),u.value?(l(),x("div",I0,[t(E,{name:"check-circle",size:"64px",class:"text-[var(--color-success)]"}),e("div",V0," 基岩版服务器 ("+S(p.value)+") 已创建成功 ",1),z[23]||(z[23]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] leading-[22px] !my-2 !mb-8"}," 你现在可以去服务器列表启动它了 ",-1)),e("div",U0,[t(F,{onClick:z[5]||(z[5]=()=>{V(),w(Ie)("/instance/list")})},{default:o(()=>[...z[21]||(z[21]=[m("返回服务端列表",-1)])]),_:1}),t(F,{theme:"default",onClick:z[6]||(z[6]=()=>{V(),w(Ie)(`/instance/console/${p.value}`)})},{default:o(()=>[...z[22]||(z[22]=[m("前往控制台",-1)])]),_:1})])])):K("",!0)])]))])}}}),L0=me(M0,[["__scopeId","data-v-d33adaae"]]),B0={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},T0={class:"design-card list-item-anim flex flex-col sm:flex-row sm:items-center justify-between gap-5 p-5 sm:p-6 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left",style:{"animation-delay":"0s"}},R0={class:"flex items-center shrink-0"},j0={class:"relative w-full"},P0={class:"list-item-anim",style:{"animation-delay":"0.1s"}},E0={class:"list-item-anim",style:{"animation-delay":"0.1s"}},D0={class:"list-item-anim",style:{"animation-delay":"0.1s"}},F0={class:"list-item-anim",style:{"animation-delay":"0.1s"}},O0=de({__name:"index",setup(a){const s=y(1);return(r,d)=>{const i=h("t-radio-button"),c=h("t-radio-group");return l(),x("div",B0,[e("div",T0,[d[5]||(d[5]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex flex-col"},[e("h2",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none tracking-tight"}," 创建服务端实例 "),e("span",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 font-medium"},"选择适合您的部署模式,快速建立或深度定制您的 Minecraft 服务器")])],-1)),e("div",R0,[t(c,{modelValue:s.value,"onUpdate:modelValue":d[0]||(d[0]=f=>s.value=f),variant:"default-filled"},{default:o(()=>[t(i,{value:1},{default:o(()=>[...d[1]||(d[1]=[m("快速模式",-1)])]),_:1}),t(i,{value:2},{default:o(()=>[...d[2]||(d[2]=[m("上传整合包",-1)])]),_:1}),t(i,{value:3},{default:o(()=>[...d[3]||(d[3]=[m("基岩版",-1)])]),_:1}),t(i,{value:10},{default:o(()=>[...d[4]||(d[4]=[m("自定义模式",-1)])]),_:1})]),_:1},8,["modelValue"])])]),e("div",j0,[Le(e("div",P0,[t(mp)],512),[[Te,s.value===1]]),Le(e("div",E0,[t(Jv)],512),[[Te,s.value===2]]),Le(e("div",D0,[t(L0)],512),[[Te,s.value===3]]),Le(e("div",F0,[t(_p)],512),[[Te,s.value===10]])])])}}}),N0=me(O0,[["__scopeId","data-v-5d3f8bde"]]),K0=Object.freeze(Object.defineProperty({__proto__:null,default:N0},Symbol.toStringTag,{value:"Module"})),q0={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},H0={class:"design-card flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left"},W0={class:"flex items-center gap-3"},G0={class:"relative min-h-[400px]"},J0={key:0,class:"flex justify-center items-center py-24"},X0={key:1,class:"flex flex-col gap-5"},Q0={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 pb-0 border-b-0"},Y0={class:"flex flex-col sm:flex-row sm:items-center gap-3"},Z0={class:"flex items-center gap-3"},ef={class:"text-base font-bold text-[var(--td-text-color-primary)] flex items-center gap-2 m-0 tracking-tight"},tf={class:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-zinc-100 dark:bg-zinc-800 text-xs text-[var(--td-text-color-secondary)] font-medium border border-[var(--td-component-border)]"},of={class:"flex items-center gap-2 mt-2 sm:mt-0"},af={class:"mx-5 mt-4 bg-zinc-50/80 dark:bg-zinc-800/50 rounded-xl border border-[var(--td-component-border)] overflow-hidden transition-all"},sf=["onClick"],lf={class:"p-5 pt-4"},rf={key:0,class:"flex flex-col gap-3"},nf={key:0,class:"flex items-center gap-3 p-2 px-4 bg-red-500/10 border border-red-500/20 rounded-xl mb-1 transition-all"},df={class:"text-xs font-medium text-red-600 dark:text-red-400"},cf={class:"flex items-center gap-2"},uf=["title"],mf={class:"flex items-center gap-1"},pf={key:1,class:"flex flex-col items-center justify-center py-10"},vf={key:2,class:"flex flex-col items-center justify-center py-24 bg-white/40 dark:bg-zinc-800/40 rounded-2xl border-2 border-dashed border-[var(--td-component-border)]"},ff=de({__name:"index",setup(a){const s=y(!1),r=y([]),d=y(new Set),i=y({}),c=[{colKey:"row-select",type:"multiple",width:30,fixed:"left"},{colKey:"fileName",title:"文件名",ellipsis:!0},{colKey:"fileSizeStr",title:"大小",width:100},{colKey:"createTime",title:"创建时间",width:180},{colKey:"op",title:"操作",width:140,fixed:"right"}],f=te(()=>[...r.value].sort((k,g)=>{const B=k.backups&&k.backups.length>0,C=g.backups&&g.backups.length>0;return B&&!C?-1:!B&&C?1:k.id-g.id})),n=async()=>{s.value=!0;try{const p=await ui();r.value=p||[]}catch(p){M.error("获取备份列表失败"),console.error(p)}finally{s.value=!1}},v=p=>{d.value.has(p)?d.value.delete(p):d.value.add(p)},I=(p,k)=>{const g=Zo(p,k);window.open(g,"_blank")},u=async(p,k)=>{const g=Ke.confirm({header:"确认删除",body:`确定要删除选中的 ${k.length} 个备份文件吗?此操作不可恢复。`,theme:"danger",onConfirm:async()=>{g.hide();const B=M.loading("正在删除中...");try{const C=k.map(T=>Yo(p,T));await Promise.all(C),M.success("删除成功"),i.value[p]&&(i.value[p]=[]),await n()}catch(C){M.error("部分文件删除失败,请重试 "+C.message)}finally{M.close(B)}}})},R=(p,k)=>{u(p,[k])},b=p=>{const k=i.value[p];if(!k||k.length===0){M.warning("请先选择要删除的文件");return}u(p,k)},A=(p,{_row:k},g)=>{i.value={...i.value,[g]:p}};return ze(()=>{n()}),(p,k)=>{const g=h("t-button"),B=h("t-loading"),C=h("t-tag"),T=h("t-table"),U=h("t-empty");return l(),x("div",q0,[e("div",H0,[k[1]||(k[1]=e("div",{class:"flex flex-col gap-1 items-start"},[e("h2",{class:"text-lg font-bold tracking-tight text-[var(--td-text-color-primary)] m-0"},"实例备份管理"),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"}," 管理所有服务器实例的本地备份文件 ")],-1)),e("div",W0,[t(g,{variant:"dashed",loading:s.value,onClick:n},{icon:o(()=>[t(w(Pe))]),default:o(()=>[k[0]||(k[0]=m(" 刷新列表 ",-1))]),_:1},8,["loading"])])]),e("div",G0,[s.value&&r.value.length===0?(l(),x("div",J0,[t(B,{text:"加载数据中...",size:"small"})])):f.value.length>0?(l(),x("div",X0,[(l(!0),x(re,null,xe(f.value,(D,N)=>(l(),x("div",{key:D.id,class:"list-item-anim",style:Oe({animationDelay:`${N*.05}s`})},[e("div",{class:ue(["design-card flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300 hover:border-[var(--color-primary)]/30",{"opacity-80":!D.backups?.length}])},[e("div",Q0,[e("div",Y0,[t(C,{theme:"primary",variant:"light",shape:"round",class:"!px-3 !font-mono font-bold tracking-wider"},{default:o(()=>[m("ID: "+S(D.id),1)]),_:2},1024),e("div",Z0,[e("h3",ef,[t(w(st),{class:"text-[var(--td-text-color-secondary)] shrink-0"}),m(" "+S(D.name),1)]),e("span",tf,[t(w(bt),{size:"14px",class:"opacity-80"}),m(" "+S(D.core),1)])])]),e("div",of,[D.backups?.length?(l(),W(C,{key:0,theme:"success",variant:"light",shape:"round",class:"!px-3 !font-medium"},{default:o(()=>[m(S(D.backups.length)+" 个备份 ",1)]),_:2},1024)):(l(),W(C,{key:1,theme:"default",variant:"light",shape:"round",class:"!px-3 !text-zinc-400 !bg-zinc-100 dark:!bg-zinc-800"},{default:o(()=>[...k[2]||(k[2]=[m("无备份",-1)])]),_:1}))])]),e("div",af,[e("div",{class:"flex items-center gap-2 p-2.5 px-4 cursor-pointer text-[var(--td-text-color-secondary)] hover:text-zinc-800 dark:hover:text-zinc-200 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors",onClick:P=>v(D.id)},[t(w(il),{class:"opacity-80",size:"18px"}),k[3]||(k[3]=e("span",{class:"text-xs font-medium select-none"},"存储路径",-1)),(l(),W(it(d.value.has(D.id)?w(dl):w(cl)),{class:"ml-auto opacity-70"}))],8,sf),Le(e("div",{class:"p-3 px-4 text-xs font-mono text-[var(--td-text-color-secondary)] break-all border-t border-[var(--td-component-border)] bg-zinc-100/50 dark:bg-zinc-900/30 shadow-inner"},S(D.backupPath),513),[[Te,d.value.has(D.id)]])]),e("div",lf,[D.backups?.length?(l(),x("div",rf,[i.value[D.id]?.length>0?(l(),x("div",nf,[e("span",df,"已选 "+S(i.value[D.id].length)+" 项",1),t(g,{theme:"danger",variant:"text",size:"small",class:"!h-auto !py-1 hover:!bg-red-500/20",onClick:P=>b(D.id)},{default:o(()=>[...k[4]||(k[4]=[m(" 批量删除 ",-1)])]),_:1},8,["onClick"])])):K("",!0),t(T,{"row-key":"fileName",data:D.backups,columns:c,"selected-row-keys":i.value[D.id]||[],size:"small",hover:!0,pagination:D.backups.length>5?{pageSize:5}:null,onSelectChange:(P,j)=>A(P,j,D.id)},{fileName:o(({row:P})=>[e("div",cf,[k[5]||(k[5]=e("span",{class:"text-[10px] font-extrabold bg-[var(--color-primary)]/10 text-[var(--color-primary)] px-1.5 py-0.5 rounded border border-[var(--color-primary)]/20 shrink-0 tracking-wider"},"ZIP",-1)),e("span",{class:"font-medium text-[var(--td-text-color-primary)] truncate",title:P.fileName},S(P.fileName),9,uf)])]),op:o(({row:P})=>[e("div",mf,[t(g,{theme:"primary",variant:"text",size:"small",class:"hover:!bg-[var(--color-primary)]/10",onClick:j=>I(D.id,P.fileName)},{icon:o(()=>[t(w(ao))]),default:o(()=>[k[6]||(k[6]=m(" 下载 ",-1))]),_:1},8,["onClick"]),t(g,{theme:"danger",variant:"text",size:"small",class:"hover:!bg-red-500/10",onClick:j=>R(D.id,P.fileName)},{icon:o(()=>[t(w(ct))]),default:o(()=>[k[7]||(k[7]=m(" 删除 ",-1))]),_:1},8,["onClick"])])]),_:2},1032,["data","columns","selected-row-keys","pagination","onSelectChange"])])):(l(),x("div",pf,[...k[8]||(k[8]=[e("span",{class:"text-sm font-medium text-[var(--td-text-color-secondary)] bg-zinc-50 dark:bg-zinc-800/50 px-4 py-2 rounded-full border border-[var(--td-component-border)]"}," 当前实例暂无备份文件 ",-1)])]))])],2)],4))),128))])):(l(),x("div",vf,[t(U,{class:"!bg-transparent",description:"尚未发现任何实例"})]))])])}}}),bf=me(ff,[["__scopeId","data-v-fb34b079"]]),xf=Object.freeze(Object.defineProperty({__proto__:null,default:bf},Symbol.toStringTag,{value:"Module"}));async function gf(a){return await Z.get({url:`/api/instance/tasks/list/${a}`})}async function hf(){return await Z.get({url:"/api/instance/tasks/list"})}async function Ss(a,s,r,d,i,c){return await Z.post({url:"/api/instance/tasks/create",data:{instanceId:a,name:s,cron:r,payload:d,type:i,enable:c}})}async function ea(a,s,r,d,i,c,f){return await Z.post({url:"/api/instance/tasks/update",data:{instanceId:a,id:s,name:r,cron:d,payload:i,type:c,enable:f}})}async function Is(a){return await Z.post({url:`/api/instance/tasks/delete/${a}`})}const yf={class:"flex flex-col gap-5 p-5 md:p-6 bg-zinc-50/50 dark:bg-zinc-950/20"},_f={class:"flex justify-center"},wf={key:0,class:"flex flex-col bg-white/80 dark:bg-zinc-800/60 border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl p-6 min-h-[260px] shadow-sm backdrop-blur-md"},kf={class:"grid grid-cols-2 md:grid-cols-3 gap-3"},$f={class:"flex flex-col items-start gap-0.5"},zf={class:"text-sm font-bold"},Cf={key:1,class:"flex flex-col justify-center items-center bg-white/80 dark:bg-zinc-800/60 border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl p-8 min-h-[260px] shadow-sm backdrop-blur-md"},Af={class:"flex items-center gap-3 text-base font-bold text-zinc-700 dark:text-zinc-200"},Sf={key:2,class:"bg-white/80 dark:bg-zinc-800/60 border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl overflow-hidden shadow-sm min-h-[260px] backdrop-blur-md flex flex-col"},If={class:"p-5 max-h-[260px] overflow-y-auto custom-scrollbar"},Vf={class:"flex items-center gap-2 flex-wrap"},Uf={key:0,class:"mt-4 p-4 bg-zinc-50 dark:bg-zinc-900/50 rounded-xl border border-zinc-100 dark:border-zinc-800 shadow-inner"},Mf={class:"bg-[var(--td-bg-color-container)]/80 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 shadow-sm p-5 flex flex-col gap-4 backdrop-blur-md"},Lf={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 pb-4 border-b border-dashed border-zinc-200 dark:border-zinc-700/60"},Bf={class:"flex items-center gap-3 bg-zinc-50 dark:bg-zinc-900 px-3 py-1.5 rounded-lg border border-zinc-100 dark:border-zinc-800 shadow-inner"},Tf={class:"font-mono text-lg font-bold tracking-wider text-[var(--color-primary)]"},Rf={class:"flex flex-col gap-2"},jf={class:"text-xs font-bold text-[var(--td-text-color-secondary)] flex items-center gap-1.5 mb-1 uppercase tracking-wider"},Pf={key:0,class:"text-sm font-medium text-red-500 bg-red-50 dark:bg-red-950/30 p-3 rounded-lg border border-red-100 dark:border-red-900/50"},Ef={key:1,class:"grid grid-cols-1 sm:grid-cols-2 gap-2 m-0 p-0 list-none"},Df={class:"text-[var(--td-text-color-secondary)] w-6 font-bold opacity-70"},Ff=de({__name:"CronGenerator",props:{visible:{type:Boolean,default:!1},initialValue:{type:String,default:""}},emits:["update:visible","confirm"],setup(a,{emit:s}){const r=a,d=s,i=y("preset"),c=y("*/10 * * * * *"),f=[{label:"每 10 秒",value:"*/10 * * * * *"},{label:"每分钟",value:"0 * * * * *"},{label:"每 5 分钟",value:"0 */5 * * * *"},{label:"每 30 分钟",value:"0 */30 * * * *"},{label:"每小时",value:"0 0 * * * ?"},{label:"每天凌晨 3 点",value:"0 0 3 * * ?"},{label:"每周日凌晨 3 点",value:"0 0 3 ? * 1"}],n=P=>{c.value=P},v=y(10),I=y("minute"),u=[{label:"秒",value:"second"},{label:"分钟",value:"minute"},{label:"小时",value:"hour"},{label:"天",value:"day"}],R=y("second"),b=[{label:"秒",value:"second",min:0,max:59},{label:"分",value:"minute",min:0,max:59},{label:"时",value:"hour",min:0,max:23},{label:"日",value:"day",min:1,max:31},{label:"月",value:"month",min:1,max:12},{label:"周",value:"week",min:1,max:7}],A=y({second:{type:"every",start:0,step:1,specifics:[]},minute:{type:"every",start:0,step:1,specifics:[]},hour:{type:"every",start:0,step:1,specifics:[]},day:{type:"every",start:1,step:1,specifics:[]},month:{type:"every",start:1,step:1,specifics:[]},week:{type:"any",start:1,step:1,specifics:[]}}),p=[{label:"周日",value:1},{label:"周一",value:2},{label:"周二",value:3},{label:"周三",value:4},{label:"周四",value:5},{label:"周五",value:6},{label:"周六",value:7}],k=te(()=>{const P=(E,F="*")=>{const X=A.value[E];return E==="week"&&X.type==="any"||E==="week"&&A.value.day.type!=="every"||E==="day"&&A.value.week.type!=="any"?"?":X.type==="every"?"*":X.type==="interval"?`${X.start}/${X.step}`:X.type==="specific"?X.specifics.length===0?E==="day"||E==="month"?"1":"0":X.specifics.sort((q,H)=>q-H).join(","):F},j=P("second"),O=P("minute"),$=P("hour"),V=P("day"),_=P("month"),z=P("week","?");return`${j} ${O} ${$} ${V} ${_} ${z}`}),g=te(()=>{const P=v.value;switch(I.value){case"second":return`*/${P} * * * * *`;case"minute":return`0 */${P} * * * *`;case"hour":return`0 0 */${P} * * ?`;case"day":return`0 0 0 */${P} * ?`;default:return"* * * * * *"}}),B=te(()=>i.value==="preset"?c.value:i.value==="novice"?g.value:k.value),C=y([]),T=y(""),U=()=>{try{const P=tr.CronExpressionParser.parse(B.value,{currentDate:new Date});C.value=P.take(5).map(j=>new Date(j.toString()).toLocaleString()),T.value=""}catch{T.value="无法解析当前 Cron 表达式,请检查规则是否冲突",C.value=[]}};_e(B,()=>{U()},{immediate:!0}),_e(()=>r.visible,P=>{P&&r.initialValue?(i.value="pro",U()):P&&!r.initialValue&&(i.value="preset")});const D=()=>{if(T.value){M.warning("当前表达式无效,无法保存");return}d("confirm",B.value),d("update:visible",!1)},N=P=>{const j=b.find($=>$.value===P);if(!j)return[];const O=[];for(let $=j.min;$<=j.max;$++)O.push({label:$.toString(),value:$});return O};return(P,j)=>{const O=h("t-radio-button"),$=h("t-radio-group"),V=h("t-button"),_=h("t-input-number"),z=h("t-select"),E=h("t-alert"),F=h("t-radio"),X=h("t-checkbox-group"),q=h("t-tab-panel"),H=h("t-tabs"),J=h("t-tag"),ae=h("t-dialog");return l(),W(ae,{visible:a.visible,header:"Cron 表达式生成器",width:"700px",top:"5vh",attach:"body",class:"cron-gen-dialog",onClose:j[4]||(j[4]=le=>d("update:visible",!1)),onConfirm:D},{default:o(()=>[e("div",yf,[e("div",_f,[t($,{modelValue:i.value,"onUpdate:modelValue":j[0]||(j[0]=le=>i.value=le),variant:"default-filled",class:"!bg-zinc-100 dark:!bg-zinc-800 border border-[var(--td-component-border)] !rounded-lg p-0.5 shadow-sm"},{default:o(()=>[t(O,{value:"preset",class:"!px-4"},{default:o(()=>[...j[5]||(j[5]=[m("⭐ 预设模式",-1)])]),_:1}),t(O,{value:"novice",class:"!px-4"},{default:o(()=>[...j[6]||(j[6]=[m("🚀 简单模式",-1)])]),_:1}),t(O,{value:"pro",class:"!px-4"},{default:o(()=>[...j[7]||(j[7]=[m("🛠️ 专业模式",-1)])]),_:1})]),_:1},8,["modelValue"])]),i.value==="preset"?(l(),x("div",wf,[j[8]||(j[8]=e("div",{class:"text-sm font-bold text-zinc-700 dark:text-zinc-200 mb-4"},"常用预设规则",-1)),e("div",kf,[(l(),x(re,null,xe(f,(le,fe)=>t(V,{key:fe,variant:"outline",theme:"default",class:"!m-0 !w-full !rounded-lg !h-12 !justify-start !px-4 hover:!border-[var(--color-primary)] hover:!text-[var(--color-primary)] transition-all bg-white dark:bg-zinc-900/50",onClick:be=>n(le.value)},{default:o(()=>[e("div",$f,[e("span",zf,S(le.label),1)])]),_:2},1032,["onClick"])),64))])])):K("",!0),i.value==="novice"?(l(),x("div",Cf,[e("div",Af,[j[9]||(j[9]=e("span",null,"每隔",-1)),t(_,{modelValue:v.value,"onUpdate:modelValue":j[1]||(j[1]=le=>v.value=le),min:1,theme:"column",class:"!w-[100px] shadow-sm"},null,8,["modelValue"]),t(z,{modelValue:I.value,"onUpdate:modelValue":j[2]||(j[2]=le=>I.value=le),options:u,class:"!w-[100px] shadow-sm"},null,8,["modelValue"]),j[10]||(j[10]=e("span",null,"执行一次",-1))]),t(E,{theme:"info",class:"!mt-8 !rounded-lg !bg-blue-50/50 dark:!bg-blue-900/10 !border-blue-100 dark:!border-blue-800/30"},{message:o(()=>[...j[11]||(j[11]=[e("span",{class:"text-[var(--td-text-color-secondary)] text-xs leading-relaxed"},[m(" 此模式适用于简单的周期性任务。如果需要“每周五上午 10 点”等复杂规则,请切换到 "),e("b",{class:"text-[var(--td-text-color-primary)]"},"专业模式"),m("。 ")],-1)])]),_:1})])):K("",!0),i.value==="pro"?(l(),x("div",Sf,[t(H,{modelValue:R.value,"onUpdate:modelValue":j[3]||(j[3]=le=>R.value=le),class:"custom-tabs"},{default:o(()=>[(l(),x(re,null,xe(b,le=>t(q,{key:le.value,value:le.value,label:le.label},{default:o(()=>[e("div",If,[t($,{modelValue:A.value[le.value].type,"onUpdate:modelValue":fe=>A.value[le.value].type=fe,direction:"vertical",class:"w-full gap-4 !bg-transparent"},{default:o(()=>[t(F,{value:"every",class:"text-sm font-medium text-zinc-700 dark:text-zinc-300"},{default:o(()=>[m(S(le.value==="week"?"不指定 (?)":`每${le.label} (*)`),1)]),_:2},1024),le.value!=="week"?(l(),W(F,{key:0,value:"interval",class:"text-sm font-medium text-zinc-700 dark:text-zinc-300"},{default:o(()=>[e("div",Vf,[j[12]||(j[12]=e("span",null,"周期: 从",-1)),t(_,{modelValue:A.value[le.value].start,"onUpdate:modelValue":fe=>A.value[le.value].start=fe,min:le.min,max:le.max,size:"small",theme:"column",class:"!w-[70px]"},null,8,["modelValue","onUpdate:modelValue","min","max"]),e("span",null,S(le.label)+" 开始,每",1),t(_,{modelValue:A.value[le.value].step,"onUpdate:modelValue":fe=>A.value[le.value].step=fe,min:1,max:le.max,size:"small",theme:"column",class:"!w-[70px]"},null,8,["modelValue","onUpdate:modelValue","max"]),e("span",null,S(le.label)+" 执行一次",1)])]),_:2},1024)):K("",!0),le.value!=="week"?(l(),W(F,{key:1,value:"specific",class:"text-sm font-medium text-zinc-700 dark:text-zinc-300"},{default:o(()=>[m(" 指定: 选择具体的"+S(le.label),1)]),_:2},1024)):K("",!0),le.value==="week"?(l(),W(F,{key:2,value:"specific",class:"text-sm font-medium text-zinc-700 dark:text-zinc-300"},{default:o(()=>[...j[13]||(j[13]=[m(" 指定周几 ",-1)])]),_:1})):K("",!0)]),_:2},1032,["modelValue","onUpdate:modelValue"]),A.value[le.value].type==="specific"?(l(),x("div",Uf,[t(X,{modelValue:A.value[le.value].specifics,"onUpdate:modelValue":fe=>A.value[le.value].specifics=fe,options:le.value==="week"?p:N(le.value),class:"grid grid-cols-[repeat(auto-fill,minmax(55px,1fr))] gap-2.5"},null,8,["modelValue","onUpdate:modelValue","options"])])):K("",!0)])]),_:2},1032,["value","label"])),64))]),_:1},8,["modelValue"])])):K("",!0),e("div",Mf,[e("div",Lf,[j[16]||(j[16]=e("span",{class:"font-bold text-[var(--td-text-color-primary)] text-sm"},"当前表达式:",-1)),e("div",Bf,[e("span",Tf,S(B.value),1),T.value?(l(),W(J,{key:1,theme:"danger",variant:"light",size:"small",class:"!rounded"},{icon:o(()=>[t(w(Ja))]),default:o(()=>[j[15]||(j[15]=m(" 无效",-1))]),_:1})):(l(),W(J,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded"},{icon:o(()=>[t(w(Lt))]),default:o(()=>[j[14]||(j[14]=m(" 有效",-1))]),_:1}))])]),e("div",Rf,[e("div",jf,[t(w(pt),{size:"14px"}),j[17]||(j[17]=m(" 最近 5 次运行时间预测 ",-1))]),T.value?(l(),x("div",Pf,S(T.value),1)):(l(),x("ul",Ef,[(l(!0),x(re,null,xe(C.value,(le,fe)=>(l(),x("li",{key:fe,class:"text-sm font-mono font-medium text-zinc-700 dark:text-zinc-300 bg-zinc-50 dark:bg-zinc-800/40 !px-4 !py-3 rounded-lg border border-zinc-100 dark:border-zinc-700/50 flex items-center transition-colors hover:border-[var(--color-primary)]/30 hover:bg-[var(--color-primary)]/5"},[e("span",Df,"#"+S(fe+1),1),m(" "+S(le),1)]))),128))]))])])])]),_:1},8,["visible"])}}}),Vs=me(Ff,[["__scopeId","data-v-71bc696a"]]),Of={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},Nf={class:"design-card flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left"},Kf={class:"flex items-center gap-3"},qf={class:"relative min-h-[400px]"},Hf={key:0,class:"flex justify-center items-center py-24"},Wf={key:1,class:"flex flex-col gap-5"},Gf={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 border-b border-dashed border-zinc-200 dark:border-zinc-700/60"},Jf={class:"flex flex-col sm:flex-row sm:items-center gap-3"},Xf={class:"flex items-center gap-3"},Qf={class:"text-base font-bold text-[var(--td-text-color-primary)] flex items-center gap-2 m-0 tracking-tight"},Yf={class:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-zinc-100 dark:bg-zinc-800 text-xs text-[var(--td-text-color-secondary)] font-medium border border-[var(--td-component-border)]"},Zf={class:"flex items-center gap-2"},e1={class:"p-5"},t1={key:0,class:"flex flex-col gap-3"},o1={key:0,class:"flex items-center gap-3 p-2 px-4 bg-red-500/10 border border-red-500/20 rounded-xl mb-1 transition-all"},a1={class:"text-xs font-medium text-red-600 dark:text-red-400"},s1={class:"flex items-center gap-2"},l1=["title"],r1={class:"font-mono text-xs text-[var(--td-text-color-secondary)] bg-zinc-100 dark:bg-zinc-900 px-2.5 py-1 rounded-md border border-[var(--td-component-border)]"},n1={class:"flex items-center gap-1"},i1={key:1,class:"flex flex-col items-center justify-center py-12"},d1={key:2,class:"flex flex-col items-center justify-center py-24 bg-white/40 dark:bg-zinc-800/40 rounded-2xl border-2 border-dashed border-[var(--td-component-border)]"},c1={class:"flex items-center gap-3 bg-zinc-50 dark:bg-zinc-800/50 p-3 rounded-xl border border-[var(--td-component-border)] w-full mt-1"},u1={class:"text-xs font-medium text-[var(--td-text-color-secondary)]"},m1=de({__name:"index",setup(a){const s=At(),r=y(!1),d=y([]),i=y({}),c=y(!1),f=y(!1),n=y(!1),v=y(null),I=y(!1),u=Be(),R=y({id:"",instanceId:void 0,name:"",cron:"",type:"command",payload:"",enable:!0}),b=[{label:"发送命令 (Command)",value:"command"},{label:"备份存档 (Backup)",value:"backup"},{label:"开启服务器 (Start)",value:"start"},{label:"停止服务器 (Stop)",value:"stop"},{label:"重启服务器 (Restart)",value:"restart"}],A={instanceId:[{required:!0,message:"请选择归属实例",trigger:"change"}],name:[{required:!0,message:"必填",trigger:"blur"}],cron:[{required:!0,message:"必填",trigger:"blur"}],type:[{required:!0,message:"必选",trigger:"change"}],payload:[{validator:z=>(R.value.type==="command"||R.value.type==="restart")&&!z?{result:!1,message:"此类型下内容不能为空",type:"error"}:!0,trigger:"blur"}]},p=[{colKey:"row-select",type:"multiple",width:30,fixed:"left"},{colKey:"name",title:"任务名称",ellipsis:!0},{colKey:"type",title:"类型",width:120},{colKey:"cron",title:"Cron 规则",width:140},{colKey:"payload",title:"执行参数",ellipsis:!0},{colKey:"enable",title:"状态",width:90},{colKey:"op",title:"操作",width:140,fixed:"right"}],k=te(()=>s.instanceList.map(z=>({label:`[${z.id}] ${z.name}`,value:z.id}))),g=te(()=>s.instanceList.map(E=>{const F=d.value.filter(X=>X.instanceId===E.id);return{id:E.id,name:E.name,core:E.core,tasks:F}}).sort((E,F)=>{const X=E.tasks&&E.tasks.length>0,q=F.tasks&&F.tasks.length>0;return X&&!q?-1:!X&&q?1:E.id-F.id})),B=async()=>{r.value=!0;try{await s.refreshInstanceList();const z=await hf();d.value=z||[]}catch(z){M.error("获取任务列表失败: "+(z.message||"未知错误"))}finally{r.value=!1}},C=z=>{f.value=!1,R.value={id:"",instanceId:z,name:"",cron:"",type:"command",payload:"",enable:!0},c.value=!0},T=z=>{f.value=!0,R.value={id:z.id,instanceId:z.instanceId,name:z.name,cron:z.cron,type:z.type.toLowerCase(),payload:z.payload,enable:z.enable},c.value=!0},U=async()=>{if(await v.value?.validate()===!0){n.value=!0;try{const{instanceId:E,id:F,name:X,cron:q,payload:H,type:J,enable:ae}=R.value;f.value?(await ea(E,F,X,q,H,J,ae),M.success("更新成功")):(await Ss(E,X,q,H,J,ae),M.success("创建成功")),c.value=!1,await B()}catch(E){M.error("保存失败: "+(E.message||"未知错误"))}finally{n.value=!1}}},D=async(z,E)=>{try{await ea(z.instanceId,z.id,z.name,z.cron,z.payload,z.type,E),M.success(`任务 [${z.name}] 已${E?"启用":"暂停"}`),z.enable=E}catch(F){M.error("状态更新失败: "+(F.message||"未知错误")),await B()}},N=async(z,E)=>{const F=Ke.confirm({header:"确认删除",body:`确定要删除选中的 ${E.length} 个定时任务吗?此操作不可恢复。`,theme:"danger",onConfirm:async()=>{F.hide();const X=M.loading("正在删除中...");try{const q=E.map(H=>Is(H));await Promise.all(q),M.success("删除成功"),i.value[z]&&(i.value[z]=[]),await B()}catch(q){M.error("部分任务删除失败,请重试 "+q.message)}finally{M.close(X)}}})},P=(z,E)=>{N(z,[E])},j=z=>{const E=i.value[z];if(!E||E.length===0){M.warning("请先选择要删除的任务");return}N(z,E)},O=(z,{_row:E},F)=>{i.value={...i.value,[F]:z}},$=z=>{R.value.cron=z},V=z=>{const E=z.toLowerCase();return E==="start"?_t:E==="stop"?uo:E==="restart"?Pe:Tt},_=z=>{const E=z.toLowerCase();return E==="start"?"success":E==="stop"?"danger":E==="restart"?"warning":"primary"};return ze(()=>{B()}),(z,E)=>{const F=h("t-button"),X=h("t-loading"),q=h("t-tag"),H=h("t-switch"),J=h("t-table"),ae=h("t-empty"),le=h("t-select"),fe=h("t-form-item"),be=h("t-input"),Se=h("t-textarea"),Ee=h("t-form"),Y=h("t-dialog");return l(),x("div",Of,[e("div",Nf,[E[12]||(E[12]=e("div",{class:"flex flex-col gap-1 items-start"},[e("h2",{class:"text-lg font-bold tracking-tight text-[var(--td-text-color-primary)] m-0"},"全局定时任务管理"),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"}," 集中管理所有服务器实例的 Cron 定时计划与调度策略 ")],-1)),e("div",Kf,[t(F,{variant:"dashed",loading:r.value,onClick:B},{icon:o(()=>[t(w(Pe))]),default:o(()=>[E[10]||(E[10]=m(" 刷新列表 ",-1))]),_:1},8,["loading"]),w(u).isAdmin?(l(),W(F,{key:0,theme:"primary",onClick:E[0]||(E[0]=se=>C())},{icon:o(()=>[t(w(at))]),default:o(()=>[E[11]||(E[11]=m(" 新增任务 ",-1))]),_:1})):K("",!0)])]),e("div",qf,[r.value&&g.value.length===0?(l(),x("div",Hf,[t(X,{text:"加载数据中...",size:"small"})])):g.value.length>0?(l(),x("div",Wf,[(l(!0),x(re,null,xe(g.value,(se,De)=>(l(),x("div",{key:se.id,class:"list-item-anim",style:Oe({animationDelay:`${De*.05}s`})},[e("div",{class:ue(["design-card flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300 hover:border-[var(--color-primary)]/30",{"opacity-80":!se.tasks?.length}])},[e("div",Gf,[e("div",Jf,[t(q,{theme:"primary",variant:"light",shape:"round",class:"!px-3 !font-mono font-bold tracking-wider"},{default:o(()=>[m("ID: "+S(se.id),1)]),_:2},1024),e("div",Xf,[e("h3",Qf,[t(w(st),{class:"text-[var(--td-text-color-secondary)] shrink-0"}),m(" "+S(se.name),1)]),e("span",Yf,[t(w(bt),{size:"14px",class:"opacity-80"}),m(" "+S(se.core),1)])])]),e("div",Zf,[t(F,{size:"small",variant:"outline",class:"!border-zinc-200 dark:!border-zinc-700 !text-zinc-600 dark:!text-zinc-400 hover:!text-[var(--color-primary)] hover:!border-[var(--color-primary)] bg-white/50 dark:bg-zinc-900/50",onClick:Me=>C(se.id)},{icon:o(()=>[t(w(at))]),default:o(()=>[E[13]||(E[13]=m(" 添加任务 ",-1))]),_:1},8,["onClick"]),se.tasks?.length?(l(),W(q,{key:0,theme:"success",variant:"light",shape:"round",class:"!px-3 !font-medium"},{default:o(()=>[m(S(se.tasks.length)+" 个任务 ",1)]),_:2},1024)):(l(),W(q,{key:1,theme:"default",variant:"light",shape:"round",class:"!px-3 !text-zinc-400 !bg-zinc-100 dark:!bg-zinc-800"},{default:o(()=>[...E[14]||(E[14]=[m("无任务",-1)])]),_:1}))])]),e("div",e1,[se.tasks?.length?(l(),x("div",t1,[i.value[se.id]?.length>0?(l(),x("div",o1,[e("span",a1,"已选 "+S(i.value[se.id].length)+" 项",1),t(F,{theme:"danger",variant:"text",size:"small",class:"!h-auto !py-1 hover:!bg-red-500/20",onClick:Me=>j(se.id)},{default:o(()=>[...E[15]||(E[15]=[m(" 批量删除 ",-1)])]),_:1},8,["onClick"])])):K("",!0),t(J,{"row-key":"id",data:se.tasks,columns:p,"selected-row-keys":i.value[se.id]||[],size:"small",hover:!0,pagination:se.tasks.length>5?{pageSize:5}:null,onSelectChange:(Me,ee)=>O(Me,ee,se.id)},{name:o(({row:Me})=>[e("div",s1,[t(w(pt),{class:"text-[var(--color-primary)] opacity-90 shrink-0"}),e("span",{class:"font-medium text-[var(--td-text-color-primary)] truncate",title:Me.name},S(Me.name),9,l1)])]),type:o(({row:Me})=>[t(q,{size:"small",variant:"light",theme:_(Me.type),class:"!rounded-md !px-2 font-medium"},{icon:o(()=>[(l(),W(it(V(Me.type)),{class:"opacity-80"}))]),default:o(()=>[m(" "+S(Me.type.toUpperCase()),1)]),_:2},1032,["theme"])]),cron:o(({row:Me})=>[e("span",r1,S(Me.cron),1)]),enable:o(({row:Me})=>[t(H,{value:Me.enable,size:"small",onChange:ee=>D(Me,ee)},null,8,["value","onChange"])]),op:o(({row:Me})=>[e("div",n1,[t(F,{theme:"primary",variant:"text",size:"small",class:"hover:!bg-[var(--color-primary)]/10",onClick:ee=>T(Me)},{icon:o(()=>[t(w(so))]),default:o(()=>[E[16]||(E[16]=m(" 编辑 ",-1))]),_:1},8,["onClick"]),t(F,{theme:"danger",variant:"text",size:"small",class:"hover:!bg-red-500/10",onClick:ee=>P(se.id,Me.id)},{icon:o(()=>[t(w(ct))]),default:o(()=>[E[17]||(E[17]=m(" 删除 ",-1))]),_:1},8,["onClick"])])]),_:2},1032,["data","columns","selected-row-keys","pagination","onSelectChange"])])):(l(),x("div",i1,[...E[18]||(E[18]=[e("span",{class:"text-sm font-medium text-[var(--td-text-color-secondary)] bg-zinc-50 dark:bg-zinc-800/50 px-4 py-2 rounded-full border border-[var(--td-component-border)]"}," 当前实例暂无定时任务安排 ",-1)])]))])],2)],4))),128))])):(l(),x("div",d1,[t(ae,{class:"!bg-transparent",description:"尚未配置任何实例定时任务"})]))]),t(Y,{visible:c.value,"onUpdate:visible":E[8]||(E[8]=se=>c.value=se),header:f.value?"编辑定时任务":"新增定时任务",width:"600px","confirm-btn":{content:"保存配置",theme:"primary",loading:n.value},placement:"center","on-confirm":U},{default:o(()=>[t(Ee,{ref_key:"formRef",ref:v,data:R.value,rules:A,"label-align":"top",class:"mt-4"},{default:o(()=>[t(fe,{label:"归属实例",name:"instanceId"},{default:o(()=>[t(le,{modelValue:R.value.instanceId,"onUpdate:modelValue":E[1]||(E[1]=se=>R.value.instanceId=se),options:k.value,placeholder:"请选择要执行该任务的服务器实例",filterable:"",disabled:!!f.value},null,8,["modelValue","options","disabled"])]),_:1}),t(fe,{label:"任务名称",name:"name"},{default:o(()=>[t(be,{modelValue:R.value.name,"onUpdate:modelValue":E[2]||(E[2]=se=>R.value.name=se),placeholder:"请输入任务名称,例如:凌晨自动重启"},null,8,["modelValue"])]),_:1}),t(fe,{label:"触发规则 (Cron 表达式)",name:"cron"},{default:o(()=>[t(be,{modelValue:R.value.cron,"onUpdate:modelValue":E[4]||(E[4]=se=>R.value.cron=se),placeholder:"例如: 0 0 4 * * ?"},{suffix:o(()=>[t(F,{variant:"text",theme:"primary",size:"small",class:"!h-auto !py-1",onClick:E[3]||(E[3]=se=>I.value=!0)},{default:o(()=>[...E[19]||(E[19]=[m(" 生成器 ",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(fe,{label:"执行操作类型",name:"type"},{default:o(()=>[t(le,{modelValue:R.value.type,"onUpdate:modelValue":E[5]||(E[5]=se=>R.value.type=se),options:b},null,8,["modelValue"])]),_:1}),R.value.type==="command"||R.value.type==="restart"?(l(),W(fe,{key:0,label:R.value.type==="restart"?"重启全服倒计时提示语":"控制台执行命令",name:"payload"},{default:o(()=>[t(Se,{modelValue:R.value.payload,"onUpdate:modelValue":E[6]||(E[6]=se=>R.value.payload=se),autosize:{minRows:2,maxRows:5},placeholder:"请输入执行内容..."},null,8,["modelValue"])]),_:1},8,["label"])):K("",!0),t(fe,{label:"初始状态",name:"enable"},{default:o(()=>[e("div",c1,[t(H,{modelValue:R.value.enable,"onUpdate:modelValue":E[7]||(E[7]=se=>R.value.enable=se)},null,8,["modelValue"]),e("span",u1,S(R.value.enable?"保存后立即生效运行":"保存后处于暂停状态"),1)])]),_:1})]),_:1},8,["data"])]),_:1},8,["visible","header","confirm-btn"]),t(Vs,{visible:I.value,"onUpdate:visible":E[9]||(E[9]=se=>I.value=se),"initial-value":R.value.cron,onConfirm:$},null,8,["visible","initial-value"])])}}}),p1=me(m1,[["__scopeId","data-v-2e07fa53"]]),v1=Object.freeze(Object.defineProperty({__proto__:null,default:p1},Symbol.toStringTag,{value:"Module"})),f1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function b1(a,s){return l(),x("svg",f1,[...s[0]||(s[0]=[ot('',8)])])}const Da={render:b1},x1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function g1(a,s){return l(),x("svg",x1,[...s[0]||(s[0]=[ot('',8)])])}const h1={render:g1},y1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function _1(a,s){return l(),x("svg",y1,[...s[0]||(s[0]=[ot('',6)])])}const w1={render:_1},k1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function $1(a,s){return l(),x("svg",k1,[...s[0]||(s[0]=[ot('',7)])])}const z1={render:$1},C1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function A1(a,s){return l(),x("svg",C1,[...s[0]||(s[0]=[ot('',4)])])}const S1={render:A1},I1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function V1(a,s){return l(),x("svg",I1,[...s[0]||(s[0]=[ot('',11)])])}const U1={render:V1},M1={class:"result-container"},L1={class:"result-bg-img"},B1={class:"result-title"},T1={class:"result-tip"},R1=de({__name:"index",props:{bgUrl:String,title:String,tip:String,type:String},setup(a){const s=a,r=te(()=>{switch(s.type){case"403":return Da;case"404":return h1;case"500":return w1;case"ie":return z1;case"wifi":return S1;case"maintenance":return U1;default:return Da}});return(d,i)=>(l(),x("div",M1,[e("div",L1,[(l(),W(it(r.value)))]),e("div",B1,S(a.title),1),e("div",T1,S(a.tip),1),ul(d.$slots,"default",{},void 0)]))}}),Fa=me(R1,[["__scopeId","data-v-635c4716"]]),j1={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},P1={class:"design-card flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left"},E1={class:"flex items-center gap-2 sm:gap-3 flex-wrap"},D1={class:"relative min-h-[400px]"},F1={key:0,class:"flex flex-col items-center justify-center py-24"},O1={key:1,class:"flex flex-col items-center justify-center py-16 design-card bg-white/40 dark:bg-zinc-800/40 rounded-2xl border border-red-500/20"},N1={key:2,class:"flex flex-col items-center justify-center py-24 design-card bg-white/40 dark:bg-zinc-800/40 rounded-2xl border-2 border-dashed border-[var(--td-component-border)]"},K1={key:3,class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-4"},q1=["onClick"],H1={class:"flex items-center justify-between gap-3"},W1={class:"flex items-center gap-2.5 min-w-0"},G1={class:"relative flex items-center justify-center shrink-0"},J1={key:0,class:"absolute w-2.5 h-2.5 bg-emerald-400 rounded-full animate-ping opacity-75"},X1={class:"text-base font-bold text-[var(--td-text-color-primary)] truncate tracking-tight"},Q1={class:"text-xs font-mono text-[var(--td-text-color-secondary)] ml-2 opacity-60 shrink-0"},Y1={class:"flex items-center gap-8 px-0.5"},Z1={class:"flex flex-col gap-1.5"},eb={class:"flex items-center gap-2 text-[var(--td-text-color-primary)]"},tb={class:"text-sm font-bold leading-none"},ob={class:"flex flex-col gap-1.5"},ab={class:"flex items-center justify-between pt-4 mt-auto border-t border-dashed border-zinc-200/60 dark:border-zinc-700/60"},sb={class:"flex items-center gap-1"},lb={class:"delete-dialog-body min-h-[200px]"},rb={class:"alert-zinc bg-primary/5 border border-primary/20 p-4 rounded-xl mb-6 flex items-start gap-3"},nb={key:0},ib={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},db={class:"flex items-center justify-between w-full ml-1 overflow-hidden"},cb={class:"text-sm font-medium text-[var(--td-text-color-primary)] truncate pr-2"},ub={class:"text-[10px] font-mono text-zinc-400 shrink-0"},mb={key:1,class:"py-12 text-center text-zinc-400 italic"},pb=de({__name:"index",setup(a){const s=Lo(),r=Be(),d=y(!0),i=y(!1),c=qe({visible:!1,loading:!1,submitting:!1,selectedIds:[]}),f=async()=>{c.visible=!0,c.loading=!0;try{s.frpList.length===0&&await s.getTunnels();const b=await Vi();c.selectedIds=b||[]}catch(b){M.error("获取自启动配置失败 "+b.message)}finally{c.loading=!1}},n=async()=>{c.submitting=!0;try{await Ui(c.selectedIds),M.success("自启动设置已更新"),c.visible=!1}catch(b){M.error("保存失败: "+b.message)}finally{c.submitting=!1}},v=b=>({toml:"primary",ini:"warning",cmd:"danger",json:"success"})[b]||"default";async function I(){try{d.value=!0,i.value=!1,await s.getTunnels()}catch(b){console.error(b),i.value=!0}finally{d.value=!1}}const u=b=>{Ie(`/frp/console/${b.id}`)},R=b=>{const A=Ke.confirm({header:"确认删除隧道?",body:"删除后该隧道将无法恢复。确定要继续吗?",theme:"danger",onConfirm:async()=>{try{await Ai(b),M.success(`隧道 ${b} 删除成功`),await I(),A.hide()}catch(p){M.error(p.message)}},onClose:()=>{A.hide()}})};return ze(()=>{I()}),(b,A)=>{const p=h("t-button"),k=h("t-loading"),g=h("t-tag"),B=h("t-icon"),C=h("t-checkbox"),T=h("t-checkbox-group"),U=h("t-dialog");return l(),x("div",j1,[e("div",P1,[A[7]||(A[7]=e("div",{class:"flex flex-col gap-1 items-start"},[e("h2",{class:"text-lg font-bold tracking-tight text-[var(--td-text-color-primary)] m-0"},"隧道列表"),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"},"管理您的 FRP 隧道映射,设置自启动并监控运行状态")],-1)),e("div",E1,[t(p,{variant:"dashed",onClick:I},{icon:o(()=>[t(w(Pe))]),default:o(()=>[A[4]||(A[4]=m(" 刷新 ",-1))]),_:1}),w(r).isAdmin?(l(),W(p,{key:0,variant:"outline",onClick:f},{icon:o(()=>[t(w(ml))]),default:o(()=>[A[5]||(A[5]=m(" 自启动设置 ",-1))]),_:1})):K("",!0),w(r).isAdmin?(l(),W(p,{key:1,theme:"primary",onClick:A[0]||(A[0]=D=>w(Ie)("/frp/create"))},{icon:o(()=>[t(w(at))]),default:o(()=>[A[6]||(A[6]=m(" 创建隧道 ",-1))]),_:1})):K("",!0)])]),e("div",D1,[d.value?(l(),x("div",F1,[t(k,{size:"medium",text:"正在获取隧道信息..."})])):i.value?(l(),x("div",O1,[t(Fa,{title:"数据获取失败",tip:"无法连接到服务器,请检查网络",type:"500"},{default:o(()=>[t(p,{theme:"primary",onClick:I},{default:o(()=>[...A[8]||(A[8]=[m("重试",-1)])]),_:1})]),_:1})])):w(s).frpList.length===0?(l(),x("div",N1,[t(Fa,{title:"暂无隧道",tip:w(r).isAdmin?"快去创建一个吧":"管理员尚未为您分配隧道",type:"404"},{default:o(()=>[w(r).isAdmin?(l(),W(p,{key:0,theme:"primary",onClick:A[1]||(A[1]=D=>w(Ie)("/frp/create"))},{default:o(()=>[...A[9]||(A[9]=[m("立即创建",-1)])]),_:1})):K("",!0)]),_:1},8,["tip"])])):(l(),x("div",K1,[(l(!0),x(re,null,xe(w(s).frpList,(D,N)=>(l(),x("div",{key:D.id,style:Oe({"--i":N}),class:"design-card group flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm hover:shadow-md hover:border-[var(--color-primary)]/50 transition-all duration-300 p-5 gap-5 cursor-pointer",onClick:P=>u(D)},[e("div",H1,[e("div",W1,[e("div",G1,[D.status?(l(),x("span",J1)):K("",!0),e("span",{class:ue([D.status?"bg-emerald-500":"bg-zinc-300 dark:bg-zinc-600","relative w-2 h-2 rounded-full"])},null,2)]),e("h4",X1,S(D.name),1),e("span",Q1,"#"+S(D.id),1)])]),e("div",Y1,[e("div",Z1,[A[10]||(A[10]=e("span",{class:"text-[10px] text-[var(--td-text-color-secondary)] uppercase tracking-widest font-black opacity-80"},"提供商",-1)),e("div",eb,[t(w(bt),{size:"16px",class:"text-[var(--color-primary)] opacity-70"}),e("span",tb,S(D.service),1)])]),e("div",ob,[A[11]||(A[11]=e("span",{class:"text-[10px] text-[var(--td-text-color-secondary)] uppercase tracking-widest font-black opacity-80"},"配置格式",-1)),e("div",null,[t(g,{size:"small",theme:v(D.configType),variant:"light-outline",class:"!px-3 !h-5 !text-[10px] font-black italic tracking-tighter border-zinc-200 dark:border-zinc-700"},{default:o(()=>[m(S(D.configType.toUpperCase()),1)]),_:2},1032,["theme"])])])]),e("div",ab,[A[12]||(A[12]=e("span",{class:"text-xs text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors font-bold"}," 隧道控制台 → ",-1)),e("div",sb,[w(r).isAdmin?(l(),W(p,{key:0,shape:"circle",theme:"danger",variant:"text",size:"small",class:"hover:!bg-red-500/10",onClick:dt(P=>R(D.id),["stop"])},{icon:o(()=>[t(w(ct),{size:"16"})]),_:1},8,["onClick"])):K("",!0)])])],12,q1))),128))]))]),t(U,{visible:c.visible,"onUpdate:visible":A[3]||(A[3]=D=>c.visible=D),header:"设置开机自启动隧道",width:"640px","confirm-btn":{content:"保存设置",loading:c.submitting},onConfirm:n},{default:o(()=>[e("div",lb,[t(k,{loading:c.loading,text:"读取配置中...",size:"small"},{default:o(()=>[e("div",rb,[t(B,{name:"info-circle-filled",class:"text-primary mt-0.5"}),A[13]||(A[13]=e("div",{class:"text-sm"},[e("p",{class:"text-[var(--td-text-color-primary)] font-bold mb-1"},"自启动策略说明"),e("p",{class:"text-[var(--td-text-color-secondary)] leading-relaxed m-0"}," 勾选的隧道将在 MSLX 守护进程启动时自动加载并运行。 ")],-1))]),w(s).frpList.length>0?(l(),x("div",nb,[t(T,{modelValue:c.selectedIds,"onUpdate:modelValue":A[2]||(A[2]=D=>c.selectedIds=D),class:"w-full"},{default:o(()=>[e("div",ib,[(l(!0),x(re,null,xe(w(s).frpList,D=>(l(),x("div",{key:D.id,class:"p-3 bg-zinc-50/50 dark:bg-zinc-800/40 rounded-xl border border-[var(--td-component-border)] hover:bg-zinc-100 dark:hover:bg-zinc-700/60 transition-colors"},[t(C,{value:D.id,class:"!w-full"},{default:o(()=>[e("div",db,[e("span",cb,S(D.name),1),e("span",ub,"#"+S(D.id),1)])]),_:2},1032,["value"])]))),128))])]),_:1},8,["modelValue"])])):(l(),x("div",mb,"暂无可用隧道"))]),_:1},8,["loading"])])]),_:1},8,["visible","confirm-btn"])])}}}),vb=me(pb,[["__scopeId","data-v-beedb160"]]),fb=Object.freeze(Object.defineProperty({__proto__:null,default:vb},Symbol.toStringTag,{value:"Module"})),bb=Lo();async function Jt(a,s,r,d="toml",i=!0){let c=a;if(i)try{c=await new Promise((f,n)=>{const v=y(a),I=Ke({header:"自定义隧道名称",body:()=>pl(vl,{value:v.value,placeholder:"请输入隧道名称",clearable:!0,onChange:u=>{v.value=u}}),onConfirm:()=>{if(!v.value.trim()){M.warning("隧道名称不能为空");return}I.hide(),f(v.value.trim())},onClose:()=>{I.hide(),n(new Error("cancel"))},onCancel:()=>{I.hide(),n(new Error("cancel"))}})})}catch{return}await Ci(c,s,r,d),M.success("添加成功"),await bb.getTunnels(),Ie("/frp/list")}function Us(a){const s=a.trim();if(!s){M.warning("请先输入 INI 配置内容");return}const r={tls_enable:"transport.tls.enable",token:"auth.token",protocol:"transport.protocol",pool_count:"transport.poolCount",tcp_mux:"transport.tcpMux",login_fail_exit:"loginFailExit",custom_domains:"customDomains",locations:"locations",host_header_rewrite:"hostHeaderRewrite",role:"role",sk:"sk"},d=s.split(/\r?\n/);let i="";const c={},f=[];let n=null;d.forEach(I=>{const u=I.trim();if(!u||u.startsWith("#")||u.startsWith(";"))return;const R=u.match(/^\[(.+)\]$/);if(R){i=R[1],i==="common"?n=null:(n={name:i},f.push(n));return}const b=u.match(/^([^=]+)=(.*)$/);if(b){const A=b[1].trim();let p=b[2].trim(),k=A;r[A]?k=r[A]:(k=k.replace(/_([a-z])/g,(g,B)=>B.toUpperCase()),k=k.replace(/Ip/g,"IP")),p==="true"?p=!0:p==="false"?p=!1:!isNaN(Number(p))&&p!==""?p=Number(p):p=String(p),i==="common"||!i?c[k]=p:n&&(n[k]=p)}});let v="";return Object.entries(c).forEach(([I,u])=>{const R=typeof u=="string"?`"${u}"`:u;v+=`${I} = ${R} +`}),f.forEach(I=>{v+=` +[[proxies]] +`,Object.entries(I).forEach(([u,R])=>{const b=typeof R=="string"?`"${R}"`:R;v+=`${u} = ${b} +`})}),v.trim()}const xb={class:"custom-frp-container"},gb={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8"},hb={class:"flex items-center gap-4"},yb={class:"mt-8 pt-5 border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60 flex items-center gap-3"},_b=de({__name:"Custom",setup(a){const s=y(null),r=qe({name:"",type:"toml",content:""}),d={name:[{required:!0,message:"请输入隧道名称",type:"error"}],content:[{required:!0,message:"配置文件内容不能为空",type:"error"}]},i=async({validateResult:n})=>{n===!0?await Jt(r.name,r.content,"Custom",r.type,!1):M.warning("请检查表单填写")},c=()=>{M.info("表单已重置")},f=()=>{try{r.content=Us(r.content),r.type="toml",M.success("已转换为 TOML")}catch(n){M.error(`转换失败: ${n.message||"未知错误"}`)}};return(n,v)=>{const I=h("t-input"),u=h("t-form-item"),R=h("t-radio-button"),b=h("t-radio-group"),A=h("t-button"),p=h("t-textarea"),k=h("t-form");return l(),x("div",xb,[e("div",gb,[v[8]||(v[8]=e("div",{class:"flex items-center gap-2 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},[e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"自定义 Frp 隧道")],-1)),t(k,{ref_key:"formRef",ref:s,data:r,rules:d,"label-align":"top",onReset:c,onSubmit:i},{default:o(()=>[t(u,{label:"隧道名称",name:"name"},{default:o(()=>[t(I,{modelValue:r.name,"onUpdate:modelValue":v[0]||(v[0]=g=>r.name=g),placeholder:"请输入隧道名称",class:"!w-full sm:!w-96"},null,8,["modelValue"])]),_:1}),t(u,{label:"配置类型",name:"type"},{default:o(()=>[e("div",hb,[t(b,{modelValue:r.type,"onUpdate:modelValue":v[1]||(v[1]=g=>r.type=g),variant:"default-filled"},{default:o(()=>[t(R,{value:"toml"},{default:o(()=>[...v[3]||(v[3]=[m("TOML",-1)])]),_:1}),t(R,{value:"ini"},{default:o(()=>[...v[4]||(v[4]=[m("INI",-1)])]),_:1})]),_:1},8,["modelValue"]),t(Rt,{name:"fade"},{default:o(()=>[r.type==="ini"?(l(),W(A,{key:0,variant:"outline",theme:"primary",size:"small",class:"!rounded-md hover:!bg-[var(--color-primary)]/10",onClick:f},{default:o(()=>[...v[5]||(v[5]=[m(" 一键转 TOML ",-1)])]),_:1})):K("",!0)]),_:1})])]),_:1}),t(u,{label:"隧道配置内容",name:"content"},{default:o(()=>[t(p,{modelValue:r.content,"onUpdate:modelValue":v[2]||(v[2]=g=>r.content=g),placeholder:`serverAddr = "0.0.0.0" +serverPort = 1027 + +[[proxies]] +name = "nahida_tcp" +...`,autosize:{minRows:12,maxRows:25},class:"code-font-textarea !bg-zinc-50/50 dark:!bg-zinc-900/50 !w-full"},null,8,["modelValue"])]),_:1}),e("div",yb,[t(A,{theme:"primary",type:"submit",class:"!rounded-xl !font-bold !px-8 shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[...v[6]||(v[6]=[m("保存配置",-1)])]),_:1}),t(A,{theme:"default",variant:"base",type:"reset",class:"!bg-zinc-100 dark:!bg-zinc-800/80 !border-none !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 !rounded-xl !font-bold"},{default:o(()=>[...v[7]||(v[7]=[m("重置",-1)])]),_:1})])]),_:1},8,["data"])])])}}}),wb=me(_b,[["__scopeId","data-v-132cd77f"]]);function Xt(a){const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let r="";for(let d=0;d{if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))return window.open(a,"_blank"),null;const c=window.screenLeft!==void 0?window.screenLeft:window.screenX,f=window.screenTop!==void 0?window.screenTop:window.screenY,n=window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width,v=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height,I=n/window.screen.availWidth,u=(n-r)/2/I+c,R=(v-d)/2/I+f,b=` + scrollbars=yes, + width=${r/I}, + height=${d/I}, + top=${R}, + left=${u} + `,A=window.open(a,s,b);return A&&A.focus(),A},kb={class:"flex justify-between items-center w-full"},$b={class:"truncate"},zb={class:"flex gap-1.5 shrink-0 ml-3"},Cb={class:"w-full flex flex-col gap-2.5"},Ab={class:"flex gap-2 flex-wrap"},Sb={class:"bg-[var(--td-bg-color-secondarycontainer)] rounded-[var(--td-radius-medium)] p-3 border border-dashed border-[var(--td-component-border)]"},Ib={class:"m-0 whitespace-pre-wrap break-all text-[13px] text-[var(--td-text-color-primary)] leading-[1.6]"},Vb=de({__name:"CreateTunnelDialog",props:{visible:{type:Boolean},token:{}},emits:["update:visible","success"],setup(a,{emit:s}){const r=a,d=s,i=y(!1),c=y(!1),f=y([]),n=qe({nodeId:null,type:"tcp",localIP:"127.0.0.1",localPort:"25565",remotePort:"",name:"",remarks:"无",bindDomain:"",use_kcp:!1,extra_config:""}),v=te(()=>f.value.find(A=>A.id===n.nodeId)||null),I=te(()=>{const A=[{label:"免费节点",value:0,children:[]},{label:"高级节点",value:1,children:[]},{label:"超级节点",value:2,children:[]}];return f.value.forEach(p=>{const k=A.find(g=>g.value===p.allow_user_group);k&&k.children.push(p)}),A.filter(p=>p.children.length>0)}),u=()=>{if(v.value){const{min_open_port:A,max_open_port:p}=v.value;n.remotePort=(Math.floor(Math.random()*(p-A+1))+A).toString()}n.name=Xt(8)},R=async()=>{i.value=!0;try{const A=await Z.get({url:"/api/frp/nodeList",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`}});A.code===200&&(f.value=A.data,r.visible&&f.value.length>0&&!n.nodeId&&(n.nodeId=f.value[0].id,u()))}catch(A){M.error("加载节点失败"+A.message)}finally{i.value=!1}};_e(()=>r.visible,A=>{A&&(f.value.length>0?(n.nodeId||(n.nodeId=f.value[0].id),u()):R())});const b=async()=>{if(n.nodeId){c.value=!0;try{const A=await Z.post({url:"/api/frp/addTunnel",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`},data:{id:n.nodeId,type:n.type,local_ip:n.localIP,local_port:n.localPort,remote_port:n.remotePort,name:n.name,remarks:n.remarks,bind_domain:n.bindDomain,use_kcp:v.value?.kcp_support===1?n.use_kcp:!1,extra_config:n.extra_config||null}});A.code===200?(M.success("创建成功"),d("success"),d("update:visible",!1)):M.error(A.msg)}finally{c.value=!1}}};return ze(()=>{r.token&&R()}),(A,p)=>{const k=h("t-tag"),g=h("t-option"),B=h("t-option-group"),C=h("t-select"),T=h("t-col"),U=h("t-button"),D=h("t-row"),N=h("t-form-item"),P=h("t-input"),j=h("t-textarea"),O=h("t-form"),$=h("t-loading"),V=h("t-dialog");return l(),W(V,{attach:"body",visible:a.visible,header:"新建隧道",width:"580px","confirm-btn":{content:"提交创建",loading:c.value},onConfirm:b,onClose:p[10]||(p[10]=_=>d("update:visible",!1))},{default:o(()=>[t($,{loading:i.value},{default:o(()=>[t(O,{data:n,"label-align":"right","label-width":100,class:"pt-2.5 overflow-x-hidden [&_.t-form__item]:!mb-[22px]"},{default:o(()=>[t(N,{label:"选择节点",name:"nodeId"},{default:o(()=>[t(D,{gutter:8,style:{width:"100%"}},{default:o(()=>[t(T,{flex:"auto"},{default:o(()=>[t(C,{modelValue:n.nodeId,"onUpdate:modelValue":p[0]||(p[0]=_=>n.nodeId=_),placeholder:"请选择节点",onChange:u},{default:o(()=>[(l(!0),x(re,null,xe(I.value,_=>(l(),W(B,{key:_.value,label:_.label},{default:o(()=>[(l(!0),x(re,null,xe(_.children,z=>(l(),W(g,{key:z.id,value:z.id,label:z.node},{default:o(()=>[e("div",kb,[e("span",$b,S(z.node),1),e("div",zb,[t(k,{size:"small",variant:"outline",theme:"primary"},{default:o(()=>[m(S(z.bandwidth)+"M",1)]),_:2},1024),t(k,{size:"small",theme:z.status===1?"success":"danger"},{default:o(()=>[m(S(z.status===1?"在线":"离线"),1)]),_:2},1032,["theme"])])])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(T,{flex:"none"},{default:o(()=>[t(U,{variant:"outline",onClick:p[1]||(p[1]=_=>w(Ie)("https://user.mslmc.net/frp/createTunnel"))},{default:o(()=>[...p[11]||(p[11]=[m(" 前往源站创建 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),v.value?(l(),W(N,{key:0,label:"节点详情"},{default:o(()=>[e("div",Cb,[e("div",Ab,[t(k,{size:"small",variant:"outline",theme:"primary"},{default:o(()=>[m(S(v.value.bandwidth)+"Mbps",1)]),_:1}),t(k,{size:"small",theme:v.value.need_real_name?"success":"warning"},{default:o(()=>[m(S(v.value.need_real_name?"需要实名认证":"无需实名认证"),1)]),_:1},8,["theme"]),t(k,{size:"small",theme:v.value.status===1?"success":"danger"},{default:o(()=>[m(" 节点状态:"+S(v.value.status===1?"在线":"离线"),1)]),_:1},8,["theme"])]),e("div",Sb,[e("pre",Ib,S(v.value.remarks||"此节点暂无备注"),1)])])]),_:1})):K("",!0),t(N,{label:"隧道类型"},{default:o(()=>[t(C,{modelValue:n.type,"onUpdate:modelValue":p[2]||(p[2]=_=>n.type=_)},{default:o(()=>[t(g,{label:"TCP",value:"tcp"}),v.value?.udp_support?(l(),W(g,{key:0,label:"UDP",value:"udp"})):K("",!0),v.value?.http_support?(l(),W(g,{key:1,label:"HTTP",value:"http"})):K("",!0),v.value?.http_support?(l(),W(g,{key:2,label:"HTTPS",value:"https"})):K("",!0)]),_:1},8,["modelValue"])]),_:1}),t(D,{gutter:[16,20]},{default:o(()=>[t(T,{xs:12,sm:6},{default:o(()=>[t(N,{label:"隧道名称"},{default:o(()=>[t(P,{modelValue:n.name,"onUpdate:modelValue":p[3]||(p[3]=_=>n.name=_)},null,8,["modelValue"])]),_:1})]),_:1}),t(T,{xs:12,sm:6},{default:o(()=>[t(N,{label:"远程端口"},{default:o(()=>[t(P,{modelValue:n.remotePort,"onUpdate:modelValue":p[4]||(p[4]=_=>n.remotePort=_)},{suffix:o(()=>[t(U,{variant:"text",size:"small",onClick:u},{default:o(()=>[...p[12]||(p[12]=[m("随机",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(T,{xs:12,sm:6},{default:o(()=>[t(N,{label:"本地IP"},{default:o(()=>[t(P,{modelValue:n.localIP,"onUpdate:modelValue":p[5]||(p[5]=_=>n.localIP=_)},null,8,["modelValue"])]),_:1})]),_:1}),t(T,{xs:12,sm:6},{default:o(()=>[t(N,{label:"本地端口"},{default:o(()=>[t(P,{modelValue:n.localPort,"onUpdate:modelValue":p[6]||(p[6]=_=>n.localPort=_)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),n.type.includes("http")?(l(),W(N,{key:1,label:"绑定域名",class:"mt-1"},{default:o(()=>[t(P,{modelValue:n.bindDomain,"onUpdate:modelValue":p[7]||(p[7]=_=>n.bindDomain=_),placeholder:"输入已解析的域名"},null,8,["modelValue"])]),_:1})):K("",!0),t(N,{label:"备注说明",class:"mt-1"},{default:o(()=>[t(P,{modelValue:n.remarks,"onUpdate:modelValue":p[8]||(p[8]=_=>n.remarks=_)},null,8,["modelValue"])]),_:1}),t(N,{label:"额外参数",class:"mt-1"},{default:o(()=>[t(j,{modelValue:n.extra_config,"onUpdate:modelValue":p[9]||(p[9]=_=>n.extra_config=_),autosize:{minRows:2},placeholder:"选填,高级配置参数(不懂请留空!!!)"},null,8,["modelValue"])]),_:1})]),_:1},8,["data"])]),_:1},8,["loading"])]),_:1},8,["visible","confirm-btn"])}}}),Ub={key:0,class:"min-h-[400px] flex flex-col"},Mb={class:"flex justify-between items-center mb-4 shrink-0"},Lb={class:"max-h-[500px] overflow-y-auto custom-scrollbar pr-1 flex flex-col gap-3"},Bb={key:0,class:"py-10"},Tb={class:"flex-1 overflow-hidden flex flex-col"},Rb={class:"text-base font-extrabold mb-1.5 truncate tracking-tight"},jb={class:"text-[var(--color-primary)]"},Pb={class:"text-[var(--td-text-color-secondary)]"},Eb={class:"flex items-center gap-2 mb-1.5"},Db=["title"],Fb={key:0,class:"text-xs text-[var(--color-success)] flex items-center gap-1 mt-0.5 truncate font-medium"},Ob={class:"truncate"},Nb={class:"font-mono font-extrabold"},Kb={class:"flex gap-1 ml-3 shrink-0 opacity-80 group-hover:opacity-100 transition-opacity"},qb={key:1,class:"pt-1 flex flex-col"},Hb={class:"mb-2 shrink-0"},Wb={class:"w-full px-3 py-2 bg-zinc-100/80 dark:bg-zinc-800/40 rounded-lg text-[13px] text-[var(--td-text-color-secondary)] whitespace-pre-wrap break-all leading-relaxed border border-dashed border-zinc-200 dark:border-zinc-700"},Gb={key:0,class:"text-[var(--td-text-color-secondary)] px-1.5 bg-zinc-100 dark:bg-zinc-800 mr-1 rounded font-mono text-xs flex items-center border border-zinc-200 dark:border-zinc-700"},Jb={class:"flex flex-col sm:flex-row gap-0 sm:gap-4 w-full"},Xb={class:"flex justify-end gap-3 mt-6 pt-4 border-t border-dashed border-zinc-200 dark:border-zinc-700"},Qb=de({__name:"DomainManagerDialog",props:{visible:{type:Boolean},token:{},tunnels:{}},emits:["update:visible"],setup(a,{emit:s}){const r=a,d=s,i=y("list"),c=y("mc_srv"),f=y(!1),n=y(!1),v=y([]),I=y([]),u=y([]),R=y(null),b=qe({id:0,domain_id:void 0,name:"",type:"A",record:""}),A=te(()=>r.tunnels?r.tunnels.filter(V=>V.type&&V.type.toUpperCase()==="TCP"):[]),p=te(()=>{const V=I.value.find(_=>_.id===b.domain_id);return V?V.remark:""}),k=async()=>{if(r.token){f.value=!0;try{await Promise.all([g(),B(),C()])}catch(V){console.error(V)}finally{f.value=!1}}},g=async()=>{const V=await Z.get({url:"/api/domain/dns/list",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`}});V.code===200&&(v.value=V.data||[])},B=async()=>{const V=await Z.get({url:"/api/domain/list",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`}});V.code===200&&(I.value=V.data||[])},C=async()=>{try{const V=await Z.get({url:"/api/frp/nodeList",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`}});V.code===200&&(u.value=V.data||[])}catch(V){console.error("Fetch nodes failed",V)}},T=V=>{const _=r.tunnels.find(z=>z.id===V);if(_){const z=u.value.find(F=>F.id===_.node_id),E=z?z.domain||z.ip:null;E?(b.record=`5 5 ${_.remote_port} ${E}`,M.success("已自动生成解析值")):(M.warning(`无法获取节点(ID:${_.node_id})地址,请手动填写`),b.record=`5 5 ${_.remote_port} 请输入节点地址`),b.type="SRV"}};ze(()=>{r.visible&&r.token&&k()}),_e(()=>r.visible,V=>{V&&(i.value="list",k())}),_e(I,V=>{V.length>0&&b.domain_id===void 0&&b.id===0&&(b.domain_id=V[0].id)});const U=V=>V.type!=="SRV"?"":`${V.name.replace("_minecraft._tcp.","")}.${V.domain}`,D=()=>{i.value="form",c.value="mc_srv",R.value=null,b.id=0,b.name="",b.type="SRV",b.record="",I.value.length>0&&(b.domain_id=I.value[0].id)},N=V=>{i.value="form",c.value="custom",b.id=V.id,b.domain_id=Number(V.domain_id),b.name=V.name,b.type=V.type,b.record=V.record},P=()=>{i.value="list"},j=async()=>{const V=b.type.toUpperCase()==="SRV"||c.value==="mc_srv",_=V?/^[a-zA-Z0-9._-]+$/:/^[a-zA-Z0-9]+$/;let z=b.name;if(z.length<1)return M.warning("请输入子域名名称");if(!_.test(z))return M.warning(V?"SRV支持英文、数字、下划线及点":"普通解析仅支持英文数字");c.value==="mc_srv"&&b.id===0&&(z.startsWith("_minecraft._tcp.")||(z="_minecraft._tcp."+z),b.type="SRV"),n.value=!0;const E=b.id!==0?"/api/domain/dns/edit":"/api/domain/dns/add";try{const F=await Z.post({url:E,baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`},data:{...b,name:z}});F.code===200?(M.success(F.msg||"操作成功"),await g(),i.value="list"):M.error(F.msg)}catch(F){M.error("请求失败: "+F.message)}finally{n.value=!1}},O=async V=>{const _=Ke.confirm({header:"确认删除",body:"确定要删除这条解析记录吗?删除后无法恢复。",onConfirm:async()=>{_.hide();try{const z=await Z.post({url:"/api/domain/dns/delete",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`},data:{id:V}});z.code===200?(M.success("删除成功"),g()):M.error(z.msg)}catch(z){M.error(z.message)}}})},$=()=>{d("update:visible",!1)};return(V,_)=>{const z=h("t-button"),E=h("t-empty"),F=h("t-tag"),X=h("t-tooltip"),q=h("t-loading"),H=h("t-tab-panel"),J=h("t-tabs"),ae=h("t-option"),le=h("t-select"),fe=h("t-form-item"),be=h("t-input"),Se=h("t-form"),Ee=h("t-dialog");return l(),W(Ee,{visible:a.visible,header:i.value==="list"?"MSLFrp 免费子域名管理":b.id===0?"创建新解析":"编辑解析",width:"650px",attach:"body",footer:!1,onClose:$},{default:o(()=>[i.value==="list"?(l(),x("div",Ub,[e("div",Mb,[t(z,{variant:"text",theme:"default",class:"!text-zinc-500 hover:!text-[var(--color-primary)]",onClick:_[0]||(_[0]=Y=>w(Ie)("https://www.mslmc.cn/docs/proxy/server-no-port/"))},{icon:o(()=>[t(w(ts))]),default:o(()=>[_[7]||(_[7]=m("查看文档 ",-1))]),_:1}),t(z,{theme:"primary",class:"!rounded-lg !font-bold shadow-sm shadow-[var(--color-primary-light)]/30",onClick:D},{icon:o(()=>[t(w(at))]),default:o(()=>[_[8]||(_[8]=m("新建解析 ",-1))]),_:1})]),t(q,{loading:f.value,text:"加载中..."},{default:o(()=>[e("div",Lb,[v.value.length===0?(l(),x("div",Bb,[t(E,{title:"暂无解析记录",description:"点击上方按钮创建一个吧"})])):K("",!0),(l(!0),x(re,null,xe(v.value,Y=>(l(),x("div",{key:Y.id,class:"group flex justify-between items-center bg-zinc-50/80 dark:bg-zinc-800/40 border border-zinc-200/80 dark:border-zinc-700/60 rounded-xl p-3 sm:p-4 transition-all duration-300 hover:border-[var(--color-primary)]/50 hover:bg-white dark:hover:bg-zinc-800 hover:shadow-sm"},[e("div",Tb,[e("div",Rb,[e("span",jb,S(Y.name),1),e("span",Pb,"."+S(Y.domain),1)]),e("div",Eb,[t(F,{size:"small",theme:Y.type==="SRV"?"warning":"primary",variant:"light",class:ue(["!rounded !font-bold !px-1.5 border",Y.type==="SRV"?"border-amber-500/20":"border-[var(--color-primary)]/20"])},{default:o(()=>[m(S(Y.type),1)]),_:2},1032,["theme","class"]),e("span",{class:"font-mono text-xs sm:text-[13px] font-bold text-zinc-700 dark:text-zinc-300 bg-zinc-200/50 dark:bg-zinc-900/50 border border-zinc-200 dark:border-zinc-700 px-1.5 py-0.5 rounded-md max-w-[200px] sm:max-w-[250px] truncate",title:Y.record},S(Y.record),9,Db)]),Y.type==="SRV"?(l(),x("div",Fb,[t(w(Bt),{class:"shrink-0"}),e("span",Ob,[_[9]||(_[9]=m("地址: ",-1)),e("strong",Nb,S(U(Y)),1)])])):K("",!0)]),e("div",Kb,[t(X,{content:"编辑"},{default:o(()=>[t(z,{shape:"circle",variant:"text",class:"hover:!bg-zinc-200 dark:hover:!bg-zinc-700",onClick:se=>N(Y)},{icon:o(()=>[t(w(so),{class:"text-zinc-600 dark:text-zinc-300"})]),_:1},8,["onClick"])]),_:2},1024),t(X,{content:"删除"},{default:o(()=>[t(z,{shape:"circle",variant:"text",theme:"danger",class:"hover:!bg-red-500/10",onClick:se=>O(Y.id)},{icon:o(()=>[t(w(ct))]),_:1},8,["onClick"])]),_:2},1024)])]))),128))])]),_:1},8,["loading"])])):(l(),x("div",qb,[e("div",Hb,[t(z,{variant:"text",size:"small",class:"!text-zinc-500 hover:!text-[var(--color-primary)] !rounded-md",onClick:P},{icon:o(()=>[t(w(os))]),default:o(()=>[_[10]||(_[10]=m(" 返回列表 ",-1))]),_:1})]),b.id===0?(l(),W(J,{key:0,modelValue:c.value,"onUpdate:modelValue":_[1]||(_[1]=Y=>c.value=Y),class:"!mb-4"},{default:o(()=>[t(H,{value:"mc_srv",label:"MC Java版隐藏端口"}),t(H,{value:"custom",label:"自定义解析"})]),_:1},8,["modelValue"])):K("",!0),t(Se,{"label-align":"top",data:b,class:"[&_.t-form__item]:!mb-5"},{default:o(()=>[t(fe,{label:"选择域名后缀"},{default:o(()=>[t(le,{modelValue:b.domain_id,"onUpdate:modelValue":_[2]||(_[2]=Y=>b.domain_id=Y),disabled:b.id!==0,placeholder:"请选择后缀",filterable:"",class:"!w-full"},{default:o(()=>[(l(!0),x(re,null,xe(I.value,Y=>(l(),W(ae,{key:Y.id,value:Y.id,label:Y.domain},{default:o(()=>[m(S(Y.domain),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["modelValue","disabled"])]),_:1}),p.value?(l(),W(fe,{key:0,label:"备注",class:"!mb-4"},{default:o(()=>[e("div",Wb,S(p.value),1)]),_:1})):K("",!0),t(fe,{label:"子域名称"},{help:o(()=>[..._[11]||(_[11]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"起一个你喜欢的前缀即可。",-1)])]),default:o(()=>[t(be,{modelValue:b.name,"onUpdate:modelValue":_[3]||(_[3]=Y=>b.name=Y),placeholder:"例如: myserver",class:"!w-full"},{"prefix-icon":o(()=>[c.value==="mc_srv"&&b.id===0?(l(),x("span",Gb," _minecraft._tcp. ")):K("",!0)]),_:1},8,["modelValue"])]),_:1}),c.value==="mc_srv"&&b.id===0?(l(),W(fe,{key:1,label:"选择隧道 (自动生成解析值)"},{default:o(()=>[t(le,{modelValue:R.value,"onUpdate:modelValue":_[4]||(_[4]=Y=>R.value=Y),placeholder:"点击选择已有的 TCP 隧道",onChange:T,class:"!w-full"},{default:o(()=>[(l(!0),x(re,null,xe(A.value,Y=>(l(),W(ae,{key:Y.id,value:Y.id,label:`${Y.name} (端口: ${Y.remote_port})`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1})):K("",!0),e("div",Jb,[t(fe,{label:"记录类型",class:"flex-1"},{default:o(()=>[t(le,{modelValue:b.type,"onUpdate:modelValue":_[5]||(_[5]=Y=>b.type=Y),class:"!w-full"},{default:o(()=>[t(ae,{label:"A (IPv4)",value:"A"}),t(ae,{label:"CNAME (别名)",value:"CNAME"}),t(ae,{label:"AAAA (IPv6)",value:"AAAA"}),t(ae,{label:"SRV (服务记录)",value:"SRV"})]),_:1},8,["modelValue"])]),_:1}),t(fe,{label:"解析记录值",class:"flex-1"},{default:o(()=>[t(be,{modelValue:b.record,"onUpdate:modelValue":_[6]||(_[6]=Y=>b.record=Y),placeholder:"例: 5 5 25565 node.mslmc.net",class:"!w-full !font-mono"},null,8,["modelValue"])]),_:1})]),e("div",Xb,[t(z,{theme:"default",variant:"base",class:"!bg-zinc-100 dark:!bg-zinc-800 !border-none !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 !rounded-lg !font-bold",onClick:P},{default:o(()=>[..._[12]||(_[12]=[m("取消",-1)])]),_:1}),t(z,{theme:"primary",loading:n.value,class:"!rounded-lg !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50",onClick:j},{default:o(()=>[m(S(b.id===0?"立即创建":"保存修改"),1)]),_:1},8,["loading"])])]),_:1},8,["data"])]))]),_:1},8,["visible","header"])}}}),Yb=me(Qb,[["__scopeId","data-v-d3ff2a1d"]]),Zb={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},ex={key:0,class:"flex items-center justify-center min-h-[70vh] list-item-anim"},tx={class:"design-card relative w-full max-w-md bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-xl p-10 text-center overflow-hidden"},ox={class:"relative z-10 flex flex-col items-center"},ax={class:"w-full flex flex-col gap-4"},sx={key:1,id:"app-space",class:"relative flex flex-col gap-6"},lx={key:0,class:"design-card list-item-anim bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-5 sm:p-6",style:{"animation-delay":"0s"}},rx={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},nx={class:"flex items-center gap-2"},ix={class:"grid grid-cols-2 lg:grid-cols-4 gap-4"},dx={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},cx={class:"flex items-center gap-2"},ux={class:"text-lg font-bold text-[var(--td-text-color-primary)] truncate"},mx={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},px={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},vx={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},fx={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},bx={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},xx={class:"text-[15px] font-bold text-[var(--td-text-color-primary)] font-mono mt-0.5"},gx={class:"grid grid-cols-1 lg:grid-cols-12 gap-6 items-start"},hx={class:"lg:col-span-5 xl:col-span-4 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.1s"}},yx={class:"flex items-center justify-between p-4 sm:p-5 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},_x={class:"flex items-center gap-1"},wx={class:"flex-1 overflow-y-auto custom-scrollbar p-3"},kx={key:0,class:"flex flex-col gap-2"},$x=["onClick"],zx={class:"flex-1 min-w-0 mr-3"},Cx={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},Ax={class:"shrink-0"},Sx={key:1,class:"h-full flex flex-col items-center justify-center opacity-60"},Ix={class:"lg:col-span-7 xl:col-span-8 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.2s"}},Vx={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 sm:p-6 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},Ux={class:"flex flex-col min-w-0"},Mx={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] m-0 truncate"},Lx={class:"text-xs text-[var(--td-text-color-secondary)] mt-1 truncate"},Bx={class:"shrink-0"},Tx={class:"flex-1 overflow-y-auto custom-scrollbar p-5 sm:p-6"},Rx={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"},jx={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},Px=["title"],Ex={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},Dx={class:"text-sm font-bold text-[var(--color-primary)] uppercase tracking-wide"},Fx={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},Ox={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},Nx={class:"p-4 bg-emerald-50/50 dark:bg-emerald-900/20 rounded-xl border border-emerald-200/50 dark:border-emerald-800/30 flex flex-col justify-center"},Kx={class:"text-lg font-mono font-extrabold text-emerald-600 dark:text-emerald-400"},qx={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},Hx={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},Wx={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},Gx={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},Jx={class:"mt-8"},Xx={key:1,class:"flex-1 flex flex-col items-center justify-center opacity-50 p-6 text-center"},Qx={class:"w-24 h-24 bg-zinc-100 dark:bg-zinc-800 rounded-full flex items-center justify-center mb-4"},Yx=de({__name:"index",setup(a){const s=y(!1),r=y(!1),d=()=>{B()},i=y("tKYvKk48Sq5kGAy12IJQxLEKhXx"),c=y(null),f=y(""),n=y(!1),v=y(null),I=y([]),u=y({}),R=y(null),b=te(()=>I.value.find(O=>O.id===R.value)||null),A=te(()=>b.value?u.value[b.value.node_id]||`未知节点 (${b.value.node_id})`:"");ze(()=>{const O=localStorage.getItem("msl-user-token");O&&(f.value=O,B())}),He(()=>{c.value&&!c.value.closed&&c.value.close()});async function p(){M.info("正在跳转至MSL用户中心登录...");try{const O=Xt(32),$=await Z.post({url:"/api/oauth/createAppLogin",baseURL:"https://user.mslmc.net",data:{appid:i.value,csrf:O}});$.data.ssid?(c.value=Bs($.data.url,"登录到您的MSL账户",600,600),setTimeout(()=>k(O,$.data.ssid),1e3)):M.error($.msg)}catch(O){M.error(O.message)}}async function k(O,$){if(!c.value?.closed){try{const V=await Z.get({url:"/api/oauth/appLogin",baseURL:"https://user.mslmc.net",params:{csrf:O,ssid:$}});if(V.data.token){c.value&&c.value.close(),M.success("登录成功"),f.value=V.data.token,localStorage.setItem("msl-user-token",V.data.token),B();return}}catch(V){M.error("登录失败!"+V.message);return}setTimeout(()=>k(O,$),1e3)}}const g=O=>{if(O===0)return"0 B";const $=1024,V=["B","KB","MB","GB","TB"],_=Math.floor(Math.log(O)/Math.log($));return parseFloat((O/Math.pow($,_)).toFixed(2))+" "+V[_]};async function B(){n.value=!0;try{const[O,$]=await Promise.all([Z.get({url:"/api/frp/userInfo",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${f.value}`}}),Z.get({url:"/api/frp/nodeList",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${f.value}`}})]);if(O.code===200)v.value=O.data;else{M.warning("登录已过期,请重新登录~"),f.value="",localStorage.removeItem("msl-user-token");return}if($.code===200){const _={};$.data.forEach(z=>{_[z.id]=z.node}),u.value=_}const V=await Z.get({url:"/api/frp/getTunnelList",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${f.value}`}});V.code===200&&(I.value=V.data,I.value.length>0&&(R.value=I.value[0].id))}catch(O){M.error("数据加载失败: "+O.message)}finally{n.value=!1}}const C=y(!1);async function T(){if(b.value){C.value=!0;try{const O=await Z.get({url:"/api/frp/getTunnelConfig",baseURL:"https://user.mslmc.net",params:{id:b.value.id},headers:{Authorization:`Bearer ${f.value}`}});O.code===200?await Jt(`${b.value.name} | ${A.value}`,O.data,"MSLFrp"):M.error(O.msg)}catch(O){M.error("获取配置失败: "+O.message)}C.value=!1}}const U=()=>{r.value=!0};async function D(){try{await Z.get({url:"/api/user/logout",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${f.value}`}}),f.value="",v.value=null,I.value=[],localStorage.removeItem("msl-user-token"),M.success("已退出登录")}catch(O){M.error("退出失败: "+O.message)}}async function N(){await B(),M.success("数据已更新")}const P=y(!1);async function j(){if(b.value){P.value=!0;try{const O=await Z.post({url:"/api/frp/deleteTunnel",baseURL:"https://user.mslmc.net",data:{id:b.value.id},headers:{Authorization:`Bearer ${f.value}`}});O.code===200?(M.success("隧道删除成功"),R.value=null,await B()):M.error(O.msg||"删除失败")}catch(O){M.error("操作失败: "+O.message)}finally{P.value=!1}}}return(O,$)=>{const V=h("t-button"),_=h("t-loading"),z=h("t-tag"),E=h("t-popconfirm"),F=h("t-icon");return l(),x("div",Zb,[f.value===""?(l(),x("div",ex,[e("div",tx,[$[11]||($[11]=e("div",{class:"absolute -top-20 -right-20 w-60 h-60 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),$[12]||($[12]=e("div",{class:"absolute -bottom-10 -left-10 w-40 h-40 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),e("div",ox,[$[8]||($[8]=e("div",{class:"w-20 h-20 rounded-2xl flex items-center justify-center mb-6 shadow-sm"},[e("img",{src:"https://user.mslmc.net/assets/png/msl-user-msl-user-logo-512-transparent-BjXu1GPW.png",alt:"msl-user-logo",class:"text-[var(--color-primary)]"})],-1)),$[9]||($[9]=e("h2",{class:"text-2xl font-extrabold text-[var(--td-text-color-primary)] !mb-2 tracking-tight"},"欢迎登录 MSLFrp",-1)),$[10]||($[10]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] !mb-8 font-medium"},"登录您的 MSL 账户以使用内网穿透服务",-1)),e("div",ax,[t(V,{block:"",theme:"primary",size:"large",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50",onClick:p},{icon:o(()=>[t(w(mo))]),default:o(()=>[$[6]||($[6]=m(" 跳转用户中心登录 ",-1))]),_:1}),t(V,{theme:"default",variant:"outline",block:"",size:"large",class:"!rounded-xl !h-12 !font-bold !bg-white/50 dark:!bg-zinc-900/50 !border-zinc-200 dark:!border-zinc-700 hover:!text-[var(--color-primary)] hover:!border-[var(--color-primary)]/50 !ml-0",onClick:$[0]||($[0]=X=>w(Ie)("https://user.mslmc.net/register"))},{icon:o(()=>[t(w(fl))]),default:o(()=>[$[7]||($[7]=m(" 注册 MSL 账户 ",-1))]),_:1})])])])])):(l(),x("div",sx,[t(_,{attach:"#app-space",loading:n.value,text:"加载数据中..."},null,8,["loading"]),v.value?(l(),x("div",lx,[e("div",rx,[$[16]||($[16]=e("div",{class:"flex flex-col"},[e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"MSLFrp 用户信息")],-1)),e("div",nx,[t(V,{variant:"outline",theme:"success",size:"small",class:"!rounded-lg hover:!bg-[var(--color-success)]/10",onClick:$[1]||($[1]=X=>w(Ie)("https://user.mslmc.net/store/buy"))},{default:o(()=>[...$[13]||($[13]=[m("订阅会员服务",-1)])]),_:1}),t(z,{theme:"primary",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[m(S(v.value.user_group_name),1)]),_:1}),$[15]||($[15]=e("div",{class:"w-px h-4 bg-zinc-200 dark:bg-zinc-700 mx-1"},null,-1)),t(E,{content:"确认退出登录吗?",onConfirm:D},{default:o(()=>[t(V,{variant:"text",theme:"danger",size:"small",class:"!rounded-lg hover:!bg-red-500/10"},{default:o(()=>[...$[14]||($[14]=[m("退出登录",-1)])]),_:1})]),_:1})])]),e("div",ix,[e("div",dx,[$[17]||($[17]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"用户昵称",-1)),e("div",cx,[e("span",ux,S(v.value.name),1),t(z,{theme:v.value.realNameStatus?"success":"warning",variant:"light",size:"small",class:"!rounded cursor-pointer !font-bold !px-1.5",onClick:$[2]||($[2]=X=>w(Ie)("https://user.mslmc.net/user/profile"))},{default:o(()=>[m(S(v.value.realNameStatus?"已实名":"未实名"),1)]),_:1},8,["theme"])])]),e("div",mx,[$[19]||($[19]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"隧道限额",-1)),e("div",px,[m(S(v.value.maxTunnelCount)+" ",1),$[18]||($[18]=e("span",{class:"text-sm font-medium text-zinc-500"},"条",-1))])]),e("div",vx,[$[21]||($[21]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"速率限制",-1)),e("div",fx,[m(S(v.value.boundLimit/1024*8)+" ",1),$[20]||($[20]=e("span",{class:"text-sm font-medium text-zinc-500"},"Mbps",-1))])]),e("div",bx,[$[22]||($[22]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"会员到期时间",-1)),e("div",xx,S(v.value.outdated===3749682420?"长期有效":w(Ms)(v.value.outdated)),1)])])])):K("",!0),e("div",gx,[e("div",hx,[e("div",yx,[$[26]||($[26]=e("h3",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"我的隧道",-1)),e("div",_x,[t(V,{size:"small",variant:"text",class:"!px-2 hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50",loading:n.value,onClick:N},{icon:o(()=>[t(w(Pe))]),default:o(()=>[$[23]||($[23]=m("刷新 ",-1))]),_:1},8,["loading"]),t(V,{size:"small",variant:"text",class:"!px-2 hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)]",onClick:$[3]||($[3]=X=>s.value=!0)},{icon:o(()=>[t(w(bt))]),default:o(()=>[$[24]||($[24]=m("子域名 ",-1))]),_:1}),t(V,{size:"small",theme:"primary",class:"!px-3 !ml-1 !rounded-lg",onClick:U},{icon:o(()=>[t(w(at))]),default:o(()=>[$[25]||($[25]=m("新建 ",-1))]),_:1})])]),e("div",wx,[I.value.length>0?(l(),x("div",kx,[(l(!0),x(re,null,xe(I.value,X=>(l(),x("div",{key:X.id,class:ue(["group flex items-center p-3 rounded-xl cursor-pointer transition-all duration-300 border",R.value===X.id?"bg-[var(--color-primary)]/10 border-[var(--color-primary)]/30 shadow-sm":"bg-transparent border-transparent hover:bg-zinc-50 dark:hover:bg-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600"]),onClick:q=>R.value=X.id},[e("div",{class:ue(["w-10 h-10 rounded-lg flex items-center justify-center shrink-0 mr-3 transition-colors",R.value===X.id?"bg-[var(--color-primary)] text-white shadow-md shadow-[var(--color-primary)]/30":"bg-zinc-100 dark:bg-zinc-900 text-[var(--td-text-color-secondary)] group-hover:text-zinc-800 dark:group-hover:text-zinc-200"])},[t(w(st),{size:"20px"})],2),e("div",zx,[e("div",{class:ue(["font-bold text-sm truncate transition-colors",R.value===X.id?"text-[var(--color-primary)]":"text-[var(--td-text-color-primary)]"])},S(X.name),3),e("div",Cx,S(u.value[X.node_id]||`Node ${X.node_id}`),1)]),e("div",Ax,[X.status===1?(l(),W(z,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5"},{default:o(()=>[...$[27]||($[27]=[m("在线",-1)])]),_:1})):(l(),W(z,{key:1,theme:"default",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5 !text-zinc-500"},{default:o(()=>[...$[28]||($[28]=[m("未启动",-1)])]),_:1}))])],10,$x))),128))])):(l(),x("div",Sx,[t(w(st),{size:"32px",class:"text-zinc-400 mb-2"}),$[29]||($[29]=e("span",{class:"text-sm text-zinc-500 font-medium"},"暂无隧道,请先新建",-1))]))])]),e("div",Ix,[b.value?(l(),x(re,{key:0},[e("div",Vx,[e("div",Ux,[e("h3",Mx,S(b.value.name),1),e("p",Lx,S(b.value.remarks||"暂无备注"),1)]),e("div",Bx,[t(E,{content:"确认删除此隧道吗?将无法恢复!",theme:"danger",placement:"bottom-right",onConfirm:j},{default:o(()=>[t(V,{theme:"danger",class:"!rounded-lg hover:!bg-red-500 hover:!text-white transition-colors",loading:P.value},{icon:o(()=>[t(F,{name:"delete"})]),default:o(()=>[$[30]||($[30]=m(" 删除隧道 ",-1))]),_:1},8,["loading"])]),_:1})])]),e("div",Tx,[e("div",Rx,[e("div",jx,[$[31]||($[31]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"所在节点",-1)),e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate",title:A.value},S(A.value),9,Px)]),e("div",Ex,[$[32]||($[32]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"协议类型",-1)),e("span",Dx,S(b.value.type),1)]),e("div",Fx,[$[33]||($[33]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"本地地址",-1)),e("span",Ox,S(b.value.local_ip)+":"+S(b.value.local_port),1)]),e("div",Nx,[$[34]||($[34]=e("span",{class:"text-[11px] font-extrabold text-emerald-600/80 dark:text-emerald-500/80 uppercase tracking-widest mb-1.5"},"远程公网端口",-1)),e("span",Kx,S(b.value.remote_port),1)]),e("div",qx,[$[35]||($[35]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"今日流量",-1)),e("span",Hx,S(g(b.value.today_traffic*1024*1024)),1)]),e("div",Wx,[$[36]||($[36]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"总流量",-1)),e("span",Gx,S(g(b.value.total_traffic*1024*1024)),1)])]),e("div",Jx,[t(V,{theme:"primary",size:"large",loading:C.value,block:"",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow text-base",onClick:T},{icon:o(()=>[t(w(_t))]),default:o(()=>[$[37]||($[37]=m(" 使用此隧道 ",-1))]),_:1},8,["loading"])])])],64)):(l(),x("div",Xx,[e("div",Qx,[t(w(bt),{size:"40px",class:"text-zinc-400"})]),$[38]||($[38]=e("h3",{class:"text-base font-bold text-zinc-700 dark:text-zinc-300 mb-1"},"未选择隧道",-1)),$[39]||($[39]=e("p",{class:"text-sm text-zinc-500"},"请在左侧列表中选择一个隧道以查看详细信息和连接参数",-1))]))])])])),r.value?(l(),W(Vb,{key:2,visible:r.value,"onUpdate:visible":$[4]||($[4]=X=>r.value=X),token:f.value,onSuccess:d},null,8,["visible","token"])):K("",!0),s.value?(l(),W(Yb,{key:3,visible:s.value,"onUpdate:visible":$[5]||($[5]=X=>s.value=X),token:f.value,tunnels:I.value},null,8,["visible","token","tunnels"])):K("",!0)])}}}),Zx=me(Yx,[["__scopeId","data-v-8adb5690"]]);async function eg(){return await Z.get({url:"/query/p2p_server",baseURL:"https://api.mslmc.cn/v3"})}const tg={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8"},og={class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},ag={key:0},sg={key:1},lg={class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},rg={key:0},ng={key:1},ig={class:"flex items-center gap-3 w-full sm:w-[28rem]"},dg={class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},cg={key:0},ug={key:1},mg={class:"mt-8 pt-5 border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60"},pg=de({__name:"MSLP2P",setup(a){const s=qe({roomId:"",roomKey:"",bindPort:25565,isHoster:!0}),r={roomId:[{required:!0,message:"请输入房间号",type:"error"}],roomKey:[{required:!0,message:"请输入房间密钥",type:"error"}],bindPort:[{required:!0,message:"请输入绑定端口",type:"error"}]},d=async({validateResult:c})=>{c===!0?await i(s.isHoster,s.roomId,s.roomKey,s.bindPort):M.warning("请检查参数是否全部填写完成!")};async function i(c,f,n,v){try{const I=await eg();let u;c?u=`serverAddr = "${I.ip}" +serverPort = ${I.port} + +[[proxies]] +name = "${f}" +type = "xtcp" +secretKey = "${n}" +localIP = "127.0.0.1" +localPort = ${v}`:u=`serverAddr = "${I.ip}" +serverPort = ${I.port} + +[[visitors]] +name = "p2p_visitor" +type = "xtcp" +serverName = "${f}" +secretKey = "${n}" +bindAddr = "127.0.0.1" +bindPort = ${v}`,await Jt(c?`「联机 - 房主」${f}`:`「联机 - 访客」${f}`,u,"MSL P2P")}catch(I){M.error(`创建联机隧道失败!${I.message}`)}}return(c,f)=>{const n=h("t-radio-button"),v=h("t-radio-group"),I=h("t-form-item"),u=h("t-input"),R=h("t-button"),b=h("t-form");return l(),x("div",null,[e("div",tg,[f[9]||(f[9]=e("div",{class:"mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},[e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"MSL P2P 联机隧道")],-1)),t(b,{data:s,rules:r,"label-align":"top","reset-type":"initial",onSubmit:d},{default:o(()=>[t(I,{label:"请选择联机类型",name:"isHoster"},{default:o(()=>[t(v,{modelValue:s.isHoster,"onUpdate:modelValue":f[0]||(f[0]=A=>s.isHoster=A),variant:"default-filled"},{default:o(()=>[t(n,{value:!0},{default:o(()=>[...f[5]||(f[5]=[m("创建房间 - 房主",-1)])]),_:1}),t(n,{value:!1},{default:o(()=>[...f[6]||(f[6]=[m("加入房间 - 成员",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(I,{label:"房间号",name:"roomId"},{help:o(()=>[e("span",og,[s.isHoster?(l(),x("span",ag,"建议填写您的 QQ 号码。")):(l(),x("span",sg,"请输入房间创建者提供的房间号。"))])]),default:o(()=>[t(u,{modelValue:s.roomId,"onUpdate:modelValue":f[1]||(f[1]=A=>s.roomId=A),placeholder:"请输入房间号",class:"!w-full sm:!w-96"},null,8,["modelValue"])]),_:1}),t(I,{label:"房间密钥",name:"roomKey"},{help:o(()=>[e("span",lg,[s.isHoster?(l(),x("span",rg,"随便写一个你喜欢的密钥。")):(l(),x("span",ng,"请输入房间创建者提供的密钥。"))])]),default:o(()=>[e("div",ig,[t(u,{modelValue:s.roomKey,"onUpdate:modelValue":f[2]||(f[2]=A=>s.roomKey=A),placeholder:"请输入房间密钥",class:"!flex-1"},null,8,["modelValue"]),t(Rt,{name:"fade"},{default:o(()=>[s.isHoster?(l(),W(R,{key:0,theme:"default",variant:"base",class:"shrink-0 !bg-zinc-100 dark:!bg-zinc-800/80 !border-none !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 !rounded-lg",onClick:f[3]||(f[3]=A=>{s.roomKey=w(Xt)(16)})},{default:o(()=>[...f[7]||(f[7]=[m(" 随机生成 ",-1)])]),_:1})):K("",!0)]),_:1})])]),_:1}),t(I,{label:"绑定端口",name:"bindPort"},{help:o(()=>[e("span",dg,[s.isHoster?(l(),x("span",cg,"请输入游戏内提示的开放联机端口。")):(l(),x("span",ug,"建议保持默认。"))])]),default:o(()=>[t(u,{modelValue:s.bindPort,"onUpdate:modelValue":f[4]||(f[4]=A=>s.bindPort=A),placeholder:"请输入绑定端口",class:"!w-full sm:!w-96"},null,8,["modelValue"])]),_:1}),e("div",mg,[t(R,{theme:"primary",type:"submit",class:"!rounded-xl !font-bold !px-8 shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[...f[8]||(f[8]=[m("添加隧道",-1)])]),_:1})])]),_:1},8,["data"])])])}}}),vg=me(pg,[["__scopeId","data-v-31ad130e"]]),fg={class:"flex justify-between items-center w-full"},bg={class:"truncate"},xg={class:"flex gap-1.5 shrink-0 ml-3"},gg={class:"w-full flex flex-col gap-2.5"},hg={class:"bg-[var(--td-bg-color-secondarycontainer)] rounded-[var(--td-radius-medium)] p-3 border border-dashed border-[var(--td-component-border)]"},yg={class:"m-0 whitespace-pre-wrap break-all text-[13px] text-[var(--td-text-color-primary)] leading-[1.6]"},_g=de({__name:"CreateTunnelDialog",props:{visible:{type:Boolean},token:{}},emits:["update:visible","success"],setup(a,{emit:s}){const r=a,d=s,i=y(!1),c=y(!1),f=y([]),n=qe({nodeId:null,proxyType:"tcp",localIp:"127.0.0.1",localPort:"25565",remotePort:"",proxyName:"",domain:""}),v=te(()=>f.value.find(A=>A.nodeId===n.nodeId)||null),I=te(()=>{const A=new Map;return f.value.forEach(p=>{const k=p.region||"unknown";if(!A.has(k)){let g=k;k==="oversea"?g="海外节点":k==="cn"?g="国内节点":g="默认节点",A.set(k,{label:g,value:k,children:[]})}A.get(k).children.push(p)}),Array.from(A.values())}),u=()=>{n.remotePort=(Math.floor(Math.random()*55536)+1e4).toString(),n.proxyName="MSLX_"+Xt(6)},R=async()=>{i.value=!0;try{const A=await Z.get({url:"/auth/node/list",baseURL:"https://api.mefrp.com/api",headers:{Authorization:`Bearer ${r.token}`}},{withToken:!1});A&&(f.value=A.filter(p=>!p.isDisabled),r.visible&&f.value.length>0&&!n.nodeId&&(n.nodeId=f.value[0].nodeId,u()))}catch(A){M.error("加载节点失败: "+A.message)}finally{i.value=!1}};_e(()=>r.visible,A=>{A&&(f.value.length>0?(n.nodeId||(n.nodeId=f.value[0].nodeId),u()):R())});const b=async()=>{if(!n.nodeId){M.warning("请选择一个节点");return}c.value=!0;try{await Z.post({url:"/auth/proxy/create",baseURL:"https://api.mefrp.com/api",headers:{Authorization:`Bearer ${r.token}`},data:{accessKey:"",headerXFromWhere:"",hostHeaderRewrite:"",proxyProtocolVersion:"",nodeId:n.nodeId,proxyName:n.proxyName,proxyType:n.proxyType,localIp:n.localIp,localPort:parseInt(n.localPort),remotePort:parseInt(n.remotePort),domain:n.domain,useCompression:!1,useEncryption:!1}},{withToken:!1}),M.success(`隧道 ${n.proxyName} 创建成功!`),d("success"),d("update:visible",!1)}catch(A){M.error("创建异常: "+A.message)}finally{c.value=!1}};return ze(()=>{r.token&&R()}),(A,p)=>{const k=h("t-tag"),g=h("t-option"),B=h("t-option-group"),C=h("t-select"),T=h("t-form-item"),U=h("t-input"),D=h("t-col"),N=h("t-button"),P=h("t-row"),j=h("t-form"),O=h("t-loading"),$=h("t-dialog");return l(),W($,{attach:"body",visible:a.visible,header:"新建 ME Frp 隧道",width:"580px","confirm-btn":{content:"提交创建",loading:c.value},onConfirm:b,onClose:p[7]||(p[7]=V=>d("update:visible",!1))},{default:o(()=>[t(O,{loading:i.value},{default:o(()=>[t(j,{data:n,"label-align":"right","label-width":100,class:"pt-2.5 overflow-x-hidden [&_.t-form__item]:!mb-[22px]"},{default:o(()=>[t(T,{label:"选择节点",name:"nodeId"},{default:o(()=>[t(C,{modelValue:n.nodeId,"onUpdate:modelValue":p[0]||(p[0]=V=>n.nodeId=V),placeholder:"请选择节点",onChange:u},{default:o(()=>[(l(!0),x(re,null,xe(I.value,V=>(l(),W(B,{key:V.value,label:V.label},{default:o(()=>[(l(!0),x(re,null,xe(V.children,_=>(l(),W(g,{key:_.nodeId,value:_.nodeId,label:_.name},{default:o(()=>[e("div",fg,[e("span",bg,S(_.name),1),e("div",xg,[t(k,{size:"small",variant:"outline",theme:"primary"},{default:o(()=>[m(S(_.bandwidth||"未知带宽"),1)]),_:2},1024),t(k,{size:"small",theme:_.isOnline?"success":"danger"},{default:o(()=>[m(S(_.isOnline?"在线":"离线"),1)]),_:2},1032,["theme"])])])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),v.value?(l(),W(T,{key:0,label:"节点详情"},{default:o(()=>[e("div",gg,[e("div",hg,[e("pre",yg,S(v.value.description||"此节点暂无备注"),1)])])]),_:1})):K("",!0),t(T,{label:"隧道类型"},{default:o(()=>[t(C,{modelValue:n.proxyType,"onUpdate:modelValue":p[1]||(p[1]=V=>n.proxyType=V)},{default:o(()=>[v.value?.allowType.includes("tcp")?(l(),W(g,{key:0,label:"TCP",value:"tcp"})):K("",!0),v.value?.allowType.includes("udp")?(l(),W(g,{key:1,label:"UDP",value:"udp"})):K("",!0),v.value?.allowType.includes("http")?(l(),W(g,{key:2,label:"HTTP",value:"http"})):K("",!0),v.value?.allowType.includes("https")?(l(),W(g,{key:3,label:"HTTPS",value:"https"})):K("",!0)]),_:1},8,["modelValue"])]),_:1}),t(P,{gutter:[16,20]},{default:o(()=>[t(D,{xs:12,sm:6},{default:o(()=>[t(T,{label:"隧道名称"},{default:o(()=>[t(U,{modelValue:n.proxyName,"onUpdate:modelValue":p[2]||(p[2]=V=>n.proxyName=V)},null,8,["modelValue"])]),_:1})]),_:1}),t(D,{xs:12,sm:6},{default:o(()=>[t(T,{label:"远程端口"},{default:o(()=>[t(U,{modelValue:n.remotePort,"onUpdate:modelValue":p[3]||(p[3]=V=>n.remotePort=V)},{suffix:o(()=>[t(N,{variant:"text",size:"small",onClick:u},{default:o(()=>[...p[8]||(p[8]=[m("随机",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(D,{xs:12,sm:6},{default:o(()=>[t(T,{label:"本地IP"},{default:o(()=>[t(U,{modelValue:n.localIp,"onUpdate:modelValue":p[4]||(p[4]=V=>n.localIp=V)},null,8,["modelValue"])]),_:1})]),_:1}),t(D,{xs:12,sm:6},{default:o(()=>[t(T,{label:"本地端口"},{default:o(()=>[t(U,{modelValue:n.localPort,"onUpdate:modelValue":p[5]||(p[5]=V=>n.localPort=V)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),n.proxyType.includes("http")?(l(),W(T,{key:1,label:"绑定域名",class:"mt-1"},{default:o(()=>[t(U,{modelValue:n.domain,"onUpdate:modelValue":p[6]||(p[6]=V=>n.domain=V),placeholder:"输入绑定的域名"},null,8,["modelValue"])]),_:1})):K("",!0)]),_:1},8,["data"])]),_:1},8,["loading"])]),_:1},8,["visible","confirm-btn"])}}}),wg={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},kg={key:0,class:"flex items-center justify-center min-h-[70vh] list-item-anim"},$g={class:"design-card relative w-full max-w-md bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-xl p-10 text-center overflow-hidden"},zg={class:"relative z-10 flex flex-col items-center"},Cg={class:"mt-6 pt-4 border-t border-dashed border-zinc-200 dark:border-zinc-700 w-full"},Ag={key:1,id:"app-space",class:"relative flex flex-col gap-6"},Sg={key:0,class:"design-card list-item-anim bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-5 sm:p-6",style:{"animation-delay":"0s"}},Ig={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},Vg={class:"flex items-center gap-2"},Ug={class:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Mg={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Lg={class:"flex items-center gap-2"},Bg={class:"text-lg font-bold text-[var(--td-text-color-primary)] truncate"},Tg={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Rg={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},jg={class:"text-[var(--color-primary)]"},Pg={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Eg={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},Dg={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Fg={class:"text-[15px] font-bold text-[var(--color-success)] font-mono mt-0.5"},Og={class:"grid grid-cols-1 lg:grid-cols-12 gap-6 items-start"},Ng={class:"lg:col-span-5 xl:col-span-4 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.1s"}},Kg={class:"flex items-center justify-between p-4 sm:p-5 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},qg={class:"flex items-center gap-1"},Hg={class:"flex-1 overflow-y-auto custom-scrollbar p-3"},Wg={key:0,class:"flex flex-col gap-2"},Gg=["onClick"],Jg={class:"flex-1 min-w-0 mr-3"},Xg={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},Qg={class:"shrink-0"},Yg={key:1,class:"h-full flex flex-col items-center justify-center opacity-60"},Zg={class:"lg:col-span-7 xl:col-span-8 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.2s"}},eh={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 sm:p-6 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},th={class:"flex flex-col min-w-0"},oh={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] m-0 truncate"},ah={class:"text-xs text-[var(--td-text-color-secondary)] mt-1 truncate font-mono bg-zinc-100 dark:bg-zinc-800/50 w-max px-2 py-0.5 rounded"},sh={class:"shrink-0"},lh={class:"flex-1 overflow-y-auto custom-scrollbar p-5 sm:p-6"},rh={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 gap-4"},nh={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},ih=["title"],dh={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},ch={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},uh={class:"p-4 bg-emerald-50/50 dark:bg-emerald-900/20 rounded-xl border border-emerald-200/50 dark:border-emerald-800/30 flex flex-col justify-center"},mh={class:"text-lg font-mono font-extrabold text-emerald-600 dark:text-emerald-400"},ph={class:"flex items-center gap-2"},vh={key:0,class:"w-2 h-2 rounded-full bg-[var(--color-success)] animate-pulse"},fh={class:"mt-8"},bh={key:1,class:"flex-1 flex flex-col items-center justify-center opacity-50 p-6 text-center"},xh={class:"w-24 h-24 bg-zinc-100 dark:bg-zinc-800 rounded-full flex items-center justify-center mb-4"},gh=de({__name:"index",setup(a){const s=y(!1),r=y(""),d=y(!1),i=y(null),c=y([]),f=y({}),n=y(null),v=y("password"),I=y({username:"",password:"",captchaCallback:"",token:""}),u=y(!1),R=()=>{C()},b=te(()=>c.value.find(V=>V.proxyId===n.value)||null),A=te(()=>b.value?f.value[b.value.nodeId]||`节点 (${b.value.nodeId})`:"");ze(()=>{const V=localStorage.getItem("mefrp-user-token");V&&(r.value=V,C())});const p=()=>{const z=(window.screen.width-500)/2,E=(window.screen.height-600)/2;window.open("https://www.mefrp.com/3rdparty/captcha?client=MSLX","MEFrpCaptcha",`width=500,height=600,left=${z},top=${E},resizable=yes,scrollbars=yes,status=no,toolbar=no,menubar=no,location=no`),M.info("请在弹出的独立窗口中完成验证,并将获取到的验证码粘贴到下方")};async function k(){if(!I.value.username||!I.value.password||!I.value.captchaCallback){M.warning("请填写完整的账号、密码和验证码");return}u.value=!0;try{const _=atob(I.value.captchaCallback).split("||");if(_.length!==2)throw new Error("验证码格式错误");const z=await Z.post({url:"/public/login",baseURL:"https://api.mefrp.com/api",data:{username:I.value.username,password:I.value.password,vaptchaToken:_[0],vaptchaServer:_[1]}},{withToken:!1});z&&z.token?(M.success("登录成功"),await g(z.token)):M.error("登录失败:未获取到 Token")}catch(V){M.error("登录异常: "+V.message)}finally{u.value=!1}}async function g(V){const _=V||I.value.token;if(!_){M.warning("请输入Token");return}u.value=!0;try{const z=await Z.get({url:"/auth/user/info",baseURL:"https://api.mefrp.com/api",headers:{Authorization:`Bearer ${_}`}},{withToken:!1});z&&(M.success("Token验证成功"),r.value=_,localStorage.setItem("mefrp-user-token",_),i.value=z,await C())}catch(z){M.error("验证失败: "+z.message)}finally{u.value=!1}}const B=V=>{if(!V||V===0)return"0 B";const _=V*1024,z=1024,E=["B","KB","MB","GB","TB"],F=Math.floor(Math.log(_)/Math.log(z));return parseFloat((_/Math.pow(z,F)).toFixed(2))+" "+E[F]};async function C(){d.value=!0;try{const V=await Z.get({url:"/auth/user/info",baseURL:"https://api.mefrp.com/api",headers:{Authorization:`Bearer ${r.value}`}},{withToken:!1});if(V)i.value=V;else{N();return}const _=await Z.get({url:"/auth/proxy/list",baseURL:"https://api.mefrp.com/api",headers:{Authorization:`Bearer ${r.value}`}},{withToken:!1});if(_){const z={};(_.nodes||[]).forEach(E=>{z[E.nodeId]=E.name}),f.value=z,c.value=_.proxies||[],c.value.length>0&&!n.value&&(n.value=c.value[0].proxyId)}}catch(V){M.error("数据加载失败,已自动退出ME Frp: "+V.message),N()}finally{d.value=!1}}const T=y(!1);async function U(){if(b.value){T.value=!0;try{const V=await Z.post({url:"/auth/proxy/config",baseURL:"https://api.mefrp.com/api",data:{proxyId:b.value.proxyId,format:"toml"},headers:{Authorization:`Bearer ${r.value}`}},{withToken:!1});V&&V.config?(await Jt(`${b.value.proxyName} | ${A.value}`,V.config,"ME Frp"),M.success("配置已成功加载")):M.error("获取配置失败")}catch(V){M.error("获取配置失败: "+V.message)}finally{T.value=!1}}}const D=()=>{s.value=!0};function N(){r.value="",i.value=null,c.value=[],n.value=null,localStorage.removeItem("mefrp-user-token"),M.success("已退出登录")}async function P(){await C(),M.success("数据已更新")}const j=()=>{const z=(window.screen.width-800)/2,E=(window.screen.height-600)/2;window.open(`https://www.mefrp.com/3rdparty/sign?client=MSL&&token=${r.value}`,"MEFrpSign",`width=800,height=600,left=${z},top=${E},resizable=yes,scrollbars=yes`),M.info("请在弹出的窗口中完成签到,完成后点击右上角刷新数据")},O=y(!1);async function $(){if(b.value){O.value=!0;try{await Z.post({url:"/auth/proxy/delete",baseURL:"https://api.mefrp.com/api",data:{proxyId:b.value.proxyId},headers:{Authorization:`Bearer ${r.value}`}},{withToken:!1}),M.success("隧道删除成功"),n.value=null,await C()}catch(V){M.error("删除失败: "+V.message)}finally{O.value=!1}}}return(V,_)=>{const z=h("t-radio-button"),E=h("t-radio-group"),F=h("t-input"),X=h("t-form-item"),q=h("t-button"),H=h("t-form"),J=h("t-loading"),ae=h("t-tag"),le=h("t-popconfirm"),fe=h("t-icon");return l(),x("div",wg,[r.value===""?(l(),x("div",kg,[e("div",$g,[_[17]||(_[17]=e("div",{class:"absolute -top-20 -right-20 w-60 h-60 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),_[18]||(_[18]=e("div",{class:"absolute -bottom-10 -left-10 w-40 h-40 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),e("div",zg,[_[14]||(_[14]=e("div",{class:"w-20 h-20 bg-[var(--color-primary)]/10 rounded-2xl flex items-center justify-center mb-6 shadow-sm border border-[var(--color-primary)]/20"},[e("img",{src:"https://www.mefrp.com/favicon.svg",alt:"logo",size:"48px",class:"text-[var(--color-primary)]"})],-1)),_[15]||(_[15]=e("h2",{class:"text-2xl font-extrabold text-[var(--td-text-color-primary)] !mb-2 tracking-tight"},"登录 ME Frp",-1)),_[16]||(_[16]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] !mb-6 font-medium"},"选择您的登录方式以接入内网穿透服务",-1)),t(E,{modelValue:v.value,"onUpdate:modelValue":_[0]||(_[0]=be=>v.value=be),variant:"default-filled",class:"!mb-6"},{default:o(()=>[t(z,{value:"password"},{default:o(()=>[..._[8]||(_[8]=[m("账号密码登录",-1)])]),_:1}),t(z,{value:"token"},{default:o(()=>[..._[9]||(_[9]=[m("Token 登录",-1)])]),_:1})]),_:1},8,["modelValue"]),v.value==="password"?(l(),W(H,{key:0,data:I.value,"label-width":"0",onSubmit:k,class:"w-full text-left"},{default:o(()=>[t(X,{name:"username",class:"!mb-4"},{default:o(()=>[t(F,{modelValue:I.value.username,"onUpdate:modelValue":_[1]||(_[1]=be=>I.value.username=be),size:"large",placeholder:"请输入 ME Frp 账号",clearable:"",class:"!rounded-xl"},{"prefix-icon":o(()=>[t(w(mo),{class:"opacity-60"})]),_:1},8,["modelValue"])]),_:1}),t(X,{name:"password",class:"!mb-4"},{default:o(()=>[t(F,{modelValue:I.value.password,"onUpdate:modelValue":_[2]||(_[2]=be=>I.value.password=be),size:"large",type:"password",placeholder:"请输入密码",clearable:"",class:"!rounded-xl"},{"prefix-icon":o(()=>[t(w(Ot),{class:"opacity-60"})]),_:1},8,["modelValue"])]),_:1}),t(X,{name:"captchaCallback",class:"!mb-6"},{default:o(()=>[t(F,{modelValue:I.value.captchaCallback,"onUpdate:modelValue":_[3]||(_[3]=be=>I.value.captchaCallback=be),size:"large",placeholder:"请粘贴获取到的验证码",clearable:"",class:"!rounded-xl pr-1"},{"prefix-icon":o(()=>[t(w(as),{class:"opacity-60"})]),suffix:o(()=>[t(q,{variant:"text",size:"small",theme:"primary",class:"!bg-[var(--color-primary)]/10 hover:!bg-[var(--color-primary)]/20 !rounded-lg",onClick:p},{default:o(()=>[..._[10]||(_[10]=[m("获取验证码",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(q,{block:"",theme:"primary",type:"submit",size:"large",loading:u.value,class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[..._[11]||(_[11]=[m("立即登录",-1)])]),_:1},8,["loading"])]),_:1},8,["data"])):(l(),W(H,{key:1,data:I.value,"label-width":"0",onSubmit:_[5]||(_[5]=()=>g()),class:"w-full text-left"},{default:o(()=>[t(X,{name:"token",class:"!mb-6"},{default:o(()=>[t(F,{modelValue:I.value.token,"onUpdate:modelValue":_[4]||(_[4]=be=>I.value.token=be),size:"large",type:"password",placeholder:"请输入 ME Frp 账户 Token",clearable:"",class:"!rounded-xl"},{"prefix-icon":o(()=>[t(w(ss),{class:"opacity-60"})]),_:1},8,["modelValue"])]),_:1}),t(q,{block:"",theme:"primary",type:"submit",size:"large",loading:u.value,class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[..._[12]||(_[12]=[m("验证 Token",-1)])]),_:1},8,["loading"])]),_:1},8,["data"])),e("div",Cg,[t(q,{variant:"text",size:"small",class:"text-zinc-500 hover:text-[var(--color-primary)]",onClick:_[6]||(_[6]=be=>w(Ie)("https://www.mefrp.com/auth/register"))},{default:o(()=>[..._[13]||(_[13]=[m("还没有账户?注册 ME Frp",-1)])]),_:1})])])])])):(l(),x("div",Ag,[t(J,{attach:"#app-space",loading:d.value,text:"加载数据中..."},null,8,["loading"]),i.value?(l(),x("div",Sg,[e("div",Ig,[_[21]||(_[21]=e("div",{class:"flex flex-col"},[e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"ME Frp 用户信息")],-1)),e("div",Vg,[t(q,{variant:"outline",theme:"primary",size:"small",disabled:i.value.todaySigned,class:ue(["!rounded-lg",i.value.todaySigned?"":"hover:!bg-[var(--color-primary)]/10"]),onClick:j},{default:o(()=>[m(S(i.value.todaySigned?"今日已签到":"每日签到"),1)]),_:1},8,["disabled","class"]),t(ae,{theme:"primary",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[m(S(i.value.friendlyGroup),1)]),_:1}),_[20]||(_[20]=e("div",{class:"w-px h-4 bg-zinc-200 dark:bg-zinc-700 mx-1"},null,-1)),t(le,{content:"确认退出登录吗?",onConfirm:N},{default:o(()=>[t(q,{variant:"text",theme:"danger",size:"small",class:"!rounded-lg hover:!bg-red-500/10"},{default:o(()=>[..._[19]||(_[19]=[m("退出登录",-1)])]),_:1})]),_:1})])]),e("div",Ug,[e("div",Mg,[_[23]||(_[23]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"用户昵称",-1)),e("div",Lg,[e("span",Bg,S(i.value.username),1),i.value.friendlyGroup!=="未实名"?(l(),W(ae,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5 border border-[var(--color-success)]/20"},{default:o(()=>[..._[22]||(_[22]=[m("已实名",-1)])]),_:1})):K("",!0)])]),e("div",Tg,[_[25]||(_[25]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"隧道使用情况",-1)),e("div",Rg,[e("span",jg,S(i.value.usedProxies),1),m(" / "+S(i.value.maxProxies)+" ",1),_[24]||(_[24]=e("span",{class:"text-sm font-medium text-zinc-500"},"条",-1))])]),e("div",Pg,[_[27]||(_[27]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"速率限制",-1)),e("div",Eg,[m(S(i.value.outBound?Math.floor(i.value.outBound/128):0)+" ",1),_[26]||(_[26]=e("span",{class:"text-sm font-medium text-zinc-500"},"Mbps",-1))])]),e("div",Dg,[_[28]||(_[28]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"剩余流量",-1)),e("div",Fg,S(B(i.value.traffic)),1)])])])):K("",!0),e("div",Og,[e("div",Ng,[e("div",Kg,[_[31]||(_[31]=e("h3",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"我的隧道",-1)),e("div",qg,[t(q,{size:"small",variant:"text",class:"!px-2 hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50",loading:d.value,onClick:P},{icon:o(()=>[t(w(Pe))]),default:o(()=>[_[29]||(_[29]=m("刷新 ",-1))]),_:1},8,["loading"]),t(q,{size:"small",theme:"primary",class:"!px-3 !ml-1 !rounded-lg",onClick:D},{icon:o(()=>[t(w(at))]),default:o(()=>[_[30]||(_[30]=m("新建 ",-1))]),_:1})])]),e("div",Hg,[c.value.length>0?(l(),x("div",Wg,[(l(!0),x(re,null,xe(c.value,be=>(l(),x("div",{key:be.proxyId,class:ue(["group flex items-center p-3 rounded-xl cursor-pointer transition-all duration-300 border",n.value===be.proxyId?"bg-[var(--color-primary)]/10 border-[var(--color-primary)]/30 shadow-sm":"bg-transparent border-transparent hover:bg-zinc-50 dark:hover:bg-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600"]),onClick:Se=>n.value=be.proxyId},[e("div",{class:ue(["w-10 h-10 rounded-lg flex items-center justify-center shrink-0 mr-3 transition-colors",n.value===be.proxyId?"bg-[var(--color-primary)] text-white shadow-md shadow-[var(--color-primary)]/30":"bg-zinc-100 dark:bg-zinc-900 text-[var(--td-text-color-secondary)] group-hover:text-zinc-800 dark:group-hover:text-zinc-200"])},[t(w(st),{size:"20px"})],2),e("div",Jg,[e("div",{class:ue(["font-bold text-sm truncate transition-colors",n.value===be.proxyId?"text-[var(--color-primary)]":"text-[var(--td-text-color-primary)]"])},S(be.proxyName),3),e("div",Xg,S(f.value[be.nodeId]||`Node ${be.nodeId}`),1)]),e("div",Qg,[be.isOnline?(l(),W(ae,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5"},{default:o(()=>[..._[32]||(_[32]=[m("在线",-1)])]),_:1})):(l(),W(ae,{key:1,theme:"default",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5 !text-zinc-500"},{default:o(()=>[..._[33]||(_[33]=[m("离线",-1)])]),_:1}))])],10,Gg))),128))])):(l(),x("div",Yg,[t(w(st),{size:"32px",class:"text-zinc-400 mb-2"}),_[34]||(_[34]=e("span",{class:"text-sm text-zinc-500 font-medium"},"暂无隧道,请先新建",-1))]))])]),e("div",Zg,[b.value?(l(),x(re,{key:0},[e("div",eh,[e("div",th,[e("h3",oh,S(b.value.proxyName),1),e("p",ah,"ID: "+S(b.value.proxyId),1)]),e("div",sh,[t(le,{content:"确认删除此隧道吗?将无法恢复!",theme:"danger",placement:"bottom-right",onConfirm:$},{default:o(()=>[t(q,{theme:"danger",class:"!rounded-lg hover:!bg-red-500 hover:!text-white transition-colors",loading:O.value},{icon:o(()=>[t(fe,{name:"delete"})]),default:o(()=>[_[35]||(_[35]=m(" 删除隧道 ",-1))]),_:1},8,["loading"])]),_:1})])]),e("div",lh,[e("div",rh,[e("div",nh,[_[36]||(_[36]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"所在节点",-1)),e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate",title:A.value},S(A.value),9,ih)]),e("div",dh,[_[37]||(_[37]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"本地地址",-1)),e("span",ch,S(b.value.localIp)+":"+S(b.value.localPort),1)]),e("div",uh,[_[38]||(_[38]=e("span",{class:"text-[11px] font-extrabold text-emerald-600/80 dark:text-emerald-500/80 uppercase tracking-widest mb-1.5"},"远程公网端口",-1)),e("span",mh,S(b.value.remotePort),1)]),e("div",{class:ue(["p-4 rounded-xl flex flex-col justify-center border transition-colors",b.value.isOnline?"bg-emerald-50/50 dark:bg-emerald-900/10 border-emerald-200/50 dark:border-emerald-800/30":"bg-zinc-50/80 dark:bg-zinc-900/50 border-[var(--td-component-border)]"])},[e("span",{class:ue(["text-[11px] font-extrabold uppercase tracking-widest mb-1.5",b.value.isOnline?"text-emerald-600/80 dark:text-emerald-500/80":"text-[var(--td-text-color-secondary)]"])},"当前状态",2),e("div",ph,[b.value.isOnline?(l(),x("span",vh)):K("",!0),e("span",{class:ue(["text-sm font-bold",b.value.isOnline?"text-[var(--color-success)]":"text-zinc-500"])},S(b.value.isOnline?"节点在线":"离线"),3)])],2)]),e("div",fh,[t(q,{theme:"primary",size:"large",loading:T.value,block:"",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow text-base",onClick:U},{icon:o(()=>[t(w(_t))]),default:o(()=>[_[39]||(_[39]=m(" 启动此隧道映射 ",-1))]),_:1},8,["loading"])])])],64)):(l(),x("div",bh,[e("div",xh,[t(w(bt),{size:"40px",class:"text-zinc-400"})]),_[40]||(_[40]=e("h3",{class:"text-base font-bold text-zinc-700 dark:text-zinc-300 mb-1"},"未选择隧道",-1)),_[41]||(_[41]=e("p",{class:"text-sm text-zinc-500"},"请在左侧列表中选择一个隧道以查看详细信息和连接参数",-1))]))])])])),s.value?(l(),W(_g,{key:2,visible:s.value,"onUpdate:visible":_[7]||(_[7]=be=>s.value=be),token:r.value,onSuccess:R},null,8,["visible","token"])):K("",!0)])}}}),hh=me(gh,[["__scopeId","data-v-5267eb05"]]),yh={class:"flex justify-between items-center w-full"},_h={class:"truncate"},wh={class:"w-full flex flex-col gap-2.5"},kh={class:"bg-[var(--td-bg-color-secondarycontainer)] rounded-[var(--td-radius-medium)] p-3 border border-dashed border-[var(--td-component-border)]"},$h={class:"m-0 whitespace-pre-wrap break-all text-[13px] text-[var(--td-text-color-primary)] leading-[1.6]"},zh=de({__name:"CreateTunnelDialog",props:{visible:{type:Boolean},token:{},userLevel:{}},emits:["update:visible","success"],setup(a,{emit:s}){const r=a,d=s,i=y(!1),c=y(!1),f=y([]),n=qe({nodeId:null,type:"tcp",name:"",local_ip:"127.0.0.1",local_port:"25565",remote:""}),v=te(()=>f.value.find(A=>A.id===n.nodeId)||null),I=te(()=>{const A=new Map;return f.value.forEach(p=>{const k=p.vipName||"默认节点";A.has(k)||A.set(k,{label:k,value:k,children:[]}),A.get(k).children.push(p)}),Array.from(A.values())}),u=()=>{n.name="MSL_"+Xt(6),n.remote=(Math.floor(Math.random()*55536)+1e4).toString()},R=async()=>{i.value=!0;try{const A=await Z.get({url:`/nodes?token=${r.token}`,baseURL:"https://api.natfrp.com/v4"},{withToken:!1});if(A){const p=[];Object.entries(A).forEach(([k,g])=>{r.userLevel>=g.vip&&p.push({id:parseInt(k),name:g.name,host:g.host,description:g.description,vip:g.vip,vipName:g.vip===0?"普通节点":g.vip===3?"青铜节点":"白银节点"})}),f.value=p,r.visible&&f.value.length>0&&!n.nodeId&&(n.nodeId=f.value[0].id,u())}}catch(A){M.error("加载节点失败: "+A.message)}finally{i.value=!1}};_e(()=>r.visible,A=>{A&&(f.value.length>0?(n.nodeId||(n.nodeId=f.value[0].id),u()):R())});const b=async()=>{if(!n.nodeId){M.warning("请选择一个节点");return}if(!n.name||!n.local_ip||!n.local_port){M.warning("请填写完整的映射配置");return}c.value=!0;try{await Z.post({url:"/tunnels",baseURL:"https://api.natfrp.com/v4",headers:{Authorization:`Bearer ${r.token}`,"Content-Type":"application/x-www-form-urlencoded"},data:new URLSearchParams({node:n.nodeId.toString(),name:n.name,type:n.type,note:"Create By MSLX",extra:"",local_ip:n.local_ip,local_port:n.local_port,remote:n.remote}).toString()},{withToken:!1}),M.success(`隧道 ${n.name} 创建成功!`),d("success"),d("update:visible",!1)}catch(A){const p=A.response?.data?.msg||A.msg||"请尝试更换隧道名称/节点!";M.error(`创建失败: ${p}`)}finally{c.value=!1}};return ze(()=>{r.token&&R()}),(A,p)=>{const k=h("t-option"),g=h("t-option-group"),B=h("t-select"),C=h("t-form-item"),T=h("t-input"),U=h("t-col"),D=h("t-button"),N=h("t-row"),P=h("t-form"),j=h("t-loading"),O=h("t-dialog");return l(),W(O,{attach:"body",visible:a.visible,header:"新建 SakuraFrp 隧道",width:"580px","confirm-btn":{content:"提交创建",loading:c.value},onConfirm:b,onClose:p[6]||(p[6]=$=>d("update:visible",!1))},{default:o(()=>[t(j,{loading:i.value},{default:o(()=>[t(P,{data:n,"label-align":"right","label-width":100,class:"pt-2.5 overflow-x-hidden [&_.t-form__item]:!mb-[22px]"},{default:o(()=>[t(C,{label:"选择节点",name:"nodeId"},{default:o(()=>[t(B,{modelValue:n.nodeId,"onUpdate:modelValue":p[0]||(p[0]=$=>n.nodeId=$),placeholder:"请选择节点",onChange:u,"popup-props":{overlayClassName:"max-h-[300px]"}},{default:o(()=>[(l(!0),x(re,null,xe(I.value,$=>(l(),W(g,{key:$.value,label:$.label},{default:o(()=>[(l(!0),x(re,null,xe($.children,V=>(l(),W(k,{key:V.id,value:V.id,label:V.name},{default:o(()=>[e("div",yh,[e("span",_h,S(V.name),1)])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),v.value?(l(),W(C,{key:0,label:"节点详情"},{default:o(()=>[e("div",wh,[e("div",kh,[e("pre",$h,S(v.value.description||"此节点暂无备注"),1)])])]),_:1})):K("",!0),t(C,{label:"隧道类型"},{default:o(()=>[t(B,{modelValue:n.type,"onUpdate:modelValue":p[1]||(p[1]=$=>n.type=$)},{default:o(()=>[t(k,{label:"TCP",value:"tcp"}),t(k,{label:"UDP",value:"udp"}),t(k,{label:"HTTP",value:"http"}),t(k,{label:"HTTPS",value:"https"})]),_:1},8,["modelValue"])]),_:1}),t(N,{gutter:[16,20]},{default:o(()=>[t(U,{xs:12,sm:6},{default:o(()=>[t(C,{label:"隧道名称"},{default:o(()=>[t(T,{modelValue:n.name,"onUpdate:modelValue":p[2]||(p[2]=$=>n.name=$)},null,8,["modelValue"])]),_:1})]),_:1}),t(U,{xs:12,sm:6},{default:o(()=>[t(C,{label:"远程端口"},{default:o(()=>[t(T,{modelValue:n.remote,"onUpdate:modelValue":p[3]||(p[3]=$=>n.remote=$),placeholder:"留空由服务端分配"},{suffix:o(()=>[t(D,{variant:"text",size:"small",onClick:u},{default:o(()=>[...p[7]||(p[7]=[m("随机",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(U,{xs:12,sm:6},{default:o(()=>[t(C,{label:"本地IP"},{default:o(()=>[t(T,{modelValue:n.local_ip,"onUpdate:modelValue":p[4]||(p[4]=$=>n.local_ip=$)},null,8,["modelValue"])]),_:1})]),_:1}),t(U,{xs:12,sm:6},{default:o(()=>[t(C,{label:"本地端口"},{default:o(()=>[t(T,{modelValue:n.local_port,"onUpdate:modelValue":p[5]||(p[5]=$=>n.local_port=$)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1},8,["data"])]),_:1},8,["loading"])]),_:1},8,["visible","confirm-btn"])}}}),Ch={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},Ah={key:0,class:"flex items-center justify-center min-h-[70vh] list-item-anim"},Sh={class:"design-card relative w-full max-w-md bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-xl p-10 text-center overflow-hidden"},Ih={class:"relative z-10 flex flex-col items-center"},Vh={class:"mt-8 pt-4 border-t border-dashed border-zinc-200 dark:border-zinc-700 w-full"},Uh={key:1,id:"app-space",class:"relative flex flex-col gap-6"},Mh={key:0,class:"design-card list-item-anim bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-5 sm:p-6",style:{"animation-delay":"0s"}},Lh={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},Bh={class:"flex items-center gap-2"},Th={class:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Rh={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},jh={class:"text-lg font-bold text-[var(--td-text-color-primary)] truncate"},Ph={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Eh={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},Dh={class:"text-[var(--color-primary)]"},Fh={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Oh={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},Nh={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Kh={class:"text-[15px] font-bold text-[var(--color-success)] font-mono mt-0.5"},qh={class:"grid grid-cols-1 lg:grid-cols-12 gap-6 items-start"},Hh={class:"lg:col-span-5 xl:col-span-4 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.1s"}},Wh={class:"flex items-center justify-between p-4 sm:p-5 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},Gh={class:"flex items-center gap-1"},Jh={class:"flex-1 overflow-y-auto custom-scrollbar p-3"},Xh={key:0,class:"flex flex-col gap-2"},Qh=["onClick"],Yh={class:"flex-1 min-w-0 mr-3"},Zh={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},ey={class:"shrink-0"},ty={key:1,class:"h-full flex flex-col items-center justify-center opacity-60"},oy={class:"lg:col-span-7 xl:col-span-8 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.2s"}},ay={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 sm:p-6 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},sy={class:"flex flex-col min-w-0"},ly={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] m-0 truncate"},ry={class:"text-xs text-[var(--td-text-color-secondary)] mt-1 truncate font-mono bg-zinc-100 dark:bg-zinc-800/50 w-max px-2 py-0.5 rounded"},ny={class:"shrink-0"},iy={class:"flex-1 overflow-y-auto custom-scrollbar p-5 sm:p-6"},dy={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 gap-4"},cy={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},uy=["title"],my={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},py={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},vy={class:"p-4 bg-emerald-50/50 dark:bg-emerald-900/20 rounded-xl border border-emerald-200/50 dark:border-emerald-800/30 flex flex-col justify-center"},fy={class:"text-lg font-mono font-extrabold text-emerald-600 dark:text-emerald-400"},by={class:"flex items-center gap-2"},xy={key:0,class:"w-2 h-2 rounded-full bg-[var(--color-success)] animate-pulse"},gy={class:"mt-8"},hy={key:1,class:"flex-1 flex flex-col items-center justify-center opacity-50 p-6 text-center"},yy={class:"w-24 h-24 bg-zinc-100 dark:bg-zinc-800 rounded-full flex items-center justify-center mb-4"},_y=de({__name:"index",setup(a){const s=y(!1),r=y(""),d=y(!1),i=y(null),c=y(0),f=y([]),n=y({}),v=y(null),I=y({token:""}),u=y(!1),R=()=>{k()},b=te(()=>f.value.find(P=>P.id===v.value)||null),A=te(()=>b.value?n.value[b.value.node]||`节点 (${b.value.node})`:"");ze(()=>{const P=localStorage.getItem("sakurafrp-user-token");P&&(r.value=P,k())});async function p(P){const j=I.value.token;if(!j){M.warning("请输入 Token");return}u.value=!0;try{const O=await Z.get({url:`/user/info?token=${j}`,baseURL:"https://api.natfrp.com/v4"},{withToken:!1});O&&O.name?(M.success("Token验证成功"),r.value=j,localStorage.setItem("sakurafrp-user-token",j),i.value=O,c.value=parseInt(O.group?.level||"0"),await k()):M.error("登录失败:未获取到有效的用户信息")}catch(O){M.error("验证失败: "+O.message)}finally{u.value=!1}}async function k(){d.value=!0;try{const P=await Z.get({url:`/user/info?token=${r.value}`,baseURL:"https://api.natfrp.com/v4"},{withToken:!1});if(P&&P.name)i.value=P,c.value=parseInt(P.group?.level||"0");else{T();return}const j=await Z.get({url:`/nodes?token=${r.value}`,baseURL:"https://api.natfrp.com/v4"},{withToken:!1});if(j){const $={};Object.entries(j).forEach(([V,_])=>{$[parseInt(V)]=_.name}),n.value=$}const O=await Z.get({url:`/tunnels?token=${r.value}`,baseURL:"https://api.natfrp.com/v4"},{withToken:!1});Array.isArray(O)&&(f.value=O||[],f.value.length>0&&!v.value&&(v.value=f.value[0].id))}catch(P){const j=P.response?.data?.msg||P.msg||P.message||"Token失效或网络异常";M.error(`数据加载失败,已自动退出Sakura Frp: ${j}`),T()}finally{d.value=!1}}const g=y(!1);async function B(){if(b.value){g.value=!0;try{const P=await Z.post({url:"/tunnel/config",baseURL:"https://api.natfrp.com/v4",headers:{Authorization:`Bearer ${r.value}`,"Content-Type":"application/x-www-form-urlencoded"},data:`query=${b.value.id}&frpc=0.52.0`},{withToken:!1});P&&typeof P=="string"?(await Jt(`${b.value.name} | ${A.value}`,P,"Sakura Frp"),M.success("配置文件已成功加载")):M.error("获取配置失败:内容为空或格式异常")}catch(P){const j=P.response?.data?.msg||P.msg||P.message||"未知错误";M.error(`获取配置异常: ${j}`)}finally{g.value=!1}}}const C=()=>{s.value=!0};function T(){r.value="",i.value=null,f.value=[],v.value=null,localStorage.removeItem("sakurafrp-user-token"),M.success("已退出登录")}async function U(){await k(),M.success("数据已更新")}const D=y(!1);async function N(){if(b.value){D.value=!0;try{await Z.post({url:"/tunnel/delete",baseURL:"https://api.natfrp.com/v4",headers:{Authorization:`Bearer ${r.value}`,"Content-Type":"application/x-www-form-urlencoded"},data:`ids=${b.value.id}`},{withToken:!1}),M.success("隧道删除成功"),v.value=null,await k()}catch(P){M.error("删除失败: "+P.message)}finally{D.value=!1}}}return(P,j)=>{const O=h("t-input"),$=h("t-form-item"),V=h("t-button"),_=h("t-form"),z=h("t-loading"),E=h("t-tag"),F=h("t-popconfirm"),X=h("t-icon");return l(),x("div",Ch,[r.value===""?(l(),x("div",Ah,[e("div",Sh,[j[9]||(j[9]=e("div",{class:"absolute -top-20 -right-20 w-60 h-60 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),j[10]||(j[10]=e("div",{class:"absolute -bottom-10 -left-10 w-40 h-40 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),e("div",Ih,[j[6]||(j[6]=e("div",{class:"w-20 h-20 bg-[var(--color-primary)]/10 rounded-2xl flex items-center justify-center mb-6 shadow-sm border border-[var(--color-primary)]/20"},[e("img",{src:"https://www.natfrp.com/favicon.ico",alt:"logo",class:"text-[var(--color-primary)]"})],-1)),j[7]||(j[7]=e("h2",{class:"text-2xl font-extrabold text-[var(--td-text-color-primary)] !mb-2 tracking-tight"},"登录 SakuraFrp",-1)),j[8]||(j[8]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] !mb-8 font-medium"},"使用您的访问令牌 (Token) 连接服务",-1)),t(_,{data:I.value,"label-width":"0",onSubmit:j[1]||(j[1]=()=>p()),class:"w-full text-left"},{default:o(()=>[t($,{name:"token",class:"!mb-6"},{default:o(()=>[t(O,{modelValue:I.value.token,"onUpdate:modelValue":j[0]||(j[0]=q=>I.value.token=q),size:"large",type:"password",placeholder:"请输入 SakuraFrp 访问 Token",clearable:"",class:"!rounded-xl"},{"prefix-icon":o(()=>[t(w(ss),{class:"opacity-60"})]),_:1},8,["modelValue"])]),_:1}),t(V,{block:"",theme:"primary",type:"submit",size:"large",loading:u.value,class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[...j[4]||(j[4]=[m("立即验证 Token",-1)])]),_:1},8,["loading"])]),_:1},8,["data"]),e("div",Vh,[t(V,{variant:"text",size:"small",class:"text-zinc-500 hover:text-[var(--color-primary)]",onClick:j[2]||(j[2]=q=>w(Ie)("https://www.natfrp.com/user/"))},{default:o(()=>[...j[5]||(j[5]=[m("获取 SakuraFrp 账号Token",-1)])]),_:1})])])])])):(l(),x("div",Uh,[t(z,{attach:"#app-space",loading:d.value,text:"加载数据中..."},null,8,["loading"]),i.value?(l(),x("div",Mh,[e("div",Lh,[j[13]||(j[13]=e("div",{class:"flex flex-col"},[e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"SakuraFrp 账户信息")],-1)),e("div",Bh,[t(E,{theme:"primary",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[m(S(i.value.group?.name||"未知分组"),1)]),_:1}),j[12]||(j[12]=e("div",{class:"w-px h-4 bg-zinc-200 dark:bg-zinc-700 mx-1"},null,-1)),t(F,{content:"确认断开 SakuraFrp 的连接吗?",onConfirm:T},{default:o(()=>[t(V,{variant:"text",theme:"danger",size:"small",class:"!rounded-lg hover:!bg-red-500/10"},{default:o(()=>[...j[11]||(j[11]=[m("退出登录",-1)])]),_:1})]),_:1})])]),e("div",Th,[e("div",Rh,[j[14]||(j[14]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"用户名称",-1)),e("div",jh,S(i.value.name),1)]),e("div",Ph,[j[17]||(j[17]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"当前隧道数",-1)),e("div",Eh,[e("span",Dh,S(f.value.length),1),j[15]||(j[15]=m()),j[16]||(j[16]=e("span",{class:"text-sm font-medium text-zinc-500"},"条",-1))])]),e("div",Fh,[j[18]||(j[18]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"限速",-1)),e("div",Oh,S(i.value.speed||"无限制"),1)]),e("div",Nh,[j[19]||(j[19]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"VIP 等级",-1)),e("div",Kh,"Level "+S(c.value),1)])])])):K("",!0),e("div",qh,[e("div",Hh,[e("div",Wh,[j[22]||(j[22]=e("h3",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"我的隧道",-1)),e("div",Gh,[t(V,{size:"small",variant:"text",class:"!px-2 hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50",loading:d.value,onClick:U},{icon:o(()=>[t(w(Pe))]),default:o(()=>[j[20]||(j[20]=m("刷新 ",-1))]),_:1},8,["loading"]),t(V,{size:"small",theme:"primary",class:"!px-3 !ml-1 !rounded-lg",onClick:C},{icon:o(()=>[t(w(at))]),default:o(()=>[j[21]||(j[21]=m("新建 ",-1))]),_:1})])]),e("div",Jh,[f.value.length>0?(l(),x("div",Xh,[(l(!0),x(re,null,xe(f.value,q=>(l(),x("div",{key:q.id,class:ue(["group flex items-center p-3 rounded-xl cursor-pointer transition-all duration-300 border",v.value===q.id?"bg-[var(--color-primary)]/10 border-[var(--color-primary)]/30 shadow-sm":"bg-transparent border-transparent hover:bg-zinc-50 dark:hover:bg-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600"]),onClick:H=>v.value=q.id},[e("div",{class:ue(["w-10 h-10 rounded-lg flex items-center justify-center shrink-0 mr-3 transition-colors",v.value===q.id?"bg-[var(--color-primary)] text-white shadow-md shadow-[var(--color-primary)]/30":"bg-zinc-100 dark:bg-zinc-900 text-[var(--td-text-color-secondary)] group-hover:text-zinc-800 dark:group-hover:text-zinc-200"])},[t(w(st),{size:"20px"})],2),e("div",Yh,[e("div",{class:ue(["font-bold text-sm truncate transition-colors",v.value===q.id?"text-[var(--color-primary)]":"text-[var(--td-text-color-primary)]"])},S(q.name),3),e("div",Zh,S(n.value[q.node]||`Node ${q.node}`),1)]),e("div",ey,[q.online?(l(),W(E,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5"},{default:o(()=>[...j[23]||(j[23]=[m("在线",-1)])]),_:1})):(l(),W(E,{key:1,theme:"default",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5 !text-zinc-500"},{default:o(()=>[...j[24]||(j[24]=[m("离线",-1)])]),_:1}))])],10,Qh))),128))])):(l(),x("div",ty,[t(w(st),{size:"32px",class:"text-zinc-400 mb-2"}),j[25]||(j[25]=e("span",{class:"text-sm text-zinc-500 font-medium"},"暂无隧道,请先新建",-1))]))])]),e("div",oy,[b.value?(l(),x(re,{key:0},[e("div",ay,[e("div",sy,[e("h3",ly,S(b.value.name),1),e("p",ry,"ID: "+S(b.value.id),1)]),e("div",ny,[t(F,{content:"确认删除此隧道吗?将无法恢复!",theme:"danger",placement:"bottom-right",onConfirm:N},{default:o(()=>[t(V,{theme:"danger",class:"!rounded-lg hover:!bg-red-500 hover:!text-white transition-colors",loading:D.value},{icon:o(()=>[t(X,{name:"delete"})]),default:o(()=>[j[26]||(j[26]=m(" 删除隧道 ",-1))]),_:1},8,["loading"])]),_:1})])]),e("div",iy,[e("div",dy,[e("div",cy,[j[27]||(j[27]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"所在节点",-1)),e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate",title:A.value},S(A.value),9,uy)]),e("div",my,[j[28]||(j[28]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"本地地址",-1)),e("span",py,S(b.value.local_ip)+":"+S(b.value.local_port),1)]),e("div",vy,[j[29]||(j[29]=e("span",{class:"text-[11px] font-extrabold text-emerald-600/80 dark:text-emerald-500/80 uppercase tracking-widest mb-1.5"},"远程信息 (端口/域名)",-1)),e("span",fy,S(b.value.remote),1)]),e("div",{class:ue(["p-4 rounded-xl flex flex-col justify-center border transition-colors",b.value.online?"bg-emerald-50/50 dark:bg-emerald-900/10 border-emerald-200/50 dark:border-emerald-800/30":"bg-zinc-50/80 dark:bg-zinc-900/50 border-[var(--td-component-border)]"])},[e("span",{class:ue(["text-[11px] font-extrabold uppercase tracking-widest mb-1.5",b.value.online?"text-emerald-600/80 dark:text-emerald-500/80":"text-[var(--td-text-color-secondary)]"])},"当前状态",2),e("div",by,[b.value.online?(l(),x("span",xy)):K("",!0),e("span",{class:ue(["text-sm font-bold",b.value.online?"text-[var(--color-success)]":"text-zinc-500"])},S(b.value.online?"节点在线":"离线"),3)])],2)]),e("div",gy,[t(V,{theme:"primary",size:"large",loading:g.value,block:"",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow text-base",onClick:B},{icon:o(()=>[t(w(_t))]),default:o(()=>[j[30]||(j[30]=m(" 使用此隧道 ",-1))]),_:1},8,["loading"])])])],64)):(l(),x("div",hy,[e("div",yy,[t(w(bt),{size:"40px",class:"text-zinc-400"})]),j[31]||(j[31]=e("h3",{class:"text-base font-bold text-zinc-700 dark:text-zinc-300 mb-1"},"未选择隧道",-1)),j[32]||(j[32]=e("p",{class:"text-sm text-zinc-500"},"请在左侧列表中选择一个隧道以查看详细信息",-1))]))])])])),s.value?(l(),W(zh,{key:2,visible:s.value,"onUpdate:visible":j[3]||(j[3]=q=>s.value=q),token:r.value,userLevel:c.value,onSuccess:R},null,8,["visible","token","userLevel"])):K("",!0)])}}}),wy=me(_y,[["__scopeId","data-v-61762945"]]),Qt="/api/frp/chmlfrp",ky="https://account-api.qzhua.net",ya="019d5ca3e01c75a3919eb0022069e9c1",zo="chmlfrp_user",no="chmlfrp-user-token",$y="profile email offline_access chmlfrp_api",Yt="X-Chmlfrp-Authorization";function Ts(a){if(!a)return null;const s={...a};if(s.accessTokenExpiresAt!=null){const r=Number(s.accessTokenExpiresAt);s.accessTokenExpiresAt=Number.isFinite(r)?r:void 0}return s}function zy(a){return new URL(a,ky).toString()}function Cy(){return{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"}}function Rs(a,s){return a&&(a.error_description||a.error)||s}function _a(a,s){try{return JSON.parse(a.body)}catch{const r=a.body.trim().toLowerCase();throw r.startsWith("=s-6e4:!1}function js(a){return a.startsWith("Bearer ")?a:`Bearer ${a}`}function Ro(a){return a?.code===200?a.data:a}function ta(){const a=localStorage.getItem(zo);if(a)try{return Ts(JSON.parse(a))}catch{localStorage.removeItem(zo)}const s=localStorage.getItem(no);if(!s)return null;const r={username:"",usergroup:"",usertoken:s};return Co(r),localStorage.removeItem(no),r}function Co(a){localStorage.setItem(zo,JSON.stringify(Ts(a))),a.usertoken?localStorage.setItem(no,a.usertoken):localStorage.removeItem(no)}function oa(){localStorage.removeItem(zo),localStorage.removeItem(no)}async function Iy(a){const s=new URLSearchParams;s.set("grant_type","refresh_token"),s.set("refresh_token",a),s.set("client_id",ya);const r=await wa("/oauth2/token",s);return _a(r,"账户服务返回了无法解析的刷新响应")}async function Vy(){const a=ta();if(!a)throw new Error("登录信息已过期,请重新授权");const s=Ay(a);if(s){if(a.refreshToken&&Sy(a)){const d=await Iy(a.refreshToken);if(!d.access_token)throw oa(),new Error(Rs(d,"登录信息已过期,请重新授权"));const i={...a,accessToken:d.access_token,refreshToken:d.refresh_token||a.refreshToken,accessTokenExpiresAt:d.expires_in?Date.now()+d.expires_in*1e3:a.accessTokenExpiresAt,tokenType:d.token_type||a.tokenType||"Bearer"};return Co(i),{storedUser:i,accessToken:i.accessToken,legacyToken:Oo(i)}}return{storedUser:a,accessToken:s,legacyToken:Oo(a)}}const r=Oo(a);if(r)return{storedUser:a,legacyToken:r};throw oa(),new Error("登录信息已过期,请重新授权")}async function Zt(){const{accessToken:a,legacyToken:s}=await Vy();return js(a||s)}async function Uy(a=$y){const s=new URLSearchParams;s.set("client_id",ya);const r=a.split(/[,\s]+/).map(c=>c.trim()).filter(Boolean).join(" ");r&&s.set("scope",r);const d=await wa("/oauth2/device_authorization",s),i=_a(d,"账户服务返回了无法解析的响应");if(d.status>=200&&d.status<300&&i&&"device_code"in i)return i;throw new Error(Rs(i??void 0,"申请设备授权失败"))}async function My(a){const s=new URLSearchParams;s.set("grant_type","urn:ietf:params:oauth:grant-type:device_code"),s.set("device_code",a),s.set("client_id",ya);const r=await wa("/oauth2/token",s);return _a(r,"账户服务返回了无法解析的令牌响应")}async function Ps(a){const s=a?js(a):await Zt(),r=await Z.get({url:`${Qt}/userinfo`,headers:{[Yt]:s}}),d=Ro(r);if(d?.username)return d;throw new Error("未获取到有效的用户信息")}async function Ly(a,s){const r=await Ps(a);return{username:r.username,usergroup:r.usergroup,userimg:r.userimg,usertoken:r.usertoken,accessToken:a,refreshToken:s?.refresh_token,accessTokenExpiresAt:s?.expires_in?Date.now()+s.expires_in*1e3:void 0,tokenType:s?.token_type||"Bearer",tunnelCount:r.tunnelCount,tunnel:r.tunnel}}async function By(){const a=await Zt(),s=await Z.get({url:`${Qt}/tunnel`,headers:{[Yt]:a}}),r=Ro(s);if(Array.isArray(r))return r;throw new Error("获取隧道列表失败")}async function Ty(){const a=await Zt(),s=await Z.get({url:`${Qt}/node`,headers:{[Yt]:a}}),r=Ro(s);if(Array.isArray(r))return r;throw new Error("获取节点列表失败")}async function Ry(a){const s=await Zt();return Z.post({url:`${Qt}/create-tunnel`,headers:{[Yt]:s},data:a})}async function jy(a){const s=await Zt();return Z.get({url:`${Qt}/delete-tunnel?tunnelId=${a}`,headers:{[Yt]:s}})}async function Py(a,s){const r=await Zt(),d=await Z.get({url:`${Qt}/tunnel-config?node=${encodeURIComponent(a)}&tunnelName=${encodeURIComponent(s)}`,headers:{[Yt]:r}}),i=Ro(d);if(typeof i=="string"&&i)return i;throw new Error("获取配置失败:内容为空或格式异常")}const Ey={class:"flex justify-between items-center w-full"},Dy={class:"truncate"},Fy={class:"text-xs text-zinc-400 shrink-0 ml-2"},Oy={class:"w-full flex flex-col gap-2.5"},Ny={class:"bg-[var(--td-bg-color-secondarycontainer)] rounded-[var(--td-radius-medium)] p-3 border border-dashed border-[var(--td-component-border)]"},Ky={class:"m-0 whitespace-pre-wrap break-all text-[13px] text-[var(--td-text-color-primary)] leading-[1.6]"},qy=de({__name:"CreateTunnelDialog",props:{visible:{type:Boolean}},emits:["update:visible","success"],setup(a,{emit:s}){const r=a,d=s,i=y(!1),c=y(!1),f=y([]),n=qe({nodeName:"",porttype:"TCP",tunnelname:"",localip:"127.0.0.1",localport:"25565",remoteport:""}),v=te(()=>f.value.find(A=>A.name===n.nodeName)||null),I=te(()=>{const A=new Map;return f.value.forEach(p=>{let k=p.nodegroup;k==="vip"?k="VIP 节点":k==="user"&&(k="普通节点"),A.has(p.nodegroup)||A.set(p.nodegroup,{label:k,value:p.nodegroup,children:[]}),A.get(p.nodegroup).children.push(p)}),Array.from(A.values())}),u=()=>{n.tunnelname="MSL_"+Xt(6),n.remoteport=(Math.floor(Math.random()*55536)+1e4).toString()},R=async()=>{i.value=!0;try{const A=await Ty();Array.isArray(A)&&(f.value=A,r.visible&&f.value.length>0&&!n.nodeName&&(n.nodeName=f.value[0].name,u()))}catch(A){const p=A.response?.data?.msg||A.msg||A.message||"未知错误";M.error("加载节点失败: "+p)}finally{i.value=!1}};_e(()=>r.visible,A=>{A&&(f.value.length>0?(n.nodeName||(n.nodeName=f.value[0].name),u()):R())});const b=async()=>{if(!n.nodeName){M.warning("请选择一个节点");return}if(!n.tunnelname||!n.localip||!n.localport){M.warning("请填写完整的映射配置");return}c.value=!0;try{const A=await Ry({tunnelname:n.tunnelname,node:n.nodeName,localip:n.localip,porttype:n.porttype,localport:parseInt(n.localport),encryption:!1,compression:!1,extraparams:"",remoteport:parseInt(n.remoteport)||0});if(A&&A.code&&A.code!==200)throw new Error(A.msg||"指定的端口不合法或发生未知错误");M.success(`隧道 ${n.tunnelname} 创建成功!`),d("success"),d("update:visible",!1)}catch(A){const p=A.message||A.response?.data?.msg||A.msg||"请检查配置或节点状态";M.error(`创建失败: ${p}`)}finally{c.value=!1}};return ze(()=>{R()}),(A,p)=>{const k=h("t-option"),g=h("t-option-group"),B=h("t-select"),C=h("t-form-item"),T=h("t-input"),U=h("t-col"),D=h("t-button"),N=h("t-row"),P=h("t-form"),j=h("t-loading"),O=h("t-dialog");return l(),W(O,{attach:"body",visible:a.visible,header:"新建 ChmlFrp 隧道",width:"580px","confirm-btn":{content:"提交创建",loading:c.value},onConfirm:b,onClose:p[6]||(p[6]=$=>d("update:visible",!1))},{default:o(()=>[t(j,{loading:i.value},{default:o(()=>[t(P,{data:n,"label-align":"right","label-width":100,class:"pt-2.5 overflow-x-hidden [&_.t-form__item]:!mb-[22px]"},{default:o(()=>[t(C,{label:"选择节点",name:"nodeName"},{default:o(()=>[t(B,{modelValue:n.nodeName,"onUpdate:modelValue":p[0]||(p[0]=$=>n.nodeName=$),placeholder:"请选择节点","popup-props":{overlayClassName:"max-h-[300px]"},onChange:u},{default:o(()=>[(l(!0),x(re,null,xe(I.value,$=>(l(),W(g,{key:$.value,label:$.label},{default:o(()=>[(l(!0),x(re,null,xe($.children,V=>(l(),W(k,{key:V.id,value:V.name,label:V.name},{default:o(()=>[e("div",Ey,[e("span",Dy,S(V.name),1),e("span",Fy,S(V.area),1)])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),v.value?(l(),W(C,{key:0,label:"节点详情"},{default:o(()=>[e("div",Oy,[e("div",Ny,[e("pre",Ky,S(v.value.notes||"此节点暂无备注"),1)])])]),_:1})):K("",!0),t(C,{label:"隧道类型"},{default:o(()=>[t(B,{modelValue:n.porttype,"onUpdate:modelValue":p[1]||(p[1]=$=>n.porttype=$)},{default:o(()=>[t(k,{label:"TCP",value:"TCP"}),t(k,{label:"UDP",value:"UDP"}),t(k,{label:"HTTP",value:"HTTP"}),t(k,{label:"HTTPS",value:"HTTPS"})]),_:1},8,["modelValue"])]),_:1}),t(N,{gutter:[16,20]},{default:o(()=>[t(U,{xs:12,sm:6},{default:o(()=>[t(C,{label:"隧道名称"},{default:o(()=>[t(T,{modelValue:n.tunnelname,"onUpdate:modelValue":p[2]||(p[2]=$=>n.tunnelname=$)},null,8,["modelValue"])]),_:1})]),_:1}),t(U,{xs:12,sm:6},{default:o(()=>[t(C,{label:"远程端口"},{default:o(()=>[t(T,{modelValue:n.remoteport,"onUpdate:modelValue":p[3]||(p[3]=$=>n.remoteport=$),placeholder:"留空由服务端分配"},{suffix:o(()=>[t(D,{variant:"text",size:"small",onClick:u},{default:o(()=>[...p[7]||(p[7]=[m("随机",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(U,{xs:12,sm:6},{default:o(()=>[t(C,{label:"本地IP"},{default:o(()=>[t(T,{modelValue:n.localip,"onUpdate:modelValue":p[4]||(p[4]=$=>n.localip=$)},null,8,["modelValue"])]),_:1})]),_:1}),t(U,{xs:12,sm:6},{default:o(()=>[t(C,{label:"本地端口"},{default:o(()=>[t(T,{modelValue:n.localport,"onUpdate:modelValue":p[5]||(p[5]=$=>n.localport=$)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1},8,["data"])]),_:1},8,["loading"])]),_:1},8,["visible","confirm-btn"])}}}),Hy={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},Wy={key:0,class:"flex items-center justify-center min-h-[70vh] list-item-anim"},Gy={class:"design-card relative w-full max-w-md bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-xl p-10 text-center overflow-hidden"},Jy={class:"relative z-10 flex flex-col items-center"},Xy={key:0,class:"w-full"},Qy={key:1,class:"w-full"},Yy={class:"rounded-2xl border border-[var(--td-component-border)] bg-[var(--td-bg-color-secondarycontainer)]/70 p-6"},Zy={class:"mt-3 text-3xl font-black tracking-[0.3em] text-[var(--td-text-color-primary)]"},e_={class:"mt-4 flex flex-col gap-3"},t_={class:"mt-4 flex min-h-[22px] items-center justify-center"},o_={key:2,class:"mt-4 w-full rounded-2xl border border-red-200/80 bg-red-50/80 px-4 py-3 text-sm text-red-500 dark:border-red-900/60 dark:bg-red-950/20"},a_={class:"mt-6 pt-4 border-t border-dashed border-zinc-200 dark:border-zinc-700 w-full"},s_={key:1,id:"app-space",class:"relative flex flex-col gap-6"},l_={key:0,class:"design-card list-item-anim bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-5 sm:p-6",style:{"animation-delay":"0s"}},r_={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},n_={class:"flex items-center gap-3"},i_={class:"flex flex-col"},d_={class:"text-xs text-zinc-500 mt-1"},c_={class:"flex items-center gap-2"},u_={class:"grid grid-cols-2 lg:grid-cols-4 gap-4"},m_={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},p_={class:"text-lg font-bold text-[var(--td-text-color-primary)] truncate"},v_={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},f_={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},b_={class:"text-[var(--color-primary)]"},x_={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},g_={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},h_={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},y_={class:"text-[15px] font-bold text-[var(--color-warning)] font-mono mt-0.5"},__={class:"grid grid-cols-1 lg:grid-cols-12 gap-6 items-start"},w_={class:"lg:col-span-5 xl:col-span-4 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.1s"}},k_={class:"flex items-center justify-between p-4 sm:p-5 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},$_={class:"flex items-center gap-1"},z_={class:"flex-1 overflow-y-auto custom-scrollbar p-3"},C_={key:0,class:"flex flex-col gap-2"},A_=["onClick"],S_={class:"flex-1 min-w-0 mr-3"},I_={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},V_={class:"shrink-0"},U_={key:1,class:"h-full flex flex-col items-center justify-center opacity-60"},M_={class:"lg:col-span-7 xl:col-span-8 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.2s"}},L_={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 sm:p-6 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},B_={class:"flex flex-col min-w-0"},T_={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] m-0 truncate"},R_={class:"text-xs text-[var(--td-text-color-secondary)] mt-1 truncate font-mono bg-zinc-100 dark:bg-zinc-800/50 w-max px-2 py-0.5 rounded"},j_={class:"shrink-0"},P_={class:"flex-1 overflow-y-auto custom-scrollbar p-5 sm:p-6"},E_={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 gap-4"},D_={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},F_=["title"],O_={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},N_={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},K_={class:"p-4 bg-emerald-50/50 dark:bg-emerald-900/20 rounded-xl border border-emerald-200/50 dark:border-emerald-800/30 flex flex-col justify-center"},q_={class:"text-lg font-mono font-extrabold text-emerald-600 dark:text-emerald-400"},H_={class:"flex items-center gap-2"},W_={key:0,class:"w-2 h-2 rounded-full bg-[var(--color-success)] animate-pulse"},G_={class:"mt-8"},J_={key:1,class:"flex-1 flex flex-col items-center justify-center opacity-50 p-6 text-center"},X_={class:"w-24 h-24 bg-zinc-100 dark:bg-zinc-800 rounded-full flex items-center justify-center mb-4"},Q_=de({__name:"index",setup(a){const s=y(!1),r=y(null),d=y(!1),i=y(null),c=y([]),f=y(null),n=y(null),v=y(null),I=y("将在新标签页中打开授权页面"),u=y(""),R=y(!1),b=y(!1);let A=null;const p=()=>{O()},k=te(()=>c.value.find(H=>H.id===f.value)||null),g=te(()=>!!(r.value?.accessToken||r.value?.usertoken));ze(()=>{const H=ta();H&&(r.value=H,O(!1))}),Wa(()=>{B(),v.value&&!v.value.closed&&v.value.close()});function B(){A!==null&&(window.clearTimeout(A),A=null),b.value=!1}function C(){B(),n.value=null,I.value="将在新标签页中打开授权页面",u.value="",R.value=!1}function T(H){const J=ta()||r.value,ae={username:H.username,usergroup:H.usergroup,userimg:H.userimg,usertoken:H.usertoken,accessToken:J?.accessToken,refreshToken:J?.refreshToken,accessTokenExpiresAt:J?.accessTokenExpiresAt,tokenType:J?.tokenType,tunnelCount:H.tunnelCount,tunnel:H.tunnel};r.value=ae,Co(ae)}async function U(H,J){const ae=await Ly(H,J);Co(ae),r.value=ae,C(),await O()&&M.success("ChmlFrp 授权登录成功")}function D(H,J){B(),A=window.setTimeout(()=>{N(H,J)},J*1e3)}async function N(H,J){b.value=!0;try{const ae=await My(H);if(ae.access_token){v.value&&v.value.close(),await U(ae.access_token,{refresh_token:ae.refresh_token,expires_in:ae.expires_in,token_type:ae.token_type});return}if(ae.error==="authorization_pending"){I.value="请在浏览器中确认授权",D(H,J);return}if(ae.error==="slow_down"){I.value="请求过于频繁,正在自动重试...",D(H,J+5);return}if(ae.error==="expired_token"){B(),u.value="这次设备授权已过期,请重新开始授权。";return}if(ae.error==="access_denied"){B(),u.value="你已取消本次授权,请重新开始。";return}throw new Error(ae.error_description||ae.error||"获取访问令牌失败")}catch(ae){B(),u.value=ae?.message||"授权失败,请稍后重试"}}async function P(H=n.value){if(!H){u.value="请先开始授权流程";return}const J=H.verification_uri_complete||H.verification_uri;if(!J){u.value="账户中心未返回可用的授权地址";return}v.value=Bs(J,"ChmlFrp 授权登录",600,600),I.value="授权弹窗已打开,完成授权后此页面会自动继续"}async function j(){C(),R.value=!0,I.value="正在获取授权信息...";try{const H=await Uy();n.value=H,await P(H);const J=Math.max(Number(H.interval||5),1);N(H.device_code,J)}catch(H){B(),n.value=null,u.value=H?.message||"启动授权失败"}finally{R.value=!1}}async function O(H=!0){d.value=!0;try{const[J,ae]=await Promise.all([Ps(),By()]);return i.value=J,c.value=ae||[],T(J),c.value.length===0?f.value=null:c.value.some(le=>le.id===f.value)||(f.value=c.value[0].id),!0}catch(J){const ae=J?.response?.data?.msg||J?.msg||J?.message||"授权已失效或网络异常";return H&&M.error(`ChmlFrp 数据加载失败:${ae}`),z(!1),!1}finally{d.value=!1}}const $=y(!1);async function V(){if(k.value){$.value=!0;try{const H=await Py(k.value.node,k.value.name);await Jt(`${k.value.name} | ${k.value.node}`,Us(H),"ChmlFrp","toml"),M.success("配置文件已成功加载")}catch(H){const J=H?.response?.data?.msg||H?.msg||H?.message||"未知错误";M.error(`获取配置异常: ${J}`)}finally{$.value=!1}}}const _=()=>{s.value=!0};function z(H=!0){C(),r.value=null,i.value=null,c.value=[],f.value=null,oa(),H&&M.success("已断开 ChmlFrp 授权")}function E(){z()}async function F(){await O()&&M.success("数据已更新")}const X=y(!1);async function q(){if(k.value){X.value=!0;try{const H=await jy(k.value.id);if(H&&H.code&&H.code!==200)throw new Error(H.msg||"删除失败");M.success("隧道删除成功"),f.value=null,await O()}catch(H){const J=H.message||H.response?.data?.msg||H.msg||"未知错误";M.error(`删除失败: ${J}`)}finally{X.value=!1}}}return(H,J)=>{const ae=h("t-button"),le=h("t-loading"),fe=h("t-avatar"),be=h("t-tag"),Se=h("t-popconfirm"),Ee=h("t-icon");return l(),x("div",Hy,[g.value?(l(),x("div",s_,[t(le,{attach:"#app-space",loading:d.value,text:"加载数据中..."},null,8,["loading"]),i.value?(l(),x("div",l_,[e("div",r_,[e("div",n_,[t(fe,{image:i.value.userimg,size:"medium",shape:"round"},null,8,["image"]),e("div",i_,[J[13]||(J[13]=e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"ChmlFrp 账户",-1)),e("span",d_,S(i.value.email),1)])]),e("div",c_,[i.value.realname==="已实名"?(l(),W(be,{key:0,theme:"success",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[...J[14]||(J[14]=[m("已实名",-1)])]),_:1})):K("",!0),t(be,{theme:"primary",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[m(S(i.value.usergroup),1)]),_:1}),J[16]||(J[16]=e("div",{class:"w-px h-4 bg-zinc-200 dark:bg-zinc-700 mx-1"},null,-1)),t(Se,{content:"确认断开 ChmlFrp 的连接吗?",onConfirm:E},{default:o(()=>[t(ae,{variant:"text",theme:"danger",size:"small",class:"!rounded-lg hover:!bg-red-500/10"},{default:o(()=>[...J[15]||(J[15]=[m("退出登录",-1)])]),_:1})]),_:1})])]),e("div",u_,[e("div",m_,[J[17]||(J[17]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"}," 用户名称 ",-1)),e("div",p_,S(i.value.username),1)]),e("div",v_,[J[19]||(J[19]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"}," 隧道配额 ",-1)),e("div",f_,[e("span",b_,S(i.value.tunnelCount),1),m(" / "+S(i.value.tunnel)+" ",1),J[18]||(J[18]=e("span",{class:"text-sm font-medium text-zinc-500"},"条",-1))])]),e("div",x_,[J[21]||(J[21]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"}," 带宽限制 ",-1)),e("div",g_,[m(S(i.value.bandwidth)+" ",1),J[20]||(J[20]=e("span",{class:"text-sm font-medium text-zinc-500"},"Mbps",-1))])]),e("div",h_,[J[22]||(J[22]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"}," 账户积分 ",-1)),e("div",y_,S(i.value.integral),1)])])])):K("",!0),e("div",__,[e("div",w_,[e("div",k_,[J[25]||(J[25]=e("h3",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"我的隧道",-1)),e("div",$_,[t(ae,{size:"small",variant:"text",class:"!px-2 hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50",loading:d.value,onClick:F},{icon:o(()=>[t(w(Pe))]),default:o(()=>[J[23]||(J[23]=m("刷新 ",-1))]),_:1},8,["loading"]),t(ae,{size:"small",theme:"primary",class:"!px-3 !ml-1 !rounded-lg",onClick:_},{icon:o(()=>[t(w(at))]),default:o(()=>[J[24]||(J[24]=m("新建 ",-1))]),_:1})])]),e("div",z_,[c.value.length>0?(l(),x("div",C_,[(l(!0),x(re,null,xe(c.value,Y=>(l(),x("div",{key:Y.id,class:ue(["group flex items-center p-3 rounded-xl cursor-pointer transition-all duration-300 border",f.value===Y.id?"bg-[var(--color-primary)]/10 border-[var(--color-primary)]/30 shadow-sm":"bg-transparent border-transparent hover:bg-zinc-50 dark:hover:bg-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600"]),onClick:se=>f.value=Y.id},[e("div",{class:ue(["w-10 h-10 rounded-lg flex items-center justify-center shrink-0 mr-3 transition-colors",f.value===Y.id?"bg-[var(--color-primary)] text-white shadow-md shadow-[var(--color-primary)]/30":"bg-zinc-100 dark:bg-zinc-900 text-[var(--td-text-color-secondary)] group-hover:text-zinc-800 dark:group-hover:text-zinc-200"])},[t(w(st),{size:"20px"})],2),e("div",S_,[e("div",{class:ue(["font-bold text-sm truncate transition-colors",f.value===Y.id?"text-[var(--color-primary)]":"text-[var(--td-text-color-primary)]"])},S(Y.name),3),e("div",I_,S(Y.node),1)]),e("div",V_,[Y.state==="true"||Y.state===!0?(l(),W(be,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5"},{default:o(()=>[...J[26]||(J[26]=[m("在线",-1)])]),_:1})):(l(),W(be,{key:1,theme:"default",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5 !text-zinc-500"},{default:o(()=>[...J[27]||(J[27]=[m("离线",-1)])]),_:1}))])],10,A_))),128))])):(l(),x("div",U_,[t(w(st),{size:"32px",class:"text-zinc-400 mb-2"}),J[28]||(J[28]=e("span",{class:"text-sm text-zinc-500 font-medium"},"暂无隧道,请先新建",-1))]))])]),e("div",M_,[k.value?(l(),x(re,{key:0},[e("div",L_,[e("div",B_,[e("h3",T_,S(k.value.name),1),e("p",R_," ID: "+S(k.value.id),1)]),e("div",j_,[t(Se,{content:"确认删除此隧道吗?将无法恢复!",theme:"danger",placement:"bottom-right",onConfirm:q},{default:o(()=>[t(ae,{theme:"danger",class:"!rounded-lg hover:!bg-red-500 hover:!text-white transition-colors",loading:X.value},{icon:o(()=>[t(Ee,{name:"delete"})]),default:o(()=>[J[29]||(J[29]=m(" 删除隧道 ",-1))]),_:1},8,["loading"])]),_:1})])]),e("div",P_,[e("div",E_,[e("div",D_,[J[30]||(J[30]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"所在节点",-1)),e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate",title:k.value.node},S(k.value.node),9,F_)]),e("div",O_,[J[31]||(J[31]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"本地地址",-1)),e("span",N_,S(k.value.localip)+":"+S(k.value.nport),1)]),e("div",K_,[J[32]||(J[32]=e("span",{class:"text-[11px] font-extrabold text-emerald-600/80 dark:text-emerald-500/80 uppercase tracking-widest mb-1.5"},"远程信息 (端口/域名)",-1)),e("span",q_,S(k.value.dorp),1)]),e("div",{class:ue(["p-4 rounded-xl flex flex-col justify-center border transition-colors",k.value.state==="true"||k.value.state===!0?"bg-emerald-50/50 dark:bg-emerald-900/10 border-emerald-200/50 dark:border-emerald-800/30":"bg-zinc-50/80 dark:bg-zinc-900/50 border-[var(--td-component-border)]"])},[e("span",{class:ue(["text-[11px] font-extrabold uppercase tracking-widest mb-1.5",k.value.state==="true"||k.value.state===!0?"text-emerald-600/80 dark:text-emerald-500/80":"text-[var(--td-text-color-secondary)]"])},"当前状态",2),e("div",H_,[k.value.state==="true"||k.value.state===!0?(l(),x("span",W_)):K("",!0),e("span",{class:ue(["text-sm font-bold",k.value.state==="true"||k.value.state===!0?"text-[var(--color-success)]":"text-zinc-500"])},S(k.value.state==="true"||k.value.state===!0?"节点在线":"离线"),3)])],2)]),e("div",G_,[t(ae,{theme:"primary",size:"large",loading:$.value,block:"",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow text-base",onClick:V},{icon:o(()=>[t(w(_t))]),default:o(()=>[J[33]||(J[33]=m(" 使用此隧道 ",-1))]),_:1},8,["loading"])])])],64)):(l(),x("div",J_,[e("div",X_,[t(w(bt),{size:"40px",class:"text-zinc-400"})]),J[34]||(J[34]=e("h3",{class:"text-base font-bold text-zinc-700 dark:text-zinc-300 mb-1"},"未选择隧道",-1)),J[35]||(J[35]=e("p",{class:"text-sm text-zinc-500"},"请在左侧列表中选择一个隧道以查看详细信息",-1))]))])])])):(l(),x("div",Wy,[e("div",Gy,[J[11]||(J[11]=e("div",{class:"absolute -top-20 -right-20 w-60 h-60 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),J[12]||(J[12]=e("div",{class:"absolute -bottom-10 -left-10 w-40 h-40 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),e("div",Jy,[J[8]||(J[8]=e("div",{class:"w-20 h-20 bg-[var(--color-primary)]/10 rounded-2xl flex items-center justify-center mb-6 shadow-sm border border-[var(--color-primary)]/20 overflow-hidden p-2"},[e("img",{src:"https://panel.chmlfrp.net/favicon.ico",alt:"logo",class:"w-full h-full object-contain"})],-1)),J[9]||(J[9]=e("h2",{class:"text-2xl font-extrabold text-[var(--td-text-color-primary)] !mb-2 tracking-tight"},"登录 ChmlFrp",-1)),J[10]||(J[10]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] !mb-6 font-medium"}," 使用浏览器完成官方授权,MSLX 会自动同步您的 ChmlFrp 账户 ",-1)),n.value?(l(),x("div",Qy,[e("div",Yy,[J[4]||(J[4]=e("div",{class:"text-xs font-bold uppercase tracking-widest text-[var(--td-text-color-secondary)]"}," 设备码 ",-1)),e("div",Zy,S(n.value.user_code||"-"),1)]),e("div",e_,[t(ae,{block:"",theme:"primary",size:"large",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50",onClick:J[0]||(J[0]=Y=>P())},{default:o(()=>[...J[5]||(J[5]=[m(" 重新打开授权页 ",-1)])]),_:1})]),e("div",t_,[t(ae,{variant:"text",size:"small",loading:R.value,class:"!h-auto !px-0 text-[var(--color-primary)]",onClick:j},{default:o(()=>[...J[6]||(J[6]=[m(" 重新开始授权 ",-1)])]),_:1},8,["loading"])])])):(l(),x("div",Xy,[t(ae,{block:"",theme:"primary",size:"large",loading:R.value,class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50",onClick:j},{icon:o(()=>[t(w(mo))]),default:o(()=>[J[3]||(J[3]=m(" 授权登录 ",-1))]),_:1},8,["loading"])])),u.value?(l(),x("div",o_,S(u.value),1)):K("",!0),e("div",a_,[t(ae,{variant:"text",size:"small",class:"text-zinc-500 hover:text-[var(--color-primary)]",onClick:J[1]||(J[1]=Y=>w(Ie)("https://panel.chmlfrp.net"))},{default:o(()=>[...J[7]||(J[7]=[m("ChmlFrp 控制台",-1)])]),_:1})])])])])),s.value?(l(),W(qy,{key:2,visible:s.value,"onUpdate:visible":J[2]||(J[2]=Y=>s.value=Y),onSuccess:p},null,8,["visible"])):K("",!0)])}}}),Y_=me(Q_,[["__scopeId","data-v-dfc04ce3"]]),Z_={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},e2={class:"design-card list-item-anim flex flex-col sm:flex-row sm:items-center justify-between gap-5 p-5 sm:p-6 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left",style:{"animation-delay":"0s"}},t2={class:"flex items-center shrink-0"},o2={class:"relative w-full"},a2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},s2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},l2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},r2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},n2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},i2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},d2=de({__name:"index",setup(a){const s=y(1);return(r,d)=>{const i=h("t-radio-button"),c=h("t-radio-group");return l(),x("div",Z_,[e("div",e2,[d[7]||(d[7]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex flex-col"},[e("h2",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none tracking-tight"},"创建穿透隧道"),e("span",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 font-medium"},"选择适合您的内网穿透服务,快速将本地服务器暴露至公网以进行联机···")])],-1)),e("div",t2,[t(c,{modelValue:s.value,"onUpdate:modelValue":d[0]||(d[0]=f=>s.value=f),variant:"default-filled"},{default:o(()=>[t(i,{value:1},{default:o(()=>[...d[1]||(d[1]=[m("MSLFrp",-1)])]),_:1}),t(i,{value:2},{default:o(()=>[...d[2]||(d[2]=[m("MSL 联机",-1)])]),_:1}),t(i,{value:3},{default:o(()=>[...d[3]||(d[3]=[m("ME Frp",-1)])]),_:1}),t(i,{value:4},{default:o(()=>[...d[4]||(d[4]=[m("ChmlFrp",-1)])]),_:1}),t(i,{value:5},{default:o(()=>[...d[5]||(d[5]=[m("Sakura Frp",-1)])]),_:1}),t(i,{value:888},{default:o(()=>[...d[6]||(d[6]=[m("自定义配置",-1)])]),_:1})]),_:1},8,["modelValue"])])]),e("div",o2,[Le(e("div",a2,[t(Zx)],512),[[Te,s.value===1]]),Le(e("div",s2,[t(vg)],512),[[Te,s.value===2]]),Le(e("div",l2,[t(hh)],512),[[Te,s.value===3]]),Le(e("div",r2,[t(Y_)],512),[[Te,s.value===4]]),Le(e("div",n2,[t(wy)],512),[[Te,s.value===5]]),Le(e("div",i2,[t(wb)],512),[[Te,s.value===888]])])])}}}),c2=me(d2,[["__scopeId","data-v-02481195"]]),u2=Object.freeze(Object.defineProperty({__proto__:null,default:c2},Symbol.toStringTag,{value:"Module"})),m2={class:"h-[38px] shrink-0 bg-transparent border-b border-[var(--td-component-border)] flex items-center px-4 relative z-10"},p2={class:"text-[var(--td-text-color-secondary)] text-xs font-mono"},v2=de({__name:"ConsoleTerminal",props:{frpId:{}},emits:["update"],setup(a,{expose:s,emit:r}){const d=a,i=r,c=Be(),f=y(null),n=y(null);let v=null,I=null,u=null,R=null,b=null;const A={dark:{background:"transparent",foreground:"#cccccc",cursor:"transparent",selectionBackground:"#264f78",black:"#000000",red:"#cd3131",green:"#0dbc79",yellow:"#e5e510",blue:"#2472c8",magenta:"#bc3fbc",cyan:"#11a8cd",white:"#e5e5e5",brightBlack:"#666666",brightRed:"#f14c4c",brightGreen:"#23d18b",brightYellow:"#f5f543",brightBlue:"#3b8eea",brightMagenta:"#d670d6",brightCyan:"#29b8db",brightWhite:"#e5e5e5"},light:{background:"transparent",foreground:"#333333",cursor:"transparent",selectionBackground:"#add6ff",black:"#000000",red:"#cd3131",green:"#00bc79",yellow:"#9d9d10",blue:"#2472c8",magenta:"#bc3fbc",cyan:"#11a8cd",white:"#e5e5e5",brightBlack:"#666666",brightRed:"#f14c4c",brightGreen:"#23d18b",brightYellow:"#aeae11",brightBlue:"#3b8eea",brightMagenta:"#d670d6",brightCyan:"#29b8db",brightWhite:"#e5e5e5"}};ye.enabled=!0;const p=O=>O?(O=O.replace(/^(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{3})?)/,$=>ye.gray($)),O=O.replace(/\[I\]/g,ye.green("[I]")),O=O.replace(/\[W\]/g,ye.yellow("[W]")),O=O.replace(/\[E\]/g,ye.red("[E]")),O=O.replace(/(success)/gi,$=>ye.bold.green($)),O=O.replace(/(start|starting)/gi,$=>ye.blue($)),O=O.replace(/(failed|error)/gi,$=>ye.bgRed.white(` ${$} `)),O=O.replace(/(:\d{4,5})/g,$=>ye.cyan($)),O=O.replace(/(\[[0-9a-f]{8,}\])/g,$=>ye.magenta($)),O):"",k=()=>{if(!n.value||!f.value)return;if(v){v.clear(),B();return}const O=document.documentElement.getAttribute("theme-mode")==="dark";v=new ms({cursorBlink:!1,cursorStyle:"bar",fontSize:14,fontFamily:'"Maple Mono", "Maple Mono CN", "Cascadia Code", Consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace',lineHeight:1.4,theme:O?A.dark:A.light,allowTransparency:!0,disableStdin:!0,convertEol:!0}),I=new ps,v.loadAddon(I),v.open(n.value);const $=()=>{if(n.value&&n.value.clientWidth>0&&n.value.clientHeight>0)try{I?.fit(),v?.scrollToBottom()}catch(V){console.warn(V)}};u=new ResizeObserver(()=>window.requestAnimationFrame($)),u.observe(f.value),setTimeout($,100),B()},g=()=>{if(!v)return;const O=document.documentElement.getAttribute("theme-mode")==="dark";v.options.theme=O?A.dark:A.light},B=()=>{v?.writeln("\x1B[1;34m[System]\x1B[0m 正在初始化Frp控制台 ..."),v?.writeln(`\x1B[1;34m[System]\x1B[0m ID: ${d.frpId} | 状态: \x1B[32m已就绪!\x1B[0m`)},C=async()=>{if(b)try{await b.stop(),b=null}catch(O){console.error(O)}},T=async()=>{if(await C(),!d.frpId)return;const{baseUrl:O,token:$}=c,V=new URL("/api/hubs/frpLogsHub",O||window.location.origin);$&&V.searchParams.append("x-user-token",$),b=new Ct().withUrl(V.toString(),{withCredentials:!1}).configureLogging(jt.Warning).withAutomaticReconnect([0,2e3,5e3,1e4,3e4]).build(),b.on("ReceiveLog",_=>{v?.writeln(p(_)),_.includes("[MSLX]")&&setTimeout(()=>{i("update")},2e3)}),b.onreconnecting(_=>{v?.writeln("\x1B[1;33m[System] 检测到连接中断,正在尝试重连...\x1B[0m"),console.warn("SignalR Reconnecting:",_)}),b.onreconnected(async()=>{v?.writeln("\x1B[1;32m[System] 网络已恢复,重新连接日志服务...\x1B[0m");try{await b?.invoke("JoinGroup",d.frpId),v?.writeln("\x1B[1;32m[System] 日志服务成功重新连接!\x1B[0m")}catch(_){v?.writeln(`\x1B[1;31m[Error] 重新连接日志服务失败: ${_.message}\x1B[0m`)}}),b.onclose(_=>{_&&(v?.writeln(`\x1B[1;31m[System] 日志服务连接已断开: ${_.message}\x1B[0m`),v?.writeln("\x1B[1;31m[System] 请刷新页面或检查网络连接。\x1B[0m"))});try{await b.start(),v?.writeln("\x1B[1;32m[System] 成功连接到Frpc日志服务\x1B[0m"),await b.invoke("JoinGroup",d.frpId)}catch(_){v?.writeln(`\x1B[1;31m[Error] 连接失败: ${_.message}\x1B[0m`)}},U=O=>v?.writeln(O),D=()=>{v?.clear(),B()};let N=0;const P=O=>{N=O.touches[0].clientY},j=O=>{if(!v)return;const $=O.touches[0].clientY,V=N-$,_=19.6,z=Math.trunc(V/_);Math.abs(z)>=1&&(v.scrollLines(z),N=$+V%_)};return s({writeln:U,clear:D}),_e(()=>d.frpId,async O=>{O&&(k(),await T())}),ze(async()=>{await yt(),k(),R=new MutationObserver(g),R.observe(document.documentElement,{attributes:!0,attributeFilter:["theme-mode"]}),d.frpId&&await T()}),He(async()=>{R?.disconnect(),await C(),v?.dispose(),u?.disconnect()}),(O,$)=>(l(),x("div",{ref_key:"terminalWrapper",ref:f,class:"terminal-wrapper flex-1 flex flex-col bg-[var(--td-bg-color-container)]/80 border border-[var(--td-component-border)] rounded-xl overflow-hidden shadow-sm relative w-full h-full"},[e("div",m2,[$[0]||($[0]=e("div",{class:"flex gap-1.5 mr-4"},[e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#ff5f56]"}),e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#ffbd2e]"}),e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#27c93f]"})],-1)),e("div",p2,"MSLX - Frp 控制台 | "+S(a.frpId),1)]),e("div",{ref_key:"terminalBody",ref:n,class:"absolute top-[38px] bottom-[50px] left-0 right-0 py-1.5 pl-2.5 z-[1] terminal-body-container",onTouchstart:P,onTouchmove:dt(j,["prevent"])},null,544)],512))}}),f2=me(v2,[["__scopeId","data-v-ac76d718"]]),go=(a,s=!0,r="复制成功")=>new Promise((d,i)=>{navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(a).then(()=>{s&&M.success(r),d()}).catch(()=>{Oa(a,s,r,d,i)}):Oa(a,s,r,d,i)});function Oa(a,s,r,d,i){try{const c=document.createElement("textarea");c.value=a,c.style.top="0",c.style.left="0",c.style.position="fixed",document.body.appendChild(c),c.focus(),c.select();const f=document.execCommand("copy");document.body.removeChild(c),f?(s&&M.success(r),d()):(s&&M.error("复制失败"),i(new Error("execCommand returned false")))}catch(c){s&&M.error("复制出错"),i(c)}}const b2={class:"flex flex-col gap-5"},x2={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-xl border border-[var(--td-component-border)] shadow-sm p-5"},g2={class:"flex justify-between items-center mb-5"},h2={class:"relative flex h-2.5 w-2.5"},y2={key:0,class:"animate-ping absolute inline-flex h-full w-full rounded-full bg-[var(--color-success)] opacity-75"},_2={class:"flex flex-col gap-3"},w2={class:"flex gap-3 w-full mt-2"},k2={class:"design-card flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-xl border border-[var(--td-component-border)] shadow-sm p-5"},$2={class:"flex justify-between items-center mb-4 pb-4 border-b border-zinc-200/60 dark:border-zinc-700/60"},z2={class:"flex flex-col"},C2={class:"flex justify-between items-center py-2"},A2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},S2={class:"font-mono font-bold text-sm text-[var(--td-text-color-primary)]"},I2={key:0,class:"text-[11px] font-bold text-zinc-400 mb-1.5"},V2={class:"flex justify-between items-center py-1.5"},U2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},M2=["onClick"],L2={class:"flex justify-between items-center py-1.5"},B2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},T2={class:"text-xs font-bold text-[var(--color-primary)] uppercase"},R2={class:"flex justify-between items-center py-1.5"},j2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},P2=["onClick"],E2={key:1,class:"flex justify-between items-center py-1.5"},D2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},F2=["onClick"],O2={class:"flex justify-between items-center py-1.5"},N2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},K2={class:"font-mono text-xs text-[var(--td-text-color-secondary)]"},q2={key:1,class:"py-8 text-center flex flex-col items-center justify-center opacity-60"},H2={class:"text-xs font-medium text-zinc-500"},W2=de({__name:"ControlPanel",props:{frpId:{},isRunning:{type:Boolean},loading:{type:Boolean},tunnelInfo:{}},emits:["start","stop","clear-log","edit-config"],setup(a){const s=Be();return(r,d)=>{const i=h("t-tag"),c=h("t-button"),f=h("t-tooltip");return l(),x("div",b2,[e("div",x2,[e("div",g2,[e("div",{class:ue(["flex items-center gap-2 font-bold text-sm",a.isRunning?"text-[var(--color-success)]":"text-zinc-500"])},[e("span",h2,[a.isRunning?(l(),x("span",y2)):K("",!0),e("span",{class:ue(["relative inline-flex rounded-full h-2.5 w-2.5",a.isRunning?"bg-[var(--color-success)]":"bg-zinc-400 dark:bg-zinc-600"])},null,2)]),m(" "+S(a.isRunning?"运行中":"未运行"),1)],2),t(i,{theme:a.isRunning?"success":"default",variant:"light",class:"!rounded !font-bold"},{default:o(()=>[m(S(a.isRunning?"状态正常":"已停止"),1)]),_:1},8,["theme"])]),e("div",_2,[a.isRunning?(l(),W(c,{key:1,theme:"danger",block:"",loading:a.loading,class:"!rounded-lg !h-10 !font-bold shadow-sm",onClick:d[1]||(d[1]=n=>r.$emit("stop"))},{icon:o(()=>[t(w(uo))]),default:o(()=>[d[5]||(d[5]=m("停止服务 ",-1))]),_:1},8,["loading"])):(l(),W(c,{key:0,theme:"primary",block:"",loading:a.loading,class:"!rounded-lg !h-10 !font-bold shadow-sm",onClick:d[0]||(d[0]=n=>r.$emit("start"))},{icon:o(()=>[t(w(_t))]),default:o(()=>[d[4]||(d[4]=m("启动服务 ",-1))]),_:1},8,["loading"])),e("div",w2,[t(c,{variant:"outline",theme:"warning",class:"flex-1 !rounded-lg !h-8 !bg-amber-500/10 !border-amber-500/30 !text-amber-600 dark:!text-amber-400 hover:!bg-amber-500/20",onClick:d[2]||(d[2]=n=>r.$emit("clear-log"))},{icon:o(()=>[t(w(Pe))]),default:o(()=>[d[6]||(d[6]=m("清空日志 ",-1))]),_:1}),w(s).isAdmin?(l(),W(c,{key:0,variant:"outline",theme:"default",class:"flex-1 !rounded-lg !h-8 !bg-zinc-100 dark:!bg-zinc-800 !border-zinc-200 dark:!border-zinc-700 !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700",onClick:d[3]||(d[3]=n=>r.$emit("edit-config"))},{icon:o(()=>[t(w(bl))]),default:o(()=>[d[7]||(d[7]=m("配置文件 ",-1))]),_:1})):K("",!0)])])]),e("div",k2,[e("div",$2,[d[10]||(d[10]=e("h3",{class:"text-sm font-bold text-[var(--td-text-color-primary)] m-0"},"隧道概览",-1)),a.tunnelInfo?.proxies?.some(n=>n.type==="xtcp")?(l(),W(i,{key:0,variant:"light-outline",theme:"primary",class:"!rounded !font-bold"},{default:o(()=>[...d[8]||(d[8]=[m("联机房间 - 房主",-1)])]),_:1})):a.tunnelInfo?.proxies?.some(n=>n.type==="xtcp - Visitors")?(l(),W(i,{key:1,variant:"light-outline",theme:"primary",class:"!rounded !font-bold"},{default:o(()=>[...d[9]||(d[9]=[m("联机房间 - 访客",-1)])]),_:1})):(l(),W(c,{key:2,shape:"circle",variant:"text",size:"small",class:"!text-zinc-400 hover:!text-[var(--color-primary)]"},{default:o(()=>[t(w(Tt),{size:"14px"})]),_:1}))]),e("div",z2,[e("div",C2,[e("div",A2,[t(w(st),{size:"14px"}),d[11]||(d[11]=m(" 隧道实例 ID",-1))]),e("div",S2,"#"+S(a.frpId),1)]),a.tunnelInfo?.proxies?.length>0?(l(!0),x(re,{key:0},xe(a.tunnelInfo.proxies,(n,v)=>(l(),x("div",{key:v,class:"flex flex-col gap-2 pt-4 mt-3 border-t border-dashed border-zinc-200 dark:border-zinc-700/60"},[a.tunnelInfo.proxies.length>1?(l(),x("div",I2," 配置 #"+S(v+1),1)):K("",!0),e("div",V2,[e("div",U2,[t(w(bt),{size:"14px"}),m(" "+S(n.type.includes("xtcp")?"房间号":"名称"),1)]),t(f,{content:n.proxyName,placement:"top","show-arrow":"","destroy-on-close":""},{default:o(()=>[e("div",{class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate max-w-[140px] cursor-pointer hover:text-[var(--color-primary)] transition-colors",onClick:I=>w(go)(n.proxyName,!0,`${n.type.includes("xtcp")?"房间号":"隧道名称"}已复制!`)},S(n.proxyName),9,M2)]),_:2},1032,["content"])]),e("div",L2,[e("div",B2,[t(w(ts),{size:"14px"}),d[12]||(d[12]=m(" 协议",-1))]),e("div",T2,S(n.type),1)]),e("div",R2,[e("div",j2,[t(w(Bt),{size:"14px"}),m(" "+S(n.type.includes("xtcp")?"密钥":"远程地址"),1)]),t(f,{content:n.remoteAddressMain,placement:"top","show-arrow":"","destroy-on-close":""},{default:o(()=>[e("div",{class:"font-mono font-bold text-xs text-[var(--td-text-color-primary)] truncate max-w-[140px] cursor-pointer hover:text-[var(--color-primary)] transition-colors",onClick:I=>w(go)(n.remoteAddressMain,!0,`${n.type.includes("xtcp")?"房间密钥":"连接地址"}已复制!`)},S(n.remoteAddressMain||"获取中..."),9,P2)]),_:2},1032,["content"])]),n.remoteAddressBackup&&n.remoteAddressBackup!==n.remoteAddressMain?(l(),x("div",E2,[e("div",D2,[t(w(Bt),{size:"14px"}),d[13]||(d[13]=m(" 备用地址",-1))]),t(f,{content:n.remoteAddressBackup,placement:"top","show-arrow":"","destroy-on-close":""},{default:o(()=>[e("div",{class:"font-mono font-bold text-xs text-[var(--td-text-color-primary)] truncate max-w-[140px] cursor-pointer hover:text-[var(--color-primary)] transition-colors",onClick:I=>w(go)(n.remoteAddressBackup,!0,"备用连接地址已复制!")},S(n.remoteAddressBackup),9,F2)]),_:2},1032,["content"])])):K("",!0),e("div",O2,[e("div",N2,[t(w(Tt),{size:"14px"}),d[14]||(d[14]=m(" 本地地址",-1))]),e("div",K2,S(n.localAddress),1)])]))),128)):(l(),x("div",q2,[t(w(st),{size:"24px",class:"text-zinc-400 mb-2"}),e("span",H2,S(a.loading?"加载配置中...":"暂无隧道信息"),1)]))])])])}}}),G2=me(W2,[["__scopeId","data-v-998b345f"]]),J2={class:"flex flex-col gap-2"},X2={class:"border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl overflow-hidden shadow-inner bg-white dark:bg-zinc-900/30"},Q2={class:"flex justify-end items-center gap-4 px-1 text-[11.5px] font-mono text-[var(--td-text-color-secondary)] tracking-wider"},Y2={class:"text-[var(--color-primary)] font-medium bg-[var(--color-primary)]/10 px-1.5 py-0.5 rounded"},Z2={class:"flex justify-between items-center w-full mt-2"},ew={class:"flex"},tw={class:"flex items-center gap-2"},ow=de({__name:"FileEditor",props:{visible:Boolean,fileName:String,content:String,loading:Boolean},emits:["update:visible","save"],setup(a,{emit:s}){const r=a,d=s,i=async()=>{if(!c.value)return;const b=r.fileName?.split(".").pop()?.toLowerCase();let A="",p=[];switch(b){case"json":A="json",p=[za,Ca];break;case"yml":case"yaml":A="yaml",p=[vr];break;case"js":case"ts":A="babel",p=[za,Ca];break;case"css":case"less":case"scss":A="css",p=[pr];break;case"html":case"xml":A="html",p=[mr];break;default:M.warning("该文件类型暂不支持自动格式化");return}try{const k=await ur.format(c.value,{parser:A,plugins:p,tabWidth:2,printWidth:80,semi:!0,singleQuote:!0});c.value=k,M.success("格式化成功")}catch(k){console.error(k),M.error(`格式化失败: 请检查语法错误 +${k.message.split(` +`)[0]}`)}},c=y(""),f=y(!1);let n=null;const v=()=>{const b=document.documentElement.getAttribute("theme-mode");f.value=b==="dark"};ze(()=>{v(),n=new MutationObserver(v),n.observe(document.documentElement,{attributes:!0,attributeFilter:["theme-mode"]})}),He(()=>{n?.disconnect()}),_e(()=>r.content,b=>{c.value=b||""},{immediate:!0});const I=te(()=>{const b=[];switch(f.value&&b.push(or),b.push(ar.phrases.of({Find:"查找内容...",Replace:"替换为...",next:"下一个",previous:"上一个",all:"选中所有","match case":"区分大小写","by word":"全字匹配",regexp:"正则表达式",replace:"替换","replace all":"替换全部",close:"关闭"})),r.fileName?.split(".").pop()?.toLowerCase()){case"json":b.push(cr());break;case"yml":case"yaml":b.push(dr());break;case"js":case"ts":b.push(ir());break;case"css":case"less":case"scss":b.push(nr());break;case"html":case"xml":b.push(rr());break;case"toml":case"ini":case"conf":b.push(sr.define(lr));break}return b}),u=()=>{d("update:visible",!1)},R=()=>{d("save",c.value)};return(b,A)=>{const p=h("t-button"),k=h("t-dialog");return l(),W(k,{visible:a.visible,header:`正在编辑: ${a.fileName}`,width:"90%",attach:"body",top:"2vh",class:"editor-dialog",onClose:u},{footer:o(()=>[e("div",Z2,[e("div",ew,[t(p,{variant:"outline",theme:"default",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:i},{default:o(()=>[...A[1]||(A[1]=[m(" 自动格式化 ",-1)])]),_:1})]),e("div",tw,[t(p,{variant:"outline",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:u},{default:o(()=>[...A[2]||(A[2]=[m(" 取消 ",-1)])]),_:1}),t(p,{theme:"primary",class:"!rounded-lg shadow-sm",loading:r.loading,onClick:R},{default:o(()=>[...A[3]||(A[3]=[m(" 保存 ",-1)])]),_:1},8,["loading"])])])]),default:o(()=>[e("div",J2,[e("div",X2,[t(w(xl),{modelValue:c.value,"onUpdate:modelValue":A[0]||(A[0]=g=>c.value=g),placeholder:"文件内容为空...",style:{height:"60vh",fontSize:"14px"},autofocus:!0,"indent-with-tab":!0,"tab-size":2,extensions:I.value},null,8,["modelValue","extensions"])]),e("div",Q2,[e("span",null,"行数: "+S(c.value.split(` +`).length),1),e("span",null,"长度: "+S(c.value.length),1),e("span",Y2,S(f.value?"Dark Mode":"Light Mode"),1)])])]),_:1},8,["visible","header"])}}}),Es=me(ow,[["__scopeId","data-v-454d5ea2"]]),aw={class:"h-auto md:h-full flex flex-col md:flex-row gap-5 overflow-y-auto md:overflow-hidden pb-3 box-border relative"},sw={class:"list-item-anim w-full min-h-[400px] shrink-0 md:flex-1 md:min-h-0 md:h-full flex flex-col",style:{"animation-delay":"0s"}},lw={class:"list-item-anim w-full md:w-80 lg:w-[340px] shrink-0 h-auto md:h-full overflow-y-auto custom-scrollbar md:pr-1 flex flex-col hide-scrollbar-on-mobile",style:{"animation-delay":"0.1s"}},rw=de({__name:"index",setup(a){const s=Lo(),r=Ye(),d=y(parseInt(r.params.frpId)||0),i=y(!1),c=y(!1),f=y(null),n=y(!1),v=y(""),I=y(""),u=y(!1),R=y(null);async function b(){if(d.value)try{f.value=await Ii(d.value),i.value=f.value.isRunning,await s.getTunnels()}catch(T){console.error("获取隧道信息失败",T),R.value?.writeln(`\x1B[1;31m[Error] 获取隧道信息失败: ${T}\x1B[0m`)}}const A=async()=>{c.value=!0;try{R.value?.writeln("\x1B[1;32m[System] 正在发送启动指令...\x1B[0m"),await ja("start",d.value),i.value=!0,M.success("启动指令已发送"),setTimeout(b,1500),R.value?.writeln("\x1B[1;35m\x1B[1m[TIPS] 注意:日志可能包含您的在线服务商的Token信息,若需要截图,请将关键信息打码处理!\x1B[0m")}catch(T){R.value?.writeln(`\x1B[1;31m[Error] Frpc启动失败: ${T.message}\x1B[0m`)}finally{c.value=!1}},p=async()=>{c.value=!0;try{R.value?.writeln("\x1B[1;32m[System] 正在发送停止指令...\x1B[0m"),await ja("stop",d.value),i.value=!1,M.warning("停止指令已发送"),setTimeout(b,1e3)}catch(T){R.value?.writeln(`\x1B[1;31m[Error] Frpc停止失败: ${T.message}\x1B[0m`)}finally{c.value=!1}},k=()=>{R.value?.clear()},g=()=>{const T=Ke.confirm({header:"警告",body:`直接编辑配置文件可能会导致服务无法启动或异常。正常情况在线服务商提供的配置文件也不能修改。请确保您了解配置文件的格式和内容。 + +是否继续?`,theme:"warning",onConfirm:async()=>{T.hide(),await B()}})},B=async()=>{const T=M.loading("正在读取配置文件...");try{let U="toml";const D=s.frpList.find(O=>O.id===d.value);D&&D.configType&&(U=D.configType.toLowerCase());const N=`frpc.${U}`,P=`${d.value}/${N}`,j=await Uo(0,P);v.value=N,I.value=j,n.value=!0,M.close(T)}catch(U){M.close(T),M.error("读取配置文件失败: "+U.message),R.value?.writeln(`\x1B[1;31m[Error] 读取配置文件失败: ${U.message}\x1B[0m`)}},C=async T=>{u.value=!0;try{const U=`${d.value}/${v.value}`;await ma(0,U,T),M.success("配置文件保存成功"),n.value=!1,R.value?.writeln("\x1B[1;32m[System] 配置文件已更新,请重启服务以生效。\x1B[0m")}catch(U){M.error("保存失败"),R.value?.writeln(`\x1B[1;31m[Error] 保存失败: ${U.message}\x1B[0m`)}finally{u.value=!1}};return _e(()=>r.params.frpId,async T=>{r.name==="FrpConsole"&&T&&(d.value=parseInt(T),await b())}),ze(()=>{d.value&&b()}),(T,U)=>(l(),x("div",aw,[e("div",sw,[t(f2,{ref_key:"terminalRef",ref:R,"frp-id":d.value,onUpdate:U[0]||(U[0]=D=>b())},null,8,["frp-id"])]),e("div",lw,[t(G2,{"frp-id":d.value,"is-running":i.value,loading:c.value,"tunnel-info":f.value,onStart:A,onStop:p,onClearLog:k,onEditConfig:g},null,8,["frp-id","is-running","loading","tunnel-info"])]),t(Es,{visible:n.value,"onUpdate:visible":U[1]||(U[1]=D=>n.value=D),"file-name":v.value,content:I.value,loading:u.value,onSave:C},null,8,["visible","file-name","content","loading"])]))}}),nw=me(rw,[["__scopeId","data-v-7b7858f8"]]),iw=Object.freeze(Object.defineProperty({__proto__:null,default:nw},Symbol.toStringTag,{value:"Module"})),po=zt("instanceHub",()=>{const a=Be(),s=y(null),r=y(!1),d=y(null),i=y(0),c=y(0);let f=Promise.resolve();const n=y({cpu:0,memBytes:0,memPercent:0}),v=new Set,I=new Set,u=new Set,R=new Set,b=new Set,A=new Set,p=O=>{c.value=O},k=O=>(f=f.then(async()=>{if(i.value++,s.value?.state==="Connected"&&d.value===O)return;s.value&&await B(),d.value=O,c.value=0;const{baseUrl:$,token:V}=a,_=new URL("/api/hubs/instanceControlHub",$||window.location.origin);V&&_.searchParams.append("x-user-token",V);const z=new Ct().withUrl(_.toString(),{withCredentials:!1}).configureLogging(jt.Warning).withAutomaticReconnect([0,2e3,5e3,1e4]).build();z.on("ReceiveLog",E=>{v.forEach(F=>F(E))}),z.on("RequireEULA",()=>{I.forEach(E=>E())}),z.on("CommandResult",(E,F)=>{u.forEach(X=>X(E,F))}),z.on("ReceiveStatus",(E,F,X)=>{if(String(E)!==String(O))return;let q=0;if(c.value>0){const H=c.value*1024*1024;q=X/H*100,q>100&&(q=100)}n.value={cpu:F,memBytes:X,memPercent:q}}),z.on("PlayerJoined",(E,F)=>{String(E)===String(O)&&R.forEach(X=>X(F))}),z.on("PlayerLeft",(E,F)=>{String(E)===String(O)&&b.forEach(X=>X(F))}),z.on("PlayerListCleared",E=>{String(E)===String(O)&&A.forEach(F=>F())}),z.onreconnecting(()=>v.forEach(E=>E("\x1B[1;31m[System] 连接中断,尝试重连...\x1B[0m"))),z.onreconnected(async()=>{v.forEach(E=>E("\x1B[1;32m[System] 网络恢复,重新加入会话...\x1B[0m"));try{await z.invoke("JoinGroup",O)}catch(E){console.error(E)}});try{await z.start(),await z.invoke("JoinGroup",O),s.value=z,r.value=!0,v.forEach(E=>E("\x1B[1;32m[System] 已连接到实例控制服务\x1B[0m"))}catch(E){r.value=!1,v.forEach(F=>F(`\x1B[1;31m[Error] 连接失败: ${E.message}\x1B[0m`)),d.value=null,s.value=null}}),f),g=()=>(f=f.then(async()=>{i.value>0&&i.value--,i.value===0&&await B()}),f),B=async()=>{if(s.value)try{s.value.state==="Connected"&&d.value&&await s.value.invoke("LeaveGroup",d.value),await s.value.stop()}catch(O){console.warn(O)}s.value=null,r.value=!1,d.value=null,c.value=0,n.value={cpu:0,memBytes:0,memPercent:0}};return{isConnected:r,stats:n,currentServerId:d,connect:k,disconnect:g,setMaxMemory:p,sendCommand:async O=>{if(!s.value||s.value.state!=="Connected"||!d.value)throw new Error("未连接到服务");await s.value.invoke("SendCommand",d.value,O)},onLog:O=>(v.add(O),()=>v.delete(O)),onEula:O=>(I.add(O),()=>v.delete(O)),onCommandResult:O=>(u.add(O),()=>u.delete(O)),onPlayerJoined:O=>(R.add(O),()=>R.delete(O)),onPlayerLeft:O=>(b.add(O),()=>b.delete(O)),onPlayerListCleared:O=>(A.add(O),()=>A.delete(O))}}),dw=Gt();ye.enabled=!0;const cw=(a,s=-1)=>a?(s===-1&&(s=dw.settings.webPanelColorizeLogLevel),s===0?a:(a=a.replace(/\n/g,`\r +`),a.includes("Done")&&a.includes("!")&&(a=a.replace(/Done \((.*?)\)!/g,(r,d)=>`${ye.green.bold("Done")} (${ye.blue(d)})!`)),a=a.replace(/\b(Server started|Starting Server)\b/g,r=>ye.green.bold(r)),a=a.replace(/\b(IPv4 supported|IPv6 supported)\b/g,r=>ye.cyan(r)),a.startsWith("[System]")&&(a=a.replace(/^\[System]/,`[${ye.blue.bold("System")}]`)),a.includes("[MSLX]")&&(a=a.replace(/\[MSLX]/g,`[${ye.magenta.bold("MSLX")}]`)),a.includes("[MSLX-Backup]")&&(a=a.replace(/\[MSLX-Backup]/g,`[${ye.magenta.bold("MSLX-Backup")}]`)),a.includes("[MSLX-Daemon]")&&(a=a.replace(/\[MSLX-Daemon]/g,`[${ye.magenta.bold("MSLX-Daemon")}]`)),a.startsWith(">>>")&&(a=a.replace(/^>>>/,ye.red.bold(">>>"))),s===1?(a=a.replace(/^\[[^\]]+\s+(INFO|WARN|WARNING|ERROR|FATAL|DEBUG)\]/,(d,i)=>{switch(i){case"INFO":return ye.green(d);case"WARN":case"WARNING":return ye.yellow(d);case"ERROR":case"FATAL":return ye.red(d);case"DEBUG":return ye.blue(d);default:return d}}),a=a.replace(/^\[\d{2}:\d{2}:\d{2}\]\s+\[[^/]+\/(INFO|WARN|WARNING|ERROR|FATAL|DEBUG)\]/,(d,i)=>{switch(i){case"INFO":return ye.green(d);case"WARN":case"WARNING":return ye.yellow(d);case"ERROR":case"FATAL":return ye.red(d);default:return d}}),(d=>{const i=/\u001b\[(0;)?31m/.test(d),c=/\b(ERROR|Exception|Caused by|at)\b/i.test(d);return i||c})(a)||(a=a.replace(/(?<=:\s|^)\s*([([][a-zA-Z0-9_\-.\s]+[)\]])(?=\s)/g,d=>ye.cyan(d))),a):/\u001b\[[\d;]*m/.test(a)?(a=a.replace(/(https?:\/\/[^\s]+)/g,r=>ye.blue.underline(r)),a):(a=a.replace(/^\[(\d{2}:\d{2}:\d{2})\s+(INFO|WARN|WARNING|ERROR|FATAL|DEBUG)\]:/,(r,d,i)=>{let c=i;switch(i){case"INFO":c=ye.green("INFO");break;case"WARN":case"WARNING":c=ye.yellow.bold("WARN");break;case"ERROR":case"FATAL":c=ye.red.bold(i);break;case"DEBUG":c=ye.blue("DEBUG");break}return`[${ye.gray(d)} ${c}]:`}),/^\[\d{2}:\d{2}:\d{2}\]/.test(a)&&(a=a.replace(/^\[(\d{2}:\d{2}:\d{2})\]/,(r,d)=>`[${ye.gray(d)}]`)),a=a.replace(/\[([^/]+)\/(INFO|WARN|WARNING|ERROR|FATAL|DEBUG)\]/g,(r,d,i)=>{const c=ye.blue(d);let f=i;switch(i){case"INFO":f=ye.green("INFO");break;case"WARN":f=ye.yellow("WARN");break;case"ERROR":f=ye.red.bold("ERROR");break}return`[${c}/${f}]`}),a=a.replace(/(?<=:\s|^)\s*\[([a-zA-Z0-9_\-.\s]+)\](?=\s)/g,(r,d)=>d==="System"||d.includes("MSLX")?r:` [${ye.bold.black(d)}]`),a=a.replace(/(https?:\/\/[^\s]+)/g,r=>ye.blue.underline(r)),a=a.replace(/\b\d+\.\d+[\w.+\-@]*(?ye.magenta(r)),a=a.replace(/\b\d+(\.\d+)?\s?(ms|s|%|MB|GB|KB)\b/gi,r=>ye.blue(r)),a=a.replace(/(\u001b\[[\d;]*m)|((?{if(d)return r;if(i){if(i.length>=4&&i.length<=6)return ye.blue(i);if(i.length<=3)return ye.blue(i)}return r}),a=a.replace(/(\*:\d{1,5})/,r=>ye.blue.bold(r)),a=a.replace(/\b(Loaded|Saved|Starting|Started|Connected)\b/g,r=>ye.green(r)),a=a.replace(/\bDone\b(?!\u001b)/g,ye.green.bold("Done")),a=a.replace(/\b(Failed|Exception|Error|Caused by|Stopping|Closed)\b/g,r=>ye.red.bold(r)),a=a.replace(/\b(Loading|Preparing|Generating|Saving|Using|Running)\b/g,r=>ye.magenta(r)),a=a.replace(/\b(Minecraft|Paper|Velocity|Java)\b/gi,r=>ye.bold.black(r)),a=a.replace(/'minecraft:[a-z_]+'/g,r=>ye.magenta(r)),a))):"",uw={class:"h-[38px] shrink-0 bg-transparent border-b border-[var(--td-component-border)] flex items-center px-4 relative z-10 select-none"},mw={class:"text-[var(--td-text-color-secondary)] text-xs font-mono truncate"},pw={class:"absolute bottom-0 left-0 right-0 h-[50px] flex items-center px-4 bg-transparent border-t border-[var(--td-component-border)] z-10 gap-3"},vw=de({__name:"ServerTerminal",props:{serverId:{}},emits:["update"],setup(a,{expose:s,emit:r}){const d=a,i=r,c=po(),f=y(null),n=y(null);let v=null,I=null,u=null,R=null,b=null,A=null,p="";const k=y(""),g={dark:{background:"transparent",foreground:"#cccccc",cursor:"#cccccc",selectionBackground:"#264f78",black:"#000000",red:"#cd3131",green:"#0dbc79",yellow:"#e5e510",blue:"#2472c8",magenta:"#bc3fbc",cyan:"#11a8cd",white:"#e5e5e5",brightBlack:"#666666",brightRed:"#f14c4c",brightGreen:"#23d18b",brightYellow:"#f5f543",brightBlue:"#3b8eea",brightMagenta:"#d670d6",brightCyan:"#29b8db",brightWhite:"#e5e5e5"},light:{background:"transparent",foreground:"#333333",cursor:"#333333",selectionBackground:"#add6ff",black:"#000000",red:"#cd3131",green:"#00bc79",yellow:"#9d9d10",blue:"#2472c8",magenta:"#bc3fbc",cyan:"#11a8cd",white:"#e5e5e5",brightBlack:"#666666",brightRed:"#f14c4c",brightGreen:"#23d18b",brightYellow:"#f3d61a",brightBlue:"#3b8eea",brightMagenta:"#d670d6",brightCyan:"#29b8db",brightWhite:"#e5e5e5"}};ye.enabled=!0;const B=F=>cw(F),C=()=>{if(!n.value||!f.value)return;if(v){v.clear(),P();return}const F=document.documentElement.getAttribute("theme-mode")==="dark";v=new ms({cursorBlink:!1,cursorStyle:"bar",fontSize:14,fontFamily:'"Maple Mono", "Maple Mono CN", "Cascadia Code", Consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace',lineHeight:1.4,theme:F?g.dark:g.light,allowTransparency:!0,convertEol:!0}),I=new ps,v.loadAddon(I),v.open(n.value),v.onData(q=>T(q));const X=()=>{if(n.value&&n.value.clientWidth>0&&n.value.clientHeight>0)try{I?.fit()}catch(q){console.warn(q)}};u=new ResizeObserver(()=>window.requestAnimationFrame(X)),u.observe(f.value),setTimeout(X,100),P()},T=async F=>{!v||!d.serverId||(F==="\r"?(v.write(`\r +`),p.trim()&&await D(p),p=""):F===""?p.length>0&&(p=p.slice(0,-1),v.write("\b \b")):F>=" "&&(p+=F,v.write(F)))},U=async()=>{if(!k.value)return;const F=k.value;v?.writeln(F),await D(F),k.value=""},D=async F=>{try{await c.sendCommand(F)}catch(X){v?.writeln(`\x1B[1;31m[Error] ${X.message}\x1B[0m`)}},N=()=>{if(!v)return;const F=document.documentElement.getAttribute("theme-mode")==="dark";v.options.theme=F?g.dark:g.light},P=()=>{v?.writeln("\x1B[1;34m[System]\x1B[0m 正在连接服务器控制台 ..."),v?.writeln(`\x1B[1;34m[System]\x1B[0m 实例 ID: ${d.serverId}`),v?.writeln("")},j=async()=>{d.serverId&&(b&&b(),b=c.onLog(F=>{v&&v.writeln(B(F)),F.startsWith("[MSLX]")&&i("update")}),A&&A(),A=c.onCommandResult((F,X)=>{F||v?.writeln(`\x1B[1;31m[System] 指令执行反馈: ${X}\x1B[0m`)}),await c.connect(d.serverId))},O=async()=>{b&&b(),A&&A(),await c.disconnect()},$=F=>v?.writeln(F),V=()=>{v?.clear(),P()};let _=0;const z=F=>{_=F.touches[0].clientY},E=F=>{if(!v)return;const X=F.touches[0].clientY,q=_-X,H=19.6,J=Math.trunc(q/H);Math.abs(J)>=1&&(v.scrollLines(J),_=X+q%H)};return s({writeln:$,clear:V}),_e(()=>d.serverId,async(F,X)=>{F!==X&&(await O(),C(),await j())}),ze(async()=>{await yt(),C(),R=new MutationObserver(N),R.observe(document.documentElement,{attributes:!0,attributeFilter:["theme-mode"]}),await j()}),He(async()=>{R?.disconnect(),u?.disconnect(),v?.dispose(),await O()}),(F,X)=>(l(),x("div",{ref_key:"terminalWrapper",ref:f,class:"terminal-wrapper flex-1 flex flex-col bg-[var(--td-bg-color-container)]/80 border border-[var(--td-component-border)] rounded-xl overflow-hidden shadow-sm relative w-full h-full"},[e("div",uw,[X[1]||(X[1]=e("div",{class:"flex gap-1.5 mr-4"},[e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#ff5f56]"}),e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#ffbd2e]"}),e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#27c93f]"})],-1)),e("div",mw," MSLX 服务端控制台 | #"+S(a.serverId),1)]),e("div",{ref_key:"terminalBody",ref:n,class:"absolute top-[38px] bottom-[50px] left-0 right-0 py-1.5 pl-2.5 z-[1] terminal-body-container",onTouchstart:z,onTouchmove:dt(E,["prevent"])},null,544),e("div",pw,[Le(e("input",{"onUpdate:modelValue":X[0]||(X[0]=q=>k.value=q),class:"flex-1 h-8 bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200 dark:border-zinc-700 rounded-md px-3 text-[var(--td-text-color-primary)] font-mono text-[13px] outline-none transition-all focus:border-[var(--color-primary)] focus:bg-white dark:focus:bg-zinc-900 placeholder:text-zinc-400 dark:placeholder:text-zinc-500",placeholder:"发送控制台指令...",onKeyup:gl(U,["enter"])},null,544),[[es,k.value]]),e("button",{class:"h-8 px-4 rounded-md bg-[var(--color-primary)] text-white text-[13px] font-medium transition-all hover:brightness-110 active:brightness-90",onClick:U}," 发送 ")])],512))}}),fw=me(vw,[["__scopeId","data-v-72f4600a"]]),bw={class:"flex flex-col mx-auto w-full relative"},xw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},gw={class:"w-full md:w-[340px] shrink-0 flex items-center"},hw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},yw={class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},_w={class:"w-full md:w-[340px] shrink-0 flex items-center"},ww={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},kw={class:"w-full md:w-[340px] shrink-0 flex flex-col gap-2"},$w={key:0,class:"w-full"},zw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Cw={class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},Aw={class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},Sw={class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},Iw={class:"w-full md:w-[340px] shrink-0 flex items-center"},Vw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Uw={class:"w-full md:w-[340px] shrink-0 flex flex-col"},Mw={key:0,class:"mt-3 p-3 bg-zinc-50 dark:bg-zinc-800/50 border border-zinc-200 dark:border-zinc-700 rounded-lg flex flex-col gap-3"},Lw={class:"flex gap-2"},Bw={key:0,class:"flex flex-col gap-1 mt-1 text-xs text-zinc-500"},Tw={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Rw={class:"w-full md:w-[340px] shrink-0 flex items-center gap-2"},jw={class:"memory-input-group"},Pw={class:"memory-input-group"},Ew={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Dw={class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},Fw={class:"mt-2"},Ow={class:"text-xs text-zinc-400 hover:text-zinc-500 cursor-help flex items-center gap-1 w-max"},Nw={class:"w-full md:w-[340px] shrink-0 flex items-center gap-3 overflow-hidden"},Kw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},qw={class:"w-full md:w-[340px] shrink-0 flex flex-col gap-2"},Hw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Ww={class:"w-full md:w-[340px] shrink-0 flex flex-col gap-2"},Gw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Jw={class:"w-full md:w-[340px] shrink-0 flex items-center"},Xw={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Qw={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},Yw={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Zw={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},ek={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},tk={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},ok={key:3,class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},ak={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},sk={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},lk={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},rk={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},nk={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},ik={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},dk={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},ck={key:4,class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},uk={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},mk={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},pk={class:"w-full md:w-[340px] shrink-0 flex items-center gap-3 overflow-hidden"},vk={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},fk={class:"w-full md:w-[340px] shrink-0 flex"},bk={key:5,class:"sticky bottom-1 z-50 ml-auto w-max flex items-center gap-2 p-1.5 mt-2 mb-2 border border-zinc-200/80 dark:border-zinc-800 bg-white dark:bg-zinc-900 shadow-xl shadow-black/10 dark:shadow-black/40 rounded-full transition-all"},xk={class:"flex flex-col gap-4 pt-2"},gk={class:"h-48 bg-zinc-950 rounded-xl p-3 overflow-y-auto font-mono text-xs text-zinc-300 shadow-inner border border-zinc-800"},hk={class:"text-zinc-600 mr-2 select-none"},yk={key:0,class:"text-right mt-2"},_k=de({__name:"GeneralSettings",setup(a){const s=Ye(),r=Be(),d=te(()=>{const ee=s.params.serverId;return ee?parseInt(ee):NaN}),i=y(null),c=y(!1),f=y(!1),n=y(!1),v=[{label:"UTF-8",value:"utf-8"},{label:"GBK",value:"gbk"}],I=[{label:"UTF-8",value:"utf-8"},{label:"UTF-8 With BOM",value:"utf-8-bom"},{label:"GBK",value:"gbk"}],u=y({id:d.value,name:"",base:"",java:"",core:"",minM:1024,maxM:4096,args:"",yggdrasilApiAddr:"",backupMaxCount:20,backupDelay:10,backupPath:"MSLX://Backup/Instance",monitorPlayers:!0,autoRestart:!1,forceAutoRestart:!0,ignoreEula:!1,runOnStartup:!1,inputEncoding:"utf-8",outputEncoding:"utf-8",fileEncoding:"utf-8",coreUrl:"",coreSha256:"",coreFileKey:""}),R=y("MB"),b=y("MB"),A=[{label:"MB",value:"MB"},{label:"GB",value:"GB"}],p=te({get:()=>{if(R.value==="GB"){const ee=u.value.minM/1024;return Math.round(ee*100)/100}return u.value.minM},set:ee=>{u.value.minM=R.value==="GB"?Math.round(ee*1024):ee}}),k=te({get:()=>{if(b.value==="GB"){const ee=u.value.maxM/1024;return Math.round(ee*100)/100}return u.value.maxM},set:ee=>{u.value.maxM=b.value==="GB"?Math.round(ee*1024):ee}}),g=y("custom"),B=y([]),C=y([]),T=y(""),U=y(""),D=async(ee=!1)=>{try{ee&&M.info("正在扫描 Java 环境...");const L=await ga(r.userInfo.systemInfo.osType.toLowerCase().replace("os",""),r.userInfo.systemInfo.osArchitecture.toLowerCase());L&&Array.isArray(L)&&(B.value=L.map(he=>({label:`Java ${he} (在线)`,value:he})));const ce=await ha(ee);C.value=ce.map(he=>({label:`Java ${he.version} (${he.path})`,value:he.path})),ee&&M.success("刷新成功")}catch(L){console.error(L)}};_e([g,T,U],([ee,L,ce])=>{ee==="none"?u.value.java="none":ee==="env"?u.value.java="java":ee==="custom"||ee==="local"?u.value.java=ce:ee==="online"&&(u.value.java=L?`MSLX://Java/${L}`:"")});const N=y("MSLX://Backup/Instance"),P=y("");_e([N,P],([ee,L])=>{ee==="custom"?u.value.backupPath=L:u.value.backupPath=ee});const j=y(""),O=y(""),$=[{label:"官方/离线模式 (无)",value:"none"},{label:"MSL 统一身份验证 (MSL Skin)",value:"https://skin.mslmc.net/api/yggdrasil"},{label:"LittleSkin",value:"https://littleskin.cn/api/yggdrasil"},{label:"自定义服务器",value:"custom"}];_e([j,O],([ee,L])=>{ee==="none"?u.value.yggdrasilApiAddr="":ee==="custom"?u.value.yggdrasilApiAddr=L:u.value.yggdrasilApiAddr=ee});const V=y(!1),_=y(!1),z=y(null),E=y(!1),F=y(0),X=y(""),q=ee=>{u.value.core=ee.filename,u.value.coreUrl=ee.url,u.value.coreSha256=ee.sha256,u.value.coreFileKey="",V.value=!1,M.success(`已选择核心: ${ee.filename},保存后将自动下载`)},H=()=>z.value?.click(),J=async ee=>{const L=ee.target;if(!L.files?.length)return;const ce=L.files[0];if(u.value.coreFileKey)try{await Mt(u.value.coreFileKey)}catch{console.error("删除上传失败")}X.value=ce.name,E.value=!0,F.value=0;try{const ie=(await qt()).uploadId,G=5*1024*1024,pe=Math.ceil(ce.size/G);for(let Ce=0;Ce{n.value||ls.warning({title:"风险操作",content:"修改实例路径会导致面板无法找到原有文件。请确保您已手动移动了文件,或您明确知道自己在做什么。",duration:5e3}),n.value=!n.value},le=y(!1),fe=y(0),be=y([]),Se=y(null),Ee=te(()=>g.value==="none"?{name:[{required:!0,message:"服务器名称不能为空",trigger:"blur"}],base:[{required:!0,message:"基础路径不能为空",trigger:"blur"}],args:[{required:!0,message:"自定义模式必须填写启动命令",trigger:"blur"}]}:{name:[{required:!0,message:"服务器名称不能为空",trigger:"blur"}],base:[{required:!0,message:"基础路径不能为空",trigger:"blur"}],java:[{required:!0,message:"Java 环境不能为空",trigger:"change"}],core:[{required:!0,message:"核心文件名不能为空",trigger:"change"}],minM:[{required:!0,message:"必填",trigger:"blur"}],maxM:[{required:!0,message:"必填",trigger:"blur"}]}),Y=async()=>{if(d.value){c.value=!0;try{await D(),u.value.id=d.value;const ee=await ii(d.value);if(u.value={...u.value,...ee,coreUrl:"",coreFileKey:"",coreSha256:""},R.value=ee.minM>0&&ee.minM%1024===0?"GB":"MB",b.value=ee.maxM>0&&ee.maxM%1024===0?"GB":"MB",n.value=!1,ee.java==="none")g.value="none";else if(ee.java==="java")g.value="env";else if(ee.java.startsWith("MSLX://Java/"))g.value="online",T.value=ee.java.replace("MSLX://Java/","");else{const he=C.value.find(ie=>ie.value===ee.java);g.value=he?"local":"custom",U.value=ee.java}const L=ee.backupPath;L==="MSLX://Backup/Instance"||L==="MSLX://Backup/Data"?N.value=L:(N.value="custom",P.value=L);const ce=ee.yggdrasilApiAddr;ce?ce==="https://skin.mslmc.net/api/yggdrasil"?j.value="https://skin.mslmc.net/api/yggdrasil":ce==="https://littleskin.cn/api/yggdrasil"?j.value="https://littleskin.cn/api/yggdrasil":(j.value="custom",O.value=ce):j.value="none"}catch(ee){M.error("获取配置失败: "+ee.message)}finally{c.value=!1}}};_e(()=>s.params.serverId,ee=>{s.name==="InstanceConsole"&&ee&&Y()}),ze(Y);const se=async()=>{if(await i.value?.validate()===!0&&!(g.value!=="none"&&(u.value.coreUrl||u.value.coreFileKey)&&!await new Promise(he=>{const ie=Ke.confirm({header:"确认变更核心文件?",body:"检测到您上传或选择了新的核心文件,这将覆盖服务器现有的部署。",theme:"warning",onConfirm:()=>{ie.hide(),he(!0)},onClose:()=>{ie.hide(),he(!1)}})}))){g.value==="none"&&(u.value.core="none",u.value.minM=1027,u.value.maxM=1102,u.value.java="none",u.value.coreUrl="",u.value.coreFileKey="",u.value.coreSha256=""),f.value=!0;try{const L=await di(u.value);L.data?.needListen??L.needListen?De():(M.success("配置已保存"),f.value=!1,Y())}catch(L){M.error(L.message||"保存失败"),f.value=!1}}},De=async()=>{le.value=!0,fe.value=0,be.value=[];const{baseUrl:ee,token:L}=r,ce=new URL("/api/hubs/updateProgressHub",ee||window.location.origin);ce.searchParams.append("x-user-token",L),Se.value=new Ct().withUrl(ce.toString(),{withCredentials:!1}).configureLogging(jt.None).build(),Se.value.on("UpdateStatus",(he,ie,G)=>{be.value.push({time:new Date().toLocaleTimeString(),msg:G?`[错误] ${he}`:he}),yt(()=>{const pe=document.getElementById("update-log-box");pe&&(pe.scrollTop=pe.scrollHeight)}),ie>=0&&(fe.value=Number(ie.toFixed(1))),ie===100&&(M.success("更新完成"),Me(!0))});try{await Se.value.start(),await Se.value.invoke("JoinGroup",d.value.toString())}catch{be.value.push({time:"-",msg:"连接失败"})}},Me=(ee=!1)=>{Se.value?.stop(),setTimeout(()=>{le.value=!1,f.value=!1,ee&&Y()},1e3)};return He(()=>{Se.value?.stop()}),(ee,L)=>{const ce=h("t-input"),he=h("t-button"),ie=h("t-tooltip"),G=h("t-select"),pe=h("t-textarea"),Ve=h("t-alert"),Ce=h("t-icon"),Ue=h("t-progress"),we=h("t-input-number"),Ae=h("t-switch"),Re=h("t-form"),Fe=h("t-loading"),Ze=h("t-dialog");return l(),x("div",bw,[t(Fe,{loading:c.value,"show-overlay":""},{default:o(()=>[t(Re,{ref_key:"formRef",ref:i,disabled:!w(r).isAdmin,data:u.value,rules:Ee.value,"label-width":"0",onSubmit:se},{default:o(()=>[L[65]||(L[65]=e("div",{class:"flex items-center gap-2 mt-5 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"基础设置")],-1)),e("div",xw,[L[35]||(L[35]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"服务器名称"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 在面板列表中显示的别名,支持中文 ")],-1)),e("div",gw,[t(ce,{modelValue:u.value.name,"onUpdate:modelValue":L[0]||(L[0]=ne=>u.value.name=ne),placeholder:"请输入名称",class:"w-full"},null,8,["modelValue"])])]),e("div",hw,[e("div",yw,[L[36]||(L[36]=e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"实例路径",-1)),e("div",{class:ue(["text-xs mt-1 leading-relaxed",n.value?"text-amber-500":"text-[var(--td-text-color-secondary)]"])},S(n.value?"警告:修改路径可能导致无法找到原文件":"服务器文件的物理存储路径,非必要请勿修改"),3)]),e("div",_w,[t(ce,{modelValue:u.value.base,"onUpdate:modelValue":L[1]||(L[1]=ne=>u.value.base=ne),disabled:!n.value,class:"w-full"},{suffix:o(()=>[t(ie,{content:n.value?"点击锁定":"点击解锁编辑 (慎重)"},{default:o(()=>[t(he,{variant:"text",shape:"square",class:"!rounded-md hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:ae},{icon:o(()=>[n.value?(l(),W(w(hl),{key:0,class:"text-amber-500"})):(l(),W(w(Ot),{key:1,class:"text-zinc-400"}))]),_:1})]),_:1},8,["content"])]),_:1},8,["modelValue","disabled"])])]),L[66]||(L[66]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"运行模式")],-1)),e("div",ww,[L[37]||(L[37]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"启动方式"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 选择使用 Java 启动 Minecraft,或使用自定义命令启动其他程序 (如 Bedrock, Python 等) ")],-1)),e("div",kw,[t(G,{modelValue:g.value,"onUpdate:modelValue":L[2]||(L[2]=ne=>g.value=ne),class:"w-full",options:[{label:"MSLX 在线下载 (Java)",value:"online"},{label:"使用本地版本 (Java)",value:"local"},{label:"自定义路径 (Java)",value:"custom"},{label:"环境变量 (Java)",value:"env"},{label:"自定义命令 (无Java)",value:"none"}]},null,8,["modelValue"]),g.value!=="none"?(l(),x("div",$w,[g.value==="online"?(l(),W(G,{key:0,modelValue:T.value,"onUpdate:modelValue":L[3]||(L[3]=ne=>T.value=ne),options:B.value,placeholder:"请选择版本",filterable:""},null,8,["modelValue","options"])):K("",!0),g.value==="local"?(l(),W(G,{key:1,modelValue:U.value,"onUpdate:modelValue":L[4]||(L[4]=ne=>U.value=ne),options:C.value,placeholder:"选择已识别的 Java"},null,8,["modelValue","options"])):K("",!0),g.value==="custom"?(l(),W(ce,{key:2,modelValue:U.value,"onUpdate:modelValue":L[5]||(L[5]=ne=>U.value=ne),placeholder:"输入 java 可执行文件完整路径"},null,8,["modelValue"])):K("",!0)])):K("",!0)])]),e("div",zw,[e("div",Cw,[e("div",Aw,S(g.value==="none"?"启动命令 (Command)":"启动参数 (JVM Args)"),1),e("div",Sw,S(g.value==="none"?"完全自定义的启动命令。程序将直接执行此段内容,不依赖 Java 环境。":"传递给 Java 的启动参数,如 GC 策略 (例如 -XX:+UseG1GC)"),1)]),e("div",Iw,[t(pe,{modelValue:u.value.args,"onUpdate:modelValue":L[6]||(L[6]=ne=>u.value.args=ne),autosize:{minRows:2,maxRows:4},class:"w-full",placeholder:g.value==="none"?"例如: ./bedrock_server_x64":"无特殊需求请留空"},null,8,["modelValue","placeholder"])])]),g.value!=="none"?(l(),x(re,{key:0},[L[41]||(L[41]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"核心管理")],-1)),e("div",Vw,[L[40]||(L[40]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"服务端核心文件"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[m(" 指定启动的 Jar 文件名。如果文件已存在于目录中,直接输入文件名即可。 "),e("br"),m("需要更新核心?点击下方“文件工具” ")])],-1)),e("div",Uw,[t(ce,{modelValue:u.value.core,"onUpdate:modelValue":L[8]||(L[8]=ne=>u.value.core=ne),placeholder:"例如 server.jar",class:"w-full"},{suffix:o(()=>[t(he,{variant:"text",theme:"primary",size:"small",class:"!rounded-md",onClick:L[7]||(L[7]=ne=>V.value=!V.value)},{default:o(()=>[m(S(V.value?"收起工具":"文件工具"),1)]),_:1})]),_:1},8,["modelValue"]),V.value?(l(),x("div",Mw,[t(Ve,{theme:"info",message:"在此处操作会自动下载/上传文件,并填入上方的文件名。",class:"!py-1.5 !px-3 !rounded-md text-xs"}),e("div",Lw,[t(he,{block:"",variant:"outline",class:"!rounded-md bg-white dark:bg-zinc-900",onClick:L[9]||(L[9]=ne=>_.value=!0)},{icon:o(()=>[t(Ce,{name:"cloud-download"})]),default:o(()=>[L[38]||(L[38]=m("版本库 ",-1))]),_:1}),t(he,{block:"",variant:"outline",class:"!rounded-md bg-white dark:bg-zinc-900",loading:E.value,onClick:H},{icon:o(()=>[t(Ce,{name:"upload"})]),default:o(()=>[L[39]||(L[39]=m("本地上传 ",-1))]),_:1},8,["loading"])]),e("input",{ref_key:"uploadInputRef",ref:z,type:"file",accept:".jar",hidden:"",onChange:J},null,544),E.value?(l(),x("div",Bw,[e("span",null,"正在上传: "+S(X.value),1),t(Ue,{theme:"line",percentage:F.value},null,8,["percentage"])])):K("",!0)])):K("",!0)])])],64)):K("",!0),g.value!=="none"?(l(),x(re,{key:1},[L[44]||(L[44]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"资源限制")],-1)),e("div",Tw,[L[43]||(L[43]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"内存分配"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 设置 Java 堆内存大小 (Xms / Xmx) ")],-1)),e("div",Rw,[e("div",jw,[t(we,{modelValue:p.value,"onUpdate:modelValue":L[10]||(L[10]=ne=>p.value=ne),min:0,"decimal-places":R.value==="GB"?1:0,placeholder:"Xms",theme:"normal",class:"input-left"},null,8,["modelValue","decimal-places"]),t(G,{modelValue:R.value,"onUpdate:modelValue":L[11]||(L[11]=ne=>R.value=ne),options:A,clearable:!1,class:"select-right"},null,8,["modelValue"])]),L[42]||(L[42]=e("span",{class:"text-zinc-400 mx-1 shrink-0"},"-",-1)),e("div",Pw,[t(we,{modelValue:k.value,"onUpdate:modelValue":L[12]||(L[12]=ne=>k.value=ne),min:0,"decimal-places":b.value==="GB"?1:0,placeholder:"Xmx",theme:"normal",class:"input-left"},null,8,["modelValue","decimal-places"]),t(G,{modelValue:b.value,"onUpdate:modelValue":L[13]||(L[13]=ne=>b.value=ne),options:A,clearable:!1,class:"select-right"},null,8,["modelValue"])])])])],64)):K("",!0),L[67]||(L[67]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"备份设置")],-1)),e("div",Ew,[e("div",Dw,[L[46]||(L[46]=e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"备份策略",-1)),L[47]||(L[47]=e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 设置自动备份保留的最大数量,以及触发备份的延迟时间 ",-1)),e("div",Fw,[t(ie,{content:"MSLX 向服务器发送 save-all 指令后,会等待指定的秒数,确保数据完全写入硬盘后再开始打包备份。"},{default:o(()=>[e("span",Ow,[t(Ce,{name:"help-circle"}),L[45]||(L[45]=m(" 什么是延迟时间? ",-1))])]),_:1})])]),e("div",Nw,[t(we,{modelValue:u.value.backupMaxCount,"onUpdate:modelValue":L[14]||(L[14]=ne=>u.value.backupMaxCount=ne),min:1,max:100,placeholder:"保留份数",theme:"column",class:"flex-1 min-w-0",suffix:"份"},null,8,["modelValue"]),L[48]||(L[48]=e("span",{class:"text-zinc-400 shrink-0"},"/",-1)),t(we,{modelValue:u.value.backupDelay,"onUpdate:modelValue":L[15]||(L[15]=ne=>u.value.backupDelay=ne),min:0,placeholder:"延迟时间",theme:"column",class:"flex-1 min-w-0",suffix:"秒"},null,8,["modelValue"])])]),e("div",Kw,[L[49]||(L[49]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"备份存放路径"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 选择备份文件存储的位置。推荐存储在实例文件夹外部以免误删。 ")],-1)),e("div",qw,[t(G,{class:"w-full",modelValue:N.value,"onUpdate:modelValue":L[16]||(L[16]=ne=>N.value=ne),options:[{label:"实例文件夹内 (Instance)",value:"MSLX://Backup/Instance"},{label:"全局数据目录 (Data)",value:"MSLX://Backup/Data"},{label:"自定义绝对路径",value:"custom"}]},null,8,["modelValue"]),N.value==="custom"?(l(),W(ce,{key:0,modelValue:P.value,"onUpdate:modelValue":L[17]||(L[17]=ne=>P.value=ne),placeholder:"输入备份存放的绝对路径",class:"w-full"},null,8,["modelValue"])):K("",!0)])]),g.value!=="none"?(l(),x(re,{key:2},[L[51]||(L[51]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"外置登录")],-1)),e("div",Hw,[L[50]||(L[50]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"Yggdrasil API"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 选择认证服务器。留空则表示使用官方正版登录 (或离线模式)。 ")],-1)),e("div",Ww,[t(G,{modelValue:j.value,"onUpdate:modelValue":L[18]||(L[18]=ne=>j.value=ne),options:$,class:"w-full"},null,8,["modelValue"]),j.value==="custom"?(l(),W(ce,{key:0,modelValue:O.value,"onUpdate:modelValue":L[19]||(L[19]=ne=>O.value=ne),placeholder:"输入 Authlib-Injector API 地址",class:"w-full"},null,8,["modelValue"])):K("",!0)])])],64)):K("",!0),L[68]||(L[68]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"高级设置")],-1)),e("div",Gw,[L[52]||(L[52]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"停止服务器指令"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[m(" 设置正常停止时所发送的指令,默认为stop"),e("br"),m("设置为^c为发送Ctrl C (在部分环境可能无法发送成功) ")])],-1)),e("div",Jw,[t(ce,{modelValue:u.value.stopCommand,"onUpdate:modelValue":L[20]||(L[20]=ne=>u.value.stopCommand=ne),placeholder:"请输入停止指令",class:"w-full"},null,8,["modelValue"])])]),e("div",Xw,[L[53]||(L[53]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"日志原彩显示"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[m(" 开启此选项后,将注入相关环境变量,以让MC终端日志输出原有的色彩样式"),e("br"),m("此功能可以和日志染色功能搭配使用 ")])],-1)),e("div",Qw,[t(Ae,{modelValue:u.value.allowOriginASCIIColors,"onUpdate:modelValue":L[21]||(L[21]=ne=>u.value.allowOriginASCIIColors=ne),size:"large"},null,8,["modelValue"])])]),e("div",Yw,[L[54]||(L[54]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"玩家监控"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[m(" 开启此选项后,MSLX将自动为您监控在线的玩家列表"),e("br"),m("以及使用可视化黑白名单/管理员等功能 ")])],-1)),e("div",Zw,[t(Ae,{modelValue:u.value.monitorPlayers,"onUpdate:modelValue":L[22]||(L[22]=ne=>u.value.monitorPlayers=ne),size:"large"},null,8,["modelValue"])])]),e("div",ek,[L[55]||(L[55]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"自动重启"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[m(" 当服务器崩溃或意外停止时尝试自动重启"),e("br"),m("熔断机制: 若5分钟内尝试重启次数达到 5 次,则停止尝试重启 ")])],-1)),e("div",tk,[t(Ae,{modelValue:u.value.autoRestart,"onUpdate:modelValue":L[23]||(L[23]=ne=>u.value.autoRestart=ne),size:"large"},null,8,["modelValue"])])]),u.value.autoRestart?(l(),x("div",ok,[L[56]||(L[56]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"强制自动重启"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[m(" 开启此功能后,就算服务器是正常退出的也会强制重启(正常退出 => 退出代码 0)"),e("br"),m("不影响手动在面板关闭服务器 ")])],-1)),e("div",ak,[t(Ae,{modelValue:u.value.forceAutoRestart,"onUpdate:modelValue":L[24]||(L[24]=ne=>u.value.forceAutoRestart=ne),size:"large"},null,8,["modelValue"])])])):K("",!0),e("div",sk,[L[57]||(L[57]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"关服强制结束时间"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[m(" 设置在发出Stop指令或关服请求后,等待多久后强制结束进程"),e("br"),m("可设置10 - 120 s ")])],-1)),e("div",lk,[t(we,{modelValue:u.value.forceExitDelay,"onUpdate:modelValue":L[25]||(L[25]=ne=>u.value.forceExitDelay=ne),class:"w-full"},null,8,["modelValue"])])]),e("div",rk,[L[58]||(L[58]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"忽略EULA提示"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 若您的实例并非MC服务器,可打开此选项 ")],-1)),e("div",nk,[t(Ae,{modelValue:u.value.ignoreEula,"onUpdate:modelValue":L[26]||(L[26]=ne=>u.value.ignoreEula=ne),size:"large"},null,8,["modelValue"])])]),e("div",ik,[L[59]||(L[59]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"随守护进程启动"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 当物理机开机/面板启动时,自动启动此实例 ")],-1)),e("div",dk,[t(Ae,{modelValue:u.value.runOnStartup,"onUpdate:modelValue":L[27]||(L[27]=ne=>u.value.runOnStartup=ne),size:"large"},null,8,["modelValue"])])]),g.value!=="none"?(l(),x("div",ck,[L[60]||(L[60]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"强制Java使用UTF8"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[m(" 此功能可以解决部分游戏内中文乱码的问题(特别是Windows系统上)"),e("br"),m("开启此功能后请务必将下面的"),e("b",null,"文件编码"),m("设置设置为"),e("b",null,"UTF-8")])],-1)),e("div",uk,[t(Ae,{modelValue:u.value.forceJvmUTF8,"onUpdate:modelValue":L[28]||(L[28]=ne=>u.value.forceJvmUTF8=ne),size:"large"},null,8,["modelValue"])])])):K("",!0),e("div",mk,[L[61]||(L[61]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"控制台编码"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 设置输入输出流的字符集,乱码时请尝试切换 ")],-1)),e("div",pk,[t(G,{modelValue:u.value.inputEncoding,"onUpdate:modelValue":L[29]||(L[29]=ne=>u.value.inputEncoding=ne),options:v,label:"输入",class:"flex-1 min-w-0"},null,8,["modelValue"]),t(G,{modelValue:u.value.outputEncoding,"onUpdate:modelValue":L[30]||(L[30]=ne=>u.value.outputEncoding=ne),options:v,label:"输出",class:"flex-1 min-w-0"},null,8,["modelValue"])])]),e("div",vk,[L[62]||(L[62]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"文件编码"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 设置文件编辑和保存时的编码格式,乱码时请尝试切换。(一般Windows是GBK,其他是UTF-8。) ")],-1)),e("div",fk,[t(G,{modelValue:u.value.fileEncoding,"onUpdate:modelValue":L[31]||(L[31]=ne=>u.value.fileEncoding=ne),options:I,class:"w-full"},null,8,["modelValue"])])]),w(r).isAdmin?(l(),x("div",bk,[t(he,{theme:"default",variant:"text",class:"!rounded-full !px-5 text-zinc-500 hover:text-zinc-700 dark:hover:text-zinc-300",onClick:Y},{default:o(()=>[...L[63]||(L[63]=[m(" 重置更改 ",-1)])]),_:1}),t(he,{theme:"primary",type:"submit",class:"!rounded-full !px-6 shadow-md shadow-[var(--color-primary)]/30",loading:f.value},{default:o(()=>[...L[64]||(L[64]=[m(" 保存设置 ",-1)])]),_:1},8,["loading"])])):K("",!0)]),_:1},8,["disabled","data","rules"])]),_:1},8,["loading"]),t(xa,{visible:_.value,"onUpdate:visible":L[32]||(L[32]=ne=>_.value=ne),onConfirm:q},null,8,["visible"]),t(Ze,{visible:le.value,"onUpdate:visible":L[34]||(L[34]=ne=>le.value=ne),header:"正在应用更新",footer:!1,"close-on-overlay-click":!1,"close-btn":!1,width:"600px",attach:"body"},{default:o(()=>[e("div",xk,[t(Ue,{theme:"plump",percentage:fe.value,label:`${fe.value}%`},null,8,["percentage","label"]),e("div",gk,[(l(!0),x(re,null,xe(be.value,(ne,Xe)=>(l(),x("div",{key:Xe,class:"mb-1 leading-relaxed"},[e("span",hk,S(ne.time),1),m(" "+S(ne.msg),1)]))),128))]),fe.value===100?(l(),x("div",yk,[t(he,{theme:"primary",class:"!rounded-lg",onClick:L[33]||(L[33]=ne=>le.value=!1)},{default:o(()=>[...L[69]||(L[69]=[m("关闭并刷新",-1)])]),_:1})])):K("",!0)])]),_:1},8,["visible"])])}}}),wk=me(_k,[["__scopeId","data-v-aad52783"]]),kk={class:"flex flex-col gap-4 max-h-[60vh]"},$k={class:"text-[13px] font-medium text-[var(--td-text-color-secondary)] m-0"},zk={class:"flex gap-3 mt-1"},Ck={key:0,class:"flex justify-between items-center pb-2 border-b border-zinc-200 dark:border-zinc-700/60"},Ak={class:"text-xs text-[var(--td-text-color-secondary)] font-medium"},Sk={class:"text-[var(--td-text-color-primary)] font-bold mx-0.5"},Ik={class:"text-[var(--color-primary)] font-bold ml-0.5"},Vk={class:"flex gap-2"},Uk={key:1,class:"flex-1 overflow-y-auto flex flex-col gap-2 pr-1 custom-scrollbar"},Mk={class:"pt-0.5 shrink-0 text-xl"},Lk={class:"flex-1 overflow-hidden flex flex-col gap-1"},Bk={class:"flex justify-between items-center text-[13px]"},Tk=["title"],Rk={class:"text-[11px] text-[var(--td-text-color-secondary)] flex items-center gap-2 font-mono"},jk={key:0,class:"text-red-500 font-sans font-medium"},Pk={key:1},Ek={class:"bg-zinc-200/50 dark:bg-zinc-700/50 px-1.5 py-0.5 rounded"},Dk=["title"],Fk={class:"mt-0.5"},Ok={class:"shrink-0 pt-0.5 flex items-center justify-center"},Nk=de({__name:"FileUploader",props:{visible:{type:Boolean},instanceId:{},currentPath:{},allowFolder:{type:Boolean,default:!0}},emits:["update:visible","success"],setup(a,{emit:s}){const r=a,d=s,i=y([]),c=y(!1),f=y(!1),n=y(!1),v=y(),I=y(),u=V=>{const _=V.split(".").pop()?.toLowerCase();return["png","jpg","jpeg","gif","ico","webp"].includes(_||"")?{icon:ns,color:"var(--td-success-color)"}:["jar","zip","rar","7z","tar","gz"].includes(_||"")?{icon:xo,color:"#722ed1"}:["js","ts","py","java","c","cpp","cs","json","yml","yaml","xml","html","css","properties","conf","sh","bat"].includes(_||"")?{icon:Tt,color:"var(--td-warning-color)"}:["log","txt","md","lock"].includes(_||"")?{icon:No,color:"var(--td-gray-color-6)"}:["db","db-wal","dat"].includes(_||"")?{icon:_l,color:"var(--td-gray-color-8)"}:{icon:Ut,color:"var(--td-brand-color)"}},R=V=>V.split("/").pop()||V,b=V=>{const _=V.lastIndexOf("/");return _!==-1?V.substring(0,_):""},A=te(()=>{if(i.value.length===0)return 0;const V=i.value.reduce((_,z)=>_+z.progress,0);return Math.floor(V/i.value.length)}),p=te(()=>i.value.some(V=>V.status==="pending"||V.status==="error")),k=()=>v.value?.click(),g=()=>I.value?.click(),B=V=>{const _=V.target;if(_.files&&_.files.length>0){const E=Array.from(_.files).map(F=>({file:F,path:F.webkitRelativePath||F.name}));D(E)}_.value=""},C=async V=>{n.value=!1;const _=V.dataTransfer?.items;if(!_)return;const z=[],E=Array.from(_).map(F=>F.webkitGetAsEntry()).filter(F=>F!==null);for(const F of E)F&&await T(F,z);D(z)},T=async(V,_)=>{if(V.isFile){const z=await new Promise((F,X)=>V.file(F,X)),E=V.fullPath.startsWith("/")?V.fullPath.slice(1):V.fullPath;_.push({file:z,path:E})}else if(V.isDirectory)if(r.allowFolder){const z=V.createReader(),E=await U(z);for(const F of E)await T(F,_)}else M.error("此处不支持上传文件夹")},U=async V=>{let _=[];const z=async()=>{const E=await new Promise((F,X)=>V.readEntries(F,X));E.length>0&&(_=_.concat(E),await z())};return await z(),_},D=V=>{V.forEach(({file:_,path:z})=>{i.value.some(E=>E.path===z&&E.file.size===_.size&&E.status!=="error")||i.value.push({id:Math.random().toString(36).substring(2),file:_,path:z,status:"pending",progress:0,speed:""})})},N=async()=>{if(c.value)return;c.value=!0,f.value=!1;const V=3,_=i.value.filter(z=>z.status==="pending"||z.status==="error");for(let z=0;z<_.length&&!(f.value&&i.value.length===0);z+=V){const F=_.slice(z,z+V).filter(X=>i.value.some(q=>q.id===X.id));F.length>0&&await Promise.all(F.map(X=>P(X)))}c.value=!1,!f.value&&i.value.length>0&&i.value.every(z=>z.status==="success")&&(M.success("上传完成"),d("success"))},P=async V=>{V.status="uploading",V.progress=0,V.abortController=new AbortController;const _=Date.now();let z=0;try{const F=(await qt()).uploadId,q=V.file.size>200*1024*1024?50*1024*1024:10*1024*1024,H=Math.ceil(V.file.size/q),J=4,ae=5,le=Array.from({length:H},(se,De)=>De),fe=new Map,be=()=>{const se=Date.now();if(se-z<100)return;z=se;const De=Array.from(fe.values()).reduce((L,ce)=>L+ce,0),Me=Math.min(De/V.file.size*95,95);V.progress=Number(Me.toFixed(1));const ee=(se-_)/1e3;if(ee>0){const L=De/1024/1024/ee;V.speed=L.toFixed(1)+" MB/s"}},Se=async se=>{if(V.abortController?.signal.aborted)throw new Error("已取消");const De=se*q,Me=Math.min(V.file.size,De+q),ee=V.file.slice(De,Me);let L;for(let ce=1;ce<=ae;ce++){if(V.abortController?.signal.aborted)throw new Error("已取消");try{await Ht(F,se,ee,he=>{he&&he.loaded&&(fe.set(se,he.loaded),be())},V.abortController?.signal),fe.set(se,ee.size),be();return}catch(he){L=he,cesetTimeout(ie,1e3*ce)))}}throw L||new Error(`分片 ${se} 失败`)},Ee=async()=>{for(;le.length>0&&!V.abortController?.signal.aborted;){const se=le.shift();if(se===void 0)break;await Se(se)}},Y=Array(Math.min(J,H)).fill(null).map(()=>Ee());if(await Promise.all(Y),V.abortController.signal.aborted)throw new Error("已取消");V.status="merging",V.speed="合并中...",V.progress=98,await Wt(F,H),await bs(r.instanceId,F,V.path,r.currentPath),V.status="success",V.progress=100,V.speed="完成"}catch(E){E.message==="已取消"||V.abortController?.signal.aborted?(V.status="pending",V.speed="已取消",V.progress=0):(V.status="error",V.errorMsg=E.message||"失败")}},j=V=>{i.value[V].abortController?.abort(),i.value.splice(V,1)},O=()=>{i.value=i.value.filter(V=>V.status!=="success")},$=()=>d("update:visible",!1);return He(()=>i.value.forEach(V=>V.abortController?.abort())),(V,_)=>{const z=h("t-button"),E=h("t-progress"),F=h("t-dialog");return l(),W(F,{attach:"body",visible:a.visible,header:"批量上传文件",width:"650px",footer:!1,onClose:$},{default:o(()=>[e("input",{ref_key:"fileInputRef",ref:v,type:"file",multiple:"",class:"hidden",onChange:B},null,544),e("input",{ref_key:"folderInputRef",ref:I,type:"file",webkitdirectory:"",class:"hidden",onChange:B},null,544),e("div",kk,[e("div",{class:ue(["border-2 border-dashed rounded-xl p-6 flex flex-col items-center gap-3 transition-all duration-300",n.value?"border-[var(--color-primary)] bg-[var(--color-primary)]/5 scale-[0.99]":"border-zinc-200 dark:border-zinc-700 bg-zinc-50 dark:bg-zinc-800/40 hover:border-zinc-300 dark:hover:border-zinc-600"]),onDragover:_[0]||(_[0]=dt(X=>n.value=!0,["prevent"])),onDragleave:_[1]||(_[1]=dt(X=>n.value=!1,["prevent"])),onDrop:dt(C,["prevent"])},[t(w(rs),{size:"40px",class:"text-[var(--color-primary)]"}),e("p",$k,S(r.allowFolder?"拖入文件或文件夹至此处":"拖入文件至此处"),1),e("div",zk,[t(z,{variant:"outline",size:"small",class:"!rounded-lg !bg-white dark:!bg-zinc-900 !border-zinc-200 dark:!border-zinc-700",onClick:k},{icon:o(()=>[t(w(Ut))]),default:o(()=>[_[2]||(_[2]=m(" 选择文件 ",-1))]),_:1}),r.allowFolder?(l(),W(z,{key:0,variant:"outline",size:"small",class:"!rounded-lg !bg-white dark:!bg-zinc-900 !border-zinc-200 dark:!border-zinc-700",onClick:g},{icon:o(()=>[t(w(Nt))]),default:o(()=>[_[3]||(_[3]=m(" 选择文件夹 ",-1))]),_:1})):K("",!0)])],34),i.value.length>0?(l(),x("div",Ck,[e("span",Ak,[_[6]||(_[6]=m(" 队列: ",-1)),e("span",Sk,S(i.value.length),1),_[7]||(_[7]=m(" 个 ",-1)),c.value?(l(),x(re,{key:0},[_[4]||(_[4]=e("span",{class:"mx-1.5 opacity-50"},"|",-1)),_[5]||(_[5]=m(" 总进度 ",-1)),e("span",Ik,S(A.value)+"%",1)],64)):K("",!0)]),e("div",Vk,[t(z,{theme:"primary",size:"small",class:"!rounded-md shadow-sm",disabled:!p.value||c.value,onClick:N},{icon:o(()=>[t(w(_t))]),default:o(()=>[m(" "+S(c.value?"上传中...":"开始上传"),1)]),_:1},8,["disabled"]),t(z,{variant:"text",size:"small",class:"!rounded-md hover:!bg-zinc-100 dark:hover:!bg-zinc-800 !text-zinc-500",onClick:O},{icon:o(()=>[t(w(yl))]),default:o(()=>[_[8]||(_[8]=m(" 清空已完成 ",-1))]),_:1})])])):K("",!0),i.value.length>0?(l(),x("div",Uk,[(l(!0),x(re,null,xe(i.value,(X,q)=>(l(),x("div",{key:X.id,class:"flex items-start gap-3 p-3 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-100 dark:border-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600 transition-colors group"},[e("div",Mk,[(l(),W(it(u(R(X.path)).icon),{style:Oe({color:u(R(X.path)).color})},null,8,["style"]))]),e("div",Lk,[e("div",Bk,[e("div",{class:"font-medium text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[280px]",title:R(X.path)},S(R(X.path)),9,Tk),e("div",Rk,[X.status==="error"?(l(),x("span",jk,S(X.errorMsg),1)):(l(),x("span",Pk,S(X.speed),1)),e("span",Ek,S((X.file.size/1024/1024).toFixed(2))+" MB",1)])]),b(X.path)?(l(),x("div",{key:0,class:"text-[11px] text-[var(--td-text-color-secondary)] flex items-center gap-1 truncate",title:b(X.path)},[t(w(Nt),{size:"12px",class:"shrink-0 opacity-70"}),m(" "+S(b(X.path))+"/ ",1)],8,Dk)):K("",!0),e("div",Fk,[t(E,{percentage:X.progress,status:X.status==="error"?"error":X.status==="success"?"success":"active",size:"small",label:!1},null,8,["percentage","status"])])]),e("div",Ok,[X.status!=="success"?(l(),W(z,{key:0,shape:"circle",variant:"text",size:"small",class:"!text-zinc-400 hover:!text-red-500 hover:!bg-red-50 dark:hover:!bg-red-900/20 opacity-0 group-hover:opacity-100 transition-opacity",onClick:H=>j(q)},{default:o(()=>[t(w(Ao))]),_:1},8,["onClick"])):(l(),W(w(Kt),{key:1,class:"text-emerald-500 text-[18px]"}))])]))),128))])):K("",!0)])]),_:1},8,["visible"])}}}),Ds=me(Nk,[["__scopeId","data-v-77a13c75"]]),Kk={class:"flex flex-col pb-6"},qk={class:"flex flex-col md:flex-row md:items-center justify-between gap-4 mt-5 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},Hk={class:"w-full md:w-auto"},Wk={class:"flex justify-center items-center gap-1.5"},Gk={class:"flex justify-center items-center gap-1.5"},Jk={key:0,class:"mb-4"},Xk={class:"flex flex-col-reverse md:flex-row justify-between items-stretch md:items-center gap-3 mb-4"},Qk={class:"flex flex-wrap items-center gap-2 w-full md:w-auto justify-between md:justify-start"},Yk={class:"flex items-center gap-2"},Zk={key:0,class:"flex items-center bg-zinc-100 dark:bg-zinc-800/80 px-3 py-1.5 rounded-lg gap-3 shadow-sm flex-1 md:flex-none justify-end md:justify-start"},e5={class:"text-xs font-bold text-zinc-600 dark:text-zinc-300 shrink-0"},t5={class:"flex items-center"},o5={class:"w-full md:w-60 shrink-0"},a5={class:"border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl overflow-hidden shadow-sm bg-white/50 dark:bg-zinc-900/20"},s5={class:"flex items-center gap-2 font-mono text-[13px] text-zinc-700 dark:text-zinc-300 break-all"},l5={class:"py-16 flex flex-col items-center justify-center text-[var(--td-text-color-secondary)]"},r5={class:"text-sm font-medium"},n5={class:"mt-4 text-[11px] text-[var(--td-text-color-secondary)] leading-relaxed tracking-wider space-y-1"},i5=de({__name:"ModsPluginsManager",setup(a){const s=Ye(),r=parseInt(s.params.serverId),d=y("mods"),i=y(!1),c=y([]),f=y(""),n=y([]),v=y(""),I=te(()=>{if(!f.value)return c.value;const T=f.value.toLowerCase();return c.value.filter(U=>U.name.toLowerCase().includes(T))}),u=te(()=>[{colKey:"row-select",type:"multiple",width:50,fixed:"left"},{title:"文件名",colKey:"name",sorter:(T,U)=>T.name.localeCompare(U.name),ellipsis:!0},{title:"状态",colKey:"status",width:100},{title:"操作",colKey:"op",width:180,fixed:"right",align:"right"}]),R=async(T=!1)=>{i.value=!0,n.value=[],v.value="";try{const U=await Xo(r,d.value,T),D=(U.clientJarFiles||[]).map(j=>({name:j,status:"enabled",isClient:!0})),N=(U.jarFiles||[]).map(j=>({name:j,status:"enabled"})),P=(U.disableJarFiles||[]).map(j=>({name:j,status:"disabled"}));c.value=[...D,...N,...P],T&&D.length>0?(n.value=D.map(j=>j.name),M.success(`检测到 ${D.length} 个客户端模组`)):T&&M.info("未检测到仅客户端模组")}catch(U){const D=U.message||"获取列表失败";v.value=D,c.value=[]}finally{i.value=!1}},b=async(T,U)=>{if(U.length===0)return;const D={enable:"启用",disable:"禁用",delete:"删除"},N=async()=>{try{i.value=!0;const P=await Fn(r,d.value,T,U),{successCount:j,failCount:O}=P||{};O>0?M.warning(`操作完成:成功 ${j} 个,失败 ${O} 个`):M.success(`成功${D[T]} ${j} 个文件`),await R()}catch(P){M.error(P.message||"操作失败"),i.value=!1}};if(T==="delete"){const P=Ke.confirm({header:`确认删除 ${U.length} 个文件?`,body:"此操作不可逆,文件将被永久删除。",theme:"danger",onConfirm:()=>{P.hide(),N()}})}else await N()},A=T=>{d.value=T,R()},p=T=>{const U=T.status==="enabled"?"disable":"enable";b(U,[T.name])},k=T=>{const U=n.value;b(T,U)},g=y(!1),B=()=>{g.value=!0},C=()=>{g.value=!1,R()};return ze(()=>{R()}),_e(()=>s.params.serverId,T=>{T&&location.reload()}),(T,U)=>{const D=h("t-radio-button"),N=h("t-radio-group"),P=h("t-alert"),j=h("t-button"),O=h("t-input"),$=h("t-tag"),V=h("t-switch"),_=h("t-popconfirm"),z=h("t-space"),E=h("t-table");return l(),x("div",Kk,[e("div",qk,[U[13]||(U[13]=e("div",{class:"flex items-center gap-2"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"资源管理")],-1)),e("div",Hk,[t(N,{modelValue:d.value,"onUpdate:modelValue":U[0]||(U[0]=F=>d.value=F),variant:"default-filled",class:"!bg-zinc-100 dark:!bg-zinc-800 border border-[var(--td-component-border)] !rounded-lg p-0.5 shadow-sm flex w-full",onChange:A},{default:o(()=>[t(D,{value:"mods",class:"flex-1 md:flex-none !text-center"},{default:o(()=>[e("div",Wk,[t(w(Ko),{size:"14px"}),U[11]||(U[11]=m(" 模组 (Mods)",-1))])]),_:1}),t(D,{value:"plugins",class:"flex-1 md:flex-none !text-center"},{default:o(()=>[e("div",Gk,[t(w(lo),{size:"14px"}),U[12]||(U[12]=m(" 插件 (Plugins)",-1))])]),_:1})]),_:1},8,["modelValue"])])]),v.value?(l(),x("div",Jk,[t(P,{theme:"error",message:v.value,closeable:"",class:"!rounded-xl shadow-sm border border-red-100 dark:border-red-900/50",onClose:U[2]||(U[2]=F=>v.value="")},{operation:o(()=>[e("span",{class:"cursor-pointer ml-2 font-bold text-red-600 dark:text-red-400 hover:opacity-80 transition-opacity",onClick:U[1]||(U[1]=F=>R(!1))},"重试")]),_:1},8,["message"])])):K("",!0),e("div",Xk,[e("div",Qk,[e("div",Yk,[t(j,{theme:"primary",class:"!rounded-lg shadow-sm",disabled:v.value!=="",onClick:B},{icon:o(()=>[t(w(yo))]),default:o(()=>[U[14]||(U[14]=m(" 上传文件 ",-1))]),_:1},8,["disabled"]),d.value==="mods"?(l(),W(j,{key:0,variant:"outline",class:"!rounded-lg !bg-zinc-50 dark:!bg-zinc-800/50 !border-zinc-200 dark:!border-zinc-700 hover:!bg-zinc-100 dark:hover:!bg-zinc-800",disabled:v.value!=="",loading:i.value,onClick:U[3]||(U[3]=F=>R(!0))},{icon:o(()=>[t(w(_o))]),default:o(()=>[U[15]||(U[15]=m(" 检测客户端模组 ",-1))]),_:1},8,["disabled","loading"])):K("",!0),t(j,{variant:"outline",class:"!rounded-lg !bg-zinc-50 dark:!bg-zinc-800/50 !border-zinc-200 dark:!border-zinc-700 hover:!bg-zinc-100 dark:hover:!bg-zinc-800 shrink-0",loading:i.value,onClick:U[4]||(U[4]=F=>R(!1))},{icon:o(()=>[t(w(Pe))]),_:1},8,["loading"])]),t(Rt,{"enter-active-class":"transition-opacity duration-200 ease-out","enter-from-class":"opacity-0","leave-active-class":"transition-opacity duration-200 ease-in","leave-to-class":"opacity-0"},{default:o(()=>[n.value.length>0?(l(),x("div",Zk,[U[19]||(U[19]=e("div",{class:"hidden md:block w-[2px] h-[14px] bg-zinc-300 dark:bg-zinc-600 -mr-1"},null,-1)),e("span",e5,"已选 "+S(n.value.length)+" 项",1),e("div",t5,[t(j,{size:"small",variant:"text",theme:"success",class:"!px-2 !h-7 !text-xs hover:!bg-emerald-500/10 !rounded-md",onClick:U[5]||(U[5]=F=>k("enable"))},{default:o(()=>[...U[16]||(U[16]=[m("启用",-1)])]),_:1}),t(j,{size:"small",variant:"text",theme:"warning",class:"!px-2 !h-7 !text-xs hover:!bg-amber-500/10 !rounded-md",onClick:U[6]||(U[6]=F=>k("disable"))},{default:o(()=>[...U[17]||(U[17]=[m("禁用",-1)])]),_:1}),t(j,{size:"small",variant:"text",theme:"danger",class:"!px-2 !h-7 !text-xs hover:!bg-red-500/10 !rounded-md",onClick:U[7]||(U[7]=F=>k("delete"))},{default:o(()=>[...U[18]||(U[18]=[m("删除",-1)])]),_:1})])])):K("",!0)]),_:1})]),e("div",o5,[t(O,{modelValue:f.value,"onUpdate:modelValue":U[8]||(U[8]=F=>f.value=F),placeholder:"搜索文件名...",clearable:"",class:"!w-full !rounded-lg shadow-sm"},{"prefix-icon":o(()=>[t(w(_o),{class:"text-zinc-400"})]),_:1},8,["modelValue"])])]),e("div",a5,[t(E,{"selected-row-keys":n.value,"onUpdate:selectedRowKeys":U[9]||(U[9]=F=>n.value=F),pagination:{defaultPageSize:20,total:I.value.length,showJumper:!0,defaultCurrent:1},data:I.value,columns:u.value,"row-key":"name",loading:i.value,hover:"",stripe:"",class:"custom-table"},{name:o(({row:F})=>[e("div",s5,[e("span",null,S(F.name),1),F.isClient?(l(),W($,{key:0,theme:"warning",variant:"light",size:"small",class:"!rounded shrink-0"},{default:o(()=>[...U[20]||(U[20]=[m(" 客户端 ",-1)])]),_:1})):K("",!0)])]),status:o(({row:F})=>[F.status==="enabled"?(l(),W($,{key:0,theme:"success",variant:"light",class:"!rounded-md"},{icon:o(()=>[t(w(Lt))]),default:o(()=>[U[21]||(U[21]=m("已启用 ",-1))]),_:1})):(l(),W($,{key:1,theme:"default",variant:"light",class:"!rounded-md !text-zinc-500 dark:!text-zinc-400"},{icon:o(()=>[t(w(Ao))]),default:o(()=>[U[22]||(U[22]=m("已禁用 ",-1))]),_:1}))]),op:o(({row:F})=>[t(z,{size:"small",class:"flex items-center"},{default:o(()=>[t(V,{"model-value":F.status==="enabled",loading:i.value,size:"medium",onChange:X=>p(F)},{label:o(X=>[m(S(X.value?"开":"关"),1)]),_:1},8,["model-value","loading","onChange"]),t(_,{content:"确定要删除此文件吗?",theme:"danger",onConfirm:X=>b("delete",[F.name])},{default:o(()=>[t(j,{variant:"text",theme:"danger",shape:"square",class:"!rounded-md hover:!bg-red-500/10 transition-colors"},{default:o(()=>[t(w(ct))]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)]),empty:o(()=>[e("div",l5,[d.value==="mods"?(l(),W(w(Ko),{key:0,size:"40px",class:"opacity-60 mb-3"})):(l(),W(w(lo),{key:1,size:"40px",class:"opacity-60 mb-3"})),e("span",r5,"暂无"+S(d.value==="mods"?"模组":"插件")+"文件",1)])]),_:1},8,["selected-row-keys","pagination","data","columns","loading"])]),e("div",n5,[e("p",null,"提示:"+S(d.value==="mods"?"模组":"插件")+"文件存放于服务器根目录的 /"+S(d.value)+" 文件夹下。",1),U[23]||(U[23]=e("p",null,[m("禁用文件后,会在文件名后添加 "),e("code",{class:"bg-zinc-100 dark:bg-zinc-800 px-1 py-0.5 rounded font-mono text-[10px] text-[var(--td-text-color-secondary)]"},".disabled"),m(" 后缀,服务器将自动忽略该文件。")],-1))]),t(Ds,{visible:g.value,"onUpdate:visible":U[10]||(U[10]=F=>g.value=F),"instance-id":w(r),"current-path":d.value,"allow-folder":!1,onSuccess:C},null,8,["visible","instance-id","current-path"])])}}}),d5=me(i5,[["__scopeId","data-v-aa2f193a"]]),Na=[{key:"motd",label:"服务器标语",desc:"显示在多人游戏列表中的服务器介绍信息。(支持中文 & 颜色代码,但是务必将文件编码修改为UTF-8并启用强制UTF8功能,否则会乱码)",type:"string"},{key:"server-port",label:"服务器端口",desc:"默认为 25565。如果要在一台机器运行多个服务器,必须修改此端口。",type:"number"},{key:"max-players",label:"最大玩家数",desc:"服务器同时允许在线的最大玩家数量。",type:"number"},{key:"online-mode",label:"正版验证",desc:"开启后将验证玩家的正版账号。如果使用离线模式/登录插件,请关闭此项。如果使用外置登录或者正版账户登录,请启用此项。",type:"boolean"},{key:"white-list",label:"启用白名单",desc:"开启后只有在白名单内的玩家才能进入服务器。",type:"boolean"},{key:"enforce-whitelist",label:"强制白名单",desc:"开启后,当玩家不在白名单时,即使已在线也会被踢出(通常用于维护时重新加载白名单)。",type:"boolean"},{key:"level-name",label:"存档文件夹名称",desc:"服务器读取的世界存档文件夹名称(默认为 world)。",type:"string"},{key:"gamemode",label:"默认游戏模式",desc:"新玩家进入服务器时的默认模式。",type:"select",options:[{label:"生存 (Survival)",value:"survival"},{label:"创造 (Creative)",value:"creative"},{label:"冒险 (Adventure)",value:"adventure"},{label:"旁观 (Spectator)",value:"spectator"}]},{key:"force-gamemode",label:"强制游戏模式",desc:"开启后,玩家每次加入服务器都会被重置为默认游戏模式。",type:"boolean"},{key:"difficulty",label:"难度",desc:"世界的游戏难度设置。",type:"select",options:[{label:"和平 (Peaceful)",value:"peaceful"},{label:"简单 (Easy)",value:"easy"},{label:"普通 (Normal)",value:"normal"},{label:"困难 (Hard)",value:"hard"}]},{key:"hardcore",label:"极限模式",desc:"开启后,玩家死亡将被封禁。",type:"boolean"},{key:"allow-flight",label:"允许飞行",desc:"允许生存模式下的玩家飞行(防止被服务端反作弊踢出)。",type:"boolean"},{key:"spawn-protection",label:"出生点保护半径",desc:"出生点周围多少格内禁止非 OP 破坏。设为 0 可禁用。",type:"number"},{key:"player-idle-timeout",label:"挂机踢出时间",desc:"玩家闲置多少分钟后被自动踢出。0 为不限制。",type:"number"},{key:"level-seed",label:"世界种子",desc:"生成世界使用的种子,留空则随机生成。",type:"string"},{key:"level-type",label:"世界类型",desc:"例如 minecraft:normal, minecraft:flat, minecraft:amplified。",type:"string"},{key:"generate-structures",label:"生成结构",desc:"是否生成村庄、地牢等结构。",type:"boolean"},{key:"generator-settings",label:"生成器设置",desc:"用于自定义超平坦或特定生成器的 JSON 参数。",type:"string"},{key:"max-world-size",label:"世界边界半径",desc:"设置世界边界(World Border)的最大半径。",type:"number"},{key:"simulation-distance",label:"模拟距离",desc:"服务器实际运算实体/作物生长的区块半径(3-32)。",type:"number"},{key:"view-distance",label:"视距",desc:"客户端可以看见的区块半径。数值过大显著增加内存和带宽消耗。",type:"number"},{key:"entity-broadcast-range-percentage",label:"实体广播范围百分比",desc:"控制客户端能看到实体的距离系数(100表示默认)。",type:"number"},{key:"max-tick-time",label:"最大刻耗时 (Watchdog)",desc:"一刻的最长处理毫秒数。超过此数值服务器将强制关闭以防卡死。设为 -1 可禁用。",type:"number"},{key:"network-compression-threshold",label:"网络压缩阈值",desc:"数据包超过此字节数时进行压缩。设为 -1 禁用压缩。推荐保持默认 256。",type:"number"},{key:"rate-limit",label:"数据包限制",desc:"如果玩家发送数据包过快,将被踢出。0 为禁用。",type:"number"},{key:"use-native-transport",label:"使用原生传输优化",desc:"Linux 环境下是否启用 Epoll 优化网络性能。",type:"boolean"},{key:"prevent-proxy-connections",label:"防止代理连接",desc:"是否尝试阻止通过 VPN 或代理的连接(ISP/AS 号判断)。",type:"boolean"},{key:"sync-chunk-writes",label:"同步区块写入",desc:"开启后区块写入完成后才继续逻辑,数据更安全但可能掉帧;关闭可能提升性能。",type:"boolean"},{key:"region-file-compression",label:"区块文件压缩格式",desc:"用于保存区块的压缩算法。",type:"select",options:[{label:"Deflate (默认)",value:"deflate"},{label:"LZ4 (更快)",value:"lz4"},{label:"不压缩 (None)",value:"none"}]},{key:"max-chained-neighbor-updates",label:"最大连锁更新数",desc:"限制红石/方块连锁更新的数量以防止崩服。",type:"number"},{key:"log-ips",label:"控制台记录 IP",desc:"是否在控制台日志中显示玩家连接的 IP 地址。",type:"boolean"},{key:"hide-online-players",label:"隐藏在线玩家列表",desc:"开启后,服务器列表中将不显示具体的玩家名单。",type:"boolean"},{key:"enable-status",label:"启用状态查询",desc:"是否允许外部(如服务器列表网站)查询服务器状态。",type:"boolean"},{key:"accepts-transfers",label:"接受服务器传送",desc:"是否允许玩家从其他服务器无缝传送到此服务器。",type:"boolean"},{key:"pause-when-empty-seconds",label:"空载暂停时间",desc:"服务器内无玩家多少秒后暂停游戏循环(省资源)。-1 为不暂停。",type:"number"},{key:"op-permission-level",label:"OP 权限等级",desc:"设置 OP 的默认权限级别。",type:"select",options:[{label:"1 - 无视出生点保护",value:1},{label:"2 - 使用单机指令 (gamemode等)",value:2},{label:"3 - 多人管理 (kick/ban/op)",value:3},{label:"4 - 系统管理 (stop/save)",value:4}]},{key:"function-permission-level",label:"函数权限等级",desc:"数据包(Datapack)中函数的默认执行权限等级。",type:"number"},{key:"enforce-secure-profile",label:"强制安全配置 (签名)",desc:"强制玩家拥有官方签名的公钥(聊天报告相关)。离线服建议关闭。",type:"boolean"},{key:"enable-code-of-conduct",label:"启用行为准则提示",desc:"是否向玩家展示行为准则链接(遥测相关)。",type:"boolean"},{key:"bug-report-link",label:"Bug 反馈链接",desc:"自定义玩家遇到错误时显示的反馈网址。",type:"string"},{key:"resource-pack",label:"资源包下载地址",desc:"玩家进入服务器时提示下载的资源包直链 URL。",type:"string"},{key:"require-resource-pack",label:"强制资源包",desc:"开启后,拒绝下载资源包的玩家将被踢出。",type:"boolean"},{key:"resource-pack-sha1",label:"资源包 SHA1",desc:"资源包文件的 SHA-1 校验码,用于验证完整性和缓存。",type:"string"},{key:"resource-pack-prompt",label:"资源包提示语",desc:"下载资源包时向玩家显示的自定义消息(Json 格式)。",type:"string"},{key:"initial-enabled-packs",label:"初始启用数据包",desc:"世界生成时默认启用的数据包列表(逗号分隔)。",type:"string"},{key:"initial-disabled-packs",label:"初始禁用数据包",desc:"世界生成时默认禁用的数据包列表。",type:"string"},{key:"enable-rcon",label:"启用 RCON",desc:"开启远程控制台协议,允许外部工具发送指令。",type:"boolean"},{key:"rcon.port",label:"RCON 端口",desc:"RCON 监听端口(默认为 25575)。",type:"number"},{key:"rcon.password",label:"RCON 密码",desc:"连接 RCON 必须的密码。请设置复杂的密码。",type:"string"},{key:"broadcast-rcon-to-ops",label:"向 OP 广播 RCON",desc:"当 RCON 执行指令时,是否通知在线的 OP。",type:"boolean"},{key:"enable-query",label:"启用 Query",desc:"开启 GameSpy4 协议,用于获取服务器详细信息。",type:"boolean"},{key:"query.port",label:"Query 端口",desc:"Query 协议监听端口(默认为 25565)。",type:"number"},{key:"broadcast-console-to-ops",label:"向 OP 广播控制台",desc:"控制台执行的指令输出是否发给在线 OP。",type:"boolean"},{key:"enable-jmx-monitoring",label:"启用 JMX 监控",desc:"开启 Java JMX 性能监控(通常用于开发调试)。",type:"boolean"},{key:"management-server-enabled",label:"启用管理后台",desc:"是否启用 Minecraft 官方定义的管理服务器接口。",type:"boolean"},{key:"management-server-port",label:"管理后台端口",desc:"管理接口监听的端口。",type:"number"},{key:"management-server-host",label:"管理后台主机",desc:"管理接口绑定的主机名/IP。",type:"string"},{key:"management-server-allowed-origins",label:"管理后台允许源",desc:"允许访问管理接口的 Origin 列表。",type:"string"},{key:"server-ip",label:"服务器绑定 IP",desc:"指定服务器绑定的本地网卡 IP。留空表示监听所有网卡(0.0.0.0)。",type:"string"},{key:"debug",label:"调试模式",desc:"开启后控制台将输出更多调试信息。",type:"boolean"},{key:"text-filtering-config",label:"文本过滤配置",desc:"用于文本过滤服务的 API 配置。",type:"string"},{key:"status-heartbeat-interval",label:"状态心跳间隔",desc:"服务器向客户端发送状态心跳的间隔(0 为默认)。",type:"number"}],c5={class:"flex flex-col mx-auto w-full relative pb-8"},u5={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mt-5 mb-6 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},m5={class:"bg-white/80 dark:bg-zinc-900/40 border border-zinc-200/60 dark:border-zinc-800 rounded-xl shadow-sm backdrop-blur-md overflow-hidden"},p5={key:0,class:"py-16 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},v5={class:"flex flex-col divide-y divide-dashed divide-zinc-200/60 dark:divide-zinc-700/60"},f5={class:"flex-1 md:max-w-[40%] pr-0 md:pr-8 mb-3 md:mb-0"},b5={key:0,class:"flex items-center mb-1.5"},x5={class:"font-mono text-[11px] text-[var(--td-text-color-secondary)] bg-zinc-100 dark:bg-zinc-800/80 px-1.5 py-0.5 rounded tracking-wider shadow-inner"},g5={key:1,class:"text-xs text-[var(--td-text-color-secondary)] leading-relaxed"},h5={class:"flex-1 md:max-w-[60%] w-full flex md:justify-end items-center"},y5={class:"sticky bottom-1 z-50 ml-auto w-max flex items-center gap-2 p-1.5 mt-4 mb-2 border border-zinc-200/80 dark:border-zinc-800 bg-white dark:bg-zinc-900 shadow-xl shadow-black/10 dark:shadow-black/40 rounded-full transition-all hover:shadow-lg"},_5=de({__name:"ServerProperties",setup(a){const s=Ye(),r=y(0),d=y(!1),i=y(!1),c=y({}),f=y(""),n=k=>{const g={};return k.split(` +`).forEach(C=>{const T=C.trim();if(!T||T.startsWith("#"))return;const U=T.indexOf("=");if(U!==-1){const D=T.substring(0,U).trim(),N=T.substring(U+1).trim();g[D]=N}}),g},v=k=>{let g=`#Minecraft server properties +#${new Date().toString()} +`;const B=Na.map(T=>T.key),C=Object.keys(k);return B.forEach(T=>{Object.prototype.hasOwnProperty.call(k,T)&&(g+=`${T}=${k[T]} +`)}),C.forEach(T=>{B.includes(T)||(g+=`${T}=${k[T]} +`)}),g},I=async()=>{if(r.value){d.value=!0;try{const k=await Uo(r.value,"server.properties");k&&(f.value=k,c.value=n(k))}catch(k){console.error(`读取配置文件失败: ${k.message}`)}finally{d.value=!1}}},u=async()=>{i.value=!0;try{const k=v(c.value);await ma(r.value,"server.properties",k),M.success("配置文件已保存"),I()}catch(k){M.error(`保存失败: ${k.message}`)}finally{i.value=!1}},R=te(()=>{const k=[],g=c.value,B=new Set(Object.keys(g));return Na.forEach(C=>{B.has(C.key)&&(k.push(C),B.delete(C.key))}),B.forEach(C=>{k.push({key:C,label:C,desc:"未收录的配置项",type:b(g[C]),isUnknown:!0})}),k}),b=k=>k==="true"||k==="false"?"boolean":!isNaN(Number(k))&&k!==""?"number":"string",A=(k,g)=>{const B=c.value[k];return B===void 0?g==="boolean"?!1:"":g==="boolean"?B==="true":g==="number"?Number(B):B},p=(k,g,B)=>{c.value[k]=String(g)};return _e(()=>s.params.serverId,k=>{s.name==="InstanceConsole"&&k&&(r.value=parseInt(k),I())},{immediate:!0}),(k,g)=>{const B=h("t-button"),C=h("t-space"),T=h("t-switch"),U=h("t-select"),D=h("t-input-number"),N=h("t-input"),P=h("t-loading");return l(),x("div",c5,[e("div",u5,[g[2]||(g[2]=e("div",{class:"flex items-center gap-2"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"Server.properties 配置编辑器")],-1)),t(C,{size:"small",class:"w-full sm:w-auto justify-end"},{default:o(()=>[t(B,{variant:"outline",class:"!rounded-lg !bg-zinc-50 dark:!bg-zinc-800/50 !border-zinc-200 dark:!border-zinc-700 hover:!bg-zinc-100 dark:hover:!bg-zinc-800 !text-zinc-600 dark:!text-zinc-300 transition-colors",loading:d.value,onClick:I},{icon:o(()=>[t(w(Pe))]),default:o(()=>[g[0]||(g[0]=m(" 刷新 ",-1))]),_:1},8,["loading"]),t(B,{theme:"primary",class:"!rounded-lg shadow-sm",loading:i.value,onClick:u},{icon:o(()=>[t(w(qo))]),default:o(()=>[g[1]||(g[1]=m(" 保存配置 ",-1))]),_:1},8,["loading"])]),_:1})]),t(P,{loading:d.value,text:"正在读取配置文件..."},{default:o(()=>[e("div",m5,[!d.value&&R.value.length===0?(l(),x("div",p5," 无法找到配置项或文件为空 ")):K("",!0),e("div",v5,[(l(!0),x(re,null,xe(R.value,j=>(l(),x("div",{key:j.key,class:"flex flex-col md:flex-row md:items-start justify-between p-5 transition-colors hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20"},[e("div",f5,[e("div",{class:ue(["text-sm font-bold mb-1",j.isUnknown?"text-amber-600 dark:text-amber-500":"text-[var(--td-text-color-primary)]"])},S(j.label),3),j.isUnknown?K("",!0):(l(),x("div",b5,[e("span",x5,S(j.key),1)])),j.isUnknown?K("",!0):(l(),x("div",g5,S(j.desc||"暂无描述"),1))]),e("div",h5,[j.type==="boolean"?(l(),W(T,{key:0,"model-value":A(j.key,"boolean"),"onUpdate:modelValue":O=>p(j.key,O,"boolean")},null,8,["model-value","onUpdate:modelValue"])):j.type==="select"?(l(),W(U,{key:1,"model-value":A(j.key,"string"),options:j.options,placeholder:"请选择",class:"w-full md:max-w-[400px]","onUpdate:modelValue":O=>p(j.key,O,"string")},null,8,["model-value","options","onUpdate:modelValue"])):j.type==="number"?(l(),W(D,{key:2,"model-value":A(j.key,"number"),theme:"column",class:"w-full md:max-w-[400px]","onUpdate:modelValue":O=>p(j.key,O,"number")},null,8,["model-value","onUpdate:modelValue"])):(l(),W(N,{key:3,"model-value":A(j.key,"string"),placeholder:"未设置",class:"w-full md:max-w-[400px]","onUpdate:modelValue":O=>p(j.key,O,"string")},null,8,["model-value","onUpdate:modelValue"]))])]))),128))])])]),_:1},8,["loading"]),e("div",y5,[t(B,{theme:"default",variant:"text",class:"!rounded-full !px-5 text-zinc-500 hover:text-zinc-700 dark:hover:text-zinc-300 transition-colors",onClick:I,disabled:d.value},{default:o(()=>[...g[3]||(g[3]=[m(" 重置更改 ",-1)])]),_:1},8,["disabled"]),t(B,{theme:"primary",class:"!rounded-full !px-6 shadow-md shadow-[var(--color-primary)]/30",loading:i.value,onClick:u},{icon:o(()=>[t(w(qo))]),default:o(()=>[g[4]||(g[4]=m(" 保存配置 ",-1))]),_:1},8,["loading"])])])}}}),w5=me(_5,[["__scopeId","data-v-9d2bfe0a"]]),eo="https://mslx.mslmc.cn",io={cron:`${eo}/docs/server-config/crons`,style:`${eo}/docs/style/webpanel/`,style_log_colorizer:`${eo}/docs/style/webpanel/#%E7%BB%88%E7%AB%AF%E6%97%A5%E5%BF%97%E6%9F%93%E8%89%B2%E7%AD%89%E7%BA%A7%E9%85%8D%E7%BD%AE`,remote_access:`${eo}/docs/config/remote-access/`,msl_oauth:`${eo}/docs/config/msl-oauth`},k5={class:"flex flex-col mx-auto w-full"},$5={class:"flex items-center justify-between mt-5 mb-4 pb-2 border-b border-dashed border-zinc-200 dark:border-zinc-700"},z5={key:0,class:"mb-6 overflow-hidden bg-white dark:bg-zinc-900/40 border border-zinc-200 dark:border-zinc-800 rounded-xl shadow-sm"},C5={class:"px-6 py-3 flex justify-between items-center bg-zinc-50 dark:bg-zinc-800/50 border-b border-zinc-200 dark:border-zinc-800"},A5={class:"text-sm font-bold text-zinc-700 dark:text-zinc-200"},S5={class:"flex-1 md:max-w-[40%] pr-0 md:pr-8 mb-3 md:mb-0"},I5={class:"text-sm font-bold text-[var(--td-text-color-primary)]"},V5={class:"text-xs text-[var(--td-text-color-secondary)] mt-1"},U5={class:"flex-1 md:max-w-[60%] w-full flex items-center gap-2"},M5={key:0,class:"flex flex-col md:flex-row md:items-start justify-between p-5 border-b border-dashed border-zinc-100 dark:border-zinc-800"},L5={class:"flex-1 md:max-w-[40%] pr-0 md:pr-8 mb-3 md:mb-0"},B5={class:"text-sm font-bold text-[var(--td-text-color-primary)]"},T5={class:"text-xs text-[var(--td-text-color-secondary)] mt-1"},R5={class:"flex-1 md:max-w-[60%] w-full"},j5={class:"flex items-center justify-between p-5"},P5={class:"px-5 py-4 bg-zinc-50/50 dark:bg-zinc-800/20 flex gap-3"},E5={class:"flex flex-col gap-3 mt-2"},D5={key:0,class:"flex flex-col items-center justify-center p-12 border-2 border-dashed border-zinc-200 dark:border-zinc-800 rounded-2xl text-[var(--td-text-color-secondary)]"},F5={class:"flex-1 min-w-0 w-full"},O5={class:"flex items-center gap-3 mb-3"},N5={class:"text-base font-bold text-[var(--td-text-color-primary)] truncate"},K5={class:"flex flex-wrap items-center gap-3 text-xs"},q5={class:"flex items-center gap-1.5 px-2 py-1 bg-zinc-100 dark:bg-zinc-800 text-[var(--td-text-color-secondary)] rounded-md font-mono"},H5=["title"],W5={class:"flex shrink-0 gap-1 mt-4 md:mt-0 pt-3 md:pt-0 border-t md:border-t-0 border-zinc-100 dark:border-zinc-800 w-full md:w-auto justify-end"},G5=de({__name:"CronTasks",setup(a){const s=Ye(),r=te(()=>parseInt(s.params.serverId)),d=y([]),i=y(!1),c=y(!1),f=y(null),n=y(!1),v=y(null),I=y(!1),u=y({id:"",name:"",cron:"",type:"command",payload:"",enable:!0}),R=[{label:"发送命令 (Command)",value:"command"},{label:"备份存档 (Backup)",value:"backup"},{label:"开启服务器 (Start)",value:"start"},{label:"停止服务器 (Stop)",value:"stop"},{label:"重启服务器 (Restart)",value:"restart"}],b={name:[{required:!0,message:"必填",trigger:"blur"}],cron:[{required:!0,message:"必填",trigger:"blur"}],type:[{required:!0,message:"必选",trigger:"change"}],payload:[{validator:N=>u.value.type==="command"&&!N?{result:!1,message:"命令内容不能为空",type:"error"}:!0,trigger:"blur"}]},A=async()=>{if(r.value){i.value=!0;try{const N=await gf(r.value);d.value=N||[]}catch(N){M.error(N.message||"获取列表失败")}finally{i.value=!1}}},p=()=>{c.value||(u.value={id:"",name:"",cron:"",type:"command",payload:"",enable:!0},f.value=null,c.value=!0)},k=N=>{u.value={id:N.id,name:N.name,cron:N.cron,type:N.type.toLowerCase(),payload:N.payload,enable:N.enable},f.value=N.id,c.value=!0,window.scrollTo({top:0,behavior:"smooth"})},g=()=>{c.value=!1,f.value=null},B=async()=>{if(await v.value?.validate()===!0){n.value=!0;try{f.value?(await ea(r.value,u.value.id,u.value.name,u.value.cron,u.value.payload,u.value.type,u.value.enable),M.success("更新成功")):(await Ss(r.value,u.value.name,u.value.cron,u.value.payload,u.value.type,u.value.enable),M.success("创建成功")),g(),A()}catch(P){M.error(P.message||"操作失败")}finally{n.value=!1}}},C=N=>{const P=Ke.confirm({header:"确认删除?",body:`确定删除任务 "${N.name}" 吗?`,theme:"danger",onConfirm:async()=>{try{await Is(N.id),M.success("已删除"),A(),P.hide()}catch(j){M.error(j.message)}},onClose:()=>P.hide()})},T=N=>{u.value.cron=N},U=N=>{const P=N.toLowerCase();return P==="start"?_t:P==="stop"?uo:P==="restart"?Pe:Tt},D=N=>{const P=N.toLowerCase();return P==="start"?"success":P==="stop"?"danger":P==="restart"?"warning":"primary"};return _e(()=>r.value,A),ze(A),(N,P)=>{const j=h("t-button"),O=h("t-space"),$=h("t-input"),V=h("t-select"),_=h("t-textarea"),z=h("t-switch"),E=h("t-form"),F=h("t-tag"),X=h("t-loading");return l(),x("div",k5,[e("div",$5,[P[10]||(P[10]=e("div",{class:"flex items-center gap-2"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"定时计划任务")],-1)),c.value?K("",!0):(l(),W(O,{key:0},{default:o(()=>[t(j,{theme:"default",variant:"outline",class:"!rounded-lg",onClick:P[0]||(P[0]=q=>w(Ie)(w(io).cron))},{icon:o(()=>[t(w(wo))]),default:o(()=>[P[8]||(P[8]=m("使用文档 ",-1))]),_:1}),t(j,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:p},{icon:o(()=>[t(w(at))]),default:o(()=>[P[9]||(P[9]=m("创建新任务 ",-1))]),_:1})]),_:1}))]),t(Rt,{"enter-active-class":"transition duration-300 ease-out","enter-from-class":"transform -translate-y-2 opacity-0","leave-active-class":"transition duration-200 ease-in","leave-to-class":"transform -translate-y-2 opacity-0"},{default:o(()=>[c.value?(l(),x("div",z5,[e("div",C5,[e("span",A5,S(f.value?"编辑任务":"创建新任务"),1),t(j,{size:"small",variant:"text",shape:"square",onClick:g},{default:o(()=>[t(w(sa))]),_:1})]),t(E,{ref_key:"formRef",ref:v,data:u.value,rules:b,"label-width":"0",class:"p-0"},{default:o(()=>[(l(),x(re,null,xe([{title:"任务名称",desc:"给计划任务起个易识别的名字",key:"name"},{title:"触发规则 (Cron)",desc:"支持秒级精度 (秒 分 时 日 月 周)",key:"cron"},{title:"执行操作",desc:"选择触发时要执行的动作类型",key:"type"}],(q,H)=>e("div",{key:H,class:"flex flex-col md:flex-row md:items-start justify-between p-5 border-b border-dashed border-zinc-100 dark:border-zinc-800 last:border-0"},[e("div",S5,[e("div",I5,S(q.title),1),e("div",V5,S(q.desc),1)]),e("div",U5,[q.key==="name"?(l(),W($,{key:0,modelValue:u.value.name,"onUpdate:modelValue":P[1]||(P[1]=J=>u.value.name=J),placeholder:"请输入任务名称",class:"flex-1"},null,8,["modelValue"])):K("",!0),q.key==="cron"?(l(),x(re,{key:1},[t($,{modelValue:u.value.cron,"onUpdate:modelValue":P[2]||(P[2]=J=>u.value.cron=J),placeholder:"例如: 0 0 12 * * ?",class:"flex-1"},null,8,["modelValue"]),t(j,{variant:"outline",class:"shrink-0",onClick:P[3]||(P[3]=J=>I.value=!0)},{default:o(()=>[...P[11]||(P[11]=[m("生成器",-1)])]),_:1})],64)):K("",!0),q.key==="type"?(l(),W(V,{key:2,modelValue:u.value.type,"onUpdate:modelValue":P[4]||(P[4]=J=>u.value.type=J),options:R,class:"w-full"},null,8,["modelValue"])):K("",!0)])])),64)),u.value.type==="command"||u.value.type==="restart"?(l(),x("div",M5,[e("div",L5,[e("div",B5,S(u.value.type==="restart"?"重启提示语":"控制台命令"),1),e("div",T5,S(u.value.type==="restart"?"重启前发送给玩家的消息":"直接输入内容,不需要加 /"),1)]),e("div",R5,[t(_,{modelValue:u.value.payload,"onUpdate:modelValue":P[5]||(P[5]=q=>u.value.payload=q),autosize:{minRows:2,maxRows:4},placeholder:"请输入内容...",class:"w-full"},null,8,["modelValue"])])])):K("",!0),e("div",j5,[P[12]||(P[12]=e("div",{class:"flex-1 pr-8"},[e("div",{class:"text-sm font-bold text-[var(--td-text-color-primary)]"},"启用状态"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1"},"暂时禁用此任务而不删除它")],-1)),t(z,{modelValue:u.value.enable,"onUpdate:modelValue":P[6]||(P[6]=q=>u.value.enable=q)},null,8,["modelValue"])]),e("div",P5,[t(j,{theme:"primary",loading:n.value,class:"!rounded-lg",onClick:B},{icon:o(()=>[t(w(qo))]),default:o(()=>[m(S(f.value?"保存修改":"立即创建"),1)]),_:1},8,["loading"]),t(j,{theme:"default",variant:"base",class:"!rounded-lg",onClick:g},{default:o(()=>[...P[13]||(P[13]=[m("取消",-1)])]),_:1})])]),_:1},8,["data"])])):K("",!0)]),_:1}),t(X,{loading:i.value,"show-overlay":""},{default:o(()=>[e("div",E5,[d.value.length===0&&!i.value?(l(),x("div",D5,[...P[14]||(P[14]=[e("span",{class:"text-sm font-medium"},"暂无任务,请点击上方创建",-1)])])):K("",!0),(l(!0),x(re,null,xe(d.value,q=>(l(),x("div",{key:q.id,class:"group flex flex-col md:flex-row items-center justify-between p-5 bg-white dark:bg-zinc-900/40 border border-zinc-200 dark:border-zinc-800 rounded-xl transition-all duration-200 hover:border-[var(--color-primary)] hover:shadow-md"},[e("div",F5,[e("div",O5,[t(F,{size:"small",theme:q.enable?"success":"warning",variant:"light-outline",class:"!rounded-md"},{default:o(()=>[m(S(q.enable?"运行中":"已暂停"),1)]),_:2},1032,["theme"]),e("span",N5,S(q.name),1)]),e("div",K5,[t(F,{size:"small",variant:"outline",theme:D(q.type),class:"!rounded-md uppercase font-mono"},{icon:o(()=>[(l(),W(it(U(q.type))))]),default:o(()=>[m(" "+S(q.type),1)]),_:2},1032,["theme"]),e("div",q5,[t(w(pt),{class:"text-sm"}),m(" "+S(q.cron),1)])]),q.payload?(l(),x("div",{key:0,class:"mt-3 text-xs text-[var(--td-text-color-secondary)] bg-zinc-50 dark:bg-zinc-800/30 p-2 rounded-md border border-zinc-100 dark:border-zinc-800/50 truncate",title:q.payload},S(q.payload),9,H5)):K("",!0)]),e("div",W5,[t(j,{variant:"text",theme:"primary",class:"!rounded-lg hover:!bg-[var(--color-primary)]/10",onClick:H=>k(q)},{icon:o(()=>[t(w(so))]),default:o(()=>[P[15]||(P[15]=m(" 编辑 ",-1))]),_:1},8,["onClick"]),t(j,{variant:"text",theme:"danger",class:"!rounded-lg hover:!bg-red-500/10",onClick:H=>C(q)},{icon:o(()=>[t(w(ct))]),default:o(()=>[P[16]||(P[16]=m(" 删除 ",-1))]),_:1},8,["onClick"])])]))),128))])]),_:1},8,["loading"]),t(Vs,{visible:I.value,"onUpdate:visible":P[7]||(P[7]=q=>I.value=q),"initial-value":u.value.cron,onConfirm:T},null,8,["visible","initial-value"])])}}}),J5=me(G5,[["__scopeId","data-v-c1bcc0be"]]),X5={class:"flex flex-col mx-auto"},Q5={class:"flex flex-col md:flex-row md:justify-between md:items-center py-4 pr-0 md:pr-8 gap-4 md:gap-8"},Y5={class:"flex-1 min-w-[200px]"},Z5={class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 leading-relaxed"},e3={class:"text-zinc-700 dark:text-zinc-300"},t3={class:"shrink-0 flex items-center min-h-[32px] w-full md:w-auto"},o3={key:0,class:"flex items-center bg-zinc-100 dark:bg-zinc-800/80 px-3 py-1.5 rounded-lg gap-3 shadow-sm w-full md:w-auto justify-between md:justify-start"},a3={class:"flex items-center gap-3"},s3={class:"text-sm font-bold text-[var(--td-text-color-primary)]"},l3={class:"flex items-center"},r3={class:"mt-4 border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl overflow-hidden shadow-sm bg-white/50 dark:bg-zinc-900/20"},n3={class:"flex items-center font-mono text-[13px] text-zinc-700 dark:text-zinc-300 break-all"},i3={class:"flex items-center text-[var(--td-text-color-secondary)] text-[13px]"},d3=de({__name:"BackupManager",setup(a){const s=Ye(),r=te(()=>{const p=s.params.serverId;return p?parseInt(p):NaN}),d=y(!1),i=y([]),c=y([]),f=[{colKey:"row-select",type:"multiple",width:20,fixed:"left"},{colKey:"fileName",title:"文件名",ellipsis:!0,width:200},{colKey:"fileSizeStr",title:"文件大小",width:120},{colKey:"createTime",title:"备份时间",width:180},{colKey:"op",title:"操作",fixed:"right",width:140}],n=p=>new Promise(k=>setTimeout(k,p)),v=async()=>{if(r.value){d.value=!0,c.value=[];try{const p=await ci(r.value);i.value=p.data||p}catch(p){M.error("获取备份列表失败: "+p.message)}finally{d.value=!1}}},I=p=>{c.value=p},u=p=>{const k=Ke.confirm({header:"确认删除备份?",body:`您确定要永久删除文件 "${p.fileName}" 吗?此操作不可恢复。`,theme:"danger",onConfirm:async()=>{k.hide();try{await Yo(r.value,p.fileName),M.success("删除成功"),await v()}catch(g){M.error(g.message||"删除失败")}},onClose:()=>{k.hide()}})},R=p=>{try{const k=Zo(r.value,p.fileName);window.open(k,"_blank")}catch(k){M.error("下载失败!"+k.message)}},b=()=>{const p=c.value.length;p!==0&&(M.info(`开始下载 ${p} 个文件,请注意允许浏览器弹窗...`),c.value.forEach((k,g)=>{setTimeout(()=>{const B=Zo(r.value,k);window.open(B,"_blank")},g*1e3)}))},A=()=>{const p=c.value.length;if(p===0)return;const k=Ke.confirm({header:"确认批量删除?",body:`您选中了 ${p} 个备份文件。删除后无法恢复,确定要继续吗?`,theme:"danger",onConfirm:async()=>{k.hide(),d.value=!0;let g=0,B=0,C=null;try{for(const[T,U]of c.value.entries()){C&&M.close(C),C=M.loading(`正在删除 ${U} (${T+1}/${p})...`,0);try{await Yo(r.value,U),g++}catch(D){B++,console.error(`删除 ${U} 失败`,D)}T{k.hide()}})};return _e(()=>s.params.serverId,p=>{p&&v()}),ze(()=>{v()}),(p,k)=>{const g=h("t-button"),B=h("t-tooltip"),C=h("t-space"),T=h("t-table");return l(),x("div",X5,[k[10]||(k[10]=e("div",{class:"flex items-center gap-2 mt-5 mb-4 pb-2 border-b border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"备份管理")],-1)),e("div",Q5,[e("div",Y5,[k[4]||(k[4]=e("div",{class:"text-sm font-bold text-[var(--td-text-color-primary)] leading-snug"},"存档快照",-1)),e("div",Z5,[k[0]||(k[0]=m(" 查看和管理服务器的自动或手动备份。建议定期下载重要备份到本地保存。 ",-1)),k[1]||(k[1]=e("br",null,null,-1)),k[2]||(k[2]=m(" 当前共有 ",-1)),e("b",e3,S(i.value.length),1),k[3]||(k[3]=m(" 个备份文件。最大保存备份文件的数量需要在实例设置中配置。 ",-1))])]),e("div",t3,[t(Rt,{"enter-active-class":"transition-opacity duration-200 ease-out","enter-from-class":"opacity-0","leave-active-class":"transition-opacity duration-200 ease-in","leave-to-class":"opacity-0",mode:"out-in"},{default:o(()=>[c.value.length>0?(l(),x("div",o3,[e("div",a3,[k[5]||(k[5]=e("div",{class:"w-[2px] h-[14px] bg-zinc-300 dark:bg-zinc-600 -mr-1"},null,-1)),e("span",s3,"已选 "+S(c.value.length)+" 项",1)]),e("div",l3,[t(g,{variant:"text",theme:"primary",class:"!px-2 !h-7 !text-sm hover:!bg-[var(--color-primary)]/10 !rounded-md",onClick:b},{default:o(()=>[...k[6]||(k[6]=[m(" 下载 ",-1)])]),_:1}),t(g,{variant:"text",theme:"danger",class:"!px-2 !h-7 !text-sm hover:!bg-red-500/10 !rounded-md",onClick:A},{default:o(()=>[...k[7]||(k[7]=[m(" 删除 ",-1)])]),_:1})])])):(l(),W(g,{key:1,theme:"primary",variant:"outline",class:"!rounded-lg shadow-sm w-full md:w-auto",onClick:v},{icon:o(()=>[t(w(Pe))]),default:o(()=>[k[8]||(k[8]=m(" 刷新列表 ",-1))]),_:1}))]),_:1})])]),e("div",r3,[t(T,{"row-key":"fileName",data:i.value,columns:f,loading:d.value,"selected-row-keys":c.value,stripe:"",hover:"",class:"custom-table",onSelectChange:I},{fileName:o(({row:U})=>[e("div",n3,[t(w(Ut),{class:"mr-1.5 text-[var(--color-primary)]"}),e("span",null,S(U.fileName),1)])]),createTime:o(({row:U})=>[e("div",i3,[t(w(pt),{class:"mr-1.5"}),m(" "+S(U.createTime),1)])]),op:o(({row:U})=>[t(C,null,{default:o(()=>[t(B,{content:"下载备份"},{default:o(()=>[t(g,{variant:"text",shape:"square",theme:"primary",class:"!rounded-md hover:!bg-[var(--color-primary)]/10 transition-colors",onClick:D=>R(U)},{default:o(()=>[t(w(ao))]),_:1},8,["onClick"])]),_:2},1024),t(B,{content:"删除备份"},{default:o(()=>[t(g,{variant:"text",shape:"square",theme:"danger",class:"!rounded-md hover:!bg-red-500/10 transition-colors",onClick:D=>u(U)},{default:o(()=>[t(w(ct))]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),empty:o(()=>[...k[9]||(k[9]=[e("div",{class:"p-8 text-center text-sm font-medium text-[var(--td-text-color-secondary)]"},"暂无备份记录",-1)])]),_:1},8,["data","loading","selected-row-keys"])])])}}}),c3=me(d3,[["__scopeId","data-v-36c1715d"]]),u3={key:0,class:"flex flex-col gap-4 py-2"},m3={class:"flex flex-col gap-2 mt-2"},p3={class:"flex justify-end gap-3 mt-4"},v3={key:1,class:"flex flex-col items-center gap-4 py-4 w-full"},f3={class:"flex justify-center items-center h-10"},b3={class:"text-sm font-medium text-[var(--td-text-color-primary)] text-center px-4 w-full truncate"},x3={class:"w-full"},g3={key:1,class:"mt-4"},h3=de({__name:"BedrockAutoUpdater",props:{visible:{type:Boolean},instanceId:{}},emits:["update:visible","success"],setup(a,{emit:s}){const r=a,d=s,i=Be(),c=te(()=>i.userInfo.systemInfo.osType?.toLowerCase()||""),f=te(()=>c.value.includes("window")),n=te({get:()=>r.visible,set:D=>d("update:visible",D)}),v=y([]),I=y(""),u=y(!1),R=y(!1),b=y("idle"),A=y(0),p=y(""),k=async()=>{u.value=!0;try{const N=(await fa("bedrock-server")).versions||[];let P=[];f.value?P=N.filter(j=>j.includes("win-")):P=N.filter(j=>j.includes("linux-")),v.value=P.map(j=>({label:j,value:j})),v.value.length>0&&(I.value=v.value[0].value)}catch(D){M.warning("获取版本列表失败: "+D.message)}finally{u.value=!1}};_e(()=>r.visible,D=>{D&&(R.value=!1,b.value="idle",A.value=0,p.value="",v.value.length===0&&k())});const g=D=>new Promise((N,P)=>{const j=setInterval(async()=>{try{const O=await ws(D);A.value=O.progress,p.value=O.message,O.status==="success"?(clearInterval(j),N(!0)):O.status==="error"&&(clearInterval(j),P(new Error(O.message||"下载失败")))}catch(O){clearInterval(j),P(O)}},1e3)}),B=D=>new Promise((N,P)=>{const j=setInterval(async()=>{try{const O=await hs(D);A.value=O.progress||0,p.value=O.message,O.status==="success"?(clearInterval(j),N(!0)):O.status==="error"&&(clearInterval(j),P(new Error(O.message||"解压出错")))}catch(O){clearInterval(j),P(O)}},1e3)}),C=()=>{if(!I.value){M.warning("请选择要更新的版本");return}const D=Ke.confirm({header:"高危操作确认",theme:"warning",body:"即将开始自动下载并覆盖更新基岩版服务端。请确认您已备份核心数据(如 worlds 目录)。此更新为前台任务,请勿在更新期间关闭或刷新此页面,否则可能导致服务端文件损坏!",confirmBtn:"我已备份,开始更新",cancelBtn:"取消",onConfirm:()=>{D.hide(),T()}})},T=async()=>{R.value=!0,b.value="fetching",A.value=0,p.value="正在解析下载地址...";try{const D=await ba("bedrock-server",I.value);if(!D||!D.url)throw new Error("无法获取版本下载链接");const N="bedrock_update_temp.zip";b.value="downloading",p.value="正在提交离线下载任务...";const P=await _s(r.instanceId,"",D.url,N),j=P.taskId||P.data&&P.data.taskId;if(!j)throw new Error("未能获取下载任务ID");await g(j),b.value="unzipping",A.value=0,p.value="正在解压并覆盖服务端文件...";const O=await gs(r.instanceId,N,"","auto",!1),$=O.taskId||O.data&&O.data.taskId;if(!$)throw new Error("未能获取解压任务ID");await B($),f.value||(b.value="chmodding",p.value="正在赋予可执行权限...",await ys(r.instanceId,"bedrock_server","755")),b.value="success",A.value=100,p.value="基岩版服务端更新成功!",setTimeout(()=>{d("success"),n.value=!1},2e3)}catch(D){b.value="error",p.value=D.message||"更新过程中发生异常",M.error(p.value)}},U=()=>{if(R.value&&b.value!=="success"&&b.value!=="error"){M.warning("更新任务正在进行中,请勿关闭窗口");return}n.value=!1};return(D,N)=>{const P=h("t-select"),j=h("t-button"),O=h("t-alert"),$=h("t-loading"),V=h("t-progress"),_=h("t-dialog");return l(),W(_,{visible:n.value,"onUpdate:visible":N[2]||(N[2]=z=>n.value=z),header:"自动更新基岩版",footer:!1,"close-btn":!R.value||b.value==="success"||b.value==="error","close-on-esc-keydown":!R.value||b.value==="success"||b.value==="error","close-on-overlay-click":!R.value||b.value==="success"||b.value==="error","on-close":U,attach:"body",width:"480px"},{default:o(()=>[b.value==="idle"?(l(),x("div",u3,[N[6]||(N[6]=e("div",{class:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-xl border border-blue-200/60 dark:border-blue-800/60 text-[13px] text-blue-800 dark:text-blue-300 shadow-inner"},[m(" 自动更新程序将下载官方服务端并解压覆盖到实例根目录。配置和地图数据通常不会丢失,但仍"),e("strong",null,"强烈建议"),m("事先备份。 ")],-1)),e("div",m3,[N[3]||(N[3]=e("span",{class:"text-sm font-medium text-[var(--td-text-color-primary)]"},"目标版本",-1)),t(P,{modelValue:I.value,"onUpdate:modelValue":N[0]||(N[0]=z=>I.value=z),options:v.value,loading:u.value,filterable:"",class:"!rounded-lg shadow-sm",placeholder:"请选择要更新的版本"},null,8,["modelValue","options","loading"])]),e("div",p3,[t(j,{variant:"outline",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:U},{default:o(()=>[...N[4]||(N[4]=[m("取消",-1)])]),_:1}),t(j,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:C,disabled:!I.value},{default:o(()=>[...N[5]||(N[5]=[m("开始更新",-1)])]),_:1},8,["disabled"])])])):(l(),x("div",v3,[R.value&&b.value!=="success"&&b.value!=="error"?(l(),W(O,{key:0,theme:"warning",class:"!w-full !rounded-xl !mb-2 border border-red-200 dark:border-red-900/50"},{message:o(()=>[...N[7]||(N[7]=[e("div",{class:"text-xs font-bold leading-relaxed"}," 基岩版服务端更新中:请勿关闭、刷新此页面或离开当前页面,否则可能导致服务端文件损坏! ",-1)])]),_:1})):K("",!0),e("div",f3,[b.value==="success"?(l(),W(w(Kt),{key:0,class:"text-emerald-500 text-[40px]"})):b.value==="error"?(l(),W(w(So),{key:1,class:"text-red-500 text-[40px]"})):(l(),W($,{key:2,size:"medium"}))]),e("div",b3,S(p.value),1),e("div",x3,[t(V,{theme:"plump",percentage:A.value,status:b.value==="error"?"error":b.value==="success"?"success":"active"},null,8,["percentage","status"])]),b.value==="error"?(l(),x("div",g3,[t(j,{theme:"primary",variant:"outline",onClick:N[1]||(N[1]=z=>b.value="idle")},{default:o(()=>[...N[8]||(N[8]=[m("返回重试",-1)])]),_:1})])):K("",!0)]))]),_:1},8,["visible","close-btn","close-on-esc-keydown","close-on-overlay-click"])}}}),y3=me(h3,[["__scopeId","data-v-9b299421"]]),_3={class:"flex flex-col mx-auto w-full pb-6"},w3={key:0,class:"mb-4"},k3={class:"flex flex-col md:flex-row md:items-center justify-between py-4 gap-4"},$3={class:"flex items-center gap-4 shrink-0 w-full md:w-auto mt-2 md:mt-0"},z3={class:"w-[72px] h-[72px] shrink-0 border border-dashed border-zinc-300 dark:border-zinc-700 rounded-xl flex justify-center items-center bg-zinc-50 dark:bg-zinc-900/50 overflow-hidden shadow-inner"},C3=["src"],A3={key:1,class:"flex flex-col items-center text-[var(--td-text-color-secondary)] gap-1 opacity-80"},S3={class:"flex flex-col gap-2 flex-1 md:flex-none md:w-[140px]"},I3={class:"flex flex-col mx-auto w-full pb-6"},V3={key:0,class:"mt-8"},U3={class:"flex flex-col md:flex-row md:items-center justify-between py-4 gap-4"},M3={class:"flex items-center gap-4 shrink-0 w-full md:w-auto mt-2 md:mt-0"},L3={class:"flex flex-col items-center p-5 md:p-6 bg-zinc-50/50 dark:bg-zinc-950/20"},B3={key:0,class:"relative max-w-full max-h-[400px] select-none cropper-bg-pattern rounded-lg overflow-hidden border border-zinc-200/80 dark:border-zinc-700/80 shadow-inner"},T3=["src"],R3=["src"],j3=de({__name:"More",setup(a){const s=Ye(),r=te(()=>parseInt(s.params.serverId)),d=y(!1),i=y(""),c=y(null),f=y(null),n=y(!1),v=y(""),I=y(null),u=y({x:0,y:0,size:100}),R=y({imgWidth:0,imgHeight:0,scale:1});let b=null,A=0,p=0,k=0,g=0,B=0;const C=async()=>{d.value=!0,i.value="";try{const E=await xs(r.value,"server-icon.png"),F=E.data||E;F instanceof Blob?F.size===0||F.type.includes("json")?c.value=null:(c.value&&URL.revokeObjectURL(c.value),c.value=URL.createObjectURL(F)):c.value=null}catch{c.value=null}finally{d.value=!1}},T=()=>{f.value&&(f.value.value="",f.value.click())},U=E=>{const X=E.target.files?.[0];if(!X)return;if(!X.type.startsWith("image/")){M.warning("请选择图片文件");return}const q=new FileReader;q.onload=H=>{v.value=H.target?.result,n.value=!0},q.readAsDataURL(X)},D=()=>{if(!I.value)return;const E=I.value;R.value.imgWidth=E.clientWidth,R.value.imgHeight=E.clientHeight,R.value.scale=E.naturalWidth/E.clientWidth;const F=Math.min(E.clientWidth,E.clientHeight),X=Math.floor(F*1);u.value={size:X,x:(E.clientWidth-X)/2,y:(E.clientHeight-X)/2}},N=(E,F)=>{E.preventDefault(),b=F,A=E.clientX,p=E.clientY,k=u.value.x,g=u.value.y,B=u.value.size,window.addEventListener("mousemove",P),window.addEventListener("mouseup",j)},P=E=>{if(!b)return;const F=E.clientX-A,X=E.clientY-p;if(b==="move"){const q=k+F,H=g+X,J=R.value.imgWidth-u.value.size,ae=R.value.imgHeight-u.value.size;u.value.x=Math.max(0,Math.min(q,J)),u.value.y=Math.max(0,Math.min(H,ae))}else if(b==="resize"){const q=Math.max(F,X);let H=B+q;H<20&&(H=20);const J=Math.min(R.value.imgWidth-u.value.x,R.value.imgHeight-u.value.y);u.value.size=Math.min(H,J)}},j=()=>{b=null,window.removeEventListener("mousemove",P),window.removeEventListener("mouseup",j)},O=async()=>{if(I.value){d.value=!0;try{const E=document.createElement("canvas");E.width=64,E.height=64;const F=E.getContext("2d");if(!F)throw new Error("无法初始化 Canvas");const X=I.value,q=R.value.scale,H=u.value.x*q,J=u.value.y*q,ae=u.value.size*q;F.drawImage(X,H,J,ae,ae,0,0,64,64);const le=await new Promise((Se,Ee)=>{E.toBlob(Y=>{Y?Se(Y):Ee(new Error("生成图片失败"))},"image/png")}),fe=await qt(),be=fe.uploadId||fe.data?.uploadId;if(!be)throw new Error("初始化上传失败:未获取到 uploadId");await Ht(be,0,le),await Wt(be,1),await bs(r.value,be,"server-icon.png",""),M.success("服务器图标已成功更新!"),n.value=!1,await C()}catch(E){M.error(E.message||"上传失败,请重试")}finally{d.value=!1}}},$=y(null),V=y(!1),_=async()=>{try{$.value=await va(r.value)}catch(E){console.error("获取实例信息失败",E)}},z=()=>{if($.value?.status!==0){M.warning("实例正在运行中,请先关闭服务器后再进行更新操作!");return}V.value=!0};return ze(()=>{C(),_()}),_e(()=>s.params.serverId,E=>{s.name==="InstanceConsole"&&E&&(c.value=null,v.value="",C(),_())},{immediate:!0}),(E,F)=>{const X=h("t-alert"),q=h("t-button"),H=h("t-loading"),J=h("t-dialog"),ae=Ya("loading");return l(),x("div",_3,[i.value?(l(),x("div",w3,[t(X,{theme:"error",message:i.value,closeable:"",class:"!rounded-xl shadow-sm border border-red-100 dark:border-red-900/50",onClose:F[0]||(F[0]=le=>i.value="")},{operation:o(()=>[e("span",{class:"cursor-pointer ml-2 font-bold text-red-600 dark:text-red-400 hover:opacity-80 transition-opacity",onClick:C},"重试")]),_:1},8,["message"])])):K("",!0),t(H,{loading:d.value,"show-overlay":""},{default:o(()=>[F[9]||(F[9]=e("div",{class:"flex items-center gap-2 mt-5 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"外观设置")],-1)),e("div",k3,[F[8]||(F[8]=e("div",{class:"flex-1 md:pr-8"},[e("div",{class:"text-sm font-bold text-[var(--td-text-color-primary)]"},"服务器图标"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 leading-relaxed"},[m(" 上传自定义的 JPG / PNG 图片替换现有的 server-icon.png。"),e("br"),m(" 系统将提供可视化裁剪工具,并自动帮您转换为标准的 64x64 服务器图标文件。 ")])],-1)),e("div",$3,[e("input",{ref_key:"fileInput",ref:f,type:"file",accept:"image/png, image/jpeg",class:"hidden",onChange:U},null,544),e("div",z3,[c.value?(l(),x("img",{key:0,src:c.value,alt:"Server Icon",class:"w-16 h-16 rounded shadow-sm [image-rendering:pixelated]"},null,8,C3)):(l(),x("div",A3,[t(w(is),{size:"20px"}),F[5]||(F[5]=e("span",{class:"text-[10px] font-medium tracking-widest"},"暂无",-1))]))]),e("div",S3,[t(q,{theme:"primary",block:"",class:"!rounded-lg shadow-sm !m-0",onClick:T},{icon:o(()=>[t(w(yo))]),default:o(()=>[F[6]||(F[6]=m(" 选择新图标 ",-1))]),_:1}),t(q,{variant:"outline",block:"",class:"!rounded-lg !bg-zinc-50 dark:!bg-zinc-800/50 !border-zinc-200 dark:!border-zinc-700 hover:!bg-zinc-100 dark:hover:!bg-zinc-800 !text-zinc-700 dark:!text-zinc-300 transition-colors !m-0",onClick:C},{icon:o(()=>[t(w(Pe))]),default:o(()=>[F[7]||(F[7]=m(" 刷新图标 ",-1))]),_:1})])])])]),_:1},8,["loading"]),e("div",I3,[t(H,{loading:d.value,"show-overlay":""},{default:o(()=>[$.value?.args?.includes("bedrock_server")?(l(),x("div",V3,[F[12]||(F[12]=e("div",{class:"flex items-center gap-2 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"基岩版管理")],-1)),e("div",U3,[F[11]||(F[11]=e("div",{class:"flex-1 md:pr-8"},[e("div",{class:"text-sm font-bold text-[var(--td-text-color-primary)]"},"服务端自动更新"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 leading-relaxed"},[m(" 全自动下载官方最新版并覆盖更新当前文件。"),e("br"),m(" 强烈建议在更新前备份数据(如"),e("code",{class:"mx-1 px-1 bg-zinc-100 dark:bg-zinc-800 rounded"},"worlds"),m("目录)。 ")])],-1)),e("div",M3,[t(q,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:z},{default:o(()=>[...F[10]||(F[10]=[m(" 获取并自动更新 ",-1)])]),_:1})])])])):K("",!0)]),_:1},8,["loading"]),t(y3,{visible:V.value,"onUpdate:visible":F[1]||(F[1]=le=>V.value=le),"instance-id":r.value,onSuccess:_},null,8,["visible","instance-id"])]),t(J,{visible:n.value,"onUpdate:visible":F[4]||(F[4]=le=>n.value=le),header:"裁剪服务器图标 (64x64)",width:"600px","close-on-overlay-click":!1,attach:"body",onConfirm:O},{default:o(()=>[Le((l(),x("div",L3,[F[15]||(F[15]=e("p",{class:"text-xs text-[var(--td-text-color-secondary)] mb-5 text-center bg-[var(--td-bg-color-container)]/80 px-4 py-2.5 rounded-lg border border-zinc-200/60 dark:border-zinc-700/60 shadow-sm backdrop-blur-md"},[m(" 请拖动和缩放亮色方框,选择需要截取的区域。生成后将自动转为 "),e("b",{class:"text-zinc-700 dark:text-zinc-300"},"64x64"),m(" 的标准尺寸。 ")],-1)),v.value?(l(),x("div",B3,[e("img",{ref_key:"sourceImageRef",ref:I,src:v.value,class:"block max-w-full max-h-[400px]",draggable:"false",onLoad:D},null,40,T3),F[14]||(F[14]=e("div",{class:"absolute inset-0 bg-black/60 pointer-events-none"},null,-1)),e("div",{class:"absolute cursor-move overflow-hidden shadow-[0_0_0_1px_rgba(0,0,0,0.5)] ring-1 ring-white/50",style:Oe({left:u.value.x+"px",top:u.value.y+"px",width:u.value.size+"px",height:u.value.size+"px"}),onMousedown:F[3]||(F[3]=le=>N(le,"move"))},[e("img",{src:v.value,class:"absolute top-0 left-0 max-w-none pointer-events-none",draggable:"false",style:Oe({width:R.value.imgWidth+"px",height:R.value.imgHeight+"px",transform:`translate(${-u.value.x}px, ${-u.value.y}px)`})},null,12,R3),F[13]||(F[13]=e("div",{class:"absolute inset-0 border border-dashed border-white/80 pointer-events-none"},null,-1)),e("div",{class:"absolute right-0 bottom-0 w-3 h-3 bg-[var(--color-primary)] border-2 border-white cursor-nwse-resize z-10 before:absolute before:-inset-2.5",onMousedown:F[2]||(F[2]=dt(le=>N(le,"resize"),["stop"]))},null,32)],36)])):K("",!0)])),[[ae,d.value]])]),_:1},8,["visible"])])}}}),P3=me(j3,[["__scopeId","data-v-3f8d4992"]]),E3={class:"flex flex-col md:flex-row h-[75vh] md:h-[72vh] overflow-hidden bg-white/50 dark:bg-zinc-900/30 rounded-b-xl"},D3={class:"flex flex-row md:flex-col w-full md:w-40 shrink-0 border-b md:border-b-0 md:border-r border-zinc-200/60 dark:border-zinc-800/60 bg-zinc-50/50 dark:bg-zinc-950/30 overflow-x-auto md:overflow-y-auto hide-scrollbar md:pt-3"},F3=["onClick"],O3={key:0,class:"absolute bottom-0 left-1/2 -translate-x-1/2 w-6 h-[3px] rounded-t-sm md:top-1/2 md:left-0 md:-translate-y-1/2 md:translate-x-0 md:w-1 md:h-6 md:rounded-r-sm md:rounded-tl-none bg-[var(--color-primary)] shadow-[0_0_8px_var(--color-primary)] opacity-80"},N3={class:"whitespace-nowrap overflow-hidden text-ellipsis"},K3={class:"flex-1 min-w-0 h-full flex flex-col relative bg-white/40 dark:bg-zinc-900/20"},q3={class:"flex-1 overflow-y-auto custom-scrollbar p-4 pb-20 md:p-0 md:pl-8 md:pb-12 md:pr-2"},H3={key:0,class:"tab-panel-anim"},W3={key:1,class:"tab-panel-anim"},G3={key:2,class:"tab-panel-anim"},J3={key:3,class:"tab-panel-anim"},X3={key:4,class:"tab-panel-anim"},Q3={key:5,class:"tab-panel-anim"},Y3=de({__name:"InstanceSettings",setup(a,{expose:s}){const r=y(!1),d=y(0),i=[{label:"实例设置",icon:Io},{label:"插件/模组",icon:wl},{label:"服务器属性",icon:kl},{label:"定时任务",icon:pt},{label:"备份管理",icon:$l},{label:"更多功能",icon:na}];return s({open:()=>{r.value=!0}}),(f,n)=>{const v=h("t-dialog");return l(),W(v,{visible:r.value,"onUpdate:visible":n[0]||(n[0]=I=>r.value=I),header:"实例配置",width:"90%",top:"3vh",attach:"body",footer:!1,class:"settings-dialog"},{default:o(()=>[e("div",E3,[e("div",D3,[(l(),x(re,null,xe(i,(I,u)=>e("div",{key:u,class:ue(["relative flex flex-col md:flex-row items-center justify-center md:justify-start flex-1 md:flex-none h-auto md:h-12 px-2 py-3 md:py-0 md:px-5 cursor-pointer text-xs md:text-sm transition-all duration-200 gap-1 md:gap-2.5 group",d.value===u?"text-[var(--color-primary)] font-bold bg-white/80 dark:bg-zinc-800/50 md:bg-transparent":"text-[var(--td-text-color-secondary)] hover:bg-zinc-200/50 dark:hover:bg-zinc-800/40"]),onClick:R=>d.value=u},[d.value===u?(l(),x("div",O3)):K("",!0),(l(),W(it(I.icon),{class:ue(["text-xl md:text-lg shrink-0 transition-transform duration-300",d.value===u?"scale-110":"group-hover:scale-110"])},null,8,["class"])),e("span",N3,S(I.label),1)],10,F3)),64))]),e("div",K3,[e("div",q3,[d.value===0?(l(),x("div",H3,[t(wk)])):K("",!0),d.value===1?(l(),x("div",W3,[t(d5)])):K("",!0),d.value===2?(l(),x("div",G3,[t(w5,{"instance-id":21})])):K("",!0),d.value===3?(l(),x("div",J3,[t(J5)])):K("",!0),d.value===4?(l(),x("div",X3,[t(c3)])):K("",!0),d.value===5?(l(),x("div",Q3,[t(P3)])):K("",!0)])])])]),_:1},8,["visible"])}}}),Z3=me(Y3,[["__scopeId","data-v-903854e9"]]),e8={class:"flex flex-col gap-3"},t8={class:"flex justify-between items-center text-xs text-[var(--td-text-color-secondary)] pb-2 border-b border-dashed border-zinc-200 dark:border-zinc-700/60"},o8={class:"flex items-center gap-1.5"},a8={class:"flex flex-col gap-4"},s8={class:"flex flex-col gap-2"},l8={class:"flex justify-between items-center"},r8={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},n8={class:"font-mono font-medium text-xs text-[var(--td-text-color-primary)]"},i8={class:"flex flex-col gap-2"},d8={class:"flex justify-between items-center"},c8={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},u8={class:"font-mono font-medium text-xs text-[var(--td-text-color-primary)] flex items-center gap-1"},m8={key:0,class:"text-[11px] text-[var(--td-text-color-secondary)]"},fo=20,p8=de({__name:"InstanceMonitor",props:{serverId:{},maxMemory:{},isRunning:{type:Boolean}},setup(a){const s=a,r=po(),d=y(null),i=y(null);let c=null,f=null;const n=y(new Array(fo).fill(0)),v=y(new Array(fo).fill(0)),I=te(()=>s.maxMemory>0),u=(g,B,C=100)=>({grid:{top:4,right:0,bottom:4,left:0},xAxis:{type:"category",show:!1,boundaryGap:!1},yAxis:{type:"value",min:0,max:C===null?void 0:C,show:!1},series:[{type:"line",data:B,smooth:!0,showSymbol:!1,lineStyle:{width:2,color:g},areaStyle:{color:new vs(0,0,0,1,[{offset:0,color:g.replace(")",", 0.2)").replace("rgb","rgba")},{offset:1,color:"transparent"}])}}]}),R=()=>{const g=getComputedStyle(document.documentElement),B=g.getPropertyValue("--td-brand-color").trim()||"#0052d9",C=g.getPropertyValue("--td-warning-color").trim()||"#e37318";if(d.value&&(c=ko(d.value),c.setOption(u(B,n.value,100))),i.value){f=ko(i.value);const T=I.value?100:null;f.setOption(u(C,v.value,T))}window.addEventListener("resize",b)},b=()=>{c?.resize(),f?.resize()},A=te(()=>{const g=r.stats.memBytes/1024/1024;return g>1024?`${(g/1024).toFixed(2)} GB`:`${g.toFixed(0)} MB`}),p=async()=>{s.isRunning&&s.serverId&&(r.setMaxMemory(s.maxMemory),await r.connect(s.serverId))},k=async()=>{await r.disconnect()};return _e(()=>s.maxMemory,g=>{if(r.setMaxMemory(g),f){const B=g>0?100:null;f.setOption({yAxis:{max:B===null?void 0:B}})}},{immediate:!0}),_e(()=>r.stats,g=>{if(!(!s.isRunning||r.currentServerId!==s.serverId)){if(n.value.push(g.cpu),n.value.length>fo&&n.value.shift(),I.value)v.value.push(g.memPercent);else{const B=g.memBytes/1024/1024;v.value.push(B)}v.value.length>fo&&v.value.shift(),c?.setOption({series:[{data:n.value}]}),f?.setOption({series:[{data:v.value}]})}},{deep:!0}),_e(()=>s.isRunning,async g=>{g?yt(()=>{b(),p()}):(n.value.fill(0),v.value.fill(0),c?.setOption({series:[{data:n.value}]}),f?.setOption({series:[{data:v.value}]}),await k())}),_e(()=>s.serverId,async(g,B)=>{g!==B&&(await k(),s.isRunning&&await p())}),ze(async()=>{await yt(),R(),s.isRunning&&await p()}),He(async()=>{window.removeEventListener("resize",b),await k(),c?.dispose(),f?.dispose()}),(g,B)=>(l(),x("div",e8,[e("div",t8,[e("span",o8,[t(w(zl),{class:ue(w(r).isConnected?"text-emerald-500":"text-zinc-400 dark:text-zinc-600")},null,8,["class"]),m(" "+S(w(r).isConnected?"连接正常":"正在连接数据流..."),1)]),e("div",{class:ue(["w-1.5 h-1.5 rounded-full transition-all duration-300",w(r).isConnected&&a.isRunning?"bg-emerald-500 shadow-[0_0_6px_rgba(16,185,129,0.8)]":"bg-zinc-300 dark:bg-zinc-600"])},null,2)]),e("div",a8,[e("div",s8,[e("div",l8,[e("div",r8,[t(w(Ho),{size:"14px"}),B[0]||(B[0]=m(" CPU 使用率 ",-1))]),e("div",n8,S(w(r).stats.cpu.toFixed(1))+" % ",1)]),e("div",{ref_key:"cpuChartRef",ref:d,class:"h-[50px] w-full overflow-hidden rounded-md bg-transparent border border-[var(--td-component-border)]"},null,512)]),e("div",i8,[e("div",d8,[e("div",c8,[t(w(Cl),{size:"14px"}),B[1]||(B[1]=m(" 内存使用 ",-1))]),e("div",u8,[m(S(A.value)+" ",1),I.value?(l(),x("span",m8," ("+S(w(r).stats.memPercent.toFixed(1))+"%) ",1)):K("",!0)])]),e("div",{ref_key:"memChartRef",ref:i,class:"h-[50px] w-full overflow-hidden rounded-md bg-transparent border border-[var(--td-component-border)]"},null,512)])])]))}}),v8=me(p8,[["__scopeId","data-v-47f44cd8"]]);async function f8(a){return await Z.get({url:"/api/tools/ai/usage",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${a}`}})}async function b8(a){return await Z.get({url:"/api/tools/ai/models",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${a}`}})}async function x8(a,s,r,d,i,c){return s===""&&(s=null),r===""&&(r=null),await Z.post({url:"/api/tools/ai/analysis",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${a}`},data:{mods:s,plugins:r,core:d,logs:i,model:c,usemd:!0},timeout:300*1e3})}const g8={class:"flex flex-col md:flex-row w-full h-[75vh] md:h-[70vh] rounded-xl overflow-hidden bg-[var(--td-bg-color-container)]/80 border border-[var(--td-component-border)] shadow-sm"},h8={class:"list-item-anim w-full md:w-[40%] min-w-[320px] p-5 flex flex-col gap-5 border-b md:border-b-0 md:border-r border-zinc-200/60 dark:border-zinc-700/60 overflow-y-auto custom-scrollbar",style:{"animation-delay":"0s"}},y8={class:"flex flex-col gap-2"},_8={class:"flex justify-between items-center w-full gap-2"},w8={class:"font-bold"},k8={class:"flex flex-col gap-2"},$8={class:"flex flex-col gap-2"},z8={class:"flex justify-center items-center gap-1.5"},C8={class:"flex justify-center items-center gap-1.5"},A8={class:"flex flex-col gap-2 flex-1 min-h-[150px]"},S8={class:"list-item-anim flex-1 flex flex-col bg-zinc-50/50 dark:bg-zinc-900/30 overflow-hidden",style:{"animation-delay":"0.1s"}},I8={class:"px-5 py-4 flex flex-wrap justify-between items-center gap-3 border-b border-zinc-200/60 dark:border-zinc-700/60 bg-white/50 dark:bg-zinc-800/30"},V8={class:"flex flex-wrap items-center gap-2"},U8={class:"flex-1 overflow-y-auto custom-scrollbar p-5"},M8=de({__name:"LogAnalysis",props:{visible:{type:Boolean},serverId:{}},emits:["update:visible","submit"],setup(a,{emit:s}){const r=Ye(),d=a,i=s,c=qe({coreVersion:"",envType:"mods",modsList:"",pluginsList:"",logContent:"",result:"> ✨ 等待日志分析开始······",selectedModel:"Qwen/Qwen3-14B"}),f=y([]),n=qe({max:0,today:0,extra:0,lastTime:0}),v=y(!1),I=y(!1),u=y(!1);async function R(){const B=await f8(localStorage.getItem("msl-user-token"));if(B.code===200)n.max=B.data.max_per_day,n.extra=B.data.extra_tokens,n.lastTime=B.data.last_use_time,n.today=B.data.today_usage;else{M.error("MSL账号未登录或已失效,请重新登录!"),Ie("/frp/create");return}}async function b(){try{I.value=!0,await R();try{const C=await b8(localStorage.getItem("msl-user-token")||"");C.code===200&&(f.value=C.data,!c.selectedModel&&f.value.length>0&&(c.selectedModel=f.value[0].name))}catch(C){M.error("获取模型列表失败"+C.message)}const B=await va(d.serverId);c.coreVersion=B.core;try{const C=await Xo(d.serverId,"mods",!1);c.modsList=(C.jarFiles||[]).join(` +`),c.envType="mods"}catch{c.modsList=""}try{const C=await Xo(d.serverId,"plugins",!1);c.pluginsList=(C.jarFiles||[]).join(` +`),c.modsList==""&&(c.envType="plugins")}catch{c.pluginsList=""}try{c.logContent=await Uo(d.serverId,"logs/latest.log")}catch{}}catch(B){M.error(B.message)}I.value=!1}_e(()=>d.visible,B=>{r.name==="InstanceConsole"&&(v.value=B,B&&b())});const A=()=>{i("update:visible",!1)};async function p(){if(c.logContent){if(!c.selectedModel){M.warning("请先选择分析模型");return}u.value=!0,c.result="> ⌛️ 分析日志中··· 请稍等";try{const B=await x8(localStorage.getItem("msl-user-token"),c.modsList,c.pluginsList,c.coreVersion,c.logContent,c.selectedModel);c.result=B.data.content}catch(B){c.result=`> ❌ 分析出现错误: ${B.message}`}u.value=!1,await R()}}const k=Xa(),g=y(k.value?"dark":"light");return _e(k,()=>{g.value=k.value?"dark":"light"}),(B,C)=>{const T=h("t-tag"),U=h("t-option"),D=h("t-select"),N=h("t-input"),P=h("t-radio-button"),j=h("t-radio-group"),O=h("t-textarea"),$=h("t-button"),V=h("t-loading"),_=h("t-dialog");return l(),W(_,{visible:v.value,"onUpdate:visible":C[6]||(C[6]=z=>v.value=z),width:"90%",top:"3vh",footer:!1,"close-on-overlay-click":!1,class:"log-analysis-dialog",onClose:A,attach:"body"},{header:o(()=>[...C[7]||(C[7]=[e("div",{class:"flex items-center gap-2 font-bold text-lg text-[var(--td-text-color-primary)]"}," AI 错误日志分析 ",-1)])]),default:o(()=>[t(V,{loading:I.value},{default:o(()=>[e("div",g8,[e("div",h8,[e("div",y8,[C[8]||(C[8]=e("div",{class:"text-[11px] font-bold text-[var(--td-text-color-secondary)] uppercase tracking-wider"},"选择分析模型",-1)),t(D,{modelValue:c.selectedModel,"onUpdate:modelValue":C[0]||(C[0]=z=>c.selectedModel=z),placeholder:"请选择 AI 模型",filterable:"",class:"!w-full"},{default:o(()=>[(l(!0),x(re,null,xe(f.value,z=>(l(),W(U,{key:z.name,value:z.name,label:z.name},{default:o(()=>[e("div",_8,[e("span",w8,S(z.name),1),t(T,{size:"small",variant:"light",class:"!rounded"},{default:o(()=>[m("倍率: "+S(z.rate)+"x",1)]),_:2},1024)])]),_:2},1032,["value","label"]))),128))]),_:1},8,["modelValue"])]),e("div",k8,[C[9]||(C[9]=e("div",{class:"text-[11px] font-bold text-[var(--td-text-color-secondary)] uppercase tracking-wider"},"服务端核心 / 版本",-1)),t(N,{modelValue:c.coreVersion,"onUpdate:modelValue":C[1]||(C[1]=z=>c.coreVersion=z),readonly:"",placeholder:"例如: Arclight 1.21.1"},{"prefix-icon":o(()=>[t(w(lo),{class:"text-zinc-400"})]),_:1},8,["modelValue"])]),e("div",$8,[C[12]||(C[12]=e("div",{class:"text-[11px] font-bold text-[var(--td-text-color-secondary)] uppercase tracking-wider"},"环境列表",-1)),t(j,{modelValue:c.envType,"onUpdate:modelValue":C[2]||(C[2]=z=>c.envType=z),variant:"default-filled",class:"flex w-full"},{default:o(()=>[t(P,{value:"mods",class:"flex-1 !text-center"},{default:o(()=>[e("div",z8,[t(w(lo),{size:"14px"}),C[10]||(C[10]=m(" 模组 (Mods)",-1))])]),_:1}),t(P,{value:"plugins",class:"flex-1 !text-center"},{default:o(()=>[e("div",C8,[t(w(Ko),{size:"14px"}),C[11]||(C[11]=m(" 插件 (Plugins)",-1))])]),_:1})]),_:1},8,["modelValue"]),Le(t(O,{modelValue:c.modsList,"onUpdate:modelValue":C[3]||(C[3]=z=>c.modsList=z),readonly:"",autosize:{minRows:4,maxRows:6},placeholder:"暂无模组数据...",class:"mt-1 !bg-zinc-50 dark:!bg-zinc-900/30 !text-zinc-500 font-mono text-xs"},null,8,["modelValue"]),[[Te,c.envType==="mods"]]),Le(t(O,{modelValue:c.pluginsList,"onUpdate:modelValue":C[4]||(C[4]=z=>c.pluginsList=z),readonly:"",autosize:{minRows:4,maxRows:6},placeholder:"暂无插件数据...",class:"mt-1 !bg-zinc-50 dark:!bg-zinc-900/30 !text-zinc-500 font-mono text-xs"},null,8,["modelValue"]),[[Te,c.envType==="plugins"]])]),e("div",A8,[C[13]||(C[13]=e("div",{class:"text-[11px] font-bold text-[var(--td-text-color-secondary)] uppercase tracking-wider"},"错误日志内容",-1)),t(O,{modelValue:c.logContent,"onUpdate:modelValue":C[5]||(C[5]=z=>c.logContent=z),placeholder:"没找到有效日志,您可以手动粘贴日志......",class:"flex-1 [&_textarea]:!h-full [&_textarea]:!resize-none font-mono text-xs"},null,8,["modelValue"])]),t($,{loading:u.value,block:"",theme:"primary",size:"large",class:"!rounded-xl !h-12 !font-bold shadow-sm shrink-0 mt-2",onClick:p},{icon:o(()=>[t(w(Al))]),default:o(()=>[C[14]||(C[14]=m(" 开始 AI 诊断 ",-1))]),_:1},8,["loading"])]),e("div",S8,[e("div",I8,[C[15]||(C[15]=e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)]"},"AI 分析报告",-1)),e("div",V8,[t(T,{theme:"default",variant:"light",class:"!rounded font-bold"},{icon:o(()=>[t(w(Sl))]),default:o(()=>[m(" 今日: "+S(n.today)+" / "+S(n.max),1)]),_:1}),t(T,{theme:"primary",variant:"light",class:"!rounded font-bold"},{icon:o(()=>[t(w(Ut))]),default:o(()=>[m(" 额外: "+S(n.extra),1)]),_:1}),t(T,{theme:"warning",variant:"light",class:"!rounded font-bold"},{icon:o(()=>[t(w(pt))]),default:o(()=>[m(" 上次: "+S(w(Ms)(n.lastTime)),1)]),_:1})])]),e("div",U8,[t(w(Qa),{"editor-id":"report-preview","model-value":c.result,theme:g.value,class:"md-preview-wrapper !bg-transparent"},null,8,["model-value","theme"])])])])]),_:1},8,["loading"])]),_:1},8,["visible"])}}}),L8=me(M8,[["__scopeId","data-v-fb7f5681"]]),B8={class:"flex flex-col h-[65vh] min-h-[500px]"},T8={class:"flex flex-col gap-4 mb-6 shrink-0"},R8={class:"flex justify-between items-center"},j8={class:"w-full overflow-x-auto hide-scrollbar pb-1"},P8={class:"flex justify-center items-center gap-1.5"},E8={class:"flex justify-center items-center gap-1.5"},D8={class:"flex justify-center items-center gap-1.5"},F8={class:"flex justify-center items-center gap-1.5"},O8={class:"flex justify-center items-center gap-1.5"},N8={class:"flex-1 overflow-y-auto custom-scrollbar pr-2 pb-2"},K8={key:0,class:"flex flex-col gap-3"},q8={class:"flex items-center gap-3"},H8=["src"],W8={class:"font-bold text-sm text-[var(--td-text-color-primary)]"},G8={class:"flex flex-wrap items-center gap-1.5"},J8={key:1,class:"py-16 flex flex-col items-center justify-center text-[var(--td-text-color-secondary)]"},X8={class:"text-sm font-medium"},Q8={key:1,class:"flex flex-col gap-3"},Y8={class:"flex items-center gap-3 min-w-0"},Z8=["src"],e4={class:"flex flex-col min-w-0"},t4={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},o4={class:"text-[11px] text-zinc-500 font-mono truncate mt-0.5"},a4={class:"flex flex-wrap items-center gap-1.5 shrink-0"},s4={key:1,class:"py-16 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},l4={key:2,class:"flex flex-col gap-3"},r4={class:"flex flex-col sm:flex-row gap-2 mb-2"},n4={class:"flex items-center gap-3"},i4=["src"],d4={class:"flex flex-col gap-1"},c4={class:"font-bold text-sm text-[var(--td-text-color-primary)]"},u4={class:"text-[10px] font-extrabold bg-blue-50 text-blue-600 ring-1 ring-inset ring-blue-500/20 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30 px-1.5 py-0.5 rounded w-max"},m4={key:1,class:"py-12 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},p4={key:3,class:"flex flex-col gap-3"},v4={class:"mb-2"},f4={key:0,class:"flex flex-col gap-3"},b4={class:"flex flex-col sm:flex-row gap-2"},x4={class:"flex items-start sm:items-center gap-3 min-w-0"},g4=["src"],h4={class:"flex flex-col min-w-0 gap-0.5"},y4={class:"font-bold text-sm text-red-600 dark:text-red-400 truncate"},_4={class:"text-[11px] text-[var(--td-text-color-secondary)] mt-0.5 break-all line-clamp-2"},w4={key:1,class:"py-12 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},k4={key:1,class:"flex flex-col gap-3"},$4={class:"flex flex-col sm:flex-row gap-2"},z4={class:"flex flex-col min-w-0 gap-0.5"},C4={class:"font-mono font-bold text-sm text-red-600 dark:text-red-400 truncate"},A4={class:"text-[11px] text-[var(--td-text-color-secondary)] break-all line-clamp-2"},S4={key:1,class:"py-12 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},I4={key:4,class:"flex flex-col gap-3"},V4={class:"flex flex-col sm:flex-row gap-2 mb-2"},U4={class:"flex items-center gap-3 min-w-0"},M4=["src"],L4={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},B4={key:1,class:"py-12 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},T4=de({__name:"PlayerManagerDialog",props:{visible:{type:Boolean},serverId:{},isRunning:{type:Boolean}},emits:["update:visible"],setup(a,{emit:s}){const r=Ye(),d=a,i=s,c=po(),f=y("online"),n=y("player"),v=y(!1),I=y("command"),u=y([]),R=y([]),b=y([]),A=y([]),p=y([]),k=y([]),g=y(""),B=y(""),C=y(""),T=y(""),U=y("");_e(()=>d.isRunning,q=>{q?I.value="command":I.value="api"},{immediate:!0}),_e([()=>d.visible,f,n],async([q])=>{r.name!=="InstanceConsole"||!q||D()});const D=async()=>{v.value=!0;try{f.value==="online"&&d.isRunning?u.value=await Cs(d.serverId):f.value==="history"?R.value=await $i(d.serverId):f.value==="whitelist"?b.value=await mi(d.serverId):f.value==="ops"?A.value=await fi(d.serverId):f.value==="banned"&&(n.value==="player"?p.value=await gi(d.serverId):k.value=await _i(d.serverId))}catch(q){M.error(`获取数据失败: ${q.message}`)}finally{v.value=!1}},N=async(q,H,J)=>{try{I.value==="command"&&d.isRunning?(await c.sendCommand(H),M.success("已发送指令"),setTimeout(()=>D(),1e3)):(await q(),M.success(J),D())}catch(ae){M.error(`操作失败: ${ae.message}`)}},P=async(q,H)=>{if(!d.isRunning)return M.warning("实例未运行");try{await c.sendCommand(q),M.success(H),setTimeout(()=>D(),1500)}catch(J){M.error(`执行失败: ${J.message}`)}},j=async(q=B.value)=>{if(!q)return M.warning("请输入玩家ID");await N(()=>bi(d.serverId,q),`op ${q}`,"添加管理员成功"),q===B.value&&(B.value="")},O=async q=>{await N(()=>xi(d.serverId,q),`deop ${q}`,"移除管理员成功")},$=async(q=g.value)=>{if(!q)return M.warning("请输入玩家ID");await N(()=>pi(d.serverId,q),`whitelist add ${q}`,"添加白名单成功"),q===g.value&&(g.value="")},V=async q=>{await N(()=>vi(d.serverId,q),`whitelist remove ${q}`,"移除白名单成功")},_=async(q=C.value)=>{if(!q)return M.warning("请输入玩家ID");const H=T.value?` ${T.value}`:"";await N(()=>hi(d.serverId,q,T.value),`ban ${q}${H}`,"封禁玩家成功"),q===C.value&&(C.value="",T.value="")},z=async q=>{await N(()=>yi(d.serverId,q),`pardon ${q}`,"解封玩家成功")},E=async()=>{if(!U.value)return M.warning("请输入IP地址");const q=T.value?` ${T.value}`:"";await N(()=>wi(d.serverId,U.value,T.value),`ban-ip ${U.value}${q}`,"封禁IP成功"),U.value="",T.value=""},F=async q=>{await N(()=>ki(d.serverId,q),`pardon-ip ${q}`,"解封IP成功")},X=()=>i("update:visible",!1);return(q,H)=>{const J=h("t-radio-button"),ae=h("t-radio-group"),le=h("t-tooltip"),fe=h("t-button"),be=h("t-input"),Se=h("t-popconfirm"),Ee=h("t-dialog");return l(),W(Ee,{attach:"body",visible:a.visible,header:"玩家管理",width:"min(800px, 95vw)",placement:"center",footer:!1,class:"player-manager-dialog",onClose:X},{default:o(()=>[e("div",B8,[e("div",T8,[e("div",R8,[t(le,{content:"指令模式直接与服务端交互,API模式直接修改配置文件",placement:"bottom"},{default:o(()=>[t(ae,{modelValue:I.value,"onUpdate:modelValue":H[0]||(H[0]=Y=>I.value=Y),variant:"default-filled",size:"small",disabled:!a.isRunning,class:"!bg-zinc-100 dark:!bg-zinc-800 border border-[var(--td-component-border)] !rounded-lg p-0.5"},{default:o(()=>[t(J,{value:"api"},{default:o(()=>[...H[15]||(H[15]=[m("API 模式",-1)])]),_:1}),t(J,{value:"command"},{default:o(()=>[...H[16]||(H[16]=[m("指令优先",-1)])]),_:1})]),_:1},8,["modelValue","disabled"])]),_:1}),t(fe,{variant:"text",theme:"primary",size:"small",loading:v.value,class:"!rounded-md hover:!bg-[var(--color-primary)]/10",onClick:D},{icon:o(()=>[t(w(Pe))]),default:o(()=>[H[17]||(H[17]=m(" 刷新数据 ",-1))]),_:1},8,["loading"])]),e("div",j8,[t(ae,{modelValue:f.value,"onUpdate:modelValue":H[1]||(H[1]=Y=>f.value=Y),variant:"default-filled",class:"flex w-max min-w-full !bg-zinc-100 dark:!bg-zinc-800 border border-[var(--td-component-border)] !rounded-xl p-1"},{default:o(()=>[t(J,{value:"online",class:"flex-1 !text-center"},{default:o(()=>[e("div",P8,[t(w(ds),{size:"14px"}),H[18]||(H[18]=m(" 在线",-1))])]),_:1}),t(J,{value:"history",class:"flex-1 !text-center"},{default:o(()=>[e("div",E8,[t(w(pt),{size:"14px"}),H[19]||(H[19]=m(" 历史",-1))])]),_:1}),t(J,{value:"ops",class:"flex-1 !text-center"},{default:o(()=>[e("div",D8,[t(w(as),{size:"14px"}),H[20]||(H[20]=m(" 管理员",-1))])]),_:1}),t(J,{value:"banned",class:"flex-1 !text-center"},{default:o(()=>[e("div",F8,[t(w(Ao),{size:"14px"}),H[21]||(H[21]=m(" 黑名单",-1))])]),_:1}),t(J,{value:"whitelist",class:"flex-1 !text-center"},{default:o(()=>[e("div",O8,[t(w(ra),{size:"14px"}),H[22]||(H[22]=m(" 白名单",-1))])]),_:1})]),_:1},8,["modelValue"])])]),e("div",N8,[f.value==="online"?(l(),x("div",K8,[u.value.length>0?(l(!0),x(re,{key:0},xe(u.value,Y=>(l(),x("div",{key:Y,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 hover:border-[var(--color-primary)]/30 transition-colors shadow-sm"},[e("div",q8,[e("img",{src:`https://minotar.net/helm/${Y}/32.png`,class:"w-9 h-9 rounded shadow-sm [image-rendering:pixelated]"},null,8,H8),e("span",W8,S(Y),1)]),e("div",G8,[t(fe,{size:"small",variant:"outline",theme:"default",class:"!rounded-lg !border-zinc-200 dark:!border-zinc-700 !text-zinc-600 dark:!text-zinc-300 hover:!text-[var(--color-primary)] hover:!border-[var(--color-primary)]/50",onClick:se=>j(Y)},{default:o(()=>[...H[23]||(H[23]=[m("设为 OP",-1)])]),_:1},8,["onClick"]),t(fe,{size:"small",variant:"text",theme:"warning",class:"!rounded-lg hover:!bg-amber-500/10",onClick:se=>O(Y)},{default:o(()=>[...H[24]||(H[24]=[m("撤销 OP",-1)])]),_:1},8,["onClick"]),t(fe,{size:"small",variant:"text",theme:"success",class:"!rounded-lg hover:!bg-emerald-500/10",onClick:se=>$(Y)},{default:o(()=>[...H[25]||(H[25]=[m("加白",-1)])]),_:1},8,["onClick"]),t(fe,{size:"small",variant:"text",theme:"danger",class:"!rounded-lg hover:!bg-red-500/10",onClick:se=>P(`kick ${Y} 被管理员踢出`,`已踢出 ${Y}`)},{default:o(()=>[...H[26]||(H[26]=[m("踢出",-1)])]),_:1},8,["onClick"]),t(fe,{size:"small",variant:"text",theme:"danger",class:"!rounded-lg hover:!bg-red-500/10",onClick:se=>_(Y)},{default:o(()=>[...H[27]||(H[27]=[m("封禁",-1)])]),_:1},8,["onClick"])])]))),128)):(l(),x("div",J8,[t(w(Il),{size:"40px",class:"mb-3 opacity-60"}),e("span",X8,S(a.isRunning?"当前没有玩家在线":"服务器未运行"),1)]))])):K("",!0),f.value==="history"?(l(),x("div",Q8,[R.value.length>0?(l(!0),x(re,{key:0},xe(R.value,Y=>(l(),x("div",{key:Y.uuid,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 hover:border-[var(--color-primary)]/30 transition-colors shadow-sm"},[e("div",Y8,[e("img",{src:`https://minotar.net/helm/${Y.name}/32.png`,class:"w-9 h-9 rounded shadow-sm [image-rendering:pixelated] shrink-0"},null,8,Z8),e("div",e4,[e("span",t4,S(Y.name),1),e("span",o4,"UUID: "+S(Y.uuid.split("-")[0])+"...",1)])]),e("div",a4,[t(fe,{size:"small",variant:"outline",theme:"default",class:"!rounded-lg !border-zinc-200 dark:!border-zinc-700 !text-zinc-600 dark:!text-zinc-300 hover:!text-[var(--color-primary)] hover:!border-[var(--color-primary)]/50",onClick:se=>j(Y.name)},{default:o(()=>[...H[28]||(H[28]=[m("设为 OP",-1)])]),_:1},8,["onClick"]),t(fe,{size:"small",variant:"text",theme:"success",class:"!rounded-lg hover:!bg-emerald-500/10",onClick:se=>$(Y.name)},{default:o(()=>[...H[29]||(H[29]=[m("加白名单",-1)])]),_:1},8,["onClick"]),t(fe,{size:"small",variant:"text",theme:"danger",class:"!rounded-lg hover:!bg-red-500/10",onClick:se=>_(Y.name)},{default:o(()=>[...H[30]||(H[30]=[m("封禁",-1)])]),_:1},8,["onClick"])])]))),128)):(l(),x("div",s4,"无历史登录记录"))])):K("",!0),f.value==="ops"?(l(),x("div",l4,[e("div",r4,[t(be,{modelValue:B.value,"onUpdate:modelValue":H[2]||(H[2]=Y=>B.value=Y),placeholder:"输入玩家游戏ID",onEnter:H[3]||(H[3]=Y=>j()),clearable:"",class:"!flex-1"},null,8,["modelValue"]),t(fe,{theme:"primary",onClick:H[4]||(H[4]=Y=>j()),class:"!rounded-lg shadow-sm shrink-0"},{icon:o(()=>[t(w(at))]),default:o(()=>[H[31]||(H[31]=m(" 添加管理员",-1))]),_:1})]),A.value.length>0?(l(!0),x(re,{key:0},xe(A.value,Y=>(l(),x("div",{key:Y.uuid,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 shadow-sm"},[e("div",n4,[e("img",{src:`https://minotar.net/helm/${Y.name}/32.png`,class:"w-9 h-9 rounded shadow-sm [image-rendering:pixelated]"},null,8,i4),e("div",d4,[e("span",c4,S(Y.name),1),e("span",u4,"LV."+S(Y.level),1)])]),t(Se,{content:"确定要撤销该管理员吗?",theme:"danger",onConfirm:se=>O(Y.name)},{default:o(()=>[t(fe,{size:"small",variant:"outline",theme:"danger",class:"!rounded-lg !border-red-500/30 hover:!bg-red-500/10 self-start sm:self-auto"},{icon:o(()=>[t(w(ct))]),default:o(()=>[H[32]||(H[32]=m(" 移除",-1))]),_:1})]),_:1},8,["onConfirm"])]))),128)):(l(),x("div",m4,"暂无管理员记录"))])):K("",!0),f.value==="banned"?(l(),x("div",p4,[e("div",v4,[t(ae,{modelValue:n.value,"onUpdate:modelValue":H[5]||(H[5]=Y=>n.value=Y),variant:"default-filled",size:"small",class:"!bg-zinc-100 dark:!bg-zinc-800 border border-[var(--td-component-border)] !rounded-lg p-0.5"},{default:o(()=>[t(J,{value:"player"},{default:o(()=>[...H[33]||(H[33]=[m("玩家封禁",-1)])]),_:1}),t(J,{value:"ip"},{default:o(()=>[...H[34]||(H[34]=[m("IP 封禁",-1)])]),_:1})]),_:1},8,["modelValue"])]),n.value==="player"?(l(),x("div",f4,[e("div",b4,[t(be,{modelValue:C.value,"onUpdate:modelValue":H[6]||(H[6]=Y=>C.value=Y),placeholder:"输入玩家ID",clearable:"",class:"!flex-1"},null,8,["modelValue"]),t(be,{modelValue:T.value,"onUpdate:modelValue":H[7]||(H[7]=Y=>T.value=Y),placeholder:"封禁理由(可选)",clearable:"",class:"!flex-[1.5]"},null,8,["modelValue"]),t(fe,{theme:"danger",onClick:H[8]||(H[8]=Y=>_()),class:"!rounded-lg shadow-sm shrink-0"},{icon:o(()=>[t(w(at))]),default:o(()=>[H[35]||(H[35]=m(" 封禁",-1))]),_:1})]),p.value.length>0?(l(!0),x(re,{key:0},xe(p.value,Y=>(l(),x("div",{key:Y.uuid,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-red-50/50 dark:bg-red-950/20 rounded-xl border border-red-200/60 dark:border-red-900/40 shadow-sm"},[e("div",x4,[e("img",{src:`https://minotar.net/helm/${Y.name}/32.png`,class:"w-9 h-9 rounded shadow-sm [image-rendering:pixelated] shrink-0"},null,8,g4),e("div",h4,[e("span",y4,S(Y.name),1),e("span",_4,"理由: "+S(Y.reason),1)])]),t(Se,{content:"确定要解封吗?",theme:"warning",onConfirm:se=>z(Y.name)},{default:o(()=>[t(fe,{size:"small",variant:"outline",theme:"primary",class:"!rounded-lg !border-[var(--color-primary)]/30 hover:!bg-[var(--color-primary)]/10 shrink-0 self-end sm:self-auto"},{default:o(()=>[...H[36]||(H[36]=[m("解封",-1)])]),_:1})]),_:1},8,["onConfirm"])]))),128)):(l(),x("div",w4,"暂无被封禁的玩家"))])):(l(),x("div",k4,[e("div",$4,[t(be,{modelValue:U.value,"onUpdate:modelValue":H[9]||(H[9]=Y=>U.value=Y),placeholder:"输入IP地址",clearable:"",class:"!flex-1"},null,8,["modelValue"]),t(be,{modelValue:T.value,"onUpdate:modelValue":H[10]||(H[10]=Y=>T.value=Y),placeholder:"封禁理由(可选)",clearable:"",class:"!flex-[1.5]"},null,8,["modelValue"]),t(fe,{theme:"danger",onClick:H[11]||(H[11]=Y=>E()),class:"!rounded-lg shadow-sm shrink-0"},{icon:o(()=>[t(w(at))]),default:o(()=>[H[37]||(H[37]=m(" 封禁IP",-1))]),_:1})]),k.value.length>0?(l(!0),x(re,{key:0},xe(k.value,Y=>(l(),x("div",{key:Y.ip,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-red-50/50 dark:bg-red-950/20 rounded-xl border border-red-200/60 dark:border-red-900/40 shadow-sm"},[e("div",z4,[e("span",C4,S(Y.ip),1),e("span",A4,"理由: "+S(Y.reason),1)]),t(Se,{content:"确定要解封该IP吗?",theme:"warning",onConfirm:se=>F(Y.ip)},{default:o(()=>[t(fe,{size:"small",variant:"outline",theme:"primary",class:"!rounded-lg !border-[var(--color-primary)]/30 hover:!bg-[var(--color-primary)]/10 shrink-0 self-end sm:self-auto"},{default:o(()=>[...H[38]||(H[38]=[m("解封",-1)])]),_:1})]),_:1},8,["onConfirm"])]))),128)):(l(),x("div",S4,"暂无被封禁的IP"))]))])):K("",!0),f.value==="whitelist"?(l(),x("div",I4,[e("div",V4,[t(be,{modelValue:g.value,"onUpdate:modelValue":H[12]||(H[12]=Y=>g.value=Y),placeholder:"输入玩家ID",onEnter:H[13]||(H[13]=Y=>$()),clearable:"",class:"!flex-1"},null,8,["modelValue"]),t(fe,{theme:"primary",onClick:H[14]||(H[14]=Y=>$()),class:"!rounded-lg shadow-sm shrink-0"},{icon:o(()=>[t(w(at))]),default:o(()=>[H[39]||(H[39]=m(" 添加白名单",-1))]),_:1})]),b.value.length>0?(l(!0),x(re,{key:0},xe(b.value,Y=>(l(),x("div",{key:Y.uuid,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 shadow-sm"},[e("div",U4,[e("img",{src:`https://minotar.net/helm/${Y.name}/32.png`,class:"w-9 h-9 rounded shadow-sm [image-rendering:pixelated] shrink-0"},null,8,M4),e("span",L4,S(Y.name),1)]),t(Se,{content:"移出白名单?",theme:"danger",onConfirm:se=>V(Y.name)},{default:o(()=>[t(fe,{size:"small",variant:"outline",theme:"danger",class:"!rounded-lg !border-red-500/30 hover:!bg-red-500/10 self-start sm:self-auto"},{icon:o(()=>[t(w(ct))]),default:o(()=>[H[40]||(H[40]=m(" 移除",-1))]),_:1})]),_:1},8,["onConfirm"])]))),128)):(l(),x("div",B4,"白名单为空"))])):K("",!0)])])]),_:1},8,["visible"])}}}),R4=me(T4,[["__scopeId","data-v-300a4e27"]]),j4={class:"design-card flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-xl border border-[var(--td-component-border)] shadow-sm p-5"},P4={class:"flex justify-between items-center mb-4 pb-4 border-b border-zinc-200/60 dark:border-zinc-700/60"},E4={class:"flex items-center gap-1.5 font-bold text-sm text-[var(--td-text-color-primary)] m-0"},D4={key:0,class:"text-xs font-medium text-[var(--td-text-color-secondary)]"},F4={class:"flex-1 min-h-[40px]"},O4={key:0,class:"flex flex-wrap gap-2"},N4={class:"flex items-center gap-1.5 px-2 py-1 bg-zinc-100 dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 hover:border-[var(--color-primary)]/50 hover:bg-[var(--color-primary)]/5 rounded-md cursor-pointer transition-colors text-xs font-bold text-zinc-700 dark:text-zinc-300 shadow-sm"},K4=["src"],q4={key:1,class:"py-4 text-center text-xs font-medium text-[var(--td-text-color-secondary)]"},H4={key:1,class:"py-4 text-center text-xs font-medium text-[var(--td-text-color-secondary)]"},W4=de({__name:"PlayerListCard",props:{serverId:{},status:{}},setup(a){const s=a,r=po(),d=y([]),i=y(!1);let c=null,f=null,n=null;const v=[{content:"设为管理员",value:"op"},{content:"取消管理员",value:"deop"},{content:"踢出服务器",value:"kick",theme:"warning"},{content:"封禁玩家",value:"ban",theme:"error"},{content:"加入白名单",value:"whitelist add"}],I=async()=>{if(s.status!==2){d.value=[];return}try{d.value=await Cs(s.serverId)}catch(A){console.error("拉取在线玩家失败:",A)}},u=()=>{c=r.onPlayerJoined?.(A=>{d.value.includes(A)||d.value.push(A)}),f=r.onPlayerLeft?.(A=>{d.value=d.value.filter(p=>p!==A)}),n=r.onPlayerListCleared?.(()=>{d.value=[]})},R=()=>{c?.(),f?.(),n?.()};_e(()=>s.status,A=>{A===2?I():d.value=[]}),_e(()=>s.serverId,()=>{I()}),ze(()=>{I(),u()}),He(()=>{R()});const b=async(A,p)=>{const k=A.value,B=`${k} ${p}${k==="kick"||k==="ban"?k==="kick"?" 您被控制台踢出了服务器":"您被控制台封禁了":""}`;try{switch(await r.sendCommand(B),k){case"kick":M.success(`已将 ${p} 踢出服务器`);break;case"ban":M.success(`已将 ${p} 封禁`);break;case"op":M.success(`已将 ${p} 设置为服务器管理员`);break;case"deop":M.success(`已取消 ${p} 为服务器管理员`);break;case"whitelist add":M.success(`已将 ${p} 添加到白名单`);break;default:M.success(`针对 ${p} 的指令已发送`);break}}catch(C){M.error(`执行失败: ${C.message}`)}};return(A,p)=>{const k=h("t-button"),g=h("t-dropdown");return l(),x("div",j4,[e("div",P4,[e("div",E4,[t(w(ra),{size:"16px",class:"text-[var(--td-text-color-secondary)]"}),p[2]||(p[2]=m(" 在线玩家 ",-1)),a.status===2?(l(),x("span",D4,"("+S(d.value.length)+")",1)):K("",!0)]),t(k,{size:"small",variant:"text",theme:"primary",class:"!rounded-md hover:!bg-[var(--color-primary)]/10 transition-colors",onClick:p[0]||(p[0]=B=>i.value=!0),disabled:a.status===0},{icon:o(()=>[t(w(Io))]),default:o(()=>[p[3]||(p[3]=m("管理 ",-1))]),_:1},8,["disabled"])]),e("div",F4,[a.status===2?(l(),x(re,{key:0},[d.value.length>0?(l(),x("div",O4,[(l(!0),x(re,null,xe(d.value,B=>(l(),W(g,{key:B,options:v,trigger:"click",placement:"bottom-left",onClick:C=>b(C,B)},{default:o(()=>[e("div",N4,[e("img",{src:`https://minotar.net/helm/${B}/16.png`,class:"w-3.5 h-3.5 rounded-[2px] shadow-sm [image-rendering:pixelated]"},null,8,K4),m(" "+S(B),1)])]),_:2},1032,["options","onClick"]))),128))])):(l(),x("div",q4,"当前无人在线"))],64)):(l(),x("div",H4,"服务器未运行"))]),t(R4,{visible:i.value,"onUpdate:visible":p[1]||(p[1]=B=>i.value=B),"server-id":a.serverId,"is-running":a.status===2},null,8,["visible","server-id","is-running"])])}}}),G4=me(W4,[["__scopeId","data-v-8027f86d"]]),J4=["src","onLoad"],X4={class:"absolute bottom-4 right-4 p-4 flex flex-col font-mono text-sm bg-[var(--td-bg-color-container)]/80 backdrop-blur-md rounded-xl border border-[var(--td-component-border)] shadow-md z-20 pointer-events-none"},Q4={class:"flex justify-between items-center gap-6 mb-2"},Y4={class:"font-bold text-[var(--color-primary)]"},Z4={class:"flex justify-between items-center gap-6 mb-2"},e$={class:"font-bold text-[var(--color-primary)]"},t$={class:"flex justify-between items-center gap-6 mb-3"},o$={class:"font-bold text-[var(--color-primary)]"},a$=de({__name:"MapRender",props:{visible:{type:Boolean},serverId:{}},emits:["update:visible"],setup(a,{emit:s}){const r=a,d=s,i=Be(),{baseUrl:c,token:f}=i,n=y(1),v=y(0),I=y(0);let u=!1,R=0,b=0;const A=y(0),p=y(0),k=y([]),g=te(()=>{const $=-v.value/n.value,V=-I.value/n.value;return{blockX:Math.round($),blockZ:Math.round(V),regionX:Math.round($/512),regionZ:Math.round(V/512)}}),B=($,V)=>{v.value=-$*n.value,I.value=-V*n.value,U()},C=()=>{const $=Number(A.value)||0,V=Number(p.value)||0;B($,V)},T=async()=>{try{const $=await zi(r.serverId);A.value=$.x,p.value=$.z,B($.x,$.z)}catch{A.value=0,p.value=0,B(0,0)}},U=()=>{const $=g.value.regionX,V=g.value.regionZ,_=[];for(let z=-1;z<=1;z++)for(let E=-1;E<=1;E++){const F=$+z,X=V+E,q=`${F}_${X}`;if(!k.value.find(H=>H.key===q)){const H=z*z+E*E;_.push({x:F,z:X,key:q,distance:H})}}_.sort((z,E)=>z.distance-E.distance),_.forEach(z=>{const F=`${c||""}/api/instance/map/${r.serverId}/${z.x}/${z.z}?x-user-token=${f}`;k.value.push({x:z.x,z:z.z,key:z.key,src:F,loaded:!1})})};_e(()=>r.visible,$=>{$?(n.value=1,k.value=[],T()):k.value=[]});const D=$=>{u=!0,R=$.clientX-v.value,b=$.clientY-I.value},N=$=>{u&&(v.value=$.clientX-R,I.value=$.clientY-b,U())},P=()=>{u=!1},j=$=>{$.preventDefault();const V=$.deltaY>0?-.1:.1,_=Math.min(Math.max(.2,n.value+V),5),z=_/n.value;v.value=v.value*z,I.value=I.value*z,n.value=_,U()},O=()=>d("update:visible",!1);return($,V)=>{const _=h("t-input"),z=h("t-button"),E=h("t-dialog");return l(),W(E,{attach:"body",visible:a.visible,header:"世界地图查看器",width:"min(1000px, 95vw)",placement:"center",footer:!1,onClose:O},{default:o(()=>[e("div",{class:"w-full h-[70vh] min-h-[500px] relative overflow-hidden bg-zinc-50 dark:bg-zinc-950 rounded-b-xl select-none cursor-grab active:cursor-grabbing custom-grid-bg",onWheel:j,onMousedown:D,onMousemove:N,onMouseup:P,onMouseleave:P},[e("div",{class:"absolute top-1/2 left-1/2 origin-center transition-transform duration-[50ms] ease-linear",style:Oe({transform:`translate(${v.value}px, ${I.value}px) scale(${n.value})`})},[(l(!0),x(re,null,xe(k.value,F=>(l(),x("div",{key:F.key,class:"absolute w-[512px] h-[512px] -ml-[256px] -mt-[256px] flex items-center justify-center bg-zinc-100/50 dark:bg-zinc-900/50",style:Oe({left:`${F.x*512}px`,top:`${F.z*512}px`})},[e("img",{src:F.src,class:ue(["w-full h-full pointer-events-none opacity-0 transition-opacity duration-500 ease-out [image-rendering:pixelated]",{"opacity-100":F.loaded}]),onLoad:X=>F.loaded=!0,alt:"tile",draggable:"false"},null,42,J4)],4))),128))],4),V[9]||(V[9]=e("div",{class:"absolute top-1/2 left-1/2 w-3.5 h-3.5 -mt-[7px] -ml-[7px] pointer-events-none z-10 before:absolute before:left-[6px] before:top-0 before:w-[2px] before:h-[14px] before:bg-red-500/80 before:shadow-[0_0_2px_rgba(0,0,0,0.5)] after:absolute after:left-0 after:top-[6px] after:w-[14px] after:h-[2px] after:bg-red-500/80 after:shadow-[0_0_2px_rgba(0,0,0,0.5)]"},null,-1)),e("div",{class:"absolute top-4 left-4 p-3 flex items-center gap-2 bg-[var(--td-bg-color-container)]/80 backdrop-blur-md rounded-xl border border-[var(--td-component-border)] shadow-md z-20 cursor-default",onMousedown:V[2]||(V[2]=dt(()=>{},["stop"])),onWheel:V[3]||(V[3]=dt(()=>{},["stop"]))},[t(_,{modelValue:A.value,"onUpdate:modelValue":V[0]||(V[0]=F=>A.value=F),type:"number",placeholder:"X 坐标",class:"!w-[90px]",onEnter:C},null,8,["modelValue"]),t(_,{modelValue:p.value,"onUpdate:modelValue":V[1]||(V[1]=F=>p.value=F),type:"number",placeholder:"Z 坐标",class:"!w-[90px]",onEnter:C},null,8,["modelValue"]),t(z,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:C},{icon:o(()=>[t(w(Vl))]),default:o(()=>[V[4]||(V[4]=m(" 定位 ",-1))]),_:1}),t(z,{variant:"outline",class:"!rounded-lg !bg-zinc-100 dark:!bg-zinc-800 !border-zinc-200 dark:!border-zinc-700 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 !text-zinc-600 dark:!text-zinc-300 transition-colors",onClick:T,title:"回到世界出生点"},{icon:o(()=>[t(w(cs))]),_:1})],32),e("div",X4,[e("div",Q4,[V[5]||(V[5]=e("span",{class:"text-xs text-[var(--td-text-color-secondary)]"},"方块坐标 (Block):",-1)),e("span",Y4,"X: "+S(g.value.blockX)+", Z: "+S(g.value.blockZ),1)]),e("div",Z4,[V[6]||(V[6]=e("span",{class:"text-xs text-[var(--td-text-color-secondary)]"},"区块区号 (Region):",-1)),e("span",e$,"r."+S(g.value.regionX)+"."+S(g.value.regionZ),1)]),e("div",t$,[V[7]||(V[7]=e("span",{class:"text-xs text-[var(--td-text-color-secondary)]"},"当前缩放:",-1)),e("span",o$,S(Math.round(n.value*100))+"%",1)]),V[8]||(V[8]=e("div",{class:"pt-2.5 border-t border-dashed border-zinc-200/80 dark:border-zinc-700/80 text-right text-[11px] text-[var(--td-text-color-secondary)] font-sans tracking-widest"}," 🖱️ 滚轮缩放 | 按住拖拽 ",-1))])],32)]),_:1},8,["visible"])}}}),s$=me(a$,[["__scopeId","data-v-427a8642"]]),l$={class:"flex flex-col gap-5 h-full"},r$={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-xl border border-[var(--td-component-border)] shadow-sm p-5"},n$={class:"flex justify-between items-center mb-5"},i$={class:"relative flex h-2.5 w-2.5"},d$={class:"flex flex-col gap-2.5"},c$={key:0,class:"flex gap-2 w-full"},u$={class:"flex gap-2 w-full mt-1.5"},m$={class:"design-card flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-xl border border-[var(--td-component-border)] shadow-sm p-5"},p$={class:"flex justify-between items-center mb-4 pb-4 border-b border-zinc-200/60 dark:border-zinc-700/60"},v$={class:"flex-1 min-h-0"},f$={key:0,class:"flex flex-col gap-1.5"},b$={class:"flex justify-between items-center py-1"},x$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},g$={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate max-w-[150px]"},h$={class:"flex justify-between items-center py-1"},y$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},_$={class:"font-mono text-sm font-bold text-[var(--td-text-color-primary)]"},w$={class:"flex justify-between items-center py-1"},k$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},$$={class:"font-mono text-sm font-bold text-[var(--color-primary)]"},z$={class:"flex justify-between items-center py-1"},C$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},A$={class:"flex justify-between items-center py-1"},S$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},I$={class:"flex justify-between items-center py-1"},V$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},U$={class:"text-xs font-bold text-[var(--td-text-color-primary)]"},M$={class:"flex justify-between items-center py-1"},L$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},B$={key:1,class:"flex justify-between items-center py-1"},T$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},R$={class:"flex justify-between items-center py-1 mt-1"},j$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},P$={class:"font-mono text-sm font-bold text-[var(--td-text-color-primary)]"},E$={key:1,class:"flex flex-col"},D$={key:1,class:"flex-1 flex items-center justify-center text-[var(--td-text-color-secondary)] text-sm font-medium"},F$=de({__name:"ServerControlPanel",props:{serverId:{},status:{},loading:{type:Boolean},serverInfo:{}},emits:["start","stop","clear-log","refresh-info","backup","force-exit","restart"],setup(a,{emit:s}){const r=a,d=s,i=te(()=>{switch(r.status){case 1:return{text:"Starting",label:"启动中",theme:"primary",pulse:!0};case 2:return{text:"Running",label:"运行中",theme:"success",pulse:!0};case 3:return{text:"Stopping",label:"停止中",theme:"warning",pulse:!0};case 4:return{text:"Restarting",label:"重启中",theme:"primary",pulse:!0};default:return{text:"Stopped",label:"已停止",theme:"default",pulse:!1}}}),c=y(!1),f=y(!1),n=y(null),v=y("info"),I=()=>{n.value?.open()},u=()=>{d("refresh-info")},R=y(0);let b=null;const A=k=>{if(!k)return 0;const g=k.match(/^(?:(\d+)\.)?(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?$/);return g?parseInt(g[1]||"0",10)*86400+parseInt(g[2])*3600+parseInt(g[3])*60+parseInt(g[4]):0},p=te(()=>{if(R.value<=0)return"00:00:00";const k=Math.floor(R.value/86400),g=new Date(R.value*1e3).toISOString().substr(11,8);return k>0?`${k}天 ${g}`:g});return _e(()=>r.serverInfo?.uptime,k=>k&&(R.value=A(k)),{immediate:!0}),_e(()=>r.status,k=>{k===2?b||(b=window.setInterval(()=>R.value++,1e3)):b&&(clearInterval(b),b=null)},{immediate:!0}),He(()=>{b&&clearInterval(b)}),(k,g)=>{const B=h("t-tag"),C=h("t-button"),T=h("t-popconfirm"),U=h("t-dropdown-item"),D=h("t-dropdown-menu"),N=h("t-dropdown"),P=h("t-radio-button"),j=h("t-radio-group");return l(),x("div",l$,[e("div",r$,[e("div",n$,[e("div",{class:ue(["flex items-center gap-2 font-bold text-sm",{"text-zinc-500":a.status===0,"text-[var(--color-primary)]":a.status===1||a.status===4,"text-[var(--color-success)]":a.status===2,"text-[var(--color-warning)]":a.status===3}])},[e("span",i$,[a.status===1||a.status===2||a.status===4?(l(),x("span",{key:0,class:ue(["animate-ping absolute inline-flex h-full w-full rounded-full opacity-75",a.status===2?"bg-[var(--color-success)]":"bg-[var(--color-primary)]"])},null,2)):K("",!0),e("span",{class:ue(["relative inline-flex rounded-full h-2.5 w-2.5",{"bg-zinc-400 dark:bg-zinc-600":a.status===0,"bg-[var(--color-primary)]":a.status===1||a.status===4,"bg-[var(--color-success)]":a.status===2,"bg-[var(--color-warning)]":a.status===3}])},null,2)]),m(" "+S(i.value.text),1)],2),t(B,{theme:i.value.theme,variant:"light",class:"!rounded !font-bold"},{default:o(()=>[m(S(i.value.label),1)]),_:1},8,["theme"])]),e("div",d$,[a.status===0?(l(),W(C,{key:0,theme:"primary",size:"large",block:"",loading:a.loading,class:"!rounded-lg !h-10 !font-bold shadow-sm",onClick:g[0]||(g[0]=O=>{k.$emit("clear-log"),k.$emit("start")})},{icon:o(()=>[t(w(_t))]),default:o(()=>[g[12]||(g[12]=m("启动实例 ",-1))]),_:1},8,["loading"])):(l(),x(re,{key:1},[a.status===2&&!a.loading?(l(),x("div",c$,[t(T,{content:"确定要停止该实例吗?",onConfirm:g[1]||(g[1]=O=>k.$emit("stop"))},{default:o(()=>[t(C,{theme:"danger",class:"flex-1 !rounded-lg !h-10 !font-bold shadow-sm"},{icon:o(()=>[t(w(uo))]),default:o(()=>[g[13]||(g[13]=m(" 停止 ",-1))]),_:1})]),_:1}),t(T,{content:"确定要重启该实例吗?",onConfirm:g[2]||(g[2]=O=>k.$emit("restart"))},{default:o(()=>[t(C,{theme:"warning",class:"!rounded-lg !h-10 !w-10 !p-0 shadow-sm shrink-0"},{icon:o(()=>[t(w(Pe))]),_:1})]),_:1})])):K("",!0),a.status===3||a.status===4||a.loading?(l(),W(T,{key:1,content:"确定要强制结束吗?可能会导致数据丢失!",onConfirm:g[3]||(g[3]=O=>k.$emit("force-exit"))},{default:o(()=>[t(C,{theme:a.loading?"primary":"danger",variant:"outline",block:"",loading:a.loading,class:ue(["!rounded-lg !h-10 !font-bold transition-all duration-300",a.loading?"!bg-[var(--color-primary)]/10 !border-[var(--color-primary)]/30":"!bg-red-500/10 !border-red-500/30 !text-red-500 hover:!bg-red-500/20"])},{icon:o(()=>[a.loading?K("",!0):(l(),W(w(Ao),{key:0}))]),default:o(()=>[m(" "+S(a.loading?"正在处理...":"强制结束"),1)]),_:1},8,["theme","loading","class"])]),_:1})):K("",!0)],64)),e("div",u$,[t(C,{variant:"outline",class:"flex-1 !rounded-lg !h-8 !bg-zinc-100 dark:!bg-zinc-800 !border-zinc-200 dark:!border-zinc-700 !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 transition-colors",onClick:g[4]||(g[4]=O=>w(Ie)(`/instance/files/${a.serverId}`))},{icon:o(()=>[t(w(Nt))]),default:o(()=>[g[14]||(g[14]=m("文件管理 ",-1))]),_:1}),t(C,{variant:"outline",class:"flex-1 !rounded-lg !h-8 !bg-zinc-100 dark:!bg-zinc-800 !border-zinc-200 dark:!border-zinc-700 !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 transition-colors",onClick:I},{icon:o(()=>[t(w(Io))]),default:o(()=>[g[15]||(g[15]=m("实例设置 ",-1))]),_:1})]),t(N,{trigger:"click","min-column-width":120,placement:"bottom"},{default:o(()=>[t(C,{block:"",class:"!rounded-lg !h-8 mt-0.5 !bg-[var(--color-primary)]/5 !border-[var(--color-primary)]/20 !text-[var(--color-primary)] hover:!bg-[var(--color-primary)]/10 transition-colors"},{icon:o(()=>[t(w(na))]),default:o(()=>[g[16]||(g[16]=m("更多功能 ",-1))]),_:1}),t(D,null,{default:o(()=>[t(U,{onClick:g[5]||(g[5]=O=>k.$emit("clear-log"))},{"prefix-icon":o(()=>[t(w(Pe))]),default:o(()=>[g[17]||(g[17]=m("清空日志 ",-1))]),_:1}),t(U,{disabled:a.status!==2||a.loading,onClick:g[6]||(g[6]=O=>k.$emit("backup"))},{"prefix-icon":o(()=>[t(w(bt))]),default:o(()=>[g[18]||(g[18]=m("立即备份 ",-1))]),_:1},8,["disabled"]),t(U,{onClick:g[7]||(g[7]=O=>f.value=!0)},{"prefix-icon":o(()=>[t(w(Ul))]),default:o(()=>[g[19]||(g[19]=m("世界渲染图 ",-1))]),_:1}),t(U,{onClick:g[8]||(g[8]=O=>c.value=!0)},{"prefix-icon":o(()=>[t(w(Ml))]),default:o(()=>[g[20]||(g[20]=m("日志分析 ",-1))]),_:1})]),_:1})]),_:1})])]),e("div",m$,[e("div",p$,[g[23]||(g[23]=e("h3",{class:"text-sm font-bold text-[var(--td-text-color-primary)] m-0"},"实例概览",-1)),t(j,{modelValue:v.value,"onUpdate:modelValue":g[9]||(g[9]=O=>v.value=O),variant:"default-filled",size:"small"},{default:o(()=>[t(P,{value:"info"},{default:o(()=>[t(w(Ll)),g[21]||(g[21]=m(" 详情",-1))]),_:1}),t(P,{value:"monitor"},{default:o(()=>[t(w(Bl)),g[22]||(g[22]=m(" 监控",-1))]),_:1})]),_:1},8,["modelValue"])]),e("div",v$,[v.value==="info"?(l(),x("div",f$,[e("div",b$,[e("div",x$,[t(w(Tl),{size:"14px"}),g[24]||(g[24]=m(" 实例名称",-1))]),e("div",g$,S(a.serverInfo?.name),1)]),a.serverInfo?.java!=="none"?(l(),x(re,{key:0},[e("div",h$,[e("div",y$,[t(w(Ho),{size:"14px"}),g[25]||(g[25]=m(" 内存限制",-1))]),e("div",_$,S(a.serverInfo?.maxM)+" MB",1)]),e("div",w$,[e("div",k$,[t(w(Rl),{size:"14px"}),g[26]||(g[26]=m(" 运行端口",-1))]),e("div",$$,S(a.serverInfo?.mcConfig?.serverPort),1)]),e("div",z$,[e("div",C$,[t(w(jl),{size:"14px"}),g[27]||(g[27]=m(" 游戏难度",-1))]),t(B,{theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[m(S(a.serverInfo?.mcConfig?.difficulty),1)]),_:1})]),e("div",A$,[e("div",S$,[t(w(Pl),{size:"14px"}),g[28]||(g[28]=m(" 游戏模式",-1))]),t(B,{variant:"light",size:"small",class:"!rounded"},{default:o(()=>[m(S(a.serverInfo?.mcConfig?.gamemode),1)]),_:1})]),e("div",I$,[e("div",V$,[t(w(Nt),{size:"14px"}),g[29]||(g[29]=m(" 游戏地图",-1))]),e("div",U$,S(a.serverInfo?.mcConfig?.levelName),1)]),e("div",M$,[e("div",L$,[t(w(El),{size:"14px"}),g[30]||(g[30]=m(" 正版验证",-1))]),t(B,{theme:a.serverInfo?.mcConfig?.onlineMode==="true"?"success":"warning",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[m(S(a.serverInfo?.mcConfig?.onlineMode==="true"?"开启":"关闭"),1)]),_:1},8,["theme"])])],64)):(l(),x("div",B$,[e("div",T$,[t(w(Ho),{size:"14px"}),g[31]||(g[31]=m(" 模式",-1))]),t(B,{theme:"warning",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...g[32]||(g[32]=[m("自定义模式",-1)])]),_:1})])),e("div",R$,[e("div",j$,[t(w(pt),{size:"14px"}),g[33]||(g[33]=m(" 运行时长",-1))]),e("div",P$,S(a.status===2?p.value:"--:--:--"),1)])])):v.value==="monitor"?(l(),x("div",E$,[a.serverInfo&&a.status!==0?(l(),W(v8,{key:0,"server-id":a.serverId,"is-running":a.status===2,"max-memory":a.serverInfo.java==="none"?0:a.serverInfo.maxM||4096},null,8,["server-id","is-running","max-memory"])):(l(),x("div",D$," 实例未运行 "))])):K("",!0)])]),a.serverInfo?.monitorPlayers?(l(),W(G4,{key:0,"server-id":a.serverId,status:a.status,class:"design-card"},null,8,["server-id","status"])):K("",!0),t(Z3,{ref_key:"settingsRef",ref:n,"server-id":a.serverId,onSuccess:u},null,8,["server-id"]),t(L8,{visible:c.value,"onUpdate:visible":g[10]||(g[10]=O=>c.value=O),"server-id":a.serverId},null,8,["visible","server-id"]),t(s$,{visible:f.value,"onUpdate:visible":g[11]||(g[11]=O=>f.value=O),"server-id":a.serverId},null,8,["visible","server-id"])])}}}),O$=me(F$,[["__scopeId","data-v-f8303160"]]),N$={class:"h-auto md:h-full flex flex-col md:flex-row gap-5 overflow-y-auto md:overflow-hidden pb-3 box-border relative text-[var(--td-text-color-primary)]"},K$={class:"list-item-anim flex-1 shrink-0 min-w-0 min-h-[450px] md:h-full flex flex-col relative z-10",style:{"animation-delay":"0s"}},q$={class:"list-item-anim w-full md:w-80 lg:w-[340px] shrink-0 h-auto md:h-full overflow-y-auto custom-scrollbar md:pr-1 flex flex-col hide-scrollbar-on-mobile relative z-10",style:{"animation-delay":"0.1s"}},H$={class:"leading-relaxed text-sm"},W$={class:"mb-3"},G$=de({__name:"index",setup(a){const s=Ye(),r=At(),d=po(),i=y(parseInt(s.params.serverId)||0),c=y(0),f=y(!1),n=y(null),v=y(null);async function I(){if(i.value)try{f.value=!0;const T=await va(i.value);await r.refreshInstanceList(),c.value=T.status,n.value=T,f.value=!1}catch(T){v.value?.writeln(`\x1B[1;31m[Error] 获取实例信息失败: ${T.message}\x1B[0m`),f.value=!1}}const u=async()=>{f.value=!0;try{v.value?.writeln("\x1B[1;32m[System] 正在发送启动指令...\x1B[0m"),await It(i.value,"start"),M.success("实例启动指令已发送"),f.value=!1}catch(T){v.value?.writeln(`\x1B[1;31m[Error] 启动失败: ${T.message}\x1B[0m`),f.value=!1,c.value=0}},R=async()=>{f.value=!0,c.value=3;try{v.value?.writeln("\x1B[1;32m[System] 正在发送停止指令...\x1B[0m"),await It(i.value,"stop"),M.warning("实例停止指令已发送"),f.value=!1,r.refreshInstanceList()}catch(T){v.value?.writeln(`\x1B[1;31m[Error] 停止失败: ${T.message}\x1B[0m`),f.value=!1}},b=async()=>{f.value=!0,c.value=3;try{v.value?.writeln("\x1B[1;32m[System] 正在发送强制退出指令...\x1B[0m"),await It(i.value,"forceExit"),M.warning("强制退出指令已发送"),f.value=!1}catch(T){v.value?.writeln(`\x1B[1;31m[Error] 强制退出失败: ${T.message}\x1B[0m`),f.value=!1}},A=async()=>{f.value=!0,c.value=4;try{v.value?.writeln("\x1B[1;32m[System] 正在发送重启指令...\x1B[0m"),await It(i.value,"restart"),M.warning("重启执行成功"),f.value=!1,c.value=2}catch(T){v.value?.writeln(`\x1B[1;31m[Error] 重启失败: ${T.message}\x1B[0m`),f.value=!1}},p=async()=>{try{v.value?.writeln("\x1B[1;32m[System] 正在发送备份任务...\x1B[0m"),await It(i.value,"backup"),M.success("备份任务启动中···"),f.value=!1}catch(T){v.value?.writeln(`\x1B[1;31m[Error] 备份任务启动失败: ${T.message}\x1B[0m`)}},k=()=>{v.value?.clear()},g=y(!1),B=async()=>{i.value&&(d.onEula(()=>{g.value=!0}),await d.connect(i.value))},C=async T=>{try{g.value=!1,await It(i.value,`agreeEula?${T}`),M.success(T?"已发送同意请求":"已发送请求")}catch(U){M.error(U.message||"发送失败")}};return _e(()=>s.params.serverId,async T=>{s.name==="InstanceConsole"&&T&&(i.value=parseInt(T),await I())}),ze(async()=>{i.value&&(await I(),await B())}),(T,U)=>{const D=h("t-link"),N=h("t-dialog");return l(),x("div",N$,[e("div",K$,[t(fw,{ref_key:"terminalRef",ref:v,"server-id":i.value,onUpdate:U[0]||(U[0]=P=>I())},null,8,["server-id"])]),e("div",q$,[t(O$,{"server-id":i.value,status:c.value,loading:f.value,"server-info":n.value,onStart:u,onStop:R,onBackup:p,onClearLog:k,onForceExit:b,onRestart:A},null,8,["server-id","status","loading","server-info"])]),t(N,{visible:g.value,"onUpdate:visible":U[1]||(U[1]=P=>g.value=P),header:"是否同意 EULA","confirm-btn":{content:"同意",theme:"primary",class:"!rounded-lg !font-bold"},"cancel-btn":{content:"不同意",theme:"default",class:"!rounded-lg !font-bold"},onConfirm:U[2]||(U[2]=P=>C(!0)),onCancel:U[3]||(U[3]=P=>C(!1))},{default:o(()=>[e("div",H$,[e("p",W$,[U[5]||(U[5]=m(" 开启 Minecraft 服务器需要您同意 ",-1)),U[6]||(U[6]=e("strong",null,"EULA",-1)),U[7]||(U[7]=m(" ! ",-1)),t(D,{theme:"primary",underline:"",href:"https://aka.ms/minecrafteula",target:"_blank",class:"font-mono"},{default:o(()=>[...U[4]||(U[4]=[m(" (https://aka.ms/minecrafteula) ",-1)])]),_:1})]),U[8]||(U[8]=e("p",{class:"mb-3"},[e("strong",{class:"text-red-500 dark:text-red-400"},"请您务必认真仔细阅读!")],-1)),U[9]||(U[9]=e("p",{class:"mb-3 text-zinc-700 dark:text-zinc-300"},[e("strong",null,"注意:"),m("不论您选择是或否,服务器都会在您操作后继续运行。")],-1)),U[10]||(U[10]=e("p",{class:"mb-3 text-amber-500 dark:text-amber-400 font-medium"},[m(" ⚠️ 如果您"),e("strong",null,"未同意 EULA"),m(",服务器可能会在运行时自动关闭! ")],-1)),U[11]||(U[11]=e("p",{class:"mt-4 pt-4 border-t border-dashed border-zinc-200 dark:border-zinc-700 text-[var(--td-text-color-secondary)] text-xs"},[m(" 💡 提示:如要在每次启动实例时忽略此提示,请在"),e("strong",null,"设置"),m("里进行配置。 ")],-1))])]),_:1},8,["visible"])])}}}),J$=me(G$,[["__scopeId","data-v-7544ac33"]]),X$=Object.freeze(Object.defineProperty({__proto__:null,default:J$},Symbol.toStringTag,{value:"Module"})),Q$={class:"flex justify-center items-center min-h-[200px] overflow-hidden bg-[#0000000a] w-full"},Y$=["src","alt"],Z$={key:1,class:"p-10 text-[var(--td-text-color-secondary)]"},ez=de({__name:"ImagePreview",props:{visible:{type:Boolean},fileName:{},imageBlobUrl:{}},emits:["update:visible"],setup(a,{emit:s}){const r=s,d=()=>{r("update:visible",!1)};return(i,c)=>{const f=h("t-dialog");return l(),W(f,{visible:a.visible,header:a.fileName,footer:!1,width:"auto",top:"10vh",class:"image-preview-dialog",onClose:d},{default:o(()=>[e("div",Q$,[a.imageBlobUrl?(l(),x("img",{key:0,src:a.imageBlobUrl,alt:a.fileName,class:"block max-w-full max-h-[70vh] object-contain"},null,8,Y$)):(l(),x("div",Z$,"加载中..."))])]),_:1},8,["visible","header"])}}}),tz=me(ez,[["__scopeId","data-v-640ae127"]]),oz={key:0,class:"flex flex-col gap-4 py-2"},az={class:"bg-zinc-50 dark:bg-zinc-800/40 p-3 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 text-[13px] text-[var(--td-text-color-secondary)] shadow-inner flex items-center"},sz={class:"font-bold font-mono text-[var(--color-primary)] mx-1.5 text-sm"},lz={class:"flex justify-end gap-3 mt-2"},rz={key:1,class:"flex flex-col items-center gap-4 py-4 w-full"},nz={class:"flex justify-center items-center h-10"},iz={class:"text-sm font-medium text-[var(--td-text-color-primary)] text-center px-4 w-full truncate"},dz={class:"w-full"},cz=de({__name:"FileCompressor",props:{visible:{type:Boolean},instanceId:{},currentPath:{},files:{}},emits:["update:visible","success"],setup(a,{emit:s}){const r=a,d=s,i=y(""),c=y("idle"),f=y(0),n=y("");let v=null;_e(()=>r.visible,A=>{A?(c.value="idle",f.value=0,n.value="",r.files.length>0&&(i.value=`${r.files[0]}_packed.zip`)):I()});const I=()=>{v&&(clearInterval(v),v=null)},u=async()=>{if(!i.value.trim()){M.warning("请输入压缩包名称");return}let A=i.value;A.endsWith(".zip")||(A+=".zip"),c.value="processing",f.value=0,n.value="正在提交任务...";try{const k=(await En(r.instanceId,r.files,A,r.currentPath)).taskId;if(k)R(k);else throw new Error("未获取到任务ID")}catch(p){c.value="error",n.value=p.message||"提交失败"}},R=A=>{v=window.setInterval(async()=>{try{const p=await Dn(A);f.value=p.progress,n.value=p.message,p.status==="success"?(I(),c.value="success",f.value=100,setTimeout(()=>{d("success"),d("update:visible",!1)},1e3)):p.status==="error"&&(I(),c.value="error")}catch(p){console.error(p)}},1e3)},b=()=>{c.value==="processing"&&M.warning("后台任务仍在进行中,关闭窗口不会取消任务"),I(),d("update:visible",!1)};return He(()=>I()),(A,p)=>{const k=h("t-input"),g=h("t-button"),B=h("t-loading"),C=h("t-progress"),T=h("t-dialog");return l(),W(T,{visible:a.visible,header:c.value==="idle"?"创建压缩包":"正在压缩",footer:!1,"close-on-overlay-click":!1,width:"480px",onClose:b},{default:o(()=>[c.value==="idle"?(l(),x("div",oz,[e("div",az,[p[1]||(p[1]=m(" 即将压缩 ",-1)),e("span",sz,S(a.files.length),1),p[2]||(p[2]=m(" 个文件/文件夹 ",-1))]),t(k,{modelValue:i.value,"onUpdate:modelValue":p[0]||(p[0]=U=>i.value=U),placeholder:"请输入文件名",suffix:".zip",autofocus:"",class:"!rounded-lg shadow-sm",onEnter:u},null,8,["modelValue"]),e("div",lz,[t(g,{variant:"outline",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:b},{default:o(()=>[...p[3]||(p[3]=[m("取消",-1)])]),_:1}),t(g,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:u},{default:o(()=>[...p[4]||(p[4]=[m("开始压缩",-1)])]),_:1})])])):(l(),x("div",rz,[e("div",nz,[c.value==="processing"?(l(),W(B,{key:0,size:"medium"})):c.value==="success"?(l(),W(w(Kt),{key:1,class:"text-emerald-500 text-[40px]"})):c.value==="error"?(l(),W(w(So),{key:2,class:"text-red-500 text-[40px]"})):K("",!0)]),e("div",iz,S(n.value),1),e("div",dz,[t(C,{theme:"plump",percentage:f.value,status:c.value==="error"?"error":c.value==="success"?"success":"active"},null,8,["percentage","status"])])]))]),_:1},8,["visible","header"])}}}),uz=me(cz,[["__scopeId","data-v-9b86ccbe"]]),mz={class:"flex flex-col gap-5 py-2"},pz={class:"bg-zinc-50 dark:bg-zinc-800/40 p-3 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 flex items-start text-[13px] shadow-inner"},vz={class:"font-medium font-mono text-[var(--td-text-color-primary)] break-all leading-relaxed"},fz={key:0,class:"flex flex-col gap-2"},bz={key:1,class:"flex justify-between items-center py-1"},xz={key:2,class:"py-2"},gz={class:"flex justify-between items-center mb-2 text-[13px] text-[var(--color-primary)] font-medium"},hz={class:"truncate pr-4"},yz={class:"font-mono font-bold shrink-0"},_z={key:3,class:"flex justify-end gap-3 mt-2"},wz=de({__name:"FileDecompress",props:{visible:{type:Boolean},instanceId:{},currentPath:{},fileName:{}},emits:["update:visible","success"],setup(a,{emit:s}){const r=a,d=s,i=te({get:()=>r.visible,set:C=>d("update:visible",C)}),c=y("auto"),f=y(!0),n=y(!1),v=y(0),I=y(""),u=y("");let R=null;const b=[{label:"自动检测 (推荐)",value:"auto"},{label:"UTF-8 (Linux/Mac通用)",value:"utf-8"},{label:"GBK (Windows传统)",value:"gbk"}],A=()=>{c.value="auto",f.value=!0,n.value=!1,v.value=0,I.value="",u.value="",R&&(clearInterval(R),R=null)};_e(()=>r.visible,C=>{C&&A()});const p=()=>{R&&(clearInterval(R),R=null)},k=async()=>{if(!n.value)try{n.value=!0,I.value="正在提交任务...";const C=await gs(r.instanceId,r.fileName,r.currentPath,c.value,f.value);if(C&&C.taskId)u.value=C.taskId,R=window.setInterval(g,1e3);else throw new Error("未能获取任务ID")}catch(C){M.error(C.message||"提交失败"),n.value=!1}},g=async()=>{if(u.value)try{const C=await hs(u.value);v.value=C.progress||0,I.value=C.message,C.status==="success"?(p(),M.success("解压成功"),v.value=100,setTimeout(()=>{i.value=!1,d("success")},800)):C.status==="error"&&(p(),n.value=!1,M.error(C.message||"解压出错"))}catch(C){console.error("轮询失败",C)}},B=()=>{n.value&&v.value<100&&M.warning("解压正在后台进行中"),p(),i.value=!1};return(C,T)=>{const U=h("t-select"),D=h("t-switch"),N=h("t-progress"),P=h("t-button"),j=h("t-dialog");return l(),W(j,{visible:i.value,"onUpdate:visible":T[2]||(T[2]=O=>i.value=O),header:"解压文件",footer:!1,"close-on-overlay-click":!n.value,"on-close":B,width:"480px"},{default:o(()=>[e("div",mz,[e("div",pz,[T[3]||(T[3]=e("span",{class:"text-[var(--td-text-color-secondary)] min-w-[70px] shrink-0 pt-0.5"},"目标文件:",-1)),e("span",vz,S(a.fileName),1)]),n.value?K("",!0):(l(),x("div",fz,[T[4]||(T[4]=e("span",{class:"text-sm font-medium text-[var(--td-text-color-primary)]"},"文件名编码",-1)),t(U,{modelValue:c.value,"onUpdate:modelValue":T[0]||(T[0]=O=>c.value=O),options:b,class:"!rounded-lg shadow-sm"},null,8,["modelValue"])])),n.value?K("",!0):(l(),x("div",bz,[T[5]||(T[5]=e("div",{class:"flex flex-col gap-1 pr-4"},[e("span",{class:"text-sm font-medium text-[var(--td-text-color-primary)]"},"创建同名文件夹"),e("span",{class:"text-xs text-[var(--td-text-color-secondary)]"},"推荐开启,防止文件散乱在当前目录")],-1)),t(D,{modelValue:f.value,"onUpdate:modelValue":T[1]||(T[1]=O=>f.value=O),size:"large",class:"shrink-0"},null,8,["modelValue"])])),n.value?(l(),x("div",xz,[e("div",gz,[e("span",hz,S(I.value),1),e("span",yz,S(v.value)+"%",1)]),t(N,{theme:"line",percentage:v.value,label:!1,status:v.value===100?"success":"active"},null,8,["percentage","status"])])):K("",!0),n.value?K("",!0):(l(),x("div",_z,[t(P,{variant:"outline",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:B},{default:o(()=>[...T[6]||(T[6]=[m("取消",-1)])]),_:1}),t(P,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:k},{default:o(()=>[...T[7]||(T[7]=[m("开始解压",-1)])]),_:1})]))])]),_:1},8,["visible","close-on-overlay-click"])}}}),kz=me(wz,[["__scopeId","data-v-742dd344"]]),$z={class:"py-1 md:py-2"},zz={class:"mt-5 p-4 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 shadow-inner"},Cz={class:"flex gap-2 flex-wrap mb-2.5"},Az={class:"min-h-[16px] flex items-center"},Sz={key:0,class:"text-xs text-[var(--td-text-color-secondary)]"},Iz={key:1,class:"text-xs text-[var(--td-text-color-secondary)]"},Vz={key:2,class:"text-xs text-amber-600 dark:text-amber-500 font-medium"},Uz={key:3,class:"text-xs text-[var(--td-text-color-secondary)] italic opacity-60"},Mz=de({__name:"FilePermission",props:{visible:{type:Boolean},instanceId:{},currentPath:{},targets:{}},emits:["update:visible","success"],setup(a,{emit:s}){const r=a,d=s,i=y({mode:"755"}),c=y(!1),f=[{label:"755 (推荐: 所有者读写执/他人读执)",value:"755"},{label:"777 (全开: 所有权限)",value:"777"},{label:"644 (普通文件: 读写/读)",value:"644"}],n=te(()=>r.targets.length===1?`修改权限 - ${r.targets[0].name}`:`批量修改权限 (${r.targets.length} 项)`);_e(()=>r.visible,R=>{R&&r.targets.length>0&&(r.targets.length===1&&r.targets[0].mode&&r.targets[0].mode!=="Unknown"?i.value.mode=r.targets[0].mode:i.value.mode="755")});const v=()=>{d("update:visible",!1),c.value=!1},I=async()=>{if(!i.value.mode||!/^[0-7]{3}$/.test(i.value.mode)){M.warning("请输入正确的3位八进制权限码 (如 755)");return}c.value=!0;let R=0,b=0;try{for(const A of r.targets)try{await ys(u,A.fullPath,i.value.mode),R++}catch(p){b++,console.error(p)}b===0?M.success("权限修改成功"):M.warning(`完成: 成功 ${R} 个, 失败 ${b} 个`),d("success"),v()}catch(A){M.error(A.message||"请求失败")}finally{c.value=!1}},u=r.instanceId;return(R,b)=>{const A=h("t-input"),p=h("t-form-item"),k=h("t-tag"),g=h("t-dialog");return l(),W(g,{visible:a.visible,header:n.value,"confirm-btn":{content:"保存修改",loading:c.value},"on-close":v,"on-confirm":I,width:"480px"},{default:o(()=>[e("div",$z,[t(p,{label:"权限代码","required-mark":""},{default:o(()=>[t(A,{modelValue:i.value.mode,"onUpdate:modelValue":b[0]||(b[0]=B=>i.value.mode=B),placeholder:"例如: 755",tips:"请输入3位八进制数字 (Linux Chmod)",class:"[&_.t-input__inner]:!font-mono [&_.t-input__inner]:!text-[15px]"},null,8,["modelValue"])]),_:1}),e("div",zz,[b[1]||(b[1]=e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mb-3 font-medium"},"快捷设置:",-1)),e("div",Cz,[(l(),x(re,null,xe(f,B=>t(k,{key:B.value,variant:"light-outline",theme:"primary",class:"cursor-pointer !font-mono !rounded-md hover:!bg-[var(--color-primary)] hover:!text-white transition-colors",onClick:C=>i.value.mode=B.value},{default:o(()=>[m(S(B.value),1)]),_:2},1032,["onClick"])),64))]),e("div",Az,[i.value.mode==="755"?(l(),x("div",Sz," 适合可执行程序、脚本或文件夹 ")):i.value.mode==="644"?(l(),x("div",Iz," 适合普通配置文件、日志等 ")):i.value.mode==="777"?(l(),x("div",Vz," ⚠️ 允许任何人读写执行 (极其不安全) ")):(l(),x("div",Uz," 自定义权限 "))])])])]),_:1},8,["visible","header","confirm-btn"])}}}),Lz=me(Mz,[["__scopeId","data-v-491e6c39"]]),Bz={key:0,class:"flex flex-col gap-4 py-2"},Tz={class:"bg-zinc-50 dark:bg-zinc-800/40 p-3 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 text-[13px] text-[var(--td-text-color-secondary)] shadow-inner"},Rz={class:"font-bold font-mono text-[var(--color-primary)]"},jz={class:"flex justify-end gap-3 mt-2"},Pz={key:1,class:"flex flex-col items-center gap-4 py-4 w-full"},Ez={class:"flex justify-center items-center h-10"},Dz={class:"text-sm font-medium text-[var(--td-text-color-primary)] text-center px-4 w-full truncate"},Fz={class:"w-full"},Oz=de({__name:"FileOfflineDownloader",props:{visible:{type:Boolean},instanceId:{},currentPath:{}},emits:["update:visible","success"],setup(a,{emit:s}){const r=a,d=s,i=y(""),c=y(""),f=y("idle"),n=y(0),v=y("");let I=null;_e(()=>r.visible,p=>{p?(f.value="idle",n.value=0,v.value="",i.value="",c.value=""):u()}),_e(i,p=>{if(p&&!c.value.trim())try{const B=new URL(p).pathname.split("/").filter(Boolean).pop();B&&(c.value=decodeURIComponent(B))}catch{const g=p.split("?")[0].split("/").filter(Boolean).pop();g&&p.includes("/")&&(c.value=decodeURIComponent(g))}});const u=()=>{I&&(clearInterval(I),I=null)},R=async()=>{if(!i.value.trim()){M.warning("请输入下载链接");return}f.value="processing",n.value=0,v.value="正在提交离线下载任务...";try{const p=await _s(r.instanceId,r.currentPath,i.value.trim(),c.value.trim()),k=p.taskId||p.data&&p.data.taskId;if(k)b(k);else throw new Error("未获取到任务ID")}catch(p){f.value="error",v.value=p.message||"提交失败"}},b=p=>{I=window.setInterval(async()=>{try{const k=await ws(p);n.value=k.progress,v.value=k.message,k.status==="success"?(u(),f.value="success",n.value=100,setTimeout(()=>{d("success"),d("update:visible",!1)},1e3)):k.status==="error"&&(u(),f.value="error")}catch(k){console.error(k)}},1e3)},A=()=>{f.value==="processing"&&M.warning("后台任务仍在进行中,关闭窗口不会取消任务"),u(),d("update:visible",!1)};return He(()=>u()),(p,k)=>{const g=h("t-input"),B=h("t-button"),C=h("t-loading"),T=h("t-progress"),U=h("t-dialog");return l(),W(U,{visible:a.visible,header:f.value==="idle"?"创建离线下载任务":"正在下载",footer:!1,"close-on-overlay-click":!1,width:"480px",onClose:A},{default:o(()=>[f.value==="idle"?(l(),x("div",Bz,[e("div",Tz,[k[2]||(k[2]=m(" 文件将下载至当前目录: ",-1)),e("span",Rz,S(a.currentPath||"根目录"),1)]),t(g,{modelValue:i.value,"onUpdate:modelValue":k[0]||(k[0]=D=>i.value=D),placeholder:"请输入直链 URL (必填)",autofocus:"",class:"!rounded-lg shadow-sm",clearable:""},null,8,["modelValue"]),t(g,{modelValue:c.value,"onUpdate:modelValue":k[1]||(k[1]=D=>c.value=D),placeholder:"保存的文件名 (选填,默认从链接推断)",class:"!rounded-lg shadow-sm",onEnter:R},null,8,["modelValue"]),e("div",jz,[t(B,{variant:"outline",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:A},{default:o(()=>[...k[3]||(k[3]=[m("取消",-1)])]),_:1}),t(B,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:R},{default:o(()=>[...k[4]||(k[4]=[m("开始下载",-1)])]),_:1})])])):(l(),x("div",Pz,[e("div",Ez,[f.value==="processing"?(l(),W(C,{key:0,size:"medium"})):f.value==="success"?(l(),W(w(Kt),{key:1,class:"text-emerald-500 text-[40px]"})):f.value==="error"?(l(),W(w(So),{key:2,class:"text-red-500 text-[40px]"})):K("",!0)]),e("div",Dz,S(v.value),1),e("div",Fz,[t(T,{theme:"plump",percentage:n.value,status:f.value==="error"?"error":f.value==="success"?"success":"active"},null,8,["percentage","status"])])]))]),_:1},8,["visible","header"])}}}),Nz=me(Oz,[["__scopeId","data-v-b461cb3d"]]),Kz={class:"flex flex-col mx-auto w-full pb-8"},qz={class:"card-enter-anim design-card bg-[var(--td-bg-color-container)] border-y md:border border-zinc-200/60 dark:border-zinc-700/60 md:rounded-xl shadow-sm flex flex-col min-h-[calc(100vh-100px)] md:min-h-[600px] -mx-4 md:mx-0 overflow-hidden"},Hz={class:"sticky top-0 z-10 p-3 md:px-5 md:py-4 !bg-inherit border-b border-zinc-200/60 dark:border-zinc-800 flex items-center justify-between gap-4 overflow-x-auto hide-scrollbar"},Wz={class:"flex-1 flex items-center min-w-max"},Gz={class:"flex items-center gap-2 shrink-0 min-w-max"},Jz={key:0},Xz={key:0},Qz={key:0},Yz={class:"flex-1 w-full bg-transparent overflow-hidden [&_.t-table]:!border-t-0 [&_.t-table\\_\\_header]:!border-t-0 [&_.t-table\\_\\_header>tr>th]:!border-t-0"},Zz=["onClick"],e6={class:"font-medium text-[var(--td-text-color-primary)] group-hover:text-[var(--color-primary)] transition-colors truncate max-w-[calc(100vw-140px)] md:max-w-full"},t6={class:"text-[13px] font-mono text-[var(--td-text-color-secondary)]"},o6={class:"text-[13px] text-[var(--td-text-color-secondary)]"},a6={class:"py-16 flex flex-col items-center justify-center text-[var(--td-text-color-secondary)]"},s6={key:0,class:"design-card fixed bottom-6 md:bottom-10 left-1/2 -translate-x-1/2 w-11/12 md:w-max min-w-[280px] bg-[var(--td-bg-color-container)] border border-zinc-200/60 dark:border-zinc-700/60 shadow-[0_8px_30px_rgba(0,0,0,0.12)] rounded-full px-4 py-2.5 flex justify-between items-center z-[500] gap-4"},l6={class:"text-sm font-medium text-zinc-700 dark:text-zinc-300 shrink-0"},r6={class:"text-[var(--color-primary)] font-bold text-base mx-1"},n6={class:"flex items-center gap-1 md:gap-1.5 overflow-x-auto hide-scrollbar"},i6={key:0},d6={key:0},c6={key:0},u6={key:0},m6={key:0},p6={key:0},v6={key:1,class:"design-card fixed bottom-6 md:bottom-10 left-1/2 -translate-x-1/2 w-11/12 md:w-max min-w-[280px] bg-[var(--td-bg-color-container)] border-2 border-[var(--color-primary)] shadow-[0_8px_30px_rgba(0,0,0,0.12)] shadow-[var(--color-primary)]/20 rounded-full px-5 py-3 flex justify-between items-center z-[501] gap-4"},f6={class:"text-sm font-medium text-zinc-700 dark:text-zinc-300 shrink-0"},b6={key:0},x6={key:1},g6={class:"text-[var(--color-primary)] font-bold text-base mx-1"},h6={class:"flex items-center gap-2"},y6=de({__name:"index",setup(a){const s=Ye(),r=co(),d=te(()=>Number(s.params.serverFilesId)),i=Be(),c=y(!1),f=y([]),n=y(""),v=y([]),I=y(window.innerWidth),u=te(()=>I.value<768),R=y(!1),b=y(!1),A=y(!1),p=y(!1),k=y(!1),g=y(!1),B=y(!1),C=y(!1),T=y(!1),U=y(!1),D=y(""),N=y(""),P=y(""),j=y(!1),O=y(""),$=y(""),V=y(""),_=y(""),z=y(null),E=y([]),F=y(""),X=y([]),q=()=>{I.value=window.innerWidth},H=oe=>{const Q=oe.split(".").pop()?.toLowerCase();return["png","jpg","jpeg","gif","ico","webp","bmp","svg"].includes(Q||"")},J=oe=>{const Q=oe.split(".").pop()?.toLowerCase();return["zip","jar"].includes(Q||"")},ae=oe=>{if(oe.type==="folder"){const $e=oe.name.toLowerCase();return $e==="config"||$e==="settings"?{icon:Io,color:"var(--td-warning-color)"}:$e.startsWith("world")||$e==="level"?{icon:Kl,color:"var(--td-success-color)"}:["plugins","mods","libraries"].includes($e)?{icon:lo,color:"var(--td-brand-color)"}:["logs","crash-reports","cache","temp"].includes($e)?{icon:Nt,color:"var(--td-gray-color-6)"}:{icon:Nt,color:"var(--td-brand-color)"}}const Q=oe.name.split(".").pop()?.toLowerCase();return["png","jpg","jpeg","gif","ico","webp"].includes(Q||"")?{icon:ns,color:"var(--td-success-color)"}:["jar","zip","rar","7z","tar","gz"].includes(Q||"")?{icon:xo,color:"#722ed1"}:["yml","yaml","json","properties","toml","xml","conf","sh","bat","cmd"].includes(Q||"")?{icon:Tt,color:"var(--td-warning-color)"}:["log","txt","md","lock"].includes(Q||"")?{icon:No,color:"var(--td-gray-color-6)"}:{icon:Ut,color:"var(--td-text-color-secondary)"}},le=te(()=>f.value.some(oe=>oe.permission&&oe.permission!=="")),fe=te(()=>{const oe={colKey:"row-select",type:"multiple",width:u.value?34:40},Q={colKey:"name",title:"文件名",ellipsis:!0,width:"auto"},$e={colKey:"operation",title:"操作",width:u.value?50:80,align:"center",fixed:u.value?"right":void 0};return u.value?[oe,Q,$e]:[oe,Q,{colKey:"size",title:"大小",width:100,align:"right"},...le.value?[{colKey:"permission",title:"权限",width:80,align:"center"}]:[],{colKey:"lastModified",title:"修改时间",width:180,align:"center"},$e]}),be=te(()=>{const oe=n.value.split("/").filter(Ne=>Ne),Q=[{name:"根目录",path:""}];let $e="";return oe.forEach(Ne=>{$e=$e?`${$e}/${Ne}`:Ne,Q.push({name:Ne,path:$e})}),Q}),Se=te(()=>v.value.length>0),Ee=oe=>{if(oe===0)return"-";const Q=["B","KB","MB","GB","TB"];let $e=0;for(;oe>=1024&&$eoe?new Date(oe).toLocaleString():"-",se=async()=>{c.value=!0,v.value=[];try{const oe=await Tn(d.value,n.value);f.value=oe||[]}catch(oe){console.error(oe)}finally{c.value=!1}},De=async oe=>{$.value&&(window.URL.revokeObjectURL($.value),$.value="");const Q=n.value?`${n.value}/${oe}`:oe,$e=M.loading("正在加载图片...");try{const Ne=await xs(d.value,Q);if(!(Ne instanceof Blob))throw new Error("无效数据");$.value=window.URL.createObjectURL(Ne),O.value=oe,b.value=!0,M.close($e)}catch{M.close($e),M.error("加载失败")}},Me=async(oe,Q=!1)=>{if(Q){N.value=oe,P.value="",R.value=!0;return}if(H(oe)){De(oe);return}const $e=n.value?`${n.value}/${oe}`:oe,Ne=M.loading("正在读取文件...");try{const nt=await Uo(d.value,$e);N.value=oe,P.value=nt,R.value=!0,M.close(Ne)}catch(nt){M.close(Ne),M.error("读取失败: "+nt.message)}},ee=()=>{V.value="",A.value=!0},L=()=>{if(!V.value.trim()){M.warning("请输入文件名");return}A.value=!1,Me(V.value,!0)},ce=async oe=>{j.value=!0;try{const Q=n.value?`${n.value}/${N.value}`:N.value;await ma(d.value,Q,oe),M.success("保存成功"),R.value=!1,we()}catch{M.error("保存失败")}finally{j.value=!1}},he=()=>{D.value="",T.value=!0},ie=async()=>{if(!D.value.trim()){M.warning("请输入文件夹名称");return}try{await Rn(d.value,n.value,D.value),M.success("文件夹创建成功"),T.value=!1,we()}catch(oe){M.error(`创建失败: ${oe.message||"未知错误"}`)}},G=oe=>{z.value={name:oe.name,fullPath:n.value?`${n.value}/${oe.name}`:oe.name},_.value=oe.name,p.value=!0},pe=async()=>{if(!_.value||!z.value)return;const oe=n.value?`${n.value}/${_.value}`:_.value;try{await jn(d.value,z.value.fullPath,oe),M.success("重命名成功"),p.value=!1,we()}catch{M.error("重命名失败")}},Ve=oe=>{let Q=[];if(oe?Q=[oe.name]:Q=[...v.value],Q.length===0)return;const $e=Ke.confirm({header:"确认删除",body:`确定要永久删除这 ${Q.length} 项吗?`,theme:"danger",onConfirm:async()=>{$e.hide();const Ne=M.loading("正在删除中...");try{const nt=Q.map(mt=>n.value?`${n.value}/${mt}`:mt);await Pn(d.value,nt),M.success("删除成功"),v.value=[],we()}catch{M.error("删除失败")}finally{M.close(Ne)}}})},Ce=oe=>{if(oe.type==="folder"){const Q=n.value===""?"":"/";n.value=`${n.value}${Q}${oe.name}`}else H(oe.name)?De(oe.name):Me(oe.name)},Ue=oe=>{n.value=oe},we=()=>se(),Ae=async oe=>{let Q=[];if(oe?Q=[oe.name]:Q=[...v.value],Q.length===0)return;const{baseUrl:$e,token:Ne}=i,nt=$e.endsWith("/")?$e.slice(0,-1):$e;for(const mt of Q){if(f.value.find(We=>We.name===mt)?.type==="folder"){M.warning(`暂不支持下载文件夹: ${mt} 请压缩后再下载!`);continue}const Qe=n.value?`${n.value}/${mt}`:mt;try{const We=new URL(`${nt||window.location.origin}/api/files/instance/${d.value}/download`);We.searchParams.append("path",Qe),We.searchParams.append("x-user-token",Ne);const xt=document.createElement("a");xt.href=We.toString(),xt.style.display="none",xt.download=mt,document.body.appendChild(xt),xt.click(),document.body.removeChild(xt)}catch(We){console.error(We),M.error(`创建下载链接失败: ${mt}`)}}oe||(v.value=[])},Re=()=>{v.value.length!==0&&(E.value=[...v.value],g.value=!0)},Fe=()=>{v.value=[],we()},Ze=oe=>{F.value=oe.name,B.value=!0},ne=()=>{we()},Xe=oe=>{if(X.value=[],oe)X.value.push({name:oe.name,fullPath:n.value?`${n.value}/${oe.name}`:oe.name,mode:oe.permission||"755"});else{if(v.value.length===0)return;v.value.forEach(Q=>{const $e=f.value.find(Ne=>Ne.name===Q);$e&&X.value.push({name:$e.name,fullPath:n.value?`${n.value}/${$e.name}`:$e.name,mode:$e.permission||"755"})})}C.value=!0},ge=()=>{v.value=[],we()},et=()=>we(),tt=y([]),rt=y("copy"),je=y(""),lt=te(()=>tt.value.length>0),ke=te(()=>n.value===je.value),wt=()=>{if(v.value.length===0)return;const oe=v.value.map(Q=>n.value?`${n.value}/${Q}`:Q);tt.value=oe,rt.value="copy",je.value=n.value,v.value=[],M.info(`已复制 ${oe.length} 项,请前往目标目录粘贴`)},vo=()=>{if(v.value.length===0)return;const oe=v.value.map(Q=>n.value?`${n.value}/${Q}`:Q);tt.value=oe,rt.value="move",je.value=n.value,v.value=[],M.info(`已剪切 ${oe.length} 项,请前往目标目录粘贴`)},Pt=()=>{tt.value=[],je.value="",M.info("已取消操作")},St=async()=>{if(tt.value.length===0)return;const oe=M.loading("正在粘贴中...");try{rt.value==="copy"?await On(d.value,tt.value,n.value):await Nn(d.value,tt.value,n.value),M.success("粘贴成功"),tt.value=[],we()}catch(Q){M.error(`粘贴失败: ${Q.message||"未知错误"}`)}finally{M.close(oe)}},Et=y(""),jo=y("name"),Os=[{label:"名称 (A-Z)",value:"name"},{label:"时间 (最新)",value:"time"},{label:"大小 (从大到小)",value:"size"}],Ns=te(()=>{let oe=[...f.value];if(Et.value){const Q=Et.value.toLowerCase();oe=oe.filter($e=>$e.name.toLowerCase().includes(Q))}return oe.sort((Q,$e)=>{if(Q.type==="folder"&&$e.type!=="folder")return-1;if(Q.type!=="folder"&&$e.type==="folder")return 1;switch(jo.value){case"name":return Q.name.localeCompare($e.name,"zh-CN",{numeric:!0});case"time":return new Date($e.lastModified).getTime()-new Date(Q.lastModified).getTime();case"size":return $e.size-Q.size;default:return 0}}),oe});return _e(n,oe=>{r.replace({query:{...s.query,path:oe||void 0}}),se()}),_e(d,()=>{s.name==="InstanceFiles"&&(n.value="",v.value=[],se())}),ze(()=>{const oe=s.query.path;window.addEventListener("resize",q),oe?n.value=oe:se()}),He(()=>{window.removeEventListener("resize",q)}),(oe,Q)=>{const $e=h("t-breadcrumb-item"),Ne=h("t-breadcrumb"),nt=h("t-input"),mt=h("t-select"),Qe=h("t-button"),We=h("t-dropdown-item"),xt=h("t-dropdown-menu"),ka=h("t-dropdown"),Ks=h("t-tag"),qs=h("image-icon"),Hs=h("t-table"),Po=h("t-dialog");return l(),x("div",Kz,[e("div",qz,[e("div",Hz,[e("div",Wz,[t(Ne,{"max-item-width":u.value?"80px":"150px"},{default:o(()=>[(l(!0),x(re,null,xe(be.value,(ve,gt)=>(l(),W($e,{key:gt,class:"cursor-pointer whitespace-nowrap transition-colors hover:text-[var(--color-primary)]",onClick:d9=>Ue(ve.path)},Ga({default:o(()=>[m(" "+S(ve.name),1)]),_:2},[gt===0?{name:"icon",fn:o(()=>[t(w(cs))]),key:"0"}:void 0]),1032,["onClick"]))),128))]),_:1},8,["max-item-width"])]),e("div",Gz,[t(nt,{modelValue:Et.value,"onUpdate:modelValue":Q[0]||(Q[0]=ve=>Et.value=ve),placeholder:"搜索文件...",class:"!rounded-lg shadow-sm",style:Oe({width:u.value?"120px":"200px"})},{"prefix-icon":o(()=>[t(w(_o),{class:"text-zinc-400"})]),_:1},8,["modelValue","style"]),t(mt,{modelValue:jo.value,"onUpdate:modelValue":Q[1]||(Q[1]=ve=>jo.value=ve),options:Os,class:"!rounded-lg shadow-sm",style:Oe({width:u.value?"110px":"140px"}),placeholder:"排序"},{prefixIcon:o(()=>[t(w(Za),{class:"text-zinc-400"})]),_:1},8,["modelValue","style"]),t(Qe,{variant:"outline",size:"medium",class:"!rounded-lg !m-0",onClick:Q[2]||(Q[2]=ve=>w(Ie)(`/instance/console/${d.value}`))},{icon:o(()=>[t(w(os))]),default:o(()=>[u.value?K("",!0):(l(),x("span",Jz,"控制台"))]),_:1}),t(ka,null,{dropdown:o(()=>[t(xt,null,{default:o(()=>[t(We,{value:"file",onClick:ee},{default:o(()=>[t(w(Ut),{class:"mr-2"}),Q[27]||(Q[27]=m()),Q[28]||(Q[28]=e("span",null,"新建文件",-1))]),_:1}),t(We,{value:"folder",onClick:he},{default:o(()=>[t(w(Fl),{class:"mr-2"}),Q[29]||(Q[29]=m()),Q[30]||(Q[30]=e("span",null,"新建文件夹",-1))]),_:1}),t(We,{value:"download",onClick:Q[3]||(Q[3]=ve=>U.value=!0)},{default:o(()=>[t(w(la),{class:"mr-2"}),Q[31]||(Q[31]=m()),Q[32]||(Q[32]=e("span",null,"离线下载",-1))]),_:1})]),_:1})]),default:o(()=>[t(Qe,{variant:"outline",size:"medium",class:"!rounded-lg !m-0"},{icon:o(()=>[t(w(Dl))]),default:o(()=>[u.value?K("",!0):(l(),x("span",Xz,"新建"))]),_:1})]),_:1}),t(Qe,{theme:"primary",size:"medium",class:"!rounded-lg shadow-sm !m-0",onClick:Q[4]||(Q[4]=ve=>k.value=!0)},{icon:o(()=>[t(w(rs))]),default:o(()=>[u.value?K("",!0):(l(),x("span",Qz,"上传"))]),_:1}),t(Qe,{variant:"outline",size:"medium",class:"!rounded-lg shrink-0 !m-0",onClick:we},{icon:o(()=>[t(w(Pe))]),_:1})])]),e("div",Yz,[t(Hs,{"selected-row-keys":v.value,"onUpdate:selectedRowKeys":Q[6]||(Q[6]=ve=>v.value=ve),data:Ns.value,columns:fe.value,"row-key":"name",loading:c.value,hover:!0,size:"medium",class:"custom-table"},{name:o(({row:ve})=>[e("div",{class:"flex items-center py-1.5 cursor-pointer group",onClick:dt(gt=>Ce(ve),["stop"])},[(l(),W(it(ae(ve).icon),{class:"text-xl mr-2 shrink-0 transition-transform group-hover:scale-110",style:Oe({color:ae(ve).color})},null,8,["style"])),e("span",e6,S(ve.name),1)],8,Zz)]),size:o(({row:ve})=>[e("span",t6,S(Ee(ve.size)),1)]),permission:o(({row:ve})=>[ve.permission?(l(),W(Ks,{key:0,variant:"light-outline",size:"small",class:"!font-mono !rounded !justify-center !text-center"},{default:o(()=>[m(S(ve.permission),1)]),_:2},1024)):K("",!0)]),lastModified:o(({row:ve})=>[e("span",o6,S(Y(ve.lastModified)),1)]),operation:o(({row:ve})=>[e("div",{class:"op-actions",onClick:Q[5]||(Q[5]=dt(()=>{},["stop"]))},[t(ka,{placement:u.value?"bottom-right":"bottom"},{dropdown:o(()=>[t(xt,null,{default:o(()=>[J(ve.name)&&ve.type!=="folder"?(l(),W(We,{key:0,value:"decompress",onClick:gt=>Ze(ve)},{default:o(()=>[t(w(xo),{class:"mr-2"}),Q[33]||(Q[33]=m()),Q[34]||(Q[34]=e("span",null,"解压",-1))]),_:1},8,["onClick"])):K("",!0),ve.type==="folder"||J(ve.name)?K("",!0):(l(),W(We,{key:1,value:"edit",onClick:gt=>H(ve.name)?De(ve.name):Me(ve.name)},{default:o(()=>[H(ve.name)?(l(),W(qs,{key:0,class:"mr-2"})):(l(),W(w(so),{key:1,class:"mr-2"})),e("span",null,S(H(ve.name)?"预览":"编辑"),1)]),_:2},1032,["onClick"])),le.value?(l(),W(We,{key:2,value:"permission",onClick:gt=>Xe(ve)},{default:o(()=>[t(w(Ot),{class:"mr-2"}),Q[35]||(Q[35]=m()),Q[36]||(Q[36]=e("span",null,"权限",-1))]),_:1},8,["onClick"])):K("",!0),t(We,{value:"download",onClick:gt=>Ae(ve)},{default:o(()=>[t(w(ao),{class:"mr-2"}),Q[37]||(Q[37]=m()),Q[38]||(Q[38]=e("span",null,"下载",-1))]),_:1},8,["onClick"]),t(We,{value:"rename",onClick:gt=>G(ve)},{default:o(()=>[t(w(so),{class:"mr-2"}),Q[39]||(Q[39]=m()),Q[40]||(Q[40]=e("span",null,"重命名",-1))]),_:1},8,["onClick"]),t(We,{value:"delete",class:"danger-item !text-red-500 hover:!bg-red-50 dark:hover:!bg-red-500/10 transition-colors",onClick:gt=>Ve(ve)},{default:o(()=>[t(w(ct),{class:"mr-2"}),Q[41]||(Q[41]=m()),Q[42]||(Q[42]=e("span",null,"删除",-1))]),_:1},8,["onClick"])]),_:2},1024)]),default:o(()=>[t(Qe,{variant:"text",shape:"square",size:"medium",class:"!rounded-md hover:!bg-zinc-100 dark:hover:!bg-zinc-800 transition-colors"},{default:o(()=>[t(w(na))]),_:1})]),_:2},1032,["placement"])])]),empty:o(()=>[e("div",a6,[t(w(Ut),{size:"40px",class:"opacity-60 mb-3"}),Q[43]||(Q[43]=e("span",{class:"text-sm font-medium"},"暂无文件",-1))])]),_:1},8,["selected-row-keys","data","columns","loading"])])]),t(Rt,{name:"slide-up"},{default:o(()=>[Se.value?(l(),x("div",s6,[e("div",l6,[u.value?K("",!0):(l(),x(re,{key:0},[m("已选 ")],64)),e("span",r6,S(v.value.length),1),u.value?K("",!0):(l(),x(re,{key:1},[m("项")],64))]),e("div",n6,[t(Qe,{size:"small",variant:"text",theme:"primary",class:"!rounded-full hover:!bg-[var(--color-primary)]/10",onClick:Q[7]||(Q[7]=ve=>wt())},{icon:o(()=>[t(w(Ol))]),default:o(()=>[u.value?K("",!0):(l(),x("span",i6,"复制"))]),_:1}),t(Qe,{size:"small",variant:"text",theme:"primary",class:"!rounded-full hover:!bg-[var(--color-primary)]/10",onClick:Q[8]||(Q[8]=ve=>vo())},{icon:o(()=>[t(w(Nl))]),default:o(()=>[u.value?K("",!0):(l(),x("span",d6,"剪切"))]),_:1}),t(Qe,{size:"small",variant:"text",theme:"primary",class:"!rounded-full hover:!bg-[var(--color-primary)]/10",onClick:Q[9]||(Q[9]=ve=>Re())},{icon:o(()=>[t(w(xo))]),default:o(()=>[u.value?K("",!0):(l(),x("span",c6,"压缩"))]),_:1}),t(Qe,{size:"small",variant:"text",theme:"primary",class:"!rounded-full hover:!bg-[var(--color-primary)]/10",onClick:Q[10]||(Q[10]=ve=>Ae())},{icon:o(()=>[t(w(ao))]),default:o(()=>[u.value?K("",!0):(l(),x("span",u6,"下载"))]),_:1}),le.value?(l(),W(Qe,{key:0,size:"small",variant:"text",theme:"primary",class:"!rounded-full hover:!bg-[var(--color-primary)]/10",onClick:Q[11]||(Q[11]=ve=>Xe())},{icon:o(()=>[t(w(Ot))]),default:o(()=>[u.value?K("",!0):(l(),x("span",m6,"权限"))]),_:1})):K("",!0),t(Qe,{size:"small",variant:"text",theme:"danger",class:"!rounded-full hover:!bg-red-500/10",onClick:Q[12]||(Q[12]=ve=>Ve())},{icon:o(()=>[t(w(ct))]),default:o(()=>[u.value?K("",!0):(l(),x("span",p6,"删除"))]),_:1}),Q[45]||(Q[45]=e("div",{class:"w-[1px] h-4 bg-zinc-200 dark:bg-zinc-700 mx-1 shrink-0"},null,-1)),t(Qe,{size:"small",variant:"text",class:"!rounded-full !text-zinc-500 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 shrink-0",onClick:Q[13]||(Q[13]=ve=>v.value=[])},{default:o(()=>[...Q[44]||(Q[44]=[m("取消",-1)])]),_:1})])])):lt.value?(l(),x("div",v6,[e("div",f6,[rt.value==="copy"?(l(),x("span",b6,"准备复制")):(l(),x("span",x6,"准备移动")),e("span",g6,S(tt.value.length),1),Q[46]||(Q[46]=m(" 项 ",-1))]),e("div",h6,[t(Qe,{theme:"primary",disabled:ke.value,class:"!rounded-full shadow-sm",onClick:St},{icon:o(()=>[t(w(No))]),default:o(()=>[Q[47]||(Q[47]=m(" 粘贴在此处 ",-1))]),_:1},8,["disabled"]),t(Qe,{variant:"text",theme:"default",class:"!rounded-full hover:!bg-zinc-200 dark:hover:!bg-zinc-700",onClick:Pt},{icon:o(()=>[t(w(sa))]),default:o(()=>[Q[48]||(Q[48]=m(" 取消 ",-1))]),_:1})])])):K("",!0)]),_:1}),t(Es,{visible:R.value,"onUpdate:visible":Q[14]||(Q[14]=ve=>R.value=ve),"file-name":N.value,content:P.value,loading:j.value,onSave:ce},null,8,["visible","file-name","content","loading"]),t(Po,{visible:A.value,"onUpdate:visible":Q[16]||(Q[16]=ve=>A.value=ve),header:"新建文件","on-confirm":L},{default:o(()=>[t(nt,{modelValue:V.value,"onUpdate:modelValue":Q[15]||(Q[15]=ve=>V.value=ve),placeholder:"输入文件名",autofocus:!0,onEnter:L},null,8,["modelValue"])]),_:1},8,["visible"]),t(Po,{visible:p.value,"onUpdate:visible":Q[18]||(Q[18]=ve=>p.value=ve),header:"重命名","on-confirm":pe},{default:o(()=>[t(nt,{modelValue:_.value,"onUpdate:modelValue":Q[17]||(Q[17]=ve=>_.value=ve),placeholder:"输入新名称",autofocus:!0,onEnter:pe},null,8,["modelValue"])]),_:1},8,["visible"]),t(Ds,{visible:k.value,"onUpdate:visible":Q[19]||(Q[19]=ve=>k.value=ve),"instance-id":d.value,"current-path":n.value,onSuccess:et},null,8,["visible","instance-id","current-path"]),t(tz,{visible:b.value,"onUpdate:visible":Q[20]||(Q[20]=ve=>b.value=ve),"file-name":O.value,"image-blob-url":$.value},null,8,["visible","file-name","image-blob-url"]),t(uz,{visible:g.value,"onUpdate:visible":Q[21]||(Q[21]=ve=>g.value=ve),"instance-id":d.value,"current-path":n.value,files:E.value,onSuccess:Fe},null,8,["visible","instance-id","current-path","files"]),t(kz,{visible:B.value,"onUpdate:visible":Q[22]||(Q[22]=ve=>B.value=ve),"instance-id":d.value,"current-path":n.value,"file-name":F.value,onSuccess:ne},null,8,["visible","instance-id","current-path","file-name"]),t(Nz,{visible:U.value,"onUpdate:visible":Q[23]||(Q[23]=ve=>U.value=ve),"instance-id":d.value,"current-path":n.value,onSuccess:we},null,8,["visible","instance-id","current-path"]),t(Lz,{visible:C.value,"onUpdate:visible":Q[24]||(Q[24]=ve=>C.value=ve),"instance-id":d.value,"current-path":n.value,targets:X.value,onSuccess:ge},null,8,["visible","instance-id","current-path","targets"]),t(Po,{visible:T.value,"onUpdate:visible":Q[26]||(Q[26]=ve=>T.value=ve),header:"新建文件夹","on-confirm":ie},{default:o(()=>[t(nt,{modelValue:D.value,"onUpdate:modelValue":Q[25]||(Q[25]=ve=>D.value=ve),placeholder:"输入文件夹名称",autofocus:!0,onEnter:ie},null,8,["modelValue"])]),_:1},8,["visible"])])}}}),_6=me(y6,[["__scopeId","data-v-b8115d5f"]]),w6=Object.freeze(Object.defineProperty({__proto__:null,default:_6},Symbol.toStringTag,{value:"Module"})),k6=de({name:"FrameBlank"});function $6(a,s,r,d,i,c){return l(),x("div")}const z6=me(k6,[["render",$6]]),C6=Object.freeze(Object.defineProperty({__proto__:null,default:z6},Symbol.toStringTag,{value:"Module"}));function Ka(){return Z.get({url:"/api/user/me"})}function qa(a){return Z.post({url:"/api/user/me/update",data:a})}function A6(){return Z.get({url:"/api/admin/user/list"})}function S6(a){return Z.post({url:"/api/admin/user/create",data:a})}function I6(a,s){return Z.post({url:`/api/admin/user/update/${a}`,data:s})}function V6(a){return Z.post({url:`/api/admin/user/delete/${a}`})}const U6={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},M6={class:"design-card flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left"},L6={class:"flex items-center gap-3"},B6={class:"relative min-h-[400px]"},T6={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-5 sm:p-6",style:{"animation-delay":"0.05s"}},R6={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-5 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},j6={class:"w-full sm:w-72"},P6={class:"flex items-center gap-3 py-1"},E6={class:"font-bold text-lg"},D6={class:"flex flex-col min-w-0"},F6={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},O6={class:"text-xs font-mono text-[var(--td-text-color-secondary)] mt-0.5 truncate"},N6={key:0,class:"inline-flex items-center px-2.5 py-1 rounded-md bg-[var(--color-success)]/10 text-[var(--color-success)] font-extrabold text-[11px] tracking-wider uppercase border border-[var(--color-success)]/20 shadow-sm"},K6={key:1,class:"inline-flex items-center px-2.5 py-1 rounded-md bg-[var(--color-primary)]/10 text-[var(--color-primary)] font-extrabold text-[11px] tracking-wider uppercase border border-[var(--color-primary)]/20 shadow-sm"},q6={class:"flex items-center gap-1.5"},H6={key:1,class:"text-xs font-mono font-medium text-[var(--td-text-color-secondary)]"},W6={key:2,class:"text-xs font-medium px-2 py-0.5 rounded-full bg-zinc-100 dark:bg-zinc-800 text-[var(--td-text-color-secondary)]"},G6={class:"flex items-center gap-1"},J6={class:"grid grid-cols-1 sm:grid-cols-2 gap-x-4"},X6={key:0,class:"text-[11px] text-[var(--td-text-color-secondary)] mt-1 inline-block"},Q6={class:"flex items-center gap-3 bg-zinc-50 dark:bg-zinc-800/50 p-3 rounded-xl border border-[var(--td-component-border)] w-full mt-1"},Y6=de({__name:"index",setup(a){const s=y(!1),r=y([]),d=y(""),i=Be(),c=Lo(),f=At(),n=y(!1),v=y("create"),I=y(!1),u=qe({id:"",username:"",name:"",password:"",role:"admin",resetApiKey:!1,resources:[]}),R={username:[{required:!0,message:"请输入用户名",type:"error"}],role:[{required:!0,message:"请选择角色",type:"error"}],password:[{validator:U=>v.value==="create"&&!U?{result:!1,message:"创建用户时密码必填",type:"error"}:!0}]},b=te(()=>[{label:"实例 (Server)",children:f.instanceList.map(U=>({label:`[${U.id??U.ID}] ${U.name??U.Name}`,value:`server:${U.id??U.ID}`}))},{label:"隧道 (FRP)",children:c.frpList.map(U=>({label:`[${U.id??U.ID}] ${U.name??U.Name}`,value:`frp:${U.id??U.ID}`}))}]),A=te(()=>[{colKey:"info",title:"用户信息",width:200,fixed:"left",cell:"info-slot"},{colKey:"role",title:"角色",width:100,cell:"role-slot"},{colKey:"lastLogin",title:"最后登录",width:180,cell:"time-slot",className:"hidden-xs"},{colKey:"op",title:"操作",width:140,fixed:"right",cell:"op-slot"}]),p=te(()=>{if(!d.value)return r.value;const U=d.value.toLowerCase();return r.value.filter(D=>D.username.toLowerCase().includes(U)||D.name&&D.name.toLowerCase().includes(U))}),k=async()=>{s.value=!0;try{const U=await A6();r.value=U}catch(U){M.error(U.message||"获取用户列表失败")}finally{s.value=!1}},g=()=>{v.value="create",u.id="",u.username="",u.name="",u.password="",u.role="user",u.resetApiKey=!1,u.resources=[],n.value=!0},B=U=>{v.value="edit",u.id=U.id,u.username=U.username,u.name=U.name,u.password="",u.role=U.role,u.resetApiKey=!1,u.resources=U.resources?[...U.resources]:[],n.value=!0},C=async({validateResult:U})=>{if(U===!0){I.value=!0;try{v.value==="create"?(await S6({username:u.username,password:u.password,name:u.name,role:u.role,resources:u.role==="admin"?[]:u.resources}),M.success("用户创建成功")):(await I6(u.id,{name:u.name,password:u.password||void 0,role:u.role,resetApiKey:u.resetApiKey,resources:u.role==="admin"?[]:u.resources}),M.success("用户更新成功")),n.value=!1,k()}catch(D){M.error(D.message||"操作失败")}finally{I.value=!1}}},T=U=>{const D=Ke.confirm({header:"删除警告",body:`确定要删除用户 "${U.username}" 吗?此操作不可恢复。`,theme:"danger",onConfirm:async()=>{try{D.hide(),await V6(U.id),M.success("删除成功"),k()}catch(N){M.error(N.message||"删除失败")}}})};return ze(()=>{k(),c.getTunnels(),f.refreshInstanceList()}),(U,D)=>{const N=h("t-button"),P=h("t-input"),j=h("t-avatar"),O=h("time-icon"),$=h("t-table"),V=h("t-form-item"),_=h("t-radio-button"),z=h("t-radio-group"),E=h("t-alert"),F=h("t-select"),X=h("t-checkbox"),q=h("t-form"),H=h("t-dialog");return l(),x("div",U6,[e("div",M6,[D[10]||(D[10]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex flex-col"},[e("h2",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"用户管理"),e("span",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 font-medium"},"管理系统内的账户权限与实例资源分配")])],-1)),e("div",L6,[t(N,{variant:"dashed",onClick:k},{icon:o(()=>[t(w(Pe))]),default:o(()=>[D[8]||(D[8]=m(" 刷新数据 ",-1))]),_:1}),t(N,{theme:"primary",onClick:g},{icon:o(()=>[t(w(at))]),default:o(()=>[D[9]||(D[9]=m(" 新增用户 ",-1))]),_:1})])]),e("div",B6,[e("div",T6,[e("div",R6,[D[11]||(D[11]=e("div",{class:"text-base font-bold text-[var(--td-text-color-primary)]"},"用户列表",-1)),e("div",j6,[t(P,{modelValue:d.value,"onUpdate:modelValue":D[0]||(D[0]=J=>d.value=J),placeholder:"搜索用户名或昵称",clearable:""},{"prefix-icon":o(()=>[t(w(_o),{class:"opacity-60"})]),_:1},8,["modelValue"])])]),t($,{"row-key":"id",data:p.value,columns:A.value,loading:s.value,hover:!0,pagination:{defaultPageSize:20,total:p.value.length,showJumper:!0},class:"!bg-transparent","table-layout":"auto"},{"info-slot":o(({row:J})=>[e("div",P6,[t(j,{image:J.avatar,size:"44px",shape:"circle",class:"shrink-0 ring-2 ring-zinc-100 dark:ring-zinc-700/50 shadow-sm !bg-[var(--color-primary)]/10 !text-[var(--color-primary)]","hide-on-load-failed":!1},{default:o(()=>[e("span",E6,S(J.name?J.name[0].toUpperCase():"U"),1)]),_:2},1032,["image"]),e("div",D6,[e("div",F6,S(J.name||"未设置昵称"),1),e("div",O6,"@"+S(J.username),1)])])]),"role-slot":o(({row:J})=>[J.role==="admin"?(l(),x("span",N6," 管理员 ")):(l(),x("span",K6," 普通用户 "))]),"time-slot":o(({row:J})=>[e("div",q6,[J.lastLoginTime?(l(),W(O,{key:0,class:"text-[var(--color-primary)] opacity-70",size:"14px"})):K("",!0),J.lastLoginTime?(l(),x("span",H6,S(new Date(J.lastLoginTime).toLocaleString()),1)):(l(),x("span",W6,"从未登录"))])]),"op-slot":o(({row:J})=>[e("div",G6,[t(N,{variant:"text",theme:"primary",size:"small",class:"hover:!bg-[var(--color-primary)]/10",onClick:ae=>B(J)},{default:o(()=>[...D[12]||(D[12]=[m(" 编辑 ",-1)])]),_:1},8,["onClick"]),D[14]||(D[14]=e("div",{class:"w-[1px] h-3 bg-zinc-200 dark:bg-zinc-700 mx-1"},null,-1)),t(N,{variant:"text",theme:"danger",size:"small",class:"hover:!bg-red-500/10",disabled:J.id===w(i).userInfo.id||J.username==="admin",onClick:ae=>T(J)},{default:o(()=>[...D[13]||(D[13]=[m(" 删除 ",-1)])]),_:1},8,["disabled","onClick"])])]),_:1},8,["data","columns","loading","pagination"])])]),t(H,{visible:n.value,"onUpdate:visible":D[7]||(D[7]=J=>n.value=J),header:v.value==="create"?"新增用户":"编辑用户","confirm-btn":{content:"提交保存",loading:I.value,theme:"primary"},"on-confirm":()=>U.$refs.formRef.submit(),width:"520px",placement:"center"},{default:o(()=>[t(q,{ref:"formRef",data:u,rules:R,"label-align":"top",onSubmit:C,class:"mt-4"},{default:o(()=>[e("div",J6,[t(V,{label:"登录账号",name:"username"},{default:o(()=>[t(P,{modelValue:u.username,"onUpdate:modelValue":D[1]||(D[1]=J=>u.username=J),placeholder:"请输入英文/数字账号",disabled:v.value==="edit"},null,8,["modelValue","disabled"])]),_:1}),t(V,{label:"显示昵称",name:"name"},{default:o(()=>[t(P,{modelValue:u.name,"onUpdate:modelValue":D[2]||(D[2]=J=>u.name=J),placeholder:"请输入前台展示名称"},null,8,["modelValue"])]),_:1})]),t(V,{label:"账户角色",name:"role"},{default:o(()=>[t(z,{modelValue:u.role,"onUpdate:modelValue":D[3]||(D[3]=J=>u.role=J),variant:"default-filled"},{default:o(()=>[t(_,{value:"user"},{default:o(()=>[...D[15]||(D[15]=[m("普通用户",-1)])]),_:1}),t(_,{value:"admin"},{default:o(()=>[...D[16]||(D[16]=[m("全局管理员",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),u.role==="user"?(l(),x(re,{key:0},[u.role==="user"?(l(),W(V,{key:0,"label-width":"0"},{default:o(()=>[t(E,{theme:"warning",variant:"light",title:"资源权限限制说明"},{message:o(()=>[...D[17]||(D[17]=[m("资源分配仅实现基础权限隔离,实例文件系统并非物理隔离。用户可能通过程序路径穿越访问敏感数据,请仅在信任伙伴间使用,",-1),e("strong",{style:{color:"var(--td-error-color)"}},"严禁用于商业化用途",-1),m("。 ",-1)])]),_:1})]),_:1})):K("",!0),t(V,{label:"分配资源",name:"resources"},{help:o(()=>[...D[18]||(D[18]=[e("span",{class:"text-[11px] text-[var(--td-text-color-secondary)] mt-1 inline-block"},"该用户将获得以上选定实例和隧道的完整控制权",-1)])]),default:o(()=>[t(F,{modelValue:u.resources,"onUpdate:modelValue":D[4]||(D[4]=J=>u.resources=J),multiple:"",filterable:"",clearable:"",options:b.value,placeholder:"搜索或选择要分配的实例与隧道"},null,8,["modelValue","options"])]),_:1})],64)):K("",!0),t(V,{label:"密码设置",name:"password"},{help:o(()=>[v.value==="edit"?(l(),x("span",X6,"留空则保持原密码不变")):K("",!0)]),default:o(()=>[t(P,{modelValue:u.password,"onUpdate:modelValue":D[5]||(D[5]=J=>u.password=J),type:"password",placeholder:"设置新密码",autocomplete:"new-password"},null,8,["modelValue"])]),_:1}),v.value==="edit"?(l(),W(V,{key:1,label:"开发者选项"},{default:o(()=>[e("div",Q6,[t(X,{modelValue:u.resetApiKey,"onUpdate:modelValue":D[6]||(D[6]=J=>u.resetApiKey=J)},{default:o(()=>[...D[19]||(D[19]=[m("强制重置该用户的 API Key",-1)])]),_:1},8,["modelValue"])])]),_:1})):K("",!0)]),_:1},8,["data"])]),_:1},8,["visible","header","confirm-btn","on-confirm"])])}}}),Z6=me(Y6,[["__scopeId","data-v-d4c14e83"]]),e7=Object.freeze(Object.defineProperty({__proto__:null,default:Z6},Symbol.toStringTag,{value:"Module"})),t7={class:"design-card list-item-anim relative flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},o7={class:"flex flex-col sm:flex-row items-center sm:items-start gap-6 p-6 sm:p-8 pb-8 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 relative overflow-hidden"},a7={class:"font-extrabold text-3xl"},s7={class:"flex flex-col items-center sm:items-start gap-2.5 pt-1 z-10 w-full"},l7={class:"flex flex-col sm:flex-row items-center gap-3"},r7={class:"text-2xl font-extrabold tracking-tight text-[var(--td-text-color-primary)] m-0 leading-none"},n7={key:0,class:"inline-flex items-center px-2.5 py-1 rounded-md bg-[var(--color-success)]/10 text-[var(--color-success)] font-extrabold text-[11px] tracking-wider uppercase border border-[var(--color-success)]/20 shadow-sm"},i7={key:1,class:"inline-flex items-center px-2.5 py-1 rounded-md bg-[var(--color-primary)]/10 text-[var(--color-primary)] font-extrabold text-[11px] tracking-wider uppercase border border-[var(--color-primary)]/20 shadow-sm"},d7={class:"flex flex-col sm:flex-row items-center gap-2 sm:gap-4 text-sm mt-1"},c7={class:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-zinc-100/80 dark:bg-zinc-900/50 border border-[var(--td-component-border)] text-[var(--td-text-color-secondary)] font-mono font-medium shadow-inner"},u7={key:0,class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)] font-medium"},m7={class:"font-mono"},p7={class:"p-5 sm:p-6 sm:px-8 pt-6"},v7={class:"flex flex-col items-start gap-3 w-full"},f7={class:"w-full"},b7={class:"flex items-center gap-1"},x7={key:0,class:"flex items-center gap-3"},g7={class:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-[var(--color-success)]/10 text-[var(--color-success)] font-bold text-xs border border-[var(--color-success)]/20 shadow-sm"},h7={class:"font-mono ml-1 opacity-80"},y7={key:1},_7={key:1,class:"bg-zinc-50/50 dark:bg-zinc-800/30 p-4 rounded-xl border border-[var(--td-component-border)] mt-4 w-full"},w7={class:"mt-8 pt-5 border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60"},k7=de({__name:"UserProfileCard",setup(a,{expose:s}){const r=Be(),d=y(!1),i=y(!1),c=y(!1),f=y(""),n=y(""),v=y("qq"),I=qe({id:"",username:"",name:"",avatar:"",role:"",apiKey:"",lastLoginTime:"",openMSLID:""}),u=qe({changePassword:!1,newPassword:"",confirmPassword:""}),R=async()=>{d.value=!0;try{const D=await Ka();Object.assign(I,D),f.value=D.username;const N=D.avatar&&D.avatar.match(/nk=(\d+)/);N&&N[1]?(v.value="qq",n.value=N[1]):v.value="custom"}catch(D){M.error(D.message||"用户加载失败")}finally{d.value=!1}};_e(n,D=>{v.value==="qq"&&D&&(I.avatar=`https://q.qlogo.cn/g?b=qq&nk=${D}&s=640`)});const b=D=>{D==="qq"&&n.value&&(I.avatar=`https://q.qlogo.cn/g?b=qq&nk=${n.value}&s=640`)},A=()=>{I.apiKey&&navigator.clipboard.writeText(I.apiKey).then(()=>{M.success("API Key 已复制")})},p=()=>{const D=Ke.confirm({header:"重置 API 密钥",theme:"warning",body:"重置后,所有使用旧 Key 的外部工具将立即失效,确定要继续吗?",onConfirm:async()=>{try{D.hide(),await qa({resetApiKey:!0}),M.success("API Key 重置成功");const N=await Ka();I.apiKey=N.apiKey}catch(N){M.error(N.message||"重置失败")}}})},k=async()=>{if(u.changePassword){if(!u.newPassword){M.warning("请输入新密码");return}if(u.newPassword!==u.confirmPassword){M.error("两次输入的密码不一致");return}}const D=I.username!==f.value,N=u.changePassword&&!!u.newPassword;i.value=!0;try{const P={username:I.username,name:I.name,avatar:I.avatar,password:N?u.newPassword:void 0,resetApiKey:!1};await qa(P),u.changePassword=!1,u.newPassword="",u.confirmPassword="",f.value=I.username,M.success("个人信息保存成功"),D||N?Ke.alert({header:"重新登录",body:"账号或密码已变更,请重新登录以生效。",confirmBtn:"去登录",onConfirm:async()=>{await r.logout(),window.location.reload()}}):await r.getUserInfo()}catch(P){M.error(P.message)}finally{i.value=!1}};s({initData:R});const g=y(!1),B=async()=>{g.value=!0;try{const D=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);localStorage.setItem("oauth_state",D);const N=`${window.location.origin}/oauth/callback?mode=bind`,P=await Z.get({url:"/api/auth/oauth/url",params:{state:D,callback:N}});P&&P.url?window.location.href=P.url:(M.error(P.message||"获取绑定地址失败"),g.value=!1)}catch(D){M.error(D.message||"请求失败"),g.value=!1}},C=()=>{const D=Ke.confirm({header:"解除绑定",theme:"warning",body:"确定要解除与 MSL 账户的绑定吗?解绑后您将无法使用 MSL 账户快捷登录。",onConfirm:async()=>{try{D.hide(),await Z.post({url:"/api/auth/oauth/unbind"}),M.success("解绑成功"),await R()}catch(N){M.error(N.message||"解绑失败")}}})},T=y(!1),U=()=>{T.value||(T.value=!0,setTimeout(()=>{T.value=!1},600))};return(D,N)=>{const P=h("t-avatar"),j=h("t-radio-button"),O=h("t-radio-group"),$=h("t-input"),V=h("t-form-item"),_=h("t-icon"),z=h("t-button"),E=h("t-switch"),F=h("t-form"),X=h("t-loading");return l(),x("div",t7,[t(X,{loading:d.value,"show-overlay":""},{default:o(()=>[e("div",o7,[N[10]||(N[10]=e("div",{class:"absolute -top-10 -right-10 w-40 h-40 bg-[var(--color-primary)]/5 rounded-full blur-3xl pointer-events-none"},null,-1)),e("div",{class:"relative shrink-0 group cursor-pointer",onClick:U},[e("div",{class:ue(["absolute inset-0 rounded-full z-0 pointer-events-none transition-opacity",T.value?"animate-magic-burst":"opacity-0"]),style:{background:"radial-gradient(circle, var(--color-primary-light) 0%, transparent 70%)"}},null,2),t(P,{image:I.avatar,size:"84px",shape:"circle",class:ue(["ring-4 ring-white dark:ring-zinc-800 shadow-lg !bg-[var(--color-primary)]/10 !text-[var(--color-primary)] z-10 transition-all duration-300 relative",[T.value?"animate-jelly-pop":"group-hover:scale-105 group-hover:-rotate-6 group-hover:shadow-xl group-hover:shadow-[var(--color-primary)]/20"]])},{default:o(()=>[e("span",a7,S(I.name?I.name.slice(0,1).toUpperCase():"U"),1)]),_:1},8,["image","class"])]),e("div",s7,[e("div",l7,[e("h1",r7,S(I.name||"未设置昵称"),1),I.role==="admin"?(l(),x("span",n7," 管理员 ")):(l(),x("span",i7," 普通用户 "))]),e("div",d7,[e("div",c7,[N[8]||(N[8]=e("span",{class:"text-[var(--td-text-color-secondary)] font-bold"},"@",-1)),m(S(I.username),1)]),I.lastLoginTime?(l(),x("div",u7,[t(w(pt),{class:"opacity-70 text-[var(--color-primary)]",size:"14px"}),N[9]||(N[9]=m(" 上次登录: ",-1)),e("span",m7,S(new Date(I.lastLoginTime).toLocaleString()),1)])):K("",!0)])])]),e("div",p7,[t(F,{ref:"userForm",data:I,"label-width":120,"label-align":"left",onSubmit:k},{default:o(()=>[t(V,{label:"头像设置"},{default:o(()=>[e("div",v7,[t(O,{modelValue:v.value,"onUpdate:modelValue":N[0]||(N[0]=q=>v.value=q),variant:"default-filled",onChange:b},{default:o(()=>[t(j,{value:"qq"},{default:o(()=>[t(w(ql),{class:"opacity-80"}),N[11]||(N[11]=m(" QQ头像",-1))]),_:1}),t(j,{value:"custom"},{default:o(()=>[t(w(Bt),{class:"opacity-80"}),N[12]||(N[12]=m(" 链接",-1))]),_:1})]),_:1},8,["modelValue"]),e("div",f7,[v.value==="qq"?(l(),W($,{key:0,modelValue:n.value,"onUpdate:modelValue":N[1]||(N[1]=q=>n.value=q),placeholder:"输入 QQ 号自动获取头像",type:"number"},{"prefix-icon":o(()=>[t(w(ds),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])):(l(),W($,{key:1,modelValue:I.avatar,"onUpdate:modelValue":N[2]||(N[2]=q=>I.avatar=q),placeholder:"请输入图片 URL 链接"},{"prefix-icon":o(()=>[t(w(is),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"]))])])]),_:1}),t(V,{label:"用户昵称",name:"name"},{default:o(()=>[t($,{modelValue:I.name,"onUpdate:modelValue":N[3]||(N[3]=q=>I.name=q),placeholder:"设置前台显示的名称"},null,8,["modelValue"])]),_:1}),t(V,{label:"登录账号",name:"username"},{default:o(()=>[t($,{modelValue:I.username,"onUpdate:modelValue":N[4]||(N[4]=q=>I.username=q),placeholder:"登录唯一标识"},null,8,["modelValue"])]),_:1}),t(V,{label:"API Key"},{help:o(()=>[...N[13]||(N[13]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"用于 MSLX 桌面版或第三方工具连接的凭证,请妥善保管。",-1)])]),default:o(()=>[t($,{value:I.apiKey,type:c.value?"text":"password",readonly:"",placeholder:"点击重置生成全新 Key",class:"!font-mono !bg-zinc-50/50 dark:!bg-zinc-900/30"},{suffix:o(()=>[e("div",b7,[t(z,{variant:"text",size:"small",class:"hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)] !h-auto !w-auto !p-1.5 !rounded-md",title:"复制",onClick:A},{default:o(()=>[t(_,{name:"file-copy"})]),_:1}),N[14]||(N[14]=e("div",{class:"w-[1px] h-3 bg-zinc-200 dark:bg-zinc-700 mx-0.5"},null,-1)),t(z,{variant:"text",theme:"danger",size:"small",class:"hover:!bg-red-500/10 hover:!text-red-500 !h-auto !w-auto !p-1.5 !rounded-md",title:"重置 Key",onClick:p},{default:o(()=>[t(w(Pe))]),_:1})])]),_:1},8,["value","type"])]),_:1}),w(Ls)()?K("",!0):(l(),x(re,{key:0},[N[19]||(N[19]=e("div",{class:"h-px bg-dashed border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60 my-6"},null,-1)),t(V,{label:"MSL 账户绑定"},{help:o(()=>[...N[15]||(N[15]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1.5 inline-block"},"绑定后可使用 MSL 账户一键快捷登录本控制台。",-1)])]),default:o(()=>[I.openMSLID&&I.openMSLID!=="0"?(l(),x("div",x7,[e("span",g7,[t(w(Lt),{size:"15px"}),N[16]||(N[16]=m(" 已绑定 ",-1)),e("span",h7,"(UID: "+S(I.openMSLID)+")",1)]),t(z,{theme:"danger",variant:"text",size:"small",class:"hover:!bg-red-500/10",onClick:C},{default:o(()=>[...N[17]||(N[17]=[m(" 解除绑定 ",-1)])]),_:1})])):(l(),x("div",y7,[t(z,{theme:"primary",variant:"outline",loading:g.value,class:"!border-[var(--color-primary)]/30 hover:!bg-[var(--color-primary)]/10",onClick:B},{icon:o(()=>[t(w(Bt))]),default:o(()=>[N[18]||(N[18]=m(" 绑定 MSL 账户 ",-1))]),_:1},8,["loading"])]))]),_:1})],64)),N[21]||(N[21]=e("div",{class:"h-px bg-dashed border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60 my-6"},null,-1)),t(V,{label:"修改密码"},{default:o(()=>[t(E,{modelValue:u.changePassword,"onUpdate:modelValue":N[5]||(N[5]=q=>u.changePassword=q)},null,8,["modelValue"])]),_:1}),u.changePassword?(l(),x("div",_7,[t(V,{label:"新密码","required-mark":"","label-width":"80"},{default:o(()=>[t($,{modelValue:u.newPassword,"onUpdate:modelValue":N[6]||(N[6]=q=>u.newPassword=q),type:"password",placeholder:"请输入新密码"},{"prefix-icon":o(()=>[t(w(Ot),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])]),_:1}),t(V,{label:"确认密码","required-mark":"","label-width":"80",class:"!mb-0 mt-4"},{default:o(()=>[t($,{modelValue:u.confirmPassword,"onUpdate:modelValue":N[7]||(N[7]=q=>u.confirmPassword=q),type:"password",placeholder:"请再次输入新密码确认"},{"prefix-icon":o(()=>[t(w(Lt),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])]),_:1})])):K("",!0),e("div",w7,[t(z,{theme:"primary",type:"submit",loading:i.value,class:"!h-10 !w-full sm:!w-auto sm:!px-10 !font-bold tracking-widest !rounded-xl shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow"},{default:o(()=>[...N[20]||(N[20]=[m(" 保存个人资料 ",-1)])]),_:1},8,["loading"])])]),_:1},8,["data"])])]),_:1},8,["loading"])])}}}),$7=me(k7,[["__scopeId","data-v-5a8b9e90"]]),z7={class:"design-card relative flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},C7={class:"p-5 sm:p-6 sm:px-8"},A7={class:"flex items-center justify-between mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},S7={class:"flex items-center gap-3"},I7={class:"flex items-center gap-2 w-full sm:w-96"},V7={class:"flex-1"},U7={class:"w-24 shrink-0"},M7={class:"mt-8 pt-5 border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60"},L7=de({__name:"SystemSettingsCard",emits:["refresh"],setup(a,{expose:s,emit:r}){const d=pa(),i=y(!1),c=y(!1),f=qe({fireWallBanLocalAddr:!1,openWebConsoleOnLaunch:!0,neoForgeInstallerMirrors:"MSL Mirrors",listenHost:"localhost",listenPort:1027,oAuthMSLClientID:"",oAuthMSLClientSecret:""}),n=[{label:"官方源 (较慢)",value:"Official"},{label:"MSL镜像源 (推荐)",value:"MSL Mirrors"},{label:"MSL镜像源 - 备用",value:"MSL Mirrors Backup"}],v=r,I=async()=>{i.value=!0;try{const A=await Vn();Object.assign(f,A)}catch(A){M.error(A.message||"系统设置加载失败")}finally{i.value=!1}},u=async()=>{c.value=!0;try{await Un(f),M.success("系统设置保存成功")}catch(A){M.error(A.message)}finally{c.value=!1}},R=()=>{I(),v("refresh")};s({initData:I});const b=y("");return ze(()=>{b.value=`${window.location.origin}/oauth/callback`}),(A,p)=>{const k=h("refresh-icon"),g=h("t-button"),B=h("t-form-item"),C=h("t-switch"),T=h("t-select"),U=h("t-input"),D=h("t-icon"),N=h("t-form"),P=h("t-loading");return l(),x("div",z7,[t(P,{loading:i.value,"show-overlay":""},{default:o(()=>[e("div",C7,[e("div",A7,[p[12]||(p[12]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"w-1.5 h-5 bg-[var(--color-primary)] rounded-full shadow-[0_0_8px_var(--color-primary-light)] opacity-90"}),e("h2",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none tracking-tight"},"系统偏好设置")],-1)),t(g,{variant:"dashed",size:"small",class:"!bg-transparent",onClick:R},{icon:o(()=>[t(k)]),default:o(()=>[p[11]||(p[11]=m(" 刷新数据 ",-1))]),_:1})]),t(N,{ref:"sysForm",data:f,"label-width":140,"label-align":"left",onSubmit:u},{default:o(()=>[p[25]||(p[25]=e("div",{class:"flex items-center gap-3 mt-2 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"守护进程"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),t(B,{label:"软件更新"},{default:o(()=>[t(g,{theme:"default",loading:w(d).loading,class:"!bg-zinc-50 dark:!bg-zinc-800/50 hover:!bg-zinc-100 dark:hover:!bg-zinc-800 !border-zinc-200/80 dark:!border-zinc-700/80 !text-zinc-700 dark:!text-zinc-300",onClick:p[0]||(p[0]=j=>w(d).checkAppUpdate(!0))},{icon:o(()=>[t(w(la),{class:"opacity-70"})]),default:o(()=>[p[13]||(p[13]=m(" 检查更新 ",-1))]),_:1},8,["loading"])]),_:1}),t(B,{label:"自动打开控制台"},{help:o(()=>[...p[14]||(p[14]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"MSLX 守护进程启动成功后,是否自动登录网页端控制台。",-1)])]),default:o(()=>[t(C,{modelValue:f.openWebConsoleOnLaunch,"onUpdate:modelValue":p[1]||(p[1]=j=>f.openWebConsoleOnLaunch=j)},null,8,["modelValue"])]),_:1}),t(B,{label:"安装镜像源"},{help:o(()=>[...p[15]||(p[15]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"选择在自动安装 NeoForge / Forge 时所使用的镜像源。",-1)])]),default:o(()=>[t(T,{modelValue:f.neoForgeInstallerMirrors,"onUpdate:modelValue":p[2]||(p[2]=j=>f.neoForgeInstallerMirrors=j),options:n,class:"!w-full sm:!w-72"},null,8,["modelValue"])]),_:1}),w(Ls)()?K("",!0):(l(),x(re,{key:0},[p[19]||(p[19]=e("div",{class:"flex items-center gap-3 mt-8 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"MSL OAuth 2.0"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),t(B,{label:"Client ID"},{default:o(()=>[t(U,{modelValue:f.oAuthMSLClientID,"onUpdate:modelValue":p[3]||(p[3]=j=>f.oAuthMSLClientID=j),placeholder:"请输入 Client ID",class:"!w-full sm:!w-96"},{"prefix-icon":o(()=>[t(w(st),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])]),_:1}),t(B,{label:"Client Secret"},{help:o(()=>[...p[16]||(p[16]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"配置 MSL OAuth 2.0 后即可使用您的 MSL 账号一键登录控制台。",-1)])]),default:o(()=>[t(U,{modelValue:f.oAuthMSLClientSecret,"onUpdate:modelValue":p[4]||(p[4]=j=>f.oAuthMSLClientSecret=j),type:"password",placeholder:"请输入 Client Secret",class:"!w-full sm:!w-96"},{"prefix-icon":o(()=>[t(w($a),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])]),_:1}),t(B,{label:"回调地址"},{help:o(()=>[...p[17]||(p[17]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"请将此地址复制并填入 MSL 用户中心 OAuth 应用配置的 [回调地址] 中。",-1)])]),default:o(()=>[t(U,{value:b.value,readonly:"",placeholder:"正在获取当前域名...",class:"!w-full sm:!w-96 !bg-zinc-50/50 dark:!bg-zinc-900/30"},{"prefix-icon":o(()=>[t(w(Bt),{class:"opacity-60 text-zinc-400"})]),suffix:o(()=>[t(g,{variant:"text",shape:"square",class:"hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)] !h-auto !w-auto !p-1.5 !rounded-md",onClick:p[5]||(p[5]=j=>w(go)(b.value,!0,"回调地址复制成功"))},{default:o(()=>[t(D,{name:"file-copy"})]),_:1})]),_:1},8,["value"])]),_:1}),t(B,{label:"配置教程"},{default:o(()=>[t(g,{theme:"default",class:"!bg-[var(--color-primary)]/10 !text-[var(--color-primary)] !border-none hover:!bg-[var(--color-primary)]/20",onClick:p[6]||(p[6]=j=>w(Ie)(w(io).msl_oauth))},{icon:o(()=>[t(w(wo))]),default:o(()=>[p[18]||(p[18]=m(" 配置 MSL 账号快捷登录教程 ",-1))]),_:1})]),_:1})],64)),p[26]||(p[26]=e("div",{class:"flex items-center gap-3 mt-8 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"网络与安全"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),t(B,{label:"禁止本地访问"},{help:o(()=>[...p[20]||(p[20]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"开启后将禁止本地回环地址访问,增强安全性。",-1)])]),default:o(()=>[e("div",S7,[t(C,{modelValue:f.fireWallBanLocalAddr,"onUpdate:modelValue":p[7]||(p[7]=j=>f.fireWallBanLocalAddr=j)},null,8,["modelValue"]),e("span",{class:ue(["text-[11px] font-extrabold px-2 py-0.5 rounded-md transition-colors",f.fireWallBanLocalAddr?"bg-[var(--color-primary)]/10 text-[var(--color-primary)] border border-[var(--color-primary)]/20":"bg-zinc-100 dark:bg-zinc-800 text-zinc-500 border border-zinc-200 dark:border-zinc-700"])},S(f.fireWallBanLocalAddr?"已开启":"已关闭"),3)])]),_:1}),t(B,{label:"监听地址设置"},{help:o(()=>[...p[21]||(p[21]=[e("span",{class:"text-[11px] font-medium text-amber-500/80 dark:text-amber-500/70 mt-1 inline-block"},"设置 MSLX 守护进程的监听地址。(需要重启守护进程生效,若不明白这是干什么的请一定不要修改!)",-1)])]),default:o(()=>[e("div",I7,[e("div",V7,[t(U,{modelValue:f.listenHost,"onUpdate:modelValue":p[8]||(p[8]=j=>f.listenHost=j),placeholder:"localhost"},{"prefix-icon":o(()=>[t(w(st),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])]),p[22]||(p[22]=e("div",{class:"text-[var(--td-text-color-secondary)] font-extrabold pb-1"},":",-1)),e("div",U7,[t(U,{modelValue:f.listenPort,"onUpdate:modelValue":p[9]||(p[9]=j=>f.listenPort=j),placeholder:"1027",align:"center"},{"prefix-icon":o(()=>[t(w($a),{class:"opacity-60 text-zinc-400 hidden sm:block"})]),_:1},8,["modelValue"])])])]),_:1}),t(B,{label:"远程访问"},{default:o(()=>[t(g,{theme:"default",class:"!bg-zinc-50 dark:!bg-zinc-800/50 hover:!bg-zinc-100 dark:hover:!bg-zinc-800 !border-zinc-200/80 dark:!border-zinc-700/80 !text-zinc-700 dark:!text-zinc-300",onClick:p[10]||(p[10]=j=>w(Ie)(w(io).remote_access))},{icon:o(()=>[t(w(wo),{class:"opacity-70"})]),default:o(()=>[p[23]||(p[23]=m(" 配置远程访问说明 ",-1))]),_:1})]),_:1}),e("div",M7,[t(g,{theme:"primary",type:"submit",loading:c.value,class:"!h-10 !w-full sm:!w-auto sm:!px-10 !font-bold tracking-widest !rounded-xl shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow"},{default:o(()=>[...p[24]||(p[24]=[m(" 保存系统设置 ",-1)])]),_:1},8,["loading"])])]),_:1},8,["data"])])]),_:1},8,["loading"])])}}}),B7=me(L7,[["__scopeId","data-v-f2d6c5ab"]]),T7={class:"design-card list-item-anim relative flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},R7={class:"p-5 sm:p-6 sm:px-8"},j7={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},P7={class:"grid grid-cols-1 md:grid-cols-2 gap-x-10 gap-y-2"},E7={class:"grid grid-cols-1 md:grid-cols-2 gap-x-10 gap-y-4"},D7={class:"flex items-center gap-3 w-full"},F7={class:"mt-8 pt-5 border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60"},O7=de({__name:"WebPanelStyleCard",setup(a){const s=Gt(),r=async(d,i)=>{const c=d[0]?.raw||d.raw;if(!c)return;const f=await s.uploadImage(c);f&&(s.settings[i]=f)};return(d,i)=>{const c=h("t-button"),f=h("t-upload"),n=h("t-input"),v=h("t-form-item"),I=h("t-slider"),u=h("t-option"),R=h("t-select"),b=h("t-form"),A=h("t-loading");return l(),x("div",T7,[t(A,{loading:w(s).loading,"show-overlay":""},{default:o(()=>[e("div",R7,[e("div",j7,[i[14]||(i[14]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"w-1.5 h-6 bg-[var(--color-primary)] rounded-full shadow-[0_0_8px_var(--color-primary-light)] opacity-90"}),e("div",{class:"flex flex-col"},[e("h2",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none tracking-tight"},"面板自定义样式"),e("span",{class:"text-[11px] sm:text-xs text-amber-600/80 dark:text-amber-500/80 mt-1.5 font-medium"},"背景图相关的样式需要在面板左上角的样式面板中启用背景美化才会生效哦!")])],-1)),t(c,{variant:"dashed",size:"small",class:"!bg-transparent",onClick:i[0]||(i[0]=p=>w(Ie)(w(io).style))},{icon:o(()=>[t(w(wo))]),default:o(()=>[i[13]||(i[13]=m(" 设置文档 ",-1))]),_:1})]),t(b,{data:w(s).settings,"label-align":"top",onSubmit:w(s).saveSettings},{default:o(()=>[i[18]||(i[18]=e("div",{class:"flex items-center gap-3 mt-2 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"背景图片设置"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),t(v,{label:"浅色背景"},{help:o(()=>[...i[15]||(i[15]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"留空则使用默认的背景图哦~",-1)])]),default:o(()=>[t(n,{modelValue:w(s).settings.webPanelStyleLightBackground,"onUpdate:modelValue":i[2]||(i[2]=p=>w(s).settings.webPanelStyleLightBackground=p),placeholder:"输入完整 URL 地址或者在右边上传图片",class:"!w-full"},{suffix:o(()=>[t(f,{theme:"custom",action:"","auto-upload":!1,"show-file-list":!1,accept:"image/png, image/jpeg, image/webp",onChange:i[1]||(i[1]=p=>r(p,"webPanelStyleLightBackground"))},{default:o(()=>[t(c,{variant:"text",shape:"square",class:"hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)] !h-auto !w-auto !p-1.5 !rounded-md transition-colors",title:"上传本地图片"},{default:o(()=>[t(w(yo))]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(v,{label:"深色背景"},{default:o(()=>[t(n,{modelValue:w(s).settings.webPanelStyleDarkBackground,"onUpdate:modelValue":i[4]||(i[4]=p=>w(s).settings.webPanelStyleDarkBackground=p),placeholder:"输入完整 URL 地址或者在右边上传图片",class:"!w-full"},{suffix:o(()=>[t(f,{theme:"custom","auto-upload":!1,"show-file-list":!1,accept:"image/png, image/jpeg, image/webp",onChange:i[3]||(i[3]=p=>r(p,"webPanelStyleDarkBackground"))},{default:o(()=>[t(c,{variant:"text",shape:"square",class:"hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)] !h-auto !w-auto !p-1.5 !rounded-md transition-colors",title:"上传本地图片"},{default:o(()=>[t(w(yo))]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}),i[19]||(i[19]=e("div",{class:"flex items-center gap-3 mt-8 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"透明度调整 (0.1 - 1.0)"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),e("div",P7,[t(v,{label:"浅色背景透明度"},{default:o(()=>[t(I,{modelValue:w(s).settings.webPanelStyleLightBackgroundOpacity,"onUpdate:modelValue":i[5]||(i[5]=p=>w(s).settings.webPanelStyleLightBackgroundOpacity=p),min:.1,max:1,step:.01,"tooltip-props":{theme:"light"}},null,8,["modelValue"])]),_:1}),t(v,{label:"浅色组件透明度"},{default:o(()=>[t(I,{modelValue:w(s).settings.webPanelStyleLightComponentsOpacity,"onUpdate:modelValue":i[6]||(i[6]=p=>w(s).settings.webPanelStyleLightComponentsOpacity=p),min:.1,max:1,step:.01,"tooltip-props":{theme:"light"}},null,8,["modelValue"])]),_:1}),t(v,{label:"深色背景透明度"},{default:o(()=>[t(I,{modelValue:w(s).settings.webPanelStyleDarkBackgroundOpacity,"onUpdate:modelValue":i[7]||(i[7]=p=>w(s).settings.webPanelStyleDarkBackgroundOpacity=p),min:.1,max:1,step:.01},null,8,["modelValue"])]),_:1}),t(v,{label:"深色组件透明度"},{default:o(()=>[t(I,{modelValue:w(s).settings.webPanelStyleDarkComponentsOpacity,"onUpdate:modelValue":i[8]||(i[8]=p=>w(s).settings.webPanelStyleDarkComponentsOpacity=p),min:.1,max:1,step:.01},null,8,["modelValue"])]),_:1})]),i[20]||(i[20]=e("div",{class:"flex items-center gap-3 mt-8 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"终端设置 (毛玻璃强度/染色设置)"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),e("div",E7,[t(v,{label:"浅色模式模糊度"},{default:o(()=>[t(I,{modelValue:w(s).settings.webpPanelTerminalBlurLight,"onUpdate:modelValue":i[9]||(i[9]=p=>w(s).settings.webpPanelTerminalBlurLight=p),min:0,max:50,step:1,"input-number-props":{theme:"column",style:"width: 65px"}},{label:o(({value:p})=>[m(S(p)+"px ",1)]),_:1},8,["modelValue"])]),_:1}),t(v,{label:"深色模式模糊度"},{default:o(()=>[t(I,{modelValue:w(s).settings.webpPanelTerminalBlurDark,"onUpdate:modelValue":i[10]||(i[10]=p=>w(s).settings.webpPanelTerminalBlurDark=p),min:0,max:50,step:1,"input-number-props":{theme:"column",style:"width: 65px"}},{label:o(({value:p})=>[m(S(p)+"px ",1)]),_:1},8,["modelValue"])]),_:1}),t(v,{label:"日志染色等级"},{default:o(()=>[e("div",D7,[t(R,{modelValue:w(s).settings.webPanelColorizeLogLevel,"onUpdate:modelValue":i[11]||(i[11]=p=>w(s).settings.webPanelColorizeLogLevel=p),class:"!flex-1 sm:!flex-none sm:!w-48"},{default:o(()=>[t(u,{label:"不染色",value:0}),t(u,{label:"简约染色",value:1}),t(u,{label:"增强染色",value:2})]),_:1},8,["modelValue"]),t(c,{theme:"default",class:"!bg-zinc-100 dark:!bg-zinc-800/80 !text-zinc-600 dark:!text-zinc-400 !border-none hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)]",onClick:i[12]||(i[12]=p=>w(Ie)(w(io).style_log_colorizer))},{icon:o(()=>[t(w(Hl))]),default:o(()=>[i[16]||(i[16]=m(" 有什么区别? ",-1))]),_:1})])]),_:1})]),e("div",F7,[t(c,{theme:"primary",type:"submit",loading:w(s).submitLoading,class:"!h-10 !w-full sm:!w-auto sm:!px-10 !font-bold tracking-widest !rounded-xl shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow"},{default:o(()=>[...i[17]||(i[17]=[m(" 应用样式设置 ",-1)])]),_:1},8,["loading"])])]),_:1},8,["data","onSubmit"])])]),_:1},8,["loading"])])}}}),N7=me(O7,[["__scopeId","data-v-f0fede5e"]]),K7={class:"settings-page"},q7=de({__name:"index",setup(a){const s=Gt(),r=Be(),d=y(),i=y(),c=async()=>{const f=[];d.value&&f.push(d.value.initData()),i.value&&f.push(i.value.initData()),f.push(s.fetchSettings()),await Promise.all(f)};return ze(()=>{c()}),(f,n)=>{const v=h("t-space");return l(),x("div",K7,[t(v,{direction:"vertical",size:"large",style:{width:"100%"}},{default:o(()=>[t($7,{ref_key:"userCardRef",ref:d},null,512),w(r).isAdmin?(l(),W(B7,{key:0,ref_key:"sysCardRef",ref:i,onRefresh:c},null,512)):K("",!0),w(r).isAdmin?(l(),W(N7,{key:1})):K("",!0)]),_:1})])}}}),H7=me(q7,[["__scopeId","data-v-4a19a959"]]),W7=Object.freeze(Object.defineProperty({__proto__:null,default:H7},Symbol.toStringTag,{value:"Module"}));async function G7(){return await Z.get({url:"/build.json",baseURL:"/",params:{t:Date.now()}})}async function J7(){return await Z.get({url:"/query/changelogs?software=MSLX",baseURL:"https://api.mslmc.cn/v3"})}const X7="/assets/jpg/mslx-aowu.BKxkpLYR.jpg",Q7={class:"construction-container"},Y7={class:"content-wrapper"},Z7={class:"description"},eC={class:"progress-decoration"},tC={class:"action-area"},oC={width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",style:{"margin-right":"4px"}},aC=de({__name:"HurryUpppppppp",setup(a){const s=y(0),r=y(!1),d=["开发者收到了你的怨念!(╯°□°)╯︵ ┻━┻","正在疯狂敲击键盘中... 🔥","生产队的驴都不敢这么歇!🐴","别催了别催了,头发已经掉光了!👴","再催就把 Bug 变成 Feature!🐛","服务器正在冒烟... 💥","正在与 Bug 进行殊死搏斗!⚔️","不要急,我在试图理解我昨晚写的代码... 🤔","进度条:99%... (卡住了) 🚫","键盘冒火星子了!灭火器准备!🧯","新建文件夹 (2) - 最终版 - 绝对不改版.zip 📁","404 Developer Not Found 🤖","已读不回 (假的,正在改) 📱","正在向虚空终端请求算力... 🧠","画饼中,请稍后... 🥞","再催我就去提瓦特大陆摸鱼了!🎣","纳西妲说她想吃枣椰蜜糖,没空写代码!🍬","正在虚空终端检索:《如何 1 秒写完代码》... 🧠","知识与你分享,但 Bug 不行!📖","再催?再催就把你关进净善宫陪我一起加班!🏰","陷入了改 Bug 的花神诞祭轮回... 第168次尝试... 🔄","别急,代码还在梦境里生长呢 💤","所有的代码,皆是智慧的结晶(大概)✨","我要去上个厕所,把写不完的焦虑通通冲走!🚽","兰那罗说这行代码它不想修,它想去唱歌 🎶","或许... 我们可以用罐装知识把功能直接灌进去?🤔","这虽然是痛痛,但也是成长的过程... (指修Bug) 🩹"],i=te(()=>s.value===0?"这里正在进行一项神秘的大工程...":s.value<5?"工期正在加急!":s.value<10?"好痛!别点啦!":"呜呜呜,错啦,这就去写代码!😭"),c=()=>{s.value++,r.value=!0,setTimeout(()=>{r.value=!1},500);let f=d[Math.floor(Math.random()*d.length)];s.value>20?(f="键盘已经被敲烂了!求放过!🆘",M.error(f)):M.success(f)};return(f,n)=>{const v=h("t-progress"),I=h("t-button");return l(),x("div",Q7,[e("div",Y7,[e("div",{class:ue(["image-box",{"shake-anim":r.value}])},[...n[0]||(n[0]=[e("img",{src:X7,alt:"施工中",class:"mascot-img"},null,-1),e("div",{class:"halo"},null,-1)])],2),n[2]||(n[2]=e("h1",{class:"main-title"},"嗷呜!O(≧口≦)O",-1)),e("p",Z7,S(i.value),1),e("div",eC,[t(v,{theme:"plump",percentage:30+s.value%70,label:!1,status:"active"},null,8,["percentage"])]),e("div",tC,[t(I,{theme:"primary",size:"large",shape:"round",variant:"base",class:"urge-btn",onClick:c},{icon:o(()=>[(l(),x("svg",oC,[...n[1]||(n[1]=[e("path",{d:"M8.5 1L2 9h5v6l6.5-8h-5V1z"},null,-1)])]))]),default:o(()=>[m(" 催更 ("+S(s.value)+") ",1)]),_:1})])])])}}}),sC=me(aC,[["__scopeId","data-v-d8b4c962"]]),lC={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},rC={class:"relative min-h-[400px]"},nC={class:"flex flex-col gap-5"},iC={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6",style:{"animation-delay":"0.05s"}},dC={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4"},cC={class:"ml-4 flex-1 min-w-0"},uC={class:"font-bold text-base text-[var(--td-text-color-primary)] truncate"},mC={class:"text-[10px] font-extrabold px-2 py-0.5 rounded bg-[var(--color-primary)]/10 text-[var(--color-primary)] inline-block mt-0.5 mb-1 tracking-wider uppercase"},pC=["title"],vC={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6",style:{"animation-delay":"0.05s"}},fC={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4"},bC={class:"ml-4 flex-1 min-w-0"},xC={class:"font-bold text-base text-[var(--td-text-color-primary)] truncate"},gC={class:"text-[10px] font-extrabold px-2 py-0.5 rounded bg-[var(--color-primary)]/10 text-[var(--color-primary)] inline-block mt-0.5 mb-1 tracking-wider uppercase"},hC=["title"],yC={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6",style:{"animation-delay":"0.1s"}},_C={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6",style:{"animation-delay":"0.15s"}},wC={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4"},kC={class:"ml-4 flex-1 min-w-0"},$C={class:"font-bold text-base text-[var(--td-text-color-primary)] truncate"},zC={class:"text-[10px] font-extrabold px-2 py-0.5 rounded bg-[var(--color-success)]/10 text-[var(--color-success)] inline-block mt-0.5 mb-1 tracking-wider uppercase"},CC=["title"],AC={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6",style:{"animation-delay":"0.2s"}},SC={class:"mb-5 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 flex items-center justify-between"},IC={key:0,class:"max-h-[400px] overflow-y-auto custom-scrollbar pr-2"},VC={class:"bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] ml-1 transition-colors hover:bg-white dark:hover:bg-zinc-800"},UC={class:"flex items-center gap-3 mb-2"},MC={class:"inline-flex items-center px-2 py-0.5 rounded-md bg-[var(--color-primary)]/10 text-[var(--color-primary)] font-extrabold text-xs tracking-wider border border-[var(--color-primary)]/20"},LC={class:"flex items-center gap-1 text-xs text-[var(--td-text-color-secondary)] font-mono font-medium"},BC={class:"text-sm text-zinc-700 dark:text-zinc-300 whitespace-pre-wrap leading-relaxed"},TC={key:1,class:"flex justify-center items-center py-10"},RC={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6",style:{"animation-delay":"0.25s"}},jC={class:"mb-5 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 flex flex-col sm:flex-row sm:items-center justify-between gap-4"},PC={class:"flex items-center gap-3"},EC={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 mb-6"},DC={class:"bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center transition-colors hover:bg-white dark:hover:bg-zinc-800"},FC={class:"text-xl font-extrabold text-[var(--color-primary)] tracking-tight"},OC={class:"bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center transition-colors hover:bg-white dark:hover:bg-zinc-800"},NC={class:"text-sm font-bold text-[var(--td-text-color-primary)] flex items-center gap-1.5"},KC=["title"],qC={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)] flex items-center gap-1.5"},HC={class:"text-[11px] text-[var(--td-text-color-secondary)] mt-1 truncate font-medium"},WC={class:"border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60 pt-4"},GC={class:"flex items-center gap-2 font-bold text-sm text-zinc-700 dark:text-zinc-300 bg-zinc-50/80 dark:bg-zinc-800/50 p-3 px-4 rounded-xl border border-[var(--td-component-border)] hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors"},JC={class:"max-h-[300px] overflow-y-auto custom-scrollbar mt-3 pl-1 pr-2"},XC={class:"bg-zinc-50/50 dark:bg-zinc-800/30 p-3.5 rounded-xl border border-[var(--td-component-border)] ml-1 transition-colors hover:bg-white dark:hover:bg-zinc-800"},QC={class:"text-[11px] text-[var(--td-text-color-secondary)] font-mono mb-1.5 font-medium"},YC={class:"text-sm text-[var(--td-text-color-primary)] font-medium mb-3 leading-snug"},ZC={class:"flex items-center gap-2"},eA={class:"inline-flex items-center gap-1 text-[11px] font-bold bg-zinc-200/50 dark:bg-zinc-700/50 text-zinc-600 dark:text-zinc-300 px-2 py-0.5 rounded"},tA={class:"text-[11px] font-mono font-medium text-[var(--td-text-color-secondary)] bg-zinc-100 dark:bg-zinc-900 px-1.5 py-0.5 rounded border border-[var(--td-component-border)]"},oA={class:"flex items-center gap-2 font-bold text-sm text-zinc-700 dark:text-zinc-300 bg-zinc-50/80 dark:bg-zinc-800/50 p-3 px-4 rounded-xl border border-[var(--td-component-border)] hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors mt-2"},aA={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-3 mt-3"},sA=["title"],lA={class:"text-[10px] font-mono font-bold px-1.5 py-0.5 rounded bg-zinc-200/50 dark:bg-zinc-700/50 text-[var(--td-text-color-secondary)] shrink-0"},rA=de({__name:"index",setup(a){const s=[{name:"xiaoyu",role:"Core Developer",avatar:"https://q.qlogo.cn/headimg_dl?dst_uin=1791123970&spec=640&img_type=jpg",desc:"核心开发者"},{name:"Weheal",role:"Core Developer",avatar:"https://q.qlogo.cn/headimg_dl?dst_uin=2035582067&spec=640&img_type=jpg",desc:"核心开发者"}],r=[{name:"Hongbro886",role:"Contributors",avatar:"https://avatars.githubusercontent.com/u/185684679?s=80&v=4",desc:"帮忙修了一些bug"},{name:"chaoji233",role:"Contributors",avatar:"https://avatars.githubusercontent.com/u/126066634?s=80&v=4",desc:"重构了Chmlfrp部分功能"}],d=[{name:"GuHanDuRen",role:"Alpha Tester",avatar:"https://q.qlogo.cn/headimg_dl?dst_uin=2778318425&spec=640&img_type=jpg",desc:"最早期内部功能测试"},{name:"邱息",role:"Beta Tester",avatar:"https://q.qlogo.cn/headimg_dl?dst_uin=3687624214&spec=640&img_type=jpg",desc:"提供了宝贵的建议"},{name:"Nebula琳",role:"Beta Tester",avatar:"https://q.qlogo.cn/headimg_dl?dst_uin=3770298358&spec=640&img_type=jpg",desc:"提供了宝贵的建议"},{name:"MSLX Beta 群友们",role:"Members",avatar:"https://p.qlogo.cn/gh/839645854/839645854/0",desc:"感谢各位内测群的群友们!"}],i=y(!0),c=y(null),f=y(!0),n=y([]),v=async()=>{try{i.value=!0,c.value=await G7()}catch(R){console.error(R),M.warning("无法加载构建信息")}finally{i.value=!1}},I=async()=>{try{f.value=!0;const R=await J7();R&&(n.value=R)}catch(R){console.error("获取更新日志失败:",R)}finally{f.value=!1}},u=te(()=>c.value?.dependencies?Object.entries(c.value.dependencies).map(([R,b])=>({name:R,version:b})):[]);return ze(()=>{v(),I()}),(R,b)=>{const A=h("t-avatar"),p=h("t-loading"),k=h("t-timeline-item"),g=h("t-timeline"),B=h("t-tag"),C=h("t-collapse-panel"),T=h("t-collapse");return l(),x("div",lC,[b[15]||(b[15]=ot('

关于与更新日志

了解 MSLX 的前世今生、幕后团队以及系统构建与更新信息

logo
',1)),e("div",rC,[e("div",nC,[b[14]||(b[14]=ot('

关于 MSLX

全新一代跨平台开服工具

MSLX 是由 MSL 原班团队 MSLTeam 倾力打造的全新一代开服工具。 基于 .NET Core 10.0 环境。

它传承了 MSL 经典的 UI 设计语言,旨在让操作零门槛——无论是老用户还是新伙伴,都能即刻上手,极速部署您的 MC 服务器。 MSLX 不仅 完美支持跨平台 (Windows / macOS / Linux) 运行,相比前代,更引入了强大的 远程访问 功能,让管理更自由。

',1)),e("div",iC,[b[0]||(b[0]=ot('

开发团队

感谢以下开发者对本项目的杰出贡献
',1)),e("div",dC,[(l(),x(re,null,xe(s,U=>e("div",{key:U.name,class:"group flex items-center bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] transition-all duration-300 hover:-translate-y-1 hover:shadow-md hover:border-[var(--color-primary)]/50 hover:bg-white dark:hover:bg-zinc-800"},[t(A,{image:U.avatar,size:"56px",shape:"circle",class:"shrink-0 ring-2 ring-white dark:ring-zinc-700 shadow-sm transition-transform group-hover:scale-105"},null,8,["image"]),e("div",cC,[e("div",uC,S(U.name),1),e("div",mC,S(U.role),1),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] truncate font-medium",title:U.desc},S(U.desc),9,pC)])])),64))])]),e("div",vC,[b[1]||(b[1]=ot('

贡献者

感谢以下贡献者对项目的支持~
',1)),e("div",fC,[(l(),x(re,null,xe(r,U=>e("div",{key:U.name,class:"group flex items-center bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] transition-all duration-300 hover:-translate-y-1 hover:shadow-md hover:border-[var(--color-primary)]/50 hover:bg-white dark:hover:bg-zinc-800"},[t(A,{image:U.avatar,size:"56px",shape:"circle",class:"shrink-0 ring-2 ring-white dark:ring-zinc-700 shadow-sm transition-transform group-hover:scale-105"},null,8,["image"]),e("div",bC,[e("div",xC,S(U.name),1),e("div",gC,S(U.role),1),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] truncate font-medium",title:U.desc},S(U.desc),9,hC)])])),64))])]),e("div",yC,[b[2]||(b[2]=ot('

催更?

请点击下方按钮......
',1)),t(sC)]),e("div",_C,[b[3]||(b[3]=ot('

鸣谢

特别感谢参与内测并提供宝贵反馈的伙伴们
',1)),e("div",wC,[(l(),x(re,null,xe(d,U=>e("div",{key:U.name,class:"group flex items-center bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] transition-all duration-300 hover:-translate-y-1 hover:shadow-md hover:border-[var(--color-success)]/50 hover:bg-white dark:hover:bg-zinc-800"},[t(A,{image:U.avatar,size:"56px",shape:"circle",class:"shrink-0 ring-2 ring-white dark:ring-zinc-700 shadow-sm transition-transform group-hover:scale-105"},null,8,["image"]),e("div",kC,[e("div",$C,S(U.name),1),e("div",zC,S(U.role),1),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] truncate font-medium",title:U.desc},S(U.desc),9,CC)])])),64))])]),e("div",AC,[e("div",SC,[b[4]||(b[4]=ot('

更新日志

查看 MSLX 历史版本的所有改动记录
',1)),f.value?(l(),W(p,{key:0,size:"small"})):K("",!0)]),n.value.length>0?(l(),x("div",IC,[t(g,null,{default:o(()=>[(l(!0),x(re,null,xe(n.value,(U,D)=>(l(),W(k,{key:D,"dot-color":"primary"},{default:o(()=>[e("div",VC,[e("div",UC,[e("span",MC,S(U.version),1),e("div",LC,[t(w(pt),{size:"14px"}),m(" "+S(U.time),1)])]),e("div",BC,S(U.changes),1)])]),_:2},1024))),128))]),_:1})])):f.value?K("",!0):(l(),x("div",TC,[...b[5]||(b[5]=[e("span",{class:"text-sm font-medium text-[var(--td-text-color-secondary)] bg-zinc-50 dark:bg-zinc-800/50 px-4 py-2 rounded-full border border-[var(--td-component-border)]"},"暂无更新日志",-1)])]))]),e("div",RC,[e("div",jC,[b[7]||(b[7]=ot('

构建信息

系统底层的实时编译数据与核心依赖版本
',1)),e("div",PC,[i.value?(l(),W(p,{key:0,size:"small"})):K("",!0),c.value?(l(),W(B,{key:1,theme:"success",variant:"light",shape:"round",class:"!px-3 !font-medium"},{icon:o(()=>[t(w(Lt))]),default:o(()=>[b[6]||(b[6]=m(" 构建成功 ",-1))]),_:1})):K("",!0)])]),c.value?(l(),x(re,{key:0},[e("div",EC,[e("div",DC,[b[8]||(b[8]=e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mb-1.5 font-medium"},"当前版本",-1)),e("div",FC,S(c.value.version),1)]),e("div",OC,[b[9]||(b[9]=e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mb-1.5 font-medium"},"构建时间",-1)),e("div",NC,[t(w(pt),{class:"opacity-70 text-[var(--color-primary)]"}),m(" "+S(c.value.buildTime),1)])]),e("div",{class:"bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center transition-colors hover:bg-white dark:hover:bg-zinc-800",title:c.value.commitMsg},[b[10]||(b[10]=e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mb-1.5 font-medium"},"最新提交",-1)),e("div",qC,[t(w(Wl),{class:"opacity-70 text-[var(--color-primary)]"}),m(" "+S(c.value.commitId.substring(0,7)),1)]),e("div",HC," by "+S(c.value.commitAuthor),1)],8,KC),b[11]||(b[11]=ot('
核心框架
.NET 10.0Vue 3.x
',1))]),e("div",WC,[t(T,{borderless:!0},{default:o(()=>[t(C,{value:"history"},{header:o(()=>[e("div",GC,[t(w(Gl),{class:"opacity-80"}),b[12]||(b[12]=m(" 提交日志 (Commit History) ",-1))])]),default:o(()=>[e("div",JC,[t(g,null,{default:o(()=>[(l(!0),x(re,null,xe(c.value.history,U=>(l(),W(k,{key:U.commitId,"dot-color":"primary"},{default:o(()=>[e("div",XC,[e("div",QC,S(U.commitTime),1),e("div",YC,S(U.commitMsg),1),e("div",ZC,[e("span",eA,[t(w(mo),{size:"12px"}),m(" "+S(U.commitAuthor),1)]),e("span",tA,"#"+S(U.commitId.substring(0,7)),1)])])]),_:2},1024))),128))]),_:1})])]),_:1}),t(C,{value:"dependencies"},{header:o(()=>[e("div",oA,[t(w(Tt),{class:"opacity-80"}),b[13]||(b[13]=m(" 核心依赖 (Dependencies) ",-1))])]),default:o(()=>[e("div",aA,[(l(!0),x(re,null,xe(u.value,U=>(l(),x("div",{key:U.name,class:"flex items-center justify-between p-2.5 px-3.5 bg-zinc-50/80 dark:bg-zinc-800/50 border border-[var(--td-component-border)] rounded-lg shadow-sm transition-colors hover:bg-white dark:hover:bg-zinc-800 hover:border-[var(--color-primary)]/30"},[e("span",{class:"text-xs font-bold text-zinc-700 dark:text-zinc-300 truncate mr-3",title:U.name},S(U.name),9,sA),e("span",lA,S(U.version),1)]))),128))])]),_:1})]),_:1})])],64)):K("",!0)])])])])}}}),nA=me(rA,[["__scopeId","data-v-9ca38208"]]),iA=Object.freeze(Object.defineProperty({__proto__:null,default:nA},Symbol.toStringTag,{value:"Module"})),dA={key:0,class:"loading-wrapper"},cA={key:1,class:"input-group"},uA={class:"check-container"},mA={class:"btn-wrapper"},pA={key:0,class:"msl-login-wrapper"},vA={class:"reset-guide"},fA={class:"guide-item"},bA={class:"guide-title"},xA={class:"guide-item"},gA={class:"guide-title"},hA="remembered_url",Ha="remembered_username",yA=de({__name:"Login",setup(a){const s=Be(),r=pa(),d=co(),i=Ye(),c=y(!1),f=y(!1),n=y(!1),v=y(!1),I=y(!0),u=y(!1),R=qe({url:localStorage.getItem(hA)||"",username:localStorage.getItem(Ha)||"",password:"",checked:!!localStorage.getItem(Ha)}),b=y(),A=te(()=>{const B={username:[{required:!0,message:"请输入用户名",type:"error"}],password:[{required:!0,message:"请输入密码",type:"error"}]};return v.value||(B.url=[{required:!0,message:"请输入服务器地址",type:"error"}]),B}),p=async()=>{I.value=!0,await s.checkConnection("")?(v.value=!0,R.url=""):v.value=!1;try{(await Z.get({url:"/api/auth/oauth/status"})).allowOAuth&&(f.value=!0),I.value=!1}catch{I.value=!1}},k=async({validateResult:B})=>{if(B===!0){c.value=!0;try{await s.login({url:v.value?"":R.url,username:R.username,password:R.password,checked:R.checked}),M.success("登录成功");const C=i.query.redirect,T=C?decodeURIComponent(C):"/dashboard/base";d.push(T),ls.success({content:`欢迎回来!${s.userInfo.name}`,title:"MSLX 控制台"}),r.checkAppUpdate(!1)}catch(C){M.error(C.message||"登录失败,请检查账号密码")}finally{c.value=!1}}},g=async()=>{try{c.value=!0;const B=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);localStorage.setItem("oauth_state",B);const C=`${window.location.origin}/oauth/callback?mode=login`,T=await Z.get({url:"/api/auth/oauth/url",params:{state:B,callback:C}});if(T&&T.url)window.location.href=T.url;else throw new Error(T.message||"获取授权地址失败")}catch(B){M.error(B.message||"无法连接到认证服务器"),c.value=!1}};return ze(()=>{p()}),(B,C)=>{const T=h("t-loading"),U=h("t-icon"),D=h("t-input"),N=h("t-form-item"),P=h("t-checkbox"),j=h("t-link"),O=h("t-button"),$=h("t-form"),V=h("t-divider"),_=h("t-alert"),z=h("t-dialog");return l(),x("div",null,[t($,{ref_key:"form",ref:b,class:"login-form",data:R,rules:A.value,"label-width":"0",onSubmit:k},{default:o(()=>[I.value?(l(),x("div",dA,[t(T,{text:"正在连接服务...",size:"small"})])):(l(),x("div",cA,[v.value?K("",!0):(l(),W(N,{key:0,name:"url"},{default:o(()=>[t(D,{modelValue:R.url,"onUpdate:modelValue":C[0]||(C[0]=E=>R.url=E),size:"large",placeholder:"服务器地址 (如 localhost:1027)",class:"glass-input"},{"prefix-icon":o(()=>[t(U,{name:"server"})]),_:1},8,["modelValue"])]),_:1})),t(N,{name:"username"},{default:o(()=>[t(D,{modelValue:R.username,"onUpdate:modelValue":C[1]||(C[1]=E=>R.username=E),size:"large",placeholder:"请输入用户名",class:"glass-input"},{"prefix-icon":o(()=>[t(U,{name:"user"})]),_:1},8,["modelValue"])]),_:1}),t(N,{name:"password"},{default:o(()=>[t(D,{modelValue:R.password,"onUpdate:modelValue":C[3]||(C[3]=E=>R.password=E),size:"large",type:n.value?"text":"password",placeholder:"请输入密码",class:"glass-input"},{"prefix-icon":o(()=>[t(U,{name:"lock-on"})]),"suffix-icon":o(()=>[t(U,{name:n.value?"browse":"browse-off",style:{cursor:"pointer"},onClick:C[2]||(C[2]=E=>n.value=!n.value)},null,8,["name"])]),_:1},8,["modelValue","type"])]),_:1})])),e("div",uA,[t(P,{modelValue:R.checked,"onUpdate:modelValue":C[4]||(C[4]=E=>R.checked=E)},{default:o(()=>[...C[7]||(C[7]=[m("记住用户名",-1)])]),_:1},8,["modelValue"]),t(j,{theme:"primary",hover:"color",onClick:C[5]||(C[5]=E=>u.value=!0)},{default:o(()=>[...C[8]||(C[8]=[m(" 忘记密码? ",-1)])]),_:1})]),t(N,{class:"btn-container"},{default:o(()=>[e("div",mA,[t(O,{block:"",size:"large",type:"submit",class:"login-btn",loading:c.value},{default:o(()=>[...C[9]||(C[9]=[m(" 登 录 ",-1)])]),_:1},8,["loading"]),f.value?(l(),x("div",pA,[e("a",{class:"msl-link-btn",onClick:g},[t(U,{name:"user-transmit"}),C[10]||(C[10]=e("span",null,"使用 MSL 账户登录",-1))])])):K("",!0)])]),_:1})]),_:1},8,["data","rules"]),t(z,{visible:u.value,"onUpdate:visible":C[6]||(C[6]=E=>u.value=E),header:"找回或重置密码",footer:!1,width:"480px",attach:"body"},{default:o(()=>[e("div",vA,[e("div",fA,[e("div",bA,[t(U,{name:"user-talk"}),C[11]||(C[11]=m(" 方式一:联系管理员",-1))]),C[12]||(C[12]=e("p",{class:"guide-desc"},"如果系统中存在其他管理员账号,请联系对应人员协助您在后台重置密码。",-1))]),t(V,{dashed:"",style:{margin:"16px 0"}}),e("div",xA,[e("div",gA,[t(U,{name:"refresh"}),C[13]||(C[13]=m(" 方式二:初始化默认账户",-1))]),C[15]||(C[15]=e("p",{class:"guide-desc"},"若无法联系其他管理员,请在服务器端删除以下配置文件:",-1)),C[16]||(C[16]=e("div",{class:"code-block"},"DaemonData/Configs/UserList.json",-1)),e("p",null,[t(_,{style:{"margin-top":"10px"}},{default:o(()=>[...C[14]||(C[14]=[m("操作提示:删除该文件后,请",-1),e("strong",null,"重启守护进程",-1),m("。系统将自动重新创建包含默认账号密码的初始文件。",-1)])]),_:1})])])])]),_:1},8,["visible"])])}}}),_A=me(yA,[["__scopeId","data-v-b95f4e77"]]),wA={class:"login-header"},kA={class:"logo"},$A={class:"operations-container"},zA=de({__name:"Header",setup(a){const s=ut(),r=()=>{s.updateConfig({showSettingPanel:!0})},d=()=>{window.open("https://github.com/MSLTeam/MSLX")},i=()=>{window.open("https://mslx.mslmc.cn")};return(c,f)=>{const n=h("t-icon"),v=h("t-button");return l(),x("header",wA,[e("span",kA,[e("img",{src:Vo,class:ue(`${w(Je)}-side-nav-logo-img`),alt:"logo"},null,2),f[0]||(f[0]=e("span",null," MSLX 管理中心 ",-1))]),e("div",$A,[t(v,{theme:"default",shape:"square",variant:"text",onClick:d},{default:o(()=>[t(n,{name:"logo-github",class:"icon"})]),_:1}),t(v,{theme:"default",shape:"square",variant:"text",onClick:i},{default:o(()=>[t(n,{name:"help-circle",class:"icon"})]),_:1}),t(v,{theme:"default",shape:"square",variant:"text",onClick:r},{default:o(()=>[t(n,{name:"setting",class:"icon"})]),_:1})])])}}}),Fs=me(zA,[["__scopeId","data-v-c06bbccc"]]),CA={class:"login-content"},AA={class:"login-container"},SA={class:"copyright"},IA={class:"welcome-content"},VA={class:"account-card"},UA={class:"info-row"},MA={class:"label"},LA={class:"info-row"},BA={class:"label"},TA={name:"LoginIndex"},RA=de({...TA,setup(a){const s=Gt(),r=Be(),d=(n,v)=>n?n.startsWith("http")?n:`${r.baseUrl||window.location.origin}/api/static/images/${n}`:v,i=te(()=>{const n=s.settings;return{"--custom-bg-light":`url('${d(n.webPanelStyleLightBackground,ca)}')`,"--custom-bg-dark":`url('${d(n.webPanelStyleDarkBackground,ua)}')`}}),c=y(!1),f=()=>{c.value=!1;const n=new URL(window.location.href);n.searchParams.delete("initialize"),window.history.replaceState({},"",n)};return ze(()=>{s.fetchSettings(),new URLSearchParams(window.location.search).get("initialize")==="true"&&(c.value=!0)}),(n,v)=>{const I=h("t-alert"),u=h("t-button"),R=h("t-dialog");return l(),x("div",{class:"login-wrapper",style:Oe(i.value)},[t(Fs,{class:"login-header-fixed"}),e("div",CA,[e("div",AA,[v[1]||(v[1]=e("div",{class:"title-container"},[e("h1",{class:"title"},"连接到 MSLX"),e("p",{class:"sub-title"},"网页管理中心")],-1)),t(_A),e("footer",SA,"Copyright @ 2021-"+S(new Date().getFullYear())+" MSLTeam",1)])]),t(da,{class:"tdesign-setting-outside"}),t(R,{visible:c.value,"onUpdate:visible":v[0]||(v[0]=b=>c.value=b),footer:!1,"close-btn":!0,width:"480px",attach:"body",class:"welcome-dialog","on-close":f},{header:o(()=>[...v[2]||(v[2]=[e("div",{class:"dialog-header-row"},[e("span",{class:"emoji-icon"},"🎉"),e("span",{class:"header-text"},"欢迎使用 MSLX 开服器")],-1)])]),default:o(()=>[e("div",IA,[t(I,{theme:"success",class:"security-alert"},{message:o(()=>[...v[3]||(v[3]=[m(" 您似乎是第一次使用?请查阅以下信息,然后开始享受您的MC开服之旅吧~ ",-1)])]),_:1}),e("div",VA,[e("div",UA,[e("span",MA,[t(w(mo)),v[4]||(v[4]=m(" 默认账户:",-1))]),v[5]||(v[5]=e("span",{class:"value highlight"},"mslx",-1))]),e("div",LA,[e("span",BA,[t(w(Ot)),v[6]||(v[6]=m(" 默认密码:",-1))]),v[7]||(v[7]=e("span",{class:"value mono"},"请在MSLX守护进程端控制台查看",-1))])]),t(I,{theme:"warning",class:"security-alert"},{message:o(()=>[...v[8]||(v[8]=[m(" 安全提醒:请登录后",-1),e("b",null,[e("u",null,"立即修改默认的账户名和密码")],-1),m(",保障您的服务安全。 ",-1)])]),_:1}),t(u,{block:"",theme:"primary",size:"large",variant:"base",onClick:f},{icon:o(()=>[t(w(Lt))]),default:o(()=>[v[9]||(v[9]=m(" 我已知晓,立即登录 ",-1))]),_:1})])]),_:1},8,["visible"])],4)}}}),jA=me(RA,[["__scopeId","data-v-786dd78b"]]),PA=Object.freeze(Object.defineProperty({__proto__:null,default:jA},Symbol.toStringTag,{value:"Module"})),EA={class:"login-panel"},DA={class:"login-container"},FA={class:"callback-content"},OA={key:0,class:"status-box"},NA={class:"loading-icon-wrapper"},KA={class:"tip-text"},qA={key:1,class:"status-box success"},HA={class:"desc"},WA={class:"sub-desc"},GA={class:"btn-group"},JA={key:2,class:"status-box error"},XA={class:"error-msg-box"},QA={class:"btn-group"},YA={class:"copyright"},ZA=de({__name:"index",setup(a){const s=Ye(),r=co(),d=Be(),i=Gt(),c=(B,C)=>B?B.startsWith("http")?B:`${d.baseUrl||window.location.origin}/api/static/images/${B}`:C,f=te(()=>{const B=i.settings;return{"--custom-bg-light":`url('${c(B.webPanelStyleLightBackground,ca)}')`,"--custom-bg-dark":`url('${c(B.webPanelStyleDarkBackground,ua)}')`}}),n=y("loading"),v=y("正在验证身份..."),I=y(""),u=y(""),R=y(3),b=async()=>{const{code:B,state:C,mode:T}=s.query;if(!B||!C){n.value="error",I.value="无效的回调参数,缺少 Code 或 State。";return}const U=localStorage.getItem("oauth_state");if(localStorage.removeItem("oauth_state"),C!==U){n.value="error",I.value="安全校验失败 (State Mismatch),请求可能被篡改。";return}try{if(T==="login")await A(B);else if(T==="bind")await p(B);else throw new Error("未知的操作模式")}catch(D){n.value="error",I.value=D.message||"处理请求时发生未知错误"}},A=async B=>{v.value="正在登录 MSLX...";try{const C=await Z.post({url:"/api/auth/oauth/login",data:{code:B}});await d.loginByOAuth(C),n.value="success",u.value=`欢迎回来,${d.userInfo.name||C.data.userInfo?.name}`,k("/dashboard/base")}catch(C){n.value="error",I.value=C.message}},p=async B=>{v.value="正在绑定 MSL 账号...";try{await Z.post({url:"/api/auth/oauth/bind",data:{code:B}}),n.value="success",u.value="账号绑定成功!",await d.getUserInfo(),k("/settings")}catch(C){M.error(C.message)}},k=B=>{const C=setInterval(()=>{R.value--,R.value<=0&&(clearInterval(C),Ie(B))},1e3)},g=()=>{Ie("/login")};return ze(()=>{i.fetchSettings(),b()}),(B,C)=>{const T=h("t-loading"),U=h("t-button");return l(),x("div",{class:"login-wrapper",style:Oe(f.value)},[t(Fs,{class:"login-header-fixed"}),e("div",EA,[e("div",DA,[C[5]||(C[5]=e("div",{class:"title-container"},[e("h1",{style:{"margin-bottom":"10px"},class:"title"},"MSL 统一身份认证")],-1)),e("div",FA,[n.value==="loading"?(l(),x("div",OA,[e("div",NA,[t(T,{size:"large"})]),e("p",KA,S(v.value),1)])):n.value==="success"?(l(),x("div",qA,[t(w(Kt),{class:"icon-success"}),C[2]||(C[2]=e("h2",{class:"status-title"},"操作成功",-1)),e("p",HA,S(u.value),1),e("p",WA,S(R.value)+" 秒后自动跳转...",1),e("div",GA,[t(U,{block:"",size:"large",class:"login-btn",onClick:C[0]||(C[0]=D=>w(r).push("/dashboard/base"))},{default:o(()=>[...C[1]||(C[1]=[m(" 立即进入 ",-1)])]),_:1})])])):(l(),x("div",JA,[t(w(So),{class:"icon-error"}),C[4]||(C[4]=e("h2",{class:"status-title"},"操作失败",-1)),e("div",XA,S(I.value),1),e("div",QA,[t(U,{block:"",size:"large",class:"login-btn",onClick:g},{default:o(()=>[...C[3]||(C[3]=[m(" 返回登录页 ",-1)])]),_:1})])]))]),e("footer",YA,"Copyright @ 2021-"+S(new Date().getFullYear())+" MSLTeam",1)])]),t(da,{class:"tdesign-setting-outside"})],4)}}}),e9=me(ZA,[["__scopeId","data-v-4a099a27"]]),t9=Object.freeze(Object.defineProperty({__proto__:null,default:e9},Symbol.toStringTag,{value:"Module"})),o9={class:"relative flex items-center justify-center w-screen min-h-screen transition-all duration-300 bg-cover bg-center bg-no-repeat page-bg before:absolute before:inset-0 before:bg-white/20 dark:before:bg-black/40 before:transition-colors"},a9={class:"relative z-10 flex flex-col items-center text-center w-[420px] max-w-[90%] p-10 md:p-12 mx-5 bg-white/60 dark:bg-[#1e1e28]/50 backdrop-blur-xl border border-white/40 dark:border-white/15 rounded-2xl shadow-[0_8px_32px_0_rgba(0,0,0,0.2)] transition-all duration-300"},s9={class:"w-full"},l9={class:"mt-8 text-xs text-[var(--td-text-color-secondary)]/60 font-mono tracking-wider"},r9=de({__name:"index",setup(a){return ut(),(s,r)=>{const d=h("t-button");return l(),x("div",o9,[e("div",a9,[r[2]||(r[2]=e("div",{class:"mb-10 w-full"},[e("h1",{class:"text-[72px] md:text-[96px] font-bold leading-tight m-0 bg-gradient-to-br from-[#40a9ff] to-[#1890ff] dark:from-[#69c0ff] dark:to-[#40a9ff] bg-clip-text text-transparent opacity-90 select-none"}," 404 "),e("h2",{class:"text-2xl font-semibold mt-2.5 !mb-4 tracking-wide text-zinc-800 dark:text-white"}," 掉出了这个世界...... "),e("p",{class:"text-sm leading-relaxed !px-5 m-0 text-zinc-600 dark:text-zinc-300/80"},[m(" 越过基岩的边界,只剩无尽的黑夜,"),e("br"),m("请点击重生,寻回原本的世界。 ")])],-1)),e("div",s9,[t(d,{theme:"primary",size:"large",block:"",class:"!rounded-xl !h-12 !text-base shadow-lg shadow-[var(--color-primary)]/20 hover:shadow-[var(--color-primary)]/40 transition-shadow",onClick:r[0]||(r[0]=i=>w(Ie)("/"))},{default:o(()=>[...r[1]||(r[1]=[m(" 返回主页 ",-1)])]),_:1})]),e("footer",l9," Copyright @ 2021-"+S(new Date().getFullYear())+" MSLTeam ",1)])])}}}),n9=me(r9,[["__scopeId","data-v-f8d3a3f9"]]),i9=Object.freeze(Object.defineProperty({__proto__:null,default:n9},Symbol.toStringTag,{value:"Module"})); diff --git a/MSLX.Daemon/Frontend/assets/js/mslx-app-main.Te7AUO8s.js b/MSLX.Daemon/Frontend/assets/js/mslx-app-main.Te7AUO8s.js deleted file mode 100644 index a5ea769..0000000 --- a/MSLX.Daemon/Frontend/assets/js/mslx-app-main.Te7AUO8s.js +++ /dev/null @@ -1,94 +0,0 @@ -var Ha=Object.defineProperty;var Ga=(s,a,r)=>a in s?Ha(s,a,{enumerable:!0,configurable:!0,writable:!0,value:r}):s[a]=r;var Eo=(s,a,r)=>Ga(s,typeof a!="symbol"?a+"":a,r);import{d as ie,o as l,b as x,n as Oe,e as te,r as h,f as ze,h as Gs,w as Wa,i as g,j as G,k as o,l as e,m as t,F as le,p as ge,t as S,q as ce,s as it,u as H,v as co,x as _,y as Ws,z as p,A as ss,T as Rt,K as Ja,B as Ye,C as bo,D as zt,M as U,E as _e,G as Xa,H as Qa,I as Ya,J as Za,L as He,N as as,O as Lt,P as uo,Q as Js,R as ls,S as so,U as Bt,V as Ct,W as jt,X as el,Y as tl,Z as vt,_ as ho,$ as Do,a0 as yt,a1 as qe,a2 as Xs,a3 as Qs,a4 as ol,a5 as Be,a6 as Ke,a7 as Ys,a8 as Zs,a9 as Ee,aa as ot,ab as sl,ac as rs,ad as ct,ae as dt,af as al,ag as ll,ah as Kt,ai as rl,aj as Re,ak as ea,al as at,am as bt,an as nl,ao as il,ap as dl,aq as pt,ar as ao,as as _t,at as Tt,au as st,av as cl,aw as ul,ax as ml,ay as pl,az as ta,aA as oa,aB as mo,aC as vl,aD as Ot,aE as sa,aF as aa,aG as fl,aH as bl,aI as xl,aJ as gl,aK as la,aL as ra,aM as Ut,aN as Nt,aO as hl,aP as Ao,aQ as na,aR as xo,aS as No,aT as yl,aU as Ko,aV as lo,aW as yo,aX as _o,aY as qo,aZ as wo,a_ as So,a$ as ia,b0 as Io,b1 as _l,b2 as wl,b3 as kl,b4 as ns,b5 as $l,b6 as Ho,b7 as zl,b8 as Cl,b9 as Al,ba as da,bb as Sl,bc as Il,bd as ca,be as Vl,bf as Ul,bg as Ml,bh as Ll,bi as Bl,bj as Tl,bk as Rl,bl as jl,bm as Pl,bn as El,bo as Dl,bp as Fl,bq as Ol,br as Nl,bs as Kl,bt as $s,bu as ql,bv as Hl,bw as Gl}from"./mslx-core.DZWTbFWd.js";import{a3 as Go,a4 as ua,a5 as Wl,a6 as $t,a7 as Jl,a8 as Xl,a9 as Vt,aa as Ql,ab as Yl,ac as Zl,ad as oo,ae as er,af as ye,ag as ma,ah as pa}from"./mslx-libs.BfFW5N8o.js";import{i as ko,L as va}from"./mslx-charts.ByXhkWPm.js";import{o as tr,a as or,d as sr,t as ar,h as lr,e as rr,j as nr,y as ir,f as dr}from"./mslx-editor.DiM-SrP0.js";import{H as cr,w as ur,_ as mr,K as zs,T as Cs,C as pr}from"./mslx-formatter.DCunR7Lr.js";const vr="modulepreload",fr=function(s){return"/"+s},As={},We=function(a,r,d){let i=Promise.resolve();if(r&&r.length>0){let v=function(I){return Promise.all(I.map(u=>Promise.resolve(u).then(L=>({status:"fulfilled",value:L}),L=>({status:"rejected",reason:L}))))};document.getElementsByTagName("link");const f=document.querySelector("meta[property=csp-nonce]"),n=f?.nonce||f?.getAttribute("nonce");i=v(r.map(I=>{if(I=fr(I),I in As)return;As[I]=!0;const u=I.endsWith(".css"),L=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${I}"]${L}`))return;const w=document.createElement("link");if(w.rel=u?"stylesheet":vr,u||(w.as="script"),w.crossOrigin="",w.href=I,n&&w.setAttribute("nonce",n),document.head.appendChild(w),u)return new Promise((A,m)=>{w.addEventListener("load",A),w.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${I}`)))})}))}function c(f){const n=new Event("vite:preloadError",{cancelable:!0});if(n.payload=f,window.dispatchEvent(n),!n.defaultPrevented)throw f}return i.then(f=>{for(const n of f||[])n.status==="rejected"&&c(n.reason);return a().catch(c)})},br={DEFAULT:{"--td-brand-color":"#0052d9","--td-brand-color-1":"#f2f3ff","--td-brand-color-2":"#d9e1ff","--td-brand-color-3":"#b5c7ff","--td-brand-color-4":"#8eabff","--td-brand-color-5":"#618dff","--td-brand-color-6":"#366ef4","--td-brand-color-7":"#0052d9","--td-brand-color-8":"#003cab","--td-brand-color-9":"#002a7c","--td-brand-color-10":"#001a57"},CYAN:{"--td-brand-color":"#0594FA","--td-brand-color-1":"#d7eefe","--td-brand-color-2":"#aeddfd","--td-brand-color-3":"#84cafd","--td-brand-color-4":"#58b8fc","--td-brand-color-5":"#29a4fb","--td-brand-color-6":"#0594FA","--td-brand-color-7":"#29a4fb","--td-brand-color-8":"#0594FA","--td-brand-color-9":"#0378df","--td-brand-color-10":"#01409b"},GREEN:{"--td-brand-color":"#00A870","--td-brand-color-1":"#8dffd9","--td-brand-color-2":"#00f2a2","--td-brand-color-3":"#00dc92","--td-brand-color-4":"#00c583","--td-brand-color-5":"#00A870","--td-brand-color-6":"#009a5d","--td-brand-color-7":"#00c583","--td-brand-color-8":"#00A870","--td-brand-color-9":"#009a5d","--td-brand-color-10":"#004a14"},ORANGE:{"--td-brand-color":"#ED7B2F","--td-brand-color-1":"#fce5d7","--td-brand-color-2":"#f8cdaf","--td-brand-color-3":"#f4b285","--td-brand-color-4":"#f19659","--td-brand-color-5":"#ED7B2F","--td-brand-color-6":"#e75510","--td-brand-color-7":"#f19659","--td-brand-color-8":"#ED7B2F","--td-brand-color-9":"#e75510","--td-brand-color-10":"#7f0a02"},RED:{"--td-brand-color":"#E34D59","--td-brand-color-1":"#fbe5e7","--td-brand-color-2":"#f7ccd0","--td-brand-color-3":"#f3b2b8","--td-brand-color-4":"#ef989f","--td-brand-color-5":"#ea7b84","--td-brand-color-6":"#E34D59","--td-brand-color-7":"#ea7b84","--td-brand-color-8":"#E34D59","--td-brand-color-9":"#e42c3a","--td-brand-color-10":"#8d0309"},PINK:{"--td-brand-color":"#ED49B4","--td-brand-color-1":"#fce5f4","--td-brand-color-2":"#facae9","--td-brand-color-3":"#f7aede","--td-brand-color-4":"#f491d2","--td-brand-color-5":"#f172c5","--td-brand-color-6":"#ED49B4","--td-brand-color-7":"#f172c5","--td-brand-color-8":"#ED49B4","--td-brand-color-9":"#e80f9d","--td-brand-color-10":"#8f025e"},PURPLE:{"--td-brand-color":"#834EC2","--td-brand-color-1":"#eee6f7","--td-brand-color-2":"#ddceee","--td-brand-color-3":"#ccb6e6","--td-brand-color-4":"#bb9edc","--td-brand-color-5":"#ab87d5","--td-brand-color-6":"#9a6fce","--td-brand-color-7":"#9a6fce","--td-brand-color-8":"#834EC2","--td-brand-color-9":"#783ac3","--td-brand-color-10":"#4c1397"},YELLOW:{"--td-brand-color":"#EBB105","--td-brand-color-1":"#fde9ab","--td-brand-color-2":"#fbd152","--td-brand-color-3":"#EBB105","--td-brand-color-4":"#dda204","--td-brand-color-5":"#ca8d03","--td-brand-color-6":"#b67803","--td-brand-color-7":"#fbd152","--td-brand-color-8":"#EBB105","--td-brand-color-9":"#dda204","--td-brand-color-10":"#603100"}},fa={textColor:"rgba(0, 0, 0, 0.9)",placeholderColor:"rgba(0, 0, 0, 0.35)",borderColor:"#dcdcdc",containerColor:"#fff"},xr={textColor:"rgba(255, 255, 255, 0.9)",placeholderColor:"rgba(255, 255, 255, 0.35)",borderColor:"#5e5e5e",containerColor:"#242424"};function gr(s){return s.replace(/([A-Z])/g,"_$1").toUpperCase()}function hr(s,a){const r=/^#[A-F\d]{6}$/i.test(s)?s:gr(s);return a[r||"DEFAULT"]}function yr(s,a,r){const d=r==="dark";let i=a.indexOf(s);return d&&(a.reverse().map(f=>{const[n,v,I]=Go.colorTransform(f,"hex","hsl");return Go.colorTransform([n,Number(v)-4,I],"hsl","hex")}),i=5,a[0]=`${a[i]}20`),{"--td-brand-color":a[i],"--td-brand-color-1":a[0],"--td-brand-color-2":a[1],"--td-brand-color-3":a[2],"--td-brand-color-4":a[3],"--td-brand-color-5":a[4],"--td-brand-color-6":a[5],"--td-brand-color-7":i>0?a[i-1]:s,"--td-brand-color-8":a[i],"--td-brand-color-9":i>8?s:a[i+1],"--td-brand-color-10":a[9]}}function _r(s,a,r){const i=r==="dark"?`:root[theme-color='${s}'][theme-mode='dark']`:`:root[theme-color='${s}']`,c=document.createElement("style");c.type="text/css",c.innerText=`${i}{ - --td-brand-color: ${a["--td-brand-color"]}; - --td-brand-color-1: ${a["--td-brand-color-1"]}; - --td-brand-color-2: ${a["--td-brand-color-2"]}; - --td-brand-color-3: ${a["--td-brand-color-3"]}; - --td-brand-color-4: ${a["--td-brand-color-4"]}; - --td-brand-color-5: ${a["--td-brand-color-5"]}; - --td-brand-color-6: ${a["--td-brand-color-6"]}; - --td-brand-color-7: ${a["--td-brand-color-7"]}; - --td-brand-color-8: ${a["--td-brand-color-8"]}; - --td-brand-color-9: ${a["--td-brand-color-9"]}; - --td-brand-color-10: ${a["--td-brand-color-10"]}; - }`,document.head.appendChild(c)}const wr="conic-gradient(from 90deg at 50% 50%, #FF0000 -19.41deg, #FF0000 18.76deg, #FF8A00 59.32deg, #FFE600 99.87deg, #14FF00 141.65deg, #00A3FF 177.72deg, #0500FF 220.23deg, #AD00FF 260.13deg, #FF00C7 300.69deg, #FF0000 340.59deg, #FF0000 378.76deg)",kr=ie({__name:"index",props:{value:{type:String}},setup(s){const a=ut(),r=s,d=te(()=>{const{value:i}=r,{colorList:c}=a;return{background:i!=="dynamic"?hr(i,c)["--td-brand-color"]:wr}});return(i,c)=>(l(),x("div",{style:Oe(d.value),class:"color-container"},null,4))}}),ue=(s,a)=>{const r=s.__vccOpts||s;for(const[d,i]of a)r[d]=i;return r},Ss=ue(kr,[["__scopeId","data-v-f4b82387"]]),is={showFooter:!0,isSidebarCompact:!1,showBreadcrumb:!1,mode:"auto",layout:"side",splitMenu:!1,isFooterAside:!1,isSidebarFixed:!0,isHeaderFixed:!0,showHeader:!0,backgroundTheme:"blueGrey",brandTheme:"default",enableCustomTheme:!1},$r={class:"p-6 sm:p-8 space-y-10 pb-24"},zr={class:"flex flex-col items-center justify-center gap-2"},Cr={class:"text-[13px] font-medium"},Ar={class:"flex items-center justify-between p-4 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-[var(--td-component-border)] transition-colors hover:border-zinc-300 dark:hover:border-zinc-600"},Sr={class:"flex flex-col items-center justify-center gap-2"},Ir={class:"text-[13px] font-medium"},Vr=ie({__name:"setting",setup(s){const a=ut(),r=h(window.innerWidth),d=te(()=>r.value<480),i=te(()=>d.value?"85%":"408px"),c=()=>{r.value=window.innerWidth},f=[{value:"side",text:"侧边栏",icon:"view-column"},{value:"top",text:"顶栏导航",icon:"view-agenda"}],n=["default","cyan","green","yellow","orange","red","pink","purple","dynamic"],v=[{type:"auto",text:"跟随系统",icon:"desktop"},{type:"light",text:"明亮模式",icon:"sunny"},{type:"dark",text:"暗黑模式",icon:"moon"}],u=h({...(()=>{const b={...is};for(const R in b)Object.prototype.hasOwnProperty.call(b,R)&&(b[R]=a[R]);return b})()});d.value&&u.value.layout==="side"&&(u.value.layout="top");const L=h(!1),w=te({get:()=>a.showSettingPanel,set:b=>a.updateConfig({showSettingPanel:b})}),A=b=>{const R=Go.getPaletteByGradation({colors:[b],step:10})[0],{mode:C}=a,M=yr(b,R,C);a.addColor({[b]:M}),a.updateConfig({...u.value,brandTheme:b}),_r(b,M,C)};ze(()=>{const b=document.querySelector(".dynamic-color-btn");b&&b.addEventListener("click",()=>{L.value=!0}),window.addEventListener("resize",c)}),Gs(()=>{window.removeEventListener("resize",c)});const m=(b,R)=>{!b&&R.trigger==="document"&&(L.value=b)},z=()=>{a.updateConfig({showSettingPanel:!1})};return Wa(()=>{a.updateConfig({mode:u.value.mode,layout:u.value.layout,brandTheme:u.value.brandTheme,enableCustomTheme:u.value.enableCustomTheme})}),(b,R)=>{const C=g("t-icon"),M=g("t-radio-button"),B=g("t-radio-group"),D=g("t-switch"),q=g("t-color-picker-panel"),P=g("t-popup"),j=g("t-form"),K=g("t-drawer");return l(),G(K,{visible:w.value,"onUpdate:visible":R[4]||(R[4]=k=>w.value=k),size:i.value,footer:!1,header:"面板样式","close-btn":!0,class:"setting-drawer-container",onCloseBtnClick:z},{default:o(()=>[e("div",$r,[t(j,{ref:"form",data:u.value,"label-align":"left",class:"space-y-10"},{default:o(()=>[e("section",null,[R[5]||(R[5]=e("div",{class:"setting-title"},"主题模式",-1)),t(B,{modelValue:u.value.mode,"onUpdate:modelValue":R[0]||(R[0]=k=>u.value.mode=k),class:"custom-radio-group"},{default:o(()=>[(l(),x(le,null,ge(v,k=>t(M,{key:k.type,value:k.type,class:"icon-card-radio"},{default:o(()=>[e("div",zr,[t(C,{name:k.icon,class:"text-[28px] transition-transform duration-300 group-hover:scale-110"},null,8,["name"]),e("span",Cr,S(k.text),1)])]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),e("section",null,[R[7]||(R[7]=e("div",{class:"setting-title"},"个性化",-1)),e("div",Ar,[R[6]||(R[6]=e("div",{class:"flex flex-col"},[e("span",{class:"text-[14px] font-bold text-[var(--td-text-color-primary)]"},"开启背景美化"),e("span",{class:"text-[11px] text-zinc-400 mt-0.5"},"启用毛玻璃卡片与自定义壁纸")],-1)),t(D,{modelValue:u.value.enableCustomTheme,"onUpdate:modelValue":R[1]||(R[1]=k=>u.value.enableCustomTheme=k)},null,8,["modelValue"])])]),e("section",null,[R[8]||(R[8]=e("div",{class:"setting-title"},"主题色",-1)),t(B,{modelValue:u.value.brandTheme,"onUpdate:modelValue":R[2]||(R[2]=k=>u.value.brandTheme=k),class:"color-radio-group flex-wrap"},{default:o(()=>[(l(!0),x(le,null,ge(n.slice(0,-1),k=>(l(),G(M,{key:k,value:k,class:"color-dot-wrapper"},{default:o(()=>[t(Ss,{value:k},null,8,["value"])]),_:2},1032,["value"]))),128)),t(P,{"destroy-on-close":"",placement:"bottom-right",trigger:"click",visible:L.value,"overlay-style":{padding:0},onVisibleChange:m},{content:o(()=>[t(q,{class:"custom-color-picker","on-change":A,"color-modes":["monochrome"],format:"HEX","swatch-colors":[]})]),default:o(()=>[t(M,{value:n[n.length-1],class:"color-dot-wrapper dynamic-color-btn"},{default:o(()=>[t(Ss,{value:n[n.length-1]},null,8,["value"])]),_:1},8,["value"])]),_:1},8,["visible"])]),_:1},8,["modelValue"])]),e("section",null,[R[9]||(R[9]=e("div",{class:"setting-title"},"导航布局",-1)),t(B,{modelValue:u.value.layout,"onUpdate:modelValue":R[3]||(R[3]=k=>u.value.layout=k),class:"custom-radio-group"},{default:o(()=>[(l(),x(le,null,ge(f,k=>t(M,{key:k.value,value:k.value,class:"icon-card-radio"},{default:o(()=>[e("div",Sr,[t(C,{name:k.icon,class:"text-[28px] transition-transform duration-300 group-hover:scale-110"},null,8,["name"]),e("span",Ir,S(k.text),1)])]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])])]),_:1},8,["data"])])]),_:1},8,["visible","size"])}}}),ds=ue(Vr,[["__scopeId","data-v-8a882e36"]]),Je="mslx-webpanel",Dt="mslx-web-token",Ft="mslx-base-url",Ur={class:"menu-text"},Mr={class:"menu-text"},Lr=ie({name:"MenuContent",__name:"MenuContent",props:{navData:{type:Array,default:()=>[]},isHorizontal:{type:Boolean,default:!1},maxItemCount:{type:Number,default:3}},setup(s){const a=s,r=te(()=>$o()),d=te(()=>{const{navData:w}=a;return f(w)}),i=te(()=>a.isHorizontal?d.value.slice(0,a.maxItemCount):d.value),c=te(()=>a.isHorizontal?d.value.slice(a.maxItemCount):[]),f=(w,A)=>w?(w.sort((m,z)=>(m.meta?.orderNo||0)-(z.meta?.orderNo||0)),w.map(m=>{const z=A&&!m.path.includes(A)?`${A}/${m.path}`:m.path;return{path:z,title:m.meta?.title,icon:m.meta?.icon||"",children:f(m.children,z),meta:m.meta,redirect:m.redirect}}).filter(m=>m.meta&&m.meta.hidden!==!0)):[],n=w=>{const{frameSrc:A,frameBlank:m}=w.meta;return A&&m?A.match(/(http|https):\/\/([\w.]+\/?)\S*/):null},v=w=>r.value.startsWith(w.path)?r.value:w.meta?.single?w.redirect:w.path,I=w=>w.icon&&typeof w.icon=="string",u=w=>ua(w.icon)&&typeof w.icon.render=="function"?{can:!0,render:w.icon.render}:{can:!1,render:null},L=w=>{window.open(w)};return(w,A)=>{const m=g("t-icon"),z=g("t-menu-item"),b=g("menu-content",!0),R=g("t-submenu");return l(),x("div",{id:"menu-wrapper",class:ce(["modern-menu-wrapper",{"is-horizontal":s.isHorizontal}])},[(l(!0),x(le,null,ge(i.value,C=>(l(),x(le,{key:C.path},[!C.children||!C.children.length||C.meta?.single?(l(),x(le,{key:0},[n(C)?(l(),G(z,{key:0,name:C.path,value:v(C),class:"modern-menu-item",onClick:M=>L(n(C)[0])},{icon:o(()=>[I(C)?(l(),G(m,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),G(it(u(C).render),{key:1,class:"t-icon"})):H("",!0)]),default:o(()=>[e("span",Ur,S(C.title),1)]),_:2},1032,["name","value","onClick"])):(l(),G(z,{key:1,name:C.path,value:v(C),to:C.path,class:"modern-menu-item"},{icon:o(()=>[I(C)?(l(),G(m,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),G(it(u(C).render),{key:1,class:"t-icon"})):H("",!0)]),default:o(()=>[e("span",Mr,S(C.title),1)]),_:2},1032,["name","value","to"]))],64)):(l(),G(R,{key:1,name:C.path,value:C.path,title:C.title,class:"modern-submenu"},{icon:o(()=>[I(C)?(l(),G(m,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),G(it(u(C).render),{key:1,class:"t-icon"})):H("",!0)]),default:o(()=>[C.children?(l(),G(b,{key:0,"nav-data":C.children,"is-horizontal":!1},null,8,["nav-data"])):H("",!0)]),_:2},1032,["name","value","title"]))],64))),128)),s.isHorizontal&&c.value.length>0?(l(),G(R,{key:0,name:"more-menu",title:"更多",class:"modern-submenu"},{icon:o(()=>[t(m,{name:"ellipsis"})]),default:o(()=>[t(b,{"nav-data":c.value,"is-horizontal":!1},null,8,["nav-data"])]),_:1})):H("",!0)],2)}}}),Wo=ue(Lr,[["__scopeId","data-v-f46b0d89"]]),Vo="/assets/png/mslx-logo.BqgIBdpC.png",Br=["src"],Tr={key:1,class:"flex lg:hidden ml-1 items-center"},Rr={key:2,class:"flex lg:hidden ml-1 items-center"},jr={class:"hidden lg:flex flex-1 items-center"},Pr={class:"flex items-center gap-1 sm:gap-2"},Er={class:"hidden lg:flex items-center gap-1 sm:gap-2"},Dr=["src"],Fr={class:"flex items-center text-sm font-bold text-zinc-700 dark:text-zinc-200 ml-1 truncate max-w-[100px]"},Or={class:"flex flex-col w-[240px] bg-white dark:bg-zinc-800 rounded-xl shadow-xl border border-zinc-100 dark:border-zinc-700/60 overflow-hidden mt-1"},Nr={class:"px-4 py-4 flex items-center gap-3 border-b border-zinc-100 dark:border-zinc-700/60 bg-zinc-50/50 dark:bg-zinc-800/50"},Kr=["src"],qr={class:"flex flex-col min-w-0 flex-1"},Hr={class:"text-sm font-bold text-zinc-800 dark:text-zinc-100 truncate"},Gr={class:"text-xs text-zinc-500 dark:text-zinc-400 mt-1 flex items-center gap-1.5"},Wr={class:"p-2 flex flex-col gap-1"},Jr={class:"hidden lg:flex items-center"},Xr={class:"flex lg:hidden items-center"},Qr=ie({__name:"Header",props:{theme:{type:String,default:"light"},layout:{type:String,default:"top"},showLogo:{type:Boolean,default:!0},menu:{type:Array,default:()=>[]},isFixed:{type:Boolean,default:!1},isCompact:{type:Boolean,default:!1},maxLevel:{type:Number,default:3}},setup(s){const a=Te(),r=s,d=co(),i=ut(),c=()=>{i.updateConfig({showSettingPanel:!0})},f=te(()=>$o()),n=h(!1),v=te(()=>[`${Je}-header-layout`]),I=te(()=>{const{isFixed:C,layout:M,isCompact:B}=r;return[{[`${Je}-header-menu`]:!C,[`${Je}-header-menu-fixed`]:C,[`${Je}-header-menu-fixed-side`]:M==="side"&&C,[`${Je}-header-menu-fixed-side-compact`]:M==="side"&&C&&B}]}),u=()=>{i.updateConfig({isSidebarCompact:!i.isSidebarCompact})},L=C=>{d.push(C)},w=C=>{C&&(d.push(C),n.value=!1)},A=()=>{d.push({path:"/login",query:{redirect:encodeURIComponent(d.currentRoute.value.fullPath)}})},m=()=>{window.open("https://github.com/MSLTeam/MSLX")},z=()=>{window.open("https://mslx.mslmc.cn")},b=h(!1),R=()=>{b.value||(b.value=!0,setTimeout(()=>{b.value=!1},600))};return(C,M)=>{const B=g("t-icon"),D=g("t-button"),q=g("t-menu"),P=g("t-popup"),j=g("t-tooltip"),K=g("t-dropdown-item"),k=g("t-dropdown-menu"),V=g("t-dropdown"),y=g("t-head-menu");return l(),x("div",{class:ce([v.value,"design-card w-full bg-white dark:bg-zinc-800 transition-all duration-300 relative z-50",{"enable-custom-theme":_(i).enableCustomTheme}])},[t(y,{class:ce([I.value,"header-menu-clear"]),theme:s.theme,"expand-type":"popup",value:f.value},Ws({logo:o(()=>[s.showLogo?(l(),x("span",{key:0,class:"flex items-center cursor-pointer mr-1 lg:mr-6 gap-2.5",onClick:M[0]||(M[0]=$=>L("/dashboard/base"))},[e("img",{class:"w-7 h-7 object-contain shrink-0",src:_(Vo),alt:"logo"},null,8,Br),M[3]||(M[3]=e("span",{class:"text-[17px] font-bold truncate max-[1012px]:hidden text-[var(--td-text-color-primary)] tracking-tight leading-none mt-0.5"}," MSLX 管理中心 ",-1))])):H("",!0),s.layout=="side"?(l(),x("div",Tr,[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:u},{default:o(()=>[t(B,{class:"text-xl",name:"view-list"})]),_:1})])):H("",!0),s.layout!=="side"?(l(),x("div",Rr,[t(P,{modelValue:n.value,"onUpdate:modelValue":M[1]||(M[1]=$=>n.value=$),placement:"bottom","overlay-class-name":"mobile-full-width-popup","overlay-style":{padding:"0",boxShadow:"none"},attach:"body"},{content:o(()=>[t(q,{value:f.value,theme:s.theme,"expand-mutex":"",class:"max-h-[calc(100vh-64px)] overflow-y-auto !bg-white/95 dark:!bg-zinc-800/95 backdrop-blur-xl !border-none !border-t !border-zinc-200/50 dark:!border-zinc-700/50 shadow-2xl",onChange:w},{default:o(()=>[t(Wo,{"nav-data":s.menu,"is-horizontal":!1},null,8,["nav-data"])]),_:1},8,["value","theme"])]),default:o(()=>[t(D,{class:"header-btn",theme:"default",shape:"square",variant:"text"},{default:o(()=>[t(B,{name:"app",class:"text-[24px]"})]),_:1})]),_:1},8,["modelValue"])])):H("",!0)]),operations:o(()=>[e("div",Pr,[e("div",Er,[t(j,{placement:"bottom",content:"代码仓库"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:m},{default:o(()=>[t(B,{name:"logo-github",class:"text-[20px]"})]),_:1})]),_:1}),t(j,{placement:"bottom",content:"帮助文档"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:z},{default:o(()=>[t(B,{name:"help-circle",class:"text-[20px]"})]),_:1})]),_:1})]),t(P,{trigger:"click",placement:"bottom-right","overlay-inner-style":{padding:"0",background:"transparent",boxShadow:"none"},attach:"body"},{content:o(()=>[e("div",Or,[e("div",Nr,[e("div",{class:"relative shrink-0 group cursor-pointer",onClick:R},[e("div",{class:ce(["absolute inset-0 rounded-full z-0 pointer-events-none transition-opacity",b.value?"animate-magic-burst":"opacity-0"]),style:{background:"radial-gradient(circle, var(--color-primary-light) 0%, transparent 70%)"}},null,2),e("img",{src:_(a).userInfo.avatar,class:ce(["w-10 h-10 rounded-full object-cover ring-2 ring-[var(--color-primary)]/30 shadow-sm transition-all duration-300 relative z-10",[b.value?"animate-jelly-pop":"group-hover:rotate-6 group-hover:scale-105"]]),alt:"avatar"},null,10,Kr)]),e("div",qr,[e("span",Hr,S(_(a).userInfo.name||_(a).userInfo.username||"未知用户"),1),e("span",Gr,[e("span",{class:ce(["inline-block w-1.5 h-1.5 rounded-full",_(a).isAdmin?"bg-emerald-500":"bg-blue-500"])},null,2),p(" "+S(_(a).isAdmin?"管理员":"普通用户"),1)])])]),e("div",Wr,[e("div",{class:"flex items-center px-3 py-2 text-sm text-zinc-600 dark:text-zinc-300 hover:bg-zinc-100 dark:hover:bg-zinc-700/50 rounded-lg cursor-pointer transition-colors",onClick:M[2]||(M[2]=$=>L("/settings"))},[t(B,{name:"user-circle",class:"text-lg mr-2 opacity-70"}),M[4]||(M[4]=e("span",{class:"font-medium"},"个人中心",-1))]),e("div",{class:"flex items-center px-3 py-2 text-sm text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-500/10 rounded-lg cursor-pointer transition-colors",onClick:A},[t(B,{name:"poweroff",class:"text-lg mr-2 opacity-70"}),M[5]||(M[5]=e("span",{class:"font-medium"},"退出登录",-1))])])])]),default:o(()=>[t(D,{class:"user-profile-btn",theme:"default",variant:"text"},{icon:o(()=>[e("img",{src:_(a).userInfo.avatar,class:"w-8 h-8 rounded-full object-cover ring-2 ring-zinc-100 dark:ring-zinc-700/80 shadow-sm",alt:"avatar"},null,8,Dr)]),suffix:o(()=>[t(B,{name:"chevron-down",class:"text-zinc-400 text-xs ml-0.5"})]),default:o(()=>[e("div",Fr,S(_(a).userInfo.name||_(a).userInfo.username||"用户"),1)]),_:1})]),_:1}),e("div",Jr,[t(j,{placement:"bottom",content:"系统设置"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:c},{default:o(()=>[t(B,{name:"setting",class:"text-[20px]"})]),_:1})]),_:1})]),e("div",Xr,[t(V,{"min-column-width":140,trigger:"click"},{dropdown:o(()=>[t(k,null,{default:o(()=>[t(K,{class:"operations-dropdown-item",onClick:m},{default:o(()=>[t(B,{name:"logo-github",class:"text-lg mr-2"}),M[6]||(M[6]=e("span",null,"代码仓库",-1))]),_:1}),t(K,{class:"operations-dropdown-item mt-1",onClick:z},{default:o(()=>[t(B,{name:"help-circle",class:"text-lg mr-2"}),M[7]||(M[7]=e("span",null,"帮助文档",-1))]),_:1}),t(K,{class:"operations-dropdown-item mt-1",onClick:c},{default:o(()=>[t(B,{name:"setting",class:"text-lg mr-2"}),M[8]||(M[8]=e("span",null,"系统设置",-1))]),_:1})]),_:1})]),default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn"},{default:o(()=>[t(B,{name:"more",class:"text-[20px]"})]),_:1})]),_:1})])])]),_:2},[s.layout!=="side"?{name:"default",fn:o(()=>[e("div",jr,[t(Wo,{class:"header-menu-reset","nav-data":s.menu,"is-horizontal":!0},null,8,["nav-data"])])]),key:"0"}:void 0]),1032,["class","theme","value"])],2)}}}),Yr=ue(Qr,[["__scopeId","data-v-018b1da6"]]),Is=ie({__name:"LayoutHeader",setup(s){const a=ro(),r=ut(),{routers:d}=ss(a),i=te(()=>r.layout==="mix"?r.splitMenu?d.value.map(c=>({...c,children:[]})):[]:d.value);return(c,f)=>_(r).showHeader?(l(),G(Yr,{key:0,"show-logo":_(r).showHeaderLogo,theme:_(r).displayMode,layout:_(r).layout,"is-fixed":_(r).isHeaderFixed,menu:i.value,"is-compact":_(r).isSidebarCompact},null,8,["show-logo","theme","layout","is-fixed","menu","is-compact"])):H("",!0)}}),Zr={};function en(s,a){const r=g("router-view");return l(),G(r,null,{default:o(({Component:d})=>[t(Rt,{name:"fade",mode:"out-in"},{default:o(()=>[(l(),G(Ja,null,[(l(),G(it(d)))],1024))]),_:2},1024)]),_:1})}const tn=ue(Zr,[["render",en],["__scopeId","data-v-323e6e6f"]]),on=ie({__name:"Breadcrumb",setup(s){const a=te(()=>{const r=Ye(),d=r.path.split("/");return d.shift(),d.reduce((c,f,n)=>(r.matched[n]?.meta?.hiddenBreadcrumb||Object.values(r.params).includes(f)||c.push({path:f,to:c[n-1]?`/${c[n-1].path}/${f}`:`/${f}`,title:r.matched[n]?.meta?.title??f}),c),[])});return(r,d)=>{const i=g("t-breadcrumbItem"),c=g("t-breadcrumb");return l(),G(c,{"max-item-width":"150",class:"tdesign-breadcrumb"},{default:o(()=>[(l(!0),x(le,null,ge(a.value,f=>(l(),G(i,{key:f.to,to:f.to},{default:o(()=>[p(S(f.title),1)]),_:2},1032,["to"]))),128))]),_:1})}}}),sn=ue(on,[["__scopeId","data-v-b09aa6cf"]]),an={class:"w-full flex justify-center items-center"},ln={class:"glass-capsule design-card group flex items-center gap-3 px-6 py-2 rounded-full bg-[var(--td-bg-color-container)]/80 backdrop-blur-[10px] border border-zinc-200/80 dark:border-zinc-700/60 shadow-sm transition-all duration-300 font-mono text-[13px] leading-none text-[var(--td-text-color-secondary)] cursor-default"},rn={class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"},nn=ie({__name:"Footer",setup(s){return(a,r)=>(l(),x("footer",an,[e("div",ln,[r[0]||(r[0]=e("span",{class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"}," MSLX-WEBPANEL ",-1)),r[1]||(r[1]=e("span",{class:"font-light text-zinc-500 dark:text-zinc-600"},"/",-1)),r[2]||(r[2]=e("span",{class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"}," MSLTEAM ",-1)),r[3]||(r[3]=e("span",{class:"font-light text-zinc-500 dark:text-zinc-600"},"/",-1)),e("span",rn," © 2021-"+S(new Date().getFullYear()),1)])]))}}),dn=ue(nn,[["__scopeId","data-v-f1245484"]]),Vs=ie({__name:"LayoutContent",setup(s){const a=ut();return(r,d)=>{const i=g("t-content"),c=g("t-footer"),f=g("t-layout");return l(),G(f,{class:ce(`${_(Je)}-layout`)},{default:o(()=>[t(i,{class:ce(`${_(Je)}-content-layout`)},{default:o(()=>[_(a).showBreadcrumb?(l(),G(sn,{key:0})):H("",!0),t(tn)]),_:1},8,["class"]),_(a).showFooter?(l(),G(c,{key:0,class:ce(`${_(Je)}-footer-layout`)},{default:o(()=>[t(dn)]),_:1},8,["class"])):H("",!0)]),_:1},8,["class"])}}}),cn="mslx-webpanel",un="1.3.4",mn={dev:"vite --mode development","dev:linux":"vite --mode development","build:test":"vite build --mode test",build:"vue-tsc --noEmit && vite build --mode release && node generate-build-info.js",preview:"vite preview",lint:"eslint --ext .vue,.js,.jsx,.ts,.tsx ./ --max-warnings 0","lint:fix":"eslint --ext .vue,.js,jsx,.ts,.tsx ./ --max-warnings 0 --fix",stylelint:"stylelint src/**/*.{html,vue,sass,less}","stylelint:fix":"stylelint --fix src/**/*.{html,vue,vss,sass,less}",prepare:`node -e "if(require('fs').existsSync('.git')){process.exit(1)}" || is-ci || husky install`,"site:preview":"npm run build && cp -r dist _site",test:'echo "no test specified,work in process"',"test:coverage":'echo "no test:coverage specified,work in process"'},pn={"@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-json":"^6.0.2","@codemirror/lang-yaml":"^6.1.2","@codemirror/language":"^6.12.1","@codemirror/legacy-modes":"^6.5.2","@codemirror/state":"^6.5.2","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.2","@eslint/js":"^9.38.0","@microsoft/signalr":"^10.0.0","@tailwindcss/vite":"^4.2.1","@vueuse/core":"^14.2.1","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ansi-colors":"^4.1.3",axios:"^1.13.5","cron-parser":"^5.4.0",dayjs:"^1.11.11",echarts:"^6.0.0",lodash:"4.17.23","md-editor-v3":"^6.1.0",nprogress:"^0.2.0",pinia:"^2.1.7","pinia-plugin-persistedstate":"^3.2.1","qrcode.vue":"^3.4.1",qs:"6.14.2",tailwindcss:"^4.2.1","tdesign-icons-vue-next":"^0.4.1","tdesign-vue-next":"^1.18.2","tvision-color":"^1.6.0","typescript-eslint":"^8.46.2",vue:"^3.5.29","vue-clipboard3":"^2.0.0","vue-codemirror":"^6.1.1","vue-router":"^4.4.0"},vn={"@commitlint/cli":"^19.3.0","@commitlint/config-conventional":"^19.2.2","@types/lodash":"^4.17.23","@types/qs":"^6.9.15","@types/ws":"^8.5.10","@typescript-eslint/eslint-plugin":"^8.46.2","@typescript-eslint/parser":"^8.46.2","@vitejs/plugin-vue":"^6.0.3","@vitejs/plugin-vue-jsx":"^5.1.3","@vue/compiler-sfc":"^3.4.31","@vue/eslint-config-typescript":"^14.6.0",browserslist:"^4.28.1",commitizen:"^4.3.0","cz-conventional-changelog":"^3.3.0",eslint:"^9.38.0","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.1.3","eslint-plugin-vue":"^10.7.0","eslint-plugin-vue-scoped-css":"^2.12.0",husky:"^9.1.1",less:"^4.2.0",lightningcss:"^1.32.0","lint-staged":"^15.2.7",prettier:"^3.3.3",stylelint:"^16.25.0","stylelint-config-standard":"^40.0.0","stylelint-config-standard-less":"^4.0.1","stylelint-less":"^3.0.0","stylelint-order":"^6.0.4",typescript:"^5.5.3",vite:"^7.3.1","vite-svg-loader":"^5.1.0","vue-tsc":"^2.0.26"},fn={commitizen:{path:"./node_modules/cz-conventional-changelog"}},bn="MSLX Web Panel",to={name:cn,version:un,scripts:mn,dependencies:pn,devDependencies:vn,config:fn,"lint-staged":{"*.{js,jsx,vue,ts,tsx}":["prettier --write","npm run lint:fix","git add ."],"*.{html,vue,vss,sass,less}":["npm run stylelint:fix","git add ."]},description:bn},xn=["src"],gn={key:0,class:"text-[17px] font-bold truncate text-[var(--td-text-color-primary)] tracking-tight transition-opacity duration-300 leading-none mt-0.5"},hn={class:"flex items-center justify-center h-12 text-[11px] font-mono font-medium text-[var(--td-text-color-secondary)] tracking-wider"},yn=991,_n=ie({__name:"SideNav",props:{menu:{type:Array,default:()=>[]},showLogo:{type:Boolean,default:!0},isFixed:{type:Boolean,default:!0},layout:{type:String,default:""},headerHeight:{type:String,default:"64px"},theme:{type:String,default:"light"},isCompact:{type:Boolean,default:!1}},setup(s){const a=s,r=te(()=>ut().isSidebarCompact),d=te(()=>$o()),i=te(()=>{const L=$o(),w=L.substring(0,L.lastIndexOf("/")),A=ei();return Wl(A,w===""?[]:[w])}),c=te(()=>{const{isCompact:L}=a;return[`${Je}-sidebar-layout`,{[`${Je}-sidebar-compact`]:L}]}),f=te(()=>{const{showLogo:L,isFixed:w,layout:A}=a;return[`${Je}-side-nav`,{[`${Je}-side-nav-no-logo`]:!L,[`${Je}-side-nav-no-fixed`]:!w,[`${Je}-side-nav-mix-fixed`]:A==="mix"&&w}]}),n=co(),v=ut(),I=()=>{const L=window.innerWidth<=yn;v.updateConfig({isSidebarCompact:L})};ze(()=>{I(),window.onresize=()=>{I()}});const u=()=>{n.push("/dashboard/base")};return(L,w)=>{const A=g("t-menu");return l(),x("div",{class:ce(c.value)},[e("div",{class:ce(["design-card h-full bg-white dark:bg-zinc-800 transition-all duration-300 relative z-40",[_(v).enableCustomTheme?"border-r border-white/20 dark:border-white/5":"border-r border-white/20 dark:border-zinc-700/60 shadow-[1px_0_12px_rgba(0,0,0,0.02)] dark:shadow-none"]])},[t(A,{class:ce([f.value,"sidebar-menu-clear"]),theme:s.theme,value:d.value,collapsed:r.value,"default-expanded":i.value},{logo:o(()=>[s.showLogo?(l(),x("div",{key:0,class:ce(["flex items-center cursor-pointer h-[64px] px-5 overflow-hidden transition-all duration-300 !ml-0 border-b border-transparent",r.value?"justify-center px-0":"justify-start gap-2.5"]),onClick:u},[e("img",{class:"w-7 h-7 object-contain shrink-0",src:_(Vo),alt:"logo"},null,8,xn),r.value?H("",!0):(l(),x("span",gn," MSLX 管理中心 "))],2)):H("",!0)]),operations:o(()=>[e("div",hn,S(r.value?"":"MSLX-WEBPANEL ")+"v"+S(_(to).version),1)]),default:o(()=>[t(Wo,{"nav-data":s.menu},null,8,["nav-data"])]),_:1},8,["class","theme","value","collapsed","default-expanded"])],2),e("div",{class:ce(`${_(Je)}-side-nav-placeholder${r.value?"-hidden":""}`)},null,2)],2)}}}),wn=ue(_n,[["__scopeId","data-v-9ac7176f"]]),Us=ie({__name:"LayoutSideNav",setup(s){const a=Ye(),r=ro(),d=ut(),{routers:i}=ss(r),c=te(()=>{const{layout:f,splitMenu:n}=d;let v=i.value;return f==="mix"&&n&&v.forEach(I=>{a.path.indexOf(I.path)===0&&(v=I.children.map(u=>({...u,path:`${I.path}/${u.path}`})))}),v});return(f,n)=>_(d).showSidebar?(l(),G(wn,{key:0,"show-logo":_(d).showSidebarLogo,layout:_(d).layout,"is-fixed":_(d).isSidebarFixed,menu:c.value,theme:_(d).displayMode,"is-compact":_(d).isSidebarCompact},null,8,["show-logo","layout","is-fixed","menu","theme","is-compact"])):H("",!0)}}),cs="/assets/jpg/mslx-bg_light_new.CL71WzMj.jpg",us="/assets/jpg/mslx-bg_night_new.CfCwUDBl.jpg";let kt=new Map;const Ms=s=>[s.method,s.url].join("&");class kn{addPending(a){this.removePending(a);const r=Ms(a);a.cancelToken=a.cancelToken||new bo.CancelToken(d=>{kt.has(r)||kt.set(r,d)})}removeAllPending(){kt.forEach(a=>{a&&$t(a)&&a()}),kt.clear()}removePending(a){const r=Ms(a);if(kt.has(r)){const d=kt.get(r);d&&d(r),kt.delete(r)}}reset(){kt=new Map}}class $n{constructor(a){Eo(this,"instance");Eo(this,"options");this.options=a,this.instance=bo.create(a),this.setupInterceptors()}createAxios(a){this.instance=bo.create(a)}getTransform(){const{transform:a}=this.options;return a}getAxios(){return this.instance}configAxios(a){this.instance&&this.createAxios(a)}setHeader(a){this.instance&&Object.assign(this.instance.defaults.headers,a)}setupInterceptors(){const a=this.getTransform();if(!a)return;const{requestInterceptors:r,requestInterceptorsCatch:d,responseInterceptors:i,responseInterceptorsCatch:c}=a,f=new kn;this.instance.interceptors.request.use(n=>{const{headers:{ignoreRepeatRequest:v}}=n;return(v??this.options.requestOptions?.ignoreRepeatRequest)||f.addPending(n),r&&$t(r)&&(n=r(n,this.options)),n},void 0),d&&$t(d)&&this.instance.interceptors.request.use(void 0,d),this.instance.interceptors.response.use(n=>(n&&f.removePending(n.config),i&&$t(i)&&(n=i(n)),n),void 0),c&&$t(c)&&this.instance.interceptors.response.use(void 0,c)}supportFormData(a){const r=a.headers||this.options.headers;return(r?.["Content-Type"]||r?.["content-type"])!=="application/x-www-form-urlencoded;charset=UTF-8"||!Reflect.has(a,"data")||a.method?.toUpperCase()==="GET"?a:{...a,data:Jl.stringify(a.data,{arrayFormat:"brackets"})}}get(a,r){return this.request({...a,method:"GET"},r)}post(a,r){return this.request({...a,method:"POST"},r)}put(a,r){return this.request({...a,method:"PUT"},r)}delete(a,r){return this.request({...a,method:"DELETE"},r)}patch(a,r){return this.request({...a,method:"PATCH"},r)}async request(a,r){let d=Xl(a);const i=this.getTransform(),{requestOptions:c}=this.options,f={...c,...r},{beforeRequestHook:n,requestCatchHook:v,transformRequestHook:I}=i||{};return n&&$t(n)&&(d=n(d,f)),d.requestOptions=f,d=this.supportFormData(d),new Promise((u,L)=>{this.instance.request(a.retryCount?a:d).then(w=>{if(I&&$t(I)){try{const A=I(w,f);u(A)}catch(A){L(A||new Error("请求错误!"))}return}u(w)}).catch(w=>{if(v&&$t(v)){L(v(w,f));return}bo.isAxiosError(w),L(w)})})}}const zn="YYYY-MM-DD HH:mm:ss";function Ls(s,a=!1){if(!s)return a?"":{};const r=new Date().getTime();return a?`?_t=${r}`:{_t:r}}function Jo(s){if(Object.prototype.toString.call(s)==="[object Object]")for(const a in s){if(s[a]&&s[a]._isAMomentObject&&(s[a]=s[a].format(zn)),Vt(a)){const r=s[a];if(r)try{s[a]=Vt(r)?r.trim():r}catch(d){throw new Error(d)}}ua(s[a])&&Jo(s[a])}}function Cn(s,a){let r="";for(const d in a)r+=`${d}=${encodeURIComponent(a[d])}&`;return r=r.replace(/&$/,""),/\?$/.test(s)?s+r:s.replace(/\/?$/,"?")+r}const An={transformRequestHook:(s,a)=>{const{isTransformResponse:r,isReturnNativeResponse:d}=a,i=s.config.method?.toLowerCase();if(s.status===204||i==="put"||i==="patch"||d)return s;if(!r)return s.data;const{data:c}=s;if(!c)throw new Error("请求接口错误");if(c&&typeof c=="object"&&Reflect.has(c,"code")&&Reflect.has(c,"message")){const{code:n,message:v}=c;if(n===200)return c.data;throw new Error(v||`请求接口错误, 错误码: ${n}`)}else return c},beforeRequestHook:(s,a)=>{const{apiUrl:r,isJoinPrefix:d,urlPrefix:i,joinParamsToUrl:c,formatDate:f,joinTime:n=!0}=a;d&&i&&Vt(i)&&(s.url=`${i}${s.url}`),r&&Vt(r)&&!s.baseURL&&(s.url=`${r}${s.url}`);const v=s.params||{},I=s.data||!1;return f&&I&&!Vt(I)&&Jo(I),s.method?.toUpperCase()==="GET"?Vt(v)?(s.url=`${s.url+v}${Ls(n,!0)}`,s.params=void 0):s.params=Object.assign(v||{},Ls(n,!1)):Vt(v)?(s.url+=v,s.params=void 0):(f&&Jo(v),Reflect.has(s,"data")&&s.data&&(Object.keys(s.data).length>0||I instanceof FormData)?(s.data=I,s.params=v):(s.data=v,s.params=void 0),c&&(s.url=Cn(s.url,{...s.params,...s.data}))),s},requestInterceptors:(s,a)=>{const r=localStorage.getItem(Dt),d=localStorage.getItem(Ft);return d&&!/^(https?:)?\/\//.test(s.url||"")&&!s.baseURL&&(s.baseURL=d),r&&s?.requestOptions?.withToken!==!1&&(s.headers.hasAuthorization()||(s.headers["x-user-token"]=r)),s},responseInterceptors:s=>s,responseInterceptorsCatch:s=>{const{response:a}=s;if(a&&a.data){const d=a.data?.message;return d?Promise.reject(new Error(d)):Promise.reject(s)}return Promise.reject(s)}};function Sn(s){return new $n(Ql({authenticationScheme:"",timeout:10*1e3,withCredentials:!1,headers:{"Content-Type":"application/json;charset=UTF-8"},transform:An,requestOptions:{apiUrl:"",isJoinPrefix:!0,urlPrefix:"",isReturnNativeResponse:!1,isTransformResponse:!0,joinParamsToUrl:!1,formatDate:!0,joinTime:!1,ignoreRepeatRequest:!0,withToken:!0,retry:{count:3,delay:1e3}}},{}))}const Q=Sn();function In(){return Q.get({url:"/api/settings"})}function Vn(s){return Q.post({url:"/api/settings",data:s})}function Un(s){return Q.post({url:"/api/settings/webpanel/style",data:s})}function Mn(){return Q.get({url:"/api/settings/webpanel/style"})}async function qt(){return await Q.post({url:"/api/files/upload/init"})}async function Ht(s,a,r,d,i){const c=new FormData;return c.append("index",a.toString()),c.append("file",r),await Q.post({url:`/api/files/upload/chunk/${s}`,data:c,headers:{"Content-Type":"multipart/form-data"},timeout:300*1e3,onUploadProgress:d,signal:i})}async function Gt(s,a){return await Q.post({url:`/api/files/upload/finish/${s}`,data:{totalChunks:a},timeout:120*1e3})}async function Mt(s){return await Q.post({url:`/api/files/upload/delete/${s}`})}async function Ln(s){return await Q.get({url:`/api/files/upload/inspect/${s}`,timeout:60*1e3})}async function Bn(s,a=""){return await Q.get({url:`/api/files/instance/${s}/lists`,params:{path:a}})}async function Uo(s,a){return await Q.get({url:`/api/files/instance/${s}/content`,params:{path:a}})}function ms(s,a,r){return Q.post({url:`/api/files/instance/${s}/content`,data:{path:a,content:r}})}function Tn(s,a,r){return Q.post({url:`/api/files/instance/${s}/directory`,data:{path:a,name:r}})}function Rn(s,a,r){return Q.post({url:`/api/files/instance/${s}/rename`,data:{oldPath:a,newPath:r}})}function jn(s,a){return Q.post({url:`/api/files/instance/${s}/delete`,data:{paths:a}})}function ba(s,a,r,d){return Q.post({url:`/api/files/instance/${s}/upload`,data:{uploadId:a,fileName:r,currentPath:d}})}function xa(s,a){return Q.get({url:`/api/files/instance/${s}/download`,params:{path:a},responseType:"blob"})}function Pn(s,a,r,d){return Q.post({url:`/api/files/instance/${s}/compress`,data:{sources:a,targetName:r,currentPath:d}})}function En(s){return Q.get({url:`/api/files/task/compress/${s}`})}function ga(s,a,r,d="utf-8",i=!0){return Q.post({url:`/api/files/instance/${s}/decompress`,data:{fileName:a,currentPath:r,encoding:d,createSubFolder:i}})}function ha(s){return Q.get({url:`/api/files/task/decompress/${s}`})}async function ya(s,a,r){return await Q.post({url:`/api/files/instance/${s}/chmod`,data:{path:a,mode:r}})}async function Xo(s,a,r){return await Q.get({url:`/api/files/pm/instance/${s}/list?${r?"checkClient=true":""}`,params:{mode:a}})}async function Dn(s,a,r,d){return await Q.post({url:`/api/files/pm/instance/${s}/set`,data:{mode:a,action:r,targets:d}})}function Fn(s,a,r){return Q.post({url:`/api/files/instance/${s}/copy`,data:{sourcePaths:a,targetPath:r},timeout:120*1e3})}function On(s,a,r){return Q.post({url:`/api/files/instance/${s}/move`,data:{sourcePaths:a,targetPath:r},timeout:120*1e3})}function Nn(s,a){return Q.post({url:"/api/static/images/upload",data:{fileKey:s,fileName:a}})}async function _a(s,a,r,d){return await Q.post({url:`/api/files/instance/${s}/download`,data:{path:a,url:r,filename:d}})}function wa(s){return Q.get({url:`/api/files/task/download/${s}`})}const Wt=zt("webpanel",{state:()=>({settings:{webPanelStyleDarkBackgroundOpacity:1,webPanelStyleDarkComponentsOpacity:.4,webpPanelTerminalBlurDark:5,webPanelStyleLightBackground:"",webPanelStyleLightBackgroundOpacity:1,webPanelStyleLightComponentsOpacity:.6,webpPanelTerminalBlurLight:5,webPanelStyleDarkBackground:"",webPanelColorizeLogLevel:1},loading:!1,submitLoading:!1}),actions:{async fetchSettings(){this.loading=!0;try{const s=await Mn();this.settings=s}catch(s){console.error("获取面板样式失败",s)}finally{this.loading=!1}},async saveSettings(){this.submitLoading=!0;try{await Un(this.settings),U.success("面板样式保存成功")}catch(s){U.error("保存失败: "+s.message)}finally{this.submitLoading=!1}},async uploadImage(s){if(!s)return U.error("文件对象无效"),null;if(!["image/png","image/jpeg","image/webp"].includes(s.type))return U.error("仅支持 PNG, JPG, WEBP 格式的图片"),null;if(!(s.size/1024/1024<10))return U.error("图片大小不能超过 10MB"),null;try{const{uploadId:d}=await qt();return await Ht(d,1,s),await Gt(d,1),await Nn(d,s.name),U.success(`上传成功: ${s.name}`),s.name}catch(d){return U.error("上传失败: "+(d.message||"网络错误")),null}}},persist:{key:"webpanel-style-storage",paths:["settings"]}}),Kn=ie({__name:"index",setup(s){const a=Ye(),r=ut(),d=Te(),i=Wt(),c=ss(r),f=(u,L)=>u?u.startsWith("http")?u:`${d.baseUrl||window.location.origin}/api/static/images/${u}`:L,n=te(()=>{const u=i.settings,L=f(u.webPanelStyleLightBackground,cs),w=f(u.webPanelStyleDarkBackground,us);return{"--bg-img-light":`url('${L}')`,"--bg-img-dark":`url('${w}')`,"--bg-op-light":u.webPanelStyleLightBackgroundOpacity,"--bg-op-dark":u.webPanelStyleDarkBackgroundOpacity,"--comp-op-light":u.webPanelStyleLightComponentsOpacity,"--comp-op-dark":u.webPanelStyleDarkComponentsOpacity,"--term-blur-light":`${u.webpPanelTerminalBlurLight??5}px`,"--term-blur-dark":`${u.webpPanelTerminalBlurDark??5}px`}}),v=te(()=>r.enableCustomTheme),I=te(()=>[{"t-layout--with-sider":r.showSidebar}]);return ze(()=>{i.fetchSettings()}),_e(()=>a.path,()=>{document.querySelector(`.${Je}-layout`).scrollTo({top:0,behavior:"smooth"})}),(u,L)=>{const w=g("t-aside"),A=g("t-header"),m=g("t-content"),z=g("t-layout");return l(),x("div",{class:ce(["global-layout-bg",{"custom-theme-enabled":v.value}]),style:Oe(n.value)},[v.value?(l(),G(it("style"),{key:0},{default:o(()=>[...L[0]||(L[0]=[p(" .global-layout-bg.custom-theme-enabled .terminal-wrapper { backdrop-filter: blur(var(--term-blur-light)) !important; -webkit-backdrop-filter: blur(var(--term-blur-light)) !important; } html[theme-mode='dark'] .global-layout-bg.custom-theme-enabled .terminal-wrapper, .global-layout-bg.custom-theme-enabled.dark .terminal-wrapper { backdrop-filter: blur(var(--term-blur-dark)) !important; -webkit-backdrop-filter: blur(var(--term-blur-dark)) !important; } ",-1)])]),_:1})):H("",!0),_(c).layout.value==="side"?(l(),G(z,{key:"side",class:ce(I.value)},{default:o(()=>[t(w,null,{default:o(()=>[t(Us)]),_:1}),t(z,null,{default:o(()=>[t(A,null,{default:o(()=>[t(Is)]),_:1}),t(m,null,{default:o(()=>[t(Vs)]),_:1})]),_:1})]),_:1},8,["class"])):(l(),G(z,{key:"no-side"},{default:o(()=>[t(A,null,{default:o(()=>[t(Is)]),_:1}),t(z,{class:ce(I.value)},{default:o(()=>[t(Us),t(Vs)]),_:1},8,["class"])]),_:1})),t(ds)],6)}}}),ft=ue(Kn,[["__scopeId","data-v-b0aaaf37"]]),qn=[{path:"/dashboard",redirect:"/dashboard/base",component:ft,name:"dashboard",meta:{title:"仪表盘",icon:"dashboard",roleCode:["admin","user"]},children:[{path:"base",name:"DashboardBaseIndex",component:()=>We(()=>Promise.resolve().then(()=>gc),void 0),meta:{title:"仪表盘",hidden:!0,roleCode:["admin","user"]}}]},{path:"/instance",component:ft,name:"instance",meta:{title:"服务端管理",icon:"server",roleCode:["admin","user"]},children:[{path:"list",name:"InstanceList",component:()=>We(()=>Promise.resolve().then(()=>au),void 0),meta:{title:"服务端列表",icon:"grid-view",roleCode:["admin","user"]}},{path:"create",name:"InstanceCreate",component:()=>We(()=>Promise.resolve().then(()=>N0),void 0),meta:{title:"创建服务端",icon:"add"}},{path:"backup",name:"InstanceBackupManager",component:()=>We(()=>Promise.resolve().then(()=>bf),void 0),meta:{title:"备份管理",icon:"backup",roleCode:["admin","user"]}},{path:"cron",name:"InstanceCronTasksManager",component:()=>We(()=>Promise.resolve().then(()=>p1),void 0),meta:{title:"定时任务",icon:"time",roleCode:["admin","user"]}}]},{path:"/frp",component:ft,name:"frp",meta:{title:"隧道管理",icon:"rocket",roleCode:["admin","user"]},children:[{path:"list",name:"FrpList",component:()=>We(()=>Promise.resolve().then(()=>vb),void 0),meta:{title:"隧道列表",icon:"format-vertical-align-left",roleCode:["admin","user"]}},{path:"create",name:"FrpCreate",component:()=>We(()=>Promise.resolve().then(()=>u2),void 0),meta:{title:"创建隧道",icon:"add"}}]}],Hn=Object.freeze(Object.defineProperty({__proto__:null,default:qn},Symbol.toStringTag,{value:"Module"})),Gn=[{path:"/frp/console",component:ft,meta:{hidden:!0},children:[{path:":frpId",name:"FrpConsole",component:()=>We(()=>Promise.resolve().then(()=>iw),void 0),meta:{title:"隧道控制台",hidden:!0,activeMenu:"/frp/list"}}]},{path:"/instance/console",component:ft,meta:{hidden:!0},children:[{path:":serverId",name:"InstanceConsole",component:()=>We(()=>Promise.resolve().then(()=>X$),void 0),meta:{title:"服务器控制台",hidden:!0,activeMenu:"/instance/list"}}]},{path:"/instance/files",component:ft,meta:{hidden:!0},children:[{path:":serverFilesId",name:"InstanceFiles",component:()=>We(()=>Promise.resolve().then(()=>w6),void 0),meta:{title:"文件管理",hidden:!0,activeMenu:"/instance/list"}}]}],Wn=Object.freeze(Object.defineProperty({__proto__:null,default:Gn},Symbol.toStringTag,{value:"Module"})),Bs=()=>We(()=>Promise.resolve().then(()=>C6),void 0),Jn=[{path:"/frame",name:"Frame",component:ft,redirect:"/frame/doc",meta:{icon:"earth",title:"链接",roleCode:["admin","user"]},children:[{path:"MSLX",name:"MSLX",component:Bs,meta:{frameSrc:"https://mslx.mslmc.cn",frameBlank:!0,title:"MSLX 文档",icon:"book",roleCode:["admin","user"]}},{path:"MSLUser",name:"MSLUser",component:Bs,meta:{frameSrc:"https://user.mslmc.net",frameBlank:!0,title:"MSL 用户中心",icon:"user-arrow-left",roleCode:["admin","user"]}}]}],Xn=Object.freeze(Object.defineProperty({__proto__:null,default:Jn},Symbol.toStringTag,{value:"Module"})),Qn=[{path:"/users",component:ft,name:"usersBase",meta:{title:"用户管理",icon:"user"},children:[{path:"",name:"users",component:()=>We(()=>Promise.resolve().then(()=>e7),void 0),meta:{title:"用户管理",hidden:!0}}]},{path:"/settings",component:ft,name:"settingsBase",meta:{title:"设置",icon:"setting",roleCode:["admin","user"]},children:[{path:"",name:"settings",component:()=>We(()=>Promise.resolve().then(()=>G7),void 0),meta:{title:"设置",hidden:!0,roleCode:["admin","user"]}}]},{path:"/about",component:ft,name:"aboutBase",meta:{title:"关于面板",icon:"info-circle",roleCode:["admin","user"]},children:[{path:"",name:"about",component:()=>We(()=>Promise.resolve().then(()=>oA),void 0),meta:{title:"关于面板",hidden:!0,roleCode:["admin","user"]}}]}],Yn=Object.freeze(Object.defineProperty({__proto__:null,default:Qn},Symbol.toStringTag,{value:"Module"})),Ts=Object.assign({"./modules/base.ts":Hn,"./modules/components.ts":Wn,"./modules/iframe.ts":Xn,"./modules/others.ts":Yn}),ka=[];Object.keys(Ts).forEach(s=>{const a=Ts[s].default||{},r=Array.isArray(a)?[...a]:[a];ka.push(...r)});const Qo=[...ka],Zn=[{path:"/login",name:"login",component:()=>We(()=>Promise.resolve().then(()=>MA),void 0)},{path:"/oauth/callback",name:"oauth",component:()=>We(()=>Promise.resolve().then(()=>JA),void 0)},{path:"/",redirect:"/dashboard/base"},{path:"/404",name:"404",component:()=>We(()=>Promise.resolve().then(()=>o9),void 0)},{path:"/:w+",name:"404Page",redirect:"/404"}],$a=[...Zn,...Qo],ei=()=>{const s=[];return $a.forEach(a=>{a.meta&&a.meta.expanded&&s.push(a.path),a.children&&a.children.length>0&&a.children.filter(r=>r.meta&&r.meta.expanded).forEach(r=>{s.push(a.path),s.push(`${a.path}/${r.path}`)})}),Yl(s)},$o=(s=3)=>{const a=ht.currentRoute.value;return a.path?a.meta?.activeMenu?a.meta.activeMenu:a.path.split("/").filter((r,d)=>d<=s&&d>0).map(r=>`/${r}`).join(""):""};function Ie(s){s.includes("http")?window.open(s):ht.replace(s)}const ht=Xa({history:Qa(),routes:$a,scrollBehavior(){return{el:"#app",top:0,behavior:"smooth"}}});function za(s,a){const r=[],d=[];return s.forEach(i=>{const c={...i};if((n=>n?Array.isArray(n)?a.some(v=>n.includes(v)):a.includes(n):!1)(c.meta?.roleCode||c.name)){if(c.children&&c.children.length>0){const n=za(c.children,a);c.children=n.accessedRouters}r.push(c)}else d.push(c)}),{accessedRouters:r,removeRoutes:d}}const ro=zt("permission",{state:()=>({whiteListRouters:["/login","/oauth/callback"],routers:[],removeRoutes:[],dynamicRoutesAdded:[]}),actions:{async initRoutes(s){this.clearRoutes();let a=[],r=[];if(s.includes("all"))a=Qo;else{const i=za(Qo,s);a=i.accessedRouters,r=i.removeRoutes}const d=[];a.forEach(i=>{ht.addRoute(i),i.name&&d.push(i.name)}),this.routers=a,this.removeRoutes=r,this.dynamicRoutesAdded=d},async clearRoutes(){this.dynamicRoutesAdded.forEach(a=>{ht.hasRoute(a)&&ht.removeRoute(a)}),this.routers=[],this.removeRoutes=[],this.dynamicRoutesAdded=[]}}});function ti(){return ro(Bo)}const oi={...is,showSettingPanel:!1,colorList:br,chartColors:fa,systemTheme:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},ut=zt("setting",{state:()=>oi,getters:{showSidebar:s=>s.layout!=="top",showSidebarLogo:s=>s.layout==="side",showHeaderLogo:s=>s.layout!=="side",displayMode:s=>s.mode==="auto"?s.systemTheme:s.mode},actions:{async changeMode(s){let a=s;s==="auto"&&(a=this.systemTheme);const r=a==="dark";document.documentElement.setAttribute("theme-mode",r?"dark":""),this.chartColors=r?xr:fa},setSystemTheme(s){this.systemTheme=s,this.mode==="auto"&&this.changeMode("auto")},changeBrandTheme(s){document.documentElement.setAttribute("theme-color",s)},addColor(s){this.colorList={...this.colorList,...s}},updateConfig(s){for(const a in s)s[a]!==void 0&&(this[a]=s[a]),a==="mode"&&this.changeMode(s[a]),a==="brandTheme"&&this.changeBrandTheme(s[a])}},persist:{paths:[...Zl(is),"colorList","chartColors"]}});async function si(){return Q.get({url:"/api/update/info"})}async function ai(){return Q.get({url:"/api/update/download"})}async function li(){return Q.post({url:"/api/update"})}const ps=zt("update",()=>{const s=h(!1),a=h(null),r=h(null),d=h(!1);return{showUpdateModal:s,updateInfo:a,downloadInfo:r,loading:d,checkAppUpdate:async(f=!1)=>{if(Te().isAdmin&&!d.value){d.value=!0;try{const I=await si();if(I&&I.needUpdate){if(!f&&localStorage.getItem("mslx-skip-version")===I.latestVersion){console.log(`[Update] 用户已跳过版本 ${I.latestVersion}`);return}a.value=I;try{const u=await ai();r.value=u}catch(u){console.error("获取下载链接失败",u),r.value={web:"",file:""}}s.value=!0,f&&U.success("发现新版本!")}else f&&(I.environment==="fnos"?U.success("请前往飞牛应用商店检查更新!"):U.success("当前已是最新版本"))}catch(v){console.error("[Update] 检查更新失败:",v),f&&U.error("检查更新失败,请检查网络日志")}finally{d.value=!1}}},handleSkipVersion:()=>{a.value?.latestVersion&&(localStorage.setItem("mslx-skip-version",a.value.latestVersion),U.success("已跳过该版本,下次将不再提醒"),s.value=!1)}}});async function Mo(s){return await Q.post({url:"/api/instance/createServer",data:s})}async function Rs(s,a=!1){return await Q.post({url:"/api/instance/delete",data:{id:s,deleteFiles:a}})}async function ri(){return await Q.get({url:"/api/instance/list"})}async function It(s,a){return await Q.post({url:"/api/instance/action",data:{id:s,action:a},timeout:60*1e3})}async function vs(s){return await Q.get({url:"/api/instance/info",params:{id:s}})}async function ni(s){return await Q.get({url:`/api/instance/settings/general/${s}`})}async function ii(s){return await Q.post({url:`/api/instance/settings/general/${s.id}`,data:s})}async function di(s){return await Q.get({url:`/api/instance/backups/${s}`})}async function ci(){return await Q.get({url:"/api/instance/backups/all"})}async function Yo(s,a){return await Q.post({url:"/api/instance/backups/delete",data:{id:s,fileName:a}})}function Zo(s,a){const r=Te(),{baseUrl:d,token:i}=r;return`${d||window.location.origin}/api/instance/backups/download?id=${s}&fileName=${encodeURIComponent(a)}&x-user-token=${i}`}async function Ca(s){return await Q.get({url:`/api/instance/players/online/${s}`})}async function ui(s){return await Q.get({url:`/api/instance/players/whitelist/${s}`})}async function mi(s,a){return await Q.post({url:`/api/instance/players/whitelist/add/${s}`,data:{name:a}})}async function pi(s,a){return await Q.post({url:`/api/instance/players/whitelist/remove/${s}`,data:{name:a}})}async function vi(s){return await Q.get({url:`/api/instance/players/ops/${s}`})}async function fi(s,a){return await Q.post({url:`/api/instance/players/ops/add/${s}`,data:{name:a}})}async function bi(s,a){return await Q.post({url:`/api/instance/players/ops/remove/${s}`,data:{name:a}})}async function xi(s){return await Q.get({url:`/api/instance/players/banplayer/${s}`})}async function gi(s,a,r){return await Q.post({url:`/api/instance/players/banplayer/add/${s}`,data:{name:a,reason:r}})}async function hi(s,a){return await Q.post({url:`/api/instance/players/banplayer/remove/${s}`,data:{name:a}})}async function yi(s){return await Q.get({url:`/api/instance/players/banip/${s}`})}async function _i(s,a,r){return await Q.post({url:`/api/instance/players/banip/add/${s}`,data:{ip:a,reason:r}})}async function wi(s,a){return await Q.post({url:`/api/instance/players/banip/remove/${s}`,data:{ip:a}})}async function ki(s){return await Q.get({url:`/api/instance/players/history/${s}`})}async function $i(s){return await Q.get({url:`/api/instance/map/spawn/${s}`})}const At=zt("instanceList",()=>{const s=h([]),a=h(0),r=h(0);async function d(){try{s.value=await ri(),a.value=s.value.length,r.value=s.value.filter(i=>i.status).length}catch(i){U.error("获取实例列表失败:"+i.message)}}return{instanceList:s,refreshInstanceList:d,totalInstanceCount:a,onlineInstanceCount:r}});async function zi(s,a,r,d="toml"){return await Q.post({url:"/api/frp/add",data:{name:s,config:a,provider:r,format:d}})}async function Ci(s){return await Q.post({url:"/api/frp/delete",data:{id:s}})}function Ai(){return Q.get({url:"/api/frp/list"})}function js(s,a){return Q.post({url:"/api/frp/action",data:{action:s,id:a}})}function Si(s){return Q.get({url:"/api/frp/info",params:{id:s}})}function Ii(){return Q.get({url:"/api/frp/autostart"})}function Vi(s){return Q.post({url:"/api/frp/autostart",data:{frpIds:s}})}const Lo=zt("tunnels",()=>{const s=h([]);async function a(){try{s.value=await Ai()}catch(r){U.error("获取Frp列表失败:"+r.message)}}return{frpList:s,getTunnels:a}}),Ps="remembered_url",Es="remembered_username",Fo={name:"",username:"",avatar:"",id:"",version:"",systemInfo:{netVersion:"",osType:"",osVersion:"",osArchitecture:"",hostname:"",docker:!1},targetFrontendVersion:{desktop:"",panel:""},roles:[]},Te=zt("user",{state:()=>({token:localStorage.getItem(Dt)||"",baseUrl:localStorage.getItem(Ft)||window.location.origin,userInfo:{...Fo}}),getters:{roles:s=>s.userInfo?.roles||[],isAdmin:s=>s.userInfo?.roles?.includes("all")||!1},actions:{async checkConnection(s){let a=s;s&&!/^(https?:)?\/\//.test(s)&&(a=`http://${s}`);try{return await Q.get({url:"/api/ping",baseURL:a||void 0,timeout:3e3}),!0}catch{return!1}},async login(s){const{url:a,username:r,password:d,checked:i}=s;let c=a;c&&!/^(https?:)?\/\//.test(c)&&(c=`http://${c}`);const f=c||"";try{const n=await Q.post({url:"/api/auth/login",baseURL:f,data:{username:r,password:d}});this.token=n.token,this.baseUrl=f,localStorage.setItem(Dt,n.token),localStorage.setItem(Ft,f),i?(localStorage.setItem(Ps,a||""),localStorage.setItem(Es,r)):(localStorage.removeItem(Ps),localStorage.removeItem(Es)),await this.getUserInfo()}catch(n){throw console.error("Login failed:",n),n}},async loginByOAuth(s){try{this.token=s.token,localStorage.setItem(Dt,s.token),this.baseUrl||(this.baseUrl=window.location.origin,localStorage.setItem(Ft,this.baseUrl)),await this.getUserInfo()}catch(a){throw console.error("OAuth登录失败:",a),a}},async getUserInfo(){if(this.token)try{const s=await Q.get({url:"/api/status"});this.userInfo={...Fo,...s,name:s.user||s.username,roles:s.roles||[]},await ro().initRoutes(this.userInfo.roles)}catch(s){console.error("Get user info failed:",s),await this.logout(),Ie("/login")}},async logout(){await ro().clearRoutes(),localStorage.removeItem(Dt),localStorage.removeItem(Ft),this.token="",this.baseUrl="",this.userInfo={...Fo}},async removeToken(){this.token=""}},persist:{afterRestore:s=>{s.store.token&&s.store.getUserInfo()}}});function Aa(){return Te(Bo)}const Bo=Ya();Bo.use(Za());oo.configure({showSpinner:!1});ht.beforeEach(async(s,a,r)=>{window.document.title=s.meta.title?`${s.meta.title} | MSLX 控制台`:"MSLX 控制台",oo.start();const d=Aa(),i=ti(),{whiteListRouters:c}=i,{token:f}=d;if(f){if(s.path==="/login"||s.path==="/oauth/callback"){r();return}const{roles:n}=d;if(n&&n.length>0)r();else try{await d.getUserInfo();const{roles:v}=d;await i.initRoutes(v),ht.hasRoute(s.name)?r():r("/")}catch(v){U.error(v),r({path:"/login",query:{redirect:encodeURIComponent(s.fullPath)}}),oo.done()}}else c.indexOf(s.path)!==-1?r():r({path:"/login",query:{redirect:encodeURIComponent(s.fullPath)}}),oo.done()});ht.afterEach(s=>{s.path==="/login"&&Aa().logout(),oo.done()});const Ui={class:"flex justify-between items-start mb-5"},Mi={class:"flex flex-col"},Li={class:"flex items-center gap-2"},Bi={class:"m-0 text-[20px] font-bold text-[var(--td-text-color-primary)] tracking-wide"},Ti={class:"mt-2.5 flex items-center gap-2"},Ri={class:"mb-6 min-h-[120px] flex flex-col justify-center"},ji={key:0,class:"flex flex-col items-center text-center py-2"},Pi={key:1,class:"py-2"},Ei={key:2,class:"flex flex-col items-center text-center py-4"},Di={key:3,class:"flex flex-col items-center text-center py-4"},Fi={key:4,class:"py-2"},Oi={key:0,class:"flex items-center gap-2 text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-950/30 p-3.5 rounded-xl border border-red-100 dark:border-red-900/50"},Ni={class:"text-sm font-medium"},Ki={class:"flex justify-between items-end mb-2 text-sm"},qi={class:"font-medium text-[var(--color-primary)]"},Hi={class:"text-xs font-mono text-[var(--td-text-color-secondary)]"},Gi={key:5,class:"flex flex-col gap-3"},Wi={class:"m-0 mt-1 pl-4 leading-relaxed opacity-90 space-y-1"},Ji={class:"flex flex-col gap-1.5 mt-1"},Xi={class:"bg-zinc-50 dark:bg-zinc-900/50 rounded-xl p-3.5 max-h-[200px] overflow-y-auto border border-zinc-200/60 dark:border-zinc-700/50 shadow-inner custom-scrollbar"},Qi={class:"font-mono text-[13px] leading-relaxed whitespace-pre-wrap text-zinc-700 dark:text-zinc-300"},Yi={key:0,class:"flex flex-col gap-3"},Zi={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},ed={key:0,class:"mt-2 flex justify-center"},td={key:1,class:"mt-4"},od={key:2,class:"mt-4"},sd={key:3,class:"flex flex-col gap-3 mt-4"},ad=ie({__name:"UpdateModal",props:{visible:{type:Boolean},updateInfo:{},downloadInfo:{}},emits:["close","skip","success"],setup(s,{emit:a}){const r=s,d=a,i=Te(),c=h(!1),f=h(0),n=h("0 KB/s"),v=h("准备中..."),I=h(!1),u=h(!1),L=h(!1),w=h("");let A=null;const m=()=>{u.value=!1,I.value=!1,w.value="",c.value=!1,L.value=!1,f.value=0},z=te(()=>r.updateInfo?.status==="beta"),b=te(()=>{const V=i.userInfo?.systemInfo?.osType||"";return V.includes("macOS")||V.includes("OSX")}),R=te(()=>(i.userInfo?.systemInfo?.osType||"").toLowerCase().includes("linux")),C=V=>{V&&window.open(V,"_blank")},M=()=>{d("close"),Ie("/instance/list")},B=()=>{if(c.value&&!L.value){U.warning("正在更新中,请勿关闭窗口");return}P(),d("close")},D=()=>{d("skip")},q=()=>{window.location.reload()};_e(()=>r.visible,(V,y)=>{V&&!y&&m()});const P=async()=>{if(A){try{await A.stop()}catch(V){console.error("Stop Hub Error:",V)}A=null}},j=async()=>{await P();const{baseUrl:V,token:y}=i,$=new URL("/api/hubs/daemonUpdate",V||window.location.origin);y&&$.searchParams.append("x-user-token",y),A=new Ct().withUrl($.toString(),{withCredentials:!1}).configureLogging(jt.Warning).withAutomaticReconnect([0,2e3,5e3,1e4]).build(),A.on("UpdateProgress",E=>{f.value=E.progress||0,n.value=E.speed||"",E.stage==="permission_check"?v.value="等待服务端确认权限...":E.stage==="restarting"?(console.log("[Update] 收到重启信号,准备轮询..."),v.value="服务正在重启...",P(),setTimeout(()=>{k()},3e3)):v.value=E.status||"正在处理..."}),A.on("UpdateFailed",E=>{c.value=!1,w.value=E||"更新失败",P()}),A.onclose(E=>{A&&(c.value&&f.value>=100?setTimeout(()=>{k()},6e3):E&&(c.value=!1,w.value=`连接断开: ${E.message}`))});try{await A.start()}catch(E){w.value=`连接更新服务失败: ${E.message}`,c.value=!1}},K=async()=>{if(!c.value){c.value=!0,I.value=!1,u.value=!1,w.value="",f.value=0,L.value=!1,await j();try{await li()}catch(V){c.value=!1,P();const y=V.message||"";y.includes("Docker")||y.includes("容器")?I.value=!0:y.includes("运行")&&(y.includes("服务器")||y.includes("实例"))?u.value=!0:w.value=y||"请求更新失败,请检查网络或日志"}}},k=async()=>{v.value="服务正在重启,请稍候...";const V=async()=>{try{return await Q.get({url:"/api/ping",timeout:3e3}),!0}catch{return!1}},y=60;let $=0;const E=setInterval(async()=>{$++,await V()?(clearInterval(E),c.value=!1,L.value=!0,v.value="更新成功!",P(),setTimeout(()=>d("success"),1e3)):$>y&&(clearInterval(E),c.value=!1,w.value="服务重启超时,请手动刷新页面检查状态。",P())},2e3)};return He(()=>{P()}),(V,y)=>{const $=g("t-tag"),E=g("t-button"),F=g("t-link"),J=g("t-alert"),O=g("t-progress"),N=g("t-popconfirm"),Y=g("t-dialog");return l(),G(Y,{visible:r.visible,header:!1,footer:!1,"close-on-overlay-click":!1,"close-btn":!1,width:"500px",class:"update-modal","destroy-on-close":"",attach:"body",onClose:B},{default:o(()=>[e("div",Ui,[e("div",Mi,[e("div",Li,[e("h3",Bi,S(L.value?"更新完成":"发现新版本"),1),z.value?(l(),G($,{key:0,theme:"warning",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[...y[2]||(y[2]=[p("Beta",-1)])]),_:1})):(l(),G($,{key:1,theme:"success",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[...y[3]||(y[3]=[p("Release",-1)])]),_:1}))]),e("div",Ti,[t($,{variant:"outline",size:"small",class:"!font-mono !rounded-md"},{default:o(()=>[p(S(s.updateInfo?.currentVersion),1)]),_:1}),y[4]||(y[4]=e("span",{class:"text-zinc-400 font-mono font-bold"},"→",-1)),t($,{theme:"primary",variant:"light-outline",size:"small",class:"!font-mono !rounded-md"},{default:o(()=>[p(S(s.updateInfo?.latestVersion),1)]),_:1})])]),c.value?H("",!0):(l(),G(E,{key:0,variant:"text",shape:"circle",class:"hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:B},{icon:o(()=>[t(_(as))]),_:1}))]),e("div",Ri,[L.value?(l(),x("div",ji,[t(_(Lt),{size:"48px",class:"text-emerald-500 mb-4 drop-shadow-sm"}),y[5]||(y[5]=e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-1"},"MSLX守护进程端已成功更新",-1)),y[6]||(y[6]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"},"请刷新页面以加载最新功能",-1))])):I.value?(l(),x("div",Pi,[t(J,{theme:"warning",title:"检测到 Docker 环境",class:"!rounded-xl"},{message:o(()=>[y[8]||(y[8]=p(" 当前程序运行在 ",-1)),y[9]||(y[9]=e("b",null,"Docker 容器",-1)),y[10]||(y[10]=p(" 内,不支持热更新。",-1)),y[11]||(y[11]=e("br",null,null,-1)),y[12]||(y[12]=p("请使用以下命令或者参照 ",-1)),y[13]||(y[13]=e("b",null,"官方文档",-1)),y[14]||(y[14]=p(" 更新。",-1)),y[15]||(y[15]=e("br",null,null,-1)),t(F,{theme:"primary",href:"https://mslx.mslmc.cn/docs/install/docker/",target:"_blank",class:"mt-1 align-baseline"},{default:o(()=>[...y[7]||(y[7]=[e("b",null,"Docker安装/更新文档",-1)])]),_:1})]),_:1}),y[16]||(y[16]=e("div",{class:"mt-3 bg-[#1e1e1e] text-[#d4d4d4] p-3 rounded-xl font-mono text-[13px] break-all select-all shadow-inner border border-black/20"},[p(" sudo docker compose pull && docker compose up -d "),e("span",{class:"text-zinc-500"},"# 指令仅适用于Compose部署")],-1))])):u.value?(l(),x("div",Ei,[t(_(uo),{size:"48px",class:"text-amber-500 mb-3 drop-shadow-sm"}),y[17]||(y[17]=e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-2"},"无法开始更新",-1)),y[18]||(y[18]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0 leading-relaxed"},[p(" 检测到当前有服务器实例正在运行。"),e("br"),p("为了防止数据丢失,请先停止所有实例。 ")],-1))])):v.value.includes("等待服务端确认权限")?(l(),x("div",Di,[...y[19]||(y[19]=[e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-2"},"请在服务端确认权限",-1),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0 leading-relaxed"},[p(" macOS 系统已弹出提示:"),e("br"),e("strong",{class:"text-zinc-700 dark:text-zinc-300"},"“MSLX-Daemon 想要控制应用程序 终端.app”"),p(),e("br"),p(" 请务必点击 "),e("strong",null,"【好/OK】"),p(" 以继续更新。 ")],-1)])])):c.value||w.value?(l(),x("div",Fi,[w.value?(l(),x("div",Oi,[t(_(Js),{class:"shrink-0 text-lg"}),e("span",Ni,S(w.value),1)])):(l(),x(le,{key:1},[e("div",Ki,[e("span",qi,S(v.value),1),e("span",Hi,S(n.value),1)]),t(O,{theme:"plump",percentage:f.value,status:f.value>=100?"active":"success"},null,8,["percentage","status"])],64))])):(l(),x("div",Gi,[b.value?(l(),G(J,{key:0,theme:"warning",variant:"outline",class:"!rounded-xl !text-[13px] leading-relaxed"},{message:o(()=>[...y[20]||(y[20]=[e("strong",null,"macOS 用户请注意:",-1),e("br",null,null,-1),p(" 受 Apple 安全机制 (Gatekeeper) 限制,更新重启后应用可能无法自动启动。如遇此情况,请前往「系统设置 > 隐私与安全性」手动允许应用运行。 ",-1)])]),_:1})):H("",!0),R.value?(l(),G(J,{key:1,theme:"info",variant:"outline",class:"!rounded-xl !text-[13px] leading-relaxed"},{message:o(()=>[y[26]||(y[26]=e("strong",null,"Linux 用户提示:",-1)),e("ul",Wi,[e("li",null,[y[22]||(y[22]=p("如使用一键脚本部署,推荐优先参考 ",-1)),t(F,{theme:"primary",href:"https://mslx.mslmc.cn/docs/install/linux/",target:"_blank",class:"align-baseline font-bold"},{default:o(()=>[...y[21]||(y[21]=[p("官方文档",-1)])]),_:1}),y[23]||(y[23]=p("。",-1))]),y[24]||(y[24]=e("li",null,[p("若启用 "),e("strong",null,"Systemd"),p(" 托管,请确保服务名称为 "),e("code",null,"mslx"),p(",否则无法自动重启。")],-1)),y[25]||(y[25]=e("li",null,"如果更新完成后仍然是旧版本,请尝试手动重启服务或手动更新!",-1))])]),_:1})):H("",!0),e("div",Ji,[y[27]||(y[27]=e("div",{class:"text-[13px] font-bold text-[var(--td-text-color-secondary)] tracking-wider"},"更新内容",-1)),e("div",Xi,[e("div",Qi,S(s.updateInfo?.log||"暂无详细日志"),1)])])]))]),!L.value&&!I.value&&!u.value?(l(),x("div",Yi,[t(E,{theme:"primary",block:"",size:"large",loading:c.value,disabled:c.value,class:"!rounded-xl shadow-sm",onClick:K},{icon:o(()=>[t(_(ls))]),default:o(()=>[p(" "+S(c.value?"正在更新...":"立即更新"),1)]),_:1},8,["loading","disabled"]),e("div",Zi,[t(E,{variant:"outline",block:"",class:"!rounded-xl !m-0",disabled:!s.downloadInfo?.file||c.value,onClick:y[0]||(y[0]=be=>C(s.downloadInfo?.file||""))},{icon:o(()=>[t(_(so))]),default:o(()=>[y[28]||(y[28]=p(" 下载新版本 ",-1))]),_:1},8,["disabled"]),t(E,{variant:"dashed",block:"",class:"!rounded-xl !m-0",disabled:!s.downloadInfo?.web||c.value,onClick:y[1]||(y[1]=be=>C(s.downloadInfo?.web||""))},{icon:o(()=>[t(_(Bt))]),default:o(()=>[y[29]||(y[29]=p(" 前往下载页 ",-1))]),_:1},8,["disabled"])]),c.value?H("",!0):(l(),x("div",ed,[t(N,{content:"确定要跳过此版本吗?跳过后将不再提示该版本。后续可在设置中更新。",theme:"warning",onConfirm:D},{default:o(()=>[t(F,{theme:"default",hover:"color",size:"small",class:"!text-zinc-400 hover:!text-zinc-600 dark:hover:!text-zinc-300"},{default:o(()=>[...y[30]||(y[30]=[p(" 跳过此版本 ",-1)])]),_:1})]),_:1})]))])):H("",!0),L.value?(l(),x("div",td,[t(E,{theme:"primary",size:"large",block:"",class:"!rounded-xl shadow-sm",onClick:q},{default:o(()=>[...y[31]||(y[31]=[p("刷新页面",-1)])]),_:1})])):H("",!0),I.value?(l(),x("div",od,[t(E,{variant:"outline",size:"large",block:"",class:"!rounded-xl",onClick:B},{default:o(()=>[...y[32]||(y[32]=[p("我知道了",-1)])]),_:1})])):H("",!0),u.value?(l(),x("div",sd,[t(E,{theme:"primary",size:"large",block:"",class:"!rounded-xl shadow-sm",onClick:M},{default:o(()=>[...y[33]||(y[33]=[p("前往实例列表管理",-1)])]),_:1}),t(E,{variant:"outline",size:"large",block:"",class:"!rounded-xl !m-0",onClick:B},{default:o(()=>[...y[34]||(y[34]=[p("暂不更新",-1)])]),_:1})])):H("",!0)]),_:1},8,["visible"])}}}),ld=ue(ad,[["__scopeId","data-v-d3e49ecc"]]),rd=ie({__name:"App",setup(s){const a=ut(),r=ps(),d=te(()=>a.displayMode),i=window.matchMedia("(prefers-color-scheme: dark)"),c=f=>{a.setSystemTheme(f.matches?"dark":"light")};return ze(()=>{r.checkAppUpdate(!1),i.addEventListener("change",c),a.setSystemTheme(i.matches?"dark":"light")}),He(()=>{i.removeEventListener("change",c)}),(f,n)=>{const v=g("router-view");return l(),x(le,null,[t(v,{class:ce([d.value])},null,8,["class"]),t(ld,{visible:_(r).showUpdateModal,"update-info":_(r).updateInfo,"download-info":_(r).downloadInfo,onClose:n[0]||(n[0]=I=>_(r).showUpdateModal=!1),onSkip:_(r).handleSkipVersion},null,8,["visible","update-info","download-info","onSkip"])],64)}}}),nd=ue(rd,[["__scopeId","data-v-ae5a7772"]]),To=el(nd);To.use(tl);To.use(Bo);To.use(ht);To.mount("#app");console.log(` -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣶⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⠿⠛⠋⠉⠩⣄⠘⢿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⡏⠑⠒⠀⠀⣀⣀⠀⠀⢹⠈⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣷⡀⢀⣰⣿⡿⣿⣧⠀⠀⢡⣾⣧⣀⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣯⣴⣿⠿⣄⣤⣾⡿⠟⠛⠛⠿⢿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣶⠿⠛⠋⠙⣿⣏⠀⠀⢻⣿⣡⣀⣀⠀⠀⠀⠀⢹⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⠿⠋⠁⠀⣀⣤⣶⣾⣿⣿⣤⣤⣾⣿⠉⠉⠙⠻⣿⠆⢀⣾⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠁⠀⣀⣴⣿⠿⠛⠉⠀⢀⣿⡿⠿⠟⢿⣆⠀⢀⣴⣯⣴⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⣠⡾⠋⠀⠀⣠⣾⠟⠋⠀⠀⠀⠀⠀⣈⣿⣷⣤⣴⣾⣿⣈⣻⣿⡟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⣰⡿⠁⠀⣠⡾⠋⠁⠀⠀⢀⣠⣴⠶⠞⠛⠛⠋⠉⠉⠉⠉⠙⠛⠻⠷⣦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠰⣿⠁⠀⠀⣿⣄⣀⣠⣴⡾⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⣿⠿⣶⣄⠀⠀⠀⢀⣠⡄⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠈⠛⠶⠶⢾⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢷⣄⠉⠙⠻⠿⠟⢹⡇⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⠁⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⠀⠀⠀⠀⠘⣿⣿⣦⣀⠀⠲⣾⣁⠀⠀⠀⠀⠀⡀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⢀⡾⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣦⡀⠀⠀⠀⣿⡿⣿⣿⣿⡆⠀⠉⠛⠛⠛⠛⢻⡏⠀ -⠀⠀⠀⠀⠀⠀⠀⣠⡾⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⡄⣸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⠛⢦⡀⠰⣿⣿⣿⣽⣿⡇⠀⠀⠀⠀⠀⢠⡿⠀⠀ -⠀⠀⠀⠀⣀⣤⡾⢻⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⢸⠀⡏⠙⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠰⣽⣶⣄⠉⠻⣿⣿⣧⠀⠀⢀⣤⣾⠟⠁⠀⠀ -⢰⣶⡾⠛⠋⠉⠀⠀⠀⠀⠀⢀⡀⠀⠀⠀⠀⠀⢸⣸⡇⠀⣨⣿⣾⡋⠀⠀⠀⠀⢀⠀⠀⣿⡀⠀⠈⠛⢷⣄⠈⠛⣿⡆⠀⠘⣿⡀⠀⠀⠀⠀ -⠀⠙⠿⣦⣀⠀⠀⠀⠀⠀⠀⡾⠀⠀⠀⠀⠀⠀⣿⣿⠀⠀⠋⠀⠙⢿⣦⣀⠀⠀⠘⣷⣄⣹⣧⠀⠀⠀⠈⢻⣦⠀⠈⠋⠀⠀⠘⣧⠀⠀⠀⠀ -⠀⠀⠀⠈⠛⠿⢶⡶⠃⠀⣰⠃⠀⠀⠀⠀⠀⢠⣿⠃⠀⠀⠀⠀⠀⠀⠉⠻⢷⣦⣤⣘⣿⡛⠛⠀⢀⣴⣶⣦⡹⣷⡀⠀⠀⠀⠀⠸⣧⠀⠀⠀ -⠀⠀⠀⠀⠀⢠⡿⠃⠀⢀⡟⠀⠀⠀⠀⠀⠀⣼⣿⠀⠀⢀⣴⣿⣿⣷⡄⠀⠀⠈⠉⠉⠉⠉⠀⠀⢸⣿⣿⣿⣷⠻⣧⠀⠀⠀⠀⠀⢿⡆⠀⠀ -⠀⠀⠀⠀⢰⣿⠁⠀⠀⢸⠁⠀⠀⠀⠀⠀⠈⠋⣿⠀⠀⠸⣿⣿⣿⣿⡷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⠟⠃⠀⢻⣧⠀⠀⠀⠀⠸⣧⠀⠀ -⠀⠀⠀⠀⣿⡇⠀⠀⠀⣿⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠉⠻⠿⠋⠀⠀⢠⡀⠀⠀⣀⣀⣀⣸⠇⠀⠀⠀⠀⠀⠈⢿⣧⠀⠀⠀⠀⣿⡀⠀ -⠀⠀⠀⢰⣿⠁⠀⠀⢰⡏⠀⠀⠀⠀⠀⠀⠀⠀⢿⡀⠀⠀⠀⠀⠀⣸⠀⠀⠈⠛⠒⠛⠉⠈⠉⠀⠀⠀⠀⠀⠀⠀⠀⢸⡟⠀⠀⠀⠀⢸⡇⠀ -⠀⠀⠀⢸⣿⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⢸⡇⠀⠀⠀⠀⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⠁⠀⠀⠀⠀⢸⣿⠀ -⠀⠀⠀⢸⣿⠀⠀⠀⢸⡇⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣤⣶⡿⠋⣿⠀⠀⠀⠀⠀⠀⣿⠀ -⠀⠀⠀⠘⣿⡄⠀⠀⢸⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⢿⣧⣄⣀⣀⣀⣠⣤⣶⣶⣾⣿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⣠⠀⠀⢠⣿⡄ -⠀⠀⠀⠀⢻⣧⠀⠀⠸⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣿⣿⣿⣟⠛⢻⡟⢻⡉⠉⣫⣀⠀⠀⠀⠉⠉⠛⠙⠿⣷⣿⡿⠁⢀⣰⡟⠀⠀⢸⣿⠀ -⠀⠀⠀⠀⠈⢻⣧⡀⠀⠹⣷⡀⠀⠀⠀⠀⢠⠀⠀⠀⠘⣿⣿⣿⢻⡿⠀⠈⠷⠟⠁⠘⢾⣿⣶⣤⣶⣾⡇⠀⣿⣿⣤⣶⣿⣿⠃⠀⠀⣾⡟⠀ -⠀⠀⠀⠀⠀⠈⠻⣷⣄⡀⠹⣷⣄⠀⠀⠀⢸⣷⣤⡀⠀⠈⢻⣿⣯⣤⠀⠀⣠⡀⠀⢀⣼⣿⣿⣿⣿⣟⠁⠐⠿⣿⣿⣿⣿⠋⠀⢀⣾⠟⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠈⠙⠿⣷⣮⣽⣷⣶⣤⣤⣿⣿⣿⣷⣶⣦⣭⣿⣿⣧⣠⠵⢯⡆⠚⣯⢿⠋⠛⠛⢫⣀⣠⣾⣿⢿⣿⣥⣤⠶⠛⠁⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⢁⣾⣿⣿⣿⠿⠿⠿⠿⠻⢿⣿⣿⣷⣦⣤⣤⣀⣤⣤⣄⣶⣿⣿⡿⠟⠉⠀⠀⢻⡄⠀⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⣿⡇⠀⠀⣀⡀⠈⢿⣧⠀⠉⠙⠛⠛⠛⠛⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀⢿⡄⠀⠀⠀⠀⠀⠀ -⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣴⣿⣿⡏⠛⠉⢻⣿⣿⣿⣾⣿⣿⠀⢸⣿⠀⠀⠀⠀⠀⠙⠓⠢⠀⠀⠀⠀⠀⠸⠀⠀⠀⠘⣿⡄⠀⠀⠀⠀⠀`);console.log("人生得意须尽吃,莫使金箸空对月。 —— 派蒙");const id={class:"design-card w-full bg-white dark:bg-zinc-800 p-5 sm:p-6 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},dd={class:"flex flex-col sm:flex-row items-center sm:items-start gap-5"},cd=["src"],ud={class:"flex-1 min-w-0 flex flex-col justify-center gap-2.5 text-center sm:text-left mt-1"},md={class:"flex flex-wrap items-center justify-center sm:justify-start gap-3"},pd={class:"text-l sm:text-xl font-bold text-[var(--td-text-color-primary)] m-0 flex items-center gap-2 tracking-tight"},vd={class:"text-[var(--color-primary)]"},fd={class:"text-sm sm:text-base text-[var(--td-text-color-secondary)] italic leading-relaxed m-0 whitespace-pre-line"},bd=ie({__name:"Banner",setup(s){const a=Te(),r=h(""),d=h(!1),i=()=>{d.value||(d.value=!0,setTimeout(()=>{d.value=!1},600))};async function c(){const f=`Every little creature in the world has their own piece of paradise. -Plants take root in the boundless earth, and their leaves grow toward the stars.`;try{const n=await Q.get({url:"/?c=a&c=b&c=c&c=d",baseURL:"https://v1.hitokoto.cn"});n&&n.hitokoto?r.value=`${n.hitokoto} —— 《${n.from}》${n.from_who?` (${n.from_who})`:""}`:r.value=f}catch(n){r.value=f,console.error("获取一言(Hitokoto)失败:",n)}}return ze(()=>{c()}),(f,n)=>(l(),x("div",id,[e("div",dd,[e("div",{class:"shrink-0 relative group cursor-pointer",onClick:i},[e("div",{class:ce(["absolute inset-0 rounded-full z-0 pointer-events-none transition-opacity",d.value?"animate-magic-burst":"opacity-0"]),style:{background:"radial-gradient(circle, var(--color-primary-light) 0%, transparent 70%)"}},null,2),e("img",{src:_(a).userInfo.avatar,alt:"头像",class:ce(["w-20 h-20 rounded-full object-cover ring-2 ring-[var(--color-primary)]/30 shadow-md transition-all duration-300 relative z-10",[d.value?"animate-jelly-pop":"group-hover:rotate-6 group-hover:scale-105"]])},null,10,cd)]),e("div",ud,[e("div",md,[e("h3",pd,[t(_(vt),{name:"sunny",class:"text-amber-500 animate-[spin_10s_linear_infinite]"}),n[0]||(n[0]=p(" 你好,",-1)),e("span",vd,S(_(a).userInfo.name),1)]),t(_(ho),{theme:_(a).isAdmin?"success":"primary",shape:"round"},{default:o(()=>[p(S(_(a).isAdmin?"管理员":"普通用户"),1)]),_:1},8,["theme"])]),e("p",fd,S(r.value),1)])])]))}}),xd=ue(bd,[["__scopeId","data-v-a7ac6aaa"]]),gd={class:"design-card w-full bg-white dark:bg-zinc-800 p-5 sm:p-6 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},hd={class:"grid grid-cols-[repeat(auto-fill,minmax(260px,1fr))] gap-4"},yd={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},_d={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right break-all pl-2"},wd={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},kd={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},$d={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right break-all pl-2"},zd={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Cd={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},Ad={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right truncate min-w-0 pl-2"},Sd={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Id={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},Vd={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right truncate min-w-0 pl-2"},Ud={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Md={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},Ld={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right truncate min-w-0 pl-2"},Bd={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Td={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},Rd={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right break-all pl-2"},jd={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Pd={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},Ed={class:"text-[var(--td-text-color-primary)] font-semibold text-sm text-right truncate min-w-0 pl-2"},Dd={class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group"},Fd={class:"flex items-center gap-2 text-[var(--td-text-color-secondary)] shrink-0 text-sm"},Od={class:"flex justify-end pl-2"},Nd=ie({__name:"InfoCard",setup(s){const a=Te(),r=At();return ze(()=>{r.refreshInstanceList()}),(d,i)=>(l(),x("div",gd,[e("div",hd,[e("div",{class:"flex items-center justify-between p-3.5 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200/80 dark:border-zinc-700/60 hover:border-zinc-300 dark:hover:border-zinc-500 hover:bg-zinc-100/50 dark:hover:bg-zinc-800/40 transition-all group cursor-pointer",onClick:i[0]||(i[0]=c=>_(Ie)("/instance/list"))},[e("span",yd,[t(_(vt),{name:"server",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[1]||(i[1]=e("span",null,"在线实例:",-1))]),e("span",_d,S(_(r).onlineInstanceCount)+" / "+S(_(r).totalInstanceCount),1)]),e("div",wd,[e("span",kd,[t(_(vt),{name:"logo-codepen",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[2]||(i[2]=e("span",null,"NET环境:",-1))]),e("span",$d,S(_(a).userInfo.systemInfo.netVersion),1)]),e("div",zd,[e("span",Cd,[t(_(vt),{name:"dashboard",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[3]||(i[3]=e("span",null,"面板版本:",-1))]),t(_(Do),{content:_(to).version,"max-width":"400px"},{default:o(()=>[e("span",Ad," v"+S(_(to).version),1)]),_:1},8,["content"])]),e("div",Sd,[e("span",Id,[t(_(vt),{name:"cloud",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[4]||(i[4]=e("span",null,"节点版本:",-1))]),t(_(Do),{content:`v${_(a).userInfo.version}`,"max-width":"400px"},{default:o(()=>[e("span",Vd," v"+S(_(a).userInfo.version),1)]),_:1},8,["content"])]),e("div",Ud,[e("span",Md,[t(_(vt),{name:"desktop",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[5]||(i[5]=e("span",null,"主机名:",-1))]),e("span",Ld,S(_(a).userInfo.systemInfo.hostname),1)]),e("div",Bd,[e("span",Td,[t(_(vt),{name:"system-code",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[6]||(i[6]=e("span",null,"系统类型:",-1))]),e("span",Rd,S(_(a).userInfo.systemInfo.osType)+" ("+S(_(a).userInfo.systemInfo.osArchitecture)+") ",1)]),e("div",jd,[e("span",Pd,[t(_(vt),{name:"system-setting",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[7]||(i[7]=e("span",null,"系统版本:",-1))]),t(_(Do),{content:_(a).userInfo.systemInfo.osVersion,"max-width":"400px"},{default:o(()=>[e("span",Ed,S(_(a).userInfo.systemInfo.osVersion),1)]),_:1},8,["content"])]),e("div",Dd,[e("span",Fd,[t(_(vt),{name:"check-circle",class:"text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors duration-300"}),i[8]||(i[8]=e("span",null,"版本匹配:",-1))]),e("span",Od,[t(_(ho),{theme:_(to).version.startsWith(_(a).userInfo.targetFrontendVersion.panel)?"success":"danger",shape:"round"},{default:o(()=>[p(S(_(to).version.startsWith(_(a).userInfo.targetFrontendVersion.panel)?"正确匹配":"请更新"),1)]),_:1},8,["theme"])])])])]))}}),Kd=ue(Nd,[["__scopeId","data-v-d5b9c201"]]),qd={class:"w-full"},Hd={class:"grid grid-cols-1 md:grid-cols-2 gap-4"},Gd={class:"design-card w-full bg-white dark:bg-zinc-800 p-4 sm:p-5 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},Wd={class:"flex justify-between items-center h-[100px] w-full gap-2"},Jd={class:"flex flex-col justify-center min-w-[100px] shrink-0"},Xd={class:"flex items-baseline my-1"},Qd={class:"text-3xl font-bold font-mono text-[var(--td-text-color-primary)] leading-none"},Yd={class:"design-card w-full bg-white dark:bg-zinc-800 p-4 sm:p-5 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},Zd={class:"flex justify-between items-center h-[100px] w-full gap-2"},ec={class:"flex flex-col justify-center min-w-[100px] shrink-0"},tc={class:"flex items-baseline my-1"},oc={class:"text-3xl font-bold font-mono text-[var(--td-text-color-primary)] leading-none"},sc={class:"mt-1 flex items-baseline gap-1 font-mono"},ac={class:"text-[14px] font-bold text-zinc-700 dark:text-zinc-200"},lc={class:"text-[11px] text-[var(--td-text-color-secondary)]"},rc=30,nc=ie({__name:"SystemStatus",setup(s){const a=Te(),r=h(null),d=h(!1),i=h(null),c=h(null);let f=null,n=null;const v=qe({cpu:0,memUsage:0,memUsed:0,memTotal:0}),I=[],u=[],L=[],w=R=>getComputedStyle(document.documentElement).getPropertyValue(R).trim()||"#999999",A=(R,C,M)=>({grid:{top:10,right:10,bottom:0,left:0,containLabel:!1},tooltip:{trigger:"axis",backgroundColor:"var(--td-bg-color-container)",borderColor:"var(--td-component-border)",textStyle:{color:"var(--td-text-color-primary)"},formatter:B=>{const D=B[0];return`${D.name}
${C}: ${D.value}%`}},xAxis:{type:"category",boundaryGap:!1,data:I,show:!1},yAxis:{type:"value",max:100,min:0,show:!1},series:[{name:C,type:"line",smooth:!0,showSymbol:!1,lineStyle:{width:2,color:R},areaStyle:{opacity:.2,color:new va(0,0,0,1,[{offset:0,color:R},{offset:1,color:"transparent"}])},data:M}]}),m=()=>{const R=w("--td-brand-color"),C=w("--td-success-color");i.value&&(f=ko(i.value),f.setOption(A(R,"CPU",[]))),c.value&&(n=ko(c.value),n.setOption(A(C,"Memory",[]))),window.addEventListener("resize",z)},z=()=>{f?.resize(),n?.resize()},b=async()=>{const{baseUrl:R,token:C}=a,M=new URL("/api/hubs/system",R||window.location.origin);C&&M.searchParams.append("x-user-token",C),r.value=new Ct().withUrl(M.toString(),{withCredentials:!1}).withAutomaticReconnect().build(),r.value.on("ReceiveSystemStats",B=>{v.cpu=B.cpu,v.memUsage=B.memUsage,v.memUsed=B.memUsed,v.memTotal=B.memTotal,I.length>=rc&&(I.shift(),u.shift(),L.shift()),I.push(B.timestamp),u.push(B.cpu),L.push(B.memUsage),f?.setOption({xAxis:{data:I},series:[{data:u}]}),n?.setOption({xAxis:{data:I},series:[{data:L}]})});try{await r.value.start(),d.value=!0,await r.value.invoke("JoinMonitor")}catch(B){console.error("SignalR 连接失败:",B)}r.value.onclose(()=>{d.value=!1})};return ze(()=>{yt(()=>{setTimeout(()=>{m(),b()},100)})}),He(async()=>{if(window.removeEventListener("resize",z),r.value)try{await r.value.invoke("LeaveMonitor"),await r.value.stop()}catch(R){console.error(R)}f?.dispose(),n?.dispose()}),(R,C)=>(l(),x("div",qd,[e("div",Hd,[e("div",Gd,[e("div",Wd,[e("div",Jd,[C[5]||(C[5]=e("div",{class:"text-[13px] text-[var(--td-text-color-secondary)] font-medium"},"CPU 使用率",-1)),e("div",Xd,[e("span",Qd,S(v.cpu),1),C[0]||(C[0]=e("span",{class:"text-xs ml-0.5 text-[var(--td-text-color-secondary)]"},"%",-1))]),d.value?(l(),G(_(ho),{key:0,theme:"success",shape:"round",size:"small",class:"w-fit mt-1"},{icon:o(()=>[...C[1]||(C[1]=[e("span",{class:"w-1.5 h-1.5 rounded-full bg-emerald-500 dark:bg-emerald-400 animate-pulse mr-1"},null,-1)])]),default:o(()=>[C[2]||(C[2]=p(" 实时 ",-1))]),_:1})):(l(),G(_(ho),{key:1,theme:"danger",shape:"round",size:"small",class:"w-fit mt-1"},{icon:o(()=>[...C[3]||(C[3]=[e("span",{class:"w-1.5 h-1.5 rounded-full bg-red-500 dark:bg-red-400 mr-1"},null,-1)])]),default:o(()=>[C[4]||(C[4]=p(" 离线 ",-1))]),_:1}))]),e("div",{ref_key:"cpuChartRef",ref:i,class:"flex-1 h-full min-w-[120px] overflow-hidden"},null,512)])]),e("div",Yd,[e("div",Zd,[e("div",ec,[C[8]||(C[8]=e("div",{class:"text-[13px] text-[var(--td-text-color-secondary)] font-medium"},"内存使用率",-1)),e("div",tc,[e("span",oc,S(v.memUsage),1),C[6]||(C[6]=e("span",{class:"text-xs ml-0.5 text-[var(--td-text-color-secondary)]"},"%",-1))]),e("div",sc,[e("span",ac,S((v.memUsed/1024).toFixed(1)),1),C[7]||(C[7]=e("span",{class:"text-[11px] text-[var(--td-text-color-secondary)] mx-0.5"},"/",-1)),e("span",lc,S((v.memTotal/1024).toFixed(1))+" GB",1)])]),e("div",{ref_key:"memChartRef",ref:c,class:"flex-1 h-full min-w-[120px] overflow-hidden"},null,512)])])])]))}}),ic=ue(nc,[["__scopeId","data-v-e0da8a49"]]),dc={class:"design-card w-full bg-white dark:bg-zinc-800 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300 flex flex-col relative overflow-hidden"},cc={class:"flex items-center gap-2 p-5 sm:px-6 pb-4 dark:border-zinc-700/50 text-left"},uc={class:"p-5 sm:px-6 text-left w-full min-h-[150px]"},mc={class:"w-full overflow-y-auto custom-scrollbar"},pc=ie({__name:"Announcement",setup(s){const a=h(!0),r=h(""),d=Xs(),i=h(d.value?"dark":"light");_e(d,()=>{i.value=d.value?"dark":"light"});async function c(){a.value=!0;const f=`## 🔴 公告加载失败 -- 请检查网络连接或联系管理员。`;try{const n=await Q.get({url:"https://api.mslmc.cn/v3/query/notice?query=mslxNoticeMd"});n&&n.mslxNoticeMd?r.value=n.mslxNoticeMd:r.value=f}catch(n){console.error("获取公告失败:",n),r.value=f}finally{a.value=!1}}return ze(()=>{c()}),(f,n)=>(l(),x("div",dc,[e("div",cc,[t(_(vt),{name:"system-messages",class:"text-[var(--color-primary)] text-lg"}),n[0]||(n[0]=e("h3",{class:"text-[16px] font-bold text-[var(--td-text-color-primary)] m-0"},"系统公告",-1))]),e("div",uc,[t(_(ol),{loading:a.value,text:"加载中...",size:"small",class:"w-full"},{default:o(()=>[e("div",mc,[t(_(Qs),{"editor-id":"announcement-preview","model-value":r.value,theme:i.value,class:"custom-md-preview bg-transparent text-left !p-0"},null,8,["model-value","theme"])])]),_:1},8,["loading"])])]))}}),vc=ue(pc,[["__scopeId","data-v-cf423ea7"]]),fc={class:"flex flex-col gap-6 mx-auto w-full min-h-screen pb-6"},bc=ie({__name:"index",setup(s){const a=Te(),r=h(!1),d=h(!1);ze(()=>{typeof CSS<"u"&&CSS.supports?r.value=!CSS.supports("color: color-mix(in srgb, red, blue)"):r.value=!0;const n=navigator.userAgent;/(Windows NT 6\.1|Windows NT 6\.2|Windows NT 6\.3)/i.test(n)&&(d.value=!0)});const i=te(()=>r.value?d.value?{title:"系统版本过旧 (Windows 7/8)",message:"受限于操作系统,您的 Chrome/Edge 浏览器已被官方永远停更在 109 版本,无法渲染本控制面板的现代 UI。请升级至 Windows 10/11,或改用受支持的 Firefox 浏览器!",btnText:"获取 Firefox",url:"https://www.mozilla.org/zh-CN/firefox/new/"}:{title:"浏览器内核版本过低",message:"检测到您当前的浏览器不支持部分现代 Web 技术。为了保证 MSLX 面板的正常显示与完整功能,强烈建议您升级浏览器。",btnText:"获取新版 Chrome",url:"https://www.google.cn/chrome/"}:null),c=te(()=>a.userInfo?.username==="mslx"),f=n=>{let v=0;return i.value&&(v+=1),c.value&&(v+=1),`${(n+v)*.05}s`};return(n,v)=>{const I=g("t-alert");return l(),x("div",fc,[i.value?(l(),G(I,{key:0,theme:"error",title:i.value.title,message:i.value.message,class:"list-item-anim w-full shadow-sm",style:{"animation-delay":"0s"}},{operation:o(()=>[e("span",{class:"cursor-pointer font-bold flex items-center gap-1 hover:opacity-80 transition-opacity",onClick:v[0]||(v[0]=u=>_(Ie)(i.value.url))},[p(S(i.value.btnText)+" ",1),v[2]||(v[2]=e("i",{class:"fa-solid fa-arrow-right text-sm"},null,-1))])]),_:1},8,["title","message"])):H("",!0),c.value?(l(),G(I,{key:1,theme:"warning",title:"安全风险提示",message:"检测到您当前正在使用默认账号 (mslx)。为了保障系统安全,请务必尽快修改用户名和密码!",class:"list-item-anim w-full shadow-sm",style:Oe({animationDelay:i.value?"0.05s":"0s"})},{operation:o(()=>[e("span",{class:"cursor-pointer font-bold flex items-center gap-1 hover:opacity-80 transition-opacity",onClick:v[1]||(v[1]=u=>_(Ie)("/settings"))},[...v[3]||(v[3]=[p(" 去修改 ",-1),e("i",{class:"fa-solid fa-arrow-right text-sm"},null,-1)])])]),_:1},8,["style"])):H("",!0),t(xd,{class:"list-item-anim",style:Oe({animationDelay:f(0)})},null,8,["style"]),t(Kd,{class:"list-item-anim",style:Oe({animationDelay:f(1)})},null,8,["style"]),t(ic,{class:"list-item-anim",style:Oe({animationDelay:f(2)})},null,8,["style"]),t(vc,{class:"list-item-anim",style:Oe({animationDelay:f(3)})},null,8,["style"])])}}}),xc=ue(bc,[["__scopeId","data-v-53cd7119"]]),gc=Object.freeze(Object.defineProperty({__proto__:null,default:xc},Symbol.toStringTag,{value:"Module"})),hc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsSAAALEgHS3X78AAADgklEQVR42u2dPWhTYRSGk2qlZKia+BMNFuJQERehuFiogoNSJ7tIi4MKFkELInapVYOIS8SlCqKoiwji5OhStLQOlUz+YUFrC2li7I26hGCwEbXrOTec5OKN93nWw/363S8PJ7w9yU0oBAAAASWsFdPXb1Q5ouZn+Oxp8XVu4XiCDQIgACAAIAAgAASQlVrU6+07aFp0bTTqq5v8WiwG/XWu0gEAAQABAAEAAQABYDkGWuPc5PiEWIttXCfWIpGIebP3L4+arjt28YpYK5VKYu3Rtaumv3f43IgnL5bzedF05nQAQABAAEAAQABAAKgxBr5781asbUl2mKKVVnOLXts6EmLt/XzWdADWWKrtRbuHeiKiNerRAQABAAEAAQABAAGgxhgY3xQXa/lc3hSt3CZ6WrwaOHlKrF0akePVhwuDttNp3WDay8NbN00RsZ6YqE0K6QCAAIAAgACAAIAAgABQy/8BtKyvoY18eyoF9dqJebn2aXrBtG4i9tN0Hz1OwbQXbTTtdv9WtFHx3Mc5OgAgACAAIAAgACAA1BID/wX97TmxVh4/L9a6OitibXW8zbSXeL4sR2RlL/3t8ppZZ4Un58Y4GBAAEAAQABAAEAB8GgPdJnPxWKUpDs6rfS7RAQABAAEAAQABAAGg+WJgy+0hc3zampoSa8XsrFj7dueIaa/flYmfxpoTD8RaNJGUL0x1q+vmlbNbGhyjAwACAAIAAgACAAJAvTGwkFts+KJaXNFizp8YqNT2HDoq1p70Nj7qhYx7eTX9XL5/p1Vdt+3MXdN+HKWmvcZ0AN4CAAEAAQABAAEgcDHQeqH2XbQf9+QfatS+w/cbbeLnfMkpV643Ry8JbXKp7UW7B7dpaEZ5rO2q46N0AEAAQABAAEAAQACok/DwcKoqFQ/07TfFQA0tIv6NieX/+sAzM/rjaryIei+nMnQAQABAAEAAQABAAFjGd08KtU7udo89E2ubk52mNRdmZ8Tai6G9dABAAEAAQABAAEAAQADg/wAuuI07sy7jYguvJ582fE3rL394Me6lAwACAAIAAgACAAJAg2Kg9slf7ZOmu7q7PIuJEo8H9vkqznqBF2dOB+AtABAAEAAQABAAiIE1smPndl/diN+mbF7gxZnTAXgLAAQABAAEAASAoBHWitrzg6B5SKdTYToAIAAgACAAIAAgAAAAAECQ+QUUBtshXi5agwAAAABJRU5ErkJggg==",yc="/assets/png/mslx-150px-Anvil.BV3t5jxS.png",_c="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAACWElEQVR42u3dPS8EURQG4G1RU6GWoFUqRK9Ao1BoJRJ+gEgUG4XERyJRKIQIFYVE0Gn8rPUPzolc1+zOPG/yljs7e89Tnczu9notz9zsxKBmewKAACAACAACgAAgAMjQDPBoYyns2+l+2O/DtbCAAAAAAAAAAAAAAAAAAAAAAADA3w0wG1DW99eXsDv95bDZ9TNgnQcCAAAAAAAAAAAAAAAAAAAAQKsAZB8wW6SUDvBxcz3sx/1l2M/r87DZ+3d+kQQAAAAAAAAAAAAAAAAAAAAAAL9obSAPdxdhn6/Own5vb4XtPBAAAAAAAAAAAAAAAAAAAAAAWgVgcmpqELV0wLW/2PHVXw5bOsDaD4xkzeYDAAAAAAAAAAAAAAAAAAAAAAC/yfzC4iBqdgO1D6gUSNMDzK6fnS8AAAAAAAAAAAAAAAAAAAAAAPwngJvbp7BNAyldRJX+gEXpAI+OT8ICAAAAAAAAAAAAAAAAAAAAAMB/AshusDaQ2g+clA5wd+8gbHZ+2esBAAAAAAAAAAAAAAAAAAAAAGCYFkFNA6m9iKk94JHfBAIAAAAAAAAAAAAAAAAAAADQKgClA64NpOkB2QQCAAAAAAAAAAAAAAAAAAAAMEoAhh3Iyupq2GEfcHZ+Y2PjYRv/xxAAAAAAAAAAAAAAAAAAAAAAOgWgaSAZgKYXMVmzAWfnBwAAAAAAAAAAAAAAAAAAAAAAo5RSIKWLoNYvYgAAAAAAAAAAAAAAAAAAAAAAoEVApmdmw1rEAAAAAAAAAAAAAAAAAAAAAACAiIiIiIiIiHQwP/KhHMCviKP2AAAAAElFTkSuQmCC",wc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAABi0lEQVR42u3cMWoCQRSAYW9mkzYHECGFYJXCKrWVTYpcQwIpUliICAaLEDxASiHn2GIs070njMgy+33wyhWZ91fD6mgEAAAAAAAAANAzh5euRLOdx5M974QFgAAQAAJAAAgAAXA/p7euRJMteL+I57yLJ/t8GxIAAkAACAABIAAEwO0ucrIF1T6fLXgzjed7FY8NCwABIAAEgAAQAALgX3bA2fy+x1MbQLbg7PvZsAAQAAJAAAgAASAArvd37Eo0tT8Mqb1osiEBIAAEgAAQAAJAAPTnImn+8RBO7QslNiAABIAAEAACQAAIgP54/ZmVaJyQABAAAkAACAABIADasdg8lmickAAQAAJAAAgAASAA2pG9EOKEBIAAEAACQAAIAAHQDhdBAhCAAAQgAAEIQAACEIAABCAAAQzH8mtSonFCAkAACAABIAAEgABohz+IEIAABCAAAQhAAAIQgAAEIAABCGA4nj/HJRonJAAEgAAQAAJAAAiAdjytxyUaJyQABIAAEAACQAAIYEAu6/zodBuokO4AAAAASUVORK5CYII=",kc={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},$c={class:"design-card flex flex-col sm:flex-row flex-wrap sm:items-center justify-between gap-4 p-5 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left"},zc={class:"flex flex-col sm:flex-row flex-wrap items-center sm:justify-end gap-3"},Cc={class:"flex items-center bg-zinc-100 dark:bg-zinc-800/80 rounded-lg p-1"},Ac={class:"px-3 text-sm font-medium text-[var(--td-text-color-secondary)]"},Sc={class:"text-[var(--color-primary)] font-bold"},Ic={class:"flex items-center border-l border-[var(--td-component-border)] pl-1 ml-1 gap-1"},Vc={class:"relative min-h-[400px]"},Uc={key:0,class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-4"},Mc=["onClick"],Lc={key:0,class:"absolute top-4 right-4 z-10 pointer-events-none"},Bc={class:"flex items-center gap-4"},Tc={class:"relative shrink-0"},Rc={class:"absolute -bottom-0.5 -right-0.5 flex h-3.5 w-3.5"},jc={key:0,class:"animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-75"},Pc={class:"flex-1 min-w-0 pr-4"},Ec={class:"flex items-center min-w-0"},Dc={class:"flex-1 text-base font-bold text-[var(--td-text-color-primary)] truncate tracking-tight"},Fc={class:"text-xs font-mono text-[var(--td-text-color-secondary)] ml-2 opacity-70 shrink-0"},Oc={class:"mt-2 flex items-center gap-4 w-full"},Nc={class:"flex-1 min-w-0 flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},Kc={class:"truncate font-medium"},qc={key:0,class:"flex items-center gap-1 text-xs text-emerald-600 dark:text-emerald-400 bg-emerald-50 dark:bg-emerald-900/30 px-1.5 py-0.5 rounded-md shrink-0 whitespace-nowrap"},Hc={class:"font-bold"},Gc={class:"flex items-center justify-between pt-3 mt-auto border-t border-dashed border-zinc-200 dark:border-zinc-700/60"},Wc={class:"text-xs text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors font-semibold"},Jc={key:0,class:"flex items-center gap-1"},Xc={key:1,class:"flex flex-col items-center justify-center py-24 bg-white/40 dark:bg-zinc-800/40 rounded-2xl border-2 border-dashed border-[var(--td-component-border)]"},Qc={class:"delete-dialog-body"},Yc={class:"alert-zinc bg-red-500/5 border border-red-500/20 p-4 rounded-xl mb-4"},Zc={class:"text-[var(--td-text-color-primary)] font-bold mb-1"},eu={class:"text-red-500"},tu={class:"px-1"},ou=ie({__name:"index",setup(s){const a=At(),r=Te();ze(()=>{a.refreshInstanceList()});const d=z=>{switch(z){case 1:return{label:"启动中",theme:"primary",icon:rl,loading:!0};case 2:return{label:"运行中",theme:"success",icon:Kt,loading:!1};case 3:return{label:"停止中",theme:"warning",icon:ll,loading:!1};case 4:return{label:"重启中",theme:"primary",icon:Ee,loading:!0};default:return{label:"未启动",theme:"default",icon:al,loading:!1}}},i=h(!1),c=h([]),f=h(!1),n=()=>{i.value=!i.value,c.value=[]},v=z=>{if(i.value){const b=c.value.indexOf(z.id);b===-1?c.value.push(z.id):c.value.splice(b,1)}else Ie(`/instance/console/${z.id}`)},I=z=>{if(c.value.length===0){U.warning("请先选择要操作的实例");return}const R={start:"启动",stop:"停止",restart:"重启",delete:"删除"}[z],C=z==="delete",M=Ke.confirm({header:`确认批量${R}`,body:`您确定要对已选中的 ${c.value.length} 个实例执行${R}操作吗?${C?"(注意:删除操作不可逆,批量删除默认不清理磁盘上的服务端数据文件)":""}`,theme:C?"danger":"primary",onConfirm:async()=>{M.hide(),f.value=!0;const B=U.loading(`正在批量${R}中,请稍候...`);try{const D=c.value.map(j=>C?Rs(j,!1):It(j,z)),P=(await Promise.allSettled(D)).filter(j=>j.status==="rejected");P.length>0?U.warning({content:`操作完成,但有 ${P.length} 个实例执行${R}失败`,duration:5e3}):U.success(`批量${R}操作成功`),c.value=[],i.value=!1,await a.refreshInstanceList()}catch(D){U.error(`批量操作出现异常: ${D.message}`)}finally{U.close(B),f.value=!1}}})},u=(z,b)=>{if(z.includes("http"))return z;switch(z){case"neoforge":return hc;case"forge":return yc;case"custom":return _c;case"server-icon":return new URL(`${localStorage.getItem(Ft)}/api/instance/icon/${b}.png?x-user-token=${localStorage.getItem(Dt)}`,import.meta.url).href;default:return wc}},L=z=>z==="none"?"自定义模式":z.startsWith("@")?z.includes("neoforge")?"NeoForge":"Forge":z.replace(".jar",""),w=qe({visible:!1,loading:!1,deleteFile:!1,item:null}),A=(z,b)=>{z.stopPropagation(),w.item=b,w.deleteFile=!1,w.loading=!1,w.visible=!0},m=async()=>{if(w.item){w.loading=!0;try{await Rs(w.item.id,w.deleteFile),U.success("删除成功"),w.visible=!1,await a.refreshInstanceList()}catch(z){U.error("删除失败: "+z.message)}finally{w.loading=!1}}};return(z,b)=>{const R=g("t-button"),C=g("t-checkbox"),M=g("t-avatar"),B=g("t-empty"),D=g("t-dialog"),q=Ys("loading");return l(),x("div",kc,[e("div",$c,[b[17]||(b[17]=e("div",{class:"flex flex-col gap-1 items-start shrink-0 flex-1 min-w-0"},[e("h2",{class:"text-lg font-bold tracking-tight text-[var(--td-text-color-primary)] m-0"},"服务端列表"),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"}," 管理您的 Minecraft 服务器实例,监控运行状态与核心版本 ")],-1)),e("div",zc,[i.value?(l(),x(le,{key:1},[e("div",Cc,[e("span",Ac,[b[10]||(b[10]=p(" 已选 ",-1)),e("span",Sc,S(c.value.length),1),b[11]||(b[11]=p(" 项 ",-1))]),e("div",Ic,[t(R,{size:"small",theme:"primary",variant:"text",disabled:!c.value.length||f.value,onClick:b[1]||(b[1]=P=>I("start"))},{default:o(()=>[...b[12]||(b[12]=[p("启动",-1)])]),_:1},8,["disabled"]),t(R,{size:"small",theme:"warning",variant:"text",disabled:!c.value.length||f.value,onClick:b[2]||(b[2]=P=>I("restart"))},{default:o(()=>[...b[13]||(b[13]=[p("重启",-1)])]),_:1},8,["disabled"]),t(R,{size:"small",theme:"danger",variant:"text",disabled:!c.value.length||f.value,onClick:b[3]||(b[3]=P=>I("stop"))},{default:o(()=>[...b[14]||(b[14]=[p("停止",-1)])]),_:1},8,["disabled"]),_(r).isAdmin?(l(),G(R,{key:0,size:"small",theme:"danger",variant:"text",disabled:!c.value.length||f.value,onClick:b[4]||(b[4]=P=>I("delete"))},{default:o(()=>[...b[15]||(b[15]=[p("删除",-1)])]),_:1},8,["disabled"])):H("",!0)])]),t(R,{variant:"outline",disabled:f.value,onClick:n},{default:o(()=>[...b[16]||(b[16]=[p("取消批量",-1)])]),_:1},8,["disabled"])],64)):(l(),x(le,{key:0},[t(R,{variant:"outline",disabled:!_(a).instanceList?.length,onClick:n},{icon:o(()=>[t(_(Zs))]),default:o(()=>[b[7]||(b[7]=p(" 批量操作 ",-1))]),_:1},8,["disabled"]),t(R,{variant:"dashed",onClick:_(a).refreshInstanceList},{icon:o(()=>[t(_(Ee))]),default:o(()=>[b[8]||(b[8]=p(" 刷新列表 ",-1))]),_:1},8,["onClick"]),_(r).isAdmin?(l(),G(R,{key:0,theme:"primary",onClick:b[0]||(b[0]=P=>_(Ie)("/instance/create"))},{icon:o(()=>[t(_(ot))]),default:o(()=>[b[9]||(b[9]=p(" 添加服务端 ",-1))]),_:1})):H("",!0)],64))])]),Be((l(),x("div",Vc,[_(a).instanceList&&_(a).instanceList.length>0?(l(),x("div",Uc,[(l(!0),x(le,null,ge(_(a).instanceList,(P,j)=>(l(),x("div",{key:P.id,class:"list-item-anim h-full",style:Oe({animationDelay:`${j*.05}s`})},[e("div",{class:ce(["design-card relative h-full group flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm hover:shadow-md hover:border-[var(--color-primary)]/50 transition-all duration-300 p-5 gap-4 cursor-pointer",{"!border-[var(--color-primary)] !bg-[var(--color-primary)]/5 shadow-md":i.value&&c.value.includes(P.id)}]),onClick:K=>v(P)},[i.value?(l(),x("div",Lc,[t(C,{checked:c.value.includes(P.id)},null,8,["checked"])])):H("",!0),e("div",Bc,[e("div",Tc,[t(M,{image:u(P.icon,P.id),class:"shadow-sm border border-[var(--td-component-border)] !bg-[var(--td-bg-color-secondarycontainer)] !rounded-xl",shape:"round",size:"56px"},null,8,["image"]),e("span",Rc,[P.status===2?(l(),x("span",jc)):H("",!0),e("span",{class:ce([P.status===2?"bg-emerald-500":"bg-zinc-300 dark:bg-zinc-600","relative inline-flex rounded-full h-3.5 w-3.5 border-2 border-white dark:border-zinc-800"])},null,2)])]),e("div",Pc,[e("div",Ec,[e("h4",Dc,S(P.name),1),e("span",Fc,"#"+S(P.id),1)]),e("div",Oc,[e("div",Nc,[t(_(sl),{class:"opacity-80 shrink-0",size:"14px"}),e("span",Kc,S(L(P.core)),1)]),P.extra&&P.extra.onlinePlayers>0&&P.status===2?(l(),x("div",qc,[t(_(rs),{size:"14px"}),e("span",Hc,S(P.extra.onlinePlayers),1)])):H("",!0),e("div",{class:ce([d(P.status).theme==="success"?"text-emerald-600 dark:text-emerald-400":"text-[var(--td-text-color-secondary)]","text-xs font-bold shrink-0 whitespace-nowrap"])},S(d(P.status).label),3)])])]),e("div",Gc,[e("span",Wc,S(i.value?c.value.includes(P.id)?"点击取消选择":"点击选择实例":"控制台 →"),1),i.value?H("",!0):(l(),x("div",Jc,[_(r).isAdmin?(l(),G(R,{key:0,class:"hover:!bg-red-500/10",shape:"circle",size:"small",theme:"danger",variant:"text",onClick:dt(K=>A(K,P),["stop"])},{icon:o(()=>[t(_(ct),{size:"32"})]),_:1},8,["onClick"])):H("",!0)]))])],10,Mc)],4))),128))])):(l(),x("div",Xc,[t(B,{class:"!bg-transparent",description:"暂无服务端实例"})]))])),[[q,!1]]),t(D,{visible:w.visible,"onUpdate:visible":b[6]||(b[6]=P=>w.visible=P),"confirm-btn":{content:"确认删除",theme:"danger",loading:w.loading},"cancel-btn":"取消",header:"确认删除服务端",onConfirm:m},{default:o(()=>[e("div",Qc,[e("div",Yc,[e("p",Zc,[b[18]||(b[18]=p(" 您确定要删除 ",-1)),e("span",eu,S(w.item?.name),1),b[19]||(b[19]=p(" 吗? ",-1))]),b[20]||(b[20]=e("p",{class:"text-xs text-red-500/80 italic"},"此操作不可撤销,服务端配置与运行记录将被抹除。",-1))]),e("div",tu,[t(C,{modelValue:w.deleteFile,"onUpdate:modelValue":b[5]||(b[5]=P=>w.deleteFile=P)},{default:o(()=>[...b[21]||(b[21]=[e("span",{class:"text-[var(--td-text-color-secondary)] text-sm"},"同时清理磁盘上的服务端数据文件",-1)])]),_:1},8,["modelValue"])])])]),_:1},8,["visible","confirm-btn"])])}}}),su=ue(ou,[["__scopeId","data-v-4d8c8b99"]]),au=Object.freeze(Object.defineProperty({__proto__:null,default:su},Symbol.toStringTag,{value:"Module"}));async function lu(){return await Q.get({url:"/mirrors",baseURL:"https://api.mslmc.cn/v4"})}async function fs(s){return await Q.get({url:`/mirrors/${s}`,baseURL:"https://api.mslmc.cn/v4"})}async function ru(s,a){return await Q.get({url:`/mirrors/${s}/${a}`,baseURL:"https://api.mslmc.cn/v4"})}async function bs(s,a,r="latest"){return await Q.get({url:`/download/server/${s}/${a}?build=${r}`,baseURL:"https://api.mslmc.cn/v4"})}const nu={class:"flex flex-col md:flex-row h-[75vh] bg-zinc-50 dark:bg-zinc-900/80 overflow-hidden"},iu={class:"w-full md:w-64 lg:w-72 shrink-0 bg-white/90 dark:bg-zinc-800/90 backdrop-blur-md border-b md:border-b-0 md:border-r border-zinc-200/70 dark:border-zinc-700/60 flex flex-col z-10 shadow-[2px_0_8px_rgba(0,0,0,0.02)]"},du={class:"flex-1 overflow-x-auto md:overflow-y-auto custom-scrollbar flex flex-row md:flex-col gap-2 p-3 md:p-4 hide-scrollbar-on-mobile"},cu=["onClick"],uu={class:"flex flex-col min-w-0 pr-2 md:pr-0"},mu={class:"hidden md:block text-[11px] text-[var(--td-text-color-secondary)] leading-snug mt-0.5"},pu={key:0,class:"hidden md:inline-flex items-center mt-1.5 w-max px-1.5 py-0.5 rounded bg-zinc-200/50 dark:bg-zinc-700/50 text-[var(--td-text-color-secondary)] text-[10px] font-mono font-bold"},vu={class:"flex-1 flex flex-col min-w-0 relative overflow-y-auto md:overflow-hidden"},fu={class:"flex-1 flex flex-col min-h-[240px] shrink-0 md:min-h-0 md:shrink p-4 sm:p-6 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 bg-white/40 dark:bg-zinc-900/40"},bu={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 mb-4 shrink-0"},xu={class:"flex-1 overflow-y-auto custom-scrollbar pr-2 pb-2"},gu={key:0,class:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-3"},hu=["onClick"],yu={key:1,class:"h-full flex flex-col items-center justify-center opacity-60"},_u={class:"flex-1 flex flex-col min-h-[240px] shrink-0 md:min-h-0 md:shrink p-4 sm:p-6 bg-zinc-50/50 dark:bg-zinc-800/30"},wu={class:"flex items-center justify-between mb-4 shrink-0"},ku={class:"flex items-center gap-2"},$u={class:"text-sm font-bold text-[var(--td-text-color-primary)] m-0"},zu={key:0,class:"text-[var(--color-primary)] mr-1"},Cu={class:"flex-1 overflow-y-auto custom-scrollbar pr-2 pb-2 relative"},Au={key:0,class:"h-full flex items-center justify-center"},Su={key:1,class:"grid grid-cols-3 sm:grid-cols-4 md:grid-cols-5 lg:grid-cols-6 xl:grid-cols-8 gap-2"},Iu=["onClick"],Vu={key:2,class:"h-full flex items-center justify-center opacity-60"},Uu={class:"min-h-[150px] max-h-[50vh] overflow-y-auto custom-scrollbar p-2"},Mu={key:0,class:"flex flex-col gap-2"},Lu=["onClick"],Bu={class:"flex items-center gap-3"},Tu={class:"font-mono text-sm font-bold text-zinc-700 dark:text-zinc-300 group-hover:text-[var(--color-primary)] transition-colors"},Ru={class:"flex items-center"},ju={key:0,class:"text-[11px] text-emerald-600 dark:text-emerald-400 font-bold bg-emerald-100 dark:bg-emerald-900/40 px-2 py-0.5 rounded-full border border-emerald-200 dark:border-emerald-800/50"},Pu={key:1,class:"flex flex-col items-center justify-center opacity-60 mt-8"},Eu=ie({__name:"ServerCoreSelector",props:{visible:{type:Boolean}},emits:["update:visible","confirm"],setup(s,{emit:a}){const r=s,d=a,i=te({get:()=>r.visible,set:k=>d("update:visible",k)}),c=h(!1),f=h(!1),n=h({}),v=h("plugins"),I=h(""),u=h([]),L=h(""),w=h(!1),A=h(!1),m=h([]),z=h(""),b=[{key:"plugins",name:"插件服务端",desc:"支持 Bukkit/Spigot/Paper 插件",icon:"app",dataKey:"pluginsCore"},{key:"forge_hybrid",name:"NeoForge 系混合服务端",desc:"同时支持 Neoforge/Forge模组 和 插件",icon:"layers",dataKey:"pluginsAndModsCore_Forge"},{key:"fabric_hybrid",name:"Fabric 混合服务端",desc:"同时支持 Fabric模组 和 插件",icon:"cpu",dataKey:"pluginsAndModsCore_Fabric"},{key:"mod_forge",name:"NeoForge 模组服务端",desc:"纯 NeoForge/Forge 模组支持",icon:"tools",dataKey:"modsCore_Forge"},{key:"mod_fabric",name:"Fabric 模组服务端",desc:"纯 Fabric 模组支持",icon:"ai-tool",dataKey:"modsCore_Fabric"},{key:"vanilla",name:"原版服务端",desc:"Minecraft 官方原版核心",icon:"tea",dataKey:"vanillaCore"},{key:"bedrock",name:"基岩版第三方端",desc:"第三方的基岩版服务端",icon:"gift",dataKey:"bedrockCore"},{key:"proxy",name:"代理服务端",desc:"BungeeCord / Velocity 等 用于群组服",icon:"share",dataKey:"proxyCore"}],R=te(()=>{const k=b.find(V=>V.key===v.value);return!k||!n.value?[]:n.value[k.dataKey]||[]}),C=te(()=>L.value?R.value.filter(k=>k.toLowerCase().includes(L.value.toLowerCase())):R.value),M=async()=>{c.value=!0;try{const k=await lu();Array.isArray(k)&&k.length>0?n.value=k[0]:k&&!Array.isArray(k)&&(n.value=k)}catch(k){U.error("获取服务端分类失败"),console.error(k)}finally{c.value=!1}},B=k=>{v.value=k,I.value="",u.value=[],L.value=""},D=k=>{I.value!==k&&(I.value=k,q(k))},q=async k=>{f.value=!0,u.value=[];try{const V=await fs(k);u.value=V.versions||[]}catch(V){U.error(`获取 ${k} 版本列表失败`),console.error(V)}finally{f.value=!1}},P=async k=>{I.value==="forge"||I.value==="neoforge"?(z.value=k,await j(I.value,k)):await K(I.value,k,"latest")},j=async(k,V)=>{A.value=!0,m.value=[],w.value=!0;try{const $=await ru(k,V)||[];$&&$.length>0?m.value=$:m.value=["latest"]}catch(y){U.error(`获取 ${k} 构建版本失败`),console.error(y),m.value=["latest"]}finally{A.value=!1}},K=async(k,V,y)=>{if(k==="bedrock-server"){U.warning("不支持在此部署基岩版官方版服务端,请使用基岩版一键部署/更新功能!");return}const $=U.loading("正在获取核心下载信息...",0);try{const E=await bs(k,V,y),F={core:k,version:V,build:y,url:E.url,sha256:E.sha256||"",filename:`${k}-${V}.jar`};U.close($),d("confirm",F),i.value=!1,w.value=!1}catch(E){U.close($),U.error("获取核心的下载信息失败"),console.error(E)}};return _e(()=>r.visible,k=>{k&&!n.value.pluginsCore&&M()}),(k,V)=>{const y=g("t-loading"),$=g("t-icon"),E=g("t-input"),F=g("t-button"),J=g("t-dialog");return l(),G(J,{visible:i.value,"onUpdate:visible":V[3]||(V[3]=O=>i.value=O),header:"选择服务端核心",width:"90%",top:"5vh",attach:"body",footer:!1,"destroy-on-close":"",class:"core-selector-dialog"},{default:o(()=>[e("div",nu,[e("div",iu,[V[4]||(V[4]=e("div",{class:"hidden md:block p-5 pb-3"},[e("h3",{class:"text-base font-extrabold text-[var(--td-text-color-primary)] m-0 tracking-tight"},"服务端分类"),e("p",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 font-medium"},"选择您需要的底层架构类型")],-1)),e("div",du,[c.value?(l(),G(y,{key:0,loading:c.value,size:"small",text:"加载分类中...",class:"m-auto"},null,8,["loading"])):(l(),x(le,{key:1},ge(b,O=>e("div",{key:O.key,class:ce(["group flex items-center md:items-start gap-3 p-2.5 md:p-3 rounded-xl cursor-pointer border border-transparent transition-all duration-300 shrink-0 md:shrink",v.value===O.key?"bg-[var(--color-primary)]/10 border-[var(--color-primary)]/20 shadow-sm":"hover:bg-zinc-100 dark:hover:bg-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600"]),onClick:N=>B(O.key)},[e("div",{class:ce(["w-10 h-10 rounded-lg flex items-center justify-center shrink-0 transition-colors",v.value===O.key?"bg-[var(--color-primary)] text-white shadow-md shadow-[var(--color-primary)]/30":"bg-zinc-100 dark:bg-zinc-800 text-[var(--td-text-color-secondary)] group-hover:text-zinc-700 dark:group-hover:text-zinc-200"])},[t($,{name:O.icon,size:"20px"},null,8,["name"])],2),e("div",uu,[e("div",{class:ce(["font-bold text-sm truncate transition-colors",v.value===O.key?"text-[var(--color-primary)]":"text-zinc-700 dark:text-zinc-300"])},S(O.name),3),e("div",mu,S(O.desc),1),n.value[O.dataKey]?(l(),x("div",pu,S(n.value[O.dataKey]?.length||0)+" CORES ",1)):H("",!0)])],10,cu)),64))])]),e("div",vu,[e("div",fu,[e("div",bu,[V[5]||(V[5]=e("div",{class:"flex items-center gap-2"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h3",{class:"text-sm font-bold text-[var(--td-text-color-primary)] m-0"},"选择服务端核心")],-1)),t(E,{modelValue:L.value,"onUpdate:modelValue":V[0]||(V[0]=O=>L.value=O),placeholder:"搜索核心名称...",class:"!w-full sm:!w-64 !bg-white dark:!bg-zinc-800"},{"prefix-icon":o(()=>[t($,{name:"search",class:"opacity-60"})]),_:1},8,["modelValue"])]),e("div",xu,[C.value.length>0?(l(),x("div",gu,[(l(!0),x(le,null,ge(C.value,O=>(l(),x("div",{key:O,class:ce(["group relative flex items-center justify-center p-4 rounded-xl border bg-white dark:bg-zinc-800 cursor-pointer transition-all duration-300 select-none overflow-hidden",I.value===O?"border-[var(--color-primary)] shadow-md shadow-[var(--color-primary)]/20":"border-zinc-200 dark:border-zinc-700 hover:border-[var(--color-primary)]/50 hover:shadow-sm"]),onClick:N=>D(O)},[e("div",{class:ce(["absolute inset-0 bg-[var(--color-primary)] transition-transform duration-300 origin-bottom",I.value===O?"scale-y-100 opacity-100":"scale-y-0 opacity-0"])},null,2),e("span",{class:ce(["relative z-10 font-extrabold text-sm truncate transition-colors duration-300",I.value===O?"text-white":"text-zinc-700 dark:text-zinc-300 group-hover:text-[var(--color-primary)]"])},S(O),3),I.value===O?(l(),G($,{key:0,name:"check",class:"absolute top-2 right-2 text-white/80 text-sm z-10"})):H("",!0)],10,hu))),128))])):(l(),x("div",yu,[t($,{name:"search",size:"32px",class:"text-zinc-400 mb-2"}),V[6]||(V[6]=e("span",{class:"text-sm text-zinc-500 font-medium"},"该分类下暂无匹配的核心",-1))]))])]),e("div",_u,[e("div",wu,[e("div",ku,[V[8]||(V[8]=e("div",{class:"w-1 h-4 bg-emerald-500 rounded-full"},null,-1)),e("h3",$u,[I.value?(l(),x("span",zu,S(I.value),1)):H("",!0),V[7]||(V[7]=p(" 支持版本列表 ",-1))])]),I.value?(l(),G(F,{key:0,size:"small",variant:"text",class:"hover:!bg-zinc-200/50 dark:hover:!bg-zinc-700/50",onClick:V[1]||(V[1]=O=>q(I.value))},{icon:o(()=>[t($,{name:"refresh"})]),default:o(()=>[V[9]||(V[9]=p("刷新版本 ",-1))]),_:1})):H("",!0)]),e("div",Cu,[f.value?(l(),G(y,{key:0,loading:f.value,size:"small",text:"获取版本中...",class:"absolute inset-0 m-auto"},null,8,["loading"])):(l(),x(le,{key:1},[I.value?u.value.length>0?(l(),x("div",Su,[(l(!0),x(le,null,ge(u.value,O=>(l(),x("div",{key:O,class:"flex items-center justify-center px-2 py-1.5 rounded-lg border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-xs font-mono font-bold text-zinc-600 dark:text-zinc-300 cursor-pointer shadow-sm transition-all hover:bg-[var(--color-primary)]/10 hover:border-[var(--color-primary)]/40 hover:text-[var(--color-primary)] hover:-translate-y-0.5 active:translate-y-0",onClick:N=>P(O)},S(O),9,Iu))),128))])):(l(),x("div",Vu,[...V[11]||(V[11]=[e("span",{class:"text-sm text-zinc-500 font-medium"},"未找到该核心的版本信息",-1)])])):(l(),x("div",Au,[...V[10]||(V[10]=[e("span",{class:"text-sm font-medium text-[var(--td-text-color-secondary)] bg-white dark:bg-zinc-800 px-4 py-2 rounded-full shadow-sm border border-[var(--td-component-border)]"},"请先在上方选择一个核心",-1)])]))],64))])])])]),t(J,{visible:w.value,"onUpdate:visible":V[2]||(V[2]=O=>w.value=O),header:`${I.value} ${z.value} 选择构建版本`,width:"500px",top:"15vh",attach:"body",footer:!1,"z-index":10270},{default:o(()=>[e("div",Uu,[A.value?(l(),G(y,{key:0,loading:A.value,size:"small",text:"获取构建版本中...",class:"flex justify-center mt-10"},null,8,["loading"])):(l(),x(le,{key:1},[m.value.length>0?(l(),x("div",Mu,[(l(!0),x(le,null,ge(m.value,(O,N)=>(l(),x("div",{key:O,class:"flex items-center justify-between px-4 py-3 rounded-lg border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-zinc-800/40 cursor-pointer transition-all hover:border-[var(--color-primary)] hover:shadow-sm hover:bg-[var(--color-primary)]/5 group",onClick:Y=>K(I.value,z.value,O)},[e("div",Bu,[t($,{name:"server",class:"text-zinc-400 group-hover:text-[var(--color-primary)] transition-colors"}),e("span",Tu,S(O),1)]),e("div",Ru,[N===0&&O!=="latest"?(l(),x("span",ju," 推荐/最新 ")):H("",!0),t($,{name:"chevron-right",class:"ml-2 text-zinc-300 group-hover:text-[var(--color-primary)] transition-colors"})])],8,Lu))),128))])):(l(),x("div",Pu,[t($,{name:"error-circle",size:"24px",class:"text-zinc-400 mb-2"}),V[12]||(V[12]=e("span",{class:"text-sm text-zinc-500"},"未获取到构建版本",-1))]))],64))])]),_:1},8,["visible","header"])]),_:1},8,["visible"])}}}),xs=ue(Eu,[["__scopeId","data-v-d4c19aa2"]]);async function gs(s,a){return await Q.get({url:"/query/jdk",baseURL:"https://api.mslmc.cn/v3",params:{os:s,arch:a}})}async function hs(s=!1){return await Q.get({url:"/api/java/list",params:{refresh:s},timeout:60*1e3})}const Du={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},Fu={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8 transition-all duration-300 flex flex-col md:flex-row gap-8 lg:gap-12 min-h-[600px]"},Ou={class:"w-full md:w-56 shrink-0 md:border-r border-dashed border-zinc-200/80 dark:border-zinc-700/60 md:pr-8 pb-4 md:pb-0 border-b md:border-b-0"},Nu={class:"flex-1 min-w-0 flex flex-col relative"},Ku={key:0,class:"h-full flex flex-col"},qu={class:"list-item-anim flex-1 pt-1"},Hu={class:"list-item-anim flex-1 pt-1"},Gu={class:"flex flex-col gap-2.5 mt-2"},Wu={class:"text-[11px] text-[var(--td-text-color-secondary)] mt-1 flex items-center gap-1 font-medium"},Ju={class:"w-full"},Xu={class:"w-full sm:w-[32rem] min-h-[70px] mt-2"},Qu={key:0},Yu={class:"text-[11px] text-[var(--td-text-color-secondary)] mt-2 font-medium"},Zu={class:"font-mono bg-zinc-100 dark:bg-zinc-800 px-1 rounded ml-1"},em={key:1,class:"flex items-center gap-3"},tm={key:2},om={key:3},sm={class:"list-item-anim flex-1 pt-1"},am={class:"w-full sm:w-[32rem]"},lm={key:0},rm={class:"w-full"},nm={key:0,class:"flex items-center gap-3 mt-4 p-3 bg-transparent rounded-lg border border-[var(--color-primary)]/40 relative overflow-hidden group"},im={class:"flex-1 min-w-0"},dm={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},cm={key:1},um={class:"w-full"},mm={key:1,class:"w-full bg-transparent p-4 mt-4 rounded-lg border border-[var(--color-primary)]/40"},pm={class:"text-sm font-bold text-[var(--td-text-color-primary)] mb-2 truncate"},vm={key:2,class:"flex items-center gap-3 mt-4 p-3 bg-transparent rounded-lg border border-[var(--color-success)]/40 relative overflow-hidden"},fm={class:"flex-1 min-w-0"},bm={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},xm={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},gm={class:"flex items-center gap-1 shrink-0"},hm={key:2},ym={class:"list-item-anim flex-1 pt-1"},_m={class:"grid grid-cols-1 sm:grid-cols-2 gap-x-6 gap-y-6 w-full sm:w-[40rem]"},wm={class:"flex items-center gap-2 w-full"},km={class:"flex-1"},$m={class:"flex items-center gap-2 w-full"},zm={class:"flex-1"},Cm={class:"list-item-anim flex-1 pt-1"},Am={class:"flex flex-col min-w-0 mb-8 pb-6 border-b border-zinc-200 dark:border-zinc-800"},Sm={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] truncate tracking-tight"},Im={class:"text-sm text-[var(--td-text-color-secondary)] mt-2 flex items-center gap-1.5 truncate"},Vm={class:"flex flex-col w-full"},Um={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},Mm={class:"flex flex-col sm:items-end text-left sm:text-right"},Lm={class:"flex items-center gap-2"},Bm={class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]"},Tm={class:"text-[11px] text-zinc-500 mt-1"},Rm={key:0},jm={key:1},Pm={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},Em={class:"flex flex-col sm:items-end text-left sm:text-right"},Dm={class:"flex items-center gap-2"},Fm={key:0,class:"text-sm font-bold text-[var(--td-text-color-primary)]"},Om=["title"],Nm={class:"text-[11px] text-zinc-500 mt-1 truncate max-w-[250px] sm:max-w-[350px]"},Km={key:0},qm={key:1},Hm={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},Gm={class:"flex items-center gap-3"},Wm={class:"text-sm font-bold text-[var(--color-primary)]"},Jm={class:"text-sm font-bold text-red-500 dark:text-red-400"},Xm={class:"flex flex-col sm:flex-row sm:items-start justify-between py-4"},Qm={key:0,class:"text-xs font-mono text-[var(--td-text-color-secondary)] break-all leading-relaxed bg-zinc-50/50 dark:bg-zinc-800/30 p-2.5 rounded-lg border border-zinc-100 dark:border-zinc-800 text-left sm:text-right max-w-full sm:max-w-md"},Ym={key:1,class:"text-sm text-zinc-500 mt-1"},Zm={class:"mt-auto pt-6 border-t border-zinc-200 dark:border-zinc-700 flex items-center justify-between"},ep={key:1},tp={key:1,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim"},op={class:"text-lg font-bold text-[var(--td-text-color-primary)] mb-2 tracking-tight"},sp={class:"w-full max-w-lg !my-6"},ap={class:"w-full max-w-2xl bg-white/40 dark:bg-zinc-900/40 rounded-2xl border border-white/60 dark:border-zinc-700/50 p-4 h-64 flex flex-col mt-6 shadow-[0_4px_12px_rgba(0,0,0,0.02)]"},lp={class:"text-[var(--td-text-color-secondary)] mr-2"},rp={class:"text-[var(--td-text-color-primary)] font-medium"},np={key:2,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim min-h-[50vh] sm:min-h-[40vh]"},ip={class:"text-xl text-[var(--td-text-color-primary)] text-center font-medium leading-[22px] !mt-4"},dp={class:"flex gap-4"},cp=ie({__name:"QuickMode",setup(s){const a=Te(),r=h(null),d=At(),i=h(0),c=h(!1),f=h(!1),n=h(!1),v=h(0),I=h([]),u=h(null),L=h(null),w=h(null),A=h("online"),m=h(!1),z=h(null),b=h(!1),R=h(0),C=h(""),M=h(""),B=h("online"),D=h([]),q=h([]),P=h(""),j=h(""),K=async(ee=!1)=>{try{ee&&U.info("正在刷新Java版本列表(重新扫描耗时较长)...");const T=await gs(a.userInfo.systemInfo.osType.toLowerCase().replace("os",""),a.userInfo.systemInfo.osArchitecture.toLowerCase());T&&Array.isArray(T)&&(D.value=T.map(de=>({label:`Java ${de}`,value:de})),D.value.length>0&&!P.value&&(P.value=D.value[1].value)),q.value=(await hs(ee)).map(de=>({label:`Java ${de.version}${de.is64Bit?"":" (32位)"} (${de.vendor} | ${de.path})`,value:de.path})),q.value.length>0&&(j.value=q.value[0].value),ee&&U.success("已刷新Java版本列表")}catch(T){U.warning("获取在线Java版本失败"+T.message)}};ze(()=>{K()});const k=h({name:"新建服务器",path:"",java:"",core:"",coreUrl:"",coreSha256:"",coreFileKey:"",packageFileKey:"",minM:1024,maxM:4096,args:""}),V=[{label:"GB",value:"GB"},{label:"MB",value:"MB"}],y=h("GB"),$=h("GB"),E=te({get:()=>y.value==="GB"?k.value.minM/1024:k.value.minM,set:ee=>{k.value.minM=y.value==="GB"?Math.round(ee*1024):ee}}),F=te({get:()=>$.value==="GB"?k.value.maxM/1024:k.value.maxM,set:ee=>{k.value.maxM=$.value==="GB"?Math.round(ee*1024):ee}});_e([B,P,j],([ee,T,de])=>{ee==="env"?k.value.java="java":ee==="custom"||ee==="local"?k.value.java=de:ee==="online"&&(k.value.java=T?`MSLX://Java/${T}`:""),k.value.java&&r.value?.validate({fields:["java"]})},{immediate:!0});const J=te(()=>({name:[{required:!0,message:"实例名称不能为空",trigger:"blur"}],java:[{required:!0,message:"请配置 Java 环境",trigger:"change"}],core:[{required:!0,message:"核心名称/文件不能为空",trigger:"change"}],coreUrl:[{validator:ee=>{if(A.value==="online"){if(!ee)return{result:!1,message:"请选择一个服务端核心",type:"error"};if(ee&&!/^https?:\/\/.+/.test(ee))return{result:!1,message:"下载地址必须以 http(s) 开头",type:"error"}}return!0},trigger:"change"}],coreFileKey:[{validator:ee=>A.value==="manual"&&!ee?{result:!1,message:"请上传核心文件",type:"error"}:!0,trigger:"change"}],minM:[{required:!0,min:1,message:"最小内存必须大于0",trigger:"blur"}],maxM:[{required:!0,min:1,message:"最大内存必须大于0",trigger:"blur"}]})),O=[["name","path"],["java"],["core","coreUrl","coreSha256","coreFileKey"],["minM","maxM","args"],[]],N=()=>{i.value>0&&(i.value-=1)},Y=async()=>{if(i.value===2){if(A.value==="online"){if(!k.value.coreUrl||!k.value.core){U.warning("请点击按钮选择一个服务端核心");return}}else if(A.value==="custom"){if(!k.value.core){U.warning("请输入核心文件名");return}}else if(!k.value.coreFileKey){U.warning("请先上传核心文件");return}}const ee=await r.value.validate();if(ee===!0){i.value<4&&(i.value+=1);return}const T=new Set(O[i.value]);Object.keys(ee).some(he=>T.has(he))?U.warning("请检查当前步骤的输入"):i.value<4&&(i.value+=1)},be=ee=>{k.value.core=ee.filename,k.value.coreUrl=ee.url,k.value.coreSha256=ee.sha256,k.value.coreFileKey="",U.success(`已选择: ${ee.core} (${ee.version})`),r.value.validate({fields:["core","coreUrl"]})},ae=()=>{z.value?.click()},me=ee=>{if(ee===0)return"0 B";const T=1024,de=["B","KB","MB","GB"],he=Math.floor(Math.log(ee)/Math.log(T));return parseFloat((ee/Math.pow(T,he)).toFixed(2))+" "+de[he]},fe=async ee=>{const T=ee.target;if(!T.files||T.files.length===0)return;if(k.value.coreFileKey)try{await Mt(k.value.coreFileKey),console.log("旧临时文件已清理:",k.value.coreFileKey)}catch(ne){console.warn("清理旧文件失败,可能文件已过期",ne)}const de=T.files[0],he=de.name;k.value.core=he,k.value.coreUrl="",k.value.coreSha256="",k.value.coreFileKey="",C.value=he,M.value=me(de.size),await Me(de),T.value=""};let Se=null;const Me=async ee=>{Se&&Se.abort(),Se=new AbortController,b.value=!0,R.value=0;const de=ee.size>200*1024*1024?50*1024*1024:5*1024*1024,he=Math.ceil(ee.size/de),ne=4,W=5,pe=new Map;let Ve=0;const Ce=()=>{const Ue=Date.now();if(Ue-Ve<100)return;Ve=Ue;const we=Array.from(pe.values()).reduce((je,Fe)=>je+Fe,0),Ae=Math.min(we/ee.size*98,98);R.value=Number(Ae.toFixed(1))};try{const we=(await qt()).uploadId;if(!we)throw new Error("无法获取上传凭证");const Ae=Array.from({length:he},(xe,et)=>et),je=async xe=>{if(Se?.signal.aborted)throw new Error("已取消");const et=xe*de,tt=Math.min(ee.size,et+de),rt=ee.slice(et,tt);let Pe;for(let lt=1;lt<=W;lt++){if(Se?.signal.aborted)throw new Error("已取消");try{await Ht(we,xe,rt,ke=>{ke&&ke.loaded&&(pe.set(xe,ke.loaded),Ce())},Se?.signal),pe.set(xe,rt.size),Ce();return}catch(ke){Pe=ke,pe.set(xe,0),Ce(),ltsetTimeout(wt,1e3*lt))}}throw new Error(`分片 ${xe} 失败: ${Pe?.message}`)},Fe=async()=>{for(;Ae.length>0&&!Se?.signal.aborted;){const xe=Ae.shift();xe!==void 0&&await je(xe)}},Ze=Array(Math.min(ne,he)).fill(null).map(()=>Fe());if(await Promise.all(Ze),Se?.signal.aborted)throw new Error("已取消");const Xe=(await Gt(we,he)).uploadId;R.value=100,k.value.coreFileKey=Xe,U.success("核心文件上传成功!"),r.value?.validate({fields:["core","coreFileKey"]})}catch(Ue){if(Ue.message==="已取消")return;console.error(Ue),U.error(`上传失败: ${Ue.message||"未知错误"}`),k.value.core="",C.value="",R.value=0,k.value.coreFileKey&&(Mt(k.value.coreFileKey).catch(()=>{}),k.value.coreFileKey="")}finally{Se?.signal.aborted||(b.value=!1)}},Z=async()=>{k.value.coreFileKey&&(await Mt(k.value.coreFileKey),k.value.coreFileKey="",k.value.core="",C.value="",U.success("文件已移除"))},se=async()=>{if(!(await r.value.validate()===!0)){U.warning("请检查表单所有内容");return}c.value=!0,I.value=[];const de={...k.value,path:k.value.path||null,coreUrl:k.value.coreUrl||null,coreSha256:k.value.coreSha256||null,coreFileKey:k.value.coreFileKey||null,args:k.value.args||null};A.value==="manual"?(de.coreUrl=null,de.coreSha256=null):de.coreFileKey=null;try{const ne=(await Mo(de)).serverId;if(!ne)throw new Error("服务器未返回 ServerId");L.value=ne.toString(),f.value=!0,i.value=5,await De(L.value)}catch(he){const ne=he.message||"创建请求失败,请检查网络或后端服务";U.error(ne),c.value=!1}},De=async ee=>{const{baseUrl:T,token:de}=a;let he=!1;const ne=new URL("/api/hubs/creationProgressHub",T||window.location.origin);ne.searchParams.append("x-user-token",de),u.value=new Ct().withUrl(ne.toString(),{withCredentials:!1}).configureLogging(jt.Information).build();const W=(pe,Ve=null)=>{I.value.push({time:new Date().toLocaleTimeString(),message:pe,progress:Ve}),yt(()=>{w.value&&(w.value.scrollTop=w.value.scrollHeight)})};u.value.on("StatusUpdate",(pe,Ve,Ce)=>{pe.toString()===ee&&(W(Ve,Ce),Ce!==null&&Ce>=0&&(v.value=Ce),Ce===100?(he=!0,U.success("服务器创建成功!"),u.value?.stop(),f.value=!1,n.value=!0,i.value=6,c.value=!1,d.refreshInstanceList()):Ce===-1&&(U.error(Ve||"创建过程中发生未知错误"),u.value?.stop(),f.value=!1,c.value=!1,i.value=0))});try{await u.value.start(),W("已连接到实时进度服务..."),await u.value.invoke("TrackServer",ee),W("已订阅任务,等待服务器响应...")}catch(pe){he||(W(`SignalR 连接失败: ${pe.message}`,-1),U.error("无法连接到实时进度服务"),f.value=!1,c.value=!1,i.value=0)}};He(()=>{u.value?.stop(),Se&&Se.abort()});const Le=()=>{n.value=!1,i.value=0,k.value={...k.value,name:"新建服务器",core:"",coreUrl:"",coreSha256:"",path:"",args:"",coreFileKey:""},C.value="",A.value="online",B.value="online",j.value=""};return(ee,T)=>{const de=g("t-step-item"),he=g("t-steps"),ne=g("t-input"),W=g("t-form-item"),pe=g("t-icon"),Ve=g("t-alert"),Ce=g("t-radio-button"),Ue=g("t-radio-group"),we=g("t-select"),Ae=g("t-button"),je=g("t-progress"),Fe=g("t-input-number"),Ze=g("t-textarea"),re=g("t-tag"),Xe=g("t-form");return l(),x("div",Du,[e("div",Fu,[e("div",Ou,[t(he,{layout:"vertical",current:i.value,status:"process",readonly:"",class:"custom-steps !bg-transparent !mt-2"},{default:o(()=>[t(de,{title:"基本信息",content:"填写实例名称和路径"}),t(de,{title:"Java 环境",content:"配置 Java 运行时"}),t(de,{title:"核心文件",content:"指定核心文件及下载"}),t(de,{title:"资源配置",content:"设置内存与 JVM 参数"}),t(de,{title:"确认信息",content:"核对并提交"}),t(de,{title:"创建实例",content:"提交并等待创建"}),t(de,{title:"完成",content:"查看创建结果"})]),_:1},8,["current"])]),e("div",Nu,[!f.value&&!n.value?(l(),x("div",Ku,[t(Xe,{ref_key:"formRef",ref:r,data:k.value,rules:J.value,"label-align":"top",class:"flex-1 flex flex-col [&_.t-form__item]:!mb-6",onSubmit:se},{default:o(()=>[Be(e("div",qu,[t(W,{label:"实例名称",name:"name"},{default:o(()=>[t(ne,{modelValue:k.value.name,"onUpdate:modelValue":T[0]||(T[0]=xe=>k.value.name=xe),placeholder:"为你的服务器起个名字",class:"!w-full sm:!w-[28rem]"},null,8,["modelValue"])]),_:1}),t(W,{label:"实例路径",name:"path",help:_(a).userInfo.systemInfo.docker?"您正在使用Docker容器部署,为保数据安全,仅支持使用默认数据路径":"选填,留空将使用默认路径"},{default:o(()=>[t(ne,{modelValue:k.value.path,"onUpdate:modelValue":T[1]||(T[1]=xe=>k.value.path=xe),disabled:_(a).userInfo.systemInfo.docker,placeholder:"例如: D:\\MyServer",class:"!w-full sm:!w-[28rem] !font-mono"},null,8,["modelValue","disabled"])]),_:1},8,["help"])],512),[[Re,i.value===0]]),Be(e("div",Hu,[t(Ve,{theme:"info",title:"Java 版本选择指南",class:"!mb-6 !rounded-xl"},{message:o(()=>[e("div",Gu,[T[21]||(T[21]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 26.1 - 最新版本"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 25")],-1)),T[22]||(T[22]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.20.5 - 1.21.11"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 21")],-1)),T[23]||(T[23]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.18 - 1.20.4"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 17")],-1)),T[24]||(T[24]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.17 / 1.17.1"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 16")],-1)),T[25]||(T[25]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-zinc-100 dark:bg-zinc-800 text-zinc-600 dark:text-zinc-300 border border-zinc-200 dark:border-zinc-700 font-bold text-xs tracking-wide shadow-sm"},"MC 1.13 - 更低版本"),e("span",{class:"font-extrabold text-xs text-[var(--td-text-color-secondary)] bg-zinc-100 dark:bg-zinc-800 px-2.5 py-1 rounded-md border border-zinc-200 dark:border-zinc-700"},"Java 8")],-1)),e("div",Wu,[t(pe,{name:"info-circle",size:"14px"}),T[20]||(T[20]=p(" 建议直接使用推荐版本,避免兼容性问题。 ",-1))])])]),_:1}),t(W,{label:"Java 来源",name:"java",class:"!mb-0"},{default:o(()=>[e("div",Ju,[t(Ue,{modelValue:B.value,"onUpdate:modelValue":T[2]||(T[2]=xe=>B.value=xe),variant:"default-filled",class:"!mb-4"},{default:o(()=>[t(Ce,{value:"online"},{default:o(()=>[...T[26]||(T[26]=[p("在线下载",-1)])]),_:1}),t(Ce,{value:"local"},{default:o(()=>[...T[27]||(T[27]=[p("选择电脑上的 Java",-1)])]),_:1}),t(Ce,{value:"env"},{default:o(()=>[...T[28]||(T[28]=[p("环境变量",-1)])]),_:1}),t(Ce,{value:"custom"},{default:o(()=>[...T[29]||(T[29]=[p("自定义路径",-1)])]),_:1})]),_:1},8,["modelValue"]),e("div",Xu,[B.value==="online"?(l(),x("div",Qu,[t(we,{modelValue:P.value,"onUpdate:modelValue":T[3]||(T[3]=xe=>P.value=xe),options:D.value,placeholder:"请选择 Java 版本",class:"!w-full sm:!w-64"},null,8,["modelValue","options"]),e("div",Yu,[p(" 将下载并使用 Java "+S(P.value||"?")+" ",1),e("span",Zu,S(_(a).userInfo.systemInfo.osType.toLowerCase().replace("os",""))+" / "+S(_(a).userInfo.systemInfo.osArchitecture.toLowerCase()),1)])])):H("",!0),B.value==="local"?(l(),x("div",em,[t(we,{modelValue:j.value,"onUpdate:modelValue":T[4]||(T[4]=xe=>j.value=xe),options:q.value,placeholder:"请选择 Java 版本",class:"!flex-1"},null,8,["modelValue","options"]),t(Ae,{variant:"outline",theme:"primary",onClick:T[5]||(T[5]=xe=>K(!0))},{default:o(()=>[...T[30]||(T[30]=[p("重新扫描",-1)])]),_:1})])):H("",!0),B.value==="env"?(l(),x("div",tm,[t(ne,{"model-value":"java",readonly:"",disabled:"",class:"!font-mono !bg-zinc-100 dark:!bg-zinc-800/50"}),T[31]||(T[31]=e("div",{class:"text-[11px] text-zinc-500 mt-2 font-medium"},"将使用系统环境变量中的 java 命令",-1))])):H("",!0),B.value==="custom"?(l(),x("div",om,[t(ne,{modelValue:j.value,"onUpdate:modelValue":T[6]||(T[6]=xe=>j.value=xe),placeholder:"例如: C:\\Program Files\\Java\\jdk-17\\bin\\java.exe",class:"!font-mono"},null,8,["modelValue"])])):H("",!0)])])]),_:1})],512),[[Re,i.value===1]]),Be(e("div",sm,[t(W,{label:"选择您的Minecraft开服使用的服务端核心",class:"!mb-5"},{default:o(()=>[t(Ue,{modelValue:A.value,"onUpdate:modelValue":T[7]||(T[7]=xe=>A.value=xe),variant:"default-filled"},{default:o(()=>[t(Ce,{value:"online"},{default:o(()=>[...T[32]||(T[32]=[p("在线下载 (推荐)",-1)])]),_:1}),t(Ce,{value:"manual"},{default:o(()=>[...T[33]||(T[33]=[p("选择本地文件",-1)])]),_:1}),t(Ce,{value:"custom"},{default:o(()=>[...T[34]||(T[34]=[p("自定义文件名",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),e("div",am,[A.value==="online"?(l(),x("div",lm,[t(W,{label:"选择服务端核心",name:"coreUrl",class:"!mb-0"},{default:o(()=>[e("div",rm,[t(Ae,{variant:"outline",class:"!w-full !justify-start !pl-4 !h-10 !bg-transparent border-zinc-200 dark:border-zinc-700 hover:!border-[var(--color-primary)]",onClick:T[8]||(T[8]=xe=>m.value=!0)},{icon:o(()=>[t(pe,{name:"cloud-download",class:"opacity-70"})]),default:o(()=>[T[35]||(T[35]=p(" 点击打开服务端核心选择库 ",-1))]),_:1}),k.value.core?(l(),x("div",nm,[T[37]||(T[37]=e("div",{class:"absolute left-0 top-0 bottom-0 w-1 bg-[var(--color-primary)] opacity-80"},null,-1)),t(pe,{name:"check-circle-filled",class:"text-[var(--color-primary)] text-xl shrink-0 ml-1"}),e("div",im,[e("div",dm,S(k.value.core),1),T[36]||(T[36]=e("div",{class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},"MSLX 将在稍后帮您自动下载此文件...",-1))]),t(Ae,{shape:"circle",variant:"text",theme:"danger",class:"shrink-0 hover:!bg-red-500/10 opacity-0 group-hover:opacity-100 transition-opacity",onClick:T[9]||(T[9]=xe=>{k.value.core="",k.value.coreUrl=""})},{default:o(()=>[t(pe,{name:"close"})]),_:1})])):H("",!0)])]),_:1}),Be(e("input",{"onUpdate:modelValue":T[10]||(T[10]=xe=>k.value.coreSha256=xe),type:"hidden"},null,512),[[ea,k.value.coreSha256]])])):H("",!0),A.value==="manual"?(l(),x("div",cm,[t(W,{label:"上传核心文件",name:"coreFileKey",class:"!mb-0"},{default:o(()=>[e("div",um,[e("input",{ref_key:"uploadInputRef",ref:z,accept:".jar",type:"file",style:{display:"none"},onChange:fe},null,544),!b.value&&!k.value.coreFileKey?(l(),G(Ae,{key:0,variant:"outline",class:"!w-full !justify-start !pl-4 !h-10 !bg-transparent border-zinc-200 dark:border-zinc-700 hover:!border-[var(--color-primary)]",onClick:ae},{icon:o(()=>[t(pe,{name:"upload",class:"opacity-70"})]),default:o(()=>[T[38]||(T[38]=p(" 点击选择文件并上传 (.jar) ",-1))]),_:1})):H("",!0),b.value?(l(),x("div",mm,[e("div",pm,"正在上传: "+S(C.value)+" ("+S(M.value)+")",1),t(je,{theme:"line",percentage:R.value},null,8,["percentage"]),T[39]||(T[39]=e("div",{class:"text-[11px] text-zinc-500 mt-2 text-center"},"别着急,喝杯茶🍵...",-1))])):H("",!0),k.value.coreFileKey&&!b.value?(l(),x("div",vm,[T[40]||(T[40]=e("div",{class:"absolute left-0 top-0 bottom-0 w-1 bg-[var(--color-success)] opacity-80"},null,-1)),t(pe,{name:"check-circle-filled",class:"text-[var(--color-success)] text-xl shrink-0 ml-1"}),e("div",fm,[e("div",bm,S(C.value),1),e("div",xm,S(M.value)+" | 已上传准备就绪",1)]),e("div",gm,[t(Ae,{shape:"square",variant:"text",theme:"primary",onClick:ae},{default:o(()=>[t(pe,{name:"swap"})]),_:1}),t(Ae,{shape:"square",variant:"text",theme:"danger",onClick:Z},{default:o(()=>[t(pe,{name:"delete"})]),_:1})])])):H("",!0)])]),_:1})])):H("",!0),A.value==="custom"?(l(),x("div",hm,[t(Ve,{theme:"warning",class:"!mb-5 !rounded-xl"},{message:o(()=>[...T[41]||(T[41]=[p("此模式通常用于服务器目录中已经存在核心文件,或者您打算稍后手动通过文件管理上传核心。",-1)])]),_:1}),t(W,{label:"核心文件名",name:"core",class:"!mb-0"},{help:o(()=>[...T[42]||(T[42]=[e("span",{class:"text-[11px] text-zinc-500 mt-1 inline-block"},"请确保文件名包含后缀,例如: server.jar",-1)])]),default:o(()=>[t(ne,{modelValue:k.value.core,"onUpdate:modelValue":T[11]||(T[11]=xe=>k.value.core=xe),placeholder:"请输入核心文件名",class:"!font-mono"},null,8,["modelValue"])]),_:1})])):H("",!0)])],512),[[Re,i.value===2]]),Be(e("div",ym,[e("div",_m,[t(W,{label:"最小内存",name:"minM",class:"!mb-0"},{default:o(()=>[e("div",wm,[e("div",km,[t(Fe,{modelValue:E.value,"onUpdate:modelValue":T[12]||(T[12]=xe=>E.value=xe),min:0,"decimal-places":y.value==="GB"?1:0,placeholder:"Xms",theme:"column",class:"!w-full"},null,8,["modelValue","decimal-places"])]),t(we,{modelValue:y.value,"onUpdate:modelValue":T[13]||(T[13]=xe=>y.value=xe),options:V,clearable:!1,class:"!w-20 shrink-0"},null,8,["modelValue"])])]),_:1}),t(W,{label:"最大内存",name:"maxM",class:"!mb-0"},{default:o(()=>[e("div",$m,[e("div",zm,[t(Fe,{modelValue:F.value,"onUpdate:modelValue":T[14]||(T[14]=xe=>F.value=xe),min:0,"decimal-places":$.value==="GB"?1:0,placeholder:"Xmx",theme:"column",class:"!w-full"},null,8,["modelValue","decimal-places"])]),t(we,{modelValue:$.value,"onUpdate:modelValue":T[15]||(T[15]=xe=>$.value=xe),options:V,clearable:!1,class:"!w-20 shrink-0"},null,8,["modelValue"])])]),_:1})]),t(W,{label:"额外 JVM 参数 (可选)",name:"args",class:"!mt-8 w-full sm:w-[40rem]"},{help:o(()=>[...T[43]||(T[43]=[e("span",{class:"text-[11px] text-zinc-500 mt-1 inline-block"},"例如: -XX:+UseG1GC",-1)])]),default:o(()=>[t(Ze,{modelValue:k.value.args,"onUpdate:modelValue":T[16]||(T[16]=xe=>k.value.args=xe),placeholder:"-XX:+UseG1GC",autosize:{minRows:3,maxRows:6},class:"!font-mono !bg-transparent"},null,8,["modelValue"])]),_:1})],512),[[Re,i.value===3]]),Be(e("div",Cm,[e("div",Am,[e("div",Sm,S(k.value.name),1),e("div",Im,[t(pe,{name:"folder-open",class:"opacity-70"}),p(" "+S(k.value.path||"默认数据路径 (/DaemonData/Servers)"),1)])]),e("div",Vm,[e("div",Um,[T[47]||(T[47]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"服务端核心",-1)),e("div",Mm,[e("div",Lm,[e("span",Bm,S(k.value.core||"未指定"),1),A.value==="online"?(l(),G(re,{key:0,theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...T[44]||(T[44]=[p("在线下载",-1)])]),_:1})):A.value==="manual"?(l(),G(re,{key:1,theme:"warning",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...T[45]||(T[45]=[p("手动上传",-1)])]),_:1})):(l(),G(re,{key:2,theme:"default",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...T[46]||(T[46]=[p("自定义",-1)])]),_:1}))]),e("div",Tm,[A.value==="online"?(l(),x("span",Rm,"来源: MSL 镜像源 ("+S(k.value.coreUrl?"已匹配":"未匹配")+")",1)):(l(),x("span",jm,"大小: "+S(M.value||"未知"),1))])])]),e("div",Pm,[T[49]||(T[49]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"Java 运行时",-1)),e("div",Em,[e("div",Dm,[B.value==="online"?(l(),x("span",Fm,"Java "+S(P.value),1)):(l(),x("span",{key:1,class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]",title:k.value.java},S(k.value.java),9,Om)),B.value==="online"?(l(),G(re,{key:2,theme:"success",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...T[48]||(T[48]=[p("自动安装",-1)])]),_:1})):H("",!0)]),e("div",Nm,[B.value==="online"?(l(),x("span",Km,"将自动从镜像源下载并解压 JDK")):(l(),x("span",qm,"目标环境: "+S(k.value.java),1))])])]),e("div",Hm,[T[50]||(T[50]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"内存分配 (JVM)",-1)),e("div",Gm,[e("span",Wm,"初始 (Xms): "+S(E.value)+" "+S(y.value),1),t(pe,{name:"arrow-right",class:"text-zinc-300 dark:text-zinc-600"}),e("span",Jm,"最大 (Xmx): "+S(F.value)+" "+S($.value),1)])]),e("div",Xm,[T[51]||(T[51]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-2 sm:mb-0 shrink-0 mt-1"},"启动参数",-1)),k.value.args?(l(),x("div",Qm,S(k.value.args),1)):(l(),x("div",Ym,"无额外参数"))])]),t(Ve,{theme:"info",class:"!mt-8 !rounded-xl !bg-[var(--color-primary)]/5 !border-[var(--color-primary)]/20"},{message:o(()=>[...T[52]||(T[52]=[p("确认无误后点击下方 ",-1),e("strong",{class:"text-[var(--color-primary)] mx-1"},"提交创建",-1),p(",系统将自动开始下载资源并部署实例。",-1)])]),_:1})],512),[[Re,i.value===4]]),e("div",Zm,[i.value>0&&i.value<5?(l(),G(Ae,{key:0,theme:"default",onClick:N},{default:o(()=>[...T[53]||(T[53]=[p("上一步",-1)])]),_:1})):(l(),x("div",ep)),T[56]||(T[56]=p()),i.value<4?(l(),G(Ae,{key:2,theme:"primary",type:"button",onClick:Y},{default:o(()=>[...T[54]||(T[54]=[p("下一步",-1)])]),_:1})):H("",!0),i.value===4?(l(),G(Ae,{key:3,theme:"primary",type:"submit",loading:c.value},{default:o(()=>[...T[55]||(T[55]=[p("提交创建",-1)])]),_:1},8,["loading"])):H("",!0)])]),_:1},8,["data","rules"])])):H("",!0),f.value?(l(),x("div",tp,[e("div",op,"正在创建实例 ("+S(L.value)+")",1),T[57]||(T[57]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] mb-6"},"请勿关闭此页面,创建过程可能需要几分钟...",-1)),e("div",sp,[t(je,{theme:"plump",percentage:v.value,label:`${v.value.toFixed(2)}%`},null,8,["percentage","label"])]),e("div",ap,[e("div",{ref_key:"logContainerRef",ref:w,class:"flex-1 overflow-y-auto custom-scrollbar pr-2"},[(l(!0),x(le,null,ge(I.value,(xe,et)=>(l(),x("div",{key:et,class:"text-xs font-mono mb-2 leading-relaxed"},[e("span",lp,"["+S(xe.time)+"]",1),e("span",rp,S(xe.message),1)]))),128))],512)])])):H("",!0),n.value?(l(),x("div",np,[t(pe,{name:"check-circle",size:"64px",class:"text-[var(--color-success)]"}),e("div",ip," 服务器 ("+S(L.value)+") 已创建成功 ",1),T[60]||(T[60]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] leading-[22px] !my-2 !mb-8"}," 你现在可以去服务器列表启动它了 ",-1)),e("div",dp,[t(Ae,{onClick:T[17]||(T[17]=()=>{Le(),_(Ie)("/instance/list")})},{default:o(()=>[...T[58]||(T[58]=[p("返回服务端列表",-1)])]),_:1}),t(Ae,{theme:"default",onClick:T[18]||(T[18]=()=>{Le(),_(Ie)(`/instance/console/${L.value}`)})},{default:o(()=>[...T[59]||(T[59]=[p("前往控制台",-1)])]),_:1})])])):H("",!0)])]),t(xs,{visible:m.value,"onUpdate:visible":T[19]||(T[19]=xe=>m.value=xe),onConfirm:be},null,8,["visible"])])}}}),up=ue(cp,[["__scopeId","data-v-235e2927"]]),mp={class:"design-card list-item-anim bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8"},pp={key:0,class:"flex flex-col relative pt-1"},vp={class:"flex items-center gap-3"},fp={class:"mt-6 pt-6 border-t border-zinc-200 dark:border-zinc-700"},bp={key:1,class:"flex flex-col items-center justify-center py-8 min-h-[50vh] sm:min-h-[40vh]"},xp={class:"text-xl text-[var(--td-text-color-primary)] text-center font-medium leading-[22px] !mt-4"},gp={class:"flex gap-4"},hp=ie({__name:"CustomMode",setup(s){const a=Te(),r=h(!1),d=h(0),i=h(null),c=qe({name:"",path:null,java:"none",core:"none",coreUrl:"",coreSha256:"",coreFileKey:"",packageFileKey:"",minM:1027,maxM:1027,args:"",ignoreEula:!0}),f={name:[{required:!0,message:"请输入服务器名称",type:"error"}],args:[{required:!0,message:"请输入自定义启动参数",type:"error"}]},n=async({validateResult:I})=>{if(I===!0)try{const u=await Mo(c);d.value=u.serverId,U.success("创建成功"),r.value=!0}catch(u){U.error("创建失败!"+u.message)}else U.warning("请检查表单填写")},v=()=>{r.value=!1,Object.assign(c,{name:"新建服务器",path:null,java:"none",core:"none",packageFileKey:"",coreFileKey:"",coreUrl:"",coreSha256:"",minM:1027,maxM:1027,args:"",ignoreEula:!0})};return(I,u)=>{const L=g("t-input"),w=g("t-form-item"),A=g("t-textarea"),m=g("t-switch"),z=g("t-button"),b=g("t-form"),R=g("t-icon");return l(),x("div",mp,[r.value?(l(),x("div",bp,[t(R,{name:"check-circle",size:"64px",class:"text-[var(--color-success)]"}),e("div",xp," 服务器 ("+S(d.value)+") 已创建成功 ",1),u[11]||(u[11]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] leading-[22px] !my-2 !mb-8"}," 你现在可以去服务器列表启动它了 ",-1)),e("div",gp,[t(z,{onClick:u[4]||(u[4]=()=>{v(),_(Ie)("/instance/list")})},{default:o(()=>[...u[9]||(u[9]=[p("返回服务端列表",-1)])]),_:1}),t(z,{theme:"default",onClick:u[5]||(u[5]=()=>{v(),_(Ie)(`/instance/console/${d.value}`)})},{default:o(()=>[...u[10]||(u[10]=[p("前往控制台",-1)])]),_:1})])])):(l(),x("div",pp,[t(b,{ref_key:"formRef",ref:i,rules:f,data:c,"label-align":"top",class:"flex-1 flex flex-col [&_.t-form__item]:!mb-6",onSubmit:n},{default:o(()=>[t(w,{label:"实例名称",name:"name"},{default:o(()=>[t(L,{modelValue:c.name,"onUpdate:modelValue":u[0]||(u[0]=C=>c.name=C),placeholder:"给你的服务器起一个名字",class:"!w-full sm:!w-[28rem]"},null,8,["modelValue"])]),_:1}),t(w,{label:"存储路径 (可选)",name:"path",help:_(a).userInfo.systemInfo.docker?"您正在使用Docker容器部署,为保数据安全,仅支持使用默认数据路径":"选填,留空将使用默认路径"},{default:o(()=>[t(L,{modelValue:c.path,"onUpdate:modelValue":u[1]||(u[1]=C=>c.path=C),disabled:_(a).userInfo.systemInfo.docker,placeholder:"请填写服务端保存位置",class:"!w-full sm:!w-[28rem] !font-mono"},null,8,["modelValue","disabled"])]),_:1},8,["help"]),t(w,{label:"启动指令",name:"args",class:"w-full sm:!w-[40rem]"},{help:o(()=>[...u[6]||(u[6]=[e("span",{class:"text-[11px] text-zinc-500 mt-1 inline-block"},"此模式不会自动帮您配置 Java 环境,您需要填写完整的启动命令。",-1)])]),default:o(()=>[t(A,{modelValue:c.args,"onUpdate:modelValue":u[2]||(u[2]=C=>c.args=C),placeholder:"例如: ./start.sh 或 java -jar server.jar...",autosize:{minRows:5,maxRows:25},class:"code-font-textarea !bg-zinc-50/50 dark:!bg-zinc-900/30 !rounded-xl"},null,8,["modelValue"])]),_:1}),t(w,{label:"忽略 EULA 提示",name:"ignoreEula"},{help:o(()=>[...u[7]||(u[7]=[e("span",{class:"text-[11px] text-zinc-500 mt-1 inline-block"},"若您的实例并非 MC 服务器,可打开此选项。",-1)])]),default:o(()=>[e("div",vp,[t(m,{modelValue:c.ignoreEula,"onUpdate:modelValue":u[3]||(u[3]=C=>c.ignoreEula=C),size:"large"},null,8,["modelValue"]),e("span",{class:ce(["text-sm font-bold transition-colors",c.ignoreEula?"text-[var(--color-primary)]":"text-[var(--td-text-color-secondary)]"])},S(c.ignoreEula?"已开启":"已关闭"),3)])]),_:1}),e("div",fp,[t(z,{theme:"primary",type:"submit",class:"!rounded-xl !font-bold !h-11 !px-8 shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[...u[8]||(u[8]=[p("提交创建",-1)])]),_:1})])]),_:1},8,["data"])]))])}}}),yp=ue(hp,[["__scopeId","data-v-af6238d0"]]),_p={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},wp={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8 transition-all duration-300 flex flex-col md:flex-row gap-8 lg:gap-12 min-h-[600px]"},kp={class:"w-full md:w-56 shrink-0 md:border-r border-dashed border-zinc-200/80 dark:border-zinc-700/60 md:pr-8 pb-4 md:pb-0 border-b md:border-b-0"},$p={class:"flex-1 min-w-0 flex flex-col relative"},zp={key:0,class:"h-full flex flex-col"},Cp={class:"list-item-anim flex-1 pt-1"},Ap={class:"list-item-anim flex-1 pt-1"},Sp={class:"w-full sm:w-[32rem]"},Ip={key:1,class:"w-full bg-transparent p-4 mt-4 rounded-lg border border-[var(--color-primary)]/40"},Vp={class:"text-sm font-bold text-[var(--td-text-color-primary)] mb-2 truncate"},Up={key:2,class:"w-full bg-transparent p-4 mt-4 rounded-lg border border-[var(--color-primary)]/40 flex items-center justify-center"},Mp={key:3,class:"flex items-center gap-3 mt-4 p-3 bg-transparent rounded-lg border border-[var(--color-success)]/40 relative overflow-hidden group"},Lp={class:"flex-1 min-w-0"},Bp={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},Tp={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},Rp={class:"flex items-center gap-1 shrink-0 opacity-0 group-hover:opacity-100 transition-opacity"},jp={class:"list-item-anim flex-1 pt-1"},Pp={key:0},Ep={key:1},Dp={class:"w-full sm:w-[32rem]"},Fp={key:0},Op={class:"w-full"},Np={key:0,class:"flex items-center gap-3 mt-4 p-3 bg-transparent rounded-lg border border-[var(--color-primary)]/40 shadow-sm relative overflow-hidden group"},Kp={class:"flex-1 min-w-0"},qp={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},Hp={key:1,class:"mt-2"},Gp={class:"list-item-anim flex-1 pt-1"},Wp={class:"flex flex-col gap-2.5 mt-2"},Jp={class:"text-[11px] text-[var(--td-text-color-secondary)] mt-1 flex items-center gap-1 font-medium"},Xp={class:"w-full"},Qp={class:"w-full sm:w-[32rem] min-h-[70px] mt-2"},Yp={key:0},Zp={key:1,class:"flex items-center gap-3"},ev={key:2},tv={key:3},ov={class:"list-item-anim flex-1 pt-1"},sv={class:"grid grid-cols-1 sm:grid-cols-2 gap-x-6 gap-y-6 w-full sm:w-[40rem]"},av={class:"flex items-center gap-2 w-full"},lv={class:"flex-1"},rv={class:"flex items-center gap-2 w-full"},nv={class:"flex-1"},iv={class:"list-item-anim flex-1 pt-1"},dv={class:"flex flex-col min-w-0 mb-8 pb-6 border-b border-zinc-200 dark:border-zinc-800"},cv={class:"text-3xl font-extrabold text-[var(--td-text-color-primary)] truncate tracking-tight"},uv={class:"text-sm text-[var(--td-text-color-secondary)] mt-2 flex items-center gap-1.5 truncate"},mv={class:"flex flex-col w-full"},pv={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},vv={class:"flex flex-col sm:items-end text-left sm:text-right"},fv={class:"flex items-center gap-2"},bv=["title"],xv={class:"text-[11px] text-zinc-500 mt-1"},gv={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},hv={class:"flex flex-col sm:items-end text-left sm:text-right"},yv={class:"flex items-center gap-2"},_v=["title"],wv={class:"text-[11px] text-zinc-500 mt-1 truncate"},kv={key:0},$v={key:1},zv={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},Cv={class:"flex flex-col sm:items-end text-left sm:text-right"},Av={class:"flex items-center gap-2"},Sv={key:0,class:"text-sm font-bold text-[var(--td-text-color-primary)]"},Iv=["title"],Vv={key:0,class:"text-[11px] text-zinc-500 mt-1 truncate"},Uv={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},Mv={class:"flex items-center gap-3"},Lv={class:"text-sm font-bold text-[var(--color-primary)]"},Bv={class:"text-sm font-bold text-red-500 dark:text-red-400"},Tv={key:0,class:"flex flex-col sm:flex-row sm:items-start justify-between py-4"},Rv={class:"text-xs font-mono text-[var(--td-text-color-secondary)] break-all leading-relaxed bg-zinc-50/50 dark:bg-zinc-800/30 p-2.5 rounded-lg border border-zinc-100 dark:border-zinc-800 text-left sm:text-right max-w-full sm:max-w-md"},jv={class:"mt-auto pt-6 border-t border-zinc-200 dark:border-zinc-700 flex items-center justify-between"},Pv={key:1},Ev={key:1,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim"},Dv={class:"text-lg font-bold text-[var(--td-text-color-primary)] mb-2 tracking-tight"},Fv={class:"w-full max-w-lg !my-6"},Ov={class:"w-full max-w-2xl bg-white/40 dark:bg-zinc-900/40 rounded-2xl border border-white/60 dark:border-zinc-700/50 p-4 h-64 flex flex-col mt-6 shadow-[0_4px_12px_rgba(0,0,0,0.02)]"},Nv={class:"text-[var(--td-text-color-secondary)] mr-2"},Kv={class:"text-[var(--td-text-color-primary)] font-medium"},qv={key:2,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim min-h-[50vh] sm:min-h-[40vh]"},Hv={class:"flex gap-4"},Gv=ie({__name:"PackageMode",setup(s){const a=Te(),r=h(null),d=At(),i=h(0),c=h(!1),f=h(!1),n=h(!1),v=h(0),I=h([]),u=h(null),L=h(null),w=h(null),A=h("online"),m=h(!1),z=h([]),b=h(!1),R=h(""),C=h(null),M=h(!1),B=h(0),D=h(""),q=h(""),P=h("online"),j=h([]),K=h([]),k=h(""),V=h(""),y=async(ne=!1)=>{try{ne&&U.info("正在刷新Java版本列表...");const W=await gs(a.userInfo.systemInfo.osType.toLowerCase().replace("os",""),a.userInfo.systemInfo.osArchitecture.toLowerCase());W&&Array.isArray(W)&&(j.value=W.map(pe=>({label:`Java ${pe}`,value:pe})),j.value.length>0&&!k.value&&(k.value=j.value[1].value)),K.value=(await hs(ne)).map(pe=>({label:`Java ${pe.version}${pe.is64Bit?"":" (32位)"} (${pe.vendor} | ${pe.path})`,value:pe.path})),K.value.length>0&&(V.value=K.value[0].value),ne&&U.success("已刷新Java版本列表")}catch(W){U.warning("获取在线Java版本失败: "+W.message)}};ze(()=>{y()});const $=h({name:"新建整合包服务器",path:"",java:"",core:"",coreUrl:"",coreSha256:"",coreFileKey:"",packageFileKey:"",minM:2048,maxM:6144,args:""}),E=h("GB"),F=h("GB"),J=[{label:"MB",value:"MB"},{label:"GB",value:"GB"}],O=te({get:()=>E.value==="GB"?$.value.minM/1024:$.value.minM,set:ne=>{$.value.minM=E.value==="GB"?Math.round(ne*1024):ne}}),N=te({get:()=>F.value==="GB"?$.value.maxM/1024:$.value.maxM,set:ne=>{$.value.maxM=F.value==="GB"?Math.round(ne*1024):ne}});_e([P,k,V],([ne,W,pe])=>{ne==="env"?$.value.java="java":ne==="custom"||ne==="local"?$.value.java=pe:ne==="online"&&($.value.java=W?`MSLX://Java/${W}`:""),$.value.java&&r.value?.validate({fields:["java"]})},{immediate:!0});const Y=te(()=>({name:[{required:!0,message:"实例名称不能为空",trigger:"blur"}],packageFileKey:[{required:!0,message:"请上传整合包文件",trigger:"change"}],core:[{validator:ne=>{if(z.value.length>0){if(!ne)return{result:!1,message:"请选择一个启动Jar",type:"error"}}else{if(A.value==="online"&&!$.value.coreUrl)return{result:!1,message:"请选择服务端核心",type:"error"};if(A.value==="manual"&&!$.value.coreFileKey)return{result:!1,message:"请上传核心文件",type:"error"}}return!0},trigger:"change"}],java:[{required:!0,message:"请配置 Java 环境",trigger:"change"}],minM:[{required:!0,min:1,message:"必须大于0",trigger:"blur"}],maxM:[{required:!0,min:1,message:"必须大于0",trigger:"blur"}]})),be=[["name","path"],["packageFileKey"],["core","coreUrl","coreFileKey"],["java"],["minM","maxM","args"],[]],ae=()=>{i.value>0&&(i.value-=1)},me=async()=>{if(i.value===1){if(!$.value.packageFileKey){U.warning("请先上传服务端整合包(Zip)");return}if(M.value||b.value){U.warning("请等待上传或分析完成");return}}if(i.value===2)if(z.value.length>0){if(!$.value.core){U.warning("请从列表中选择一个启动核心");return}}else{if(A.value==="online"&&(!$.value.coreUrl||!$.value.core)){U.warning("请选择一个服务端核心");return}if(A.value==="manual"&&!$.value.coreFileKey){U.warning("请上传核心文件");return}}const ne=await r.value.validate();if(ne===!0){i.value<5&&(i.value+=1);return}const W=new Set(be[i.value]);Object.keys(ne).some(Ve=>W.has(Ve))?U.warning("请检查当前步骤的输入"):i.value<5&&(i.value+=1)},fe=()=>{C.value?.click()},Se=ne=>{if(ne===0)return"0 B";const W=1024,pe=["B","KB","MB","GB"],Ve=Math.floor(Math.log(ne)/Math.log(W));return parseFloat((ne/Math.pow(W,Ve)).toFixed(2))+" "+pe[Ve]},Me=async ne=>{const W=ne.target;if(!W.files||W.files.length===0)return;if($.value.packageFileKey)try{await Mt($.value.packageFileKey)}catch(Ve){console.error(Ve)}$.value.core="",z.value=[],R.value="";const pe=W.files[0];D.value=pe.name,q.value=Se(pe.size),await se(pe),W.value=""};let Z=null;const se=async ne=>{Z&&Z.abort(),Z=new AbortController,M.value=!0,B.value=0;const pe=ne.size>200*1024*1024?50*1024*1024:10*1024*1024,Ve=Math.ceil(ne.size/pe),Ce=4,Ue=5,we=new Map;let Ae=0;const je=()=>{const Fe=Date.now();if(Fe-Ae<100)return;Ae=Fe;const Ze=Array.from(we.values()).reduce((Xe,xe)=>Xe+xe,0),re=Math.min(Ze/ne.size*98,98);B.value=Number(re.toFixed(1))};try{const Ze=(await qt()).uploadId;if(!Ze)throw new Error("无法获取上传凭证");const re=Array.from({length:Ve},(Pe,lt)=>lt),Xe=async Pe=>{if(Z?.signal.aborted)throw new Error("已取消");const lt=Pe*pe,ke=Math.min(ne.size,lt+pe),wt=ne.slice(lt,ke);let vo;for(let Pt=1;Pt<=Ue;Pt++){if(Z?.signal.aborted)throw new Error("已取消");try{await Ht(Ze,Pe,wt,St=>{St&&St.loaded&&(we.set(Pe,St.loaded),je())},Z?.signal),we.set(Pe,wt.size),je();return}catch(St){vo=St,we.set(Pe,0),je(),PtsetTimeout(Et,1e3*Pt))}}throw new Error(`分片 ${Pe} 失败: ${vo?.message}`)},xe=async()=>{for(;re.length>0&&!Z?.signal.aborted;){const Pe=re.shift();Pe!==void 0&&await Xe(Pe)}},et=Array(Math.min(Ce,Ve)).fill(null).map(()=>xe());if(await Promise.all(et),Z?.signal.aborted)throw new Error("已取消");B.value=99;const rt=(await Gt(Ze,Ve)).uploadId;B.value=100,$.value.packageFileKey=rt,U.success("上传成功,正在分析整合包内容..."),await De(rt)}catch(Fe){if(Fe.message==="已取消")return;Z?.abort(),console.error(Fe),U.error(`上传失败: ${Fe.message||"未知错误"}`),D.value="",B.value=0,$.value.packageFileKey&&(Mt($.value.packageFileKey).catch(()=>{}),$.value.packageFileKey="")}finally{Z?.signal.aborted||(M.value=!1)}},De=async ne=>{b.value=!0;try{const W=await Ln(ne);z.value=W.jars||[],R.value=W.detectedRoot||"",W.count===1&&W.jars.length>0?($.value.core=W.jars[0],U.success(`自动识别到服务端核心: ${W.jars[0]}`)):W.count>1?U.info(`整合包内检测到 ${W.count} 个服务端核心,请在下一步选择`):U.warning("未检测到整合包内存在服务端核心,请在下一步手动配置核心")}catch(W){U.error("整合包分析失败: "+W.message)}finally{b.value=!1}},Le=async()=>{$.value.packageFileKey&&(await Mt($.value.packageFileKey),$.value.packageFileKey="",D.value="",z.value=[],$.value.core="",U.success("文件已移除"))},ee=ne=>{$.value.core=ne.filename,$.value.coreUrl=ne.url,$.value.coreSha256=ne.sha256,$.value.coreFileKey="",U.success(`已选择: ${ne.core} (${ne.version})`)},T=async()=>{if(await r.value.validate()!==!0){U.warning("请检查表单所有内容");return}c.value=!0,I.value=[];const W={...$.value,path:$.value.path||null,coreUrl:$.value.coreUrl||null,coreSha256:$.value.coreSha256||null,coreFileKey:$.value.coreFileKey||null,args:$.value.args||null};z.value.length>0?(W.coreUrl=null,W.coreSha256=null,W.coreFileKey=null):A.value==="manual"?(W.coreUrl=null,W.coreSha256=null):W.coreFileKey=null;try{const Ve=(await Mo(W)).serverId;if(!Ve)throw new Error("服务器未返回 ServerId");L.value=Ve.toString(),f.value=!0,i.value=6,await de(L.value)}catch(pe){U.error(pe.message||"创建请求失败"),c.value=!1}},de=async ne=>{const{baseUrl:W,token:pe}=a,Ve=new URL("/api/hubs/creationProgressHub",W||window.location.origin);Ve.searchParams.append("x-user-token",pe),u.value=new Ct().withUrl(Ve.toString(),{withCredentials:!1}).configureLogging(jt.Information).build(),u.value.on("StatusUpdate",(Ce,Ue,we)=>{Ce.toString()===ne&&(I.value.push({time:new Date().toLocaleTimeString(),message:Ue,progress:we}),yt(()=>{w.value&&(w.value.scrollTop=w.value.scrollHeight)}),we!==null&&we>=0&&(v.value=we),we===100?(U.success("服务器创建成功!"),u.value?.stop(),f.value=!1,n.value=!0,i.value=7,c.value=!1,d.refreshInstanceList()):we===-1&&(U.error(Ue||"错误"),u.value?.stop(),f.value=!1,c.value=!1,i.value=0))});try{await u.value.start(),await u.value.invoke("TrackServer",ne)}catch(Ce){console.error("SignalR Error",Ce)}};He(()=>{u.value?.stop()});const he=()=>{n.value=!1,i.value=0,$.value={name:"新建整合包服务器",path:"",java:"",core:"",coreUrl:"",coreSha256:"",coreFileKey:"",packageFileKey:"",minM:2048,maxM:6144,args:""},z.value=[],D.value="",A.value="online",P.value="online"};return(ne,W)=>{const pe=g("t-step-item"),Ve=g("t-steps"),Ce=g("t-input"),Ue=g("t-form-item"),we=g("t-alert"),Ae=g("t-icon"),je=g("t-button"),Fe=g("t-progress"),Ze=g("t-loading"),re=g("t-radio"),Xe=g("t-radio-group"),xe=g("t-radio-button"),et=g("t-select"),tt=g("t-input-number"),rt=g("t-textarea"),Pe=g("t-tag"),lt=g("t-form");return l(),x("div",_p,[e("div",wp,[e("div",kp,[t(Ve,{layout:"vertical",current:i.value,status:"process",readonly:"",class:"custom-steps !bg-transparent !mt-2"},{default:o(()=>[t(pe,{title:"基本信息",content:"填写实例名称"}),t(pe,{title:"上传整合包",content:"上传服务端 Zip 包"}),t(pe,{title:"核心配置",content:"确认启动的服务端核心"}),t(pe,{title:"Java 环境",content:"配置 Java 运行时"}),t(pe,{title:"资源配置",content:"设置内存参数"}),t(pe,{title:"确认信息",content:"核对并提交"}),t(pe,{title:"创建实例",content:"提交并等待解压"}),t(pe,{title:"完成",content:"查看结果"})]),_:1},8,["current"])]),e("div",$p,[!f.value&&!n.value?(l(),x("div",zp,[t(lt,{ref_key:"formRef",ref:r,data:$.value,rules:Y.value,"label-align":"top",class:"flex-1 flex flex-col [&_.t-form__item]:!mb-6",onSubmit:T},{default:o(()=>[Be(e("div",Cp,[t(Ue,{label:"实例名称",name:"name"},{default:o(()=>[t(Ce,{modelValue:$.value.name,"onUpdate:modelValue":W[0]||(W[0]=ke=>$.value.name=ke),placeholder:"为你的服务器起个名字",class:"!w-full sm:!w-[28rem]"},null,8,["modelValue"])]),_:1}),t(Ue,{label:"实例路径",name:"path",help:_(a).userInfo.systemInfo.docker?"您正在使用Docker容器部署,为保数据安全,仅支持使用默认数据路径":"选填,留空将使用默认路径"},{default:o(()=>[t(Ce,{modelValue:$.value.path,"onUpdate:modelValue":W[1]||(W[1]=ke=>$.value.path=ke),disabled:_(a).userInfo.systemInfo.docker,placeholder:"例如: D:\\MyServer",class:"!w-full sm:!w-[28rem] !font-mono"},null,8,["modelValue","disabled"])]),_:1},8,["help"])],512),[[Re,i.value===0]]),Be(e("div",Ap,[t(we,{theme:"info",class:"!mb-6 !rounded-xl"},{message:o(()=>[...W[19]||(W[19]=[p("请上传包含服务端文件的 ",-1),e("b",null,".zip",-1),p(" 压缩包。上传完成后系统将自动分析包内的服务端核心文件。",-1)])]),_:1}),t(Ue,{label:"上传服务端整合包 (Zip)",name:"packageFileKey",class:"!mb-0"},{default:o(()=>[e("div",Sp,[e("input",{ref_key:"uploadInputRef",ref:C,accept:".zip",type:"file",style:{display:"none"},onChange:Me},null,544),!M.value&&!$.value.packageFileKey?(l(),G(je,{key:0,variant:"outline",class:"!w-full !justify-start !pl-4 !h-10 !bg-transparent border-zinc-200 dark:border-zinc-700 hover:!border-[var(--color-primary)]",onClick:fe},{icon:o(()=>[t(Ae,{name:"upload",class:"opacity-70"})]),default:o(()=>[W[20]||(W[20]=p(" 点击选择 Zip 文件并上传 ",-1))]),_:1})):H("",!0),M.value?(l(),x("div",Ip,[e("div",Vp,"正在上传: "+S(D.value)+" ("+S(q.value)+")",1),t(Fe,{theme:"line",percentage:B.value},null,8,["percentage"]),W[21]||(W[21]=e("div",{class:"text-[11px] text-zinc-500 mt-2 text-center"},"别着急,喝杯咖啡☕️...",-1))])):H("",!0),!M.value&&b.value?(l(),x("div",Up,[t(Ze,{text:"正在分析压缩包结构...",size:"small"})])):H("",!0),$.value.packageFileKey&&!M.value&&!b.value?(l(),x("div",Mp,[W[22]||(W[22]=e("div",{class:"absolute left-0 top-0 bottom-0 w-1 bg-[var(--color-success)] opacity-80"},null,-1)),t(Ae,{name:"folder-zip",class:"text-[var(--color-success)] text-xl shrink-0 ml-1"}),e("div",Lp,[e("div",Bp,S(D.value),1),e("div",Tp,S(z.value.length>0?`发现 ${z.value.length} 个服务端核心文件`:"未发现服务端核心文件")+" "+S(R.value?`| 根目录: /${R.value}`:""),1)]),e("div",Rp,[t(je,{shape:"square",variant:"text",theme:"primary",onClick:fe},{default:o(()=>[t(Ae,{name:"swap"})]),_:1}),t(je,{shape:"square",variant:"text",theme:"danger",class:"hover:!bg-red-500/10",onClick:Le},{default:o(()=>[t(Ae,{name:"delete"})]),_:1})])])):H("",!0)])]),_:1})],512),[[Re,i.value===1]]),Be(e("div",jp,[z.value.length>0?(l(),x("div",Pp,[t(we,{theme:"success",class:"!mb-6 !rounded-xl !bg-[var(--color-success)]/10 !border-[var(--color-success)]/20"},{message:o(()=>[...W[23]||(W[23]=[p("我们在压缩包中发现了以下服务端核心文件,请选择哪一个作为",-1),e("b",null,"启动核心",-1),p("。",-1)])]),_:1}),t(Ue,{label:"选择启动核心",name:"core"},{default:o(()=>[t(Xe,{modelValue:$.value.core,"onUpdate:modelValue":W[2]||(W[2]=ke=>$.value.core=ke),class:"flex flex-col gap-3"},{default:o(()=>[(l(!0),x(le,null,ge(z.value,ke=>(l(),x("div",{key:ke,class:"flex items-center"},[t(re,{value:ke,class:"!font-mono !text-sm"},{default:o(()=>[p(S(ke),1)]),_:2},1032,["value"])]))),128))]),_:1},8,["modelValue"])]),_:1})])):(l(),x("div",Ep,[t(we,{theme:"warning",class:"!mb-6 !rounded-xl !bg-amber-500/10 !border-amber-500/20"},{message:o(()=>[...W[24]||(W[24]=[p("在上传的包中未发现服务端核心文件。请在此处下载一个或等待创建后手动补充。",-1)])]),_:1}),t(Ue,{label:"补充服务端核心",class:"!mb-5"},{default:o(()=>[t(Xe,{modelValue:A.value,"onUpdate:modelValue":W[3]||(W[3]=ke=>A.value=ke),variant:"default-filled"},{default:o(()=>[t(xe,{value:"online"},{default:o(()=>[...W[25]||(W[25]=[p("在线下载核心",-1)])]),_:1}),t(xe,{disabled:"",value:"manual"},{default:o(()=>[...W[26]||(W[26]=[p("自行上传(不支持)",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),e("div",Dp,[A.value==="online"?(l(),x("div",Fp,[t(Ue,{label:"选择服务端核心",name:"coreUrl",class:"!mb-0"},{default:o(()=>[e("div",Op,[t(je,{variant:"outline",class:"!w-full !justify-start !pl-4 !h-10 !bg-transparent border-zinc-200 dark:border-zinc-700 hover:!border-[var(--color-primary)]",onClick:W[4]||(W[4]=ke=>m.value=!0)},{icon:o(()=>[t(Ae,{name:"cloud-download",class:"opacity-70"})]),default:o(()=>[W[27]||(W[27]=p(" 打开核心库 ",-1))]),_:1}),$.value.core?(l(),x("div",Np,[W[29]||(W[29]=e("div",{class:"absolute left-0 top-0 bottom-0 w-1 bg-[var(--color-primary)] opacity-80"},null,-1)),t(Ae,{name:"check-circle-filled",class:"text-[var(--color-primary)] text-xl shrink-0 ml-1"}),e("div",Kp,[e("div",qp,S($.value.core),1),W[28]||(W[28]=e("div",{class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},"将在创建时自动下载",-1))]),t(je,{shape:"circle",variant:"text",theme:"danger",class:"shrink-0 hover:!bg-red-500/10 opacity-0 group-hover:opacity-100 transition-opacity",onClick:W[5]||(W[5]=ke=>{$.value.core="",$.value.coreUrl=""})},{default:o(()=>[t(Ae,{name:"close"})]),_:1})])):H("",!0)])]),_:1})])):H("",!0),A.value==="manual"?(l(),x("div",Hp,[W[30]||(W[30]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] mb-4"},"请在整合包解压后手动放入核心,或在此处不填写等待创建后手动上传。",-1)),t(we,{theme:"error",message:"此模式下建议确保压缩包内包含核心,或者使用在线下载功能。",class:"!rounded-xl"})])):H("",!0)])]))],512),[[Re,i.value===2]]),Be(e("div",Gp,[t(we,{theme:"info",title:"Java 版本选择指南",class:"!mb-6 !rounded-xl"},{message:o(()=>[e("div",Wp,[W[32]||(W[32]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 26.1 - 最新版本"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 25")],-1)),W[33]||(W[33]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.20.5 - 1.21.11"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 21")],-1)),W[34]||(W[34]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.18 - 1.20.4"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 17")],-1)),W[35]||(W[35]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-[var(--color-primary)] text-white font-bold text-xs tracking-wide shadow-sm"},"MC 1.17 / 1.17.1"),e("span",{class:"font-extrabold text-xs text-[var(--color-success)] bg-[var(--color-success)]/10 px-2.5 py-1 rounded-md border border-[var(--color-success)]/20"},"Java 16")],-1)),W[36]||(W[36]=e("div",{class:"flex items-center gap-3"},[e("span",{class:"inline-flex items-center justify-center w-[140px] px-2 py-1 rounded bg-zinc-100 dark:bg-zinc-800 text-zinc-600 dark:text-zinc-300 border border-zinc-200 dark:border-zinc-700 font-bold text-xs tracking-wide shadow-sm"},"MC 1.13 - 更低版本"),e("span",{class:"font-extrabold text-xs text-[var(--td-text-color-secondary)] bg-zinc-100 dark:bg-zinc-800 px-2.5 py-1 rounded-md border border-zinc-200 dark:border-zinc-700"},"Java 8")],-1)),e("div",Jp,[t(Ae,{name:"info-circle",size:"14px"}),W[31]||(W[31]=p(" 建议直接使用推荐版本,避免兼容性问题。 ",-1))])])]),_:1}),t(Ue,{label:"Java 来源",name:"java",class:"!mb-0"},{default:o(()=>[e("div",Xp,[t(Xe,{modelValue:P.value,"onUpdate:modelValue":W[6]||(W[6]=ke=>P.value=ke),variant:"default-filled",class:"!mb-4"},{default:o(()=>[t(xe,{value:"online"},{default:o(()=>[...W[37]||(W[37]=[p("在线下载",-1)])]),_:1}),t(xe,{value:"local"},{default:o(()=>[...W[38]||(W[38]=[p("本机 Java",-1)])]),_:1}),t(xe,{value:"env"},{default:o(()=>[...W[39]||(W[39]=[p("环境变量",-1)])]),_:1}),t(xe,{value:"custom"},{default:o(()=>[...W[40]||(W[40]=[p("自定义路径",-1)])]),_:1})]),_:1},8,["modelValue"]),e("div",Qp,[P.value==="online"?(l(),x("div",Yp,[t(et,{modelValue:k.value,"onUpdate:modelValue":W[7]||(W[7]=ke=>k.value=ke),options:j.value,placeholder:"请选择 Java 版本",class:"!w-full sm:!w-64"},null,8,["modelValue","options"])])):H("",!0),P.value==="local"?(l(),x("div",Zp,[t(et,{modelValue:V.value,"onUpdate:modelValue":W[8]||(W[8]=ke=>V.value=ke),options:K.value,placeholder:"请选择 Java",class:"!flex-1"},null,8,["modelValue","options"]),t(je,{variant:"text",onClick:W[9]||(W[9]=ke=>y(!0))},{default:o(()=>[...W[41]||(W[41]=[p("刷新",-1)])]),_:1})])):H("",!0),P.value==="env"?(l(),x("div",ev,[t(Ce,{"model-value":"java",readonly:"",disabled:"",class:"!font-mono !bg-zinc-100 dark:!bg-zinc-800/50"})])):H("",!0),P.value==="custom"?(l(),x("div",tv,[t(Ce,{modelValue:V.value,"onUpdate:modelValue":W[10]||(W[10]=ke=>V.value=ke),placeholder:"C:\\Path\\To\\java.exe",class:"!font-mono"},null,8,["modelValue"])])):H("",!0)])])]),_:1})],512),[[Re,i.value===3]]),Be(e("div",ov,[e("div",sv,[t(Ue,{label:"最小内存",name:"minM",class:"!mb-0"},{default:o(()=>[e("div",av,[e("div",lv,[t(tt,{modelValue:O.value,"onUpdate:modelValue":W[11]||(W[11]=ke=>O.value=ke),min:0,"decimal-places":E.value==="GB"?1:0,placeholder:"Xms",theme:"column",class:"!w-full"},null,8,["modelValue","decimal-places"])]),t(et,{modelValue:E.value,"onUpdate:modelValue":W[12]||(W[12]=ke=>E.value=ke),options:J,clearable:!1,class:"!w-20 shrink-0"},null,8,["modelValue"])])]),_:1}),t(Ue,{label:"最大内存",name:"maxM",class:"!mb-0"},{default:o(()=>[e("div",rv,[e("div",nv,[t(tt,{modelValue:N.value,"onUpdate:modelValue":W[13]||(W[13]=ke=>N.value=ke),min:0,"decimal-places":F.value==="GB"?1:0,placeholder:"Xmx",theme:"column",class:"!w-full"},null,8,["modelValue","decimal-places"])]),t(et,{modelValue:F.value,"onUpdate:modelValue":W[14]||(W[14]=ke=>F.value=ke),options:J,clearable:!1,class:"!w-20 shrink-0"},null,8,["modelValue"])])]),_:1})]),t(Ue,{label:"JVM 参数",name:"args",class:"!mt-8 w-full sm:w-[40rem]"},{default:o(()=>[t(rt,{modelValue:$.value.args,"onUpdate:modelValue":W[15]||(W[15]=ke=>$.value.args=ke),placeholder:"-XX:+UseG1GC",autosize:{minRows:3,maxRows:6},class:"!font-mono !bg-transparent"},null,8,["modelValue"])]),_:1})],512),[[Re,i.value===4]]),Be(e("div",iv,[e("div",dv,[e("div",cv,S($.value.name),1),e("div",uv,[t(Ae,{name:"folder-open",class:"opacity-70"}),p(" "+S($.value.path||"默认数据路径 (/DaemonData/Servers)"),1)])]),e("div",mv,[e("div",pv,[W[43]||(W[43]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"服务端整合包",-1)),e("div",vv,[e("div",fv,[e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]",title:D.value},S(D.value),9,bv),t(Pe,{theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...W[42]||(W[42]=[p("ZIP",-1)])]),_:1})]),e("div",xv,"大小: "+S(q.value||"未知"),1)])]),e("div",gv,[W[47]||(W[47]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"启动核心 (Jar)",-1)),e("div",hv,[e("div",yv,[e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]",title:$.value.core},S($.value.core),9,_v),z.value.length>0?(l(),G(Pe,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...W[44]||(W[44]=[p("整合包内核心",-1)])]),_:1})):A.value==="online"?(l(),G(Pe,{key:1,theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...W[45]||(W[45]=[p("在线下载",-1)])]),_:1})):(l(),G(Pe,{key:2,theme:"warning",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...W[46]||(W[46]=[p("手动配置",-1)])]),_:1}))]),e("div",wv,[z.value.length>0?(l(),x("span",kv,"已从压缩包中选定启动文件")):A.value==="online"?(l(),x("span",$v,"来源: MSL 镜像源 ("+S($.value.coreUrl?"已匹配":"未匹配")+")",1)):H("",!0)])])]),e("div",zv,[W[51]||(W[51]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"Java 运行时",-1)),e("div",Cv,[e("div",Av,[P.value==="online"?(l(),x("span",Sv,"Java "+S(k.value),1)):(l(),x("span",{key:1,class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]",title:$.value.java},S($.value.java),9,Iv)),P.value==="online"?(l(),G(Pe,{key:2,theme:"success",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...W[48]||(W[48]=[p("自动安装",-1)])]),_:1})):P.value==="local"?(l(),G(Pe,{key:3,theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...W[49]||(W[49]=[p("本机环境",-1)])]),_:1})):(l(),G(Pe,{key:4,theme:"default",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...W[50]||(W[50]=[p("自定义",-1)])]),_:1}))]),P.value==="online"?(l(),x("div",Vv,"将自动从镜像源下载并解压 JDK")):H("",!0)])]),e("div",Uv,[W[52]||(W[52]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"内存分配 (JVM)",-1)),e("div",Mv,[e("span",Lv,"初始 (Xms): "+S(O.value)+" "+S(E.value),1),t(Ae,{name:"arrow-right",class:"text-zinc-300 dark:text-zinc-600"}),e("span",Bv,"最大 (Xmx): "+S(N.value)+" "+S(F.value),1)])]),$.value.args?(l(),x("div",Tv,[W[53]||(W[53]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-2 sm:mb-0 shrink-0 mt-1"},"启动参数",-1)),e("div",Rv,S($.value.args),1)])):H("",!0)]),t(we,{theme:"info",class:"!mt-8 !rounded-xl !bg-[var(--color-primary)]/5 !border-[var(--color-primary)]/20"},{message:o(()=>[...W[54]||(W[54]=[p("确认无误后点击下方 ",-1),e("strong",{class:"text-[var(--color-primary)] mx-1"},"提交创建",-1),p(",系统自动部署服务端。",-1)])]),_:1})],512),[[Re,i.value===5]]),e("div",jv,[i.value>0&&i.value<6?(l(),G(je,{key:0,theme:"default",onClick:ae},{default:o(()=>[...W[55]||(W[55]=[p("上一步",-1)])]),_:1})):(l(),x("div",Pv)),W[58]||(W[58]=p()),i.value<5?(l(),G(je,{key:2,type:"button",theme:"primary",loading:M.value||b.value,onClick:me},{default:o(()=>[...W[56]||(W[56]=[p("下一步",-1)])]),_:1},8,["loading"])):H("",!0),i.value===5?(l(),G(je,{key:3,theme:"primary",type:"submit",loading:c.value},{default:o(()=>[...W[57]||(W[57]=[p("提交创建",-1)])]),_:1},8,["loading"])):H("",!0)])]),_:1},8,["data","rules"])])):H("",!0),f.value?(l(),x("div",Ev,[e("div",Dv,"正在创建整合包实例 ("+S(L.value)+")",1),W[59]||(W[59]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] mb-6"},"正在解压文件并配置环境...",-1)),e("div",Fv,[t(Fe,{theme:"plump",percentage:v.value,label:`${v.value.toFixed(2)}%`},null,8,["percentage","label"])]),e("div",Ov,[e("div",{ref_key:"logContainerRef",ref:w,class:"flex-1 overflow-y-auto custom-scrollbar pr-2"},[(l(!0),x(le,null,ge(I.value,(ke,wt)=>(l(),x("div",{key:wt,class:"text-xs font-mono mb-2 leading-relaxed"},[e("span",Nv,"["+S(ke.time)+"]",1),e("span",Kv,S(ke.message),1)]))),128))],512)])])):H("",!0),n.value?(l(),x("div",qv,[t(Ae,{name:"check-circle",size:"64px",class:"text-[var(--color-success)]"}),W[62]||(W[62]=e("div",{class:"text-xl text-[var(--td-text-color-primary)] text-center font-medium leading-[22px] !mt-4"}," 整合包服务器已部署成功 ",-1)),W[63]||(W[63]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] leading-[22px] !my-2 !mb-8"}," 文件已解压,环境已配置就绪 ",-1)),e("div",Hv,[t(je,{onClick:W[16]||(W[16]=()=>{he(),_(Ie)("/instance/list")})},{default:o(()=>[...W[60]||(W[60]=[p("返回服务端列表",-1)])]),_:1}),t(je,{theme:"default",onClick:W[17]||(W[17]=()=>{he(),_(Ie)(`/instance/console/${L.value}`)})},{default:o(()=>[...W[61]||(W[61]=[p("前往控制台",-1)])]),_:1})])])):H("",!0)])]),t(xs,{visible:m.value,"onUpdate:visible":W[18]||(W[18]=ke=>m.value=ke),onConfirm:ee},null,8,["visible"])])}}}),Wv=ue(Gv,[["__scopeId","data-v-bfac10be"]]),Jv={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},Xv={key:0,class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-12 transition-all duration-300 flex flex-col items-center justify-center min-h-[500px] list-item-anim"},Qv={class:"p-6 bg-zinc-50 dark:bg-zinc-900/50 rounded-2xl border border-zinc-200 dark:border-zinc-800 w-full max-w-lg"},Yv={class:"font-bold text-[var(--td-text-color-primary)] mb-2 flex items-center gap-2"},Zv={key:1,class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8 transition-all duration-300 flex flex-col md:flex-row gap-8 lg:gap-12 min-h-[600px]"},e0={class:"w-full md:w-56 shrink-0 md:border-r border-dashed border-zinc-200/80 dark:border-zinc-700/60 md:pr-8 pb-4 md:pb-0 border-b md:border-b-0"},t0={class:"flex-1 min-w-0 flex flex-col relative"},o0={key:0,class:"h-full flex flex-col"},s0={class:"list-item-anim flex-1 pt-1"},a0={class:"flex items-center gap-3"},l0={class:"list-item-anim flex-1 pt-1"},r0={class:"text-[12px] mt-1 text-zinc-600 dark:text-zinc-400"},n0={class:"w-full sm:w-[28rem]"},i0={class:"list-item-anim flex-1 pt-1"},d0={class:"list-item-anim flex-1 pt-1"},c0={class:"flex flex-col min-w-0 mb-8 pb-6 border-b border-zinc-200 dark:border-zinc-800"},u0={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] truncate tracking-tight"},m0={class:"text-sm text-[var(--td-text-color-secondary)] mt-2 flex items-center gap-1.5 truncate"},p0={class:"flex flex-col w-full"},v0={class:"flex flex-col sm:flex-row sm:items-center justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},f0={class:"flex flex-col sm:items-end text-left sm:text-right"},b0={class:"flex items-center gap-2"},x0={class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[300px]"},g0={class:"flex flex-col sm:flex-row sm:items-start justify-between py-4 border-b border-dashed border-zinc-200 dark:border-zinc-800/80"},h0={class:"text-xs font-mono text-[var(--td-text-color-secondary)] break-all leading-relaxed bg-zinc-50/50 dark:bg-zinc-800/30 p-2.5 rounded-lg border border-zinc-100 dark:border-zinc-800 text-left sm:text-right max-w-full sm:max-w-md"},y0={class:"mt-auto pt-6 border-t border-zinc-200 dark:border-zinc-700 flex items-center justify-between"},_0={key:1},w0={key:1,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim"},k0={class:"text-lg font-bold text-[var(--td-text-color-primary)] mb-2 tracking-tight"},$0={class:"w-full max-w-lg !my-6"},z0={class:"w-full max-w-2xl bg-white/40 dark:bg-zinc-900/40 rounded-2xl border border-white/60 dark:border-zinc-700/50 p-4 h-64 flex flex-col mt-6 shadow-[0_4px_12px_rgba(0,0,0,0.02)]"},C0={class:"text-[var(--td-text-color-secondary)] mr-2"},A0={class:"text-[var(--td-text-color-primary)] font-medium"},S0={key:2,class:"h-full flex flex-col items-center justify-center py-8 list-item-anim min-h-[50vh] sm:min-h-[40vh]"},I0={class:"text-xl text-[var(--td-text-color-primary)] text-center font-medium leading-[22px] !mt-4"},V0={class:"flex gap-4"},U0=ie({__name:"BedrockMode",setup(s){const a=Te(),r=h(null),d=At(),i=te(()=>a.userInfo.systemInfo.osType?.toLowerCase()||""),c=te(()=>i.value.includes("mac")),f=te(()=>i.value.includes("window")),n=h(0),v=h(!1),I=h(!1),u=h(!1),L=h(0),w=h([]),A=h(null),m=h(null),z=h(null),b=h([]),R=h(""),C=h(!1),M=h({name:"新建基岩版服务器",path:"",java:"none",core:"none",coreUrl:"",coreSha256:"",coreFileKey:"",packageFileKey:"",packageUrl:"",packageSha256:"",minM:1027,maxM:1027,args:"",ignoreEula:!0}),B=async()=>{if(!c.value){C.value=!0;try{const $=(await fs("bedrock-server")).versions||[];let E=[];f.value?E=$.filter(F=>F.includes("win-")):E=$.filter(F=>F.includes("linux-")),b.value=E.map(F=>({label:F,value:F})),b.value.length>0&&(R.value=b.value[0].value)}catch(y){U.warning("获取基岩版版本列表失败: "+y.message)}finally{C.value=!1}}};ze(()=>{M.value.args=f.value?"bedrock_server.exe":"./bedrock_server",B()});const D=te(()=>({name:[{required:!0,message:"实例名称不能为空",trigger:"blur"}],args:[{required:!0,message:"请输入启动指令",trigger:"blur"}]})),q=[["name","path"],[],["args"],[]],P=()=>{n.value>0&&(n.value-=1)},j=async()=>{if(n.value===1){if(!R.value){U.warning("请选择一个基岩版服务端版本");return}try{v.value=!0;const F=await bs("bedrock-server",R.value);M.value.packageUrl=F.url,M.value.packageSha256=F.sha256,v.value=!1}catch(F){v.value=!1,U.error("获取版本下载信息失败: "+F.message);return}}const y=await r.value.validate();if(y===!0){n.value<3&&(n.value+=1);return}const $=new Set(q[n.value]);Object.keys(y).some(F=>$.has(F))?U.warning("请检查当前步骤的输入"):n.value<3&&(n.value+=1)},K=async()=>{if(await r.value.validate()!==!0){U.warning("请检查表单所有内容");return}v.value=!0,w.value=[];const $={...M.value,path:M.value.path||null};try{const F=(await Mo($)).serverId;if(!F)throw new Error("服务器未返回 ServerId");m.value=F.toString(),I.value=!0,n.value=4,await k(m.value)}catch(E){const F=E.message||"创建请求失败,请检查网络或后端服务";U.error(F),v.value=!1}},k=async y=>{const{baseUrl:$,token:E}=a;let F=!1;const J=new URL("/api/hubs/creationProgressHub",$||window.location.origin);J.searchParams.append("x-user-token",E),A.value=new Ct().withUrl(J.toString(),{withCredentials:!1}).configureLogging(jt.Information).build();const O=(N,Y=null)=>{w.value.push({time:new Date().toLocaleTimeString(),message:N,progress:Y}),yt(()=>{z.value&&(z.value.scrollTop=z.value.scrollHeight)})};A.value.on("StatusUpdate",(N,Y,be)=>{N.toString()===y&&(O(Y,be),be!==null&&be>=0&&(L.value=be),be===100?(F=!0,U.success("服务器创建成功!"),A.value?.stop(),I.value=!1,u.value=!0,n.value=5,v.value=!1,d.refreshInstanceList()):be===-1&&(U.error(Y||"创建过程中发生未知错误"),A.value?.stop(),I.value=!1,v.value=!1,n.value=0))});try{await A.value.start(),O("已连接到实时进度服务..."),await A.value.invoke("TrackServer",y),O("已订阅任务,等待服务器响应...")}catch(N){F||(O(`SignalR 连接失败: ${N.message}`,-1),U.error("无法连接到实时进度服务"),I.value=!1,v.value=!1,n.value=0)}};He(()=>{A.value?.stop()});const V=()=>{u.value=!1,n.value=0,M.value={...M.value,name:"新建基岩版服务器",path:"",args:f.value?"bedrock_server.exe":"./bedrock_server",packageUrl:"",packageSha256:""}};return(y,$)=>{const E=g("t-icon"),F=g("t-button"),J=g("t-step-item"),O=g("t-steps"),N=g("t-input"),Y=g("t-form-item"),be=g("t-switch"),ae=g("t-alert"),me=g("t-select"),fe=g("t-textarea"),Se=g("t-tag"),Me=g("t-form"),Z=g("t-progress");return l(),x("div",Jv,[c.value?(l(),x("div",Xv,[t(E,{name:"error-circle",size:"64px",class:"text-[var(--color-warning)] mb-6"}),$[10]||($[10]=e("div",{class:"text-2xl font-bold text-[var(--td-text-color-primary)] mb-4"},"暂不支持 macOS 原生运行基岩版服务端",-1)),$[11]||($[11]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] max-w-lg text-center leading-relaxed mb-8"}," 抱歉,由于基岩版官方服务端仅提供 Windows 和 Linux 平台的支持,您当前的 macOS 系统无法直接原生运行。 ",-1)),e("div",Qv,[e("div",Yv,[t(E,{name:"lightbulb",class:"text-[var(--color-primary)]"}),$[7]||($[7]=p(" 备用方案推荐 ",-1))]),$[9]||($[9]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] mb-4"}," 如果您使用的是 macOS,我们强烈建议您通过 Docker 运行 MSLX,借助 Docker 的 Linux 虚拟化环境来部署基岩版服务端。 ",-1)),t(F,{tag:"a",href:"https://mslx.mslmc.cn/docs/install/docker/",target:"_blank",theme:"primary",variant:"outline",class:"!w-full"},{default:o(()=>[...$[8]||($[8]=[p(" 查看 Docker 部署文档 ",-1)])]),_:1})])])):(l(),x("div",Zv,[e("div",e0,[t(O,{layout:"vertical",current:n.value,status:"process",readonly:"",class:"custom-steps !bg-transparent !mt-2"},{default:o(()=>[t(J,{title:"基本信息",content:"填写实例名称和路径"}),t(J,{title:"服务端版本",content:"选择官方基岩版核心"}),t(J,{title:"启动配置",content:"设置启动指令与参数"}),t(J,{title:"确认信息",content:"核对并提交"}),t(J,{title:"部署实例",content:"提交并等待创建"}),t(J,{title:"完成",content:"查看创建结果"})]),_:1},8,["current"])]),e("div",t0,[!I.value&&!u.value?(l(),x("div",o0,[t(Me,{ref_key:"formRef",ref:r,data:M.value,rules:D.value,"label-align":"top",class:"flex-1 flex flex-col [&_.t-form__item]:!mb-6",onSubmit:K},{default:o(()=>[Be(e("div",s0,[t(Y,{label:"实例名称",name:"name"},{default:o(()=>[t(N,{modelValue:M.value.name,"onUpdate:modelValue":$[0]||($[0]=se=>M.value.name=se),placeholder:"为你的服务器起个名字",class:"!w-full sm:!w-[28rem]"},null,8,["modelValue"])]),_:1}),t(Y,{label:"实例路径 (可选)",name:"path",help:_(a).userInfo.systemInfo.docker?"您正在使用Docker容器部署,为保数据安全,仅支持使用默认数据路径":"选填,留空将使用默认路径"},{default:o(()=>[t(N,{modelValue:M.value.path,"onUpdate:modelValue":$[1]||($[1]=se=>M.value.path=se),disabled:_(a).userInfo.systemInfo.docker,placeholder:"例如: D:\\BedrockServer",class:"!w-full sm:!w-[28rem] !font-mono"},null,8,["modelValue","disabled"])]),_:1},8,["help"]),t(Y,{label:"忽略 EULA 提示 (基岩版请保持本功能开启)",name:"ignoreEula"},{default:o(()=>[e("div",a0,[t(be,{modelValue:M.value.ignoreEula,"onUpdate:modelValue":$[2]||($[2]=se=>M.value.ignoreEula=se),size:"large"},null,8,["modelValue"]),e("span",{class:ce(["text-sm font-bold transition-colors",M.value.ignoreEula?"text-[var(--color-primary)]":"text-[var(--td-text-color-secondary)]"])},S(M.value.ignoreEula?"已开启":"已关闭"),3)])]),_:1})],512),[[Re,n.value===0]]),Be(e("div",l0,[t(ae,{theme:"info",title:"基岩版服务端说明",class:"!mb-6 !rounded-xl"},{message:o(()=>[e("div",r0," MSLX 将为您自动拉取官方 Bedrock Server,并根据您的系统架构提供对应的可用版本(当前系统: "+S(i.value)+")。 ",1)]),_:1}),t(Y,{label:"选择服务端版本",name:"selectedVersion"},{default:o(()=>[e("div",n0,[t(me,{modelValue:R.value,"onUpdate:modelValue":$[3]||($[3]=se=>R.value=se),options:b.value,loading:C.value,placeholder:"请选择基岩版版本",class:"!w-full",filterable:""},null,8,["modelValue","options","loading"])])]),_:1})],512),[[Re,n.value===1]]),Be(e("div",i0,[t(Y,{label:"启动指令",name:"args",class:"w-full sm:!w-[40rem]"},{help:o(()=>[...$[12]||($[12]=[e("span",{class:"text-[11px] text-zinc-500 mt-1 inline-block"}," 已为您自动匹配启动指令,非必要请勿修改哦~ ",-1)])]),default:o(()=>[t(fe,{modelValue:M.value.args,"onUpdate:modelValue":$[4]||($[4]=se=>M.value.args=se),placeholder:"例如: bedrock_server.exe 或 ./bedrock_server",autosize:{minRows:3,maxRows:6},class:"code-font-textarea !bg-zinc-50/50 dark:!bg-zinc-900/30 !rounded-xl !font-mono"},null,8,["modelValue"])]),_:1})],512),[[Re,n.value===2]]),Be(e("div",d0,[e("div",c0,[e("div",u0,S(M.value.name),1),e("div",m0,[t(E,{name:"folder-open",class:"opacity-70"}),p(" "+S(M.value.path||"默认数据路径 (/DaemonData/Servers)"),1)])]),e("div",p0,[e("div",v0,[$[14]||($[14]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-1.5 sm:mb-0 shrink-0"},"服务端核心",-1)),e("div",f0,[e("div",b0,[e("span",x0,"基岩版 "+S(R.value),1),t(Se,{theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...$[13]||($[13]=[p("在线下载",-1)])]),_:1})])])]),e("div",g0,[$[15]||($[15]=e("span",{class:"text-sm text-[var(--td-text-color-secondary)] font-bold mb-2 sm:mb-0 shrink-0 mt-1"},"启动指令",-1)),e("div",h0,S(M.value.args),1)])]),t(ae,{theme:"info",class:"!mt-8 !rounded-xl !bg-[var(--color-primary)]/5 !border-[var(--color-primary)]/20"},{message:o(()=>[...$[16]||($[16]=[p("确认无误后点击下方 ",-1),e("strong",{class:"text-[var(--color-primary)] mx-1"},"提交创建",-1),p(",系统将自动开始下载资源并部署基岩版实例。",-1)])]),_:1})],512),[[Re,n.value===3]]),e("div",y0,[n.value>0&&n.value<4?(l(),G(F,{key:0,theme:"default",onClick:P},{default:o(()=>[...$[17]||($[17]=[p("上一步",-1)])]),_:1})):(l(),x("div",_0)),n.value<3?(l(),G(F,{key:2,theme:"primary",type:"button",loading:v.value,onClick:j},{default:o(()=>[...$[18]||($[18]=[p("下一步",-1)])]),_:1},8,["loading"])):H("",!0),n.value===3?(l(),G(F,{key:3,theme:"primary",type:"submit",loading:v.value},{default:o(()=>[...$[19]||($[19]=[p("提交创建",-1)])]),_:1},8,["loading"])):H("",!0)])]),_:1},8,["data","rules"])])):H("",!0),I.value?(l(),x("div",w0,[e("div",k0," 正在创建实例 ("+S(m.value)+") ",1),$[20]||($[20]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] mb-6"}," 请勿关闭此页面,下载与创建过程可能需要几分钟... ",-1)),e("div",$0,[t(Z,{theme:"plump",percentage:L.value,label:`${L.value.toFixed(2)}%`},null,8,["percentage","label"])]),e("div",z0,[e("div",{ref_key:"logContainerRef",ref:z,class:"flex-1 overflow-y-auto custom-scrollbar pr-2"},[(l(!0),x(le,null,ge(w.value,(se,De)=>(l(),x("div",{key:De,class:"text-xs font-mono mb-2 leading-relaxed"},[e("span",C0,"["+S(se.time)+"]",1),e("span",A0,S(se.message),1)]))),128))],512)])])):H("",!0),u.value?(l(),x("div",S0,[t(E,{name:"check-circle",size:"64px",class:"text-[var(--color-success)]"}),e("div",I0," 基岩版服务器 ("+S(m.value)+") 已创建成功 ",1),$[23]||($[23]=e("div",{class:"text-sm text-[var(--td-text-color-secondary)] leading-[22px] !my-2 !mb-8"}," 你现在可以去服务器列表启动它了 ",-1)),e("div",V0,[t(F,{onClick:$[5]||($[5]=()=>{V(),_(Ie)("/instance/list")})},{default:o(()=>[...$[21]||($[21]=[p("返回服务端列表",-1)])]),_:1}),t(F,{theme:"default",onClick:$[6]||($[6]=()=>{V(),_(Ie)(`/instance/console/${m.value}`)})},{default:o(()=>[...$[22]||($[22]=[p("前往控制台",-1)])]),_:1})])])):H("",!0)])]))])}}}),M0=ue(U0,[["__scopeId","data-v-d33adaae"]]),L0={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},B0={class:"design-card list-item-anim flex flex-col sm:flex-row sm:items-center justify-between gap-5 p-5 sm:p-6 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left",style:{"animation-delay":"0s"}},T0={class:"flex items-center shrink-0"},R0={class:"relative w-full"},j0={class:"list-item-anim",style:{"animation-delay":"0.1s"}},P0={class:"list-item-anim",style:{"animation-delay":"0.1s"}},E0={class:"list-item-anim",style:{"animation-delay":"0.1s"}},D0={class:"list-item-anim",style:{"animation-delay":"0.1s"}},F0=ie({__name:"index",setup(s){const a=h(1);return(r,d)=>{const i=g("t-radio-button"),c=g("t-radio-group");return l(),x("div",L0,[e("div",B0,[d[5]||(d[5]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex flex-col"},[e("h2",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none tracking-tight"}," 创建服务端实例 "),e("span",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 font-medium"},"选择适合您的部署模式,快速建立或深度定制您的 Minecraft 服务器")])],-1)),e("div",T0,[t(c,{modelValue:a.value,"onUpdate:modelValue":d[0]||(d[0]=f=>a.value=f),variant:"default-filled"},{default:o(()=>[t(i,{value:1},{default:o(()=>[...d[1]||(d[1]=[p("快速模式",-1)])]),_:1}),t(i,{value:2},{default:o(()=>[...d[2]||(d[2]=[p("上传整合包",-1)])]),_:1}),t(i,{value:3},{default:o(()=>[...d[3]||(d[3]=[p("基岩版",-1)])]),_:1}),t(i,{value:10},{default:o(()=>[...d[4]||(d[4]=[p("自定义模式",-1)])]),_:1})]),_:1},8,["modelValue"])])]),e("div",R0,[Be(e("div",j0,[t(up)],512),[[Re,a.value===1]]),Be(e("div",P0,[t(Wv)],512),[[Re,a.value===2]]),Be(e("div",E0,[t(M0)],512),[[Re,a.value===3]]),Be(e("div",D0,[t(yp)],512),[[Re,a.value===10]])])])}}}),O0=ue(F0,[["__scopeId","data-v-5d3f8bde"]]),N0=Object.freeze(Object.defineProperty({__proto__:null,default:O0},Symbol.toStringTag,{value:"Module"})),K0={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},q0={class:"design-card flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left"},H0={class:"flex items-center gap-3"},G0={class:"relative min-h-[400px]"},W0={key:0,class:"flex justify-center items-center py-24"},J0={key:1,class:"flex flex-col gap-5"},X0={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 pb-0 border-b-0"},Q0={class:"flex flex-col sm:flex-row sm:items-center gap-3"},Y0={class:"flex items-center gap-3"},Z0={class:"text-base font-bold text-[var(--td-text-color-primary)] flex items-center gap-2 m-0 tracking-tight"},ef={class:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-zinc-100 dark:bg-zinc-800 text-xs text-[var(--td-text-color-secondary)] font-medium border border-[var(--td-component-border)]"},tf={class:"flex items-center gap-2 mt-2 sm:mt-0"},of={class:"mx-5 mt-4 bg-zinc-50/80 dark:bg-zinc-800/50 rounded-xl border border-[var(--td-component-border)] overflow-hidden transition-all"},sf=["onClick"],af={class:"p-5 pt-4"},lf={key:0,class:"flex flex-col gap-3"},rf={key:0,class:"flex items-center gap-3 p-2 px-4 bg-red-500/10 border border-red-500/20 rounded-xl mb-1 transition-all"},nf={class:"text-xs font-medium text-red-600 dark:text-red-400"},df={class:"flex items-center gap-2"},cf=["title"],uf={class:"flex items-center gap-1"},mf={key:1,class:"flex flex-col items-center justify-center py-10"},pf={key:2,class:"flex flex-col items-center justify-center py-24 bg-white/40 dark:bg-zinc-800/40 rounded-2xl border-2 border-dashed border-[var(--td-component-border)]"},vf=ie({__name:"index",setup(s){const a=h(!1),r=h([]),d=h(new Set),i=h({}),c=[{colKey:"row-select",type:"multiple",width:30,fixed:"left"},{colKey:"fileName",title:"文件名",ellipsis:!0},{colKey:"fileSizeStr",title:"大小",width:100},{colKey:"createTime",title:"创建时间",width:180},{colKey:"op",title:"操作",width:140,fixed:"right"}],f=te(()=>[...r.value].sort((z,b)=>{const R=z.backups&&z.backups.length>0,C=b.backups&&b.backups.length>0;return R&&!C?-1:!R&&C?1:z.id-b.id})),n=async()=>{a.value=!0;try{const m=await ci();r.value=m||[]}catch(m){U.error("获取备份列表失败"),console.error(m)}finally{a.value=!1}},v=m=>{d.value.has(m)?d.value.delete(m):d.value.add(m)},I=(m,z)=>{const b=Zo(m,z);window.open(b,"_blank")},u=async(m,z)=>{const b=Ke.confirm({header:"确认删除",body:`确定要删除选中的 ${z.length} 个备份文件吗?此操作不可恢复。`,theme:"danger",onConfirm:async()=>{b.hide();const R=U.loading("正在删除中...");try{const C=z.map(M=>Yo(m,M));await Promise.all(C),U.success("删除成功"),i.value[m]&&(i.value[m]=[]),await n()}catch(C){U.error("部分文件删除失败,请重试 "+C.message)}finally{U.close(R)}}})},L=(m,z)=>{u(m,[z])},w=m=>{const z=i.value[m];if(!z||z.length===0){U.warning("请先选择要删除的文件");return}u(m,z)},A=(m,{_row:z},b)=>{i.value={...i.value,[b]:m}};return ze(()=>{n()}),(m,z)=>{const b=g("t-button"),R=g("t-loading"),C=g("t-tag"),M=g("t-table"),B=g("t-empty");return l(),x("div",K0,[e("div",q0,[z[1]||(z[1]=e("div",{class:"flex flex-col gap-1 items-start"},[e("h2",{class:"text-lg font-bold tracking-tight text-[var(--td-text-color-primary)] m-0"},"实例备份管理"),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"}," 管理所有服务器实例的本地备份文件 ")],-1)),e("div",H0,[t(b,{variant:"dashed",loading:a.value,onClick:n},{icon:o(()=>[t(_(Ee))]),default:o(()=>[z[0]||(z[0]=p(" 刷新列表 ",-1))]),_:1},8,["loading"])])]),e("div",G0,[a.value&&r.value.length===0?(l(),x("div",W0,[t(R,{text:"加载数据中...",size:"small"})])):f.value.length>0?(l(),x("div",J0,[(l(!0),x(le,null,ge(f.value,(D,q)=>(l(),x("div",{key:D.id,class:"list-item-anim",style:Oe({animationDelay:`${q*.05}s`})},[e("div",{class:ce(["design-card flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300 hover:border-[var(--color-primary)]/30",{"opacity-80":!D.backups?.length}])},[e("div",X0,[e("div",Q0,[t(C,{theme:"primary",variant:"light",shape:"round",class:"!px-3 !font-mono font-bold tracking-wider"},{default:o(()=>[p("ID: "+S(D.id),1)]),_:2},1024),e("div",Y0,[e("h3",Z0,[t(_(at),{class:"text-[var(--td-text-color-secondary)] shrink-0"}),p(" "+S(D.name),1)]),e("span",ef,[t(_(bt),{size:"14px",class:"opacity-80"}),p(" "+S(D.core),1)])])]),e("div",tf,[D.backups?.length?(l(),G(C,{key:0,theme:"success",variant:"light",shape:"round",class:"!px-3 !font-medium"},{default:o(()=>[p(S(D.backups.length)+" 个备份 ",1)]),_:2},1024)):(l(),G(C,{key:1,theme:"default",variant:"light",shape:"round",class:"!px-3 !text-zinc-400 !bg-zinc-100 dark:!bg-zinc-800"},{default:o(()=>[...z[2]||(z[2]=[p("无备份",-1)])]),_:1}))])]),e("div",of,[e("div",{class:"flex items-center gap-2 p-2.5 px-4 cursor-pointer text-[var(--td-text-color-secondary)] hover:text-zinc-800 dark:hover:text-zinc-200 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors",onClick:P=>v(D.id)},[t(_(nl),{class:"opacity-80",size:"18px"}),z[3]||(z[3]=e("span",{class:"text-xs font-medium select-none"},"存储路径",-1)),(l(),G(it(d.value.has(D.id)?_(il):_(dl)),{class:"ml-auto opacity-70"}))],8,sf),Be(e("div",{class:"p-3 px-4 text-xs font-mono text-[var(--td-text-color-secondary)] break-all border-t border-[var(--td-component-border)] bg-zinc-100/50 dark:bg-zinc-900/30 shadow-inner"},S(D.backupPath),513),[[Re,d.value.has(D.id)]])]),e("div",af,[D.backups?.length?(l(),x("div",lf,[i.value[D.id]?.length>0?(l(),x("div",rf,[e("span",nf,"已选 "+S(i.value[D.id].length)+" 项",1),t(b,{theme:"danger",variant:"text",size:"small",class:"!h-auto !py-1 hover:!bg-red-500/20",onClick:P=>w(D.id)},{default:o(()=>[...z[4]||(z[4]=[p(" 批量删除 ",-1)])]),_:1},8,["onClick"])])):H("",!0),t(M,{"row-key":"fileName",data:D.backups,columns:c,"selected-row-keys":i.value[D.id]||[],size:"small",hover:!0,pagination:D.backups.length>5?{pageSize:5}:null,onSelectChange:(P,j)=>A(P,j,D.id)},{fileName:o(({row:P})=>[e("div",df,[z[5]||(z[5]=e("span",{class:"text-[10px] font-extrabold bg-[var(--color-primary)]/10 text-[var(--color-primary)] px-1.5 py-0.5 rounded border border-[var(--color-primary)]/20 shrink-0 tracking-wider"},"ZIP",-1)),e("span",{class:"font-medium text-[var(--td-text-color-primary)] truncate",title:P.fileName},S(P.fileName),9,cf)])]),op:o(({row:P})=>[e("div",uf,[t(b,{theme:"primary",variant:"text",size:"small",class:"hover:!bg-[var(--color-primary)]/10",onClick:j=>I(D.id,P.fileName)},{icon:o(()=>[t(_(so))]),default:o(()=>[z[6]||(z[6]=p(" 下载 ",-1))]),_:1},8,["onClick"]),t(b,{theme:"danger",variant:"text",size:"small",class:"hover:!bg-red-500/10",onClick:j=>L(D.id,P.fileName)},{icon:o(()=>[t(_(ct))]),default:o(()=>[z[7]||(z[7]=p(" 删除 ",-1))]),_:1},8,["onClick"])])]),_:2},1032,["data","columns","selected-row-keys","pagination","onSelectChange"])])):(l(),x("div",mf,[...z[8]||(z[8]=[e("span",{class:"text-sm font-medium text-[var(--td-text-color-secondary)] bg-zinc-50 dark:bg-zinc-800/50 px-4 py-2 rounded-full border border-[var(--td-component-border)]"}," 当前实例暂无备份文件 ",-1)])]))])],2)],4))),128))])):(l(),x("div",pf,[t(B,{class:"!bg-transparent",description:"尚未发现任何实例"})]))])])}}}),ff=ue(vf,[["__scopeId","data-v-fb34b079"]]),bf=Object.freeze(Object.defineProperty({__proto__:null,default:ff},Symbol.toStringTag,{value:"Module"}));async function xf(s){return await Q.get({url:`/api/instance/tasks/list/${s}`})}async function gf(){return await Q.get({url:"/api/instance/tasks/list"})}async function Sa(s,a,r,d,i,c){return await Q.post({url:"/api/instance/tasks/create",data:{instanceId:s,name:a,cron:r,payload:d,type:i,enable:c}})}async function es(s,a,r,d,i,c,f){return await Q.post({url:"/api/instance/tasks/update",data:{instanceId:s,id:a,name:r,cron:d,payload:i,type:c,enable:f}})}async function Ia(s){return await Q.post({url:`/api/instance/tasks/delete/${s}`})}const hf={class:"flex flex-col gap-5 p-5 md:p-6 bg-zinc-50/50 dark:bg-zinc-950/20"},yf={class:"flex justify-center"},_f={key:0,class:"flex flex-col bg-white/80 dark:bg-zinc-800/60 border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl p-6 min-h-[260px] shadow-sm backdrop-blur-md"},wf={class:"grid grid-cols-2 md:grid-cols-3 gap-3"},kf={class:"flex flex-col items-start gap-0.5"},$f={class:"text-sm font-bold"},zf={key:1,class:"flex flex-col justify-center items-center bg-white/80 dark:bg-zinc-800/60 border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl p-8 min-h-[260px] shadow-sm backdrop-blur-md"},Cf={class:"flex items-center gap-3 text-base font-bold text-zinc-700 dark:text-zinc-200"},Af={key:2,class:"bg-white/80 dark:bg-zinc-800/60 border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl overflow-hidden shadow-sm min-h-[260px] backdrop-blur-md flex flex-col"},Sf={class:"p-5 max-h-[260px] overflow-y-auto custom-scrollbar"},If={class:"flex items-center gap-2 flex-wrap"},Vf={key:0,class:"mt-4 p-4 bg-zinc-50 dark:bg-zinc-900/50 rounded-xl border border-zinc-100 dark:border-zinc-800 shadow-inner"},Uf={class:"bg-[var(--td-bg-color-container)]/80 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 shadow-sm p-5 flex flex-col gap-4 backdrop-blur-md"},Mf={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 pb-4 border-b border-dashed border-zinc-200 dark:border-zinc-700/60"},Lf={class:"flex items-center gap-3 bg-zinc-50 dark:bg-zinc-900 px-3 py-1.5 rounded-lg border border-zinc-100 dark:border-zinc-800 shadow-inner"},Bf={class:"font-mono text-lg font-bold tracking-wider text-[var(--color-primary)]"},Tf={class:"flex flex-col gap-2"},Rf={class:"text-xs font-bold text-[var(--td-text-color-secondary)] flex items-center gap-1.5 mb-1 uppercase tracking-wider"},jf={key:0,class:"text-sm font-medium text-red-500 bg-red-50 dark:bg-red-950/30 p-3 rounded-lg border border-red-100 dark:border-red-900/50"},Pf={key:1,class:"grid grid-cols-1 sm:grid-cols-2 gap-2 m-0 p-0 list-none"},Ef={class:"text-[var(--td-text-color-secondary)] w-6 font-bold opacity-70"},Df=ie({__name:"CronGenerator",props:{visible:{type:Boolean,default:!1},initialValue:{type:String,default:""}},emits:["update:visible","confirm"],setup(s,{emit:a}){const r=s,d=a,i=h("preset"),c=h("*/10 * * * * *"),f=[{label:"每 10 秒",value:"*/10 * * * * *"},{label:"每分钟",value:"0 * * * * *"},{label:"每 5 分钟",value:"0 */5 * * * *"},{label:"每 30 分钟",value:"0 */30 * * * *"},{label:"每小时",value:"0 0 * * * ?"},{label:"每天凌晨 3 点",value:"0 0 3 * * ?"},{label:"每周日凌晨 3 点",value:"0 0 3 ? * 1"}],n=P=>{c.value=P},v=h(10),I=h("minute"),u=[{label:"秒",value:"second"},{label:"分钟",value:"minute"},{label:"小时",value:"hour"},{label:"天",value:"day"}],L=h("second"),w=[{label:"秒",value:"second",min:0,max:59},{label:"分",value:"minute",min:0,max:59},{label:"时",value:"hour",min:0,max:23},{label:"日",value:"day",min:1,max:31},{label:"月",value:"month",min:1,max:12},{label:"周",value:"week",min:1,max:7}],A=h({second:{type:"every",start:0,step:1,specifics:[]},minute:{type:"every",start:0,step:1,specifics:[]},hour:{type:"every",start:0,step:1,specifics:[]},day:{type:"every",start:1,step:1,specifics:[]},month:{type:"every",start:1,step:1,specifics:[]},week:{type:"any",start:1,step:1,specifics:[]}}),m=[{label:"周日",value:1},{label:"周一",value:2},{label:"周二",value:3},{label:"周三",value:4},{label:"周四",value:5},{label:"周五",value:6},{label:"周六",value:7}],z=te(()=>{const P=(E,F="*")=>{const J=A.value[E];return E==="week"&&J.type==="any"||E==="week"&&A.value.day.type!=="every"||E==="day"&&A.value.week.type!=="any"?"?":J.type==="every"?"*":J.type==="interval"?`${J.start}/${J.step}`:J.type==="specific"?J.specifics.length===0?E==="day"||E==="month"?"1":"0":J.specifics.sort((O,N)=>O-N).join(","):F},j=P("second"),K=P("minute"),k=P("hour"),V=P("day"),y=P("month"),$=P("week","?");return`${j} ${K} ${k} ${V} ${y} ${$}`}),b=te(()=>{const P=v.value;switch(I.value){case"second":return`*/${P} * * * * *`;case"minute":return`0 */${P} * * * *`;case"hour":return`0 0 */${P} * * ?`;case"day":return`0 0 0 */${P} * ?`;default:return"* * * * * *"}}),R=te(()=>i.value==="preset"?c.value:i.value==="novice"?b.value:z.value),C=h([]),M=h(""),B=()=>{try{const P=er.CronExpressionParser.parse(R.value,{currentDate:new Date});C.value=P.take(5).map(j=>new Date(j.toString()).toLocaleString()),M.value=""}catch{M.value="无法解析当前 Cron 表达式,请检查规则是否冲突",C.value=[]}};_e(R,()=>{B()},{immediate:!0}),_e(()=>r.visible,P=>{P&&r.initialValue?(i.value="pro",B()):P&&!r.initialValue&&(i.value="preset")});const D=()=>{if(M.value){U.warning("当前表达式无效,无法保存");return}d("confirm",R.value),d("update:visible",!1)},q=P=>{const j=w.find(k=>k.value===P);if(!j)return[];const K=[];for(let k=j.min;k<=j.max;k++)K.push({label:k.toString(),value:k});return K};return(P,j)=>{const K=g("t-radio-button"),k=g("t-radio-group"),V=g("t-button"),y=g("t-input-number"),$=g("t-select"),E=g("t-alert"),F=g("t-radio"),J=g("t-checkbox-group"),O=g("t-tab-panel"),N=g("t-tabs"),Y=g("t-tag"),be=g("t-dialog");return l(),G(be,{visible:s.visible,header:"Cron 表达式生成器",width:"700px",top:"5vh",attach:"body",class:"cron-gen-dialog",onClose:j[4]||(j[4]=ae=>d("update:visible",!1)),onConfirm:D},{default:o(()=>[e("div",hf,[e("div",yf,[t(k,{modelValue:i.value,"onUpdate:modelValue":j[0]||(j[0]=ae=>i.value=ae),variant:"default-filled",class:"!bg-zinc-100 dark:!bg-zinc-800 border border-[var(--td-component-border)] !rounded-lg p-0.5 shadow-sm"},{default:o(()=>[t(K,{value:"preset",class:"!px-4"},{default:o(()=>[...j[5]||(j[5]=[p("⭐ 预设模式",-1)])]),_:1}),t(K,{value:"novice",class:"!px-4"},{default:o(()=>[...j[6]||(j[6]=[p("🚀 简单模式",-1)])]),_:1}),t(K,{value:"pro",class:"!px-4"},{default:o(()=>[...j[7]||(j[7]=[p("🛠️ 专业模式",-1)])]),_:1})]),_:1},8,["modelValue"])]),i.value==="preset"?(l(),x("div",_f,[j[8]||(j[8]=e("div",{class:"text-sm font-bold text-zinc-700 dark:text-zinc-200 mb-4"},"常用预设规则",-1)),e("div",wf,[(l(),x(le,null,ge(f,(ae,me)=>t(V,{key:me,variant:"outline",theme:"default",class:"!m-0 !w-full !rounded-lg !h-12 !justify-start !px-4 hover:!border-[var(--color-primary)] hover:!text-[var(--color-primary)] transition-all bg-white dark:bg-zinc-900/50",onClick:fe=>n(ae.value)},{default:o(()=>[e("div",kf,[e("span",$f,S(ae.label),1)])]),_:2},1032,["onClick"])),64))])])):H("",!0),i.value==="novice"?(l(),x("div",zf,[e("div",Cf,[j[9]||(j[9]=e("span",null,"每隔",-1)),t(y,{modelValue:v.value,"onUpdate:modelValue":j[1]||(j[1]=ae=>v.value=ae),min:1,theme:"column",class:"!w-[100px] shadow-sm"},null,8,["modelValue"]),t($,{modelValue:I.value,"onUpdate:modelValue":j[2]||(j[2]=ae=>I.value=ae),options:u,class:"!w-[100px] shadow-sm"},null,8,["modelValue"]),j[10]||(j[10]=e("span",null,"执行一次",-1))]),t(E,{theme:"info",class:"!mt-8 !rounded-lg !bg-blue-50/50 dark:!bg-blue-900/10 !border-blue-100 dark:!border-blue-800/30"},{message:o(()=>[...j[11]||(j[11]=[e("span",{class:"text-[var(--td-text-color-secondary)] text-xs leading-relaxed"},[p(" 此模式适用于简单的周期性任务。如果需要“每周五上午 10 点”等复杂规则,请切换到 "),e("b",{class:"text-[var(--td-text-color-primary)]"},"专业模式"),p("。 ")],-1)])]),_:1})])):H("",!0),i.value==="pro"?(l(),x("div",Af,[t(N,{modelValue:L.value,"onUpdate:modelValue":j[3]||(j[3]=ae=>L.value=ae),class:"custom-tabs"},{default:o(()=>[(l(),x(le,null,ge(w,ae=>t(O,{key:ae.value,value:ae.value,label:ae.label},{default:o(()=>[e("div",Sf,[t(k,{modelValue:A.value[ae.value].type,"onUpdate:modelValue":me=>A.value[ae.value].type=me,direction:"vertical",class:"w-full gap-4 !bg-transparent"},{default:o(()=>[t(F,{value:"every",class:"text-sm font-medium text-zinc-700 dark:text-zinc-300"},{default:o(()=>[p(S(ae.value==="week"?"不指定 (?)":`每${ae.label} (*)`),1)]),_:2},1024),ae.value!=="week"?(l(),G(F,{key:0,value:"interval",class:"text-sm font-medium text-zinc-700 dark:text-zinc-300"},{default:o(()=>[e("div",If,[j[12]||(j[12]=e("span",null,"周期: 从",-1)),t(y,{modelValue:A.value[ae.value].start,"onUpdate:modelValue":me=>A.value[ae.value].start=me,min:ae.min,max:ae.max,size:"small",theme:"column",class:"!w-[70px]"},null,8,["modelValue","onUpdate:modelValue","min","max"]),e("span",null,S(ae.label)+" 开始,每",1),t(y,{modelValue:A.value[ae.value].step,"onUpdate:modelValue":me=>A.value[ae.value].step=me,min:1,max:ae.max,size:"small",theme:"column",class:"!w-[70px]"},null,8,["modelValue","onUpdate:modelValue","max"]),e("span",null,S(ae.label)+" 执行一次",1)])]),_:2},1024)):H("",!0),ae.value!=="week"?(l(),G(F,{key:1,value:"specific",class:"text-sm font-medium text-zinc-700 dark:text-zinc-300"},{default:o(()=>[p(" 指定: 选择具体的"+S(ae.label),1)]),_:2},1024)):H("",!0),ae.value==="week"?(l(),G(F,{key:2,value:"specific",class:"text-sm font-medium text-zinc-700 dark:text-zinc-300"},{default:o(()=>[...j[13]||(j[13]=[p(" 指定周几 ",-1)])]),_:1})):H("",!0)]),_:2},1032,["modelValue","onUpdate:modelValue"]),A.value[ae.value].type==="specific"?(l(),x("div",Vf,[t(J,{modelValue:A.value[ae.value].specifics,"onUpdate:modelValue":me=>A.value[ae.value].specifics=me,options:ae.value==="week"?m:q(ae.value),class:"grid grid-cols-[repeat(auto-fill,minmax(55px,1fr))] gap-2.5"},null,8,["modelValue","onUpdate:modelValue","options"])])):H("",!0)])]),_:2},1032,["value","label"])),64))]),_:1},8,["modelValue"])])):H("",!0),e("div",Uf,[e("div",Mf,[j[16]||(j[16]=e("span",{class:"font-bold text-[var(--td-text-color-primary)] text-sm"},"当前表达式:",-1)),e("div",Lf,[e("span",Bf,S(R.value),1),M.value?(l(),G(Y,{key:1,theme:"danger",variant:"light",size:"small",class:"!rounded"},{icon:o(()=>[t(_(Js))]),default:o(()=>[j[15]||(j[15]=p(" 无效",-1))]),_:1})):(l(),G(Y,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded"},{icon:o(()=>[t(_(Lt))]),default:o(()=>[j[14]||(j[14]=p(" 有效",-1))]),_:1}))])]),e("div",Tf,[e("div",Rf,[t(_(pt),{size:"14px"}),j[17]||(j[17]=p(" 最近 5 次运行时间预测 ",-1))]),M.value?(l(),x("div",jf,S(M.value),1)):(l(),x("ul",Pf,[(l(!0),x(le,null,ge(C.value,(ae,me)=>(l(),x("li",{key:me,class:"text-sm font-mono font-medium text-zinc-700 dark:text-zinc-300 bg-zinc-50 dark:bg-zinc-800/40 !px-4 !py-3 rounded-lg border border-zinc-100 dark:border-zinc-700/50 flex items-center transition-colors hover:border-[var(--color-primary)]/30 hover:bg-[var(--color-primary)]/5"},[e("span",Ef,"#"+S(me+1),1),p(" "+S(ae),1)]))),128))]))])])])]),_:1},8,["visible"])}}}),Va=ue(Df,[["__scopeId","data-v-71bc696a"]]),Ff={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},Of={class:"design-card flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left"},Nf={class:"flex items-center gap-3"},Kf={class:"relative min-h-[400px]"},qf={key:0,class:"flex justify-center items-center py-24"},Hf={key:1,class:"flex flex-col gap-5"},Gf={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 border-b border-dashed border-zinc-200 dark:border-zinc-700/60"},Wf={class:"flex flex-col sm:flex-row sm:items-center gap-3"},Jf={class:"flex items-center gap-3"},Xf={class:"text-base font-bold text-[var(--td-text-color-primary)] flex items-center gap-2 m-0 tracking-tight"},Qf={class:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-zinc-100 dark:bg-zinc-800 text-xs text-[var(--td-text-color-secondary)] font-medium border border-[var(--td-component-border)]"},Yf={class:"flex items-center gap-2"},Zf={class:"p-5"},e1={key:0,class:"flex flex-col gap-3"},t1={key:0,class:"flex items-center gap-3 p-2 px-4 bg-red-500/10 border border-red-500/20 rounded-xl mb-1 transition-all"},o1={class:"text-xs font-medium text-red-600 dark:text-red-400"},s1={class:"flex items-center gap-2"},a1=["title"],l1={class:"font-mono text-xs text-[var(--td-text-color-secondary)] bg-zinc-100 dark:bg-zinc-900 px-2.5 py-1 rounded-md border border-[var(--td-component-border)]"},r1={class:"flex items-center gap-1"},n1={key:1,class:"flex flex-col items-center justify-center py-12"},i1={key:2,class:"flex flex-col items-center justify-center py-24 bg-white/40 dark:bg-zinc-800/40 rounded-2xl border-2 border-dashed border-[var(--td-component-border)]"},d1={class:"flex items-center gap-3 bg-zinc-50 dark:bg-zinc-800/50 p-3 rounded-xl border border-[var(--td-component-border)] w-full mt-1"},c1={class:"text-xs font-medium text-[var(--td-text-color-secondary)]"},u1=ie({__name:"index",setup(s){const a=At(),r=h(!1),d=h([]),i=h({}),c=h(!1),f=h(!1),n=h(!1),v=h(null),I=h(!1),u=Te(),L=h({id:"",instanceId:void 0,name:"",cron:"",type:"command",payload:"",enable:!0}),w=[{label:"发送命令 (Command)",value:"command"},{label:"备份存档 (Backup)",value:"backup"},{label:"开启服务器 (Start)",value:"start"},{label:"停止服务器 (Stop)",value:"stop"},{label:"重启服务器 (Restart)",value:"restart"}],A={instanceId:[{required:!0,message:"请选择归属实例",trigger:"change"}],name:[{required:!0,message:"必填",trigger:"blur"}],cron:[{required:!0,message:"必填",trigger:"blur"}],type:[{required:!0,message:"必选",trigger:"change"}],payload:[{validator:$=>(L.value.type==="command"||L.value.type==="restart")&&!$?{result:!1,message:"此类型下内容不能为空",type:"error"}:!0,trigger:"blur"}]},m=[{colKey:"row-select",type:"multiple",width:30,fixed:"left"},{colKey:"name",title:"任务名称",ellipsis:!0},{colKey:"type",title:"类型",width:120},{colKey:"cron",title:"Cron 规则",width:140},{colKey:"payload",title:"执行参数",ellipsis:!0},{colKey:"enable",title:"状态",width:90},{colKey:"op",title:"操作",width:140,fixed:"right"}],z=te(()=>a.instanceList.map($=>({label:`[${$.id}] ${$.name}`,value:$.id}))),b=te(()=>a.instanceList.map(E=>{const F=d.value.filter(J=>J.instanceId===E.id);return{id:E.id,name:E.name,core:E.core,tasks:F}}).sort((E,F)=>{const J=E.tasks&&E.tasks.length>0,O=F.tasks&&F.tasks.length>0;return J&&!O?-1:!J&&O?1:E.id-F.id})),R=async()=>{r.value=!0;try{await a.refreshInstanceList();const $=await gf();d.value=$||[]}catch($){U.error("获取任务列表失败: "+($.message||"未知错误"))}finally{r.value=!1}},C=$=>{f.value=!1,L.value={id:"",instanceId:$,name:"",cron:"",type:"command",payload:"",enable:!0},c.value=!0},M=$=>{f.value=!0,L.value={id:$.id,instanceId:$.instanceId,name:$.name,cron:$.cron,type:$.type.toLowerCase(),payload:$.payload,enable:$.enable},c.value=!0},B=async()=>{if(await v.value?.validate()===!0){n.value=!0;try{const{instanceId:E,id:F,name:J,cron:O,payload:N,type:Y,enable:be}=L.value;f.value?(await es(E,F,J,O,N,Y,be),U.success("更新成功")):(await Sa(E,J,O,N,Y,be),U.success("创建成功")),c.value=!1,await R()}catch(E){U.error("保存失败: "+(E.message||"未知错误"))}finally{n.value=!1}}},D=async($,E)=>{try{await es($.instanceId,$.id,$.name,$.cron,$.payload,$.type,E),U.success(`任务 [${$.name}] 已${E?"启用":"暂停"}`),$.enable=E}catch(F){U.error("状态更新失败: "+(F.message||"未知错误")),await R()}},q=async($,E)=>{const F=Ke.confirm({header:"确认删除",body:`确定要删除选中的 ${E.length} 个定时任务吗?此操作不可恢复。`,theme:"danger",onConfirm:async()=>{F.hide();const J=U.loading("正在删除中...");try{const O=E.map(N=>Ia(N));await Promise.all(O),U.success("删除成功"),i.value[$]&&(i.value[$]=[]),await R()}catch(O){U.error("部分任务删除失败,请重试 "+O.message)}finally{U.close(J)}}})},P=($,E)=>{q($,[E])},j=$=>{const E=i.value[$];if(!E||E.length===0){U.warning("请先选择要删除的任务");return}q($,E)},K=($,{_row:E},F)=>{i.value={...i.value,[F]:$}},k=$=>{L.value.cron=$},V=$=>{const E=$.toLowerCase();return E==="start"?_t:E==="stop"?uo:E==="restart"?Ee:Tt},y=$=>{const E=$.toLowerCase();return E==="start"?"success":E==="stop"?"danger":E==="restart"?"warning":"primary"};return ze(()=>{R()}),($,E)=>{const F=g("t-button"),J=g("t-loading"),O=g("t-tag"),N=g("t-switch"),Y=g("t-table"),be=g("t-empty"),ae=g("t-select"),me=g("t-form-item"),fe=g("t-input"),Se=g("t-textarea"),Me=g("t-form"),Z=g("t-dialog");return l(),x("div",Ff,[e("div",Of,[E[12]||(E[12]=e("div",{class:"flex flex-col gap-1 items-start"},[e("h2",{class:"text-lg font-bold tracking-tight text-[var(--td-text-color-primary)] m-0"},"全局定时任务管理"),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"}," 集中管理所有服务器实例的 Cron 定时计划与调度策略 ")],-1)),e("div",Nf,[t(F,{variant:"dashed",loading:r.value,onClick:R},{icon:o(()=>[t(_(Ee))]),default:o(()=>[E[10]||(E[10]=p(" 刷新列表 ",-1))]),_:1},8,["loading"]),_(u).isAdmin?(l(),G(F,{key:0,theme:"primary",onClick:E[0]||(E[0]=se=>C())},{icon:o(()=>[t(_(ot))]),default:o(()=>[E[11]||(E[11]=p(" 新增任务 ",-1))]),_:1})):H("",!0)])]),e("div",Kf,[r.value&&b.value.length===0?(l(),x("div",qf,[t(J,{text:"加载数据中...",size:"small"})])):b.value.length>0?(l(),x("div",Hf,[(l(!0),x(le,null,ge(b.value,(se,De)=>(l(),x("div",{key:se.id,class:"list-item-anim",style:Oe({animationDelay:`${De*.05}s`})},[e("div",{class:ce(["design-card flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300 hover:border-[var(--color-primary)]/30",{"opacity-80":!se.tasks?.length}])},[e("div",Gf,[e("div",Wf,[t(O,{theme:"primary",variant:"light",shape:"round",class:"!px-3 !font-mono font-bold tracking-wider"},{default:o(()=>[p("ID: "+S(se.id),1)]),_:2},1024),e("div",Jf,[e("h3",Xf,[t(_(at),{class:"text-[var(--td-text-color-secondary)] shrink-0"}),p(" "+S(se.name),1)]),e("span",Qf,[t(_(bt),{size:"14px",class:"opacity-80"}),p(" "+S(se.core),1)])])]),e("div",Yf,[t(F,{size:"small",variant:"outline",class:"!border-zinc-200 dark:!border-zinc-700 !text-zinc-600 dark:!text-zinc-400 hover:!text-[var(--color-primary)] hover:!border-[var(--color-primary)] bg-white/50 dark:bg-zinc-900/50",onClick:Le=>C(se.id)},{icon:o(()=>[t(_(ot))]),default:o(()=>[E[13]||(E[13]=p(" 添加任务 ",-1))]),_:1},8,["onClick"]),se.tasks?.length?(l(),G(O,{key:0,theme:"success",variant:"light",shape:"round",class:"!px-3 !font-medium"},{default:o(()=>[p(S(se.tasks.length)+" 个任务 ",1)]),_:2},1024)):(l(),G(O,{key:1,theme:"default",variant:"light",shape:"round",class:"!px-3 !text-zinc-400 !bg-zinc-100 dark:!bg-zinc-800"},{default:o(()=>[...E[14]||(E[14]=[p("无任务",-1)])]),_:1}))])]),e("div",Zf,[se.tasks?.length?(l(),x("div",e1,[i.value[se.id]?.length>0?(l(),x("div",t1,[e("span",o1,"已选 "+S(i.value[se.id].length)+" 项",1),t(F,{theme:"danger",variant:"text",size:"small",class:"!h-auto !py-1 hover:!bg-red-500/20",onClick:Le=>j(se.id)},{default:o(()=>[...E[15]||(E[15]=[p(" 批量删除 ",-1)])]),_:1},8,["onClick"])])):H("",!0),t(Y,{"row-key":"id",data:se.tasks,columns:m,"selected-row-keys":i.value[se.id]||[],size:"small",hover:!0,pagination:se.tasks.length>5?{pageSize:5}:null,onSelectChange:(Le,ee)=>K(Le,ee,se.id)},{name:o(({row:Le})=>[e("div",s1,[t(_(pt),{class:"text-[var(--color-primary)] opacity-90 shrink-0"}),e("span",{class:"font-medium text-[var(--td-text-color-primary)] truncate",title:Le.name},S(Le.name),9,a1)])]),type:o(({row:Le})=>[t(O,{size:"small",variant:"light",theme:y(Le.type),class:"!rounded-md !px-2 font-medium"},{icon:o(()=>[(l(),G(it(V(Le.type)),{class:"opacity-80"}))]),default:o(()=>[p(" "+S(Le.type.toUpperCase()),1)]),_:2},1032,["theme"])]),cron:o(({row:Le})=>[e("span",l1,S(Le.cron),1)]),enable:o(({row:Le})=>[t(N,{value:Le.enable,size:"small",onChange:ee=>D(Le,ee)},null,8,["value","onChange"])]),op:o(({row:Le})=>[e("div",r1,[t(F,{theme:"primary",variant:"text",size:"small",class:"hover:!bg-[var(--color-primary)]/10",onClick:ee=>M(Le)},{icon:o(()=>[t(_(ao))]),default:o(()=>[E[16]||(E[16]=p(" 编辑 ",-1))]),_:1},8,["onClick"]),t(F,{theme:"danger",variant:"text",size:"small",class:"hover:!bg-red-500/10",onClick:ee=>P(se.id,Le.id)},{icon:o(()=>[t(_(ct))]),default:o(()=>[E[17]||(E[17]=p(" 删除 ",-1))]),_:1},8,["onClick"])])]),_:2},1032,["data","columns","selected-row-keys","pagination","onSelectChange"])])):(l(),x("div",n1,[...E[18]||(E[18]=[e("span",{class:"text-sm font-medium text-[var(--td-text-color-secondary)] bg-zinc-50 dark:bg-zinc-800/50 px-4 py-2 rounded-full border border-[var(--td-component-border)]"}," 当前实例暂无定时任务安排 ",-1)])]))])],2)],4))),128))])):(l(),x("div",i1,[t(be,{class:"!bg-transparent",description:"尚未配置任何实例定时任务"})]))]),t(Z,{visible:c.value,"onUpdate:visible":E[8]||(E[8]=se=>c.value=se),header:f.value?"编辑定时任务":"新增定时任务",width:"600px","confirm-btn":{content:"保存配置",theme:"primary",loading:n.value},placement:"center","on-confirm":B},{default:o(()=>[t(Me,{ref_key:"formRef",ref:v,data:L.value,rules:A,"label-align":"top",class:"mt-4"},{default:o(()=>[t(me,{label:"归属实例",name:"instanceId"},{default:o(()=>[t(ae,{modelValue:L.value.instanceId,"onUpdate:modelValue":E[1]||(E[1]=se=>L.value.instanceId=se),options:z.value,placeholder:"请选择要执行该任务的服务器实例",filterable:"",disabled:!!f.value},null,8,["modelValue","options","disabled"])]),_:1}),t(me,{label:"任务名称",name:"name"},{default:o(()=>[t(fe,{modelValue:L.value.name,"onUpdate:modelValue":E[2]||(E[2]=se=>L.value.name=se),placeholder:"请输入任务名称,例如:凌晨自动重启"},null,8,["modelValue"])]),_:1}),t(me,{label:"触发规则 (Cron 表达式)",name:"cron"},{default:o(()=>[t(fe,{modelValue:L.value.cron,"onUpdate:modelValue":E[4]||(E[4]=se=>L.value.cron=se),placeholder:"例如: 0 0 4 * * ?"},{suffix:o(()=>[t(F,{variant:"text",theme:"primary",size:"small",class:"!h-auto !py-1",onClick:E[3]||(E[3]=se=>I.value=!0)},{default:o(()=>[...E[19]||(E[19]=[p(" 生成器 ",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(me,{label:"执行操作类型",name:"type"},{default:o(()=>[t(ae,{modelValue:L.value.type,"onUpdate:modelValue":E[5]||(E[5]=se=>L.value.type=se),options:w},null,8,["modelValue"])]),_:1}),L.value.type==="command"||L.value.type==="restart"?(l(),G(me,{key:0,label:L.value.type==="restart"?"重启全服倒计时提示语":"控制台执行命令",name:"payload"},{default:o(()=>[t(Se,{modelValue:L.value.payload,"onUpdate:modelValue":E[6]||(E[6]=se=>L.value.payload=se),autosize:{minRows:2,maxRows:5},placeholder:"请输入执行内容..."},null,8,["modelValue"])]),_:1},8,["label"])):H("",!0),t(me,{label:"初始状态",name:"enable"},{default:o(()=>[e("div",d1,[t(N,{modelValue:L.value.enable,"onUpdate:modelValue":E[7]||(E[7]=se=>L.value.enable=se)},null,8,["modelValue"]),e("span",c1,S(L.value.enable?"保存后立即生效运行":"保存后处于暂停状态"),1)])]),_:1})]),_:1},8,["data"])]),_:1},8,["visible","header","confirm-btn"]),t(Va,{visible:I.value,"onUpdate:visible":E[9]||(E[9]=se=>I.value=se),"initial-value":L.value.cron,onConfirm:k},null,8,["visible","initial-value"])])}}}),m1=ue(u1,[["__scopeId","data-v-2e07fa53"]]),p1=Object.freeze(Object.defineProperty({__proto__:null,default:m1},Symbol.toStringTag,{value:"Module"})),v1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function f1(s,a){return l(),x("svg",v1,[...a[0]||(a[0]=[st('',8)])])}const Ds={render:f1},b1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function x1(s,a){return l(),x("svg",b1,[...a[0]||(a[0]=[st('',8)])])}const g1={render:x1},h1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function y1(s,a){return l(),x("svg",h1,[...a[0]||(a[0]=[st('',6)])])}const _1={render:y1},w1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function k1(s,a){return l(),x("svg",w1,[...a[0]||(a[0]=[st('',7)])])}const $1={render:k1},z1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function C1(s,a){return l(),x("svg",z1,[...a[0]||(a[0]=[st('',4)])])}const A1={render:C1},S1={xmlns:"http://www.w3.org/2000/svg",width:"200",height:"140",fill:"none"};function I1(s,a){return l(),x("svg",S1,[...a[0]||(a[0]=[st('',11)])])}const V1={render:I1},U1={class:"result-container"},M1={class:"result-bg-img"},L1={class:"result-title"},B1={class:"result-tip"},T1=ie({__name:"index",props:{bgUrl:String,title:String,tip:String,type:String},setup(s){const a=s,r=te(()=>{switch(a.type){case"403":return Ds;case"404":return g1;case"500":return _1;case"ie":return $1;case"wifi":return A1;case"maintenance":return V1;default:return Ds}});return(d,i)=>(l(),x("div",U1,[e("div",M1,[(l(),G(it(r.value)))]),e("div",L1,S(s.title),1),e("div",B1,S(s.tip),1),cl(d.$slots,"default",{},void 0)]))}}),Fs=ue(T1,[["__scopeId","data-v-635c4716"]]),R1={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},j1={class:"design-card flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left"},P1={class:"flex items-center gap-2 sm:gap-3 flex-wrap"},E1={class:"relative min-h-[400px]"},D1={key:0,class:"flex flex-col items-center justify-center py-24"},F1={key:1,class:"flex flex-col items-center justify-center py-16 design-card bg-white/40 dark:bg-zinc-800/40 rounded-2xl border border-red-500/20"},O1={key:2,class:"flex flex-col items-center justify-center py-24 design-card bg-white/40 dark:bg-zinc-800/40 rounded-2xl border-2 border-dashed border-[var(--td-component-border)]"},N1={key:3,class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-4"},K1=["onClick"],q1={class:"flex items-center justify-between gap-3"},H1={class:"flex items-center gap-2.5 min-w-0"},G1={class:"relative flex items-center justify-center shrink-0"},W1={key:0,class:"absolute w-2.5 h-2.5 bg-emerald-400 rounded-full animate-ping opacity-75"},J1={class:"text-base font-bold text-[var(--td-text-color-primary)] truncate tracking-tight"},X1={class:"text-xs font-mono text-[var(--td-text-color-secondary)] ml-2 opacity-60 shrink-0"},Q1={class:"flex items-center gap-8 px-0.5"},Y1={class:"flex flex-col gap-1.5"},Z1={class:"flex items-center gap-2 text-[var(--td-text-color-primary)]"},eb={class:"text-sm font-bold leading-none"},tb={class:"flex flex-col gap-1.5"},ob={class:"flex items-center justify-between pt-4 mt-auto border-t border-dashed border-zinc-200/60 dark:border-zinc-700/60"},sb={class:"flex items-center gap-1"},ab={class:"delete-dialog-body min-h-[200px]"},lb={class:"alert-zinc bg-primary/5 border border-primary/20 p-4 rounded-xl mb-6 flex items-start gap-3"},rb={key:0},nb={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},ib={class:"flex items-center justify-between w-full ml-1 overflow-hidden"},db={class:"text-sm font-medium text-[var(--td-text-color-primary)] truncate pr-2"},cb={class:"text-[10px] font-mono text-zinc-400 shrink-0"},ub={key:1,class:"py-12 text-center text-zinc-400 italic"},mb=ie({__name:"index",setup(s){const a=Lo(),r=Te(),d=h(!0),i=h(!1),c=qe({visible:!1,loading:!1,submitting:!1,selectedIds:[]}),f=async()=>{c.visible=!0,c.loading=!0;try{a.frpList.length===0&&await a.getTunnels();const w=await Ii();c.selectedIds=w||[]}catch(w){U.error("获取自启动配置失败 "+w.message)}finally{c.loading=!1}},n=async()=>{c.submitting=!0;try{await Vi(c.selectedIds),U.success("自启动设置已更新"),c.visible=!1}catch(w){U.error("保存失败: "+w.message)}finally{c.submitting=!1}},v=w=>({toml:"primary",ini:"warning",cmd:"danger",json:"success"})[w]||"default";async function I(){try{d.value=!0,i.value=!1,await a.getTunnels()}catch(w){console.error(w),i.value=!0}finally{d.value=!1}}const u=w=>{Ie(`/frp/console/${w.id}`)},L=w=>{const A=Ke.confirm({header:"确认删除隧道?",body:"删除后该隧道将无法恢复。确定要继续吗?",theme:"danger",onConfirm:async()=>{try{await Ci(w),U.success(`隧道 ${w} 删除成功`),await I(),A.hide()}catch(m){U.error(m.message)}},onClose:()=>{A.hide()}})};return ze(()=>{I()}),(w,A)=>{const m=g("t-button"),z=g("t-loading"),b=g("t-tag"),R=g("t-icon"),C=g("t-checkbox"),M=g("t-checkbox-group"),B=g("t-dialog");return l(),x("div",R1,[e("div",j1,[A[7]||(A[7]=e("div",{class:"flex flex-col gap-1 items-start"},[e("h2",{class:"text-lg font-bold tracking-tight text-[var(--td-text-color-primary)] m-0"},"隧道列表"),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"},"管理您的 FRP 隧道映射,设置自启动并监控运行状态")],-1)),e("div",P1,[t(m,{variant:"dashed",onClick:I},{icon:o(()=>[t(_(Ee))]),default:o(()=>[A[4]||(A[4]=p(" 刷新 ",-1))]),_:1}),_(r).isAdmin?(l(),G(m,{key:0,variant:"outline",onClick:f},{icon:o(()=>[t(_(ul))]),default:o(()=>[A[5]||(A[5]=p(" 自启动设置 ",-1))]),_:1})):H("",!0),_(r).isAdmin?(l(),G(m,{key:1,theme:"primary",onClick:A[0]||(A[0]=D=>_(Ie)("/frp/create"))},{icon:o(()=>[t(_(ot))]),default:o(()=>[A[6]||(A[6]=p(" 创建隧道 ",-1))]),_:1})):H("",!0)])]),e("div",E1,[d.value?(l(),x("div",D1,[t(z,{size:"medium",text:"正在获取隧道信息..."})])):i.value?(l(),x("div",F1,[t(Fs,{title:"数据获取失败",tip:"无法连接到服务器,请检查网络",type:"500"},{default:o(()=>[t(m,{theme:"primary",onClick:I},{default:o(()=>[...A[8]||(A[8]=[p("重试",-1)])]),_:1})]),_:1})])):_(a).frpList.length===0?(l(),x("div",O1,[t(Fs,{title:"暂无隧道",tip:_(r).isAdmin?"快去创建一个吧":"管理员尚未为您分配隧道",type:"404"},{default:o(()=>[_(r).isAdmin?(l(),G(m,{key:0,theme:"primary",onClick:A[1]||(A[1]=D=>_(Ie)("/frp/create"))},{default:o(()=>[...A[9]||(A[9]=[p("立即创建",-1)])]),_:1})):H("",!0)]),_:1},8,["tip"])])):(l(),x("div",N1,[(l(!0),x(le,null,ge(_(a).frpList,(D,q)=>(l(),x("div",{key:D.id,style:Oe({"--i":q}),class:"design-card group flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm hover:shadow-md hover:border-[var(--color-primary)]/50 transition-all duration-300 p-5 gap-5 cursor-pointer",onClick:P=>u(D)},[e("div",q1,[e("div",H1,[e("div",G1,[D.status?(l(),x("span",W1)):H("",!0),e("span",{class:ce([D.status?"bg-emerald-500":"bg-zinc-300 dark:bg-zinc-600","relative w-2 h-2 rounded-full"])},null,2)]),e("h4",J1,S(D.name),1),e("span",X1,"#"+S(D.id),1)])]),e("div",Q1,[e("div",Y1,[A[10]||(A[10]=e("span",{class:"text-[10px] text-[var(--td-text-color-secondary)] uppercase tracking-widest font-black opacity-80"},"提供商",-1)),e("div",Z1,[t(_(bt),{size:"16px",class:"text-[var(--color-primary)] opacity-70"}),e("span",eb,S(D.service),1)])]),e("div",tb,[A[11]||(A[11]=e("span",{class:"text-[10px] text-[var(--td-text-color-secondary)] uppercase tracking-widest font-black opacity-80"},"配置格式",-1)),e("div",null,[t(b,{size:"small",theme:v(D.configType),variant:"light-outline",class:"!px-3 !h-5 !text-[10px] font-black italic tracking-tighter border-zinc-200 dark:border-zinc-700"},{default:o(()=>[p(S(D.configType.toUpperCase()),1)]),_:2},1032,["theme"])])])]),e("div",ob,[A[12]||(A[12]=e("span",{class:"text-xs text-[var(--td-text-color-secondary)] group-hover:text-[var(--color-primary)] transition-colors font-bold"}," 隧道控制台 → ",-1)),e("div",sb,[_(r).isAdmin?(l(),G(m,{key:0,shape:"circle",theme:"danger",variant:"text",size:"small",class:"hover:!bg-red-500/10",onClick:dt(P=>L(D.id),["stop"])},{icon:o(()=>[t(_(ct),{size:"16"})]),_:1},8,["onClick"])):H("",!0)])])],12,K1))),128))]))]),t(B,{visible:c.visible,"onUpdate:visible":A[3]||(A[3]=D=>c.visible=D),header:"设置开机自启动隧道",width:"640px","confirm-btn":{content:"保存设置",loading:c.submitting},onConfirm:n},{default:o(()=>[e("div",ab,[t(z,{loading:c.loading,text:"读取配置中...",size:"small"},{default:o(()=>[e("div",lb,[t(R,{name:"info-circle-filled",class:"text-primary mt-0.5"}),A[13]||(A[13]=e("div",{class:"text-sm"},[e("p",{class:"text-[var(--td-text-color-primary)] font-bold mb-1"},"自启动策略说明"),e("p",{class:"text-[var(--td-text-color-secondary)] leading-relaxed m-0"}," 勾选的隧道将在 MSLX 守护进程启动时自动加载并运行。 ")],-1))]),_(a).frpList.length>0?(l(),x("div",rb,[t(M,{modelValue:c.selectedIds,"onUpdate:modelValue":A[2]||(A[2]=D=>c.selectedIds=D),class:"w-full"},{default:o(()=>[e("div",nb,[(l(!0),x(le,null,ge(_(a).frpList,D=>(l(),x("div",{key:D.id,class:"p-3 bg-zinc-50/50 dark:bg-zinc-800/40 rounded-xl border border-[var(--td-component-border)] hover:bg-zinc-100 dark:hover:bg-zinc-700/60 transition-colors"},[t(C,{value:D.id,class:"!w-full"},{default:o(()=>[e("div",ib,[e("span",db,S(D.name),1),e("span",cb,"#"+S(D.id),1)])]),_:2},1032,["value"])]))),128))])]),_:1},8,["modelValue"])])):(l(),x("div",ub,"暂无可用隧道"))]),_:1},8,["loading"])])]),_:1},8,["visible","confirm-btn"])])}}}),pb=ue(mb,[["__scopeId","data-v-beedb160"]]),vb=Object.freeze(Object.defineProperty({__proto__:null,default:pb},Symbol.toStringTag,{value:"Module"})),fb=Lo();async function Jt(s,a,r,d="toml",i=!0){let c=s;if(i)try{c=await new Promise((f,n)=>{const v=h(s),I=Ke({header:"自定义隧道名称",body:()=>ml(pl,{value:v.value,placeholder:"请输入隧道名称",clearable:!0,onChange:u=>{v.value=u}}),onConfirm:()=>{if(!v.value.trim()){U.warning("隧道名称不能为空");return}I.hide(),f(v.value.trim())},onClose:()=>{I.hide(),n(new Error("cancel"))},onCancel:()=>{I.hide(),n(new Error("cancel"))}})})}catch{return}await zi(c,a,r,d),U.success("添加成功"),await fb.getTunnels(),Ie("/frp/list")}function Ua(s){const a=s.trim();if(!a){U.warning("请先输入 INI 配置内容");return}const r={tls_enable:"transport.tls.enable",token:"auth.token",protocol:"transport.protocol",pool_count:"transport.poolCount",tcp_mux:"transport.tcpMux",login_fail_exit:"loginFailExit",custom_domains:"customDomains",locations:"locations",host_header_rewrite:"hostHeaderRewrite",role:"role",sk:"sk"},d=a.split(/\r?\n/);let i="";const c={},f=[];let n=null;d.forEach(I=>{const u=I.trim();if(!u||u.startsWith("#")||u.startsWith(";"))return;const L=u.match(/^\[(.+)\]$/);if(L){i=L[1],i==="common"?n=null:(n={name:i},f.push(n));return}const w=u.match(/^([^=]+)=(.*)$/);if(w){const A=w[1].trim();let m=w[2].trim(),z=A;r[A]?z=r[A]:(z=z.replace(/_([a-z])/g,(b,R)=>R.toUpperCase()),z=z.replace(/Ip/g,"IP")),m==="true"?m=!0:m==="false"?m=!1:!isNaN(Number(m))&&m!==""?m=Number(m):m=String(m),i==="common"||!i?c[z]=m:n&&(n[z]=m)}});let v="";return Object.entries(c).forEach(([I,u])=>{const L=typeof u=="string"?`"${u}"`:u;v+=`${I} = ${L} -`}),f.forEach(I=>{v+=` -[[proxies]] -`,Object.entries(I).forEach(([u,L])=>{const w=typeof L=="string"?`"${L}"`:L;v+=`${u} = ${w} -`})}),v.trim()}const bb={class:"custom-frp-container"},xb={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8"},gb={class:"flex items-center gap-4"},hb={class:"mt-8 pt-5 border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60 flex items-center gap-3"},yb=ie({__name:"Custom",setup(s){const a=h(null),r=qe({name:"",type:"toml",content:""}),d={name:[{required:!0,message:"请输入隧道名称",type:"error"}],content:[{required:!0,message:"配置文件内容不能为空",type:"error"}]},i=async({validateResult:n})=>{n===!0?await Jt(r.name,r.content,"Custom",r.type,!1):U.warning("请检查表单填写")},c=()=>{U.info("表单已重置")},f=()=>{try{r.content=Ua(r.content),r.type="toml",U.success("已转换为 TOML")}catch(n){U.error(`转换失败: ${n.message||"未知错误"}`)}};return(n,v)=>{const I=g("t-input"),u=g("t-form-item"),L=g("t-radio-button"),w=g("t-radio-group"),A=g("t-button"),m=g("t-textarea"),z=g("t-form");return l(),x("div",bb,[e("div",xb,[v[8]||(v[8]=e("div",{class:"flex items-center gap-2 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},[e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"自定义 Frp 隧道")],-1)),t(z,{ref_key:"formRef",ref:a,data:r,rules:d,"label-align":"top",onReset:c,onSubmit:i},{default:o(()=>[t(u,{label:"隧道名称",name:"name"},{default:o(()=>[t(I,{modelValue:r.name,"onUpdate:modelValue":v[0]||(v[0]=b=>r.name=b),placeholder:"请输入隧道名称",class:"!w-full sm:!w-96"},null,8,["modelValue"])]),_:1}),t(u,{label:"配置类型",name:"type"},{default:o(()=>[e("div",gb,[t(w,{modelValue:r.type,"onUpdate:modelValue":v[1]||(v[1]=b=>r.type=b),variant:"default-filled"},{default:o(()=>[t(L,{value:"toml"},{default:o(()=>[...v[3]||(v[3]=[p("TOML",-1)])]),_:1}),t(L,{value:"ini"},{default:o(()=>[...v[4]||(v[4]=[p("INI",-1)])]),_:1})]),_:1},8,["modelValue"]),t(Rt,{name:"fade"},{default:o(()=>[r.type==="ini"?(l(),G(A,{key:0,variant:"outline",theme:"primary",size:"small",class:"!rounded-md hover:!bg-[var(--color-primary)]/10",onClick:f},{default:o(()=>[...v[5]||(v[5]=[p(" 一键转 TOML ",-1)])]),_:1})):H("",!0)]),_:1})])]),_:1}),t(u,{label:"隧道配置内容",name:"content"},{default:o(()=>[t(m,{modelValue:r.content,"onUpdate:modelValue":v[2]||(v[2]=b=>r.content=b),placeholder:`serverAddr = "0.0.0.0" -serverPort = 1027 - -[[proxies]] -name = "nahida_tcp" -...`,autosize:{minRows:12,maxRows:25},class:"code-font-textarea !bg-zinc-50/50 dark:!bg-zinc-900/50 !w-full"},null,8,["modelValue"])]),_:1}),e("div",hb,[t(A,{theme:"primary",type:"submit",class:"!rounded-xl !font-bold !px-8 shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[...v[6]||(v[6]=[p("保存配置",-1)])]),_:1}),t(A,{theme:"default",variant:"base",type:"reset",class:"!bg-zinc-100 dark:!bg-zinc-800/80 !border-none !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 !rounded-xl !font-bold"},{default:o(()=>[...v[7]||(v[7]=[p("重置",-1)])]),_:1})])]),_:1},8,["data"])])])}}}),_b=ue(yb,[["__scopeId","data-v-132cd77f"]]);function Xt(s){const a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let r="";for(let d=0;d{if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent))return window.open(s,"_blank"),null;const c=window.screenLeft!==void 0?window.screenLeft:window.screenX,f=window.screenTop!==void 0?window.screenTop:window.screenY,n=window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width,v=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height,I=n/window.screen.availWidth,u=(n-r)/2/I+c,L=(v-d)/2/I+f,w=` - scrollbars=yes, - width=${r/I}, - height=${d/I}, - top=${L}, - left=${u} - `,A=window.open(s,a,w);return A&&A.focus(),A},kb={class:"flex justify-between items-center w-full"},$b={class:"truncate"},zb={class:"flex gap-1.5 shrink-0 ml-3"},Cb={class:"w-full flex flex-col gap-2.5"},Ab={class:"flex gap-2 flex-wrap"},Sb={class:"bg-[var(--td-bg-color-secondarycontainer)] rounded-[var(--td-radius-medium)] p-3 border border-dashed border-[var(--td-component-border)]"},Ib={class:"m-0 whitespace-pre-wrap break-all text-[13px] text-[var(--td-text-color-primary)] leading-[1.6]"},Vb=ie({__name:"CreateTunnelDialog",props:{visible:{type:Boolean},token:{}},emits:["update:visible","success"],setup(s,{emit:a}){const r=s,d=a,i=h(!1),c=h(!1),f=h([]),n=qe({nodeId:null,type:"tcp",localIP:"127.0.0.1",localPort:"25565",remotePort:"",name:"",remarks:"无",bindDomain:"",use_kcp:!1,extra_config:""}),v=te(()=>f.value.find(A=>A.id===n.nodeId)||null),I=te(()=>{const A=[{label:"免费节点",value:0,children:[]},{label:"高级节点",value:1,children:[]},{label:"超级节点",value:2,children:[]}];return f.value.forEach(m=>{const z=A.find(b=>b.value===m.allow_user_group);z&&z.children.push(m)}),A.filter(m=>m.children.length>0)}),u=()=>{if(v.value){const{min_open_port:A,max_open_port:m}=v.value;n.remotePort=(Math.floor(Math.random()*(m-A+1))+A).toString()}n.name=Xt(8)},L=async()=>{i.value=!0;try{const A=await Q.get({url:"/api/frp/nodeList",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`}});A.code===200&&(f.value=A.data,r.visible&&f.value.length>0&&!n.nodeId&&(n.nodeId=f.value[0].id,u()))}catch(A){U.error("加载节点失败"+A.message)}finally{i.value=!1}};_e(()=>r.visible,A=>{A&&(f.value.length>0?(n.nodeId||(n.nodeId=f.value[0].id),u()):L())});const w=async()=>{if(n.nodeId){c.value=!0;try{const A=await Q.post({url:"/api/frp/addTunnel",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`},data:{id:n.nodeId,type:n.type,local_ip:n.localIP,local_port:n.localPort,remote_port:n.remotePort,name:n.name,remarks:n.remarks,bind_domain:n.bindDomain,use_kcp:v.value?.kcp_support===1?n.use_kcp:!1,extra_config:n.extra_config||null}});A.code===200?(U.success("创建成功"),d("success"),d("update:visible",!1)):U.error(A.msg)}finally{c.value=!1}}};return ze(()=>{r.token&&L()}),(A,m)=>{const z=g("t-tag"),b=g("t-option"),R=g("t-option-group"),C=g("t-select"),M=g("t-col"),B=g("t-button"),D=g("t-row"),q=g("t-form-item"),P=g("t-input"),j=g("t-textarea"),K=g("t-form"),k=g("t-loading"),V=g("t-dialog");return l(),G(V,{attach:"body",visible:s.visible,header:"新建隧道",width:"580px","confirm-btn":{content:"提交创建",loading:c.value},onConfirm:w,onClose:m[10]||(m[10]=y=>d("update:visible",!1))},{default:o(()=>[t(k,{loading:i.value},{default:o(()=>[t(K,{data:n,"label-align":"right","label-width":100,class:"pt-2.5 overflow-x-hidden [&_.t-form__item]:!mb-[22px]"},{default:o(()=>[t(q,{label:"选择节点",name:"nodeId"},{default:o(()=>[t(D,{gutter:8,style:{width:"100%"}},{default:o(()=>[t(M,{flex:"auto"},{default:o(()=>[t(C,{modelValue:n.nodeId,"onUpdate:modelValue":m[0]||(m[0]=y=>n.nodeId=y),placeholder:"请选择节点",onChange:u},{default:o(()=>[(l(!0),x(le,null,ge(I.value,y=>(l(),G(R,{key:y.value,label:y.label},{default:o(()=>[(l(!0),x(le,null,ge(y.children,$=>(l(),G(b,{key:$.id,value:$.id,label:$.node},{default:o(()=>[e("div",kb,[e("span",$b,S($.node),1),e("div",zb,[t(z,{size:"small",variant:"outline",theme:"primary"},{default:o(()=>[p(S($.bandwidth)+"M",1)]),_:2},1024),t(z,{size:"small",theme:$.status===1?"success":"danger"},{default:o(()=>[p(S($.status===1?"在线":"离线"),1)]),_:2},1032,["theme"])])])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(M,{flex:"none"},{default:o(()=>[t(B,{variant:"outline",onClick:m[1]||(m[1]=y=>_(Ie)("https://user.mslmc.net/frp/createTunnel"))},{default:o(()=>[...m[11]||(m[11]=[p(" 前往源站创建 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),v.value?(l(),G(q,{key:0,label:"节点详情"},{default:o(()=>[e("div",Cb,[e("div",Ab,[t(z,{size:"small",variant:"outline",theme:"primary"},{default:o(()=>[p(S(v.value.bandwidth)+"Mbps",1)]),_:1}),t(z,{size:"small",theme:v.value.need_real_name?"success":"warning"},{default:o(()=>[p(S(v.value.need_real_name?"需要实名认证":"无需实名认证"),1)]),_:1},8,["theme"]),t(z,{size:"small",theme:v.value.status===1?"success":"danger"},{default:o(()=>[p(" 节点状态:"+S(v.value.status===1?"在线":"离线"),1)]),_:1},8,["theme"])]),e("div",Sb,[e("pre",Ib,S(v.value.remarks||"此节点暂无备注"),1)])])]),_:1})):H("",!0),t(q,{label:"隧道类型"},{default:o(()=>[t(C,{modelValue:n.type,"onUpdate:modelValue":m[2]||(m[2]=y=>n.type=y)},{default:o(()=>[t(b,{label:"TCP",value:"tcp"}),v.value?.udp_support?(l(),G(b,{key:0,label:"UDP",value:"udp"})):H("",!0),v.value?.http_support?(l(),G(b,{key:1,label:"HTTP",value:"http"})):H("",!0),v.value?.http_support?(l(),G(b,{key:2,label:"HTTPS",value:"https"})):H("",!0)]),_:1},8,["modelValue"])]),_:1}),t(D,{gutter:[16,20]},{default:o(()=>[t(M,{xs:12,sm:6},{default:o(()=>[t(q,{label:"隧道名称"},{default:o(()=>[t(P,{modelValue:n.name,"onUpdate:modelValue":m[3]||(m[3]=y=>n.name=y)},null,8,["modelValue"])]),_:1})]),_:1}),t(M,{xs:12,sm:6},{default:o(()=>[t(q,{label:"远程端口"},{default:o(()=>[t(P,{modelValue:n.remotePort,"onUpdate:modelValue":m[4]||(m[4]=y=>n.remotePort=y)},{suffix:o(()=>[t(B,{variant:"text",size:"small",onClick:u},{default:o(()=>[...m[12]||(m[12]=[p("随机",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(M,{xs:12,sm:6},{default:o(()=>[t(q,{label:"本地IP"},{default:o(()=>[t(P,{modelValue:n.localIP,"onUpdate:modelValue":m[5]||(m[5]=y=>n.localIP=y)},null,8,["modelValue"])]),_:1})]),_:1}),t(M,{xs:12,sm:6},{default:o(()=>[t(q,{label:"本地端口"},{default:o(()=>[t(P,{modelValue:n.localPort,"onUpdate:modelValue":m[6]||(m[6]=y=>n.localPort=y)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),n.type.includes("http")?(l(),G(q,{key:1,label:"绑定域名",class:"mt-1"},{default:o(()=>[t(P,{modelValue:n.bindDomain,"onUpdate:modelValue":m[7]||(m[7]=y=>n.bindDomain=y),placeholder:"输入已解析的域名"},null,8,["modelValue"])]),_:1})):H("",!0),t(q,{label:"备注说明",class:"mt-1"},{default:o(()=>[t(P,{modelValue:n.remarks,"onUpdate:modelValue":m[8]||(m[8]=y=>n.remarks=y)},null,8,["modelValue"])]),_:1}),t(q,{label:"额外参数",class:"mt-1"},{default:o(()=>[t(j,{modelValue:n.extra_config,"onUpdate:modelValue":m[9]||(m[9]=y=>n.extra_config=y),autosize:{minRows:2},placeholder:"选填,高级配置参数(不懂请留空!!!)"},null,8,["modelValue"])]),_:1})]),_:1},8,["data"])]),_:1},8,["loading"])]),_:1},8,["visible","confirm-btn"])}}}),Ub={key:0,class:"min-h-[400px] flex flex-col"},Mb={class:"flex justify-between items-center mb-4 shrink-0"},Lb={class:"max-h-[500px] overflow-y-auto custom-scrollbar pr-1 flex flex-col gap-3"},Bb={key:0,class:"py-10"},Tb={class:"flex-1 overflow-hidden flex flex-col"},Rb={class:"text-base font-extrabold mb-1.5 truncate tracking-tight"},jb={class:"text-[var(--color-primary)]"},Pb={class:"text-[var(--td-text-color-secondary)]"},Eb={class:"flex items-center gap-2 mb-1.5"},Db=["title"],Fb={key:0,class:"text-xs text-[var(--color-success)] flex items-center gap-1 mt-0.5 truncate font-medium"},Ob={class:"truncate"},Nb={class:"font-mono font-extrabold"},Kb={class:"flex gap-1 ml-3 shrink-0 opacity-80 group-hover:opacity-100 transition-opacity"},qb={key:1,class:"pt-1 flex flex-col"},Hb={class:"mb-2 shrink-0"},Gb={class:"w-full px-3 py-2 bg-zinc-100/80 dark:bg-zinc-800/40 rounded-lg text-[13px] text-[var(--td-text-color-secondary)] whitespace-pre-wrap break-all leading-relaxed border border-dashed border-zinc-200 dark:border-zinc-700"},Wb={key:0,class:"text-[var(--td-text-color-secondary)] px-1.5 bg-zinc-100 dark:bg-zinc-800 mr-1 rounded font-mono text-xs flex items-center border border-zinc-200 dark:border-zinc-700"},Jb={class:"flex flex-col sm:flex-row gap-0 sm:gap-4 w-full"},Xb={class:"flex justify-end gap-3 mt-6 pt-4 border-t border-dashed border-zinc-200 dark:border-zinc-700"},Qb=ie({__name:"DomainManagerDialog",props:{visible:{type:Boolean},token:{},tunnels:{}},emits:["update:visible"],setup(s,{emit:a}){const r=s,d=a,i=h("list"),c=h("mc_srv"),f=h(!1),n=h(!1),v=h([]),I=h([]),u=h([]),L=h(null),w=qe({id:0,domain_id:void 0,name:"",type:"A",record:""}),A=te(()=>r.tunnels?r.tunnels.filter(V=>V.type&&V.type.toUpperCase()==="TCP"):[]),m=te(()=>{const V=I.value.find(y=>y.id===w.domain_id);return V?V.remark:""}),z=async()=>{if(r.token){f.value=!0;try{await Promise.all([b(),R(),C()])}catch(V){console.error(V)}finally{f.value=!1}}},b=async()=>{const V=await Q.get({url:"/api/domain/dns/list",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`}});V.code===200&&(v.value=V.data||[])},R=async()=>{const V=await Q.get({url:"/api/domain/list",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`}});V.code===200&&(I.value=V.data||[])},C=async()=>{try{const V=await Q.get({url:"/api/frp/nodeList",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`}});V.code===200&&(u.value=V.data||[])}catch(V){console.error("Fetch nodes failed",V)}},M=V=>{const y=r.tunnels.find($=>$.id===V);if(y){const $=u.value.find(F=>F.id===y.node_id),E=$?$.domain||$.ip:null;E?(w.record=`5 5 ${y.remote_port} ${E}`,U.success("已自动生成解析值")):(U.warning(`无法获取节点(ID:${y.node_id})地址,请手动填写`),w.record=`5 5 ${y.remote_port} 请输入节点地址`),w.type="SRV"}};ze(()=>{r.visible&&r.token&&z()}),_e(()=>r.visible,V=>{V&&(i.value="list",z())}),_e(I,V=>{V.length>0&&w.domain_id===void 0&&w.id===0&&(w.domain_id=V[0].id)});const B=V=>V.type!=="SRV"?"":`${V.name.replace("_minecraft._tcp.","")}.${V.domain}`,D=()=>{i.value="form",c.value="mc_srv",L.value=null,w.id=0,w.name="",w.type="SRV",w.record="",I.value.length>0&&(w.domain_id=I.value[0].id)},q=V=>{i.value="form",c.value="custom",w.id=V.id,w.domain_id=Number(V.domain_id),w.name=V.name,w.type=V.type,w.record=V.record},P=()=>{i.value="list"},j=async()=>{const V=w.type.toUpperCase()==="SRV"||c.value==="mc_srv",y=V?/^[a-zA-Z0-9._-]+$/:/^[a-zA-Z0-9]+$/;let $=w.name;if($.length<1)return U.warning("请输入子域名名称");if(!y.test($))return U.warning(V?"SRV支持英文、数字、下划线及点":"普通解析仅支持英文数字");c.value==="mc_srv"&&w.id===0&&($.startsWith("_minecraft._tcp.")||($="_minecraft._tcp."+$),w.type="SRV"),n.value=!0;const E=w.id!==0?"/api/domain/dns/edit":"/api/domain/dns/add";try{const F=await Q.post({url:E,baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`},data:{...w,name:$}});F.code===200?(U.success(F.msg||"操作成功"),await b(),i.value="list"):U.error(F.msg)}catch(F){U.error("请求失败: "+F.message)}finally{n.value=!1}},K=async V=>{const y=Ke.confirm({header:"确认删除",body:"确定要删除这条解析记录吗?删除后无法恢复。",onConfirm:async()=>{y.hide();try{const $=await Q.post({url:"/api/domain/dns/delete",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${r.token}`},data:{id:V}});$.code===200?(U.success("删除成功"),b()):U.error($.msg)}catch($){U.error($.message)}}})},k=()=>{d("update:visible",!1)};return(V,y)=>{const $=g("t-button"),E=g("t-empty"),F=g("t-tag"),J=g("t-tooltip"),O=g("t-loading"),N=g("t-tab-panel"),Y=g("t-tabs"),be=g("t-option"),ae=g("t-select"),me=g("t-form-item"),fe=g("t-input"),Se=g("t-form"),Me=g("t-dialog");return l(),G(Me,{visible:s.visible,header:i.value==="list"?"MSLFrp 免费子域名管理":w.id===0?"创建新解析":"编辑解析",width:"650px",attach:"body",footer:!1,onClose:k},{default:o(()=>[i.value==="list"?(l(),x("div",Ub,[e("div",Mb,[t($,{variant:"text",theme:"default",class:"!text-zinc-500 hover:!text-[var(--color-primary)]",onClick:y[0]||(y[0]=Z=>_(Ie)("https://www.mslmc.cn/docs/proxy/server-no-port/"))},{icon:o(()=>[t(_(ta))]),default:o(()=>[y[7]||(y[7]=p("查看文档 ",-1))]),_:1}),t($,{theme:"primary",class:"!rounded-lg !font-bold shadow-sm shadow-[var(--color-primary-light)]/30",onClick:D},{icon:o(()=>[t(_(ot))]),default:o(()=>[y[8]||(y[8]=p("新建解析 ",-1))]),_:1})]),t(O,{loading:f.value,text:"加载中..."},{default:o(()=>[e("div",Lb,[v.value.length===0?(l(),x("div",Bb,[t(E,{title:"暂无解析记录",description:"点击上方按钮创建一个吧"})])):H("",!0),(l(!0),x(le,null,ge(v.value,Z=>(l(),x("div",{key:Z.id,class:"group flex justify-between items-center bg-zinc-50/80 dark:bg-zinc-800/40 border border-zinc-200/80 dark:border-zinc-700/60 rounded-xl p-3 sm:p-4 transition-all duration-300 hover:border-[var(--color-primary)]/50 hover:bg-white dark:hover:bg-zinc-800 hover:shadow-sm"},[e("div",Tb,[e("div",Rb,[e("span",jb,S(Z.name),1),e("span",Pb,"."+S(Z.domain),1)]),e("div",Eb,[t(F,{size:"small",theme:Z.type==="SRV"?"warning":"primary",variant:"light",class:ce(["!rounded !font-bold !px-1.5 border",Z.type==="SRV"?"border-amber-500/20":"border-[var(--color-primary)]/20"])},{default:o(()=>[p(S(Z.type),1)]),_:2},1032,["theme","class"]),e("span",{class:"font-mono text-xs sm:text-[13px] font-bold text-zinc-700 dark:text-zinc-300 bg-zinc-200/50 dark:bg-zinc-900/50 border border-zinc-200 dark:border-zinc-700 px-1.5 py-0.5 rounded-md max-w-[200px] sm:max-w-[250px] truncate",title:Z.record},S(Z.record),9,Db)]),Z.type==="SRV"?(l(),x("div",Fb,[t(_(Bt),{class:"shrink-0"}),e("span",Ob,[y[9]||(y[9]=p("地址: ",-1)),e("strong",Nb,S(B(Z)),1)])])):H("",!0)]),e("div",Kb,[t(J,{content:"编辑"},{default:o(()=>[t($,{shape:"circle",variant:"text",class:"hover:!bg-zinc-200 dark:hover:!bg-zinc-700",onClick:se=>q(Z)},{icon:o(()=>[t(_(ao),{class:"text-zinc-600 dark:text-zinc-300"})]),_:1},8,["onClick"])]),_:2},1024),t(J,{content:"删除"},{default:o(()=>[t($,{shape:"circle",variant:"text",theme:"danger",class:"hover:!bg-red-500/10",onClick:se=>K(Z.id)},{icon:o(()=>[t(_(ct))]),_:1},8,["onClick"])]),_:2},1024)])]))),128))])]),_:1},8,["loading"])])):(l(),x("div",qb,[e("div",Hb,[t($,{variant:"text",size:"small",class:"!text-zinc-500 hover:!text-[var(--color-primary)] !rounded-md",onClick:P},{icon:o(()=>[t(_(oa))]),default:o(()=>[y[10]||(y[10]=p(" 返回列表 ",-1))]),_:1})]),w.id===0?(l(),G(Y,{key:0,modelValue:c.value,"onUpdate:modelValue":y[1]||(y[1]=Z=>c.value=Z),class:"!mb-4"},{default:o(()=>[t(N,{value:"mc_srv",label:"MC Java版隐藏端口"}),t(N,{value:"custom",label:"自定义解析"})]),_:1},8,["modelValue"])):H("",!0),t(Se,{"label-align":"top",data:w,class:"[&_.t-form__item]:!mb-5"},{default:o(()=>[t(me,{label:"选择域名后缀"},{default:o(()=>[t(ae,{modelValue:w.domain_id,"onUpdate:modelValue":y[2]||(y[2]=Z=>w.domain_id=Z),disabled:w.id!==0,placeholder:"请选择后缀",filterable:"",class:"!w-full"},{default:o(()=>[(l(!0),x(le,null,ge(I.value,Z=>(l(),G(be,{key:Z.id,value:Z.id,label:Z.domain},{default:o(()=>[p(S(Z.domain),1)]),_:2},1032,["value","label"]))),128))]),_:1},8,["modelValue","disabled"])]),_:1}),m.value?(l(),G(me,{key:0,label:"备注",class:"!mb-4"},{default:o(()=>[e("div",Gb,S(m.value),1)]),_:1})):H("",!0),t(me,{label:"子域名称"},{help:o(()=>[...y[11]||(y[11]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"起一个你喜欢的前缀即可。",-1)])]),default:o(()=>[t(fe,{modelValue:w.name,"onUpdate:modelValue":y[3]||(y[3]=Z=>w.name=Z),placeholder:"例如: myserver",class:"!w-full"},{"prefix-icon":o(()=>[c.value==="mc_srv"&&w.id===0?(l(),x("span",Wb," _minecraft._tcp. ")):H("",!0)]),_:1},8,["modelValue"])]),_:1}),c.value==="mc_srv"&&w.id===0?(l(),G(me,{key:1,label:"选择隧道 (自动生成解析值)"},{default:o(()=>[t(ae,{modelValue:L.value,"onUpdate:modelValue":y[4]||(y[4]=Z=>L.value=Z),placeholder:"点击选择已有的 TCP 隧道",onChange:M,class:"!w-full"},{default:o(()=>[(l(!0),x(le,null,ge(A.value,Z=>(l(),G(be,{key:Z.id,value:Z.id,label:`${Z.name} (端口: ${Z.remote_port})`},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])]),_:1})):H("",!0),e("div",Jb,[t(me,{label:"记录类型",class:"flex-1"},{default:o(()=>[t(ae,{modelValue:w.type,"onUpdate:modelValue":y[5]||(y[5]=Z=>w.type=Z),class:"!w-full"},{default:o(()=>[t(be,{label:"A (IPv4)",value:"A"}),t(be,{label:"CNAME (别名)",value:"CNAME"}),t(be,{label:"AAAA (IPv6)",value:"AAAA"}),t(be,{label:"SRV (服务记录)",value:"SRV"})]),_:1},8,["modelValue"])]),_:1}),t(me,{label:"解析记录值",class:"flex-1"},{default:o(()=>[t(fe,{modelValue:w.record,"onUpdate:modelValue":y[6]||(y[6]=Z=>w.record=Z),placeholder:"例: 5 5 25565 node.mslmc.net",class:"!w-full !font-mono"},null,8,["modelValue"])]),_:1})]),e("div",Xb,[t($,{theme:"default",variant:"base",class:"!bg-zinc-100 dark:!bg-zinc-800 !border-none !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 !rounded-lg !font-bold",onClick:P},{default:o(()=>[...y[12]||(y[12]=[p("取消",-1)])]),_:1}),t($,{theme:"primary",loading:n.value,class:"!rounded-lg !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50",onClick:j},{default:o(()=>[p(S(w.id===0?"立即创建":"保存修改"),1)]),_:1},8,["loading"])])]),_:1},8,["data"])]))]),_:1},8,["visible","header"])}}}),Yb=ue(Qb,[["__scopeId","data-v-d3ff2a1d"]]),Zb={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},ex={key:0,class:"flex items-center justify-center min-h-[70vh] list-item-anim"},tx={class:"design-card relative w-full max-w-md bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-xl p-10 text-center overflow-hidden"},ox={class:"relative z-10 flex flex-col items-center"},sx={class:"w-full flex flex-col gap-4"},ax={key:1,id:"app-space",class:"relative flex flex-col gap-6"},lx={key:0,class:"design-card list-item-anim bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-5 sm:p-6",style:{"animation-delay":"0s"}},rx={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},nx={class:"flex items-center gap-2"},ix={class:"grid grid-cols-2 lg:grid-cols-4 gap-4"},dx={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},cx={class:"flex items-center gap-2"},ux={class:"text-lg font-bold text-[var(--td-text-color-primary)] truncate"},mx={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},px={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},vx={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},fx={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},bx={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},xx={class:"text-[15px] font-bold text-[var(--td-text-color-primary)] font-mono mt-0.5"},gx={class:"grid grid-cols-1 lg:grid-cols-12 gap-6 items-start"},hx={class:"lg:col-span-5 xl:col-span-4 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.1s"}},yx={class:"flex items-center justify-between p-4 sm:p-5 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},_x={class:"flex items-center gap-1"},wx={class:"flex-1 overflow-y-auto custom-scrollbar p-3"},kx={key:0,class:"flex flex-col gap-2"},$x=["onClick"],zx={class:"flex-1 min-w-0 mr-3"},Cx={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},Ax={class:"shrink-0"},Sx={key:1,class:"h-full flex flex-col items-center justify-center opacity-60"},Ix={class:"lg:col-span-7 xl:col-span-8 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.2s"}},Vx={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 sm:p-6 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},Ux={class:"flex flex-col min-w-0"},Mx={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] m-0 truncate"},Lx={class:"text-xs text-[var(--td-text-color-secondary)] mt-1 truncate"},Bx={class:"shrink-0"},Tx={class:"flex-1 overflow-y-auto custom-scrollbar p-5 sm:p-6"},Rx={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"},jx={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},Px=["title"],Ex={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},Dx={class:"text-sm font-bold text-[var(--color-primary)] uppercase tracking-wide"},Fx={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},Ox={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},Nx={class:"p-4 bg-emerald-50/50 dark:bg-emerald-900/20 rounded-xl border border-emerald-200/50 dark:border-emerald-800/30 flex flex-col justify-center"},Kx={class:"text-lg font-mono font-extrabold text-emerald-600 dark:text-emerald-400"},qx={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},Hx={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},Gx={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},Wx={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},Jx={class:"mt-8"},Xx={key:1,class:"flex-1 flex flex-col items-center justify-center opacity-50 p-6 text-center"},Qx={class:"w-24 h-24 bg-zinc-100 dark:bg-zinc-800 rounded-full flex items-center justify-center mb-4"},Yx=ie({__name:"index",setup(s){const a=h(!1),r=h(!1),d=()=>{R()},i=h("tKYvKk48Sq5kGAy12IJQxLEKhXx"),c=h(null),f=h(""),n=h(!1),v=h(null),I=h([]),u=h({}),L=h(null),w=te(()=>I.value.find(K=>K.id===L.value)||null),A=te(()=>w.value?u.value[w.value.node_id]||`未知节点 (${w.value.node_id})`:"");ze(()=>{const K=localStorage.getItem("msl-user-token");K&&(f.value=K,R())}),He(()=>{c.value&&!c.value.closed&&c.value.close()});async function m(){U.info("正在跳转至MSL用户中心登录...");try{const K=Xt(32),k=await Q.post({url:"/api/oauth/createAppLogin",baseURL:"https://user.mslmc.net",data:{appid:i.value,csrf:K}});k.data.ssid?(c.value=wb(k.data.url,"登录到您的MSL账户",600,600),setTimeout(()=>z(K,k.data.ssid),1e3)):U.error(k.msg)}catch(K){U.error(K.message)}}async function z(K,k){if(!c.value?.closed){try{const V=await Q.get({url:"/api/oauth/appLogin",baseURL:"https://user.mslmc.net",params:{csrf:K,ssid:k}});if(V.data.token){c.value&&c.value.close(),U.success("登录成功"),f.value=V.data.token,localStorage.setItem("msl-user-token",V.data.token),R();return}}catch(V){U.error("登录失败!"+V.message);return}setTimeout(()=>z(K,k),1e3)}}const b=K=>{if(K===0)return"0 B";const k=1024,V=["B","KB","MB","GB","TB"],y=Math.floor(Math.log(K)/Math.log(k));return parseFloat((K/Math.pow(k,y)).toFixed(2))+" "+V[y]};async function R(){n.value=!0;try{const[K,k]=await Promise.all([Q.get({url:"/api/frp/userInfo",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${f.value}`}}),Q.get({url:"/api/frp/nodeList",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${f.value}`}})]);if(K.code===200)v.value=K.data;else{U.warning("登录已过期,请重新登录~"),f.value="",localStorage.removeItem("msl-user-token");return}if(k.code===200){const y={};k.data.forEach($=>{y[$.id]=$.node}),u.value=y}const V=await Q.get({url:"/api/frp/getTunnelList",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${f.value}`}});V.code===200&&(I.value=V.data,I.value.length>0&&(L.value=I.value[0].id))}catch(K){U.error("数据加载失败: "+K.message)}finally{n.value=!1}}const C=h(!1);async function M(){if(w.value){C.value=!0;try{const K=await Q.get({url:"/api/frp/getTunnelConfig",baseURL:"https://user.mslmc.net",params:{id:w.value.id},headers:{Authorization:`Bearer ${f.value}`}});K.code===200?await Jt(`${w.value.name} | ${A.value}`,K.data,"MSLFrp"):U.error(K.msg)}catch(K){U.error("获取配置失败: "+K.message)}C.value=!1}}const B=()=>{r.value=!0};async function D(){try{await Q.get({url:"/api/user/logout",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${f.value}`}}),f.value="",v.value=null,I.value=[],localStorage.removeItem("msl-user-token"),U.success("已退出登录")}catch(K){U.error("退出失败: "+K.message)}}async function q(){await R(),U.success("数据已更新")}const P=h(!1);async function j(){if(w.value){P.value=!0;try{const K=await Q.post({url:"/api/frp/deleteTunnel",baseURL:"https://user.mslmc.net",data:{id:w.value.id},headers:{Authorization:`Bearer ${f.value}`}});K.code===200?(U.success("隧道删除成功"),L.value=null,await R()):U.error(K.msg||"删除失败")}catch(K){U.error("操作失败: "+K.message)}finally{P.value=!1}}}return(K,k)=>{const V=g("t-button"),y=g("t-loading"),$=g("t-tag"),E=g("t-popconfirm"),F=g("t-icon");return l(),x("div",Zb,[f.value===""?(l(),x("div",ex,[e("div",tx,[k[11]||(k[11]=e("div",{class:"absolute -top-20 -right-20 w-60 h-60 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),k[12]||(k[12]=e("div",{class:"absolute -bottom-10 -left-10 w-40 h-40 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),e("div",ox,[k[8]||(k[8]=e("div",{class:"w-20 h-20 rounded-2xl flex items-center justify-center mb-6 shadow-sm"},[e("img",{src:"https://user.mslmc.net/assets/png/msl-user-msl-user-logo-512-transparent-BjXu1GPW.png",alt:"msl-user-logo",class:"text-[var(--color-primary)]"})],-1)),k[9]||(k[9]=e("h2",{class:"text-2xl font-extrabold text-[var(--td-text-color-primary)] !mb-2 tracking-tight"},"欢迎登录 MSLFrp",-1)),k[10]||(k[10]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] !mb-8 font-medium"},"登录您的 MSL 账户以使用内网穿透服务",-1)),e("div",sx,[t(V,{block:"",theme:"primary",size:"large",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50",onClick:m},{icon:o(()=>[t(_(mo))]),default:o(()=>[k[6]||(k[6]=p(" 跳转用户中心登录 ",-1))]),_:1}),t(V,{theme:"default",variant:"outline",block:"",size:"large",class:"!rounded-xl !h-12 !font-bold !bg-white/50 dark:!bg-zinc-900/50 !border-zinc-200 dark:!border-zinc-700 hover:!text-[var(--color-primary)] hover:!border-[var(--color-primary)]/50 !ml-0",onClick:k[0]||(k[0]=J=>_(Ie)("https://user.mslmc.net/register"))},{icon:o(()=>[t(_(vl))]),default:o(()=>[k[7]||(k[7]=p(" 注册 MSL 账户 ",-1))]),_:1})])])])])):(l(),x("div",ax,[t(y,{attach:"#app-space",loading:n.value,text:"加载数据中..."},null,8,["loading"]),v.value?(l(),x("div",lx,[e("div",rx,[k[16]||(k[16]=e("div",{class:"flex flex-col"},[e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"MSLFrp 用户信息")],-1)),e("div",nx,[t(V,{variant:"outline",theme:"success",size:"small",class:"!rounded-lg hover:!bg-[var(--color-success)]/10",onClick:k[1]||(k[1]=J=>_(Ie)("https://user.mslmc.net/store/buy"))},{default:o(()=>[...k[13]||(k[13]=[p("订阅会员服务",-1)])]),_:1}),t($,{theme:"primary",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[p(S(v.value.user_group_name),1)]),_:1}),k[15]||(k[15]=e("div",{class:"w-px h-4 bg-zinc-200 dark:bg-zinc-700 mx-1"},null,-1)),t(E,{content:"确认退出登录吗?",onConfirm:D},{default:o(()=>[t(V,{variant:"text",theme:"danger",size:"small",class:"!rounded-lg hover:!bg-red-500/10"},{default:o(()=>[...k[14]||(k[14]=[p("退出登录",-1)])]),_:1})]),_:1})])]),e("div",ix,[e("div",dx,[k[17]||(k[17]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"用户昵称",-1)),e("div",cx,[e("span",ux,S(v.value.name),1),t($,{theme:v.value.realNameStatus?"success":"warning",variant:"light",size:"small",class:"!rounded cursor-pointer !font-bold !px-1.5",onClick:k[2]||(k[2]=J=>_(Ie)("https://user.mslmc.net/user/profile"))},{default:o(()=>[p(S(v.value.realNameStatus?"已实名":"未实名"),1)]),_:1},8,["theme"])])]),e("div",mx,[k[19]||(k[19]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"隧道限额",-1)),e("div",px,[p(S(v.value.maxTunnelCount)+" ",1),k[18]||(k[18]=e("span",{class:"text-sm font-medium text-zinc-500"},"条",-1))])]),e("div",vx,[k[21]||(k[21]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"速率限制",-1)),e("div",fx,[p(S(v.value.boundLimit/1024*8)+" ",1),k[20]||(k[20]=e("span",{class:"text-sm font-medium text-zinc-500"},"Mbps",-1))])]),e("div",bx,[k[22]||(k[22]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"会员到期时间",-1)),e("div",xx,S(v.value.outdated===3749682420?"长期有效":_(Ma)(v.value.outdated)),1)])])])):H("",!0),e("div",gx,[e("div",hx,[e("div",yx,[k[26]||(k[26]=e("h3",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"我的隧道",-1)),e("div",_x,[t(V,{size:"small",variant:"text",class:"!px-2 hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50",loading:n.value,onClick:q},{icon:o(()=>[t(_(Ee))]),default:o(()=>[k[23]||(k[23]=p("刷新 ",-1))]),_:1},8,["loading"]),t(V,{size:"small",variant:"text",class:"!px-2 hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)]",onClick:k[3]||(k[3]=J=>a.value=!0)},{icon:o(()=>[t(_(bt))]),default:o(()=>[k[24]||(k[24]=p("子域名 ",-1))]),_:1}),t(V,{size:"small",theme:"primary",class:"!px-3 !ml-1 !rounded-lg",onClick:B},{icon:o(()=>[t(_(ot))]),default:o(()=>[k[25]||(k[25]=p("新建 ",-1))]),_:1})])]),e("div",wx,[I.value.length>0?(l(),x("div",kx,[(l(!0),x(le,null,ge(I.value,J=>(l(),x("div",{key:J.id,class:ce(["group flex items-center p-3 rounded-xl cursor-pointer transition-all duration-300 border",L.value===J.id?"bg-[var(--color-primary)]/10 border-[var(--color-primary)]/30 shadow-sm":"bg-transparent border-transparent hover:bg-zinc-50 dark:hover:bg-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600"]),onClick:O=>L.value=J.id},[e("div",{class:ce(["w-10 h-10 rounded-lg flex items-center justify-center shrink-0 mr-3 transition-colors",L.value===J.id?"bg-[var(--color-primary)] text-white shadow-md shadow-[var(--color-primary)]/30":"bg-zinc-100 dark:bg-zinc-900 text-[var(--td-text-color-secondary)] group-hover:text-zinc-800 dark:group-hover:text-zinc-200"])},[t(_(at),{size:"20px"})],2),e("div",zx,[e("div",{class:ce(["font-bold text-sm truncate transition-colors",L.value===J.id?"text-[var(--color-primary)]":"text-[var(--td-text-color-primary)]"])},S(J.name),3),e("div",Cx,S(u.value[J.node_id]||`Node ${J.node_id}`),1)]),e("div",Ax,[J.status===1?(l(),G($,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5"},{default:o(()=>[...k[27]||(k[27]=[p("在线",-1)])]),_:1})):(l(),G($,{key:1,theme:"default",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5 !text-zinc-500"},{default:o(()=>[...k[28]||(k[28]=[p("未启动",-1)])]),_:1}))])],10,$x))),128))])):(l(),x("div",Sx,[t(_(at),{size:"32px",class:"text-zinc-400 mb-2"}),k[29]||(k[29]=e("span",{class:"text-sm text-zinc-500 font-medium"},"暂无隧道,请先新建",-1))]))])]),e("div",Ix,[w.value?(l(),x(le,{key:0},[e("div",Vx,[e("div",Ux,[e("h3",Mx,S(w.value.name),1),e("p",Lx,S(w.value.remarks||"暂无备注"),1)]),e("div",Bx,[t(E,{content:"确认删除此隧道吗?将无法恢复!",theme:"danger",placement:"bottom-right",onConfirm:j},{default:o(()=>[t(V,{theme:"danger",class:"!rounded-lg hover:!bg-red-500 hover:!text-white transition-colors",loading:P.value},{icon:o(()=>[t(F,{name:"delete"})]),default:o(()=>[k[30]||(k[30]=p(" 删除隧道 ",-1))]),_:1},8,["loading"])]),_:1})])]),e("div",Tx,[e("div",Rx,[e("div",jx,[k[31]||(k[31]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"所在节点",-1)),e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate",title:A.value},S(A.value),9,Px)]),e("div",Ex,[k[32]||(k[32]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"协议类型",-1)),e("span",Dx,S(w.value.type),1)]),e("div",Fx,[k[33]||(k[33]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"本地地址",-1)),e("span",Ox,S(w.value.local_ip)+":"+S(w.value.local_port),1)]),e("div",Nx,[k[34]||(k[34]=e("span",{class:"text-[11px] font-extrabold text-emerald-600/80 dark:text-emerald-500/80 uppercase tracking-widest mb-1.5"},"远程公网端口",-1)),e("span",Kx,S(w.value.remote_port),1)]),e("div",qx,[k[35]||(k[35]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"今日流量",-1)),e("span",Hx,S(b(w.value.today_traffic*1024*1024)),1)]),e("div",Gx,[k[36]||(k[36]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"总流量",-1)),e("span",Wx,S(b(w.value.total_traffic*1024*1024)),1)])]),e("div",Jx,[t(V,{theme:"primary",size:"large",loading:C.value,block:"",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow text-base",onClick:M},{icon:o(()=>[t(_(_t))]),default:o(()=>[k[37]||(k[37]=p(" 使用此隧道 ",-1))]),_:1},8,["loading"])])])],64)):(l(),x("div",Xx,[e("div",Qx,[t(_(bt),{size:"40px",class:"text-zinc-400"})]),k[38]||(k[38]=e("h3",{class:"text-base font-bold text-zinc-700 dark:text-zinc-300 mb-1"},"未选择隧道",-1)),k[39]||(k[39]=e("p",{class:"text-sm text-zinc-500"},"请在左侧列表中选择一个隧道以查看详细信息和连接参数",-1))]))])])])),r.value?(l(),G(Vb,{key:2,visible:r.value,"onUpdate:visible":k[4]||(k[4]=J=>r.value=J),token:f.value,onSuccess:d},null,8,["visible","token"])):H("",!0),a.value?(l(),G(Yb,{key:3,visible:a.value,"onUpdate:visible":k[5]||(k[5]=J=>a.value=J),token:f.value,tunnels:I.value},null,8,["visible","token","tunnels"])):H("",!0)])}}}),Zx=ue(Yx,[["__scopeId","data-v-8adb5690"]]);async function eg(){return await Q.get({url:"/query/p2p_server",baseURL:"https://api.mslmc.cn/v3"})}const tg={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6 sm:p-8"},og={class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},sg={key:0},ag={key:1},lg={class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},rg={key:0},ng={key:1},ig={class:"flex items-center gap-3 w-full sm:w-[28rem]"},dg={class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},cg={key:0},ug={key:1},mg={class:"mt-8 pt-5 border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60"},pg=ie({__name:"MSLP2P",setup(s){const a=qe({roomId:"",roomKey:"",bindPort:25565,isHoster:!0}),r={roomId:[{required:!0,message:"请输入房间号",type:"error"}],roomKey:[{required:!0,message:"请输入房间密钥",type:"error"}],bindPort:[{required:!0,message:"请输入绑定端口",type:"error"}]},d=async({validateResult:c})=>{c===!0?await i(a.isHoster,a.roomId,a.roomKey,a.bindPort):U.warning("请检查参数是否全部填写完成!")};async function i(c,f,n,v){try{const I=await eg();let u;c?u=`serverAddr = "${I.ip}" -serverPort = ${I.port} - -[[proxies]] -name = "${f}" -type = "xtcp" -secretKey = "${n}" -localIP = "127.0.0.1" -localPort = ${v}`:u=`serverAddr = "${I.ip}" -serverPort = ${I.port} - -[[visitors]] -name = "p2p_visitor" -type = "xtcp" -serverName = "${f}" -secretKey = "${n}" -bindAddr = "127.0.0.1" -bindPort = ${v}`,await Jt(c?`「联机 - 房主」${f}`:`「联机 - 访客」${f}`,u,"MSL P2P")}catch(I){U.error(`创建联机隧道失败!${I.message}`)}}return(c,f)=>{const n=g("t-radio-button"),v=g("t-radio-group"),I=g("t-form-item"),u=g("t-input"),L=g("t-button"),w=g("t-form");return l(),x("div",null,[e("div",tg,[f[9]||(f[9]=e("div",{class:"mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},[e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"MSL P2P 联机隧道")],-1)),t(w,{data:a,rules:r,"label-align":"top","reset-type":"initial",onSubmit:d},{default:o(()=>[t(I,{label:"请选择联机类型",name:"isHoster"},{default:o(()=>[t(v,{modelValue:a.isHoster,"onUpdate:modelValue":f[0]||(f[0]=A=>a.isHoster=A),variant:"default-filled"},{default:o(()=>[t(n,{value:!0},{default:o(()=>[...f[5]||(f[5]=[p("创建房间 - 房主",-1)])]),_:1}),t(n,{value:!1},{default:o(()=>[...f[6]||(f[6]=[p("加入房间 - 成员",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(I,{label:"房间号",name:"roomId"},{help:o(()=>[e("span",og,[a.isHoster?(l(),x("span",sg,"建议填写您的 QQ 号码。")):(l(),x("span",ag,"请输入房间创建者提供的房间号。"))])]),default:o(()=>[t(u,{modelValue:a.roomId,"onUpdate:modelValue":f[1]||(f[1]=A=>a.roomId=A),placeholder:"请输入房间号",class:"!w-full sm:!w-96"},null,8,["modelValue"])]),_:1}),t(I,{label:"房间密钥",name:"roomKey"},{help:o(()=>[e("span",lg,[a.isHoster?(l(),x("span",rg,"随便写一个你喜欢的密钥。")):(l(),x("span",ng,"请输入房间创建者提供的密钥。"))])]),default:o(()=>[e("div",ig,[t(u,{modelValue:a.roomKey,"onUpdate:modelValue":f[2]||(f[2]=A=>a.roomKey=A),placeholder:"请输入房间密钥",class:"!flex-1"},null,8,["modelValue"]),t(Rt,{name:"fade"},{default:o(()=>[a.isHoster?(l(),G(L,{key:0,theme:"default",variant:"base",class:"shrink-0 !bg-zinc-100 dark:!bg-zinc-800/80 !border-none !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 !rounded-lg",onClick:f[3]||(f[3]=A=>{a.roomKey=_(Xt)(16)})},{default:o(()=>[...f[7]||(f[7]=[p(" 随机生成 ",-1)])]),_:1})):H("",!0)]),_:1})])]),_:1}),t(I,{label:"绑定端口",name:"bindPort"},{help:o(()=>[e("span",dg,[a.isHoster?(l(),x("span",cg,"请输入游戏内提示的开放联机端口。")):(l(),x("span",ug,"建议保持默认。"))])]),default:o(()=>[t(u,{modelValue:a.bindPort,"onUpdate:modelValue":f[4]||(f[4]=A=>a.bindPort=A),placeholder:"请输入绑定端口",class:"!w-full sm:!w-96"},null,8,["modelValue"])]),_:1}),e("div",mg,[t(L,{theme:"primary",type:"submit",class:"!rounded-xl !font-bold !px-8 shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[...f[8]||(f[8]=[p("添加隧道",-1)])]),_:1})])]),_:1},8,["data"])])])}}}),vg=ue(pg,[["__scopeId","data-v-31ad130e"]]),fg={class:"flex justify-between items-center w-full"},bg={class:"truncate"},xg={class:"flex gap-1.5 shrink-0 ml-3"},gg={class:"w-full flex flex-col gap-2.5"},hg={class:"bg-[var(--td-bg-color-secondarycontainer)] rounded-[var(--td-radius-medium)] p-3 border border-dashed border-[var(--td-component-border)]"},yg={class:"m-0 whitespace-pre-wrap break-all text-[13px] text-[var(--td-text-color-primary)] leading-[1.6]"},_g=ie({__name:"CreateTunnelDialog",props:{visible:{type:Boolean},token:{}},emits:["update:visible","success"],setup(s,{emit:a}){const r=s,d=a,i=h(!1),c=h(!1),f=h([]),n=qe({nodeId:null,proxyType:"tcp",localIp:"127.0.0.1",localPort:"25565",remotePort:"",proxyName:"",domain:""}),v=te(()=>f.value.find(A=>A.nodeId===n.nodeId)||null),I=te(()=>{const A=new Map;return f.value.forEach(m=>{const z=m.region||"unknown";if(!A.has(z)){let b=z;z==="oversea"?b="海外节点":z==="cn"?b="国内节点":b="默认节点",A.set(z,{label:b,value:z,children:[]})}A.get(z).children.push(m)}),Array.from(A.values())}),u=()=>{n.remotePort=(Math.floor(Math.random()*55536)+1e4).toString(),n.proxyName="MSLX_"+Xt(6)},L=async()=>{i.value=!0;try{const A=await Q.get({url:"/auth/node/list",baseURL:"https://api.mefrp.com/api",headers:{Authorization:`Bearer ${r.token}`}},{withToken:!1});A&&(f.value=A.filter(m=>!m.isDisabled),r.visible&&f.value.length>0&&!n.nodeId&&(n.nodeId=f.value[0].nodeId,u()))}catch(A){U.error("加载节点失败: "+A.message)}finally{i.value=!1}};_e(()=>r.visible,A=>{A&&(f.value.length>0?(n.nodeId||(n.nodeId=f.value[0].nodeId),u()):L())});const w=async()=>{if(!n.nodeId){U.warning("请选择一个节点");return}c.value=!0;try{await Q.post({url:"/auth/proxy/create",baseURL:"https://api.mefrp.com/api",headers:{Authorization:`Bearer ${r.token}`},data:{accessKey:"",headerXFromWhere:"",hostHeaderRewrite:"",proxyProtocolVersion:"",nodeId:n.nodeId,proxyName:n.proxyName,proxyType:n.proxyType,localIp:n.localIp,localPort:parseInt(n.localPort),remotePort:parseInt(n.remotePort),domain:n.domain,useCompression:!1,useEncryption:!1}},{withToken:!1}),U.success(`隧道 ${n.proxyName} 创建成功!`),d("success"),d("update:visible",!1)}catch(A){U.error("创建异常: "+A.message)}finally{c.value=!1}};return ze(()=>{r.token&&L()}),(A,m)=>{const z=g("t-tag"),b=g("t-option"),R=g("t-option-group"),C=g("t-select"),M=g("t-form-item"),B=g("t-input"),D=g("t-col"),q=g("t-button"),P=g("t-row"),j=g("t-form"),K=g("t-loading"),k=g("t-dialog");return l(),G(k,{attach:"body",visible:s.visible,header:"新建 ME Frp 隧道",width:"580px","confirm-btn":{content:"提交创建",loading:c.value},onConfirm:w,onClose:m[7]||(m[7]=V=>d("update:visible",!1))},{default:o(()=>[t(K,{loading:i.value},{default:o(()=>[t(j,{data:n,"label-align":"right","label-width":100,class:"pt-2.5 overflow-x-hidden [&_.t-form__item]:!mb-[22px]"},{default:o(()=>[t(M,{label:"选择节点",name:"nodeId"},{default:o(()=>[t(C,{modelValue:n.nodeId,"onUpdate:modelValue":m[0]||(m[0]=V=>n.nodeId=V),placeholder:"请选择节点",onChange:u},{default:o(()=>[(l(!0),x(le,null,ge(I.value,V=>(l(),G(R,{key:V.value,label:V.label},{default:o(()=>[(l(!0),x(le,null,ge(V.children,y=>(l(),G(b,{key:y.nodeId,value:y.nodeId,label:y.name},{default:o(()=>[e("div",fg,[e("span",bg,S(y.name),1),e("div",xg,[t(z,{size:"small",variant:"outline",theme:"primary"},{default:o(()=>[p(S(y.bandwidth||"未知带宽"),1)]),_:2},1024),t(z,{size:"small",theme:y.isOnline?"success":"danger"},{default:o(()=>[p(S(y.isOnline?"在线":"离线"),1)]),_:2},1032,["theme"])])])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),v.value?(l(),G(M,{key:0,label:"节点详情"},{default:o(()=>[e("div",gg,[e("div",hg,[e("pre",yg,S(v.value.description||"此节点暂无备注"),1)])])]),_:1})):H("",!0),t(M,{label:"隧道类型"},{default:o(()=>[t(C,{modelValue:n.proxyType,"onUpdate:modelValue":m[1]||(m[1]=V=>n.proxyType=V)},{default:o(()=>[v.value?.allowType.includes("tcp")?(l(),G(b,{key:0,label:"TCP",value:"tcp"})):H("",!0),v.value?.allowType.includes("udp")?(l(),G(b,{key:1,label:"UDP",value:"udp"})):H("",!0),v.value?.allowType.includes("http")?(l(),G(b,{key:2,label:"HTTP",value:"http"})):H("",!0),v.value?.allowType.includes("https")?(l(),G(b,{key:3,label:"HTTPS",value:"https"})):H("",!0)]),_:1},8,["modelValue"])]),_:1}),t(P,{gutter:[16,20]},{default:o(()=>[t(D,{xs:12,sm:6},{default:o(()=>[t(M,{label:"隧道名称"},{default:o(()=>[t(B,{modelValue:n.proxyName,"onUpdate:modelValue":m[2]||(m[2]=V=>n.proxyName=V)},null,8,["modelValue"])]),_:1})]),_:1}),t(D,{xs:12,sm:6},{default:o(()=>[t(M,{label:"远程端口"},{default:o(()=>[t(B,{modelValue:n.remotePort,"onUpdate:modelValue":m[3]||(m[3]=V=>n.remotePort=V)},{suffix:o(()=>[t(q,{variant:"text",size:"small",onClick:u},{default:o(()=>[...m[8]||(m[8]=[p("随机",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(D,{xs:12,sm:6},{default:o(()=>[t(M,{label:"本地IP"},{default:o(()=>[t(B,{modelValue:n.localIp,"onUpdate:modelValue":m[4]||(m[4]=V=>n.localIp=V)},null,8,["modelValue"])]),_:1})]),_:1}),t(D,{xs:12,sm:6},{default:o(()=>[t(M,{label:"本地端口"},{default:o(()=>[t(B,{modelValue:n.localPort,"onUpdate:modelValue":m[5]||(m[5]=V=>n.localPort=V)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),n.proxyType.includes("http")?(l(),G(M,{key:1,label:"绑定域名",class:"mt-1"},{default:o(()=>[t(B,{modelValue:n.domain,"onUpdate:modelValue":m[6]||(m[6]=V=>n.domain=V),placeholder:"输入绑定的域名"},null,8,["modelValue"])]),_:1})):H("",!0)]),_:1},8,["data"])]),_:1},8,["loading"])]),_:1},8,["visible","confirm-btn"])}}}),wg={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},kg={key:0,class:"flex items-center justify-center min-h-[70vh] list-item-anim"},$g={class:"design-card relative w-full max-w-md bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-xl p-10 text-center overflow-hidden"},zg={class:"relative z-10 flex flex-col items-center"},Cg={class:"mt-6 pt-4 border-t border-dashed border-zinc-200 dark:border-zinc-700 w-full"},Ag={key:1,id:"app-space",class:"relative flex flex-col gap-6"},Sg={key:0,class:"design-card list-item-anim bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-5 sm:p-6",style:{"animation-delay":"0s"}},Ig={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},Vg={class:"flex items-center gap-2"},Ug={class:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Mg={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Lg={class:"flex items-center gap-2"},Bg={class:"text-lg font-bold text-[var(--td-text-color-primary)] truncate"},Tg={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Rg={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},jg={class:"text-[var(--color-primary)]"},Pg={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Eg={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},Dg={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Fg={class:"text-[15px] font-bold text-[var(--color-success)] font-mono mt-0.5"},Og={class:"grid grid-cols-1 lg:grid-cols-12 gap-6 items-start"},Ng={class:"lg:col-span-5 xl:col-span-4 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.1s"}},Kg={class:"flex items-center justify-between p-4 sm:p-5 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},qg={class:"flex items-center gap-1"},Hg={class:"flex-1 overflow-y-auto custom-scrollbar p-3"},Gg={key:0,class:"flex flex-col gap-2"},Wg=["onClick"],Jg={class:"flex-1 min-w-0 mr-3"},Xg={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},Qg={class:"shrink-0"},Yg={key:1,class:"h-full flex flex-col items-center justify-center opacity-60"},Zg={class:"lg:col-span-7 xl:col-span-8 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.2s"}},eh={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 sm:p-6 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},th={class:"flex flex-col min-w-0"},oh={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] m-0 truncate"},sh={class:"text-xs text-[var(--td-text-color-secondary)] mt-1 truncate font-mono bg-zinc-100 dark:bg-zinc-800/50 w-max px-2 py-0.5 rounded"},ah={class:"shrink-0"},lh={class:"flex-1 overflow-y-auto custom-scrollbar p-5 sm:p-6"},rh={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 gap-4"},nh={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},ih=["title"],dh={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},ch={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},uh={class:"p-4 bg-emerald-50/50 dark:bg-emerald-900/20 rounded-xl border border-emerald-200/50 dark:border-emerald-800/30 flex flex-col justify-center"},mh={class:"text-lg font-mono font-extrabold text-emerald-600 dark:text-emerald-400"},ph={class:"flex items-center gap-2"},vh={key:0,class:"w-2 h-2 rounded-full bg-[var(--color-success)] animate-pulse"},fh={class:"mt-8"},bh={key:1,class:"flex-1 flex flex-col items-center justify-center opacity-50 p-6 text-center"},xh={class:"w-24 h-24 bg-zinc-100 dark:bg-zinc-800 rounded-full flex items-center justify-center mb-4"},gh=ie({__name:"index",setup(s){const a=h(!1),r=h(""),d=h(!1),i=h(null),c=h([]),f=h({}),n=h(null),v=h("password"),I=h({username:"",password:"",captchaCallback:"",token:""}),u=h(!1),L=()=>{C()},w=te(()=>c.value.find(V=>V.proxyId===n.value)||null),A=te(()=>w.value?f.value[w.value.nodeId]||`节点 (${w.value.nodeId})`:"");ze(()=>{const V=localStorage.getItem("mefrp-user-token");V&&(r.value=V,C())});const m=()=>{const $=(window.screen.width-500)/2,E=(window.screen.height-600)/2;window.open("https://www.mefrp.com/3rdparty/captcha?client=MSLX","MEFrpCaptcha",`width=500,height=600,left=${$},top=${E},resizable=yes,scrollbars=yes,status=no,toolbar=no,menubar=no,location=no`),U.info("请在弹出的独立窗口中完成验证,并将获取到的验证码粘贴到下方")};async function z(){if(!I.value.username||!I.value.password||!I.value.captchaCallback){U.warning("请填写完整的账号、密码和验证码");return}u.value=!0;try{const y=atob(I.value.captchaCallback).split("||");if(y.length!==2)throw new Error("验证码格式错误");const $=await Q.post({url:"/public/login",baseURL:"https://api.mefrp.com/api",data:{username:I.value.username,password:I.value.password,vaptchaToken:y[0],vaptchaServer:y[1]}},{withToken:!1});$&&$.token?(U.success("登录成功"),await b($.token)):U.error("登录失败:未获取到 Token")}catch(V){U.error("登录异常: "+V.message)}finally{u.value=!1}}async function b(V){const y=V||I.value.token;if(!y){U.warning("请输入Token");return}u.value=!0;try{const $=await Q.get({url:"/auth/user/info",baseURL:"https://api.mefrp.com/api",headers:{Authorization:`Bearer ${y}`}},{withToken:!1});$&&(U.success("Token验证成功"),r.value=y,localStorage.setItem("mefrp-user-token",y),i.value=$,await C())}catch($){U.error("验证失败: "+$.message)}finally{u.value=!1}}const R=V=>{if(!V||V===0)return"0 B";const y=V*1024,$=1024,E=["B","KB","MB","GB","TB"],F=Math.floor(Math.log(y)/Math.log($));return parseFloat((y/Math.pow($,F)).toFixed(2))+" "+E[F]};async function C(){d.value=!0;try{const V=await Q.get({url:"/auth/user/info",baseURL:"https://api.mefrp.com/api",headers:{Authorization:`Bearer ${r.value}`}},{withToken:!1});if(V)i.value=V;else{q();return}const y=await Q.get({url:"/auth/proxy/list",baseURL:"https://api.mefrp.com/api",headers:{Authorization:`Bearer ${r.value}`}},{withToken:!1});if(y){const $={};(y.nodes||[]).forEach(E=>{$[E.nodeId]=E.name}),f.value=$,c.value=y.proxies||[],c.value.length>0&&!n.value&&(n.value=c.value[0].proxyId)}}catch(V){U.error("数据加载失败,已自动退出ME Frp: "+V.message),q()}finally{d.value=!1}}const M=h(!1);async function B(){if(w.value){M.value=!0;try{const V=await Q.post({url:"/auth/proxy/config",baseURL:"https://api.mefrp.com/api",data:{proxyId:w.value.proxyId,format:"toml"},headers:{Authorization:`Bearer ${r.value}`}},{withToken:!1});V&&V.config?(await Jt(`${w.value.proxyName} | ${A.value}`,V.config,"ME Frp"),U.success("配置已成功加载")):U.error("获取配置失败")}catch(V){U.error("获取配置失败: "+V.message)}finally{M.value=!1}}}const D=()=>{a.value=!0};function q(){r.value="",i.value=null,c.value=[],n.value=null,localStorage.removeItem("mefrp-user-token"),U.success("已退出登录")}async function P(){await C(),U.success("数据已更新")}const j=()=>{const $=(window.screen.width-800)/2,E=(window.screen.height-600)/2;window.open(`https://www.mefrp.com/3rdparty/sign?client=MSL&&token=${r.value}`,"MEFrpSign",`width=800,height=600,left=${$},top=${E},resizable=yes,scrollbars=yes`),U.info("请在弹出的窗口中完成签到,完成后点击右上角刷新数据")},K=h(!1);async function k(){if(w.value){K.value=!0;try{await Q.post({url:"/auth/proxy/delete",baseURL:"https://api.mefrp.com/api",data:{proxyId:w.value.proxyId},headers:{Authorization:`Bearer ${r.value}`}},{withToken:!1}),U.success("隧道删除成功"),n.value=null,await C()}catch(V){U.error("删除失败: "+V.message)}finally{K.value=!1}}}return(V,y)=>{const $=g("t-radio-button"),E=g("t-radio-group"),F=g("t-input"),J=g("t-form-item"),O=g("t-button"),N=g("t-form"),Y=g("t-loading"),be=g("t-tag"),ae=g("t-popconfirm"),me=g("t-icon");return l(),x("div",wg,[r.value===""?(l(),x("div",kg,[e("div",$g,[y[17]||(y[17]=e("div",{class:"absolute -top-20 -right-20 w-60 h-60 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),y[18]||(y[18]=e("div",{class:"absolute -bottom-10 -left-10 w-40 h-40 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),e("div",zg,[y[14]||(y[14]=e("div",{class:"w-20 h-20 bg-[var(--color-primary)]/10 rounded-2xl flex items-center justify-center mb-6 shadow-sm border border-[var(--color-primary)]/20"},[e("img",{src:"https://www.mefrp.com/favicon.svg",alt:"logo",size:"48px",class:"text-[var(--color-primary)]"})],-1)),y[15]||(y[15]=e("h2",{class:"text-2xl font-extrabold text-[var(--td-text-color-primary)] !mb-2 tracking-tight"},"登录 ME Frp",-1)),y[16]||(y[16]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] !mb-6 font-medium"},"选择您的登录方式以接入内网穿透服务",-1)),t(E,{modelValue:v.value,"onUpdate:modelValue":y[0]||(y[0]=fe=>v.value=fe),variant:"default-filled",class:"!mb-6"},{default:o(()=>[t($,{value:"password"},{default:o(()=>[...y[8]||(y[8]=[p("账号密码登录",-1)])]),_:1}),t($,{value:"token"},{default:o(()=>[...y[9]||(y[9]=[p("Token 登录",-1)])]),_:1})]),_:1},8,["modelValue"]),v.value==="password"?(l(),G(N,{key:0,data:I.value,"label-width":"0",onSubmit:z,class:"w-full text-left"},{default:o(()=>[t(J,{name:"username",class:"!mb-4"},{default:o(()=>[t(F,{modelValue:I.value.username,"onUpdate:modelValue":y[1]||(y[1]=fe=>I.value.username=fe),size:"large",placeholder:"请输入 ME Frp 账号",clearable:"",class:"!rounded-xl"},{"prefix-icon":o(()=>[t(_(mo),{class:"opacity-60"})]),_:1},8,["modelValue"])]),_:1}),t(J,{name:"password",class:"!mb-4"},{default:o(()=>[t(F,{modelValue:I.value.password,"onUpdate:modelValue":y[2]||(y[2]=fe=>I.value.password=fe),size:"large",type:"password",placeholder:"请输入密码",clearable:"",class:"!rounded-xl"},{"prefix-icon":o(()=>[t(_(Ot),{class:"opacity-60"})]),_:1},8,["modelValue"])]),_:1}),t(J,{name:"captchaCallback",class:"!mb-6"},{default:o(()=>[t(F,{modelValue:I.value.captchaCallback,"onUpdate:modelValue":y[3]||(y[3]=fe=>I.value.captchaCallback=fe),size:"large",placeholder:"请粘贴获取到的验证码",clearable:"",class:"!rounded-xl pr-1"},{"prefix-icon":o(()=>[t(_(sa),{class:"opacity-60"})]),suffix:o(()=>[t(O,{variant:"text",size:"small",theme:"primary",class:"!bg-[var(--color-primary)]/10 hover:!bg-[var(--color-primary)]/20 !rounded-lg",onClick:m},{default:o(()=>[...y[10]||(y[10]=[p("获取验证码",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(O,{block:"",theme:"primary",type:"submit",size:"large",loading:u.value,class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[...y[11]||(y[11]=[p("立即登录",-1)])]),_:1},8,["loading"])]),_:1},8,["data"])):(l(),G(N,{key:1,data:I.value,"label-width":"0",onSubmit:y[5]||(y[5]=()=>b()),class:"w-full text-left"},{default:o(()=>[t(J,{name:"token",class:"!mb-6"},{default:o(()=>[t(F,{modelValue:I.value.token,"onUpdate:modelValue":y[4]||(y[4]=fe=>I.value.token=fe),size:"large",type:"password",placeholder:"请输入 ME Frp 账户 Token",clearable:"",class:"!rounded-xl"},{"prefix-icon":o(()=>[t(_(aa),{class:"opacity-60"})]),_:1},8,["modelValue"])]),_:1}),t(O,{block:"",theme:"primary",type:"submit",size:"large",loading:u.value,class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[...y[12]||(y[12]=[p("验证 Token",-1)])]),_:1},8,["loading"])]),_:1},8,["data"])),e("div",Cg,[t(O,{variant:"text",size:"small",class:"text-zinc-500 hover:text-[var(--color-primary)]",onClick:y[6]||(y[6]=fe=>_(Ie)("https://www.mefrp.com/register"))},{default:o(()=>[...y[13]||(y[13]=[p("还没有账户?注册 ME Frp",-1)])]),_:1})])])])])):(l(),x("div",Ag,[t(Y,{attach:"#app-space",loading:d.value,text:"加载数据中..."},null,8,["loading"]),i.value?(l(),x("div",Sg,[e("div",Ig,[y[21]||(y[21]=e("div",{class:"flex flex-col"},[e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"ME Frp 用户信息")],-1)),e("div",Vg,[t(O,{variant:"outline",theme:"primary",size:"small",disabled:i.value.todaySigned,class:ce(["!rounded-lg",i.value.todaySigned?"":"hover:!bg-[var(--color-primary)]/10"]),onClick:j},{default:o(()=>[p(S(i.value.todaySigned?"今日已签到":"每日签到"),1)]),_:1},8,["disabled","class"]),t(be,{theme:"primary",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[p(S(i.value.friendlyGroup),1)]),_:1}),y[20]||(y[20]=e("div",{class:"w-px h-4 bg-zinc-200 dark:bg-zinc-700 mx-1"},null,-1)),t(ae,{content:"确认退出登录吗?",onConfirm:q},{default:o(()=>[t(O,{variant:"text",theme:"danger",size:"small",class:"!rounded-lg hover:!bg-red-500/10"},{default:o(()=>[...y[19]||(y[19]=[p("退出登录",-1)])]),_:1})]),_:1})])]),e("div",Ug,[e("div",Mg,[y[23]||(y[23]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"用户昵称",-1)),e("div",Lg,[e("span",Bg,S(i.value.username),1),i.value.friendlyGroup!=="未实名"?(l(),G(be,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5 border border-[var(--color-success)]/20"},{default:o(()=>[...y[22]||(y[22]=[p("已实名",-1)])]),_:1})):H("",!0)])]),e("div",Tg,[y[25]||(y[25]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"隧道使用情况",-1)),e("div",Rg,[e("span",jg,S(i.value.usedProxies),1),p(" / "+S(i.value.maxProxies)+" ",1),y[24]||(y[24]=e("span",{class:"text-sm font-medium text-zinc-500"},"条",-1))])]),e("div",Pg,[y[27]||(y[27]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"速率限制",-1)),e("div",Eg,[p(S(i.value.outBound?Math.floor(i.value.outBound/128):0)+" ",1),y[26]||(y[26]=e("span",{class:"text-sm font-medium text-zinc-500"},"Mbps",-1))])]),e("div",Dg,[y[28]||(y[28]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"剩余流量",-1)),e("div",Fg,S(R(i.value.traffic)),1)])])])):H("",!0),e("div",Og,[e("div",Ng,[e("div",Kg,[y[31]||(y[31]=e("h3",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"我的隧道",-1)),e("div",qg,[t(O,{size:"small",variant:"text",class:"!px-2 hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50",loading:d.value,onClick:P},{icon:o(()=>[t(_(Ee))]),default:o(()=>[y[29]||(y[29]=p("刷新 ",-1))]),_:1},8,["loading"]),t(O,{size:"small",theme:"primary",class:"!px-3 !ml-1 !rounded-lg",onClick:D},{icon:o(()=>[t(_(ot))]),default:o(()=>[y[30]||(y[30]=p("新建 ",-1))]),_:1})])]),e("div",Hg,[c.value.length>0?(l(),x("div",Gg,[(l(!0),x(le,null,ge(c.value,fe=>(l(),x("div",{key:fe.proxyId,class:ce(["group flex items-center p-3 rounded-xl cursor-pointer transition-all duration-300 border",n.value===fe.proxyId?"bg-[var(--color-primary)]/10 border-[var(--color-primary)]/30 shadow-sm":"bg-transparent border-transparent hover:bg-zinc-50 dark:hover:bg-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600"]),onClick:Se=>n.value=fe.proxyId},[e("div",{class:ce(["w-10 h-10 rounded-lg flex items-center justify-center shrink-0 mr-3 transition-colors",n.value===fe.proxyId?"bg-[var(--color-primary)] text-white shadow-md shadow-[var(--color-primary)]/30":"bg-zinc-100 dark:bg-zinc-900 text-[var(--td-text-color-secondary)] group-hover:text-zinc-800 dark:group-hover:text-zinc-200"])},[t(_(at),{size:"20px"})],2),e("div",Jg,[e("div",{class:ce(["font-bold text-sm truncate transition-colors",n.value===fe.proxyId?"text-[var(--color-primary)]":"text-[var(--td-text-color-primary)]"])},S(fe.proxyName),3),e("div",Xg,S(f.value[fe.nodeId]||`Node ${fe.nodeId}`),1)]),e("div",Qg,[fe.isOnline?(l(),G(be,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5"},{default:o(()=>[...y[32]||(y[32]=[p("在线",-1)])]),_:1})):(l(),G(be,{key:1,theme:"default",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5 !text-zinc-500"},{default:o(()=>[...y[33]||(y[33]=[p("离线",-1)])]),_:1}))])],10,Wg))),128))])):(l(),x("div",Yg,[t(_(at),{size:"32px",class:"text-zinc-400 mb-2"}),y[34]||(y[34]=e("span",{class:"text-sm text-zinc-500 font-medium"},"暂无隧道,请先新建",-1))]))])]),e("div",Zg,[w.value?(l(),x(le,{key:0},[e("div",eh,[e("div",th,[e("h3",oh,S(w.value.proxyName),1),e("p",sh,"ID: "+S(w.value.proxyId),1)]),e("div",ah,[t(ae,{content:"确认删除此隧道吗?将无法恢复!",theme:"danger",placement:"bottom-right",onConfirm:k},{default:o(()=>[t(O,{theme:"danger",class:"!rounded-lg hover:!bg-red-500 hover:!text-white transition-colors",loading:K.value},{icon:o(()=>[t(me,{name:"delete"})]),default:o(()=>[y[35]||(y[35]=p(" 删除隧道 ",-1))]),_:1},8,["loading"])]),_:1})])]),e("div",lh,[e("div",rh,[e("div",nh,[y[36]||(y[36]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"所在节点",-1)),e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate",title:A.value},S(A.value),9,ih)]),e("div",dh,[y[37]||(y[37]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"本地地址",-1)),e("span",ch,S(w.value.localIp)+":"+S(w.value.localPort),1)]),e("div",uh,[y[38]||(y[38]=e("span",{class:"text-[11px] font-extrabold text-emerald-600/80 dark:text-emerald-500/80 uppercase tracking-widest mb-1.5"},"远程公网端口",-1)),e("span",mh,S(w.value.remotePort),1)]),e("div",{class:ce(["p-4 rounded-xl flex flex-col justify-center border transition-colors",w.value.isOnline?"bg-emerald-50/50 dark:bg-emerald-900/10 border-emerald-200/50 dark:border-emerald-800/30":"bg-zinc-50/80 dark:bg-zinc-900/50 border-[var(--td-component-border)]"])},[e("span",{class:ce(["text-[11px] font-extrabold uppercase tracking-widest mb-1.5",w.value.isOnline?"text-emerald-600/80 dark:text-emerald-500/80":"text-[var(--td-text-color-secondary)]"])},"当前状态",2),e("div",ph,[w.value.isOnline?(l(),x("span",vh)):H("",!0),e("span",{class:ce(["text-sm font-bold",w.value.isOnline?"text-[var(--color-success)]":"text-zinc-500"])},S(w.value.isOnline?"节点在线":"离线"),3)])],2)]),e("div",fh,[t(O,{theme:"primary",size:"large",loading:M.value,block:"",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow text-base",onClick:B},{icon:o(()=>[t(_(_t))]),default:o(()=>[y[39]||(y[39]=p(" 启动此隧道映射 ",-1))]),_:1},8,["loading"])])])],64)):(l(),x("div",bh,[e("div",xh,[t(_(bt),{size:"40px",class:"text-zinc-400"})]),y[40]||(y[40]=e("h3",{class:"text-base font-bold text-zinc-700 dark:text-zinc-300 mb-1"},"未选择隧道",-1)),y[41]||(y[41]=e("p",{class:"text-sm text-zinc-500"},"请在左侧列表中选择一个隧道以查看详细信息和连接参数",-1))]))])])])),a.value?(l(),G(_g,{key:2,visible:a.value,"onUpdate:visible":y[7]||(y[7]=fe=>a.value=fe),token:r.value,onSuccess:L},null,8,["visible","token"])):H("",!0)])}}}),hh=ue(gh,[["__scopeId","data-v-52e19a3b"]]),yh={class:"flex justify-between items-center w-full"},_h={class:"truncate"},wh={class:"w-full flex flex-col gap-2.5"},kh={class:"bg-[var(--td-bg-color-secondarycontainer)] rounded-[var(--td-radius-medium)] p-3 border border-dashed border-[var(--td-component-border)]"},$h={class:"m-0 whitespace-pre-wrap break-all text-[13px] text-[var(--td-text-color-primary)] leading-[1.6]"},zh=ie({__name:"CreateTunnelDialog",props:{visible:{type:Boolean},token:{},userLevel:{}},emits:["update:visible","success"],setup(s,{emit:a}){const r=s,d=a,i=h(!1),c=h(!1),f=h([]),n=qe({nodeId:null,type:"tcp",name:"",local_ip:"127.0.0.1",local_port:"25565",remote:""}),v=te(()=>f.value.find(A=>A.id===n.nodeId)||null),I=te(()=>{const A=new Map;return f.value.forEach(m=>{const z=m.vipName||"默认节点";A.has(z)||A.set(z,{label:z,value:z,children:[]}),A.get(z).children.push(m)}),Array.from(A.values())}),u=()=>{n.name="MSL_"+Xt(6),n.remote=(Math.floor(Math.random()*55536)+1e4).toString()},L=async()=>{i.value=!0;try{const A=await Q.get({url:`/nodes?token=${r.token}`,baseURL:"https://api.natfrp.com/v4"},{withToken:!1});if(A){const m=[];Object.entries(A).forEach(([z,b])=>{r.userLevel>=b.vip&&m.push({id:parseInt(z),name:b.name,host:b.host,description:b.description,vip:b.vip,vipName:b.vip===0?"普通节点":b.vip===3?"青铜节点":"白银节点"})}),f.value=m,r.visible&&f.value.length>0&&!n.nodeId&&(n.nodeId=f.value[0].id,u())}}catch(A){U.error("加载节点失败: "+A.message)}finally{i.value=!1}};_e(()=>r.visible,A=>{A&&(f.value.length>0?(n.nodeId||(n.nodeId=f.value[0].id),u()):L())});const w=async()=>{if(!n.nodeId){U.warning("请选择一个节点");return}if(!n.name||!n.local_ip||!n.local_port){U.warning("请填写完整的映射配置");return}c.value=!0;try{await Q.post({url:"/tunnels",baseURL:"https://api.natfrp.com/v4",headers:{Authorization:`Bearer ${r.token}`,"Content-Type":"application/x-www-form-urlencoded"},data:new URLSearchParams({node:n.nodeId.toString(),name:n.name,type:n.type,note:"Create By MSLX",extra:"",local_ip:n.local_ip,local_port:n.local_port,remote:n.remote}).toString()},{withToken:!1}),U.success(`隧道 ${n.name} 创建成功!`),d("success"),d("update:visible",!1)}catch(A){const m=A.response?.data?.msg||A.msg||"请尝试更换隧道名称/节点!";U.error(`创建失败: ${m}`)}finally{c.value=!1}};return ze(()=>{r.token&&L()}),(A,m)=>{const z=g("t-option"),b=g("t-option-group"),R=g("t-select"),C=g("t-form-item"),M=g("t-input"),B=g("t-col"),D=g("t-button"),q=g("t-row"),P=g("t-form"),j=g("t-loading"),K=g("t-dialog");return l(),G(K,{attach:"body",visible:s.visible,header:"新建 SakuraFrp 隧道",width:"580px","confirm-btn":{content:"提交创建",loading:c.value},onConfirm:w,onClose:m[6]||(m[6]=k=>d("update:visible",!1))},{default:o(()=>[t(j,{loading:i.value},{default:o(()=>[t(P,{data:n,"label-align":"right","label-width":100,class:"pt-2.5 overflow-x-hidden [&_.t-form__item]:!mb-[22px]"},{default:o(()=>[t(C,{label:"选择节点",name:"nodeId"},{default:o(()=>[t(R,{modelValue:n.nodeId,"onUpdate:modelValue":m[0]||(m[0]=k=>n.nodeId=k),placeholder:"请选择节点",onChange:u,"popup-props":{overlayClassName:"max-h-[300px]"}},{default:o(()=>[(l(!0),x(le,null,ge(I.value,k=>(l(),G(b,{key:k.value,label:k.label},{default:o(()=>[(l(!0),x(le,null,ge(k.children,V=>(l(),G(z,{key:V.id,value:V.id,label:V.name},{default:o(()=>[e("div",yh,[e("span",_h,S(V.name),1)])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),v.value?(l(),G(C,{key:0,label:"节点详情"},{default:o(()=>[e("div",wh,[e("div",kh,[e("pre",$h,S(v.value.description||"此节点暂无备注"),1)])])]),_:1})):H("",!0),t(C,{label:"隧道类型"},{default:o(()=>[t(R,{modelValue:n.type,"onUpdate:modelValue":m[1]||(m[1]=k=>n.type=k)},{default:o(()=>[t(z,{label:"TCP",value:"tcp"}),t(z,{label:"UDP",value:"udp"}),t(z,{label:"HTTP",value:"http"}),t(z,{label:"HTTPS",value:"https"})]),_:1},8,["modelValue"])]),_:1}),t(q,{gutter:[16,20]},{default:o(()=>[t(B,{xs:12,sm:6},{default:o(()=>[t(C,{label:"隧道名称"},{default:o(()=>[t(M,{modelValue:n.name,"onUpdate:modelValue":m[2]||(m[2]=k=>n.name=k)},null,8,["modelValue"])]),_:1})]),_:1}),t(B,{xs:12,sm:6},{default:o(()=>[t(C,{label:"远程端口"},{default:o(()=>[t(M,{modelValue:n.remote,"onUpdate:modelValue":m[3]||(m[3]=k=>n.remote=k),placeholder:"留空由服务端分配"},{suffix:o(()=>[t(D,{variant:"text",size:"small",onClick:u},{default:o(()=>[...m[7]||(m[7]=[p("随机",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(B,{xs:12,sm:6},{default:o(()=>[t(C,{label:"本地IP"},{default:o(()=>[t(M,{modelValue:n.local_ip,"onUpdate:modelValue":m[4]||(m[4]=k=>n.local_ip=k)},null,8,["modelValue"])]),_:1})]),_:1}),t(B,{xs:12,sm:6},{default:o(()=>[t(C,{label:"本地端口"},{default:o(()=>[t(M,{modelValue:n.local_port,"onUpdate:modelValue":m[5]||(m[5]=k=>n.local_port=k)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1},8,["data"])]),_:1},8,["loading"])]),_:1},8,["visible","confirm-btn"])}}}),Ch={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},Ah={key:0,class:"flex items-center justify-center min-h-[70vh] list-item-anim"},Sh={class:"design-card relative w-full max-w-md bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-xl p-10 text-center overflow-hidden"},Ih={class:"relative z-10 flex flex-col items-center"},Vh={class:"mt-8 pt-4 border-t border-dashed border-zinc-200 dark:border-zinc-700 w-full"},Uh={key:1,id:"app-space",class:"relative flex flex-col gap-6"},Mh={key:0,class:"design-card list-item-anim bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-5 sm:p-6",style:{"animation-delay":"0s"}},Lh={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},Bh={class:"flex items-center gap-2"},Th={class:"grid grid-cols-2 lg:grid-cols-4 gap-4"},Rh={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},jh={class:"text-lg font-bold text-[var(--td-text-color-primary)] truncate"},Ph={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Eh={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},Dh={class:"text-[var(--color-primary)]"},Fh={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Oh={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},Nh={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},Kh={class:"text-[15px] font-bold text-[var(--color-success)] font-mono mt-0.5"},qh={class:"grid grid-cols-1 lg:grid-cols-12 gap-6 items-start"},Hh={class:"lg:col-span-5 xl:col-span-4 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.1s"}},Gh={class:"flex items-center justify-between p-4 sm:p-5 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},Wh={class:"flex items-center gap-1"},Jh={class:"flex-1 overflow-y-auto custom-scrollbar p-3"},Xh={key:0,class:"flex flex-col gap-2"},Qh=["onClick"],Yh={class:"flex-1 min-w-0 mr-3"},Zh={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},ey={class:"shrink-0"},ty={key:1,class:"h-full flex flex-col items-center justify-center opacity-60"},oy={class:"lg:col-span-7 xl:col-span-8 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.2s"}},sy={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 sm:p-6 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},ay={class:"flex flex-col min-w-0"},ly={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] m-0 truncate"},ry={class:"text-xs text-[var(--td-text-color-secondary)] mt-1 truncate font-mono bg-zinc-100 dark:bg-zinc-800/50 w-max px-2 py-0.5 rounded"},ny={class:"shrink-0"},iy={class:"flex-1 overflow-y-auto custom-scrollbar p-5 sm:p-6"},dy={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 gap-4"},cy={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},uy=["title"],my={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},py={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},vy={class:"p-4 bg-emerald-50/50 dark:bg-emerald-900/20 rounded-xl border border-emerald-200/50 dark:border-emerald-800/30 flex flex-col justify-center"},fy={class:"text-lg font-mono font-extrabold text-emerald-600 dark:text-emerald-400"},by={class:"flex items-center gap-2"},xy={key:0,class:"w-2 h-2 rounded-full bg-[var(--color-success)] animate-pulse"},gy={class:"mt-8"},hy={key:1,class:"flex-1 flex flex-col items-center justify-center opacity-50 p-6 text-center"},yy={class:"w-24 h-24 bg-zinc-100 dark:bg-zinc-800 rounded-full flex items-center justify-center mb-4"},_y=ie({__name:"index",setup(s){const a=h(!1),r=h(""),d=h(!1),i=h(null),c=h(0),f=h([]),n=h({}),v=h(null),I=h({token:""}),u=h(!1),L=()=>{z()},w=te(()=>f.value.find(P=>P.id===v.value)||null),A=te(()=>w.value?n.value[w.value.node]||`节点 (${w.value.node})`:"");ze(()=>{const P=localStorage.getItem("sakurafrp-user-token");P&&(r.value=P,z())});async function m(P){const j=I.value.token;if(!j){U.warning("请输入 Token");return}u.value=!0;try{const K=await Q.get({url:`/user/info?token=${j}`,baseURL:"https://api.natfrp.com/v4"},{withToken:!1});K&&K.name?(U.success("Token验证成功"),r.value=j,localStorage.setItem("sakurafrp-user-token",j),i.value=K,c.value=parseInt(K.group?.level||"0"),await z()):U.error("登录失败:未获取到有效的用户信息")}catch(K){U.error("验证失败: "+K.message)}finally{u.value=!1}}async function z(){d.value=!0;try{const P=await Q.get({url:`/user/info?token=${r.value}`,baseURL:"https://api.natfrp.com/v4"},{withToken:!1});if(P&&P.name)i.value=P,c.value=parseInt(P.group?.level||"0");else{M();return}const j=await Q.get({url:`/nodes?token=${r.value}`,baseURL:"https://api.natfrp.com/v4"},{withToken:!1});if(j){const k={};Object.entries(j).forEach(([V,y])=>{k[parseInt(V)]=y.name}),n.value=k}const K=await Q.get({url:`/tunnels?token=${r.value}`,baseURL:"https://api.natfrp.com/v4"},{withToken:!1});Array.isArray(K)&&(f.value=K||[],f.value.length>0&&!v.value&&(v.value=f.value[0].id))}catch(P){const j=P.response?.data?.msg||P.msg||P.message||"Token失效或网络异常";U.error(`数据加载失败,已自动退出Sakura Frp: ${j}`),M()}finally{d.value=!1}}const b=h(!1);async function R(){if(w.value){b.value=!0;try{const P=await Q.post({url:"/tunnel/config",baseURL:"https://api.natfrp.com/v4",headers:{Authorization:`Bearer ${r.value}`,"Content-Type":"application/x-www-form-urlencoded"},data:`query=${w.value.id}&frpc=0.52.0`},{withToken:!1});P&&typeof P=="string"?(await Jt(`${w.value.name} | ${A.value}`,P,"Sakura Frp"),U.success("配置文件已成功加载")):U.error("获取配置失败:内容为空或格式异常")}catch(P){const j=P.response?.data?.msg||P.msg||P.message||"未知错误";U.error(`获取配置异常: ${j}`)}finally{b.value=!1}}}const C=()=>{a.value=!0};function M(){r.value="",i.value=null,f.value=[],v.value=null,localStorage.removeItem("sakurafrp-user-token"),U.success("已退出登录")}async function B(){await z(),U.success("数据已更新")}const D=h(!1);async function q(){if(w.value){D.value=!0;try{await Q.post({url:"/tunnel/delete",baseURL:"https://api.natfrp.com/v4",headers:{Authorization:`Bearer ${r.value}`,"Content-Type":"application/x-www-form-urlencoded"},data:`ids=${w.value.id}`},{withToken:!1}),U.success("隧道删除成功"),v.value=null,await z()}catch(P){U.error("删除失败: "+P.message)}finally{D.value=!1}}}return(P,j)=>{const K=g("t-input"),k=g("t-form-item"),V=g("t-button"),y=g("t-form"),$=g("t-loading"),E=g("t-tag"),F=g("t-popconfirm"),J=g("t-icon");return l(),x("div",Ch,[r.value===""?(l(),x("div",Ah,[e("div",Sh,[j[9]||(j[9]=e("div",{class:"absolute -top-20 -right-20 w-60 h-60 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),j[10]||(j[10]=e("div",{class:"absolute -bottom-10 -left-10 w-40 h-40 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),e("div",Ih,[j[6]||(j[6]=e("div",{class:"w-20 h-20 bg-[var(--color-primary)]/10 rounded-2xl flex items-center justify-center mb-6 shadow-sm border border-[var(--color-primary)]/20"},[e("img",{src:"https://www.natfrp.com/favicon.ico",alt:"logo",class:"text-[var(--color-primary)]"})],-1)),j[7]||(j[7]=e("h2",{class:"text-2xl font-extrabold text-[var(--td-text-color-primary)] !mb-2 tracking-tight"},"登录 SakuraFrp",-1)),j[8]||(j[8]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] !mb-8 font-medium"},"使用您的访问令牌 (Token) 连接服务",-1)),t(y,{data:I.value,"label-width":"0",onSubmit:j[1]||(j[1]=()=>m()),class:"w-full text-left"},{default:o(()=>[t(k,{name:"token",class:"!mb-6"},{default:o(()=>[t(K,{modelValue:I.value.token,"onUpdate:modelValue":j[0]||(j[0]=O=>I.value.token=O),size:"large",type:"password",placeholder:"请输入 SakuraFrp 访问 Token",clearable:"",class:"!rounded-xl"},{"prefix-icon":o(()=>[t(_(aa),{class:"opacity-60"})]),_:1},8,["modelValue"])]),_:1}),t(V,{block:"",theme:"primary",type:"submit",size:"large",loading:u.value,class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50"},{default:o(()=>[...j[4]||(j[4]=[p("立即验证 Token",-1)])]),_:1},8,["loading"])]),_:1},8,["data"]),e("div",Vh,[t(V,{variant:"text",size:"small",class:"text-zinc-500 hover:text-[var(--color-primary)]",onClick:j[2]||(j[2]=O=>_(Ie)("https://www.natfrp.com/user/"))},{default:o(()=>[...j[5]||(j[5]=[p("获取 SakuraFrp 账号Token",-1)])]),_:1})])])])])):(l(),x("div",Uh,[t($,{attach:"#app-space",loading:d.value,text:"加载数据中..."},null,8,["loading"]),i.value?(l(),x("div",Mh,[e("div",Lh,[j[13]||(j[13]=e("div",{class:"flex flex-col"},[e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"SakuraFrp 账户信息")],-1)),e("div",Bh,[t(E,{theme:"primary",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[p(S(i.value.group?.name||"未知分组"),1)]),_:1}),j[12]||(j[12]=e("div",{class:"w-px h-4 bg-zinc-200 dark:bg-zinc-700 mx-1"},null,-1)),t(F,{content:"确认断开 SakuraFrp 的连接吗?",onConfirm:M},{default:o(()=>[t(V,{variant:"text",theme:"danger",size:"small",class:"!rounded-lg hover:!bg-red-500/10"},{default:o(()=>[...j[11]||(j[11]=[p("退出登录",-1)])]),_:1})]),_:1})])]),e("div",Th,[e("div",Rh,[j[14]||(j[14]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"用户名称",-1)),e("div",jh,S(i.value.name),1)]),e("div",Ph,[j[17]||(j[17]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"当前隧道数",-1)),e("div",Eh,[e("span",Dh,S(f.value.length),1),j[15]||(j[15]=p()),j[16]||(j[16]=e("span",{class:"text-sm font-medium text-zinc-500"},"条",-1))])]),e("div",Fh,[j[18]||(j[18]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"限速",-1)),e("div",Oh,S(i.value.speed||"无限制"),1)]),e("div",Nh,[j[19]||(j[19]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"},"VIP 等级",-1)),e("div",Kh,"Level "+S(c.value),1)])])])):H("",!0),e("div",qh,[e("div",Hh,[e("div",Gh,[j[22]||(j[22]=e("h3",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"我的隧道",-1)),e("div",Wh,[t(V,{size:"small",variant:"text",class:"!px-2 hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50",loading:d.value,onClick:B},{icon:o(()=>[t(_(Ee))]),default:o(()=>[j[20]||(j[20]=p("刷新 ",-1))]),_:1},8,["loading"]),t(V,{size:"small",theme:"primary",class:"!px-3 !ml-1 !rounded-lg",onClick:C},{icon:o(()=>[t(_(ot))]),default:o(()=>[j[21]||(j[21]=p("新建 ",-1))]),_:1})])]),e("div",Jh,[f.value.length>0?(l(),x("div",Xh,[(l(!0),x(le,null,ge(f.value,O=>(l(),x("div",{key:O.id,class:ce(["group flex items-center p-3 rounded-xl cursor-pointer transition-all duration-300 border",v.value===O.id?"bg-[var(--color-primary)]/10 border-[var(--color-primary)]/30 shadow-sm":"bg-transparent border-transparent hover:bg-zinc-50 dark:hover:bg-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600"]),onClick:N=>v.value=O.id},[e("div",{class:ce(["w-10 h-10 rounded-lg flex items-center justify-center shrink-0 mr-3 transition-colors",v.value===O.id?"bg-[var(--color-primary)] text-white shadow-md shadow-[var(--color-primary)]/30":"bg-zinc-100 dark:bg-zinc-900 text-[var(--td-text-color-secondary)] group-hover:text-zinc-800 dark:group-hover:text-zinc-200"])},[t(_(at),{size:"20px"})],2),e("div",Yh,[e("div",{class:ce(["font-bold text-sm truncate transition-colors",v.value===O.id?"text-[var(--color-primary)]":"text-[var(--td-text-color-primary)]"])},S(O.name),3),e("div",Zh,S(n.value[O.node]||`Node ${O.node}`),1)]),e("div",ey,[O.online?(l(),G(E,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5"},{default:o(()=>[...j[23]||(j[23]=[p("在线",-1)])]),_:1})):(l(),G(E,{key:1,theme:"default",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5 !text-zinc-500"},{default:o(()=>[...j[24]||(j[24]=[p("离线",-1)])]),_:1}))])],10,Qh))),128))])):(l(),x("div",ty,[t(_(at),{size:"32px",class:"text-zinc-400 mb-2"}),j[25]||(j[25]=e("span",{class:"text-sm text-zinc-500 font-medium"},"暂无隧道,请先新建",-1))]))])]),e("div",oy,[w.value?(l(),x(le,{key:0},[e("div",sy,[e("div",ay,[e("h3",ly,S(w.value.name),1),e("p",ry,"ID: "+S(w.value.id),1)]),e("div",ny,[t(F,{content:"确认删除此隧道吗?将无法恢复!",theme:"danger",placement:"bottom-right",onConfirm:q},{default:o(()=>[t(V,{theme:"danger",class:"!rounded-lg hover:!bg-red-500 hover:!text-white transition-colors",loading:D.value},{icon:o(()=>[t(J,{name:"delete"})]),default:o(()=>[j[26]||(j[26]=p(" 删除隧道 ",-1))]),_:1},8,["loading"])]),_:1})])]),e("div",iy,[e("div",dy,[e("div",cy,[j[27]||(j[27]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"所在节点",-1)),e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate",title:A.value},S(A.value),9,uy)]),e("div",my,[j[28]||(j[28]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"本地地址",-1)),e("span",py,S(w.value.local_ip)+":"+S(w.value.local_port),1)]),e("div",vy,[j[29]||(j[29]=e("span",{class:"text-[11px] font-extrabold text-emerald-600/80 dark:text-emerald-500/80 uppercase tracking-widest mb-1.5"},"远程信息 (端口/域名)",-1)),e("span",fy,S(w.value.remote),1)]),e("div",{class:ce(["p-4 rounded-xl flex flex-col justify-center border transition-colors",w.value.online?"bg-emerald-50/50 dark:bg-emerald-900/10 border-emerald-200/50 dark:border-emerald-800/30":"bg-zinc-50/80 dark:bg-zinc-900/50 border-[var(--td-component-border)]"])},[e("span",{class:ce(["text-[11px] font-extrabold uppercase tracking-widest mb-1.5",w.value.online?"text-emerald-600/80 dark:text-emerald-500/80":"text-[var(--td-text-color-secondary)]"])},"当前状态",2),e("div",by,[w.value.online?(l(),x("span",xy)):H("",!0),e("span",{class:ce(["text-sm font-bold",w.value.online?"text-[var(--color-success)]":"text-zinc-500"])},S(w.value.online?"节点在线":"离线"),3)])],2)]),e("div",gy,[t(V,{theme:"primary",size:"large",loading:b.value,block:"",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow text-base",onClick:R},{icon:o(()=>[t(_(_t))]),default:o(()=>[j[30]||(j[30]=p(" 使用此隧道 ",-1))]),_:1},8,["loading"])])])],64)):(l(),x("div",hy,[e("div",yy,[t(_(bt),{size:"40px",class:"text-zinc-400"})]),j[31]||(j[31]=e("h3",{class:"text-base font-bold text-zinc-700 dark:text-zinc-300 mb-1"},"未选择隧道",-1)),j[32]||(j[32]=e("p",{class:"text-sm text-zinc-500"},"请在左侧列表中选择一个隧道以查看详细信息",-1))]))])])])),a.value?(l(),G(zh,{key:2,visible:a.value,"onUpdate:visible":j[3]||(j[3]=O=>a.value=O),token:r.value,userLevel:c.value,onSuccess:L},null,8,["visible","token","userLevel"])):H("",!0)])}}}),wy=ue(_y,[["__scopeId","data-v-61762945"]]),Qt="/api/frp/chmlfrp",ky="https://account-api.qzhua.net",ys="019d4510d87276958d6248aed40407e3",zo="chmlfrp_user",no="chmlfrp-user-token",$y="profile email offline_access chmlfrp_api",Yt="X-Chmlfrp-Authorization";function Ba(s){if(!s)return null;const a={...s};if(a.accessTokenExpiresAt!=null){const r=Number(a.accessTokenExpiresAt);a.accessTokenExpiresAt=Number.isFinite(r)?r:void 0}return a}function zy(s){return new URL(s,ky).toString()}function Cy(){return{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"}}function Ta(s,a){return s&&(s.error_description||s.error)||a}function _s(s,a){try{return JSON.parse(s.body)}catch{const r=s.body.trim().toLowerCase();throw r.startsWith("=a-6e4:!1}function Ra(s){return s.startsWith("Bearer ")?s:`Bearer ${s}`}function Ro(s){return s?.code===200?s.data:s}function ts(){const s=localStorage.getItem(zo);if(s)try{return Ba(JSON.parse(s))}catch{localStorage.removeItem(zo)}const a=localStorage.getItem(no);if(!a)return null;const r={username:"",usergroup:"",usertoken:a};return Co(r),localStorage.removeItem(no),r}function Co(s){localStorage.setItem(zo,JSON.stringify(Ba(s))),s.usertoken?localStorage.setItem(no,s.usertoken):localStorage.removeItem(no)}function os(){localStorage.removeItem(zo),localStorage.removeItem(no)}async function Iy(s){const a=new URLSearchParams;a.set("grant_type","refresh_token"),a.set("refresh_token",s),a.set("client_id",ys);const r=await ws("/oauth2/token",a);return _s(r,"账户服务返回了无法解析的刷新响应")}async function Vy(){const s=ts();if(!s)throw new Error("登录信息已过期,请重新授权");const a=Ay(s);if(a){if(s.refreshToken&&Sy(s)){const d=await Iy(s.refreshToken);if(!d.access_token)throw os(),new Error(Ta(d,"登录信息已过期,请重新授权"));const i={...s,accessToken:d.access_token,refreshToken:d.refresh_token||s.refreshToken,accessTokenExpiresAt:d.expires_in?Date.now()+d.expires_in*1e3:s.accessTokenExpiresAt,tokenType:d.token_type||s.tokenType||"Bearer"};return Co(i),{storedUser:i,accessToken:i.accessToken,legacyToken:Oo(i)}}return{storedUser:s,accessToken:a,legacyToken:Oo(s)}}const r=Oo(s);if(r)return{storedUser:s,legacyToken:r};throw os(),new Error("登录信息已过期,请重新授权")}async function Zt(){const{accessToken:s,legacyToken:a}=await Vy();return Ra(s||a)}async function Uy(s=$y){const a=new URLSearchParams;a.set("client_id",ys);const r=s.split(/[,\s]+/).map(c=>c.trim()).filter(Boolean).join(" ");r&&a.set("scope",r);const d=await ws("/oauth2/device_authorization",a),i=_s(d,"账户服务返回了无法解析的响应");if(d.status>=200&&d.status<300&&i&&"device_code"in i)return i;throw new Error(Ta(i??void 0,"申请设备授权失败"))}async function My(s){const a=new URLSearchParams;a.set("grant_type","urn:ietf:params:oauth:grant-type:device_code"),a.set("device_code",s),a.set("client_id",ys);const r=await ws("/oauth2/token",a);return _s(r,"账户服务返回了无法解析的令牌响应")}async function ja(s){const a=s?Ra(s):await Zt(),r=await Q.get({url:`${Qt}/userinfo`,headers:{[Yt]:a}}),d=Ro(r);if(d?.username)return d;throw new Error("未获取到有效的用户信息")}async function Ly(s,a){const r=await ja(s);return{username:r.username,usergroup:r.usergroup,userimg:r.userimg,usertoken:r.usertoken,accessToken:s,refreshToken:a?.refresh_token,accessTokenExpiresAt:a?.expires_in?Date.now()+a.expires_in*1e3:void 0,tokenType:a?.token_type||"Bearer",tunnelCount:r.tunnelCount,tunnel:r.tunnel}}async function By(){const s=await Zt(),a=await Q.get({url:`${Qt}/tunnel`,headers:{[Yt]:s}}),r=Ro(a);if(Array.isArray(r))return r;throw new Error("获取隧道列表失败")}async function Ty(){const s=await Zt(),a=await Q.get({url:`${Qt}/node`,headers:{[Yt]:s}}),r=Ro(a);if(Array.isArray(r))return r;throw new Error("获取节点列表失败")}async function Ry(s){const a=await Zt();return Q.post({url:`${Qt}/create-tunnel`,headers:{[Yt]:a},data:s})}async function jy(s){const a=await Zt();return Q.get({url:`${Qt}/delete-tunnel?tunnelId=${s}`,headers:{[Yt]:a}})}async function Py(s,a){const r=await Zt(),d=await Q.get({url:`${Qt}/tunnel-config?node=${encodeURIComponent(s)}&tunnelName=${encodeURIComponent(a)}`,headers:{[Yt]:r}}),i=Ro(d);if(typeof i=="string"&&i)return i;throw new Error("获取配置失败:内容为空或格式异常")}const Ey={class:"flex justify-between items-center w-full"},Dy={class:"truncate"},Fy={class:"text-xs text-zinc-400 shrink-0 ml-2"},Oy={class:"w-full flex flex-col gap-2.5"},Ny={class:"bg-[var(--td-bg-color-secondarycontainer)] rounded-[var(--td-radius-medium)] p-3 border border-dashed border-[var(--td-component-border)]"},Ky={class:"m-0 whitespace-pre-wrap break-all text-[13px] text-[var(--td-text-color-primary)] leading-[1.6]"},qy=ie({__name:"CreateTunnelDialog",props:{visible:{type:Boolean}},emits:["update:visible","success"],setup(s,{emit:a}){const r=s,d=a,i=h(!1),c=h(!1),f=h([]),n=qe({nodeName:"",porttype:"TCP",tunnelname:"",localip:"127.0.0.1",localport:"25565",remoteport:""}),v=te(()=>f.value.find(A=>A.name===n.nodeName)||null),I=te(()=>{const A=new Map;return f.value.forEach(m=>{let z=m.nodegroup;z==="vip"?z="VIP 节点":z==="user"&&(z="普通节点"),A.has(m.nodegroup)||A.set(m.nodegroup,{label:z,value:m.nodegroup,children:[]}),A.get(m.nodegroup).children.push(m)}),Array.from(A.values())}),u=()=>{n.tunnelname="MSL_"+Xt(6),n.remoteport=(Math.floor(Math.random()*55536)+1e4).toString()},L=async()=>{i.value=!0;try{const A=await Ty();Array.isArray(A)&&(f.value=A,r.visible&&f.value.length>0&&!n.nodeName&&(n.nodeName=f.value[0].name,u()))}catch(A){const m=A.response?.data?.msg||A.msg||A.message||"未知错误";U.error("加载节点失败: "+m)}finally{i.value=!1}};_e(()=>r.visible,A=>{A&&(f.value.length>0?(n.nodeName||(n.nodeName=f.value[0].name),u()):L())});const w=async()=>{if(!n.nodeName){U.warning("请选择一个节点");return}if(!n.tunnelname||!n.localip||!n.localport){U.warning("请填写完整的映射配置");return}c.value=!0;try{const A=await Ry({tunnelname:n.tunnelname,node:n.nodeName,localip:n.localip,porttype:n.porttype,localport:parseInt(n.localport),encryption:!1,compression:!1,extraparams:"",remoteport:parseInt(n.remoteport)||0});if(A&&A.code&&A.code!==200)throw new Error(A.msg||"指定的端口不合法或发生未知错误");U.success(`隧道 ${n.tunnelname} 创建成功!`),d("success"),d("update:visible",!1)}catch(A){const m=A.message||A.response?.data?.msg||A.msg||"请检查配置或节点状态";U.error(`创建失败: ${m}`)}finally{c.value=!1}};return ze(()=>{L()}),(A,m)=>{const z=g("t-option"),b=g("t-option-group"),R=g("t-select"),C=g("t-form-item"),M=g("t-input"),B=g("t-col"),D=g("t-button"),q=g("t-row"),P=g("t-form"),j=g("t-loading"),K=g("t-dialog");return l(),G(K,{attach:"body",visible:s.visible,header:"新建 ChmlFrp 隧道",width:"580px","confirm-btn":{content:"提交创建",loading:c.value},onConfirm:w,onClose:m[6]||(m[6]=k=>d("update:visible",!1))},{default:o(()=>[t(j,{loading:i.value},{default:o(()=>[t(P,{data:n,"label-align":"right","label-width":100,class:"pt-2.5 overflow-x-hidden [&_.t-form__item]:!mb-[22px]"},{default:o(()=>[t(C,{label:"选择节点",name:"nodeName"},{default:o(()=>[t(R,{modelValue:n.nodeName,"onUpdate:modelValue":m[0]||(m[0]=k=>n.nodeName=k),placeholder:"请选择节点","popup-props":{overlayClassName:"max-h-[300px]"},onChange:u},{default:o(()=>[(l(!0),x(le,null,ge(I.value,k=>(l(),G(b,{key:k.value,label:k.label},{default:o(()=>[(l(!0),x(le,null,ge(k.children,V=>(l(),G(z,{key:V.id,value:V.name,label:V.name},{default:o(()=>[e("div",Ey,[e("span",Dy,S(V.name),1),e("span",Fy,S(V.area),1)])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue"])]),_:1}),v.value?(l(),G(C,{key:0,label:"节点详情"},{default:o(()=>[e("div",Oy,[e("div",Ny,[e("pre",Ky,S(v.value.notes||"此节点暂无备注"),1)])])]),_:1})):H("",!0),t(C,{label:"隧道类型"},{default:o(()=>[t(R,{modelValue:n.porttype,"onUpdate:modelValue":m[1]||(m[1]=k=>n.porttype=k)},{default:o(()=>[t(z,{label:"TCP",value:"TCP"}),t(z,{label:"UDP",value:"UDP"}),t(z,{label:"HTTP",value:"HTTP"}),t(z,{label:"HTTPS",value:"HTTPS"})]),_:1},8,["modelValue"])]),_:1}),t(q,{gutter:[16,20]},{default:o(()=>[t(B,{xs:12,sm:6},{default:o(()=>[t(C,{label:"隧道名称"},{default:o(()=>[t(M,{modelValue:n.tunnelname,"onUpdate:modelValue":m[2]||(m[2]=k=>n.tunnelname=k)},null,8,["modelValue"])]),_:1})]),_:1}),t(B,{xs:12,sm:6},{default:o(()=>[t(C,{label:"远程端口"},{default:o(()=>[t(M,{modelValue:n.remoteport,"onUpdate:modelValue":m[3]||(m[3]=k=>n.remoteport=k),placeholder:"留空由服务端分配"},{suffix:o(()=>[t(D,{variant:"text",size:"small",onClick:u},{default:o(()=>[...m[7]||(m[7]=[p("随机",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),t(B,{xs:12,sm:6},{default:o(()=>[t(C,{label:"本地IP"},{default:o(()=>[t(M,{modelValue:n.localip,"onUpdate:modelValue":m[4]||(m[4]=k=>n.localip=k)},null,8,["modelValue"])]),_:1})]),_:1}),t(B,{xs:12,sm:6},{default:o(()=>[t(C,{label:"本地端口"},{default:o(()=>[t(M,{modelValue:n.localport,"onUpdate:modelValue":m[5]||(m[5]=k=>n.localport=k)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1},8,["data"])]),_:1},8,["loading"])]),_:1},8,["visible","confirm-btn"])}}}),Hy={class:"mx-auto pb-6 text-[var(--td-text-color-primary)]"},Gy={key:0,class:"flex items-center justify-center min-h-[70vh] list-item-anim"},Wy={class:"design-card relative w-full max-w-md bg-[var(--td-bg-color-container)]/80 rounded-3xl border border-[var(--td-component-border)] shadow-xl p-10 text-center overflow-hidden"},Jy={class:"relative z-10 flex flex-col items-center"},Xy={key:0,class:"w-full"},Qy={key:1,class:"w-full"},Yy={class:"rounded-2xl border border-[var(--td-component-border)] bg-[var(--td-bg-color-secondarycontainer)]/70 p-6"},Zy={class:"mt-3 text-3xl font-black tracking-[0.3em] text-[var(--td-text-color-primary)]"},e_={class:"mt-4 flex flex-col gap-3"},t_={class:"mt-4 flex min-h-[22px] items-center justify-center"},o_={key:2,class:"mt-4 w-full rounded-2xl border border-red-200/80 bg-red-50/80 px-4 py-3 text-sm text-red-500 dark:border-red-900/60 dark:bg-red-950/20"},s_={class:"mt-6 pt-4 border-t border-dashed border-zinc-200 dark:border-zinc-700 w-full"},a_={key:1,id:"app-space",class:"relative flex flex-col gap-6"},l_={key:0,class:"design-card list-item-anim bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-5 sm:p-6",style:{"animation-delay":"0s"}},r_={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},n_={class:"flex items-center gap-3"},i_={class:"flex flex-col"},d_={class:"text-xs text-zinc-500 mt-1"},c_={class:"flex items-center gap-2"},u_={class:"grid grid-cols-2 lg:grid-cols-4 gap-4"},m_={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},p_={class:"text-lg font-bold text-[var(--td-text-color-primary)] truncate"},v_={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},f_={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},b_={class:"text-[var(--color-primary)]"},x_={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},g_={class:"text-lg font-bold text-[var(--td-text-color-primary)] font-mono"},h_={class:"p-4 rounded-xl bg-zinc-50/80 dark:bg-zinc-900/50 border border-zinc-100 dark:border-zinc-800 transition-colors hover:bg-white dark:hover:bg-zinc-800"},y_={class:"text-[15px] font-bold text-[var(--color-warning)] font-mono mt-0.5"},__={class:"grid grid-cols-1 lg:grid-cols-12 gap-6 items-start"},w_={class:"lg:col-span-5 xl:col-span-4 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.1s"}},k_={class:"flex items-center justify-between p-4 sm:p-5 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},$_={class:"flex items-center gap-1"},z_={class:"flex-1 overflow-y-auto custom-scrollbar p-3"},C_={key:0,class:"flex flex-col gap-2"},A_=["onClick"],S_={class:"flex-1 min-w-0 mr-3"},I_={class:"text-[11px] text-[var(--td-text-color-secondary)] truncate mt-0.5"},V_={class:"shrink-0"},U_={key:1,class:"h-full flex flex-col items-center justify-center opacity-60"},M_={class:"lg:col-span-7 xl:col-span-8 design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm h-[580px]",style:{"animation-delay":"0.2s"}},L_={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 sm:p-6 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 shrink-0"},B_={class:"flex flex-col min-w-0"},T_={class:"text-xl font-extrabold text-[var(--td-text-color-primary)] m-0 truncate"},R_={class:"text-xs text-[var(--td-text-color-secondary)] mt-1 truncate font-mono bg-zinc-100 dark:bg-zinc-800/50 w-max px-2 py-0.5 rounded"},j_={class:"shrink-0"},P_={class:"flex-1 overflow-y-auto custom-scrollbar p-5 sm:p-6"},E_={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-2 gap-4"},D_={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},F_=["title"],O_={class:"p-4 bg-zinc-50/80 dark:bg-zinc-900/50 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center"},N_={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)]"},K_={class:"p-4 bg-emerald-50/50 dark:bg-emerald-900/20 rounded-xl border border-emerald-200/50 dark:border-emerald-800/30 flex flex-col justify-center"},q_={class:"text-lg font-mono font-extrabold text-emerald-600 dark:text-emerald-400"},H_={class:"flex items-center gap-2"},G_={key:0,class:"w-2 h-2 rounded-full bg-[var(--color-success)] animate-pulse"},W_={class:"mt-8"},J_={key:1,class:"flex-1 flex flex-col items-center justify-center opacity-50 p-6 text-center"},X_={class:"w-24 h-24 bg-zinc-100 dark:bg-zinc-800 rounded-full flex items-center justify-center mb-4"},Q_=ie({__name:"index",setup(s){const a=h(!1),r=h(null),d=h(!1),i=h(null),c=h([]),f=h(null),n=h(null),v=h("将在新标签页中打开授权页面"),I=h(""),u=h(!1),L=h(!1);let w=null;const A=()=>{j()},m=te(()=>c.value.find(O=>O.id===f.value)||null),z=te(()=>!!(r.value?.accessToken||r.value?.usertoken));ze(()=>{const O=ts();O&&(r.value=O,j(!1))}),Gs(()=>{b()});function b(){w!==null&&(window.clearTimeout(w),w=null),L.value=!1}function R(){b(),n.value=null,v.value="将在新标签页中打开授权页面",I.value="",u.value=!1}function C(O){const N=ts()||r.value,Y={username:O.username,usergroup:O.usergroup,userimg:O.userimg,usertoken:O.usertoken,accessToken:N?.accessToken,refreshToken:N?.refreshToken,accessTokenExpiresAt:N?.accessTokenExpiresAt,tokenType:N?.tokenType,tunnelCount:O.tunnelCount,tunnel:O.tunnel};r.value=Y,Co(Y)}async function M(O,N){const Y=await Ly(O,N);Co(Y),r.value=Y,R(),await j()&&U.success("ChmlFrp 授权成功")}function B(O,N){b(),w=window.setTimeout(()=>{D(O,N)},N*1e3)}async function D(O,N){L.value=!0;try{const Y=await My(O);if(Y.access_token){await M(Y.access_token,{refresh_token:Y.refresh_token,expires_in:Y.expires_in,token_type:Y.token_type});return}if(Y.error==="authorization_pending"){v.value="请在浏览器中确认授权",B(O,N);return}if(Y.error==="slow_down"){v.value="请求过于频繁,正在自动重试...",B(O,N+5);return}if(Y.error==="expired_token"){b(),I.value="这次设备授权已过期,请重新开始授权。";return}if(Y.error==="access_denied"){b(),I.value="你已取消本次授权,请重新开始。";return}throw new Error(Y.error_description||Y.error||"获取访问令牌失败")}catch(Y){b(),I.value=Y?.message||"授权失败,请稍后重试"}}async function q(O=n.value){if(!O){I.value="请先开始授权流程";return}const N=O.verification_uri_complete||O.verification_uri;if(!N){I.value="账户中心未返回可用的授权地址";return}Ie(N),v.value="授权页已打开,完成授权后此页面会自动继续"}async function P(){R(),u.value=!0,v.value="正在获取授权信息...";try{const O=await Uy();n.value=O,await q(O);const N=Math.max(Number(O.interval||5),1);D(O.device_code,N)}catch(O){b(),n.value=null,I.value=O?.message||"启动授权失败"}finally{u.value=!1}}async function j(O=!0){d.value=!0;try{const[N,Y]=await Promise.all([ja(),By()]);return i.value=N,c.value=Y||[],C(N),c.value.length===0?f.value=null:c.value.some(be=>be.id===f.value)||(f.value=c.value[0].id),!0}catch(N){const Y=N?.response?.data?.msg||N?.msg||N?.message||"授权已失效或网络异常";return O&&U.error(`ChmlFrp 数据加载失败:${Y}`),y(!1),!1}finally{d.value=!1}}const K=h(!1);async function k(){if(m.value){K.value=!0;try{const O=await Py(m.value.node,m.value.name);await Jt(`${m.value.name} | ${m.value.node}`,Ua(O),"ChmlFrp","toml"),U.success("配置文件已成功加载")}catch(O){const N=O?.response?.data?.msg||O?.msg||O?.message||"未知错误";U.error(`获取配置异常: ${N}`)}finally{K.value=!1}}}const V=()=>{a.value=!0};function y(O=!0){R(),r.value=null,i.value=null,c.value=[],f.value=null,os(),O&&U.success("已断开 ChmlFrp 授权")}function $(){y()}async function E(){await j()&&U.success("数据已更新")}const F=h(!1);async function J(){if(m.value){F.value=!0;try{const O=await jy(m.value.id);if(O&&O.code&&O.code!==200)throw new Error(O.msg||"删除失败");U.success("隧道删除成功"),f.value=null,await j()}catch(O){const N=O.message||O.response?.data?.msg||O.msg||"未知错误";U.error(`删除失败: ${N}`)}finally{F.value=!1}}}return(O,N)=>{const Y=g("t-button"),be=g("t-loading"),ae=g("t-avatar"),me=g("t-tag"),fe=g("t-popconfirm"),Se=g("t-icon");return l(),x("div",Hy,[z.value?(l(),x("div",a_,[t(be,{attach:"#app-space",loading:d.value,text:"加载数据中..."},null,8,["loading"]),i.value?(l(),x("div",l_,[e("div",r_,[e("div",n_,[t(ae,{image:i.value.userimg,size:"medium",shape:"round"},null,8,["image"]),e("div",i_,[N[13]||(N[13]=e("h3",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"ChmlFrp 账户",-1)),e("span",d_,S(i.value.email),1)])]),e("div",c_,[i.value.realname==="已实名"?(l(),G(me,{key:0,theme:"success",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[...N[14]||(N[14]=[p("已实名",-1)])]),_:1})):H("",!0),t(me,{theme:"primary",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[p(S(i.value.usergroup),1)]),_:1}),N[16]||(N[16]=e("div",{class:"w-px h-4 bg-zinc-200 dark:bg-zinc-700 mx-1"},null,-1)),t(fe,{content:"确认断开 ChmlFrp 的连接吗?",onConfirm:$},{default:o(()=>[t(Y,{variant:"text",theme:"danger",size:"small",class:"!rounded-lg hover:!bg-red-500/10"},{default:o(()=>[...N[15]||(N[15]=[p("退出登录",-1)])]),_:1})]),_:1})])]),e("div",u_,[e("div",m_,[N[17]||(N[17]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"}," 用户名称 ",-1)),e("div",p_,S(i.value.username),1)]),e("div",v_,[N[19]||(N[19]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"}," 隧道配额 ",-1)),e("div",f_,[e("span",b_,S(i.value.tunnelCount),1),p(" / "+S(i.value.tunnel)+" ",1),N[18]||(N[18]=e("span",{class:"text-sm font-medium text-zinc-500"},"条",-1))])]),e("div",x_,[N[21]||(N[21]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"}," 带宽限制 ",-1)),e("div",g_,[p(S(i.value.bandwidth)+" ",1),N[20]||(N[20]=e("span",{class:"text-sm font-medium text-zinc-500"},"Mbps",-1))])]),e("div",h_,[N[22]||(N[22]=e("div",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1"}," 账户积分 ",-1)),e("div",y_,S(i.value.integral),1)])])])):H("",!0),e("div",__,[e("div",w_,[e("div",k_,[N[25]||(N[25]=e("h3",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"我的隧道",-1)),e("div",$_,[t(Y,{size:"small",variant:"text",class:"!px-2 hover:!bg-zinc-100 dark:hover:!bg-zinc-700/50",loading:d.value,onClick:E},{icon:o(()=>[t(_(Ee))]),default:o(()=>[N[23]||(N[23]=p("刷新 ",-1))]),_:1},8,["loading"]),t(Y,{size:"small",theme:"primary",class:"!px-3 !ml-1 !rounded-lg",onClick:V},{icon:o(()=>[t(_(ot))]),default:o(()=>[N[24]||(N[24]=p("新建 ",-1))]),_:1})])]),e("div",z_,[c.value.length>0?(l(),x("div",C_,[(l(!0),x(le,null,ge(c.value,Me=>(l(),x("div",{key:Me.id,class:ce(["group flex items-center p-3 rounded-xl cursor-pointer transition-all duration-300 border",f.value===Me.id?"bg-[var(--color-primary)]/10 border-[var(--color-primary)]/30 shadow-sm":"bg-transparent border-transparent hover:bg-zinc-50 dark:hover:bg-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600"]),onClick:Z=>f.value=Me.id},[e("div",{class:ce(["w-10 h-10 rounded-lg flex items-center justify-center shrink-0 mr-3 transition-colors",f.value===Me.id?"bg-[var(--color-primary)] text-white shadow-md shadow-[var(--color-primary)]/30":"bg-zinc-100 dark:bg-zinc-900 text-[var(--td-text-color-secondary)] group-hover:text-zinc-800 dark:group-hover:text-zinc-200"])},[t(_(at),{size:"20px"})],2),e("div",S_,[e("div",{class:ce(["font-bold text-sm truncate transition-colors",f.value===Me.id?"text-[var(--color-primary)]":"text-[var(--td-text-color-primary)]"])},S(Me.name),3),e("div",I_,S(Me.node),1)]),e("div",V_,[Me.state==="true"||Me.state===!0?(l(),G(me,{key:0,theme:"success",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5"},{default:o(()=>[...N[26]||(N[26]=[p("在线",-1)])]),_:1})):(l(),G(me,{key:1,theme:"default",variant:"light",size:"small",class:"!rounded !font-bold !px-1.5 !text-zinc-500"},{default:o(()=>[...N[27]||(N[27]=[p("离线",-1)])]),_:1}))])],10,A_))),128))])):(l(),x("div",U_,[t(_(at),{size:"32px",class:"text-zinc-400 mb-2"}),N[28]||(N[28]=e("span",{class:"text-sm text-zinc-500 font-medium"},"暂无隧道,请先新建",-1))]))])]),e("div",M_,[m.value?(l(),x(le,{key:0},[e("div",L_,[e("div",B_,[e("h3",T_,S(m.value.name),1),e("p",R_," ID: "+S(m.value.id),1)]),e("div",j_,[t(fe,{content:"确认删除此隧道吗?将无法恢复!",theme:"danger",placement:"bottom-right",onConfirm:J},{default:o(()=>[t(Y,{theme:"danger",class:"!rounded-lg hover:!bg-red-500 hover:!text-white transition-colors",loading:F.value},{icon:o(()=>[t(Se,{name:"delete"})]),default:o(()=>[N[29]||(N[29]=p(" 删除隧道 ",-1))]),_:1},8,["loading"])]),_:1})])]),e("div",P_,[e("div",E_,[e("div",D_,[N[30]||(N[30]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"所在节点",-1)),e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)] truncate",title:m.value.node},S(m.value.node),9,F_)]),e("div",O_,[N[31]||(N[31]=e("span",{class:"text-[11px] font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest mb-1.5"},"本地地址",-1)),e("span",N_,S(m.value.localip)+":"+S(m.value.nport),1)]),e("div",K_,[N[32]||(N[32]=e("span",{class:"text-[11px] font-extrabold text-emerald-600/80 dark:text-emerald-500/80 uppercase tracking-widest mb-1.5"},"远程信息 (端口/域名)",-1)),e("span",q_,S(m.value.dorp),1)]),e("div",{class:ce(["p-4 rounded-xl flex flex-col justify-center border transition-colors",m.value.state==="true"||m.value.state===!0?"bg-emerald-50/50 dark:bg-emerald-900/10 border-emerald-200/50 dark:border-emerald-800/30":"bg-zinc-50/80 dark:bg-zinc-900/50 border-[var(--td-component-border)]"])},[e("span",{class:ce(["text-[11px] font-extrabold uppercase tracking-widest mb-1.5",m.value.state==="true"||m.value.state===!0?"text-emerald-600/80 dark:text-emerald-500/80":"text-[var(--td-text-color-secondary)]"])},"当前状态",2),e("div",H_,[m.value.state==="true"||m.value.state===!0?(l(),x("span",G_)):H("",!0),e("span",{class:ce(["text-sm font-bold",m.value.state==="true"||m.value.state===!0?"text-[var(--color-success)]":"text-zinc-500"])},S(m.value.state==="true"||m.value.state===!0?"节点在线":"离线"),3)])],2)]),e("div",W_,[t(Y,{theme:"primary",size:"large",loading:K.value,block:"",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow text-base",onClick:k},{icon:o(()=>[t(_(_t))]),default:o(()=>[N[33]||(N[33]=p(" 使用此隧道 ",-1))]),_:1},8,["loading"])])])],64)):(l(),x("div",J_,[e("div",X_,[t(_(bt),{size:"40px",class:"text-zinc-400"})]),N[34]||(N[34]=e("h3",{class:"text-base font-bold text-zinc-700 dark:text-zinc-300 mb-1"},"未选择隧道",-1)),N[35]||(N[35]=e("p",{class:"text-sm text-zinc-500"},"请在左侧列表中选择一个隧道以查看详细信息",-1))]))])])])):(l(),x("div",Gy,[e("div",Wy,[N[11]||(N[11]=e("div",{class:"absolute -top-20 -right-20 w-60 h-60 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),N[12]||(N[12]=e("div",{class:"absolute -bottom-10 -left-10 w-40 h-40 bg-[var(--color-primary)]/10 rounded-full blur-3xl pointer-events-none"},null,-1)),e("div",Jy,[N[8]||(N[8]=e("div",{class:"w-20 h-20 bg-[var(--color-primary)]/10 rounded-2xl flex items-center justify-center mb-6 shadow-sm border border-[var(--color-primary)]/20 overflow-hidden p-2"},[e("img",{src:"https://panel.chmlfrp.net/favicon.ico",alt:"logo",class:"w-full h-full object-contain"})],-1)),N[9]||(N[9]=e("h2",{class:"text-2xl font-extrabold text-[var(--td-text-color-primary)] !mb-2 tracking-tight"},"登录 ChmlFrp",-1)),N[10]||(N[10]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] !mb-6 font-medium"}," 使用浏览器完成官方授权,MSLX 会自动同步您的 ChmlFrp 账户 ",-1)),n.value?(l(),x("div",Qy,[e("div",Yy,[N[4]||(N[4]=e("div",{class:"text-xs font-bold uppercase tracking-widest text-[var(--td-text-color-secondary)]"},"设备码",-1)),e("div",Zy,S(n.value.user_code||"-"),1)]),e("div",e_,[t(Y,{block:"",theme:"primary",size:"large",class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50",onClick:N[0]||(N[0]=Me=>q())},{default:o(()=>[...N[5]||(N[5]=[p(" 重新打开授权页 ",-1)])]),_:1})]),e("div",t_,[t(Y,{variant:"text",size:"small",loading:u.value,class:"!h-auto !px-0 text-[var(--color-primary)]",onClick:P},{default:o(()=>[...N[6]||(N[6]=[p(" 重新开始授权 ",-1)])]),_:1},8,["loading"])])])):(l(),x("div",Xy,[t(Y,{block:"",theme:"primary",size:"large",loading:u.value,class:"!rounded-xl !h-12 !font-bold shadow-md shadow-[var(--color-primary-light)]/30 hover:shadow-[var(--color-primary-light)]/50",onClick:P},{icon:o(()=>[t(_(mo))]),default:o(()=>[N[3]||(N[3]=p(" 浏览器授权登录 ",-1))]),_:1},8,["loading"])])),I.value?(l(),x("div",o_,S(I.value),1)):H("",!0),e("div",s_,[t(Y,{variant:"text",size:"small",class:"text-zinc-500 hover:text-[var(--color-primary)]",onClick:N[1]||(N[1]=Me=>_(Ie)("https://panel.chmlfrp.net"))},{default:o(()=>[...N[7]||(N[7]=[p("ChmlFrp 控制台",-1)])]),_:1})])])])])),a.value?(l(),G(qy,{key:2,visible:a.value,"onUpdate:visible":N[2]||(N[2]=Me=>a.value=Me),onSuccess:A},null,8,["visible"])):H("",!0)])}}}),Y_=ue(Q_,[["__scopeId","data-v-afef353c"]]),Z_={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},e2={class:"design-card list-item-anim flex flex-col sm:flex-row sm:items-center justify-between gap-5 p-5 sm:p-6 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left",style:{"animation-delay":"0s"}},t2={class:"flex items-center shrink-0"},o2={class:"relative w-full"},s2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},a2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},l2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},r2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},n2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},i2={class:"list-item-anim",style:{"animation-delay":"0.1s"}},d2=ie({__name:"index",setup(s){const a=h(1);return(r,d)=>{const i=g("t-radio-button"),c=g("t-radio-group");return l(),x("div",Z_,[e("div",e2,[d[7]||(d[7]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex flex-col"},[e("h2",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none tracking-tight"},"创建穿透隧道"),e("span",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 font-medium"},"选择适合您的内网穿透服务,快速将本地服务器暴露至公网以进行联机···")])],-1)),e("div",t2,[t(c,{modelValue:a.value,"onUpdate:modelValue":d[0]||(d[0]=f=>a.value=f),variant:"default-filled"},{default:o(()=>[t(i,{value:1},{default:o(()=>[...d[1]||(d[1]=[p("MSLFrp",-1)])]),_:1}),t(i,{value:2},{default:o(()=>[...d[2]||(d[2]=[p("MSL 联机",-1)])]),_:1}),t(i,{value:3},{default:o(()=>[...d[3]||(d[3]=[p("ME Frp",-1)])]),_:1}),t(i,{value:4},{default:o(()=>[...d[4]||(d[4]=[p("ChmlFrp",-1)])]),_:1}),t(i,{value:5},{default:o(()=>[...d[5]||(d[5]=[p("Sakura Frp",-1)])]),_:1}),t(i,{value:888},{default:o(()=>[...d[6]||(d[6]=[p("自定义配置",-1)])]),_:1})]),_:1},8,["modelValue"])])]),e("div",o2,[Be(e("div",s2,[t(Zx)],512),[[Re,a.value===1]]),Be(e("div",a2,[t(vg)],512),[[Re,a.value===2]]),Be(e("div",l2,[t(hh)],512),[[Re,a.value===3]]),Be(e("div",r2,[t(Y_)],512),[[Re,a.value===4]]),Be(e("div",n2,[t(wy)],512),[[Re,a.value===5]]),Be(e("div",i2,[t(_b)],512),[[Re,a.value===888]])])])}}}),c2=ue(d2,[["__scopeId","data-v-02481195"]]),u2=Object.freeze(Object.defineProperty({__proto__:null,default:c2},Symbol.toStringTag,{value:"Module"})),m2={class:"h-[38px] shrink-0 bg-transparent border-b border-[var(--td-component-border)] flex items-center px-4 relative z-10"},p2={class:"text-[var(--td-text-color-secondary)] text-xs font-mono"},v2=ie({__name:"ConsoleTerminal",props:{frpId:{}},emits:["update"],setup(s,{expose:a,emit:r}){const d=s,i=r,c=Te(),f=h(null),n=h(null);let v=null,I=null,u=null,L=null,w=null;const A={dark:{background:"transparent",foreground:"#cccccc",cursor:"transparent",selectionBackground:"#264f78",black:"#000000",red:"#cd3131",green:"#0dbc79",yellow:"#e5e510",blue:"#2472c8",magenta:"#bc3fbc",cyan:"#11a8cd",white:"#e5e5e5",brightBlack:"#666666",brightRed:"#f14c4c",brightGreen:"#23d18b",brightYellow:"#f5f543",brightBlue:"#3b8eea",brightMagenta:"#d670d6",brightCyan:"#29b8db",brightWhite:"#e5e5e5"},light:{background:"transparent",foreground:"#333333",cursor:"transparent",selectionBackground:"#add6ff",black:"#000000",red:"#cd3131",green:"#00bc79",yellow:"#9d9d10",blue:"#2472c8",magenta:"#bc3fbc",cyan:"#11a8cd",white:"#e5e5e5",brightBlack:"#666666",brightRed:"#f14c4c",brightGreen:"#23d18b",brightYellow:"#aeae11",brightBlue:"#3b8eea",brightMagenta:"#d670d6",brightCyan:"#29b8db",brightWhite:"#e5e5e5"}};ye.enabled=!0;const m=K=>K?(K=K.replace(/^(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}(\.\d{3})?)/,k=>ye.gray(k)),K=K.replace(/\[I\]/g,ye.green("[I]")),K=K.replace(/\[W\]/g,ye.yellow("[W]")),K=K.replace(/\[E\]/g,ye.red("[E]")),K=K.replace(/(success)/gi,k=>ye.bold.green(k)),K=K.replace(/(start|starting)/gi,k=>ye.blue(k)),K=K.replace(/(failed|error)/gi,k=>ye.bgRed.white(` ${k} `)),K=K.replace(/(:\d{4,5})/g,k=>ye.cyan(k)),K=K.replace(/(\[[0-9a-f]{8,}\])/g,k=>ye.magenta(k)),K):"",z=()=>{if(!n.value||!f.value)return;if(v){v.clear(),R();return}const K=document.documentElement.getAttribute("theme-mode")==="dark";v=new ma({cursorBlink:!1,cursorStyle:"bar",fontSize:14,fontFamily:'"Maple Mono", "Maple Mono CN", "Cascadia Code", Consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace',lineHeight:1.4,theme:K?A.dark:A.light,allowTransparency:!0,disableStdin:!0,convertEol:!0}),I=new pa,v.loadAddon(I),v.open(n.value);const k=()=>{if(n.value&&n.value.clientWidth>0&&n.value.clientHeight>0)try{I?.fit(),v?.scrollToBottom()}catch(V){console.warn(V)}};u=new ResizeObserver(()=>window.requestAnimationFrame(k)),u.observe(f.value),setTimeout(k,100),R()},b=()=>{if(!v)return;const K=document.documentElement.getAttribute("theme-mode")==="dark";v.options.theme=K?A.dark:A.light},R=()=>{v?.writeln("\x1B[1;34m[System]\x1B[0m 正在初始化Frp控制台 ..."),v?.writeln(`\x1B[1;34m[System]\x1B[0m ID: ${d.frpId} | 状态: \x1B[32m已就绪!\x1B[0m`)},C=async()=>{if(w)try{await w.stop(),w=null}catch(K){console.error(K)}},M=async()=>{if(await C(),!d.frpId)return;const{baseUrl:K,token:k}=c,V=new URL("/api/hubs/frpLogsHub",K||window.location.origin);k&&V.searchParams.append("x-user-token",k),w=new Ct().withUrl(V.toString(),{withCredentials:!1}).configureLogging(jt.Warning).withAutomaticReconnect([0,2e3,5e3,1e4,3e4]).build(),w.on("ReceiveLog",y=>{v?.writeln(m(y)),y.includes("[MSLX]")&&setTimeout(()=>{i("update")},2e3)}),w.onreconnecting(y=>{v?.writeln("\x1B[1;33m[System] 检测到连接中断,正在尝试重连...\x1B[0m"),console.warn("SignalR Reconnecting:",y)}),w.onreconnected(async()=>{v?.writeln("\x1B[1;32m[System] 网络已恢复,重新连接日志服务...\x1B[0m");try{await w?.invoke("JoinGroup",d.frpId),v?.writeln("\x1B[1;32m[System] 日志服务成功重新连接!\x1B[0m")}catch(y){v?.writeln(`\x1B[1;31m[Error] 重新连接日志服务失败: ${y.message}\x1B[0m`)}}),w.onclose(y=>{y&&(v?.writeln(`\x1B[1;31m[System] 日志服务连接已断开: ${y.message}\x1B[0m`),v?.writeln("\x1B[1;31m[System] 请刷新页面或检查网络连接。\x1B[0m"))});try{await w.start(),v?.writeln("\x1B[1;32m[System] 成功连接到Frpc日志服务\x1B[0m"),await w.invoke("JoinGroup",d.frpId)}catch(y){v?.writeln(`\x1B[1;31m[Error] 连接失败: ${y.message}\x1B[0m`)}},B=K=>v?.writeln(K),D=()=>{v?.clear(),R()};let q=0;const P=K=>{q=K.touches[0].clientY},j=K=>{if(!v)return;const k=K.touches[0].clientY,V=q-k,y=19.6,$=Math.trunc(V/y);Math.abs($)>=1&&(v.scrollLines($),q=k+V%y)};return a({writeln:B,clear:D}),_e(()=>d.frpId,async K=>{K&&(z(),await M())}),ze(async()=>{await yt(),z(),L=new MutationObserver(b),L.observe(document.documentElement,{attributes:!0,attributeFilter:["theme-mode"]}),d.frpId&&await M()}),He(async()=>{L?.disconnect(),await C(),v?.dispose(),u?.disconnect()}),(K,k)=>(l(),x("div",{ref_key:"terminalWrapper",ref:f,class:"terminal-wrapper flex-1 flex flex-col bg-[var(--td-bg-color-container)]/80 border border-[var(--td-component-border)] rounded-xl overflow-hidden shadow-sm relative w-full h-full"},[e("div",m2,[k[0]||(k[0]=e("div",{class:"flex gap-1.5 mr-4"},[e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#ff5f56]"}),e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#ffbd2e]"}),e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#27c93f]"})],-1)),e("div",p2,"MSLX - Frp 控制台 | "+S(s.frpId),1)]),e("div",{ref_key:"terminalBody",ref:n,class:"absolute top-[38px] bottom-[50px] left-0 right-0 py-1.5 pl-2.5 z-[1] terminal-body-container",onTouchstart:P,onTouchmove:dt(j,["prevent"])},null,544)],512))}}),f2=ue(v2,[["__scopeId","data-v-ac76d718"]]),go=(s,a=!0,r="复制成功")=>new Promise((d,i)=>{navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(s).then(()=>{a&&U.success(r),d()}).catch(()=>{Os(s,a,r,d,i)}):Os(s,a,r,d,i)});function Os(s,a,r,d,i){try{const c=document.createElement("textarea");c.value=s,c.style.top="0",c.style.left="0",c.style.position="fixed",document.body.appendChild(c),c.focus(),c.select();const f=document.execCommand("copy");document.body.removeChild(c),f?(a&&U.success(r),d()):(a&&U.error("复制失败"),i(new Error("execCommand returned false")))}catch(c){a&&U.error("复制出错"),i(c)}}const b2={class:"flex flex-col gap-5"},x2={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-xl border border-[var(--td-component-border)] shadow-sm p-5"},g2={class:"flex justify-between items-center mb-5"},h2={class:"relative flex h-2.5 w-2.5"},y2={key:0,class:"animate-ping absolute inline-flex h-full w-full rounded-full bg-[var(--color-success)] opacity-75"},_2={class:"flex flex-col gap-3"},w2={class:"flex gap-3 w-full mt-2"},k2={class:"design-card flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-xl border border-[var(--td-component-border)] shadow-sm p-5"},$2={class:"flex justify-between items-center mb-4 pb-4 border-b border-zinc-200/60 dark:border-zinc-700/60"},z2={class:"flex flex-col"},C2={class:"flex justify-between items-center py-2"},A2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},S2={class:"font-mono font-bold text-sm text-[var(--td-text-color-primary)]"},I2={key:0,class:"text-[11px] font-bold text-zinc-400 mb-1.5"},V2={class:"flex justify-between items-center py-1.5"},U2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},M2=["onClick"],L2={class:"flex justify-between items-center py-1.5"},B2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},T2={class:"text-xs font-bold text-[var(--color-primary)] uppercase"},R2={class:"flex justify-between items-center py-1.5"},j2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},P2=["onClick"],E2={key:1,class:"flex justify-between items-center py-1.5"},D2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},F2=["onClick"],O2={class:"flex justify-between items-center py-1.5"},N2={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},K2={class:"font-mono text-xs text-[var(--td-text-color-secondary)]"},q2={key:1,class:"py-8 text-center flex flex-col items-center justify-center opacity-60"},H2={class:"text-xs font-medium text-zinc-500"},G2=ie({__name:"ControlPanel",props:{frpId:{},isRunning:{type:Boolean},loading:{type:Boolean},tunnelInfo:{}},emits:["start","stop","clear-log","edit-config"],setup(s){const a=Te();return(r,d)=>{const i=g("t-tag"),c=g("t-button"),f=g("t-tooltip");return l(),x("div",b2,[e("div",x2,[e("div",g2,[e("div",{class:ce(["flex items-center gap-2 font-bold text-sm",s.isRunning?"text-[var(--color-success)]":"text-zinc-500"])},[e("span",h2,[s.isRunning?(l(),x("span",y2)):H("",!0),e("span",{class:ce(["relative inline-flex rounded-full h-2.5 w-2.5",s.isRunning?"bg-[var(--color-success)]":"bg-zinc-400 dark:bg-zinc-600"])},null,2)]),p(" "+S(s.isRunning?"运行中":"未运行"),1)],2),t(i,{theme:s.isRunning?"success":"default",variant:"light",class:"!rounded !font-bold"},{default:o(()=>[p(S(s.isRunning?"状态正常":"已停止"),1)]),_:1},8,["theme"])]),e("div",_2,[s.isRunning?(l(),G(c,{key:1,theme:"danger",block:"",loading:s.loading,class:"!rounded-lg !h-10 !font-bold shadow-sm",onClick:d[1]||(d[1]=n=>r.$emit("stop"))},{icon:o(()=>[t(_(uo))]),default:o(()=>[d[5]||(d[5]=p("停止服务 ",-1))]),_:1},8,["loading"])):(l(),G(c,{key:0,theme:"primary",block:"",loading:s.loading,class:"!rounded-lg !h-10 !font-bold shadow-sm",onClick:d[0]||(d[0]=n=>r.$emit("start"))},{icon:o(()=>[t(_(_t))]),default:o(()=>[d[4]||(d[4]=p("启动服务 ",-1))]),_:1},8,["loading"])),e("div",w2,[t(c,{variant:"outline",theme:"warning",class:"flex-1 !rounded-lg !h-8 !bg-amber-500/10 !border-amber-500/30 !text-amber-600 dark:!text-amber-400 hover:!bg-amber-500/20",onClick:d[2]||(d[2]=n=>r.$emit("clear-log"))},{icon:o(()=>[t(_(Ee))]),default:o(()=>[d[6]||(d[6]=p("清空日志 ",-1))]),_:1}),_(a).isAdmin?(l(),G(c,{key:0,variant:"outline",theme:"default",class:"flex-1 !rounded-lg !h-8 !bg-zinc-100 dark:!bg-zinc-800 !border-zinc-200 dark:!border-zinc-700 !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700",onClick:d[3]||(d[3]=n=>r.$emit("edit-config"))},{icon:o(()=>[t(_(fl))]),default:o(()=>[d[7]||(d[7]=p("配置文件 ",-1))]),_:1})):H("",!0)])])]),e("div",k2,[e("div",$2,[d[10]||(d[10]=e("h3",{class:"text-sm font-bold text-[var(--td-text-color-primary)] m-0"},"隧道概览",-1)),s.tunnelInfo?.proxies?.some(n=>n.type==="xtcp")?(l(),G(i,{key:0,variant:"light-outline",theme:"primary",class:"!rounded !font-bold"},{default:o(()=>[...d[8]||(d[8]=[p("联机房间 - 房主",-1)])]),_:1})):s.tunnelInfo?.proxies?.some(n=>n.type==="xtcp - Visitors")?(l(),G(i,{key:1,variant:"light-outline",theme:"primary",class:"!rounded !font-bold"},{default:o(()=>[...d[9]||(d[9]=[p("联机房间 - 访客",-1)])]),_:1})):(l(),G(c,{key:2,shape:"circle",variant:"text",size:"small",class:"!text-zinc-400 hover:!text-[var(--color-primary)]"},{default:o(()=>[t(_(Tt),{size:"14px"})]),_:1}))]),e("div",z2,[e("div",C2,[e("div",A2,[t(_(at),{size:"14px"}),d[11]||(d[11]=p(" 隧道实例 ID",-1))]),e("div",S2,"#"+S(s.frpId),1)]),s.tunnelInfo?.proxies?.length>0?(l(!0),x(le,{key:0},ge(s.tunnelInfo.proxies,(n,v)=>(l(),x("div",{key:v,class:"flex flex-col gap-2 pt-4 mt-3 border-t border-dashed border-zinc-200 dark:border-zinc-700/60"},[s.tunnelInfo.proxies.length>1?(l(),x("div",I2," 配置 #"+S(v+1),1)):H("",!0),e("div",V2,[e("div",U2,[t(_(bt),{size:"14px"}),p(" "+S(n.type.includes("xtcp")?"房间号":"名称"),1)]),t(f,{content:n.proxyName,placement:"top","show-arrow":"","destroy-on-close":""},{default:o(()=>[e("div",{class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate max-w-[140px] cursor-pointer hover:text-[var(--color-primary)] transition-colors",onClick:I=>_(go)(n.proxyName,!0,`${n.type.includes("xtcp")?"房间号":"隧道名称"}已复制!`)},S(n.proxyName),9,M2)]),_:2},1032,["content"])]),e("div",L2,[e("div",B2,[t(_(ta),{size:"14px"}),d[12]||(d[12]=p(" 协议",-1))]),e("div",T2,S(n.type),1)]),e("div",R2,[e("div",j2,[t(_(Bt),{size:"14px"}),p(" "+S(n.type.includes("xtcp")?"密钥":"远程地址"),1)]),t(f,{content:n.remoteAddressMain,placement:"top","show-arrow":"","destroy-on-close":""},{default:o(()=>[e("div",{class:"font-mono font-bold text-xs text-[var(--td-text-color-primary)] truncate max-w-[140px] cursor-pointer hover:text-[var(--color-primary)] transition-colors",onClick:I=>_(go)(n.remoteAddressMain,!0,`${n.type.includes("xtcp")?"房间密钥":"连接地址"}已复制!`)},S(n.remoteAddressMain||"获取中..."),9,P2)]),_:2},1032,["content"])]),n.remoteAddressBackup&&n.remoteAddressBackup!==n.remoteAddressMain?(l(),x("div",E2,[e("div",D2,[t(_(Bt),{size:"14px"}),d[13]||(d[13]=p(" 备用地址",-1))]),t(f,{content:n.remoteAddressBackup,placement:"top","show-arrow":"","destroy-on-close":""},{default:o(()=>[e("div",{class:"font-mono font-bold text-xs text-[var(--td-text-color-primary)] truncate max-w-[140px] cursor-pointer hover:text-[var(--color-primary)] transition-colors",onClick:I=>_(go)(n.remoteAddressBackup,!0,"备用连接地址已复制!")},S(n.remoteAddressBackup),9,F2)]),_:2},1032,["content"])])):H("",!0),e("div",O2,[e("div",N2,[t(_(Tt),{size:"14px"}),d[14]||(d[14]=p(" 本地地址",-1))]),e("div",K2,S(n.localAddress),1)])]))),128)):(l(),x("div",q2,[t(_(at),{size:"24px",class:"text-zinc-400 mb-2"}),e("span",H2,S(s.loading?"加载配置中...":"暂无隧道信息"),1)]))])])])}}}),W2=ue(G2,[["__scopeId","data-v-998b345f"]]),J2={class:"flex flex-col gap-2"},X2={class:"border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl overflow-hidden shadow-inner bg-white dark:bg-zinc-900/30"},Q2={class:"flex justify-end items-center gap-4 px-1 text-[11.5px] font-mono text-[var(--td-text-color-secondary)] tracking-wider"},Y2={class:"text-[var(--color-primary)] font-medium bg-[var(--color-primary)]/10 px-1.5 py-0.5 rounded"},Z2={class:"flex justify-between items-center w-full mt-2"},ew={class:"flex"},tw={class:"flex items-center gap-2"},ow=ie({__name:"FileEditor",props:{visible:Boolean,fileName:String,content:String,loading:Boolean},emits:["update:visible","save"],setup(s,{emit:a}){const r=s,d=a,i=async()=>{if(!c.value)return;const w=r.fileName?.split(".").pop()?.toLowerCase();let A="",m=[];switch(w){case"json":A="json",m=[zs,Cs];break;case"yml":case"yaml":A="yaml",m=[pr];break;case"js":case"ts":A="babel",m=[zs,Cs];break;case"css":case"less":case"scss":A="css",m=[mr];break;case"html":case"xml":A="html",m=[ur];break;default:U.warning("该文件类型暂不支持自动格式化");return}try{const z=await cr.format(c.value,{parser:A,plugins:m,tabWidth:2,printWidth:80,semi:!0,singleQuote:!0});c.value=z,U.success("格式化成功")}catch(z){console.error(z),U.error(`格式化失败: 请检查语法错误 -${z.message.split(` -`)[0]}`)}},c=h(""),f=h(!1);let n=null;const v=()=>{const w=document.documentElement.getAttribute("theme-mode");f.value=w==="dark"};ze(()=>{v(),n=new MutationObserver(v),n.observe(document.documentElement,{attributes:!0,attributeFilter:["theme-mode"]})}),He(()=>{n?.disconnect()}),_e(()=>r.content,w=>{c.value=w||""},{immediate:!0});const I=te(()=>{const w=[];switch(f.value&&w.push(tr),w.push(or.phrases.of({Find:"查找内容...",Replace:"替换为...",next:"下一个",previous:"上一个",all:"选中所有","match case":"区分大小写","by word":"全字匹配",regexp:"正则表达式",replace:"替换","replace all":"替换全部",close:"关闭"})),r.fileName?.split(".").pop()?.toLowerCase()){case"json":w.push(dr());break;case"yml":case"yaml":w.push(ir());break;case"js":case"ts":w.push(nr());break;case"css":case"less":case"scss":w.push(rr());break;case"html":case"xml":w.push(lr());break;case"toml":case"ini":case"conf":w.push(sr.define(ar));break}return w}),u=()=>{d("update:visible",!1)},L=()=>{d("save",c.value)};return(w,A)=>{const m=g("t-button"),z=g("t-dialog");return l(),G(z,{visible:s.visible,header:`正在编辑: ${s.fileName}`,width:"90%",attach:"body",top:"2vh",class:"editor-dialog",onClose:u},{footer:o(()=>[e("div",Z2,[e("div",ew,[t(m,{variant:"outline",theme:"default",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:i},{default:o(()=>[...A[1]||(A[1]=[p(" 自动格式化 ",-1)])]),_:1})]),e("div",tw,[t(m,{variant:"outline",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:u},{default:o(()=>[...A[2]||(A[2]=[p(" 取消 ",-1)])]),_:1}),t(m,{theme:"primary",class:"!rounded-lg shadow-sm",loading:r.loading,onClick:L},{default:o(()=>[...A[3]||(A[3]=[p(" 保存 ",-1)])]),_:1},8,["loading"])])])]),default:o(()=>[e("div",J2,[e("div",X2,[t(_(bl),{modelValue:c.value,"onUpdate:modelValue":A[0]||(A[0]=b=>c.value=b),placeholder:"文件内容为空...",style:{height:"60vh",fontSize:"14px"},autofocus:!0,"indent-with-tab":!0,"tab-size":2,extensions:I.value},null,8,["modelValue","extensions"])]),e("div",Q2,[e("span",null,"行数: "+S(c.value.split(` -`).length),1),e("span",null,"长度: "+S(c.value.length),1),e("span",Y2,S(f.value?"Dark Mode":"Light Mode"),1)])])]),_:1},8,["visible","header"])}}}),Pa=ue(ow,[["__scopeId","data-v-454d5ea2"]]),sw={class:"h-auto md:h-full flex flex-col md:flex-row gap-5 overflow-y-auto md:overflow-hidden pb-3 box-border relative"},aw={class:"list-item-anim w-full min-h-[400px] shrink-0 md:flex-1 md:min-h-0 md:h-full flex flex-col",style:{"animation-delay":"0s"}},lw={class:"list-item-anim w-full md:w-80 lg:w-[340px] shrink-0 h-auto md:h-full overflow-y-auto custom-scrollbar md:pr-1 flex flex-col hide-scrollbar-on-mobile",style:{"animation-delay":"0.1s"}},rw=ie({__name:"index",setup(s){const a=Lo(),r=Ye(),d=h(parseInt(r.params.frpId)||0),i=h(!1),c=h(!1),f=h(null),n=h(!1),v=h(""),I=h(""),u=h(!1),L=h(null);async function w(){if(d.value)try{f.value=await Si(d.value),i.value=f.value.isRunning,await a.getTunnels()}catch(M){console.error("获取隧道信息失败",M),L.value?.writeln(`\x1B[1;31m[Error] 获取隧道信息失败: ${M}\x1B[0m`)}}const A=async()=>{c.value=!0;try{L.value?.writeln("\x1B[1;32m[System] 正在发送启动指令...\x1B[0m"),await js("start",d.value),i.value=!0,U.success("启动指令已发送"),setTimeout(w,1500),L.value?.writeln("\x1B[1;35m\x1B[1m[TIPS] 注意:日志可能包含您的在线服务商的Token信息,若需要截图,请将关键信息打码处理!\x1B[0m")}catch(M){L.value?.writeln(`\x1B[1;31m[Error] Frpc启动失败: ${M.message}\x1B[0m`)}finally{c.value=!1}},m=async()=>{c.value=!0;try{L.value?.writeln("\x1B[1;32m[System] 正在发送停止指令...\x1B[0m"),await js("stop",d.value),i.value=!1,U.warning("停止指令已发送"),setTimeout(w,1e3)}catch(M){L.value?.writeln(`\x1B[1;31m[Error] Frpc停止失败: ${M.message}\x1B[0m`)}finally{c.value=!1}},z=()=>{L.value?.clear()},b=()=>{const M=Ke.confirm({header:"警告",body:`直接编辑配置文件可能会导致服务无法启动或异常。正常情况在线服务商提供的配置文件也不能修改。请确保您了解配置文件的格式和内容。 - -是否继续?`,theme:"warning",onConfirm:async()=>{M.hide(),await R()}})},R=async()=>{const M=U.loading("正在读取配置文件...");try{let B="toml";const D=a.frpList.find(K=>K.id===d.value);D&&D.configType&&(B=D.configType.toLowerCase());const q=`frpc.${B}`,P=`${d.value}/${q}`,j=await Uo(0,P);v.value=q,I.value=j,n.value=!0,U.close(M)}catch(B){U.close(M),U.error("读取配置文件失败: "+B.message),L.value?.writeln(`\x1B[1;31m[Error] 读取配置文件失败: ${B.message}\x1B[0m`)}},C=async M=>{u.value=!0;try{const B=`${d.value}/${v.value}`;await ms(0,B,M),U.success("配置文件保存成功"),n.value=!1,L.value?.writeln("\x1B[1;32m[System] 配置文件已更新,请重启服务以生效。\x1B[0m")}catch(B){U.error("保存失败"),L.value?.writeln(`\x1B[1;31m[Error] 保存失败: ${B.message}\x1B[0m`)}finally{u.value=!1}};return _e(()=>r.params.frpId,async M=>{r.name==="FrpConsole"&&M&&(d.value=parseInt(M),await w())}),ze(()=>{d.value&&w()}),(M,B)=>(l(),x("div",sw,[e("div",aw,[t(f2,{ref_key:"terminalRef",ref:L,"frp-id":d.value,onUpdate:B[0]||(B[0]=D=>w())},null,8,["frp-id"])]),e("div",lw,[t(W2,{"frp-id":d.value,"is-running":i.value,loading:c.value,"tunnel-info":f.value,onStart:A,onStop:m,onClearLog:z,onEditConfig:b},null,8,["frp-id","is-running","loading","tunnel-info"])]),t(Pa,{visible:n.value,"onUpdate:visible":B[1]||(B[1]=D=>n.value=D),"file-name":v.value,content:I.value,loading:u.value,onSave:C},null,8,["visible","file-name","content","loading"])]))}}),nw=ue(rw,[["__scopeId","data-v-7b7858f8"]]),iw=Object.freeze(Object.defineProperty({__proto__:null,default:nw},Symbol.toStringTag,{value:"Module"})),po=zt("instanceHub",()=>{const s=Te(),a=h(null),r=h(!1),d=h(null),i=h(0),c=h(0);let f=Promise.resolve();const n=h({cpu:0,memBytes:0,memPercent:0}),v=new Set,I=new Set,u=new Set,L=new Set,w=new Set,A=new Set,m=K=>{c.value=K},z=K=>(f=f.then(async()=>{if(i.value++,a.value?.state==="Connected"&&d.value===K)return;a.value&&await R(),d.value=K,c.value=0;const{baseUrl:k,token:V}=s,y=new URL("/api/hubs/instanceControlHub",k||window.location.origin);V&&y.searchParams.append("x-user-token",V);const $=new Ct().withUrl(y.toString(),{withCredentials:!1}).configureLogging(jt.Warning).withAutomaticReconnect([0,2e3,5e3,1e4]).build();$.on("ReceiveLog",E=>{v.forEach(F=>F(E))}),$.on("RequireEULA",()=>{I.forEach(E=>E())}),$.on("CommandResult",(E,F)=>{u.forEach(J=>J(E,F))}),$.on("ReceiveStatus",(E,F,J)=>{if(String(E)!==String(K))return;let O=0;if(c.value>0){const N=c.value*1024*1024;O=J/N*100,O>100&&(O=100)}n.value={cpu:F,memBytes:J,memPercent:O}}),$.on("PlayerJoined",(E,F)=>{String(E)===String(K)&&L.forEach(J=>J(F))}),$.on("PlayerLeft",(E,F)=>{String(E)===String(K)&&w.forEach(J=>J(F))}),$.on("PlayerListCleared",E=>{String(E)===String(K)&&A.forEach(F=>F())}),$.onreconnecting(()=>v.forEach(E=>E("\x1B[1;31m[System] 连接中断,尝试重连...\x1B[0m"))),$.onreconnected(async()=>{v.forEach(E=>E("\x1B[1;32m[System] 网络恢复,重新加入会话...\x1B[0m"));try{await $.invoke("JoinGroup",K)}catch(E){console.error(E)}});try{await $.start(),await $.invoke("JoinGroup",K),a.value=$,r.value=!0,v.forEach(E=>E("\x1B[1;32m[System] 已连接到实例控制服务\x1B[0m"))}catch(E){r.value=!1,v.forEach(F=>F(`\x1B[1;31m[Error] 连接失败: ${E.message}\x1B[0m`)),d.value=null,a.value=null}}),f),b=()=>(f=f.then(async()=>{i.value>0&&i.value--,i.value===0&&await R()}),f),R=async()=>{if(a.value)try{a.value.state==="Connected"&&d.value&&await a.value.invoke("LeaveGroup",d.value),await a.value.stop()}catch(K){console.warn(K)}a.value=null,r.value=!1,d.value=null,c.value=0,n.value={cpu:0,memBytes:0,memPercent:0}};return{isConnected:r,stats:n,currentServerId:d,connect:z,disconnect:b,setMaxMemory:m,sendCommand:async K=>{if(!a.value||a.value.state!=="Connected"||!d.value)throw new Error("未连接到服务");await a.value.invoke("SendCommand",d.value,K)},onLog:K=>(v.add(K),()=>v.delete(K)),onEula:K=>(I.add(K),()=>v.delete(K)),onCommandResult:K=>(u.add(K),()=>u.delete(K)),onPlayerJoined:K=>(L.add(K),()=>L.delete(K)),onPlayerLeft:K=>(w.add(K),()=>w.delete(K)),onPlayerListCleared:K=>(A.add(K),()=>A.delete(K))}}),dw=Wt();ye.enabled=!0;const cw=(s,a=-1)=>s?(a===-1&&(a=dw.settings.webPanelColorizeLogLevel),a===0?s:(s=s.replace(/\n/g,`\r -`),s.includes("Done")&&s.includes("!")&&(s=s.replace(/Done \((.*?)\)!/g,(r,d)=>`${ye.green.bold("Done")} (${ye.blue(d)})!`)),s=s.replace(/\b(Server started|Starting Server)\b/g,r=>ye.green.bold(r)),s=s.replace(/\b(IPv4 supported|IPv6 supported)\b/g,r=>ye.cyan(r)),s.startsWith("[System]")&&(s=s.replace(/^\[System]/,`[${ye.blue.bold("System")}]`)),s.includes("[MSLX]")&&(s=s.replace(/\[MSLX]/g,`[${ye.magenta.bold("MSLX")}]`)),s.includes("[MSLX-Backup]")&&(s=s.replace(/\[MSLX-Backup]/g,`[${ye.magenta.bold("MSLX-Backup")}]`)),s.includes("[MSLX-Daemon]")&&(s=s.replace(/\[MSLX-Daemon]/g,`[${ye.magenta.bold("MSLX-Daemon")}]`)),s.startsWith(">>>")&&(s=s.replace(/^>>>/,ye.red.bold(">>>"))),a===1?(s=s.replace(/^\[[^\]]+\s+(INFO|WARN|WARNING|ERROR|FATAL|DEBUG)\]/,(d,i)=>{switch(i){case"INFO":return ye.green(d);case"WARN":case"WARNING":return ye.yellow(d);case"ERROR":case"FATAL":return ye.red(d);case"DEBUG":return ye.blue(d);default:return d}}),s=s.replace(/^\[\d{2}:\d{2}:\d{2}\]\s+\[[^/]+\/(INFO|WARN|WARNING|ERROR|FATAL|DEBUG)\]/,(d,i)=>{switch(i){case"INFO":return ye.green(d);case"WARN":case"WARNING":return ye.yellow(d);case"ERROR":case"FATAL":return ye.red(d);default:return d}}),(d=>{const i=/\u001b\[(0;)?31m/.test(d),c=/\b(ERROR|Exception|Caused by|at)\b/i.test(d);return i||c})(s)||(s=s.replace(/(?<=:\s|^)\s*([([][a-zA-Z0-9_\-.\s]+[)\]])(?=\s)/g,d=>ye.cyan(d))),s):/\u001b\[[\d;]*m/.test(s)?(s=s.replace(/(https?:\/\/[^\s]+)/g,r=>ye.blue.underline(r)),s):(s=s.replace(/^\[(\d{2}:\d{2}:\d{2})\s+(INFO|WARN|WARNING|ERROR|FATAL|DEBUG)\]:/,(r,d,i)=>{let c=i;switch(i){case"INFO":c=ye.green("INFO");break;case"WARN":case"WARNING":c=ye.yellow.bold("WARN");break;case"ERROR":case"FATAL":c=ye.red.bold(i);break;case"DEBUG":c=ye.blue("DEBUG");break}return`[${ye.gray(d)} ${c}]:`}),/^\[\d{2}:\d{2}:\d{2}\]/.test(s)&&(s=s.replace(/^\[(\d{2}:\d{2}:\d{2})\]/,(r,d)=>`[${ye.gray(d)}]`)),s=s.replace(/\[([^/]+)\/(INFO|WARN|WARNING|ERROR|FATAL|DEBUG)\]/g,(r,d,i)=>{const c=ye.blue(d);let f=i;switch(i){case"INFO":f=ye.green("INFO");break;case"WARN":f=ye.yellow("WARN");break;case"ERROR":f=ye.red.bold("ERROR");break}return`[${c}/${f}]`}),s=s.replace(/(?<=:\s|^)\s*\[([a-zA-Z0-9_\-.\s]+)\](?=\s)/g,(r,d)=>d==="System"||d.includes("MSLX")?r:` [${ye.bold.black(d)}]`),s=s.replace(/(https?:\/\/[^\s]+)/g,r=>ye.blue.underline(r)),s=s.replace(/\b\d+\.\d+[\w.+\-@]*(?ye.magenta(r)),s=s.replace(/\b\d+(\.\d+)?\s?(ms|s|%|MB|GB|KB)\b/gi,r=>ye.blue(r)),s=s.replace(/(\u001b\[[\d;]*m)|((?{if(d)return r;if(i){if(i.length>=4&&i.length<=6)return ye.blue(i);if(i.length<=3)return ye.blue(i)}return r}),s=s.replace(/(\*:\d{1,5})/,r=>ye.blue.bold(r)),s=s.replace(/\b(Loaded|Saved|Starting|Started|Connected)\b/g,r=>ye.green(r)),s=s.replace(/\bDone\b(?!\u001b)/g,ye.green.bold("Done")),s=s.replace(/\b(Failed|Exception|Error|Caused by|Stopping|Closed)\b/g,r=>ye.red.bold(r)),s=s.replace(/\b(Loading|Preparing|Generating|Saving|Using|Running)\b/g,r=>ye.magenta(r)),s=s.replace(/\b(Minecraft|Paper|Velocity|Java)\b/gi,r=>ye.bold.black(r)),s=s.replace(/'minecraft:[a-z_]+'/g,r=>ye.magenta(r)),s))):"",uw={class:"h-[38px] shrink-0 bg-transparent border-b border-[var(--td-component-border)] flex items-center px-4 relative z-10 select-none"},mw={class:"text-[var(--td-text-color-secondary)] text-xs font-mono truncate"},pw={class:"absolute bottom-0 left-0 right-0 h-[50px] flex items-center px-4 bg-transparent border-t border-[var(--td-component-border)] z-10 gap-3"},vw=ie({__name:"ServerTerminal",props:{serverId:{}},emits:["update"],setup(s,{expose:a,emit:r}){const d=s,i=r,c=po(),f=h(null),n=h(null);let v=null,I=null,u=null,L=null,w=null,A=null,m="";const z=h(""),b={dark:{background:"transparent",foreground:"#cccccc",cursor:"#cccccc",selectionBackground:"#264f78",black:"#000000",red:"#cd3131",green:"#0dbc79",yellow:"#e5e510",blue:"#2472c8",magenta:"#bc3fbc",cyan:"#11a8cd",white:"#e5e5e5",brightBlack:"#666666",brightRed:"#f14c4c",brightGreen:"#23d18b",brightYellow:"#f5f543",brightBlue:"#3b8eea",brightMagenta:"#d670d6",brightCyan:"#29b8db",brightWhite:"#e5e5e5"},light:{background:"transparent",foreground:"#333333",cursor:"#333333",selectionBackground:"#add6ff",black:"#000000",red:"#cd3131",green:"#00bc79",yellow:"#9d9d10",blue:"#2472c8",magenta:"#bc3fbc",cyan:"#11a8cd",white:"#e5e5e5",brightBlack:"#666666",brightRed:"#f14c4c",brightGreen:"#23d18b",brightYellow:"#f3d61a",brightBlue:"#3b8eea",brightMagenta:"#d670d6",brightCyan:"#29b8db",brightWhite:"#e5e5e5"}};ye.enabled=!0;const R=F=>cw(F),C=()=>{if(!n.value||!f.value)return;if(v){v.clear(),P();return}const F=document.documentElement.getAttribute("theme-mode")==="dark";v=new ma({cursorBlink:!1,cursorStyle:"bar",fontSize:14,fontFamily:'"Maple Mono", "Maple Mono CN", "Cascadia Code", Consolas, Menlo, "PingFang SC", "Microsoft YaHei", monospace',lineHeight:1.4,theme:F?b.dark:b.light,allowTransparency:!0,convertEol:!0}),I=new pa,v.loadAddon(I),v.open(n.value),v.onData(O=>M(O));const J=()=>{if(n.value&&n.value.clientWidth>0&&n.value.clientHeight>0)try{I?.fit()}catch(O){console.warn(O)}};u=new ResizeObserver(()=>window.requestAnimationFrame(J)),u.observe(f.value),setTimeout(J,100),P()},M=async F=>{!v||!d.serverId||(F==="\r"?(v.write(`\r -`),m.trim()&&await D(m),m=""):F===""?m.length>0&&(m=m.slice(0,-1),v.write("\b \b")):F>=" "&&(m+=F,v.write(F)))},B=async()=>{if(!z.value)return;const F=z.value;v?.writeln(F),await D(F),z.value=""},D=async F=>{try{await c.sendCommand(F)}catch(J){v?.writeln(`\x1B[1;31m[Error] ${J.message}\x1B[0m`)}},q=()=>{if(!v)return;const F=document.documentElement.getAttribute("theme-mode")==="dark";v.options.theme=F?b.dark:b.light},P=()=>{v?.writeln("\x1B[1;34m[System]\x1B[0m 正在连接服务器控制台 ..."),v?.writeln(`\x1B[1;34m[System]\x1B[0m 实例 ID: ${d.serverId}`),v?.writeln("")},j=async()=>{d.serverId&&(w&&w(),w=c.onLog(F=>{v&&v.writeln(R(F)),F.startsWith("[MSLX]")&&i("update")}),A&&A(),A=c.onCommandResult((F,J)=>{F||v?.writeln(`\x1B[1;31m[System] 指令执行反馈: ${J}\x1B[0m`)}),await c.connect(d.serverId))},K=async()=>{w&&w(),A&&A(),await c.disconnect()},k=F=>v?.writeln(F),V=()=>{v?.clear(),P()};let y=0;const $=F=>{y=F.touches[0].clientY},E=F=>{if(!v)return;const J=F.touches[0].clientY,O=y-J,N=19.6,Y=Math.trunc(O/N);Math.abs(Y)>=1&&(v.scrollLines(Y),y=J+O%N)};return a({writeln:k,clear:V}),_e(()=>d.serverId,async(F,J)=>{F!==J&&(await K(),C(),await j())}),ze(async()=>{await yt(),C(),L=new MutationObserver(q),L.observe(document.documentElement,{attributes:!0,attributeFilter:["theme-mode"]}),await j()}),He(async()=>{L?.disconnect(),u?.disconnect(),v?.dispose(),await K()}),(F,J)=>(l(),x("div",{ref_key:"terminalWrapper",ref:f,class:"terminal-wrapper flex-1 flex flex-col bg-[var(--td-bg-color-container)]/80 border border-[var(--td-component-border)] rounded-xl overflow-hidden shadow-sm relative w-full h-full"},[e("div",uw,[J[1]||(J[1]=e("div",{class:"flex gap-1.5 mr-4"},[e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#ff5f56]"}),e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#ffbd2e]"}),e("span",{class:"w-2.5 h-2.5 rounded-full bg-[#27c93f]"})],-1)),e("div",mw," MSLX 服务端控制台 | #"+S(s.serverId),1)]),e("div",{ref_key:"terminalBody",ref:n,class:"absolute top-[38px] bottom-[50px] left-0 right-0 py-1.5 pl-2.5 z-[1] terminal-body-container",onTouchstart:$,onTouchmove:dt(E,["prevent"])},null,544),e("div",pw,[Be(e("input",{"onUpdate:modelValue":J[0]||(J[0]=O=>z.value=O),class:"flex-1 h-8 bg-zinc-50/50 dark:bg-zinc-900/30 border border-zinc-200 dark:border-zinc-700 rounded-md px-3 text-[var(--td-text-color-primary)] font-mono text-[13px] outline-none transition-all focus:border-[var(--color-primary)] focus:bg-white dark:focus:bg-zinc-900 placeholder:text-zinc-400 dark:placeholder:text-zinc-500",placeholder:"发送控制台指令...",onKeyup:xl(B,["enter"])},null,544),[[ea,z.value]]),e("button",{class:"h-8 px-4 rounded-md bg-[var(--color-primary)] text-white text-[13px] font-medium transition-all hover:brightness-110 active:brightness-90",onClick:B}," 发送 ")])],512))}}),fw=ue(vw,[["__scopeId","data-v-72f4600a"]]),bw={class:"flex flex-col mx-auto w-full relative"},xw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},gw={class:"w-full md:w-[340px] shrink-0 flex items-center"},hw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},yw={class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},_w={class:"w-full md:w-[340px] shrink-0 flex items-center"},ww={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},kw={class:"w-full md:w-[340px] shrink-0 flex flex-col gap-2"},$w={key:0,class:"w-full"},zw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Cw={class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},Aw={class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},Sw={class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},Iw={class:"w-full md:w-[340px] shrink-0 flex items-center"},Vw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Uw={class:"w-full md:w-[340px] shrink-0 flex flex-col"},Mw={key:0,class:"mt-3 p-3 bg-zinc-50 dark:bg-zinc-800/50 border border-zinc-200 dark:border-zinc-700 rounded-lg flex flex-col gap-3"},Lw={class:"flex gap-2"},Bw={key:0,class:"flex flex-col gap-1 mt-1 text-xs text-zinc-500"},Tw={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Rw={class:"w-full md:w-[340px] shrink-0 flex items-center gap-2"},jw={class:"memory-input-group"},Pw={class:"memory-input-group"},Ew={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Dw={class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},Fw={class:"mt-2"},Ow={class:"text-xs text-zinc-400 hover:text-zinc-500 cursor-help flex items-center gap-1 w-max"},Nw={class:"w-full md:w-[340px] shrink-0 flex items-center gap-3 overflow-hidden"},Kw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},qw={class:"w-full md:w-[340px] shrink-0 flex flex-col gap-2"},Hw={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Gw={class:"w-full md:w-[340px] shrink-0 flex flex-col gap-2"},Ww={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Jw={class:"w-full md:w-[340px] shrink-0 flex items-center"},Xw={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Qw={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},Yw={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},Zw={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},ek={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},tk={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},ok={key:3,class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},sk={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},ak={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},lk={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},rk={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},nk={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},ik={class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},dk={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},ck={key:4,class:"flex flex-col md:flex-row md:items-center justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},uk={class:"w-full md:w-[340px] shrink-0 flex md:justify-end items-center"},mk={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},pk={class:"w-full md:w-[340px] shrink-0 flex items-center gap-3 overflow-hidden"},vk={class:"flex flex-col md:flex-row md:items-start justify-between p-3 md:p-4 border-b border-dashed border-zinc-100 dark:border-zinc-800/60 hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20 transition-colors rounded-xl"},fk={class:"w-full md:w-[340px] shrink-0 flex"},bk={key:5,class:"sticky bottom-1 z-50 ml-auto w-max flex items-center gap-2 p-1.5 mt-2 mb-2 border border-zinc-200/80 dark:border-zinc-800 bg-white dark:bg-zinc-900 shadow-xl shadow-black/10 dark:shadow-black/40 rounded-full transition-all"},xk={class:"flex flex-col gap-4 pt-2"},gk={class:"h-48 bg-zinc-950 rounded-xl p-3 overflow-y-auto font-mono text-xs text-zinc-300 shadow-inner border border-zinc-800"},hk={class:"text-zinc-600 mr-2 select-none"},yk={key:0,class:"text-right mt-2"},_k=ie({__name:"GeneralSettings",setup(s){const a=Ye(),r=Te(),d=te(()=>{const ee=a.params.serverId;return ee?parseInt(ee):NaN}),i=h(null),c=h(!1),f=h(!1),n=h(!1),v=[{label:"UTF-8",value:"utf-8"},{label:"GBK",value:"gbk"}],I=[{label:"UTF-8",value:"utf-8"},{label:"UTF-8 With BOM",value:"utf-8-bom"},{label:"GBK",value:"gbk"}],u=h({id:d.value,name:"",base:"",java:"",core:"",minM:1024,maxM:4096,args:"",yggdrasilApiAddr:"",backupMaxCount:20,backupDelay:10,backupPath:"MSLX://Backup/Instance",monitorPlayers:!0,autoRestart:!1,forceAutoRestart:!0,ignoreEula:!1,runOnStartup:!1,inputEncoding:"utf-8",outputEncoding:"utf-8",fileEncoding:"utf-8",coreUrl:"",coreSha256:"",coreFileKey:""}),L=h("MB"),w=h("MB"),A=[{label:"MB",value:"MB"},{label:"GB",value:"GB"}],m=te({get:()=>{if(L.value==="GB"){const ee=u.value.minM/1024;return Math.round(ee*100)/100}return u.value.minM},set:ee=>{u.value.minM=L.value==="GB"?Math.round(ee*1024):ee}}),z=te({get:()=>{if(w.value==="GB"){const ee=u.value.maxM/1024;return Math.round(ee*100)/100}return u.value.maxM},set:ee=>{u.value.maxM=w.value==="GB"?Math.round(ee*1024):ee}}),b=h("custom"),R=h([]),C=h([]),M=h(""),B=h(""),D=async(ee=!1)=>{try{ee&&U.info("正在扫描 Java 环境...");const T=await gs(r.userInfo.systemInfo.osType.toLowerCase().replace("os",""),r.userInfo.systemInfo.osArchitecture.toLowerCase());T&&Array.isArray(T)&&(R.value=T.map(he=>({label:`Java ${he} (在线)`,value:he})));const de=await hs(ee);C.value=de.map(he=>({label:`Java ${he.version} (${he.path})`,value:he.path})),ee&&U.success("刷新成功")}catch(T){console.error(T)}};_e([b,M,B],([ee,T,de])=>{ee==="none"?u.value.java="none":ee==="env"?u.value.java="java":ee==="custom"||ee==="local"?u.value.java=de:ee==="online"&&(u.value.java=T?`MSLX://Java/${T}`:"")});const q=h("MSLX://Backup/Instance"),P=h("");_e([q,P],([ee,T])=>{ee==="custom"?u.value.backupPath=T:u.value.backupPath=ee});const j=h(""),K=h(""),k=[{label:"官方/离线模式 (无)",value:"none"},{label:"MSL 统一身份验证 (MSL Skin)",value:"https://skin.mslmc.net/api/yggdrasil"},{label:"LittleSkin",value:"https://littleskin.cn/api/yggdrasil"},{label:"自定义服务器",value:"custom"}];_e([j,K],([ee,T])=>{ee==="none"?u.value.yggdrasilApiAddr="":ee==="custom"?u.value.yggdrasilApiAddr=T:u.value.yggdrasilApiAddr=ee});const V=h(!1),y=h(!1),$=h(null),E=h(!1),F=h(0),J=h(""),O=ee=>{u.value.core=ee.filename,u.value.coreUrl=ee.url,u.value.coreSha256=ee.sha256,u.value.coreFileKey="",V.value=!1,U.success(`已选择核心: ${ee.filename},保存后将自动下载`)},N=()=>$.value?.click(),Y=async ee=>{const T=ee.target;if(!T.files?.length)return;const de=T.files[0];if(u.value.coreFileKey)try{await Mt(u.value.coreFileKey)}catch{console.error("删除上传失败")}J.value=de.name,E.value=!0,F.value=0;try{const ne=(await qt()).uploadId,W=5*1024*1024,pe=Math.ceil(de.size/W);for(let Ce=0;Ce{n.value||la.warning({title:"风险操作",content:"修改实例路径会导致面板无法找到原有文件。请确保您已手动移动了文件,或您明确知道自己在做什么。",duration:5e3}),n.value=!n.value},ae=h(!1),me=h(0),fe=h([]),Se=h(null),Me=te(()=>b.value==="none"?{name:[{required:!0,message:"服务器名称不能为空",trigger:"blur"}],base:[{required:!0,message:"基础路径不能为空",trigger:"blur"}],args:[{required:!0,message:"自定义模式必须填写启动命令",trigger:"blur"}]}:{name:[{required:!0,message:"服务器名称不能为空",trigger:"blur"}],base:[{required:!0,message:"基础路径不能为空",trigger:"blur"}],java:[{required:!0,message:"Java 环境不能为空",trigger:"change"}],core:[{required:!0,message:"核心文件名不能为空",trigger:"change"}],minM:[{required:!0,message:"必填",trigger:"blur"}],maxM:[{required:!0,message:"必填",trigger:"blur"}]}),Z=async()=>{if(d.value){c.value=!0;try{await D(),u.value.id=d.value;const ee=await ni(d.value);if(u.value={...u.value,...ee,coreUrl:"",coreFileKey:"",coreSha256:""},L.value=ee.minM>0&&ee.minM%1024===0?"GB":"MB",w.value=ee.maxM>0&&ee.maxM%1024===0?"GB":"MB",n.value=!1,ee.java==="none")b.value="none";else if(ee.java==="java")b.value="env";else if(ee.java.startsWith("MSLX://Java/"))b.value="online",M.value=ee.java.replace("MSLX://Java/","");else{const he=C.value.find(ne=>ne.value===ee.java);b.value=he?"local":"custom",B.value=ee.java}const T=ee.backupPath;T==="MSLX://Backup/Instance"||T==="MSLX://Backup/Data"?q.value=T:(q.value="custom",P.value=T);const de=ee.yggdrasilApiAddr;de?de==="https://skin.mslmc.net/api/yggdrasil"?j.value="https://skin.mslmc.net/api/yggdrasil":de==="https://littleskin.cn/api/yggdrasil"?j.value="https://littleskin.cn/api/yggdrasil":(j.value="custom",K.value=de):j.value="none"}catch(ee){U.error("获取配置失败: "+ee.message)}finally{c.value=!1}}};_e(()=>a.params.serverId,ee=>{a.name==="InstanceConsole"&&ee&&Z()}),ze(Z);const se=async()=>{if(await i.value?.validate()===!0&&!(b.value!=="none"&&(u.value.coreUrl||u.value.coreFileKey)&&!await new Promise(he=>{const ne=Ke.confirm({header:"确认变更核心文件?",body:"检测到您上传或选择了新的核心文件,这将覆盖服务器现有的部署。",theme:"warning",onConfirm:()=>{ne.hide(),he(!0)},onClose:()=>{ne.hide(),he(!1)}})}))){b.value==="none"&&(u.value.core="none",u.value.minM=1027,u.value.maxM=1102,u.value.java="none",u.value.coreUrl="",u.value.coreFileKey="",u.value.coreSha256=""),f.value=!0;try{const T=await ii(u.value);T.data?.needListen??T.needListen?De():(U.success("配置已保存"),f.value=!1,Z())}catch(T){U.error(T.message||"保存失败"),f.value=!1}}},De=async()=>{ae.value=!0,me.value=0,fe.value=[];const{baseUrl:ee,token:T}=r,de=new URL("/api/hubs/updateProgressHub",ee||window.location.origin);de.searchParams.append("x-user-token",T),Se.value=new Ct().withUrl(de.toString(),{withCredentials:!1}).configureLogging(jt.None).build(),Se.value.on("UpdateStatus",(he,ne,W)=>{fe.value.push({time:new Date().toLocaleTimeString(),msg:W?`[错误] ${he}`:he}),yt(()=>{const pe=document.getElementById("update-log-box");pe&&(pe.scrollTop=pe.scrollHeight)}),ne>=0&&(me.value=Number(ne.toFixed(1))),ne===100&&(U.success("更新完成"),Le(!0))});try{await Se.value.start(),await Se.value.invoke("JoinGroup",d.value.toString())}catch{fe.value.push({time:"-",msg:"连接失败"})}},Le=(ee=!1)=>{Se.value?.stop(),setTimeout(()=>{ae.value=!1,f.value=!1,ee&&Z()},1e3)};return He(()=>{Se.value?.stop()}),(ee,T)=>{const de=g("t-input"),he=g("t-button"),ne=g("t-tooltip"),W=g("t-select"),pe=g("t-textarea"),Ve=g("t-alert"),Ce=g("t-icon"),Ue=g("t-progress"),we=g("t-input-number"),Ae=g("t-switch"),je=g("t-form"),Fe=g("t-loading"),Ze=g("t-dialog");return l(),x("div",bw,[t(Fe,{loading:c.value,"show-overlay":""},{default:o(()=>[t(je,{ref_key:"formRef",ref:i,disabled:!_(r).isAdmin,data:u.value,rules:Me.value,"label-width":"0",onSubmit:se},{default:o(()=>[T[65]||(T[65]=e("div",{class:"flex items-center gap-2 mt-5 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"基础设置")],-1)),e("div",xw,[T[35]||(T[35]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"服务器名称"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 在面板列表中显示的别名,支持中文 ")],-1)),e("div",gw,[t(de,{modelValue:u.value.name,"onUpdate:modelValue":T[0]||(T[0]=re=>u.value.name=re),placeholder:"请输入名称",class:"w-full"},null,8,["modelValue"])])]),e("div",hw,[e("div",yw,[T[36]||(T[36]=e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"实例路径",-1)),e("div",{class:ce(["text-xs mt-1 leading-relaxed",n.value?"text-amber-500":"text-[var(--td-text-color-secondary)]"])},S(n.value?"警告:修改路径可能导致无法找到原文件":"服务器文件的物理存储路径,非必要请勿修改"),3)]),e("div",_w,[t(de,{modelValue:u.value.base,"onUpdate:modelValue":T[1]||(T[1]=re=>u.value.base=re),disabled:!n.value,class:"w-full"},{suffix:o(()=>[t(ne,{content:n.value?"点击锁定":"点击解锁编辑 (慎重)"},{default:o(()=>[t(he,{variant:"text",shape:"square",class:"!rounded-md hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:be},{icon:o(()=>[n.value?(l(),G(_(gl),{key:0,class:"text-amber-500"})):(l(),G(_(Ot),{key:1,class:"text-zinc-400"}))]),_:1})]),_:1},8,["content"])]),_:1},8,["modelValue","disabled"])])]),T[66]||(T[66]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"运行模式")],-1)),e("div",ww,[T[37]||(T[37]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"启动方式"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 选择使用 Java 启动 Minecraft,或使用自定义命令启动其他程序 (如 Bedrock, Python 等) ")],-1)),e("div",kw,[t(W,{modelValue:b.value,"onUpdate:modelValue":T[2]||(T[2]=re=>b.value=re),class:"w-full",options:[{label:"MSLX 在线下载 (Java)",value:"online"},{label:"使用本地版本 (Java)",value:"local"},{label:"自定义路径 (Java)",value:"custom"},{label:"环境变量 (Java)",value:"env"},{label:"自定义命令 (无Java)",value:"none"}]},null,8,["modelValue"]),b.value!=="none"?(l(),x("div",$w,[b.value==="online"?(l(),G(W,{key:0,modelValue:M.value,"onUpdate:modelValue":T[3]||(T[3]=re=>M.value=re),options:R.value,placeholder:"请选择版本",filterable:""},null,8,["modelValue","options"])):H("",!0),b.value==="local"?(l(),G(W,{key:1,modelValue:B.value,"onUpdate:modelValue":T[4]||(T[4]=re=>B.value=re),options:C.value,placeholder:"选择已识别的 Java"},null,8,["modelValue","options"])):H("",!0),b.value==="custom"?(l(),G(de,{key:2,modelValue:B.value,"onUpdate:modelValue":T[5]||(T[5]=re=>B.value=re),placeholder:"输入 java 可执行文件完整路径"},null,8,["modelValue"])):H("",!0)])):H("",!0)])]),e("div",zw,[e("div",Cw,[e("div",Aw,S(b.value==="none"?"启动命令 (Command)":"启动参数 (JVM Args)"),1),e("div",Sw,S(b.value==="none"?"完全自定义的启动命令。程序将直接执行此段内容,不依赖 Java 环境。":"传递给 Java 的启动参数,如 GC 策略 (例如 -XX:+UseG1GC)"),1)]),e("div",Iw,[t(pe,{modelValue:u.value.args,"onUpdate:modelValue":T[6]||(T[6]=re=>u.value.args=re),autosize:{minRows:2,maxRows:4},class:"w-full",placeholder:b.value==="none"?"例如: ./bedrock_server_x64":"无特殊需求请留空"},null,8,["modelValue","placeholder"])])]),b.value!=="none"?(l(),x(le,{key:0},[T[41]||(T[41]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"核心管理")],-1)),e("div",Vw,[T[40]||(T[40]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"服务端核心文件"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[p(" 指定启动的 Jar 文件名。如果文件已存在于目录中,直接输入文件名即可。 "),e("br"),p("需要更新核心?点击下方“文件工具” ")])],-1)),e("div",Uw,[t(de,{modelValue:u.value.core,"onUpdate:modelValue":T[8]||(T[8]=re=>u.value.core=re),placeholder:"例如 server.jar",class:"w-full"},{suffix:o(()=>[t(he,{variant:"text",theme:"primary",size:"small",class:"!rounded-md",onClick:T[7]||(T[7]=re=>V.value=!V.value)},{default:o(()=>[p(S(V.value?"收起工具":"文件工具"),1)]),_:1})]),_:1},8,["modelValue"]),V.value?(l(),x("div",Mw,[t(Ve,{theme:"info",message:"在此处操作会自动下载/上传文件,并填入上方的文件名。",class:"!py-1.5 !px-3 !rounded-md text-xs"}),e("div",Lw,[t(he,{block:"",variant:"outline",class:"!rounded-md bg-white dark:bg-zinc-900",onClick:T[9]||(T[9]=re=>y.value=!0)},{icon:o(()=>[t(Ce,{name:"cloud-download"})]),default:o(()=>[T[38]||(T[38]=p("版本库 ",-1))]),_:1}),t(he,{block:"",variant:"outline",class:"!rounded-md bg-white dark:bg-zinc-900",loading:E.value,onClick:N},{icon:o(()=>[t(Ce,{name:"upload"})]),default:o(()=>[T[39]||(T[39]=p("本地上传 ",-1))]),_:1},8,["loading"])]),e("input",{ref_key:"uploadInputRef",ref:$,type:"file",accept:".jar",hidden:"",onChange:Y},null,544),E.value?(l(),x("div",Bw,[e("span",null,"正在上传: "+S(J.value),1),t(Ue,{theme:"line",percentage:F.value},null,8,["percentage"])])):H("",!0)])):H("",!0)])])],64)):H("",!0),b.value!=="none"?(l(),x(le,{key:1},[T[44]||(T[44]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"资源限制")],-1)),e("div",Tw,[T[43]||(T[43]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"内存分配"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 设置 Java 堆内存大小 (Xms / Xmx) ")],-1)),e("div",Rw,[e("div",jw,[t(we,{modelValue:m.value,"onUpdate:modelValue":T[10]||(T[10]=re=>m.value=re),min:0,"decimal-places":L.value==="GB"?1:0,placeholder:"Xms",theme:"normal",class:"input-left"},null,8,["modelValue","decimal-places"]),t(W,{modelValue:L.value,"onUpdate:modelValue":T[11]||(T[11]=re=>L.value=re),options:A,clearable:!1,class:"select-right"},null,8,["modelValue"])]),T[42]||(T[42]=e("span",{class:"text-zinc-400 mx-1 shrink-0"},"-",-1)),e("div",Pw,[t(we,{modelValue:z.value,"onUpdate:modelValue":T[12]||(T[12]=re=>z.value=re),min:0,"decimal-places":w.value==="GB"?1:0,placeholder:"Xmx",theme:"normal",class:"input-left"},null,8,["modelValue","decimal-places"]),t(W,{modelValue:w.value,"onUpdate:modelValue":T[13]||(T[13]=re=>w.value=re),options:A,clearable:!1,class:"select-right"},null,8,["modelValue"])])])])],64)):H("",!0),T[67]||(T[67]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"备份设置")],-1)),e("div",Ew,[e("div",Dw,[T[46]||(T[46]=e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"备份策略",-1)),T[47]||(T[47]=e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 设置自动备份保留的最大数量,以及触发备份的延迟时间 ",-1)),e("div",Fw,[t(ne,{content:"MSLX 向服务器发送 save-all 指令后,会等待指定的秒数,确保数据完全写入硬盘后再开始打包备份。"},{default:o(()=>[e("span",Ow,[t(Ce,{name:"help-circle"}),T[45]||(T[45]=p(" 什么是延迟时间? ",-1))])]),_:1})])]),e("div",Nw,[t(we,{modelValue:u.value.backupMaxCount,"onUpdate:modelValue":T[14]||(T[14]=re=>u.value.backupMaxCount=re),min:1,max:100,placeholder:"保留份数",theme:"column",class:"flex-1 min-w-0",suffix:"份"},null,8,["modelValue"]),T[48]||(T[48]=e("span",{class:"text-zinc-400 shrink-0"},"/",-1)),t(we,{modelValue:u.value.backupDelay,"onUpdate:modelValue":T[15]||(T[15]=re=>u.value.backupDelay=re),min:0,placeholder:"延迟时间",theme:"column",class:"flex-1 min-w-0",suffix:"秒"},null,8,["modelValue"])])]),e("div",Kw,[T[49]||(T[49]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"备份存放路径"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 选择备份文件存储的位置。推荐存储在实例文件夹外部以免误删。 ")],-1)),e("div",qw,[t(W,{class:"w-full",modelValue:q.value,"onUpdate:modelValue":T[16]||(T[16]=re=>q.value=re),options:[{label:"实例文件夹内 (Instance)",value:"MSLX://Backup/Instance"},{label:"全局数据目录 (Data)",value:"MSLX://Backup/Data"},{label:"自定义绝对路径",value:"custom"}]},null,8,["modelValue"]),q.value==="custom"?(l(),G(de,{key:0,modelValue:P.value,"onUpdate:modelValue":T[17]||(T[17]=re=>P.value=re),placeholder:"输入备份存放的绝对路径",class:"w-full"},null,8,["modelValue"])):H("",!0)])]),b.value!=="none"?(l(),x(le,{key:2},[T[51]||(T[51]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"外置登录")],-1)),e("div",Hw,[T[50]||(T[50]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"Yggdrasil API"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 选择认证服务器。留空则表示使用官方正版登录 (或离线模式)。 ")],-1)),e("div",Gw,[t(W,{modelValue:j.value,"onUpdate:modelValue":T[18]||(T[18]=re=>j.value=re),options:k,class:"w-full"},null,8,["modelValue"]),j.value==="custom"?(l(),G(de,{key:0,modelValue:K.value,"onUpdate:modelValue":T[19]||(T[19]=re=>K.value=re),placeholder:"输入 Authlib-Injector API 地址",class:"w-full"},null,8,["modelValue"])):H("",!0)])])],64)):H("",!0),T[68]||(T[68]=e("div",{class:"flex items-center gap-2 mt-8 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"高级设置")],-1)),e("div",Ww,[T[52]||(T[52]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"停止服务器指令"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[p(" 设置正常停止时所发送的指令,默认为stop"),e("br"),p("设置为^c为发送Ctrl C (在部分环境可能无法发送成功) ")])],-1)),e("div",Jw,[t(de,{modelValue:u.value.stopCommand,"onUpdate:modelValue":T[20]||(T[20]=re=>u.value.stopCommand=re),placeholder:"请输入停止指令",class:"w-full"},null,8,["modelValue"])])]),e("div",Xw,[T[53]||(T[53]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"日志原彩显示"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[p(" 开启此选项后,将注入相关环境变量,以让MC终端日志输出原有的色彩样式"),e("br"),p("此功能可以和日志染色功能搭配使用 ")])],-1)),e("div",Qw,[t(Ae,{modelValue:u.value.allowOriginASCIIColors,"onUpdate:modelValue":T[21]||(T[21]=re=>u.value.allowOriginASCIIColors=re),size:"large"},null,8,["modelValue"])])]),e("div",Yw,[T[54]||(T[54]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"玩家监控"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[p(" 开启此选项后,MSLX将自动为您监控在线的玩家列表"),e("br"),p("以及使用可视化黑白名单/管理员等功能 ")])],-1)),e("div",Zw,[t(Ae,{modelValue:u.value.monitorPlayers,"onUpdate:modelValue":T[22]||(T[22]=re=>u.value.monitorPlayers=re),size:"large"},null,8,["modelValue"])])]),e("div",ek,[T[55]||(T[55]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"自动重启"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[p(" 当服务器崩溃或意外停止时尝试自动重启"),e("br"),p("熔断机制: 若5分钟内尝试重启次数达到 5 次,则停止尝试重启 ")])],-1)),e("div",tk,[t(Ae,{modelValue:u.value.autoRestart,"onUpdate:modelValue":T[23]||(T[23]=re=>u.value.autoRestart=re),size:"large"},null,8,["modelValue"])])]),u.value.autoRestart?(l(),x("div",ok,[T[56]||(T[56]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"强制自动重启"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[p(" 开启此功能后,就算服务器是正常退出的也会强制重启(正常退出 => 退出代码 0)"),e("br"),p("不影响手动在面板关闭服务器 ")])],-1)),e("div",sk,[t(Ae,{modelValue:u.value.forceAutoRestart,"onUpdate:modelValue":T[24]||(T[24]=re=>u.value.forceAutoRestart=re),size:"large"},null,8,["modelValue"])])])):H("",!0),e("div",ak,[T[57]||(T[57]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"关服强制结束时间"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[p(" 设置在发出Stop指令或关服请求后,等待多久后强制结束进程"),e("br"),p("可设置10 - 120 s ")])],-1)),e("div",lk,[t(we,{modelValue:u.value.forceExitDelay,"onUpdate:modelValue":T[25]||(T[25]=re=>u.value.forceExitDelay=re),class:"w-full"},null,8,["modelValue"])])]),e("div",rk,[T[58]||(T[58]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"忽略EULA提示"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 若您的实例并非MC服务器,可打开此选项 ")],-1)),e("div",nk,[t(Ae,{modelValue:u.value.ignoreEula,"onUpdate:modelValue":T[26]||(T[26]=re=>u.value.ignoreEula=re),size:"large"},null,8,["modelValue"])])]),e("div",ik,[T[59]||(T[59]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"随守护进程启动"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 当物理机开机/面板启动时,自动启动此实例 ")],-1)),e("div",dk,[t(Ae,{modelValue:u.value.runOnStartup,"onUpdate:modelValue":T[27]||(T[27]=re=>u.value.runOnStartup=re),size:"large"},null,8,["modelValue"])])]),b.value!=="none"?(l(),x("div",ck,[T[60]||(T[60]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"强制Java使用UTF8"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"},[p(" 此功能可以解决部分游戏内中文乱码的问题(特别是Windows系统上)"),e("br"),p("开启此功能后请务必将下面的"),e("b",null,"文件编码"),p("设置设置为"),e("b",null,"UTF-8")])],-1)),e("div",uk,[t(Ae,{modelValue:u.value.forceJvmUTF8,"onUpdate:modelValue":T[28]||(T[28]=re=>u.value.forceJvmUTF8=re),size:"large"},null,8,["modelValue"])])])):H("",!0),e("div",mk,[T[61]||(T[61]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"控制台编码"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 设置输入输出流的字符集,乱码时请尝试切换 ")],-1)),e("div",pk,[t(W,{modelValue:u.value.inputEncoding,"onUpdate:modelValue":T[29]||(T[29]=re=>u.value.inputEncoding=re),options:v,label:"输入",class:"flex-1 min-w-0"},null,8,["modelValue"]),t(W,{modelValue:u.value.outputEncoding,"onUpdate:modelValue":T[30]||(T[30]=re=>u.value.outputEncoding=re),options:v,label:"输出",class:"flex-1 min-w-0"},null,8,["modelValue"])])]),e("div",vk,[T[62]||(T[62]=e("div",{class:"flex-1 pr-0 md:pr-8 mb-3 md:mb-0 min-w-[200px]"},[e("div",{class:"text-sm font-medium text-[var(--td-text-color-primary)] leading-snug"},"文件编码"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1 leading-relaxed"}," 设置文件编辑和保存时的编码格式,乱码时请尝试切换。(一般Windows是GBK,其他是UTF-8。) ")],-1)),e("div",fk,[t(W,{modelValue:u.value.fileEncoding,"onUpdate:modelValue":T[31]||(T[31]=re=>u.value.fileEncoding=re),options:I,class:"w-full"},null,8,["modelValue"])])]),_(r).isAdmin?(l(),x("div",bk,[t(he,{theme:"default",variant:"text",class:"!rounded-full !px-5 text-zinc-500 hover:text-zinc-700 dark:hover:text-zinc-300",onClick:Z},{default:o(()=>[...T[63]||(T[63]=[p(" 重置更改 ",-1)])]),_:1}),t(he,{theme:"primary",type:"submit",class:"!rounded-full !px-6 shadow-md shadow-[var(--color-primary)]/30",loading:f.value},{default:o(()=>[...T[64]||(T[64]=[p(" 保存设置 ",-1)])]),_:1},8,["loading"])])):H("",!0)]),_:1},8,["disabled","data","rules"])]),_:1},8,["loading"]),t(xs,{visible:y.value,"onUpdate:visible":T[32]||(T[32]=re=>y.value=re),onConfirm:O},null,8,["visible"]),t(Ze,{visible:ae.value,"onUpdate:visible":T[34]||(T[34]=re=>ae.value=re),header:"正在应用更新",footer:!1,"close-on-overlay-click":!1,"close-btn":!1,width:"600px",attach:"body"},{default:o(()=>[e("div",xk,[t(Ue,{theme:"plump",percentage:me.value,label:`${me.value}%`},null,8,["percentage","label"]),e("div",gk,[(l(!0),x(le,null,ge(fe.value,(re,Xe)=>(l(),x("div",{key:Xe,class:"mb-1 leading-relaxed"},[e("span",hk,S(re.time),1),p(" "+S(re.msg),1)]))),128))]),me.value===100?(l(),x("div",yk,[t(he,{theme:"primary",class:"!rounded-lg",onClick:T[33]||(T[33]=re=>ae.value=!1)},{default:o(()=>[...T[69]||(T[69]=[p("关闭并刷新",-1)])]),_:1})])):H("",!0)])]),_:1},8,["visible"])])}}}),wk=ue(_k,[["__scopeId","data-v-aad52783"]]),kk={class:"flex flex-col gap-4 max-h-[60vh]"},$k={class:"text-[13px] font-medium text-[var(--td-text-color-secondary)] m-0"},zk={class:"flex gap-3 mt-1"},Ck={key:0,class:"flex justify-between items-center pb-2 border-b border-zinc-200 dark:border-zinc-700/60"},Ak={class:"text-xs text-[var(--td-text-color-secondary)] font-medium"},Sk={class:"text-[var(--td-text-color-primary)] font-bold mx-0.5"},Ik={class:"text-[var(--color-primary)] font-bold ml-0.5"},Vk={class:"flex gap-2"},Uk={key:1,class:"flex-1 overflow-y-auto flex flex-col gap-2 pr-1 custom-scrollbar"},Mk={class:"pt-0.5 shrink-0 text-xl"},Lk={class:"flex-1 overflow-hidden flex flex-col gap-1"},Bk={class:"flex justify-between items-center text-[13px]"},Tk=["title"],Rk={class:"text-[11px] text-[var(--td-text-color-secondary)] flex items-center gap-2 font-mono"},jk={key:0,class:"text-red-500 font-sans font-medium"},Pk={key:1},Ek={class:"bg-zinc-200/50 dark:bg-zinc-700/50 px-1.5 py-0.5 rounded"},Dk=["title"],Fk={class:"mt-0.5"},Ok={class:"shrink-0 pt-0.5 flex items-center justify-center"},Nk=ie({__name:"FileUploader",props:{visible:{type:Boolean},instanceId:{},currentPath:{},allowFolder:{type:Boolean,default:!0}},emits:["update:visible","success"],setup(s,{emit:a}){const r=s,d=a,i=h([]),c=h(!1),f=h(!1),n=h(!1),v=h(),I=h(),u=V=>{const y=V.split(".").pop()?.toLowerCase();return["png","jpg","jpeg","gif","ico","webp"].includes(y||"")?{icon:na,color:"var(--td-success-color)"}:["jar","zip","rar","7z","tar","gz"].includes(y||"")?{icon:xo,color:"#722ed1"}:["js","ts","py","java","c","cpp","cs","json","yml","yaml","xml","html","css","properties","conf","sh","bat"].includes(y||"")?{icon:Tt,color:"var(--td-warning-color)"}:["log","txt","md","lock"].includes(y||"")?{icon:No,color:"var(--td-gray-color-6)"}:["db","db-wal","dat"].includes(y||"")?{icon:yl,color:"var(--td-gray-color-8)"}:{icon:Ut,color:"var(--td-brand-color)"}},L=V=>V.split("/").pop()||V,w=V=>{const y=V.lastIndexOf("/");return y!==-1?V.substring(0,y):""},A=te(()=>{if(i.value.length===0)return 0;const V=i.value.reduce((y,$)=>y+$.progress,0);return Math.floor(V/i.value.length)}),m=te(()=>i.value.some(V=>V.status==="pending"||V.status==="error")),z=()=>v.value?.click(),b=()=>I.value?.click(),R=V=>{const y=V.target;if(y.files&&y.files.length>0){const E=Array.from(y.files).map(F=>({file:F,path:F.webkitRelativePath||F.name}));D(E)}y.value=""},C=async V=>{n.value=!1;const y=V.dataTransfer?.items;if(!y)return;const $=[],E=Array.from(y).map(F=>F.webkitGetAsEntry()).filter(F=>F!==null);for(const F of E)F&&await M(F,$);D($)},M=async(V,y)=>{if(V.isFile){const $=await new Promise((F,J)=>V.file(F,J)),E=V.fullPath.startsWith("/")?V.fullPath.slice(1):V.fullPath;y.push({file:$,path:E})}else if(V.isDirectory)if(r.allowFolder){const $=V.createReader(),E=await B($);for(const F of E)await M(F,y)}else U.error("此处不支持上传文件夹")},B=async V=>{let y=[];const $=async()=>{const E=await new Promise((F,J)=>V.readEntries(F,J));E.length>0&&(y=y.concat(E),await $())};return await $(),y},D=V=>{V.forEach(({file:y,path:$})=>{i.value.some(E=>E.path===$&&E.file.size===y.size&&E.status!=="error")||i.value.push({id:Math.random().toString(36).substring(2),file:y,path:$,status:"pending",progress:0,speed:""})})},q=async()=>{if(c.value)return;c.value=!0,f.value=!1;const V=3,y=i.value.filter($=>$.status==="pending"||$.status==="error");for(let $=0;$i.value.some(O=>O.id===J.id));F.length>0&&await Promise.all(F.map(J=>P(J)))}c.value=!1,!f.value&&i.value.length>0&&i.value.every($=>$.status==="success")&&(U.success("上传完成"),d("success"))},P=async V=>{V.status="uploading",V.progress=0,V.abortController=new AbortController;const y=Date.now();let $=0;try{const F=(await qt()).uploadId,O=V.file.size>200*1024*1024?50*1024*1024:10*1024*1024,N=Math.ceil(V.file.size/O),Y=4,be=5,ae=Array.from({length:N},(se,De)=>De),me=new Map,fe=()=>{const se=Date.now();if(se-$<100)return;$=se;const De=Array.from(me.values()).reduce((T,de)=>T+de,0),Le=Math.min(De/V.file.size*95,95);V.progress=Number(Le.toFixed(1));const ee=(se-y)/1e3;if(ee>0){const T=De/1024/1024/ee;V.speed=T.toFixed(1)+" MB/s"}},Se=async se=>{if(V.abortController?.signal.aborted)throw new Error("已取消");const De=se*O,Le=Math.min(V.file.size,De+O),ee=V.file.slice(De,Le);let T;for(let de=1;de<=be;de++){if(V.abortController?.signal.aborted)throw new Error("已取消");try{await Ht(F,se,ee,he=>{he&&he.loaded&&(me.set(se,he.loaded),fe())},V.abortController?.signal),me.set(se,ee.size),fe();return}catch(he){T=he,desetTimeout(ne,1e3*de)))}}throw T||new Error(`分片 ${se} 失败`)},Me=async()=>{for(;ae.length>0&&!V.abortController?.signal.aborted;){const se=ae.shift();if(se===void 0)break;await Se(se)}},Z=Array(Math.min(Y,N)).fill(null).map(()=>Me());if(await Promise.all(Z),V.abortController.signal.aborted)throw new Error("已取消");V.status="merging",V.speed="合并中...",V.progress=98,await Gt(F,N),await ba(r.instanceId,F,V.path,r.currentPath),V.status="success",V.progress=100,V.speed="完成"}catch(E){E.message==="已取消"||V.abortController?.signal.aborted?(V.status="pending",V.speed="已取消",V.progress=0):(V.status="error",V.errorMsg=E.message||"失败")}},j=V=>{i.value[V].abortController?.abort(),i.value.splice(V,1)},K=()=>{i.value=i.value.filter(V=>V.status!=="success")},k=()=>d("update:visible",!1);return He(()=>i.value.forEach(V=>V.abortController?.abort())),(V,y)=>{const $=g("t-button"),E=g("t-progress"),F=g("t-dialog");return l(),G(F,{attach:"body",visible:s.visible,header:"批量上传文件",width:"650px",footer:!1,onClose:k},{default:o(()=>[e("input",{ref_key:"fileInputRef",ref:v,type:"file",multiple:"",class:"hidden",onChange:R},null,544),e("input",{ref_key:"folderInputRef",ref:I,type:"file",webkitdirectory:"",class:"hidden",onChange:R},null,544),e("div",kk,[e("div",{class:ce(["border-2 border-dashed rounded-xl p-6 flex flex-col items-center gap-3 transition-all duration-300",n.value?"border-[var(--color-primary)] bg-[var(--color-primary)]/5 scale-[0.99]":"border-zinc-200 dark:border-zinc-700 bg-zinc-50 dark:bg-zinc-800/40 hover:border-zinc-300 dark:hover:border-zinc-600"]),onDragover:y[0]||(y[0]=dt(J=>n.value=!0,["prevent"])),onDragleave:y[1]||(y[1]=dt(J=>n.value=!1,["prevent"])),onDrop:dt(C,["prevent"])},[t(_(ra),{size:"40px",class:"text-[var(--color-primary)]"}),e("p",$k,S(r.allowFolder?"拖入文件或文件夹至此处":"拖入文件至此处"),1),e("div",zk,[t($,{variant:"outline",size:"small",class:"!rounded-lg !bg-white dark:!bg-zinc-900 !border-zinc-200 dark:!border-zinc-700",onClick:z},{icon:o(()=>[t(_(Ut))]),default:o(()=>[y[2]||(y[2]=p(" 选择文件 ",-1))]),_:1}),r.allowFolder?(l(),G($,{key:0,variant:"outline",size:"small",class:"!rounded-lg !bg-white dark:!bg-zinc-900 !border-zinc-200 dark:!border-zinc-700",onClick:b},{icon:o(()=>[t(_(Nt))]),default:o(()=>[y[3]||(y[3]=p(" 选择文件夹 ",-1))]),_:1})):H("",!0)])],34),i.value.length>0?(l(),x("div",Ck,[e("span",Ak,[y[6]||(y[6]=p(" 队列: ",-1)),e("span",Sk,S(i.value.length),1),y[7]||(y[7]=p(" 个 ",-1)),c.value?(l(),x(le,{key:0},[y[4]||(y[4]=e("span",{class:"mx-1.5 opacity-50"},"|",-1)),y[5]||(y[5]=p(" 总进度 ",-1)),e("span",Ik,S(A.value)+"%",1)],64)):H("",!0)]),e("div",Vk,[t($,{theme:"primary",size:"small",class:"!rounded-md shadow-sm",disabled:!m.value||c.value,onClick:q},{icon:o(()=>[t(_(_t))]),default:o(()=>[p(" "+S(c.value?"上传中...":"开始上传"),1)]),_:1},8,["disabled"]),t($,{variant:"text",size:"small",class:"!rounded-md hover:!bg-zinc-100 dark:hover:!bg-zinc-800 !text-zinc-500",onClick:K},{icon:o(()=>[t(_(hl))]),default:o(()=>[y[8]||(y[8]=p(" 清空已完成 ",-1))]),_:1})])])):H("",!0),i.value.length>0?(l(),x("div",Uk,[(l(!0),x(le,null,ge(i.value,(J,O)=>(l(),x("div",{key:J.id,class:"flex items-start gap-3 p-3 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-100 dark:border-zinc-700/50 hover:border-zinc-200 dark:hover:border-zinc-600 transition-colors group"},[e("div",Mk,[(l(),G(it(u(L(J.path)).icon),{style:Oe({color:u(L(J.path)).color})},null,8,["style"]))]),e("div",Lk,[e("div",Bk,[e("div",{class:"font-medium text-[var(--td-text-color-primary)] truncate max-w-[200px] sm:max-w-[280px]",title:L(J.path)},S(L(J.path)),9,Tk),e("div",Rk,[J.status==="error"?(l(),x("span",jk,S(J.errorMsg),1)):(l(),x("span",Pk,S(J.speed),1)),e("span",Ek,S((J.file.size/1024/1024).toFixed(2))+" MB",1)])]),w(J.path)?(l(),x("div",{key:0,class:"text-[11px] text-[var(--td-text-color-secondary)] flex items-center gap-1 truncate",title:w(J.path)},[t(_(Nt),{size:"12px",class:"shrink-0 opacity-70"}),p(" "+S(w(J.path))+"/ ",1)],8,Dk)):H("",!0),e("div",Fk,[t(E,{percentage:J.progress,status:J.status==="error"?"error":J.status==="success"?"success":"active",size:"small",label:!1},null,8,["percentage","status"])])]),e("div",Ok,[J.status!=="success"?(l(),G($,{key:0,shape:"circle",variant:"text",size:"small",class:"!text-zinc-400 hover:!text-red-500 hover:!bg-red-50 dark:hover:!bg-red-900/20 opacity-0 group-hover:opacity-100 transition-opacity",onClick:N=>j(O)},{default:o(()=>[t(_(Ao))]),_:1},8,["onClick"])):(l(),G(_(Kt),{key:1,class:"text-emerald-500 text-[18px]"}))])]))),128))])):H("",!0)])]),_:1},8,["visible"])}}}),Ea=ue(Nk,[["__scopeId","data-v-77a13c75"]]),Kk={class:"flex flex-col pb-6"},qk={class:"flex flex-col md:flex-row md:items-center justify-between gap-4 mt-5 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},Hk={class:"w-full md:w-auto"},Gk={class:"flex justify-center items-center gap-1.5"},Wk={class:"flex justify-center items-center gap-1.5"},Jk={key:0,class:"mb-4"},Xk={class:"flex flex-col-reverse md:flex-row justify-between items-stretch md:items-center gap-3 mb-4"},Qk={class:"flex flex-wrap items-center gap-2 w-full md:w-auto justify-between md:justify-start"},Yk={class:"flex items-center gap-2"},Zk={key:0,class:"flex items-center bg-zinc-100 dark:bg-zinc-800/80 px-3 py-1.5 rounded-lg gap-3 shadow-sm flex-1 md:flex-none justify-end md:justify-start"},e5={class:"text-xs font-bold text-zinc-600 dark:text-zinc-300 shrink-0"},t5={class:"flex items-center"},o5={class:"w-full md:w-60 shrink-0"},s5={class:"border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl overflow-hidden shadow-sm bg-white/50 dark:bg-zinc-900/20"},a5={class:"flex items-center gap-2 font-mono text-[13px] text-zinc-700 dark:text-zinc-300 break-all"},l5={class:"py-16 flex flex-col items-center justify-center text-[var(--td-text-color-secondary)]"},r5={class:"text-sm font-medium"},n5={class:"mt-4 text-[11px] text-[var(--td-text-color-secondary)] leading-relaxed tracking-wider space-y-1"},i5=ie({__name:"ModsPluginsManager",setup(s){const a=Ye(),r=parseInt(a.params.serverId),d=h("mods"),i=h(!1),c=h([]),f=h(""),n=h([]),v=h(""),I=te(()=>{if(!f.value)return c.value;const M=f.value.toLowerCase();return c.value.filter(B=>B.name.toLowerCase().includes(M))}),u=te(()=>[{colKey:"row-select",type:"multiple",width:50,fixed:"left"},{title:"文件名",colKey:"name",sorter:(M,B)=>M.name.localeCompare(B.name),ellipsis:!0},{title:"状态",colKey:"status",width:100},{title:"操作",colKey:"op",width:180,fixed:"right",align:"right"}]),L=async(M=!1)=>{i.value=!0,n.value=[],v.value="";try{const B=await Xo(r,d.value,M),D=(B.clientJarFiles||[]).map(j=>({name:j,status:"enabled",isClient:!0})),q=(B.jarFiles||[]).map(j=>({name:j,status:"enabled"})),P=(B.disableJarFiles||[]).map(j=>({name:j,status:"disabled"}));c.value=[...D,...q,...P],M&&D.length>0?(n.value=D.map(j=>j.name),U.success(`检测到 ${D.length} 个客户端模组`)):M&&U.info("未检测到仅客户端模组")}catch(B){const D=B.message||"获取列表失败";v.value=D,c.value=[]}finally{i.value=!1}},w=async(M,B)=>{if(B.length===0)return;const D={enable:"启用",disable:"禁用",delete:"删除"},q=async()=>{try{i.value=!0;const P=await Dn(r,d.value,M,B),{successCount:j,failCount:K}=P||{};K>0?U.warning(`操作完成:成功 ${j} 个,失败 ${K} 个`):U.success(`成功${D[M]} ${j} 个文件`),await L()}catch(P){U.error(P.message||"操作失败"),i.value=!1}};if(M==="delete"){const P=Ke.confirm({header:`确认删除 ${B.length} 个文件?`,body:"此操作不可逆,文件将被永久删除。",theme:"danger",onConfirm:()=>{P.hide(),q()}})}else await q()},A=M=>{d.value=M,L()},m=M=>{const B=M.status==="enabled"?"disable":"enable";w(B,[M.name])},z=M=>{const B=n.value;w(M,B)},b=h(!1),R=()=>{b.value=!0},C=()=>{b.value=!1,L()};return ze(()=>{L()}),_e(()=>a.params.serverId,M=>{M&&location.reload()}),(M,B)=>{const D=g("t-radio-button"),q=g("t-radio-group"),P=g("t-alert"),j=g("t-button"),K=g("t-input"),k=g("t-tag"),V=g("t-switch"),y=g("t-popconfirm"),$=g("t-space"),E=g("t-table");return l(),x("div",Kk,[e("div",qk,[B[13]||(B[13]=e("div",{class:"flex items-center gap-2"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"资源管理")],-1)),e("div",Hk,[t(q,{modelValue:d.value,"onUpdate:modelValue":B[0]||(B[0]=F=>d.value=F),variant:"default-filled",class:"!bg-zinc-100 dark:!bg-zinc-800 border border-[var(--td-component-border)] !rounded-lg p-0.5 shadow-sm flex w-full",onChange:A},{default:o(()=>[t(D,{value:"mods",class:"flex-1 md:flex-none !text-center"},{default:o(()=>[e("div",Gk,[t(_(Ko),{size:"14px"}),B[11]||(B[11]=p(" 模组 (Mods)",-1))])]),_:1}),t(D,{value:"plugins",class:"flex-1 md:flex-none !text-center"},{default:o(()=>[e("div",Wk,[t(_(lo),{size:"14px"}),B[12]||(B[12]=p(" 插件 (Plugins)",-1))])]),_:1})]),_:1},8,["modelValue"])])]),v.value?(l(),x("div",Jk,[t(P,{theme:"error",message:v.value,closeable:"",class:"!rounded-xl shadow-sm border border-red-100 dark:border-red-900/50",onClose:B[2]||(B[2]=F=>v.value="")},{operation:o(()=>[e("span",{class:"cursor-pointer ml-2 font-bold text-red-600 dark:text-red-400 hover:opacity-80 transition-opacity",onClick:B[1]||(B[1]=F=>L(!1))},"重试")]),_:1},8,["message"])])):H("",!0),e("div",Xk,[e("div",Qk,[e("div",Yk,[t(j,{theme:"primary",class:"!rounded-lg shadow-sm",disabled:v.value!=="",onClick:R},{icon:o(()=>[t(_(yo))]),default:o(()=>[B[14]||(B[14]=p(" 上传文件 ",-1))]),_:1},8,["disabled"]),d.value==="mods"?(l(),G(j,{key:0,variant:"outline",class:"!rounded-lg !bg-zinc-50 dark:!bg-zinc-800/50 !border-zinc-200 dark:!border-zinc-700 hover:!bg-zinc-100 dark:hover:!bg-zinc-800",disabled:v.value!=="",loading:i.value,onClick:B[3]||(B[3]=F=>L(!0))},{icon:o(()=>[t(_(_o))]),default:o(()=>[B[15]||(B[15]=p(" 检测客户端模组 ",-1))]),_:1},8,["disabled","loading"])):H("",!0),t(j,{variant:"outline",class:"!rounded-lg !bg-zinc-50 dark:!bg-zinc-800/50 !border-zinc-200 dark:!border-zinc-700 hover:!bg-zinc-100 dark:hover:!bg-zinc-800 shrink-0",loading:i.value,onClick:B[4]||(B[4]=F=>L(!1))},{icon:o(()=>[t(_(Ee))]),_:1},8,["loading"])]),t(Rt,{"enter-active-class":"transition-opacity duration-200 ease-out","enter-from-class":"opacity-0","leave-active-class":"transition-opacity duration-200 ease-in","leave-to-class":"opacity-0"},{default:o(()=>[n.value.length>0?(l(),x("div",Zk,[B[19]||(B[19]=e("div",{class:"hidden md:block w-[2px] h-[14px] bg-zinc-300 dark:bg-zinc-600 -mr-1"},null,-1)),e("span",e5,"已选 "+S(n.value.length)+" 项",1),e("div",t5,[t(j,{size:"small",variant:"text",theme:"success",class:"!px-2 !h-7 !text-xs hover:!bg-emerald-500/10 !rounded-md",onClick:B[5]||(B[5]=F=>z("enable"))},{default:o(()=>[...B[16]||(B[16]=[p("启用",-1)])]),_:1}),t(j,{size:"small",variant:"text",theme:"warning",class:"!px-2 !h-7 !text-xs hover:!bg-amber-500/10 !rounded-md",onClick:B[6]||(B[6]=F=>z("disable"))},{default:o(()=>[...B[17]||(B[17]=[p("禁用",-1)])]),_:1}),t(j,{size:"small",variant:"text",theme:"danger",class:"!px-2 !h-7 !text-xs hover:!bg-red-500/10 !rounded-md",onClick:B[7]||(B[7]=F=>z("delete"))},{default:o(()=>[...B[18]||(B[18]=[p("删除",-1)])]),_:1})])])):H("",!0)]),_:1})]),e("div",o5,[t(K,{modelValue:f.value,"onUpdate:modelValue":B[8]||(B[8]=F=>f.value=F),placeholder:"搜索文件名...",clearable:"",class:"!w-full !rounded-lg shadow-sm"},{"prefix-icon":o(()=>[t(_(_o),{class:"text-zinc-400"})]),_:1},8,["modelValue"])])]),e("div",s5,[t(E,{"selected-row-keys":n.value,"onUpdate:selectedRowKeys":B[9]||(B[9]=F=>n.value=F),pagination:{defaultPageSize:20,total:I.value.length,showJumper:!0,defaultCurrent:1},data:I.value,columns:u.value,"row-key":"name",loading:i.value,hover:"",stripe:"",class:"custom-table"},{name:o(({row:F})=>[e("div",a5,[e("span",null,S(F.name),1),F.isClient?(l(),G(k,{key:0,theme:"warning",variant:"light",size:"small",class:"!rounded shrink-0"},{default:o(()=>[...B[20]||(B[20]=[p(" 客户端 ",-1)])]),_:1})):H("",!0)])]),status:o(({row:F})=>[F.status==="enabled"?(l(),G(k,{key:0,theme:"success",variant:"light",class:"!rounded-md"},{icon:o(()=>[t(_(Lt))]),default:o(()=>[B[21]||(B[21]=p("已启用 ",-1))]),_:1})):(l(),G(k,{key:1,theme:"default",variant:"light",class:"!rounded-md !text-zinc-500 dark:!text-zinc-400"},{icon:o(()=>[t(_(Ao))]),default:o(()=>[B[22]||(B[22]=p("已禁用 ",-1))]),_:1}))]),op:o(({row:F})=>[t($,{size:"small",class:"flex items-center"},{default:o(()=>[t(V,{"model-value":F.status==="enabled",loading:i.value,size:"medium",onChange:J=>m(F)},{label:o(J=>[p(S(J.value?"开":"关"),1)]),_:1},8,["model-value","loading","onChange"]),t(y,{content:"确定要删除此文件吗?",theme:"danger",onConfirm:J=>w("delete",[F.name])},{default:o(()=>[t(j,{variant:"text",theme:"danger",shape:"square",class:"!rounded-md hover:!bg-red-500/10 transition-colors"},{default:o(()=>[t(_(ct))]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)]),empty:o(()=>[e("div",l5,[d.value==="mods"?(l(),G(_(Ko),{key:0,size:"40px",class:"opacity-60 mb-3"})):(l(),G(_(lo),{key:1,size:"40px",class:"opacity-60 mb-3"})),e("span",r5,"暂无"+S(d.value==="mods"?"模组":"插件")+"文件",1)])]),_:1},8,["selected-row-keys","pagination","data","columns","loading"])]),e("div",n5,[e("p",null,"提示:"+S(d.value==="mods"?"模组":"插件")+"文件存放于服务器根目录的 /"+S(d.value)+" 文件夹下。",1),B[23]||(B[23]=e("p",null,[p("禁用文件后,会在文件名后添加 "),e("code",{class:"bg-zinc-100 dark:bg-zinc-800 px-1 py-0.5 rounded font-mono text-[10px] text-[var(--td-text-color-secondary)]"},".disabled"),p(" 后缀,服务器将自动忽略该文件。")],-1))]),t(Ea,{visible:b.value,"onUpdate:visible":B[10]||(B[10]=F=>b.value=F),"instance-id":_(r),"current-path":d.value,"allow-folder":!1,onSuccess:C},null,8,["visible","instance-id","current-path"])])}}}),d5=ue(i5,[["__scopeId","data-v-aa2f193a"]]),Ns=[{key:"motd",label:"服务器标语",desc:"显示在多人游戏列表中的服务器介绍信息。(支持中文 & 颜色代码,但是务必将文件编码修改为UTF-8并启用强制UTF8功能,否则会乱码)",type:"string"},{key:"server-port",label:"服务器端口",desc:"默认为 25565。如果要在一台机器运行多个服务器,必须修改此端口。",type:"number"},{key:"max-players",label:"最大玩家数",desc:"服务器同时允许在线的最大玩家数量。",type:"number"},{key:"online-mode",label:"正版验证",desc:"开启后将验证玩家的正版账号。如果使用离线模式/登录插件,请关闭此项。如果使用外置登录或者正版账户登录,请启用此项。",type:"boolean"},{key:"white-list",label:"启用白名单",desc:"开启后只有在白名单内的玩家才能进入服务器。",type:"boolean"},{key:"enforce-whitelist",label:"强制白名单",desc:"开启后,当玩家不在白名单时,即使已在线也会被踢出(通常用于维护时重新加载白名单)。",type:"boolean"},{key:"level-name",label:"存档文件夹名称",desc:"服务器读取的世界存档文件夹名称(默认为 world)。",type:"string"},{key:"gamemode",label:"默认游戏模式",desc:"新玩家进入服务器时的默认模式。",type:"select",options:[{label:"生存 (Survival)",value:"survival"},{label:"创造 (Creative)",value:"creative"},{label:"冒险 (Adventure)",value:"adventure"},{label:"旁观 (Spectator)",value:"spectator"}]},{key:"force-gamemode",label:"强制游戏模式",desc:"开启后,玩家每次加入服务器都会被重置为默认游戏模式。",type:"boolean"},{key:"difficulty",label:"难度",desc:"世界的游戏难度设置。",type:"select",options:[{label:"和平 (Peaceful)",value:"peaceful"},{label:"简单 (Easy)",value:"easy"},{label:"普通 (Normal)",value:"normal"},{label:"困难 (Hard)",value:"hard"}]},{key:"hardcore",label:"极限模式",desc:"开启后,玩家死亡将被封禁。",type:"boolean"},{key:"allow-flight",label:"允许飞行",desc:"允许生存模式下的玩家飞行(防止被服务端反作弊踢出)。",type:"boolean"},{key:"spawn-protection",label:"出生点保护半径",desc:"出生点周围多少格内禁止非 OP 破坏。设为 0 可禁用。",type:"number"},{key:"player-idle-timeout",label:"挂机踢出时间",desc:"玩家闲置多少分钟后被自动踢出。0 为不限制。",type:"number"},{key:"level-seed",label:"世界种子",desc:"生成世界使用的种子,留空则随机生成。",type:"string"},{key:"level-type",label:"世界类型",desc:"例如 minecraft:normal, minecraft:flat, minecraft:amplified。",type:"string"},{key:"generate-structures",label:"生成结构",desc:"是否生成村庄、地牢等结构。",type:"boolean"},{key:"generator-settings",label:"生成器设置",desc:"用于自定义超平坦或特定生成器的 JSON 参数。",type:"string"},{key:"max-world-size",label:"世界边界半径",desc:"设置世界边界(World Border)的最大半径。",type:"number"},{key:"simulation-distance",label:"模拟距离",desc:"服务器实际运算实体/作物生长的区块半径(3-32)。",type:"number"},{key:"view-distance",label:"视距",desc:"客户端可以看见的区块半径。数值过大显著增加内存和带宽消耗。",type:"number"},{key:"entity-broadcast-range-percentage",label:"实体广播范围百分比",desc:"控制客户端能看到实体的距离系数(100表示默认)。",type:"number"},{key:"max-tick-time",label:"最大刻耗时 (Watchdog)",desc:"一刻的最长处理毫秒数。超过此数值服务器将强制关闭以防卡死。设为 -1 可禁用。",type:"number"},{key:"network-compression-threshold",label:"网络压缩阈值",desc:"数据包超过此字节数时进行压缩。设为 -1 禁用压缩。推荐保持默认 256。",type:"number"},{key:"rate-limit",label:"数据包限制",desc:"如果玩家发送数据包过快,将被踢出。0 为禁用。",type:"number"},{key:"use-native-transport",label:"使用原生传输优化",desc:"Linux 环境下是否启用 Epoll 优化网络性能。",type:"boolean"},{key:"prevent-proxy-connections",label:"防止代理连接",desc:"是否尝试阻止通过 VPN 或代理的连接(ISP/AS 号判断)。",type:"boolean"},{key:"sync-chunk-writes",label:"同步区块写入",desc:"开启后区块写入完成后才继续逻辑,数据更安全但可能掉帧;关闭可能提升性能。",type:"boolean"},{key:"region-file-compression",label:"区块文件压缩格式",desc:"用于保存区块的压缩算法。",type:"select",options:[{label:"Deflate (默认)",value:"deflate"},{label:"LZ4 (更快)",value:"lz4"},{label:"不压缩 (None)",value:"none"}]},{key:"max-chained-neighbor-updates",label:"最大连锁更新数",desc:"限制红石/方块连锁更新的数量以防止崩服。",type:"number"},{key:"log-ips",label:"控制台记录 IP",desc:"是否在控制台日志中显示玩家连接的 IP 地址。",type:"boolean"},{key:"hide-online-players",label:"隐藏在线玩家列表",desc:"开启后,服务器列表中将不显示具体的玩家名单。",type:"boolean"},{key:"enable-status",label:"启用状态查询",desc:"是否允许外部(如服务器列表网站)查询服务器状态。",type:"boolean"},{key:"accepts-transfers",label:"接受服务器传送",desc:"是否允许玩家从其他服务器无缝传送到此服务器。",type:"boolean"},{key:"pause-when-empty-seconds",label:"空载暂停时间",desc:"服务器内无玩家多少秒后暂停游戏循环(省资源)。-1 为不暂停。",type:"number"},{key:"op-permission-level",label:"OP 权限等级",desc:"设置 OP 的默认权限级别。",type:"select",options:[{label:"1 - 无视出生点保护",value:1},{label:"2 - 使用单机指令 (gamemode等)",value:2},{label:"3 - 多人管理 (kick/ban/op)",value:3},{label:"4 - 系统管理 (stop/save)",value:4}]},{key:"function-permission-level",label:"函数权限等级",desc:"数据包(Datapack)中函数的默认执行权限等级。",type:"number"},{key:"enforce-secure-profile",label:"强制安全配置 (签名)",desc:"强制玩家拥有官方签名的公钥(聊天报告相关)。离线服建议关闭。",type:"boolean"},{key:"enable-code-of-conduct",label:"启用行为准则提示",desc:"是否向玩家展示行为准则链接(遥测相关)。",type:"boolean"},{key:"bug-report-link",label:"Bug 反馈链接",desc:"自定义玩家遇到错误时显示的反馈网址。",type:"string"},{key:"resource-pack",label:"资源包下载地址",desc:"玩家进入服务器时提示下载的资源包直链 URL。",type:"string"},{key:"require-resource-pack",label:"强制资源包",desc:"开启后,拒绝下载资源包的玩家将被踢出。",type:"boolean"},{key:"resource-pack-sha1",label:"资源包 SHA1",desc:"资源包文件的 SHA-1 校验码,用于验证完整性和缓存。",type:"string"},{key:"resource-pack-prompt",label:"资源包提示语",desc:"下载资源包时向玩家显示的自定义消息(Json 格式)。",type:"string"},{key:"initial-enabled-packs",label:"初始启用数据包",desc:"世界生成时默认启用的数据包列表(逗号分隔)。",type:"string"},{key:"initial-disabled-packs",label:"初始禁用数据包",desc:"世界生成时默认禁用的数据包列表。",type:"string"},{key:"enable-rcon",label:"启用 RCON",desc:"开启远程控制台协议,允许外部工具发送指令。",type:"boolean"},{key:"rcon.port",label:"RCON 端口",desc:"RCON 监听端口(默认为 25575)。",type:"number"},{key:"rcon.password",label:"RCON 密码",desc:"连接 RCON 必须的密码。请设置复杂的密码。",type:"string"},{key:"broadcast-rcon-to-ops",label:"向 OP 广播 RCON",desc:"当 RCON 执行指令时,是否通知在线的 OP。",type:"boolean"},{key:"enable-query",label:"启用 Query",desc:"开启 GameSpy4 协议,用于获取服务器详细信息。",type:"boolean"},{key:"query.port",label:"Query 端口",desc:"Query 协议监听端口(默认为 25565)。",type:"number"},{key:"broadcast-console-to-ops",label:"向 OP 广播控制台",desc:"控制台执行的指令输出是否发给在线 OP。",type:"boolean"},{key:"enable-jmx-monitoring",label:"启用 JMX 监控",desc:"开启 Java JMX 性能监控(通常用于开发调试)。",type:"boolean"},{key:"management-server-enabled",label:"启用管理后台",desc:"是否启用 Minecraft 官方定义的管理服务器接口。",type:"boolean"},{key:"management-server-port",label:"管理后台端口",desc:"管理接口监听的端口。",type:"number"},{key:"management-server-host",label:"管理后台主机",desc:"管理接口绑定的主机名/IP。",type:"string"},{key:"management-server-allowed-origins",label:"管理后台允许源",desc:"允许访问管理接口的 Origin 列表。",type:"string"},{key:"server-ip",label:"服务器绑定 IP",desc:"指定服务器绑定的本地网卡 IP。留空表示监听所有网卡(0.0.0.0)。",type:"string"},{key:"debug",label:"调试模式",desc:"开启后控制台将输出更多调试信息。",type:"boolean"},{key:"text-filtering-config",label:"文本过滤配置",desc:"用于文本过滤服务的 API 配置。",type:"string"},{key:"status-heartbeat-interval",label:"状态心跳间隔",desc:"服务器向客户端发送状态心跳的间隔(0 为默认)。",type:"number"}],c5={class:"flex flex-col mx-auto w-full relative pb-8"},u5={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mt-5 mb-6 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},m5={class:"bg-white/80 dark:bg-zinc-900/40 border border-zinc-200/60 dark:border-zinc-800 rounded-xl shadow-sm backdrop-blur-md overflow-hidden"},p5={key:0,class:"py-16 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},v5={class:"flex flex-col divide-y divide-dashed divide-zinc-200/60 dark:divide-zinc-700/60"},f5={class:"flex-1 md:max-w-[40%] pr-0 md:pr-8 mb-3 md:mb-0"},b5={key:0,class:"flex items-center mb-1.5"},x5={class:"font-mono text-[11px] text-[var(--td-text-color-secondary)] bg-zinc-100 dark:bg-zinc-800/80 px-1.5 py-0.5 rounded tracking-wider shadow-inner"},g5={key:1,class:"text-xs text-[var(--td-text-color-secondary)] leading-relaxed"},h5={class:"flex-1 md:max-w-[60%] w-full flex md:justify-end items-center"},y5={class:"sticky bottom-1 z-50 ml-auto w-max flex items-center gap-2 p-1.5 mt-4 mb-2 border border-zinc-200/80 dark:border-zinc-800 bg-white dark:bg-zinc-900 shadow-xl shadow-black/10 dark:shadow-black/40 rounded-full transition-all hover:shadow-lg"},_5=ie({__name:"ServerProperties",setup(s){const a=Ye(),r=h(0),d=h(!1),i=h(!1),c=h({}),f=h(""),n=z=>{const b={};return z.split(` -`).forEach(C=>{const M=C.trim();if(!M||M.startsWith("#"))return;const B=M.indexOf("=");if(B!==-1){const D=M.substring(0,B).trim(),q=M.substring(B+1).trim();b[D]=q}}),b},v=z=>{let b=`#Minecraft server properties -#${new Date().toString()} -`;const R=Ns.map(M=>M.key),C=Object.keys(z);return R.forEach(M=>{Object.prototype.hasOwnProperty.call(z,M)&&(b+=`${M}=${z[M]} -`)}),C.forEach(M=>{R.includes(M)||(b+=`${M}=${z[M]} -`)}),b},I=async()=>{if(r.value){d.value=!0;try{const z=await Uo(r.value,"server.properties");z&&(f.value=z,c.value=n(z))}catch(z){console.error(`读取配置文件失败: ${z.message}`)}finally{d.value=!1}}},u=async()=>{i.value=!0;try{const z=v(c.value);await ms(r.value,"server.properties",z),U.success("配置文件已保存"),I()}catch(z){U.error(`保存失败: ${z.message}`)}finally{i.value=!1}},L=te(()=>{const z=[],b=c.value,R=new Set(Object.keys(b));return Ns.forEach(C=>{R.has(C.key)&&(z.push(C),R.delete(C.key))}),R.forEach(C=>{z.push({key:C,label:C,desc:"未收录的配置项",type:w(b[C]),isUnknown:!0})}),z}),w=z=>z==="true"||z==="false"?"boolean":!isNaN(Number(z))&&z!==""?"number":"string",A=(z,b)=>{const R=c.value[z];return R===void 0?b==="boolean"?!1:"":b==="boolean"?R==="true":b==="number"?Number(R):R},m=(z,b,R)=>{c.value[z]=String(b)};return _e(()=>a.params.serverId,z=>{a.name==="InstanceConsole"&&z&&(r.value=parseInt(z),I())},{immediate:!0}),(z,b)=>{const R=g("t-button"),C=g("t-space"),M=g("t-switch"),B=g("t-select"),D=g("t-input-number"),q=g("t-input"),P=g("t-loading");return l(),x("div",c5,[e("div",u5,[b[2]||(b[2]=e("div",{class:"flex items-center gap-2"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"Server.properties 配置编辑器")],-1)),t(C,{size:"small",class:"w-full sm:w-auto justify-end"},{default:o(()=>[t(R,{variant:"outline",class:"!rounded-lg !bg-zinc-50 dark:!bg-zinc-800/50 !border-zinc-200 dark:!border-zinc-700 hover:!bg-zinc-100 dark:hover:!bg-zinc-800 !text-zinc-600 dark:!text-zinc-300 transition-colors",loading:d.value,onClick:I},{icon:o(()=>[t(_(Ee))]),default:o(()=>[b[0]||(b[0]=p(" 刷新 ",-1))]),_:1},8,["loading"]),t(R,{theme:"primary",class:"!rounded-lg shadow-sm",loading:i.value,onClick:u},{icon:o(()=>[t(_(qo))]),default:o(()=>[b[1]||(b[1]=p(" 保存配置 ",-1))]),_:1},8,["loading"])]),_:1})]),t(P,{loading:d.value,text:"正在读取配置文件..."},{default:o(()=>[e("div",m5,[!d.value&&L.value.length===0?(l(),x("div",p5," 无法找到配置项或文件为空 ")):H("",!0),e("div",v5,[(l(!0),x(le,null,ge(L.value,j=>(l(),x("div",{key:j.key,class:"flex flex-col md:flex-row md:items-start justify-between p-5 transition-colors hover:bg-zinc-50/50 dark:hover:bg-zinc-800/20"},[e("div",f5,[e("div",{class:ce(["text-sm font-bold mb-1",j.isUnknown?"text-amber-600 dark:text-amber-500":"text-[var(--td-text-color-primary)]"])},S(j.label),3),j.isUnknown?H("",!0):(l(),x("div",b5,[e("span",x5,S(j.key),1)])),j.isUnknown?H("",!0):(l(),x("div",g5,S(j.desc||"暂无描述"),1))]),e("div",h5,[j.type==="boolean"?(l(),G(M,{key:0,"model-value":A(j.key,"boolean"),"onUpdate:modelValue":K=>m(j.key,K,"boolean")},null,8,["model-value","onUpdate:modelValue"])):j.type==="select"?(l(),G(B,{key:1,"model-value":A(j.key,"string"),options:j.options,placeholder:"请选择",class:"w-full md:max-w-[400px]","onUpdate:modelValue":K=>m(j.key,K,"string")},null,8,["model-value","options","onUpdate:modelValue"])):j.type==="number"?(l(),G(D,{key:2,"model-value":A(j.key,"number"),theme:"column",class:"w-full md:max-w-[400px]","onUpdate:modelValue":K=>m(j.key,K,"number")},null,8,["model-value","onUpdate:modelValue"])):(l(),G(q,{key:3,"model-value":A(j.key,"string"),placeholder:"未设置",class:"w-full md:max-w-[400px]","onUpdate:modelValue":K=>m(j.key,K,"string")},null,8,["model-value","onUpdate:modelValue"]))])]))),128))])])]),_:1},8,["loading"]),e("div",y5,[t(R,{theme:"default",variant:"text",class:"!rounded-full !px-5 text-zinc-500 hover:text-zinc-700 dark:hover:text-zinc-300 transition-colors",onClick:I,disabled:d.value},{default:o(()=>[...b[3]||(b[3]=[p(" 重置更改 ",-1)])]),_:1},8,["disabled"]),t(R,{theme:"primary",class:"!rounded-full !px-6 shadow-md shadow-[var(--color-primary)]/30",loading:i.value,onClick:u},{icon:o(()=>[t(_(qo))]),default:o(()=>[b[4]||(b[4]=p(" 保存配置 ",-1))]),_:1},8,["loading"])])])}}}),w5=ue(_5,[["__scopeId","data-v-9d2bfe0a"]]),eo="https://mslx.mslmc.cn",io={cron:`${eo}/docs/server-config/crons`,style:`${eo}/docs/style/webpanel/`,style_log_colorizer:`${eo}/docs/style/webpanel/#%E7%BB%88%E7%AB%AF%E6%97%A5%E5%BF%97%E6%9F%93%E8%89%B2%E7%AD%89%E7%BA%A7%E9%85%8D%E7%BD%AE`,remote_access:`${eo}/docs/config/remote-access/`,msl_oauth:`${eo}/docs/config/msl-oauth`},k5={class:"flex flex-col mx-auto w-full"},$5={class:"flex items-center justify-between mt-5 mb-4 pb-2 border-b border-dashed border-zinc-200 dark:border-zinc-700"},z5={key:0,class:"mb-6 overflow-hidden bg-white dark:bg-zinc-900/40 border border-zinc-200 dark:border-zinc-800 rounded-xl shadow-sm"},C5={class:"px-6 py-3 flex justify-between items-center bg-zinc-50 dark:bg-zinc-800/50 border-b border-zinc-200 dark:border-zinc-800"},A5={class:"text-sm font-bold text-zinc-700 dark:text-zinc-200"},S5={class:"flex-1 md:max-w-[40%] pr-0 md:pr-8 mb-3 md:mb-0"},I5={class:"text-sm font-bold text-[var(--td-text-color-primary)]"},V5={class:"text-xs text-[var(--td-text-color-secondary)] mt-1"},U5={class:"flex-1 md:max-w-[60%] w-full flex items-center gap-2"},M5={key:0,class:"flex flex-col md:flex-row md:items-start justify-between p-5 border-b border-dashed border-zinc-100 dark:border-zinc-800"},L5={class:"flex-1 md:max-w-[40%] pr-0 md:pr-8 mb-3 md:mb-0"},B5={class:"text-sm font-bold text-[var(--td-text-color-primary)]"},T5={class:"text-xs text-[var(--td-text-color-secondary)] mt-1"},R5={class:"flex-1 md:max-w-[60%] w-full"},j5={class:"flex items-center justify-between p-5"},P5={class:"px-5 py-4 bg-zinc-50/50 dark:bg-zinc-800/20 flex gap-3"},E5={class:"flex flex-col gap-3 mt-2"},D5={key:0,class:"flex flex-col items-center justify-center p-12 border-2 border-dashed border-zinc-200 dark:border-zinc-800 rounded-2xl text-[var(--td-text-color-secondary)]"},F5={class:"flex-1 min-w-0 w-full"},O5={class:"flex items-center gap-3 mb-3"},N5={class:"text-base font-bold text-[var(--td-text-color-primary)] truncate"},K5={class:"flex flex-wrap items-center gap-3 text-xs"},q5={class:"flex items-center gap-1.5 px-2 py-1 bg-zinc-100 dark:bg-zinc-800 text-[var(--td-text-color-secondary)] rounded-md font-mono"},H5=["title"],G5={class:"flex shrink-0 gap-1 mt-4 md:mt-0 pt-3 md:pt-0 border-t md:border-t-0 border-zinc-100 dark:border-zinc-800 w-full md:w-auto justify-end"},W5=ie({__name:"CronTasks",setup(s){const a=Ye(),r=te(()=>parseInt(a.params.serverId)),d=h([]),i=h(!1),c=h(!1),f=h(null),n=h(!1),v=h(null),I=h(!1),u=h({id:"",name:"",cron:"",type:"command",payload:"",enable:!0}),L=[{label:"发送命令 (Command)",value:"command"},{label:"备份存档 (Backup)",value:"backup"},{label:"开启服务器 (Start)",value:"start"},{label:"停止服务器 (Stop)",value:"stop"},{label:"重启服务器 (Restart)",value:"restart"}],w={name:[{required:!0,message:"必填",trigger:"blur"}],cron:[{required:!0,message:"必填",trigger:"blur"}],type:[{required:!0,message:"必选",trigger:"change"}],payload:[{validator:q=>u.value.type==="command"&&!q?{result:!1,message:"命令内容不能为空",type:"error"}:!0,trigger:"blur"}]},A=async()=>{if(r.value){i.value=!0;try{const q=await xf(r.value);d.value=q||[]}catch(q){U.error(q.message||"获取列表失败")}finally{i.value=!1}}},m=()=>{c.value||(u.value={id:"",name:"",cron:"",type:"command",payload:"",enable:!0},f.value=null,c.value=!0)},z=q=>{u.value={id:q.id,name:q.name,cron:q.cron,type:q.type.toLowerCase(),payload:q.payload,enable:q.enable},f.value=q.id,c.value=!0,window.scrollTo({top:0,behavior:"smooth"})},b=()=>{c.value=!1,f.value=null},R=async()=>{if(await v.value?.validate()===!0){n.value=!0;try{f.value?(await es(r.value,u.value.id,u.value.name,u.value.cron,u.value.payload,u.value.type,u.value.enable),U.success("更新成功")):(await Sa(r.value,u.value.name,u.value.cron,u.value.payload,u.value.type,u.value.enable),U.success("创建成功")),b(),A()}catch(P){U.error(P.message||"操作失败")}finally{n.value=!1}}},C=q=>{const P=Ke.confirm({header:"确认删除?",body:`确定删除任务 "${q.name}" 吗?`,theme:"danger",onConfirm:async()=>{try{await Ia(q.id),U.success("已删除"),A(),P.hide()}catch(j){U.error(j.message)}},onClose:()=>P.hide()})},M=q=>{u.value.cron=q},B=q=>{const P=q.toLowerCase();return P==="start"?_t:P==="stop"?uo:P==="restart"?Ee:Tt},D=q=>{const P=q.toLowerCase();return P==="start"?"success":P==="stop"?"danger":P==="restart"?"warning":"primary"};return _e(()=>r.value,A),ze(A),(q,P)=>{const j=g("t-button"),K=g("t-space"),k=g("t-input"),V=g("t-select"),y=g("t-textarea"),$=g("t-switch"),E=g("t-form"),F=g("t-tag"),J=g("t-loading");return l(),x("div",k5,[e("div",$5,[P[10]||(P[10]=e("div",{class:"flex items-center gap-2"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"定时计划任务")],-1)),c.value?H("",!0):(l(),G(K,{key:0},{default:o(()=>[t(j,{theme:"default",variant:"outline",class:"!rounded-lg",onClick:P[0]||(P[0]=O=>_(Ie)(_(io).cron))},{icon:o(()=>[t(_(wo))]),default:o(()=>[P[8]||(P[8]=p("使用文档 ",-1))]),_:1}),t(j,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:m},{icon:o(()=>[t(_(ot))]),default:o(()=>[P[9]||(P[9]=p("创建新任务 ",-1))]),_:1})]),_:1}))]),t(Rt,{"enter-active-class":"transition duration-300 ease-out","enter-from-class":"transform -translate-y-2 opacity-0","leave-active-class":"transition duration-200 ease-in","leave-to-class":"transform -translate-y-2 opacity-0"},{default:o(()=>[c.value?(l(),x("div",z5,[e("div",C5,[e("span",A5,S(f.value?"编辑任务":"创建新任务"),1),t(j,{size:"small",variant:"text",shape:"square",onClick:b},{default:o(()=>[t(_(as))]),_:1})]),t(E,{ref_key:"formRef",ref:v,data:u.value,rules:w,"label-width":"0",class:"p-0"},{default:o(()=>[(l(),x(le,null,ge([{title:"任务名称",desc:"给计划任务起个易识别的名字",key:"name"},{title:"触发规则 (Cron)",desc:"支持秒级精度 (秒 分 时 日 月 周)",key:"cron"},{title:"执行操作",desc:"选择触发时要执行的动作类型",key:"type"}],(O,N)=>e("div",{key:N,class:"flex flex-col md:flex-row md:items-start justify-between p-5 border-b border-dashed border-zinc-100 dark:border-zinc-800 last:border-0"},[e("div",S5,[e("div",I5,S(O.title),1),e("div",V5,S(O.desc),1)]),e("div",U5,[O.key==="name"?(l(),G(k,{key:0,modelValue:u.value.name,"onUpdate:modelValue":P[1]||(P[1]=Y=>u.value.name=Y),placeholder:"请输入任务名称",class:"flex-1"},null,8,["modelValue"])):H("",!0),O.key==="cron"?(l(),x(le,{key:1},[t(k,{modelValue:u.value.cron,"onUpdate:modelValue":P[2]||(P[2]=Y=>u.value.cron=Y),placeholder:"例如: 0 0 12 * * ?",class:"flex-1"},null,8,["modelValue"]),t(j,{variant:"outline",class:"shrink-0",onClick:P[3]||(P[3]=Y=>I.value=!0)},{default:o(()=>[...P[11]||(P[11]=[p("生成器",-1)])]),_:1})],64)):H("",!0),O.key==="type"?(l(),G(V,{key:2,modelValue:u.value.type,"onUpdate:modelValue":P[4]||(P[4]=Y=>u.value.type=Y),options:L,class:"w-full"},null,8,["modelValue"])):H("",!0)])])),64)),u.value.type==="command"||u.value.type==="restart"?(l(),x("div",M5,[e("div",L5,[e("div",B5,S(u.value.type==="restart"?"重启提示语":"控制台命令"),1),e("div",T5,S(u.value.type==="restart"?"重启前发送给玩家的消息":"直接输入内容,不需要加 /"),1)]),e("div",R5,[t(y,{modelValue:u.value.payload,"onUpdate:modelValue":P[5]||(P[5]=O=>u.value.payload=O),autosize:{minRows:2,maxRows:4},placeholder:"请输入内容...",class:"w-full"},null,8,["modelValue"])])])):H("",!0),e("div",j5,[P[12]||(P[12]=e("div",{class:"flex-1 pr-8"},[e("div",{class:"text-sm font-bold text-[var(--td-text-color-primary)]"},"启用状态"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1"},"暂时禁用此任务而不删除它")],-1)),t($,{modelValue:u.value.enable,"onUpdate:modelValue":P[6]||(P[6]=O=>u.value.enable=O)},null,8,["modelValue"])]),e("div",P5,[t(j,{theme:"primary",loading:n.value,class:"!rounded-lg",onClick:R},{icon:o(()=>[t(_(qo))]),default:o(()=>[p(S(f.value?"保存修改":"立即创建"),1)]),_:1},8,["loading"]),t(j,{theme:"default",variant:"base",class:"!rounded-lg",onClick:b},{default:o(()=>[...P[13]||(P[13]=[p("取消",-1)])]),_:1})])]),_:1},8,["data"])])):H("",!0)]),_:1}),t(J,{loading:i.value,"show-overlay":""},{default:o(()=>[e("div",E5,[d.value.length===0&&!i.value?(l(),x("div",D5,[...P[14]||(P[14]=[e("span",{class:"text-sm font-medium"},"暂无任务,请点击上方创建",-1)])])):H("",!0),(l(!0),x(le,null,ge(d.value,O=>(l(),x("div",{key:O.id,class:"group flex flex-col md:flex-row items-center justify-between p-5 bg-white dark:bg-zinc-900/40 border border-zinc-200 dark:border-zinc-800 rounded-xl transition-all duration-200 hover:border-[var(--color-primary)] hover:shadow-md"},[e("div",F5,[e("div",O5,[t(F,{size:"small",theme:O.enable?"success":"warning",variant:"light-outline",class:"!rounded-md"},{default:o(()=>[p(S(O.enable?"运行中":"已暂停"),1)]),_:2},1032,["theme"]),e("span",N5,S(O.name),1)]),e("div",K5,[t(F,{size:"small",variant:"outline",theme:D(O.type),class:"!rounded-md uppercase font-mono"},{icon:o(()=>[(l(),G(it(B(O.type))))]),default:o(()=>[p(" "+S(O.type),1)]),_:2},1032,["theme"]),e("div",q5,[t(_(pt),{class:"text-sm"}),p(" "+S(O.cron),1)])]),O.payload?(l(),x("div",{key:0,class:"mt-3 text-xs text-[var(--td-text-color-secondary)] bg-zinc-50 dark:bg-zinc-800/30 p-2 rounded-md border border-zinc-100 dark:border-zinc-800/50 truncate",title:O.payload},S(O.payload),9,H5)):H("",!0)]),e("div",G5,[t(j,{variant:"text",theme:"primary",class:"!rounded-lg hover:!bg-[var(--color-primary)]/10",onClick:N=>z(O)},{icon:o(()=>[t(_(ao))]),default:o(()=>[P[15]||(P[15]=p(" 编辑 ",-1))]),_:1},8,["onClick"]),t(j,{variant:"text",theme:"danger",class:"!rounded-lg hover:!bg-red-500/10",onClick:N=>C(O)},{icon:o(()=>[t(_(ct))]),default:o(()=>[P[16]||(P[16]=p(" 删除 ",-1))]),_:1},8,["onClick"])])]))),128))])]),_:1},8,["loading"]),t(Va,{visible:I.value,"onUpdate:visible":P[7]||(P[7]=O=>I.value=O),"initial-value":u.value.cron,onConfirm:M},null,8,["visible","initial-value"])])}}}),J5=ue(W5,[["__scopeId","data-v-c1bcc0be"]]),X5={class:"flex flex-col mx-auto"},Q5={class:"flex flex-col md:flex-row md:justify-between md:items-center py-4 pr-0 md:pr-8 gap-4 md:gap-8"},Y5={class:"flex-1 min-w-[200px]"},Z5={class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 leading-relaxed"},e3={class:"text-zinc-700 dark:text-zinc-300"},t3={class:"shrink-0 flex items-center min-h-[32px] w-full md:w-auto"},o3={key:0,class:"flex items-center bg-zinc-100 dark:bg-zinc-800/80 px-3 py-1.5 rounded-lg gap-3 shadow-sm w-full md:w-auto justify-between md:justify-start"},s3={class:"flex items-center gap-3"},a3={class:"text-sm font-bold text-[var(--td-text-color-primary)]"},l3={class:"flex items-center"},r3={class:"mt-4 border border-zinc-200/60 dark:border-zinc-700/60 rounded-xl overflow-hidden shadow-sm bg-white/50 dark:bg-zinc-900/20"},n3={class:"flex items-center font-mono text-[13px] text-zinc-700 dark:text-zinc-300 break-all"},i3={class:"flex items-center text-[var(--td-text-color-secondary)] text-[13px]"},d3=ie({__name:"BackupManager",setup(s){const a=Ye(),r=te(()=>{const m=a.params.serverId;return m?parseInt(m):NaN}),d=h(!1),i=h([]),c=h([]),f=[{colKey:"row-select",type:"multiple",width:20,fixed:"left"},{colKey:"fileName",title:"文件名",ellipsis:!0,width:200},{colKey:"fileSizeStr",title:"文件大小",width:120},{colKey:"createTime",title:"备份时间",width:180},{colKey:"op",title:"操作",fixed:"right",width:140}],n=m=>new Promise(z=>setTimeout(z,m)),v=async()=>{if(r.value){d.value=!0,c.value=[];try{const m=await di(r.value);i.value=m.data||m}catch(m){U.error("获取备份列表失败: "+m.message)}finally{d.value=!1}}},I=m=>{c.value=m},u=m=>{const z=Ke.confirm({header:"确认删除备份?",body:`您确定要永久删除文件 "${m.fileName}" 吗?此操作不可恢复。`,theme:"danger",onConfirm:async()=>{z.hide();try{await Yo(r.value,m.fileName),U.success("删除成功"),await v()}catch(b){U.error(b.message||"删除失败")}},onClose:()=>{z.hide()}})},L=m=>{try{const z=Zo(r.value,m.fileName);window.open(z,"_blank")}catch(z){U.error("下载失败!"+z.message)}},w=()=>{const m=c.value.length;m!==0&&(U.info(`开始下载 ${m} 个文件,请注意允许浏览器弹窗...`),c.value.forEach((z,b)=>{setTimeout(()=>{const R=Zo(r.value,z);window.open(R,"_blank")},b*1e3)}))},A=()=>{const m=c.value.length;if(m===0)return;const z=Ke.confirm({header:"确认批量删除?",body:`您选中了 ${m} 个备份文件。删除后无法恢复,确定要继续吗?`,theme:"danger",onConfirm:async()=>{z.hide(),d.value=!0;let b=0,R=0,C=null;try{for(const[M,B]of c.value.entries()){C&&U.close(C),C=U.loading(`正在删除 ${B} (${M+1}/${m})...`,0);try{await Yo(r.value,B),b++}catch(D){R++,console.error(`删除 ${B} 失败`,D)}M{z.hide()}})};return _e(()=>a.params.serverId,m=>{m&&v()}),ze(()=>{v()}),(m,z)=>{const b=g("t-button"),R=g("t-tooltip"),C=g("t-space"),M=g("t-table");return l(),x("div",X5,[z[10]||(z[10]=e("div",{class:"flex items-center gap-2 mt-5 mb-4 pb-2 border-b border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"备份管理")],-1)),e("div",Q5,[e("div",Y5,[z[4]||(z[4]=e("div",{class:"text-sm font-bold text-[var(--td-text-color-primary)] leading-snug"},"存档快照",-1)),e("div",Z5,[z[0]||(z[0]=p(" 查看和管理服务器的自动或手动备份。建议定期下载重要备份到本地保存。 ",-1)),z[1]||(z[1]=e("br",null,null,-1)),z[2]||(z[2]=p(" 当前共有 ",-1)),e("b",e3,S(i.value.length),1),z[3]||(z[3]=p(" 个备份文件。最大保存备份文件的数量需要在实例设置中配置。 ",-1))])]),e("div",t3,[t(Rt,{"enter-active-class":"transition-opacity duration-200 ease-out","enter-from-class":"opacity-0","leave-active-class":"transition-opacity duration-200 ease-in","leave-to-class":"opacity-0",mode:"out-in"},{default:o(()=>[c.value.length>0?(l(),x("div",o3,[e("div",s3,[z[5]||(z[5]=e("div",{class:"w-[2px] h-[14px] bg-zinc-300 dark:bg-zinc-600 -mr-1"},null,-1)),e("span",a3,"已选 "+S(c.value.length)+" 项",1)]),e("div",l3,[t(b,{variant:"text",theme:"primary",class:"!px-2 !h-7 !text-sm hover:!bg-[var(--color-primary)]/10 !rounded-md",onClick:w},{default:o(()=>[...z[6]||(z[6]=[p(" 下载 ",-1)])]),_:1}),t(b,{variant:"text",theme:"danger",class:"!px-2 !h-7 !text-sm hover:!bg-red-500/10 !rounded-md",onClick:A},{default:o(()=>[...z[7]||(z[7]=[p(" 删除 ",-1)])]),_:1})])])):(l(),G(b,{key:1,theme:"primary",variant:"outline",class:"!rounded-lg shadow-sm w-full md:w-auto",onClick:v},{icon:o(()=>[t(_(Ee))]),default:o(()=>[z[8]||(z[8]=p(" 刷新列表 ",-1))]),_:1}))]),_:1})])]),e("div",r3,[t(M,{"row-key":"fileName",data:i.value,columns:f,loading:d.value,"selected-row-keys":c.value,stripe:"",hover:"",class:"custom-table",onSelectChange:I},{fileName:o(({row:B})=>[e("div",n3,[t(_(Ut),{class:"mr-1.5 text-[var(--color-primary)]"}),e("span",null,S(B.fileName),1)])]),createTime:o(({row:B})=>[e("div",i3,[t(_(pt),{class:"mr-1.5"}),p(" "+S(B.createTime),1)])]),op:o(({row:B})=>[t(C,null,{default:o(()=>[t(R,{content:"下载备份"},{default:o(()=>[t(b,{variant:"text",shape:"square",theme:"primary",class:"!rounded-md hover:!bg-[var(--color-primary)]/10 transition-colors",onClick:D=>L(B)},{default:o(()=>[t(_(so))]),_:1},8,["onClick"])]),_:2},1024),t(R,{content:"删除备份"},{default:o(()=>[t(b,{variant:"text",shape:"square",theme:"danger",class:"!rounded-md hover:!bg-red-500/10 transition-colors",onClick:D=>u(B)},{default:o(()=>[t(_(ct))]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),empty:o(()=>[...z[9]||(z[9]=[e("div",{class:"p-8 text-center text-sm font-medium text-[var(--td-text-color-secondary)]"},"暂无备份记录",-1)])]),_:1},8,["data","loading","selected-row-keys"])])])}}}),c3=ue(d3,[["__scopeId","data-v-36c1715d"]]),u3={key:0,class:"flex flex-col gap-4 py-2"},m3={class:"flex flex-col gap-2 mt-2"},p3={class:"flex justify-end gap-3 mt-4"},v3={key:1,class:"flex flex-col items-center gap-4 py-4 w-full"},f3={class:"flex justify-center items-center h-10"},b3={class:"text-sm font-medium text-[var(--td-text-color-primary)] text-center px-4 w-full truncate"},x3={class:"w-full"},g3={key:1,class:"mt-4"},h3=ie({__name:"BedrockAutoUpdater",props:{visible:{type:Boolean},instanceId:{}},emits:["update:visible","success"],setup(s,{emit:a}){const r=s,d=a,i=Te(),c=te(()=>i.userInfo.systemInfo.osType?.toLowerCase()||""),f=te(()=>c.value.includes("window")),n=te({get:()=>r.visible,set:D=>d("update:visible",D)}),v=h([]),I=h(""),u=h(!1),L=h(!1),w=h("idle"),A=h(0),m=h(""),z=async()=>{u.value=!0;try{const q=(await fs("bedrock-server")).versions||[];let P=[];f.value?P=q.filter(j=>j.includes("win-")):P=q.filter(j=>j.includes("linux-")),v.value=P.map(j=>({label:j,value:j})),v.value.length>0&&(I.value=v.value[0].value)}catch(D){U.warning("获取版本列表失败: "+D.message)}finally{u.value=!1}};_e(()=>r.visible,D=>{D&&(L.value=!1,w.value="idle",A.value=0,m.value="",v.value.length===0&&z())});const b=D=>new Promise((q,P)=>{const j=setInterval(async()=>{try{const K=await wa(D);A.value=K.progress,m.value=K.message,K.status==="success"?(clearInterval(j),q(!0)):K.status==="error"&&(clearInterval(j),P(new Error(K.message||"下载失败")))}catch(K){clearInterval(j),P(K)}},1e3)}),R=D=>new Promise((q,P)=>{const j=setInterval(async()=>{try{const K=await ha(D);A.value=K.progress||0,m.value=K.message,K.status==="success"?(clearInterval(j),q(!0)):K.status==="error"&&(clearInterval(j),P(new Error(K.message||"解压出错")))}catch(K){clearInterval(j),P(K)}},1e3)}),C=()=>{if(!I.value){U.warning("请选择要更新的版本");return}const D=Ke.confirm({header:"高危操作确认",theme:"warning",body:"即将开始自动下载并覆盖更新基岩版服务端。请确认您已备份核心数据(如 worlds 目录)。此更新为前台任务,请勿在更新期间关闭或刷新此页面,否则可能导致服务端文件损坏!",confirmBtn:"我已备份,开始更新",cancelBtn:"取消",onConfirm:()=>{D.hide(),M()}})},M=async()=>{L.value=!0,w.value="fetching",A.value=0,m.value="正在解析下载地址...";try{const D=await bs("bedrock-server",I.value);if(!D||!D.url)throw new Error("无法获取版本下载链接");const q="bedrock_update_temp.zip";w.value="downloading",m.value="正在提交离线下载任务...";const P=await _a(r.instanceId,"",D.url,q),j=P.taskId||P.data&&P.data.taskId;if(!j)throw new Error("未能获取下载任务ID");await b(j),w.value="unzipping",A.value=0,m.value="正在解压并覆盖服务端文件...";const K=await ga(r.instanceId,q,"","auto",!1),k=K.taskId||K.data&&K.data.taskId;if(!k)throw new Error("未能获取解压任务ID");await R(k),f.value||(w.value="chmodding",m.value="正在赋予可执行权限...",await ya(r.instanceId,"bedrock_server","755")),w.value="success",A.value=100,m.value="基岩版服务端更新成功!",setTimeout(()=>{d("success"),n.value=!1},2e3)}catch(D){w.value="error",m.value=D.message||"更新过程中发生异常",U.error(m.value)}},B=()=>{if(L.value&&w.value!=="success"&&w.value!=="error"){U.warning("更新任务正在进行中,请勿关闭窗口");return}n.value=!1};return(D,q)=>{const P=g("t-select"),j=g("t-button"),K=g("t-alert"),k=g("t-loading"),V=g("t-progress"),y=g("t-dialog");return l(),G(y,{visible:n.value,"onUpdate:visible":q[2]||(q[2]=$=>n.value=$),header:"自动更新基岩版",footer:!1,"close-btn":!L.value||w.value==="success"||w.value==="error","close-on-esc-keydown":!L.value||w.value==="success"||w.value==="error","close-on-overlay-click":!L.value||w.value==="success"||w.value==="error","on-close":B,attach:"body",width:"480px"},{default:o(()=>[w.value==="idle"?(l(),x("div",u3,[q[6]||(q[6]=e("div",{class:"bg-blue-50 dark:bg-blue-900/20 p-3 rounded-xl border border-blue-200/60 dark:border-blue-800/60 text-[13px] text-blue-800 dark:text-blue-300 shadow-inner"},[p(" 自动更新程序将下载官方服务端并解压覆盖到实例根目录。配置和地图数据通常不会丢失,但仍"),e("strong",null,"强烈建议"),p("事先备份。 ")],-1)),e("div",m3,[q[3]||(q[3]=e("span",{class:"text-sm font-medium text-[var(--td-text-color-primary)]"},"目标版本",-1)),t(P,{modelValue:I.value,"onUpdate:modelValue":q[0]||(q[0]=$=>I.value=$),options:v.value,loading:u.value,filterable:"",class:"!rounded-lg shadow-sm",placeholder:"请选择要更新的版本"},null,8,["modelValue","options","loading"])]),e("div",p3,[t(j,{variant:"outline",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:B},{default:o(()=>[...q[4]||(q[4]=[p("取消",-1)])]),_:1}),t(j,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:C,disabled:!I.value},{default:o(()=>[...q[5]||(q[5]=[p("开始更新",-1)])]),_:1},8,["disabled"])])])):(l(),x("div",v3,[L.value&&w.value!=="success"&&w.value!=="error"?(l(),G(K,{key:0,theme:"warning",class:"!w-full !rounded-xl !mb-2 border border-red-200 dark:border-red-900/50"},{message:o(()=>[...q[7]||(q[7]=[e("div",{class:"text-xs font-bold leading-relaxed"}," 基岩版服务端更新中:请勿关闭、刷新此页面或离开当前页面,否则可能导致服务端文件损坏! ",-1)])]),_:1})):H("",!0),e("div",f3,[w.value==="success"?(l(),G(_(Kt),{key:0,class:"text-emerald-500 text-[40px]"})):w.value==="error"?(l(),G(_(So),{key:1,class:"text-red-500 text-[40px]"})):(l(),G(k,{key:2,size:"medium"}))]),e("div",b3,S(m.value),1),e("div",x3,[t(V,{theme:"plump",percentage:A.value,status:w.value==="error"?"error":w.value==="success"?"success":"active"},null,8,["percentage","status"])]),w.value==="error"?(l(),x("div",g3,[t(j,{theme:"primary",variant:"outline",onClick:q[1]||(q[1]=$=>w.value="idle")},{default:o(()=>[...q[8]||(q[8]=[p("返回重试",-1)])]),_:1})])):H("",!0)]))]),_:1},8,["visible","close-btn","close-on-esc-keydown","close-on-overlay-click"])}}}),y3=ue(h3,[["__scopeId","data-v-9b299421"]]),_3={class:"flex flex-col mx-auto w-full pb-6"},w3={key:0,class:"mb-4"},k3={class:"flex flex-col md:flex-row md:items-center justify-between py-4 gap-4"},$3={class:"flex items-center gap-4 shrink-0 w-full md:w-auto mt-2 md:mt-0"},z3={class:"w-[72px] h-[72px] shrink-0 border border-dashed border-zinc-300 dark:border-zinc-700 rounded-xl flex justify-center items-center bg-zinc-50 dark:bg-zinc-900/50 overflow-hidden shadow-inner"},C3=["src"],A3={key:1,class:"flex flex-col items-center text-[var(--td-text-color-secondary)] gap-1 opacity-80"},S3={class:"flex flex-col gap-2 flex-1 md:flex-none md:w-[140px]"},I3={class:"flex flex-col mx-auto w-full pb-6"},V3={key:0,class:"mt-8"},U3={class:"flex flex-col md:flex-row md:items-center justify-between py-4 gap-4"},M3={class:"flex items-center gap-4 shrink-0 w-full md:w-auto mt-2 md:mt-0"},L3={class:"flex flex-col items-center p-5 md:p-6 bg-zinc-50/50 dark:bg-zinc-950/20"},B3={key:0,class:"relative max-w-full max-h-[400px] select-none cropper-bg-pattern rounded-lg overflow-hidden border border-zinc-200/80 dark:border-zinc-700/80 shadow-inner"},T3=["src"],R3=["src"],j3=ie({__name:"More",setup(s){const a=Ye(),r=te(()=>parseInt(a.params.serverId)),d=h(!1),i=h(""),c=h(null),f=h(null),n=h(!1),v=h(""),I=h(null),u=h({x:0,y:0,size:100}),L=h({imgWidth:0,imgHeight:0,scale:1});let w=null,A=0,m=0,z=0,b=0,R=0;const C=async()=>{d.value=!0,i.value="";try{const E=await xa(r.value,"server-icon.png"),F=E.data||E;F instanceof Blob?F.size===0||F.type.includes("json")?c.value=null:(c.value&&URL.revokeObjectURL(c.value),c.value=URL.createObjectURL(F)):c.value=null}catch{c.value=null}finally{d.value=!1}},M=()=>{f.value&&(f.value.value="",f.value.click())},B=E=>{const J=E.target.files?.[0];if(!J)return;if(!J.type.startsWith("image/")){U.warning("请选择图片文件");return}const O=new FileReader;O.onload=N=>{v.value=N.target?.result,n.value=!0},O.readAsDataURL(J)},D=()=>{if(!I.value)return;const E=I.value;L.value.imgWidth=E.clientWidth,L.value.imgHeight=E.clientHeight,L.value.scale=E.naturalWidth/E.clientWidth;const F=Math.min(E.clientWidth,E.clientHeight),J=Math.floor(F*1);u.value={size:J,x:(E.clientWidth-J)/2,y:(E.clientHeight-J)/2}},q=(E,F)=>{E.preventDefault(),w=F,A=E.clientX,m=E.clientY,z=u.value.x,b=u.value.y,R=u.value.size,window.addEventListener("mousemove",P),window.addEventListener("mouseup",j)},P=E=>{if(!w)return;const F=E.clientX-A,J=E.clientY-m;if(w==="move"){const O=z+F,N=b+J,Y=L.value.imgWidth-u.value.size,be=L.value.imgHeight-u.value.size;u.value.x=Math.max(0,Math.min(O,Y)),u.value.y=Math.max(0,Math.min(N,be))}else if(w==="resize"){const O=Math.max(F,J);let N=R+O;N<20&&(N=20);const Y=Math.min(L.value.imgWidth-u.value.x,L.value.imgHeight-u.value.y);u.value.size=Math.min(N,Y)}},j=()=>{w=null,window.removeEventListener("mousemove",P),window.removeEventListener("mouseup",j)},K=async()=>{if(I.value){d.value=!0;try{const E=document.createElement("canvas");E.width=64,E.height=64;const F=E.getContext("2d");if(!F)throw new Error("无法初始化 Canvas");const J=I.value,O=L.value.scale,N=u.value.x*O,Y=u.value.y*O,be=u.value.size*O;F.drawImage(J,N,Y,be,be,0,0,64,64);const ae=await new Promise((Se,Me)=>{E.toBlob(Z=>{Z?Se(Z):Me(new Error("生成图片失败"))},"image/png")}),me=await qt(),fe=me.uploadId||me.data?.uploadId;if(!fe)throw new Error("初始化上传失败:未获取到 uploadId");await Ht(fe,0,ae),await Gt(fe,1),await ba(r.value,fe,"server-icon.png",""),U.success("服务器图标已成功更新!"),n.value=!1,await C()}catch(E){U.error(E.message||"上传失败,请重试")}finally{d.value=!1}}},k=h(null),V=h(!1),y=async()=>{try{k.value=await vs(r.value)}catch(E){console.error("获取实例信息失败",E)}},$=()=>{if(k.value?.status!==0){U.warning("实例正在运行中,请先关闭服务器后再进行更新操作!");return}V.value=!0};return ze(()=>{C(),y()}),_e(()=>a.params.serverId,E=>{a.name==="InstanceConsole"&&E&&(c.value=null,v.value="",C(),y())},{immediate:!0}),(E,F)=>{const J=g("t-alert"),O=g("t-button"),N=g("t-loading"),Y=g("t-dialog"),be=Ys("loading");return l(),x("div",_3,[i.value?(l(),x("div",w3,[t(J,{theme:"error",message:i.value,closeable:"",class:"!rounded-xl shadow-sm border border-red-100 dark:border-red-900/50",onClose:F[0]||(F[0]=ae=>i.value="")},{operation:o(()=>[e("span",{class:"cursor-pointer ml-2 font-bold text-red-600 dark:text-red-400 hover:opacity-80 transition-opacity",onClick:C},"重试")]),_:1},8,["message"])])):H("",!0),t(N,{loading:d.value,"show-overlay":""},{default:o(()=>[F[9]||(F[9]=e("div",{class:"flex items-center gap-2 mt-5 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"外观设置")],-1)),e("div",k3,[F[8]||(F[8]=e("div",{class:"flex-1 md:pr-8"},[e("div",{class:"text-sm font-bold text-[var(--td-text-color-primary)]"},"服务器图标"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 leading-relaxed"},[p(" 上传自定义的 JPG / PNG 图片替换现有的 server-icon.png。"),e("br"),p(" 系统将提供可视化裁剪工具,并自动帮您转换为标准的 64x64 服务器图标文件。 ")])],-1)),e("div",$3,[e("input",{ref_key:"fileInput",ref:f,type:"file",accept:"image/png, image/jpeg",class:"hidden",onChange:B},null,544),e("div",z3,[c.value?(l(),x("img",{key:0,src:c.value,alt:"Server Icon",class:"w-16 h-16 rounded shadow-sm [image-rendering:pixelated]"},null,8,C3)):(l(),x("div",A3,[t(_(ia),{size:"20px"}),F[5]||(F[5]=e("span",{class:"text-[10px] font-medium tracking-widest"},"暂无",-1))]))]),e("div",S3,[t(O,{theme:"primary",block:"",class:"!rounded-lg shadow-sm !m-0",onClick:M},{icon:o(()=>[t(_(yo))]),default:o(()=>[F[6]||(F[6]=p(" 选择新图标 ",-1))]),_:1}),t(O,{variant:"outline",block:"",class:"!rounded-lg !bg-zinc-50 dark:!bg-zinc-800/50 !border-zinc-200 dark:!border-zinc-700 hover:!bg-zinc-100 dark:hover:!bg-zinc-800 !text-zinc-700 dark:!text-zinc-300 transition-colors !m-0",onClick:C},{icon:o(()=>[t(_(Ee))]),default:o(()=>[F[7]||(F[7]=p(" 刷新图标 ",-1))]),_:1})])])])]),_:1},8,["loading"]),e("div",I3,[t(N,{loading:d.value,"show-overlay":""},{default:o(()=>[k.value?.args?.includes("bedrock_server")?(l(),x("div",V3,[F[12]||(F[12]=e("div",{class:"flex items-center gap-2 mb-4 pb-2 border-b border-dashed border-zinc-200/60 dark:border-zinc-700/60"},[e("div",{class:"w-1 h-4 bg-[var(--color-primary)] rounded-full"}),e("h2",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0"},"基岩版管理")],-1)),e("div",U3,[F[11]||(F[11]=e("div",{class:"flex-1 md:pr-8"},[e("div",{class:"text-sm font-bold text-[var(--td-text-color-primary)]"},"服务端自动更新"),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 leading-relaxed"},[p(" 全自动下载官方最新版并覆盖更新当前文件。"),e("br"),p(" 强烈建议在更新前备份数据(如"),e("code",{class:"mx-1 px-1 bg-zinc-100 dark:bg-zinc-800 rounded"},"worlds"),p("目录)。 ")])],-1)),e("div",M3,[t(O,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:$},{default:o(()=>[...F[10]||(F[10]=[p(" 获取并自动更新 ",-1)])]),_:1})])])])):H("",!0)]),_:1},8,["loading"]),t(y3,{visible:V.value,"onUpdate:visible":F[1]||(F[1]=ae=>V.value=ae),"instance-id":r.value,onSuccess:y},null,8,["visible","instance-id"])]),t(Y,{visible:n.value,"onUpdate:visible":F[4]||(F[4]=ae=>n.value=ae),header:"裁剪服务器图标 (64x64)",width:"600px","close-on-overlay-click":!1,attach:"body",onConfirm:K},{default:o(()=>[Be((l(),x("div",L3,[F[15]||(F[15]=e("p",{class:"text-xs text-[var(--td-text-color-secondary)] mb-5 text-center bg-[var(--td-bg-color-container)]/80 px-4 py-2.5 rounded-lg border border-zinc-200/60 dark:border-zinc-700/60 shadow-sm backdrop-blur-md"},[p(" 请拖动和缩放亮色方框,选择需要截取的区域。生成后将自动转为 "),e("b",{class:"text-zinc-700 dark:text-zinc-300"},"64x64"),p(" 的标准尺寸。 ")],-1)),v.value?(l(),x("div",B3,[e("img",{ref_key:"sourceImageRef",ref:I,src:v.value,class:"block max-w-full max-h-[400px]",draggable:"false",onLoad:D},null,40,T3),F[14]||(F[14]=e("div",{class:"absolute inset-0 bg-black/60 pointer-events-none"},null,-1)),e("div",{class:"absolute cursor-move overflow-hidden shadow-[0_0_0_1px_rgba(0,0,0,0.5)] ring-1 ring-white/50",style:Oe({left:u.value.x+"px",top:u.value.y+"px",width:u.value.size+"px",height:u.value.size+"px"}),onMousedown:F[3]||(F[3]=ae=>q(ae,"move"))},[e("img",{src:v.value,class:"absolute top-0 left-0 max-w-none pointer-events-none",draggable:"false",style:Oe({width:L.value.imgWidth+"px",height:L.value.imgHeight+"px",transform:`translate(${-u.value.x}px, ${-u.value.y}px)`})},null,12,R3),F[13]||(F[13]=e("div",{class:"absolute inset-0 border border-dashed border-white/80 pointer-events-none"},null,-1)),e("div",{class:"absolute right-0 bottom-0 w-3 h-3 bg-[var(--color-primary)] border-2 border-white cursor-nwse-resize z-10 before:absolute before:-inset-2.5",onMousedown:F[2]||(F[2]=dt(ae=>q(ae,"resize"),["stop"]))},null,32)],36)])):H("",!0)])),[[be,d.value]])]),_:1},8,["visible"])])}}}),P3=ue(j3,[["__scopeId","data-v-3f8d4992"]]),E3={class:"flex flex-col md:flex-row h-[75vh] md:h-[72vh] overflow-hidden bg-white/50 dark:bg-zinc-900/30 rounded-b-xl"},D3={class:"flex flex-row md:flex-col w-full md:w-40 shrink-0 border-b md:border-b-0 md:border-r border-zinc-200/60 dark:border-zinc-800/60 bg-zinc-50/50 dark:bg-zinc-950/30 overflow-x-auto md:overflow-y-auto hide-scrollbar md:pt-3"},F3=["onClick"],O3={key:0,class:"absolute bottom-0 left-1/2 -translate-x-1/2 w-6 h-[3px] rounded-t-sm md:top-1/2 md:left-0 md:-translate-y-1/2 md:translate-x-0 md:w-1 md:h-6 md:rounded-r-sm md:rounded-tl-none bg-[var(--color-primary)] shadow-[0_0_8px_var(--color-primary)] opacity-80"},N3={class:"whitespace-nowrap overflow-hidden text-ellipsis"},K3={class:"flex-1 min-w-0 h-full flex flex-col relative bg-white/40 dark:bg-zinc-900/20"},q3={class:"flex-1 overflow-y-auto custom-scrollbar p-4 pb-20 md:p-0 md:pl-8 md:pb-12 md:pr-2"},H3={key:0,class:"tab-panel-anim"},G3={key:1,class:"tab-panel-anim"},W3={key:2,class:"tab-panel-anim"},J3={key:3,class:"tab-panel-anim"},X3={key:4,class:"tab-panel-anim"},Q3={key:5,class:"tab-panel-anim"},Y3=ie({__name:"InstanceSettings",setup(s,{expose:a}){const r=h(!1),d=h(0),i=[{label:"实例设置",icon:Io},{label:"插件/模组",icon:_l},{label:"服务器属性",icon:wl},{label:"定时任务",icon:pt},{label:"备份管理",icon:kl},{label:"更多功能",icon:ns}];return a({open:()=>{r.value=!0}}),(f,n)=>{const v=g("t-dialog");return l(),G(v,{visible:r.value,"onUpdate:visible":n[0]||(n[0]=I=>r.value=I),header:"实例配置",width:"90%",top:"3vh",attach:"body",footer:!1,class:"settings-dialog"},{default:o(()=>[e("div",E3,[e("div",D3,[(l(),x(le,null,ge(i,(I,u)=>e("div",{key:u,class:ce(["relative flex flex-col md:flex-row items-center justify-center md:justify-start flex-1 md:flex-none h-auto md:h-12 px-2 py-3 md:py-0 md:px-5 cursor-pointer text-xs md:text-sm transition-all duration-200 gap-1 md:gap-2.5 group",d.value===u?"text-[var(--color-primary)] font-bold bg-white/80 dark:bg-zinc-800/50 md:bg-transparent":"text-[var(--td-text-color-secondary)] hover:bg-zinc-200/50 dark:hover:bg-zinc-800/40"]),onClick:L=>d.value=u},[d.value===u?(l(),x("div",O3)):H("",!0),(l(),G(it(I.icon),{class:ce(["text-xl md:text-lg shrink-0 transition-transform duration-300",d.value===u?"scale-110":"group-hover:scale-110"])},null,8,["class"])),e("span",N3,S(I.label),1)],10,F3)),64))]),e("div",K3,[e("div",q3,[d.value===0?(l(),x("div",H3,[t(wk)])):H("",!0),d.value===1?(l(),x("div",G3,[t(d5)])):H("",!0),d.value===2?(l(),x("div",W3,[t(w5,{"instance-id":21})])):H("",!0),d.value===3?(l(),x("div",J3,[t(J5)])):H("",!0),d.value===4?(l(),x("div",X3,[t(c3)])):H("",!0),d.value===5?(l(),x("div",Q3,[t(P3)])):H("",!0)])])])]),_:1},8,["visible"])}}}),Z3=ue(Y3,[["__scopeId","data-v-903854e9"]]),e8={class:"flex flex-col gap-3"},t8={class:"flex justify-between items-center text-xs text-[var(--td-text-color-secondary)] pb-2 border-b border-dashed border-zinc-200 dark:border-zinc-700/60"},o8={class:"flex items-center gap-1.5"},s8={class:"flex flex-col gap-4"},a8={class:"flex flex-col gap-2"},l8={class:"flex justify-between items-center"},r8={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},n8={class:"font-mono font-medium text-xs text-[var(--td-text-color-primary)]"},i8={class:"flex flex-col gap-2"},d8={class:"flex justify-between items-center"},c8={class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)]"},u8={class:"font-mono font-medium text-xs text-[var(--td-text-color-primary)] flex items-center gap-1"},m8={key:0,class:"text-[11px] text-[var(--td-text-color-secondary)]"},fo=20,p8=ie({__name:"InstanceMonitor",props:{serverId:{},maxMemory:{},isRunning:{type:Boolean}},setup(s){const a=s,r=po(),d=h(null),i=h(null);let c=null,f=null;const n=h(new Array(fo).fill(0)),v=h(new Array(fo).fill(0)),I=te(()=>a.maxMemory>0),u=(b,R,C=100)=>({grid:{top:4,right:0,bottom:4,left:0},xAxis:{type:"category",show:!1,boundaryGap:!1},yAxis:{type:"value",min:0,max:C===null?void 0:C,show:!1},series:[{type:"line",data:R,smooth:!0,showSymbol:!1,lineStyle:{width:2,color:b},areaStyle:{color:new va(0,0,0,1,[{offset:0,color:b.replace(")",", 0.2)").replace("rgb","rgba")},{offset:1,color:"transparent"}])}}]}),L=()=>{const b=getComputedStyle(document.documentElement),R=b.getPropertyValue("--td-brand-color").trim()||"#0052d9",C=b.getPropertyValue("--td-warning-color").trim()||"#e37318";if(d.value&&(c=ko(d.value),c.setOption(u(R,n.value,100))),i.value){f=ko(i.value);const M=I.value?100:null;f.setOption(u(C,v.value,M))}window.addEventListener("resize",w)},w=()=>{c?.resize(),f?.resize()},A=te(()=>{const b=r.stats.memBytes/1024/1024;return b>1024?`${(b/1024).toFixed(2)} GB`:`${b.toFixed(0)} MB`}),m=async()=>{a.isRunning&&a.serverId&&(r.setMaxMemory(a.maxMemory),await r.connect(a.serverId))},z=async()=>{await r.disconnect()};return _e(()=>a.maxMemory,b=>{if(r.setMaxMemory(b),f){const R=b>0?100:null;f.setOption({yAxis:{max:R===null?void 0:R}})}},{immediate:!0}),_e(()=>r.stats,b=>{if(!(!a.isRunning||r.currentServerId!==a.serverId)){if(n.value.push(b.cpu),n.value.length>fo&&n.value.shift(),I.value)v.value.push(b.memPercent);else{const R=b.memBytes/1024/1024;v.value.push(R)}v.value.length>fo&&v.value.shift(),c?.setOption({series:[{data:n.value}]}),f?.setOption({series:[{data:v.value}]})}},{deep:!0}),_e(()=>a.isRunning,async b=>{b?yt(()=>{w(),m()}):(n.value.fill(0),v.value.fill(0),c?.setOption({series:[{data:n.value}]}),f?.setOption({series:[{data:v.value}]}),await z())}),_e(()=>a.serverId,async(b,R)=>{b!==R&&(await z(),a.isRunning&&await m())}),ze(async()=>{await yt(),L(),a.isRunning&&await m()}),He(async()=>{window.removeEventListener("resize",w),await z(),c?.dispose(),f?.dispose()}),(b,R)=>(l(),x("div",e8,[e("div",t8,[e("span",o8,[t(_($l),{class:ce(_(r).isConnected?"text-emerald-500":"text-zinc-400 dark:text-zinc-600")},null,8,["class"]),p(" "+S(_(r).isConnected?"连接正常":"正在连接数据流..."),1)]),e("div",{class:ce(["w-1.5 h-1.5 rounded-full transition-all duration-300",_(r).isConnected&&s.isRunning?"bg-emerald-500 shadow-[0_0_6px_rgba(16,185,129,0.8)]":"bg-zinc-300 dark:bg-zinc-600"])},null,2)]),e("div",s8,[e("div",a8,[e("div",l8,[e("div",r8,[t(_(Ho),{size:"14px"}),R[0]||(R[0]=p(" CPU 使用率 ",-1))]),e("div",n8,S(_(r).stats.cpu.toFixed(1))+" % ",1)]),e("div",{ref_key:"cpuChartRef",ref:d,class:"h-[50px] w-full overflow-hidden rounded-md bg-transparent border border-[var(--td-component-border)]"},null,512)]),e("div",i8,[e("div",d8,[e("div",c8,[t(_(zl),{size:"14px"}),R[1]||(R[1]=p(" 内存使用 ",-1))]),e("div",u8,[p(S(A.value)+" ",1),I.value?(l(),x("span",m8," ("+S(_(r).stats.memPercent.toFixed(1))+"%) ",1)):H("",!0)])]),e("div",{ref_key:"memChartRef",ref:i,class:"h-[50px] w-full overflow-hidden rounded-md bg-transparent border border-[var(--td-component-border)]"},null,512)])])]))}}),v8=ue(p8,[["__scopeId","data-v-47f44cd8"]]);async function f8(s){return await Q.get({url:"/api/tools/ai/usage",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${s}`}})}async function b8(s){return await Q.get({url:"/api/tools/ai/models",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${s}`}})}async function x8(s,a,r,d,i,c){return a===""&&(a=null),r===""&&(r=null),await Q.post({url:"/api/tools/ai/analysis",baseURL:"https://user.mslmc.net",headers:{Authorization:`Bearer ${s}`},data:{mods:a,plugins:r,core:d,logs:i,model:c,usemd:!0},timeout:300*1e3})}const g8={class:"flex flex-col md:flex-row w-full h-[75vh] md:h-[70vh] rounded-xl overflow-hidden bg-[var(--td-bg-color-container)]/80 border border-[var(--td-component-border)] shadow-sm"},h8={class:"list-item-anim w-full md:w-[40%] min-w-[320px] p-5 flex flex-col gap-5 border-b md:border-b-0 md:border-r border-zinc-200/60 dark:border-zinc-700/60 overflow-y-auto custom-scrollbar",style:{"animation-delay":"0s"}},y8={class:"flex flex-col gap-2"},_8={class:"flex justify-between items-center w-full gap-2"},w8={class:"font-bold"},k8={class:"flex flex-col gap-2"},$8={class:"flex flex-col gap-2"},z8={class:"flex justify-center items-center gap-1.5"},C8={class:"flex justify-center items-center gap-1.5"},A8={class:"flex flex-col gap-2 flex-1 min-h-[150px]"},S8={class:"list-item-anim flex-1 flex flex-col bg-zinc-50/50 dark:bg-zinc-900/30 overflow-hidden",style:{"animation-delay":"0.1s"}},I8={class:"px-5 py-4 flex flex-wrap justify-between items-center gap-3 border-b border-zinc-200/60 dark:border-zinc-700/60 bg-white/50 dark:bg-zinc-800/30"},V8={class:"flex flex-wrap items-center gap-2"},U8={class:"flex-1 overflow-y-auto custom-scrollbar p-5"},M8=ie({__name:"LogAnalysis",props:{visible:{type:Boolean},serverId:{}},emits:["update:visible","submit"],setup(s,{emit:a}){const r=Ye(),d=s,i=a,c=qe({coreVersion:"",envType:"mods",modsList:"",pluginsList:"",logContent:"",result:"> ✨ 等待日志分析开始······",selectedModel:"Qwen/Qwen3-14B"}),f=h([]),n=qe({max:0,today:0,extra:0,lastTime:0}),v=h(!1),I=h(!1),u=h(!1);async function L(){const R=await f8(localStorage.getItem("msl-user-token"));if(R.code===200)n.max=R.data.max_per_day,n.extra=R.data.extra_tokens,n.lastTime=R.data.last_use_time,n.today=R.data.today_usage;else{U.error("MSL账号未登录或已失效,请重新登录!"),Ie("/frp/create");return}}async function w(){try{I.value=!0,await L();try{const C=await b8(localStorage.getItem("msl-user-token")||"");C.code===200&&(f.value=C.data,!c.selectedModel&&f.value.length>0&&(c.selectedModel=f.value[0].name))}catch(C){U.error("获取模型列表失败"+C.message)}const R=await vs(d.serverId);c.coreVersion=R.core;try{const C=await Xo(d.serverId,"mods",!1);c.modsList=(C.jarFiles||[]).join(` -`),c.envType="mods"}catch{c.modsList=""}try{const C=await Xo(d.serverId,"plugins",!1);c.pluginsList=(C.jarFiles||[]).join(` -`),c.modsList==""&&(c.envType="plugins")}catch{c.pluginsList=""}try{c.logContent=await Uo(d.serverId,"logs/latest.log")}catch{}}catch(R){U.error(R.message)}I.value=!1}_e(()=>d.visible,R=>{r.name==="InstanceConsole"&&(v.value=R,R&&w())});const A=()=>{i("update:visible",!1)};async function m(){if(c.logContent){if(!c.selectedModel){U.warning("请先选择分析模型");return}u.value=!0,c.result="> ⌛️ 分析日志中··· 请稍等";try{const R=await x8(localStorage.getItem("msl-user-token"),c.modsList,c.pluginsList,c.coreVersion,c.logContent,c.selectedModel);c.result=R.data.content}catch(R){c.result=`> ❌ 分析出现错误: ${R.message}`}u.value=!1,await L()}}const z=Xs(),b=h(z.value?"dark":"light");return _e(z,()=>{b.value=z.value?"dark":"light"}),(R,C)=>{const M=g("t-tag"),B=g("t-option"),D=g("t-select"),q=g("t-input"),P=g("t-radio-button"),j=g("t-radio-group"),K=g("t-textarea"),k=g("t-button"),V=g("t-loading"),y=g("t-dialog");return l(),G(y,{visible:v.value,"onUpdate:visible":C[6]||(C[6]=$=>v.value=$),width:"90%",top:"3vh",footer:!1,"close-on-overlay-click":!1,class:"log-analysis-dialog",onClose:A,attach:"body"},{header:o(()=>[...C[7]||(C[7]=[e("div",{class:"flex items-center gap-2 font-bold text-lg text-[var(--td-text-color-primary)]"}," AI 错误日志分析 ",-1)])]),default:o(()=>[t(V,{loading:I.value},{default:o(()=>[e("div",g8,[e("div",h8,[e("div",y8,[C[8]||(C[8]=e("div",{class:"text-[11px] font-bold text-[var(--td-text-color-secondary)] uppercase tracking-wider"},"选择分析模型",-1)),t(D,{modelValue:c.selectedModel,"onUpdate:modelValue":C[0]||(C[0]=$=>c.selectedModel=$),placeholder:"请选择 AI 模型",filterable:"",class:"!w-full"},{default:o(()=>[(l(!0),x(le,null,ge(f.value,$=>(l(),G(B,{key:$.name,value:$.name,label:$.name},{default:o(()=>[e("div",_8,[e("span",w8,S($.name),1),t(M,{size:"small",variant:"light",class:"!rounded"},{default:o(()=>[p("倍率: "+S($.rate)+"x",1)]),_:2},1024)])]),_:2},1032,["value","label"]))),128))]),_:1},8,["modelValue"])]),e("div",k8,[C[9]||(C[9]=e("div",{class:"text-[11px] font-bold text-[var(--td-text-color-secondary)] uppercase tracking-wider"},"服务端核心 / 版本",-1)),t(q,{modelValue:c.coreVersion,"onUpdate:modelValue":C[1]||(C[1]=$=>c.coreVersion=$),readonly:"",placeholder:"例如: Arclight 1.21.1"},{"prefix-icon":o(()=>[t(_(lo),{class:"text-zinc-400"})]),_:1},8,["modelValue"])]),e("div",$8,[C[12]||(C[12]=e("div",{class:"text-[11px] font-bold text-[var(--td-text-color-secondary)] uppercase tracking-wider"},"环境列表",-1)),t(j,{modelValue:c.envType,"onUpdate:modelValue":C[2]||(C[2]=$=>c.envType=$),variant:"default-filled",class:"flex w-full"},{default:o(()=>[t(P,{value:"mods",class:"flex-1 !text-center"},{default:o(()=>[e("div",z8,[t(_(lo),{size:"14px"}),C[10]||(C[10]=p(" 模组 (Mods)",-1))])]),_:1}),t(P,{value:"plugins",class:"flex-1 !text-center"},{default:o(()=>[e("div",C8,[t(_(Ko),{size:"14px"}),C[11]||(C[11]=p(" 插件 (Plugins)",-1))])]),_:1})]),_:1},8,["modelValue"]),Be(t(K,{modelValue:c.modsList,"onUpdate:modelValue":C[3]||(C[3]=$=>c.modsList=$),readonly:"",autosize:{minRows:4,maxRows:6},placeholder:"暂无模组数据...",class:"mt-1 !bg-zinc-50 dark:!bg-zinc-900/30 !text-zinc-500 font-mono text-xs"},null,8,["modelValue"]),[[Re,c.envType==="mods"]]),Be(t(K,{modelValue:c.pluginsList,"onUpdate:modelValue":C[4]||(C[4]=$=>c.pluginsList=$),readonly:"",autosize:{minRows:4,maxRows:6},placeholder:"暂无插件数据...",class:"mt-1 !bg-zinc-50 dark:!bg-zinc-900/30 !text-zinc-500 font-mono text-xs"},null,8,["modelValue"]),[[Re,c.envType==="plugins"]])]),e("div",A8,[C[13]||(C[13]=e("div",{class:"text-[11px] font-bold text-[var(--td-text-color-secondary)] uppercase tracking-wider"},"错误日志内容",-1)),t(K,{modelValue:c.logContent,"onUpdate:modelValue":C[5]||(C[5]=$=>c.logContent=$),placeholder:"没找到有效日志,您可以手动粘贴日志......",class:"flex-1 [&_textarea]:!h-full [&_textarea]:!resize-none font-mono text-xs"},null,8,["modelValue"])]),t(k,{loading:u.value,block:"",theme:"primary",size:"large",class:"!rounded-xl !h-12 !font-bold shadow-sm shrink-0 mt-2",onClick:m},{icon:o(()=>[t(_(Cl))]),default:o(()=>[C[14]||(C[14]=p(" 开始 AI 诊断 ",-1))]),_:1},8,["loading"])]),e("div",S8,[e("div",I8,[C[15]||(C[15]=e("span",{class:"text-sm font-bold text-[var(--td-text-color-primary)]"},"AI 分析报告",-1)),e("div",V8,[t(M,{theme:"default",variant:"light",class:"!rounded font-bold"},{icon:o(()=>[t(_(Al))]),default:o(()=>[p(" 今日: "+S(n.today)+" / "+S(n.max),1)]),_:1}),t(M,{theme:"primary",variant:"light",class:"!rounded font-bold"},{icon:o(()=>[t(_(Ut))]),default:o(()=>[p(" 额外: "+S(n.extra),1)]),_:1}),t(M,{theme:"warning",variant:"light",class:"!rounded font-bold"},{icon:o(()=>[t(_(pt))]),default:o(()=>[p(" 上次: "+S(_(Ma)(n.lastTime)),1)]),_:1})])]),e("div",U8,[t(_(Qs),{"editor-id":"report-preview","model-value":c.result,theme:b.value,class:"md-preview-wrapper !bg-transparent"},null,8,["model-value","theme"])])])])]),_:1},8,["loading"])]),_:1},8,["visible"])}}}),L8=ue(M8,[["__scopeId","data-v-fb7f5681"]]),B8={class:"flex flex-col h-[65vh] min-h-[500px]"},T8={class:"flex flex-col gap-4 mb-6 shrink-0"},R8={class:"flex justify-between items-center"},j8={class:"w-full overflow-x-auto hide-scrollbar pb-1"},P8={class:"flex justify-center items-center gap-1.5"},E8={class:"flex justify-center items-center gap-1.5"},D8={class:"flex justify-center items-center gap-1.5"},F8={class:"flex justify-center items-center gap-1.5"},O8={class:"flex justify-center items-center gap-1.5"},N8={class:"flex-1 overflow-y-auto custom-scrollbar pr-2 pb-2"},K8={key:0,class:"flex flex-col gap-3"},q8={class:"flex items-center gap-3"},H8=["src"],G8={class:"font-bold text-sm text-[var(--td-text-color-primary)]"},W8={class:"flex flex-wrap items-center gap-1.5"},J8={key:1,class:"py-16 flex flex-col items-center justify-center text-[var(--td-text-color-secondary)]"},X8={class:"text-sm font-medium"},Q8={key:1,class:"flex flex-col gap-3"},Y8={class:"flex items-center gap-3 min-w-0"},Z8=["src"],e4={class:"flex flex-col min-w-0"},t4={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},o4={class:"text-[11px] text-zinc-500 font-mono truncate mt-0.5"},s4={class:"flex flex-wrap items-center gap-1.5 shrink-0"},a4={key:1,class:"py-16 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},l4={key:2,class:"flex flex-col gap-3"},r4={class:"flex flex-col sm:flex-row gap-2 mb-2"},n4={class:"flex items-center gap-3"},i4=["src"],d4={class:"flex flex-col gap-1"},c4={class:"font-bold text-sm text-[var(--td-text-color-primary)]"},u4={class:"text-[10px] font-extrabold bg-blue-50 text-blue-600 ring-1 ring-inset ring-blue-500/20 dark:bg-blue-500/10 dark:text-blue-400 dark:ring-blue-500/30 px-1.5 py-0.5 rounded w-max"},m4={key:1,class:"py-12 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},p4={key:3,class:"flex flex-col gap-3"},v4={class:"mb-2"},f4={key:0,class:"flex flex-col gap-3"},b4={class:"flex flex-col sm:flex-row gap-2"},x4={class:"flex items-start sm:items-center gap-3 min-w-0"},g4=["src"],h4={class:"flex flex-col min-w-0 gap-0.5"},y4={class:"font-bold text-sm text-red-600 dark:text-red-400 truncate"},_4={class:"text-[11px] text-[var(--td-text-color-secondary)] mt-0.5 break-all line-clamp-2"},w4={key:1,class:"py-12 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},k4={key:1,class:"flex flex-col gap-3"},$4={class:"flex flex-col sm:flex-row gap-2"},z4={class:"flex flex-col min-w-0 gap-0.5"},C4={class:"font-mono font-bold text-sm text-red-600 dark:text-red-400 truncate"},A4={class:"text-[11px] text-[var(--td-text-color-secondary)] break-all line-clamp-2"},S4={key:1,class:"py-12 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},I4={key:4,class:"flex flex-col gap-3"},V4={class:"flex flex-col sm:flex-row gap-2 mb-2"},U4={class:"flex items-center gap-3 min-w-0"},M4=["src"],L4={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},B4={key:1,class:"py-12 flex items-center justify-center text-sm font-medium text-[var(--td-text-color-secondary)]"},T4=ie({__name:"PlayerManagerDialog",props:{visible:{type:Boolean},serverId:{},isRunning:{type:Boolean}},emits:["update:visible"],setup(s,{emit:a}){const r=Ye(),d=s,i=a,c=po(),f=h("online"),n=h("player"),v=h(!1),I=h("command"),u=h([]),L=h([]),w=h([]),A=h([]),m=h([]),z=h([]),b=h(""),R=h(""),C=h(""),M=h(""),B=h("");_e(()=>d.isRunning,O=>{O?I.value="command":I.value="api"},{immediate:!0}),_e([()=>d.visible,f,n],async([O])=>{r.name!=="InstanceConsole"||!O||D()});const D=async()=>{v.value=!0;try{f.value==="online"&&d.isRunning?u.value=await Ca(d.serverId):f.value==="history"?L.value=await ki(d.serverId):f.value==="whitelist"?w.value=await ui(d.serverId):f.value==="ops"?A.value=await vi(d.serverId):f.value==="banned"&&(n.value==="player"?m.value=await xi(d.serverId):z.value=await yi(d.serverId))}catch(O){U.error(`获取数据失败: ${O.message}`)}finally{v.value=!1}},q=async(O,N,Y)=>{try{I.value==="command"&&d.isRunning?(await c.sendCommand(N),U.success("已发送指令"),setTimeout(()=>D(),1e3)):(await O(),U.success(Y),D())}catch(be){U.error(`操作失败: ${be.message}`)}},P=async(O,N)=>{if(!d.isRunning)return U.warning("实例未运行");try{await c.sendCommand(O),U.success(N),setTimeout(()=>D(),1500)}catch(Y){U.error(`执行失败: ${Y.message}`)}},j=async(O=R.value)=>{if(!O)return U.warning("请输入玩家ID");await q(()=>fi(d.serverId,O),`op ${O}`,"添加管理员成功"),O===R.value&&(R.value="")},K=async O=>{await q(()=>bi(d.serverId,O),`deop ${O}`,"移除管理员成功")},k=async(O=b.value)=>{if(!O)return U.warning("请输入玩家ID");await q(()=>mi(d.serverId,O),`whitelist add ${O}`,"添加白名单成功"),O===b.value&&(b.value="")},V=async O=>{await q(()=>pi(d.serverId,O),`whitelist remove ${O}`,"移除白名单成功")},y=async(O=C.value)=>{if(!O)return U.warning("请输入玩家ID");const N=M.value?` ${M.value}`:"";await q(()=>gi(d.serverId,O,M.value),`ban ${O}${N}`,"封禁玩家成功"),O===C.value&&(C.value="",M.value="")},$=async O=>{await q(()=>hi(d.serverId,O),`pardon ${O}`,"解封玩家成功")},E=async()=>{if(!B.value)return U.warning("请输入IP地址");const O=M.value?` ${M.value}`:"";await q(()=>_i(d.serverId,B.value,M.value),`ban-ip ${B.value}${O}`,"封禁IP成功"),B.value="",M.value=""},F=async O=>{await q(()=>wi(d.serverId,O),`pardon-ip ${O}`,"解封IP成功")},J=()=>i("update:visible",!1);return(O,N)=>{const Y=g("t-radio-button"),be=g("t-radio-group"),ae=g("t-tooltip"),me=g("t-button"),fe=g("t-input"),Se=g("t-popconfirm"),Me=g("t-dialog");return l(),G(Me,{attach:"body",visible:s.visible,header:"玩家管理",width:"min(800px, 95vw)",placement:"center",footer:!1,class:"player-manager-dialog",onClose:J},{default:o(()=>[e("div",B8,[e("div",T8,[e("div",R8,[t(ae,{content:"指令模式直接与服务端交互,API模式直接修改配置文件",placement:"bottom"},{default:o(()=>[t(be,{modelValue:I.value,"onUpdate:modelValue":N[0]||(N[0]=Z=>I.value=Z),variant:"default-filled",size:"small",disabled:!s.isRunning,class:"!bg-zinc-100 dark:!bg-zinc-800 border border-[var(--td-component-border)] !rounded-lg p-0.5"},{default:o(()=>[t(Y,{value:"api"},{default:o(()=>[...N[15]||(N[15]=[p("API 模式",-1)])]),_:1}),t(Y,{value:"command"},{default:o(()=>[...N[16]||(N[16]=[p("指令优先",-1)])]),_:1})]),_:1},8,["modelValue","disabled"])]),_:1}),t(me,{variant:"text",theme:"primary",size:"small",loading:v.value,class:"!rounded-md hover:!bg-[var(--color-primary)]/10",onClick:D},{icon:o(()=>[t(_(Ee))]),default:o(()=>[N[17]||(N[17]=p(" 刷新数据 ",-1))]),_:1},8,["loading"])]),e("div",j8,[t(be,{modelValue:f.value,"onUpdate:modelValue":N[1]||(N[1]=Z=>f.value=Z),variant:"default-filled",class:"flex w-max min-w-full !bg-zinc-100 dark:!bg-zinc-800 border border-[var(--td-component-border)] !rounded-xl p-1"},{default:o(()=>[t(Y,{value:"online",class:"flex-1 !text-center"},{default:o(()=>[e("div",P8,[t(_(da),{size:"14px"}),N[18]||(N[18]=p(" 在线",-1))])]),_:1}),t(Y,{value:"history",class:"flex-1 !text-center"},{default:o(()=>[e("div",E8,[t(_(pt),{size:"14px"}),N[19]||(N[19]=p(" 历史",-1))])]),_:1}),t(Y,{value:"ops",class:"flex-1 !text-center"},{default:o(()=>[e("div",D8,[t(_(sa),{size:"14px"}),N[20]||(N[20]=p(" 管理员",-1))])]),_:1}),t(Y,{value:"banned",class:"flex-1 !text-center"},{default:o(()=>[e("div",F8,[t(_(Ao),{size:"14px"}),N[21]||(N[21]=p(" 黑名单",-1))])]),_:1}),t(Y,{value:"whitelist",class:"flex-1 !text-center"},{default:o(()=>[e("div",O8,[t(_(rs),{size:"14px"}),N[22]||(N[22]=p(" 白名单",-1))])]),_:1})]),_:1},8,["modelValue"])])]),e("div",N8,[f.value==="online"?(l(),x("div",K8,[u.value.length>0?(l(!0),x(le,{key:0},ge(u.value,Z=>(l(),x("div",{key:Z,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 hover:border-[var(--color-primary)]/30 transition-colors shadow-sm"},[e("div",q8,[e("img",{src:`https://minotar.net/helm/${Z}/32.png`,class:"w-9 h-9 rounded shadow-sm [image-rendering:pixelated]"},null,8,H8),e("span",G8,S(Z),1)]),e("div",W8,[t(me,{size:"small",variant:"outline",theme:"default",class:"!rounded-lg !border-zinc-200 dark:!border-zinc-700 !text-zinc-600 dark:!text-zinc-300 hover:!text-[var(--color-primary)] hover:!border-[var(--color-primary)]/50",onClick:se=>j(Z)},{default:o(()=>[...N[23]||(N[23]=[p("设为 OP",-1)])]),_:1},8,["onClick"]),t(me,{size:"small",variant:"text",theme:"warning",class:"!rounded-lg hover:!bg-amber-500/10",onClick:se=>K(Z)},{default:o(()=>[...N[24]||(N[24]=[p("撤销 OP",-1)])]),_:1},8,["onClick"]),t(me,{size:"small",variant:"text",theme:"success",class:"!rounded-lg hover:!bg-emerald-500/10",onClick:se=>k(Z)},{default:o(()=>[...N[25]||(N[25]=[p("加白",-1)])]),_:1},8,["onClick"]),t(me,{size:"small",variant:"text",theme:"danger",class:"!rounded-lg hover:!bg-red-500/10",onClick:se=>P(`kick ${Z} 被管理员踢出`,`已踢出 ${Z}`)},{default:o(()=>[...N[26]||(N[26]=[p("踢出",-1)])]),_:1},8,["onClick"]),t(me,{size:"small",variant:"text",theme:"danger",class:"!rounded-lg hover:!bg-red-500/10",onClick:se=>y(Z)},{default:o(()=>[...N[27]||(N[27]=[p("封禁",-1)])]),_:1},8,["onClick"])])]))),128)):(l(),x("div",J8,[t(_(Sl),{size:"40px",class:"mb-3 opacity-60"}),e("span",X8,S(s.isRunning?"当前没有玩家在线":"服务器未运行"),1)]))])):H("",!0),f.value==="history"?(l(),x("div",Q8,[L.value.length>0?(l(!0),x(le,{key:0},ge(L.value,Z=>(l(),x("div",{key:Z.uuid,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 hover:border-[var(--color-primary)]/30 transition-colors shadow-sm"},[e("div",Y8,[e("img",{src:`https://minotar.net/helm/${Z.name}/32.png`,class:"w-9 h-9 rounded shadow-sm [image-rendering:pixelated] shrink-0"},null,8,Z8),e("div",e4,[e("span",t4,S(Z.name),1),e("span",o4,"UUID: "+S(Z.uuid.split("-")[0])+"...",1)])]),e("div",s4,[t(me,{size:"small",variant:"outline",theme:"default",class:"!rounded-lg !border-zinc-200 dark:!border-zinc-700 !text-zinc-600 dark:!text-zinc-300 hover:!text-[var(--color-primary)] hover:!border-[var(--color-primary)]/50",onClick:se=>j(Z.name)},{default:o(()=>[...N[28]||(N[28]=[p("设为 OP",-1)])]),_:1},8,["onClick"]),t(me,{size:"small",variant:"text",theme:"success",class:"!rounded-lg hover:!bg-emerald-500/10",onClick:se=>k(Z.name)},{default:o(()=>[...N[29]||(N[29]=[p("加白名单",-1)])]),_:1},8,["onClick"]),t(me,{size:"small",variant:"text",theme:"danger",class:"!rounded-lg hover:!bg-red-500/10",onClick:se=>y(Z.name)},{default:o(()=>[...N[30]||(N[30]=[p("封禁",-1)])]),_:1},8,["onClick"])])]))),128)):(l(),x("div",a4,"无历史登录记录"))])):H("",!0),f.value==="ops"?(l(),x("div",l4,[e("div",r4,[t(fe,{modelValue:R.value,"onUpdate:modelValue":N[2]||(N[2]=Z=>R.value=Z),placeholder:"输入玩家游戏ID",onEnter:N[3]||(N[3]=Z=>j()),clearable:"",class:"!flex-1"},null,8,["modelValue"]),t(me,{theme:"primary",onClick:N[4]||(N[4]=Z=>j()),class:"!rounded-lg shadow-sm shrink-0"},{icon:o(()=>[t(_(ot))]),default:o(()=>[N[31]||(N[31]=p(" 添加管理员",-1))]),_:1})]),A.value.length>0?(l(!0),x(le,{key:0},ge(A.value,Z=>(l(),x("div",{key:Z.uuid,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 shadow-sm"},[e("div",n4,[e("img",{src:`https://minotar.net/helm/${Z.name}/32.png`,class:"w-9 h-9 rounded shadow-sm [image-rendering:pixelated]"},null,8,i4),e("div",d4,[e("span",c4,S(Z.name),1),e("span",u4,"LV."+S(Z.level),1)])]),t(Se,{content:"确定要撤销该管理员吗?",theme:"danger",onConfirm:se=>K(Z.name)},{default:o(()=>[t(me,{size:"small",variant:"outline",theme:"danger",class:"!rounded-lg !border-red-500/30 hover:!bg-red-500/10 self-start sm:self-auto"},{icon:o(()=>[t(_(ct))]),default:o(()=>[N[32]||(N[32]=p(" 移除",-1))]),_:1})]),_:1},8,["onConfirm"])]))),128)):(l(),x("div",m4,"暂无管理员记录"))])):H("",!0),f.value==="banned"?(l(),x("div",p4,[e("div",v4,[t(be,{modelValue:n.value,"onUpdate:modelValue":N[5]||(N[5]=Z=>n.value=Z),variant:"default-filled",size:"small",class:"!bg-zinc-100 dark:!bg-zinc-800 border border-[var(--td-component-border)] !rounded-lg p-0.5"},{default:o(()=>[t(Y,{value:"player"},{default:o(()=>[...N[33]||(N[33]=[p("玩家封禁",-1)])]),_:1}),t(Y,{value:"ip"},{default:o(()=>[...N[34]||(N[34]=[p("IP 封禁",-1)])]),_:1})]),_:1},8,["modelValue"])]),n.value==="player"?(l(),x("div",f4,[e("div",b4,[t(fe,{modelValue:C.value,"onUpdate:modelValue":N[6]||(N[6]=Z=>C.value=Z),placeholder:"输入玩家ID",clearable:"",class:"!flex-1"},null,8,["modelValue"]),t(fe,{modelValue:M.value,"onUpdate:modelValue":N[7]||(N[7]=Z=>M.value=Z),placeholder:"封禁理由(可选)",clearable:"",class:"!flex-[1.5]"},null,8,["modelValue"]),t(me,{theme:"danger",onClick:N[8]||(N[8]=Z=>y()),class:"!rounded-lg shadow-sm shrink-0"},{icon:o(()=>[t(_(ot))]),default:o(()=>[N[35]||(N[35]=p(" 封禁",-1))]),_:1})]),m.value.length>0?(l(!0),x(le,{key:0},ge(m.value,Z=>(l(),x("div",{key:Z.uuid,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-red-50/50 dark:bg-red-950/20 rounded-xl border border-red-200/60 dark:border-red-900/40 shadow-sm"},[e("div",x4,[e("img",{src:`https://minotar.net/helm/${Z.name}/32.png`,class:"w-9 h-9 rounded shadow-sm [image-rendering:pixelated] shrink-0"},null,8,g4),e("div",h4,[e("span",y4,S(Z.name),1),e("span",_4,"理由: "+S(Z.reason),1)])]),t(Se,{content:"确定要解封吗?",theme:"warning",onConfirm:se=>$(Z.name)},{default:o(()=>[t(me,{size:"small",variant:"outline",theme:"primary",class:"!rounded-lg !border-[var(--color-primary)]/30 hover:!bg-[var(--color-primary)]/10 shrink-0 self-end sm:self-auto"},{default:o(()=>[...N[36]||(N[36]=[p("解封",-1)])]),_:1})]),_:1},8,["onConfirm"])]))),128)):(l(),x("div",w4,"暂无被封禁的玩家"))])):(l(),x("div",k4,[e("div",$4,[t(fe,{modelValue:B.value,"onUpdate:modelValue":N[9]||(N[9]=Z=>B.value=Z),placeholder:"输入IP地址",clearable:"",class:"!flex-1"},null,8,["modelValue"]),t(fe,{modelValue:M.value,"onUpdate:modelValue":N[10]||(N[10]=Z=>M.value=Z),placeholder:"封禁理由(可选)",clearable:"",class:"!flex-[1.5]"},null,8,["modelValue"]),t(me,{theme:"danger",onClick:N[11]||(N[11]=Z=>E()),class:"!rounded-lg shadow-sm shrink-0"},{icon:o(()=>[t(_(ot))]),default:o(()=>[N[37]||(N[37]=p(" 封禁IP",-1))]),_:1})]),z.value.length>0?(l(!0),x(le,{key:0},ge(z.value,Z=>(l(),x("div",{key:Z.ip,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-red-50/50 dark:bg-red-950/20 rounded-xl border border-red-200/60 dark:border-red-900/40 shadow-sm"},[e("div",z4,[e("span",C4,S(Z.ip),1),e("span",A4,"理由: "+S(Z.reason),1)]),t(Se,{content:"确定要解封该IP吗?",theme:"warning",onConfirm:se=>F(Z.ip)},{default:o(()=>[t(me,{size:"small",variant:"outline",theme:"primary",class:"!rounded-lg !border-[var(--color-primary)]/30 hover:!bg-[var(--color-primary)]/10 shrink-0 self-end sm:self-auto"},{default:o(()=>[...N[38]||(N[38]=[p("解封",-1)])]),_:1})]),_:1},8,["onConfirm"])]))),128)):(l(),x("div",S4,"暂无被封禁的IP"))]))])):H("",!0),f.value==="whitelist"?(l(),x("div",I4,[e("div",V4,[t(fe,{modelValue:b.value,"onUpdate:modelValue":N[12]||(N[12]=Z=>b.value=Z),placeholder:"输入玩家ID",onEnter:N[13]||(N[13]=Z=>k()),clearable:"",class:"!flex-1"},null,8,["modelValue"]),t(me,{theme:"primary",onClick:N[14]||(N[14]=Z=>k()),class:"!rounded-lg shadow-sm shrink-0"},{icon:o(()=>[t(_(ot))]),default:o(()=>[N[39]||(N[39]=p(" 添加白名单",-1))]),_:1})]),w.value.length>0?(l(!0),x(le,{key:0},ge(w.value,Z=>(l(),x("div",{key:Z.uuid,class:"flex flex-col sm:flex-row sm:items-center justify-between gap-3 p-3.5 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 shadow-sm"},[e("div",U4,[e("img",{src:`https://minotar.net/helm/${Z.name}/32.png`,class:"w-9 h-9 rounded shadow-sm [image-rendering:pixelated] shrink-0"},null,8,M4),e("span",L4,S(Z.name),1)]),t(Se,{content:"移出白名单?",theme:"danger",onConfirm:se=>V(Z.name)},{default:o(()=>[t(me,{size:"small",variant:"outline",theme:"danger",class:"!rounded-lg !border-red-500/30 hover:!bg-red-500/10 self-start sm:self-auto"},{icon:o(()=>[t(_(ct))]),default:o(()=>[N[40]||(N[40]=p(" 移除",-1))]),_:1})]),_:1},8,["onConfirm"])]))),128)):(l(),x("div",B4,"白名单为空"))])):H("",!0)])])]),_:1},8,["visible"])}}}),R4=ue(T4,[["__scopeId","data-v-300a4e27"]]),j4={class:"design-card flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-xl border border-[var(--td-component-border)] shadow-sm p-5"},P4={class:"flex justify-between items-center mb-4 pb-4 border-b border-zinc-200/60 dark:border-zinc-700/60"},E4={class:"flex items-center gap-1.5 font-bold text-sm text-[var(--td-text-color-primary)] m-0"},D4={key:0,class:"text-xs font-medium text-[var(--td-text-color-secondary)]"},F4={class:"flex-1 min-h-[40px]"},O4={key:0,class:"flex flex-wrap gap-2"},N4={class:"flex items-center gap-1.5 px-2 py-1 bg-zinc-100 dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700 hover:border-[var(--color-primary)]/50 hover:bg-[var(--color-primary)]/5 rounded-md cursor-pointer transition-colors text-xs font-bold text-zinc-700 dark:text-zinc-300 shadow-sm"},K4=["src"],q4={key:1,class:"py-4 text-center text-xs font-medium text-[var(--td-text-color-secondary)]"},H4={key:1,class:"py-4 text-center text-xs font-medium text-[var(--td-text-color-secondary)]"},G4=ie({__name:"PlayerListCard",props:{serverId:{},status:{}},setup(s){const a=s,r=po(),d=h([]),i=h(!1);let c=null,f=null,n=null;const v=[{content:"设为管理员",value:"op"},{content:"取消管理员",value:"deop"},{content:"踢出服务器",value:"kick",theme:"warning"},{content:"封禁玩家",value:"ban",theme:"error"},{content:"加入白名单",value:"whitelist add"}],I=async()=>{if(a.status!==2){d.value=[];return}try{d.value=await Ca(a.serverId)}catch(A){console.error("拉取在线玩家失败:",A)}},u=()=>{c=r.onPlayerJoined?.(A=>{d.value.includes(A)||d.value.push(A)}),f=r.onPlayerLeft?.(A=>{d.value=d.value.filter(m=>m!==A)}),n=r.onPlayerListCleared?.(()=>{d.value=[]})},L=()=>{c?.(),f?.(),n?.()};_e(()=>a.status,A=>{A===2?I():d.value=[]}),_e(()=>a.serverId,()=>{I()}),ze(()=>{I(),u()}),He(()=>{L()});const w=async(A,m)=>{const z=A.value,R=`${z} ${m}${z==="kick"||z==="ban"?z==="kick"?" 您被控制台踢出了服务器":"您被控制台封禁了":""}`;try{switch(await r.sendCommand(R),z){case"kick":U.success(`已将 ${m} 踢出服务器`);break;case"ban":U.success(`已将 ${m} 封禁`);break;case"op":U.success(`已将 ${m} 设置为服务器管理员`);break;case"deop":U.success(`已取消 ${m} 为服务器管理员`);break;case"whitelist add":U.success(`已将 ${m} 添加到白名单`);break;default:U.success(`针对 ${m} 的指令已发送`);break}}catch(C){U.error(`执行失败: ${C.message}`)}};return(A,m)=>{const z=g("t-button"),b=g("t-dropdown");return l(),x("div",j4,[e("div",P4,[e("div",E4,[t(_(rs),{size:"16px",class:"text-[var(--td-text-color-secondary)]"}),m[2]||(m[2]=p(" 在线玩家 ",-1)),s.status===2?(l(),x("span",D4,"("+S(d.value.length)+")",1)):H("",!0)]),t(z,{size:"small",variant:"text",theme:"primary",class:"!rounded-md hover:!bg-[var(--color-primary)]/10 transition-colors",onClick:m[0]||(m[0]=R=>i.value=!0),disabled:s.status===0},{icon:o(()=>[t(_(Io))]),default:o(()=>[m[3]||(m[3]=p("管理 ",-1))]),_:1},8,["disabled"])]),e("div",F4,[s.status===2?(l(),x(le,{key:0},[d.value.length>0?(l(),x("div",O4,[(l(!0),x(le,null,ge(d.value,R=>(l(),G(b,{key:R,options:v,trigger:"click",placement:"bottom-left",onClick:C=>w(C,R)},{default:o(()=>[e("div",N4,[e("img",{src:`https://minotar.net/helm/${R}/16.png`,class:"w-3.5 h-3.5 rounded-[2px] shadow-sm [image-rendering:pixelated]"},null,8,K4),p(" "+S(R),1)])]),_:2},1032,["options","onClick"]))),128))])):(l(),x("div",q4,"当前无人在线"))],64)):(l(),x("div",H4,"服务器未运行"))]),t(R4,{visible:i.value,"onUpdate:visible":m[1]||(m[1]=R=>i.value=R),"server-id":s.serverId,"is-running":s.status===2},null,8,["visible","server-id","is-running"])])}}}),W4=ue(G4,[["__scopeId","data-v-8027f86d"]]),J4=["src","onLoad"],X4={class:"absolute bottom-4 right-4 p-4 flex flex-col font-mono text-sm bg-[var(--td-bg-color-container)]/80 backdrop-blur-md rounded-xl border border-[var(--td-component-border)] shadow-md z-20 pointer-events-none"},Q4={class:"flex justify-between items-center gap-6 mb-2"},Y4={class:"font-bold text-[var(--color-primary)]"},Z4={class:"flex justify-between items-center gap-6 mb-2"},e$={class:"font-bold text-[var(--color-primary)]"},t$={class:"flex justify-between items-center gap-6 mb-3"},o$={class:"font-bold text-[var(--color-primary)]"},s$=ie({__name:"MapRender",props:{visible:{type:Boolean},serverId:{}},emits:["update:visible"],setup(s,{emit:a}){const r=s,d=a,i=Te(),{baseUrl:c,token:f}=i,n=h(1),v=h(0),I=h(0);let u=!1,L=0,w=0;const A=h(0),m=h(0),z=h([]),b=te(()=>{const k=-v.value/n.value,V=-I.value/n.value;return{blockX:Math.round(k),blockZ:Math.round(V),regionX:Math.round(k/512),regionZ:Math.round(V/512)}}),R=(k,V)=>{v.value=-k*n.value,I.value=-V*n.value,B()},C=()=>{const k=Number(A.value)||0,V=Number(m.value)||0;R(k,V)},M=async()=>{try{const k=await $i(r.serverId);A.value=k.x,m.value=k.z,R(k.x,k.z)}catch{A.value=0,m.value=0,R(0,0)}},B=()=>{const k=b.value.regionX,V=b.value.regionZ,y=[];for(let $=-1;$<=1;$++)for(let E=-1;E<=1;E++){const F=k+$,J=V+E,O=`${F}_${J}`;if(!z.value.find(N=>N.key===O)){const N=$*$+E*E;y.push({x:F,z:J,key:O,distance:N})}}y.sort(($,E)=>$.distance-E.distance),y.forEach($=>{const F=`${c||""}/api/instance/map/${r.serverId}/${$.x}/${$.z}?x-user-token=${f}`;z.value.push({x:$.x,z:$.z,key:$.key,src:F,loaded:!1})})};_e(()=>r.visible,k=>{k?(n.value=1,z.value=[],M()):z.value=[]});const D=k=>{u=!0,L=k.clientX-v.value,w=k.clientY-I.value},q=k=>{u&&(v.value=k.clientX-L,I.value=k.clientY-w,B())},P=()=>{u=!1},j=k=>{k.preventDefault();const V=k.deltaY>0?-.1:.1,y=Math.min(Math.max(.2,n.value+V),5),$=y/n.value;v.value=v.value*$,I.value=I.value*$,n.value=y,B()},K=()=>d("update:visible",!1);return(k,V)=>{const y=g("t-input"),$=g("t-button"),E=g("t-dialog");return l(),G(E,{attach:"body",visible:s.visible,header:"世界地图查看器",width:"min(1000px, 95vw)",placement:"center",footer:!1,onClose:K},{default:o(()=>[e("div",{class:"w-full h-[70vh] min-h-[500px] relative overflow-hidden bg-zinc-50 dark:bg-zinc-950 rounded-b-xl select-none cursor-grab active:cursor-grabbing custom-grid-bg",onWheel:j,onMousedown:D,onMousemove:q,onMouseup:P,onMouseleave:P},[e("div",{class:"absolute top-1/2 left-1/2 origin-center transition-transform duration-[50ms] ease-linear",style:Oe({transform:`translate(${v.value}px, ${I.value}px) scale(${n.value})`})},[(l(!0),x(le,null,ge(z.value,F=>(l(),x("div",{key:F.key,class:"absolute w-[512px] h-[512px] -ml-[256px] -mt-[256px] flex items-center justify-center bg-zinc-100/50 dark:bg-zinc-900/50",style:Oe({left:`${F.x*512}px`,top:`${F.z*512}px`})},[e("img",{src:F.src,class:ce(["w-full h-full pointer-events-none opacity-0 transition-opacity duration-500 ease-out [image-rendering:pixelated]",{"opacity-100":F.loaded}]),onLoad:J=>F.loaded=!0,alt:"tile",draggable:"false"},null,42,J4)],4))),128))],4),V[9]||(V[9]=e("div",{class:"absolute top-1/2 left-1/2 w-3.5 h-3.5 -mt-[7px] -ml-[7px] pointer-events-none z-10 before:absolute before:left-[6px] before:top-0 before:w-[2px] before:h-[14px] before:bg-red-500/80 before:shadow-[0_0_2px_rgba(0,0,0,0.5)] after:absolute after:left-0 after:top-[6px] after:w-[14px] after:h-[2px] after:bg-red-500/80 after:shadow-[0_0_2px_rgba(0,0,0,0.5)]"},null,-1)),e("div",{class:"absolute top-4 left-4 p-3 flex items-center gap-2 bg-[var(--td-bg-color-container)]/80 backdrop-blur-md rounded-xl border border-[var(--td-component-border)] shadow-md z-20 cursor-default",onMousedown:V[2]||(V[2]=dt(()=>{},["stop"])),onWheel:V[3]||(V[3]=dt(()=>{},["stop"]))},[t(y,{modelValue:A.value,"onUpdate:modelValue":V[0]||(V[0]=F=>A.value=F),type:"number",placeholder:"X 坐标",class:"!w-[90px]",onEnter:C},null,8,["modelValue"]),t(y,{modelValue:m.value,"onUpdate:modelValue":V[1]||(V[1]=F=>m.value=F),type:"number",placeholder:"Z 坐标",class:"!w-[90px]",onEnter:C},null,8,["modelValue"]),t($,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:C},{icon:o(()=>[t(_(Il))]),default:o(()=>[V[4]||(V[4]=p(" 定位 ",-1))]),_:1}),t($,{variant:"outline",class:"!rounded-lg !bg-zinc-100 dark:!bg-zinc-800 !border-zinc-200 dark:!border-zinc-700 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 !text-zinc-600 dark:!text-zinc-300 transition-colors",onClick:M,title:"回到世界出生点"},{icon:o(()=>[t(_(ca))]),_:1})],32),e("div",X4,[e("div",Q4,[V[5]||(V[5]=e("span",{class:"text-xs text-[var(--td-text-color-secondary)]"},"方块坐标 (Block):",-1)),e("span",Y4,"X: "+S(b.value.blockX)+", Z: "+S(b.value.blockZ),1)]),e("div",Z4,[V[6]||(V[6]=e("span",{class:"text-xs text-[var(--td-text-color-secondary)]"},"区块区号 (Region):",-1)),e("span",e$,"r."+S(b.value.regionX)+"."+S(b.value.regionZ),1)]),e("div",t$,[V[7]||(V[7]=e("span",{class:"text-xs text-[var(--td-text-color-secondary)]"},"当前缩放:",-1)),e("span",o$,S(Math.round(n.value*100))+"%",1)]),V[8]||(V[8]=e("div",{class:"pt-2.5 border-t border-dashed border-zinc-200/80 dark:border-zinc-700/80 text-right text-[11px] text-[var(--td-text-color-secondary)] font-sans tracking-widest"}," 🖱️ 滚轮缩放 | 按住拖拽 ",-1))])],32)]),_:1},8,["visible"])}}}),a$=ue(s$,[["__scopeId","data-v-427a8642"]]),l$={class:"flex flex-col gap-5 h-full"},r$={class:"design-card bg-[var(--td-bg-color-container)]/80 rounded-xl border border-[var(--td-component-border)] shadow-sm p-5"},n$={class:"flex justify-between items-center mb-5"},i$={class:"relative flex h-2.5 w-2.5"},d$={class:"flex flex-col gap-2.5"},c$={key:0,class:"flex gap-2 w-full"},u$={class:"flex gap-2 w-full mt-1.5"},m$={class:"design-card flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-xl border border-[var(--td-component-border)] shadow-sm p-5"},p$={class:"flex justify-between items-center mb-4 pb-4 border-b border-zinc-200/60 dark:border-zinc-700/60"},v$={class:"flex-1 min-h-0"},f$={key:0,class:"flex flex-col gap-1.5"},b$={class:"flex justify-between items-center py-1"},x$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},g$={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate max-w-[150px]"},h$={class:"flex justify-between items-center py-1"},y$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},_$={class:"font-mono text-sm font-bold text-[var(--td-text-color-primary)]"},w$={class:"flex justify-between items-center py-1"},k$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},$$={class:"font-mono text-sm font-bold text-[var(--color-primary)]"},z$={class:"flex justify-between items-center py-1"},C$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},A$={class:"flex justify-between items-center py-1"},S$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},I$={class:"flex justify-between items-center py-1"},V$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},U$={class:"text-xs font-bold text-[var(--td-text-color-primary)]"},M$={class:"flex justify-between items-center py-1"},L$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},B$={key:1,class:"flex justify-between items-center py-1"},T$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},R$={class:"flex justify-between items-center py-1 mt-1"},j$={class:"flex items-center gap-2 text-xs text-[var(--td-text-color-secondary)]"},P$={class:"font-mono text-sm font-bold text-[var(--td-text-color-primary)]"},E$={key:1,class:"flex flex-col"},D$={key:1,class:"flex-1 flex items-center justify-center text-[var(--td-text-color-secondary)] text-sm font-medium"},F$=ie({__name:"ServerControlPanel",props:{serverId:{},status:{},loading:{type:Boolean},serverInfo:{}},emits:["start","stop","clear-log","refresh-info","backup","force-exit","restart"],setup(s,{emit:a}){const r=s,d=a,i=te(()=>{switch(r.status){case 1:return{text:"Starting",label:"启动中",theme:"primary",pulse:!0};case 2:return{text:"Running",label:"运行中",theme:"success",pulse:!0};case 3:return{text:"Stopping",label:"停止中",theme:"warning",pulse:!0};case 4:return{text:"Restarting",label:"重启中",theme:"primary",pulse:!0};default:return{text:"Stopped",label:"已停止",theme:"default",pulse:!1}}}),c=h(!1),f=h(!1),n=h(null),v=h("info"),I=()=>{n.value?.open()},u=()=>{d("refresh-info")},L=h(0);let w=null;const A=z=>{if(!z)return 0;const b=z.match(/^(?:(\d+)\.)?(\d{1,2}):(\d{2}):(\d{2})(?:\.\d+)?$/);return b?parseInt(b[1]||"0",10)*86400+parseInt(b[2])*3600+parseInt(b[3])*60+parseInt(b[4]):0},m=te(()=>{if(L.value<=0)return"00:00:00";const z=Math.floor(L.value/86400),b=new Date(L.value*1e3).toISOString().substr(11,8);return z>0?`${z}天 ${b}`:b});return _e(()=>r.serverInfo?.uptime,z=>z&&(L.value=A(z)),{immediate:!0}),_e(()=>r.status,z=>{z===2?w||(w=window.setInterval(()=>L.value++,1e3)):w&&(clearInterval(w),w=null)},{immediate:!0}),He(()=>{w&&clearInterval(w)}),(z,b)=>{const R=g("t-tag"),C=g("t-button"),M=g("t-popconfirm"),B=g("t-dropdown-item"),D=g("t-dropdown-menu"),q=g("t-dropdown"),P=g("t-radio-button"),j=g("t-radio-group");return l(),x("div",l$,[e("div",r$,[e("div",n$,[e("div",{class:ce(["flex items-center gap-2 font-bold text-sm",{"text-zinc-500":s.status===0,"text-[var(--color-primary)]":s.status===1||s.status===4,"text-[var(--color-success)]":s.status===2,"text-[var(--color-warning)]":s.status===3}])},[e("span",i$,[s.status===1||s.status===2||s.status===4?(l(),x("span",{key:0,class:ce(["animate-ping absolute inline-flex h-full w-full rounded-full opacity-75",s.status===2?"bg-[var(--color-success)]":"bg-[var(--color-primary)]"])},null,2)):H("",!0),e("span",{class:ce(["relative inline-flex rounded-full h-2.5 w-2.5",{"bg-zinc-400 dark:bg-zinc-600":s.status===0,"bg-[var(--color-primary)]":s.status===1||s.status===4,"bg-[var(--color-success)]":s.status===2,"bg-[var(--color-warning)]":s.status===3}])},null,2)]),p(" "+S(i.value.text),1)],2),t(R,{theme:i.value.theme,variant:"light",class:"!rounded !font-bold"},{default:o(()=>[p(S(i.value.label),1)]),_:1},8,["theme"])]),e("div",d$,[s.status===0?(l(),G(C,{key:0,theme:"primary",size:"large",block:"",loading:s.loading,class:"!rounded-lg !h-10 !font-bold shadow-sm",onClick:b[0]||(b[0]=K=>{z.$emit("clear-log"),z.$emit("start")})},{icon:o(()=>[t(_(_t))]),default:o(()=>[b[12]||(b[12]=p("启动实例 ",-1))]),_:1},8,["loading"])):(l(),x(le,{key:1},[s.status===2&&!s.loading?(l(),x("div",c$,[t(M,{content:"确定要停止该实例吗?",onConfirm:b[1]||(b[1]=K=>z.$emit("stop"))},{default:o(()=>[t(C,{theme:"danger",class:"flex-1 !rounded-lg !h-10 !font-bold shadow-sm"},{icon:o(()=>[t(_(uo))]),default:o(()=>[b[13]||(b[13]=p(" 停止 ",-1))]),_:1})]),_:1}),t(M,{content:"确定要重启该实例吗?",onConfirm:b[2]||(b[2]=K=>z.$emit("restart"))},{default:o(()=>[t(C,{theme:"warning",class:"!rounded-lg !h-10 !w-10 !p-0 shadow-sm shrink-0"},{icon:o(()=>[t(_(Ee))]),_:1})]),_:1})])):H("",!0),s.status===3||s.status===4||s.loading?(l(),G(M,{key:1,content:"确定要强制结束吗?可能会导致数据丢失!",onConfirm:b[3]||(b[3]=K=>z.$emit("force-exit"))},{default:o(()=>[t(C,{theme:s.loading?"primary":"danger",variant:"outline",block:"",loading:s.loading,class:ce(["!rounded-lg !h-10 !font-bold transition-all duration-300",s.loading?"!bg-[var(--color-primary)]/10 !border-[var(--color-primary)]/30":"!bg-red-500/10 !border-red-500/30 !text-red-500 hover:!bg-red-500/20"])},{icon:o(()=>[s.loading?H("",!0):(l(),G(_(Ao),{key:0}))]),default:o(()=>[p(" "+S(s.loading?"正在处理...":"强制结束"),1)]),_:1},8,["theme","loading","class"])]),_:1})):H("",!0)],64)),e("div",u$,[t(C,{variant:"outline",class:"flex-1 !rounded-lg !h-8 !bg-zinc-100 dark:!bg-zinc-800 !border-zinc-200 dark:!border-zinc-700 !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 transition-colors",onClick:b[4]||(b[4]=K=>_(Ie)(`/instance/files/${s.serverId}`))},{icon:o(()=>[t(_(Nt))]),default:o(()=>[b[14]||(b[14]=p("文件管理 ",-1))]),_:1}),t(C,{variant:"outline",class:"flex-1 !rounded-lg !h-8 !bg-zinc-100 dark:!bg-zinc-800 !border-zinc-200 dark:!border-zinc-700 !text-zinc-700 dark:!text-zinc-300 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 transition-colors",onClick:I},{icon:o(()=>[t(_(Io))]),default:o(()=>[b[15]||(b[15]=p("实例设置 ",-1))]),_:1})]),t(q,{trigger:"click","min-column-width":120,placement:"bottom"},{default:o(()=>[t(C,{block:"",class:"!rounded-lg !h-8 mt-0.5 !bg-[var(--color-primary)]/5 !border-[var(--color-primary)]/20 !text-[var(--color-primary)] hover:!bg-[var(--color-primary)]/10 transition-colors"},{icon:o(()=>[t(_(ns))]),default:o(()=>[b[16]||(b[16]=p("更多功能 ",-1))]),_:1}),t(D,null,{default:o(()=>[t(B,{onClick:b[5]||(b[5]=K=>z.$emit("clear-log"))},{"prefix-icon":o(()=>[t(_(Ee))]),default:o(()=>[b[17]||(b[17]=p("清空日志 ",-1))]),_:1}),t(B,{disabled:s.status!==2||s.loading,onClick:b[6]||(b[6]=K=>z.$emit("backup"))},{"prefix-icon":o(()=>[t(_(bt))]),default:o(()=>[b[18]||(b[18]=p("立即备份 ",-1))]),_:1},8,["disabled"]),t(B,{onClick:b[7]||(b[7]=K=>f.value=!0)},{"prefix-icon":o(()=>[t(_(Vl))]),default:o(()=>[b[19]||(b[19]=p("世界渲染图 ",-1))]),_:1}),t(B,{onClick:b[8]||(b[8]=K=>c.value=!0)},{"prefix-icon":o(()=>[t(_(Ul))]),default:o(()=>[b[20]||(b[20]=p("日志分析 ",-1))]),_:1})]),_:1})]),_:1})])]),e("div",m$,[e("div",p$,[b[23]||(b[23]=e("h3",{class:"text-sm font-bold text-[var(--td-text-color-primary)] m-0"},"实例概览",-1)),t(j,{modelValue:v.value,"onUpdate:modelValue":b[9]||(b[9]=K=>v.value=K),variant:"default-filled",size:"small"},{default:o(()=>[t(P,{value:"info"},{default:o(()=>[t(_(Ml)),b[21]||(b[21]=p(" 详情",-1))]),_:1}),t(P,{value:"monitor"},{default:o(()=>[t(_(Ll)),b[22]||(b[22]=p(" 监控",-1))]),_:1})]),_:1},8,["modelValue"])]),e("div",v$,[v.value==="info"?(l(),x("div",f$,[e("div",b$,[e("div",x$,[t(_(Bl),{size:"14px"}),b[24]||(b[24]=p(" 实例名称",-1))]),e("div",g$,S(s.serverInfo?.name),1)]),s.serverInfo?.java!=="none"?(l(),x(le,{key:0},[e("div",h$,[e("div",y$,[t(_(Ho),{size:"14px"}),b[25]||(b[25]=p(" 内存限制",-1))]),e("div",_$,S(s.serverInfo?.maxM)+" MB",1)]),e("div",w$,[e("div",k$,[t(_(Tl),{size:"14px"}),b[26]||(b[26]=p(" 运行端口",-1))]),e("div",$$,S(s.serverInfo?.mcConfig?.serverPort),1)]),e("div",z$,[e("div",C$,[t(_(Rl),{size:"14px"}),b[27]||(b[27]=p(" 游戏难度",-1))]),t(R,{theme:"primary",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[p(S(s.serverInfo?.mcConfig?.difficulty),1)]),_:1})]),e("div",A$,[e("div",S$,[t(_(jl),{size:"14px"}),b[28]||(b[28]=p(" 游戏模式",-1))]),t(R,{variant:"light",size:"small",class:"!rounded"},{default:o(()=>[p(S(s.serverInfo?.mcConfig?.gamemode),1)]),_:1})]),e("div",I$,[e("div",V$,[t(_(Nt),{size:"14px"}),b[29]||(b[29]=p(" 游戏地图",-1))]),e("div",U$,S(s.serverInfo?.mcConfig?.levelName),1)]),e("div",M$,[e("div",L$,[t(_(Pl),{size:"14px"}),b[30]||(b[30]=p(" 正版验证",-1))]),t(R,{theme:s.serverInfo?.mcConfig?.onlineMode==="true"?"success":"warning",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[p(S(s.serverInfo?.mcConfig?.onlineMode==="true"?"开启":"关闭"),1)]),_:1},8,["theme"])])],64)):(l(),x("div",B$,[e("div",T$,[t(_(Ho),{size:"14px"}),b[31]||(b[31]=p(" 模式",-1))]),t(R,{theme:"warning",variant:"light",size:"small",class:"!rounded"},{default:o(()=>[...b[32]||(b[32]=[p("自定义模式",-1)])]),_:1})])),e("div",R$,[e("div",j$,[t(_(pt),{size:"14px"}),b[33]||(b[33]=p(" 运行时长",-1))]),e("div",P$,S(s.status===2?m.value:"--:--:--"),1)])])):v.value==="monitor"?(l(),x("div",E$,[s.serverInfo&&s.status!==0?(l(),G(v8,{key:0,"server-id":s.serverId,"is-running":s.status===2,"max-memory":s.serverInfo.java==="none"?0:s.serverInfo.maxM||4096},null,8,["server-id","is-running","max-memory"])):(l(),x("div",D$," 实例未运行 "))])):H("",!0)])]),s.serverInfo?.monitorPlayers?(l(),G(W4,{key:0,"server-id":s.serverId,status:s.status,class:"design-card"},null,8,["server-id","status"])):H("",!0),t(Z3,{ref_key:"settingsRef",ref:n,"server-id":s.serverId,onSuccess:u},null,8,["server-id"]),t(L8,{visible:c.value,"onUpdate:visible":b[10]||(b[10]=K=>c.value=K),"server-id":s.serverId},null,8,["visible","server-id"]),t(a$,{visible:f.value,"onUpdate:visible":b[11]||(b[11]=K=>f.value=K),"server-id":s.serverId},null,8,["visible","server-id"])])}}}),O$=ue(F$,[["__scopeId","data-v-f8303160"]]),N$={class:"h-auto md:h-full flex flex-col md:flex-row gap-5 overflow-y-auto md:overflow-hidden pb-3 box-border relative text-[var(--td-text-color-primary)]"},K$={class:"list-item-anim flex-1 shrink-0 min-w-0 min-h-[450px] md:h-full flex flex-col relative z-10",style:{"animation-delay":"0s"}},q$={class:"list-item-anim w-full md:w-80 lg:w-[340px] shrink-0 h-auto md:h-full overflow-y-auto custom-scrollbar md:pr-1 flex flex-col hide-scrollbar-on-mobile relative z-10",style:{"animation-delay":"0.1s"}},H$={class:"leading-relaxed text-sm"},G$={class:"mb-3"},W$=ie({__name:"index",setup(s){const a=Ye(),r=At(),d=po(),i=h(parseInt(a.params.serverId)||0),c=h(0),f=h(!1),n=h(null),v=h(null);async function I(){if(i.value)try{f.value=!0;const M=await vs(i.value);await r.refreshInstanceList(),c.value=M.status,n.value=M,f.value=!1}catch(M){v.value?.writeln(`\x1B[1;31m[Error] 获取实例信息失败: ${M.message}\x1B[0m`),f.value=!1}}const u=async()=>{f.value=!0;try{v.value?.writeln("\x1B[1;32m[System] 正在发送启动指令...\x1B[0m"),await It(i.value,"start"),U.success("实例启动指令已发送"),f.value=!1}catch(M){v.value?.writeln(`\x1B[1;31m[Error] 启动失败: ${M.message}\x1B[0m`),f.value=!1,c.value=0}},L=async()=>{f.value=!0,c.value=3;try{v.value?.writeln("\x1B[1;32m[System] 正在发送停止指令...\x1B[0m"),await It(i.value,"stop"),U.warning("实例停止指令已发送"),f.value=!1,r.refreshInstanceList()}catch(M){v.value?.writeln(`\x1B[1;31m[Error] 停止失败: ${M.message}\x1B[0m`),f.value=!1}},w=async()=>{f.value=!0,c.value=3;try{v.value?.writeln("\x1B[1;32m[System] 正在发送强制退出指令...\x1B[0m"),await It(i.value,"forceExit"),U.warning("强制退出指令已发送"),f.value=!1}catch(M){v.value?.writeln(`\x1B[1;31m[Error] 强制退出失败: ${M.message}\x1B[0m`),f.value=!1}},A=async()=>{f.value=!0,c.value=4;try{v.value?.writeln("\x1B[1;32m[System] 正在发送重启指令...\x1B[0m"),await It(i.value,"restart"),U.warning("重启执行成功"),f.value=!1,c.value=2}catch(M){v.value?.writeln(`\x1B[1;31m[Error] 重启失败: ${M.message}\x1B[0m`),f.value=!1}},m=async()=>{try{v.value?.writeln("\x1B[1;32m[System] 正在发送备份任务...\x1B[0m"),await It(i.value,"backup"),U.success("备份任务启动中···"),f.value=!1}catch(M){v.value?.writeln(`\x1B[1;31m[Error] 备份任务启动失败: ${M.message}\x1B[0m`)}},z=()=>{v.value?.clear()},b=h(!1),R=async()=>{i.value&&(d.onEula(()=>{b.value=!0}),await d.connect(i.value))},C=async M=>{try{b.value=!1,await It(i.value,`agreeEula?${M}`),U.success(M?"已发送同意请求":"已发送请求")}catch(B){U.error(B.message||"发送失败")}};return _e(()=>a.params.serverId,async M=>{a.name==="InstanceConsole"&&M&&(i.value=parseInt(M),await I())}),ze(async()=>{i.value&&(await I(),await R())}),(M,B)=>{const D=g("t-link"),q=g("t-dialog");return l(),x("div",N$,[e("div",K$,[t(fw,{ref_key:"terminalRef",ref:v,"server-id":i.value,onUpdate:B[0]||(B[0]=P=>I())},null,8,["server-id"])]),e("div",q$,[t(O$,{"server-id":i.value,status:c.value,loading:f.value,"server-info":n.value,onStart:u,onStop:L,onBackup:m,onClearLog:z,onForceExit:w,onRestart:A},null,8,["server-id","status","loading","server-info"])]),t(q,{visible:b.value,"onUpdate:visible":B[1]||(B[1]=P=>b.value=P),header:"是否同意 EULA","confirm-btn":{content:"同意",theme:"primary",class:"!rounded-lg !font-bold"},"cancel-btn":{content:"不同意",theme:"default",class:"!rounded-lg !font-bold"},onConfirm:B[2]||(B[2]=P=>C(!0)),onCancel:B[3]||(B[3]=P=>C(!1))},{default:o(()=>[e("div",H$,[e("p",G$,[B[5]||(B[5]=p(" 开启 Minecraft 服务器需要您同意 ",-1)),B[6]||(B[6]=e("strong",null,"EULA",-1)),B[7]||(B[7]=p(" ! ",-1)),t(D,{theme:"primary",underline:"",href:"https://aka.ms/minecrafteula",target:"_blank",class:"font-mono"},{default:o(()=>[...B[4]||(B[4]=[p(" (https://aka.ms/minecrafteula) ",-1)])]),_:1})]),B[8]||(B[8]=e("p",{class:"mb-3"},[e("strong",{class:"text-red-500 dark:text-red-400"},"请您务必认真仔细阅读!")],-1)),B[9]||(B[9]=e("p",{class:"mb-3 text-zinc-700 dark:text-zinc-300"},[e("strong",null,"注意:"),p("不论您选择是或否,服务器都会在您操作后继续运行。")],-1)),B[10]||(B[10]=e("p",{class:"mb-3 text-amber-500 dark:text-amber-400 font-medium"},[p(" ⚠️ 如果您"),e("strong",null,"未同意 EULA"),p(",服务器可能会在运行时自动关闭! ")],-1)),B[11]||(B[11]=e("p",{class:"mt-4 pt-4 border-t border-dashed border-zinc-200 dark:border-zinc-700 text-[var(--td-text-color-secondary)] text-xs"},[p(" 💡 提示:如要在每次启动实例时忽略此提示,请在"),e("strong",null,"设置"),p("里进行配置。 ")],-1))])]),_:1},8,["visible"])])}}}),J$=ue(W$,[["__scopeId","data-v-7544ac33"]]),X$=Object.freeze(Object.defineProperty({__proto__:null,default:J$},Symbol.toStringTag,{value:"Module"})),Q$={class:"flex justify-center items-center min-h-[200px] overflow-hidden bg-[#0000000a] w-full"},Y$=["src","alt"],Z$={key:1,class:"p-10 text-[var(--td-text-color-secondary)]"},ez=ie({__name:"ImagePreview",props:{visible:{type:Boolean},fileName:{},imageBlobUrl:{}},emits:["update:visible"],setup(s,{emit:a}){const r=a,d=()=>{r("update:visible",!1)};return(i,c)=>{const f=g("t-dialog");return l(),G(f,{visible:s.visible,header:s.fileName,footer:!1,width:"auto",top:"10vh",class:"image-preview-dialog",onClose:d},{default:o(()=>[e("div",Q$,[s.imageBlobUrl?(l(),x("img",{key:0,src:s.imageBlobUrl,alt:s.fileName,class:"block max-w-full max-h-[70vh] object-contain"},null,8,Y$)):(l(),x("div",Z$,"加载中..."))])]),_:1},8,["visible","header"])}}}),tz=ue(ez,[["__scopeId","data-v-640ae127"]]),oz={key:0,class:"flex flex-col gap-4 py-2"},sz={class:"bg-zinc-50 dark:bg-zinc-800/40 p-3 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 text-[13px] text-[var(--td-text-color-secondary)] shadow-inner flex items-center"},az={class:"font-bold font-mono text-[var(--color-primary)] mx-1.5 text-sm"},lz={class:"flex justify-end gap-3 mt-2"},rz={key:1,class:"flex flex-col items-center gap-4 py-4 w-full"},nz={class:"flex justify-center items-center h-10"},iz={class:"text-sm font-medium text-[var(--td-text-color-primary)] text-center px-4 w-full truncate"},dz={class:"w-full"},cz=ie({__name:"FileCompressor",props:{visible:{type:Boolean},instanceId:{},currentPath:{},files:{}},emits:["update:visible","success"],setup(s,{emit:a}){const r=s,d=a,i=h(""),c=h("idle"),f=h(0),n=h("");let v=null;_e(()=>r.visible,A=>{A?(c.value="idle",f.value=0,n.value="",r.files.length>0&&(i.value=`${r.files[0]}_packed.zip`)):I()});const I=()=>{v&&(clearInterval(v),v=null)},u=async()=>{if(!i.value.trim()){U.warning("请输入压缩包名称");return}let A=i.value;A.endsWith(".zip")||(A+=".zip"),c.value="processing",f.value=0,n.value="正在提交任务...";try{const z=(await Pn(r.instanceId,r.files,A,r.currentPath)).taskId;if(z)L(z);else throw new Error("未获取到任务ID")}catch(m){c.value="error",n.value=m.message||"提交失败"}},L=A=>{v=window.setInterval(async()=>{try{const m=await En(A);f.value=m.progress,n.value=m.message,m.status==="success"?(I(),c.value="success",f.value=100,setTimeout(()=>{d("success"),d("update:visible",!1)},1e3)):m.status==="error"&&(I(),c.value="error")}catch(m){console.error(m)}},1e3)},w=()=>{c.value==="processing"&&U.warning("后台任务仍在进行中,关闭窗口不会取消任务"),I(),d("update:visible",!1)};return He(()=>I()),(A,m)=>{const z=g("t-input"),b=g("t-button"),R=g("t-loading"),C=g("t-progress"),M=g("t-dialog");return l(),G(M,{visible:s.visible,header:c.value==="idle"?"创建压缩包":"正在压缩",footer:!1,"close-on-overlay-click":!1,width:"480px",onClose:w},{default:o(()=>[c.value==="idle"?(l(),x("div",oz,[e("div",sz,[m[1]||(m[1]=p(" 即将压缩 ",-1)),e("span",az,S(s.files.length),1),m[2]||(m[2]=p(" 个文件/文件夹 ",-1))]),t(z,{modelValue:i.value,"onUpdate:modelValue":m[0]||(m[0]=B=>i.value=B),placeholder:"请输入文件名",suffix:".zip",autofocus:"",class:"!rounded-lg shadow-sm",onEnter:u},null,8,["modelValue"]),e("div",lz,[t(b,{variant:"outline",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:w},{default:o(()=>[...m[3]||(m[3]=[p("取消",-1)])]),_:1}),t(b,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:u},{default:o(()=>[...m[4]||(m[4]=[p("开始压缩",-1)])]),_:1})])])):(l(),x("div",rz,[e("div",nz,[c.value==="processing"?(l(),G(R,{key:0,size:"medium"})):c.value==="success"?(l(),G(_(Kt),{key:1,class:"text-emerald-500 text-[40px]"})):c.value==="error"?(l(),G(_(So),{key:2,class:"text-red-500 text-[40px]"})):H("",!0)]),e("div",iz,S(n.value),1),e("div",dz,[t(C,{theme:"plump",percentage:f.value,status:c.value==="error"?"error":c.value==="success"?"success":"active"},null,8,["percentage","status"])])]))]),_:1},8,["visible","header"])}}}),uz=ue(cz,[["__scopeId","data-v-9b86ccbe"]]),mz={class:"flex flex-col gap-5 py-2"},pz={class:"bg-zinc-50 dark:bg-zinc-800/40 p-3 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 flex items-start text-[13px] shadow-inner"},vz={class:"font-medium font-mono text-[var(--td-text-color-primary)] break-all leading-relaxed"},fz={key:0,class:"flex flex-col gap-2"},bz={key:1,class:"flex justify-between items-center py-1"},xz={key:2,class:"py-2"},gz={class:"flex justify-between items-center mb-2 text-[13px] text-[var(--color-primary)] font-medium"},hz={class:"truncate pr-4"},yz={class:"font-mono font-bold shrink-0"},_z={key:3,class:"flex justify-end gap-3 mt-2"},wz=ie({__name:"FileDecompress",props:{visible:{type:Boolean},instanceId:{},currentPath:{},fileName:{}},emits:["update:visible","success"],setup(s,{emit:a}){const r=s,d=a,i=te({get:()=>r.visible,set:C=>d("update:visible",C)}),c=h("auto"),f=h(!0),n=h(!1),v=h(0),I=h(""),u=h("");let L=null;const w=[{label:"自动检测 (推荐)",value:"auto"},{label:"UTF-8 (Linux/Mac通用)",value:"utf-8"},{label:"GBK (Windows传统)",value:"gbk"}],A=()=>{c.value="auto",f.value=!0,n.value=!1,v.value=0,I.value="",u.value="",L&&(clearInterval(L),L=null)};_e(()=>r.visible,C=>{C&&A()});const m=()=>{L&&(clearInterval(L),L=null)},z=async()=>{if(!n.value)try{n.value=!0,I.value="正在提交任务...";const C=await ga(r.instanceId,r.fileName,r.currentPath,c.value,f.value);if(C&&C.taskId)u.value=C.taskId,L=window.setInterval(b,1e3);else throw new Error("未能获取任务ID")}catch(C){U.error(C.message||"提交失败"),n.value=!1}},b=async()=>{if(u.value)try{const C=await ha(u.value);v.value=C.progress||0,I.value=C.message,C.status==="success"?(m(),U.success("解压成功"),v.value=100,setTimeout(()=>{i.value=!1,d("success")},800)):C.status==="error"&&(m(),n.value=!1,U.error(C.message||"解压出错"))}catch(C){console.error("轮询失败",C)}},R=()=>{n.value&&v.value<100&&U.warning("解压正在后台进行中"),m(),i.value=!1};return(C,M)=>{const B=g("t-select"),D=g("t-switch"),q=g("t-progress"),P=g("t-button"),j=g("t-dialog");return l(),G(j,{visible:i.value,"onUpdate:visible":M[2]||(M[2]=K=>i.value=K),header:"解压文件",footer:!1,"close-on-overlay-click":!n.value,"on-close":R,width:"480px"},{default:o(()=>[e("div",mz,[e("div",pz,[M[3]||(M[3]=e("span",{class:"text-[var(--td-text-color-secondary)] min-w-[70px] shrink-0 pt-0.5"},"目标文件:",-1)),e("span",vz,S(s.fileName),1)]),n.value?H("",!0):(l(),x("div",fz,[M[4]||(M[4]=e("span",{class:"text-sm font-medium text-[var(--td-text-color-primary)]"},"文件名编码",-1)),t(B,{modelValue:c.value,"onUpdate:modelValue":M[0]||(M[0]=K=>c.value=K),options:w,class:"!rounded-lg shadow-sm"},null,8,["modelValue"])])),n.value?H("",!0):(l(),x("div",bz,[M[5]||(M[5]=e("div",{class:"flex flex-col gap-1 pr-4"},[e("span",{class:"text-sm font-medium text-[var(--td-text-color-primary)]"},"创建同名文件夹"),e("span",{class:"text-xs text-[var(--td-text-color-secondary)]"},"推荐开启,防止文件散乱在当前目录")],-1)),t(D,{modelValue:f.value,"onUpdate:modelValue":M[1]||(M[1]=K=>f.value=K),size:"large",class:"shrink-0"},null,8,["modelValue"])])),n.value?(l(),x("div",xz,[e("div",gz,[e("span",hz,S(I.value),1),e("span",yz,S(v.value)+"%",1)]),t(q,{theme:"line",percentage:v.value,label:!1,status:v.value===100?"success":"active"},null,8,["percentage","status"])])):H("",!0),n.value?H("",!0):(l(),x("div",_z,[t(P,{variant:"outline",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:R},{default:o(()=>[...M[6]||(M[6]=[p("取消",-1)])]),_:1}),t(P,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:z},{default:o(()=>[...M[7]||(M[7]=[p("开始解压",-1)])]),_:1})]))])]),_:1},8,["visible","close-on-overlay-click"])}}}),kz=ue(wz,[["__scopeId","data-v-742dd344"]]),$z={class:"py-1 md:py-2"},zz={class:"mt-5 p-4 bg-zinc-50 dark:bg-zinc-800/40 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 shadow-inner"},Cz={class:"flex gap-2 flex-wrap mb-2.5"},Az={class:"min-h-[16px] flex items-center"},Sz={key:0,class:"text-xs text-[var(--td-text-color-secondary)]"},Iz={key:1,class:"text-xs text-[var(--td-text-color-secondary)]"},Vz={key:2,class:"text-xs text-amber-600 dark:text-amber-500 font-medium"},Uz={key:3,class:"text-xs text-[var(--td-text-color-secondary)] italic opacity-60"},Mz=ie({__name:"FilePermission",props:{visible:{type:Boolean},instanceId:{},currentPath:{},targets:{}},emits:["update:visible","success"],setup(s,{emit:a}){const r=s,d=a,i=h({mode:"755"}),c=h(!1),f=[{label:"755 (推荐: 所有者读写执/他人读执)",value:"755"},{label:"777 (全开: 所有权限)",value:"777"},{label:"644 (普通文件: 读写/读)",value:"644"}],n=te(()=>r.targets.length===1?`修改权限 - ${r.targets[0].name}`:`批量修改权限 (${r.targets.length} 项)`);_e(()=>r.visible,L=>{L&&r.targets.length>0&&(r.targets.length===1&&r.targets[0].mode&&r.targets[0].mode!=="Unknown"?i.value.mode=r.targets[0].mode:i.value.mode="755")});const v=()=>{d("update:visible",!1),c.value=!1},I=async()=>{if(!i.value.mode||!/^[0-7]{3}$/.test(i.value.mode)){U.warning("请输入正确的3位八进制权限码 (如 755)");return}c.value=!0;let L=0,w=0;try{for(const A of r.targets)try{await ya(u,A.fullPath,i.value.mode),L++}catch(m){w++,console.error(m)}w===0?U.success("权限修改成功"):U.warning(`完成: 成功 ${L} 个, 失败 ${w} 个`),d("success"),v()}catch(A){U.error(A.message||"请求失败")}finally{c.value=!1}},u=r.instanceId;return(L,w)=>{const A=g("t-input"),m=g("t-form-item"),z=g("t-tag"),b=g("t-dialog");return l(),G(b,{visible:s.visible,header:n.value,"confirm-btn":{content:"保存修改",loading:c.value},"on-close":v,"on-confirm":I,width:"480px"},{default:o(()=>[e("div",$z,[t(m,{label:"权限代码","required-mark":""},{default:o(()=>[t(A,{modelValue:i.value.mode,"onUpdate:modelValue":w[0]||(w[0]=R=>i.value.mode=R),placeholder:"例如: 755",tips:"请输入3位八进制数字 (Linux Chmod)",class:"[&_.t-input__inner]:!font-mono [&_.t-input__inner]:!text-[15px]"},null,8,["modelValue"])]),_:1}),e("div",zz,[w[1]||(w[1]=e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mb-3 font-medium"},"快捷设置:",-1)),e("div",Cz,[(l(),x(le,null,ge(f,R=>t(z,{key:R.value,variant:"light-outline",theme:"primary",class:"cursor-pointer !font-mono !rounded-md hover:!bg-[var(--color-primary)] hover:!text-white transition-colors",onClick:C=>i.value.mode=R.value},{default:o(()=>[p(S(R.value),1)]),_:2},1032,["onClick"])),64))]),e("div",Az,[i.value.mode==="755"?(l(),x("div",Sz," 适合可执行程序、脚本或文件夹 ")):i.value.mode==="644"?(l(),x("div",Iz," 适合普通配置文件、日志等 ")):i.value.mode==="777"?(l(),x("div",Vz," ⚠️ 允许任何人读写执行 (极其不安全) ")):(l(),x("div",Uz," 自定义权限 "))])])])]),_:1},8,["visible","header","confirm-btn"])}}}),Lz=ue(Mz,[["__scopeId","data-v-491e6c39"]]),Bz={key:0,class:"flex flex-col gap-4 py-2"},Tz={class:"bg-zinc-50 dark:bg-zinc-800/40 p-3 rounded-xl border border-zinc-200/60 dark:border-zinc-700/60 text-[13px] text-[var(--td-text-color-secondary)] shadow-inner"},Rz={class:"font-bold font-mono text-[var(--color-primary)]"},jz={class:"flex justify-end gap-3 mt-2"},Pz={key:1,class:"flex flex-col items-center gap-4 py-4 w-full"},Ez={class:"flex justify-center items-center h-10"},Dz={class:"text-sm font-medium text-[var(--td-text-color-primary)] text-center px-4 w-full truncate"},Fz={class:"w-full"},Oz=ie({__name:"FileOfflineDownloader",props:{visible:{type:Boolean},instanceId:{},currentPath:{}},emits:["update:visible","success"],setup(s,{emit:a}){const r=s,d=a,i=h(""),c=h(""),f=h("idle"),n=h(0),v=h("");let I=null;_e(()=>r.visible,m=>{m?(f.value="idle",n.value=0,v.value="",i.value="",c.value=""):u()}),_e(i,m=>{if(m&&!c.value.trim())try{const R=new URL(m).pathname.split("/").filter(Boolean).pop();R&&(c.value=decodeURIComponent(R))}catch{const b=m.split("?")[0].split("/").filter(Boolean).pop();b&&m.includes("/")&&(c.value=decodeURIComponent(b))}});const u=()=>{I&&(clearInterval(I),I=null)},L=async()=>{if(!i.value.trim()){U.warning("请输入下载链接");return}f.value="processing",n.value=0,v.value="正在提交离线下载任务...";try{const m=await _a(r.instanceId,r.currentPath,i.value.trim(),c.value.trim()),z=m.taskId||m.data&&m.data.taskId;if(z)w(z);else throw new Error("未获取到任务ID")}catch(m){f.value="error",v.value=m.message||"提交失败"}},w=m=>{I=window.setInterval(async()=>{try{const z=await wa(m);n.value=z.progress,v.value=z.message,z.status==="success"?(u(),f.value="success",n.value=100,setTimeout(()=>{d("success"),d("update:visible",!1)},1e3)):z.status==="error"&&(u(),f.value="error")}catch(z){console.error(z)}},1e3)},A=()=>{f.value==="processing"&&U.warning("后台任务仍在进行中,关闭窗口不会取消任务"),u(),d("update:visible",!1)};return He(()=>u()),(m,z)=>{const b=g("t-input"),R=g("t-button"),C=g("t-loading"),M=g("t-progress"),B=g("t-dialog");return l(),G(B,{visible:s.visible,header:f.value==="idle"?"创建离线下载任务":"正在下载",footer:!1,"close-on-overlay-click":!1,width:"480px",onClose:A},{default:o(()=>[f.value==="idle"?(l(),x("div",Bz,[e("div",Tz,[z[2]||(z[2]=p(" 文件将下载至当前目录: ",-1)),e("span",Rz,S(s.currentPath||"根目录"),1)]),t(b,{modelValue:i.value,"onUpdate:modelValue":z[0]||(z[0]=D=>i.value=D),placeholder:"请输入直链 URL (必填)",autofocus:"",class:"!rounded-lg shadow-sm",clearable:""},null,8,["modelValue"]),t(b,{modelValue:c.value,"onUpdate:modelValue":z[1]||(z[1]=D=>c.value=D),placeholder:"保存的文件名 (选填,默认从链接推断)",class:"!rounded-lg shadow-sm",onEnter:L},null,8,["modelValue"]),e("div",jz,[t(R,{variant:"outline",class:"!rounded-lg hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:A},{default:o(()=>[...z[3]||(z[3]=[p("取消",-1)])]),_:1}),t(R,{theme:"primary",class:"!rounded-lg shadow-sm",onClick:L},{default:o(()=>[...z[4]||(z[4]=[p("开始下载",-1)])]),_:1})])])):(l(),x("div",Pz,[e("div",Ez,[f.value==="processing"?(l(),G(C,{key:0,size:"medium"})):f.value==="success"?(l(),G(_(Kt),{key:1,class:"text-emerald-500 text-[40px]"})):f.value==="error"?(l(),G(_(So),{key:2,class:"text-red-500 text-[40px]"})):H("",!0)]),e("div",Dz,S(v.value),1),e("div",Fz,[t(M,{theme:"plump",percentage:n.value,status:f.value==="error"?"error":f.value==="success"?"success":"active"},null,8,["percentage","status"])])]))]),_:1},8,["visible","header"])}}}),Nz=ue(Oz,[["__scopeId","data-v-b461cb3d"]]),Kz={class:"flex flex-col mx-auto w-full pb-8"},qz={class:"card-enter-anim design-card bg-[var(--td-bg-color-container)] border-y md:border border-zinc-200/60 dark:border-zinc-700/60 md:rounded-xl shadow-sm flex flex-col min-h-[calc(100vh-100px)] md:min-h-[600px] -mx-4 md:mx-0 overflow-hidden"},Hz={class:"sticky top-0 z-10 p-3 md:px-5 md:py-4 !bg-inherit border-b border-zinc-200/60 dark:border-zinc-800 flex items-center justify-between gap-4 overflow-x-auto hide-scrollbar"},Gz={class:"flex-1 flex items-center min-w-max"},Wz={class:"flex items-center gap-2 shrink-0 min-w-max"},Jz={key:0},Xz={key:0},Qz={key:0},Yz={class:"flex-1 w-full bg-transparent overflow-hidden [&_.t-table]:!border-t-0 [&_.t-table\\_\\_header]:!border-t-0 [&_.t-table\\_\\_header>tr>th]:!border-t-0"},Zz=["onClick"],e6={class:"font-medium text-[var(--td-text-color-primary)] group-hover:text-[var(--color-primary)] transition-colors truncate max-w-[calc(100vw-140px)] md:max-w-full"},t6={class:"text-[13px] font-mono text-[var(--td-text-color-secondary)]"},o6={class:"text-[13px] text-[var(--td-text-color-secondary)]"},s6={class:"py-16 flex flex-col items-center justify-center text-[var(--td-text-color-secondary)]"},a6={key:0,class:"design-card fixed bottom-6 md:bottom-10 left-1/2 -translate-x-1/2 w-11/12 md:w-max min-w-[280px] bg-[var(--td-bg-color-container)] border border-zinc-200/60 dark:border-zinc-700/60 shadow-[0_8px_30px_rgba(0,0,0,0.12)] rounded-full px-4 py-2.5 flex justify-between items-center z-[500] gap-4"},l6={class:"text-sm font-medium text-zinc-700 dark:text-zinc-300 shrink-0"},r6={class:"text-[var(--color-primary)] font-bold text-base mx-1"},n6={class:"flex items-center gap-1 md:gap-1.5 overflow-x-auto hide-scrollbar"},i6={key:0},d6={key:0},c6={key:0},u6={key:0},m6={key:0},p6={key:0},v6={key:1,class:"design-card fixed bottom-6 md:bottom-10 left-1/2 -translate-x-1/2 w-11/12 md:w-max min-w-[280px] bg-[var(--td-bg-color-container)] border-2 border-[var(--color-primary)] shadow-[0_8px_30px_rgba(0,0,0,0.12)] shadow-[var(--color-primary)]/20 rounded-full px-5 py-3 flex justify-between items-center z-[501] gap-4"},f6={class:"text-sm font-medium text-zinc-700 dark:text-zinc-300 shrink-0"},b6={key:0},x6={key:1},g6={class:"text-[var(--color-primary)] font-bold text-base mx-1"},h6={class:"flex items-center gap-2"},y6=ie({__name:"index",setup(s){const a=Ye(),r=co(),d=te(()=>Number(a.params.serverFilesId)),i=Te(),c=h(!1),f=h([]),n=h(""),v=h([]),I=h(window.innerWidth),u=te(()=>I.value<768),L=h(!1),w=h(!1),A=h(!1),m=h(!1),z=h(!1),b=h(!1),R=h(!1),C=h(!1),M=h(!1),B=h(!1),D=h(""),q=h(""),P=h(""),j=h(!1),K=h(""),k=h(""),V=h(""),y=h(""),$=h(null),E=h([]),F=h(""),J=h([]),O=()=>{I.value=window.innerWidth},N=oe=>{const X=oe.split(".").pop()?.toLowerCase();return["png","jpg","jpeg","gif","ico","webp","bmp","svg"].includes(X||"")},Y=oe=>{const X=oe.split(".").pop()?.toLowerCase();return["zip","jar"].includes(X||"")},be=oe=>{if(oe.type==="folder"){const $e=oe.name.toLowerCase();return $e==="config"||$e==="settings"?{icon:Io,color:"var(--td-warning-color)"}:$e.startsWith("world")||$e==="level"?{icon:Nl,color:"var(--td-success-color)"}:["plugins","mods","libraries"].includes($e)?{icon:lo,color:"var(--td-brand-color)"}:["logs","crash-reports","cache","temp"].includes($e)?{icon:Nt,color:"var(--td-gray-color-6)"}:{icon:Nt,color:"var(--td-brand-color)"}}const X=oe.name.split(".").pop()?.toLowerCase();return["png","jpg","jpeg","gif","ico","webp"].includes(X||"")?{icon:na,color:"var(--td-success-color)"}:["jar","zip","rar","7z","tar","gz"].includes(X||"")?{icon:xo,color:"#722ed1"}:["yml","yaml","json","properties","toml","xml","conf","sh","bat","cmd"].includes(X||"")?{icon:Tt,color:"var(--td-warning-color)"}:["log","txt","md","lock"].includes(X||"")?{icon:No,color:"var(--td-gray-color-6)"}:{icon:Ut,color:"var(--td-text-color-secondary)"}},ae=te(()=>f.value.some(oe=>oe.permission&&oe.permission!=="")),me=te(()=>{const oe={colKey:"row-select",type:"multiple",width:u.value?34:40},X={colKey:"name",title:"文件名",ellipsis:!0,width:"auto"},$e={colKey:"operation",title:"操作",width:u.value?50:80,align:"center",fixed:u.value?"right":void 0};return u.value?[oe,X,$e]:[oe,X,{colKey:"size",title:"大小",width:100,align:"right"},...ae.value?[{colKey:"permission",title:"权限",width:80,align:"center"}]:[],{colKey:"lastModified",title:"修改时间",width:180,align:"center"},$e]}),fe=te(()=>{const oe=n.value.split("/").filter(Ne=>Ne),X=[{name:"根目录",path:""}];let $e="";return oe.forEach(Ne=>{$e=$e?`${$e}/${Ne}`:Ne,X.push({name:Ne,path:$e})}),X}),Se=te(()=>v.value.length>0),Me=oe=>{if(oe===0)return"-";const X=["B","KB","MB","GB","TB"];let $e=0;for(;oe>=1024&&$eoe?new Date(oe).toLocaleString():"-",se=async()=>{c.value=!0,v.value=[];try{const oe=await Bn(d.value,n.value);f.value=oe||[]}catch(oe){console.error(oe)}finally{c.value=!1}},De=async oe=>{k.value&&(window.URL.revokeObjectURL(k.value),k.value="");const X=n.value?`${n.value}/${oe}`:oe,$e=U.loading("正在加载图片...");try{const Ne=await xa(d.value,X);if(!(Ne instanceof Blob))throw new Error("无效数据");k.value=window.URL.createObjectURL(Ne),K.value=oe,w.value=!0,U.close($e)}catch{U.close($e),U.error("加载失败")}},Le=async(oe,X=!1)=>{if(X){q.value=oe,P.value="",L.value=!0;return}if(N(oe)){De(oe);return}const $e=n.value?`${n.value}/${oe}`:oe,Ne=U.loading("正在读取文件...");try{const nt=await Uo(d.value,$e);q.value=oe,P.value=nt,L.value=!0,U.close(Ne)}catch(nt){U.close(Ne),U.error("读取失败: "+nt.message)}},ee=()=>{V.value="",A.value=!0},T=()=>{if(!V.value.trim()){U.warning("请输入文件名");return}A.value=!1,Le(V.value,!0)},de=async oe=>{j.value=!0;try{const X=n.value?`${n.value}/${q.value}`:q.value;await ms(d.value,X,oe),U.success("保存成功"),L.value=!1,we()}catch{U.error("保存失败")}finally{j.value=!1}},he=()=>{D.value="",M.value=!0},ne=async()=>{if(!D.value.trim()){U.warning("请输入文件夹名称");return}try{await Tn(d.value,n.value,D.value),U.success("文件夹创建成功"),M.value=!1,we()}catch(oe){U.error(`创建失败: ${oe.message||"未知错误"}`)}},W=oe=>{$.value={name:oe.name,fullPath:n.value?`${n.value}/${oe.name}`:oe.name},y.value=oe.name,m.value=!0},pe=async()=>{if(!y.value||!$.value)return;const oe=n.value?`${n.value}/${y.value}`:y.value;try{await Rn(d.value,$.value.fullPath,oe),U.success("重命名成功"),m.value=!1,we()}catch{U.error("重命名失败")}},Ve=oe=>{let X=[];if(oe?X=[oe.name]:X=[...v.value],X.length===0)return;const $e=Ke.confirm({header:"确认删除",body:`确定要永久删除这 ${X.length} 项吗?`,theme:"danger",onConfirm:async()=>{$e.hide();const Ne=U.loading("正在删除中...");try{const nt=X.map(mt=>n.value?`${n.value}/${mt}`:mt);await jn(d.value,nt),U.success("删除成功"),v.value=[],we()}catch{U.error("删除失败")}finally{U.close(Ne)}}})},Ce=oe=>{if(oe.type==="folder"){const X=n.value===""?"":"/";n.value=`${n.value}${X}${oe.name}`}else N(oe.name)?De(oe.name):Le(oe.name)},Ue=oe=>{n.value=oe},we=()=>se(),Ae=async oe=>{let X=[];if(oe?X=[oe.name]:X=[...v.value],X.length===0)return;const{baseUrl:$e,token:Ne}=i,nt=$e.endsWith("/")?$e.slice(0,-1):$e;for(const mt of X){if(f.value.find(Ge=>Ge.name===mt)?.type==="folder"){U.warning(`暂不支持下载文件夹: ${mt} 请压缩后再下载!`);continue}const Qe=n.value?`${n.value}/${mt}`:mt;try{const Ge=new URL(`${nt||window.location.origin}/api/files/instance/${d.value}/download`);Ge.searchParams.append("path",Qe),Ge.searchParams.append("x-user-token",Ne);const xt=document.createElement("a");xt.href=Ge.toString(),xt.style.display="none",xt.download=mt,document.body.appendChild(xt),xt.click(),document.body.removeChild(xt)}catch(Ge){console.error(Ge),U.error(`创建下载链接失败: ${mt}`)}}oe||(v.value=[])},je=()=>{v.value.length!==0&&(E.value=[...v.value],b.value=!0)},Fe=()=>{v.value=[],we()},Ze=oe=>{F.value=oe.name,R.value=!0},re=()=>{we()},Xe=oe=>{if(J.value=[],oe)J.value.push({name:oe.name,fullPath:n.value?`${n.value}/${oe.name}`:oe.name,mode:oe.permission||"755"});else{if(v.value.length===0)return;v.value.forEach(X=>{const $e=f.value.find(Ne=>Ne.name===X);$e&&J.value.push({name:$e.name,fullPath:n.value?`${n.value}/${$e.name}`:$e.name,mode:$e.permission||"755"})})}C.value=!0},xe=()=>{v.value=[],we()},et=()=>we(),tt=h([]),rt=h("copy"),Pe=h(""),lt=te(()=>tt.value.length>0),ke=te(()=>n.value===Pe.value),wt=()=>{if(v.value.length===0)return;const oe=v.value.map(X=>n.value?`${n.value}/${X}`:X);tt.value=oe,rt.value="copy",Pe.value=n.value,v.value=[],U.info(`已复制 ${oe.length} 项,请前往目标目录粘贴`)},vo=()=>{if(v.value.length===0)return;const oe=v.value.map(X=>n.value?`${n.value}/${X}`:X);tt.value=oe,rt.value="move",Pe.value=n.value,v.value=[],U.info(`已剪切 ${oe.length} 项,请前往目标目录粘贴`)},Pt=()=>{tt.value=[],Pe.value="",U.info("已取消操作")},St=async()=>{if(tt.value.length===0)return;const oe=U.loading("正在粘贴中...");try{rt.value==="copy"?await Fn(d.value,tt.value,n.value):await On(d.value,tt.value,n.value),U.success("粘贴成功"),tt.value=[],we()}catch(X){U.error(`粘贴失败: ${X.message||"未知错误"}`)}finally{U.close(oe)}},Et=h(""),jo=h("name"),Fa=[{label:"名称 (A-Z)",value:"name"},{label:"时间 (最新)",value:"time"},{label:"大小 (从大到小)",value:"size"}],Oa=te(()=>{let oe=[...f.value];if(Et.value){const X=Et.value.toLowerCase();oe=oe.filter($e=>$e.name.toLowerCase().includes(X))}return oe.sort((X,$e)=>{if(X.type==="folder"&&$e.type!=="folder")return-1;if(X.type!=="folder"&&$e.type==="folder")return 1;switch(jo.value){case"name":return X.name.localeCompare($e.name,"zh-CN",{numeric:!0});case"time":return new Date($e.lastModified).getTime()-new Date(X.lastModified).getTime();case"size":return $e.size-X.size;default:return 0}}),oe});return _e(n,oe=>{r.replace({query:{...a.query,path:oe||void 0}}),se()}),_e(d,()=>{a.name==="InstanceFiles"&&(n.value="",v.value=[],se())}),ze(()=>{const oe=a.query.path;window.addEventListener("resize",O),oe?n.value=oe:se()}),He(()=>{window.removeEventListener("resize",O)}),(oe,X)=>{const $e=g("t-breadcrumb-item"),Ne=g("t-breadcrumb"),nt=g("t-input"),mt=g("t-select"),Qe=g("t-button"),Ge=g("t-dropdown-item"),xt=g("t-dropdown-menu"),ks=g("t-dropdown"),Na=g("t-tag"),Ka=g("image-icon"),qa=g("t-table"),Po=g("t-dialog");return l(),x("div",Kz,[e("div",qz,[e("div",Hz,[e("div",Gz,[t(Ne,{"max-item-width":u.value?"80px":"150px"},{default:o(()=>[(l(!0),x(le,null,ge(fe.value,(ve,gt)=>(l(),G($e,{key:gt,class:"cursor-pointer whitespace-nowrap transition-colors hover:text-[var(--color-primary)]",onClick:s9=>Ue(ve.path)},Ws({default:o(()=>[p(" "+S(ve.name),1)]),_:2},[gt===0?{name:"icon",fn:o(()=>[t(_(ca))]),key:"0"}:void 0]),1032,["onClick"]))),128))]),_:1},8,["max-item-width"])]),e("div",Wz,[t(nt,{modelValue:Et.value,"onUpdate:modelValue":X[0]||(X[0]=ve=>Et.value=ve),placeholder:"搜索文件...",class:"!rounded-lg shadow-sm",style:Oe({width:u.value?"120px":"200px"})},{"prefix-icon":o(()=>[t(_(_o),{class:"text-zinc-400"})]),_:1},8,["modelValue","style"]),t(mt,{modelValue:jo.value,"onUpdate:modelValue":X[1]||(X[1]=ve=>jo.value=ve),options:Fa,class:"!rounded-lg shadow-sm",style:Oe({width:u.value?"110px":"140px"}),placeholder:"排序"},{prefixIcon:o(()=>[t(_(Zs),{class:"text-zinc-400"})]),_:1},8,["modelValue","style"]),t(Qe,{variant:"outline",size:"medium",class:"!rounded-lg !m-0",onClick:X[2]||(X[2]=ve=>_(Ie)(`/instance/console/${d.value}`))},{icon:o(()=>[t(_(oa))]),default:o(()=>[u.value?H("",!0):(l(),x("span",Jz,"控制台"))]),_:1}),t(ks,null,{dropdown:o(()=>[t(xt,null,{default:o(()=>[t(Ge,{value:"file",onClick:ee},{default:o(()=>[t(_(Ut),{class:"mr-2"}),X[27]||(X[27]=p()),X[28]||(X[28]=e("span",null,"新建文件",-1))]),_:1}),t(Ge,{value:"folder",onClick:he},{default:o(()=>[t(_(Dl),{class:"mr-2"}),X[29]||(X[29]=p()),X[30]||(X[30]=e("span",null,"新建文件夹",-1))]),_:1}),t(Ge,{value:"download",onClick:X[3]||(X[3]=ve=>B.value=!0)},{default:o(()=>[t(_(ls),{class:"mr-2"}),X[31]||(X[31]=p()),X[32]||(X[32]=e("span",null,"离线下载",-1))]),_:1})]),_:1})]),default:o(()=>[t(Qe,{variant:"outline",size:"medium",class:"!rounded-lg !m-0"},{icon:o(()=>[t(_(El))]),default:o(()=>[u.value?H("",!0):(l(),x("span",Xz,"新建"))]),_:1})]),_:1}),t(Qe,{theme:"primary",size:"medium",class:"!rounded-lg shadow-sm !m-0",onClick:X[4]||(X[4]=ve=>z.value=!0)},{icon:o(()=>[t(_(ra))]),default:o(()=>[u.value?H("",!0):(l(),x("span",Qz,"上传"))]),_:1}),t(Qe,{variant:"outline",size:"medium",class:"!rounded-lg shrink-0 !m-0",onClick:we},{icon:o(()=>[t(_(Ee))]),_:1})])]),e("div",Yz,[t(qa,{"selected-row-keys":v.value,"onUpdate:selectedRowKeys":X[6]||(X[6]=ve=>v.value=ve),data:Oa.value,columns:me.value,"row-key":"name",loading:c.value,hover:!0,size:"medium",class:"custom-table"},{name:o(({row:ve})=>[e("div",{class:"flex items-center py-1.5 cursor-pointer group",onClick:dt(gt=>Ce(ve),["stop"])},[(l(),G(it(be(ve).icon),{class:"text-xl mr-2 shrink-0 transition-transform group-hover:scale-110",style:Oe({color:be(ve).color})},null,8,["style"])),e("span",e6,S(ve.name),1)],8,Zz)]),size:o(({row:ve})=>[e("span",t6,S(Me(ve.size)),1)]),permission:o(({row:ve})=>[ve.permission?(l(),G(Na,{key:0,variant:"light-outline",size:"small",class:"!font-mono !rounded !justify-center !text-center"},{default:o(()=>[p(S(ve.permission),1)]),_:2},1024)):H("",!0)]),lastModified:o(({row:ve})=>[e("span",o6,S(Z(ve.lastModified)),1)]),operation:o(({row:ve})=>[e("div",{class:"op-actions",onClick:X[5]||(X[5]=dt(()=>{},["stop"]))},[t(ks,{placement:u.value?"bottom-right":"bottom"},{dropdown:o(()=>[t(xt,null,{default:o(()=>[Y(ve.name)&&ve.type!=="folder"?(l(),G(Ge,{key:0,value:"decompress",onClick:gt=>Ze(ve)},{default:o(()=>[t(_(xo),{class:"mr-2"}),X[33]||(X[33]=p()),X[34]||(X[34]=e("span",null,"解压",-1))]),_:1},8,["onClick"])):H("",!0),ve.type==="folder"||Y(ve.name)?H("",!0):(l(),G(Ge,{key:1,value:"edit",onClick:gt=>N(ve.name)?De(ve.name):Le(ve.name)},{default:o(()=>[N(ve.name)?(l(),G(Ka,{key:0,class:"mr-2"})):(l(),G(_(ao),{key:1,class:"mr-2"})),e("span",null,S(N(ve.name)?"预览":"编辑"),1)]),_:2},1032,["onClick"])),ae.value?(l(),G(Ge,{key:2,value:"permission",onClick:gt=>Xe(ve)},{default:o(()=>[t(_(Ot),{class:"mr-2"}),X[35]||(X[35]=p()),X[36]||(X[36]=e("span",null,"权限",-1))]),_:1},8,["onClick"])):H("",!0),t(Ge,{value:"download",onClick:gt=>Ae(ve)},{default:o(()=>[t(_(so),{class:"mr-2"}),X[37]||(X[37]=p()),X[38]||(X[38]=e("span",null,"下载",-1))]),_:1},8,["onClick"]),t(Ge,{value:"rename",onClick:gt=>W(ve)},{default:o(()=>[t(_(ao),{class:"mr-2"}),X[39]||(X[39]=p()),X[40]||(X[40]=e("span",null,"重命名",-1))]),_:1},8,["onClick"]),t(Ge,{value:"delete",class:"danger-item !text-red-500 hover:!bg-red-50 dark:hover:!bg-red-500/10 transition-colors",onClick:gt=>Ve(ve)},{default:o(()=>[t(_(ct),{class:"mr-2"}),X[41]||(X[41]=p()),X[42]||(X[42]=e("span",null,"删除",-1))]),_:1},8,["onClick"])]),_:2},1024)]),default:o(()=>[t(Qe,{variant:"text",shape:"square",size:"medium",class:"!rounded-md hover:!bg-zinc-100 dark:hover:!bg-zinc-800 transition-colors"},{default:o(()=>[t(_(ns))]),_:1})]),_:2},1032,["placement"])])]),empty:o(()=>[e("div",s6,[t(_(Ut),{size:"40px",class:"opacity-60 mb-3"}),X[43]||(X[43]=e("span",{class:"text-sm font-medium"},"暂无文件",-1))])]),_:1},8,["selected-row-keys","data","columns","loading"])])]),t(Rt,{name:"slide-up"},{default:o(()=>[Se.value?(l(),x("div",a6,[e("div",l6,[u.value?H("",!0):(l(),x(le,{key:0},[p("已选 ")],64)),e("span",r6,S(v.value.length),1),u.value?H("",!0):(l(),x(le,{key:1},[p("项")],64))]),e("div",n6,[t(Qe,{size:"small",variant:"text",theme:"primary",class:"!rounded-full hover:!bg-[var(--color-primary)]/10",onClick:X[7]||(X[7]=ve=>wt())},{icon:o(()=>[t(_(Fl))]),default:o(()=>[u.value?H("",!0):(l(),x("span",i6,"复制"))]),_:1}),t(Qe,{size:"small",variant:"text",theme:"primary",class:"!rounded-full hover:!bg-[var(--color-primary)]/10",onClick:X[8]||(X[8]=ve=>vo())},{icon:o(()=>[t(_(Ol))]),default:o(()=>[u.value?H("",!0):(l(),x("span",d6,"剪切"))]),_:1}),t(Qe,{size:"small",variant:"text",theme:"primary",class:"!rounded-full hover:!bg-[var(--color-primary)]/10",onClick:X[9]||(X[9]=ve=>je())},{icon:o(()=>[t(_(xo))]),default:o(()=>[u.value?H("",!0):(l(),x("span",c6,"压缩"))]),_:1}),t(Qe,{size:"small",variant:"text",theme:"primary",class:"!rounded-full hover:!bg-[var(--color-primary)]/10",onClick:X[10]||(X[10]=ve=>Ae())},{icon:o(()=>[t(_(so))]),default:o(()=>[u.value?H("",!0):(l(),x("span",u6,"下载"))]),_:1}),ae.value?(l(),G(Qe,{key:0,size:"small",variant:"text",theme:"primary",class:"!rounded-full hover:!bg-[var(--color-primary)]/10",onClick:X[11]||(X[11]=ve=>Xe())},{icon:o(()=>[t(_(Ot))]),default:o(()=>[u.value?H("",!0):(l(),x("span",m6,"权限"))]),_:1})):H("",!0),t(Qe,{size:"small",variant:"text",theme:"danger",class:"!rounded-full hover:!bg-red-500/10",onClick:X[12]||(X[12]=ve=>Ve())},{icon:o(()=>[t(_(ct))]),default:o(()=>[u.value?H("",!0):(l(),x("span",p6,"删除"))]),_:1}),X[45]||(X[45]=e("div",{class:"w-[1px] h-4 bg-zinc-200 dark:bg-zinc-700 mx-1 shrink-0"},null,-1)),t(Qe,{size:"small",variant:"text",class:"!rounded-full !text-zinc-500 hover:!bg-zinc-200 dark:hover:!bg-zinc-700 shrink-0",onClick:X[13]||(X[13]=ve=>v.value=[])},{default:o(()=>[...X[44]||(X[44]=[p("取消",-1)])]),_:1})])])):lt.value?(l(),x("div",v6,[e("div",f6,[rt.value==="copy"?(l(),x("span",b6,"准备复制")):(l(),x("span",x6,"准备移动")),e("span",g6,S(tt.value.length),1),X[46]||(X[46]=p(" 项 ",-1))]),e("div",h6,[t(Qe,{theme:"primary",disabled:ke.value,class:"!rounded-full shadow-sm",onClick:St},{icon:o(()=>[t(_(No))]),default:o(()=>[X[47]||(X[47]=p(" 粘贴在此处 ",-1))]),_:1},8,["disabled"]),t(Qe,{variant:"text",theme:"default",class:"!rounded-full hover:!bg-zinc-200 dark:hover:!bg-zinc-700",onClick:Pt},{icon:o(()=>[t(_(as))]),default:o(()=>[X[48]||(X[48]=p(" 取消 ",-1))]),_:1})])])):H("",!0)]),_:1}),t(Pa,{visible:L.value,"onUpdate:visible":X[14]||(X[14]=ve=>L.value=ve),"file-name":q.value,content:P.value,loading:j.value,onSave:de},null,8,["visible","file-name","content","loading"]),t(Po,{visible:A.value,"onUpdate:visible":X[16]||(X[16]=ve=>A.value=ve),header:"新建文件","on-confirm":T},{default:o(()=>[t(nt,{modelValue:V.value,"onUpdate:modelValue":X[15]||(X[15]=ve=>V.value=ve),placeholder:"输入文件名",autofocus:!0,onEnter:T},null,8,["modelValue"])]),_:1},8,["visible"]),t(Po,{visible:m.value,"onUpdate:visible":X[18]||(X[18]=ve=>m.value=ve),header:"重命名","on-confirm":pe},{default:o(()=>[t(nt,{modelValue:y.value,"onUpdate:modelValue":X[17]||(X[17]=ve=>y.value=ve),placeholder:"输入新名称",autofocus:!0,onEnter:pe},null,8,["modelValue"])]),_:1},8,["visible"]),t(Ea,{visible:z.value,"onUpdate:visible":X[19]||(X[19]=ve=>z.value=ve),"instance-id":d.value,"current-path":n.value,onSuccess:et},null,8,["visible","instance-id","current-path"]),t(tz,{visible:w.value,"onUpdate:visible":X[20]||(X[20]=ve=>w.value=ve),"file-name":K.value,"image-blob-url":k.value},null,8,["visible","file-name","image-blob-url"]),t(uz,{visible:b.value,"onUpdate:visible":X[21]||(X[21]=ve=>b.value=ve),"instance-id":d.value,"current-path":n.value,files:E.value,onSuccess:Fe},null,8,["visible","instance-id","current-path","files"]),t(kz,{visible:R.value,"onUpdate:visible":X[22]||(X[22]=ve=>R.value=ve),"instance-id":d.value,"current-path":n.value,"file-name":F.value,onSuccess:re},null,8,["visible","instance-id","current-path","file-name"]),t(Nz,{visible:B.value,"onUpdate:visible":X[23]||(X[23]=ve=>B.value=ve),"instance-id":d.value,"current-path":n.value,onSuccess:we},null,8,["visible","instance-id","current-path"]),t(Lz,{visible:C.value,"onUpdate:visible":X[24]||(X[24]=ve=>C.value=ve),"instance-id":d.value,"current-path":n.value,targets:J.value,onSuccess:xe},null,8,["visible","instance-id","current-path","targets"]),t(Po,{visible:M.value,"onUpdate:visible":X[26]||(X[26]=ve=>M.value=ve),header:"新建文件夹","on-confirm":ne},{default:o(()=>[t(nt,{modelValue:D.value,"onUpdate:modelValue":X[25]||(X[25]=ve=>D.value=ve),placeholder:"输入文件夹名称",autofocus:!0,onEnter:ne},null,8,["modelValue"])]),_:1},8,["visible"])])}}}),_6=ue(y6,[["__scopeId","data-v-b8115d5f"]]),w6=Object.freeze(Object.defineProperty({__proto__:null,default:_6},Symbol.toStringTag,{value:"Module"})),k6=ie({name:"FrameBlank"});function $6(s,a,r,d,i,c){return l(),x("div")}const z6=ue(k6,[["render",$6]]),C6=Object.freeze(Object.defineProperty({__proto__:null,default:z6},Symbol.toStringTag,{value:"Module"}));function Ks(){return Q.get({url:"/api/user/me"})}function qs(s){return Q.post({url:"/api/user/me/update",data:s})}function A6(){return Q.get({url:"/api/admin/user/list"})}function S6(s){return Q.post({url:"/api/admin/user/create",data:s})}function I6(s,a){return Q.post({url:`/api/admin/user/update/${s}`,data:a})}function V6(s){return Q.post({url:`/api/admin/user/delete/${s}`})}const U6={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},M6={class:"design-card flex flex-col sm:flex-row sm:items-center justify-between gap-4 p-5 bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm text-left"},L6={class:"flex items-center gap-3"},B6={class:"relative min-h-[400px]"},T6={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-5 sm:p-6",style:{"animation-delay":"0.05s"}},R6={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-5 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},j6={class:"w-full sm:w-72"},P6={class:"flex items-center gap-3 py-1"},E6={class:"font-bold text-lg"},D6={class:"flex flex-col min-w-0"},F6={class:"font-bold text-sm text-[var(--td-text-color-primary)] truncate"},O6={class:"text-xs font-mono text-[var(--td-text-color-secondary)] mt-0.5 truncate"},N6={key:0,class:"inline-flex items-center px-2.5 py-1 rounded-md bg-[var(--color-success)]/10 text-[var(--color-success)] font-extrabold text-[11px] tracking-wider uppercase border border-[var(--color-success)]/20 shadow-sm"},K6={key:1,class:"inline-flex items-center px-2.5 py-1 rounded-md bg-[var(--color-primary)]/10 text-[var(--color-primary)] font-extrabold text-[11px] tracking-wider uppercase border border-[var(--color-primary)]/20 shadow-sm"},q6={class:"flex items-center gap-1.5"},H6={key:1,class:"text-xs font-mono font-medium text-[var(--td-text-color-secondary)]"},G6={key:2,class:"text-xs font-medium px-2 py-0.5 rounded-full bg-zinc-100 dark:bg-zinc-800 text-[var(--td-text-color-secondary)]"},W6={class:"flex items-center gap-1"},J6={class:"grid grid-cols-1 sm:grid-cols-2 gap-x-4"},X6={key:0,class:"text-[11px] text-[var(--td-text-color-secondary)] mt-1 inline-block"},Q6={class:"flex items-center gap-3 bg-zinc-50 dark:bg-zinc-800/50 p-3 rounded-xl border border-[var(--td-component-border)] w-full mt-1"},Y6=ie({__name:"index",setup(s){const a=h(!1),r=h([]),d=h(""),i=Te(),c=Lo(),f=At(),n=h(!1),v=h("create"),I=h(!1),u=qe({id:"",username:"",name:"",password:"",role:"admin",resetApiKey:!1,resources:[]}),L={username:[{required:!0,message:"请输入用户名",type:"error"}],role:[{required:!0,message:"请选择角色",type:"error"}],password:[{validator:B=>v.value==="create"&&!B?{result:!1,message:"创建用户时密码必填",type:"error"}:!0}]},w=te(()=>[{label:"实例 (Server)",children:f.instanceList.map(B=>({label:`[${B.id??B.ID}] ${B.name??B.Name}`,value:`server:${B.id??B.ID}`}))},{label:"隧道 (FRP)",children:c.frpList.map(B=>({label:`[${B.id??B.ID}] ${B.name??B.Name}`,value:`frp:${B.id??B.ID}`}))}]),A=te(()=>[{colKey:"info",title:"用户信息",width:200,fixed:"left",cell:"info-slot"},{colKey:"role",title:"角色",width:100,cell:"role-slot"},{colKey:"lastLogin",title:"最后登录",width:180,cell:"time-slot",className:"hidden-xs"},{colKey:"op",title:"操作",width:140,fixed:"right",cell:"op-slot"}]),m=te(()=>{if(!d.value)return r.value;const B=d.value.toLowerCase();return r.value.filter(D=>D.username.toLowerCase().includes(B)||D.name&&D.name.toLowerCase().includes(B))}),z=async()=>{a.value=!0;try{const B=await A6();r.value=B}catch(B){U.error(B.message||"获取用户列表失败")}finally{a.value=!1}},b=()=>{v.value="create",u.id="",u.username="",u.name="",u.password="",u.role="user",u.resetApiKey=!1,u.resources=[],n.value=!0},R=B=>{v.value="edit",u.id=B.id,u.username=B.username,u.name=B.name,u.password="",u.role=B.role,u.resetApiKey=!1,u.resources=B.resources?[...B.resources]:[],n.value=!0},C=async({validateResult:B})=>{if(B===!0){I.value=!0;try{v.value==="create"?(await S6({username:u.username,password:u.password,name:u.name,role:u.role,resources:u.role==="admin"?[]:u.resources}),U.success("用户创建成功")):(await I6(u.id,{name:u.name,password:u.password||void 0,role:u.role,resetApiKey:u.resetApiKey,resources:u.role==="admin"?[]:u.resources}),U.success("用户更新成功")),n.value=!1,z()}catch(D){U.error(D.message||"操作失败")}finally{I.value=!1}}},M=B=>{const D=Ke.confirm({header:"删除警告",body:`确定要删除用户 "${B.username}" 吗?此操作不可恢复。`,theme:"danger",onConfirm:async()=>{try{D.hide(),await V6(B.id),U.success("删除成功"),z()}catch(q){U.error(q.message||"删除失败")}}})};return ze(()=>{z(),c.getTunnels(),f.refreshInstanceList()}),(B,D)=>{const q=g("t-button"),P=g("t-input"),j=g("t-avatar"),K=g("time-icon"),k=g("t-table"),V=g("t-form-item"),y=g("t-radio-button"),$=g("t-radio-group"),E=g("t-alert"),F=g("t-select"),J=g("t-checkbox"),O=g("t-form"),N=g("t-dialog");return l(),x("div",U6,[e("div",M6,[D[10]||(D[10]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex flex-col"},[e("h2",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none"},"用户管理"),e("span",{class:"text-xs text-[var(--td-text-color-secondary)] mt-1.5 font-medium"},"管理系统内的账户权限与实例资源分配")])],-1)),e("div",L6,[t(q,{variant:"dashed",onClick:z},{icon:o(()=>[t(_(Ee))]),default:o(()=>[D[8]||(D[8]=p(" 刷新数据 ",-1))]),_:1}),t(q,{theme:"primary",onClick:b},{icon:o(()=>[t(_(ot))]),default:o(()=>[D[9]||(D[9]=p(" 新增用户 ",-1))]),_:1})])]),e("div",B6,[e("div",T6,[e("div",R6,[D[11]||(D[11]=e("div",{class:"text-base font-bold text-[var(--td-text-color-primary)]"},"用户列表",-1)),e("div",j6,[t(P,{modelValue:d.value,"onUpdate:modelValue":D[0]||(D[0]=Y=>d.value=Y),placeholder:"搜索用户名或昵称",clearable:""},{"prefix-icon":o(()=>[t(_(_o),{class:"opacity-60"})]),_:1},8,["modelValue"])])]),t(k,{"row-key":"id",data:m.value,columns:A.value,loading:a.value,hover:!0,pagination:{defaultPageSize:20,total:m.value.length,showJumper:!0},class:"!bg-transparent","table-layout":"auto"},{"info-slot":o(({row:Y})=>[e("div",P6,[t(j,{image:Y.avatar,size:"44px",shape:"circle",class:"shrink-0 ring-2 ring-zinc-100 dark:ring-zinc-700/50 shadow-sm !bg-[var(--color-primary)]/10 !text-[var(--color-primary)]","hide-on-load-failed":!1},{default:o(()=>[e("span",E6,S(Y.name?Y.name[0].toUpperCase():"U"),1)]),_:2},1032,["image"]),e("div",D6,[e("div",F6,S(Y.name||"未设置昵称"),1),e("div",O6,"@"+S(Y.username),1)])])]),"role-slot":o(({row:Y})=>[Y.role==="admin"?(l(),x("span",N6," 管理员 ")):(l(),x("span",K6," 普通用户 "))]),"time-slot":o(({row:Y})=>[e("div",q6,[Y.lastLoginTime?(l(),G(K,{key:0,class:"text-[var(--color-primary)] opacity-70",size:"14px"})):H("",!0),Y.lastLoginTime?(l(),x("span",H6,S(new Date(Y.lastLoginTime).toLocaleString()),1)):(l(),x("span",G6,"从未登录"))])]),"op-slot":o(({row:Y})=>[e("div",W6,[t(q,{variant:"text",theme:"primary",size:"small",class:"hover:!bg-[var(--color-primary)]/10",onClick:be=>R(Y)},{default:o(()=>[...D[12]||(D[12]=[p(" 编辑 ",-1)])]),_:1},8,["onClick"]),D[14]||(D[14]=e("div",{class:"w-[1px] h-3 bg-zinc-200 dark:bg-zinc-700 mx-1"},null,-1)),t(q,{variant:"text",theme:"danger",size:"small",class:"hover:!bg-red-500/10",disabled:Y.id===_(i).userInfo.id||Y.username==="admin",onClick:be=>M(Y)},{default:o(()=>[...D[13]||(D[13]=[p(" 删除 ",-1)])]),_:1},8,["disabled","onClick"])])]),_:1},8,["data","columns","loading","pagination"])])]),t(N,{visible:n.value,"onUpdate:visible":D[7]||(D[7]=Y=>n.value=Y),header:v.value==="create"?"新增用户":"编辑用户","confirm-btn":{content:"提交保存",loading:I.value,theme:"primary"},"on-confirm":()=>B.$refs.formRef.submit(),width:"520px",placement:"center"},{default:o(()=>[t(O,{ref:"formRef",data:u,rules:L,"label-align":"top",onSubmit:C,class:"mt-4"},{default:o(()=>[e("div",J6,[t(V,{label:"登录账号",name:"username"},{default:o(()=>[t(P,{modelValue:u.username,"onUpdate:modelValue":D[1]||(D[1]=Y=>u.username=Y),placeholder:"请输入英文/数字账号",disabled:v.value==="edit"},null,8,["modelValue","disabled"])]),_:1}),t(V,{label:"显示昵称",name:"name"},{default:o(()=>[t(P,{modelValue:u.name,"onUpdate:modelValue":D[2]||(D[2]=Y=>u.name=Y),placeholder:"请输入前台展示名称"},null,8,["modelValue"])]),_:1})]),t(V,{label:"账户角色",name:"role"},{default:o(()=>[t($,{modelValue:u.role,"onUpdate:modelValue":D[3]||(D[3]=Y=>u.role=Y),variant:"default-filled"},{default:o(()=>[t(y,{value:"user"},{default:o(()=>[...D[15]||(D[15]=[p("普通用户",-1)])]),_:1}),t(y,{value:"admin"},{default:o(()=>[...D[16]||(D[16]=[p("全局管理员",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),u.role==="user"?(l(),x(le,{key:0},[u.role==="user"?(l(),G(V,{key:0,"label-width":"0"},{default:o(()=>[t(E,{theme:"warning",variant:"light",title:"资源权限限制说明"},{message:o(()=>[...D[17]||(D[17]=[p("资源分配仅实现基础权限隔离,实例文件系统并非物理隔离。用户可能通过程序路径穿越访问敏感数据,请仅在信任伙伴间使用,",-1),e("strong",{style:{color:"var(--td-error-color)"}},"严禁用于商业化用途",-1),p("。 ",-1)])]),_:1})]),_:1})):H("",!0),t(V,{label:"分配资源",name:"resources"},{help:o(()=>[...D[18]||(D[18]=[e("span",{class:"text-[11px] text-[var(--td-text-color-secondary)] mt-1 inline-block"},"该用户将获得以上选定实例和隧道的完整控制权",-1)])]),default:o(()=>[t(F,{modelValue:u.resources,"onUpdate:modelValue":D[4]||(D[4]=Y=>u.resources=Y),multiple:"",filterable:"",clearable:"",options:w.value,placeholder:"搜索或选择要分配的实例与隧道"},null,8,["modelValue","options"])]),_:1})],64)):H("",!0),t(V,{label:"密码设置",name:"password"},{help:o(()=>[v.value==="edit"?(l(),x("span",X6,"留空则保持原密码不变")):H("",!0)]),default:o(()=>[t(P,{modelValue:u.password,"onUpdate:modelValue":D[5]||(D[5]=Y=>u.password=Y),type:"password",placeholder:"设置新密码",autocomplete:"new-password"},null,8,["modelValue"])]),_:1}),v.value==="edit"?(l(),G(V,{key:1,label:"开发者选项"},{default:o(()=>[e("div",Q6,[t(J,{modelValue:u.resetApiKey,"onUpdate:modelValue":D[6]||(D[6]=Y=>u.resetApiKey=Y)},{default:o(()=>[...D[19]||(D[19]=[p("强制重置该用户的 API Key",-1)])]),_:1},8,["modelValue"])])]),_:1})):H("",!0)]),_:1},8,["data"])]),_:1},8,["visible","header","confirm-btn","on-confirm"])])}}}),Z6=ue(Y6,[["__scopeId","data-v-d4c14e83"]]),e7=Object.freeze(Object.defineProperty({__proto__:null,default:Z6},Symbol.toStringTag,{value:"Module"})),t7={class:"design-card list-item-anim relative flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},o7={class:"flex flex-col sm:flex-row items-center sm:items-start gap-6 p-6 sm:p-8 pb-8 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 relative overflow-hidden"},s7={class:"font-extrabold text-3xl"},a7={class:"flex flex-col items-center sm:items-start gap-2.5 pt-1 z-10 w-full"},l7={class:"flex flex-col sm:flex-row items-center gap-3"},r7={class:"text-2xl font-extrabold tracking-tight text-[var(--td-text-color-primary)] m-0 leading-none"},n7={key:0,class:"inline-flex items-center px-2.5 py-1 rounded-md bg-[var(--color-success)]/10 text-[var(--color-success)] font-extrabold text-[11px] tracking-wider uppercase border border-[var(--color-success)]/20 shadow-sm"},i7={key:1,class:"inline-flex items-center px-2.5 py-1 rounded-md bg-[var(--color-primary)]/10 text-[var(--color-primary)] font-extrabold text-[11px] tracking-wider uppercase border border-[var(--color-primary)]/20 shadow-sm"},d7={class:"flex flex-col sm:flex-row items-center gap-2 sm:gap-4 text-sm mt-1"},c7={class:"flex items-center gap-1.5 px-2.5 py-1 rounded-lg bg-zinc-100/80 dark:bg-zinc-900/50 border border-[var(--td-component-border)] text-[var(--td-text-color-secondary)] font-mono font-medium shadow-inner"},u7={key:0,class:"flex items-center gap-1.5 text-xs text-[var(--td-text-color-secondary)] font-medium"},m7={class:"font-mono"},p7={class:"p-5 sm:p-6 sm:px-8 pt-6"},v7={class:"flex flex-col items-start gap-3 w-full"},f7={class:"w-full"},b7={class:"flex items-center gap-1"},x7={key:0,class:"flex items-center gap-3"},g7={class:"inline-flex items-center gap-1.5 px-3 py-1.5 rounded-lg bg-[var(--color-success)]/10 text-[var(--color-success)] font-bold text-xs border border-[var(--color-success)]/20 shadow-sm"},h7={class:"font-mono ml-1 opacity-80"},y7={key:1},_7={key:1,class:"bg-zinc-50/50 dark:bg-zinc-800/30 p-4 rounded-xl border border-[var(--td-component-border)] mt-4 w-full"},w7={class:"mt-8 pt-5 border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60"},k7=ie({__name:"UserProfileCard",setup(s,{expose:a}){const r=Te(),d=h(!1),i=h(!1),c=h(!1),f=h(""),n=h(""),v=h("qq"),I=qe({id:"",username:"",name:"",avatar:"",role:"",apiKey:"",lastLoginTime:"",openMSLID:""}),u=qe({changePassword:!1,newPassword:"",confirmPassword:""}),L=async()=>{d.value=!0;try{const D=await Ks();Object.assign(I,D),f.value=D.username;const q=D.avatar&&D.avatar.match(/nk=(\d+)/);q&&q[1]?(v.value="qq",n.value=q[1]):v.value="custom"}catch(D){U.error(D.message||"用户加载失败")}finally{d.value=!1}};_e(n,D=>{v.value==="qq"&&D&&(I.avatar=`https://q.qlogo.cn/g?b=qq&nk=${D}&s=640`)});const w=D=>{D==="qq"&&n.value&&(I.avatar=`https://q.qlogo.cn/g?b=qq&nk=${n.value}&s=640`)},A=()=>{I.apiKey&&navigator.clipboard.writeText(I.apiKey).then(()=>{U.success("API Key 已复制")})},m=()=>{const D=Ke.confirm({header:"重置 API 密钥",theme:"warning",body:"重置后,所有使用旧 Key 的外部工具将立即失效,确定要继续吗?",onConfirm:async()=>{try{D.hide(),await qs({resetApiKey:!0}),U.success("API Key 重置成功");const q=await Ks();I.apiKey=q.apiKey}catch(q){U.error(q.message||"重置失败")}}})},z=async()=>{if(u.changePassword){if(!u.newPassword){U.warning("请输入新密码");return}if(u.newPassword!==u.confirmPassword){U.error("两次输入的密码不一致");return}}const D=I.username!==f.value,q=u.changePassword&&!!u.newPassword;i.value=!0;try{const P={username:I.username,name:I.name,avatar:I.avatar,password:q?u.newPassword:void 0,resetApiKey:!1};await qs(P),u.changePassword=!1,u.newPassword="",u.confirmPassword="",f.value=I.username,U.success("个人信息保存成功"),D||q?Ke.alert({header:"重新登录",body:"账号或密码已变更,请重新登录以生效。",confirmBtn:"去登录",onConfirm:async()=>{await r.logout(),window.location.reload()}}):await r.getUserInfo()}catch(P){U.error(P.message)}finally{i.value=!1}};a({initData:L});const b=h(!1),R=async()=>{b.value=!0;try{const D=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);localStorage.setItem("oauth_state",D);const q=`${window.location.origin}/oauth/callback?mode=bind`,P=await Q.get({url:"/api/auth/oauth/url",params:{state:D,callback:q}});P&&P.url?window.location.href=P.url:(U.error(P.message||"获取绑定地址失败"),b.value=!1)}catch(D){U.error(D.message||"请求失败"),b.value=!1}},C=()=>{const D=Ke.confirm({header:"解除绑定",theme:"warning",body:"确定要解除与 MSL 账户的绑定吗?解绑后您将无法使用 MSL 账户快捷登录。",onConfirm:async()=>{try{D.hide(),await Q.post({url:"/api/auth/oauth/unbind"}),U.success("解绑成功"),await L()}catch(q){U.error(q.message||"解绑失败")}}})},M=h(!1),B=()=>{M.value||(M.value=!0,setTimeout(()=>{M.value=!1},600))};return(D,q)=>{const P=g("t-avatar"),j=g("t-radio-button"),K=g("t-radio-group"),k=g("t-input"),V=g("t-form-item"),y=g("t-icon"),$=g("t-button"),E=g("t-switch"),F=g("t-form"),J=g("t-loading");return l(),x("div",t7,[t(J,{loading:d.value,"show-overlay":""},{default:o(()=>[e("div",o7,[q[10]||(q[10]=e("div",{class:"absolute -top-10 -right-10 w-40 h-40 bg-[var(--color-primary)]/5 rounded-full blur-3xl pointer-events-none"},null,-1)),e("div",{class:"relative shrink-0 group cursor-pointer",onClick:B},[e("div",{class:ce(["absolute inset-0 rounded-full z-0 pointer-events-none transition-opacity",M.value?"animate-magic-burst":"opacity-0"]),style:{background:"radial-gradient(circle, var(--color-primary-light) 0%, transparent 70%)"}},null,2),t(P,{image:I.avatar,size:"84px",shape:"circle",class:ce(["ring-4 ring-white dark:ring-zinc-800 shadow-lg !bg-[var(--color-primary)]/10 !text-[var(--color-primary)] z-10 transition-all duration-300 relative",[M.value?"animate-jelly-pop":"group-hover:scale-105 group-hover:-rotate-6 group-hover:shadow-xl group-hover:shadow-[var(--color-primary)]/20"]])},{default:o(()=>[e("span",s7,S(I.name?I.name.slice(0,1).toUpperCase():"U"),1)]),_:1},8,["image","class"])]),e("div",a7,[e("div",l7,[e("h1",r7,S(I.name||"未设置昵称"),1),I.role==="admin"?(l(),x("span",n7," 管理员 ")):(l(),x("span",i7," 普通用户 "))]),e("div",d7,[e("div",c7,[q[8]||(q[8]=e("span",{class:"text-[var(--td-text-color-secondary)] font-bold"},"@",-1)),p(S(I.username),1)]),I.lastLoginTime?(l(),x("div",u7,[t(_(pt),{class:"opacity-70 text-[var(--color-primary)]",size:"14px"}),q[9]||(q[9]=p(" 上次登录: ",-1)),e("span",m7,S(new Date(I.lastLoginTime).toLocaleString()),1)])):H("",!0)])])]),e("div",p7,[t(F,{ref:"userForm",data:I,"label-width":120,"label-align":"left",onSubmit:z},{default:o(()=>[t(V,{label:"头像设置"},{default:o(()=>[e("div",v7,[t(K,{modelValue:v.value,"onUpdate:modelValue":q[0]||(q[0]=O=>v.value=O),variant:"default-filled",onChange:w},{default:o(()=>[t(j,{value:"qq"},{default:o(()=>[t(_(Kl),{class:"opacity-80"}),q[11]||(q[11]=p(" QQ头像",-1))]),_:1}),t(j,{value:"custom"},{default:o(()=>[t(_(Bt),{class:"opacity-80"}),q[12]||(q[12]=p(" 链接",-1))]),_:1})]),_:1},8,["modelValue"]),e("div",f7,[v.value==="qq"?(l(),G(k,{key:0,modelValue:n.value,"onUpdate:modelValue":q[1]||(q[1]=O=>n.value=O),placeholder:"输入 QQ 号自动获取头像",type:"number"},{"prefix-icon":o(()=>[t(_(da),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])):(l(),G(k,{key:1,modelValue:I.avatar,"onUpdate:modelValue":q[2]||(q[2]=O=>I.avatar=O),placeholder:"请输入图片 URL 链接"},{"prefix-icon":o(()=>[t(_(ia),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"]))])])]),_:1}),t(V,{label:"用户昵称",name:"name"},{default:o(()=>[t(k,{modelValue:I.name,"onUpdate:modelValue":q[3]||(q[3]=O=>I.name=O),placeholder:"设置前台显示的名称"},null,8,["modelValue"])]),_:1}),t(V,{label:"登录账号",name:"username"},{default:o(()=>[t(k,{modelValue:I.username,"onUpdate:modelValue":q[4]||(q[4]=O=>I.username=O),placeholder:"登录唯一标识"},null,8,["modelValue"])]),_:1}),t(V,{label:"API Key"},{help:o(()=>[...q[13]||(q[13]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"用于 MSLX 桌面版或第三方工具连接的凭证,请妥善保管。",-1)])]),default:o(()=>[t(k,{value:I.apiKey,type:c.value?"text":"password",readonly:"",placeholder:"点击重置生成全新 Key",class:"!font-mono !bg-zinc-50/50 dark:!bg-zinc-900/30"},{suffix:o(()=>[e("div",b7,[t($,{variant:"text",size:"small",class:"hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)] !h-auto !w-auto !p-1.5 !rounded-md",title:"复制",onClick:A},{default:o(()=>[t(y,{name:"file-copy"})]),_:1}),q[14]||(q[14]=e("div",{class:"w-[1px] h-3 bg-zinc-200 dark:bg-zinc-700 mx-0.5"},null,-1)),t($,{variant:"text",theme:"danger",size:"small",class:"hover:!bg-red-500/10 hover:!text-red-500 !h-auto !w-auto !p-1.5 !rounded-md",title:"重置 Key",onClick:m},{default:o(()=>[t(_(Ee))]),_:1})])]),_:1},8,["value","type"])]),_:1}),_(La)()?H("",!0):(l(),x(le,{key:0},[q[19]||(q[19]=e("div",{class:"h-px bg-dashed border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60 my-6"},null,-1)),t(V,{label:"MSL 账户绑定"},{help:o(()=>[...q[15]||(q[15]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1.5 inline-block"},"绑定后可使用 MSL 账户一键快捷登录本控制台。",-1)])]),default:o(()=>[I.openMSLID&&I.openMSLID!=="0"?(l(),x("div",x7,[e("span",g7,[t(_(Lt),{size:"15px"}),q[16]||(q[16]=p(" 已绑定 ",-1)),e("span",h7,"(UID: "+S(I.openMSLID)+")",1)]),t($,{theme:"danger",variant:"text",size:"small",class:"hover:!bg-red-500/10",onClick:C},{default:o(()=>[...q[17]||(q[17]=[p(" 解除绑定 ",-1)])]),_:1})])):(l(),x("div",y7,[t($,{theme:"primary",variant:"outline",loading:b.value,class:"!border-[var(--color-primary)]/30 hover:!bg-[var(--color-primary)]/10",onClick:R},{icon:o(()=>[t(_(Bt))]),default:o(()=>[q[18]||(q[18]=p(" 绑定 MSL 账户 ",-1))]),_:1},8,["loading"])]))]),_:1})],64)),q[21]||(q[21]=e("div",{class:"h-px bg-dashed border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60 my-6"},null,-1)),t(V,{label:"修改密码"},{default:o(()=>[t(E,{modelValue:u.changePassword,"onUpdate:modelValue":q[5]||(q[5]=O=>u.changePassword=O)},null,8,["modelValue"])]),_:1}),u.changePassword?(l(),x("div",_7,[t(V,{label:"新密码","required-mark":"","label-width":"80"},{default:o(()=>[t(k,{modelValue:u.newPassword,"onUpdate:modelValue":q[6]||(q[6]=O=>u.newPassword=O),type:"password",placeholder:"请输入新密码"},{"prefix-icon":o(()=>[t(_(Ot),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])]),_:1}),t(V,{label:"确认密码","required-mark":"","label-width":"80",class:"!mb-0 mt-4"},{default:o(()=>[t(k,{modelValue:u.confirmPassword,"onUpdate:modelValue":q[7]||(q[7]=O=>u.confirmPassword=O),type:"password",placeholder:"请再次输入新密码确认"},{"prefix-icon":o(()=>[t(_(Lt),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])]),_:1})])):H("",!0),e("div",w7,[t($,{theme:"primary",type:"submit",loading:i.value,class:"!h-10 !w-full sm:!w-auto sm:!px-10 !font-bold tracking-widest !rounded-xl shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow"},{default:o(()=>[...q[20]||(q[20]=[p(" 保存个人资料 ",-1)])]),_:1},8,["loading"])])]),_:1},8,["data"])])]),_:1},8,["loading"])])}}}),$7=ue(k7,[["__scopeId","data-v-5a8b9e90"]]),z7={class:"design-card relative flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},C7={class:"p-5 sm:p-6 sm:px-8"},A7={class:"flex items-center justify-between mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},S7={class:"flex items-center gap-3"},I7={class:"flex items-center gap-2 w-full sm:w-96"},V7={class:"flex-1"},U7={class:"w-24 shrink-0"},M7={class:"mt-8 pt-5 border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60"},L7=ie({__name:"SystemSettingsCard",emits:["refresh"],setup(s,{expose:a,emit:r}){const d=ps(),i=h(!1),c=h(!1),f=qe({fireWallBanLocalAddr:!1,openWebConsoleOnLaunch:!0,neoForgeInstallerMirrors:"MSL Mirrors",listenHost:"localhost",listenPort:1027,oAuthMSLClientID:"",oAuthMSLClientSecret:""}),n=[{label:"官方源 (较慢)",value:"Official"},{label:"MSL镜像源 (推荐)",value:"MSL Mirrors"},{label:"MSL镜像源 - 备用",value:"MSL Mirrors Backup"}],v=r,I=async()=>{i.value=!0;try{const A=await In();Object.assign(f,A)}catch(A){U.error(A.message||"系统设置加载失败")}finally{i.value=!1}},u=async()=>{c.value=!0;try{await Vn(f),U.success("系统设置保存成功")}catch(A){U.error(A.message)}finally{c.value=!1}},L=()=>{I(),v("refresh")};a({initData:I});const w=h("");return ze(()=>{w.value=`${window.location.origin}/oauth/callback`}),(A,m)=>{const z=g("refresh-icon"),b=g("t-button"),R=g("t-form-item"),C=g("t-switch"),M=g("t-select"),B=g("t-input"),D=g("t-icon"),q=g("t-form"),P=g("t-loading");return l(),x("div",z7,[t(P,{loading:i.value,"show-overlay":""},{default:o(()=>[e("div",C7,[e("div",A7,[m[12]||(m[12]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"w-1.5 h-5 bg-[var(--color-primary)] rounded-full shadow-[0_0_8px_var(--color-primary-light)] opacity-90"}),e("h2",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none tracking-tight"},"系统偏好设置")],-1)),t(b,{variant:"dashed",size:"small",class:"!bg-transparent",onClick:L},{icon:o(()=>[t(z)]),default:o(()=>[m[11]||(m[11]=p(" 刷新数据 ",-1))]),_:1})]),t(q,{ref:"sysForm",data:f,"label-width":140,"label-align":"left",onSubmit:u},{default:o(()=>[m[25]||(m[25]=e("div",{class:"flex items-center gap-3 mt-2 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"守护进程"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),t(R,{label:"软件更新"},{default:o(()=>[t(b,{theme:"default",loading:_(d).loading,class:"!bg-zinc-50 dark:!bg-zinc-800/50 hover:!bg-zinc-100 dark:hover:!bg-zinc-800 !border-zinc-200/80 dark:!border-zinc-700/80 !text-zinc-700 dark:!text-zinc-300",onClick:m[0]||(m[0]=j=>_(d).checkAppUpdate(!0))},{icon:o(()=>[t(_(ls),{class:"opacity-70"})]),default:o(()=>[m[13]||(m[13]=p(" 检查更新 ",-1))]),_:1},8,["loading"])]),_:1}),t(R,{label:"自动打开控制台"},{help:o(()=>[...m[14]||(m[14]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"MSLX 守护进程启动成功后,是否自动登录网页端控制台。",-1)])]),default:o(()=>[t(C,{modelValue:f.openWebConsoleOnLaunch,"onUpdate:modelValue":m[1]||(m[1]=j=>f.openWebConsoleOnLaunch=j)},null,8,["modelValue"])]),_:1}),t(R,{label:"安装镜像源"},{help:o(()=>[...m[15]||(m[15]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"选择在自动安装 NeoForge / Forge 时所使用的镜像源。",-1)])]),default:o(()=>[t(M,{modelValue:f.neoForgeInstallerMirrors,"onUpdate:modelValue":m[2]||(m[2]=j=>f.neoForgeInstallerMirrors=j),options:n,class:"!w-full sm:!w-72"},null,8,["modelValue"])]),_:1}),_(La)()?H("",!0):(l(),x(le,{key:0},[m[19]||(m[19]=e("div",{class:"flex items-center gap-3 mt-8 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"MSL OAuth 2.0"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),t(R,{label:"Client ID"},{default:o(()=>[t(B,{modelValue:f.oAuthMSLClientID,"onUpdate:modelValue":m[3]||(m[3]=j=>f.oAuthMSLClientID=j),placeholder:"请输入 Client ID",class:"!w-full sm:!w-96"},{"prefix-icon":o(()=>[t(_(at),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])]),_:1}),t(R,{label:"Client Secret"},{help:o(()=>[...m[16]||(m[16]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"配置 MSL OAuth 2.0 后即可使用您的 MSL 账号一键登录控制台。",-1)])]),default:o(()=>[t(B,{modelValue:f.oAuthMSLClientSecret,"onUpdate:modelValue":m[4]||(m[4]=j=>f.oAuthMSLClientSecret=j),type:"password",placeholder:"请输入 Client Secret",class:"!w-full sm:!w-96"},{"prefix-icon":o(()=>[t(_($s),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])]),_:1}),t(R,{label:"回调地址"},{help:o(()=>[...m[17]||(m[17]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"请将此地址复制并填入 MSL 用户中心 OAuth 应用配置的 [回调地址] 中。",-1)])]),default:o(()=>[t(B,{value:w.value,readonly:"",placeholder:"正在获取当前域名...",class:"!w-full sm:!w-96 !bg-zinc-50/50 dark:!bg-zinc-900/30"},{"prefix-icon":o(()=>[t(_(Bt),{class:"opacity-60 text-zinc-400"})]),suffix:o(()=>[t(b,{variant:"text",shape:"square",class:"hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)] !h-auto !w-auto !p-1.5 !rounded-md",onClick:m[5]||(m[5]=j=>_(go)(w.value,!0,"回调地址复制成功"))},{default:o(()=>[t(D,{name:"file-copy"})]),_:1})]),_:1},8,["value"])]),_:1}),t(R,{label:"配置教程"},{default:o(()=>[t(b,{theme:"default",class:"!bg-[var(--color-primary)]/10 !text-[var(--color-primary)] !border-none hover:!bg-[var(--color-primary)]/20",onClick:m[6]||(m[6]=j=>_(Ie)(_(io).msl_oauth))},{icon:o(()=>[t(_(wo))]),default:o(()=>[m[18]||(m[18]=p(" 配置 MSL 账号快捷登录教程 ",-1))]),_:1})]),_:1})],64)),m[26]||(m[26]=e("div",{class:"flex items-center gap-3 mt-8 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"网络与安全"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),t(R,{label:"禁止本地访问"},{help:o(()=>[...m[20]||(m[20]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"开启后将禁止本地回环地址访问,增强安全性。",-1)])]),default:o(()=>[e("div",S7,[t(C,{modelValue:f.fireWallBanLocalAddr,"onUpdate:modelValue":m[7]||(m[7]=j=>f.fireWallBanLocalAddr=j)},null,8,["modelValue"]),e("span",{class:ce(["text-[11px] font-extrabold px-2 py-0.5 rounded-md transition-colors",f.fireWallBanLocalAddr?"bg-[var(--color-primary)]/10 text-[var(--color-primary)] border border-[var(--color-primary)]/20":"bg-zinc-100 dark:bg-zinc-800 text-zinc-500 border border-zinc-200 dark:border-zinc-700"])},S(f.fireWallBanLocalAddr?"已开启":"已关闭"),3)])]),_:1}),t(R,{label:"监听地址设置"},{help:o(()=>[...m[21]||(m[21]=[e("span",{class:"text-[11px] font-medium text-amber-500/80 dark:text-amber-500/70 mt-1 inline-block"},"设置 MSLX 守护进程的监听地址。(需要重启守护进程生效,若不明白这是干什么的请一定不要修改!)",-1)])]),default:o(()=>[e("div",I7,[e("div",V7,[t(B,{modelValue:f.listenHost,"onUpdate:modelValue":m[8]||(m[8]=j=>f.listenHost=j),placeholder:"localhost"},{"prefix-icon":o(()=>[t(_(at),{class:"opacity-60 text-zinc-400"})]),_:1},8,["modelValue"])]),m[22]||(m[22]=e("div",{class:"text-[var(--td-text-color-secondary)] font-extrabold pb-1"},":",-1)),e("div",U7,[t(B,{modelValue:f.listenPort,"onUpdate:modelValue":m[9]||(m[9]=j=>f.listenPort=j),placeholder:"1027",align:"center"},{"prefix-icon":o(()=>[t(_($s),{class:"opacity-60 text-zinc-400 hidden sm:block"})]),_:1},8,["modelValue"])])])]),_:1}),t(R,{label:"远程访问"},{default:o(()=>[t(b,{theme:"default",class:"!bg-zinc-50 dark:!bg-zinc-800/50 hover:!bg-zinc-100 dark:hover:!bg-zinc-800 !border-zinc-200/80 dark:!border-zinc-700/80 !text-zinc-700 dark:!text-zinc-300",onClick:m[10]||(m[10]=j=>_(Ie)(_(io).remote_access))},{icon:o(()=>[t(_(wo),{class:"opacity-70"})]),default:o(()=>[m[23]||(m[23]=p(" 配置远程访问说明 ",-1))]),_:1})]),_:1}),e("div",M7,[t(b,{theme:"primary",type:"submit",loading:c.value,class:"!h-10 !w-full sm:!w-auto sm:!px-10 !font-bold tracking-widest !rounded-xl shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow"},{default:o(()=>[...m[24]||(m[24]=[p(" 保存系统设置 ",-1)])]),_:1},8,["loading"])])]),_:1},8,["data"])])]),_:1},8,["loading"])])}}}),B7=ue(L7,[["__scopeId","data-v-f2d6c5ab"]]),T7={class:"design-card list-item-anim relative flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm transition-all duration-300"},R7={class:"p-5 sm:p-6 sm:px-8"},j7={class:"flex flex-col sm:flex-row sm:items-center justify-between gap-4 mb-6 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60"},P7={class:"grid grid-cols-1 md:grid-cols-2 gap-x-10 gap-y-2"},E7={class:"grid grid-cols-1 md:grid-cols-2 gap-x-10 gap-y-4"},D7={class:"flex items-center gap-3 w-full"},F7={class:"mt-8 pt-5 border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60"},O7=ie({__name:"WebPanelStyleCard",setup(s){const a=Wt(),r=async(d,i)=>{const c=d[0]?.raw||d.raw;if(!c)return;const f=await a.uploadImage(c);f&&(a.settings[i]=f)};return(d,i)=>{const c=g("t-button"),f=g("t-upload"),n=g("t-input"),v=g("t-form-item"),I=g("t-slider"),u=g("t-option"),L=g("t-select"),w=g("t-form"),A=g("t-loading");return l(),x("div",T7,[t(A,{loading:_(a).loading,"show-overlay":""},{default:o(()=>[e("div",R7,[e("div",j7,[i[14]||(i[14]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"w-1.5 h-6 bg-[var(--color-primary)] rounded-full shadow-[0_0_8px_var(--color-primary-light)] opacity-90"}),e("div",{class:"flex flex-col"},[e("h2",{class:"text-lg font-bold text-[var(--td-text-color-primary)] m-0 leading-none tracking-tight"},"面板自定义样式"),e("span",{class:"text-[11px] sm:text-xs text-amber-600/80 dark:text-amber-500/80 mt-1.5 font-medium"},"背景图相关的样式需要在面板左上角的样式面板中启用背景美化才会生效哦!")])],-1)),t(c,{variant:"dashed",size:"small",class:"!bg-transparent",onClick:i[0]||(i[0]=m=>_(Ie)(_(io).style))},{icon:o(()=>[t(_(wo))]),default:o(()=>[i[13]||(i[13]=p(" 设置文档 ",-1))]),_:1})]),t(w,{data:_(a).settings,"label-align":"top",onSubmit:_(a).saveSettings},{default:o(()=>[i[18]||(i[18]=e("div",{class:"flex items-center gap-3 mt-2 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"背景图片设置"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),t(v,{label:"浅色背景"},{help:o(()=>[...i[15]||(i[15]=[e("span",{class:"text-[11px] font-medium text-[var(--td-text-color-secondary)] mt-1 inline-block"},"留空则使用默认的背景图哦~",-1)])]),default:o(()=>[t(n,{modelValue:_(a).settings.webPanelStyleLightBackground,"onUpdate:modelValue":i[2]||(i[2]=m=>_(a).settings.webPanelStyleLightBackground=m),placeholder:"输入完整 URL 地址或者在右边上传图片",class:"!w-full"},{suffix:o(()=>[t(f,{theme:"custom",action:"","auto-upload":!1,"show-file-list":!1,accept:"image/png, image/jpeg, image/webp",onChange:i[1]||(i[1]=m=>r(m,"webPanelStyleLightBackground"))},{default:o(()=>[t(c,{variant:"text",shape:"square",class:"hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)] !h-auto !w-auto !p-1.5 !rounded-md transition-colors",title:"上传本地图片"},{default:o(()=>[t(_(yo))]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(v,{label:"深色背景"},{default:o(()=>[t(n,{modelValue:_(a).settings.webPanelStyleDarkBackground,"onUpdate:modelValue":i[4]||(i[4]=m=>_(a).settings.webPanelStyleDarkBackground=m),placeholder:"输入完整 URL 地址或者在右边上传图片",class:"!w-full"},{suffix:o(()=>[t(f,{theme:"custom","auto-upload":!1,"show-file-list":!1,accept:"image/png, image/jpeg, image/webp",onChange:i[3]||(i[3]=m=>r(m,"webPanelStyleDarkBackground"))},{default:o(()=>[t(c,{variant:"text",shape:"square",class:"hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)] !h-auto !w-auto !p-1.5 !rounded-md transition-colors",title:"上传本地图片"},{default:o(()=>[t(_(yo))]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}),i[19]||(i[19]=e("div",{class:"flex items-center gap-3 mt-8 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"透明度调整 (0.1 - 1.0)"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),e("div",P7,[t(v,{label:"浅色背景透明度"},{default:o(()=>[t(I,{modelValue:_(a).settings.webPanelStyleLightBackgroundOpacity,"onUpdate:modelValue":i[5]||(i[5]=m=>_(a).settings.webPanelStyleLightBackgroundOpacity=m),min:.1,max:1,step:.01,"tooltip-props":{theme:"light"}},null,8,["modelValue"])]),_:1}),t(v,{label:"浅色组件透明度"},{default:o(()=>[t(I,{modelValue:_(a).settings.webPanelStyleLightComponentsOpacity,"onUpdate:modelValue":i[6]||(i[6]=m=>_(a).settings.webPanelStyleLightComponentsOpacity=m),min:.1,max:1,step:.01,"tooltip-props":{theme:"light"}},null,8,["modelValue"])]),_:1}),t(v,{label:"深色背景透明度"},{default:o(()=>[t(I,{modelValue:_(a).settings.webPanelStyleDarkBackgroundOpacity,"onUpdate:modelValue":i[7]||(i[7]=m=>_(a).settings.webPanelStyleDarkBackgroundOpacity=m),min:.1,max:1,step:.01},null,8,["modelValue"])]),_:1}),t(v,{label:"深色组件透明度"},{default:o(()=>[t(I,{modelValue:_(a).settings.webPanelStyleDarkComponentsOpacity,"onUpdate:modelValue":i[8]||(i[8]=m=>_(a).settings.webPanelStyleDarkComponentsOpacity=m),min:.1,max:1,step:.01},null,8,["modelValue"])]),_:1})]),i[20]||(i[20]=e("div",{class:"flex items-center gap-3 mt-8 mb-6"},[e("span",{class:"text-xs font-extrabold text-[var(--td-text-color-secondary)] uppercase tracking-widest"},"终端设置 (毛玻璃强度/染色设置)"),e("div",{class:"h-px bg-zinc-200/60 dark:bg-zinc-700/60 flex-1"})],-1)),e("div",E7,[t(v,{label:"浅色模式模糊度"},{default:o(()=>[t(I,{modelValue:_(a).settings.webpPanelTerminalBlurLight,"onUpdate:modelValue":i[9]||(i[9]=m=>_(a).settings.webpPanelTerminalBlurLight=m),min:0,max:50,step:1,"input-number-props":{theme:"column",style:"width: 65px"}},{label:o(({value:m})=>[p(S(m)+"px ",1)]),_:1},8,["modelValue"])]),_:1}),t(v,{label:"深色模式模糊度"},{default:o(()=>[t(I,{modelValue:_(a).settings.webpPanelTerminalBlurDark,"onUpdate:modelValue":i[10]||(i[10]=m=>_(a).settings.webpPanelTerminalBlurDark=m),min:0,max:50,step:1,"input-number-props":{theme:"column",style:"width: 65px"}},{label:o(({value:m})=>[p(S(m)+"px ",1)]),_:1},8,["modelValue"])]),_:1}),t(v,{label:"日志染色等级"},{default:o(()=>[e("div",D7,[t(L,{modelValue:_(a).settings.webPanelColorizeLogLevel,"onUpdate:modelValue":i[11]||(i[11]=m=>_(a).settings.webPanelColorizeLogLevel=m),class:"!flex-1 sm:!flex-none sm:!w-48"},{default:o(()=>[t(u,{label:"不染色",value:0}),t(u,{label:"简约染色",value:1}),t(u,{label:"增强染色",value:2})]),_:1},8,["modelValue"]),t(c,{theme:"default",class:"!bg-zinc-100 dark:!bg-zinc-800/80 !text-zinc-600 dark:!text-zinc-400 !border-none hover:!bg-[var(--color-primary)]/10 hover:!text-[var(--color-primary)]",onClick:i[12]||(i[12]=m=>_(Ie)(_(io).style_log_colorizer))},{icon:o(()=>[t(_(ql))]),default:o(()=>[i[16]||(i[16]=p(" 有什么区别? ",-1))]),_:1})])]),_:1})]),e("div",F7,[t(c,{theme:"primary",type:"submit",loading:_(a).submitLoading,class:"!h-10 !w-full sm:!w-auto sm:!px-10 !font-bold tracking-widest !rounded-xl shadow-md shadow-[var(--color-primary-light)]/40 hover:shadow-[var(--color-primary-light)]/60 transition-shadow"},{default:o(()=>[...i[17]||(i[17]=[p(" 应用样式设置 ",-1)])]),_:1},8,["loading"])])]),_:1},8,["data","onSubmit"])])]),_:1},8,["loading"])])}}}),N7=ue(O7,[["__scopeId","data-v-f0fede5e"]]),K7={class:"settings-page"},q7=ie({__name:"index",setup(s){const a=Wt(),r=Te(),d=h(),i=h(),c=async()=>{const f=[];d.value&&f.push(d.value.initData()),i.value&&f.push(i.value.initData()),f.push(a.fetchSettings()),await Promise.all(f)};return ze(()=>{c()}),(f,n)=>{const v=g("t-space");return l(),x("div",K7,[t(v,{direction:"vertical",size:"large",style:{width:"100%"}},{default:o(()=>[t($7,{ref_key:"userCardRef",ref:d},null,512),_(r).isAdmin?(l(),G(B7,{key:0,ref_key:"sysCardRef",ref:i,onRefresh:c},null,512)):H("",!0),_(r).isAdmin?(l(),G(N7,{key:1})):H("",!0)]),_:1})])}}}),H7=ue(q7,[["__scopeId","data-v-4a19a959"]]),G7=Object.freeze(Object.defineProperty({__proto__:null,default:H7},Symbol.toStringTag,{value:"Module"}));async function W7(){return await Q.get({url:"/build.json",baseURL:"/",params:{t:Date.now()}})}async function J7(){return await Q.get({url:"/query/changelogs?software=MSLX",baseURL:"https://api.mslmc.cn/v3"})}const X7="/assets/jpg/mslx-aowu.BKxkpLYR.jpg",Q7={class:"construction-container"},Y7={class:"content-wrapper"},Z7={class:"description"},eC={class:"progress-decoration"},tC={class:"action-area"},oC={width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor",style:{"margin-right":"4px"}},sC=ie({__name:"HurryUpppppppp",setup(s){const a=h(0),r=h(!1),d=["开发者收到了你的怨念!(╯°□°)╯︵ ┻━┻","正在疯狂敲击键盘中... 🔥","生产队的驴都不敢这么歇!🐴","别催了别催了,头发已经掉光了!👴","再催就把 Bug 变成 Feature!🐛","服务器正在冒烟... 💥","正在与 Bug 进行殊死搏斗!⚔️","不要急,我在试图理解我昨晚写的代码... 🤔","进度条:99%... (卡住了) 🚫","键盘冒火星子了!灭火器准备!🧯","新建文件夹 (2) - 最终版 - 绝对不改版.zip 📁","404 Developer Not Found 🤖","已读不回 (假的,正在改) 📱","正在向虚空终端请求算力... 🧠","画饼中,请稍后... 🥞","再催我就去提瓦特大陆摸鱼了!🎣","纳西妲说她想吃枣椰蜜糖,没空写代码!🍬","正在虚空终端检索:《如何 1 秒写完代码》... 🧠","知识与你分享,但 Bug 不行!📖","再催?再催就把你关进净善宫陪我一起加班!🏰","陷入了改 Bug 的花神诞祭轮回... 第168次尝试... 🔄","别急,代码还在梦境里生长呢 💤","所有的代码,皆是智慧的结晶(大概)✨","我要去上个厕所,把写不完的焦虑通通冲走!🚽","兰那罗说这行代码它不想修,它想去唱歌 🎶","或许... 我们可以用罐装知识把功能直接灌进去?🤔","这虽然是痛痛,但也是成长的过程... (指修Bug) 🩹"],i=te(()=>a.value===0?"这里正在进行一项神秘的大工程...":a.value<5?"工期正在加急!":a.value<10?"好痛!别点啦!":"呜呜呜,错啦,这就去写代码!😭"),c=()=>{a.value++,r.value=!0,setTimeout(()=>{r.value=!1},500);let f=d[Math.floor(Math.random()*d.length)];a.value>20?(f="键盘已经被敲烂了!求放过!🆘",U.error(f)):U.success(f)};return(f,n)=>{const v=g("t-progress"),I=g("t-button");return l(),x("div",Q7,[e("div",Y7,[e("div",{class:ce(["image-box",{"shake-anim":r.value}])},[...n[0]||(n[0]=[e("img",{src:X7,alt:"施工中",class:"mascot-img"},null,-1),e("div",{class:"halo"},null,-1)])],2),n[2]||(n[2]=e("h1",{class:"main-title"},"嗷呜!O(≧口≦)O",-1)),e("p",Z7,S(i.value),1),e("div",eC,[t(v,{theme:"plump",percentage:30+a.value%70,label:!1,status:"active"},null,8,["percentage"])]),e("div",tC,[t(I,{theme:"primary",size:"large",shape:"round",variant:"base",class:"urge-btn",onClick:c},{icon:o(()=>[(l(),x("svg",oC,[...n[1]||(n[1]=[e("path",{d:"M8.5 1L2 9h5v6l6.5-8h-5V1z"},null,-1)])]))]),default:o(()=>[p(" 催更 ("+S(a.value)+") ",1)]),_:1})])])])}}}),aC=ue(sC,[["__scopeId","data-v-d8b4c962"]]),lC={class:"mx-auto flex flex-col gap-6 text-[var(--td-text-color-primary)] pb-5"},rC={class:"relative min-h-[400px]"},nC={class:"flex flex-col gap-5"},iC={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6",style:{"animation-delay":"0.05s"}},dC={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4"},cC={class:"ml-4 flex-1 min-w-0"},uC={class:"font-bold text-base text-[var(--td-text-color-primary)] truncate"},mC={class:"text-[10px] font-extrabold px-2 py-0.5 rounded bg-[var(--color-primary)]/10 text-[var(--color-primary)] inline-block mt-0.5 mb-1 tracking-wider uppercase"},pC=["title"],vC={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6",style:{"animation-delay":"0.1s"}},fC={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6",style:{"animation-delay":"0.15s"}},bC={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4"},xC={class:"ml-4 flex-1 min-w-0"},gC={class:"font-bold text-base text-[var(--td-text-color-primary)] truncate"},hC={class:"text-[10px] font-extrabold px-2 py-0.5 rounded bg-[var(--color-success)]/10 text-[var(--color-success)] inline-block mt-0.5 mb-1 tracking-wider uppercase"},yC=["title"],_C={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6",style:{"animation-delay":"0.2s"}},wC={class:"mb-5 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 flex items-center justify-between"},kC={key:0,class:"max-h-[400px] overflow-y-auto custom-scrollbar pr-2"},$C={class:"bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] ml-1 transition-colors hover:bg-white dark:hover:bg-zinc-800"},zC={class:"flex items-center gap-3 mb-2"},CC={class:"inline-flex items-center px-2 py-0.5 rounded-md bg-[var(--color-primary)]/10 text-[var(--color-primary)] font-extrabold text-xs tracking-wider border border-[var(--color-primary)]/20"},AC={class:"flex items-center gap-1 text-xs text-[var(--td-text-color-secondary)] font-mono font-medium"},SC={class:"text-sm text-zinc-700 dark:text-zinc-300 whitespace-pre-wrap leading-relaxed"},IC={key:1,class:"flex justify-center items-center py-10"},VC={class:"design-card list-item-anim flex flex-col bg-[var(--td-bg-color-container)]/80 rounded-2xl border border-[var(--td-component-border)] shadow-sm p-6",style:{"animation-delay":"0.25s"}},UC={class:"mb-5 pb-4 border-b border-dashed border-zinc-200/70 dark:border-zinc-700/60 flex flex-col sm:flex-row sm:items-center justify-between gap-4"},MC={class:"flex items-center gap-3"},LC={class:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4 mb-6"},BC={class:"bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center transition-colors hover:bg-white dark:hover:bg-zinc-800"},TC={class:"text-xl font-extrabold text-[var(--color-primary)] tracking-tight"},RC={class:"bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center transition-colors hover:bg-white dark:hover:bg-zinc-800"},jC={class:"text-sm font-bold text-[var(--td-text-color-primary)] flex items-center gap-1.5"},PC=["title"],EC={class:"text-sm font-mono font-bold text-[var(--td-text-color-primary)] flex items-center gap-1.5"},DC={class:"text-[11px] text-[var(--td-text-color-secondary)] mt-1 truncate font-medium"},FC={class:"border-t border-dashed border-zinc-200/70 dark:border-zinc-700/60 pt-4"},OC={class:"flex items-center gap-2 font-bold text-sm text-zinc-700 dark:text-zinc-300 bg-zinc-50/80 dark:bg-zinc-800/50 p-3 px-4 rounded-xl border border-[var(--td-component-border)] hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors"},NC={class:"max-h-[300px] overflow-y-auto custom-scrollbar mt-3 pl-1 pr-2"},KC={class:"bg-zinc-50/50 dark:bg-zinc-800/30 p-3.5 rounded-xl border border-[var(--td-component-border)] ml-1 transition-colors hover:bg-white dark:hover:bg-zinc-800"},qC={class:"text-[11px] text-[var(--td-text-color-secondary)] font-mono mb-1.5 font-medium"},HC={class:"text-sm text-[var(--td-text-color-primary)] font-medium mb-3 leading-snug"},GC={class:"flex items-center gap-2"},WC={class:"inline-flex items-center gap-1 text-[11px] font-bold bg-zinc-200/50 dark:bg-zinc-700/50 text-zinc-600 dark:text-zinc-300 px-2 py-0.5 rounded"},JC={class:"text-[11px] font-mono font-medium text-[var(--td-text-color-secondary)] bg-zinc-100 dark:bg-zinc-900 px-1.5 py-0.5 rounded border border-[var(--td-component-border)]"},XC={class:"flex items-center gap-2 font-bold text-sm text-zinc-700 dark:text-zinc-300 bg-zinc-50/80 dark:bg-zinc-800/50 p-3 px-4 rounded-xl border border-[var(--td-component-border)] hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors mt-2"},QC={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-3 mt-3"},YC=["title"],ZC={class:"text-[10px] font-mono font-bold px-1.5 py-0.5 rounded bg-zinc-200/50 dark:bg-zinc-700/50 text-[var(--td-text-color-secondary)] shrink-0"},eA=ie({__name:"index",setup(s){const a=[{name:"xiaoyu",role:"Core Developer",avatar:"https://q.qlogo.cn/headimg_dl?dst_uin=1791123970&spec=640&img_type=jpg",desc:"核心开发者"},{name:"Weheal",role:"Core Developer",avatar:"https://q.qlogo.cn/headimg_dl?dst_uin=2035582067&spec=640&img_type=jpg",desc:"核心开发者"}],r=[{name:"GuHanDuRen",role:"Alpha Tester",avatar:"https://q.qlogo.cn/headimg_dl?dst_uin=2778318425&spec=640&img_type=jpg",desc:"最早期内部功能测试"},{name:"邱息",role:"Beta Tester",avatar:"https://q.qlogo.cn/headimg_dl?dst_uin=3687624214&spec=640&img_type=jpg",desc:"提供了宝贵的建议"},{name:"Nebula琳",role:"Beta Tester",avatar:"https://q.qlogo.cn/headimg_dl?dst_uin=3770298358&spec=640&img_type=jpg",desc:"提供了宝贵的建议"},{name:"MSLX Beta 群友们",role:"Members",avatar:"https://p.qlogo.cn/gh/839645854/839645854/0",desc:"感谢各位内测群的群友们!"}],d=h(!0),i=h(null),c=h(!0),f=h([]),n=async()=>{try{d.value=!0,i.value=await W7()}catch(u){console.error(u),U.warning("无法加载构建信息")}finally{d.value=!1}},v=async()=>{try{c.value=!0;const u=await J7();u&&(f.value=u)}catch(u){console.error("获取更新日志失败:",u)}finally{c.value=!1}},I=te(()=>i.value?.dependencies?Object.entries(i.value.dependencies).map(([u,L])=>({name:u,version:L})):[]);return ze(()=>{n(),v()}),(u,L)=>{const w=g("t-avatar"),A=g("t-loading"),m=g("t-timeline-item"),z=g("t-timeline"),b=g("t-tag"),R=g("t-collapse-panel"),C=g("t-collapse");return l(),x("div",lC,[L[14]||(L[14]=st('

关于与更新日志

了解 MSLX 的前世今生、幕后团队以及系统构建与更新信息

logo
',1)),e("div",rC,[e("div",nC,[L[13]||(L[13]=st('

关于 MSLX

全新一代跨平台开服工具

MSLX 是由 MSL 原班团队 MSLTeam 倾力打造的全新一代开服工具。 基于 .NET Core 10.0 环境。

它传承了 MSL 经典的 UI 设计语言,旨在让操作零门槛——无论是老用户还是新伙伴,都能即刻上手,极速部署您的 MC 服务器。 MSLX 不仅 完美支持跨平台 (Windows / macOS / Linux) 运行,相比前代,更引入了强大的 远程访问 功能,让管理更自由。

',1)),e("div",iC,[L[0]||(L[0]=st('

开发团队

感谢以下开发者对本项目的杰出贡献
',1)),e("div",dC,[(l(),x(le,null,ge(a,M=>e("div",{key:M.name,class:"group flex items-center bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] transition-all duration-300 hover:-translate-y-1 hover:shadow-md hover:border-[var(--color-primary)]/50 hover:bg-white dark:hover:bg-zinc-800"},[t(w,{image:M.avatar,size:"56px",shape:"circle",class:"shrink-0 ring-2 ring-white dark:ring-zinc-700 shadow-sm transition-transform group-hover:scale-105"},null,8,["image"]),e("div",cC,[e("div",uC,S(M.name),1),e("div",mC,S(M.role),1),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] truncate font-medium",title:M.desc},S(M.desc),9,pC)])])),64))])]),e("div",vC,[L[1]||(L[1]=st('

催更?

请点击下方按钮......
',1)),t(aC)]),e("div",fC,[L[2]||(L[2]=st('

鸣谢

特别感谢参与内测并提供宝贵反馈的伙伴们
',1)),e("div",bC,[(l(),x(le,null,ge(r,M=>e("div",{key:M.name,class:"group flex items-center bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] transition-all duration-300 hover:-translate-y-1 hover:shadow-md hover:border-[var(--color-success)]/50 hover:bg-white dark:hover:bg-zinc-800"},[t(w,{image:M.avatar,size:"56px",shape:"circle",class:"shrink-0 ring-2 ring-white dark:ring-zinc-700 shadow-sm transition-transform group-hover:scale-105"},null,8,["image"]),e("div",xC,[e("div",gC,S(M.name),1),e("div",hC,S(M.role),1),e("div",{class:"text-xs text-[var(--td-text-color-secondary)] truncate font-medium",title:M.desc},S(M.desc),9,yC)])])),64))])]),e("div",_C,[e("div",wC,[L[3]||(L[3]=st('

更新日志

查看 MSLX 历史版本的所有改动记录
',1)),c.value?(l(),G(A,{key:0,size:"small"})):H("",!0)]),f.value.length>0?(l(),x("div",kC,[t(z,null,{default:o(()=>[(l(!0),x(le,null,ge(f.value,(M,B)=>(l(),G(m,{key:B,"dot-color":"primary"},{default:o(()=>[e("div",$C,[e("div",zC,[e("span",CC,S(M.version),1),e("div",AC,[t(_(pt),{size:"14px"}),p(" "+S(M.time),1)])]),e("div",SC,S(M.changes),1)])]),_:2},1024))),128))]),_:1})])):c.value?H("",!0):(l(),x("div",IC,[...L[4]||(L[4]=[e("span",{class:"text-sm font-medium text-[var(--td-text-color-secondary)] bg-zinc-50 dark:bg-zinc-800/50 px-4 py-2 rounded-full border border-[var(--td-component-border)]"},"暂无更新日志",-1)])]))]),e("div",VC,[e("div",UC,[L[6]||(L[6]=st('

构建信息

系统底层的实时编译数据与核心依赖版本
',1)),e("div",MC,[d.value?(l(),G(A,{key:0,size:"small"})):H("",!0),i.value?(l(),G(b,{key:1,theme:"success",variant:"light",shape:"round",class:"!px-3 !font-medium"},{icon:o(()=>[t(_(Lt))]),default:o(()=>[L[5]||(L[5]=p(" 构建成功 ",-1))]),_:1})):H("",!0)])]),i.value?(l(),x(le,{key:0},[e("div",LC,[e("div",BC,[L[7]||(L[7]=e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mb-1.5 font-medium"},"当前版本",-1)),e("div",TC,S(i.value.version),1)]),e("div",RC,[L[8]||(L[8]=e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mb-1.5 font-medium"},"构建时间",-1)),e("div",jC,[t(_(pt),{class:"opacity-70 text-[var(--color-primary)]"}),p(" "+S(i.value.buildTime),1)])]),e("div",{class:"bg-zinc-50/80 dark:bg-zinc-800/50 p-4 rounded-xl border border-[var(--td-component-border)] flex flex-col justify-center transition-colors hover:bg-white dark:hover:bg-zinc-800",title:i.value.commitMsg},[L[9]||(L[9]=e("div",{class:"text-xs text-[var(--td-text-color-secondary)] mb-1.5 font-medium"},"最新提交",-1)),e("div",EC,[t(_(Hl),{class:"opacity-70 text-[var(--color-primary)]"}),p(" "+S(i.value.commitId.substring(0,7)),1)]),e("div",DC,"by "+S(i.value.commitAuthor),1)],8,PC),L[10]||(L[10]=st('
核心框架
.NET 10.0Vue 3.x
',1))]),e("div",FC,[t(C,{borderless:!0},{default:o(()=>[t(R,{value:"history"},{header:o(()=>[e("div",OC,[t(_(Gl),{class:"opacity-80"}),L[11]||(L[11]=p(" 提交日志 (Commit History) ",-1))])]),default:o(()=>[e("div",NC,[t(z,null,{default:o(()=>[(l(!0),x(le,null,ge(i.value.history,M=>(l(),G(m,{key:M.commitId,"dot-color":"primary"},{default:o(()=>[e("div",KC,[e("div",qC,S(M.commitTime),1),e("div",HC,S(M.commitMsg),1),e("div",GC,[e("span",WC,[t(_(mo),{size:"12px"}),p(" "+S(M.commitAuthor),1)]),e("span",JC,"#"+S(M.commitId.substring(0,7)),1)])])]),_:2},1024))),128))]),_:1})])]),_:1}),t(R,{value:"dependencies"},{header:o(()=>[e("div",XC,[t(_(Tt),{class:"opacity-80"}),L[12]||(L[12]=p(" 核心依赖 (Dependencies) ",-1))])]),default:o(()=>[e("div",QC,[(l(!0),x(le,null,ge(I.value,M=>(l(),x("div",{key:M.name,class:"flex items-center justify-between p-2.5 px-3.5 bg-zinc-50/80 dark:bg-zinc-800/50 border border-[var(--td-component-border)] rounded-lg shadow-sm transition-colors hover:bg-white dark:hover:bg-zinc-800 hover:border-[var(--color-primary)]/30"},[e("span",{class:"text-xs font-bold text-zinc-700 dark:text-zinc-300 truncate mr-3",title:M.name},S(M.name),9,YC),e("span",ZC,S(M.version),1)]))),128))])]),_:1})]),_:1})])],64)):H("",!0)])])])])}}}),tA=ue(eA,[["__scopeId","data-v-690d640f"]]),oA=Object.freeze(Object.defineProperty({__proto__:null,default:tA},Symbol.toStringTag,{value:"Module"})),sA={key:0,class:"loading-wrapper"},aA={key:1,class:"input-group"},lA={class:"check-container"},rA={class:"btn-wrapper"},nA={key:0,class:"msl-login-wrapper"},iA={class:"reset-guide"},dA={class:"guide-item"},cA={class:"guide-title"},uA={class:"guide-item"},mA={class:"guide-title"},pA="remembered_url",Hs="remembered_username",vA=ie({__name:"Login",setup(s){const a=Te(),r=ps(),d=co(),i=Ye(),c=h(!1),f=h(!1),n=h(!1),v=h(!1),I=h(!0),u=h(!1),L=qe({url:localStorage.getItem(pA)||"",username:localStorage.getItem(Hs)||"",password:"",checked:!!localStorage.getItem(Hs)}),w=h(),A=te(()=>{const R={username:[{required:!0,message:"请输入用户名",type:"error"}],password:[{required:!0,message:"请输入密码",type:"error"}]};return v.value||(R.url=[{required:!0,message:"请输入服务器地址",type:"error"}]),R}),m=async()=>{I.value=!0,await a.checkConnection("")?(v.value=!0,L.url=""):v.value=!1;try{(await Q.get({url:"/api/auth/oauth/status"})).allowOAuth&&(f.value=!0),I.value=!1}catch{I.value=!1}},z=async({validateResult:R})=>{if(R===!0){c.value=!0;try{await a.login({url:v.value?"":L.url,username:L.username,password:L.password,checked:L.checked}),U.success("登录成功");const C=i.query.redirect,M=C?decodeURIComponent(C):"/dashboard/base";d.push(M),la.success({content:`欢迎回来!${a.userInfo.name}`,title:"MSLX 控制台"}),r.checkAppUpdate(!1)}catch(C){U.error(C.message||"登录失败,请检查账号密码")}finally{c.value=!1}}},b=async()=>{try{c.value=!0;const R=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15);localStorage.setItem("oauth_state",R);const C=`${window.location.origin}/oauth/callback?mode=login`,M=await Q.get({url:"/api/auth/oauth/url",params:{state:R,callback:C}});if(M&&M.url)window.location.href=M.url;else throw new Error(M.message||"获取授权地址失败")}catch(R){U.error(R.message||"无法连接到认证服务器"),c.value=!1}};return ze(()=>{m()}),(R,C)=>{const M=g("t-loading"),B=g("t-icon"),D=g("t-input"),q=g("t-form-item"),P=g("t-checkbox"),j=g("t-link"),K=g("t-button"),k=g("t-form"),V=g("t-divider"),y=g("t-alert"),$=g("t-dialog");return l(),x("div",null,[t(k,{ref_key:"form",ref:w,class:"login-form",data:L,rules:A.value,"label-width":"0",onSubmit:z},{default:o(()=>[I.value?(l(),x("div",sA,[t(M,{text:"正在连接服务...",size:"small"})])):(l(),x("div",aA,[v.value?H("",!0):(l(),G(q,{key:0,name:"url"},{default:o(()=>[t(D,{modelValue:L.url,"onUpdate:modelValue":C[0]||(C[0]=E=>L.url=E),size:"large",placeholder:"服务器地址 (如 localhost:1027)",class:"glass-input"},{"prefix-icon":o(()=>[t(B,{name:"server"})]),_:1},8,["modelValue"])]),_:1})),t(q,{name:"username"},{default:o(()=>[t(D,{modelValue:L.username,"onUpdate:modelValue":C[1]||(C[1]=E=>L.username=E),size:"large",placeholder:"请输入用户名",class:"glass-input"},{"prefix-icon":o(()=>[t(B,{name:"user"})]),_:1},8,["modelValue"])]),_:1}),t(q,{name:"password"},{default:o(()=>[t(D,{modelValue:L.password,"onUpdate:modelValue":C[3]||(C[3]=E=>L.password=E),size:"large",type:n.value?"text":"password",placeholder:"请输入密码",class:"glass-input"},{"prefix-icon":o(()=>[t(B,{name:"lock-on"})]),"suffix-icon":o(()=>[t(B,{name:n.value?"browse":"browse-off",style:{cursor:"pointer"},onClick:C[2]||(C[2]=E=>n.value=!n.value)},null,8,["name"])]),_:1},8,["modelValue","type"])]),_:1})])),e("div",lA,[t(P,{modelValue:L.checked,"onUpdate:modelValue":C[4]||(C[4]=E=>L.checked=E)},{default:o(()=>[...C[7]||(C[7]=[p("记住用户名",-1)])]),_:1},8,["modelValue"]),t(j,{theme:"primary",hover:"color",onClick:C[5]||(C[5]=E=>u.value=!0)},{default:o(()=>[...C[8]||(C[8]=[p(" 忘记密码? ",-1)])]),_:1})]),t(q,{class:"btn-container"},{default:o(()=>[e("div",rA,[t(K,{block:"",size:"large",type:"submit",class:"login-btn",loading:c.value},{default:o(()=>[...C[9]||(C[9]=[p(" 登 录 ",-1)])]),_:1},8,["loading"]),f.value?(l(),x("div",nA,[e("a",{class:"msl-link-btn",onClick:b},[t(B,{name:"user-transmit"}),C[10]||(C[10]=e("span",null,"使用 MSL 账户登录",-1))])])):H("",!0)])]),_:1})]),_:1},8,["data","rules"]),t($,{visible:u.value,"onUpdate:visible":C[6]||(C[6]=E=>u.value=E),header:"找回或重置密码",footer:!1,width:"480px",attach:"body"},{default:o(()=>[e("div",iA,[e("div",dA,[e("div",cA,[t(B,{name:"user-talk"}),C[11]||(C[11]=p(" 方式一:联系管理员",-1))]),C[12]||(C[12]=e("p",{class:"guide-desc"},"如果系统中存在其他管理员账号,请联系对应人员协助您在后台重置密码。",-1))]),t(V,{dashed:"",style:{margin:"16px 0"}}),e("div",uA,[e("div",mA,[t(B,{name:"refresh"}),C[13]||(C[13]=p(" 方式二:初始化默认账户",-1))]),C[15]||(C[15]=e("p",{class:"guide-desc"},"若无法联系其他管理员,请在服务器端删除以下配置文件:",-1)),C[16]||(C[16]=e("div",{class:"code-block"},"DaemonData/Configs/UserList.json",-1)),e("p",null,[t(y,{style:{"margin-top":"10px"}},{default:o(()=>[...C[14]||(C[14]=[p("操作提示:删除该文件后,请",-1),e("strong",null,"重启守护进程",-1),p("。系统将自动重新创建包含默认账号密码的初始文件。",-1)])]),_:1})])])])]),_:1},8,["visible"])])}}}),fA=ue(vA,[["__scopeId","data-v-b95f4e77"]]),bA={class:"login-header"},xA={class:"logo"},gA={class:"operations-container"},hA=ie({__name:"Header",setup(s){const a=ut(),r=()=>{a.updateConfig({showSettingPanel:!0})},d=()=>{window.open("https://github.com/MSLTeam/MSLX")},i=()=>{window.open("https://mslx.mslmc.cn")};return(c,f)=>{const n=g("t-icon"),v=g("t-button");return l(),x("header",bA,[e("span",xA,[e("img",{src:Vo,class:ce(`${_(Je)}-side-nav-logo-img`),alt:"logo"},null,2),f[0]||(f[0]=e("span",null," MSLX 管理中心 ",-1))]),e("div",gA,[t(v,{theme:"default",shape:"square",variant:"text",onClick:d},{default:o(()=>[t(n,{name:"logo-github",class:"icon"})]),_:1}),t(v,{theme:"default",shape:"square",variant:"text",onClick:i},{default:o(()=>[t(n,{name:"help-circle",class:"icon"})]),_:1}),t(v,{theme:"default",shape:"square",variant:"text",onClick:r},{default:o(()=>[t(n,{name:"setting",class:"icon"})]),_:1})])])}}}),Da=ue(hA,[["__scopeId","data-v-c06bbccc"]]),yA={class:"login-content"},_A={class:"login-container"},wA={class:"copyright"},kA={class:"welcome-content"},$A={class:"account-card"},zA={class:"info-row"},CA={class:"label"},AA={class:"info-row"},SA={class:"label"},IA={name:"LoginIndex"},VA=ie({...IA,setup(s){const a=Wt(),r=Te(),d=(n,v)=>n?n.startsWith("http")?n:`${r.baseUrl||window.location.origin}/api/static/images/${n}`:v,i=te(()=>{const n=a.settings;return{"--custom-bg-light":`url('${d(n.webPanelStyleLightBackground,cs)}')`,"--custom-bg-dark":`url('${d(n.webPanelStyleDarkBackground,us)}')`}}),c=h(!1),f=()=>{c.value=!1;const n=new URL(window.location.href);n.searchParams.delete("initialize"),window.history.replaceState({},"",n)};return ze(()=>{a.fetchSettings(),new URLSearchParams(window.location.search).get("initialize")==="true"&&(c.value=!0)}),(n,v)=>{const I=g("t-alert"),u=g("t-button"),L=g("t-dialog");return l(),x("div",{class:"login-wrapper",style:Oe(i.value)},[t(Da,{class:"login-header-fixed"}),e("div",yA,[e("div",_A,[v[1]||(v[1]=e("div",{class:"title-container"},[e("h1",{class:"title"},"连接到 MSLX"),e("p",{class:"sub-title"},"网页管理中心")],-1)),t(fA),e("footer",wA,"Copyright @ 2021-"+S(new Date().getFullYear())+" MSLTeam",1)])]),t(ds,{class:"tdesign-setting-outside"}),t(L,{visible:c.value,"onUpdate:visible":v[0]||(v[0]=w=>c.value=w),footer:!1,"close-btn":!0,width:"480px",attach:"body",class:"welcome-dialog","on-close":f},{header:o(()=>[...v[2]||(v[2]=[e("div",{class:"dialog-header-row"},[e("span",{class:"emoji-icon"},"🎉"),e("span",{class:"header-text"},"欢迎使用 MSLX 开服器")],-1)])]),default:o(()=>[e("div",kA,[t(I,{theme:"success",class:"security-alert"},{message:o(()=>[...v[3]||(v[3]=[p(" 您似乎是第一次使用?请查阅以下信息,然后开始享受您的MC开服之旅吧~ ",-1)])]),_:1}),e("div",$A,[e("div",zA,[e("span",CA,[t(_(mo)),v[4]||(v[4]=p(" 默认账户:",-1))]),v[5]||(v[5]=e("span",{class:"value highlight"},"mslx",-1))]),e("div",AA,[e("span",SA,[t(_(Ot)),v[6]||(v[6]=p(" 默认密码:",-1))]),v[7]||(v[7]=e("span",{class:"value mono"},"请在MSLX守护进程端控制台查看",-1))])]),t(I,{theme:"warning",class:"security-alert"},{message:o(()=>[...v[8]||(v[8]=[p(" 安全提醒:请登录后",-1),e("b",null,[e("u",null,"立即修改默认的账户名和密码")],-1),p(",保障您的服务安全。 ",-1)])]),_:1}),t(u,{block:"",theme:"primary",size:"large",variant:"base",onClick:f},{icon:o(()=>[t(_(Lt))]),default:o(()=>[v[9]||(v[9]=p(" 我已知晓,立即登录 ",-1))]),_:1})])]),_:1},8,["visible"])],4)}}}),UA=ue(VA,[["__scopeId","data-v-786dd78b"]]),MA=Object.freeze(Object.defineProperty({__proto__:null,default:UA},Symbol.toStringTag,{value:"Module"})),LA={class:"login-panel"},BA={class:"login-container"},TA={class:"callback-content"},RA={key:0,class:"status-box"},jA={class:"loading-icon-wrapper"},PA={class:"tip-text"},EA={key:1,class:"status-box success"},DA={class:"desc"},FA={class:"sub-desc"},OA={class:"btn-group"},NA={key:2,class:"status-box error"},KA={class:"error-msg-box"},qA={class:"btn-group"},HA={class:"copyright"},GA=ie({__name:"index",setup(s){const a=Ye(),r=co(),d=Te(),i=Wt(),c=(R,C)=>R?R.startsWith("http")?R:`${d.baseUrl||window.location.origin}/api/static/images/${R}`:C,f=te(()=>{const R=i.settings;return{"--custom-bg-light":`url('${c(R.webPanelStyleLightBackground,cs)}')`,"--custom-bg-dark":`url('${c(R.webPanelStyleDarkBackground,us)}')`}}),n=h("loading"),v=h("正在验证身份..."),I=h(""),u=h(""),L=h(3),w=async()=>{const{code:R,state:C,mode:M}=a.query;if(!R||!C){n.value="error",I.value="无效的回调参数,缺少 Code 或 State。";return}const B=localStorage.getItem("oauth_state");if(localStorage.removeItem("oauth_state"),C!==B){n.value="error",I.value="安全校验失败 (State Mismatch),请求可能被篡改。";return}try{if(M==="login")await A(R);else if(M==="bind")await m(R);else throw new Error("未知的操作模式")}catch(D){n.value="error",I.value=D.message||"处理请求时发生未知错误"}},A=async R=>{v.value="正在登录 MSLX...";try{const C=await Q.post({url:"/api/auth/oauth/login",data:{code:R}});await d.loginByOAuth(C),n.value="success",u.value=`欢迎回来,${d.userInfo.name||C.data.userInfo?.name}`,z("/dashboard/base")}catch(C){n.value="error",I.value=C.message}},m=async R=>{v.value="正在绑定 MSL 账号...";try{await Q.post({url:"/api/auth/oauth/bind",data:{code:R}}),n.value="success",u.value="账号绑定成功!",await d.getUserInfo(),z("/settings")}catch(C){U.error(C.message)}},z=R=>{const C=setInterval(()=>{L.value--,L.value<=0&&(clearInterval(C),Ie(R))},1e3)},b=()=>{Ie("/login")};return ze(()=>{i.fetchSettings(),w()}),(R,C)=>{const M=g("t-loading"),B=g("t-button");return l(),x("div",{class:"login-wrapper",style:Oe(f.value)},[t(Da,{class:"login-header-fixed"}),e("div",LA,[e("div",BA,[C[5]||(C[5]=e("div",{class:"title-container"},[e("h1",{style:{"margin-bottom":"10px"},class:"title"},"MSL 统一身份认证")],-1)),e("div",TA,[n.value==="loading"?(l(),x("div",RA,[e("div",jA,[t(M,{size:"large"})]),e("p",PA,S(v.value),1)])):n.value==="success"?(l(),x("div",EA,[t(_(Kt),{class:"icon-success"}),C[2]||(C[2]=e("h2",{class:"status-title"},"操作成功",-1)),e("p",DA,S(u.value),1),e("p",FA,S(L.value)+" 秒后自动跳转...",1),e("div",OA,[t(B,{block:"",size:"large",class:"login-btn",onClick:C[0]||(C[0]=D=>_(r).push("/dashboard/base"))},{default:o(()=>[...C[1]||(C[1]=[p(" 立即进入 ",-1)])]),_:1})])])):(l(),x("div",NA,[t(_(So),{class:"icon-error"}),C[4]||(C[4]=e("h2",{class:"status-title"},"操作失败",-1)),e("div",KA,S(I.value),1),e("div",qA,[t(B,{block:"",size:"large",class:"login-btn",onClick:b},{default:o(()=>[...C[3]||(C[3]=[p(" 返回登录页 ",-1)])]),_:1})])]))]),e("footer",HA,"Copyright @ 2021-"+S(new Date().getFullYear())+" MSLTeam",1)])]),t(ds,{class:"tdesign-setting-outside"})],4)}}}),WA=ue(GA,[["__scopeId","data-v-4a099a27"]]),JA=Object.freeze(Object.defineProperty({__proto__:null,default:WA},Symbol.toStringTag,{value:"Module"})),XA={class:"relative flex items-center justify-center w-screen min-h-screen transition-all duration-300 bg-cover bg-center bg-no-repeat page-bg before:absolute before:inset-0 before:bg-white/20 dark:before:bg-black/40 before:transition-colors"},QA={class:"relative z-10 flex flex-col items-center text-center w-[420px] max-w-[90%] p-10 md:p-12 mx-5 bg-white/60 dark:bg-[#1e1e28]/50 backdrop-blur-xl border border-white/40 dark:border-white/15 rounded-2xl shadow-[0_8px_32px_0_rgba(0,0,0,0.2)] transition-all duration-300"},YA={class:"w-full"},ZA={class:"mt-8 text-xs text-[var(--td-text-color-secondary)]/60 font-mono tracking-wider"},e9=ie({__name:"index",setup(s){return ut(),(a,r)=>{const d=g("t-button");return l(),x("div",XA,[e("div",QA,[r[2]||(r[2]=e("div",{class:"mb-10 w-full"},[e("h1",{class:"text-[72px] md:text-[96px] font-bold leading-tight m-0 bg-gradient-to-br from-[#40a9ff] to-[#1890ff] dark:from-[#69c0ff] dark:to-[#40a9ff] bg-clip-text text-transparent opacity-90 select-none"}," 404 "),e("h2",{class:"text-2xl font-semibold mt-2.5 !mb-4 tracking-wide text-zinc-800 dark:text-white"}," 掉出了这个世界...... "),e("p",{class:"text-sm leading-relaxed !px-5 m-0 text-zinc-600 dark:text-zinc-300/80"},[p(" 越过基岩的边界,只剩无尽的黑夜,"),e("br"),p("请点击重生,寻回原本的世界。 ")])],-1)),e("div",YA,[t(d,{theme:"primary",size:"large",block:"",class:"!rounded-xl !h-12 !text-base shadow-lg shadow-[var(--color-primary)]/20 hover:shadow-[var(--color-primary)]/40 transition-shadow",onClick:r[0]||(r[0]=i=>_(Ie)("/"))},{default:o(()=>[...r[1]||(r[1]=[p(" 返回主页 ",-1)])]),_:1})]),e("footer",ZA," Copyright @ 2021-"+S(new Date().getFullYear())+" MSLTeam ",1)])])}}}),t9=ue(e9,[["__scopeId","data-v-f8d3a3f9"]]),o9=Object.freeze(Object.defineProperty({__proto__:null,default:t9},Symbol.toStringTag,{value:"Module"})); diff --git a/MSLX.Daemon/Frontend/assets/js/mslx-entry.DLeduHlf.js b/MSLX.Daemon/Frontend/assets/js/mslx-entry.rmwTM72S.js similarity index 93% rename from MSLX.Daemon/Frontend/assets/js/mslx-entry.DLeduHlf.js rename to MSLX.Daemon/Frontend/assets/js/mslx-entry.rmwTM72S.js index 3030bd0..aa4c250 100644 --- a/MSLX.Daemon/Frontend/assets/js/mslx-entry.DLeduHlf.js +++ b/MSLX.Daemon/Frontend/assets/js/mslx-entry.rmwTM72S.js @@ -1 +1 @@ -import"./mslx-app-main.Te7AUO8s.js";import"./mslx-core.DZWTbFWd.js";import"./mslx-libs.BfFW5N8o.js";import"./mslx-editor.DiM-SrP0.js";import"./mslx-charts.ByXhkWPm.js";import"./mslx-formatter.DCunR7Lr.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))i(e);new MutationObserver(e=>{for(const r of e)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function s(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?r.credentials="include":e.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(e){if(e.ep)return;e.ep=!0;const r=s(e);fetch(e.href,r)}})(); +import"./mslx-app-main.Cdym3WOG.js";import"./mslx-core.DZWTbFWd.js";import"./mslx-libs.BfFW5N8o.js";import"./mslx-editor.DiM-SrP0.js";import"./mslx-charts.ByXhkWPm.js";import"./mslx-formatter.DCunR7Lr.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))i(e);new MutationObserver(e=>{for(const r of e)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function s(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?r.credentials="include":e.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(e){if(e.ep)return;e.ep=!0;const r=s(e);fetch(e.href,r)}})(); diff --git a/MSLX.Daemon/Frontend/build.json b/MSLX.Daemon/Frontend/build.json index 14a682c..1129b48 100644 --- a/MSLX.Daemon/Frontend/build.json +++ b/MSLX.Daemon/Frontend/build.json @@ -1,6 +1,6 @@ { - "version": "1.3.4", - "buildTime": "2026-04-01 03:47:00", + "version": "1.3.5", + "buildTime": "2026-04-05 17:10:36", "dependencies": { "@codemirror/lang-javascript": "^6.2.4", "@codemirror/lang-json": "^6.0.2", @@ -74,10 +74,64 @@ "vite-svg-loader": "^5.1.0", "vue-tsc": "^2.0.26" }, - "commitId": "d1fabaf6232f0d6984b6ffba22105ea8bc06b913", - "commitMsg": "Merge pull request #97 from Hongbro886/fix-95", - "commitAuthor": "小宇", + "commitId": "89086442333f955353a835b9330c3527a3a5699a", + "commitMsg": "fix(webpanel): 修复部分输入框的异常样式", + "commitAuthor": "luluxiaoyu", "history": [ + { + "commitId": "89086442333f955353a835b9330c3527a3a5699a", + "commitTime": "2026-04-05 17:09:09 +0800", + "commitAuthor": "luluxiaoyu", + "commitMsg": "fix(webpanel): 修复部分输入框的异常样式" + }, + { + "commitId": "2aa48b7c2bf03855aa2003644ce9e43c52b6786e", + "commitTime": "2026-04-05 16:20:27 +0800", + "commitAuthor": "luluxiaoyu", + "commitMsg": "chore(webpanel): 更新ChmlFrp配置信息" + }, + { + "commitId": "2a929e8f3171de2580fbf4323a36286e02fb79cd", + "commitTime": "2026-04-05 16:13:33 +0800", + "commitAuthor": "luluxiaoyu", + "commitMsg": "feat(webpanel): 关于页面新增贡献者鸣谢列表" + }, + { + "commitId": "9062e78ac42e2c17e76a6b29cb95ae037b42def5", + "commitTime": "2026-04-05 16:05:49 +0800", + "commitAuthor": "luluxiaoyu", + "commitMsg": "fix(webpanel): 移除背景美化模式下顶部导航栏异常的毛玻璃效果" + }, + { + "commitId": "c300e7e1c328cb6c6df414dc98280e5578b9ad80", + "commitTime": "2026-04-05 11:45:21 +0800", + "commitAuthor": "小宇", + "commitMsg": "Merge pull request #103 from Hongbro886/fix-102" + }, + { + "commitId": "c5fff9f57225756a4a2bb6c522368480346b2b6d", + "commitTime": "2026-04-05 09:49:55 +0800", + "commitAuthor": "whoa", + "commitMsg": "fix(webpanel):将MEFrp的注册链接指向正确的地址" + }, + { + "commitId": "60d17acdee98442370ca866dee54daa4838ff6c0", + "commitTime": "2026-04-05 00:05:38 +0800", + "commitAuthor": "luluxiaoyu", + "commitMsg": "perf(webpanel): 优化ChmlFrp登录弹窗的的方式" + }, + { + "commitId": "b1a5b1bbebfe4e933db7bae99c96313091eea7f4", + "commitTime": "2026-04-01 15:54:46 +0800", + "commitAuthor": "小宇", + "commitMsg": "Merge pull request #100 from chaoji233/feature/chmlfrp-auth" + }, + { + "commitId": "798b57d659b02a8443c23927676c300e255c33ad", + "commitTime": "2026-04-01 03:55:57 +0800", + "commitAuthor": "chaoji233", + "commitMsg": "feat(daemon & webpanel): 重构 ChmlFrp 模块以支持新版 OAuth 设备码授权" + }, { "commitId": "d1fabaf6232f0d6984b6ffba22105ea8bc06b913", "commitTime": "2026-03-29 17:57:53 +0800", @@ -323,60 +377,6 @@ "commitTime": "2026-03-15 18:06:09 +0800", "commitAuthor": "luluxiaoyu", "commitMsg": "fix(webpanel): 修复实例设置-更多功能内容无法正常重载的问题" - }, - { - "commitId": "d43e6df5b34df0e96c2eb99dc290b76cb62f9e57", - "commitTime": "2026-03-15 17:56:36 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "feat(webpanel): 支持批量启动/停止/重启/删除服务端实例 #52" - }, - { - "commitId": "f99fe398fdeb72ad223f3f4855e9540c648ac854", - "commitTime": "2026-03-15 17:43:55 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "fix(webpanel): 修复全局定时任务页面动画闪烁的问题" - }, - { - "commitId": "f77344cd225ae6e4b13c9e021dd2414d4be10ed7", - "commitTime": "2026-03-15 17:22:49 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "feat(webpanel): chmlfrp配置文件自动转换为toml格式" - }, - { - "commitId": "358b61c1bd1d129dbfea8873af884b965c70b154", - "commitTime": "2026-03-15 17:14:57 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "fix(webpanel): 修正SakuraFrp添加隧道中远程端口描述" - }, - { - "commitId": "0fa9507184a2effd78ae3e0061ef5aef23c91768", - "commitTime": "2026-03-15 17:11:51 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "feat(webpanel & daemon): 隧道服务新增ChmlFrp支持 #73" - }, - { - "commitId": "d9514c3a3b154d47ff5f59551b5f11354370ae8b", - "commitTime": "2026-03-15 16:35:52 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "feat(webpanel): 隧道服务链接失败时自动清理登录记录" - }, - { - "commitId": "cf4f325a8deb095df13916d82ce01d9d72bcbc74", - "commitTime": "2026-03-15 16:30:38 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "feat(webpanel & daemon): 隧道服务新增SakuraFrp支持" - }, - { - "commitId": "355b6e2a1d07fae68007ba5143eb956b79d2b4de", - "commitTime": "2026-03-15 15:13:41 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "feat(webpanel): NeoForge/Forge纯模组服务端下载时支持选择具体子版本 #85" - }, - { - "commitId": "0ef5d633d9fb6ec765eb30cec9ebe00c00fd74cb", - "commitTime": "2026-03-15 14:25:33 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "fix(webpanel): 修复更新实例进度的弹窗未正常显示的问题" } ] } \ No newline at end of file diff --git a/MSLX.Daemon/Frontend/index.html b/MSLX.Daemon/Frontend/index.html index f18faed..4cace27 100644 --- a/MSLX.Daemon/Frontend/index.html +++ b/MSLX.Daemon/Frontend/index.html @@ -5,16 +5,16 @@ MSLX Web Panel - + - + - +
diff --git a/MSLX.Daemon/MSLX.Daemon.csproj b/MSLX.Daemon/MSLX.Daemon.csproj index 3d3d325..542af7e 100644 --- a/MSLX.Daemon/MSLX.Daemon.csproj +++ b/MSLX.Daemon/MSLX.Daemon.csproj @@ -6,9 +6,9 @@ enable true icon.ico - 1.3.4-release - 1.3.4 - 1.3.4 + 1.3.5-release + 1.3.5 + 1.3.5 Copyright © 2021 - 2026 MSLTeam MSLX-Daemon MSLX.Daemon diff --git a/MSLX.WebPanel/package.json b/MSLX.WebPanel/package.json index 034b985..03b72c2 100644 --- a/MSLX.WebPanel/package.json +++ b/MSLX.WebPanel/package.json @@ -1,6 +1,6 @@ { "name": "mslx-webpanel", - "version": "1.3.4", + "version": "1.3.5", "scripts": { "dev": "vite --mode development", "dev:linux": "vite --mode development", From c39d5634dd0edf3212dad6a15b9e3f499e7be987 Mon Sep 17 00:00:00 2001 From: luluxiaoyu Date: Sun, 5 Apr 2026 17:26:28 +0800 Subject: [PATCH 2/2] =?UTF-8?q?bumpver(webpanel=20&=20daemon):=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=9E=84=E5=BB=BA=E5=89=8D=E7=AB=AF=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1=20&=20=E6=9B=B4=E6=96=B0=E5=88=B0v1.3.5.1?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MSLX.Daemon/Controllers/AppInfoController.cs | 2 +- ....Cdym3WOG.js => mslx-app-main.mQdZM5Pc.js} | 2 +- ...try.rmwTM72S.js => mslx-entry.DOv2xkjK.js} | 2 +- MSLX.Daemon/Frontend/build.json | 68 +++++++++---------- MSLX.Daemon/Frontend/index.html | 4 +- MSLX.Daemon/MSLX.Daemon.csproj | 6 +- MSLX.WebPanel/package.json | 2 +- 7 files changed, 43 insertions(+), 43 deletions(-) rename MSLX.Daemon/Frontend/assets/js/{mslx-app-main.Cdym3WOG.js => mslx-app-main.mQdZM5Pc.js} (93%) rename MSLX.Daemon/Frontend/assets/js/{mslx-entry.rmwTM72S.js => mslx-entry.DOv2xkjK.js} (93%) diff --git a/MSLX.Daemon/Controllers/AppInfoController.cs b/MSLX.Daemon/Controllers/AppInfoController.cs index 77ebb32..2a73507 100644 --- a/MSLX.Daemon/Controllers/AppInfoController.cs +++ b/MSLX.Daemon/Controllers/AppInfoController.cs @@ -105,7 +105,7 @@ public IActionResult GetStatus() ["targetFrontendVersion"] = new JObject { ["desktop"] = "1.0.0", - ["panel"] = "1.3.5" + ["panel"] = "1.3.5.1" }, ["systemInfo"] = systemInfo }; diff --git a/MSLX.Daemon/Frontend/assets/js/mslx-app-main.Cdym3WOG.js b/MSLX.Daemon/Frontend/assets/js/mslx-app-main.mQdZM5Pc.js similarity index 93% rename from MSLX.Daemon/Frontend/assets/js/mslx-app-main.Cdym3WOG.js rename to MSLX.Daemon/Frontend/assets/js/mslx-app-main.mQdZM5Pc.js index 20fed9f..232b5e0 100644 --- a/MSLX.Daemon/Frontend/assets/js/mslx-app-main.Cdym3WOG.js +++ b/MSLX.Daemon/Frontend/assets/js/mslx-app-main.mQdZM5Pc.js @@ -10,7 +10,7 @@ var Ws=Object.defineProperty;var Gs=(a,s,r)=>s in a?Ws(a,s,{enumerable:!0,config --td-brand-color-8: ${s["--td-brand-color-8"]}; --td-brand-color-9: ${s["--td-brand-color-9"]}; --td-brand-color-10: ${s["--td-brand-color-10"]}; - }`,document.head.appendChild(c)}const kr="conic-gradient(from 90deg at 50% 50%, #FF0000 -19.41deg, #FF0000 18.76deg, #FF8A00 59.32deg, #FFE600 99.87deg, #14FF00 141.65deg, #00A3FF 177.72deg, #0500FF 220.23deg, #AD00FF 260.13deg, #FF00C7 300.69deg, #FF0000 340.59deg, #FF0000 378.76deg)",$r=de({__name:"index",props:{value:{type:String}},setup(a){const s=ut(),r=a,d=te(()=>{const{value:i}=r,{colorList:c}=s;return{background:i!=="dynamic"?yr(i,c)["--td-brand-color"]:kr}});return(i,c)=>(l(),x("div",{style:Oe(d.value),class:"color-container"},null,4))}}),me=(a,s)=>{const r=a.__vccOpts||a;for(const[d,i]of s)r[d]=i;return r},Sa=me($r,[["__scopeId","data-v-f4b82387"]]),ia={showFooter:!0,isSidebarCompact:!1,showBreadcrumb:!1,mode:"auto",layout:"side",splitMenu:!1,isFooterAside:!1,isSidebarFixed:!0,isHeaderFixed:!0,showHeader:!0,backgroundTheme:"blueGrey",brandTheme:"default",enableCustomTheme:!1},zr={class:"p-6 sm:p-8 space-y-10 pb-24"},Cr={class:"flex flex-col items-center justify-center gap-2"},Ar={class:"text-[13px] font-medium"},Sr={class:"flex items-center justify-between p-4 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-[var(--td-component-border)] transition-colors hover:border-zinc-300 dark:hover:border-zinc-600"},Ir={class:"flex flex-col items-center justify-center gap-2"},Vr={class:"text-[13px] font-medium"},Ur=de({__name:"setting",setup(a){const s=ut(),r=y(window.innerWidth),d=te(()=>r.value<480),i=te(()=>d.value?"85%":"408px"),c=()=>{r.value=window.innerWidth},f=[{value:"side",text:"侧边栏",icon:"view-column"},{value:"top",text:"顶栏导航",icon:"view-agenda"}],n=["default","cyan","green","yellow","orange","red","pink","purple","dynamic"],v=[{type:"auto",text:"跟随系统",icon:"desktop"},{type:"light",text:"明亮模式",icon:"sunny"},{type:"dark",text:"暗黑模式",icon:"moon"}],u=y({...(()=>{const g={...ia};for(const B in g)Object.prototype.hasOwnProperty.call(g,B)&&(g[B]=s[B]);return g})()});d.value&&u.value.layout==="side"&&(u.value.layout="top");const R=y(!1),b=te({get:()=>s.showSettingPanel,set:g=>s.updateConfig({showSettingPanel:g})}),A=g=>{const B=Wo.getPaletteByGradation({colors:[g],step:10})[0],{mode:C}=s,T=_r(g,B,C);s.addColor({[g]:T}),s.updateConfig({...u.value,brandTheme:g}),wr(g,T,C)};ze(()=>{const g=document.querySelector(".dynamic-color-btn");g&&g.addEventListener("click",()=>{R.value=!0}),window.addEventListener("resize",c)}),Wa(()=>{window.removeEventListener("resize",c)});const p=(g,B)=>{!g&&B.trigger==="document"&&(R.value=g)},k=()=>{s.updateConfig({showSettingPanel:!1})};return Js(()=>{s.updateConfig({mode:u.value.mode,layout:u.value.layout,brandTheme:u.value.brandTheme,enableCustomTheme:u.value.enableCustomTheme})}),(g,B)=>{const C=h("t-icon"),T=h("t-radio-button"),U=h("t-radio-group"),D=h("t-switch"),N=h("t-color-picker-panel"),P=h("t-popup"),j=h("t-form"),O=h("t-drawer");return l(),W(O,{visible:b.value,"onUpdate:visible":B[4]||(B[4]=$=>b.value=$),size:i.value,footer:!1,header:"面板样式","close-btn":!0,class:"setting-drawer-container",onCloseBtnClick:k},{default:o(()=>[e("div",zr,[t(j,{ref:"form",data:u.value,"label-align":"left",class:"space-y-10"},{default:o(()=>[e("section",null,[B[5]||(B[5]=e("div",{class:"setting-title"},"主题模式",-1)),t(U,{modelValue:u.value.mode,"onUpdate:modelValue":B[0]||(B[0]=$=>u.value.mode=$),class:"custom-radio-group"},{default:o(()=>[(l(),x(re,null,xe(v,$=>t(T,{key:$.type,value:$.type,class:"icon-card-radio"},{default:o(()=>[e("div",Cr,[t(C,{name:$.icon,class:"text-[28px] transition-transform duration-300 group-hover:scale-110"},null,8,["name"]),e("span",Ar,S($.text),1)])]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),e("section",null,[B[7]||(B[7]=e("div",{class:"setting-title"},"个性化",-1)),e("div",Sr,[B[6]||(B[6]=e("div",{class:"flex flex-col"},[e("span",{class:"text-[14px] font-bold text-[var(--td-text-color-primary)]"},"开启背景美化"),e("span",{class:"text-[11px] text-zinc-400 mt-0.5"},"启用毛玻璃卡片与自定义壁纸")],-1)),t(D,{modelValue:u.value.enableCustomTheme,"onUpdate:modelValue":B[1]||(B[1]=$=>u.value.enableCustomTheme=$)},null,8,["modelValue"])])]),e("section",null,[B[8]||(B[8]=e("div",{class:"setting-title"},"主题色",-1)),t(U,{modelValue:u.value.brandTheme,"onUpdate:modelValue":B[2]||(B[2]=$=>u.value.brandTheme=$),class:"color-radio-group flex-wrap"},{default:o(()=>[(l(!0),x(re,null,xe(n.slice(0,-1),$=>(l(),W(T,{key:$,value:$,class:"color-dot-wrapper"},{default:o(()=>[t(Sa,{value:$},null,8,["value"])]),_:2},1032,["value"]))),128)),t(P,{"destroy-on-close":"",placement:"bottom-right",trigger:"click",visible:R.value,"overlay-style":{padding:0},onVisibleChange:p},{content:o(()=>[t(N,{class:"custom-color-picker","on-change":A,"color-modes":["monochrome"],format:"HEX","swatch-colors":[]})]),default:o(()=>[t(T,{value:n[n.length-1],class:"color-dot-wrapper dynamic-color-btn"},{default:o(()=>[t(Sa,{value:n[n.length-1]},null,8,["value"])]),_:1},8,["value"])]),_:1},8,["visible"])]),_:1},8,["modelValue"])]),e("section",null,[B[9]||(B[9]=e("div",{class:"setting-title"},"导航布局",-1)),t(U,{modelValue:u.value.layout,"onUpdate:modelValue":B[3]||(B[3]=$=>u.value.layout=$),class:"custom-radio-group"},{default:o(()=>[(l(),x(re,null,xe(f,$=>t(T,{key:$.value,value:$.value,class:"icon-card-radio"},{default:o(()=>[e("div",Ir,[t(C,{name:$.icon,class:"text-[28px] transition-transform duration-300 group-hover:scale-110"},null,8,["name"]),e("span",Vr,S($.text),1)])]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])])]),_:1},8,["data"])])]),_:1},8,["visible","size"])}}}),da=me(Ur,[["__scopeId","data-v-8a882e36"]]),Je="mslx-webpanel",Dt="mslx-web-token",Ft="mslx-base-url",Mr={class:"menu-text"},Lr={class:"menu-text"},Br=de({name:"MenuContent",__name:"MenuContent",props:{navData:{type:Array,default:()=>[]},isHorizontal:{type:Boolean,default:!1},maxItemCount:{type:Number,default:3}},setup(a){const s=a,r=te(()=>$o()),d=te(()=>{const{navData:b}=s;return f(b)}),i=te(()=>s.isHorizontal?d.value.slice(0,s.maxItemCount):d.value),c=te(()=>s.isHorizontal?d.value.slice(s.maxItemCount):[]),f=(b,A)=>b?(b.sort((p,k)=>(p.meta?.orderNo||0)-(k.meta?.orderNo||0)),b.map(p=>{const k=A&&!p.path.includes(A)?`${A}/${p.path}`:p.path;return{path:k,title:p.meta?.title,icon:p.meta?.icon||"",children:f(p.children,k),meta:p.meta,redirect:p.redirect}}).filter(p=>p.meta&&p.meta.hidden!==!0)):[],n=b=>{const{frameSrc:A,frameBlank:p}=b.meta;return A&&p?A.match(/(http|https):\/\/([\w.]+\/?)\S*/):null},v=b=>r.value.startsWith(b.path)?r.value:b.meta?.single?b.redirect:b.path,I=b=>b.icon&&typeof b.icon=="string",u=b=>us(b.icon)&&typeof b.icon.render=="function"?{can:!0,render:b.icon.render}:{can:!1,render:null},R=b=>{window.open(b)};return(b,A)=>{const p=h("t-icon"),k=h("t-menu-item"),g=h("menu-content",!0),B=h("t-submenu");return l(),x("div",{id:"menu-wrapper",class:ue(["modern-menu-wrapper",{"is-horizontal":a.isHorizontal}])},[(l(!0),x(re,null,xe(i.value,C=>(l(),x(re,{key:C.path},[!C.children||!C.children.length||C.meta?.single?(l(),x(re,{key:0},[n(C)?(l(),W(k,{key:0,name:C.path,value:v(C),class:"modern-menu-item",onClick:T=>R(n(C)[0])},{icon:o(()=>[I(C)?(l(),W(p,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),W(it(u(C).render),{key:1,class:"t-icon"})):K("",!0)]),default:o(()=>[e("span",Mr,S(C.title),1)]),_:2},1032,["name","value","onClick"])):(l(),W(k,{key:1,name:C.path,value:v(C),to:C.path,class:"modern-menu-item"},{icon:o(()=>[I(C)?(l(),W(p,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),W(it(u(C).render),{key:1,class:"t-icon"})):K("",!0)]),default:o(()=>[e("span",Lr,S(C.title),1)]),_:2},1032,["name","value","to"]))],64)):(l(),W(B,{key:1,name:C.path,value:C.path,title:C.title,class:"modern-submenu"},{icon:o(()=>[I(C)?(l(),W(p,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),W(it(u(C).render),{key:1,class:"t-icon"})):K("",!0)]),default:o(()=>[C.children?(l(),W(g,{key:0,"nav-data":C.children,"is-horizontal":!1},null,8,["nav-data"])):K("",!0)]),_:2},1032,["name","value","title"]))],64))),128)),a.isHorizontal&&c.value.length>0?(l(),W(B,{key:0,name:"more-menu",title:"更多",class:"modern-submenu"},{icon:o(()=>[t(p,{name:"ellipsis"})]),default:o(()=>[t(g,{"nav-data":c.value,"is-horizontal":!1},null,8,["nav-data"])]),_:1})):K("",!0)],2)}}}),Go=me(Br,[["__scopeId","data-v-f46b0d89"]]),Vo="/assets/png/mslx-logo.BqgIBdpC.png",Tr=["src"],Rr={key:1,class:"flex lg:hidden ml-1 items-center"},jr={key:2,class:"flex lg:hidden ml-1 items-center"},Pr={class:"hidden lg:flex flex-1 items-center"},Er={class:"flex items-center gap-1 sm:gap-2"},Dr={class:"hidden lg:flex items-center gap-1 sm:gap-2"},Fr=["src"],Or={class:"flex items-center text-sm font-bold text-zinc-700 dark:text-zinc-200 ml-1 truncate max-w-[100px]"},Nr={class:"flex flex-col w-[240px] bg-white dark:bg-zinc-800 rounded-xl shadow-xl border border-zinc-100 dark:border-zinc-700/60 overflow-hidden mt-1"},Kr={class:"px-4 py-4 flex items-center gap-3 border-b border-zinc-100 dark:border-zinc-700/60 bg-zinc-50/50 dark:bg-zinc-800/50"},qr=["src"],Hr={class:"flex flex-col min-w-0 flex-1"},Wr={class:"text-sm font-bold text-zinc-800 dark:text-zinc-100 truncate"},Gr={class:"text-xs text-zinc-500 dark:text-zinc-400 mt-1 flex items-center gap-1.5"},Jr={class:"p-2 flex flex-col gap-1"},Xr={class:"hidden lg:flex items-center"},Qr={class:"flex lg:hidden items-center"},Yr=de({__name:"Header",props:{theme:{type:String,default:"light"},layout:{type:String,default:"top"},showLogo:{type:Boolean,default:!0},menu:{type:Array,default:()=>[]},isFixed:{type:Boolean,default:!1},isCompact:{type:Boolean,default:!1},maxLevel:{type:Number,default:3}},setup(a){const s=Be(),r=a,d=co(),i=ut(),c=()=>{i.updateConfig({showSettingPanel:!0})},f=te(()=>$o()),n=y(!1),v=te(()=>[`${Je}-header-layout`]),I=te(()=>{const{isFixed:C,layout:T,isCompact:U}=r;return[{[`${Je}-header-menu`]:!C,[`${Je}-header-menu-fixed`]:C,[`${Je}-header-menu-fixed-side`]:T==="side"&&C,[`${Je}-header-menu-fixed-side-compact`]:T==="side"&&C&&U}]}),u=()=>{i.updateConfig({isSidebarCompact:!i.isSidebarCompact})},R=C=>{d.push(C)},b=C=>{C&&(d.push(C),n.value=!1)},A=()=>{d.push({path:"/login",query:{redirect:encodeURIComponent(d.currentRoute.value.fullPath)}})},p=()=>{window.open("https://github.com/MSLTeam/MSLX")},k=()=>{window.open("https://mslx.mslmc.cn")},g=y(!1),B=()=>{g.value||(g.value=!0,setTimeout(()=>{g.value=!1},600))};return(C,T)=>{const U=h("t-icon"),D=h("t-button"),N=h("t-menu"),P=h("t-popup"),j=h("t-tooltip"),O=h("t-dropdown-item"),$=h("t-dropdown-menu"),V=h("t-dropdown"),_=h("t-head-menu");return l(),x("div",{class:ue([v.value,"design-card w-full bg-white dark:bg-zinc-800 transition-all duration-300 relative z-50",{"enable-custom-theme":w(i).enableCustomTheme}])},[t(_,{class:ue([I.value,"header-menu-clear"]),theme:a.theme,"expand-type":"popup",value:f.value},Ga({logo:o(()=>[a.showLogo?(l(),x("span",{key:0,class:"flex items-center cursor-pointer mr-1 lg:mr-6 gap-2.5",onClick:T[0]||(T[0]=z=>R("/dashboard/base"))},[e("img",{class:"w-7 h-7 object-contain shrink-0",src:w(Vo),alt:"logo"},null,8,Tr),T[3]||(T[3]=e("span",{class:"text-[17px] font-bold truncate max-[1012px]:hidden text-[var(--td-text-color-primary)] tracking-tight leading-none mt-0.5"}," MSLX 管理中心 ",-1))])):K("",!0),a.layout=="side"?(l(),x("div",Rr,[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:u},{default:o(()=>[t(U,{class:"text-xl",name:"view-list"})]),_:1})])):K("",!0),a.layout!=="side"?(l(),x("div",jr,[t(P,{modelValue:n.value,"onUpdate:modelValue":T[1]||(T[1]=z=>n.value=z),placement:"bottom","overlay-class-name":"mobile-full-width-popup","overlay-style":{padding:"0",boxShadow:"none"},attach:"body"},{content:o(()=>[t(N,{value:f.value,theme:a.theme,"expand-mutex":"",class:"max-h-[calc(100vh-64px)] overflow-y-auto !bg-white/95 dark:!bg-zinc-800/95 backdrop-blur-xl !border-none !border-t !border-zinc-200/50 dark:!border-zinc-700/50 shadow-2xl",onChange:b},{default:o(()=>[t(Go,{"nav-data":a.menu,"is-horizontal":!1},null,8,["nav-data"])]),_:1},8,["value","theme"])]),default:o(()=>[t(D,{class:"header-btn",theme:"default",shape:"square",variant:"text"},{default:o(()=>[t(U,{name:"app",class:"text-[24px]"})]),_:1})]),_:1},8,["modelValue"])])):K("",!0)]),operations:o(()=>[e("div",Er,[e("div",Dr,[t(j,{placement:"bottom",content:"代码仓库"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:p},{default:o(()=>[t(U,{name:"logo-github",class:"text-[20px]"})]),_:1})]),_:1}),t(j,{placement:"bottom",content:"帮助文档"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:k},{default:o(()=>[t(U,{name:"help-circle",class:"text-[20px]"})]),_:1})]),_:1})]),t(P,{trigger:"click",placement:"bottom-right","overlay-inner-style":{padding:"0",background:"transparent",boxShadow:"none"},attach:"body"},{content:o(()=>[e("div",Nr,[e("div",Kr,[e("div",{class:"relative shrink-0 group cursor-pointer",onClick:B},[e("div",{class:ue(["absolute inset-0 rounded-full z-0 pointer-events-none transition-opacity",g.value?"animate-magic-burst":"opacity-0"]),style:{background:"radial-gradient(circle, var(--color-primary-light) 0%, transparent 70%)"}},null,2),e("img",{src:w(s).userInfo.avatar,class:ue(["w-10 h-10 rounded-full object-cover ring-2 ring-[var(--color-primary)]/30 shadow-sm transition-all duration-300 relative z-10",[g.value?"animate-jelly-pop":"group-hover:rotate-6 group-hover:scale-105"]]),alt:"avatar"},null,10,qr)]),e("div",Hr,[e("span",Wr,S(w(s).userInfo.name||w(s).userInfo.username||"未知用户"),1),e("span",Gr,[e("span",{class:ue(["inline-block w-1.5 h-1.5 rounded-full",w(s).isAdmin?"bg-emerald-500":"bg-blue-500"])},null,2),m(" "+S(w(s).isAdmin?"管理员":"普通用户"),1)])])]),e("div",Jr,[e("div",{class:"flex items-center px-3 py-2 text-sm text-zinc-600 dark:text-zinc-300 hover:bg-zinc-100 dark:hover:bg-zinc-700/50 rounded-lg cursor-pointer transition-colors",onClick:T[2]||(T[2]=z=>R("/settings"))},[t(U,{name:"user-circle",class:"text-lg mr-2 opacity-70"}),T[4]||(T[4]=e("span",{class:"font-medium"},"个人中心",-1))]),e("div",{class:"flex items-center px-3 py-2 text-sm text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-500/10 rounded-lg cursor-pointer transition-colors",onClick:A},[t(U,{name:"poweroff",class:"text-lg mr-2 opacity-70"}),T[5]||(T[5]=e("span",{class:"font-medium"},"退出登录",-1))])])])]),default:o(()=>[t(D,{class:"user-profile-btn",theme:"default",variant:"text"},{icon:o(()=>[e("img",{src:w(s).userInfo.avatar,class:"w-8 h-8 rounded-full object-cover ring-2 ring-zinc-100 dark:ring-zinc-700/80 shadow-sm",alt:"avatar"},null,8,Fr)]),suffix:o(()=>[t(U,{name:"chevron-down",class:"text-zinc-400 text-xs ml-0.5"})]),default:o(()=>[e("div",Or,S(w(s).userInfo.name||w(s).userInfo.username||"用户"),1)]),_:1})]),_:1}),e("div",Xr,[t(j,{placement:"bottom",content:"系统设置"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:c},{default:o(()=>[t(U,{name:"setting",class:"text-[20px]"})]),_:1})]),_:1})]),e("div",Qr,[t(V,{"min-column-width":140,trigger:"click"},{dropdown:o(()=>[t($,null,{default:o(()=>[t(O,{class:"operations-dropdown-item",onClick:p},{default:o(()=>[t(U,{name:"logo-github",class:"text-lg mr-2"}),T[6]||(T[6]=e("span",null,"代码仓库",-1))]),_:1}),t(O,{class:"operations-dropdown-item mt-1",onClick:k},{default:o(()=>[t(U,{name:"help-circle",class:"text-lg mr-2"}),T[7]||(T[7]=e("span",null,"帮助文档",-1))]),_:1}),t(O,{class:"operations-dropdown-item mt-1",onClick:c},{default:o(()=>[t(U,{name:"setting",class:"text-lg mr-2"}),T[8]||(T[8]=e("span",null,"系统设置",-1))]),_:1})]),_:1})]),default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn"},{default:o(()=>[t(U,{name:"more",class:"text-[20px]"})]),_:1})]),_:1})])])]),_:2},[a.layout!=="side"?{name:"default",fn:o(()=>[e("div",Pr,[t(Go,{class:"header-menu-reset","nav-data":a.menu,"is-horizontal":!0},null,8,["nav-data"])])]),key:"0"}:void 0]),1032,["class","theme","value"])],2)}}}),Zr=me(Yr,[["__scopeId","data-v-a81dfcc3"]]),Ia=de({__name:"LayoutHeader",setup(a){const s=ro(),r=ut(),{routers:d}=aa(s),i=te(()=>r.layout==="mix"?r.splitMenu?d.value.map(c=>({...c,children:[]})):[]:d.value);return(c,f)=>w(r).showHeader?(l(),W(Zr,{key:0,"show-logo":w(r).showHeaderLogo,theme:w(r).displayMode,layout:w(r).layout,"is-fixed":w(r).isHeaderFixed,menu:i.value,"is-compact":w(r).isSidebarCompact},null,8,["show-logo","theme","layout","is-fixed","menu","is-compact"])):K("",!0)}}),en={};function tn(a,s){const r=h("router-view");return l(),W(r,null,{default:o(({Component:d})=>[t(Rt,{name:"fade",mode:"out-in"},{default:o(()=>[(l(),W(Xs,null,[(l(),W(it(d)))],1024))]),_:2},1024)]),_:1})}const on=me(en,[["render",tn],["__scopeId","data-v-323e6e6f"]]),an=de({__name:"Breadcrumb",setup(a){const s=te(()=>{const r=Ye(),d=r.path.split("/");return d.shift(),d.reduce((c,f,n)=>(r.matched[n]?.meta?.hiddenBreadcrumb||Object.values(r.params).includes(f)||c.push({path:f,to:c[n-1]?`/${c[n-1].path}/${f}`:`/${f}`,title:r.matched[n]?.meta?.title??f}),c),[])});return(r,d)=>{const i=h("t-breadcrumbItem"),c=h("t-breadcrumb");return l(),W(c,{"max-item-width":"150",class:"tdesign-breadcrumb"},{default:o(()=>[(l(!0),x(re,null,xe(s.value,f=>(l(),W(i,{key:f.to,to:f.to},{default:o(()=>[m(S(f.title),1)]),_:2},1032,["to"]))),128))]),_:1})}}}),sn=me(an,[["__scopeId","data-v-b09aa6cf"]]),ln={class:"w-full flex justify-center items-center"},rn={class:"glass-capsule design-card group flex items-center gap-3 px-6 py-2 rounded-full bg-[var(--td-bg-color-container)]/80 backdrop-blur-[10px] border border-zinc-200/80 dark:border-zinc-700/60 shadow-sm transition-all duration-300 font-mono text-[13px] leading-none text-[var(--td-text-color-secondary)] cursor-default"},nn={class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"},dn=de({__name:"Footer",setup(a){return(s,r)=>(l(),x("footer",ln,[e("div",rn,[r[0]||(r[0]=e("span",{class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"}," MSLX-WEBPANEL ",-1)),r[1]||(r[1]=e("span",{class:"font-light text-zinc-500 dark:text-zinc-600"},"/",-1)),r[2]||(r[2]=e("span",{class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"}," MSLTEAM ",-1)),r[3]||(r[3]=e("span",{class:"font-light text-zinc-500 dark:text-zinc-600"},"/",-1)),e("span",nn," © 2021-"+S(new Date().getFullYear()),1)])]))}}),cn=me(dn,[["__scopeId","data-v-f1245484"]]),Va=de({__name:"LayoutContent",setup(a){const s=ut();return(r,d)=>{const i=h("t-content"),c=h("t-footer"),f=h("t-layout");return l(),W(f,{class:ue(`${w(Je)}-layout`)},{default:o(()=>[t(i,{class:ue(`${w(Je)}-content-layout`)},{default:o(()=>[w(s).showBreadcrumb?(l(),W(sn,{key:0})):K("",!0),t(on)]),_:1},8,["class"]),w(s).showFooter?(l(),W(c,{key:0,class:ue(`${w(Je)}-footer-layout`)},{default:o(()=>[t(cn)]),_:1},8,["class"])):K("",!0)]),_:1},8,["class"])}}}),un="mslx-webpanel",mn="1.3.5",pn={dev:"vite --mode development","dev:linux":"vite --mode development","build:test":"vite build --mode test",build:"vue-tsc --noEmit && vite build --mode release && node generate-build-info.js",preview:"vite preview",lint:"eslint --ext .vue,.js,.jsx,.ts,.tsx ./ --max-warnings 0","lint:fix":"eslint --ext .vue,.js,jsx,.ts,.tsx ./ --max-warnings 0 --fix",stylelint:"stylelint src/**/*.{html,vue,sass,less}","stylelint:fix":"stylelint --fix src/**/*.{html,vue,vss,sass,less}",prepare:`node -e "if(require('fs').existsSync('.git')){process.exit(1)}" || is-ci || husky install`,"site:preview":"npm run build && cp -r dist _site",test:'echo "no test specified,work in process"',"test:coverage":'echo "no test:coverage specified,work in process"'},vn={"@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-json":"^6.0.2","@codemirror/lang-yaml":"^6.1.2","@codemirror/language":"^6.12.1","@codemirror/legacy-modes":"^6.5.2","@codemirror/state":"^6.5.2","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.2","@eslint/js":"^9.38.0","@microsoft/signalr":"^10.0.0","@tailwindcss/vite":"^4.2.1","@vueuse/core":"^14.2.1","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ansi-colors":"^4.1.3",axios:"^1.13.5","cron-parser":"^5.4.0",dayjs:"^1.11.11",echarts:"^6.0.0",lodash:"4.17.23","md-editor-v3":"^6.1.0",nprogress:"^0.2.0",pinia:"^2.1.7","pinia-plugin-persistedstate":"^3.2.1","qrcode.vue":"^3.4.1",qs:"6.14.2",tailwindcss:"^4.2.1","tdesign-icons-vue-next":"^0.4.1","tdesign-vue-next":"^1.18.2","tvision-color":"^1.6.0","typescript-eslint":"^8.46.2",vue:"^3.5.29","vue-clipboard3":"^2.0.0","vue-codemirror":"^6.1.1","vue-router":"^4.4.0"},fn={"@commitlint/cli":"^19.3.0","@commitlint/config-conventional":"^19.2.2","@types/lodash":"^4.17.23","@types/qs":"^6.9.15","@types/ws":"^8.5.10","@typescript-eslint/eslint-plugin":"^8.46.2","@typescript-eslint/parser":"^8.46.2","@vitejs/plugin-vue":"^6.0.3","@vitejs/plugin-vue-jsx":"^5.1.3","@vue/compiler-sfc":"^3.4.31","@vue/eslint-config-typescript":"^14.6.0",browserslist:"^4.28.1",commitizen:"^4.3.0","cz-conventional-changelog":"^3.3.0",eslint:"^9.38.0","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.1.3","eslint-plugin-vue":"^10.7.0","eslint-plugin-vue-scoped-css":"^2.12.0",husky:"^9.1.1",less:"^4.2.0",lightningcss:"^1.32.0","lint-staged":"^15.2.7",prettier:"^3.3.3",stylelint:"^16.25.0","stylelint-config-standard":"^40.0.0","stylelint-config-standard-less":"^4.0.1","stylelint-less":"^3.0.0","stylelint-order":"^6.0.4",typescript:"^5.5.3",vite:"^7.3.1","vite-svg-loader":"^5.1.0","vue-tsc":"^2.0.26"},bn={commitizen:{path:"./node_modules/cz-conventional-changelog"}},xn="MSLX Web Panel",to={name:un,version:mn,scripts:pn,dependencies:vn,devDependencies:fn,config:bn,"lint-staged":{"*.{js,jsx,vue,ts,tsx}":["prettier --write","npm run lint:fix","git add ."],"*.{html,vue,vss,sass,less}":["npm run stylelint:fix","git add ."]},description:xn},gn=["src"],hn={key:0,class:"text-[17px] font-bold truncate text-[var(--td-text-color-primary)] tracking-tight transition-opacity duration-300 leading-none mt-0.5"},yn={class:"flex items-center justify-center h-12 text-[11px] font-mono font-medium text-[var(--td-text-color-secondary)] tracking-wider"},_n=991,wn=de({__name:"SideNav",props:{menu:{type:Array,default:()=>[]},showLogo:{type:Boolean,default:!0},isFixed:{type:Boolean,default:!0},layout:{type:String,default:""},headerHeight:{type:String,default:"64px"},theme:{type:String,default:"light"},isCompact:{type:Boolean,default:!1}},setup(a){const s=a,r=te(()=>ut().isSidebarCompact),d=te(()=>$o()),i=te(()=>{const R=$o(),b=R.substring(0,R.lastIndexOf("/")),A=ti();return Jl(A,b===""?[]:[b])}),c=te(()=>{const{isCompact:R}=s;return[`${Je}-sidebar-layout`,{[`${Je}-sidebar-compact`]:R}]}),f=te(()=>{const{showLogo:R,isFixed:b,layout:A}=s;return[`${Je}-side-nav`,{[`${Je}-side-nav-no-logo`]:!R,[`${Je}-side-nav-no-fixed`]:!b,[`${Je}-side-nav-mix-fixed`]:A==="mix"&&b}]}),n=co(),v=ut(),I=()=>{const R=window.innerWidth<=_n;v.updateConfig({isSidebarCompact:R})};ze(()=>{I(),window.onresize=()=>{I()}});const u=()=>{n.push("/dashboard/base")};return(R,b)=>{const A=h("t-menu");return l(),x("div",{class:ue(c.value)},[e("div",{class:ue(["design-card h-full bg-white dark:bg-zinc-800 transition-all duration-300 relative z-40",[w(v).enableCustomTheme?"border-r border-white/20 dark:border-white/5":"border-r border-white/20 dark:border-zinc-700/60 shadow-[1px_0_12px_rgba(0,0,0,0.02)] dark:shadow-none"]])},[t(A,{class:ue([f.value,"sidebar-menu-clear"]),theme:a.theme,value:d.value,collapsed:r.value,"default-expanded":i.value},{logo:o(()=>[a.showLogo?(l(),x("div",{key:0,class:ue(["flex items-center cursor-pointer h-[64px] px-5 overflow-hidden transition-all duration-300 !ml-0 border-b border-transparent",r.value?"justify-center px-0":"justify-start gap-2.5"]),onClick:u},[e("img",{class:"w-7 h-7 object-contain shrink-0",src:w(Vo),alt:"logo"},null,8,gn),r.value?K("",!0):(l(),x("span",hn," MSLX 管理中心 "))],2)):K("",!0)]),operations:o(()=>[e("div",yn,S(r.value?"":"MSLX-WEBPANEL ")+"v"+S(w(to).version),1)]),default:o(()=>[t(Go,{"nav-data":a.menu},null,8,["nav-data"])]),_:1},8,["class","theme","value","collapsed","default-expanded"])],2),e("div",{class:ue(`${w(Je)}-side-nav-placeholder${r.value?"-hidden":""}`)},null,2)],2)}}}),kn=me(wn,[["__scopeId","data-v-9ac7176f"]]),Ua=de({__name:"LayoutSideNav",setup(a){const s=Ye(),r=ro(),d=ut(),{routers:i}=aa(r),c=te(()=>{const{layout:f,splitMenu:n}=d;let v=i.value;return f==="mix"&&n&&v.forEach(I=>{s.path.indexOf(I.path)===0&&(v=I.children.map(u=>({...u,path:`${I.path}/${u.path}`})))}),v});return(f,n)=>w(d).showSidebar?(l(),W(kn,{key:0,"show-logo":w(d).showSidebarLogo,layout:w(d).layout,"is-fixed":w(d).isSidebarFixed,menu:c.value,theme:w(d).displayMode,"is-compact":w(d).isSidebarCompact},null,8,["show-logo","layout","is-fixed","menu","theme","is-compact"])):K("",!0)}}),ca="/assets/jpg/mslx-bg_light_new.CL71WzMj.jpg",ua="/assets/jpg/mslx-bg_night_new.CfCwUDBl.jpg";let kt=new Map;const Ma=a=>[a.method,a.url].join("&");class $n{addPending(s){this.removePending(s);const r=Ma(s);s.cancelToken=s.cancelToken||new bo.CancelToken(d=>{kt.has(r)||kt.set(r,d)})}removeAllPending(){kt.forEach(s=>{s&&$t(s)&&s()}),kt.clear()}removePending(s){const r=Ma(s);if(kt.has(r)){const d=kt.get(r);d&&d(r),kt.delete(r)}}reset(){kt=new Map}}class zn{constructor(s){Eo(this,"instance");Eo(this,"options");this.options=s,this.instance=bo.create(s),this.setupInterceptors()}createAxios(s){this.instance=bo.create(s)}getTransform(){const{transform:s}=this.options;return s}getAxios(){return this.instance}configAxios(s){this.instance&&this.createAxios(s)}setHeader(s){this.instance&&Object.assign(this.instance.defaults.headers,s)}setupInterceptors(){const s=this.getTransform();if(!s)return;const{requestInterceptors:r,requestInterceptorsCatch:d,responseInterceptors:i,responseInterceptorsCatch:c}=s,f=new $n;this.instance.interceptors.request.use(n=>{const{headers:{ignoreRepeatRequest:v}}=n;return(v??this.options.requestOptions?.ignoreRepeatRequest)||f.addPending(n),r&&$t(r)&&(n=r(n,this.options)),n},void 0),d&&$t(d)&&this.instance.interceptors.request.use(void 0,d),this.instance.interceptors.response.use(n=>(n&&f.removePending(n.config),i&&$t(i)&&(n=i(n)),n),void 0),c&&$t(c)&&this.instance.interceptors.response.use(void 0,c)}supportFormData(s){const r=s.headers||this.options.headers;return(r?.["Content-Type"]||r?.["content-type"])!=="application/x-www-form-urlencoded;charset=UTF-8"||!Reflect.has(s,"data")||s.method?.toUpperCase()==="GET"?s:{...s,data:Xl.stringify(s.data,{arrayFormat:"brackets"})}}get(s,r){return this.request({...s,method:"GET"},r)}post(s,r){return this.request({...s,method:"POST"},r)}put(s,r){return this.request({...s,method:"PUT"},r)}delete(s,r){return this.request({...s,method:"DELETE"},r)}patch(s,r){return this.request({...s,method:"PATCH"},r)}async request(s,r){let d=Ql(s);const i=this.getTransform(),{requestOptions:c}=this.options,f={...c,...r},{beforeRequestHook:n,requestCatchHook:v,transformRequestHook:I}=i||{};return n&&$t(n)&&(d=n(d,f)),d.requestOptions=f,d=this.supportFormData(d),new Promise((u,R)=>{this.instance.request(s.retryCount?s:d).then(b=>{if(I&&$t(I)){try{const A=I(b,f);u(A)}catch(A){R(A||new Error("请求错误!"))}return}u(b)}).catch(b=>{if(v&&$t(v)){R(v(b,f));return}bo.isAxiosError(b),R(b)})})}}const Cn="YYYY-MM-DD HH:mm:ss";function La(a,s=!1){if(!a)return s?"":{};const r=new Date().getTime();return s?`?_t=${r}`:{_t:r}}function Jo(a){if(Object.prototype.toString.call(a)==="[object Object]")for(const s in a){if(a[s]&&a[s]._isAMomentObject&&(a[s]=a[s].format(Cn)),Vt(s)){const r=a[s];if(r)try{a[s]=Vt(r)?r.trim():r}catch(d){throw new Error(d)}}us(a[s])&&Jo(a[s])}}function An(a,s){let r="";for(const d in s)r+=`${d}=${encodeURIComponent(s[d])}&`;return r=r.replace(/&$/,""),/\?$/.test(a)?a+r:a.replace(/\/?$/,"?")+r}const Sn={transformRequestHook:(a,s)=>{const{isTransformResponse:r,isReturnNativeResponse:d}=s,i=a.config.method?.toLowerCase();if(a.status===204||i==="put"||i==="patch"||d)return a;if(!r)return a.data;const{data:c}=a;if(!c)throw new Error("请求接口错误");if(c&&typeof c=="object"&&Reflect.has(c,"code")&&Reflect.has(c,"message")){const{code:n,message:v}=c;if(n===200)return c.data;throw new Error(v||`请求接口错误, 错误码: ${n}`)}else return c},beforeRequestHook:(a,s)=>{const{apiUrl:r,isJoinPrefix:d,urlPrefix:i,joinParamsToUrl:c,formatDate:f,joinTime:n=!0}=s;d&&i&&Vt(i)&&(a.url=`${i}${a.url}`),r&&Vt(r)&&!a.baseURL&&(a.url=`${r}${a.url}`);const v=a.params||{},I=a.data||!1;return f&&I&&!Vt(I)&&Jo(I),a.method?.toUpperCase()==="GET"?Vt(v)?(a.url=`${a.url+v}${La(n,!0)}`,a.params=void 0):a.params=Object.assign(v||{},La(n,!1)):Vt(v)?(a.url+=v,a.params=void 0):(f&&Jo(v),Reflect.has(a,"data")&&a.data&&(Object.keys(a.data).length>0||I instanceof FormData)?(a.data=I,a.params=v):(a.data=v,a.params=void 0),c&&(a.url=An(a.url,{...a.params,...a.data}))),a},requestInterceptors:(a,s)=>{const r=localStorage.getItem(Dt),d=localStorage.getItem(Ft);return d&&!/^(https?:)?\/\//.test(a.url||"")&&!a.baseURL&&(a.baseURL=d),r&&a?.requestOptions?.withToken!==!1&&(a.headers.hasAuthorization()||(a.headers["x-user-token"]=r)),a},responseInterceptors:a=>a,responseInterceptorsCatch:a=>{const{response:s}=a;if(s&&s.data){const d=s.data?.message;return d?Promise.reject(new Error(d)):Promise.reject(a)}return Promise.reject(a)}};function In(a){return new zn(Yl({authenticationScheme:"",timeout:10*1e3,withCredentials:!1,headers:{"Content-Type":"application/json;charset=UTF-8"},transform:Sn,requestOptions:{apiUrl:"",isJoinPrefix:!0,urlPrefix:"",isReturnNativeResponse:!1,isTransformResponse:!0,joinParamsToUrl:!1,formatDate:!0,joinTime:!1,ignoreRepeatRequest:!0,withToken:!0,retry:{count:3,delay:1e3}}},{}))}const Z=In();function Vn(){return Z.get({url:"/api/settings"})}function Un(a){return Z.post({url:"/api/settings",data:a})}function Mn(a){return Z.post({url:"/api/settings/webpanel/style",data:a})}function Ln(){return Z.get({url:"/api/settings/webpanel/style"})}async function qt(){return await Z.post({url:"/api/files/upload/init"})}async function Ht(a,s,r,d,i){const c=new FormData;return c.append("index",s.toString()),c.append("file",r),await Z.post({url:`/api/files/upload/chunk/${a}`,data:c,headers:{"Content-Type":"multipart/form-data"},timeout:300*1e3,onUploadProgress:d,signal:i})}async function Wt(a,s){return await Z.post({url:`/api/files/upload/finish/${a}`,data:{totalChunks:s},timeout:120*1e3})}async function Mt(a){return await Z.post({url:`/api/files/upload/delete/${a}`})}async function Bn(a){return await Z.get({url:`/api/files/upload/inspect/${a}`,timeout:60*1e3})}async function Tn(a,s=""){return await Z.get({url:`/api/files/instance/${a}/lists`,params:{path:s}})}async function Uo(a,s){return await Z.get({url:`/api/files/instance/${a}/content`,params:{path:s}})}function ma(a,s,r){return Z.post({url:`/api/files/instance/${a}/content`,data:{path:s,content:r}})}function Rn(a,s,r){return Z.post({url:`/api/files/instance/${a}/directory`,data:{path:s,name:r}})}function jn(a,s,r){return Z.post({url:`/api/files/instance/${a}/rename`,data:{oldPath:s,newPath:r}})}function Pn(a,s){return Z.post({url:`/api/files/instance/${a}/delete`,data:{paths:s}})}function bs(a,s,r,d){return Z.post({url:`/api/files/instance/${a}/upload`,data:{uploadId:s,fileName:r,currentPath:d}})}function xs(a,s){return Z.get({url:`/api/files/instance/${a}/download`,params:{path:s},responseType:"blob"})}function En(a,s,r,d){return Z.post({url:`/api/files/instance/${a}/compress`,data:{sources:s,targetName:r,currentPath:d}})}function Dn(a){return Z.get({url:`/api/files/task/compress/${a}`})}function gs(a,s,r,d="utf-8",i=!0){return Z.post({url:`/api/files/instance/${a}/decompress`,data:{fileName:s,currentPath:r,encoding:d,createSubFolder:i}})}function hs(a){return Z.get({url:`/api/files/task/decompress/${a}`})}async function ys(a,s,r){return await Z.post({url:`/api/files/instance/${a}/chmod`,data:{path:s,mode:r}})}async function Xo(a,s,r){return await Z.get({url:`/api/files/pm/instance/${a}/list?${r?"checkClient=true":""}`,params:{mode:s}})}async function Fn(a,s,r,d){return await Z.post({url:`/api/files/pm/instance/${a}/set`,data:{mode:s,action:r,targets:d}})}function On(a,s,r){return Z.post({url:`/api/files/instance/${a}/copy`,data:{sourcePaths:s,targetPath:r},timeout:120*1e3})}function Nn(a,s,r){return Z.post({url:`/api/files/instance/${a}/move`,data:{sourcePaths:s,targetPath:r},timeout:120*1e3})}function Kn(a,s){return Z.post({url:"/api/static/images/upload",data:{fileKey:a,fileName:s}})}async function _s(a,s,r,d){return await Z.post({url:`/api/files/instance/${a}/download`,data:{path:s,url:r,filename:d}})}function ws(a){return Z.get({url:`/api/files/task/download/${a}`})}const Gt=zt("webpanel",{state:()=>({settings:{webPanelStyleDarkBackgroundOpacity:1,webPanelStyleDarkComponentsOpacity:.4,webpPanelTerminalBlurDark:5,webPanelStyleLightBackground:"",webPanelStyleLightBackgroundOpacity:1,webPanelStyleLightComponentsOpacity:.6,webpPanelTerminalBlurLight:5,webPanelStyleDarkBackground:"",webPanelColorizeLogLevel:1},loading:!1,submitLoading:!1}),actions:{async fetchSettings(){this.loading=!0;try{const a=await Ln();this.settings=a}catch(a){console.error("获取面板样式失败",a)}finally{this.loading=!1}},async saveSettings(){this.submitLoading=!0;try{await Mn(this.settings),M.success("面板样式保存成功")}catch(a){M.error("保存失败: "+a.message)}finally{this.submitLoading=!1}},async uploadImage(a){if(!a)return M.error("文件对象无效"),null;if(!["image/png","image/jpeg","image/webp"].includes(a.type))return M.error("仅支持 PNG, JPG, WEBP 格式的图片"),null;if(!(a.size/1024/1024<10))return M.error("图片大小不能超过 10MB"),null;try{const{uploadId:d}=await qt();return await Ht(d,1,a),await Wt(d,1),await Kn(d,a.name),M.success(`上传成功: ${a.name}`),a.name}catch(d){return M.error("上传失败: "+(d.message||"网络错误")),null}}},persist:{key:"webpanel-style-storage",paths:["settings"]}}),qn=de({__name:"index",setup(a){const s=Ye(),r=ut(),d=Be(),i=Gt(),c=aa(r),f=(u,R)=>u?u.startsWith("http")?u:`${d.baseUrl||window.location.origin}/api/static/images/${u}`:R,n=te(()=>{const u=i.settings,R=f(u.webPanelStyleLightBackground,ca),b=f(u.webPanelStyleDarkBackground,ua);return{"--bg-img-light":`url('${R}')`,"--bg-img-dark":`url('${b}')`,"--bg-op-light":u.webPanelStyleLightBackgroundOpacity,"--bg-op-dark":u.webPanelStyleDarkBackgroundOpacity,"--comp-op-light":u.webPanelStyleLightComponentsOpacity,"--comp-op-dark":u.webPanelStyleDarkComponentsOpacity,"--term-blur-light":`${u.webpPanelTerminalBlurLight??5}px`,"--term-blur-dark":`${u.webpPanelTerminalBlurDark??5}px`}}),v=te(()=>r.enableCustomTheme),I=te(()=>[{"t-layout--with-sider":r.showSidebar}]);return ze(()=>{i.fetchSettings()}),_e(()=>s.path,()=>{document.querySelector(`.${Je}-layout`).scrollTo({top:0,behavior:"smooth"})}),(u,R)=>{const b=h("t-aside"),A=h("t-header"),p=h("t-content"),k=h("t-layout");return l(),x("div",{class:ue(["global-layout-bg",{"custom-theme-enabled":v.value}]),style:Oe(n.value)},[v.value?(l(),W(it("style"),{key:0},{default:o(()=>[...R[0]||(R[0]=[m(" .global-layout-bg.custom-theme-enabled .terminal-wrapper { backdrop-filter: blur(var(--term-blur-light)) !important; -webkit-backdrop-filter: blur(var(--term-blur-light)) !important; } html[theme-mode='dark'] .global-layout-bg.custom-theme-enabled .terminal-wrapper, .global-layout-bg.custom-theme-enabled.dark .terminal-wrapper { backdrop-filter: blur(var(--term-blur-dark)) !important; -webkit-backdrop-filter: blur(var(--term-blur-dark)) !important; } ",-1)])]),_:1})):K("",!0),w(c).layout.value==="side"?(l(),W(k,{key:"side",class:ue(I.value)},{default:o(()=>[t(b,null,{default:o(()=>[t(Ua)]),_:1}),t(k,null,{default:o(()=>[t(A,null,{default:o(()=>[t(Ia)]),_:1}),t(p,null,{default:o(()=>[t(Va)]),_:1})]),_:1})]),_:1},8,["class"])):(l(),W(k,{key:"no-side"},{default:o(()=>[t(A,null,{default:o(()=>[t(Ia)]),_:1}),t(k,{class:ue(I.value)},{default:o(()=>[t(Ua),t(Va)]),_:1},8,["class"])]),_:1})),t(da)],6)}}}),ft=me(qn,[["__scopeId","data-v-b0aaaf37"]]),Hn=[{path:"/dashboard",redirect:"/dashboard/base",component:ft,name:"dashboard",meta:{title:"仪表盘",icon:"dashboard",roleCode:["admin","user"]},children:[{path:"base",name:"DashboardBaseIndex",component:()=>Ge(()=>Promise.resolve().then(()=>hc),void 0),meta:{title:"仪表盘",hidden:!0,roleCode:["admin","user"]}}]},{path:"/instance",component:ft,name:"instance",meta:{title:"服务端管理",icon:"server",roleCode:["admin","user"]},children:[{path:"list",name:"InstanceList",component:()=>Ge(()=>Promise.resolve().then(()=>lu),void 0),meta:{title:"服务端列表",icon:"grid-view",roleCode:["admin","user"]}},{path:"create",name:"InstanceCreate",component:()=>Ge(()=>Promise.resolve().then(()=>K0),void 0),meta:{title:"创建服务端",icon:"add"}},{path:"backup",name:"InstanceBackupManager",component:()=>Ge(()=>Promise.resolve().then(()=>xf),void 0),meta:{title:"备份管理",icon:"backup",roleCode:["admin","user"]}},{path:"cron",name:"InstanceCronTasksManager",component:()=>Ge(()=>Promise.resolve().then(()=>v1),void 0),meta:{title:"定时任务",icon:"time",roleCode:["admin","user"]}}]},{path:"/frp",component:ft,name:"frp",meta:{title:"隧道管理",icon:"rocket",roleCode:["admin","user"]},children:[{path:"list",name:"FrpList",component:()=>Ge(()=>Promise.resolve().then(()=>fb),void 0),meta:{title:"隧道列表",icon:"format-vertical-align-left",roleCode:["admin","user"]}},{path:"create",name:"FrpCreate",component:()=>Ge(()=>Promise.resolve().then(()=>u2),void 0),meta:{title:"创建隧道",icon:"add"}}]}],Wn=Object.freeze(Object.defineProperty({__proto__:null,default:Hn},Symbol.toStringTag,{value:"Module"})),Gn=[{path:"/frp/console",component:ft,meta:{hidden:!0},children:[{path:":frpId",name:"FrpConsole",component:()=>Ge(()=>Promise.resolve().then(()=>iw),void 0),meta:{title:"隧道控制台",hidden:!0,activeMenu:"/frp/list"}}]},{path:"/instance/console",component:ft,meta:{hidden:!0},children:[{path:":serverId",name:"InstanceConsole",component:()=>Ge(()=>Promise.resolve().then(()=>X$),void 0),meta:{title:"服务器控制台",hidden:!0,activeMenu:"/instance/list"}}]},{path:"/instance/files",component:ft,meta:{hidden:!0},children:[{path:":serverFilesId",name:"InstanceFiles",component:()=>Ge(()=>Promise.resolve().then(()=>w6),void 0),meta:{title:"文件管理",hidden:!0,activeMenu:"/instance/list"}}]}],Jn=Object.freeze(Object.defineProperty({__proto__:null,default:Gn},Symbol.toStringTag,{value:"Module"})),Ba=()=>Ge(()=>Promise.resolve().then(()=>C6),void 0),Xn=[{path:"/frame",name:"Frame",component:ft,redirect:"/frame/doc",meta:{icon:"earth",title:"链接",roleCode:["admin","user"]},children:[{path:"MSLX",name:"MSLX",component:Ba,meta:{frameSrc:"https://mslx.mslmc.cn",frameBlank:!0,title:"MSLX 文档",icon:"book",roleCode:["admin","user"]}},{path:"MSLUser",name:"MSLUser",component:Ba,meta:{frameSrc:"https://user.mslmc.net",frameBlank:!0,title:"MSL 用户中心",icon:"user-arrow-left",roleCode:["admin","user"]}}]}],Qn=Object.freeze(Object.defineProperty({__proto__:null,default:Xn},Symbol.toStringTag,{value:"Module"})),Yn=[{path:"/users",component:ft,name:"usersBase",meta:{title:"用户管理",icon:"user"},children:[{path:"",name:"users",component:()=>Ge(()=>Promise.resolve().then(()=>e7),void 0),meta:{title:"用户管理",hidden:!0}}]},{path:"/settings",component:ft,name:"settingsBase",meta:{title:"设置",icon:"setting",roleCode:["admin","user"]},children:[{path:"",name:"settings",component:()=>Ge(()=>Promise.resolve().then(()=>W7),void 0),meta:{title:"设置",hidden:!0,roleCode:["admin","user"]}}]},{path:"/about",component:ft,name:"aboutBase",meta:{title:"关于面板",icon:"info-circle",roleCode:["admin","user"]},children:[{path:"",name:"about",component:()=>Ge(()=>Promise.resolve().then(()=>iA),void 0),meta:{title:"关于面板",hidden:!0,roleCode:["admin","user"]}}]}],Zn=Object.freeze(Object.defineProperty({__proto__:null,default:Yn},Symbol.toStringTag,{value:"Module"})),Ta=Object.assign({"./modules/base.ts":Wn,"./modules/components.ts":Jn,"./modules/iframe.ts":Qn,"./modules/others.ts":Zn}),ks=[];Object.keys(Ta).forEach(a=>{const s=Ta[a].default||{},r=Array.isArray(s)?[...s]:[s];ks.push(...r)});const Qo=[...ks],ei=[{path:"/login",name:"login",component:()=>Ge(()=>Promise.resolve().then(()=>PA),void 0)},{path:"/oauth/callback",name:"oauth",component:()=>Ge(()=>Promise.resolve().then(()=>t9),void 0)},{path:"/",redirect:"/dashboard/base"},{path:"/404",name:"404",component:()=>Ge(()=>Promise.resolve().then(()=>i9),void 0)},{path:"/:w+",name:"404Page",redirect:"/404"}],$s=[...ei,...Qo],ti=()=>{const a=[];return $s.forEach(s=>{s.meta&&s.meta.expanded&&a.push(s.path),s.children&&s.children.length>0&&s.children.filter(r=>r.meta&&r.meta.expanded).forEach(r=>{a.push(s.path),a.push(`${s.path}/${r.path}`)})}),Zl(a)},$o=(a=3)=>{const s=ht.currentRoute.value;return s.path?s.meta?.activeMenu?s.meta.activeMenu:s.path.split("/").filter((r,d)=>d<=a&&d>0).map(r=>`/${r}`).join(""):""};function Ie(a){a.includes("http")?window.open(a):ht.replace(a)}const ht=Qs({history:Ys(),routes:$s,scrollBehavior(){return{el:"#app",top:0,behavior:"smooth"}}});function zs(a,s){const r=[],d=[];return a.forEach(i=>{const c={...i};if((n=>n?Array.isArray(n)?s.some(v=>n.includes(v)):s.includes(n):!1)(c.meta?.roleCode||c.name)){if(c.children&&c.children.length>0){const n=zs(c.children,s);c.children=n.accessedRouters}r.push(c)}else d.push(c)}),{accessedRouters:r,removeRoutes:d}}const ro=zt("permission",{state:()=>({whiteListRouters:["/login","/oauth/callback"],routers:[],removeRoutes:[],dynamicRoutesAdded:[]}),actions:{async initRoutes(a){this.clearRoutes();let s=[],r=[];if(a.includes("all"))s=Qo;else{const i=zs(Qo,a);s=i.accessedRouters,r=i.removeRoutes}const d=[];s.forEach(i=>{ht.addRoute(i),i.name&&d.push(i.name)}),this.routers=s,this.removeRoutes=r,this.dynamicRoutesAdded=d},async clearRoutes(){this.dynamicRoutesAdded.forEach(s=>{ht.hasRoute(s)&&ht.removeRoute(s)}),this.routers=[],this.removeRoutes=[],this.dynamicRoutesAdded=[]}}});function oi(){return ro(Bo)}const ai={...ia,showSettingPanel:!1,colorList:xr,chartColors:fs,systemTheme:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},ut=zt("setting",{state:()=>ai,getters:{showSidebar:a=>a.layout!=="top",showSidebarLogo:a=>a.layout==="side",showHeaderLogo:a=>a.layout!=="side",displayMode:a=>a.mode==="auto"?a.systemTheme:a.mode},actions:{async changeMode(a){let s=a;a==="auto"&&(s=this.systemTheme);const r=s==="dark";document.documentElement.setAttribute("theme-mode",r?"dark":""),this.chartColors=r?gr:fs},setSystemTheme(a){this.systemTheme=a,this.mode==="auto"&&this.changeMode("auto")},changeBrandTheme(a){document.documentElement.setAttribute("theme-color",a)},addColor(a){this.colorList={...this.colorList,...a}},updateConfig(a){for(const s in a)a[s]!==void 0&&(this[s]=a[s]),s==="mode"&&this.changeMode(a[s]),s==="brandTheme"&&this.changeBrandTheme(a[s])}},persist:{paths:[...er(ia),"colorList","chartColors"]}});async function si(){return Z.get({url:"/api/update/info"})}async function li(){return Z.get({url:"/api/update/download"})}async function ri(){return Z.post({url:"/api/update"})}const pa=zt("update",()=>{const a=y(!1),s=y(null),r=y(null),d=y(!1);return{showUpdateModal:a,updateInfo:s,downloadInfo:r,loading:d,checkAppUpdate:async(f=!1)=>{if(Be().isAdmin&&!d.value){d.value=!0;try{const I=await si();if(I&&I.needUpdate){if(!f&&localStorage.getItem("mslx-skip-version")===I.latestVersion){console.log(`[Update] 用户已跳过版本 ${I.latestVersion}`);return}s.value=I;try{const u=await li();r.value=u}catch(u){console.error("获取下载链接失败",u),r.value={web:"",file:""}}a.value=!0,f&&M.success("发现新版本!")}else f&&(I.environment==="fnos"?M.success("请前往飞牛应用商店检查更新!"):M.success("当前已是最新版本"))}catch(v){console.error("[Update] 检查更新失败:",v),f&&M.error("检查更新失败,请检查网络日志")}finally{d.value=!1}}},handleSkipVersion:()=>{s.value?.latestVersion&&(localStorage.setItem("mslx-skip-version",s.value.latestVersion),M.success("已跳过该版本,下次将不再提醒"),a.value=!1)}}});async function Mo(a){return await Z.post({url:"/api/instance/createServer",data:a})}async function Ra(a,s=!1){return await Z.post({url:"/api/instance/delete",data:{id:a,deleteFiles:s}})}async function ni(){return await Z.get({url:"/api/instance/list"})}async function It(a,s){return await Z.post({url:"/api/instance/action",data:{id:a,action:s},timeout:60*1e3})}async function va(a){return await Z.get({url:"/api/instance/info",params:{id:a}})}async function ii(a){return await Z.get({url:`/api/instance/settings/general/${a}`})}async function di(a){return await Z.post({url:`/api/instance/settings/general/${a.id}`,data:a})}async function ci(a){return await Z.get({url:`/api/instance/backups/${a}`})}async function ui(){return await Z.get({url:"/api/instance/backups/all"})}async function Yo(a,s){return await Z.post({url:"/api/instance/backups/delete",data:{id:a,fileName:s}})}function Zo(a,s){const r=Be(),{baseUrl:d,token:i}=r;return`${d||window.location.origin}/api/instance/backups/download?id=${a}&fileName=${encodeURIComponent(s)}&x-user-token=${i}`}async function Cs(a){return await Z.get({url:`/api/instance/players/online/${a}`})}async function mi(a){return await Z.get({url:`/api/instance/players/whitelist/${a}`})}async function pi(a,s){return await Z.post({url:`/api/instance/players/whitelist/add/${a}`,data:{name:s}})}async function vi(a,s){return await Z.post({url:`/api/instance/players/whitelist/remove/${a}`,data:{name:s}})}async function fi(a){return await Z.get({url:`/api/instance/players/ops/${a}`})}async function bi(a,s){return await Z.post({url:`/api/instance/players/ops/add/${a}`,data:{name:s}})}async function xi(a,s){return await Z.post({url:`/api/instance/players/ops/remove/${a}`,data:{name:s}})}async function gi(a){return await Z.get({url:`/api/instance/players/banplayer/${a}`})}async function hi(a,s,r){return await Z.post({url:`/api/instance/players/banplayer/add/${a}`,data:{name:s,reason:r}})}async function yi(a,s){return await Z.post({url:`/api/instance/players/banplayer/remove/${a}`,data:{name:s}})}async function _i(a){return await Z.get({url:`/api/instance/players/banip/${a}`})}async function wi(a,s,r){return await Z.post({url:`/api/instance/players/banip/add/${a}`,data:{ip:s,reason:r}})}async function ki(a,s){return await Z.post({url:`/api/instance/players/banip/remove/${a}`,data:{ip:s}})}async function $i(a){return await Z.get({url:`/api/instance/players/history/${a}`})}async function zi(a){return await Z.get({url:`/api/instance/map/spawn/${a}`})}const At=zt("instanceList",()=>{const a=y([]),s=y(0),r=y(0);async function d(){try{a.value=await ni(),s.value=a.value.length,r.value=a.value.filter(i=>i.status).length}catch(i){M.error("获取实例列表失败:"+i.message)}}return{instanceList:a,refreshInstanceList:d,totalInstanceCount:s,onlineInstanceCount:r}});async function Ci(a,s,r,d="toml"){return await Z.post({url:"/api/frp/add",data:{name:a,config:s,provider:r,format:d}})}async function Ai(a){return await Z.post({url:"/api/frp/delete",data:{id:a}})}function Si(){return Z.get({url:"/api/frp/list"})}function ja(a,s){return Z.post({url:"/api/frp/action",data:{action:a,id:s}})}function Ii(a){return Z.get({url:"/api/frp/info",params:{id:a}})}function Vi(){return Z.get({url:"/api/frp/autostart"})}function Ui(a){return Z.post({url:"/api/frp/autostart",data:{frpIds:a}})}const Lo=zt("tunnels",()=>{const a=y([]);async function s(){try{a.value=await Si()}catch(r){M.error("获取Frp列表失败:"+r.message)}}return{frpList:a,getTunnels:s}}),Pa="remembered_url",Ea="remembered_username",Fo={name:"",username:"",avatar:"",id:"",version:"",systemInfo:{netVersion:"",osType:"",osVersion:"",osArchitecture:"",hostname:"",docker:!1},targetFrontendVersion:{desktop:"",panel:""},roles:[]},Be=zt("user",{state:()=>({token:localStorage.getItem(Dt)||"",baseUrl:localStorage.getItem(Ft)||window.location.origin,userInfo:{...Fo}}),getters:{roles:a=>a.userInfo?.roles||[],isAdmin:a=>a.userInfo?.roles?.includes("all")||!1},actions:{async checkConnection(a){let s=a;a&&!/^(https?:)?\/\//.test(a)&&(s=`http://${a}`);try{return await Z.get({url:"/api/ping",baseURL:s||void 0,timeout:3e3}),!0}catch{return!1}},async login(a){const{url:s,username:r,password:d,checked:i}=a;let c=s;c&&!/^(https?:)?\/\//.test(c)&&(c=`http://${c}`);const f=c||"";try{const n=await Z.post({url:"/api/auth/login",baseURL:f,data:{username:r,password:d}});this.token=n.token,this.baseUrl=f,localStorage.setItem(Dt,n.token),localStorage.setItem(Ft,f),i?(localStorage.setItem(Pa,s||""),localStorage.setItem(Ea,r)):(localStorage.removeItem(Pa),localStorage.removeItem(Ea)),await this.getUserInfo()}catch(n){throw console.error("Login failed:",n),n}},async loginByOAuth(a){try{this.token=a.token,localStorage.setItem(Dt,a.token),this.baseUrl||(this.baseUrl=window.location.origin,localStorage.setItem(Ft,this.baseUrl)),await this.getUserInfo()}catch(s){throw console.error("OAuth登录失败:",s),s}},async getUserInfo(){if(this.token)try{const a=await Z.get({url:"/api/status"});this.userInfo={...Fo,...a,name:a.user||a.username,roles:a.roles||[]},await ro().initRoutes(this.userInfo.roles)}catch(a){console.error("Get user info failed:",a),await this.logout(),Ie("/login")}},async logout(){await ro().clearRoutes(),localStorage.removeItem(Dt),localStorage.removeItem(Ft),this.token="",this.baseUrl="",this.userInfo={...Fo}},async removeToken(){this.token=""}},persist:{afterRestore:a=>{a.store.token&&a.store.getUserInfo()}}});function As(){return Be(Bo)}const Bo=Zs();Bo.use(el());oo.configure({showSpinner:!1});ht.beforeEach(async(a,s,r)=>{window.document.title=a.meta.title?`${a.meta.title} | MSLX 控制台`:"MSLX 控制台",oo.start();const d=As(),i=oi(),{whiteListRouters:c}=i,{token:f}=d;if(f){if(a.path==="/login"||a.path==="/oauth/callback"){r();return}const{roles:n}=d;if(n&&n.length>0)r();else try{await d.getUserInfo();const{roles:v}=d;await i.initRoutes(v),ht.hasRoute(a.name)?r():r("/")}catch(v){M.error(v),r({path:"/login",query:{redirect:encodeURIComponent(a.fullPath)}}),oo.done()}}else c.indexOf(a.path)!==-1?r():r({path:"/login",query:{redirect:encodeURIComponent(a.fullPath)}}),oo.done()});ht.afterEach(a=>{a.path==="/login"&&As().logout(),oo.done()});const Mi={class:"flex justify-between items-start mb-5"},Li={class:"flex flex-col"},Bi={class:"flex items-center gap-2"},Ti={class:"m-0 text-[20px] font-bold text-[var(--td-text-color-primary)] tracking-wide"},Ri={class:"mt-2.5 flex items-center gap-2"},ji={class:"mb-6 min-h-[120px] flex flex-col justify-center"},Pi={key:0,class:"flex flex-col items-center text-center py-2"},Ei={key:1,class:"py-2"},Di={key:2,class:"flex flex-col items-center text-center py-4"},Fi={key:3,class:"flex flex-col items-center text-center py-4"},Oi={key:4,class:"py-2"},Ni={key:0,class:"flex items-center gap-2 text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-950/30 p-3.5 rounded-xl border border-red-100 dark:border-red-900/50"},Ki={class:"text-sm font-medium"},qi={class:"flex justify-between items-end mb-2 text-sm"},Hi={class:"font-medium text-[var(--color-primary)]"},Wi={class:"text-xs font-mono text-[var(--td-text-color-secondary)]"},Gi={key:5,class:"flex flex-col gap-3"},Ji={class:"m-0 mt-1 pl-4 leading-relaxed opacity-90 space-y-1"},Xi={class:"flex flex-col gap-1.5 mt-1"},Qi={class:"bg-zinc-50 dark:bg-zinc-900/50 rounded-xl p-3.5 max-h-[200px] overflow-y-auto border border-zinc-200/60 dark:border-zinc-700/50 shadow-inner custom-scrollbar"},Yi={class:"font-mono text-[13px] leading-relaxed whitespace-pre-wrap text-zinc-700 dark:text-zinc-300"},Zi={key:0,class:"flex flex-col gap-3"},ed={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},td={key:0,class:"mt-2 flex justify-center"},od={key:1,class:"mt-4"},ad={key:2,class:"mt-4"},sd={key:3,class:"flex flex-col gap-3 mt-4"},ld=de({__name:"UpdateModal",props:{visible:{type:Boolean},updateInfo:{},downloadInfo:{}},emits:["close","skip","success"],setup(a,{emit:s}){const r=a,d=s,i=Be(),c=y(!1),f=y(0),n=y("0 KB/s"),v=y("准备中..."),I=y(!1),u=y(!1),R=y(!1),b=y("");let A=null;const p=()=>{u.value=!1,I.value=!1,b.value="",c.value=!1,R.value=!1,f.value=0},k=te(()=>r.updateInfo?.status==="beta"),g=te(()=>{const V=i.userInfo?.systemInfo?.osType||"";return V.includes("macOS")||V.includes("OSX")}),B=te(()=>(i.userInfo?.systemInfo?.osType||"").toLowerCase().includes("linux")),C=V=>{V&&window.open(V,"_blank")},T=()=>{d("close"),Ie("/instance/list")},U=()=>{if(c.value&&!R.value){M.warning("正在更新中,请勿关闭窗口");return}P(),d("close")},D=()=>{d("skip")},N=()=>{window.location.reload()};_e(()=>r.visible,(V,_)=>{V&&!_&&p()});const P=async()=>{if(A){try{await A.stop()}catch(V){console.error("Stop Hub Error:",V)}A=null}},j=async()=>{await P();const{baseUrl:V,token:_}=i,z=new URL("/api/hubs/daemonUpdate",V||window.location.origin);_&&z.searchParams.append("x-user-token",_),A=new Ct().withUrl(z.toString(),{withCredentials:!1}).configureLogging(jt.Warning).withAutomaticReconnect([0,2e3,5e3,1e4]).build(),A.on("UpdateProgress",E=>{f.value=E.progress||0,n.value=E.speed||"",E.stage==="permission_check"?v.value="等待服务端确认权限...":E.stage==="restarting"?(console.log("[Update] 收到重启信号,准备轮询..."),v.value="服务正在重启...",P(),setTimeout(()=>{$()},3e3)):v.value=E.status||"正在处理..."}),A.on("UpdateFailed",E=>{c.value=!1,b.value=E||"更新失败",P()}),A.onclose(E=>{A&&(c.value&&f.value>=100?setTimeout(()=>{$()},6e3):E&&(c.value=!1,b.value=`连接断开: ${E.message}`))});try{await A.start()}catch(E){b.value=`连接更新服务失败: ${E.message}`,c.value=!1}},O=async()=>{if(!c.value){c.value=!0,I.value=!1,u.value=!1,b.value="",f.value=0,R.value=!1,await j();try{await ri()}catch(V){c.value=!1,P();const _=V.message||"";_.includes("Docker")||_.includes("容器")?I.value=!0:_.includes("运行")&&(_.includes("服务器")||_.includes("实例"))?u.value=!0:b.value=_||"请求更新失败,请检查网络或日志"}}},$=async()=>{v.value="服务正在重启,请稍候...";const V=async()=>{try{return await Z.get({url:"/api/ping",timeout:3e3}),!0}catch{return!1}},_=60;let z=0;const E=setInterval(async()=>{z++,await V()?(clearInterval(E),c.value=!1,R.value=!0,v.value="更新成功!",P(),setTimeout(()=>d("success"),1e3)):z>_&&(clearInterval(E),c.value=!1,b.value="服务重启超时,请手动刷新页面检查状态。",P())},2e3)};return He(()=>{P()}),(V,_)=>{const z=h("t-tag"),E=h("t-button"),F=h("t-link"),X=h("t-alert"),q=h("t-progress"),H=h("t-popconfirm"),J=h("t-dialog");return l(),W(J,{visible:r.visible,header:!1,footer:!1,"close-on-overlay-click":!1,"close-btn":!1,width:"500px",class:"update-modal","destroy-on-close":"",attach:"body",onClose:U},{default:o(()=>[e("div",Mi,[e("div",Li,[e("div",Bi,[e("h3",Ti,S(R.value?"更新完成":"发现新版本"),1),k.value?(l(),W(z,{key:0,theme:"warning",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[..._[2]||(_[2]=[m("Beta",-1)])]),_:1})):(l(),W(z,{key:1,theme:"success",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[..._[3]||(_[3]=[m("Release",-1)])]),_:1}))]),e("div",Ri,[t(z,{variant:"outline",size:"small",class:"!font-mono !rounded-md"},{default:o(()=>[m(S(a.updateInfo?.currentVersion),1)]),_:1}),_[4]||(_[4]=e("span",{class:"text-zinc-400 font-mono font-bold"},"→",-1)),t(z,{theme:"primary",variant:"light-outline",size:"small",class:"!font-mono !rounded-md"},{default:o(()=>[m(S(a.updateInfo?.latestVersion),1)]),_:1})])]),c.value?K("",!0):(l(),W(E,{key:0,variant:"text",shape:"circle",class:"hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:U},{icon:o(()=>[t(w(sa))]),_:1}))]),e("div",ji,[R.value?(l(),x("div",Pi,[t(w(Lt),{size:"48px",class:"text-emerald-500 mb-4 drop-shadow-sm"}),_[5]||(_[5]=e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-1"},"MSLX守护进程端已成功更新",-1)),_[6]||(_[6]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"},"请刷新页面以加载最新功能",-1))])):I.value?(l(),x("div",Ei,[t(X,{theme:"warning",title:"检测到 Docker 环境",class:"!rounded-xl"},{message:o(()=>[_[8]||(_[8]=m(" 当前程序运行在 ",-1)),_[9]||(_[9]=e("b",null,"Docker 容器",-1)),_[10]||(_[10]=m(" 内,不支持热更新。",-1)),_[11]||(_[11]=e("br",null,null,-1)),_[12]||(_[12]=m("请使用以下命令或者参照 ",-1)),_[13]||(_[13]=e("b",null,"官方文档",-1)),_[14]||(_[14]=m(" 更新。",-1)),_[15]||(_[15]=e("br",null,null,-1)),t(F,{theme:"primary",href:"https://mslx.mslmc.cn/docs/install/docker/",target:"_blank",class:"mt-1 align-baseline"},{default:o(()=>[..._[7]||(_[7]=[e("b",null,"Docker安装/更新文档",-1)])]),_:1})]),_:1}),_[16]||(_[16]=e("div",{class:"mt-3 bg-[#1e1e1e] text-[#d4d4d4] p-3 rounded-xl font-mono text-[13px] break-all select-all shadow-inner border border-black/20"},[m(" sudo docker compose pull && docker compose up -d "),e("span",{class:"text-zinc-500"},"# 指令仅适用于Compose部署")],-1))])):u.value?(l(),x("div",Di,[t(w(uo),{size:"48px",class:"text-amber-500 mb-3 drop-shadow-sm"}),_[17]||(_[17]=e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-2"},"无法开始更新",-1)),_[18]||(_[18]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0 leading-relaxed"},[m(" 检测到当前有服务器实例正在运行。"),e("br"),m("为了防止数据丢失,请先停止所有实例。 ")],-1))])):v.value.includes("等待服务端确认权限")?(l(),x("div",Fi,[..._[19]||(_[19]=[e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-2"},"请在服务端确认权限",-1),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0 leading-relaxed"},[m(" macOS 系统已弹出提示:"),e("br"),e("strong",{class:"text-zinc-700 dark:text-zinc-300"},"“MSLX-Daemon 想要控制应用程序 终端.app”"),m(),e("br"),m(" 请务必点击 "),e("strong",null,"【好/OK】"),m(" 以继续更新。 ")],-1)])])):c.value||b.value?(l(),x("div",Oi,[b.value?(l(),x("div",Ni,[t(w(Ja),{class:"shrink-0 text-lg"}),e("span",Ki,S(b.value),1)])):(l(),x(re,{key:1},[e("div",qi,[e("span",Hi,S(v.value),1),e("span",Wi,S(n.value),1)]),t(q,{theme:"plump",percentage:f.value,status:f.value>=100?"active":"success"},null,8,["percentage","status"])],64))])):(l(),x("div",Gi,[g.value?(l(),W(X,{key:0,theme:"warning",variant:"outline",class:"!rounded-xl !text-[13px] leading-relaxed"},{message:o(()=>[..._[20]||(_[20]=[e("strong",null,"macOS 用户请注意:",-1),e("br",null,null,-1),m(" 受 Apple 安全机制 (Gatekeeper) 限制,更新重启后应用可能无法自动启动。如遇此情况,请前往「系统设置 > 隐私与安全性」手动允许应用运行。 ",-1)])]),_:1})):K("",!0),B.value?(l(),W(X,{key:1,theme:"info",variant:"outline",class:"!rounded-xl !text-[13px] leading-relaxed"},{message:o(()=>[_[26]||(_[26]=e("strong",null,"Linux 用户提示:",-1)),e("ul",Ji,[e("li",null,[_[22]||(_[22]=m("如使用一键脚本部署,推荐优先参考 ",-1)),t(F,{theme:"primary",href:"https://mslx.mslmc.cn/docs/install/linux/",target:"_blank",class:"align-baseline font-bold"},{default:o(()=>[..._[21]||(_[21]=[m("官方文档",-1)])]),_:1}),_[23]||(_[23]=m("。",-1))]),_[24]||(_[24]=e("li",null,[m("若启用 "),e("strong",null,"Systemd"),m(" 托管,请确保服务名称为 "),e("code",null,"mslx"),m(",否则无法自动重启。")],-1)),_[25]||(_[25]=e("li",null,"如果更新完成后仍然是旧版本,请尝试手动重启服务或手动更新!",-1))])]),_:1})):K("",!0),e("div",Xi,[_[27]||(_[27]=e("div",{class:"text-[13px] font-bold text-[var(--td-text-color-secondary)] tracking-wider"},"更新内容",-1)),e("div",Qi,[e("div",Yi,S(a.updateInfo?.log||"暂无详细日志"),1)])])]))]),!R.value&&!I.value&&!u.value?(l(),x("div",Zi,[t(E,{theme:"primary",block:"",size:"large",loading:c.value,disabled:c.value,class:"!rounded-xl shadow-sm",onClick:O},{icon:o(()=>[t(w(la))]),default:o(()=>[m(" "+S(c.value?"正在更新...":"立即更新"),1)]),_:1},8,["loading","disabled"]),e("div",ed,[t(E,{variant:"outline",block:"",class:"!rounded-xl !m-0",disabled:!a.downloadInfo?.file||c.value,onClick:_[0]||(_[0]=ae=>C(a.downloadInfo?.file||""))},{icon:o(()=>[t(w(ao))]),default:o(()=>[_[28]||(_[28]=m(" 下载新版本 ",-1))]),_:1},8,["disabled"]),t(E,{variant:"dashed",block:"",class:"!rounded-xl !m-0",disabled:!a.downloadInfo?.web||c.value,onClick:_[1]||(_[1]=ae=>C(a.downloadInfo?.web||""))},{icon:o(()=>[t(w(Bt))]),default:o(()=>[_[29]||(_[29]=m(" 前往下载页 ",-1))]),_:1},8,["disabled"])]),c.value?K("",!0):(l(),x("div",td,[t(H,{content:"确定要跳过此版本吗?跳过后将不再提示该版本。后续可在设置中更新。",theme:"warning",onConfirm:D},{default:o(()=>[t(F,{theme:"default",hover:"color",size:"small",class:"!text-zinc-400 hover:!text-zinc-600 dark:hover:!text-zinc-300"},{default:o(()=>[..._[30]||(_[30]=[m(" 跳过此版本 ",-1)])]),_:1})]),_:1})]))])):K("",!0),R.value?(l(),x("div",od,[t(E,{theme:"primary",size:"large",block:"",class:"!rounded-xl shadow-sm",onClick:N},{default:o(()=>[..._[31]||(_[31]=[m("刷新页面",-1)])]),_:1})])):K("",!0),I.value?(l(),x("div",ad,[t(E,{variant:"outline",size:"large",block:"",class:"!rounded-xl",onClick:U},{default:o(()=>[..._[32]||(_[32]=[m("我知道了",-1)])]),_:1})])):K("",!0),u.value?(l(),x("div",sd,[t(E,{theme:"primary",size:"large",block:"",class:"!rounded-xl shadow-sm",onClick:T},{default:o(()=>[..._[33]||(_[33]=[m("前往实例列表管理",-1)])]),_:1}),t(E,{variant:"outline",size:"large",block:"",class:"!rounded-xl !m-0",onClick:U},{default:o(()=>[..._[34]||(_[34]=[m("暂不更新",-1)])]),_:1})])):K("",!0)]),_:1},8,["visible"])}}}),rd=me(ld,[["__scopeId","data-v-d3e49ecc"]]),nd=de({__name:"App",setup(a){const s=ut(),r=pa(),d=te(()=>s.displayMode),i=window.matchMedia("(prefers-color-scheme: dark)"),c=f=>{s.setSystemTheme(f.matches?"dark":"light")};return ze(()=>{r.checkAppUpdate(!1),i.addEventListener("change",c),s.setSystemTheme(i.matches?"dark":"light")}),He(()=>{i.removeEventListener("change",c)}),(f,n)=>{const v=h("router-view");return l(),x(re,null,[t(v,{class:ue([d.value])},null,8,["class"]),t(rd,{visible:w(r).showUpdateModal,"update-info":w(r).updateInfo,"download-info":w(r).downloadInfo,onClose:n[0]||(n[0]=I=>w(r).showUpdateModal=!1),onSkip:w(r).handleSkipVersion},null,8,["visible","update-info","download-info","onSkip"])],64)}}}),id=me(nd,[["__scopeId","data-v-ae5a7772"]]),To=tl(id);To.use(ol);To.use(Bo);To.use(ht);To.mount("#app");console.log(` + }`,document.head.appendChild(c)}const kr="conic-gradient(from 90deg at 50% 50%, #FF0000 -19.41deg, #FF0000 18.76deg, #FF8A00 59.32deg, #FFE600 99.87deg, #14FF00 141.65deg, #00A3FF 177.72deg, #0500FF 220.23deg, #AD00FF 260.13deg, #FF00C7 300.69deg, #FF0000 340.59deg, #FF0000 378.76deg)",$r=de({__name:"index",props:{value:{type:String}},setup(a){const s=ut(),r=a,d=te(()=>{const{value:i}=r,{colorList:c}=s;return{background:i!=="dynamic"?yr(i,c)["--td-brand-color"]:kr}});return(i,c)=>(l(),x("div",{style:Oe(d.value),class:"color-container"},null,4))}}),me=(a,s)=>{const r=a.__vccOpts||a;for(const[d,i]of s)r[d]=i;return r},Sa=me($r,[["__scopeId","data-v-f4b82387"]]),ia={showFooter:!0,isSidebarCompact:!1,showBreadcrumb:!1,mode:"auto",layout:"side",splitMenu:!1,isFooterAside:!1,isSidebarFixed:!0,isHeaderFixed:!0,showHeader:!0,backgroundTheme:"blueGrey",brandTheme:"default",enableCustomTheme:!1},zr={class:"p-6 sm:p-8 space-y-10 pb-24"},Cr={class:"flex flex-col items-center justify-center gap-2"},Ar={class:"text-[13px] font-medium"},Sr={class:"flex items-center justify-between p-4 rounded-xl bg-zinc-50/50 dark:bg-zinc-900/30 border border-[var(--td-component-border)] transition-colors hover:border-zinc-300 dark:hover:border-zinc-600"},Ir={class:"flex flex-col items-center justify-center gap-2"},Vr={class:"text-[13px] font-medium"},Ur=de({__name:"setting",setup(a){const s=ut(),r=y(window.innerWidth),d=te(()=>r.value<480),i=te(()=>d.value?"85%":"408px"),c=()=>{r.value=window.innerWidth},f=[{value:"side",text:"侧边栏",icon:"view-column"},{value:"top",text:"顶栏导航",icon:"view-agenda"}],n=["default","cyan","green","yellow","orange","red","pink","purple","dynamic"],v=[{type:"auto",text:"跟随系统",icon:"desktop"},{type:"light",text:"明亮模式",icon:"sunny"},{type:"dark",text:"暗黑模式",icon:"moon"}],u=y({...(()=>{const g={...ia};for(const B in g)Object.prototype.hasOwnProperty.call(g,B)&&(g[B]=s[B]);return g})()});d.value&&u.value.layout==="side"&&(u.value.layout="top");const R=y(!1),b=te({get:()=>s.showSettingPanel,set:g=>s.updateConfig({showSettingPanel:g})}),A=g=>{const B=Wo.getPaletteByGradation({colors:[g],step:10})[0],{mode:C}=s,T=_r(g,B,C);s.addColor({[g]:T}),s.updateConfig({...u.value,brandTheme:g}),wr(g,T,C)};ze(()=>{const g=document.querySelector(".dynamic-color-btn");g&&g.addEventListener("click",()=>{R.value=!0}),window.addEventListener("resize",c)}),Wa(()=>{window.removeEventListener("resize",c)});const p=(g,B)=>{!g&&B.trigger==="document"&&(R.value=g)},k=()=>{s.updateConfig({showSettingPanel:!1})};return Js(()=>{s.updateConfig({mode:u.value.mode,layout:u.value.layout,brandTheme:u.value.brandTheme,enableCustomTheme:u.value.enableCustomTheme})}),(g,B)=>{const C=h("t-icon"),T=h("t-radio-button"),U=h("t-radio-group"),D=h("t-switch"),N=h("t-color-picker-panel"),P=h("t-popup"),j=h("t-form"),O=h("t-drawer");return l(),W(O,{visible:b.value,"onUpdate:visible":B[4]||(B[4]=$=>b.value=$),size:i.value,footer:!1,header:"面板样式","close-btn":!0,class:"setting-drawer-container",onCloseBtnClick:k},{default:o(()=>[e("div",zr,[t(j,{ref:"form",data:u.value,"label-align":"left",class:"space-y-10"},{default:o(()=>[e("section",null,[B[5]||(B[5]=e("div",{class:"setting-title"},"主题模式",-1)),t(U,{modelValue:u.value.mode,"onUpdate:modelValue":B[0]||(B[0]=$=>u.value.mode=$),class:"custom-radio-group"},{default:o(()=>[(l(),x(re,null,xe(v,$=>t(T,{key:$.type,value:$.type,class:"icon-card-radio"},{default:o(()=>[e("div",Cr,[t(C,{name:$.icon,class:"text-[28px] transition-transform duration-300 group-hover:scale-110"},null,8,["name"]),e("span",Ar,S($.text),1)])]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),e("section",null,[B[7]||(B[7]=e("div",{class:"setting-title"},"个性化",-1)),e("div",Sr,[B[6]||(B[6]=e("div",{class:"flex flex-col"},[e("span",{class:"text-[14px] font-bold text-[var(--td-text-color-primary)]"},"开启背景美化"),e("span",{class:"text-[11px] text-zinc-400 mt-0.5"},"启用毛玻璃卡片与自定义壁纸")],-1)),t(D,{modelValue:u.value.enableCustomTheme,"onUpdate:modelValue":B[1]||(B[1]=$=>u.value.enableCustomTheme=$)},null,8,["modelValue"])])]),e("section",null,[B[8]||(B[8]=e("div",{class:"setting-title"},"主题色",-1)),t(U,{modelValue:u.value.brandTheme,"onUpdate:modelValue":B[2]||(B[2]=$=>u.value.brandTheme=$),class:"color-radio-group flex-wrap"},{default:o(()=>[(l(!0),x(re,null,xe(n.slice(0,-1),$=>(l(),W(T,{key:$,value:$,class:"color-dot-wrapper"},{default:o(()=>[t(Sa,{value:$},null,8,["value"])]),_:2},1032,["value"]))),128)),t(P,{"destroy-on-close":"",placement:"bottom-right",trigger:"click",visible:R.value,"overlay-style":{padding:0},onVisibleChange:p},{content:o(()=>[t(N,{class:"custom-color-picker","on-change":A,"color-modes":["monochrome"],format:"HEX","swatch-colors":[]})]),default:o(()=>[t(T,{value:n[n.length-1],class:"color-dot-wrapper dynamic-color-btn"},{default:o(()=>[t(Sa,{value:n[n.length-1]},null,8,["value"])]),_:1},8,["value"])]),_:1},8,["visible"])]),_:1},8,["modelValue"])]),e("section",null,[B[9]||(B[9]=e("div",{class:"setting-title"},"导航布局",-1)),t(U,{modelValue:u.value.layout,"onUpdate:modelValue":B[3]||(B[3]=$=>u.value.layout=$),class:"custom-radio-group"},{default:o(()=>[(l(),x(re,null,xe(f,$=>t(T,{key:$.value,value:$.value,class:"icon-card-radio"},{default:o(()=>[e("div",Ir,[t(C,{name:$.icon,class:"text-[28px] transition-transform duration-300 group-hover:scale-110"},null,8,["name"]),e("span",Vr,S($.text),1)])]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])])]),_:1},8,["data"])])]),_:1},8,["visible","size"])}}}),da=me(Ur,[["__scopeId","data-v-8a882e36"]]),Je="mslx-webpanel",Dt="mslx-web-token",Ft="mslx-base-url",Mr={class:"menu-text"},Lr={class:"menu-text"},Br=de({name:"MenuContent",__name:"MenuContent",props:{navData:{type:Array,default:()=>[]},isHorizontal:{type:Boolean,default:!1},maxItemCount:{type:Number,default:3}},setup(a){const s=a,r=te(()=>$o()),d=te(()=>{const{navData:b}=s;return f(b)}),i=te(()=>s.isHorizontal?d.value.slice(0,s.maxItemCount):d.value),c=te(()=>s.isHorizontal?d.value.slice(s.maxItemCount):[]),f=(b,A)=>b?(b.sort((p,k)=>(p.meta?.orderNo||0)-(k.meta?.orderNo||0)),b.map(p=>{const k=A&&!p.path.includes(A)?`${A}/${p.path}`:p.path;return{path:k,title:p.meta?.title,icon:p.meta?.icon||"",children:f(p.children,k),meta:p.meta,redirect:p.redirect}}).filter(p=>p.meta&&p.meta.hidden!==!0)):[],n=b=>{const{frameSrc:A,frameBlank:p}=b.meta;return A&&p?A.match(/(http|https):\/\/([\w.]+\/?)\S*/):null},v=b=>r.value.startsWith(b.path)?r.value:b.meta?.single?b.redirect:b.path,I=b=>b.icon&&typeof b.icon=="string",u=b=>us(b.icon)&&typeof b.icon.render=="function"?{can:!0,render:b.icon.render}:{can:!1,render:null},R=b=>{window.open(b)};return(b,A)=>{const p=h("t-icon"),k=h("t-menu-item"),g=h("menu-content",!0),B=h("t-submenu");return l(),x("div",{id:"menu-wrapper",class:ue(["modern-menu-wrapper",{"is-horizontal":a.isHorizontal}])},[(l(!0),x(re,null,xe(i.value,C=>(l(),x(re,{key:C.path},[!C.children||!C.children.length||C.meta?.single?(l(),x(re,{key:0},[n(C)?(l(),W(k,{key:0,name:C.path,value:v(C),class:"modern-menu-item",onClick:T=>R(n(C)[0])},{icon:o(()=>[I(C)?(l(),W(p,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),W(it(u(C).render),{key:1,class:"t-icon"})):K("",!0)]),default:o(()=>[e("span",Mr,S(C.title),1)]),_:2},1032,["name","value","onClick"])):(l(),W(k,{key:1,name:C.path,value:v(C),to:C.path,class:"modern-menu-item"},{icon:o(()=>[I(C)?(l(),W(p,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),W(it(u(C).render),{key:1,class:"t-icon"})):K("",!0)]),default:o(()=>[e("span",Lr,S(C.title),1)]),_:2},1032,["name","value","to"]))],64)):(l(),W(B,{key:1,name:C.path,value:C.path,title:C.title,class:"modern-submenu"},{icon:o(()=>[I(C)?(l(),W(p,{key:0,name:C.icon},null,8,["name"])):u(C).can?(l(),W(it(u(C).render),{key:1,class:"t-icon"})):K("",!0)]),default:o(()=>[C.children?(l(),W(g,{key:0,"nav-data":C.children,"is-horizontal":!1},null,8,["nav-data"])):K("",!0)]),_:2},1032,["name","value","title"]))],64))),128)),a.isHorizontal&&c.value.length>0?(l(),W(B,{key:0,name:"more-menu",title:"更多",class:"modern-submenu"},{icon:o(()=>[t(p,{name:"ellipsis"})]),default:o(()=>[t(g,{"nav-data":c.value,"is-horizontal":!1},null,8,["nav-data"])]),_:1})):K("",!0)],2)}}}),Go=me(Br,[["__scopeId","data-v-f46b0d89"]]),Vo="/assets/png/mslx-logo.BqgIBdpC.png",Tr=["src"],Rr={key:1,class:"flex lg:hidden ml-1 items-center"},jr={key:2,class:"flex lg:hidden ml-1 items-center"},Pr={class:"hidden lg:flex flex-1 items-center"},Er={class:"flex items-center gap-1 sm:gap-2"},Dr={class:"hidden lg:flex items-center gap-1 sm:gap-2"},Fr=["src"],Or={class:"flex items-center text-sm font-bold text-zinc-700 dark:text-zinc-200 ml-1 truncate max-w-[100px]"},Nr={class:"flex flex-col w-[240px] bg-white dark:bg-zinc-800 rounded-xl shadow-xl border border-zinc-100 dark:border-zinc-700/60 overflow-hidden mt-1"},Kr={class:"px-4 py-4 flex items-center gap-3 border-b border-zinc-100 dark:border-zinc-700/60 bg-zinc-50/50 dark:bg-zinc-800/50"},qr=["src"],Hr={class:"flex flex-col min-w-0 flex-1"},Wr={class:"text-sm font-bold text-zinc-800 dark:text-zinc-100 truncate"},Gr={class:"text-xs text-zinc-500 dark:text-zinc-400 mt-1 flex items-center gap-1.5"},Jr={class:"p-2 flex flex-col gap-1"},Xr={class:"hidden lg:flex items-center"},Qr={class:"flex lg:hidden items-center"},Yr=de({__name:"Header",props:{theme:{type:String,default:"light"},layout:{type:String,default:"top"},showLogo:{type:Boolean,default:!0},menu:{type:Array,default:()=>[]},isFixed:{type:Boolean,default:!1},isCompact:{type:Boolean,default:!1},maxLevel:{type:Number,default:3}},setup(a){const s=Be(),r=a,d=co(),i=ut(),c=()=>{i.updateConfig({showSettingPanel:!0})},f=te(()=>$o()),n=y(!1),v=te(()=>[`${Je}-header-layout`]),I=te(()=>{const{isFixed:C,layout:T,isCompact:U}=r;return[{[`${Je}-header-menu`]:!C,[`${Je}-header-menu-fixed`]:C,[`${Je}-header-menu-fixed-side`]:T==="side"&&C,[`${Je}-header-menu-fixed-side-compact`]:T==="side"&&C&&U}]}),u=()=>{i.updateConfig({isSidebarCompact:!i.isSidebarCompact})},R=C=>{d.push(C)},b=C=>{C&&(d.push(C),n.value=!1)},A=()=>{d.push({path:"/login",query:{redirect:encodeURIComponent(d.currentRoute.value.fullPath)}})},p=()=>{window.open("https://github.com/MSLTeam/MSLX")},k=()=>{window.open("https://mslx.mslmc.cn")},g=y(!1),B=()=>{g.value||(g.value=!0,setTimeout(()=>{g.value=!1},600))};return(C,T)=>{const U=h("t-icon"),D=h("t-button"),N=h("t-menu"),P=h("t-popup"),j=h("t-tooltip"),O=h("t-dropdown-item"),$=h("t-dropdown-menu"),V=h("t-dropdown"),_=h("t-head-menu");return l(),x("div",{class:ue([v.value,"design-card w-full bg-white dark:bg-zinc-800 transition-all duration-300 relative z-50",{"enable-custom-theme":w(i).enableCustomTheme}])},[t(_,{class:ue([I.value,"header-menu-clear"]),theme:a.theme,"expand-type":"popup",value:f.value},Ga({logo:o(()=>[a.showLogo?(l(),x("span",{key:0,class:"flex items-center cursor-pointer mr-1 lg:mr-6 gap-2.5",onClick:T[0]||(T[0]=z=>R("/dashboard/base"))},[e("img",{class:"w-7 h-7 object-contain shrink-0",src:w(Vo),alt:"logo"},null,8,Tr),T[3]||(T[3]=e("span",{class:"text-[17px] font-bold truncate max-[1012px]:hidden text-[var(--td-text-color-primary)] tracking-tight leading-none mt-0.5"}," MSLX 管理中心 ",-1))])):K("",!0),a.layout=="side"?(l(),x("div",Rr,[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:u},{default:o(()=>[t(U,{class:"text-xl",name:"view-list"})]),_:1})])):K("",!0),a.layout!=="side"?(l(),x("div",jr,[t(P,{modelValue:n.value,"onUpdate:modelValue":T[1]||(T[1]=z=>n.value=z),placement:"bottom","overlay-class-name":"mobile-full-width-popup","overlay-style":{padding:"0",boxShadow:"none"},attach:"body"},{content:o(()=>[t(N,{value:f.value,theme:a.theme,"expand-mutex":"",class:"max-h-[calc(100vh-64px)] overflow-y-auto !bg-white/95 dark:!bg-zinc-800/95 backdrop-blur-xl !border-none !border-t !border-zinc-200/50 dark:!border-zinc-700/50 shadow-2xl",onChange:b},{default:o(()=>[t(Go,{"nav-data":a.menu,"is-horizontal":!1},null,8,["nav-data"])]),_:1},8,["value","theme"])]),default:o(()=>[t(D,{class:"header-btn",theme:"default",shape:"square",variant:"text"},{default:o(()=>[t(U,{name:"app",class:"text-[24px]"})]),_:1})]),_:1},8,["modelValue"])])):K("",!0)]),operations:o(()=>[e("div",Er,[e("div",Dr,[t(j,{placement:"bottom",content:"代码仓库"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:p},{default:o(()=>[t(U,{name:"logo-github",class:"text-[20px]"})]),_:1})]),_:1}),t(j,{placement:"bottom",content:"帮助文档"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:k},{default:o(()=>[t(U,{name:"help-circle",class:"text-[20px]"})]),_:1})]),_:1})]),t(P,{trigger:"click",placement:"bottom-right","overlay-inner-style":{padding:"0",background:"transparent",boxShadow:"none"},attach:"body"},{content:o(()=>[e("div",Nr,[e("div",Kr,[e("div",{class:"relative shrink-0 group cursor-pointer",onClick:B},[e("div",{class:ue(["absolute inset-0 rounded-full z-0 pointer-events-none transition-opacity",g.value?"animate-magic-burst":"opacity-0"]),style:{background:"radial-gradient(circle, var(--color-primary-light) 0%, transparent 70%)"}},null,2),e("img",{src:w(s).userInfo.avatar,class:ue(["w-10 h-10 rounded-full object-cover ring-2 ring-[var(--color-primary)]/30 shadow-sm transition-all duration-300 relative z-10",[g.value?"animate-jelly-pop":"group-hover:rotate-6 group-hover:scale-105"]]),alt:"avatar"},null,10,qr)]),e("div",Hr,[e("span",Wr,S(w(s).userInfo.name||w(s).userInfo.username||"未知用户"),1),e("span",Gr,[e("span",{class:ue(["inline-block w-1.5 h-1.5 rounded-full",w(s).isAdmin?"bg-emerald-500":"bg-blue-500"])},null,2),m(" "+S(w(s).isAdmin?"管理员":"普通用户"),1)])])]),e("div",Jr,[e("div",{class:"flex items-center px-3 py-2 text-sm text-zinc-600 dark:text-zinc-300 hover:bg-zinc-100 dark:hover:bg-zinc-700/50 rounded-lg cursor-pointer transition-colors",onClick:T[2]||(T[2]=z=>R("/settings"))},[t(U,{name:"user-circle",class:"text-lg mr-2 opacity-70"}),T[4]||(T[4]=e("span",{class:"font-medium"},"个人中心",-1))]),e("div",{class:"flex items-center px-3 py-2 text-sm text-red-600 hover:bg-red-50 dark:text-red-400 dark:hover:bg-red-500/10 rounded-lg cursor-pointer transition-colors",onClick:A},[t(U,{name:"poweroff",class:"text-lg mr-2 opacity-70"}),T[5]||(T[5]=e("span",{class:"font-medium"},"退出登录",-1))])])])]),default:o(()=>[t(D,{class:"user-profile-btn",theme:"default",variant:"text"},{icon:o(()=>[e("img",{src:w(s).userInfo.avatar,class:"w-8 h-8 rounded-full object-cover ring-2 ring-zinc-100 dark:ring-zinc-700/80 shadow-sm",alt:"avatar"},null,8,Fr)]),suffix:o(()=>[t(U,{name:"chevron-down",class:"text-zinc-400 text-xs ml-0.5"})]),default:o(()=>[e("div",Or,S(w(s).userInfo.name||w(s).userInfo.username||"用户"),1)]),_:1})]),_:1}),e("div",Xr,[t(j,{placement:"bottom",content:"系统设置"},{default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn",onClick:c},{default:o(()=>[t(U,{name:"setting",class:"text-[20px]"})]),_:1})]),_:1})]),e("div",Qr,[t(V,{"min-column-width":140,trigger:"click"},{dropdown:o(()=>[t($,null,{default:o(()=>[t(O,{class:"operations-dropdown-item",onClick:p},{default:o(()=>[t(U,{name:"logo-github",class:"text-lg mr-2"}),T[6]||(T[6]=e("span",null,"代码仓库",-1))]),_:1}),t(O,{class:"operations-dropdown-item mt-1",onClick:k},{default:o(()=>[t(U,{name:"help-circle",class:"text-lg mr-2"}),T[7]||(T[7]=e("span",null,"帮助文档",-1))]),_:1}),t(O,{class:"operations-dropdown-item mt-1",onClick:c},{default:o(()=>[t(U,{name:"setting",class:"text-lg mr-2"}),T[8]||(T[8]=e("span",null,"系统设置",-1))]),_:1})]),_:1})]),default:o(()=>[t(D,{theme:"default",shape:"square",variant:"text",class:"header-btn"},{default:o(()=>[t(U,{name:"more",class:"text-[20px]"})]),_:1})]),_:1})])])]),_:2},[a.layout!=="side"?{name:"default",fn:o(()=>[e("div",Pr,[t(Go,{class:"header-menu-reset","nav-data":a.menu,"is-horizontal":!0},null,8,["nav-data"])])]),key:"0"}:void 0]),1032,["class","theme","value"])],2)}}}),Zr=me(Yr,[["__scopeId","data-v-a81dfcc3"]]),Ia=de({__name:"LayoutHeader",setup(a){const s=ro(),r=ut(),{routers:d}=aa(s),i=te(()=>r.layout==="mix"?r.splitMenu?d.value.map(c=>({...c,children:[]})):[]:d.value);return(c,f)=>w(r).showHeader?(l(),W(Zr,{key:0,"show-logo":w(r).showHeaderLogo,theme:w(r).displayMode,layout:w(r).layout,"is-fixed":w(r).isHeaderFixed,menu:i.value,"is-compact":w(r).isSidebarCompact},null,8,["show-logo","theme","layout","is-fixed","menu","is-compact"])):K("",!0)}}),en={};function tn(a,s){const r=h("router-view");return l(),W(r,null,{default:o(({Component:d})=>[t(Rt,{name:"fade",mode:"out-in"},{default:o(()=>[(l(),W(Xs,null,[(l(),W(it(d)))],1024))]),_:2},1024)]),_:1})}const on=me(en,[["render",tn],["__scopeId","data-v-323e6e6f"]]),an=de({__name:"Breadcrumb",setup(a){const s=te(()=>{const r=Ye(),d=r.path.split("/");return d.shift(),d.reduce((c,f,n)=>(r.matched[n]?.meta?.hiddenBreadcrumb||Object.values(r.params).includes(f)||c.push({path:f,to:c[n-1]?`/${c[n-1].path}/${f}`:`/${f}`,title:r.matched[n]?.meta?.title??f}),c),[])});return(r,d)=>{const i=h("t-breadcrumbItem"),c=h("t-breadcrumb");return l(),W(c,{"max-item-width":"150",class:"tdesign-breadcrumb"},{default:o(()=>[(l(!0),x(re,null,xe(s.value,f=>(l(),W(i,{key:f.to,to:f.to},{default:o(()=>[m(S(f.title),1)]),_:2},1032,["to"]))),128))]),_:1})}}}),sn=me(an,[["__scopeId","data-v-b09aa6cf"]]),ln={class:"w-full flex justify-center items-center"},rn={class:"glass-capsule design-card group flex items-center gap-3 px-6 py-2 rounded-full bg-[var(--td-bg-color-container)]/80 backdrop-blur-[10px] border border-zinc-200/80 dark:border-zinc-700/60 shadow-sm transition-all duration-300 font-mono text-[13px] leading-none text-[var(--td-text-color-secondary)] cursor-default"},nn={class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"},dn=de({__name:"Footer",setup(a){return(s,r)=>(l(),x("footer",ln,[e("div",rn,[r[0]||(r[0]=e("span",{class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"}," MSLX-WEBPANEL ",-1)),r[1]||(r[1]=e("span",{class:"font-light text-zinc-500 dark:text-zinc-600"},"/",-1)),r[2]||(r[2]=e("span",{class:"font-bold text-[var(--td-text-color-primary)] tracking-[0.5px] transition-colors duration-300 group-hover:text-[var(--color-primary)]"}," MSLTEAM ",-1)),r[3]||(r[3]=e("span",{class:"font-light text-zinc-500 dark:text-zinc-600"},"/",-1)),e("span",nn," © 2021-"+S(new Date().getFullYear()),1)])]))}}),cn=me(dn,[["__scopeId","data-v-f1245484"]]),Va=de({__name:"LayoutContent",setup(a){const s=ut();return(r,d)=>{const i=h("t-content"),c=h("t-footer"),f=h("t-layout");return l(),W(f,{class:ue(`${w(Je)}-layout`)},{default:o(()=>[t(i,{class:ue(`${w(Je)}-content-layout`)},{default:o(()=>[w(s).showBreadcrumb?(l(),W(sn,{key:0})):K("",!0),t(on)]),_:1},8,["class"]),w(s).showFooter?(l(),W(c,{key:0,class:ue(`${w(Je)}-footer-layout`)},{default:o(()=>[t(cn)]),_:1},8,["class"])):K("",!0)]),_:1},8,["class"])}}}),un="mslx-webpanel",mn="1.3.5.1",pn={dev:"vite --mode development","dev:linux":"vite --mode development","build:test":"vite build --mode test",build:"vue-tsc --noEmit && vite build --mode release && node generate-build-info.js",preview:"vite preview",lint:"eslint --ext .vue,.js,.jsx,.ts,.tsx ./ --max-warnings 0","lint:fix":"eslint --ext .vue,.js,jsx,.ts,.tsx ./ --max-warnings 0 --fix",stylelint:"stylelint src/**/*.{html,vue,sass,less}","stylelint:fix":"stylelint --fix src/**/*.{html,vue,vss,sass,less}",prepare:`node -e "if(require('fs').existsSync('.git')){process.exit(1)}" || is-ci || husky install`,"site:preview":"npm run build && cp -r dist _site",test:'echo "no test specified,work in process"',"test:coverage":'echo "no test:coverage specified,work in process"'},vn={"@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-json":"^6.0.2","@codemirror/lang-yaml":"^6.1.2","@codemirror/language":"^6.12.1","@codemirror/legacy-modes":"^6.5.2","@codemirror/state":"^6.5.2","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.2","@eslint/js":"^9.38.0","@microsoft/signalr":"^10.0.0","@tailwindcss/vite":"^4.2.1","@vueuse/core":"^14.2.1","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ansi-colors":"^4.1.3",axios:"^1.13.5","cron-parser":"^5.4.0",dayjs:"^1.11.11",echarts:"^6.0.0",lodash:"4.17.23","md-editor-v3":"^6.1.0",nprogress:"^0.2.0",pinia:"^2.1.7","pinia-plugin-persistedstate":"^3.2.1","qrcode.vue":"^3.4.1",qs:"6.14.2",tailwindcss:"^4.2.1","tdesign-icons-vue-next":"^0.4.1","tdesign-vue-next":"^1.18.2","tvision-color":"^1.6.0","typescript-eslint":"^8.46.2",vue:"^3.5.29","vue-clipboard3":"^2.0.0","vue-codemirror":"^6.1.1","vue-router":"^4.4.0"},fn={"@commitlint/cli":"^19.3.0","@commitlint/config-conventional":"^19.2.2","@types/lodash":"^4.17.23","@types/qs":"^6.9.15","@types/ws":"^8.5.10","@typescript-eslint/eslint-plugin":"^8.46.2","@typescript-eslint/parser":"^8.46.2","@vitejs/plugin-vue":"^6.0.3","@vitejs/plugin-vue-jsx":"^5.1.3","@vue/compiler-sfc":"^3.4.31","@vue/eslint-config-typescript":"^14.6.0",browserslist:"^4.28.1",commitizen:"^4.3.0","cz-conventional-changelog":"^3.3.0",eslint:"^9.38.0","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.32.0","eslint-plugin-prettier":"^5.1.3","eslint-plugin-vue":"^10.7.0","eslint-plugin-vue-scoped-css":"^2.12.0",husky:"^9.1.1",less:"^4.2.0",lightningcss:"^1.32.0","lint-staged":"^15.2.7",prettier:"^3.3.3",stylelint:"^16.25.0","stylelint-config-standard":"^40.0.0","stylelint-config-standard-less":"^4.0.1","stylelint-less":"^3.0.0","stylelint-order":"^6.0.4",typescript:"^5.5.3",vite:"^7.3.1","vite-svg-loader":"^5.1.0","vue-tsc":"^2.0.26"},bn={commitizen:{path:"./node_modules/cz-conventional-changelog"}},xn="MSLX Web Panel",to={name:un,version:mn,scripts:pn,dependencies:vn,devDependencies:fn,config:bn,"lint-staged":{"*.{js,jsx,vue,ts,tsx}":["prettier --write","npm run lint:fix","git add ."],"*.{html,vue,vss,sass,less}":["npm run stylelint:fix","git add ."]},description:xn},gn=["src"],hn={key:0,class:"text-[17px] font-bold truncate text-[var(--td-text-color-primary)] tracking-tight transition-opacity duration-300 leading-none mt-0.5"},yn={class:"flex items-center justify-center h-12 text-[11px] font-mono font-medium text-[var(--td-text-color-secondary)] tracking-wider"},_n=991,wn=de({__name:"SideNav",props:{menu:{type:Array,default:()=>[]},showLogo:{type:Boolean,default:!0},isFixed:{type:Boolean,default:!0},layout:{type:String,default:""},headerHeight:{type:String,default:"64px"},theme:{type:String,default:"light"},isCompact:{type:Boolean,default:!1}},setup(a){const s=a,r=te(()=>ut().isSidebarCompact),d=te(()=>$o()),i=te(()=>{const R=$o(),b=R.substring(0,R.lastIndexOf("/")),A=ti();return Jl(A,b===""?[]:[b])}),c=te(()=>{const{isCompact:R}=s;return[`${Je}-sidebar-layout`,{[`${Je}-sidebar-compact`]:R}]}),f=te(()=>{const{showLogo:R,isFixed:b,layout:A}=s;return[`${Je}-side-nav`,{[`${Je}-side-nav-no-logo`]:!R,[`${Je}-side-nav-no-fixed`]:!b,[`${Je}-side-nav-mix-fixed`]:A==="mix"&&b}]}),n=co(),v=ut(),I=()=>{const R=window.innerWidth<=_n;v.updateConfig({isSidebarCompact:R})};ze(()=>{I(),window.onresize=()=>{I()}});const u=()=>{n.push("/dashboard/base")};return(R,b)=>{const A=h("t-menu");return l(),x("div",{class:ue(c.value)},[e("div",{class:ue(["design-card h-full bg-white dark:bg-zinc-800 transition-all duration-300 relative z-40",[w(v).enableCustomTheme?"border-r border-white/20 dark:border-white/5":"border-r border-white/20 dark:border-zinc-700/60 shadow-[1px_0_12px_rgba(0,0,0,0.02)] dark:shadow-none"]])},[t(A,{class:ue([f.value,"sidebar-menu-clear"]),theme:a.theme,value:d.value,collapsed:r.value,"default-expanded":i.value},{logo:o(()=>[a.showLogo?(l(),x("div",{key:0,class:ue(["flex items-center cursor-pointer h-[64px] px-5 overflow-hidden transition-all duration-300 !ml-0 border-b border-transparent",r.value?"justify-center px-0":"justify-start gap-2.5"]),onClick:u},[e("img",{class:"w-7 h-7 object-contain shrink-0",src:w(Vo),alt:"logo"},null,8,gn),r.value?K("",!0):(l(),x("span",hn," MSLX 管理中心 "))],2)):K("",!0)]),operations:o(()=>[e("div",yn,S(r.value?"":"MSLX-WEBPANEL ")+"v"+S(w(to).version),1)]),default:o(()=>[t(Go,{"nav-data":a.menu},null,8,["nav-data"])]),_:1},8,["class","theme","value","collapsed","default-expanded"])],2),e("div",{class:ue(`${w(Je)}-side-nav-placeholder${r.value?"-hidden":""}`)},null,2)],2)}}}),kn=me(wn,[["__scopeId","data-v-9ac7176f"]]),Ua=de({__name:"LayoutSideNav",setup(a){const s=Ye(),r=ro(),d=ut(),{routers:i}=aa(r),c=te(()=>{const{layout:f,splitMenu:n}=d;let v=i.value;return f==="mix"&&n&&v.forEach(I=>{s.path.indexOf(I.path)===0&&(v=I.children.map(u=>({...u,path:`${I.path}/${u.path}`})))}),v});return(f,n)=>w(d).showSidebar?(l(),W(kn,{key:0,"show-logo":w(d).showSidebarLogo,layout:w(d).layout,"is-fixed":w(d).isSidebarFixed,menu:c.value,theme:w(d).displayMode,"is-compact":w(d).isSidebarCompact},null,8,["show-logo","layout","is-fixed","menu","theme","is-compact"])):K("",!0)}}),ca="/assets/jpg/mslx-bg_light_new.CL71WzMj.jpg",ua="/assets/jpg/mslx-bg_night_new.CfCwUDBl.jpg";let kt=new Map;const Ma=a=>[a.method,a.url].join("&");class $n{addPending(s){this.removePending(s);const r=Ma(s);s.cancelToken=s.cancelToken||new bo.CancelToken(d=>{kt.has(r)||kt.set(r,d)})}removeAllPending(){kt.forEach(s=>{s&&$t(s)&&s()}),kt.clear()}removePending(s){const r=Ma(s);if(kt.has(r)){const d=kt.get(r);d&&d(r),kt.delete(r)}}reset(){kt=new Map}}class zn{constructor(s){Eo(this,"instance");Eo(this,"options");this.options=s,this.instance=bo.create(s),this.setupInterceptors()}createAxios(s){this.instance=bo.create(s)}getTransform(){const{transform:s}=this.options;return s}getAxios(){return this.instance}configAxios(s){this.instance&&this.createAxios(s)}setHeader(s){this.instance&&Object.assign(this.instance.defaults.headers,s)}setupInterceptors(){const s=this.getTransform();if(!s)return;const{requestInterceptors:r,requestInterceptorsCatch:d,responseInterceptors:i,responseInterceptorsCatch:c}=s,f=new $n;this.instance.interceptors.request.use(n=>{const{headers:{ignoreRepeatRequest:v}}=n;return(v??this.options.requestOptions?.ignoreRepeatRequest)||f.addPending(n),r&&$t(r)&&(n=r(n,this.options)),n},void 0),d&&$t(d)&&this.instance.interceptors.request.use(void 0,d),this.instance.interceptors.response.use(n=>(n&&f.removePending(n.config),i&&$t(i)&&(n=i(n)),n),void 0),c&&$t(c)&&this.instance.interceptors.response.use(void 0,c)}supportFormData(s){const r=s.headers||this.options.headers;return(r?.["Content-Type"]||r?.["content-type"])!=="application/x-www-form-urlencoded;charset=UTF-8"||!Reflect.has(s,"data")||s.method?.toUpperCase()==="GET"?s:{...s,data:Xl.stringify(s.data,{arrayFormat:"brackets"})}}get(s,r){return this.request({...s,method:"GET"},r)}post(s,r){return this.request({...s,method:"POST"},r)}put(s,r){return this.request({...s,method:"PUT"},r)}delete(s,r){return this.request({...s,method:"DELETE"},r)}patch(s,r){return this.request({...s,method:"PATCH"},r)}async request(s,r){let d=Ql(s);const i=this.getTransform(),{requestOptions:c}=this.options,f={...c,...r},{beforeRequestHook:n,requestCatchHook:v,transformRequestHook:I}=i||{};return n&&$t(n)&&(d=n(d,f)),d.requestOptions=f,d=this.supportFormData(d),new Promise((u,R)=>{this.instance.request(s.retryCount?s:d).then(b=>{if(I&&$t(I)){try{const A=I(b,f);u(A)}catch(A){R(A||new Error("请求错误!"))}return}u(b)}).catch(b=>{if(v&&$t(v)){R(v(b,f));return}bo.isAxiosError(b),R(b)})})}}const Cn="YYYY-MM-DD HH:mm:ss";function La(a,s=!1){if(!a)return s?"":{};const r=new Date().getTime();return s?`?_t=${r}`:{_t:r}}function Jo(a){if(Object.prototype.toString.call(a)==="[object Object]")for(const s in a){if(a[s]&&a[s]._isAMomentObject&&(a[s]=a[s].format(Cn)),Vt(s)){const r=a[s];if(r)try{a[s]=Vt(r)?r.trim():r}catch(d){throw new Error(d)}}us(a[s])&&Jo(a[s])}}function An(a,s){let r="";for(const d in s)r+=`${d}=${encodeURIComponent(s[d])}&`;return r=r.replace(/&$/,""),/\?$/.test(a)?a+r:a.replace(/\/?$/,"?")+r}const Sn={transformRequestHook:(a,s)=>{const{isTransformResponse:r,isReturnNativeResponse:d}=s,i=a.config.method?.toLowerCase();if(a.status===204||i==="put"||i==="patch"||d)return a;if(!r)return a.data;const{data:c}=a;if(!c)throw new Error("请求接口错误");if(c&&typeof c=="object"&&Reflect.has(c,"code")&&Reflect.has(c,"message")){const{code:n,message:v}=c;if(n===200)return c.data;throw new Error(v||`请求接口错误, 错误码: ${n}`)}else return c},beforeRequestHook:(a,s)=>{const{apiUrl:r,isJoinPrefix:d,urlPrefix:i,joinParamsToUrl:c,formatDate:f,joinTime:n=!0}=s;d&&i&&Vt(i)&&(a.url=`${i}${a.url}`),r&&Vt(r)&&!a.baseURL&&(a.url=`${r}${a.url}`);const v=a.params||{},I=a.data||!1;return f&&I&&!Vt(I)&&Jo(I),a.method?.toUpperCase()==="GET"?Vt(v)?(a.url=`${a.url+v}${La(n,!0)}`,a.params=void 0):a.params=Object.assign(v||{},La(n,!1)):Vt(v)?(a.url+=v,a.params=void 0):(f&&Jo(v),Reflect.has(a,"data")&&a.data&&(Object.keys(a.data).length>0||I instanceof FormData)?(a.data=I,a.params=v):(a.data=v,a.params=void 0),c&&(a.url=An(a.url,{...a.params,...a.data}))),a},requestInterceptors:(a,s)=>{const r=localStorage.getItem(Dt),d=localStorage.getItem(Ft);return d&&!/^(https?:)?\/\//.test(a.url||"")&&!a.baseURL&&(a.baseURL=d),r&&a?.requestOptions?.withToken!==!1&&(a.headers.hasAuthorization()||(a.headers["x-user-token"]=r)),a},responseInterceptors:a=>a,responseInterceptorsCatch:a=>{const{response:s}=a;if(s&&s.data){const d=s.data?.message;return d?Promise.reject(new Error(d)):Promise.reject(a)}return Promise.reject(a)}};function In(a){return new zn(Yl({authenticationScheme:"",timeout:10*1e3,withCredentials:!1,headers:{"Content-Type":"application/json;charset=UTF-8"},transform:Sn,requestOptions:{apiUrl:"",isJoinPrefix:!0,urlPrefix:"",isReturnNativeResponse:!1,isTransformResponse:!0,joinParamsToUrl:!1,formatDate:!0,joinTime:!1,ignoreRepeatRequest:!0,withToken:!0,retry:{count:3,delay:1e3}}},{}))}const Z=In();function Vn(){return Z.get({url:"/api/settings"})}function Un(a){return Z.post({url:"/api/settings",data:a})}function Mn(a){return Z.post({url:"/api/settings/webpanel/style",data:a})}function Ln(){return Z.get({url:"/api/settings/webpanel/style"})}async function qt(){return await Z.post({url:"/api/files/upload/init"})}async function Ht(a,s,r,d,i){const c=new FormData;return c.append("index",s.toString()),c.append("file",r),await Z.post({url:`/api/files/upload/chunk/${a}`,data:c,headers:{"Content-Type":"multipart/form-data"},timeout:300*1e3,onUploadProgress:d,signal:i})}async function Wt(a,s){return await Z.post({url:`/api/files/upload/finish/${a}`,data:{totalChunks:s},timeout:120*1e3})}async function Mt(a){return await Z.post({url:`/api/files/upload/delete/${a}`})}async function Bn(a){return await Z.get({url:`/api/files/upload/inspect/${a}`,timeout:60*1e3})}async function Tn(a,s=""){return await Z.get({url:`/api/files/instance/${a}/lists`,params:{path:s}})}async function Uo(a,s){return await Z.get({url:`/api/files/instance/${a}/content`,params:{path:s}})}function ma(a,s,r){return Z.post({url:`/api/files/instance/${a}/content`,data:{path:s,content:r}})}function Rn(a,s,r){return Z.post({url:`/api/files/instance/${a}/directory`,data:{path:s,name:r}})}function jn(a,s,r){return Z.post({url:`/api/files/instance/${a}/rename`,data:{oldPath:s,newPath:r}})}function Pn(a,s){return Z.post({url:`/api/files/instance/${a}/delete`,data:{paths:s}})}function bs(a,s,r,d){return Z.post({url:`/api/files/instance/${a}/upload`,data:{uploadId:s,fileName:r,currentPath:d}})}function xs(a,s){return Z.get({url:`/api/files/instance/${a}/download`,params:{path:s},responseType:"blob"})}function En(a,s,r,d){return Z.post({url:`/api/files/instance/${a}/compress`,data:{sources:s,targetName:r,currentPath:d}})}function Dn(a){return Z.get({url:`/api/files/task/compress/${a}`})}function gs(a,s,r,d="utf-8",i=!0){return Z.post({url:`/api/files/instance/${a}/decompress`,data:{fileName:s,currentPath:r,encoding:d,createSubFolder:i}})}function hs(a){return Z.get({url:`/api/files/task/decompress/${a}`})}async function ys(a,s,r){return await Z.post({url:`/api/files/instance/${a}/chmod`,data:{path:s,mode:r}})}async function Xo(a,s,r){return await Z.get({url:`/api/files/pm/instance/${a}/list?${r?"checkClient=true":""}`,params:{mode:s}})}async function Fn(a,s,r,d){return await Z.post({url:`/api/files/pm/instance/${a}/set`,data:{mode:s,action:r,targets:d}})}function On(a,s,r){return Z.post({url:`/api/files/instance/${a}/copy`,data:{sourcePaths:s,targetPath:r},timeout:120*1e3})}function Nn(a,s,r){return Z.post({url:`/api/files/instance/${a}/move`,data:{sourcePaths:s,targetPath:r},timeout:120*1e3})}function Kn(a,s){return Z.post({url:"/api/static/images/upload",data:{fileKey:a,fileName:s}})}async function _s(a,s,r,d){return await Z.post({url:`/api/files/instance/${a}/download`,data:{path:s,url:r,filename:d}})}function ws(a){return Z.get({url:`/api/files/task/download/${a}`})}const Gt=zt("webpanel",{state:()=>({settings:{webPanelStyleDarkBackgroundOpacity:1,webPanelStyleDarkComponentsOpacity:.4,webpPanelTerminalBlurDark:5,webPanelStyleLightBackground:"",webPanelStyleLightBackgroundOpacity:1,webPanelStyleLightComponentsOpacity:.6,webpPanelTerminalBlurLight:5,webPanelStyleDarkBackground:"",webPanelColorizeLogLevel:1},loading:!1,submitLoading:!1}),actions:{async fetchSettings(){this.loading=!0;try{const a=await Ln();this.settings=a}catch(a){console.error("获取面板样式失败",a)}finally{this.loading=!1}},async saveSettings(){this.submitLoading=!0;try{await Mn(this.settings),M.success("面板样式保存成功")}catch(a){M.error("保存失败: "+a.message)}finally{this.submitLoading=!1}},async uploadImage(a){if(!a)return M.error("文件对象无效"),null;if(!["image/png","image/jpeg","image/webp"].includes(a.type))return M.error("仅支持 PNG, JPG, WEBP 格式的图片"),null;if(!(a.size/1024/1024<10))return M.error("图片大小不能超过 10MB"),null;try{const{uploadId:d}=await qt();return await Ht(d,1,a),await Wt(d,1),await Kn(d,a.name),M.success(`上传成功: ${a.name}`),a.name}catch(d){return M.error("上传失败: "+(d.message||"网络错误")),null}}},persist:{key:"webpanel-style-storage",paths:["settings"]}}),qn=de({__name:"index",setup(a){const s=Ye(),r=ut(),d=Be(),i=Gt(),c=aa(r),f=(u,R)=>u?u.startsWith("http")?u:`${d.baseUrl||window.location.origin}/api/static/images/${u}`:R,n=te(()=>{const u=i.settings,R=f(u.webPanelStyleLightBackground,ca),b=f(u.webPanelStyleDarkBackground,ua);return{"--bg-img-light":`url('${R}')`,"--bg-img-dark":`url('${b}')`,"--bg-op-light":u.webPanelStyleLightBackgroundOpacity,"--bg-op-dark":u.webPanelStyleDarkBackgroundOpacity,"--comp-op-light":u.webPanelStyleLightComponentsOpacity,"--comp-op-dark":u.webPanelStyleDarkComponentsOpacity,"--term-blur-light":`${u.webpPanelTerminalBlurLight??5}px`,"--term-blur-dark":`${u.webpPanelTerminalBlurDark??5}px`}}),v=te(()=>r.enableCustomTheme),I=te(()=>[{"t-layout--with-sider":r.showSidebar}]);return ze(()=>{i.fetchSettings()}),_e(()=>s.path,()=>{document.querySelector(`.${Je}-layout`).scrollTo({top:0,behavior:"smooth"})}),(u,R)=>{const b=h("t-aside"),A=h("t-header"),p=h("t-content"),k=h("t-layout");return l(),x("div",{class:ue(["global-layout-bg",{"custom-theme-enabled":v.value}]),style:Oe(n.value)},[v.value?(l(),W(it("style"),{key:0},{default:o(()=>[...R[0]||(R[0]=[m(" .global-layout-bg.custom-theme-enabled .terminal-wrapper { backdrop-filter: blur(var(--term-blur-light)) !important; -webkit-backdrop-filter: blur(var(--term-blur-light)) !important; } html[theme-mode='dark'] .global-layout-bg.custom-theme-enabled .terminal-wrapper, .global-layout-bg.custom-theme-enabled.dark .terminal-wrapper { backdrop-filter: blur(var(--term-blur-dark)) !important; -webkit-backdrop-filter: blur(var(--term-blur-dark)) !important; } ",-1)])]),_:1})):K("",!0),w(c).layout.value==="side"?(l(),W(k,{key:"side",class:ue(I.value)},{default:o(()=>[t(b,null,{default:o(()=>[t(Ua)]),_:1}),t(k,null,{default:o(()=>[t(A,null,{default:o(()=>[t(Ia)]),_:1}),t(p,null,{default:o(()=>[t(Va)]),_:1})]),_:1})]),_:1},8,["class"])):(l(),W(k,{key:"no-side"},{default:o(()=>[t(A,null,{default:o(()=>[t(Ia)]),_:1}),t(k,{class:ue(I.value)},{default:o(()=>[t(Ua),t(Va)]),_:1},8,["class"])]),_:1})),t(da)],6)}}}),ft=me(qn,[["__scopeId","data-v-b0aaaf37"]]),Hn=[{path:"/dashboard",redirect:"/dashboard/base",component:ft,name:"dashboard",meta:{title:"仪表盘",icon:"dashboard",roleCode:["admin","user"]},children:[{path:"base",name:"DashboardBaseIndex",component:()=>Ge(()=>Promise.resolve().then(()=>hc),void 0),meta:{title:"仪表盘",hidden:!0,roleCode:["admin","user"]}}]},{path:"/instance",component:ft,name:"instance",meta:{title:"服务端管理",icon:"server",roleCode:["admin","user"]},children:[{path:"list",name:"InstanceList",component:()=>Ge(()=>Promise.resolve().then(()=>lu),void 0),meta:{title:"服务端列表",icon:"grid-view",roleCode:["admin","user"]}},{path:"create",name:"InstanceCreate",component:()=>Ge(()=>Promise.resolve().then(()=>K0),void 0),meta:{title:"创建服务端",icon:"add"}},{path:"backup",name:"InstanceBackupManager",component:()=>Ge(()=>Promise.resolve().then(()=>xf),void 0),meta:{title:"备份管理",icon:"backup",roleCode:["admin","user"]}},{path:"cron",name:"InstanceCronTasksManager",component:()=>Ge(()=>Promise.resolve().then(()=>v1),void 0),meta:{title:"定时任务",icon:"time",roleCode:["admin","user"]}}]},{path:"/frp",component:ft,name:"frp",meta:{title:"隧道管理",icon:"rocket",roleCode:["admin","user"]},children:[{path:"list",name:"FrpList",component:()=>Ge(()=>Promise.resolve().then(()=>fb),void 0),meta:{title:"隧道列表",icon:"format-vertical-align-left",roleCode:["admin","user"]}},{path:"create",name:"FrpCreate",component:()=>Ge(()=>Promise.resolve().then(()=>u2),void 0),meta:{title:"创建隧道",icon:"add"}}]}],Wn=Object.freeze(Object.defineProperty({__proto__:null,default:Hn},Symbol.toStringTag,{value:"Module"})),Gn=[{path:"/frp/console",component:ft,meta:{hidden:!0},children:[{path:":frpId",name:"FrpConsole",component:()=>Ge(()=>Promise.resolve().then(()=>iw),void 0),meta:{title:"隧道控制台",hidden:!0,activeMenu:"/frp/list"}}]},{path:"/instance/console",component:ft,meta:{hidden:!0},children:[{path:":serverId",name:"InstanceConsole",component:()=>Ge(()=>Promise.resolve().then(()=>X$),void 0),meta:{title:"服务器控制台",hidden:!0,activeMenu:"/instance/list"}}]},{path:"/instance/files",component:ft,meta:{hidden:!0},children:[{path:":serverFilesId",name:"InstanceFiles",component:()=>Ge(()=>Promise.resolve().then(()=>w6),void 0),meta:{title:"文件管理",hidden:!0,activeMenu:"/instance/list"}}]}],Jn=Object.freeze(Object.defineProperty({__proto__:null,default:Gn},Symbol.toStringTag,{value:"Module"})),Ba=()=>Ge(()=>Promise.resolve().then(()=>C6),void 0),Xn=[{path:"/frame",name:"Frame",component:ft,redirect:"/frame/doc",meta:{icon:"earth",title:"链接",roleCode:["admin","user"]},children:[{path:"MSLX",name:"MSLX",component:Ba,meta:{frameSrc:"https://mslx.mslmc.cn",frameBlank:!0,title:"MSLX 文档",icon:"book",roleCode:["admin","user"]}},{path:"MSLUser",name:"MSLUser",component:Ba,meta:{frameSrc:"https://user.mslmc.net",frameBlank:!0,title:"MSL 用户中心",icon:"user-arrow-left",roleCode:["admin","user"]}}]}],Qn=Object.freeze(Object.defineProperty({__proto__:null,default:Xn},Symbol.toStringTag,{value:"Module"})),Yn=[{path:"/users",component:ft,name:"usersBase",meta:{title:"用户管理",icon:"user"},children:[{path:"",name:"users",component:()=>Ge(()=>Promise.resolve().then(()=>e7),void 0),meta:{title:"用户管理",hidden:!0}}]},{path:"/settings",component:ft,name:"settingsBase",meta:{title:"设置",icon:"setting",roleCode:["admin","user"]},children:[{path:"",name:"settings",component:()=>Ge(()=>Promise.resolve().then(()=>W7),void 0),meta:{title:"设置",hidden:!0,roleCode:["admin","user"]}}]},{path:"/about",component:ft,name:"aboutBase",meta:{title:"关于面板",icon:"info-circle",roleCode:["admin","user"]},children:[{path:"",name:"about",component:()=>Ge(()=>Promise.resolve().then(()=>iA),void 0),meta:{title:"关于面板",hidden:!0,roleCode:["admin","user"]}}]}],Zn=Object.freeze(Object.defineProperty({__proto__:null,default:Yn},Symbol.toStringTag,{value:"Module"})),Ta=Object.assign({"./modules/base.ts":Wn,"./modules/components.ts":Jn,"./modules/iframe.ts":Qn,"./modules/others.ts":Zn}),ks=[];Object.keys(Ta).forEach(a=>{const s=Ta[a].default||{},r=Array.isArray(s)?[...s]:[s];ks.push(...r)});const Qo=[...ks],ei=[{path:"/login",name:"login",component:()=>Ge(()=>Promise.resolve().then(()=>PA),void 0)},{path:"/oauth/callback",name:"oauth",component:()=>Ge(()=>Promise.resolve().then(()=>t9),void 0)},{path:"/",redirect:"/dashboard/base"},{path:"/404",name:"404",component:()=>Ge(()=>Promise.resolve().then(()=>i9),void 0)},{path:"/:w+",name:"404Page",redirect:"/404"}],$s=[...ei,...Qo],ti=()=>{const a=[];return $s.forEach(s=>{s.meta&&s.meta.expanded&&a.push(s.path),s.children&&s.children.length>0&&s.children.filter(r=>r.meta&&r.meta.expanded).forEach(r=>{a.push(s.path),a.push(`${s.path}/${r.path}`)})}),Zl(a)},$o=(a=3)=>{const s=ht.currentRoute.value;return s.path?s.meta?.activeMenu?s.meta.activeMenu:s.path.split("/").filter((r,d)=>d<=a&&d>0).map(r=>`/${r}`).join(""):""};function Ie(a){a.includes("http")?window.open(a):ht.replace(a)}const ht=Qs({history:Ys(),routes:$s,scrollBehavior(){return{el:"#app",top:0,behavior:"smooth"}}});function zs(a,s){const r=[],d=[];return a.forEach(i=>{const c={...i};if((n=>n?Array.isArray(n)?s.some(v=>n.includes(v)):s.includes(n):!1)(c.meta?.roleCode||c.name)){if(c.children&&c.children.length>0){const n=zs(c.children,s);c.children=n.accessedRouters}r.push(c)}else d.push(c)}),{accessedRouters:r,removeRoutes:d}}const ro=zt("permission",{state:()=>({whiteListRouters:["/login","/oauth/callback"],routers:[],removeRoutes:[],dynamicRoutesAdded:[]}),actions:{async initRoutes(a){this.clearRoutes();let s=[],r=[];if(a.includes("all"))s=Qo;else{const i=zs(Qo,a);s=i.accessedRouters,r=i.removeRoutes}const d=[];s.forEach(i=>{ht.addRoute(i),i.name&&d.push(i.name)}),this.routers=s,this.removeRoutes=r,this.dynamicRoutesAdded=d},async clearRoutes(){this.dynamicRoutesAdded.forEach(s=>{ht.hasRoute(s)&&ht.removeRoute(s)}),this.routers=[],this.removeRoutes=[],this.dynamicRoutesAdded=[]}}});function oi(){return ro(Bo)}const ai={...ia,showSettingPanel:!1,colorList:xr,chartColors:fs,systemTheme:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"},ut=zt("setting",{state:()=>ai,getters:{showSidebar:a=>a.layout!=="top",showSidebarLogo:a=>a.layout==="side",showHeaderLogo:a=>a.layout!=="side",displayMode:a=>a.mode==="auto"?a.systemTheme:a.mode},actions:{async changeMode(a){let s=a;a==="auto"&&(s=this.systemTheme);const r=s==="dark";document.documentElement.setAttribute("theme-mode",r?"dark":""),this.chartColors=r?gr:fs},setSystemTheme(a){this.systemTheme=a,this.mode==="auto"&&this.changeMode("auto")},changeBrandTheme(a){document.documentElement.setAttribute("theme-color",a)},addColor(a){this.colorList={...this.colorList,...a}},updateConfig(a){for(const s in a)a[s]!==void 0&&(this[s]=a[s]),s==="mode"&&this.changeMode(a[s]),s==="brandTheme"&&this.changeBrandTheme(a[s])}},persist:{paths:[...er(ia),"colorList","chartColors"]}});async function si(){return Z.get({url:"/api/update/info"})}async function li(){return Z.get({url:"/api/update/download"})}async function ri(){return Z.post({url:"/api/update"})}const pa=zt("update",()=>{const a=y(!1),s=y(null),r=y(null),d=y(!1);return{showUpdateModal:a,updateInfo:s,downloadInfo:r,loading:d,checkAppUpdate:async(f=!1)=>{if(Be().isAdmin&&!d.value){d.value=!0;try{const I=await si();if(I&&I.needUpdate){if(!f&&localStorage.getItem("mslx-skip-version")===I.latestVersion){console.log(`[Update] 用户已跳过版本 ${I.latestVersion}`);return}s.value=I;try{const u=await li();r.value=u}catch(u){console.error("获取下载链接失败",u),r.value={web:"",file:""}}a.value=!0,f&&M.success("发现新版本!")}else f&&(I.environment==="fnos"?M.success("请前往飞牛应用商店检查更新!"):M.success("当前已是最新版本"))}catch(v){console.error("[Update] 检查更新失败:",v),f&&M.error("检查更新失败,请检查网络日志")}finally{d.value=!1}}},handleSkipVersion:()=>{s.value?.latestVersion&&(localStorage.setItem("mslx-skip-version",s.value.latestVersion),M.success("已跳过该版本,下次将不再提醒"),a.value=!1)}}});async function Mo(a){return await Z.post({url:"/api/instance/createServer",data:a})}async function Ra(a,s=!1){return await Z.post({url:"/api/instance/delete",data:{id:a,deleteFiles:s}})}async function ni(){return await Z.get({url:"/api/instance/list"})}async function It(a,s){return await Z.post({url:"/api/instance/action",data:{id:a,action:s},timeout:60*1e3})}async function va(a){return await Z.get({url:"/api/instance/info",params:{id:a}})}async function ii(a){return await Z.get({url:`/api/instance/settings/general/${a}`})}async function di(a){return await Z.post({url:`/api/instance/settings/general/${a.id}`,data:a})}async function ci(a){return await Z.get({url:`/api/instance/backups/${a}`})}async function ui(){return await Z.get({url:"/api/instance/backups/all"})}async function Yo(a,s){return await Z.post({url:"/api/instance/backups/delete",data:{id:a,fileName:s}})}function Zo(a,s){const r=Be(),{baseUrl:d,token:i}=r;return`${d||window.location.origin}/api/instance/backups/download?id=${a}&fileName=${encodeURIComponent(s)}&x-user-token=${i}`}async function Cs(a){return await Z.get({url:`/api/instance/players/online/${a}`})}async function mi(a){return await Z.get({url:`/api/instance/players/whitelist/${a}`})}async function pi(a,s){return await Z.post({url:`/api/instance/players/whitelist/add/${a}`,data:{name:s}})}async function vi(a,s){return await Z.post({url:`/api/instance/players/whitelist/remove/${a}`,data:{name:s}})}async function fi(a){return await Z.get({url:`/api/instance/players/ops/${a}`})}async function bi(a,s){return await Z.post({url:`/api/instance/players/ops/add/${a}`,data:{name:s}})}async function xi(a,s){return await Z.post({url:`/api/instance/players/ops/remove/${a}`,data:{name:s}})}async function gi(a){return await Z.get({url:`/api/instance/players/banplayer/${a}`})}async function hi(a,s,r){return await Z.post({url:`/api/instance/players/banplayer/add/${a}`,data:{name:s,reason:r}})}async function yi(a,s){return await Z.post({url:`/api/instance/players/banplayer/remove/${a}`,data:{name:s}})}async function _i(a){return await Z.get({url:`/api/instance/players/banip/${a}`})}async function wi(a,s,r){return await Z.post({url:`/api/instance/players/banip/add/${a}`,data:{ip:s,reason:r}})}async function ki(a,s){return await Z.post({url:`/api/instance/players/banip/remove/${a}`,data:{ip:s}})}async function $i(a){return await Z.get({url:`/api/instance/players/history/${a}`})}async function zi(a){return await Z.get({url:`/api/instance/map/spawn/${a}`})}const At=zt("instanceList",()=>{const a=y([]),s=y(0),r=y(0);async function d(){try{a.value=await ni(),s.value=a.value.length,r.value=a.value.filter(i=>i.status).length}catch(i){M.error("获取实例列表失败:"+i.message)}}return{instanceList:a,refreshInstanceList:d,totalInstanceCount:s,onlineInstanceCount:r}});async function Ci(a,s,r,d="toml"){return await Z.post({url:"/api/frp/add",data:{name:a,config:s,provider:r,format:d}})}async function Ai(a){return await Z.post({url:"/api/frp/delete",data:{id:a}})}function Si(){return Z.get({url:"/api/frp/list"})}function ja(a,s){return Z.post({url:"/api/frp/action",data:{action:a,id:s}})}function Ii(a){return Z.get({url:"/api/frp/info",params:{id:a}})}function Vi(){return Z.get({url:"/api/frp/autostart"})}function Ui(a){return Z.post({url:"/api/frp/autostart",data:{frpIds:a}})}const Lo=zt("tunnels",()=>{const a=y([]);async function s(){try{a.value=await Si()}catch(r){M.error("获取Frp列表失败:"+r.message)}}return{frpList:a,getTunnels:s}}),Pa="remembered_url",Ea="remembered_username",Fo={name:"",username:"",avatar:"",id:"",version:"",systemInfo:{netVersion:"",osType:"",osVersion:"",osArchitecture:"",hostname:"",docker:!1},targetFrontendVersion:{desktop:"",panel:""},roles:[]},Be=zt("user",{state:()=>({token:localStorage.getItem(Dt)||"",baseUrl:localStorage.getItem(Ft)||window.location.origin,userInfo:{...Fo}}),getters:{roles:a=>a.userInfo?.roles||[],isAdmin:a=>a.userInfo?.roles?.includes("all")||!1},actions:{async checkConnection(a){let s=a;a&&!/^(https?:)?\/\//.test(a)&&(s=`http://${a}`);try{return await Z.get({url:"/api/ping",baseURL:s||void 0,timeout:3e3}),!0}catch{return!1}},async login(a){const{url:s,username:r,password:d,checked:i}=a;let c=s;c&&!/^(https?:)?\/\//.test(c)&&(c=`http://${c}`);const f=c||"";try{const n=await Z.post({url:"/api/auth/login",baseURL:f,data:{username:r,password:d}});this.token=n.token,this.baseUrl=f,localStorage.setItem(Dt,n.token),localStorage.setItem(Ft,f),i?(localStorage.setItem(Pa,s||""),localStorage.setItem(Ea,r)):(localStorage.removeItem(Pa),localStorage.removeItem(Ea)),await this.getUserInfo()}catch(n){throw console.error("Login failed:",n),n}},async loginByOAuth(a){try{this.token=a.token,localStorage.setItem(Dt,a.token),this.baseUrl||(this.baseUrl=window.location.origin,localStorage.setItem(Ft,this.baseUrl)),await this.getUserInfo()}catch(s){throw console.error("OAuth登录失败:",s),s}},async getUserInfo(){if(this.token)try{const a=await Z.get({url:"/api/status"});this.userInfo={...Fo,...a,name:a.user||a.username,roles:a.roles||[]},await ro().initRoutes(this.userInfo.roles)}catch(a){console.error("Get user info failed:",a),await this.logout(),Ie("/login")}},async logout(){await ro().clearRoutes(),localStorage.removeItem(Dt),localStorage.removeItem(Ft),this.token="",this.baseUrl="",this.userInfo={...Fo}},async removeToken(){this.token=""}},persist:{afterRestore:a=>{a.store.token&&a.store.getUserInfo()}}});function As(){return Be(Bo)}const Bo=Zs();Bo.use(el());oo.configure({showSpinner:!1});ht.beforeEach(async(a,s,r)=>{window.document.title=a.meta.title?`${a.meta.title} | MSLX 控制台`:"MSLX 控制台",oo.start();const d=As(),i=oi(),{whiteListRouters:c}=i,{token:f}=d;if(f){if(a.path==="/login"||a.path==="/oauth/callback"){r();return}const{roles:n}=d;if(n&&n.length>0)r();else try{await d.getUserInfo();const{roles:v}=d;await i.initRoutes(v),ht.hasRoute(a.name)?r():r("/")}catch(v){M.error(v),r({path:"/login",query:{redirect:encodeURIComponent(a.fullPath)}}),oo.done()}}else c.indexOf(a.path)!==-1?r():r({path:"/login",query:{redirect:encodeURIComponent(a.fullPath)}}),oo.done()});ht.afterEach(a=>{a.path==="/login"&&As().logout(),oo.done()});const Mi={class:"flex justify-between items-start mb-5"},Li={class:"flex flex-col"},Bi={class:"flex items-center gap-2"},Ti={class:"m-0 text-[20px] font-bold text-[var(--td-text-color-primary)] tracking-wide"},Ri={class:"mt-2.5 flex items-center gap-2"},ji={class:"mb-6 min-h-[120px] flex flex-col justify-center"},Pi={key:0,class:"flex flex-col items-center text-center py-2"},Ei={key:1,class:"py-2"},Di={key:2,class:"flex flex-col items-center text-center py-4"},Fi={key:3,class:"flex flex-col items-center text-center py-4"},Oi={key:4,class:"py-2"},Ni={key:0,class:"flex items-center gap-2 text-red-600 dark:text-red-400 bg-red-50 dark:bg-red-950/30 p-3.5 rounded-xl border border-red-100 dark:border-red-900/50"},Ki={class:"text-sm font-medium"},qi={class:"flex justify-between items-end mb-2 text-sm"},Hi={class:"font-medium text-[var(--color-primary)]"},Wi={class:"text-xs font-mono text-[var(--td-text-color-secondary)]"},Gi={key:5,class:"flex flex-col gap-3"},Ji={class:"m-0 mt-1 pl-4 leading-relaxed opacity-90 space-y-1"},Xi={class:"flex flex-col gap-1.5 mt-1"},Qi={class:"bg-zinc-50 dark:bg-zinc-900/50 rounded-xl p-3.5 max-h-[200px] overflow-y-auto border border-zinc-200/60 dark:border-zinc-700/50 shadow-inner custom-scrollbar"},Yi={class:"font-mono text-[13px] leading-relaxed whitespace-pre-wrap text-zinc-700 dark:text-zinc-300"},Zi={key:0,class:"flex flex-col gap-3"},ed={class:"grid grid-cols-1 sm:grid-cols-2 gap-3"},td={key:0,class:"mt-2 flex justify-center"},od={key:1,class:"mt-4"},ad={key:2,class:"mt-4"},sd={key:3,class:"flex flex-col gap-3 mt-4"},ld=de({__name:"UpdateModal",props:{visible:{type:Boolean},updateInfo:{},downloadInfo:{}},emits:["close","skip","success"],setup(a,{emit:s}){const r=a,d=s,i=Be(),c=y(!1),f=y(0),n=y("0 KB/s"),v=y("准备中..."),I=y(!1),u=y(!1),R=y(!1),b=y("");let A=null;const p=()=>{u.value=!1,I.value=!1,b.value="",c.value=!1,R.value=!1,f.value=0},k=te(()=>r.updateInfo?.status==="beta"),g=te(()=>{const V=i.userInfo?.systemInfo?.osType||"";return V.includes("macOS")||V.includes("OSX")}),B=te(()=>(i.userInfo?.systemInfo?.osType||"").toLowerCase().includes("linux")),C=V=>{V&&window.open(V,"_blank")},T=()=>{d("close"),Ie("/instance/list")},U=()=>{if(c.value&&!R.value){M.warning("正在更新中,请勿关闭窗口");return}P(),d("close")},D=()=>{d("skip")},N=()=>{window.location.reload()};_e(()=>r.visible,(V,_)=>{V&&!_&&p()});const P=async()=>{if(A){try{await A.stop()}catch(V){console.error("Stop Hub Error:",V)}A=null}},j=async()=>{await P();const{baseUrl:V,token:_}=i,z=new URL("/api/hubs/daemonUpdate",V||window.location.origin);_&&z.searchParams.append("x-user-token",_),A=new Ct().withUrl(z.toString(),{withCredentials:!1}).configureLogging(jt.Warning).withAutomaticReconnect([0,2e3,5e3,1e4]).build(),A.on("UpdateProgress",E=>{f.value=E.progress||0,n.value=E.speed||"",E.stage==="permission_check"?v.value="等待服务端确认权限...":E.stage==="restarting"?(console.log("[Update] 收到重启信号,准备轮询..."),v.value="服务正在重启...",P(),setTimeout(()=>{$()},3e3)):v.value=E.status||"正在处理..."}),A.on("UpdateFailed",E=>{c.value=!1,b.value=E||"更新失败",P()}),A.onclose(E=>{A&&(c.value&&f.value>=100?setTimeout(()=>{$()},6e3):E&&(c.value=!1,b.value=`连接断开: ${E.message}`))});try{await A.start()}catch(E){b.value=`连接更新服务失败: ${E.message}`,c.value=!1}},O=async()=>{if(!c.value){c.value=!0,I.value=!1,u.value=!1,b.value="",f.value=0,R.value=!1,await j();try{await ri()}catch(V){c.value=!1,P();const _=V.message||"";_.includes("Docker")||_.includes("容器")?I.value=!0:_.includes("运行")&&(_.includes("服务器")||_.includes("实例"))?u.value=!0:b.value=_||"请求更新失败,请检查网络或日志"}}},$=async()=>{v.value="服务正在重启,请稍候...";const V=async()=>{try{return await Z.get({url:"/api/ping",timeout:3e3}),!0}catch{return!1}},_=60;let z=0;const E=setInterval(async()=>{z++,await V()?(clearInterval(E),c.value=!1,R.value=!0,v.value="更新成功!",P(),setTimeout(()=>d("success"),1e3)):z>_&&(clearInterval(E),c.value=!1,b.value="服务重启超时,请手动刷新页面检查状态。",P())},2e3)};return He(()=>{P()}),(V,_)=>{const z=h("t-tag"),E=h("t-button"),F=h("t-link"),X=h("t-alert"),q=h("t-progress"),H=h("t-popconfirm"),J=h("t-dialog");return l(),W(J,{visible:r.visible,header:!1,footer:!1,"close-on-overlay-click":!1,"close-btn":!1,width:"500px",class:"update-modal","destroy-on-close":"",attach:"body",onClose:U},{default:o(()=>[e("div",Mi,[e("div",Li,[e("div",Bi,[e("h3",Ti,S(R.value?"更新完成":"发现新版本"),1),k.value?(l(),W(z,{key:0,theme:"warning",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[..._[2]||(_[2]=[m("Beta",-1)])]),_:1})):(l(),W(z,{key:1,theme:"success",variant:"light-outline",class:"!rounded-md !font-bold"},{default:o(()=>[..._[3]||(_[3]=[m("Release",-1)])]),_:1}))]),e("div",Ri,[t(z,{variant:"outline",size:"small",class:"!font-mono !rounded-md"},{default:o(()=>[m(S(a.updateInfo?.currentVersion),1)]),_:1}),_[4]||(_[4]=e("span",{class:"text-zinc-400 font-mono font-bold"},"→",-1)),t(z,{theme:"primary",variant:"light-outline",size:"small",class:"!font-mono !rounded-md"},{default:o(()=>[m(S(a.updateInfo?.latestVersion),1)]),_:1})])]),c.value?K("",!0):(l(),W(E,{key:0,variant:"text",shape:"circle",class:"hover:!bg-zinc-100 dark:hover:!bg-zinc-800",onClick:U},{icon:o(()=>[t(w(sa))]),_:1}))]),e("div",ji,[R.value?(l(),x("div",Pi,[t(w(Lt),{size:"48px",class:"text-emerald-500 mb-4 drop-shadow-sm"}),_[5]||(_[5]=e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-1"},"MSLX守护进程端已成功更新",-1)),_[6]||(_[6]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0"},"请刷新页面以加载最新功能",-1))])):I.value?(l(),x("div",Ei,[t(X,{theme:"warning",title:"检测到 Docker 环境",class:"!rounded-xl"},{message:o(()=>[_[8]||(_[8]=m(" 当前程序运行在 ",-1)),_[9]||(_[9]=e("b",null,"Docker 容器",-1)),_[10]||(_[10]=m(" 内,不支持热更新。",-1)),_[11]||(_[11]=e("br",null,null,-1)),_[12]||(_[12]=m("请使用以下命令或者参照 ",-1)),_[13]||(_[13]=e("b",null,"官方文档",-1)),_[14]||(_[14]=m(" 更新。",-1)),_[15]||(_[15]=e("br",null,null,-1)),t(F,{theme:"primary",href:"https://mslx.mslmc.cn/docs/install/docker/",target:"_blank",class:"mt-1 align-baseline"},{default:o(()=>[..._[7]||(_[7]=[e("b",null,"Docker安装/更新文档",-1)])]),_:1})]),_:1}),_[16]||(_[16]=e("div",{class:"mt-3 bg-[#1e1e1e] text-[#d4d4d4] p-3 rounded-xl font-mono text-[13px] break-all select-all shadow-inner border border-black/20"},[m(" sudo docker compose pull && docker compose up -d "),e("span",{class:"text-zinc-500"},"# 指令仅适用于Compose部署")],-1))])):u.value?(l(),x("div",Di,[t(w(uo),{size:"48px",class:"text-amber-500 mb-3 drop-shadow-sm"}),_[17]||(_[17]=e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-2"},"无法开始更新",-1)),_[18]||(_[18]=e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0 leading-relaxed"},[m(" 检测到当前有服务器实例正在运行。"),e("br"),m("为了防止数据丢失,请先停止所有实例。 ")],-1))])):v.value.includes("等待服务端确认权限")?(l(),x("div",Fi,[..._[19]||(_[19]=[e("p",{class:"text-base font-bold text-[var(--td-text-color-primary)] m-0 mb-2"},"请在服务端确认权限",-1),e("p",{class:"text-sm text-[var(--td-text-color-secondary)] m-0 leading-relaxed"},[m(" macOS 系统已弹出提示:"),e("br"),e("strong",{class:"text-zinc-700 dark:text-zinc-300"},"“MSLX-Daemon 想要控制应用程序 终端.app”"),m(),e("br"),m(" 请务必点击 "),e("strong",null,"【好/OK】"),m(" 以继续更新。 ")],-1)])])):c.value||b.value?(l(),x("div",Oi,[b.value?(l(),x("div",Ni,[t(w(Ja),{class:"shrink-0 text-lg"}),e("span",Ki,S(b.value),1)])):(l(),x(re,{key:1},[e("div",qi,[e("span",Hi,S(v.value),1),e("span",Wi,S(n.value),1)]),t(q,{theme:"plump",percentage:f.value,status:f.value>=100?"active":"success"},null,8,["percentage","status"])],64))])):(l(),x("div",Gi,[g.value?(l(),W(X,{key:0,theme:"warning",variant:"outline",class:"!rounded-xl !text-[13px] leading-relaxed"},{message:o(()=>[..._[20]||(_[20]=[e("strong",null,"macOS 用户请注意:",-1),e("br",null,null,-1),m(" 受 Apple 安全机制 (Gatekeeper) 限制,更新重启后应用可能无法自动启动。如遇此情况,请前往「系统设置 > 隐私与安全性」手动允许应用运行。 ",-1)])]),_:1})):K("",!0),B.value?(l(),W(X,{key:1,theme:"info",variant:"outline",class:"!rounded-xl !text-[13px] leading-relaxed"},{message:o(()=>[_[26]||(_[26]=e("strong",null,"Linux 用户提示:",-1)),e("ul",Ji,[e("li",null,[_[22]||(_[22]=m("如使用一键脚本部署,推荐优先参考 ",-1)),t(F,{theme:"primary",href:"https://mslx.mslmc.cn/docs/install/linux/",target:"_blank",class:"align-baseline font-bold"},{default:o(()=>[..._[21]||(_[21]=[m("官方文档",-1)])]),_:1}),_[23]||(_[23]=m("。",-1))]),_[24]||(_[24]=e("li",null,[m("若启用 "),e("strong",null,"Systemd"),m(" 托管,请确保服务名称为 "),e("code",null,"mslx"),m(",否则无法自动重启。")],-1)),_[25]||(_[25]=e("li",null,"如果更新完成后仍然是旧版本,请尝试手动重启服务或手动更新!",-1))])]),_:1})):K("",!0),e("div",Xi,[_[27]||(_[27]=e("div",{class:"text-[13px] font-bold text-[var(--td-text-color-secondary)] tracking-wider"},"更新内容",-1)),e("div",Qi,[e("div",Yi,S(a.updateInfo?.log||"暂无详细日志"),1)])])]))]),!R.value&&!I.value&&!u.value?(l(),x("div",Zi,[t(E,{theme:"primary",block:"",size:"large",loading:c.value,disabled:c.value,class:"!rounded-xl shadow-sm",onClick:O},{icon:o(()=>[t(w(la))]),default:o(()=>[m(" "+S(c.value?"正在更新...":"立即更新"),1)]),_:1},8,["loading","disabled"]),e("div",ed,[t(E,{variant:"outline",block:"",class:"!rounded-xl !m-0",disabled:!a.downloadInfo?.file||c.value,onClick:_[0]||(_[0]=ae=>C(a.downloadInfo?.file||""))},{icon:o(()=>[t(w(ao))]),default:o(()=>[_[28]||(_[28]=m(" 下载新版本 ",-1))]),_:1},8,["disabled"]),t(E,{variant:"dashed",block:"",class:"!rounded-xl !m-0",disabled:!a.downloadInfo?.web||c.value,onClick:_[1]||(_[1]=ae=>C(a.downloadInfo?.web||""))},{icon:o(()=>[t(w(Bt))]),default:o(()=>[_[29]||(_[29]=m(" 前往下载页 ",-1))]),_:1},8,["disabled"])]),c.value?K("",!0):(l(),x("div",td,[t(H,{content:"确定要跳过此版本吗?跳过后将不再提示该版本。后续可在设置中更新。",theme:"warning",onConfirm:D},{default:o(()=>[t(F,{theme:"default",hover:"color",size:"small",class:"!text-zinc-400 hover:!text-zinc-600 dark:hover:!text-zinc-300"},{default:o(()=>[..._[30]||(_[30]=[m(" 跳过此版本 ",-1)])]),_:1})]),_:1})]))])):K("",!0),R.value?(l(),x("div",od,[t(E,{theme:"primary",size:"large",block:"",class:"!rounded-xl shadow-sm",onClick:N},{default:o(()=>[..._[31]||(_[31]=[m("刷新页面",-1)])]),_:1})])):K("",!0),I.value?(l(),x("div",ad,[t(E,{variant:"outline",size:"large",block:"",class:"!rounded-xl",onClick:U},{default:o(()=>[..._[32]||(_[32]=[m("我知道了",-1)])]),_:1})])):K("",!0),u.value?(l(),x("div",sd,[t(E,{theme:"primary",size:"large",block:"",class:"!rounded-xl shadow-sm",onClick:T},{default:o(()=>[..._[33]||(_[33]=[m("前往实例列表管理",-1)])]),_:1}),t(E,{variant:"outline",size:"large",block:"",class:"!rounded-xl !m-0",onClick:U},{default:o(()=>[..._[34]||(_[34]=[m("暂不更新",-1)])]),_:1})])):K("",!0)]),_:1},8,["visible"])}}}),rd=me(ld,[["__scopeId","data-v-d3e49ecc"]]),nd=de({__name:"App",setup(a){const s=ut(),r=pa(),d=te(()=>s.displayMode),i=window.matchMedia("(prefers-color-scheme: dark)"),c=f=>{s.setSystemTheme(f.matches?"dark":"light")};return ze(()=>{r.checkAppUpdate(!1),i.addEventListener("change",c),s.setSystemTheme(i.matches?"dark":"light")}),He(()=>{i.removeEventListener("change",c)}),(f,n)=>{const v=h("router-view");return l(),x(re,null,[t(v,{class:ue([d.value])},null,8,["class"]),t(rd,{visible:w(r).showUpdateModal,"update-info":w(r).updateInfo,"download-info":w(r).downloadInfo,onClose:n[0]||(n[0]=I=>w(r).showUpdateModal=!1),onSkip:w(r).handleSkipVersion},null,8,["visible","update-info","download-info","onSkip"])],64)}}}),id=me(nd,[["__scopeId","data-v-ae5a7772"]]),To=tl(id);To.use(ol);To.use(Bo);To.use(ht);To.mount("#app");console.log(` ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣶⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⠿⠛⠋⠉⠩⣄⠘⢿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⡏⠑⠒⠀⠀⣀⣀⠀⠀⢹⠈⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ diff --git a/MSLX.Daemon/Frontend/assets/js/mslx-entry.rmwTM72S.js b/MSLX.Daemon/Frontend/assets/js/mslx-entry.DOv2xkjK.js similarity index 93% rename from MSLX.Daemon/Frontend/assets/js/mslx-entry.rmwTM72S.js rename to MSLX.Daemon/Frontend/assets/js/mslx-entry.DOv2xkjK.js index aa4c250..d7b8f91 100644 --- a/MSLX.Daemon/Frontend/assets/js/mslx-entry.rmwTM72S.js +++ b/MSLX.Daemon/Frontend/assets/js/mslx-entry.DOv2xkjK.js @@ -1 +1 @@ -import"./mslx-app-main.Cdym3WOG.js";import"./mslx-core.DZWTbFWd.js";import"./mslx-libs.BfFW5N8o.js";import"./mslx-editor.DiM-SrP0.js";import"./mslx-charts.ByXhkWPm.js";import"./mslx-formatter.DCunR7Lr.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))i(e);new MutationObserver(e=>{for(const r of e)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function s(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?r.credentials="include":e.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(e){if(e.ep)return;e.ep=!0;const r=s(e);fetch(e.href,r)}})(); +import"./mslx-app-main.mQdZM5Pc.js";import"./mslx-core.DZWTbFWd.js";import"./mslx-libs.BfFW5N8o.js";import"./mslx-editor.DiM-SrP0.js";import"./mslx-charts.ByXhkWPm.js";import"./mslx-formatter.DCunR7Lr.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const e of document.querySelectorAll('link[rel="modulepreload"]'))i(e);new MutationObserver(e=>{for(const r of e)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function s(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?r.credentials="include":e.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(e){if(e.ep)return;e.ep=!0;const r=s(e);fetch(e.href,r)}})(); diff --git a/MSLX.Daemon/Frontend/build.json b/MSLX.Daemon/Frontend/build.json index 1129b48..76a22db 100644 --- a/MSLX.Daemon/Frontend/build.json +++ b/MSLX.Daemon/Frontend/build.json @@ -1,6 +1,6 @@ { - "version": "1.3.5", - "buildTime": "2026-04-05 17:10:36", + "version": "1.3.5.1", + "buildTime": "2026-04-05 17:25:31", "dependencies": { "@codemirror/lang-javascript": "^6.2.4", "@codemirror/lang-json": "^6.0.2", @@ -74,10 +74,40 @@ "vite-svg-loader": "^5.1.0", "vue-tsc": "^2.0.26" }, - "commitId": "89086442333f955353a835b9330c3527a3a5699a", - "commitMsg": "fix(webpanel): 修复部分输入框的异常样式", + "commitId": "5f60e847653ef56543b803880a92bd60b350d0c6", + "commitMsg": "Merge remote-tracking branch 'origin/master' into dev", "commitAuthor": "luluxiaoyu", "history": [ + { + "commitId": "5f60e847653ef56543b803880a92bd60b350d0c6", + "commitTime": "2026-04-05 17:15:42 +0800", + "commitAuthor": "luluxiaoyu", + "commitMsg": "Merge remote-tracking branch 'origin/master' into dev" + }, + { + "commitId": "b7762d4ef05c4db2f5ba4b4fe893d29751c7b1d2", + "commitTime": "2026-04-05 17:13:46 +0800", + "commitAuthor": "小宇", + "commitMsg": "Merge pull request #104 from MSLTeam/dev" + }, + { + "commitId": "d22cbe0652bbca6d60f33aa3f7984bc0e225460a", + "commitTime": "2026-04-05 17:12:27 +0800", + "commitAuthor": "luluxiaoyu", + "commitMsg": "Merge remote-tracking branch 'origin/dev' into dev" + }, + { + "commitId": "f523ae2a4d6864267bfcec97c255420f9d62d888", + "commitTime": "2026-04-05 17:12:08 +0800", + "commitAuthor": "luluxiaoyu", + "commitMsg": "bumpver(webpanel & daemon): 更新到v1.3.5版本" + }, + { + "commitId": "0ebd6e1deab2138fbb42ea95aa21deb1ed1430f3", + "commitTime": "2026-04-05 17:11:46 +0800", + "commitAuthor": "luluxiaoyu", + "commitMsg": "bumpver(webpanel & daemon): 更新到v1.3.5版本" + }, { "commitId": "89086442333f955353a835b9330c3527a3a5699a", "commitTime": "2026-04-05 17:09:09 +0800", @@ -347,36 +377,6 @@ "commitTime": "2026-03-15 20:10:55 +0800", "commitAuthor": "小宇", "commitMsg": "Merge pull request #89 from MSLTeam/dev" - }, - { - "commitId": "558fb06df97d94e6ceb9b5a2877577ee59a87c6f", - "commitTime": "2026-03-15 20:10:21 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "bumpver(daemon): 更新版本号到v1.3.2.1 - hotfix" - }, - { - "commitId": "3b1ad5b16dd8df7d06d029de69f127bcefa1fc8f", - "commitTime": "2026-03-15 20:07:51 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "fix(daemon & desktop): 修复设备ID生成逻辑" - }, - { - "commitId": "c2b90d80a445025ad522cdfad717d2be71c101b3", - "commitTime": "2026-03-15 19:05:46 +0800", - "commitAuthor": "小宇", - "commitMsg": "Merge pull request #88 from MSLTeam/dev" - }, - { - "commitId": "0d45b15eb4acf9ddb7f9a5cd31c9b8bc3fc4c613", - "commitTime": "2026-03-15 19:04:05 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "bumpver(daemon & webpanel): 更新到v1.3.2-release版本" - }, - { - "commitId": "714cd36da2546115625fe76f2e9e1f2977034343", - "commitTime": "2026-03-15 18:06:09 +0800", - "commitAuthor": "luluxiaoyu", - "commitMsg": "fix(webpanel): 修复实例设置-更多功能内容无法正常重载的问题" } ] } \ No newline at end of file diff --git a/MSLX.Daemon/Frontend/index.html b/MSLX.Daemon/Frontend/index.html index 4cace27..6a845c6 100644 --- a/MSLX.Daemon/Frontend/index.html +++ b/MSLX.Daemon/Frontend/index.html @@ -5,13 +5,13 @@ MSLX Web Panel - + - + diff --git a/MSLX.Daemon/MSLX.Daemon.csproj b/MSLX.Daemon/MSLX.Daemon.csproj index 542af7e..45f55f0 100644 --- a/MSLX.Daemon/MSLX.Daemon.csproj +++ b/MSLX.Daemon/MSLX.Daemon.csproj @@ -6,9 +6,9 @@ enable true icon.ico - 1.3.5-release - 1.3.5 - 1.3.5 + 1.3.5.1-release + 1.3.5.1 + 1.3.5.1 Copyright © 2021 - 2026 MSLTeam MSLX-Daemon MSLX.Daemon diff --git a/MSLX.WebPanel/package.json b/MSLX.WebPanel/package.json index 03b72c2..1247f97 100644 --- a/MSLX.WebPanel/package.json +++ b/MSLX.WebPanel/package.json @@ -1,6 +1,6 @@ { "name": "mslx-webpanel", - "version": "1.3.5", + "version": "1.3.5.1", "scripts": { "dev": "vite --mode development", "dev:linux": "vite --mode development",