diff --git a/README.md b/README.md index 0d9e306f..e625ea86 100644 --- a/README.md +++ b/README.md @@ -6,5 +6,5 @@ This branch contains the pre-built frontend assets for Claude Relay Service. These files are automatically generated by the CI/CD pipeline. -Version: 1.1.117 -Build Date: 2025-08-22 16:02:05 UTC +Version: 1.1.118 +Build Date: 2025-08-23 12:29:28 UTC diff --git a/assets/AccountsView-B3Ip8fto.css b/assets/AccountsView-B3Ip8fto.css deleted file mode 100644 index fda11dd9..00000000 --- a/assets/AccountsView-B3Ip8fto.css +++ /dev/null @@ -1 +0,0 @@ -.modal[data-v-c629d8ff]{background:#00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dark{background:#000000b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.loading-spinner[data-v-4463372c]{width:24px;height:24px;border:2px solid #e5e7eb;border-top:2px solid #3b82f6;border-radius:50%;animation:spin-4463372c 1s linear infinite}@keyframes spin-4463372c{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.accounts-container[data-v-4463372c]{min-height:calc(100vh - 300px)}.table-container[data-v-4463372c]{overflow-x:auto;border-radius:12px;border:1px solid rgba(0,0,0,.05)}.table-row[data-v-4463372c]{transition:all .2s ease}.table-row[data-v-4463372c]:hover{background-color:#00000005} diff --git a/assets/AccountsView-BtGq4rQp.css b/assets/AccountsView-BtGq4rQp.css new file mode 100644 index 00000000..0ac27a69 --- /dev/null +++ b/assets/AccountsView-BtGq4rQp.css @@ -0,0 +1 @@ +.modal[data-v-c629d8ff]{background:#00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dark{background:#000000b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.loading-spinner[data-v-c2f46f02]{width:24px;height:24px;border:2px solid #e5e7eb;border-top:2px solid #3b82f6;border-radius:50%;animation:spin-c2f46f02 1s linear infinite}@keyframes spin-c2f46f02{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.accounts-container[data-v-c2f46f02]{min-height:calc(100vh - 300px)}.table-container[data-v-c2f46f02]{overflow-x:auto;border-radius:12px;border:1px solid rgba(0,0,0,.05)}.table-row[data-v-c2f46f02]{transition:all .2s ease}.table-row[data-v-c2f46f02]:hover{background-color:#00000005} diff --git a/assets/AccountsView-CxtkDnoV.js b/assets/AccountsView-CxtkDnoV.js new file mode 100644 index 00000000..3dcb7763 --- /dev/null +++ b/assets/AccountsView-CxtkDnoV.js @@ -0,0 +1,15 @@ +import{a as tt}from"./element-plus-Bq6mBxnk.js";import{r as $,aR as st,o as J,V as at,x as i,y as n,z as e,L as w,K as y,al as ve,aX as Ie,aW as qe,aq as T,aY as lt,C as R,O as C,c as ke,P as v,I as we,a5 as Be,q as Ye,an as B,Q as pe,ac as me,R as ce,u as ee,J as rt,Y as Ge,B as We}from"./vue-vendor-Ig-GgGwA.js";import{s as I}from"./toast-BvwA7Mwb.js";import{b as S,_ as Qe}from"./index-CY9cPBXr.js";import{C as Fe}from"./CustomDropdown-C7e2WJat.js";import"./vendor-BDiMbLwQ.js";const Ee=$(!1),_e=$({title:"",message:"",confirmText:"继续",cancelText:"取消"}),be=$(null);function Xe(){return{showConfirmModal:Ee,confirmOptions:_e,showConfirm:(H,A,P="继续",k="取消")=>new Promise(g=>{_e.value={title:H,message:A,confirmText:P,cancelText:k},be.value=g,Ee.value=!0}),handleConfirm:()=>{Ee.value=!1,be.value&&(be.value(!0),be.value=null)},handleCancel:()=>{Ee.value=!1,be.value&&(be.value(!1),be.value=null)}}}const Ze=st("accounts",()=>{const N=$([]),Y=$([]),c=$([]),H=$([]),A=$([]),P=$([]),k=$(!1),g=$(null),U=$(""),z=$("asc"),f=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/claude-accounts");if(m.success)N.value=m.data||[];else throw new Error(m.message||"获取Claude账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}},D=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/claude-console-accounts");if(m.success)Y.value=m.data||[];else throw new Error(m.message||"获取Claude Console账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}},j=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/bedrock-accounts");if(m.success)c.value=m.data||[];else throw new Error(m.message||"获取Bedrock账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}},G=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/gemini-accounts");if(m.success)H.value=m.data||[];else throw new Error(m.message||"获取Gemini账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}},E=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/openai-accounts");if(m.success)A.value=m.data||[];else throw new Error(m.message||"获取OpenAI账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}},_=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/azure-openai-accounts");if(m.success)P.value=m.data||[];else throw new Error(m.message||"获取Azure OpenAI账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}};return{claudeAccounts:N,claudeConsoleAccounts:Y,bedrockAccounts:c,geminiAccounts:H,openaiAccounts:A,azureOpenaiAccounts:P,loading:k,error:g,sortBy:U,sortOrder:z,fetchClaudeAccounts:f,fetchClaudeConsoleAccounts:D,fetchBedrockAccounts:j,fetchGeminiAccounts:G,fetchOpenAIAccounts:E,fetchAzureOpenAIAccounts:_,fetchAllAccounts:async()=>{k.value=!0,g.value=null;try{await Promise.all([f(),D(),j(),G(),E(),_()])}catch(m){throw g.value=m.message,m}finally{k.value=!1}},createClaudeAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/claude-accounts",m);if(u.success)return await f(),u.data;throw new Error(u.message||"创建Claude账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},createClaudeConsoleAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/claude-console-accounts",m);if(u.success)return await D(),u.data;throw new Error(u.message||"创建Claude Console账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},createBedrockAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/bedrock-accounts",m);if(u.success)return await j(),u.data;throw new Error(u.message||"创建Bedrock账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},createGeminiAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/gemini-accounts",m);if(u.success)return await G(),u.data;throw new Error(u.message||"创建Gemini账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},createOpenAIAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/openai-accounts",m);if(u.success)return await E(),u.data;throw new Error(u.message||"创建OpenAI账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},createAzureOpenAIAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/azure-openai-accounts",m);if(u.success)return await _(),u.data;throw new Error(u.message||"创建Azure OpenAI账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},updateClaudeAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/claude-accounts/${m}`,u);if(b.success)return await f(),b;throw new Error(b.message||"更新Claude账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},updateClaudeConsoleAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/claude-console-accounts/${m}`,u);if(b.success)return await D(),b;throw new Error(b.message||"更新Claude Console账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},updateBedrockAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/bedrock-accounts/${m}`,u);if(b.success)return await j(),b;throw new Error(b.message||"更新Bedrock账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},updateGeminiAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/gemini-accounts/${m}`,u);if(b.success)return await G(),b;throw new Error(b.message||"更新Gemini账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},updateOpenAIAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/openai-accounts/${m}`,u);if(b.success)return await E(),b;throw new Error(b.message||"更新OpenAI账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},updateAzureOpenAIAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/azure-openai-accounts/${m}`,u);if(b.success)return await _(),b;throw new Error(b.message||"更新Azure OpenAI账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},toggleAccount:async(m,u)=>{k.value=!0,g.value=null;try{let b;m==="claude"?b=`/admin/claude-accounts/${u}/toggle`:m==="claude-console"?b=`/admin/claude-console-accounts/${u}/toggle`:m==="bedrock"?b=`/admin/bedrock-accounts/${u}/toggle`:m==="gemini"?b=`/admin/gemini-accounts/${u}/toggle`:m==="openai"?b=`/admin/openai-accounts/${u}/toggle`:m==="azure_openai"?b=`/admin/azure-openai-accounts/${u}/toggle`:b=`/admin/openai-accounts/${u}/toggle`;const le=await S.put(b);if(le.success)return m==="claude"?await f():m==="claude-console"?await D():m==="bedrock"?await j():m==="gemini"?await G():m==="openai"?await E():m==="azure_openai"?await _():await E(),le;throw new Error(le.message||"切换状态失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},deleteAccount:async(m,u)=>{k.value=!0,g.value=null;try{let b;m==="claude"?b=`/admin/claude-accounts/${u}`:m==="claude-console"?b=`/admin/claude-console-accounts/${u}`:m==="bedrock"?b=`/admin/bedrock-accounts/${u}`:m==="gemini"?b=`/admin/gemini-accounts/${u}`:m==="openai"?b=`/admin/openai-accounts/${u}`:m==="azure_openai"?b=`/admin/azure-openai-accounts/${u}`:b=`/admin/openai-accounts/${u}`;const le=await S.delete(b);if(le.success)return m==="claude"?await f():m==="claude-console"?await D():m==="bedrock"?await j():m==="gemini"?await G():m==="openai"?await E():m==="azure_openai"?await _():await E(),le;throw new Error(le.message||"删除失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},refreshClaudeToken:async m=>{k.value=!0,g.value=null;try{const u=await S.post(`/admin/claude-accounts/${m}/refresh`);if(u.success)return await f(),u;throw new Error(u.message||"Token刷新失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},generateClaudeAuthUrl:async m=>{try{const u=await S.post("/admin/claude-accounts/generate-auth-url",m);if(u.success)return u.data;throw new Error(u.message||"生成授权URL失败")}catch(u){throw g.value=u.message,u}},exchangeClaudeCode:async m=>{try{const u=await S.post("/admin/claude-accounts/exchange-code",m);if(u.success)return u.data;throw new Error(u.message||"交换授权码失败")}catch(u){throw g.value=u.message,u}},generateClaudeSetupTokenUrl:async m=>{try{const u=await S.post("/admin/claude-accounts/generate-setup-token-url",m);if(u.success)return u.data;throw new Error(u.message||"生成Setup Token URL失败")}catch(u){throw g.value=u.message,u}},exchangeClaudeSetupTokenCode:async m=>{try{const u=await S.post("/admin/claude-accounts/exchange-setup-token-code",m);if(u.success)return u.data;throw new Error(u.message||"交换Setup Token授权码失败")}catch(u){throw g.value=u.message,u}},generateGeminiAuthUrl:async m=>{try{const u=await S.post("/admin/gemini-accounts/generate-auth-url",m);if(u.success)return u.data;throw new Error(u.message||"生成授权URL失败")}catch(u){throw g.value=u.message,u}},exchangeGeminiCode:async m=>{try{const u=await S.post("/admin/gemini-accounts/exchange-code",m);if(u.success)return u.data;throw new Error(u.message||"交换授权码失败")}catch(u){throw g.value=u.message,u}},generateOpenAIAuthUrl:async m=>{try{const u=await S.post("/admin/openai-accounts/generate-auth-url",m);if(u.success)return u.data;throw new Error(u.message||"生成授权URL失败")}catch(u){throw g.value=u.message,u}},exchangeOpenAICode:async m=>{try{const u=await S.post("/admin/openai-accounts/exchange-code",m);if(u.success)return u.data;throw new Error(u.message||"交换授权码失败")}catch(u){throw g.value=u.message,u}},sortAccounts:m=>{U.value===m?z.value=z.value==="asc"?"desc":"asc":(U.value=m,z.value="asc")},reset:()=>{N.value=[],Y.value=[],c.value=[],H.value=[],A.value=[],P.value=[],k.value=!1,g.value=null,U.value="",z.value="asc"}}}),ot={class:"space-y-4"},nt={class:"flex items-center justify-between"},it={class:"flex cursor-pointer items-center"},ut={key:0,class:"space-y-4 rounded-lg border border-gray-200 bg-gray-50 p-4 dark:border-gray-600 dark:bg-gray-800"},dt={class:"grid grid-cols-2 gap-4"},pt={class:"space-y-4"},mt={class:"flex items-center"},ct={key:0,class:"grid grid-cols-2 gap-4"},gt={class:"relative"},xt=["type"],He={__name:"ProxyConfig",props:{modelValue:{type:Object,default:()=>({enabled:!1,type:"socks5",host:"",port:"",username:"",password:""})}},emits:["update:modelValue"],setup(N,{emit:Y}){const c=N,H=Y,A=$({...c.modelValue}),P=$(!!(A.value.username||A.value.password)),k=$(!1);J(()=>c.modelValue,z=>{JSON.stringify(z)!==JSON.stringify(A.value)&&(A.value={...z},P.value=!!(z.username||z.password))},{deep:!0}),J(()=>A.value.enabled,()=>{U()}),J(()=>A.value.type,()=>{U()}),J(()=>A.value.host,()=>{U()}),J(()=>A.value.port,()=>{U()}),J(()=>A.value.username,()=>{U()}),J(()=>A.value.password,()=>{U()}),J(P,z=>{z||(A.value.username="",A.value.password="",U())});let g=null;function U(){g&&clearTimeout(g),g=setTimeout(()=>{const z={...A.value};P.value||(z.username="",z.password=""),H("update:modelValue",z)},100)}return at(()=>{g&&clearTimeout(g)}),(z,f)=>(n(),i("div",ot,[e("div",nt,[f[9]||(f[9]=e("h4",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"代理设置 (可选)",-1)),e("label",it,[y(e("input",{"onUpdate:modelValue":f[0]||(f[0]=D=>A.value.enabled=D),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ve,A.value.enabled]]),f[8]||(f[8]=e("span",{class:"ml-2 text-sm text-gray-700 dark:text-gray-300"},"启用代理",-1))])]),A.value.enabled?(n(),i("div",ut,[f[17]||(f[17]=Ie('

配置代理以访问受限的网络资源。支持 SOCKS5 和 HTTP 代理。

请确保代理服务器稳定可用,否则会影响账户的正常使用。

',1)),e("div",null,[f[11]||(f[11]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"代理类型",-1)),y(e("select",{"onUpdate:modelValue":f[1]||(f[1]=D=>A.value.type=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200"},f[10]||(f[10]=[e("option",{value:"socks5"},"SOCKS5",-1),e("option",{value:"http"},"HTTP",-1),e("option",{value:"https"},"HTTPS",-1)]),512),[[qe,A.value.type]])]),e("div",dt,[e("div",null,[f[12]||(f[12]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"主机地址",-1)),y(e("input",{"onUpdate:modelValue":f[2]||(f[2]=D=>A.value.host=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 192.168.1.100",type:"text"},null,512),[[T,A.value.host]])]),e("div",null,[f[13]||(f[13]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"端口",-1)),y(e("input",{"onUpdate:modelValue":f[3]||(f[3]=D=>A.value.port=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 1080",type:"number"},null,512),[[T,A.value.port]])])]),e("div",pt,[e("div",mt,[y(e("input",{id:"proxyAuth","onUpdate:modelValue":f[4]||(f[4]=D=>P.value=D),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ve,P.value]]),f[14]||(f[14]=e("label",{class:"ml-2 cursor-pointer text-sm text-gray-700 dark:text-gray-300",for:"proxyAuth"}," 需要身份验证 ",-1))]),P.value?(n(),i("div",ct,[e("div",null,[f[15]||(f[15]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"用户名",-1)),y(e("input",{"onUpdate:modelValue":f[5]||(f[5]=D=>A.value.username=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理用户名",type:"text"},null,512),[[T,A.value.username]])]),e("div",null,[f[16]||(f[16]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"密码",-1)),e("div",gt,[y(e("input",{"onUpdate:modelValue":f[6]||(f[6]=D=>A.value.password=D),class:"form-input w-full pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理密码",type:k.value?"text":"password"},null,8,xt),[[lt,A.value.password]]),e("button",{class:"absolute inset-y-0 right-0 flex items-center pr-3 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:f[7]||(f[7]=D=>k.value=!k.value)},[e("i",{class:R(k.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])])])])):w("",!0)]),f[18]||(f[18]=e("div",{class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-300"},[e("i",{class:"fas fa-info-circle mr-1"}),e("strong",null,"提示:"),C("代理设置将用于所有与此账户相关的API请求。请确保代理服务器支持HTTPS流量转发。 ")])],-1))])):w("",!0)]))}},yt={class:"space-y-6"},ft={key:0},bt={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},vt={class:"flex items-start gap-4"},kt={class:"flex-1"},wt={class:"space-y-4"},ht={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},$t={class:"flex items-start gap-3"},At={class:"flex-1"},Ct=["disabled"],Tt={key:0,class:"fas fa-link mr-2"},It={key:1,class:"loading-spinner mr-2"},Ut={key:1,class:"space-y-3"},St={class:"flex items-center gap-2"},Vt=["value"],zt={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Kt={class:"flex items-start gap-3"},Mt={class:"flex-1"},Ot={class:"space-y-3"},Lt={key:1},jt={class:"rounded-lg border border-green-200 bg-green-50 p-6 dark:border-green-700 dark:bg-green-900/30"},Rt={class:"flex items-start gap-4"},Dt={class:"flex-1"},Pt={class:"space-y-4"},Gt={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},Et={class:"flex items-start gap-3"},Wt={class:"flex-1"},Ft=["disabled"],qt={key:0,class:"fas fa-link mr-2"},Bt={key:1,class:"loading-spinner mr-2"},Nt={key:1,class:"space-y-3"},_t={class:"flex items-center gap-2"},Ht=["value"],Jt={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},Yt={class:"flex items-start gap-3"},Qt={class:"flex-1"},Xt={class:"space-y-3"},Zt={key:2},es={class:"rounded-lg border border-orange-200 bg-orange-50 p-6 dark:border-orange-700 dark:bg-orange-900/30"},ts={class:"flex items-start gap-4"},ss={class:"flex-1"},as={class:"space-y-4"},ls={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},rs={class:"flex items-start gap-3"},os={class:"flex-1"},ns=["disabled"],is={key:0,class:"fas fa-link mr-2"},us={key:1,class:"loading-spinner mr-2"},ds={key:1,class:"space-y-3"},ps={class:"flex items-center gap-2"},ms=["value"],cs={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},gs={class:"flex items-start gap-3"},xs={class:"flex-1"},ys={class:"space-y-3"},fs={class:"flex gap-3 pt-4"},bs=["disabled"],vs={key:0,class:"loading-spinner mr-2"},ks={__name:"OAuthFlow",props:{platform:{type:String,required:!0},proxy:{type:Object,default:null}},emits:["success","back"],setup(N,{emit:Y}){const c=N,H=Y,A=Ze(),P=$(!1),k=$(!1),g=$(""),U=$(""),z=$(!1),f=$(""),D=ke(()=>g.value&&U.value.trim());J(U,W=>{if(!W||typeof W!="string")return;const p=W.trim();if(!p)return;if(p.startsWith("http://")||p.startsWith("https://"))if(p.startsWith("http://localhost:45462")||p.startsWith("http://localhost:1455"))try{const ae=new URL(p).searchParams.get("code");ae?(U.value=ae,I("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):I("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(X){console.error("Failed to parse URL:",X),I("链接格式错误,请检查是否为完整的 URL","error")}else if(c.platform==="gemini"||c.platform==="openai")try{const ae=new URL(p).searchParams.get("code");ae&&(U.value=ae,I("成功提取授权码!","success"))}catch{}else I("请粘贴以 http://localhost:1455 或 http://localhost:45462 开头的链接","error")});const j=async()=>{var W;P.value=!0;try{const p=(W=c.proxy)!=null&&W.enabled?{proxy:{type:c.proxy.type,host:c.proxy.host,port:parseInt(c.proxy.port),username:c.proxy.username||null,password:c.proxy.password||null}}:{};if(c.platform==="claude"){const L=await A.generateClaudeAuthUrl(p);g.value=L.authUrl,f.value=L.sessionId}else if(c.platform==="gemini"){const L=await A.generateGeminiAuthUrl(p);g.value=L.authUrl,f.value=L.sessionId}else if(c.platform==="openai"){const L=await A.generateOpenAIAuthUrl(p);g.value=L.authUrl,f.value=L.sessionId}}catch(p){I(p.message||"生成授权链接失败","error")}finally{P.value=!1}},G=()=>{g.value="",U.value="",j()},E=async()=>{try{await navigator.clipboard.writeText(g.value),z.value=!0,I("链接已复制","success"),setTimeout(()=>{z.value=!1},2e3)}catch{const p=document.createElement("input");p.value=g.value,document.body.appendChild(p),p.select(),document.execCommand("copy"),document.body.removeChild(p),z.value=!0,I("链接已复制","success"),setTimeout(()=>{z.value=!1},2e3)}},_=async()=>{var W;if(D.value){k.value=!0;try{let p={};c.platform==="claude"?p={sessionId:f.value,callbackUrl:U.value.trim()}:c.platform==="gemini"?p={code:U.value.trim(),sessionId:f.value}:c.platform==="openai"&&(p={code:U.value.trim(),sessionId:f.value}),(W=c.proxy)!=null&&W.enabled&&(p.proxy={type:c.proxy.type,host:c.proxy.host,port:parseInt(c.proxy.port),username:c.proxy.username||null,password:c.proxy.password||null});let L;c.platform==="claude"?L=await A.exchangeClaudeCode(p):c.platform==="gemini"?L=await A.exchangeGeminiCode(p):c.platform==="openai"&&(L=await A.exchangeOpenAICode(p)),H("success",L)}catch(p){I(p.message||"授权失败,请检查授权码是否正确","error")}finally{k.value=!1}}};return(W,p)=>(n(),i("div",yt,[N.platform==="claude"?(n(),i("div",ft,[e("div",bt,[e("div",vt,[p[15]||(p[15]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-link text-white"})],-1)),e("div",kt,[p[13]||(p[13]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"},"Claude 账户授权",-1)),p[14]||(p[14]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤完成 Claude 账户的授权: ",-1)),e("div",wt,[e("div",ht,[e("div",$t,[p[6]||(p[6]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",At,[p[5]||(p[5]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),g.value?(n(),i("div",Ut,[e("div",St,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:g.value},null,8,Vt),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:E},[e("i",{class:R(z.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:G},p[4]||(p[4]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:P.value,onClick:j},[P.value?(n(),i("div",It)):(n(),i("i",Tt)),C(" "+v(P.value?"生成中...":"生成授权链接"),1)],8,Ct))])])]),p[12]||(p[12]=Ie('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Claude 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",zt,[e("div",Kt,[p[11]||(p[11]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Mt,[p[9]||(p[9]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),p[10]||(p[10]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"},[C(" 授权完成后,页面会显示一个 "),e("strong",null,"Authorization Code"),C(",请将其复制并粘贴到下方输入框: ")],-1)),e("div",Ot,[e("div",null,[p[7]||(p[7]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),C("Authorization Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":p[0]||(p[0]=L=>U.value=L),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Claude页面获取的Authorization Code...",rows:"3"},null,512),[[T,U.value]])]),p[8]||(p[8]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 请粘贴从Claude页面复制的Authorization Code ")],-1))])])])])])])])])])):N.platform==="gemini"?(n(),i("div",Lt,[e("div",jt,[e("div",Rt,[p[27]||(p[27]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-green-500"},[e("i",{class:"fas fa-robot text-white"})],-1)),e("div",Dt,[p[25]||(p[25]=e("h4",{class:"mb-3 font-semibold text-green-900 dark:text-green-200"},"Gemini 账户授权",-1)),p[26]||(p[26]=e("p",{class:"mb-4 text-sm text-green-800 dark:text-green-300"}," 请按照以下步骤完成 Gemini 账户的授权: ",-1)),e("div",Pt,[e("div",Gt,[e("div",Et,[p[18]||(p[18]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Wt,[p[17]||(p[17]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 点击下方按钮生成授权链接 ",-1)),g.value?(n(),i("div",Nt,[e("div",_t,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:g.value},null,8,Ht),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:E},[e("i",{class:R(z.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-green-600 hover:text-green-700",onClick:G},p[16]||(p[16]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:P.value,onClick:j},[P.value?(n(),i("div",Bt)):(n(),i("i",qt)),C(" "+v(P.value?"生成中...":"生成授权链接"),1)],8,Ft))])])]),p[24]||(p[24]=Ie('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Gemini 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",Jt,[e("div",Yt,[p[23]||(p[23]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Qt,[p[21]||(p[21]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 输入 Authorization Code ",-1)),p[22]||(p[22]=e("p",{class:"mb-3 text-sm text-green-700 dark:text-green-300"}," 授权完成后,页面会显示一个 Authorization Code,请将其复制并粘贴到下方输入框: ",-1)),e("div",Xt,[e("div",null,[p[19]||(p[19]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-green-500"}),C("Authorization Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":p[1]||(p[1]=L=>U.value=L),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Gemini页面获取的Authorization Code...",rows:"3"},null,512),[[T,U.value]])]),p[20]||(p[20]=e("div",{class:"mt-2 space-y-1"},[e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},[e("i",{class:"fas fa-check-circle mr-1 text-green-500"}),C(" 请粘贴从Gemini页面复制的Authorization Code ")])],-1))])])])])])])])])])):N.platform==="openai"?(n(),i("div",Zt,[e("div",es,[e("div",ts,[p[39]||(p[39]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-orange-500"},[e("i",{class:"fas fa-brain text-white"})],-1)),e("div",ss,[p[37]||(p[37]=e("h4",{class:"mb-3 font-semibold text-orange-900 dark:text-orange-200"},"OpenAI 账户授权",-1)),p[38]||(p[38]=e("p",{class:"mb-4 text-sm text-orange-800 dark:text-orange-300"}," 请按照以下步骤完成 OpenAI 账户的授权: ",-1)),e("div",as,[e("div",ls,[e("div",rs,[p[30]||(p[30]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",os,[p[29]||(p[29]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 点击下方按钮生成授权链接 ",-1)),g.value?(n(),i("div",ds,[e("div",ps,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:g.value},null,8,ms),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:E},[e("i",{class:R(z.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-orange-600 hover:text-orange-700",onClick:G},p[28]||(p[28]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:P.value,onClick:j},[P.value?(n(),i("div",us)):(n(),i("i",is)),C(" "+v(P.value?"生成中...":"生成授权链接"),1)],8,ns))])])]),p[36]||(p[36]=Ie('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 OpenAI 账户并授权。

重要提示:授权后页面可能会加载较长时间,请耐心等待。

当浏览器地址栏变为 http://localhost:1455/... 开头时,表示授权已完成。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",cs,[e("div",gs,[p[35]||(p[35]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",xs,[p[33]||(p[33]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 输入授权链接或 Code ",-1)),p[34]||(p[34]=e("p",{class:"mb-3 text-sm text-orange-700 dark:text-orange-300"},[C(" 授权完成后,当页面地址变为 "),e("strong",{class:"font-mono"},"http://localhost:1455/..."),C(" 时: ")],-1)),e("div",ys,[e("div",null,[p[31]||(p[31]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-link mr-2 text-orange-500"}),C("授权链接或 Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":p[2]||(p[2]=L=>U.value=L),class:"form-input w-full resize-none font-mono text-sm",placeholder:`方式1:复制完整的链接(http://localhost:1455/auth/callback?code=...) +方式2:仅复制 code 参数的值 +系统会自动识别并提取所需信息`,rows:"3"},null,512),[[T,U.value]])]),p[32]||(p[32]=Ie('

提示:您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别。

• 完整链接示例:http://localhost:1455/auth/callback?code=ac_4hm8...

• 仅 Code 示例:ac_4hm8iqmx9A2fzMy_cwye7U3W7...

',1))])])])])])])])])])):w("",!0),e("div",fs,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:p[3]||(p[3]=L=>W.$emit("back"))}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!D.value||k.value,type:"button",onClick:_},[k.value?(n(),i("div",vs)):w("",!0),C(" "+v(k.value?"验证中...":"完成授权"),1)],8,bs)])]))}},ws={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},hs={class:"modal-content mx-auto w-full max-w-md rounded-2xl bg-white p-6 shadow-xl dark:bg-gray-800"},$s={class:"mb-6 flex items-start gap-4"},As={class:"flex-1"},Cs={class:"mb-2 text-lg font-bold text-gray-900 dark:text-white"},Ts={class:"whitespace-pre-line text-sm leading-relaxed text-gray-700 dark:text-gray-300"},Is={class:"flex gap-3"},Us={__name:"ConfirmModal",props:{show:{type:Boolean,required:!0},title:{type:String,default:""},message:{type:String,default:""},confirmText:{type:String,default:"继续"},cancelText:{type:String,default:"取消"}},emits:["confirm","cancel"],setup(N){return(Y,c)=>(n(),we(Be,{to:"body"},[N.show?(n(),i("div",ws,[e("div",hs,[e("div",$s,[c[2]||(c[2]=e("div",{class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-yellow-400 to-yellow-500"},[e("i",{class:"fas fa-exclamation text-xl text-white"})],-1)),e("div",As,[e("h3",Cs,v(N.title),1),e("p",Ts,v(N.message),1)])]),e("div",Is,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-4 py-2.5 font-medium text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600",onClick:c[0]||(c[0]=H=>Y.$emit("cancel"))},v(N.cancelText),1),e("button",{class:"flex-1 rounded-xl bg-gradient-to-r from-yellow-500 to-orange-500 px-4 py-2.5 font-medium text-white shadow-sm transition-colors hover:from-yellow-600 hover:to-orange-600",onClick:c[1]||(c[1]=H=>Y.$emit("confirm"))},v(N.confirmText),1)])])])):w("",!0)]))}},et=Qe(Us,[["__scopeId","data-v-c629d8ff"]]),Ss={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Vs={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-4xl overflow-y-auto p-4 sm:p-6 md:p-8"},zs={class:"mb-4 flex items-center justify-between sm:mb-6"},Ks={class:"mb-6"},Ms={key:0,class:"mb-6 rounded-lg border border-blue-200 bg-blue-50 p-4"},Os={class:"space-y-4"},Ls={class:"flex gap-4"},js={class:"flex cursor-pointer items-center"},Rs={class:"flex cursor-pointer items-center"},Ds={class:"flex cursor-pointer items-center"},Ps={class:"flex gap-3"},Gs=["disabled"],Es={key:0,class:"loading-spinner mr-2"},Ws={class:"space-y-4"},Fs={key:0,class:"py-8 text-center"},qs={key:1,class:"rounded-lg bg-gray-50 py-8 text-center"},Bs={key:2,class:"grid grid-cols-1 gap-4 md:grid-cols-2"},Ns={class:"mb-3 flex items-start justify-between"},_s={class:"flex-1"},Hs={class:"font-semibold text-gray-900"},Js={class:"mt-1 text-sm text-gray-500"},Ys={class:"ml-4 flex items-center gap-2"},Qs={class:"flex items-center justify-between text-sm text-gray-600"},Xs={class:"flex items-center gap-4"},Zs={class:"flex items-center gap-2"},ea=["onClick"],ta=["disabled","onClick"],sa={key:1,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},aa={class:"modal-content w-full max-w-lg p-4 sm:p-6"},la={class:"space-y-4"},ra={class:"rounded-lg bg-gray-100 px-3 py-2 text-sm text-gray-600"},oa={class:"flex gap-3 pt-4"},na=["disabled"],ia={key:0,class:"loading-spinner mr-2"},ua={__name:"GroupManagementModal",emits:["close","refresh"],setup(N,{emit:Y}){const c=Y,H=$(!0),A=$(!1),P=$([]),k=$(!1),g=$(!1),U=$({name:"",platform:"claude",description:""}),z=$(!1),f=$(!1),D=$(null),j=$({name:"",platform:"",description:""}),G=s=>s?new Date(s).toLocaleDateString("zh-CN"):"-",E=async()=>{A.value=!0;try{const s=await S.get("/admin/account-groups");P.value=s.data||[]}catch{I("加载分组列表失败","error")}finally{A.value=!1}},_=async()=>{var s,x;if(!U.value.name||!U.value.platform){I("请填写必填项","error");return}g.value=!0;try{await S.post("/admin/account-groups",{name:U.value.name,platform:U.value.platform,description:U.value.description}),I("分组创建成功","success"),W(),await E(),c("refresh")}catch(K){I(((x=(s=K.response)==null?void 0:s.data)==null?void 0:x.error)||"创建分组失败","error")}finally{g.value=!1}},W=()=>{k.value=!1,U.value={name:"",platform:"claude",description:""}},p=s=>{D.value=s,j.value={name:s.name,platform:s.platform,description:s.description||""},z.value=!0},L=async()=>{var s,x;if(!j.value.name){I("请填写分组名称","error");return}f.value=!0;try{await S.put(`/admin/account-groups/${D.value.id}`,{name:j.value.name,description:j.value.description}),I("分组更新成功","success"),X(),await E(),c("refresh")}catch(K){I(((x=(s=K.response)==null?void 0:s.data)==null?void 0:x.error)||"更新分组失败","error")}finally{f.value=!1}},X=()=>{z.value=!1,D.value=null,j.value={name:"",platform:"",description:""}},ae=async s=>{var x,K;if(s.memberCount>0){I("分组内还有成员,无法删除","error");return}if(confirm(`确定要删除分组 "${s.name}" 吗?`))try{await S.delete(`/admin/account-groups/${s.id}`),I("分组删除成功","success"),await E(),c("refresh")}catch(h){I(((K=(x=h.response)==null?void 0:x.data)==null?void 0:K.error)||"删除分组失败","error")}};return Ye(()=>{E()}),(s,x)=>(n(),we(Be,{to:"body"},[H.value?(n(),i("div",Ss,[e("div",Vs,[e("div",zs,[x[10]||(x[10]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-layer-group text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 sm:text-xl"},"账户分组管理")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:x[0]||(x[0]=K=>s.$emit("close"))},x[9]||(x[9]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",Ks,[e("button",{class:"btn btn-primary px-4 py-2",onClick:x[1]||(x[1]=K=>k.value=!0)},x[11]||(x[11]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 创建新分组 ",-1)]))]),k.value?(n(),i("div",Ms,[x[18]||(x[18]=e("h4",{class:"mb-4 text-lg font-semibold text-gray-900"},"创建新分组",-1)),e("div",Os,[e("div",null,[x[12]||(x[12]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),y(e("input",{"onUpdate:modelValue":x[2]||(x[2]=K=>U.value.name=K),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[T,U.value.name]])]),e("div",null,[x[16]||(x[16]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型 *",-1)),e("div",Ls,[e("label",js,[y(e("input",{"onUpdate:modelValue":x[3]||(x[3]=K=>U.value.platform=K),class:"mr-2",type:"radio",value:"claude"},null,512),[[B,U.value.platform]]),x[13]||(x[13]=e("span",{class:"text-sm text-gray-700"},"Claude",-1))]),e("label",Rs,[y(e("input",{"onUpdate:modelValue":x[4]||(x[4]=K=>U.value.platform=K),class:"mr-2",type:"radio",value:"gemini"},null,512),[[B,U.value.platform]]),x[14]||(x[14]=e("span",{class:"text-sm text-gray-700"},"Gemini",-1))]),e("label",Ds,[y(e("input",{"onUpdate:modelValue":x[5]||(x[5]=K=>U.value.platform=K),class:"mr-2",type:"radio",value:"openai"},null,512),[[B,U.value.platform]]),x[15]||(x[15]=e("span",{class:"text-sm text-gray-700"},"OpenAI",-1))])])]),e("div",null,[x[17]||(x[17]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":x[6]||(x[6]=K=>U.value.description=K),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[T,U.value.description]])]),e("div",Ps,[e("button",{class:"btn btn-primary px-4 py-2",disabled:!U.value.name||!U.value.platform||g.value,onClick:_},[g.value?(n(),i("div",Es)):w("",!0),C(" "+v(g.value?"创建中...":"创建"),1)],8,Gs),e("button",{class:"btn btn-secondary px-4 py-2",onClick:W},"取消")])])])):w("",!0),e("div",Ws,[A.value?(n(),i("div",Fs,x[19]||(x[19]=[e("div",{class:"loading-spinner-lg mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500"},"加载中...",-1)]))):P.value.length===0?(n(),i("div",qs,x[20]||(x[20]=[e("i",{class:"fas fa-layer-group mb-4 text-4xl text-gray-300"},null,-1),e("p",{class:"text-gray-500"},"暂无分组",-1)]))):(n(),i("div",Bs,[(n(!0),i(pe,null,me(P.value,K=>(n(),i("div",{key:K.id,class:"rounded-lg border bg-white p-4 transition-shadow hover:shadow-md"},[e("div",Ns,[e("div",_s,[e("h4",Hs,v(K.name),1),e("p",Js,v(K.description||"暂无描述"),1)]),e("div",Ys,[e("span",{class:R(["rounded-full px-2 py-1 text-xs font-medium",K.platform==="claude"?"bg-purple-100 text-purple-700":K.platform==="gemini"?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"])},v(K.platform==="claude"?"Claude":K.platform==="gemini"?"Gemini":"OpenAI"),3)])]),e("div",Qs,[e("div",Xs,[e("span",null,[x[21]||(x[21]=e("i",{class:"fas fa-users mr-1"},null,-1)),C(" "+v(K.memberCount||0)+" 个成员 ",1)]),e("span",null,[x[22]||(x[22]=e("i",{class:"fas fa-clock mr-1"},null,-1)),C(" "+v(G(K.createdAt)),1)])]),e("div",Zs,[e("button",{class:"text-blue-600 transition-colors hover:text-blue-800",title:"编辑",onClick:h=>p(K)},x[23]||(x[23]=[e("i",{class:"fas fa-edit"},null,-1)]),8,ea),e("button",{class:"text-red-600 transition-colors hover:text-red-800",disabled:K.memberCount>0,title:"删除",onClick:h=>ae(K)},x[24]||(x[24]=[e("i",{class:"fas fa-trash"},null,-1)]),8,ta)])])]))),128))]))])])])):w("",!0),z.value?(n(),i("div",sa,[e("div",aa,[e("div",{class:"mb-4 flex items-center justify-between"},[x[26]||(x[26]=e("h3",{class:"text-lg font-bold text-gray-900"},"编辑分组",-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:X},x[25]||(x[25]=[e("i",{class:"fas fa-times"},null,-1)]))]),e("div",la,[e("div",null,[x[27]||(x[27]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),y(e("input",{"onUpdate:modelValue":x[7]||(x[7]=K=>j.value.name=K),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[T,j.value.name]])]),e("div",null,[x[29]||(x[29]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型",-1)),e("div",ra,[C(v(j.value.platform==="claude"?"Claude":j.value.platform==="gemini"?"Gemini":"OpenAI")+" ",1),x[28]||(x[28]=e("span",{class:"ml-2 text-xs text-gray-500"},"(不可修改)",-1))])]),e("div",null,[x[30]||(x[30]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":x[8]||(x[8]=K=>j.value.description=K),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[T,j.value.description]])]),e("div",oa,[e("button",{class:"btn btn-primary flex-1 px-4 py-2",disabled:!j.value.name||f.value,onClick:L},[f.value?(n(),i("div",ia)):w("",!0),C(" "+v(f.value?"更新中...":"更新"),1)],8,na),e("button",{class:"btn btn-secondary flex-1 px-4 py-2",onClick:X},"取消")])])])])):w("",!0)]))}},da={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},pa={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-2xl overflow-y-auto p-4 sm:p-6 md:p-8"},ma={class:"mb-4 flex items-center justify-between sm:mb-6"},ca={class:"flex items-center gap-2 sm:gap-3"},ga={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},xa={key:0,class:"mb-4 flex items-center justify-center sm:mb-8"},ya={class:"flex items-center space-x-2 sm:space-x-4"},fa={class:"flex items-center"},ba={class:"flex items-center"},va={key:1},ka={class:"space-y-6"},wa={key:0},ha={class:"flex gap-4"},$a={class:"flex cursor-pointer items-center"},Aa={class:"flex cursor-pointer items-center"},Ca={class:"flex cursor-pointer items-center"},Ta={class:"flex cursor-pointer items-center"},Ia={class:"flex cursor-pointer items-center"},Ua={class:"flex cursor-pointer items-center"},Sa={key:1},Va={class:"flex flex-wrap gap-4"},za={key:0,class:"flex cursor-pointer items-center"},Ka={class:"flex cursor-pointer items-center"},Ma={class:"flex cursor-pointer items-center"},Oa={key:0,class:"mt-1 text-xs text-red-500"},La={class:"flex gap-4"},ja={class:"flex cursor-pointer items-center"},Ra={class:"flex cursor-pointer items-center"},Da={class:"flex cursor-pointer items-center"},Pa={key:2},Ga={class:"flex gap-2"},Ea=["value"],Wa={key:3},Fa={key:4,class:"space-y-4"},qa={key:0,class:"mt-1 text-xs text-red-500"},Ba={key:0,class:"mt-1 text-xs text-red-500"},Na={key:0,class:"mt-1 text-xs text-red-500"},_a={key:5,class:"space-y-4"},Ha={key:0,class:"mt-1 text-xs text-red-500"},Ja={key:0,class:"mt-1 text-xs text-red-500"},Ya={key:0,class:"mt-1 text-xs text-red-500"},Qa={class:"flex flex-wrap gap-2"},Xa=["value"],Za={class:"text-sm text-gray-700 dark:text-gray-300"},el={key:6},tl={class:"mb-3"},sl={class:"inline-flex cursor-pointer items-center"},al={key:0},ll={key:7,class:"space-y-4"},rl={key:0,class:"mt-1 text-xs text-red-500"},ol={key:0,class:"mt-1 text-xs text-red-500"},nl={class:"mb-3 space-y-2"},il=["onUpdate:modelValue"],ul=["onUpdate:modelValue"],dl=["onClick"],pl={class:"mt-3 flex flex-wrap gap-2"},ml={class:"mb-3"},cl={class:"inline-flex cursor-pointer items-center"},gl={key:0},xl={key:8},yl={class:"flex gap-4"},fl={class:"flex cursor-pointer items-center"},bl={class:"flex cursor-pointer items-center"},vl={key:9,class:"space-y-4 rounded-lg border border-blue-200 bg-blue-50 p-4"},kl={class:"mb-4 flex items-start gap-3"},wl={key:0,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},hl={key:1,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},$l={key:2,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Al={class:"mb-2 mt-2 rounded-lg border border-blue-300 bg-white/80 p-3 dark:border-blue-600 dark:bg-gray-800/80"},Cl={key:0,class:"text-xs text-blue-800 dark:text-blue-300"},Tl={key:1,class:"text-xs text-blue-800 dark:text-blue-300"},Il={key:2,class:"text-xs text-blue-800 dark:text-blue-300"},Ul={key:0},Sl={key:0,class:"mt-1 text-xs text-red-500"},Vl={key:0,class:"mt-1 text-xs text-red-500"},zl={class:"flex gap-3 pt-4"},Kl=["disabled"],Ml=["disabled"],Ol={key:0,class:"loading-spinner mr-2"},Ll={key:3,class:"space-y-6"},jl={key:0},Rl={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},Dl={class:"flex items-start gap-4"},Pl={class:"flex-1"},Gl={class:"space-y-4"},El={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Wl={class:"flex items-start gap-3"},Fl={class:"flex-1"},ql=["disabled"],Bl={key:0,class:"fas fa-link mr-2"},Nl={key:1,class:"loading-spinner mr-2"},_l={key:1,class:"space-y-3"},Hl={class:"flex items-center gap-2"},Jl=["value"],Yl={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Ql={class:"flex items-start gap-3"},Xl={class:"flex-1"},Zl={class:"space-y-3"},er={class:"flex gap-3 pt-4"},tr=["disabled"],sr={key:0,class:"loading-spinner mr-2"},ar={key:4,class:"space-y-6"},lr={class:"flex gap-4"},rr={class:"flex cursor-pointer items-center"},or={class:"flex cursor-pointer items-center"},nr={class:"flex cursor-pointer items-center"},ir={key:0},ur={class:"flex gap-2"},dr=["value"],pr={key:1},mr={key:2},cr={class:"flex gap-4"},gr={class:"flex cursor-pointer items-center"},xr={class:"flex cursor-pointer items-center"},yr={key:3,class:"space-y-4"},fr={class:"mb-3 space-y-2"},br=["onUpdate:modelValue"],vr=["onUpdate:modelValue"],kr=["onClick"],wr={class:"mt-3 flex flex-wrap gap-2"},hr={class:"mb-3"},$r={class:"inline-flex cursor-pointer items-center"},Ar={key:0},Cr={key:4,class:"space-y-4"},Tr={class:"mb-3"},Ir={class:"inline-flex cursor-pointer items-center"},Ur={key:0},Sr={key:5,class:"rounded-lg border border-amber-200 bg-amber-50 p-4 dark:border-amber-700 dark:bg-amber-900/30"},Vr={class:"space-y-4"},zr={class:"flex gap-3 pt-4"},Kr=["disabled"],Mr={key:0,class:"loading-spinner mr-2"},Je={__name:"AccountForm",props:{account:{type:Object,default:null}},emits:["close","success"],setup(N,{emit:Y}){var Ke,Me,Oe,Le,je,Re,De,Pe,d,l,V,r,F,q,te,se,re;const c=N,H=Y,A=Ze(),{showConfirmModal:P,confirmOptions:k,showConfirm:g,handleConfirm:U,handleCancel:z}=Xe(),f=ke(()=>!!c.account),D=$(!0),j=$(1),G=$(!1),E=$(!1),_=$(!1),W=$(""),p=$(""),L=$(!1),X=$(""),ae=()=>{var o;return(o=c.account)!=null&&o.proxy&&c.account.proxy.host&&c.account.proxy.port?{enabled:!0,type:c.account.proxy.type||"socks5",host:c.account.proxy.host,port:c.account.proxy.port,username:c.account.proxy.username||"",password:c.account.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""}},s=$({platform:((Ke=c.account)==null?void 0:Ke.platform)||"claude",addType:((Me=c.account)==null?void 0:Me.platform)==="gemini"?"oauth":"setup-token",name:((Oe=c.account)==null?void 0:Oe.name)||"",description:((Le=c.account)==null?void 0:Le.description)||"",accountType:((je=c.account)==null?void 0:je.accountType)||"shared",subscriptionType:"claude_max",groupId:"",projectId:((Re=c.account)==null?void 0:Re.projectId)||"",idToken:"",accessToken:"",refreshToken:"",proxy:ae(),apiUrl:((De=c.account)==null?void 0:De.apiUrl)||"",apiKey:((Pe=c.account)==null?void 0:Pe.apiKey)||"",priority:((d=c.account)==null?void 0:d.priority)||50,supportedModels:(()=>{var t;const o=(t=c.account)==null?void 0:t.supportedModels;return o?typeof o=="object"&&!Array.isArray(o)?Object.keys(o).join(` +`):Array.isArray(o)?o.join(` +`):"":""})(),userAgent:((l=c.account)==null?void 0:l.userAgent)||"",enableRateLimit:c.account?c.account.rateLimitDuration>0:!0,rateLimitDuration:((V=c.account)==null?void 0:V.rateLimitDuration)||60,accessKeyId:((r=c.account)==null?void 0:r.accessKeyId)||"",secretAccessKey:((F=c.account)==null?void 0:F.secretAccessKey)||"",region:((q=c.account)==null?void 0:q.region)||"",sessionToken:((te=c.account)==null?void 0:te.sessionToken)||"",defaultModel:((se=c.account)==null?void 0:se.defaultModel)||"",smallFastModel:((re=c.account)==null?void 0:re.smallFastModel)||""}),x=$([]),K=()=>{var o;(o=c.account)!=null&&o.supportedModels&&(typeof c.account.supportedModels=="object"&&!Array.isArray(c.account.supportedModels)?x.value=Object.entries(c.account.supportedModels).map(([t,a])=>({from:t,to:a})):Array.isArray(c.account.supportedModels)&&(x.value=c.account.supportedModels.map(t=>({from:t,to:t}))))},h=$({name:"",idToken:"",accessToken:"",apiUrl:"",apiKey:"",accessKeyId:"",secretAccessKey:"",region:""}),ge=ke(()=>{var o;return((o=s.value.name)==null?void 0:o.trim())&&s.value.platform}),Z=ke(()=>W.value&&p.value.trim()),ne=async()=>{if(h.value.name="",!ge.value){(!s.value.name||s.value.name.trim()==="")&&(h.value.name="请填写账户名称");return}if(s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")){I("请选择一个分组","error");return}s.value.platform==="gemini"&&j.value===1&&s.value.addType==="oauth"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await g("项目 ID 未填写",`您尚未填写项目 ID。 + +如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 +如果您使用的是普通个人账号,可以继续不填写。`,"继续","返回填写")||(j.value=2)},ie=async()=>{var o;E.value=!0;try{const t=(o=s.value.proxy)!=null&&o.enabled?{proxy:{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}}:{},a=await A.generateClaudeSetupTokenUrl(t);W.value=a.authUrl,X.value=a.sessionId}catch(t){I(t.message||"生成Setup Token授权链接失败","error")}finally{E.value=!1}},Ae=()=>{W.value="",p.value="",ie()},Ue=async()=>{try{await navigator.clipboard.writeText(W.value),L.value=!0,I("链接已复制","success"),setTimeout(()=>{L.value=!1},2e3)}catch{const t=document.createElement("textarea");t.value=W.value,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy")?(L.value=!0,I("链接已复制","success")):I("复制失败,请手动复制","error")}catch{I("复制失败,请手动复制","error")}document.body.removeChild(t),setTimeout(()=>{L.value=!1},2e3)}},Se=async()=>{var o;if(Z.value){_.value=!0;try{const t={sessionId:X.value,callbackUrl:p.value.trim()};(o=s.value.proxy)!=null&&o.enabled&&(t.proxy={type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null});const a=await A.exchangeClaudeSetupTokenCode(t);await Ce(a)}catch(t){I(t.message||"Setup Token授权失败,请检查授权码是否正确","error")}finally{_.value=!1}}},Ce=async o=>{G.value=!0;try{const t={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};s.value.platform==="claude"?(t.claudeAiOauth=o.claudeAiOauth||o,t.priority=s.value.priority||50,t.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}):s.value.platform==="gemini"?(t.geminiOauth=o.tokens||o,s.value.projectId&&(t.projectId=s.value.projectId),t.priority=s.value.priority||50):s.value.platform==="openai"&&(t.openaiOauth=o.tokens||o,t.accountInfo=o.accountInfo,t.priority=s.value.priority||50);let a;s.value.platform==="claude"?a=await A.createClaudeAccount(t):s.value.platform==="openai"?a=await A.createOpenAIAccount(t):a=await A.createGeminiAccount(t),H("success",a)}catch(t){I(t.message||"账户创建失败","error")}finally{G.value=!1}},Ve=async()=>{h.value.name="",h.value.accessToken="",h.value.apiUrl="",h.value.apiKey="";let o=!1;if((!s.value.name||s.value.name.trim()==="")&&(h.value.name="请填写账户名称",o=!0),s.value.platform==="claude-console"?((!s.value.apiUrl||s.value.apiUrl.trim()==="")&&(h.value.apiUrl="请填写 API URL",o=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(h.value.apiKey="请填写 API Key",o=!0)):s.value.platform==="bedrock"?((!s.value.accessKeyId||s.value.accessKeyId.trim()==="")&&(h.value.accessKeyId="请填写 AWS 访问密钥 ID",o=!0),(!s.value.secretAccessKey||s.value.secretAccessKey.trim()==="")&&(h.value.secretAccessKey="请填写 AWS 秘密访问密钥",o=!0),(!s.value.region||s.value.region.trim()==="")&&(h.value.region="请选择 AWS 区域",o=!0)):s.value.addType==="manual"&&((!s.value.accessToken||s.value.accessToken.trim()==="")&&(h.value.accessToken="请填写 Access Token",o=!0),s.value.platform==="openai"&&(!s.value.idToken||s.value.idToken.trim()==="")&&(h.value.idToken="请填写 ID Token",o=!0)),s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")&&(I("请选择一个分组","error"),o=!0),!o){G.value=!0;try{const t={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.platform==="claude"){const M=s.value.refreshToken?6e5:31536e6;t.claudeAiOauth={accessToken:s.value.accessToken,refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+M,scopes:[]},t.priority=s.value.priority||50,t.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}}else if(s.value.platform==="gemini"){const M=s.value.refreshToken?6e5:31536e6;t.geminiOauth={access_token:s.value.accessToken,refresh_token:s.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+M},s.value.projectId&&(t.projectId=s.value.projectId),t.priority=s.value.priority||50}else if(s.value.platform==="openai"){const M=s.value.refreshToken?6e5:31536e6;t.openaiOauth={idToken:s.value.idToken,accessToken:s.value.accessToken,refreshToken:s.value.refreshToken||"",expires_in:Math.floor(M/1e3)};let O={accountId:"",chatgptUserId:"",organizationId:"",organizationRole:"",organizationTitle:"",planType:"",email:"",emailVerified:!1};if(s.value.idToken)try{const Q=s.value.idToken.split(".");if(Q.length===3){const fe=JSON.parse(atob(Q[1])),oe=fe["https://api.openai.com/auth"]||{};O={accountId:oe.accountId||"",chatgptUserId:oe.chatgptUserId||"",organizationId:oe.organizationId||"",organizationRole:oe.organizationRole||"",organizationTitle:oe.organizationTitle||"",planType:oe.planType||"",email:fe.email||"",emailVerified:fe.email_verified||!1}}}catch(Q){console.warn("Failed to parse ID Token:",Q)}t.accountInfo=O,t.priority=s.value.priority||50}else s.value.platform==="claude-console"?(t.apiUrl=s.value.apiUrl,t.apiKey=s.value.apiKey,t.priority=s.value.priority||50,t.supportedModels=le()||{},t.userAgent=s.value.userAgent||null,t.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0):s.value.platform==="bedrock"&&(t.awsCredentials={accessKeyId:s.value.accessKeyId,secretAccessKey:s.value.secretAccessKey,sessionToken:s.value.sessionToken||null},t.region=s.value.region,t.defaultModel=s.value.defaultModel||null,t.smallFastModel=s.value.smallFastModel||null,t.priority=s.value.priority||50,t.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0);let a;s.value.platform==="claude"?a=await A.createClaudeAccount(t):s.value.platform==="claude-console"?a=await A.createClaudeConsoleAccount(t):s.value.platform==="bedrock"?a=await A.createBedrockAccount(t):s.value.platform==="openai"?a=await A.createOpenAIAccount(t):a=await A.createGeminiAccount(t),H("success",a)}catch(t){I(t.message||"账户创建失败","error")}finally{G.value=!1}}},ze=async()=>{if(h.value.name="",!s.value.name||s.value.name.trim()===""){h.value.name="请填写账户名称";return}if(s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")){I("请选择一个分组","error");return}if(!(s.value.platform==="gemini"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await g("项目 ID 未填写",`您尚未填写项目 ID。 + +如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 +如果您使用的是普通个人账号,可以继续不填写。`,"继续保存","返回填写"))){G.value=!0;try{const o={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.accessToken||s.value.refreshToken){if(c.account.platform==="claude"){const t=s.value.refreshToken?6e5:31536e6;o.claudeAiOauth={accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+t,scopes:c.account.scopes||[]}}else if(c.account.platform==="gemini"){const t=s.value.refreshToken?6e5:31536e6;o.geminiOauth={access_token:s.value.accessToken||"",refresh_token:s.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+t}}else if(c.account.platform==="openai"){const t=s.value.refreshToken?6e5:31536e6;o.openaiOauth={idToken:s.value.idToken||"",accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expires_in:Math.floor(t/1e3)}}}c.account.platform==="gemini"&&(o.projectId=s.value.projectId||""),c.account.platform==="claude"&&(o.priority=s.value.priority||50,o.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}),c.account.platform==="openai"&&(o.priority=s.value.priority||50),c.account.platform==="gemini"&&(o.priority=s.value.priority||50),c.account.platform==="claude-console"&&(o.apiUrl=s.value.apiUrl,s.value.apiKey&&(o.apiKey=s.value.apiKey),o.priority=s.value.priority||50,o.supportedModels=le()||{},o.userAgent=s.value.userAgent||null,o.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0),c.account.platform==="bedrock"&&((s.value.accessKeyId||s.value.secretAccessKey||s.value.sessionToken)&&(o.awsCredentials={},s.value.accessKeyId&&(o.awsCredentials.accessKeyId=s.value.accessKeyId),s.value.secretAccessKey&&(o.awsCredentials.secretAccessKey=s.value.secretAccessKey),s.value.sessionToken!==void 0&&(o.awsCredentials.sessionToken=s.value.sessionToken||null)),s.value.region&&(o.region=s.value.region),o.defaultModel=s.value.defaultModel||null,o.smallFastModel=s.value.smallFastModel||null,o.priority=s.value.priority||50,o.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0),c.account.platform==="claude"?await A.updateClaudeAccount(c.account.id,o):c.account.platform==="claude-console"?await A.updateClaudeConsoleAccount(c.account.id,o):c.account.platform==="bedrock"?await A.updateBedrockAccount(c.account.id,o):c.account.platform==="openai"?await A.updateOpenAIAccount(c.account.id,o):await A.updateGeminiAccount(c.account.id,o),H("success")}catch(o){I(o.message||"账户更新失败","error")}finally{G.value=!1}}};J(()=>s.value.name,()=>{var o;h.value.name&&((o=s.value.name)!=null&&o.trim())&&(h.value.name="")}),J(()=>s.value.accessToken,()=>{var o;h.value.accessToken&&((o=s.value.accessToken)!=null&&o.trim())&&(h.value.accessToken="")}),J(()=>s.value.apiUrl,()=>{var o;h.value.apiUrl&&((o=s.value.apiUrl)!=null&&o.trim())&&(h.value.apiUrl="")}),J(()=>s.value.apiKey,()=>{var o;h.value.apiKey&&((o=s.value.apiKey)!=null&&o.trim())&&(h.value.apiKey="")});const de=$([]),ue=$(!1),xe=$(!1),he=ke(()=>{const o=s.value.platform==="claude-console"?"claude":s.value.platform;return de.value.filter(t=>t.platform===o)}),ye=async()=>{ue.value=!0;try{const o=await S.get("/admin/account-groups");de.value=o.data||[]}catch{I("加载分组列表失败","error"),de.value=[]}finally{ue.value=!1}},$e=async()=>{await ye(),I("分组列表已刷新","success")},Te=async()=>{await ye()};J(()=>s.value.platform,o=>{o==="claude-console"||o==="bedrock"?s.value.addType="manual":o==="claude"?s.value.addType="setup-token":o==="gemini"&&(s.value.addType="oauth"),s.value.accountType==="group"&&(s.value.groupId="")}),J(p,o=>{if(!o||typeof o!="string")return;const t=o.trim();if(!t)return;if(t.startsWith("http://")||t.startsWith("https://"))if(t.startsWith("http://localhost:45462"))try{const O=new URL(t).searchParams.get("code");O?(p.value=O,I("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):I("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(M){console.error("Failed to parse URL:",M),I("链接格式错误,请检查是否为完整的 URL","error")}else I("请粘贴以 http://localhost:45462 开头的链接","error")}),J(()=>s.value.accountType,o=>{o==="group"&&de.value.length===0&&ye()}),J(()=>s.value.groupId,o=>{o==="__new__"&&(s.value.groupId="",xe.value=!0)});const m=()=>{x.value.push({from:"",to:""})},u=o=>{x.value.splice(o,1)},b=(o,t)=>{if(x.value.some(M=>M.from===o)){I(`模型 ${o} 的映射已存在`,"info");return}x.value.push({from:o,to:t}),I(`已添加映射: ${o} → ${t}`,"success")},le=()=>{const o={};return x.value.forEach(t=>{t.from&&t.to&&(o[t.from]=t.to)}),Object.keys(o).length>0?o:null};return J(()=>c.account,o=>{if(o){K();const t=o.proxy&&o.proxy.host&&o.proxy.port?{enabled:!0,type:o.proxy.type||"socks5",host:o.proxy.host,port:o.proxy.port,username:o.proxy.username||"",password:o.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""};let a="";o.accountType==="group"&&(a=o.groupId||o.groupInfo&&o.groupInfo.id||"");let M="claude_max";if(o.subscriptionInfo){const O=typeof o.subscriptionInfo=="string"?JSON.parse(o.subscriptionInfo):o.subscriptionInfo;O.accountType?M=O.accountType:O.hasClaudeMax?M="claude_max":O.hasClaudePro?M="claude_pro":M="claude_free"}s.value={platform:o.platform,addType:"oauth",name:o.name,description:o.description||"",accountType:o.accountType||"shared",subscriptionType:M,groupId:a,projectId:o.projectId||"",accessToken:"",refreshToken:"",proxy:t,apiUrl:o.apiUrl||"",apiKey:"",priority:o.priority||50,supportedModels:(()=>{const O=o.supportedModels;return O?typeof O=="object"&&!Array.isArray(O)?Object.keys(O).join(` +`):Array.isArray(O)?O.join(` +`):"":""})(),userAgent:o.userAgent||"",enableRateLimit:!!(o.rateLimitDuration&&o.rateLimitDuration>0),rateLimitDuration:o.rateLimitDuration||60,accessKeyId:"",secretAccessKey:"",region:o.region||"",sessionToken:"",defaultModel:o.defaultModel||"",smallFastModel:o.smallFastModel||""},o.accountType==="group"&&ye().then(()=>{o.groupInfo&&o.groupInfo.id?s.value.groupId=o.groupInfo.id:de.value.forEach(O=>{S.get(`/admin/account-groups/${O.id}/members`).then(Q=>{(Q.data||[]).some(oe=>oe.id===o.id)&&(s.value.groupId=O.id)}).catch(()=>{})})})}},{immediate:!0}),(o,t)=>(n(),we(Be,{to:"body"},[D.value?(n(),i("div",da,[e("div",pa,[e("div",ma,[e("div",ca,[t[82]||(t[82]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-user-circle text-sm text-white sm:text-base"})],-1)),e("h3",ga,v(f.value?"编辑账户":"添加账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:t[0]||(t[0]=a=>o.$emit("close"))},t[83]||(t[83]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),!f.value&&(s.value.addType==="oauth"||s.value.addType==="setup-token")?(n(),i("div",xa,[e("div",ya,[e("div",fa,[e("div",{class:R(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",j.value>=1?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 1 ",2),t[84]||(t[84]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"基本信息",-1))]),t[86]||(t[86]=e("div",{class:"h-0.5 w-4 bg-gray-300 sm:w-8"},null,-1)),e("div",ba,[e("div",{class:R(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",j.value>=2?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 2 ",2),t[85]||(t[85]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"授权认证",-1))])])])):w("",!0),j.value===1&&!f.value?(n(),i("div",va,[e("div",ka,[f.value?w("",!0):(n(),i("div",wa,[t[93]||(t[93]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"平台",-1)),e("div",ha,[e("label",$a,[y(e("input",{"onUpdate:modelValue":t[1]||(t[1]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[B,s.value.platform]]),t[87]||(t[87]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude",-1))]),e("label",Aa,[y(e("input",{"onUpdate:modelValue":t[2]||(t[2]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude-console"},null,512),[[B,s.value.platform]]),t[88]||(t[88]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Console",-1))]),e("label",Ca,[y(e("input",{"onUpdate:modelValue":t[3]||(t[3]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[B,s.value.platform]]),t[89]||(t[89]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Gemini",-1))]),e("label",Ta,[y(e("input",{"onUpdate:modelValue":t[4]||(t[4]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[B,s.value.platform]]),t[90]||(t[90]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"OpenAI",-1))]),e("label",Ia,[y(e("input",{"onUpdate:modelValue":t[5]||(t[5]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"azure_openai"},null,512),[[B,s.value.platform]]),t[91]||(t[91]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Azure OpenAI",-1))]),e("label",Ua,[y(e("input",{"onUpdate:modelValue":t[6]||(t[6]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"bedrock"},null,512),[[B,s.value.platform]]),t[92]||(t[92]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Bedrock",-1))])])])),!f.value&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"?(n(),i("div",Sa,[t[97]||(t[97]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"添加方式",-1)),e("div",Va,[s.value.platform==="claude"?(n(),i("label",za,[y(e("input",{"onUpdate:modelValue":t[7]||(t[7]=a=>s.value.addType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"setup-token"},null,512),[[B,s.value.addType]]),t[94]||(t[94]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Setup Token (推荐)",-1))])):w("",!0),e("label",Ka,[y(e("input",{"onUpdate:modelValue":t[8]||(t[8]=a=>s.value.addType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"oauth"},null,512),[[B,s.value.addType]]),t[95]||(t[95]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"OAuth 授权",-1))]),e("label",Ma,[y(e("input",{"onUpdate:modelValue":t[9]||(t[9]=a=>s.value.addType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"manual"},null,512),[[B,s.value.addType]]),t[96]||(t[96]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"手动输入 Access Token",-1))])])])):w("",!0),e("div",null,[t[98]||(t[98]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),y(e("input",{"onUpdate:modelValue":t[10]||(t[10]=a=>s.value.name=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[T,s.value.name]]),h.value.name?(n(),i("p",Oa,v(h.value.name),1)):w("",!0)]),e("div",null,[t[99]||(t[99]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":t[11]||(t[11]=a=>s.value.description=a),class:"form-input w-full resize-none dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[T,s.value.description]])]),e("div",null,[t[103]||(t[103]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",La,[e("label",ja,[y(e("input",{"onUpdate:modelValue":t[12]||(t[12]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[B,s.value.accountType]]),t[100]||(t[100]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",Ra,[y(e("input",{"onUpdate:modelValue":t[13]||(t[13]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[B,s.value.accountType]]),t[101]||(t[101]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",Da,[y(e("input",{"onUpdate:modelValue":t[14]||(t[14]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[B,s.value.accountType]]),t[102]||(t[102]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[104]||(t[104]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),i("div",Pa,[t[107]||(t[107]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",Ga,[y(e("select",{"onUpdate:modelValue":t[15]||(t[15]=a=>s.value.groupId=a),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",required:""},[t[105]||(t[105]=e("option",{value:""},"请选择分组",-1)),(n(!0),i(pe,null,me(he.value,a=>(n(),i("option",{key:a.id,value:a.id},v(a.name)+" ("+v(a.memberCount||0)+" 个成员) ",9,Ea))),128)),t[106]||(t[106]=e("option",{value:"__new__"},"+ 新建分组",-1))],512),[[qe,s.value.groupId]]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",type:"button",onClick:$e},[e("i",{class:R(["fas fa-sync-alt",{"animate-spin":ue.value}])},null,2)])])])):w("",!0),s.value.platform==="gemini"?(n(),i("div",Wa,[t[108]||(t[108]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[16]||(t[16]=a=>s.value.projectId=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[T,s.value.projectId]]),t[109]||(t[109]=e("div",{class:"mt-2 rounded-lg border border-yellow-200 bg-yellow-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-yellow-600"}),e("div",{class:"text-xs text-yellow-700"},[e("p",{class:"mb-1 font-medium"},"Google Cloud/Workspace 账号需要提供项目 ID"),e("p",null," 某些 Google 账号(特别是绑定了 Google Cloud 的账号)会被识别为 Workspace 账号,需要提供额外的项目 ID。 "),e("div",{class:"mt-2 rounded border border-yellow-300 bg-white p-2"},[e("p",{class:"mb-1 font-medium"},"如何获取项目 ID:"),e("ol",{class:"ml-2 list-inside list-decimal space-y-1"},[e("li",null,[C(" 访问 "),e("a",{class:"font-medium text-blue-600 hover:underline",href:"https://console.cloud.google.com/welcome",target:"_blank"},"Google Cloud Console")]),e("li",null,[C(" 复制"),e("span",{class:"font-semibold text-red-600"},"项目 ID(Project ID)"),C(",通常是字符串格式 ")]),e("li",{class:"text-red-600"}," ⚠️ 注意:要复制项目 ID(Project ID),不要复制项目编号(Project Number)! ")])]),e("p",{class:"mt-2"},[e("strong",null,"提示:"),C("如果您的账号是普通个人账号(未绑定 Google Cloud),请留空此字段。 ")])])])],-1))])):w("",!0),s.value.platform==="bedrock"&&!f.value?(n(),i("div",Fa,[e("div",null,[t[110]||(t[110]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 访问密钥 ID *",-1)),y(e("input",{"onUpdate:modelValue":t[17]||(t[17]=a=>s.value.accessKeyId=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.accessKeyId}]),placeholder:"请输入 AWS Access Key ID",required:"",type:"text"},null,2),[[T,s.value.accessKeyId]]),h.value.accessKeyId?(n(),i("p",qa,v(h.value.accessKeyId),1)):w("",!0)]),e("div",null,[t[111]||(t[111]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 秘密访问密钥 *",-1)),y(e("input",{"onUpdate:modelValue":t[18]||(t[18]=a=>s.value.secretAccessKey=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.secretAccessKey}]),placeholder:"请输入 AWS Secret Access Key",required:"",type:"password"},null,2),[[T,s.value.secretAccessKey]]),h.value.secretAccessKey?(n(),i("p",Ba,v(h.value.secretAccessKey),1)):w("",!0)]),e("div",null,[t[112]||(t[112]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 区域 *",-1)),y(e("input",{"onUpdate:modelValue":t[19]||(t[19]=a=>s.value.region=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.region}]),placeholder:"例如:us-east-1",required:"",type:"text"},null,2),[[T,s.value.region]]),h.value.region?(n(),i("p",Na,v(h.value.region),1)):w("",!0),t[113]||(t[113]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")]),e("p",{class:"mt-2 text-blue-600"},"💡 请输入完整的区域代码,如 us-east-1")])])],-1))]),e("div",null,[t[114]||(t[114]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"会话令牌 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[20]||(t[20]=a=>s.value.sessionToken=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"如果使用临时凭证,请输入会话令牌",type:"password"},null,512),[[T,s.value.sessionToken]]),t[115]||(t[115]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 仅在使用临时 AWS 凭证时需要填写 ",-1))]),e("div",null,[t[116]||(t[116]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"默认主模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[21]||(t[21]=a=>s.value.defaultModel=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[T,s.value.defaultModel]]),t[117]||(t[117]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1)),t[118]||(t[118]=e("div",{class:"mt-2 rounded-lg border border-amber-200 bg-amber-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-amber-600"}),e("div",{class:"text-xs text-amber-700"},[e("p",{class:"mb-1 font-medium"},"Bedrock 模型配置说明:"),e("ul",{class:"list-inside list-disc space-y-1 text-xs"},[e("li",null,"支持 Inference Profile ID(推荐)"),e("li",null,"支持 Application Inference Profile ARN"),e("li",null,"常用模型:us.anthropic.claude-sonnet-4-20250514-v1:0"),e("li",null,"留空将使用系统配置的默认模型")])])])],-1))]),e("div",null,[t[119]||(t[119]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[22]||(t[22]=a=>s.value.smallFastModel=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[T,s.value.smallFastModel]]),t[120]||(t[120]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 用于快速响应的轻量级模型,留空将使用系统默认 ",-1))])])):w("",!0),s.value.platform==="azure_openai"&&!f.value?(n(),i("div",_a,[e("div",null,[t[121]||(t[121]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Azure Endpoint *",-1)),y(e("input",{"onUpdate:modelValue":t[23]||(t[23]=a=>s.value.azureEndpoint=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.azureEndpoint}]),placeholder:"https://your-resource.openai.azure.com",required:"",type:"url"},null,2),[[T,s.value.azureEndpoint]]),h.value.azureEndpoint?(n(),i("p",Ha,v(h.value.azureEndpoint),1)):w("",!0),t[122]||(t[122]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," Azure OpenAI 资源的终结点 URL,格式:https://your-resource.openai.azure.com ",-1))]),e("div",null,[t[123]||(t[123]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 版本",-1)),y(e("input",{"onUpdate:modelValue":t[24]||(t[24]=a=>s.value.apiVersion=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"2024-02-01",type:"text"},null,512),[[T,s.value.apiVersion]]),t[124]||(t[124]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," Azure OpenAI API 版本,默认使用最新稳定版本 2024-02-01 ",-1))]),e("div",null,[t[125]||(t[125]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"部署名称 *",-1)),y(e("input",{"onUpdate:modelValue":t[25]||(t[25]=a=>s.value.deploymentName=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.deploymentName}]),placeholder:"gpt-4",required:"",type:"text"},null,2),[[T,s.value.deploymentName]]),h.value.deploymentName?(n(),i("p",Ja,v(h.value.deploymentName),1)):w("",!0),t[126]||(t[126]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 在 Azure OpenAI Studio 中创建的部署名称 ",-1))]),e("div",null,[t[127]||(t[127]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),y(e("input",{"onUpdate:modelValue":t[26]||(t[26]=a=>s.value.apiKey=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.apiKey}]),placeholder:"请输入 Azure OpenAI API Key",required:"",type:"password"},null,2),[[T,s.value.apiKey]]),h.value.apiKey?(n(),i("p",Ya,v(h.value.apiKey),1)):w("",!0),t[128]||(t[128]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 从 Azure 门户获取的 API 密钥 ",-1))]),e("div",null,[t[129]||(t[129]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"支持的模型",-1)),e("div",Qa,[(n(),i(pe,null,me(["gpt-4","gpt-4-turbo","gpt-35-turbo","gpt-35-turbo-16k"],a=>e("label",{key:a,class:"flex cursor-pointer items-center"},[y(e("input",{"onUpdate:modelValue":t[27]||(t[27]=M=>s.value.supportedModels=M),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:a},null,8,Xa),[[ve,s.value.supportedModels]]),e("span",Za,v(a),1)])),64))]),t[130]||(t[130]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 选择此部署支持的模型类型 ",-1))])])):w("",!0),s.value.platform==="bedrock"&&!f.value?(n(),i("div",el,[e("div",null,[t[135]||(t[135]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",tl,[e("label",sl,[y(e("input",{"onUpdate:modelValue":t[28]||(t[28]=a=>s.value.enableRateLimit=a),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ve,s.value.enableRateLimit]]),t[131]||(t[131]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[132]||(t[132]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",al,[t[133]||(t[133]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[29]||(t[29]=a=>s.value.rateLimitDuration=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[134]||(t[134]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):w("",!0)])])):w("",!0),s.value.platform==="claude-console"&&!f.value?(n(),i("div",ll,[e("div",null,[t[136]||(t[136]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),y(e("input",{"onUpdate:modelValue":t[30]||(t[30]=a=>s.value.apiUrl=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.apiUrl}]),placeholder:"例如:https://api.example.com",required:"",type:"text"},null,2),[[T,s.value.apiUrl]]),h.value.apiUrl?(n(),i("p",rl,v(h.value.apiUrl),1)):w("",!0)]),e("div",null,[t[137]||(t[137]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),y(e("input",{"onUpdate:modelValue":t[31]||(t[31]=a=>s.value.apiKey=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.apiKey}]),placeholder:"请输入API Key",required:"",type:"password"},null,2),[[T,s.value.apiKey]]),h.value.apiKey?(n(),i("p",ol,v(h.value.apiKey),1)):w("",!0)]),e("div",null,[t[141]||(t[141]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型映射表 (可选)",-1)),t[142]||(t[142]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",nl,[(n(!0),i(pe,null,me(x.value,(a,M)=>(n(),i("div",{key:M,class:"flex items-center gap-2"},[y(e("input",{"onUpdate:modelValue":O=>a.from=O,class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"原始模型名称",type:"text"},null,8,il),[[T,a.from]]),t[139]||(t[139]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),y(e("input",{"onUpdate:modelValue":O=>a.to=O,class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"映射后的模型名称",type:"text"},null,8,ul),[[T,a.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50 dark:hover:bg-red-900/20",type:"button",onClick:O=>u(M)},t[138]||(t[138]=[e("i",{class:"fas fa-trash"},null,-1)]),8,dl)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700 dark:border-gray-600 dark:text-gray-400 dark:hover:border-gray-500 dark:hover:text-gray-300",type:"button",onClick:m},t[140]||(t[140]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 添加模型映射 ",-1)])),e("div",pl,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",type:"button",onClick:t[32]||(t[32]=a=>b("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200 dark:bg-purple-900/30 dark:text-purple-400 dark:hover:bg-purple-900/50",type:"button",onClick:t[33]||(t[33]=a=>b("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200 dark:bg-green-900/30 dark:text-green-400 dark:hover:bg-green-900/50",type:"button",onClick:t[34]||(t[34]=a=>b("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200 dark:bg-orange-900/30 dark:text-orange-400 dark:hover:bg-orange-900/50",type:"button",onClick:t[35]||(t[35]=a=>b("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[143]||(t[143]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[144]||(t[144]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[36]||(t[36]=a=>s.value.userAgent=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[T,s.value.userAgent]]),t[145]||(t[145]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[150]||(t[150]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",ml,[e("label",cl,[y(e("input",{"onUpdate:modelValue":t[37]||(t[37]=a=>s.value.enableRateLimit=a),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ve,s.value.enableRateLimit]]),t[146]||(t[146]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[147]||(t[147]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",gl,[t[148]||(t[148]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[38]||(t[38]=a=>s.value.rateLimitDuration=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[149]||(t[149]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):w("",!0)])])):w("",!0),s.value.platform==="claude"?(n(),i("div",xl,[t[153]||(t[153]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",yl,[e("label",fl,[y(e("input",{"onUpdate:modelValue":t[39]||(t[39]=a=>s.value.subscriptionType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[B,s.value.subscriptionType]]),t[151]||(t[151]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",bl,[y(e("input",{"onUpdate:modelValue":t[40]||(t[40]=a=>s.value.subscriptionType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[B,s.value.subscriptionType]]),t[152]||(t[152]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[154]||(t[154]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):w("",!0),e("div",null,[t[155]||(t[155]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),y(e("input",{"onUpdate:modelValue":t[41]||(t[41]=a=>s.value.priority=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高,默认50",type:"number"},null,512),[[T,s.value.priority,void 0,{number:!0}]]),t[156]||(t[156]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.addType==="manual"&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("div",vl,[e("div",kl,[t[162]||(t[162]=e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-info text-sm text-white"})],-1)),e("div",null,[t[160]||(t[160]=e("h5",{class:"mb-2 font-semibold text-blue-900 dark:text-blue-300"}," 手动输入 Token ",-1)),s.value.platform==="claude"?(n(),i("p",wl," 请输入有效的 Claude Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="gemini"?(n(),i("p",hl," 请输入有效的 Gemini Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="openai"?(n(),i("p",$l," 请输入有效的 OpenAI Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):w("",!0),e("div",Al,[t[159]||(t[159]=e("p",{class:"mb-1 text-sm font-medium text-blue-900 dark:text-blue-300"},[e("i",{class:"fas fa-folder-open mr-1"}),C(" 获取 Access Token 的方法: ")],-1)),s.value.platform==="claude"?(n(),i("p",Cl,t[157]||(t[157]=[C(" 请从已登录 Claude Code 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.claude/.credentials.json",-1),C(" 文件中的凭证, 请勿使用 Claude 官网 API Keys 页面的密钥。 ",-1)]))):s.value.platform==="gemini"?(n(),i("p",Tl,t[158]||(t[158]=[C(" 请从已登录 Gemini CLI 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.config/gemini/credentials.json",-1),C(" 文件中的凭证。 ",-1)]))):s.value.platform==="openai"?(n(),i("p",Il," 请从已登录 OpenAI 账户的机器上获取认证凭证, 或通过 OAuth 授权流程获取 Access Token。 ")):w("",!0)]),t[161]||(t[161]=e("p",{class:"text-xs text-blue-600 dark:text-blue-400"}," 💡 如果未填写 Refresh Token,Token 过期后需要手动更新。 ",-1))])]),s.value.platform==="openai"?(n(),i("div",Ul,[t[163]||(t[163]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"ID Token *",-1)),y(e("textarea",{"onUpdate:modelValue":t[42]||(t[42]=a=>s.value.idToken=a),class:R(["form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.idToken}]),placeholder:"请输入 ID Token (JWT 格式)...",required:"",rows:"4"},null,2),[[T,s.value.idToken]]),h.value.idToken?(n(),i("p",Sl,v(h.value.idToken),1)):w("",!0),t[164]||(t[164]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," ID Token 是 OpenAI OAuth 认证返回的 JWT token,包含用户信息和组织信息 ",-1))])):w("",!0),e("div",null,[t[165]||(t[165]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token *",-1)),y(e("textarea",{"onUpdate:modelValue":t[43]||(t[43]=a=>s.value.accessToken=a),class:R(["form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.accessToken}]),placeholder:"请输入 Access Token...",required:"",rows:"4"},null,2),[[T,s.value.accessToken]]),h.value.accessToken?(n(),i("p",Vl,v(h.value.accessToken),1)):w("",!0)]),e("div",null,[t[166]||(t[166]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":t[44]||(t[44]=a=>s.value.refreshToken=a),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"请输入 Refresh Token...",rows:"4"},null,512),[[T,s.value.refreshToken]])])])):w("",!0),ce(He,{modelValue:s.value.proxy,"onUpdate:modelValue":t[45]||(t[45]=a=>s.value.proxy=a)},null,8,["modelValue"]),e("div",zl,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[46]||(t[46]=a=>o.$emit("close"))}," 取消 "),(s.value.addType==="oauth"||s.value.addType==="setup-token")&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"?(n(),i("button",{key:0,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:G.value,type:"button",onClick:ne}," 下一步 ",8,Kl)):(n(),i("button",{key:1,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:G.value,type:"button",onClick:Ve},[G.value?(n(),i("div",Ol)):w("",!0),C(" "+v(G.value?"创建中...":"创建"),1)],8,Ml))])])])):w("",!0),j.value===2&&s.value.addType==="oauth"?(n(),we(ks,{key:2,platform:s.value.platform,proxy:s.value.proxy,onBack:t[47]||(t[47]=a=>j.value=1),onSuccess:Ce},null,8,["platform","proxy"])):w("",!0),j.value===2&&s.value.addType==="setup-token"?(n(),i("div",Ll,[s.value.platform==="claude"?(n(),i("div",jl,[e("div",Rl,[e("div",Dl,[t[178]||(t[178]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-key text-white"})],-1)),e("div",Pl,[t[176]||(t[176]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"}," Claude Setup Token 授权 ",-1)),t[177]||(t[177]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤通过 Setup Token 完成 Claude 账户的授权: ",-1)),e("div",Gl,[e("div",El,[e("div",Wl,[t[169]||(t[169]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Fl,[t[168]||(t[168]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),W.value?(n(),i("div",_l,[e("div",Hl,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:W.value},null,8,Jl),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:Ue},[e("i",{class:R(L.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:Ae},t[167]||(t[167]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:E.value,onClick:ie},[E.value?(n(),i("div",Nl)):(n(),i("i",Bl)),C(" "+v(E.value?"生成中...":"生成 Setup Token 授权链接"),1)],8,ql))])])]),t[175]||(t[175]=e("div",{class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},[e("div",{class:"flex items-start gap-3"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 2 "),e("div",{class:"flex-1"},[e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 在浏览器中打开链接并完成授权 "),e("p",{class:"mb-2 text-sm text-blue-700 dark:text-blue-300"}," 请在新标签页中打开授权链接,登录您的 Claude 账户并授权 Claude Code。 "),e("div",{class:"rounded border border-yellow-300 bg-yellow-50 p-3 dark:border-yellow-700 dark:bg-yellow-900/30"},[e("p",{class:"text-xs text-yellow-800 dark:text-yellow-300"},[e("i",{class:"fas fa-exclamation-triangle mr-1"}),e("strong",null,"注意:"),C("如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。 ")])])])])],-1)),e("div",Yl,[e("div",Ql,[t[174]||(t[174]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Xl,[t[172]||(t[172]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),t[173]||(t[173]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"}," 授权完成后,从返回页面复制 Authorization Code,并粘贴到下方输入框: ",-1)),e("div",Zl,[e("div",null,[t[170]||(t[170]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),C("Authorization Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":t[48]||(t[48]=a=>p.value=a),class:"form-input w-full resize-none font-mono text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"粘贴从Claude Code授权页面获取的Authorization Code...",rows:"3"},null,512),[[T,p.value]])]),t[171]||(t[171]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 请粘贴从Claude Code授权页面复制的Authorization Code ")],-1))])])])])])])])])])):w("",!0),e("div",er,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[49]||(t[49]=a=>j.value=1)}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!Z.value||_.value,type:"button",onClick:Se},[_.value?(n(),i("div",sr)):w("",!0),C(" "+v(_.value?"验证中...":"完成授权"),1)],8,tr)])])):w("",!0),f.value?(n(),i("div",ar,[e("div",null,[t[179]||(t[179]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),y(e("input",{"onUpdate:modelValue":t[50]||(t[50]=a=>s.value.name=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,512),[[T,s.value.name]])]),e("div",null,[t[180]||(t[180]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":t[51]||(t[51]=a=>s.value.description=a),class:"form-input w-full resize-none dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[T,s.value.description]])]),e("div",null,[t[184]||(t[184]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",lr,[e("label",rr,[y(e("input",{"onUpdate:modelValue":t[52]||(t[52]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[B,s.value.accountType]]),t[181]||(t[181]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",or,[y(e("input",{"onUpdate:modelValue":t[53]||(t[53]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[B,s.value.accountType]]),t[182]||(t[182]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",nr,[y(e("input",{"onUpdate:modelValue":t[54]||(t[54]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[B,s.value.accountType]]),t[183]||(t[183]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[185]||(t[185]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),i("div",ir,[t[188]||(t[188]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",ur,[y(e("select",{"onUpdate:modelValue":t[55]||(t[55]=a=>s.value.groupId=a),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",required:""},[t[186]||(t[186]=e("option",{value:""},"请选择分组",-1)),(n(!0),i(pe,null,me(he.value,a=>(n(),i("option",{key:a.id,value:a.id},v(a.name)+" ("+v(a.memberCount||0)+" 个成员) ",9,dr))),128)),t[187]||(t[187]=e("option",{value:"__new__"},"+ 新建分组",-1))],512),[[qe,s.value.groupId]]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:$e},[e("i",{class:R(["fas fa-sync-alt",{"animate-spin":ue.value}])},null,2)])])])):w("",!0),s.value.platform==="gemini"?(n(),i("div",pr,[t[189]||(t[189]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[56]||(t[56]=a=>s.value.projectId=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[T,s.value.projectId]]),t[190]||(t[190]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," Google Cloud/Workspace 账号可能需要提供项目 ID ",-1))])):w("",!0),s.value.platform==="claude"?(n(),i("div",mr,[t[193]||(t[193]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",cr,[e("label",gr,[y(e("input",{"onUpdate:modelValue":t[57]||(t[57]=a=>s.value.subscriptionType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[B,s.value.subscriptionType]]),t[191]||(t[191]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",xr,[y(e("input",{"onUpdate:modelValue":t[58]||(t[58]=a=>s.value.subscriptionType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[B,s.value.subscriptionType]]),t[192]||(t[192]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[194]||(t[194]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):w("",!0),e("div",null,[t[195]||(t[195]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),y(e("input",{"onUpdate:modelValue":t[59]||(t[59]=a=>s.value.priority=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高",type:"number"},null,512),[[T,s.value.priority,void 0,{number:!0}]]),t[196]||(t[196]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.platform==="claude-console"?(n(),i("div",yr,[e("div",null,[t[197]||(t[197]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API URL",-1)),y(e("input",{"onUpdate:modelValue":t[60]||(t[60]=a=>s.value.apiUrl=a),class:"form-input w-full",placeholder:"例如:https://api.example.com",required:"",type:"text"},null,512),[[T,s.value.apiUrl]])]),e("div",null,[t[198]||(t[198]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API Key",-1)),y(e("input",{"onUpdate:modelValue":t[61]||(t[61]=a=>s.value.apiKey=a),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[T,s.value.apiKey]]),t[199]||(t[199]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",null,[t[203]||(t[203]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"模型映射表 (可选)",-1)),t[204]||(t[204]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3"},[e("p",{class:"text-xs text-blue-700"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",fr,[(n(!0),i(pe,null,me(x.value,(a,M)=>(n(),i("div",{key:M,class:"flex items-center gap-2"},[y(e("input",{"onUpdate:modelValue":O=>a.from=O,class:"form-input flex-1",placeholder:"原始模型名称",type:"text"},null,8,br),[[T,a.from]]),t[201]||(t[201]=e("i",{class:"fas fa-arrow-right text-gray-400"},null,-1)),y(e("input",{"onUpdate:modelValue":O=>a.to=O,class:"form-input flex-1",placeholder:"映射后的模型名称",type:"text"},null,8,vr),[[T,a.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50",type:"button",onClick:O=>u(M)},t[200]||(t[200]=[e("i",{class:"fas fa-trash"},null,-1)]),8,kr)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700",type:"button",onClick:m},t[202]||(t[202]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 添加模型映射 ",-1)])),e("div",wr,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200",type:"button",onClick:t[62]||(t[62]=a=>b("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200",type:"button",onClick:t[63]||(t[63]=a=>b("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200",type:"button",onClick:t[64]||(t[64]=a=>b("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200",type:"button",onClick:t[65]||(t[65]=a=>b("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[205]||(t[205]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[206]||(t[206]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[66]||(t[66]=a=>s.value.userAgent=a),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[T,s.value.userAgent]]),t[207]||(t[207]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[212]||(t[212]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",hr,[e("label",$r,[y(e("input",{"onUpdate:modelValue":t[67]||(t[67]=a=>s.value.enableRateLimit=a),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[ve,s.value.enableRateLimit]]),t[208]||(t[208]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[209]||(t[209]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",Ar,[t[210]||(t[210]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[68]||(t[68]=a=>s.value.rateLimitDuration=a),class:"form-input w-full",min:"1",type:"number"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[211]||(t[211]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):w("",!0)])])):w("",!0),s.value.platform==="bedrock"?(n(),i("div",Cr,[e("div",null,[t[213]||(t[213]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 访问密钥 ID",-1)),y(e("input",{"onUpdate:modelValue":t[69]||(t[69]=a=>s.value.accessKeyId=a),class:"form-input w-full",placeholder:"留空表示不更新",type:"text"},null,512),[[T,s.value.accessKeyId]]),t[214]||(t[214]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Access Key ID",-1))]),e("div",null,[t[215]||(t[215]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 秘密访问密钥",-1)),y(e("input",{"onUpdate:modelValue":t[70]||(t[70]=a=>s.value.secretAccessKey=a),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[T,s.value.secretAccessKey]]),t[216]||(t[216]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Secret Access Key",-1))]),e("div",null,[t[217]||(t[217]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 区域",-1)),y(e("input",{"onUpdate:modelValue":t[71]||(t[71]=a=>s.value.region=a),class:"form-input w-full",placeholder:"例如:us-east-1",type:"text"},null,512),[[T,s.value.region]]),t[218]||(t[218]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")])])])],-1))]),e("div",null,[t[219]||(t[219]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"会话令牌 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[72]||(t[72]=a=>s.value.sessionToken=a),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[T,s.value.sessionToken]])]),e("div",null,[t[220]||(t[220]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"默认主模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[73]||(t[73]=a=>s.value.defaultModel=a),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[T,s.value.defaultModel]]),t[221]||(t[221]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1))]),e("div",null,[t[222]||(t[222]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[74]||(t[74]=a=>s.value.smallFastModel=a),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[T,s.value.smallFastModel]]),t[223]||(t[223]=e("p",{class:"mt-1 text-xs text-gray-500"},"用于快速响应的轻量级模型,留空将使用系统默认",-1))]),e("div",null,[t[228]||(t[228]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",Tr,[e("label",Ir,[y(e("input",{"onUpdate:modelValue":t[75]||(t[75]=a=>s.value.enableRateLimit=a),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[ve,s.value.enableRateLimit]]),t[224]||(t[224]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[225]||(t[225]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",Ur,[t[226]||(t[226]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[76]||(t[76]=a=>s.value.rateLimitDuration=a),class:"form-input w-full",min:"1",type:"number"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[227]||(t[227]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):w("",!0)])])):w("",!0),s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("div",Sr,[t[231]||(t[231]=e("div",{class:"mb-4 flex items-start gap-3"},[e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-amber-500"},[e("i",{class:"fas fa-key text-sm text-white"})]),e("div",null,[e("h5",{class:"mb-2 font-semibold text-amber-900 dark:text-amber-300"},"更新 Token"),e("p",{class:"mb-2 text-sm text-amber-800 dark:text-amber-300"}," 可以更新 Access Token 和 Refresh Token。为了安全起见,不会显示当前的 Token 值。 "),e("p",{class:"text-xs text-amber-600 dark:text-amber-400"},"💡 留空表示不更新该字段。")])],-1)),e("div",Vr,[e("div",null,[t[229]||(t[229]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Access Token",-1)),y(e("textarea",{"onUpdate:modelValue":t[77]||(t[77]=a=>s.value.accessToken=a),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[T,s.value.accessToken]])]),e("div",null,[t[230]||(t[230]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Refresh Token",-1)),y(e("textarea",{"onUpdate:modelValue":t[78]||(t[78]=a=>s.value.refreshToken=a),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[T,s.value.refreshToken]])])])])):w("",!0),ce(He,{modelValue:s.value.proxy,"onUpdate:modelValue":t[79]||(t[79]=a=>s.value.proxy=a)},null,8,["modelValue"]),e("div",zr,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[80]||(t[80]=a=>o.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:G.value,type:"button",onClick:ze},[G.value?(n(),i("div",Mr)):w("",!0),C(" "+v(G.value?"更新中...":"更新"),1)],8,Kr)])])):w("",!0)])])):w("",!0),ce(et,{"cancel-text":ee(k).cancelText,"confirm-text":ee(k).confirmText,message:ee(k).message,show:ee(P),title:ee(k).title,onCancel:ee(z),onConfirm:ee(U)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"]),xe.value?(n(),we(ua,{key:1,onClose:t[81]||(t[81]=a=>xe.value=!1),onRefresh:Te})):w("",!0)]))}},Or={class:"accounts-container"},Lr={class:"card p-4 sm:p-6"},jr={class:"mb-4 flex flex-col gap-4 sm:mb-6"},Rr={class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},Dr={class:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3"},Pr={class:"group relative min-w-[160px]"},Gr={class:"group relative min-w-[140px]"},Er={class:"group relative min-w-[160px]"},Wr={class:"relative"},Fr=["disabled"],qr={key:0,class:"py-12 text-center"},Br={key:1,class:"py-12 text-center"},Nr={key:2,class:"table-container hidden md:block"},_r={class:"w-full table-fixed"},Hr={class:"bg-gray-50/80 backdrop-blur-sm dark:bg-gray-700/80"},Jr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Yr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Qr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Xr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Zr={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},eo={class:"px-3 py-4"},to={class:"flex items-center"},so={class:"min-w-0"},ao={class:"flex items-center gap-2"},lo=["title"],ro={key:0,class:"inline-flex items-center rounded-full bg-purple-100 px-2 py-0.5 text-xs font-medium text-purple-800"},oo={key:1,class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-800"},no={key:2,class:"inline-flex items-center rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800"},io=["title"],uo=["title"],po={class:"px-3 py-4"},mo={class:"flex items-center gap-1"},co={key:0,class:"flex items-center gap-1.5 rounded-lg border border-yellow-200 bg-gradient-to-r from-yellow-100 to-amber-100 px-2.5 py-1"},go={class:"text-xs font-medium text-yellow-700"},xo={key:1,class:"flex items-center gap-1.5 rounded-lg border border-purple-200 bg-gradient-to-r from-purple-100 to-pink-100 px-2.5 py-1"},yo={key:2,class:"flex items-center gap-1.5 rounded-lg border border-orange-200 bg-gradient-to-r from-orange-100 to-red-100 px-2.5 py-1"},fo={key:3,class:"flex items-center gap-1.5 rounded-lg border border-gray-700 bg-gray-100 bg-gradient-to-r from-gray-100 to-gray-100 px-2.5 py-1"},bo={class:"text-xs font-medium text-gray-950"},vo={key:4,class:"flex items-center gap-1.5 rounded-lg border border-blue-200 bg-gradient-to-r from-blue-100 to-cyan-100 px-2.5 py-1 dark:border-blue-700 dark:from-blue-900/20 dark:to-cyan-900/20"},ko={key:5,class:"flex items-center gap-1.5 rounded-lg border border-indigo-200 bg-gradient-to-r from-indigo-100 to-blue-100 px-2.5 py-1"},wo={class:"text-xs font-semibold text-indigo-800"},ho={class:"text-xs font-medium text-indigo-700"},$o={key:6,class:"flex items-center gap-1.5 rounded-lg border border-gray-200 bg-gradient-to-r from-gray-100 to-gray-200 px-2.5 py-1"},Ao={class:"whitespace-nowrap px-3 py-4"},Co={class:"flex flex-col gap-1"},To={key:0,class:"inline-flex items-center rounded-full bg-yellow-100 px-3 py-1 text-xs font-semibold text-yellow-800"},Io={key:0},Uo={key:1,class:"inline-flex items-center rounded-full bg-gray-100 px-3 py-1 text-xs font-semibold text-gray-700"},So=["title"],Vo={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},zo={class:"whitespace-nowrap px-3 py-4"},Ko={key:0,class:"flex items-center gap-2"},Mo={class:"h-2 w-16 rounded-full bg-gray-200"},Oo={class:"min-w-[20px] text-xs font-medium text-gray-700 dark:text-gray-200"},Lo={key:1,class:"text-sm text-gray-400"},jo={class:"px-3 py-4 text-sm text-gray-600"},Ro=["title"],Do={key:1,class:"text-gray-400"},Po={class:"whitespace-nowrap px-3 py-4 text-sm"},Go={key:0,class:"space-y-1"},Eo={class:"flex items-center gap-2"},Wo={class:"text-sm font-medium text-gray-900 dark:text-gray-100"},Fo={class:"flex items-center gap-2"},qo={class:"text-xs text-gray-600 dark:text-gray-300"},Bo={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},No={key:1,class:"text-xs text-gray-400"},_o={class:"whitespace-nowrap px-3 py-4"},Ho={key:0,class:"space-y-2"},Jo={class:"flex items-center gap-2"},Yo={class:"h-2 w-24 rounded-full bg-gray-200"},Qo={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},Xo={class:"text-xs text-gray-600 dark:text-gray-300"},Zo={key:0,class:"font-medium text-indigo-600"},en={key:1,class:"text-sm text-gray-400"},tn={key:2,class:"text-sm text-gray-400"},sn={class:"whitespace-nowrap px-3 py-4 text-sm text-gray-600 dark:text-gray-300"},an={class:"whitespace-nowrap px-3 py-4 text-sm font-medium"},ln={class:"flex flex-wrap items-center gap-1"},rn=["disabled","title","onClick"],on=["disabled","title","onClick"],nn={class:"ml-1"},un=["onClick"],dn=["onClick"],pn={key:3,class:"space-y-3 md:hidden"},mn={class:"mb-3 flex items-start justify-between"},cn={class:"flex items-center gap-3"},gn={class:"text-sm font-semibold text-gray-900"},xn={class:"mt-0.5 flex items-center gap-2"},yn={class:"text-xs text-gray-500 dark:text-gray-400"},fn={class:"text-xs text-gray-500 dark:text-gray-400"},bn={class:"mb-3 grid grid-cols-2 gap-3"},vn={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},kn={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},wn={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},hn={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},$n={class:"mb-3 space-y-2"},An={key:0,class:"space-y-1.5 rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},Cn={class:"flex items-center justify-between text-xs"},Tn={class:"font-medium text-gray-700 dark:text-gray-200"},In={class:"h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-600"},Un={class:"flex items-center justify-between text-xs"},Sn={class:"text-gray-500 dark:text-gray-400"},Vn={key:0,class:"font-medium text-indigo-600"},zn={key:1,class:"text-gray-500"},Kn={class:"flex items-center justify-between text-xs"},Mn={class:"text-gray-700 dark:text-gray-200"},On={key:1,class:"flex items-center justify-between text-xs"},Ln={class:"text-gray-700 dark:text-gray-200"},jn={class:"flex items-center justify-between text-xs"},Rn={class:"font-medium text-gray-700 dark:text-gray-200"},Dn={class:"mt-3 flex gap-2 border-t border-gray-100 pt-3"},Pn=["disabled","onClick"],Gn=["onClick"],En=["onClick"],Wn={__name:"AccountsView",setup(N){const{showConfirmModal:Y,confirmOptions:c,showConfirm:H,handleConfirm:A,handleCancel:P}=Xe(),k=$([]),g=$(!1),U=$("name"),z=$(""),f=$("asc"),D=$([]),j=$([]),G=$("all"),E=$("all"),_=$(!1),W=$(!1),p=$(!1),L=$(new Map),X=$([{value:"name",label:"按名称排序",icon:"fa-font"},{value:"dailyTokens",label:"按今日Token排序",icon:"fa-coins"},{value:"dailyRequests",label:"按今日请求数排序",icon:"fa-chart-line"},{value:"totalTokens",label:"按总Token排序",icon:"fa-database"},{value:"lastUsed",label:"按最后使用排序",icon:"fa-clock"}]),ae=$([{value:"all",label:"所有平台",icon:"fa-globe"},{value:"claude",label:"Claude",icon:"fa-brain"},{value:"claude-console",label:"Claude Console",icon:"fa-terminal"},{value:"gemini",label:"Gemini",icon:"fa-google"},{value:"openai",label:"OpenAi",icon:"fa-openai"},{value:"azure_openai",label:"Azure OpenAI",icon:"fab fa-microsoft"},{value:"bedrock",label:"Bedrock",icon:"fab fa-aws"}]),s=ke(()=>{const d=[{value:"all",label:"所有账户",icon:"fa-globe"},{value:"ungrouped",label:"未分组账户",icon:"fa-user"}];return j.value.forEach(l=>{d.push({value:l.id,label:`${l.name} (${l.platform==="claude"?"Claude":l.platform==="gemini"?"Gemini":"OpenAI"})`,icon:l.platform==="claude"?"fa-brain":l.platform==="gemini"?"fa-robot":"fa-openai"})}),d}),x=$(!1),K=$(!1),h=$(null),ge=ke(()=>{const d=k.value;return z.value?[...d].sort((V,r)=>{var te,se,re,o,t,a,M,O,Q,fe,oe,Ne;let F=V[z.value],q=r[z.value];return z.value==="dailyTokens"?(F=((se=(te=V.usage)==null?void 0:te.daily)==null?void 0:se.allTokens)||0,q=((o=(re=r.usage)==null?void 0:re.daily)==null?void 0:o.allTokens)||0):z.value==="dailyRequests"?(F=((a=(t=V.usage)==null?void 0:t.daily)==null?void 0:a.requests)||0,q=((O=(M=r.usage)==null?void 0:M.daily)==null?void 0:O.requests)||0):z.value==="totalTokens"&&(F=((fe=(Q=V.usage)==null?void 0:Q.total)==null?void 0:fe.allTokens)||0,q=((Ne=(oe=r.usage)==null?void 0:oe.total)==null?void 0:Ne.allTokens)||0),z.value==="lastUsed"&&(F=V.lastUsedAt?new Date(V.lastUsedAt).getTime():0,q=r.lastUsedAt?new Date(r.lastUsedAt).getTime():0),z.value==="status"&&(F=V.isActive?1:0,q=r.isActive?1:0),Fq?f.value==="asc"?1:-1:0}):d}),Z=async(d=!1)=>{g.value=!0;try{const l={};E.value!=="all"&&(l.platform=E.value),G.value!=="all"&&(l.groupId=G.value);const V=[];if(E.value==="all")V.push(S.get("/admin/claude-accounts",{params:l}),S.get("/admin/claude-console-accounts",{params:l}),S.get("/admin/bedrock-accounts",{params:l}),S.get("/admin/gemini-accounts",{params:l}),S.get("/admin/openai-accounts",{params:l}),S.get("/admin/azure-openai-accounts",{params:l}));else switch(E.value){case"claude":V.push(S.get("/admin/claude-accounts",{params:l}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"claude-console":V.push(Promise.resolve({success:!0,data:[]}),S.get("/admin/claude-console-accounts",{params:l}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"bedrock":V.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),S.get("/admin/bedrock-accounts",{params:l}),Promise.resolve({success:!0,data:[]}));break;case"gemini":V.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),S.get("/admin/gemini-accounts",{params:l}));break}await Promise.all([Ue(d),Se(d)]),await Ce(d);const[r,F,q,te,se,re]=await Promise.all(V),o=[];if(r.success){const t=(r.data||[]).map(a=>{const M=D.value.filter(Q=>Q.claudeAccountId===a.id).length,O=L.value.get(a.id)||null;return{...a,platform:"claude",boundApiKeysCount:M,groupInfo:O}});o.push(...t)}if(F.success){const t=(F.data||[]).map(a=>{const M=L.value.get(a.id)||null;return{...a,platform:"claude-console",boundApiKeysCount:0,groupInfo:M}});o.push(...t)}if(q.success){const t=(q.data||[]).map(a=>{const M=L.value.get(a.id)||null;return{...a,platform:"bedrock",boundApiKeysCount:0,groupInfo:M}});o.push(...t)}if(te.success){const t=(te.data||[]).map(a=>{const M=D.value.filter(Q=>Q.geminiAccountId===a.id).length,O=L.value.get(a.id)||null;return{...a,platform:"gemini",boundApiKeysCount:M,groupInfo:O}});o.push(...t)}if(se.success){const t=(se.data||[]).map(a=>{const M=D.value.filter(Q=>Q.openaiAccountId===a.id).length,O=L.value.get(a.id)||null;return{...a,platform:"openai",boundApiKeysCount:M,groupInfo:O}});o.push(...t)}if(re&&re.success){const t=(re.data||[]).map(a=>{const M=D.value.filter(Q=>Q.azureOpenaiAccountId===a.id).length,O=L.value.get(a.id)||null;return{...a,platform:"azure_openai",boundApiKeysCount:M,groupInfo:O}});o.push(...t)}k.value=o}catch{I("加载账户失败","error")}finally{g.value=!1}},ne=d=>{d&&(z.value===d?f.value=f.value==="asc"?"desc":"asc":(z.value=d,f.value="asc"))},ie=d=>{if(d==null)return"0";const l=Number(d);return l>=1e6?Math.floor(l/1e6).toLocaleString()+"M":l.toLocaleString()},Ae=d=>{if(!d)return"从未使用";const l=new Date(d),r=new Date-l;return r<6e4?"刚刚":r<36e5?`${Math.floor(r/6e4)} 分钟前`:r<864e5?`${Math.floor(r/36e5)} 小时前`:r<6048e5?`${Math.floor(r/864e5)} 天前`:l.toLocaleDateString("zh-CN")},Ue=async(d=!1)=>{if(!(!d&&_.value))try{const l=await S.get("/admin/api-keys");l.success&&(D.value=l.data||[],_.value=!0)}catch(l){console.error("Failed to load API keys:",l)}},Se=async(d=!1)=>{if(!(!d&&W.value))try{const l=await S.get("/admin/account-groups");l.success&&(j.value=l.data||[],W.value=!0)}catch(l){console.error("Failed to load account groups:",l)}},Ce=async(d=!1)=>{if(!(!d&&p.value))try{L.value.clear();for(const l of j.value)try{const V=await S.get(`/admin/account-groups/${l.id}/members`);V.success&&(V.data||[]).forEach(F=>{L.value.set(F.id,l)})}catch(V){console.error(`Failed to load members for group ${l.id}:`,V)}p.value=!0}catch(l){console.error("Failed to load group members:",l)}},Ve=()=>{_.value=!1,W.value=!1,p.value=!1,L.value.clear()},ze=()=>{Z()},de=()=>{Z()},ue=d=>{if(!d||!d.host||!d.port)return null;const l=d.type==="socks5"?"S5":d.type.toUpperCase();let V=d.host;V.length>15&&(V=V.substring(0,12)+"...");let r=`${l}://${V}:${d.port}`;return d.username&&(r=`${l}://***@${V}:${d.port}`),r},xe=(d,l)=>{if(!d||!l)return"--";const V=new Date(d),r=new Date(l),F=V.getHours().toString().padStart(2,"0"),q=V.getMinutes().toString().padStart(2,"0"),te=r.getHours().toString().padStart(2,"0"),se=r.getMinutes().toString().padStart(2,"0");return`${F}:${q} - ${te}:${se}`},he=d=>{if(!d||d<=0)return"已结束";const l=Math.floor(d/60),V=d%60;return l>0?`${l}小时${V}分钟`:`${V}分钟`},ye=()=>{x.value=!0},$e=d=>{h.value=d,K.value=!0},Te=async d=>{const l=D.value.filter(r=>r.claudeAccountId===d.id||r.geminiAccountId===d.id||r.openaiAccountId===d.id).length;if(l>0){I(`无法删除此账号,有 ${l} 个API Key绑定到此账号,请先解绑所有API Key`,"error");return}if(await H("删除账户",`确定要删除账户 "${d.name}" 吗? + +此操作不可恢复。`,"删除","取消"))try{let r;d.platform==="claude"?r=`/admin/claude-accounts/${d.id}`:d.platform==="claude-console"?r=`/admin/claude-console-accounts/${d.id}`:d.platform==="bedrock"?r=`/admin/bedrock-accounts/${d.id}`:d.platform==="openai"?r=`/admin/openai-accounts/${d.id}`:d.platform==="azure_openai"?r=`/admin/azure-openai-accounts/${d.id}`:r=`/admin/gemini-accounts/${d.id}`;const F=await S.delete(r);F.success?(I("账户已删除","success"),p.value=!1,Z()):I(F.message||"删除失败","error")}catch{I("删除失败","error")}},m=async d=>{if(d.isResetting)return;let l=!1;if(window.showConfirm?l=await window.showConfirm("重置账户状态","确定要重置此账户的所有异常状态吗?这将清除限流状态、401错误计数等所有异常标记。","确定重置","取消"):l=confirm("确定要重置此账户的所有异常状态吗?"),!!l)try{d.isResetting=!0;const V=await S.post(`/admin/claude-accounts/${d.id}/reset-status`);V.success?(I("账户状态已重置","success"),Z()):I(V.message||"状态重置失败","error")}catch{I("状态重置失败","error")}finally{d.isResetting=!1}},u=async d=>{if(!d.isTogglingSchedulable)try{d.isTogglingSchedulable=!0;let l;if(d.platform==="claude")l=`/admin/claude-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="claude-console")l=`/admin/claude-console-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="bedrock")l=`/admin/bedrock-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="gemini")l=`/admin/gemini-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="openai")l=`/admin/openai-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="azure_openai")l=`/admin/azure-openai-accounts/${d.id}/toggle-schedulable`;else{I("该账户类型暂不支持调度控制","warning");return}const V=await S.put(l);V.success?(d.schedulable=V.schedulable,I(V.schedulable?"已启用调度":"已禁用调度","success")):I(V.message||"操作失败","error")}catch{I("切换调度状态失败","error")}finally{d.isTogglingSchedulable=!1}},b=()=>{x.value=!1,I("账户创建成功","success"),Ve(),Z()},le=()=>{K.value=!1,I("账户更新成功","success"),p.value=!1,Z()},Ke=d=>!d.lastRefreshAt||d.lastRefreshAt===""?"Setup":"OAuth",Me=()=>"OAuth",Oe=()=>"OAuth",Le=d=>{if(d.subscriptionInfo)try{const l=typeof d.subscriptionInfo=="string"?JSON.parse(d.subscriptionInfo):d.subscriptionInfo;return console.log("Account subscription info:",{accountName:d.name,subscriptionInfo:l,hasClaudeMax:l.hasClaudeMax,hasClaudePro:l.hasClaudePro}),l.hasClaudeMax===!0?"Claude Max":l.hasClaudePro===!0?"Claude Pro":"Claude Free"}catch(l){return console.error("Failed to parse subscription info:",l),"Claude"}return console.log("No subscription info for account:",d.name),"Claude"},je=d=>d.status==="blocked"?"已封锁":d.status==="unauthorized"?"异常":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"限流中":d.status==="error"||!d.isActive?"错误":d.schedulable===!1?"已暂停":"正常",Re=d=>d.status==="blocked"||d.status==="unauthorized"?"bg-red-100 text-red-800":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"bg-orange-100 text-orange-800":d.status==="error"||!d.isActive?"bg-red-100 text-red-800":d.schedulable===!1?"bg-gray-100 text-gray-800":"bg-green-100 text-green-800",De=d=>d.status==="blocked"||d.status==="unauthorized"?"bg-red-500":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"bg-orange-500":d.status==="error"||!d.isActive?"bg-red-500":d.schedulable===!1?"bg-gray-500":"bg-green-500",Pe=d=>Ae(d);return J(U,d=>{const l={name:"name",dailyTokens:"dailyTokens",dailyRequests:"dailyRequests",totalTokens:"totalTokens",lastUsed:"lastUsed"};l[d]&&ne(l[d])}),Ye(()=>{Z(!0)}),(d,l)=>{const V=tt;return n(),i("div",Or,[e("div",Lr,[e("div",jr,[l[19]||(l[19]=e("div",null,[e("h3",{class:"mb-1 text-lg font-bold text-gray-900 dark:text-gray-100 sm:mb-2 sm:text-xl"}," 账户管理 "),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"}," 管理您的 Claude、Gemini、OpenAI 和 Azure OpenAI 账户及代理配置 ")],-1)),e("div",Rr,[e("div",Dr,[e("div",Pr,[l[13]||(l[13]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-indigo-500 to-blue-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),ce(Fe,{modelValue:U.value,"onUpdate:modelValue":l[0]||(l[0]=r=>U.value=r),icon:"fa-sort-amount-down","icon-color":"text-indigo-500",options:X.value,placeholder:"选择排序",onChange:l[1]||(l[1]=r=>ne())},null,8,["modelValue","options"])]),e("div",Gr,[l[14]||(l[14]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-blue-500 to-indigo-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),ce(Fe,{modelValue:E.value,"onUpdate:modelValue":l[2]||(l[2]=r=>E.value=r),icon:"fa-server","icon-color":"text-blue-500",options:ae.value,placeholder:"选择平台",onChange:ze},null,8,["modelValue","options"])]),e("div",Er,[l[15]||(l[15]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-purple-500 to-pink-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),ce(Fe,{modelValue:G.value,"onUpdate:modelValue":l[3]||(l[3]=r=>G.value=r),icon:"fa-layer-group","icon-color":"text-purple-500",options:s.value,placeholder:"选择分组",onChange:de},null,8,["modelValue","options"])]),e("div",Wr,[ce(V,{content:"刷新数据 (Ctrl/⌘+点击强制刷新所有缓存)",effect:"dark",placement:"bottom"},{default:rt(()=>[e("button",{class:"group relative flex items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm transition-all duration-200 hover:border-gray-300 hover:shadow-md disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:border-gray-500 sm:w-auto",disabled:g.value,onClick:[l[4]||(l[4]=Ge(r=>Z(!0),["ctrl","exact"])),l[5]||(l[5]=Ge(r=>Z(!1),["exact"])),l[6]||(l[6]=Ge(r=>Z(!0),["meta","exact"]))]},[l[16]||(l[16]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-green-500 to-teal-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),e("i",{class:R(["fas relative text-green-500",g.value?"fa-spinner fa-spin":"fa-sync-alt"])},null,2),l[17]||(l[17]=e("span",{class:"relative"},"刷新",-1))],8,Fr)]),_:1})])]),e("button",{class:"flex w-full items-center justify-center gap-2 rounded-lg bg-gradient-to-r from-green-500 to-green-600 px-5 py-2.5 text-sm font-medium text-white shadow-md transition-all duration-200 hover:from-green-600 hover:to-green-700 hover:shadow-lg sm:w-auto",onClick:Ge(ye,["stop"])},l[18]||(l[18]=[e("i",{class:"fas fa-plus"},null,-1),e("span",null,"添加账户",-1)]))])]),g.value?(n(),i("div",qr,l[20]||(l[20]=[e("div",{class:"loading-spinner mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载账户...",-1)]))):ge.value.length===0?(n(),i("div",Br,l[21]||(l[21]=[e("div",{class:"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-gray-100 dark:bg-gray-700"},[e("i",{class:"fas fa-user-circle text-xl text-gray-400"})],-1),e("p",{class:"text-lg text-gray-500 dark:text-gray-400"},"暂无账户",-1),e("p",{class:"mt-2 text-sm text-gray-400 dark:text-gray-500"},"点击上方按钮添加您的第一个账户",-1)]))):(n(),i("div",Nr,[e("table",_r,[e("thead",Hr,[e("tr",null,[e("th",{class:"w-[22%] min-w-[180px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:l[7]||(l[7]=r=>ne("name"))},[l[22]||(l[22]=C(" 名称 ",-1)),z.value==="name"?(n(),i("i",{key:0,class:R(["fas",f.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Jr))]),e("th",{class:"w-[15%] min-w-[120px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:l[8]||(l[8]=r=>ne("platform"))},[l[23]||(l[23]=C(" 平台/类型 ",-1)),z.value==="platform"?(n(),i("i",{key:0,class:R(["fas",f.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Yr))]),e("th",{class:"w-[12%] min-w-[100px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:l[9]||(l[9]=r=>ne("status"))},[l[24]||(l[24]=C(" 状态 ",-1)),z.value==="status"?(n(),i("i",{key:0,class:R(["fas",f.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Qr))]),e("th",{class:"w-[8%] min-w-[80px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:l[10]||(l[10]=r=>ne("priority"))},[l[25]||(l[25]=C(" 优先级 ",-1)),z.value==="priority"?(n(),i("i",{key:0,class:R(["fas",f.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Xr))]),l[26]||(l[26]=e("th",{class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 代理 ",-1)),l[27]||(l[27]=e("th",{class:"w-[10%] min-w-[90px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 今日使用 ",-1)),l[28]||(l[28]=e("th",{class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 会话窗口 ",-1)),l[29]||(l[29]=e("th",{class:"w-[8%] min-w-[80px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 最后使用 ",-1)),l[30]||(l[30]=e("th",{class:"w-[15%] min-w-[180px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 操作 ",-1))])]),e("tbody",Zr,[(n(!0),i(pe,null,me(ge.value,r=>{var F;return n(),i("tr",{key:r.id,class:"table-row"},[e("td",eo,[e("div",to,[l[35]||(l[35]=e("div",{class:"mr-2 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-user-circle text-xs text-white"})],-1)),e("div",so,[e("div",ao,[e("div",{class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100",title:r.name},v(r.name),9,lo),r.accountType==="dedicated"?(n(),i("span",ro,l[31]||(l[31]=[e("i",{class:"fas fa-lock mr-1"},null,-1),C("专属 ",-1)]))):r.accountType==="group"?(n(),i("span",oo,l[32]||(l[32]=[e("i",{class:"fas fa-layer-group mr-1"},null,-1),C("分组调度 ",-1)]))):(n(),i("span",no,l[33]||(l[33]=[e("i",{class:"fas fa-share-alt mr-1"},null,-1),C("共享 ",-1)]))),r.groupInfo?(n(),i("span",{key:3,class:"ml-1 inline-flex items-center rounded-full bg-gray-100 px-2 py-0.5 text-xs font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-400",title:`所属分组: ${r.groupInfo.name}`},[l[34]||(l[34]=e("i",{class:"fas fa-folder mr-1"},null,-1)),C(v(r.groupInfo.name),1)],8,io)):w("",!0)]),e("div",{class:"truncate text-xs text-gray-500 dark:text-gray-400",title:r.id},v(r.id),9,uo)])])]),e("td",po,[e("div",mo,[r.platform==="gemini"?(n(),i("div",co,[l[36]||(l[36]=e("i",{class:"fas fa-robot text-xs text-yellow-700"},null,-1)),l[37]||(l[37]=e("span",{class:"text-xs font-semibold text-yellow-800"},"Gemini",-1)),l[38]||(l[38]=e("span",{class:"mx-1 h-4 w-px bg-yellow-300"},null,-1)),e("span",go,v(Me()),1)])):r.platform==="claude-console"?(n(),i("div",xo,l[39]||(l[39]=[e("i",{class:"fas fa-terminal text-xs text-purple-700"},null,-1),e("span",{class:"text-xs font-semibold text-purple-800"},"Console",-1),e("span",{class:"mx-1 h-4 w-px bg-purple-300"},null,-1),e("span",{class:"text-xs font-medium text-purple-700"},"API Key",-1)]))):r.platform==="bedrock"?(n(),i("div",yo,l[40]||(l[40]=[e("i",{class:"fab fa-aws text-xs text-orange-700"},null,-1),e("span",{class:"text-xs font-semibold text-orange-800"},"Bedrock",-1),e("span",{class:"mx-1 h-4 w-px bg-orange-300"},null,-1),e("span",{class:"text-xs font-medium text-orange-700"},"AWS",-1)]))):r.platform==="openai"?(n(),i("div",fo,[l[41]||(l[41]=e("div",{class:"fa-openai"},null,-1)),l[42]||(l[42]=e("span",{class:"text-xs font-semibold text-gray-950"},"OpenAi",-1)),l[43]||(l[43]=e("span",{class:"mx-1 h-4 w-px bg-gray-400"},null,-1)),e("span",bo,v(Oe()),1)])):r.platform==="azure_openai"?(n(),i("div",vo,l[44]||(l[44]=[e("i",{class:"fab fa-microsoft text-xs text-blue-700 dark:text-blue-400"},null,-1),e("span",{class:"text-xs font-semibold text-blue-800 dark:text-blue-300"},"Azure OpenAI",-1),e("span",{class:"mx-1 h-4 w-px bg-blue-300 dark:bg-blue-600"},null,-1),e("span",{class:"text-xs font-medium text-blue-700 dark:text-blue-400"},"API Key",-1)]))):r.platform==="claude"||r.platform==="claude-oauth"?(n(),i("div",ko,[l[45]||(l[45]=e("i",{class:"fas fa-brain text-xs text-indigo-700"},null,-1)),e("span",wo,v(Le(r)),1),l[46]||(l[46]=e("span",{class:"mx-1 h-4 w-px bg-indigo-300"},null,-1)),e("span",ho,v(Ke(r)),1)])):(n(),i("div",$o,l[47]||(l[47]=[e("i",{class:"fas fa-question text-xs text-gray-700"},null,-1),e("span",{class:"text-xs font-semibold text-gray-800"},"未知",-1)])))])]),e("td",Ao,[e("div",Co,[e("span",{class:R(["inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold",r.status==="blocked"?"bg-orange-100 text-orange-800":r.status==="unauthorized"?"bg-red-100 text-red-800":r.isActive?"bg-green-100 text-green-800":"bg-red-100 text-red-800"])},[e("div",{class:R(["mr-2 h-2 w-2 rounded-full",r.status==="blocked"?"bg-orange-500":r.status==="unauthorized"?"bg-red-500":r.isActive?"bg-green-500":"bg-red-500"])},null,2),C(" "+v(r.status==="blocked"?"已封锁":r.status==="unauthorized"?"异常":r.isActive?"正常":"异常"),1)],2),r.rateLimitStatus&&r.rateLimitStatus.isRateLimited||r.rateLimitStatus==="limited"?(n(),i("span",To,[l[48]||(l[48]=e("i",{class:"fas fa-exclamation-triangle mr-1"},null,-1)),l[49]||(l[49]=C(" 限流中 ",-1)),r.rateLimitStatus&&typeof r.rateLimitStatus=="object"&&r.rateLimitStatus.minutesRemaining>0?(n(),i("span",Io,"("+v(r.rateLimitStatus.minutesRemaining)+"分钟)",1)):w("",!0)])):w("",!0),r.schedulable===!1?(n(),i("span",Uo,l[50]||(l[50]=[e("i",{class:"fas fa-pause-circle mr-1"},null,-1),C(" 不可调度 ",-1)]))):w("",!0),r.status==="blocked"&&r.errorMessage?(n(),i("span",{key:2,class:"mt-1 max-w-xs truncate text-xs text-gray-500 dark:text-gray-400",title:r.errorMessage},v(r.errorMessage),9,So)):w("",!0),r.accountType==="dedicated"?(n(),i("span",Vo," 绑定: "+v(r.boundApiKeysCount||0)+" 个API Key ",1)):w("",!0)])]),e("td",zo,[r.platform==="claude"||r.platform==="claude-console"||r.platform==="bedrock"||r.platform==="gemini"||r.platform==="openai"?(n(),i("div",Ko,[e("div",Mo,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-green-500 to-blue-600 transition-all duration-300",style:We({width:101-(r.priority||50)+"%"})},null,4)]),e("span",Oo,v(r.priority||50),1)])):(n(),i("div",Lo,l[51]||(l[51]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",jo,[ue(r.proxy)?(n(),i("div",{key:0,class:"break-all rounded bg-blue-50 px-2 py-1 font-mono text-xs",title:ue(r.proxy)},v(ue(r.proxy)),9,Ro)):(n(),i("div",Do,"无代理"))]),e("td",Po,[r.usage&&r.usage.daily?(n(),i("div",Go,[e("div",Eo,[l[52]||(l[52]=e("div",{class:"h-2 w-2 rounded-full bg-green-500"},null,-1)),e("span",Wo,v(r.usage.daily.requests||0)+" 次",1)]),e("div",Fo,[l[53]||(l[53]=e("div",{class:"h-2 w-2 rounded-full bg-blue-500"},null,-1)),e("span",qo,v(ie(r.usage.daily.allTokens||0))+" tokens",1)]),r.usage.averages&&r.usage.averages.rpm>0?(n(),i("div",Bo," 平均 "+v(r.usage.averages.rpm.toFixed(2))+" RPM ",1)):w("",!0)])):(n(),i("div",No,"暂无数据"))]),e("td",_o,[r.platform==="claude"&&r.sessionWindow&&r.sessionWindow.hasActiveWindow?(n(),i("div",Ho,[e("div",Jo,[e("div",Yo,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-blue-500 to-indigo-600 transition-all duration-300",style:We({width:r.sessionWindow.progress+"%"})},null,4)]),e("span",Qo,v(r.sessionWindow.progress)+"% ",1)]),e("div",Xo,[e("div",null,v(xe(r.sessionWindow.windowStart,r.sessionWindow.windowEnd)),1),r.sessionWindow.remainingTime>0?(n(),i("div",Zo," 剩余 "+v(he(r.sessionWindow.remainingTime)),1)):w("",!0)])])):r.platform==="claude"?(n(),i("div",en,l[54]||(l[54]=[e("i",{class:"fas fa-minus"},null,-1)]))):(n(),i("div",tn,l[55]||(l[55]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",sn,v(Ae(r.lastUsedAt)),1),e("td",an,[e("div",ln,[r.platform==="claude"&&(r.status==="unauthorized"||r.status!=="active"||(F=r.rateLimitStatus)!=null&&F.isRateLimited||r.rateLimitStatus==="limited"||!r.isActive)?(n(),i("button",{key:0,class:R(["rounded px-2.5 py-1 text-xs font-medium transition-colors",r.isResetting?"cursor-not-allowed bg-gray-100 text-gray-400":"bg-yellow-100 text-yellow-700 hover:bg-yellow-200"]),disabled:r.isResetting,title:r.isResetting?"重置中...":"重置所有异常状态",onClick:q=>m(r)},[e("i",{class:R(["fas fa-redo",r.isResetting?"animate-spin":""])},null,2),l[56]||(l[56]=e("span",{class:"ml-1"},"重置状态",-1))],10,rn)):w("",!0),e("button",{class:R(["rounded px-2.5 py-1 text-xs font-medium transition-colors",r.isTogglingSchedulable?"cursor-not-allowed bg-gray-100 text-gray-400":r.schedulable?"bg-green-100 text-green-700 hover:bg-green-200":"bg-gray-100 text-gray-700 hover:bg-gray-200"]),disabled:r.isTogglingSchedulable,title:r.schedulable?"点击禁用调度":"点击启用调度",onClick:q=>u(r)},[e("i",{class:R(["fas",r.schedulable?"fa-toggle-on":"fa-toggle-off"])},null,2),e("span",nn,v(r.schedulable?"调度":"停用"),1)],10,on),e("button",{class:"rounded bg-blue-100 px-2.5 py-1 text-xs font-medium text-blue-700 transition-colors hover:bg-blue-200",title:"编辑账户",onClick:q=>$e(r)},l[57]||(l[57]=[e("i",{class:"fas fa-edit"},null,-1),e("span",{class:"ml-1"},"编辑",-1)]),8,un),e("button",{class:"rounded bg-red-100 px-2.5 py-1 text-xs font-medium text-red-700 transition-colors hover:bg-red-200",title:"删除账户",onClick:q=>Te(r)},l[58]||(l[58]=[e("i",{class:"fas fa-trash"},null,-1),e("span",{class:"ml-1"},"删除",-1)]),8,dn)])])])}),128))])])])),!g.value&&ge.value.length>0?(n(),i("div",pn,[(n(!0),i(pe,null,me(ge.value,r=>{var F,q,te,se,re,o,t,a;return n(),i("div",{key:r.id,class:"card p-4 transition-shadow hover:shadow-lg"},[e("div",mn,[e("div",cn,[e("div",{class:R(["flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg",r.platform==="claude"?"bg-gradient-to-br from-purple-500 to-purple-600":r.platform==="bedrock"?"bg-gradient-to-br from-orange-500 to-red-600":r.platform==="azure_openai"?"bg-gradient-to-br from-blue-500 to-cyan-600":r.platform==="openai"?"bg-gradient-to-br from-gray-600 to-gray-700":"bg-gradient-to-br from-blue-500 to-blue-600"])},[e("i",{class:R(["text-sm text-white",r.platform==="claude"?"fas fa-brain":r.platform==="bedrock"?"fab fa-aws":r.platform==="azure_openai"?"fab fa-microsoft":r.platform==="openai"?"fas fa-openai":"fas fa-robot"])},null,2)],2),e("div",null,[e("h4",gn,v(r.name||r.email),1),e("div",xn,[e("span",yn,v(r.platform),1),l[59]||(l[59]=e("span",{class:"text-xs text-gray-400"},"|",-1)),e("span",fn,v(r.type),1)])])]),e("span",{class:R(["inline-flex items-center rounded-full px-2 py-1 text-xs font-semibold",Re(r)])},[e("div",{class:R(["mr-1.5 h-1.5 w-1.5 rounded-full",De(r)])},null,2),C(" "+v(je(r)),1)],2)]),e("div",bn,[e("div",null,[l[60]||(l[60]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"今日使用",-1)),e("p",vn,v(ie(((q=(F=r.usage)==null?void 0:F.daily)==null?void 0:q.requests)||0))+" 次 ",1),e("p",kn,v(ie(((se=(te=r.usage)==null?void 0:te.daily)==null?void 0:se.allTokens)||0))+" tokens ",1)]),e("div",null,[l[61]||(l[61]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"总使用量",-1)),e("p",wn,v(ie(((o=(re=r.usage)==null?void 0:re.total)==null?void 0:o.requests)||0))+" 次 ",1),e("p",hn,v(ie(((a=(t=r.usage)==null?void 0:t.total)==null?void 0:a.allTokens)||0))+" tokens ",1)])]),e("div",$n,[r.platform==="claude"&&r.sessionWindow&&r.sessionWindow.hasActiveWindow?(n(),i("div",An,[e("div",Cn,[l[62]||(l[62]=e("span",{class:"font-medium text-gray-600 dark:text-gray-300"},"会话窗口",-1)),e("span",Tn,v(r.sessionWindow.progress)+"% ",1)]),e("div",In,[e("div",{class:"h-full bg-gradient-to-r from-blue-500 to-indigo-600 transition-all duration-300",style:We({width:r.sessionWindow.progress+"%"})},null,4)]),e("div",Un,[e("span",Sn,v(xe(r.sessionWindow.windowStart,r.sessionWindow.windowEnd)),1),r.sessionWindow.remainingTime>0?(n(),i("span",Vn," 剩余 "+v(he(r.sessionWindow.remainingTime)),1)):(n(),i("span",zn," 已结束 "))])])):w("",!0),e("div",Kn,[l[63]||(l[63]=e("span",{class:"text-gray-500 dark:text-gray-400"},"最后使用",-1)),e("span",Mn,v(r.lastUsedAt?Pe(r.lastUsedAt):"从未使用"),1)]),r.proxyConfig&&r.proxyConfig.type!=="none"?(n(),i("div",On,[l[64]||(l[64]=e("span",{class:"text-gray-500 dark:text-gray-400"},"代理",-1)),e("span",Ln,v(r.proxyConfig.type.toUpperCase()),1)])):w("",!0),e("div",jn,[l[65]||(l[65]=e("span",{class:"text-gray-500 dark:text-gray-400"},"优先级",-1)),e("span",Rn,v(r.priority||50),1)])]),e("div",Dn,[e("button",{class:R(["flex flex-1 items-center justify-center gap-1 rounded-lg px-3 py-2 text-xs transition-colors",r.schedulable?"bg-gray-50 text-gray-600 hover:bg-gray-100":"bg-green-50 text-green-600 hover:bg-green-100"]),disabled:r.isTogglingSchedulable,onClick:M=>u(r)},[e("i",{class:R(["fas",r.schedulable?"fa-pause":"fa-play"])},null,2),C(" "+v(r.schedulable?"暂停":"启用"),1)],10,Pn),e("button",{class:"flex-1 rounded-lg bg-gray-50 px-3 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100",onClick:M=>$e(r)},l[66]||(l[66]=[e("i",{class:"fas fa-edit mr-1"},null,-1),C(" 编辑 ",-1)]),8,Gn),e("button",{class:"rounded-lg bg-red-50 px-3 py-2 text-xs text-red-600 transition-colors hover:bg-red-100",onClick:M=>Te(r)},l[67]||(l[67]=[e("i",{class:"fas fa-trash"},null,-1)]),8,En)])])}),128))])):w("",!0)]),x.value?(n(),we(Je,{key:0,onClose:l[11]||(l[11]=r=>x.value=!1),onSuccess:b})):w("",!0),K.value?(n(),we(Je,{key:1,account:h.value,onClose:l[12]||(l[12]=r=>K.value=!1),onSuccess:le},null,8,["account"])):w("",!0),ce(et,{"cancel-text":ee(c).cancelText,"confirm-text":ee(c).confirmText,message:ee(c).message,show:ee(Y),title:ee(c).title,onCancel:ee(P),onConfirm:ee(A)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"])])}}},Jn=Qe(Wn,[["__scopeId","data-v-c2f46f02"]]);export{Jn as default}; diff --git a/assets/AccountsView-DBRgMVT7.js b/assets/AccountsView-DBRgMVT7.js deleted file mode 100644 index fa29639d..00000000 --- a/assets/AccountsView-DBRgMVT7.js +++ /dev/null @@ -1,15 +0,0 @@ -import{a as tt}from"./element-plus-CMedNaYf.js";import{r as w,aR as st,o as H,V as at,x as i,y as n,z as e,L as k,K as x,al as we,aY as Te,aX as qe,aq as U,aZ as lt,C as P,O as C,c as fe,P as v,I as ke,a5 as Be,q as Ye,an as N,Q as be,ac as ve,R as me,u as ee,J as rt,Y as ze,B as Ee}from"./vue-vendor-DfnFpxGJ.js";import{s as I}from"./toast-BvwA7Mwb.js";import{b as M,_ as Qe}from"./index-BdtiivzQ.js";import{C as Fe}from"./CustomDropdown-D7ci0ZD4.js";import"./vendor-BDiMbLwQ.js";const We=w(!1),_e=w({title:"",message:"",confirmText:"继续",cancelText:"取消"}),ye=w(null);function Xe(){return{showConfirmModal:We,confirmOptions:_e,showConfirm:(_,h,b="继续",f="取消")=>new Promise(K=>{_e.value={title:_,message:h,confirmText:b,cancelText:f},ye.value=K,We.value=!0}),handleConfirm:()=>{We.value=!1,ye.value&&(ye.value(!0),ye.value=null)},handleCancel:()=>{We.value=!1,ye.value&&(ye.value(!1),ye.value=null)}}}const Ze=st("accounts",()=>{const B=w([]),J=w([]),m=w([]),_=w([]),h=w([]),b=w(!1),f=w(null),K=w(""),A=w("asc"),S=async()=>{b.value=!0,f.value=null;try{const c=await M.get("/admin/claude-accounts");if(c.success)B.value=c.data||[];else throw new Error(c.message||"获取Claude账户失败")}catch(c){throw f.value=c.message,c}finally{b.value=!1}},y=async()=>{b.value=!0,f.value=null;try{const c=await M.get("/admin/claude-console-accounts");if(c.success)J.value=c.data||[];else throw new Error(c.message||"获取Claude Console账户失败")}catch(c){throw f.value=c.message,c}finally{b.value=!1}},D=async()=>{b.value=!0,f.value=null;try{const c=await M.get("/admin/bedrock-accounts");if(c.success)m.value=c.data||[];else throw new Error(c.message||"获取Bedrock账户失败")}catch(c){throw f.value=c.message,c}finally{b.value=!1}},O=async()=>{b.value=!0,f.value=null;try{const c=await M.get("/admin/gemini-accounts");if(c.success)_.value=c.data||[];else throw new Error(c.message||"获取Gemini账户失败")}catch(c){throw f.value=c.message,c}finally{b.value=!1}},z=async()=>{b.value=!0,f.value=null;try{const c=await M.get("/admin/openai-accounts");if(c.success)h.value=c.data||[];else throw new Error(c.message||"获取OpenAI账户失败")}catch(c){throw f.value=c.message,c}finally{b.value=!1}};return{claudeAccounts:B,claudeConsoleAccounts:J,bedrockAccounts:m,geminiAccounts:_,openaiAccounts:h,loading:b,error:f,sortBy:K,sortOrder:A,fetchClaudeAccounts:S,fetchClaudeConsoleAccounts:y,fetchBedrockAccounts:D,fetchGeminiAccounts:O,fetchOpenAIAccounts:z,fetchAllAccounts:async()=>{b.value=!0,f.value=null;try{await Promise.all([S(),y(),D(),O(),z()])}catch(c){throw f.value=c.message,c}finally{b.value=!1}},createClaudeAccount:async c=>{b.value=!0,f.value=null;try{const p=await M.post("/admin/claude-accounts",c);if(p.success)return await S(),p.data;throw new Error(p.message||"创建Claude账户失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},createClaudeConsoleAccount:async c=>{b.value=!0,f.value=null;try{const p=await M.post("/admin/claude-console-accounts",c);if(p.success)return await y(),p.data;throw new Error(p.message||"创建Claude Console账户失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},createBedrockAccount:async c=>{b.value=!0,f.value=null;try{const p=await M.post("/admin/bedrock-accounts",c);if(p.success)return await D(),p.data;throw new Error(p.message||"创建Bedrock账户失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},createGeminiAccount:async c=>{b.value=!0,f.value=null;try{const p=await M.post("/admin/gemini-accounts",c);if(p.success)return await O(),p.data;throw new Error(p.message||"创建Gemini账户失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},createOpenAIAccount:async c=>{b.value=!0,f.value=null;try{const p=await M.post("/admin/openai-accounts",c);if(p.success)return await z(),p.data;throw new Error(p.message||"创建OpenAI账户失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},updateClaudeAccount:async(c,p)=>{b.value=!0,f.value=null;try{const $=await M.put(`/admin/claude-accounts/${c}`,p);if($.success)return await S(),$;throw new Error($.message||"更新Claude账户失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},updateClaudeConsoleAccount:async(c,p)=>{b.value=!0,f.value=null;try{const $=await M.put(`/admin/claude-console-accounts/${c}`,p);if($.success)return await y(),$;throw new Error($.message||"更新Claude Console账户失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},updateBedrockAccount:async(c,p)=>{b.value=!0,f.value=null;try{const $=await M.put(`/admin/bedrock-accounts/${c}`,p);if($.success)return await D(),$;throw new Error($.message||"更新Bedrock账户失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},updateGeminiAccount:async(c,p)=>{b.value=!0,f.value=null;try{const $=await M.put(`/admin/gemini-accounts/${c}`,p);if($.success)return await O(),$;throw new Error($.message||"更新Gemini账户失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},updateOpenAIAccount:async(c,p)=>{b.value=!0,f.value=null;try{const $=await M.put(`/admin/openai-accounts/${c}`,p);if($.success)return await z(),$;throw new Error($.message||"更新OpenAI账户失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},toggleAccount:async(c,p)=>{b.value=!0,f.value=null;try{let $;c==="claude"?$=`/admin/claude-accounts/${p}/toggle`:c==="claude-console"?$=`/admin/claude-console-accounts/${p}/toggle`:c==="bedrock"?$=`/admin/bedrock-accounts/${p}/toggle`:c==="gemini"?$=`/admin/gemini-accounts/${p}/toggle`:$=`/admin/openai-accounts/${p}/toggle`;const le=await M.put($);if(le.success)return c==="claude"?await S():c==="claude-console"?await y():c==="bedrock"?await D():c==="gemini"?await O():await z(),le;throw new Error(le.message||"切换状态失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},deleteAccount:async(c,p)=>{b.value=!0,f.value=null;try{let $;c==="claude"?$=`/admin/claude-accounts/${p}`:c==="claude-console"?$=`/admin/claude-console-accounts/${p}`:c==="bedrock"?$=`/admin/bedrock-accounts/${p}`:c==="gemini"?$=`/admin/gemini-accounts/${p}`:$=`/admin/openai-accounts/${p}`;const le=await M.delete($);if(le.success)return c==="claude"?await S():c==="claude-console"?await y():c==="bedrock"?await D():c==="gemini"?await O():await z(),le;throw new Error(le.message||"删除失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},refreshClaudeToken:async c=>{b.value=!0,f.value=null;try{const p=await M.post(`/admin/claude-accounts/${c}/refresh`);if(p.success)return await S(),p;throw new Error(p.message||"Token刷新失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},generateClaudeAuthUrl:async c=>{try{const p=await M.post("/admin/claude-accounts/generate-auth-url",c);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw f.value=p.message,p}},exchangeClaudeCode:async c=>{try{const p=await M.post("/admin/claude-accounts/exchange-code",c);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw f.value=p.message,p}},generateClaudeSetupTokenUrl:async c=>{try{const p=await M.post("/admin/claude-accounts/generate-setup-token-url",c);if(p.success)return p.data;throw new Error(p.message||"生成Setup Token URL失败")}catch(p){throw f.value=p.message,p}},exchangeClaudeSetupTokenCode:async c=>{try{const p=await M.post("/admin/claude-accounts/exchange-setup-token-code",c);if(p.success)return p.data;throw new Error(p.message||"交换Setup Token授权码失败")}catch(p){throw f.value=p.message,p}},generateGeminiAuthUrl:async c=>{try{const p=await M.post("/admin/gemini-accounts/generate-auth-url",c);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw f.value=p.message,p}},exchangeGeminiCode:async c=>{try{const p=await M.post("/admin/gemini-accounts/exchange-code",c);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw f.value=p.message,p}},generateOpenAIAuthUrl:async c=>{try{const p=await M.post("/admin/openai-accounts/generate-auth-url",c);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw f.value=p.message,p}},exchangeOpenAICode:async c=>{try{const p=await M.post("/admin/openai-accounts/exchange-code",c);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw f.value=p.message,p}},sortAccounts:c=>{K.value===c?A.value=A.value==="asc"?"desc":"asc":(K.value=c,A.value="asc")},reset:()=>{B.value=[],J.value=[],m.value=[],_.value=[],h.value=[],b.value=!1,f.value=null,K.value="",A.value="asc"}}}),ot={class:"space-y-4"},nt={class:"flex items-center justify-between"},it={class:"flex cursor-pointer items-center"},dt={key:0,class:"space-y-4 rounded-lg border border-gray-200 bg-gray-50 p-4 dark:border-gray-600 dark:bg-gray-800"},ut={class:"grid grid-cols-2 gap-4"},pt={class:"space-y-4"},mt={class:"flex items-center"},ct={key:0,class:"grid grid-cols-2 gap-4"},gt={class:"relative"},xt=["type"],He={__name:"ProxyConfig",props:{modelValue:{type:Object,default:()=>({enabled:!1,type:"socks5",host:"",port:"",username:"",password:""})}},emits:["update:modelValue"],setup(B,{emit:J}){const m=B,_=J,h=w({...m.modelValue}),b=w(!!(h.value.username||h.value.password)),f=w(!1);H(()=>m.modelValue,S=>{JSON.stringify(S)!==JSON.stringify(h.value)&&(h.value={...S},b.value=!!(S.username||S.password))},{deep:!0}),H(()=>h.value.enabled,()=>{A()}),H(()=>h.value.type,()=>{A()}),H(()=>h.value.host,()=>{A()}),H(()=>h.value.port,()=>{A()}),H(()=>h.value.username,()=>{A()}),H(()=>h.value.password,()=>{A()}),H(b,S=>{S||(h.value.username="",h.value.password="",A())});let K=null;function A(){K&&clearTimeout(K),K=setTimeout(()=>{const S={...h.value};b.value||(S.username="",S.password=""),_("update:modelValue",S)},100)}return at(()=>{K&&clearTimeout(K)}),(S,y)=>(n(),i("div",ot,[e("div",nt,[y[9]||(y[9]=e("h4",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"代理设置 (可选)",-1)),e("label",it,[x(e("input",{"onUpdate:modelValue":y[0]||(y[0]=D=>h.value.enabled=D),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[we,h.value.enabled]]),y[8]||(y[8]=e("span",{class:"ml-2 text-sm text-gray-700 dark:text-gray-300"},"启用代理",-1))])]),h.value.enabled?(n(),i("div",dt,[y[17]||(y[17]=Te('

配置代理以访问受限的网络资源。支持 SOCKS5 和 HTTP 代理。

请确保代理服务器稳定可用,否则会影响账户的正常使用。

',1)),e("div",null,[y[11]||(y[11]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"代理类型",-1)),x(e("select",{"onUpdate:modelValue":y[1]||(y[1]=D=>h.value.type=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200"},y[10]||(y[10]=[e("option",{value:"socks5"},"SOCKS5",-1),e("option",{value:"http"},"HTTP",-1),e("option",{value:"https"},"HTTPS",-1)]),512),[[qe,h.value.type]])]),e("div",ut,[e("div",null,[y[12]||(y[12]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"主机地址",-1)),x(e("input",{"onUpdate:modelValue":y[2]||(y[2]=D=>h.value.host=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 192.168.1.100",type:"text"},null,512),[[U,h.value.host]])]),e("div",null,[y[13]||(y[13]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"端口",-1)),x(e("input",{"onUpdate:modelValue":y[3]||(y[3]=D=>h.value.port=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 1080",type:"number"},null,512),[[U,h.value.port]])])]),e("div",pt,[e("div",mt,[x(e("input",{id:"proxyAuth","onUpdate:modelValue":y[4]||(y[4]=D=>b.value=D),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[we,b.value]]),y[14]||(y[14]=e("label",{class:"ml-2 cursor-pointer text-sm text-gray-700 dark:text-gray-300",for:"proxyAuth"}," 需要身份验证 ",-1))]),b.value?(n(),i("div",ct,[e("div",null,[y[15]||(y[15]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"用户名",-1)),x(e("input",{"onUpdate:modelValue":y[5]||(y[5]=D=>h.value.username=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理用户名",type:"text"},null,512),[[U,h.value.username]])]),e("div",null,[y[16]||(y[16]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"密码",-1)),e("div",gt,[x(e("input",{"onUpdate:modelValue":y[6]||(y[6]=D=>h.value.password=D),class:"form-input w-full pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理密码",type:f.value?"text":"password"},null,8,xt),[[lt,h.value.password]]),e("button",{class:"absolute inset-y-0 right-0 flex items-center pr-3 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:y[7]||(y[7]=D=>f.value=!f.value)},[e("i",{class:P(f.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])])])])):k("",!0)]),y[18]||(y[18]=e("div",{class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-300"},[e("i",{class:"fas fa-info-circle mr-1"}),e("strong",null,"提示:"),C("代理设置将用于所有与此账户相关的API请求。请确保代理服务器支持HTTPS流量转发。 ")])],-1))])):k("",!0)]))}},yt={class:"space-y-6"},ft={key:0},bt={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},vt={class:"flex items-start gap-4"},kt={class:"flex-1"},wt={class:"space-y-4"},ht={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},$t={class:"flex items-start gap-3"},Ct={class:"flex-1"},Tt=["disabled"],At={key:0,class:"fas fa-link mr-2"},It={key:1,class:"loading-spinner mr-2"},Ut={key:1,class:"space-y-3"},St={class:"flex items-center gap-2"},Vt=["value"],Mt={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Lt={class:"flex items-start gap-3"},Kt={class:"flex-1"},jt={class:"space-y-3"},Rt={key:1},Ot={class:"rounded-lg border border-green-200 bg-green-50 p-6 dark:border-green-700 dark:bg-green-900/30"},Dt={class:"flex items-start gap-4"},Pt={class:"flex-1"},Gt={class:"space-y-4"},zt={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},Wt={class:"flex items-start gap-3"},Et={class:"flex-1"},Ft=["disabled"],qt={key:0,class:"fas fa-link mr-2"},Bt={key:1,class:"loading-spinner mr-2"},Nt={key:1,class:"space-y-3"},_t={class:"flex items-center gap-2"},Ht=["value"],Jt={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},Yt={class:"flex items-start gap-3"},Qt={class:"flex-1"},Xt={class:"space-y-3"},Zt={key:2},es={class:"rounded-lg border border-orange-200 bg-orange-50 p-6 dark:border-orange-700 dark:bg-orange-900/30"},ts={class:"flex items-start gap-4"},ss={class:"flex-1"},as={class:"space-y-4"},ls={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},rs={class:"flex items-start gap-3"},os={class:"flex-1"},ns=["disabled"],is={key:0,class:"fas fa-link mr-2"},ds={key:1,class:"loading-spinner mr-2"},us={key:1,class:"space-y-3"},ps={class:"flex items-center gap-2"},ms=["value"],cs={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},gs={class:"flex items-start gap-3"},xs={class:"flex-1"},ys={class:"space-y-3"},fs={class:"flex gap-3 pt-4"},bs=["disabled"],vs={key:0,class:"loading-spinner mr-2"},ks={__name:"OAuthFlow",props:{platform:{type:String,required:!0},proxy:{type:Object,default:null}},emits:["success","back"],setup(B,{emit:J}){const m=B,_=J,h=Ze(),b=w(!1),f=w(!1),K=w(""),A=w(""),S=w(!1),y=w(""),D=fe(()=>K.value&&A.value.trim());H(A,W=>{if(!W||typeof W!="string")return;const u=W.trim();if(!u)return;if(u.startsWith("http://")||u.startsWith("https://"))if(u.startsWith("http://localhost:45462")||u.startsWith("http://localhost:1455"))try{const ae=new URL(u).searchParams.get("code");ae?(A.value=ae,I("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):I("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(X){console.error("Failed to parse URL:",X),I("链接格式错误,请检查是否为完整的 URL","error")}else if(m.platform==="gemini"||m.platform==="openai")try{const ae=new URL(u).searchParams.get("code");ae&&(A.value=ae,I("成功提取授权码!","success"))}catch{}else I("请粘贴以 http://localhost:1455 或 http://localhost:45462 开头的链接","error")});const O=async()=>{var W;b.value=!0;try{const u=(W=m.proxy)!=null&&W.enabled?{proxy:{type:m.proxy.type,host:m.proxy.host,port:parseInt(m.proxy.port),username:m.proxy.username||null,password:m.proxy.password||null}}:{};if(m.platform==="claude"){const j=await h.generateClaudeAuthUrl(u);K.value=j.authUrl,y.value=j.sessionId}else if(m.platform==="gemini"){const j=await h.generateGeminiAuthUrl(u);K.value=j.authUrl,y.value=j.sessionId}else if(m.platform==="openai"){const j=await h.generateOpenAIAuthUrl(u);K.value=j.authUrl,y.value=j.sessionId}}catch(u){I(u.message||"生成授权链接失败","error")}finally{b.value=!1}},z=()=>{K.value="",A.value="",O()},F=async()=>{try{await navigator.clipboard.writeText(K.value),S.value=!0,I("链接已复制","success"),setTimeout(()=>{S.value=!1},2e3)}catch{const u=document.createElement("input");u.value=K.value,document.body.appendChild(u),u.select(),document.execCommand("copy"),document.body.removeChild(u),S.value=!0,I("链接已复制","success"),setTimeout(()=>{S.value=!1},2e3)}},Q=async()=>{var W;if(D.value){f.value=!0;try{let u={};m.platform==="claude"?u={sessionId:y.value,callbackUrl:A.value.trim()}:m.platform==="gemini"?u={code:A.value.trim(),sessionId:y.value}:m.platform==="openai"&&(u={code:A.value.trim(),sessionId:y.value}),(W=m.proxy)!=null&&W.enabled&&(u.proxy={type:m.proxy.type,host:m.proxy.host,port:parseInt(m.proxy.port),username:m.proxy.username||null,password:m.proxy.password||null});let j;m.platform==="claude"?j=await h.exchangeClaudeCode(u):m.platform==="gemini"?j=await h.exchangeGeminiCode(u):m.platform==="openai"&&(j=await h.exchangeOpenAICode(u)),_("success",j)}catch(u){I(u.message||"授权失败,请检查授权码是否正确","error")}finally{f.value=!1}}};return(W,u)=>(n(),i("div",yt,[B.platform==="claude"?(n(),i("div",ft,[e("div",bt,[e("div",vt,[u[15]||(u[15]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-link text-white"})],-1)),e("div",kt,[u[13]||(u[13]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"},"Claude 账户授权",-1)),u[14]||(u[14]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤完成 Claude 账户的授权: ",-1)),e("div",wt,[e("div",ht,[e("div",$t,[u[6]||(u[6]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Ct,[u[5]||(u[5]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),K.value?(n(),i("div",Ut,[e("div",St,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:K.value},null,8,Vt),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:F},[e("i",{class:P(S.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:z},u[4]||(u[4]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:b.value,onClick:O},[b.value?(n(),i("div",It)):(n(),i("i",At)),C(" "+v(b.value?"生成中...":"生成授权链接"),1)],8,Tt))])])]),u[12]||(u[12]=Te('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Claude 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",Mt,[e("div",Lt,[u[11]||(u[11]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Kt,[u[9]||(u[9]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),u[10]||(u[10]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"},[C(" 授权完成后,页面会显示一个 "),e("strong",null,"Authorization Code"),C(",请将其复制并粘贴到下方输入框: ")],-1)),e("div",jt,[e("div",null,[u[7]||(u[7]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),C("Authorization Code ")],-1)),x(e("textarea",{"onUpdate:modelValue":u[0]||(u[0]=j=>A.value=j),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Claude页面获取的Authorization Code...",rows:"3"},null,512),[[U,A.value]])]),u[8]||(u[8]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 请粘贴从Claude页面复制的Authorization Code ")],-1))])])])])])])])])])):B.platform==="gemini"?(n(),i("div",Rt,[e("div",Ot,[e("div",Dt,[u[27]||(u[27]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-green-500"},[e("i",{class:"fas fa-robot text-white"})],-1)),e("div",Pt,[u[25]||(u[25]=e("h4",{class:"mb-3 font-semibold text-green-900 dark:text-green-200"},"Gemini 账户授权",-1)),u[26]||(u[26]=e("p",{class:"mb-4 text-sm text-green-800 dark:text-green-300"}," 请按照以下步骤完成 Gemini 账户的授权: ",-1)),e("div",Gt,[e("div",zt,[e("div",Wt,[u[18]||(u[18]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Et,[u[17]||(u[17]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 点击下方按钮生成授权链接 ",-1)),K.value?(n(),i("div",Nt,[e("div",_t,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:K.value},null,8,Ht),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:F},[e("i",{class:P(S.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-green-600 hover:text-green-700",onClick:z},u[16]||(u[16]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:b.value,onClick:O},[b.value?(n(),i("div",Bt)):(n(),i("i",qt)),C(" "+v(b.value?"生成中...":"生成授权链接"),1)],8,Ft))])])]),u[24]||(u[24]=Te('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Gemini 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",Jt,[e("div",Yt,[u[23]||(u[23]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Qt,[u[21]||(u[21]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 输入 Authorization Code ",-1)),u[22]||(u[22]=e("p",{class:"mb-3 text-sm text-green-700 dark:text-green-300"}," 授权完成后,页面会显示一个 Authorization Code,请将其复制并粘贴到下方输入框: ",-1)),e("div",Xt,[e("div",null,[u[19]||(u[19]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-green-500"}),C("Authorization Code ")],-1)),x(e("textarea",{"onUpdate:modelValue":u[1]||(u[1]=j=>A.value=j),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Gemini页面获取的Authorization Code...",rows:"3"},null,512),[[U,A.value]])]),u[20]||(u[20]=e("div",{class:"mt-2 space-y-1"},[e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},[e("i",{class:"fas fa-check-circle mr-1 text-green-500"}),C(" 请粘贴从Gemini页面复制的Authorization Code ")])],-1))])])])])])])])])])):B.platform==="openai"?(n(),i("div",Zt,[e("div",es,[e("div",ts,[u[39]||(u[39]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-orange-500"},[e("i",{class:"fas fa-brain text-white"})],-1)),e("div",ss,[u[37]||(u[37]=e("h4",{class:"mb-3 font-semibold text-orange-900 dark:text-orange-200"},"OpenAI 账户授权",-1)),u[38]||(u[38]=e("p",{class:"mb-4 text-sm text-orange-800 dark:text-orange-300"}," 请按照以下步骤完成 OpenAI 账户的授权: ",-1)),e("div",as,[e("div",ls,[e("div",rs,[u[30]||(u[30]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",os,[u[29]||(u[29]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 点击下方按钮生成授权链接 ",-1)),K.value?(n(),i("div",us,[e("div",ps,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:K.value},null,8,ms),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:F},[e("i",{class:P(S.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-orange-600 hover:text-orange-700",onClick:z},u[28]||(u[28]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:b.value,onClick:O},[b.value?(n(),i("div",ds)):(n(),i("i",is)),C(" "+v(b.value?"生成中...":"生成授权链接"),1)],8,ns))])])]),u[36]||(u[36]=Te('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 OpenAI 账户并授权。

重要提示:授权后页面可能会加载较长时间,请耐心等待。

当浏览器地址栏变为 http://localhost:1455/... 开头时,表示授权已完成。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",cs,[e("div",gs,[u[35]||(u[35]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",xs,[u[33]||(u[33]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 输入授权链接或 Code ",-1)),u[34]||(u[34]=e("p",{class:"mb-3 text-sm text-orange-700 dark:text-orange-300"},[C(" 授权完成后,当页面地址变为 "),e("strong",{class:"font-mono"},"http://localhost:1455/..."),C(" 时: ")],-1)),e("div",ys,[e("div",null,[u[31]||(u[31]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-link mr-2 text-orange-500"}),C("授权链接或 Code ")],-1)),x(e("textarea",{"onUpdate:modelValue":u[2]||(u[2]=j=>A.value=j),class:"form-input w-full resize-none font-mono text-sm",placeholder:`方式1:复制完整的链接(http://localhost:1455/auth/callback?code=...) -方式2:仅复制 code 参数的值 -系统会自动识别并提取所需信息`,rows:"3"},null,512),[[U,A.value]])]),u[32]||(u[32]=Te('

提示:您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别。

• 完整链接示例:http://localhost:1455/auth/callback?code=ac_4hm8...

• 仅 Code 示例:ac_4hm8iqmx9A2fzMy_cwye7U3W7...

',1))])])])])])])])])])):k("",!0),e("div",fs,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:u[3]||(u[3]=j=>W.$emit("back"))}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!D.value||f.value,type:"button",onClick:Q},[f.value?(n(),i("div",vs)):k("",!0),C(" "+v(f.value?"验证中...":"完成授权"),1)],8,bs)])]))}},ws={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},hs={class:"modal-content mx-auto w-full max-w-md rounded-2xl bg-white p-6 shadow-xl dark:bg-gray-800"},$s={class:"mb-6 flex items-start gap-4"},Cs={class:"flex-1"},Ts={class:"mb-2 text-lg font-bold text-gray-900 dark:text-white"},As={class:"whitespace-pre-line text-sm leading-relaxed text-gray-700 dark:text-gray-300"},Is={class:"flex gap-3"},Us={__name:"ConfirmModal",props:{show:{type:Boolean,required:!0},title:{type:String,default:""},message:{type:String,default:""},confirmText:{type:String,default:"继续"},cancelText:{type:String,default:"取消"}},emits:["confirm","cancel"],setup(B){return(J,m)=>(n(),ke(Be,{to:"body"},[B.show?(n(),i("div",ws,[e("div",hs,[e("div",$s,[m[2]||(m[2]=e("div",{class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-yellow-400 to-yellow-500"},[e("i",{class:"fas fa-exclamation text-xl text-white"})],-1)),e("div",Cs,[e("h3",Ts,v(B.title),1),e("p",As,v(B.message),1)])]),e("div",Is,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-4 py-2.5 font-medium text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600",onClick:m[0]||(m[0]=_=>J.$emit("cancel"))},v(B.cancelText),1),e("button",{class:"flex-1 rounded-xl bg-gradient-to-r from-yellow-500 to-orange-500 px-4 py-2.5 font-medium text-white shadow-sm transition-colors hover:from-yellow-600 hover:to-orange-600",onClick:m[1]||(m[1]=_=>J.$emit("confirm"))},v(B.confirmText),1)])])])):k("",!0)]))}},et=Qe(Us,[["__scopeId","data-v-c629d8ff"]]),Ss={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Vs={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-4xl overflow-y-auto p-4 sm:p-6 md:p-8"},Ms={class:"mb-4 flex items-center justify-between sm:mb-6"},Ls={class:"mb-6"},Ks={key:0,class:"mb-6 rounded-lg border border-blue-200 bg-blue-50 p-4"},js={class:"space-y-4"},Rs={class:"flex gap-4"},Os={class:"flex cursor-pointer items-center"},Ds={class:"flex cursor-pointer items-center"},Ps={class:"flex cursor-pointer items-center"},Gs={class:"flex gap-3"},zs=["disabled"],Ws={key:0,class:"loading-spinner mr-2"},Es={class:"space-y-4"},Fs={key:0,class:"py-8 text-center"},qs={key:1,class:"rounded-lg bg-gray-50 py-8 text-center"},Bs={key:2,class:"grid grid-cols-1 gap-4 md:grid-cols-2"},Ns={class:"mb-3 flex items-start justify-between"},_s={class:"flex-1"},Hs={class:"font-semibold text-gray-900"},Js={class:"mt-1 text-sm text-gray-500"},Ys={class:"ml-4 flex items-center gap-2"},Qs={class:"flex items-center justify-between text-sm text-gray-600"},Xs={class:"flex items-center gap-4"},Zs={class:"flex items-center gap-2"},ea=["onClick"],ta=["disabled","onClick"],sa={key:1,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},aa={class:"modal-content w-full max-w-lg p-4 sm:p-6"},la={class:"space-y-4"},ra={class:"rounded-lg bg-gray-100 px-3 py-2 text-sm text-gray-600"},oa={class:"flex gap-3 pt-4"},na=["disabled"],ia={key:0,class:"loading-spinner mr-2"},da={__name:"GroupManagementModal",emits:["close","refresh"],setup(B,{emit:J}){const m=J,_=w(!0),h=w(!1),b=w([]),f=w(!1),K=w(!1),A=w({name:"",platform:"claude",description:""}),S=w(!1),y=w(!1),D=w(null),O=w({name:"",platform:"",description:""}),z=s=>s?new Date(s).toLocaleDateString("zh-CN"):"-",F=async()=>{h.value=!0;try{const s=await M.get("/admin/account-groups");b.value=s.data||[]}catch{I("加载分组列表失败","error")}finally{h.value=!1}},Q=async()=>{var s,g;if(!A.value.name||!A.value.platform){I("请填写必填项","error");return}K.value=!0;try{await M.post("/admin/account-groups",{name:A.value.name,platform:A.value.platform,description:A.value.description}),I("分组创建成功","success"),W(),await F(),m("refresh")}catch(L){I(((g=(s=L.response)==null?void 0:s.data)==null?void 0:g.error)||"创建分组失败","error")}finally{K.value=!1}},W=()=>{f.value=!1,A.value={name:"",platform:"claude",description:""}},u=s=>{D.value=s,O.value={name:s.name,platform:s.platform,description:s.description||""},S.value=!0},j=async()=>{var s,g;if(!O.value.name){I("请填写分组名称","error");return}y.value=!0;try{await M.put(`/admin/account-groups/${D.value.id}`,{name:O.value.name,description:O.value.description}),I("分组更新成功","success"),X(),await F(),m("refresh")}catch(L){I(((g=(s=L.response)==null?void 0:s.data)==null?void 0:g.error)||"更新分组失败","error")}finally{y.value=!1}},X=()=>{S.value=!1,D.value=null,O.value={name:"",platform:"",description:""}},ae=async s=>{var g,L;if(s.memberCount>0){I("分组内还有成员,无法删除","error");return}if(confirm(`确定要删除分组 "${s.name}" 吗?`))try{await M.delete(`/admin/account-groups/${s.id}`),I("分组删除成功","success"),await F(),m("refresh")}catch(T){I(((L=(g=T.response)==null?void 0:g.data)==null?void 0:L.error)||"删除分组失败","error")}};return Ye(()=>{F()}),(s,g)=>(n(),ke(Be,{to:"body"},[_.value?(n(),i("div",Ss,[e("div",Vs,[e("div",Ms,[g[10]||(g[10]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-layer-group text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 sm:text-xl"},"账户分组管理")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:g[0]||(g[0]=L=>s.$emit("close"))},g[9]||(g[9]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",Ls,[e("button",{class:"btn btn-primary px-4 py-2",onClick:g[1]||(g[1]=L=>f.value=!0)},g[11]||(g[11]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 创建新分组 ",-1)]))]),f.value?(n(),i("div",Ks,[g[18]||(g[18]=e("h4",{class:"mb-4 text-lg font-semibold text-gray-900"},"创建新分组",-1)),e("div",js,[e("div",null,[g[12]||(g[12]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),x(e("input",{"onUpdate:modelValue":g[2]||(g[2]=L=>A.value.name=L),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[U,A.value.name]])]),e("div",null,[g[16]||(g[16]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型 *",-1)),e("div",Rs,[e("label",Os,[x(e("input",{"onUpdate:modelValue":g[3]||(g[3]=L=>A.value.platform=L),class:"mr-2",type:"radio",value:"claude"},null,512),[[N,A.value.platform]]),g[13]||(g[13]=e("span",{class:"text-sm text-gray-700"},"Claude",-1))]),e("label",Ds,[x(e("input",{"onUpdate:modelValue":g[4]||(g[4]=L=>A.value.platform=L),class:"mr-2",type:"radio",value:"gemini"},null,512),[[N,A.value.platform]]),g[14]||(g[14]=e("span",{class:"text-sm text-gray-700"},"Gemini",-1))]),e("label",Ps,[x(e("input",{"onUpdate:modelValue":g[5]||(g[5]=L=>A.value.platform=L),class:"mr-2",type:"radio",value:"openai"},null,512),[[N,A.value.platform]]),g[15]||(g[15]=e("span",{class:"text-sm text-gray-700"},"OpenAI",-1))])])]),e("div",null,[g[17]||(g[17]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),x(e("textarea",{"onUpdate:modelValue":g[6]||(g[6]=L=>A.value.description=L),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[U,A.value.description]])]),e("div",Gs,[e("button",{class:"btn btn-primary px-4 py-2",disabled:!A.value.name||!A.value.platform||K.value,onClick:Q},[K.value?(n(),i("div",Ws)):k("",!0),C(" "+v(K.value?"创建中...":"创建"),1)],8,zs),e("button",{class:"btn btn-secondary px-4 py-2",onClick:W},"取消")])])])):k("",!0),e("div",Es,[h.value?(n(),i("div",Fs,g[19]||(g[19]=[e("div",{class:"loading-spinner-lg mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500"},"加载中...",-1)]))):b.value.length===0?(n(),i("div",qs,g[20]||(g[20]=[e("i",{class:"fas fa-layer-group mb-4 text-4xl text-gray-300"},null,-1),e("p",{class:"text-gray-500"},"暂无分组",-1)]))):(n(),i("div",Bs,[(n(!0),i(be,null,ve(b.value,L=>(n(),i("div",{key:L.id,class:"rounded-lg border bg-white p-4 transition-shadow hover:shadow-md"},[e("div",Ns,[e("div",_s,[e("h4",Hs,v(L.name),1),e("p",Js,v(L.description||"暂无描述"),1)]),e("div",Ys,[e("span",{class:P(["rounded-full px-2 py-1 text-xs font-medium",L.platform==="claude"?"bg-purple-100 text-purple-700":L.platform==="gemini"?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"])},v(L.platform==="claude"?"Claude":L.platform==="gemini"?"Gemini":"OpenAI"),3)])]),e("div",Qs,[e("div",Xs,[e("span",null,[g[21]||(g[21]=e("i",{class:"fas fa-users mr-1"},null,-1)),C(" "+v(L.memberCount||0)+" 个成员 ",1)]),e("span",null,[g[22]||(g[22]=e("i",{class:"fas fa-clock mr-1"},null,-1)),C(" "+v(z(L.createdAt)),1)])]),e("div",Zs,[e("button",{class:"text-blue-600 transition-colors hover:text-blue-800",title:"编辑",onClick:T=>u(L)},g[23]||(g[23]=[e("i",{class:"fas fa-edit"},null,-1)]),8,ea),e("button",{class:"text-red-600 transition-colors hover:text-red-800",disabled:L.memberCount>0,title:"删除",onClick:T=>ae(L)},g[24]||(g[24]=[e("i",{class:"fas fa-trash"},null,-1)]),8,ta)])])]))),128))]))])])])):k("",!0),S.value?(n(),i("div",sa,[e("div",aa,[e("div",{class:"mb-4 flex items-center justify-between"},[g[26]||(g[26]=e("h3",{class:"text-lg font-bold text-gray-900"},"编辑分组",-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:X},g[25]||(g[25]=[e("i",{class:"fas fa-times"},null,-1)]))]),e("div",la,[e("div",null,[g[27]||(g[27]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),x(e("input",{"onUpdate:modelValue":g[7]||(g[7]=L=>O.value.name=L),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[U,O.value.name]])]),e("div",null,[g[29]||(g[29]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型",-1)),e("div",ra,[C(v(O.value.platform==="claude"?"Claude":O.value.platform==="gemini"?"Gemini":"OpenAI")+" ",1),g[28]||(g[28]=e("span",{class:"ml-2 text-xs text-gray-500"},"(不可修改)",-1))])]),e("div",null,[g[30]||(g[30]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),x(e("textarea",{"onUpdate:modelValue":g[8]||(g[8]=L=>O.value.description=L),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[U,O.value.description]])]),e("div",oa,[e("button",{class:"btn btn-primary flex-1 px-4 py-2",disabled:!O.value.name||y.value,onClick:j},[y.value?(n(),i("div",ia)):k("",!0),C(" "+v(y.value?"更新中...":"更新"),1)],8,na),e("button",{class:"btn btn-secondary flex-1 px-4 py-2",onClick:X},"取消")])])])])):k("",!0)]))}},ua={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},pa={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-2xl overflow-y-auto p-4 sm:p-6 md:p-8"},ma={class:"mb-4 flex items-center justify-between sm:mb-6"},ca={class:"flex items-center gap-2 sm:gap-3"},ga={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},xa={key:0,class:"mb-4 flex items-center justify-center sm:mb-8"},ya={class:"flex items-center space-x-2 sm:space-x-4"},fa={class:"flex items-center"},ba={class:"flex items-center"},va={key:1},ka={class:"space-y-6"},wa={key:0},ha={class:"flex gap-4"},$a={class:"flex cursor-pointer items-center"},Ca={class:"flex cursor-pointer items-center"},Ta={class:"flex cursor-pointer items-center"},Aa={class:"flex cursor-pointer items-center"},Ia={class:"flex cursor-pointer items-center"},Ua={key:1},Sa={class:"flex flex-wrap gap-4"},Va={key:0,class:"flex cursor-pointer items-center"},Ma={class:"flex cursor-pointer items-center"},La={class:"flex cursor-pointer items-center"},Ka={key:0,class:"mt-1 text-xs text-red-500"},ja={class:"flex gap-4"},Ra={class:"flex cursor-pointer items-center"},Oa={class:"flex cursor-pointer items-center"},Da={class:"flex cursor-pointer items-center"},Pa={key:2},Ga={class:"flex gap-2"},za=["value"],Wa={key:3},Ea={key:4,class:"space-y-4"},Fa={key:0,class:"mt-1 text-xs text-red-500"},qa={key:0,class:"mt-1 text-xs text-red-500"},Ba={key:0,class:"mt-1 text-xs text-red-500"},Na={class:"mb-3"},_a={class:"inline-flex cursor-pointer items-center"},Ha={key:0},Ja={key:5,class:"space-y-4"},Ya={key:0,class:"mt-1 text-xs text-red-500"},Qa={key:0,class:"mt-1 text-xs text-red-500"},Xa={class:"mb-3 space-y-2"},Za=["onUpdate:modelValue"],el=["onUpdate:modelValue"],tl=["onClick"],sl={class:"mt-3 flex flex-wrap gap-2"},al={class:"mb-3"},ll={class:"inline-flex cursor-pointer items-center"},rl={key:0},ol={key:6},nl={class:"flex gap-4"},il={class:"flex cursor-pointer items-center"},dl={class:"flex cursor-pointer items-center"},ul={key:7,class:"space-y-4 rounded-lg border border-blue-200 bg-blue-50 p-4"},pl={class:"mb-4 flex items-start gap-3"},ml={key:0,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},cl={key:1,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},gl={key:2,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},xl={class:"mb-2 mt-2 rounded-lg border border-blue-300 bg-white/80 p-3 dark:border-blue-600 dark:bg-gray-800/80"},yl={key:0,class:"text-xs text-blue-800 dark:text-blue-300"},fl={key:1,class:"text-xs text-blue-800 dark:text-blue-300"},bl={key:2,class:"text-xs text-blue-800 dark:text-blue-300"},vl={key:0},kl={key:0,class:"mt-1 text-xs text-red-500"},wl={key:0,class:"mt-1 text-xs text-red-500"},hl={class:"flex gap-3 pt-4"},$l=["disabled"],Cl=["disabled"],Tl={key:0,class:"loading-spinner mr-2"},Al={key:3,class:"space-y-6"},Il={key:0},Ul={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},Sl={class:"flex items-start gap-4"},Vl={class:"flex-1"},Ml={class:"space-y-4"},Ll={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Kl={class:"flex items-start gap-3"},jl={class:"flex-1"},Rl=["disabled"],Ol={key:0,class:"fas fa-link mr-2"},Dl={key:1,class:"loading-spinner mr-2"},Pl={key:1,class:"space-y-3"},Gl={class:"flex items-center gap-2"},zl=["value"],Wl={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},El={class:"flex items-start gap-3"},Fl={class:"flex-1"},ql={class:"space-y-3"},Bl={class:"flex gap-3 pt-4"},Nl=["disabled"],_l={key:0,class:"loading-spinner mr-2"},Hl={key:4,class:"space-y-6"},Jl={class:"flex gap-4"},Yl={class:"flex cursor-pointer items-center"},Ql={class:"flex cursor-pointer items-center"},Xl={class:"flex cursor-pointer items-center"},Zl={key:0},er={class:"flex gap-2"},tr=["value"],sr={key:1},ar={key:2},lr={class:"flex gap-4"},rr={class:"flex cursor-pointer items-center"},or={class:"flex cursor-pointer items-center"},nr={key:3,class:"space-y-4"},ir={class:"mb-3 space-y-2"},dr=["onUpdate:modelValue"],ur=["onUpdate:modelValue"],pr=["onClick"],mr={class:"mt-3 flex flex-wrap gap-2"},cr={class:"mb-3"},gr={class:"inline-flex cursor-pointer items-center"},xr={key:0},yr={key:4,class:"space-y-4"},fr={class:"mb-3"},br={class:"inline-flex cursor-pointer items-center"},vr={key:0},kr={key:5,class:"rounded-lg border border-amber-200 bg-amber-50 p-4 dark:border-amber-700 dark:bg-amber-900/30"},wr={class:"space-y-4"},hr={class:"flex gap-3 pt-4"},$r=["disabled"],Cr={key:0,class:"loading-spinner mr-2"},Je={__name:"AccountForm",props:{account:{type:Object,default:null}},emits:["close","success"],setup(B,{emit:J}){var Le,Ke,je,Re,Oe,De,Pe,Ge,d,a,V,r,E,q,te,se,Y;const m=B,_=J,h=Ze(),{showConfirmModal:b,confirmOptions:f,showConfirm:K,handleConfirm:A,handleCancel:S}=Xe(),y=fe(()=>!!m.account),D=w(!0),O=w(1),z=w(!1),F=w(!1),Q=w(!1),W=w(""),u=w(""),j=w(!1),X=w(""),ae=()=>{var o;return(o=m.account)!=null&&o.proxy&&m.account.proxy.host&&m.account.proxy.port?{enabled:!0,type:m.account.proxy.type||"socks5",host:m.account.proxy.host,port:m.account.proxy.port,username:m.account.proxy.username||"",password:m.account.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""}},s=w({platform:((Le=m.account)==null?void 0:Le.platform)||"claude",addType:((Ke=m.account)==null?void 0:Ke.platform)==="gemini"?"oauth":"setup-token",name:((je=m.account)==null?void 0:je.name)||"",description:((Re=m.account)==null?void 0:Re.description)||"",accountType:((Oe=m.account)==null?void 0:Oe.accountType)||"shared",subscriptionType:"claude_max",groupId:"",projectId:((De=m.account)==null?void 0:De.projectId)||"",idToken:"",accessToken:"",refreshToken:"",proxy:ae(),apiUrl:((Pe=m.account)==null?void 0:Pe.apiUrl)||"",apiKey:((Ge=m.account)==null?void 0:Ge.apiKey)||"",priority:((d=m.account)==null?void 0:d.priority)||50,supportedModels:(()=>{var t;const o=(t=m.account)==null?void 0:t.supportedModels;return o?typeof o=="object"&&!Array.isArray(o)?Object.keys(o).join(` -`):Array.isArray(o)?o.join(` -`):"":""})(),userAgent:((a=m.account)==null?void 0:a.userAgent)||"",enableRateLimit:m.account?m.account.rateLimitDuration>0:!0,rateLimitDuration:((V=m.account)==null?void 0:V.rateLimitDuration)||60,accessKeyId:((r=m.account)==null?void 0:r.accessKeyId)||"",secretAccessKey:((E=m.account)==null?void 0:E.secretAccessKey)||"",region:((q=m.account)==null?void 0:q.region)||"",sessionToken:((te=m.account)==null?void 0:te.sessionToken)||"",defaultModel:((se=m.account)==null?void 0:se.defaultModel)||"",smallFastModel:((Y=m.account)==null?void 0:Y.smallFastModel)||""}),g=w([]),L=()=>{var o;(o=m.account)!=null&&o.supportedModels&&(typeof m.account.supportedModels=="object"&&!Array.isArray(m.account.supportedModels)?g.value=Object.entries(m.account.supportedModels).map(([t,l])=>({from:t,to:l})):Array.isArray(m.account.supportedModels)&&(g.value=m.account.supportedModels.map(t=>({from:t,to:t}))))},T=w({name:"",idToken:"",accessToken:"",apiUrl:"",apiKey:"",accessKeyId:"",secretAccessKey:"",region:""}),ce=fe(()=>{var o;return((o=s.value.name)==null?void 0:o.trim())&&s.value.platform}),Z=fe(()=>W.value&&u.value.trim()),ne=async()=>{if(T.value.name="",!ce.value){(!s.value.name||s.value.name.trim()==="")&&(T.value.name="请填写账户名称");return}if(s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")){I("请选择一个分组","error");return}s.value.platform==="gemini"&&O.value===1&&s.value.addType==="oauth"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await K("项目 ID 未填写",`您尚未填写项目 ID。 - -如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 -如果您使用的是普通个人账号,可以继续不填写。`,"继续","返回填写")||(O.value=2)},ie=async()=>{var o;F.value=!0;try{const t=(o=s.value.proxy)!=null&&o.enabled?{proxy:{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}}:{},l=await h.generateClaudeSetupTokenUrl(t);W.value=l.authUrl,X.value=l.sessionId}catch(t){I(t.message||"生成Setup Token授权链接失败","error")}finally{F.value=!1}},he=()=>{W.value="",u.value="",ie()},Ae=async()=>{try{await navigator.clipboard.writeText(W.value),j.value=!0,I("链接已复制","success"),setTimeout(()=>{j.value=!1},2e3)}catch{const t=document.createElement("textarea");t.value=W.value,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy")?(j.value=!0,I("链接已复制","success")):I("复制失败,请手动复制","error")}catch{I("复制失败,请手动复制","error")}document.body.removeChild(t),setTimeout(()=>{j.value=!1},2e3)}},Ie=async()=>{var o;if(Z.value){Q.value=!0;try{const t={sessionId:X.value,callbackUrl:u.value.trim()};(o=s.value.proxy)!=null&&o.enabled&&(t.proxy={type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null});const l=await h.exchangeClaudeSetupTokenCode(t);await $e(l)}catch(t){I(t.message||"Setup Token授权失败,请检查授权码是否正确","error")}finally{Q.value=!1}}},$e=async o=>{z.value=!0;try{const t={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};s.value.platform==="claude"?(t.claudeAiOauth=o.claudeAiOauth||o,t.priority=s.value.priority||50,t.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}):s.value.platform==="gemini"?(t.geminiOauth=o.tokens||o,s.value.projectId&&(t.projectId=s.value.projectId),t.priority=s.value.priority||50):s.value.platform==="openai"&&(t.openaiOauth=o.tokens||o,t.accountInfo=o.accountInfo,t.priority=s.value.priority||50);let l;s.value.platform==="claude"?l=await h.createClaudeAccount(t):s.value.platform==="openai"?l=await h.createOpenAIAccount(t):l=await h.createGeminiAccount(t),_("success",l)}catch(t){I(t.message||"账户创建失败","error")}finally{z.value=!1}},Ue=async()=>{T.value.name="",T.value.accessToken="",T.value.apiUrl="",T.value.apiKey="";let o=!1;if((!s.value.name||s.value.name.trim()==="")&&(T.value.name="请填写账户名称",o=!0),s.value.platform==="claude-console"?((!s.value.apiUrl||s.value.apiUrl.trim()==="")&&(T.value.apiUrl="请填写 API URL",o=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API Key",o=!0)):s.value.platform==="bedrock"?((!s.value.accessKeyId||s.value.accessKeyId.trim()==="")&&(T.value.accessKeyId="请填写 AWS 访问密钥 ID",o=!0),(!s.value.secretAccessKey||s.value.secretAccessKey.trim()==="")&&(T.value.secretAccessKey="请填写 AWS 秘密访问密钥",o=!0),(!s.value.region||s.value.region.trim()==="")&&(T.value.region="请选择 AWS 区域",o=!0)):s.value.addType==="manual"&&((!s.value.accessToken||s.value.accessToken.trim()==="")&&(T.value.accessToken="请填写 Access Token",o=!0),s.value.platform==="openai"&&(!s.value.idToken||s.value.idToken.trim()==="")&&(T.value.idToken="请填写 ID Token",o=!0)),s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")&&(I("请选择一个分组","error"),o=!0),!o){z.value=!0;try{const t={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.platform==="claude"){const G=s.value.refreshToken?6e5:31536e6;t.claudeAiOauth={accessToken:s.value.accessToken,refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+G,scopes:[]},t.priority=s.value.priority||50,t.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}}else if(s.value.platform==="gemini"){const G=s.value.refreshToken?6e5:31536e6;t.geminiOauth={access_token:s.value.accessToken,refresh_token:s.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+G},s.value.projectId&&(t.projectId=s.value.projectId),t.priority=s.value.priority||50}else if(s.value.platform==="openai"){const G=s.value.refreshToken?6e5:31536e6;t.openaiOauth={idToken:s.value.idToken,accessToken:s.value.accessToken,refreshToken:s.value.refreshToken||"",expires_in:Math.floor(G/1e3)};let R={accountId:"",chatgptUserId:"",organizationId:"",organizationRole:"",organizationTitle:"",planType:"",email:"",emailVerified:!1};if(s.value.idToken)try{const ue=s.value.idToken.split(".");if(ue.length===3){const xe=JSON.parse(atob(ue[1])),re=xe["https://api.openai.com/auth"]||{};R={accountId:re.accountId||"",chatgptUserId:re.chatgptUserId||"",organizationId:re.organizationId||"",organizationRole:re.organizationRole||"",organizationTitle:re.organizationTitle||"",planType:re.planType||"",email:xe.email||"",emailVerified:xe.email_verified||!1}}}catch(ue){console.warn("Failed to parse ID Token:",ue)}t.accountInfo=R,t.priority=s.value.priority||50}else s.value.platform==="claude-console"?(t.apiUrl=s.value.apiUrl,t.apiKey=s.value.apiKey,t.priority=s.value.priority||50,t.supportedModels=Me()||{},t.userAgent=s.value.userAgent||null,t.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0):s.value.platform==="bedrock"&&(t.awsCredentials={accessKeyId:s.value.accessKeyId,secretAccessKey:s.value.secretAccessKey,sessionToken:s.value.sessionToken||null},t.region=s.value.region,t.defaultModel=s.value.defaultModel||null,t.smallFastModel=s.value.smallFastModel||null,t.priority=s.value.priority||50,t.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0);let l;s.value.platform==="claude"?l=await h.createClaudeAccount(t):s.value.platform==="claude-console"?l=await h.createClaudeConsoleAccount(t):s.value.platform==="bedrock"?l=await h.createBedrockAccount(t):s.value.platform==="openai"?l=await h.createOpenAIAccount(t):l=await h.createGeminiAccount(t),_("success",l)}catch(t){I(t.message||"账户创建失败","error")}finally{z.value=!1}}},Se=async()=>{if(T.value.name="",!s.value.name||s.value.name.trim()===""){T.value.name="请填写账户名称";return}if(s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")){I("请选择一个分组","error");return}if(!(s.value.platform==="gemini"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await K("项目 ID 未填写",`您尚未填写项目 ID。 - -如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 -如果您使用的是普通个人账号,可以继续不填写。`,"继续保存","返回填写"))){z.value=!0;try{const o={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.accessToken||s.value.refreshToken){if(m.account.platform==="claude"){const t=s.value.refreshToken?6e5:31536e6;o.claudeAiOauth={accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+t,scopes:m.account.scopes||[]}}else if(m.account.platform==="gemini"){const t=s.value.refreshToken?6e5:31536e6;o.geminiOauth={access_token:s.value.accessToken||"",refresh_token:s.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+t}}else if(m.account.platform==="openai"){const t=s.value.refreshToken?6e5:31536e6;o.openaiOauth={idToken:s.value.idToken||"",accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expires_in:Math.floor(t/1e3)}}}m.account.platform==="gemini"&&(o.projectId=s.value.projectId||""),m.account.platform==="claude"&&(o.priority=s.value.priority||50,o.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}),m.account.platform==="openai"&&(o.priority=s.value.priority||50),m.account.platform==="gemini"&&(o.priority=s.value.priority||50),m.account.platform==="claude-console"&&(o.apiUrl=s.value.apiUrl,s.value.apiKey&&(o.apiKey=s.value.apiKey),o.priority=s.value.priority||50,o.supportedModels=Me()||{},o.userAgent=s.value.userAgent||null,o.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0),m.account.platform==="bedrock"&&((s.value.accessKeyId||s.value.secretAccessKey||s.value.sessionToken)&&(o.awsCredentials={},s.value.accessKeyId&&(o.awsCredentials.accessKeyId=s.value.accessKeyId),s.value.secretAccessKey&&(o.awsCredentials.secretAccessKey=s.value.secretAccessKey),s.value.sessionToken!==void 0&&(o.awsCredentials.sessionToken=s.value.sessionToken||null)),s.value.region&&(o.region=s.value.region),o.defaultModel=s.value.defaultModel||null,o.smallFastModel=s.value.smallFastModel||null,o.priority=s.value.priority||50,o.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0),m.account.platform==="claude"?await h.updateClaudeAccount(m.account.id,o):m.account.platform==="claude-console"?await h.updateClaudeConsoleAccount(m.account.id,o):m.account.platform==="bedrock"?await h.updateBedrockAccount(m.account.id,o):m.account.platform==="openai"?await h.updateOpenAIAccount(m.account.id,o):await h.updateGeminiAccount(m.account.id,o),_("success")}catch(o){I(o.message||"账户更新失败","error")}finally{z.value=!1}}};H(()=>s.value.name,()=>{var o;T.value.name&&((o=s.value.name)!=null&&o.trim())&&(T.value.name="")}),H(()=>s.value.accessToken,()=>{var o;T.value.accessToken&&((o=s.value.accessToken)!=null&&o.trim())&&(T.value.accessToken="")}),H(()=>s.value.apiUrl,()=>{var o;T.value.apiUrl&&((o=s.value.apiUrl)!=null&&o.trim())&&(T.value.apiUrl="")}),H(()=>s.value.apiKey,()=>{var o;T.value.apiKey&&((o=s.value.apiKey)!=null&&o.trim())&&(T.value.apiKey="")});const pe=w([]),de=w(!1),ge=w(!1),c=fe(()=>{const o=s.value.platform==="claude-console"?"claude":s.value.platform;return pe.value.filter(t=>t.platform===o)}),p=async()=>{de.value=!0;try{const o=await M.get("/admin/account-groups");pe.value=o.data||[]}catch{I("加载分组列表失败","error"),pe.value=[]}finally{de.value=!1}},$=async()=>{await p(),I("分组列表已刷新","success")},le=async()=>{await p()};H(()=>s.value.platform,o=>{o==="claude-console"||o==="bedrock"?s.value.addType="manual":o==="claude"?s.value.addType="setup-token":o==="gemini"&&(s.value.addType="oauth"),s.value.accountType==="group"&&(s.value.groupId="")}),H(u,o=>{if(!o||typeof o!="string")return;const t=o.trim();if(!t)return;if(t.startsWith("http://")||t.startsWith("https://"))if(t.startsWith("http://localhost:45462"))try{const R=new URL(t).searchParams.get("code");R?(u.value=R,I("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):I("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(G){console.error("Failed to parse URL:",G),I("链接格式错误,请检查是否为完整的 URL","error")}else I("请粘贴以 http://localhost:45462 开头的链接","error")}),H(()=>s.value.accountType,o=>{o==="group"&&pe.value.length===0&&p()}),H(()=>s.value.groupId,o=>{o==="__new__"&&(s.value.groupId="",ge.value=!0)});const Ve=()=>{g.value.push({from:"",to:""})},Ce=o=>{g.value.splice(o,1)},oe=(o,t)=>{if(g.value.some(G=>G.from===o)){I(`模型 ${o} 的映射已存在`,"info");return}g.value.push({from:o,to:t}),I(`已添加映射: ${o} → ${t}`,"success")},Me=()=>{const o={};return g.value.forEach(t=>{t.from&&t.to&&(o[t.from]=t.to)}),Object.keys(o).length>0?o:null};return H(()=>m.account,o=>{if(o){L();const t=o.proxy&&o.proxy.host&&o.proxy.port?{enabled:!0,type:o.proxy.type||"socks5",host:o.proxy.host,port:o.proxy.port,username:o.proxy.username||"",password:o.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""};let l="";o.accountType==="group"&&(l=o.groupId||o.groupInfo&&o.groupInfo.id||"");let G="claude_max";if(o.subscriptionInfo){const R=typeof o.subscriptionInfo=="string"?JSON.parse(o.subscriptionInfo):o.subscriptionInfo;R.accountType?G=R.accountType:R.hasClaudeMax?G="claude_max":R.hasClaudePro?G="claude_pro":G="claude_free"}s.value={platform:o.platform,addType:"oauth",name:o.name,description:o.description||"",accountType:o.accountType||"shared",subscriptionType:G,groupId:l,projectId:o.projectId||"",accessToken:"",refreshToken:"",proxy:t,apiUrl:o.apiUrl||"",apiKey:"",priority:o.priority||50,supportedModels:(()=>{const R=o.supportedModels;return R?typeof R=="object"&&!Array.isArray(R)?Object.keys(R).join(` -`):Array.isArray(R)?R.join(` -`):"":""})(),userAgent:o.userAgent||"",enableRateLimit:!!(o.rateLimitDuration&&o.rateLimitDuration>0),rateLimitDuration:o.rateLimitDuration||60,accessKeyId:"",secretAccessKey:"",region:o.region||"",sessionToken:"",defaultModel:o.defaultModel||"",smallFastModel:o.smallFastModel||""},o.accountType==="group"&&p().then(()=>{o.groupInfo&&o.groupInfo.id?s.value.groupId=o.groupInfo.id:pe.value.forEach(R=>{M.get(`/admin/account-groups/${R.id}/members`).then(ue=>{(ue.data||[]).some(re=>re.id===o.id)&&(s.value.groupId=R.id)}).catch(()=>{})})})}},{immediate:!0}),(o,t)=>(n(),ke(Be,{to:"body"},[D.value?(n(),i("div",ua,[e("div",pa,[e("div",ma,[e("div",ca,[t[76]||(t[76]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-user-circle text-sm text-white sm:text-base"})],-1)),e("h3",ga,v(y.value?"编辑账户":"添加账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:t[0]||(t[0]=l=>o.$emit("close"))},t[77]||(t[77]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),!y.value&&(s.value.addType==="oauth"||s.value.addType==="setup-token")?(n(),i("div",xa,[e("div",ya,[e("div",fa,[e("div",{class:P(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",O.value>=1?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 1 ",2),t[78]||(t[78]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"基本信息",-1))]),t[80]||(t[80]=e("div",{class:"h-0.5 w-4 bg-gray-300 sm:w-8"},null,-1)),e("div",ba,[e("div",{class:P(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",O.value>=2?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 2 ",2),t[79]||(t[79]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"授权认证",-1))])])])):k("",!0),O.value===1&&!y.value?(n(),i("div",va,[e("div",ka,[y.value?k("",!0):(n(),i("div",wa,[t[86]||(t[86]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"平台",-1)),e("div",ha,[e("label",$a,[x(e("input",{"onUpdate:modelValue":t[1]||(t[1]=l=>s.value.platform=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[N,s.value.platform]]),t[81]||(t[81]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude",-1))]),e("label",Ca,[x(e("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>s.value.platform=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude-console"},null,512),[[N,s.value.platform]]),t[82]||(t[82]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Console",-1))]),e("label",Ta,[x(e("input",{"onUpdate:modelValue":t[3]||(t[3]=l=>s.value.platform=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[N,s.value.platform]]),t[83]||(t[83]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Gemini",-1))]),e("label",Aa,[x(e("input",{"onUpdate:modelValue":t[4]||(t[4]=l=>s.value.platform=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[N,s.value.platform]]),t[84]||(t[84]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"OpenAI",-1))]),e("label",Ia,[x(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>s.value.platform=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"bedrock"},null,512),[[N,s.value.platform]]),t[85]||(t[85]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Bedrock",-1))])])])),!y.value&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("div",Ua,[t[90]||(t[90]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"添加方式",-1)),e("div",Sa,[s.value.platform==="claude"?(n(),i("label",Va,[x(e("input",{"onUpdate:modelValue":t[6]||(t[6]=l=>s.value.addType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"setup-token"},null,512),[[N,s.value.addType]]),t[87]||(t[87]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Setup Token (推荐)",-1))])):k("",!0),e("label",Ma,[x(e("input",{"onUpdate:modelValue":t[7]||(t[7]=l=>s.value.addType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"oauth"},null,512),[[N,s.value.addType]]),t[88]||(t[88]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"OAuth 授权",-1))]),e("label",La,[x(e("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>s.value.addType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"manual"},null,512),[[N,s.value.addType]]),t[89]||(t[89]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"手动输入 Access Token",-1))])])])):k("",!0),e("div",null,[t[91]||(t[91]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),x(e("input",{"onUpdate:modelValue":t[9]||(t[9]=l=>s.value.name=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[U,s.value.name]]),T.value.name?(n(),i("p",Ka,v(T.value.name),1)):k("",!0)]),e("div",null,[t[92]||(t[92]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),x(e("textarea",{"onUpdate:modelValue":t[10]||(t[10]=l=>s.value.description=l),class:"form-input w-full resize-none dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[U,s.value.description]])]),e("div",null,[t[96]||(t[96]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",ja,[e("label",Ra,[x(e("input",{"onUpdate:modelValue":t[11]||(t[11]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[N,s.value.accountType]]),t[93]||(t[93]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",Oa,[x(e("input",{"onUpdate:modelValue":t[12]||(t[12]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[N,s.value.accountType]]),t[94]||(t[94]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",Da,[x(e("input",{"onUpdate:modelValue":t[13]||(t[13]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[N,s.value.accountType]]),t[95]||(t[95]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[97]||(t[97]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),i("div",Pa,[t[100]||(t[100]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",Ga,[x(e("select",{"onUpdate:modelValue":t[14]||(t[14]=l=>s.value.groupId=l),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",required:""},[t[98]||(t[98]=e("option",{value:""},"请选择分组",-1)),(n(!0),i(be,null,ve(c.value,l=>(n(),i("option",{key:l.id,value:l.id},v(l.name)+" ("+v(l.memberCount||0)+" 个成员) ",9,za))),128)),t[99]||(t[99]=e("option",{value:"__new__"},"+ 新建分组",-1))],512),[[qe,s.value.groupId]]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",type:"button",onClick:$},[e("i",{class:P(["fas fa-sync-alt",{"animate-spin":de.value}])},null,2)])])])):k("",!0),s.value.platform==="gemini"?(n(),i("div",Wa,[t[101]||(t[101]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[15]||(t[15]=l=>s.value.projectId=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[U,s.value.projectId]]),t[102]||(t[102]=e("div",{class:"mt-2 rounded-lg border border-yellow-200 bg-yellow-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-yellow-600"}),e("div",{class:"text-xs text-yellow-700"},[e("p",{class:"mb-1 font-medium"},"Google Cloud/Workspace 账号需要提供项目 ID"),e("p",null," 某些 Google 账号(特别是绑定了 Google Cloud 的账号)会被识别为 Workspace 账号,需要提供额外的项目 ID。 "),e("div",{class:"mt-2 rounded border border-yellow-300 bg-white p-2"},[e("p",{class:"mb-1 font-medium"},"如何获取项目 ID:"),e("ol",{class:"ml-2 list-inside list-decimal space-y-1"},[e("li",null,[C(" 访问 "),e("a",{class:"font-medium text-blue-600 hover:underline",href:"https://console.cloud.google.com/welcome",target:"_blank"},"Google Cloud Console")]),e("li",null,[C(" 复制"),e("span",{class:"font-semibold text-red-600"},"项目 ID(Project ID)"),C(",通常是字符串格式 ")]),e("li",{class:"text-red-600"}," ⚠️ 注意:要复制项目 ID(Project ID),不要复制项目编号(Project Number)! ")])]),e("p",{class:"mt-2"},[e("strong",null,"提示:"),C("如果您的账号是普通个人账号(未绑定 Google Cloud),请留空此字段。 ")])])])],-1))])):k("",!0),s.value.platform==="bedrock"&&!y.value?(n(),i("div",Ea,[e("div",null,[t[103]||(t[103]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 访问密钥 ID *",-1)),x(e("input",{"onUpdate:modelValue":t[16]||(t[16]=l=>s.value.accessKeyId=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.accessKeyId}]),placeholder:"请输入 AWS Access Key ID",required:"",type:"text"},null,2),[[U,s.value.accessKeyId]]),T.value.accessKeyId?(n(),i("p",Fa,v(T.value.accessKeyId),1)):k("",!0)]),e("div",null,[t[104]||(t[104]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 秘密访问密钥 *",-1)),x(e("input",{"onUpdate:modelValue":t[17]||(t[17]=l=>s.value.secretAccessKey=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.secretAccessKey}]),placeholder:"请输入 AWS Secret Access Key",required:"",type:"password"},null,2),[[U,s.value.secretAccessKey]]),T.value.secretAccessKey?(n(),i("p",qa,v(T.value.secretAccessKey),1)):k("",!0)]),e("div",null,[t[105]||(t[105]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 区域 *",-1)),x(e("input",{"onUpdate:modelValue":t[18]||(t[18]=l=>s.value.region=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.region}]),placeholder:"例如:us-east-1",required:"",type:"text"},null,2),[[U,s.value.region]]),T.value.region?(n(),i("p",Ba,v(T.value.region),1)):k("",!0),t[106]||(t[106]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")]),e("p",{class:"mt-2 text-blue-600"},"💡 请输入完整的区域代码,如 us-east-1")])])],-1))]),e("div",null,[t[107]||(t[107]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"会话令牌 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[19]||(t[19]=l=>s.value.sessionToken=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"如果使用临时凭证,请输入会话令牌",type:"password"},null,512),[[U,s.value.sessionToken]]),t[108]||(t[108]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 仅在使用临时 AWS 凭证时需要填写 ",-1))]),e("div",null,[t[109]||(t[109]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"默认主模型 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[20]||(t[20]=l=>s.value.defaultModel=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[U,s.value.defaultModel]]),t[110]||(t[110]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1)),t[111]||(t[111]=e("div",{class:"mt-2 rounded-lg border border-amber-200 bg-amber-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-amber-600"}),e("div",{class:"text-xs text-amber-700"},[e("p",{class:"mb-1 font-medium"},"Bedrock 模型配置说明:"),e("ul",{class:"list-inside list-disc space-y-1 text-xs"},[e("li",null,"支持 Inference Profile ID(推荐)"),e("li",null,"支持 Application Inference Profile ARN"),e("li",null,"常用模型:us.anthropic.claude-sonnet-4-20250514-v1:0"),e("li",null,"留空将使用系统配置的默认模型")])])])],-1))]),e("div",null,[t[112]||(t[112]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[21]||(t[21]=l=>s.value.smallFastModel=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[U,s.value.smallFastModel]]),t[113]||(t[113]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 用于快速响应的轻量级模型,留空将使用系统默认 ",-1))]),e("div",null,[t[118]||(t[118]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",Na,[e("label",_a,[x(e("input",{"onUpdate:modelValue":t[22]||(t[22]=l=>s.value.enableRateLimit=l),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[we,s.value.enableRateLimit]]),t[114]||(t[114]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[115]||(t[115]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",Ha,[t[116]||(t[116]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),x(e("input",{"onUpdate:modelValue":t[23]||(t[23]=l=>s.value.rateLimitDuration=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[U,s.value.rateLimitDuration,void 0,{number:!0}]]),t[117]||(t[117]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):k("",!0)])])):k("",!0),s.value.platform==="claude-console"&&!y.value?(n(),i("div",Ja,[e("div",null,[t[119]||(t[119]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),x(e("input",{"onUpdate:modelValue":t[24]||(t[24]=l=>s.value.apiUrl=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.apiUrl}]),placeholder:"例如:https://api.example.com",required:"",type:"text"},null,2),[[U,s.value.apiUrl]]),T.value.apiUrl?(n(),i("p",Ya,v(T.value.apiUrl),1)):k("",!0)]),e("div",null,[t[120]||(t[120]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),x(e("input",{"onUpdate:modelValue":t[25]||(t[25]=l=>s.value.apiKey=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.apiKey}]),placeholder:"请输入API Key",required:"",type:"password"},null,2),[[U,s.value.apiKey]]),T.value.apiKey?(n(),i("p",Qa,v(T.value.apiKey),1)):k("",!0)]),e("div",null,[t[124]||(t[124]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型映射表 (可选)",-1)),t[125]||(t[125]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",Xa,[(n(!0),i(be,null,ve(g.value,(l,G)=>(n(),i("div",{key:G,class:"flex items-center gap-2"},[x(e("input",{"onUpdate:modelValue":R=>l.from=R,class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"原始模型名称",type:"text"},null,8,Za),[[U,l.from]]),t[122]||(t[122]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),x(e("input",{"onUpdate:modelValue":R=>l.to=R,class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"映射后的模型名称",type:"text"},null,8,el),[[U,l.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50 dark:hover:bg-red-900/20",type:"button",onClick:R=>Ce(G)},t[121]||(t[121]=[e("i",{class:"fas fa-trash"},null,-1)]),8,tl)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700 dark:border-gray-600 dark:text-gray-400 dark:hover:border-gray-500 dark:hover:text-gray-300",type:"button",onClick:Ve},t[123]||(t[123]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 添加模型映射 ",-1)])),e("div",sl,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",type:"button",onClick:t[26]||(t[26]=l=>oe("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200 dark:bg-purple-900/30 dark:text-purple-400 dark:hover:bg-purple-900/50",type:"button",onClick:t[27]||(t[27]=l=>oe("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200 dark:bg-green-900/30 dark:text-green-400 dark:hover:bg-green-900/50",type:"button",onClick:t[28]||(t[28]=l=>oe("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200 dark:bg-orange-900/30 dark:text-orange-400 dark:hover:bg-orange-900/50",type:"button",onClick:t[29]||(t[29]=l=>oe("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[126]||(t[126]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[127]||(t[127]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[30]||(t[30]=l=>s.value.userAgent=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[U,s.value.userAgent]]),t[128]||(t[128]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[133]||(t[133]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",al,[e("label",ll,[x(e("input",{"onUpdate:modelValue":t[31]||(t[31]=l=>s.value.enableRateLimit=l),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[we,s.value.enableRateLimit]]),t[129]||(t[129]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[130]||(t[130]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",rl,[t[131]||(t[131]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),x(e("input",{"onUpdate:modelValue":t[32]||(t[32]=l=>s.value.rateLimitDuration=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[U,s.value.rateLimitDuration,void 0,{number:!0}]]),t[132]||(t[132]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):k("",!0)])])):k("",!0),s.value.platform==="claude"?(n(),i("div",ol,[t[136]||(t[136]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",nl,[e("label",il,[x(e("input",{"onUpdate:modelValue":t[33]||(t[33]=l=>s.value.subscriptionType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[N,s.value.subscriptionType]]),t[134]||(t[134]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",dl,[x(e("input",{"onUpdate:modelValue":t[34]||(t[34]=l=>s.value.subscriptionType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[N,s.value.subscriptionType]]),t[135]||(t[135]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[137]||(t[137]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):k("",!0),e("div",null,[t[138]||(t[138]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),x(e("input",{"onUpdate:modelValue":t[35]||(t[35]=l=>s.value.priority=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高,默认50",type:"number"},null,512),[[U,s.value.priority,void 0,{number:!0}]]),t[139]||(t[139]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.addType==="manual"&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("div",ul,[e("div",pl,[t[145]||(t[145]=e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-info text-sm text-white"})],-1)),e("div",null,[t[143]||(t[143]=e("h5",{class:"mb-2 font-semibold text-blue-900 dark:text-blue-300"}," 手动输入 Token ",-1)),s.value.platform==="claude"?(n(),i("p",ml," 请输入有效的 Claude Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="gemini"?(n(),i("p",cl," 请输入有效的 Gemini Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="openai"?(n(),i("p",gl," 请输入有效的 OpenAI Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):k("",!0),e("div",xl,[t[142]||(t[142]=e("p",{class:"mb-1 text-sm font-medium text-blue-900 dark:text-blue-300"},[e("i",{class:"fas fa-folder-open mr-1"}),C(" 获取 Access Token 的方法: ")],-1)),s.value.platform==="claude"?(n(),i("p",yl,t[140]||(t[140]=[C(" 请从已登录 Claude Code 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.claude/.credentials.json",-1),C(" 文件中的凭证, 请勿使用 Claude 官网 API Keys 页面的密钥。 ",-1)]))):s.value.platform==="gemini"?(n(),i("p",fl,t[141]||(t[141]=[C(" 请从已登录 Gemini CLI 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.config/gemini/credentials.json",-1),C(" 文件中的凭证。 ",-1)]))):s.value.platform==="openai"?(n(),i("p",bl," 请从已登录 OpenAI 账户的机器上获取认证凭证, 或通过 OAuth 授权流程获取 Access Token。 ")):k("",!0)]),t[144]||(t[144]=e("p",{class:"text-xs text-blue-600 dark:text-blue-400"}," 💡 如果未填写 Refresh Token,Token 过期后需要手动更新。 ",-1))])]),s.value.platform==="openai"?(n(),i("div",vl,[t[146]||(t[146]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"ID Token *",-1)),x(e("textarea",{"onUpdate:modelValue":t[36]||(t[36]=l=>s.value.idToken=l),class:P(["form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.idToken}]),placeholder:"请输入 ID Token (JWT 格式)...",required:"",rows:"4"},null,2),[[U,s.value.idToken]]),T.value.idToken?(n(),i("p",kl,v(T.value.idToken),1)):k("",!0),t[147]||(t[147]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," ID Token 是 OpenAI OAuth 认证返回的 JWT token,包含用户信息和组织信息 ",-1))])):k("",!0),e("div",null,[t[148]||(t[148]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token *",-1)),x(e("textarea",{"onUpdate:modelValue":t[37]||(t[37]=l=>s.value.accessToken=l),class:P(["form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.accessToken}]),placeholder:"请输入 Access Token...",required:"",rows:"4"},null,2),[[U,s.value.accessToken]]),T.value.accessToken?(n(),i("p",wl,v(T.value.accessToken),1)):k("",!0)]),e("div",null,[t[149]||(t[149]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token (可选)",-1)),x(e("textarea",{"onUpdate:modelValue":t[38]||(t[38]=l=>s.value.refreshToken=l),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"请输入 Refresh Token...",rows:"4"},null,512),[[U,s.value.refreshToken]])])])):k("",!0),me(He,{modelValue:s.value.proxy,"onUpdate:modelValue":t[39]||(t[39]=l=>s.value.proxy=l)},null,8,["modelValue"]),e("div",hl,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[40]||(t[40]=l=>o.$emit("close"))}," 取消 "),(s.value.addType==="oauth"||s.value.addType==="setup-token")&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("button",{key:0,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:z.value,type:"button",onClick:ne}," 下一步 ",8,$l)):(n(),i("button",{key:1,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:z.value,type:"button",onClick:Ue},[z.value?(n(),i("div",Tl)):k("",!0),C(" "+v(z.value?"创建中...":"创建"),1)],8,Cl))])])])):k("",!0),O.value===2&&s.value.addType==="oauth"?(n(),ke(ks,{key:2,platform:s.value.platform,proxy:s.value.proxy,onBack:t[41]||(t[41]=l=>O.value=1),onSuccess:$e},null,8,["platform","proxy"])):k("",!0),O.value===2&&s.value.addType==="setup-token"?(n(),i("div",Al,[s.value.platform==="claude"?(n(),i("div",Il,[e("div",Ul,[e("div",Sl,[t[161]||(t[161]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-key text-white"})],-1)),e("div",Vl,[t[159]||(t[159]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"}," Claude Setup Token 授权 ",-1)),t[160]||(t[160]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤通过 Setup Token 完成 Claude 账户的授权: ",-1)),e("div",Ml,[e("div",Ll,[e("div",Kl,[t[152]||(t[152]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",jl,[t[151]||(t[151]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),W.value?(n(),i("div",Pl,[e("div",Gl,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:W.value},null,8,zl),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:Ae},[e("i",{class:P(j.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:he},t[150]||(t[150]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:F.value,onClick:ie},[F.value?(n(),i("div",Dl)):(n(),i("i",Ol)),C(" "+v(F.value?"生成中...":"生成 Setup Token 授权链接"),1)],8,Rl))])])]),t[158]||(t[158]=e("div",{class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},[e("div",{class:"flex items-start gap-3"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 2 "),e("div",{class:"flex-1"},[e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 在浏览器中打开链接并完成授权 "),e("p",{class:"mb-2 text-sm text-blue-700 dark:text-blue-300"}," 请在新标签页中打开授权链接,登录您的 Claude 账户并授权 Claude Code。 "),e("div",{class:"rounded border border-yellow-300 bg-yellow-50 p-3 dark:border-yellow-700 dark:bg-yellow-900/30"},[e("p",{class:"text-xs text-yellow-800 dark:text-yellow-300"},[e("i",{class:"fas fa-exclamation-triangle mr-1"}),e("strong",null,"注意:"),C("如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。 ")])])])])],-1)),e("div",Wl,[e("div",El,[t[157]||(t[157]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Fl,[t[155]||(t[155]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),t[156]||(t[156]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"}," 授权完成后,从返回页面复制 Authorization Code,并粘贴到下方输入框: ",-1)),e("div",ql,[e("div",null,[t[153]||(t[153]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),C("Authorization Code ")],-1)),x(e("textarea",{"onUpdate:modelValue":t[42]||(t[42]=l=>u.value=l),class:"form-input w-full resize-none font-mono text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"粘贴从Claude Code授权页面获取的Authorization Code...",rows:"3"},null,512),[[U,u.value]])]),t[154]||(t[154]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 请粘贴从Claude Code授权页面复制的Authorization Code ")],-1))])])])])])])])])])):k("",!0),e("div",Bl,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[43]||(t[43]=l=>O.value=1)}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!Z.value||Q.value,type:"button",onClick:Ie},[Q.value?(n(),i("div",_l)):k("",!0),C(" "+v(Q.value?"验证中...":"完成授权"),1)],8,Nl)])])):k("",!0),y.value?(n(),i("div",Hl,[e("div",null,[t[162]||(t[162]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),x(e("input",{"onUpdate:modelValue":t[44]||(t[44]=l=>s.value.name=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,512),[[U,s.value.name]])]),e("div",null,[t[163]||(t[163]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),x(e("textarea",{"onUpdate:modelValue":t[45]||(t[45]=l=>s.value.description=l),class:"form-input w-full resize-none dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[U,s.value.description]])]),e("div",null,[t[167]||(t[167]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",Jl,[e("label",Yl,[x(e("input",{"onUpdate:modelValue":t[46]||(t[46]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[N,s.value.accountType]]),t[164]||(t[164]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",Ql,[x(e("input",{"onUpdate:modelValue":t[47]||(t[47]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[N,s.value.accountType]]),t[165]||(t[165]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",Xl,[x(e("input",{"onUpdate:modelValue":t[48]||(t[48]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[N,s.value.accountType]]),t[166]||(t[166]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[168]||(t[168]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),i("div",Zl,[t[171]||(t[171]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",er,[x(e("select",{"onUpdate:modelValue":t[49]||(t[49]=l=>s.value.groupId=l),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",required:""},[t[169]||(t[169]=e("option",{value:""},"请选择分组",-1)),(n(!0),i(be,null,ve(c.value,l=>(n(),i("option",{key:l.id,value:l.id},v(l.name)+" ("+v(l.memberCount||0)+" 个成员) ",9,tr))),128)),t[170]||(t[170]=e("option",{value:"__new__"},"+ 新建分组",-1))],512),[[qe,s.value.groupId]]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:$},[e("i",{class:P(["fas fa-sync-alt",{"animate-spin":de.value}])},null,2)])])])):k("",!0),s.value.platform==="gemini"?(n(),i("div",sr,[t[172]||(t[172]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[50]||(t[50]=l=>s.value.projectId=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[U,s.value.projectId]]),t[173]||(t[173]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," Google Cloud/Workspace 账号可能需要提供项目 ID ",-1))])):k("",!0),s.value.platform==="claude"?(n(),i("div",ar,[t[176]||(t[176]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",lr,[e("label",rr,[x(e("input",{"onUpdate:modelValue":t[51]||(t[51]=l=>s.value.subscriptionType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[N,s.value.subscriptionType]]),t[174]||(t[174]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",or,[x(e("input",{"onUpdate:modelValue":t[52]||(t[52]=l=>s.value.subscriptionType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[N,s.value.subscriptionType]]),t[175]||(t[175]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[177]||(t[177]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):k("",!0),e("div",null,[t[178]||(t[178]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),x(e("input",{"onUpdate:modelValue":t[53]||(t[53]=l=>s.value.priority=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高",type:"number"},null,512),[[U,s.value.priority,void 0,{number:!0}]]),t[179]||(t[179]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.platform==="claude-console"?(n(),i("div",nr,[e("div",null,[t[180]||(t[180]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API URL",-1)),x(e("input",{"onUpdate:modelValue":t[54]||(t[54]=l=>s.value.apiUrl=l),class:"form-input w-full",placeholder:"例如:https://api.example.com",required:"",type:"text"},null,512),[[U,s.value.apiUrl]])]),e("div",null,[t[181]||(t[181]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API Key",-1)),x(e("input",{"onUpdate:modelValue":t[55]||(t[55]=l=>s.value.apiKey=l),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[U,s.value.apiKey]]),t[182]||(t[182]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",null,[t[186]||(t[186]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"模型映射表 (可选)",-1)),t[187]||(t[187]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3"},[e("p",{class:"text-xs text-blue-700"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",ir,[(n(!0),i(be,null,ve(g.value,(l,G)=>(n(),i("div",{key:G,class:"flex items-center gap-2"},[x(e("input",{"onUpdate:modelValue":R=>l.from=R,class:"form-input flex-1",placeholder:"原始模型名称",type:"text"},null,8,dr),[[U,l.from]]),t[184]||(t[184]=e("i",{class:"fas fa-arrow-right text-gray-400"},null,-1)),x(e("input",{"onUpdate:modelValue":R=>l.to=R,class:"form-input flex-1",placeholder:"映射后的模型名称",type:"text"},null,8,ur),[[U,l.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50",type:"button",onClick:R=>Ce(G)},t[183]||(t[183]=[e("i",{class:"fas fa-trash"},null,-1)]),8,pr)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700",type:"button",onClick:Ve},t[185]||(t[185]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 添加模型映射 ",-1)])),e("div",mr,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200",type:"button",onClick:t[56]||(t[56]=l=>oe("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200",type:"button",onClick:t[57]||(t[57]=l=>oe("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200",type:"button",onClick:t[58]||(t[58]=l=>oe("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200",type:"button",onClick:t[59]||(t[59]=l=>oe("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[188]||(t[188]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[189]||(t[189]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[60]||(t[60]=l=>s.value.userAgent=l),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[U,s.value.userAgent]]),t[190]||(t[190]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[195]||(t[195]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",cr,[e("label",gr,[x(e("input",{"onUpdate:modelValue":t[61]||(t[61]=l=>s.value.enableRateLimit=l),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[we,s.value.enableRateLimit]]),t[191]||(t[191]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[192]||(t[192]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",xr,[t[193]||(t[193]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),x(e("input",{"onUpdate:modelValue":t[62]||(t[62]=l=>s.value.rateLimitDuration=l),class:"form-input w-full",min:"1",type:"number"},null,512),[[U,s.value.rateLimitDuration,void 0,{number:!0}]]),t[194]||(t[194]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):k("",!0)])])):k("",!0),s.value.platform==="bedrock"?(n(),i("div",yr,[e("div",null,[t[196]||(t[196]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 访问密钥 ID",-1)),x(e("input",{"onUpdate:modelValue":t[63]||(t[63]=l=>s.value.accessKeyId=l),class:"form-input w-full",placeholder:"留空表示不更新",type:"text"},null,512),[[U,s.value.accessKeyId]]),t[197]||(t[197]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Access Key ID",-1))]),e("div",null,[t[198]||(t[198]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 秘密访问密钥",-1)),x(e("input",{"onUpdate:modelValue":t[64]||(t[64]=l=>s.value.secretAccessKey=l),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[U,s.value.secretAccessKey]]),t[199]||(t[199]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Secret Access Key",-1))]),e("div",null,[t[200]||(t[200]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 区域",-1)),x(e("input",{"onUpdate:modelValue":t[65]||(t[65]=l=>s.value.region=l),class:"form-input w-full",placeholder:"例如:us-east-1",type:"text"},null,512),[[U,s.value.region]]),t[201]||(t[201]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")])])])],-1))]),e("div",null,[t[202]||(t[202]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"会话令牌 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[66]||(t[66]=l=>s.value.sessionToken=l),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[U,s.value.sessionToken]])]),e("div",null,[t[203]||(t[203]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"默认主模型 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[67]||(t[67]=l=>s.value.defaultModel=l),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[U,s.value.defaultModel]]),t[204]||(t[204]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1))]),e("div",null,[t[205]||(t[205]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[68]||(t[68]=l=>s.value.smallFastModel=l),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[U,s.value.smallFastModel]]),t[206]||(t[206]=e("p",{class:"mt-1 text-xs text-gray-500"},"用于快速响应的轻量级模型,留空将使用系统默认",-1))]),e("div",null,[t[211]||(t[211]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",fr,[e("label",br,[x(e("input",{"onUpdate:modelValue":t[69]||(t[69]=l=>s.value.enableRateLimit=l),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[we,s.value.enableRateLimit]]),t[207]||(t[207]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[208]||(t[208]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",vr,[t[209]||(t[209]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),x(e("input",{"onUpdate:modelValue":t[70]||(t[70]=l=>s.value.rateLimitDuration=l),class:"form-input w-full",min:"1",type:"number"},null,512),[[U,s.value.rateLimitDuration,void 0,{number:!0}]]),t[210]||(t[210]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):k("",!0)])])):k("",!0),s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("div",kr,[t[214]||(t[214]=e("div",{class:"mb-4 flex items-start gap-3"},[e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-amber-500"},[e("i",{class:"fas fa-key text-sm text-white"})]),e("div",null,[e("h5",{class:"mb-2 font-semibold text-amber-900 dark:text-amber-300"},"更新 Token"),e("p",{class:"mb-2 text-sm text-amber-800 dark:text-amber-300"}," 可以更新 Access Token 和 Refresh Token。为了安全起见,不会显示当前的 Token 值。 "),e("p",{class:"text-xs text-amber-600 dark:text-amber-400"},"💡 留空表示不更新该字段。")])],-1)),e("div",wr,[e("div",null,[t[212]||(t[212]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Access Token",-1)),x(e("textarea",{"onUpdate:modelValue":t[71]||(t[71]=l=>s.value.accessToken=l),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[U,s.value.accessToken]])]),e("div",null,[t[213]||(t[213]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Refresh Token",-1)),x(e("textarea",{"onUpdate:modelValue":t[72]||(t[72]=l=>s.value.refreshToken=l),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[U,s.value.refreshToken]])])])])):k("",!0),me(He,{modelValue:s.value.proxy,"onUpdate:modelValue":t[73]||(t[73]=l=>s.value.proxy=l)},null,8,["modelValue"]),e("div",hr,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[74]||(t[74]=l=>o.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:z.value,type:"button",onClick:Se},[z.value?(n(),i("div",Cr)):k("",!0),C(" "+v(z.value?"更新中...":"更新"),1)],8,$r)])])):k("",!0)])])):k("",!0),me(et,{"cancel-text":ee(f).cancelText,"confirm-text":ee(f).confirmText,message:ee(f).message,show:ee(b),title:ee(f).title,onCancel:ee(S),onConfirm:ee(A)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"]),ge.value?(n(),ke(da,{key:1,onClose:t[75]||(t[75]=l=>ge.value=!1),onRefresh:le})):k("",!0)]))}},Tr={class:"accounts-container"},Ar={class:"card p-4 sm:p-6"},Ir={class:"mb-4 flex flex-col gap-4 sm:mb-6"},Ur={class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},Sr={class:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3"},Vr={class:"group relative min-w-[160px]"},Mr={class:"group relative min-w-[140px]"},Lr={class:"group relative min-w-[160px]"},Kr={class:"relative"},jr=["disabled"],Rr={key:0,class:"py-12 text-center"},Or={key:1,class:"py-12 text-center"},Dr={key:2,class:"table-container hidden md:block"},Pr={class:"w-full table-fixed"},Gr={class:"bg-gray-50/80 backdrop-blur-sm dark:bg-gray-700/80"},zr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Wr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Er={key:1,class:"fas fa-sort ml-1 text-gray-400"},Fr={key:1,class:"fas fa-sort ml-1 text-gray-400"},qr={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},Br={class:"px-3 py-4"},Nr={class:"flex items-center"},_r={class:"min-w-0"},Hr={class:"flex items-center gap-2"},Jr=["title"],Yr={key:0,class:"inline-flex items-center rounded-full bg-purple-100 px-2 py-0.5 text-xs font-medium text-purple-800"},Qr={key:1,class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-800"},Xr={key:2,class:"inline-flex items-center rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800"},Zr=["title"],eo=["title"],to={class:"px-3 py-4"},so={class:"flex items-center gap-1"},ao={key:0,class:"flex items-center gap-1.5 rounded-lg border border-yellow-200 bg-gradient-to-r from-yellow-100 to-amber-100 px-2.5 py-1"},lo={class:"text-xs font-medium text-yellow-700"},ro={key:1,class:"flex items-center gap-1.5 rounded-lg border border-purple-200 bg-gradient-to-r from-purple-100 to-pink-100 px-2.5 py-1"},oo={key:2,class:"flex items-center gap-1.5 rounded-lg border border-orange-200 bg-gradient-to-r from-orange-100 to-red-100 px-2.5 py-1"},no={key:3,class:"flex items-center gap-1.5 rounded-lg border border-gray-700 bg-gray-100 bg-gradient-to-r from-gray-100 to-gray-100 px-2.5 py-1"},io={class:"text-xs font-medium text-gray-950"},uo={key:4,class:"flex items-center gap-1.5 rounded-lg border border-indigo-200 bg-gradient-to-r from-indigo-100 to-blue-100 px-2.5 py-1"},po={class:"text-xs font-semibold text-indigo-800"},mo={class:"text-xs font-medium text-indigo-700"},co={key:5,class:"flex items-center gap-1.5 rounded-lg border border-gray-200 bg-gradient-to-r from-gray-100 to-gray-200 px-2.5 py-1"},go={class:"whitespace-nowrap px-3 py-4"},xo={class:"flex flex-col gap-1"},yo={key:0,class:"inline-flex items-center rounded-full bg-yellow-100 px-3 py-1 text-xs font-semibold text-yellow-800"},fo={key:0},bo={key:1,class:"inline-flex items-center rounded-full bg-gray-100 px-3 py-1 text-xs font-semibold text-gray-700"},vo=["title"],ko={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},wo={class:"whitespace-nowrap px-3 py-4"},ho={key:0,class:"flex items-center gap-2"},$o={class:"h-2 w-16 rounded-full bg-gray-200"},Co={class:"min-w-[20px] text-xs font-medium text-gray-700 dark:text-gray-200"},To={key:1,class:"text-sm text-gray-400"},Ao={class:"px-3 py-4 text-sm text-gray-600"},Io=["title"],Uo={key:1,class:"text-gray-400"},So={class:"whitespace-nowrap px-3 py-4 text-sm"},Vo={key:0,class:"space-y-1"},Mo={class:"flex items-center gap-2"},Lo={class:"text-sm font-medium text-gray-900 dark:text-gray-100"},Ko={class:"flex items-center gap-2"},jo={class:"text-xs text-gray-600 dark:text-gray-300"},Ro={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},Oo={key:1,class:"text-xs text-gray-400"},Do={class:"whitespace-nowrap px-3 py-4"},Po={key:0,class:"space-y-2"},Go={class:"flex items-center gap-2"},zo={class:"h-2 w-24 rounded-full bg-gray-200"},Wo={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},Eo={class:"text-xs text-gray-600 dark:text-gray-300"},Fo={key:0,class:"font-medium text-indigo-600"},qo={key:1,class:"text-sm text-gray-400"},Bo={key:2,class:"text-sm text-gray-400"},No={class:"whitespace-nowrap px-3 py-4 text-sm text-gray-600 dark:text-gray-300"},_o={class:"whitespace-nowrap px-3 py-4 text-sm font-medium"},Ho={class:"flex flex-wrap items-center gap-1"},Jo=["disabled","title","onClick"],Yo=["disabled","title","onClick"],Qo={class:"ml-1"},Xo=["onClick"],Zo=["onClick"],en={key:3,class:"space-y-3 md:hidden"},tn={class:"mb-3 flex items-start justify-between"},sn={class:"flex items-center gap-3"},an={class:"text-sm font-semibold text-gray-900"},ln={class:"mt-0.5 flex items-center gap-2"},rn={class:"text-xs text-gray-500 dark:text-gray-400"},on={class:"text-xs text-gray-500 dark:text-gray-400"},nn={class:"mb-3 grid grid-cols-2 gap-3"},dn={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},un={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},pn={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},mn={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},cn={class:"mb-3 space-y-2"},gn={key:0,class:"space-y-1.5 rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},xn={class:"flex items-center justify-between text-xs"},yn={class:"font-medium text-gray-700 dark:text-gray-200"},fn={class:"h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-600"},bn={class:"flex items-center justify-between text-xs"},vn={class:"text-gray-500 dark:text-gray-400"},kn={key:0,class:"font-medium text-indigo-600"},wn={key:1,class:"text-gray-500"},hn={class:"flex items-center justify-between text-xs"},$n={class:"text-gray-700 dark:text-gray-200"},Cn={key:1,class:"flex items-center justify-between text-xs"},Tn={class:"text-gray-700 dark:text-gray-200"},An={class:"flex items-center justify-between text-xs"},In={class:"font-medium text-gray-700 dark:text-gray-200"},Un={class:"mt-3 flex gap-2 border-t border-gray-100 pt-3"},Sn=["disabled","onClick"],Vn=["onClick"],Mn=["onClick"],Ln={__name:"AccountsView",setup(B){const{showConfirmModal:J,confirmOptions:m,showConfirm:_,handleConfirm:h,handleCancel:b}=Xe(),f=w([]),K=w(!1),A=w("name"),S=w(""),y=w("asc"),D=w([]),O=w([]),z=w("all"),F=w("all"),Q=w(!1),W=w(!1),u=w(!1),j=w(new Map),X=w([{value:"name",label:"按名称排序",icon:"fa-font"},{value:"dailyTokens",label:"按今日Token排序",icon:"fa-coins"},{value:"dailyRequests",label:"按今日请求数排序",icon:"fa-chart-line"},{value:"totalTokens",label:"按总Token排序",icon:"fa-database"},{value:"lastUsed",label:"按最后使用排序",icon:"fa-clock"}]),ae=w([{value:"all",label:"所有平台",icon:"fa-globe"},{value:"claude",label:"Claude",icon:"fa-brain"},{value:"claude-console",label:"Claude Console",icon:"fa-terminal"},{value:"gemini",label:"Gemini",icon:"fa-google"},{value:"openai",label:"OpenAi",icon:"fa-openai"},{value:"bedrock",label:"Bedrock",icon:"fab fa-aws"}]),s=fe(()=>{const d=[{value:"all",label:"所有账户",icon:"fa-globe"},{value:"ungrouped",label:"未分组账户",icon:"fa-user"}];return O.value.forEach(a=>{d.push({value:a.id,label:`${a.name} (${a.platform==="claude"?"Claude":a.platform==="gemini"?"Gemini":"OpenAI"})`,icon:a.platform==="claude"?"fa-brain":a.platform==="gemini"?"fa-robot":"fa-openai"})}),d}),g=w(!1),L=w(!1),T=w(null),ce=fe(()=>{const d=f.value;return S.value?[...d].sort((V,r)=>{var te,se,Y,o,t,l,G,R,ue,xe,re,Ne;let E=V[S.value],q=r[S.value];return S.value==="dailyTokens"?(E=((se=(te=V.usage)==null?void 0:te.daily)==null?void 0:se.allTokens)||0,q=((o=(Y=r.usage)==null?void 0:Y.daily)==null?void 0:o.allTokens)||0):S.value==="dailyRequests"?(E=((l=(t=V.usage)==null?void 0:t.daily)==null?void 0:l.requests)||0,q=((R=(G=r.usage)==null?void 0:G.daily)==null?void 0:R.requests)||0):S.value==="totalTokens"&&(E=((xe=(ue=V.usage)==null?void 0:ue.total)==null?void 0:xe.allTokens)||0,q=((Ne=(re=r.usage)==null?void 0:re.total)==null?void 0:Ne.allTokens)||0),S.value==="lastUsed"&&(E=V.lastUsedAt?new Date(V.lastUsedAt).getTime():0,q=r.lastUsedAt?new Date(r.lastUsedAt).getTime():0),S.value==="status"&&(E=V.isActive?1:0,q=r.isActive?1:0),Eq?y.value==="asc"?1:-1:0}):d}),Z=async(d=!1)=>{K.value=!0;try{const a={};F.value!=="all"&&(a.platform=F.value),z.value!=="all"&&(a.groupId=z.value);const V=[];if(F.value==="all")V.push(M.get("/admin/claude-accounts",{params:a}),M.get("/admin/claude-console-accounts",{params:a}),M.get("/admin/bedrock-accounts",{params:a}),M.get("/admin/gemini-accounts",{params:a}),M.get("/admin/openai-accounts",{params:a}));else switch(F.value){case"claude":V.push(M.get("/admin/claude-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"claude-console":V.push(Promise.resolve({success:!0,data:[]}),M.get("/admin/claude-console-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"bedrock":V.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),M.get("/admin/bedrock-accounts",{params:a}),Promise.resolve({success:!0,data:[]}));break;case"gemini":V.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),M.get("/admin/gemini-accounts",{params:a}));break}await Promise.all([Ae(d),Ie(d)]),await $e(d);const[r,E,q,te,se]=await Promise.all(V),Y=[];if(r.success){const o=(r.data||[]).map(t=>{const l=D.value.filter(R=>R.claudeAccountId===t.id).length,G=j.value.get(t.id)||null;return{...t,platform:"claude",boundApiKeysCount:l,groupInfo:G}});Y.push(...o)}if(E.success){const o=(E.data||[]).map(t=>{const l=j.value.get(t.id)||null;return{...t,platform:"claude-console",boundApiKeysCount:0,groupInfo:l}});Y.push(...o)}if(q.success){const o=(q.data||[]).map(t=>{const l=j.value.get(t.id)||null;return{...t,platform:"bedrock",boundApiKeysCount:0,groupInfo:l}});Y.push(...o)}if(te.success){const o=(te.data||[]).map(t=>{const l=D.value.filter(R=>R.geminiAccountId===t.id).length,G=j.value.get(t.id)||null;return{...t,platform:"gemini",boundApiKeysCount:l,groupInfo:G}});Y.push(...o)}if(se.success){const o=(se.data||[]).map(t=>{const l=D.value.filter(R=>R.openaiAccountId===t.id).length,G=j.value.get(t.id)||null;return{...t,platform:"openai",boundApiKeysCount:l,groupInfo:G}});Y.push(...o)}f.value=Y}catch{I("加载账户失败","error")}finally{K.value=!1}},ne=d=>{d&&(S.value===d?y.value=y.value==="asc"?"desc":"asc":(S.value=d,y.value="asc"))},ie=d=>{if(d==null)return"0";const a=Number(d);return a>=1e6?Math.floor(a/1e6).toLocaleString()+"M":a.toLocaleString()},he=d=>{if(!d)return"从未使用";const a=new Date(d),r=new Date-a;return r<6e4?"刚刚":r<36e5?`${Math.floor(r/6e4)} 分钟前`:r<864e5?`${Math.floor(r/36e5)} 小时前`:r<6048e5?`${Math.floor(r/864e5)} 天前`:a.toLocaleDateString("zh-CN")},Ae=async(d=!1)=>{if(!(!d&&Q.value))try{const a=await M.get("/admin/api-keys");a.success&&(D.value=a.data||[],Q.value=!0)}catch(a){console.error("Failed to load API keys:",a)}},Ie=async(d=!1)=>{if(!(!d&&W.value))try{const a=await M.get("/admin/account-groups");a.success&&(O.value=a.data||[],W.value=!0)}catch(a){console.error("Failed to load account groups:",a)}},$e=async(d=!1)=>{if(!(!d&&u.value))try{j.value.clear();for(const a of O.value)try{const V=await M.get(`/admin/account-groups/${a.id}/members`);V.success&&(V.data||[]).forEach(E=>{j.value.set(E.id,a)})}catch(V){console.error(`Failed to load members for group ${a.id}:`,V)}u.value=!0}catch(a){console.error("Failed to load group members:",a)}},Ue=()=>{Q.value=!1,W.value=!1,u.value=!1,j.value.clear()},Se=()=>{Z()},pe=()=>{Z()},de=d=>{if(!d||!d.host||!d.port)return null;const a=d.type==="socks5"?"S5":d.type.toUpperCase();let V=d.host;V.length>15&&(V=V.substring(0,12)+"...");let r=`${a}://${V}:${d.port}`;return d.username&&(r=`${a}://***@${V}:${d.port}`),r},ge=(d,a)=>{if(!d||!a)return"--";const V=new Date(d),r=new Date(a),E=V.getHours().toString().padStart(2,"0"),q=V.getMinutes().toString().padStart(2,"0"),te=r.getHours().toString().padStart(2,"0"),se=r.getMinutes().toString().padStart(2,"0");return`${E}:${q} - ${te}:${se}`},c=d=>{if(!d||d<=0)return"已结束";const a=Math.floor(d/60),V=d%60;return a>0?`${a}小时${V}分钟`:`${V}分钟`},p=()=>{g.value=!0},$=d=>{T.value=d,L.value=!0},le=async d=>{const a=D.value.filter(r=>r.claudeAccountId===d.id||r.geminiAccountId===d.id||r.openaiAccountId===d.id).length;if(a>0){I(`无法删除此账号,有 ${a} 个API Key绑定到此账号,请先解绑所有API Key`,"error");return}if(await _("删除账户",`确定要删除账户 "${d.name}" 吗? - -此操作不可恢复。`,"删除","取消"))try{let r;d.platform==="claude"?r=`/admin/claude-accounts/${d.id}`:d.platform==="claude-console"?r=`/admin/claude-console-accounts/${d.id}`:d.platform==="bedrock"?r=`/admin/bedrock-accounts/${d.id}`:d.platform==="openai"?r=`/admin/openai-accounts/${d.id}`:r=`/admin/gemini-accounts/${d.id}`;const E=await M.delete(r);E.success?(I("账户已删除","success"),u.value=!1,Z()):I(E.message||"删除失败","error")}catch{I("删除失败","error")}},Ve=async d=>{if(d.isResetting)return;let a=!1;if(window.showConfirm?a=await window.showConfirm("重置账户状态","确定要重置此账户的所有异常状态吗?这将清除限流状态、401错误计数等所有异常标记。","确定重置","取消"):a=confirm("确定要重置此账户的所有异常状态吗?"),!!a)try{d.isResetting=!0;const V=await M.post(`/admin/claude-accounts/${d.id}/reset-status`);V.success?(I("账户状态已重置","success"),Z()):I(V.message||"状态重置失败","error")}catch{I("状态重置失败","error")}finally{d.isResetting=!1}},Ce=async d=>{if(!d.isTogglingSchedulable)try{d.isTogglingSchedulable=!0;let a;if(d.platform==="claude")a=`/admin/claude-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="claude-console")a=`/admin/claude-console-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="bedrock")a=`/admin/bedrock-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="gemini")a=`/admin/gemini-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="openai")a=`/admin/openai-accounts/${d.id}/toggle-schedulable`;else{I("该账户类型暂不支持调度控制","warning");return}const V=await M.put(a);V.success?(d.schedulable=V.schedulable,I(V.schedulable?"已启用调度":"已禁用调度","success")):I(V.message||"操作失败","error")}catch{I("切换调度状态失败","error")}finally{d.isTogglingSchedulable=!1}},oe=()=>{g.value=!1,I("账户创建成功","success"),Ue(),Z()},Me=()=>{L.value=!1,I("账户更新成功","success"),u.value=!1,Z()},Le=d=>!d.lastRefreshAt||d.lastRefreshAt===""?"Setup":"OAuth",Ke=()=>"OAuth",je=()=>"OAuth",Re=d=>{if(d.subscriptionInfo)try{const a=typeof d.subscriptionInfo=="string"?JSON.parse(d.subscriptionInfo):d.subscriptionInfo;return console.log("Account subscription info:",{accountName:d.name,subscriptionInfo:a,hasClaudeMax:a.hasClaudeMax,hasClaudePro:a.hasClaudePro}),a.hasClaudeMax===!0?"Claude Max":a.hasClaudePro===!0?"Claude Pro":"Claude Free"}catch(a){return console.error("Failed to parse subscription info:",a),"Claude"}return console.log("No subscription info for account:",d.name),"Claude"},Oe=d=>d.status==="blocked"?"已封锁":d.status==="unauthorized"?"异常":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"限流中":d.status==="error"||!d.isActive?"错误":d.schedulable===!1?"已暂停":"正常",De=d=>d.status==="blocked"||d.status==="unauthorized"?"bg-red-100 text-red-800":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"bg-orange-100 text-orange-800":d.status==="error"||!d.isActive?"bg-red-100 text-red-800":d.schedulable===!1?"bg-gray-100 text-gray-800":"bg-green-100 text-green-800",Pe=d=>d.status==="blocked"||d.status==="unauthorized"?"bg-red-500":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"bg-orange-500":d.status==="error"||!d.isActive?"bg-red-500":d.schedulable===!1?"bg-gray-500":"bg-green-500",Ge=d=>he(d);return H(A,d=>{const a={name:"name",dailyTokens:"dailyTokens",dailyRequests:"dailyRequests",totalTokens:"totalTokens",lastUsed:"lastUsed"};a[d]&&ne(a[d])}),Ye(()=>{Z(!0)}),(d,a)=>{const V=tt;return n(),i("div",Tr,[e("div",Ar,[e("div",Ir,[a[19]||(a[19]=e("div",null,[e("h3",{class:"mb-1 text-lg font-bold text-gray-900 dark:text-gray-100 sm:mb-2 sm:text-xl"}," 账户管理 "),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"}," 管理您的 Claude 和 Gemini 账户及代理配置 ")],-1)),e("div",Ur,[e("div",Sr,[e("div",Vr,[a[13]||(a[13]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-indigo-500 to-blue-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),me(Fe,{modelValue:A.value,"onUpdate:modelValue":a[0]||(a[0]=r=>A.value=r),icon:"fa-sort-amount-down","icon-color":"text-indigo-500",options:X.value,placeholder:"选择排序",onChange:a[1]||(a[1]=r=>ne())},null,8,["modelValue","options"])]),e("div",Mr,[a[14]||(a[14]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-blue-500 to-indigo-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),me(Fe,{modelValue:F.value,"onUpdate:modelValue":a[2]||(a[2]=r=>F.value=r),icon:"fa-server","icon-color":"text-blue-500",options:ae.value,placeholder:"选择平台",onChange:Se},null,8,["modelValue","options"])]),e("div",Lr,[a[15]||(a[15]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-purple-500 to-pink-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),me(Fe,{modelValue:z.value,"onUpdate:modelValue":a[3]||(a[3]=r=>z.value=r),icon:"fa-layer-group","icon-color":"text-purple-500",options:s.value,placeholder:"选择分组",onChange:pe},null,8,["modelValue","options"])]),e("div",Kr,[me(V,{content:"刷新数据 (Ctrl/⌘+点击强制刷新所有缓存)",effect:"dark",placement:"bottom"},{default:rt(()=>[e("button",{class:"group relative flex items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm transition-all duration-200 hover:border-gray-300 hover:shadow-md disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:border-gray-500 sm:w-auto",disabled:K.value,onClick:[a[4]||(a[4]=ze(r=>Z(!0),["ctrl","exact"])),a[5]||(a[5]=ze(r=>Z(!1),["exact"])),a[6]||(a[6]=ze(r=>Z(!0),["meta","exact"]))]},[a[16]||(a[16]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-green-500 to-teal-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),e("i",{class:P(["fas relative text-green-500",K.value?"fa-spinner fa-spin":"fa-sync-alt"])},null,2),a[17]||(a[17]=e("span",{class:"relative"},"刷新",-1))],8,jr)]),_:1})])]),e("button",{class:"flex w-full items-center justify-center gap-2 rounded-lg bg-gradient-to-r from-green-500 to-green-600 px-5 py-2.5 text-sm font-medium text-white shadow-md transition-all duration-200 hover:from-green-600 hover:to-green-700 hover:shadow-lg sm:w-auto",onClick:ze(p,["stop"])},a[18]||(a[18]=[e("i",{class:"fas fa-plus"},null,-1),e("span",null,"添加账户",-1)]))])]),K.value?(n(),i("div",Rr,a[20]||(a[20]=[e("div",{class:"loading-spinner mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载账户...",-1)]))):ce.value.length===0?(n(),i("div",Or,a[21]||(a[21]=[e("div",{class:"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-gray-100 dark:bg-gray-700"},[e("i",{class:"fas fa-user-circle text-xl text-gray-400"})],-1),e("p",{class:"text-lg text-gray-500 dark:text-gray-400"},"暂无账户",-1),e("p",{class:"mt-2 text-sm text-gray-400 dark:text-gray-500"},"点击上方按钮添加您的第一个账户",-1)]))):(n(),i("div",Dr,[e("table",Pr,[e("thead",Gr,[e("tr",null,[e("th",{class:"w-[22%] min-w-[180px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[7]||(a[7]=r=>ne("name"))},[a[22]||(a[22]=C(" 名称 ",-1)),S.value==="name"?(n(),i("i",{key:0,class:P(["fas",y.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",zr))]),e("th",{class:"w-[15%] min-w-[120px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[8]||(a[8]=r=>ne("platform"))},[a[23]||(a[23]=C(" 平台/类型 ",-1)),S.value==="platform"?(n(),i("i",{key:0,class:P(["fas",y.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Wr))]),e("th",{class:"w-[12%] min-w-[100px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[9]||(a[9]=r=>ne("status"))},[a[24]||(a[24]=C(" 状态 ",-1)),S.value==="status"?(n(),i("i",{key:0,class:P(["fas",y.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Er))]),e("th",{class:"w-[8%] min-w-[80px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[10]||(a[10]=r=>ne("priority"))},[a[25]||(a[25]=C(" 优先级 ",-1)),S.value==="priority"?(n(),i("i",{key:0,class:P(["fas",y.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Fr))]),a[26]||(a[26]=e("th",{class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 代理 ",-1)),a[27]||(a[27]=e("th",{class:"w-[10%] min-w-[90px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 今日使用 ",-1)),a[28]||(a[28]=e("th",{class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 会话窗口 ",-1)),a[29]||(a[29]=e("th",{class:"w-[8%] min-w-[80px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 最后使用 ",-1)),a[30]||(a[30]=e("th",{class:"w-[15%] min-w-[180px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 操作 ",-1))])]),e("tbody",qr,[(n(!0),i(be,null,ve(ce.value,r=>{var E;return n(),i("tr",{key:r.id,class:"table-row"},[e("td",Br,[e("div",Nr,[a[35]||(a[35]=e("div",{class:"mr-2 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-user-circle text-xs text-white"})],-1)),e("div",_r,[e("div",Hr,[e("div",{class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100",title:r.name},v(r.name),9,Jr),r.accountType==="dedicated"?(n(),i("span",Yr,a[31]||(a[31]=[e("i",{class:"fas fa-lock mr-1"},null,-1),C("专属 ",-1)]))):r.accountType==="group"?(n(),i("span",Qr,a[32]||(a[32]=[e("i",{class:"fas fa-layer-group mr-1"},null,-1),C("分组调度 ",-1)]))):(n(),i("span",Xr,a[33]||(a[33]=[e("i",{class:"fas fa-share-alt mr-1"},null,-1),C("共享 ",-1)]))),r.groupInfo?(n(),i("span",{key:3,class:"ml-1 inline-flex items-center rounded-full bg-gray-100 px-2 py-0.5 text-xs font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-400",title:`所属分组: ${r.groupInfo.name}`},[a[34]||(a[34]=e("i",{class:"fas fa-folder mr-1"},null,-1)),C(v(r.groupInfo.name),1)],8,Zr)):k("",!0)]),e("div",{class:"truncate text-xs text-gray-500 dark:text-gray-400",title:r.id},v(r.id),9,eo)])])]),e("td",to,[e("div",so,[r.platform==="gemini"?(n(),i("div",ao,[a[36]||(a[36]=e("i",{class:"fas fa-robot text-xs text-yellow-700"},null,-1)),a[37]||(a[37]=e("span",{class:"text-xs font-semibold text-yellow-800"},"Gemini",-1)),a[38]||(a[38]=e("span",{class:"mx-1 h-4 w-px bg-yellow-300"},null,-1)),e("span",lo,v(Ke()),1)])):r.platform==="claude-console"?(n(),i("div",ro,a[39]||(a[39]=[e("i",{class:"fas fa-terminal text-xs text-purple-700"},null,-1),e("span",{class:"text-xs font-semibold text-purple-800"},"Console",-1),e("span",{class:"mx-1 h-4 w-px bg-purple-300"},null,-1),e("span",{class:"text-xs font-medium text-purple-700"},"API Key",-1)]))):r.platform==="bedrock"?(n(),i("div",oo,a[40]||(a[40]=[e("i",{class:"fab fa-aws text-xs text-orange-700"},null,-1),e("span",{class:"text-xs font-semibold text-orange-800"},"Bedrock",-1),e("span",{class:"mx-1 h-4 w-px bg-orange-300"},null,-1),e("span",{class:"text-xs font-medium text-orange-700"},"AWS",-1)]))):r.platform==="openai"?(n(),i("div",no,[a[41]||(a[41]=e("div",{class:"fa-openai"},null,-1)),a[42]||(a[42]=e("span",{class:"text-xs font-semibold text-gray-950"},"OpenAi",-1)),a[43]||(a[43]=e("span",{class:"mx-1 h-4 w-px bg-gray-400"},null,-1)),e("span",io,v(je()),1)])):r.platform==="claude"||r.platform==="claude-oauth"?(n(),i("div",uo,[a[44]||(a[44]=e("i",{class:"fas fa-brain text-xs text-indigo-700"},null,-1)),e("span",po,v(Re(r)),1),a[45]||(a[45]=e("span",{class:"mx-1 h-4 w-px bg-indigo-300"},null,-1)),e("span",mo,v(Le(r)),1)])):(n(),i("div",co,a[46]||(a[46]=[e("i",{class:"fas fa-question text-xs text-gray-700"},null,-1),e("span",{class:"text-xs font-semibold text-gray-800"},"未知",-1)])))])]),e("td",go,[e("div",xo,[e("span",{class:P(["inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold",r.status==="blocked"?"bg-orange-100 text-orange-800":r.status==="unauthorized"?"bg-red-100 text-red-800":r.isActive?"bg-green-100 text-green-800":"bg-red-100 text-red-800"])},[e("div",{class:P(["mr-2 h-2 w-2 rounded-full",r.status==="blocked"?"bg-orange-500":r.status==="unauthorized"?"bg-red-500":r.isActive?"bg-green-500":"bg-red-500"])},null,2),C(" "+v(r.status==="blocked"?"已封锁":r.status==="unauthorized"?"异常":r.isActive?"正常":"异常"),1)],2),r.rateLimitStatus&&r.rateLimitStatus.isRateLimited||r.rateLimitStatus==="limited"?(n(),i("span",yo,[a[47]||(a[47]=e("i",{class:"fas fa-exclamation-triangle mr-1"},null,-1)),a[48]||(a[48]=C(" 限流中 ",-1)),r.rateLimitStatus&&typeof r.rateLimitStatus=="object"&&r.rateLimitStatus.minutesRemaining>0?(n(),i("span",fo,"("+v(r.rateLimitStatus.minutesRemaining)+"分钟)",1)):k("",!0)])):k("",!0),r.schedulable===!1?(n(),i("span",bo,a[49]||(a[49]=[e("i",{class:"fas fa-pause-circle mr-1"},null,-1),C(" 不可调度 ",-1)]))):k("",!0),r.status==="blocked"&&r.errorMessage?(n(),i("span",{key:2,class:"mt-1 max-w-xs truncate text-xs text-gray-500 dark:text-gray-400",title:r.errorMessage},v(r.errorMessage),9,vo)):k("",!0),r.accountType==="dedicated"?(n(),i("span",ko," 绑定: "+v(r.boundApiKeysCount||0)+" 个API Key ",1)):k("",!0)])]),e("td",wo,[r.platform==="claude"||r.platform==="claude-console"||r.platform==="bedrock"||r.platform==="gemini"||r.platform==="openai"?(n(),i("div",ho,[e("div",$o,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-green-500 to-blue-600 transition-all duration-300",style:Ee({width:101-(r.priority||50)+"%"})},null,4)]),e("span",Co,v(r.priority||50),1)])):(n(),i("div",To,a[50]||(a[50]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",Ao,[de(r.proxy)?(n(),i("div",{key:0,class:"break-all rounded bg-blue-50 px-2 py-1 font-mono text-xs",title:de(r.proxy)},v(de(r.proxy)),9,Io)):(n(),i("div",Uo,"无代理"))]),e("td",So,[r.usage&&r.usage.daily?(n(),i("div",Vo,[e("div",Mo,[a[51]||(a[51]=e("div",{class:"h-2 w-2 rounded-full bg-green-500"},null,-1)),e("span",Lo,v(r.usage.daily.requests||0)+" 次",1)]),e("div",Ko,[a[52]||(a[52]=e("div",{class:"h-2 w-2 rounded-full bg-blue-500"},null,-1)),e("span",jo,v(ie(r.usage.daily.allTokens||0))+" tokens",1)]),r.usage.averages&&r.usage.averages.rpm>0?(n(),i("div",Ro," 平均 "+v(r.usage.averages.rpm.toFixed(2))+" RPM ",1)):k("",!0)])):(n(),i("div",Oo,"暂无数据"))]),e("td",Do,[r.platform==="claude"&&r.sessionWindow&&r.sessionWindow.hasActiveWindow?(n(),i("div",Po,[e("div",Go,[e("div",zo,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-blue-500 to-indigo-600 transition-all duration-300",style:Ee({width:r.sessionWindow.progress+"%"})},null,4)]),e("span",Wo,v(r.sessionWindow.progress)+"% ",1)]),e("div",Eo,[e("div",null,v(ge(r.sessionWindow.windowStart,r.sessionWindow.windowEnd)),1),r.sessionWindow.remainingTime>0?(n(),i("div",Fo," 剩余 "+v(c(r.sessionWindow.remainingTime)),1)):k("",!0)])])):r.platform==="claude"?(n(),i("div",qo,a[53]||(a[53]=[e("i",{class:"fas fa-minus"},null,-1)]))):(n(),i("div",Bo,a[54]||(a[54]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",No,v(he(r.lastUsedAt)),1),e("td",_o,[e("div",Ho,[r.platform==="claude"&&(r.status==="unauthorized"||r.status!=="active"||(E=r.rateLimitStatus)!=null&&E.isRateLimited||r.rateLimitStatus==="limited"||!r.isActive)?(n(),i("button",{key:0,class:P(["rounded px-2.5 py-1 text-xs font-medium transition-colors",r.isResetting?"cursor-not-allowed bg-gray-100 text-gray-400":"bg-yellow-100 text-yellow-700 hover:bg-yellow-200"]),disabled:r.isResetting,title:r.isResetting?"重置中...":"重置所有异常状态",onClick:q=>Ve(r)},[e("i",{class:P(["fas fa-redo",r.isResetting?"animate-spin":""])},null,2),a[55]||(a[55]=e("span",{class:"ml-1"},"重置状态",-1))],10,Jo)):k("",!0),e("button",{class:P(["rounded px-2.5 py-1 text-xs font-medium transition-colors",r.isTogglingSchedulable?"cursor-not-allowed bg-gray-100 text-gray-400":r.schedulable?"bg-green-100 text-green-700 hover:bg-green-200":"bg-gray-100 text-gray-700 hover:bg-gray-200"]),disabled:r.isTogglingSchedulable,title:r.schedulable?"点击禁用调度":"点击启用调度",onClick:q=>Ce(r)},[e("i",{class:P(["fas",r.schedulable?"fa-toggle-on":"fa-toggle-off"])},null,2),e("span",Qo,v(r.schedulable?"调度":"停用"),1)],10,Yo),e("button",{class:"rounded bg-blue-100 px-2.5 py-1 text-xs font-medium text-blue-700 transition-colors hover:bg-blue-200",title:"编辑账户",onClick:q=>$(r)},a[56]||(a[56]=[e("i",{class:"fas fa-edit"},null,-1),e("span",{class:"ml-1"},"编辑",-1)]),8,Xo),e("button",{class:"rounded bg-red-100 px-2.5 py-1 text-xs font-medium text-red-700 transition-colors hover:bg-red-200",title:"删除账户",onClick:q=>le(r)},a[57]||(a[57]=[e("i",{class:"fas fa-trash"},null,-1),e("span",{class:"ml-1"},"删除",-1)]),8,Zo)])])])}),128))])])])),!K.value&&ce.value.length>0?(n(),i("div",en,[(n(!0),i(be,null,ve(ce.value,r=>{var E,q,te,se,Y,o,t,l;return n(),i("div",{key:r.id,class:"card p-4 transition-shadow hover:shadow-lg"},[e("div",tn,[e("div",sn,[e("div",{class:P(["flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg",r.platform==="claude"?"bg-gradient-to-br from-purple-500 to-purple-600":r.platform==="bedrock"?"bg-gradient-to-br from-orange-500 to-red-600":"bg-gradient-to-br from-blue-500 to-blue-600"])},[e("i",{class:P(["text-sm text-white",r.platform==="claude"?"fas fa-brain":r.platform==="bedrock"?"fab fa-aws":"fas fa-robot"])},null,2)],2),e("div",null,[e("h4",an,v(r.name||r.email),1),e("div",ln,[e("span",rn,v(r.platform),1),a[58]||(a[58]=e("span",{class:"text-xs text-gray-400"},"|",-1)),e("span",on,v(r.type),1)])])]),e("span",{class:P(["inline-flex items-center rounded-full px-2 py-1 text-xs font-semibold",De(r)])},[e("div",{class:P(["mr-1.5 h-1.5 w-1.5 rounded-full",Pe(r)])},null,2),C(" "+v(Oe(r)),1)],2)]),e("div",nn,[e("div",null,[a[59]||(a[59]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"今日使用",-1)),e("p",dn,v(ie(((q=(E=r.usage)==null?void 0:E.daily)==null?void 0:q.requests)||0))+" 次 ",1),e("p",un,v(ie(((se=(te=r.usage)==null?void 0:te.daily)==null?void 0:se.allTokens)||0))+" tokens ",1)]),e("div",null,[a[60]||(a[60]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"总使用量",-1)),e("p",pn,v(ie(((o=(Y=r.usage)==null?void 0:Y.total)==null?void 0:o.requests)||0))+" 次 ",1),e("p",mn,v(ie(((l=(t=r.usage)==null?void 0:t.total)==null?void 0:l.allTokens)||0))+" tokens ",1)])]),e("div",cn,[r.platform==="claude"&&r.sessionWindow&&r.sessionWindow.hasActiveWindow?(n(),i("div",gn,[e("div",xn,[a[61]||(a[61]=e("span",{class:"font-medium text-gray-600 dark:text-gray-300"},"会话窗口",-1)),e("span",yn,v(r.sessionWindow.progress)+"% ",1)]),e("div",fn,[e("div",{class:"h-full bg-gradient-to-r from-blue-500 to-indigo-600 transition-all duration-300",style:Ee({width:r.sessionWindow.progress+"%"})},null,4)]),e("div",bn,[e("span",vn,v(ge(r.sessionWindow.windowStart,r.sessionWindow.windowEnd)),1),r.sessionWindow.remainingTime>0?(n(),i("span",kn," 剩余 "+v(c(r.sessionWindow.remainingTime)),1)):(n(),i("span",wn," 已结束 "))])])):k("",!0),e("div",hn,[a[62]||(a[62]=e("span",{class:"text-gray-500 dark:text-gray-400"},"最后使用",-1)),e("span",$n,v(r.lastUsedAt?Ge(r.lastUsedAt):"从未使用"),1)]),r.proxyConfig&&r.proxyConfig.type!=="none"?(n(),i("div",Cn,[a[63]||(a[63]=e("span",{class:"text-gray-500 dark:text-gray-400"},"代理",-1)),e("span",Tn,v(r.proxyConfig.type.toUpperCase()),1)])):k("",!0),e("div",An,[a[64]||(a[64]=e("span",{class:"text-gray-500 dark:text-gray-400"},"优先级",-1)),e("span",In,v(r.priority||50),1)])]),e("div",Un,[e("button",{class:P(["flex flex-1 items-center justify-center gap-1 rounded-lg px-3 py-2 text-xs transition-colors",r.schedulable?"bg-gray-50 text-gray-600 hover:bg-gray-100":"bg-green-50 text-green-600 hover:bg-green-100"]),disabled:r.isTogglingSchedulable,onClick:G=>Ce(r)},[e("i",{class:P(["fas",r.schedulable?"fa-pause":"fa-play"])},null,2),C(" "+v(r.schedulable?"暂停":"启用"),1)],10,Sn),e("button",{class:"flex-1 rounded-lg bg-gray-50 px-3 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100",onClick:G=>$(r)},a[65]||(a[65]=[e("i",{class:"fas fa-edit mr-1"},null,-1),C(" 编辑 ",-1)]),8,Vn),e("button",{class:"rounded-lg bg-red-50 px-3 py-2 text-xs text-red-600 transition-colors hover:bg-red-100",onClick:G=>le(r)},a[66]||(a[66]=[e("i",{class:"fas fa-trash"},null,-1)]),8,Mn)])])}),128))])):k("",!0)]),g.value?(n(),ke(Je,{key:0,onClose:a[11]||(a[11]=r=>g.value=!1),onSuccess:oe})):k("",!0),L.value?(n(),ke(Je,{key:1,account:T.value,onClose:a[12]||(a[12]=r=>L.value=!1),onSuccess:Me},null,8,["account"])):k("",!0),me(et,{"cancel-text":ee(m).cancelText,"confirm-text":ee(m).confirmText,message:ee(m).message,show:ee(J),title:ee(m).title,onCancel:ee(b),onConfirm:ee(h)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"])])}}},Gn=Qe(Ln,[["__scopeId","data-v-4463372c"]]);export{Gn as default}; diff --git a/web/admin-spa/dist/assets/ApiKeysView-DuWy3uje.js b/assets/ApiKeysView-AJLEWrkM.js similarity index 99% rename from web/admin-spa/dist/assets/ApiKeysView-DuWy3uje.js rename to assets/ApiKeysView-AJLEWrkM.js index 46945a0c..eed10df4 100644 --- a/web/admin-spa/dist/assets/ApiKeysView-DuWy3uje.js +++ b/assets/ApiKeysView-AJLEWrkM.js @@ -1,4 +1,4 @@ -import{E as Kt}from"./element-plus-CMedNaYf.js";import{aR as it,r as D,c as N,q as _e,V as Dt,o as he,x as d,y as r,z as e,I as re,C as z,P as m,R as ne,J as Lt,L as v,B as De,K as M,aq as ee,Q as Y,ac as J,T as _t,a5 as be,D as Tt,_ as Te,Y as me,an as ae,O as K,aa as Le,aX as $e,al as ye}from"./vue-vendor-DfnFpxGJ.js";import{s as q}from"./toast-BvwA7Mwb.js";import{b as W,_ as fe}from"./index-BdtiivzQ.js";import{_ as Ue}from"./WindowCountdown-RaAYa1A3.js";import{C as nt}from"./CustomDropdown-D7ci0ZD4.js";import"./vendor-BDiMbLwQ.js";const Ge=it("clients",{state:()=>({supportedClients:[],loading:!1,error:null}),actions:{async loadSupportedClients(){if(this.supportedClients.length>0)return this.supportedClients;this.loading=!0,this.error=null;try{const A=await W.get("/admin/supported-clients");return A.success?this.supportedClients=A.data||[]:(this.error=A.message||"加载支持的客户端失败",console.error("Failed to load supported clients:",this.error)),this.supportedClients}catch(A){return this.error=A.message||"加载支持的客户端失败",console.error("Error loading supported clients:",A),[]}finally{this.loading=!1}}}}),Oe=it("apiKeys",()=>{const A=D([]),Q=D(!1),g=D(null),P=D("all"),G=D(""),L=D("asc"),_=async()=>{Q.value=!0,g.value=null;try{const R=await W.get("/admin/api-keys");if(R.success)A.value=R.data||[];else throw new Error(R.message||"获取API Keys失败")}catch(R){throw g.value=R.message,R}finally{Q.value=!1}};return{apiKeys:A,loading:Q,error:g,statsTimeRange:P,sortBy:G,sortOrder:L,fetchApiKeys:_,createApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.post("/admin/api-keys",R);if(C.success)return await _(),C.data;throw new Error(C.message||"创建API Key失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},updateApiKey:async(R,C)=>{Q.value=!0,g.value=null;try{const f=await W.put(`/admin/api-keys/${R}`,C);if(f.success)return await _(),f;throw new Error(f.message||"更新API Key失败")}catch(f){throw g.value=f.message,f}finally{Q.value=!1}},toggleApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.put(`/admin/api-keys/${R}/toggle`);if(C.success)return await _(),C;throw new Error(C.message||"切换状态失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},renewApiKey:async(R,C)=>{Q.value=!0,g.value=null;try{const f=await W.put(`/admin/api-keys/${R}`,C);if(f.success)return await _(),f;throw new Error(f.message||"续期失败")}catch(f){throw g.value=f.message,f}finally{Q.value=!1}},deleteApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.delete(`/admin/api-keys/${R}`);if(C.success)return await _(),C;throw new Error(C.message||"删除失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},fetchApiKeyStats:async(R,C="all")=>{try{const f=await W.get(`/admin/api-keys/${R}/stats`,{params:{timeRange:C}});if(f.success)return f.stats;throw new Error(f.message||"获取统计失败")}catch(f){return console.error("获取API Key统计失败:",f),null}},fetchTags:async()=>{try{const R=await W.get("/admin/api-keys/tags");if(R.success)return R.data||[];throw new Error(R.message||"获取标签失败")}catch(R){return console.error("获取标签失败:",R),[]}},sortApiKeys:R=>{G.value===R?L.value=L.value==="asc"?"desc":"asc":(G.value=R,L.value="asc")},reset:()=>{A.value=[],Q.value=!1,g.value=null,P.value="all",G.value="",L.value="asc"}}}),Mt={class:"flex-shrink-0 border-b border-gray-200 p-3 dark:border-gray-600"},St={class:"relative"},Rt={class:"custom-scrollbar flex-1 overflow-y-auto"},Vt={class:"text-gray-700 dark:text-gray-300"},Pt={key:0},Et=["onClick"],jt={class:"flex items-center justify-between"},Ut={class:"text-gray-700 dark:text-gray-300"},Gt={class:"text-xs text-gray-500 dark:text-gray-400"},Ot={key:1},qt={class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"},Wt=["onClick"],Bt={class:"flex items-center justify-between"},Ft={class:"text-gray-700 dark:text-gray-300"},zt={class:"text-xs text-gray-400 dark:text-gray-500"},Ht={key:2},Nt=["onClick"],Yt={class:"flex items-center justify-between"},Qt={class:"text-gray-700 dark:text-gray-300"},Jt={class:"text-xs text-gray-400 dark:text-gray-500"},Xt={key:3,class:"px-4 py-8 text-center text-gray-500 dark:text-gray-400"},Zt={__name:"AccountSelector",props:{modelValue:{type:String,default:""},platform:{type:String,required:!0,validator:A=>["claude","gemini"].includes(A)},accounts:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},placeholder:{type:String,default:"请选择账号"},defaultOptionText:{type:String,default:"使用共享账号池"}},emits:["update:modelValue"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=D(""),_=D(null),U=D(null),T=D({}),B=D(null),S=D(""),$=N(()=>{if(!g.modelValue)return g.defaultOptionText;if(g.modelValue.startsWith("group:")){const I=g.modelValue.substring(6),w=g.groups.find(h=>h.id===I);return w?`${w.name} (${w.memberCount||0} 个成员)`:""}if(g.modelValue.startsWith("console:")){const I=g.modelValue.substring(8),w=g.accounts.find(h=>h.id===I&&h.platform==="claude-console");return w?`${w.name} (${E(w)})`:""}const p=g.accounts.find(I=>I.id===g.modelValue);return p?`${p.name} (${E(p)})`:""}),E=p=>{if(!p)return"未知";if(p.isActive===!1)switch(p.status){case"unauthorized":return"未授权";case"error":return"Token错误";case"created":return"待验证";case"rate_limited":return"限流中";default:return"异常"}return"正常"},a=N(()=>[...g.accounts].sort((p,I)=>{const w=new Date(p.createdAt||0);return new Date(I.createdAt||0)-w})),l=N(()=>{if(!L.value)return g.groups;const p=L.value.toLowerCase();return g.groups.filter(I=>I.name.toLowerCase().includes(p))}),X=N(()=>{let p=a.value.filter(I=>I.accountType==="dedicated"&&(g.platform==="claude"?I.platform==="claude-oauth":I.platform!=="claude-console"));if(L.value){const I=L.value.toLowerCase();p=p.filter(w=>w.name.toLowerCase().includes(I))}return p}),R=N(()=>{if(g.platform!=="claude")return[];let p=a.value.filter(I=>I.accountType==="dedicated"&&I.platform==="claude-console");if(L.value){const I=L.value.toLowerCase();p=p.filter(w=>w.name.toLowerCase().includes(I))}return p}),C=N(()=>l.value.length>0||X.value.length>0||R.value.length>0),f=p=>{if(!p)return"";const I=new Date(p),h=(new Date-I)/(1e3*60*60);return h<24?"今天创建":h<48?"昨天创建":h<168?`${Math.floor(h/24)} 天前`:I.toLocaleDateString("zh-CN",{month:"2-digit",day:"2-digit"})},k=()=>{if(!G.value||!U.value||!B.value)return;const p=B.value;if(!p)return;const I=p.getBoundingClientRect(),w=window.innerHeight,h=window.innerWidth,o=w-I.bottom,x=I.top,Z=8,H=o-Z,le=x-Z;let ce=!1,pe=H;S.value==="above"&&le>=150?(ce=!0,pe=le):S.value==="below"&&H>=150?(ce=!1,pe=H):le>H&&H<200&&(ce=!0,pe=le),S.value=ce?"above":"below";let ue=I.left;const te=I.width;ue+te>h-Z&&(ue=h-te-Z),ue{if(!G.value&&B.value){const p=B.value.getBoundingClientRect(),w=window.innerHeight-p.bottom,h=8;T.value={position:"fixed",left:`${p.left}px`,width:`${p.width}px`,maxHeight:`${Math.min(w-h,400)}px`,top:`${p.bottom}px`}}G.value=!G.value,G.value&&Tt(()=>{var p;k(),(p=_.value)==null||p.focus()})},c=p=>{P("update:modelValue",p||""),G.value=!1,L.value=""},b=()=>{},ie=()=>{var p;L.value="",(p=_.value)==null||p.focus()},j=p=>{var I,w;!((I=B.value)!=null&&I.contains(p.target))&&!((w=U.value)!=null&&w.contains(p.target))&&(G.value=!1)},n=()=>{G.value&&k()};return _e(()=>{document.addEventListener("click",j),window.addEventListener("scroll",n,!0),window.addEventListener("resize",k)}),Dt(()=>{document.removeEventListener("click",j),window.removeEventListener("scroll",n,!0),window.removeEventListener("resize",k)}),he(G,p=>{p||(L.value="",S.value="")}),(p,I)=>(r(),d("div",{ref_key:"triggerRef",ref:B,class:"relative"},[e("div",{class:z(["form-input flex w-full cursor-pointer items-center justify-between dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"opacity-50":A.disabled}]),onClick:I[0]||(I[0]=w=>!A.disabled&&u())},[e("span",{class:z(A.modelValue?"text-gray-900 dark:text-gray-200":"text-gray-500 dark:text-gray-400")},m($.value),3),e("i",{class:z(["fas fa-chevron-down text-gray-400 transition-transform duration-200 dark:text-gray-500",{"rotate-180":G.value}])},null,2)],2),(r(),re(be,{to:"body"},[ne(_t,{"enter-active-class":"transition ease-out duration-100","enter-from-class":"transform opacity-0 scale-95","enter-to-class":"transform opacity-100 scale-100","leave-active-class":"transition ease-in duration-75","leave-from-class":"transform opacity-100 scale-100","leave-to-class":"transform opacity-0 scale-95"},{default:Lt(()=>[G.value?(r(),d("div",{key:0,ref_key:"dropdownRef",ref:U,class:"absolute z-50 flex flex-col rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-600 dark:bg-gray-800",style:De(T.value)},[e("div",Mt,[e("div",St,[M(e("input",{ref_key:"searchInput",ref:_,"onUpdate:modelValue":I[1]||(I[1]=w=>L.value=w),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"搜索账号名称...",style:{"padding-left":"40px","padding-right":"36px"},type:"text",onInput:b},null,544),[[ee,L.value]]),I[4]||(I[4]=e("i",{class:"fas fa-search pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm text-gray-400 dark:text-gray-500"},null,-1)),L.value?(r(),d("button",{key:0,class:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:ie},I[3]||(I[3]=[e("i",{class:"fas fa-times text-sm"},null,-1)]))):v("",!0)])]),e("div",Rt,[e("div",{class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":!A.modelValue}]),onClick:I[2]||(I[2]=w=>c(null))},[e("span",Vt,m(A.defaultOptionText),1)],2),l.value.length>0?(r(),d("div",Pt,[I[5]||(I[5]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," 调度分组 ",-1)),(r(!0),d(Y,null,J(l.value,w=>(r(),d("div",{key:`group:${w.id}`,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===`group:${w.id}`}]),onClick:h=>c(`group:${w.id}`)},[e("div",jt,[e("span",Ut,m(w.name),1),e("span",Gt,m(w.memberCount||0)+" 个成员",1)])],10,Et))),128))])):v("",!0),X.value.length>0?(r(),d("div",Ot,[e("div",qt,m(A.platform==="claude"?"Claude OAuth 专属账号":"OAuth 专属账号"),1),(r(!0),d(Y,null,J(X.value,w=>(r(),d("div",{key:w.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===w.id}]),onClick:h=>c(w.id)},[e("div",Bt,[e("div",null,[e("span",Ft,m(w.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",w.isActive?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":w.status==="unauthorized"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},m(E(w)),3)]),e("span",zt,m(f(w.createdAt)),1)])],10,Wt))),128))])):v("",!0),A.platform==="claude"&&R.value.length>0?(r(),d("div",Ht,[I[6]||(I[6]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," Claude Console 专属账号 ",-1)),(r(!0),d(Y,null,J(R.value,w=>(r(),d("div",{key:w.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===`console:${w.id}`}]),onClick:h=>c(`console:${w.id}`)},[e("div",Yt,[e("div",null,[e("span",Qt,m(w.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",w.isActive?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":w.status==="unauthorized"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},m(E(w)),3)]),e("span",Jt,m(f(w.createdAt)),1)])],10,Nt))),128))])):v("",!0),L.value&&!C.value?(r(),d("div",Xt,I[7]||(I[7]=[e("i",{class:"fas fa-search mb-2 text-2xl"},null,-1),e("p",{class:"text-sm"},"没有找到匹配的账号",-1)]))):v("",!0)])],4)):v("",!0)]),_:1})]))],512))}},we=fe(Zt,[["__scopeId","data-v-7e9dcf0d"]]),es={class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},ts={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-4xl flex-col p-4 sm:p-6"},ss={class:"mb-4 flex items-center justify-between"},as={class:"rounded-lg border border-blue-200 bg-gradient-to-r from-blue-50 to-indigo-50 p-3 dark:border-blue-700 dark:from-blue-900/20 dark:to-indigo-900/20 sm:p-4"},ls={class:"flex items-center gap-3 sm:gap-4"},rs={class:"flex cursor-pointer items-center"},os={class:"flex cursor-pointer items-center"},ns={key:0,class:"mt-3"},is={class:"flex items-center gap-4"},ds={class:"flex-1"},us={class:"flex items-center gap-2"},cs={class:"mt-2 flex items-start text-xs text-amber-600 dark:text-amber-400"},gs=["placeholder"],ms={key:0,class:"mt-1 text-xs text-red-500 dark:text-red-400"},ps={class:"space-y-4"},xs={key:0},ys={class:"flex flex-wrap gap-2"},fs=["onClick"],bs={key:1},vs={class:"flex flex-wrap gap-2"},ks=["onClick"],ws={class:"flex gap-2"},hs=["onKeypress"],$s={class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/20"},As={class:"space-y-2"},Cs={class:"grid grid-cols-1 gap-2 lg:grid-cols-3"},Is={class:"space-y-2"},Ks={class:"flex gap-2"},Ds={key:0,class:"mt-3"},Ls=["min"],_s={key:1,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Ts={class:"flex gap-4"},Ms={class:"flex cursor-pointer items-center"},Ss={class:"flex cursor-pointer items-center"},Rs={class:"flex cursor-pointer items-center"},Vs={class:"flex cursor-pointer items-center"},Ps={class:"mb-2 flex items-center justify-between"},Es=["disabled"],js={class:"grid grid-cols-1 gap-3"},Us={class:"mb-2 flex items-center"},Gs={key:0,class:"space-y-3"},Os={class:"mb-3 flex min-h-[32px] flex-wrap gap-2 rounded-lg border border-gray-200 bg-gray-50 p-2"},qs=["onClick"],Ws={key:0,class:"text-sm text-gray-400"},Bs={class:"space-y-3"},Fs={class:"flex flex-wrap gap-2"},zs=["onClick"],Hs={key:0,class:"text-sm italic text-gray-400"},Ns={class:"flex gap-2"},Ys=["onKeydown"],Qs={class:"mb-2 flex items-center"},Js={key:0,class:"rounded-lg border border-green-200 bg-green-50 p-3 dark:border-green-700 dark:bg-green-900/20"},Xs={class:"space-y-1"},Zs=["id","value"],ea=["for"],ta={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},sa={class:"block text-xs text-gray-500 dark:text-gray-400"},aa={class:"flex gap-3 pt-2"},la=["disabled"],ra={key:0,class:"loading-spinner mr-2"},oa={key:1,class:"fas fa-plus mr-2"},na={__name:"CreateApiKeyModal",props:{accounts:{type:Object,default:()=>({claude:[],gemini:[]})}},emits:["close","success","batch-success"],setup(A,{emit:Q}){const g=A,P=Q,G=Ge(),L=Oe(),_=D(!1),U=D(!1),T=D({claude:[],gemini:[],openai:[],bedrock:[],claudeGroups:[],geminiGroups:[],openaiGroups:[]}),B=D({name:""}),S=D(""),$=D([]),E=N(()=>$.value.filter(h=>!l.tags.includes(h))),a=D([]),l=Te({createType:"single",batchCount:10,name:"",description:"",tokenLimit:"",rateLimitWindow:"",rateLimitRequests:"",concurrencyLimit:"",dailyCostLimit:"",expireDuration:"",customExpireDate:"",expiresAt:null,permissions:"all",claudeAccountId:"",geminiAccountId:"",openaiAccountId:"",bedrockAccountId:"",enableModelRestriction:!1,restrictedModels:[],modelInput:"",enableClientRestriction:!1,allowedClients:[],tags:[]});_e(async()=>{a.value=await G.loadSupportedClients(),$.value=await L.fetchTags(),g.accounts&&(T.value={claude:g.accounts.claude||[],gemini:g.accounts.gemini||[],openai:g.accounts.openai||[],bedrock:g.accounts.bedrock||[],claudeGroups:g.accounts.claudeGroups||[],geminiGroups:g.accounts.geminiGroups||[],openaiGroups:g.accounts.openaiGroups||[]})});const X=async()=>{var h,o;U.value=!0;try{const[x,Z,H,le,ce,pe]=await Promise.all([W.get("/admin/claude-accounts"),W.get("/admin/claude-console-accounts"),W.get("/admin/gemini-accounts"),W.get("/admin/openai-accounts"),W.get("/admin/bedrock-accounts"),W.get("/admin/account-groups")]),ue=[];if(x.success&&((h=x.data)==null||h.forEach(te=>{ue.push({...te,platform:"claude-oauth",isDedicated:te.accountType==="dedicated"})})),Z.success&&((o=Z.data)==null||o.forEach(te=>{ue.push({...te,platform:"claude-console",isDedicated:te.accountType==="dedicated"})})),T.value.claude=ue,H.success&&(T.value.gemini=(H.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),le.success&&(T.value.openai=(le.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),ce.success&&(T.value.bedrock=(ce.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),pe.success){const te=pe.data||[];T.value.claudeGroups=te.filter(de=>de.platform==="claude"),T.value.geminiGroups=te.filter(de=>de.platform==="gemini"),T.value.openaiGroups=te.filter(de=>de.platform==="openai")}q("账号列表已刷新","success")}catch{q("刷新账号列表失败","error")}finally{U.value=!1}},R=N(()=>{const h=new Date;return h.setMinutes(h.getMinutes()+1),h.toISOString().slice(0,16)}),C=()=>{if(!l.expireDuration){l.expiresAt=null;return}if(l.expireDuration==="custom")return;const h=new Date,x=l.expireDuration.match(/(\d+)([dhmy])/);if(x){const[,Z,H]=x,le=parseInt(Z);switch(H){case"d":h.setDate(h.getDate()+le);break;case"h":h.setHours(h.getHours()+le);break;case"m":h.setMonth(h.getMonth()+le);break;case"y":h.setFullYear(h.getFullYear()+le);break}l.expiresAt=h.toISOString()}},f=()=>{l.customExpireDate&&(l.expiresAt=new Date(l.customExpireDate).toISOString())},k=h=>new Date(h).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),u=()=>{l.modelInput&&!l.restrictedModels.includes(l.modelInput)&&(l.restrictedModels.push(l.modelInput),l.modelInput="")},c=h=>{l.restrictedModels.splice(h,1)},b=D(["claude-opus-4-20250514","claude-opus-4-1-20250805"]),ie=N(()=>b.value.filter(h=>!l.restrictedModels.includes(h))),j=h=>{l.restrictedModels.includes(h)||l.restrictedModels.push(h)},n=()=>{if(S.value&&S.value.trim()){const h=S.value.trim();l.tags.includes(h)||l.tags.push(h),S.value=""}},p=h=>{l.tags.includes(h)||l.tags.push(h)},I=h=>{l.tags.splice(h,1)},w=async()=>{if(B.value.name="",!l.name||!l.name.trim()){B.value.name="请输入API Key名称";return}if(l.createType==="batch"&&(!l.batchCount||l.batchCount<2||l.batchCount>500)){q("批量创建数量必须在 2-500 之间","error");return}_.value=!0;try{const h={description:l.description||void 0,tokenLimit:l.tokenLimit!==""&&l.tokenLimit!==null?parseInt(l.tokenLimit):null,rateLimitWindow:l.rateLimitWindow!==""&&l.rateLimitWindow!==null?parseInt(l.rateLimitWindow):null,rateLimitRequests:l.rateLimitRequests!==""&&l.rateLimitRequests!==null?parseInt(l.rateLimitRequests):null,concurrencyLimit:l.concurrencyLimit!==""&&l.concurrencyLimit!==null?parseInt(l.concurrencyLimit):0,dailyCostLimit:l.dailyCostLimit!==""&&l.dailyCostLimit!==null?parseFloat(l.dailyCostLimit):0,expiresAt:l.expiresAt||void 0,permissions:l.permissions,tags:l.tags.length>0?l.tags:void 0,enableModelRestriction:l.enableModelRestriction,restrictedModels:l.restrictedModels,enableClientRestriction:l.enableClientRestriction,allowedClients:l.allowedClients};if(l.claudeAccountId&&(l.claudeAccountId.startsWith("console:")?(h.claudeConsoleAccountId=l.claudeAccountId.substring(8),delete h.claudeAccountId):(h.claudeAccountId=l.claudeAccountId,delete h.claudeConsoleAccountId)),l.geminiAccountId&&(h.geminiAccountId=l.geminiAccountId),l.openaiAccountId&&(h.openaiAccountId=l.openaiAccountId),l.bedrockAccountId&&(h.bedrockAccountId=l.bedrockAccountId),l.createType==="single"){const o={...h,name:l.name},x=await W.post("/admin/api-keys",o);x.success?(q("API Key 创建成功","success"),P("success",x.data),P("close")):q(x.message||"创建失败","error")}else{const o={...h,createType:"batch",baseName:l.name,count:l.batchCount},x=await W.post("/admin/api-keys/batch",o);x.success?(q(`成功创建 ${x.data.length} 个 API Key`,"success"),P("batch-success",x.data),P("close")):q(x.message||"批量创建失败","error")}}catch{q("创建失败","error")}finally{_.value=!1}};return(h,o)=>(r(),re(be,{to:"body"},[e("div",es,[e("div",ts,[e("div",ss,[o[33]||(o[33]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-key text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 创建新的 API Key ")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:o[0]||(o[0]=x=>h.$emit("close"))},o[32]||(o[32]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-4",onSubmit:me(w,["prevent"])},[e("div",as,[e("div",{class:z(["flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",l.createType==="batch"?"mb-3":""])},[o[36]||(o[36]=e("label",{class:"flex h-full items-center text-xs font-semibold text-gray-700 dark:text-gray-300 sm:text-sm"},"创建类型",-1)),e("div",ls,[e("label",rs,[M(e("input",{"onUpdate:modelValue":o[1]||(o[1]=x=>l.createType=x),class:"mr-1.5 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 sm:mr-2",type:"radio",value:"single"},null,512),[[ae,l.createType]]),o[34]||(o[34]=e("span",{class:"flex items-center text-xs text-gray-700 dark:text-gray-300 sm:text-sm"},[e("i",{class:"fas fa-key mr-1 text-xs"}),K(" 单个创建 ")],-1))]),e("label",os,[M(e("input",{"onUpdate:modelValue":o[2]||(o[2]=x=>l.createType=x),class:"mr-1.5 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 sm:mr-2",type:"radio",value:"batch"},null,512),[[ae,l.createType]]),o[35]||(o[35]=e("span",{class:"flex items-center text-xs text-gray-700 dark:text-gray-300 sm:text-sm"},[e("i",{class:"fas fa-layer-group mr-1 text-xs"}),K(" 批量创建 ")],-1))])])],2),l.createType==="batch"?(r(),d("div",ns,[e("div",is,[e("div",ds,[o[38]||(o[38]=e("label",{class:"mb-1 block text-xs font-medium text-gray-600 dark:text-gray-400"},"创建数量",-1)),e("div",us,[M(e("input",{"onUpdate:modelValue":o[3]||(o[3]=x=>l.batchCount=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"500",min:"2",placeholder:"输入数量 (2-500)",required:"",type:"number"},null,512),[[ee,l.batchCount,void 0,{number:!0}]]),o[37]||(o[37]=e("div",{class:"whitespace-nowrap text-xs text-gray-500 dark:text-gray-400"}," 最大支持 500 个 ",-1))])])]),e("p",cs,[o[39]||(o[39]=e("i",{class:"fas fa-info-circle mr-1 mt-0.5 flex-shrink-0"},null,-1)),e("span",null,"批量创建时,每个 Key 的名称会自动添加序号后缀,例如:"+m(l.name||"MyKey")+"_1, "+m(l.name||"MyKey")+"_2 ...",1)])])):v("",!0)]),e("div",null,[o[40]||(o[40]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-2 sm:text-sm"},[K("名称 "),e("span",{class:"text-red-500"},"*")],-1)),M(e("input",{"onUpdate:modelValue":o[4]||(o[4]=x=>l.name=x),class:z(["form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":B.value.name}]),placeholder:l.createType==="batch"?"输入基础名称(将自动添加序号)":"为您的 API Key 取一个名称",required:"",type:"text",onInput:o[5]||(o[5]=x=>B.value.name="")},null,42,gs),[[ee,l.name]]),B.value.name?(r(),d("p",ms,m(B.value.name),1)):v("",!0)]),e("div",null,[o[48]||(o[48]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"标签",-1)),e("div",ps,[l.tags.length>0?(r(),d("div",xs,[o[42]||(o[42]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 已选择的标签: ",-1)),e("div",ys,[(r(!0),d(Y,null,J(l.tags,(x,Z)=>(r(),d("span",{key:"selected-"+Z,class:"inline-flex items-center gap-1 rounded-full bg-blue-100 px-3 py-1 text-sm text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},[K(m(x)+" ",1),e("button",{class:"ml-1 hover:text-blue-900 dark:hover:text-blue-300",type:"button",onClick:H=>I(Z)},o[41]||(o[41]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,fs)]))),128))])])):v("",!0),E.value.length>0?(r(),d("div",bs,[o[44]||(o[44]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 点击选择已有标签: ",-1)),e("div",vs,[(r(!0),d(Y,null,J(E.value,x=>(r(),d("button",{key:"available-"+x,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-blue-900/30 dark:hover:text-blue-400",type:"button",onClick:Z=>p(x)},[o[43]||(o[43]=e("i",{class:"fas fa-tag text-xs text-gray-500 dark:text-gray-400"},null,-1)),K(" "+m(x),1)],8,ks))),128))])])):v("",!0),e("div",null,[o[46]||(o[46]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 创建新标签: ",-1)),e("div",ws,[M(e("input",{"onUpdate:modelValue":o[6]||(o[6]=x=>S.value=x),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入新标签名称",type:"text",onKeypress:Le(me(n,["prevent"]),["enter"])},null,40,hs),[[ee,S.value]]),e("button",{class:"rounded-lg bg-green-500 px-4 py-2 text-white transition-colors hover:bg-green-600",type:"button",onClick:n},o[45]||(o[45]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),o[47]||(o[47]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 用于标记不同团队或用途,方便筛选管理 ",-1))])]),e("div",$s,[o[56]||(o[56]=e("div",{class:"mb-2 flex items-center gap-2"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded bg-blue-500"},[e("i",{class:"fas fa-tachometer-alt text-xs text-white"})]),e("h4",{class:"text-sm font-semibold text-gray-800 dark:text-gray-200"}," 速率限制设置 (可选) ")],-1)),e("div",As,[e("div",Cs,[e("div",null,[o[49]||(o[49]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"时间窗口 (分钟)",-1)),M(e("input",{"onUpdate:modelValue":o[7]||(o[7]=x=>l.rateLimitWindow=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,l.rateLimitWindow]]),o[50]||(o[50]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"时间段单位",-1))]),e("div",null,[o[51]||(o[51]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"请求次数限制",-1)),M(e("input",{"onUpdate:modelValue":o[8]||(o[8]=x=>l.rateLimitRequests=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,l.rateLimitRequests]]),o[52]||(o[52]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大请求",-1))]),e("div",null,[o[53]||(o[53]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"Token 限制",-1)),M(e("input",{"onUpdate:modelValue":o[9]||(o[9]=x=>l.tokenLimit=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"无限制",type:"number"},null,512),[[ee,l.tokenLimit]]),o[54]||(o[54]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"}," 窗口内最大Token ",-1))])]),o[55]||(o[55]=e("div",{class:"rounded-lg bg-blue-100 p-2 dark:bg-blue-900/30"},[e("h5",{class:"mb-1 text-xs font-semibold text-blue-800 dark:text-blue-400"}," 💡 使用示例 "),e("div",{class:"space-y-0.5 text-xs text-blue-700 dark:text-blue-300"},[e("div",null,[e("strong",null,"示例1:"),K(" 时间窗口=60,请求次数=1000 → 每60分钟最多1000次请求 ")]),e("div",null,[e("strong",null,"示例2:"),K(" 时间窗口=1,Token=10000 → 每分钟最多10,000个Token ")]),e("div",null,[e("strong",null,"示例3:"),K(" 窗口=30,请求=50,Token=100000 → 每30分钟50次请求且不超10万Token ")])])],-1))])]),e("div",null,[o[58]||(o[58]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日费用限制 (美元)",-1)),e("div",Is,[e("div",Ks,[e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[10]||(o[10]=x=>l.dailyCostLimit="50")}," $50 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[11]||(o[11]=x=>l.dailyCostLimit="100")}," $100 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[12]||(o[12]=x=>l.dailyCostLimit="200")}," $200 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[13]||(o[13]=x=>l.dailyCostLimit="")}," 自定义 ")]),M(e("input",{"onUpdate:modelValue":o[14]||(o[14]=x=>l.dailyCostLimit=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[ee,l.dailyCostLimit]]),o[57]||(o[57]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 每日的费用限制,超过限制将拒绝请求,0 或留空表示无限制 ",-1))])]),e("div",null,[o[59]||(o[59]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"并发限制 (可选)",-1)),M(e("input",{"onUpdate:modelValue":o[15]||(o[15]=x=>l.concurrencyLimit=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",type:"number"},null,512),[[ee,l.concurrencyLimit]]),o[60]||(o[60]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 可同时处理的最大请求数,0 或留空表示无限制 ",-1))]),e("div",null,[o[61]||(o[61]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"备注 (可选)",-1)),M(e("textarea",{"onUpdate:modelValue":o[16]||(o[16]=x=>l.description=x),class:"form-input w-full resize-none text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"描述此 API Key 的用途...",rows:"2"},null,512),[[ee,l.description]])]),e("div",null,[o[63]||(o[63]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"有效期限",-1)),M(e("select",{"onUpdate:modelValue":o[17]||(o[17]=x=>l.expireDuration=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",onChange:C},o[62]||(o[62]=[e("option",{value:""},"永不过期",-1),e("option",{value:"1d"},"1 天",-1),e("option",{value:"7d"},"7 天",-1),e("option",{value:"30d"},"30 天",-1),e("option",{value:"90d"},"90 天",-1),e("option",{value:"180d"},"180 天",-1),e("option",{value:"365d"},"365 天",-1),e("option",{value:"custom"},"自定义日期",-1)]),544),[[$e,l.expireDuration]]),l.expireDuration==="custom"?(r(),d("div",Ds,[M(e("input",{"onUpdate:modelValue":o[18]||(o[18]=x=>l.customExpireDate=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:R.value,type:"datetime-local",onChange:f},null,40,Ls),[[ee,l.customExpireDate]])])):v("",!0),l.expiresAt?(r(),d("p",_s," 将于 "+m(k(l.expiresAt))+" 过期 ",1)):v("",!0)]),e("div",null,[o[68]||(o[68]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"服务权限",-1)),e("div",Ts,[e("label",Ms,[M(e("input",{"onUpdate:modelValue":o[19]||(o[19]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"all"},null,512),[[ae,l.permissions]]),o[64]||(o[64]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"全部服务",-1))]),e("label",Ss,[M(e("input",{"onUpdate:modelValue":o[20]||(o[20]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[ae,l.permissions]]),o[65]||(o[65]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Claude",-1))]),e("label",Rs,[M(e("input",{"onUpdate:modelValue":o[21]||(o[21]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[ae,l.permissions]]),o[66]||(o[66]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Gemini",-1))]),e("label",Vs,[M(e("input",{"onUpdate:modelValue":o[22]||(o[22]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[ae,l.permissions]]),o[67]||(o[67]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 OpenAI",-1))])]),o[69]||(o[69]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 控制此 API Key 可以访问哪些服务 ",-1))]),e("div",null,[e("div",Ps,[o[70]||(o[70]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"专属账号绑定 (可选)",-1)),e("button",{class:"flex items-center gap-1 text-sm text-blue-600 transition-colors hover:text-blue-800 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-400 dark:hover:text-blue-300",disabled:U.value,title:"刷新账号列表",type:"button",onClick:X},[e("i",{class:z(["fas",U.value?"fa-spinner fa-spin":"fa-sync-alt","text-xs"])},null,2),e("span",null,m(U.value?"刷新中...":"刷新账号"),1)],8,Es)]),e("div",js,[e("div",null,[o[71]||(o[71]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Claude 专属账号",-1)),ne(we,{modelValue:l.claudeAccountId,"onUpdate:modelValue":o[23]||(o[23]=x=>l.claudeAccountId=x),accounts:T.value.claude,"default-option-text":"使用共享账号池",disabled:l.permissions==="gemini"||l.permissions==="openai",groups:T.value.claudeGroups,placeholder:"请选择Claude账号",platform:"claude"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[72]||(o[72]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Gemini 专属账号",-1)),ne(we,{modelValue:l.geminiAccountId,"onUpdate:modelValue":o[24]||(o[24]=x=>l.geminiAccountId=x),accounts:T.value.gemini,"default-option-text":"使用共享账号池",disabled:l.permissions==="claude"||l.permissions==="openai",groups:T.value.geminiGroups,placeholder:"请选择Gemini账号",platform:"gemini"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[73]||(o[73]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"OpenAI 专属账号",-1)),ne(we,{modelValue:l.openaiAccountId,"onUpdate:modelValue":o[25]||(o[25]=x=>l.openaiAccountId=x),accounts:T.value.openai,"default-option-text":"使用共享账号池",disabled:l.permissions==="claude"||l.permissions==="gemini",groups:T.value.openaiGroups,placeholder:"请选择OpenAI账号",platform:"openai"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[74]||(o[74]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Bedrock 专属账号",-1)),ne(we,{modelValue:l.bedrockAccountId,"onUpdate:modelValue":o[26]||(o[26]=x=>l.bedrockAccountId=x),accounts:T.value.bedrock,"default-option-text":"使用共享账号池",disabled:l.permissions==="gemini"||l.permissions==="openai",groups:[],placeholder:"请选择Bedrock账号",platform:"bedrock"},null,8,["modelValue","accounts","disabled"])])]),o[75]||(o[75]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 选择专属账号后,此API Key将只使用该账号,不选择则使用共享账号池 ",-1))]),e("div",null,[e("div",Us,[M(e("input",{id:"enableModelRestriction","onUpdate:modelValue":o[27]||(o[27]=x=>l.enableModelRestriction=x),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ye,l.enableModelRestriction]]),o[76]||(o[76]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"enableModelRestriction"}," 启用模型限制 ",-1))]),l.enableModelRestriction?(r(),d("div",Gs,[e("div",null,[o[79]||(o[79]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600"},"限制的模型列表",-1)),e("div",Os,[(r(!0),d(Y,null,J(l.restrictedModels,(x,Z)=>(r(),d("span",{key:Z,class:"inline-flex items-center rounded-full bg-red-100 px-3 py-1 text-sm text-red-800"},[K(m(x)+" ",1),e("button",{class:"ml-2 text-red-600 hover:text-red-800",type:"button",onClick:H=>c(Z)},o[77]||(o[77]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,qs)]))),128)),l.restrictedModels.length===0?(r(),d("span",Ws," 暂无限制的模型 ")):v("",!0)]),e("div",Bs,[e("div",Fs,[(r(!0),d(Y,null,J(ie.value,x=>(r(),d("button",{key:x,class:"flex-shrink-0 rounded-lg bg-gray-100 px-3 py-1 text-xs text-gray-700 transition-colors hover:bg-gray-200 sm:text-sm",type:"button",onClick:Z=>j(x)},m(x),9,zs))),128)),ie.value.length===0?(r(),d("span",Hs," 所有常用模型已在限制列表中 ")):v("",!0)]),e("div",Ns,[M(e("input",{"onUpdate:modelValue":o[28]||(o[28]=x=>l.modelInput=x),class:"form-input flex-1",placeholder:"输入模型名称,按回车添加",type:"text",onKeydown:Le(me(u,["prevent"]),["enter"])},null,40,Ys),[[ee,l.modelInput]]),e("button",{class:"rounded-lg bg-red-500 px-4 py-2 text-white transition-colors hover:bg-red-600",type:"button",onClick:u},o[78]||(o[78]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),o[80]||(o[80]=e("p",{class:"mt-2 text-xs text-gray-500"}," 设置此API Key无法访问的模型,例如:claude-opus-4-20250514 ",-1))])])):v("",!0)]),e("div",null,[e("div",Qs,[M(e("input",{id:"enableClientRestriction","onUpdate:modelValue":o[29]||(o[29]=x=>l.enableClientRestriction=x),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ye,l.enableClientRestriction]]),o[81]||(o[81]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"enableClientRestriction"}," 启用客户端限制 ",-1))]),l.enableClientRestriction?(r(),d("div",Js,[e("div",null,[o[82]||(o[82]=e("label",{class:"mb-2 block text-xs font-medium text-gray-700 dark:text-gray-300"},"允许的客户端",-1)),e("div",Xs,[(r(!0),d(Y,null,J(a.value,x=>(r(),d("div",{key:x.id,class:"flex items-start"},[M(e("input",{id:`client_${x.id}`,"onUpdate:modelValue":o[30]||(o[30]=Z=>l.allowedClients=Z),class:"mt-0.5 h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox",value:x.id},null,8,Zs),[[ye,l.allowedClients]]),e("label",{class:"ml-2 flex-1 cursor-pointer",for:`client_${x.id}`},[e("span",ta,m(x.name),1),e("span",sa,m(x.description),1)],8,ea)]))),128))])])])):v("",!0)]),e("div",aa,[e("button",{class:"flex-1 rounded-lg bg-gray-100 px-4 py-2.5 text-sm font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[31]||(o[31]=x=>h.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-4 py-2.5 text-sm font-semibold",disabled:_.value,type:"submit"},[_.value?(r(),d("div",ra)):(r(),d("i",oa)),K(" "+m(_.value?"创建中...":"创建"),1)],8,la)])],32)])])]))}},ia=fe(na,[["__scopeId","data-v-6d814316"]]),da={class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},ua={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-4xl flex-col p-4 sm:p-6 md:p-8"},ca={class:"mb-4 flex items-center justify-between sm:mb-6"},ga=["value"],ma={class:"space-y-4"},pa={key:0},xa={class:"flex flex-wrap gap-2"},ya=["onClick"],fa={key:1},ba={class:"flex flex-wrap gap-2"},va=["onClick"],ka={class:"flex gap-2"},wa=["onKeypress"],ha={class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/20"},$a={class:"space-y-2"},Aa={class:"grid grid-cols-1 gap-2 lg:grid-cols-3"},Ca={class:"space-y-3"},Ia={class:"flex gap-2"},Ka={class:"mb-3 flex items-center"},Da={class:"flex gap-4"},La={class:"flex cursor-pointer items-center"},_a={class:"flex cursor-pointer items-center"},Ta={class:"flex cursor-pointer items-center"},Ma={class:"flex cursor-pointer items-center"},Sa={class:"mb-3 flex items-center justify-between"},Ra=["disabled"],Va={class:"grid grid-cols-1 gap-3"},Pa={class:"mb-3 flex items-center"},Ea={key:0,class:"space-y-3"},ja={class:"mb-3 flex min-h-[32px] flex-wrap gap-2 rounded-lg border border-gray-200 bg-gray-50 p-2 dark:border-gray-600 dark:bg-gray-700"},Ua=["onClick"],Ga={key:0,class:"text-sm text-gray-400 dark:text-gray-500"},Oa={class:"space-y-3"},qa={class:"flex flex-wrap gap-2"},Wa=["onClick"],Ba={key:0,class:"text-sm italic text-gray-400 dark:text-gray-500"},Fa={class:"flex gap-2"},za=["onKeydown"],Ha={class:"mb-3 flex items-center"},Na={key:0,class:"space-y-3"},Ya={class:"space-y-2"},Qa=["id","value"],Ja=["for"],Xa={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Za={class:"block text-xs text-gray-500 dark:text-gray-400"},el={class:"flex gap-3 pt-4"},tl=["disabled"],sl={key:0,class:"loading-spinner mr-2"},al={key:1,class:"fas fa-save mr-2"},ll={__name:"EditApiKeyModal",props:{apiKey:{type:Object,required:!0},accounts:{type:Object,default:()=>({claude:[],gemini:[]})}},emits:["close","success"],setup(A,{emit:Q}){const g=A,P=Q,G=Ge(),L=Oe(),_=D(!1),U=D(!1),T=D({claude:[],gemini:[],openai:[],bedrock:[],claudeGroups:[],geminiGroups:[],openaiGroups:[]}),B=D([]),S=D(""),$=D([]),E=N(()=>$.value.filter(j=>!a.tags.includes(j))),a=Te({name:"",tokenLimit:"",rateLimitWindow:"",rateLimitRequests:"",concurrencyLimit:"",dailyCostLimit:"",permissions:"all",claudeAccountId:"",geminiAccountId:"",openaiAccountId:"",bedrockAccountId:"",enableModelRestriction:!1,restrictedModels:[],modelInput:"",enableClientRestriction:!1,allowedClients:[],tags:[],isActive:!0}),l=()=>{a.modelInput&&!a.restrictedModels.includes(a.modelInput)&&(a.restrictedModels.push(a.modelInput),a.modelInput="")},X=j=>{a.restrictedModels.splice(j,1)},R=D(["claude-opus-4-20250514","claude-opus-4-1-20250805"]),C=N(()=>R.value.filter(j=>!a.restrictedModels.includes(j))),f=j=>{a.restrictedModels.includes(j)||a.restrictedModels.push(j)},k=()=>{if(S.value&&S.value.trim()){const j=S.value.trim();a.tags.includes(j)||a.tags.push(j),S.value=""}},u=j=>{a.tags.includes(j)||a.tags.push(j)},c=j=>{a.tags.splice(j,1)},b=async()=>{_.value=!0;try{const j={tokenLimit:a.tokenLimit!==""&&a.tokenLimit!==null?parseInt(a.tokenLimit):0,rateLimitWindow:a.rateLimitWindow!==""&&a.rateLimitWindow!==null?parseInt(a.rateLimitWindow):0,rateLimitRequests:a.rateLimitRequests!==""&&a.rateLimitRequests!==null?parseInt(a.rateLimitRequests):0,concurrencyLimit:a.concurrencyLimit!==""&&a.concurrencyLimit!==null?parseInt(a.concurrencyLimit):0,dailyCostLimit:a.dailyCostLimit!==""&&a.dailyCostLimit!==null?parseFloat(a.dailyCostLimit):0,permissions:a.permissions,tags:a.tags};a.claudeAccountId?a.claudeAccountId.startsWith("console:")?(j.claudeConsoleAccountId=a.claudeAccountId.substring(8),j.claudeAccountId=null):(a.claudeAccountId.startsWith("group:"),j.claudeAccountId=a.claudeAccountId,j.claudeConsoleAccountId=null):(j.claudeAccountId=null,j.claudeConsoleAccountId=null),a.geminiAccountId?j.geminiAccountId=a.geminiAccountId:j.geminiAccountId=null,a.openaiAccountId?j.openaiAccountId=a.openaiAccountId:j.openaiAccountId=null,a.bedrockAccountId?j.bedrockAccountId=a.bedrockAccountId:j.bedrockAccountId=null,j.enableModelRestriction=a.enableModelRestriction,j.restrictedModels=a.restrictedModels,j.enableClientRestriction=a.enableClientRestriction,j.allowedClients=a.allowedClients,j.isActive=a.isActive;const n=await W.put(`/admin/api-keys/${g.apiKey.id}`,j);n.success?(P("success"),P("close")):q(n.message||"更新失败","error")}catch{q("更新失败","error")}finally{_.value=!1}},ie=async()=>{var j,n;U.value=!0;try{const[p,I,w,h,o,x]=await Promise.all([W.get("/admin/claude-accounts"),W.get("/admin/claude-console-accounts"),W.get("/admin/gemini-accounts"),W.get("/admin/openai-accounts"),W.get("/admin/bedrock-accounts"),W.get("/admin/account-groups")]),Z=[];if(p.success&&((j=p.data)==null||j.forEach(H=>{Z.push({...H,platform:"claude-oauth",isDedicated:H.accountType==="dedicated"})})),I.success&&((n=I.data)==null||n.forEach(H=>{Z.push({...H,platform:"claude-console",isDedicated:H.accountType==="dedicated"})})),T.value.claude=Z,w.success&&(T.value.gemini=(w.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),h.success&&(T.value.openai=(h.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),o.success&&(T.value.bedrock=(o.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),x.success){const H=x.data||[];T.value.claudeGroups=H.filter(le=>le.platform==="claude"),T.value.geminiGroups=H.filter(le=>le.platform==="gemini"),T.value.openaiGroups=H.filter(le=>le.platform==="openai")}q("账号列表已刷新","success")}catch{q("刷新账号列表失败","error")}finally{U.value=!1}};return _e(async()=>{B.value=await G.loadSupportedClients(),$.value=await L.fetchTags(),g.accounts&&(T.value={claude:g.accounts.claude||[],gemini:g.accounts.gemini||[],openai:g.accounts.openai||[],bedrock:g.accounts.bedrock||[],claudeGroups:g.accounts.claudeGroups||[],geminiGroups:g.accounts.geminiGroups||[],openaiGroups:g.accounts.openaiGroups||[]}),a.name=g.apiKey.name,a.tokenLimit=g.apiKey.tokenLimit||"",a.rateLimitWindow=g.apiKey.rateLimitWindow||"",a.rateLimitRequests=g.apiKey.rateLimitRequests||"",a.concurrencyLimit=g.apiKey.concurrencyLimit||"",a.dailyCostLimit=g.apiKey.dailyCostLimit||"",a.permissions=g.apiKey.permissions||"all",g.apiKey.claudeConsoleAccountId?a.claudeAccountId=`console:${g.apiKey.claudeConsoleAccountId}`:a.claudeAccountId=g.apiKey.claudeAccountId||"",a.geminiAccountId=g.apiKey.geminiAccountId||"",a.openaiAccountId=g.apiKey.openaiAccountId||"",a.bedrockAccountId=g.apiKey.bedrockAccountId||"",a.restrictedModels=g.apiKey.restrictedModels||[],a.allowedClients=g.apiKey.allowedClients||[],a.tags=g.apiKey.tags||[],a.enableModelRestriction=g.apiKey.enableModelRestriction||!1,a.enableClientRestriction=g.apiKey.enableClientRestriction||!1,a.isActive=g.apiKey.isActive!==void 0?g.apiKey.isActive:!0}),(j,n)=>(r(),re(be,{to:"body"},[e("div",da,[e("div",ua,[e("div",ca,[n[26]||(n[26]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-edit text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 编辑 API Key ")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:n[0]||(n[0]=p=>j.$emit("close"))},n[25]||(n[25]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-4 sm:space-y-6",onSubmit:me(b,["prevent"])},[e("div",null,[n[27]||(n[27]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"},"名称",-1)),e("input",{class:"form-input w-full cursor-not-allowed bg-gray-100 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400",disabled:"",type:"text",value:a.name},null,8,ga),n[28]||(n[28]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400 sm:mt-2"},"名称不可修改",-1))]),e("div",null,[n[36]||(n[36]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"},"标签",-1)),e("div",ma,[a.tags.length>0?(r(),d("div",pa,[n[30]||(n[30]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 已选择的标签: ",-1)),e("div",xa,[(r(!0),d(Y,null,J(a.tags,(p,I)=>(r(),d("span",{key:"selected-"+I,class:"inline-flex items-center gap-1 rounded-full bg-blue-100 px-3 py-1 text-sm text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},[K(m(p)+" ",1),e("button",{class:"ml-1 hover:text-blue-900 dark:hover:text-blue-300",type:"button",onClick:w=>c(I)},n[29]||(n[29]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,ya)]))),128))])])):v("",!0),E.value.length>0?(r(),d("div",fa,[n[32]||(n[32]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 点击选择已有标签: ",-1)),e("div",ba,[(r(!0),d(Y,null,J(E.value,p=>(r(),d("button",{key:"available-"+p,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-blue-900/30 dark:hover:text-blue-400",type:"button",onClick:I=>u(p)},[n[31]||(n[31]=e("i",{class:"fas fa-tag text-xs text-gray-500 dark:text-gray-400"},null,-1)),K(" "+m(p),1)],8,va))),128))])])):v("",!0),e("div",null,[n[34]||(n[34]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 创建新标签: ",-1)),e("div",ka,[M(e("input",{"onUpdate:modelValue":n[1]||(n[1]=p=>S.value=p),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入新标签名称",type:"text",onKeypress:Le(me(k,["prevent"]),["enter"])},null,40,wa),[[ee,S.value]]),e("button",{class:"rounded-lg bg-green-500 px-4 py-2 text-white transition-colors hover:bg-green-600",type:"button",onClick:k},n[33]||(n[33]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),n[35]||(n[35]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 用于标记不同团队或用途,方便筛选管理 ",-1))])]),e("div",ha,[n[44]||(n[44]=e("div",{class:"mb-2 flex items-center gap-2"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded bg-blue-500"},[e("i",{class:"fas fa-tachometer-alt text-xs text-white"})]),e("h4",{class:"text-sm font-semibold text-gray-800 dark:text-gray-200"}," 速率限制设置 (可选) ")],-1)),e("div",$a,[e("div",Aa,[e("div",null,[n[37]||(n[37]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"时间窗口 (分钟)",-1)),M(e("input",{"onUpdate:modelValue":n[2]||(n[2]=p=>a.rateLimitWindow=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,a.rateLimitWindow]]),n[38]||(n[38]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"时间段单位",-1))]),e("div",null,[n[39]||(n[39]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"请求次数限制",-1)),M(e("input",{"onUpdate:modelValue":n[3]||(n[3]=p=>a.rateLimitRequests=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,a.rateLimitRequests]]),n[40]||(n[40]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大请求",-1))]),e("div",null,[n[41]||(n[41]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"Token 限制",-1)),M(e("input",{"onUpdate:modelValue":n[4]||(n[4]=p=>a.tokenLimit=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"无限制",type:"number"},null,512),[[ee,a.tokenLimit]]),n[42]||(n[42]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"}," 窗口内最大Token ",-1))])]),n[43]||(n[43]=e("div",{class:"rounded-lg bg-blue-100 p-2 dark:bg-blue-900/30"},[e("h5",{class:"mb-1 text-xs font-semibold text-blue-800 dark:text-blue-400"}," 💡 使用示例 "),e("div",{class:"space-y-0.5 text-xs text-blue-700 dark:text-blue-300"},[e("div",null,[e("strong",null,"示例1:"),K(" 时间窗口=60,请求次数=1000 → 每60分钟最多1000次请求 ")]),e("div",null,[e("strong",null,"示例2:"),K(" 时间窗口=1,Token=10000 → 每分钟最多10,000个Token ")]),e("div",null,[e("strong",null,"示例3:"),K(" 窗口=30,请求=50,Token=100000 → 每30分钟50次请求且不超10万Token ")])])],-1))])]),e("div",null,[n[46]||(n[46]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日费用限制 (美元)",-1)),e("div",Ca,[e("div",Ia,[e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[5]||(n[5]=p=>a.dailyCostLimit="50")}," $50 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[6]||(n[6]=p=>a.dailyCostLimit="100")}," $100 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[7]||(n[7]=p=>a.dailyCostLimit="200")}," $200 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[8]||(n[8]=p=>a.dailyCostLimit="")}," 自定义 ")]),M(e("input",{"onUpdate:modelValue":n[9]||(n[9]=p=>a.dailyCostLimit=p),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[ee,a.dailyCostLimit]]),n[45]||(n[45]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 每日的费用限制,超过限制将拒绝请求,0 或留空表示无限制 ",-1))])]),e("div",null,[n[47]||(n[47]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"并发限制",-1)),M(e("input",{"onUpdate:modelValue":n[10]||(n[10]=p=>a.concurrencyLimit=p),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",type:"number"},null,512),[[ee,a.concurrencyLimit]]),n[48]||(n[48]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 可同时处理的最大请求数 ",-1))]),e("div",null,[e("div",Ka,[M(e("input",{id:"editIsActive","onUpdate:modelValue":n[11]||(n[11]=p=>a.isActive=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.isActive]]),n[49]||(n[49]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editIsActive"}," 激活账号 ",-1))]),n[50]||(n[50]=e("p",{class:"mb-4 text-xs text-gray-500 dark:text-gray-400"}," 取消勾选将禁用此 API Key,暂停所有请求,客户端返回 401 错误 ",-1))]),e("div",null,[n[55]||(n[55]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"服务权限",-1)),e("div",Da,[e("label",La,[M(e("input",{"onUpdate:modelValue":n[12]||(n[12]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"all"},null,512),[[ae,a.permissions]]),n[51]||(n[51]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"全部服务",-1))]),e("label",_a,[M(e("input",{"onUpdate:modelValue":n[13]||(n[13]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[ae,a.permissions]]),n[52]||(n[52]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Claude",-1))]),e("label",Ta,[M(e("input",{"onUpdate:modelValue":n[14]||(n[14]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[ae,a.permissions]]),n[53]||(n[53]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Gemini",-1))]),e("label",Ma,[M(e("input",{"onUpdate:modelValue":n[15]||(n[15]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[ae,a.permissions]]),n[54]||(n[54]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 OpenAI",-1))])]),n[56]||(n[56]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 控制此 API Key 可以访问哪些服务 ",-1))]),e("div",null,[e("div",Sa,[n[57]||(n[57]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"专属账号绑定",-1)),e("button",{class:"flex items-center gap-1 text-sm text-blue-600 transition-colors hover:text-blue-800 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-400 dark:hover:text-blue-300",disabled:U.value,title:"刷新账号列表",type:"button",onClick:ie},[e("i",{class:z(["fas",U.value?"fa-spinner fa-spin":"fa-sync-alt","text-xs"])},null,2),e("span",null,m(U.value?"刷新中...":"刷新账号"),1)],8,Ra)]),e("div",Va,[e("div",null,[n[58]||(n[58]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Claude 专属账号",-1)),ne(we,{modelValue:a.claudeAccountId,"onUpdate:modelValue":n[16]||(n[16]=p=>a.claudeAccountId=p),accounts:T.value.claude,"default-option-text":"使用共享账号池",disabled:a.permissions==="gemini"||a.permissions==="openai",groups:T.value.claudeGroups,placeholder:"请选择Claude账号",platform:"claude"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[59]||(n[59]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Gemini 专属账号",-1)),ne(we,{modelValue:a.geminiAccountId,"onUpdate:modelValue":n[17]||(n[17]=p=>a.geminiAccountId=p),accounts:T.value.gemini,"default-option-text":"使用共享账号池",disabled:a.permissions==="claude"||a.permissions==="openai",groups:T.value.geminiGroups,placeholder:"请选择Gemini账号",platform:"gemini"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[60]||(n[60]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"OpenAI 专属账号",-1)),ne(we,{modelValue:a.openaiAccountId,"onUpdate:modelValue":n[18]||(n[18]=p=>a.openaiAccountId=p),accounts:T.value.openai,"default-option-text":"使用共享账号池",disabled:a.permissions==="claude"||a.permissions==="gemini",groups:T.value.openaiGroups,placeholder:"请选择OpenAI账号",platform:"openai"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[61]||(n[61]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Bedrock 专属账号",-1)),ne(we,{modelValue:a.bedrockAccountId,"onUpdate:modelValue":n[19]||(n[19]=p=>a.bedrockAccountId=p),accounts:T.value.bedrock,"default-option-text":"使用共享账号池",disabled:a.permissions==="gemini"||a.permissions==="openai",groups:[],placeholder:"请选择Bedrock账号",platform:"bedrock"},null,8,["modelValue","accounts","disabled"])])]),n[62]||(n[62]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 修改绑定账号将影响此API Key的请求路由 ",-1))]),e("div",null,[e("div",Pa,[M(e("input",{id:"editEnableModelRestriction","onUpdate:modelValue":n[20]||(n[20]=p=>a.enableModelRestriction=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.enableModelRestriction]]),n[63]||(n[63]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editEnableModelRestriction"}," 启用模型限制 ",-1))]),a.enableModelRestriction?(r(),d("div",Ea,[e("div",null,[n[66]||(n[66]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600 dark:text-gray-400"},"限制的模型列表",-1)),e("div",ja,[(r(!0),d(Y,null,J(a.restrictedModels,(p,I)=>(r(),d("span",{key:I,class:"inline-flex items-center rounded-full bg-red-100 px-3 py-1 text-sm text-red-800 dark:bg-red-900/30 dark:text-red-400"},[K(m(p)+" ",1),e("button",{class:"ml-2 text-red-600 hover:text-red-800 dark:text-red-400 dark:hover:text-red-300",type:"button",onClick:w=>X(I)},n[64]||(n[64]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,Ua)]))),128)),a.restrictedModels.length===0?(r(),d("span",Ga," 暂无限制的模型 ")):v("",!0)]),e("div",Oa,[e("div",qa,[(r(!0),d(Y,null,J(C.value,p=>(r(),d("button",{key:p,class:"flex-shrink-0 rounded-lg bg-gray-100 px-3 py-1 text-xs text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600 sm:text-sm",type:"button",onClick:I=>f(p)},m(p),9,Wa))),128)),C.value.length===0?(r(),d("span",Ba," 所有常用模型已在限制列表中 ")):v("",!0)]),e("div",Fa,[M(e("input",{"onUpdate:modelValue":n[21]||(n[21]=p=>a.modelInput=p),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入模型名称,按回车添加",type:"text",onKeydown:Le(me(l,["prevent"]),["enter"])},null,40,za),[[ee,a.modelInput]]),e("button",{class:"rounded-lg bg-red-500 px-4 py-2 text-white transition-colors hover:bg-red-600",type:"button",onClick:l},n[65]||(n[65]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),n[67]||(n[67]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此API Key无法访问的模型,例如:claude-opus-4-20250514 ",-1))])])):v("",!0)]),e("div",null,[e("div",Ha,[M(e("input",{id:"editEnableClientRestriction","onUpdate:modelValue":n[22]||(n[22]=p=>a.enableClientRestriction=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.enableClientRestriction]]),n[68]||(n[68]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editEnableClientRestriction"}," 启用客户端限制 ",-1))]),a.enableClientRestriction?(r(),d("div",Na,[e("div",null,[n[69]||(n[69]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600 dark:text-gray-400"},"允许的客户端",-1)),n[70]||(n[70]=e("p",{class:"mb-3 text-xs text-gray-500 dark:text-gray-400"}," 勾选允许使用此API Key的客户端 ",-1)),e("div",Ya,[(r(!0),d(Y,null,J(B.value,p=>(r(),d("div",{key:p.id,class:"flex items-start"},[M(e("input",{id:`edit_client_${p.id}`,"onUpdate:modelValue":n[23]||(n[23]=I=>a.allowedClients=I),class:"mt-0.5 h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox",value:p.id},null,8,Qa),[[ye,a.allowedClients]]),e("label",{class:"ml-2 flex-1 cursor-pointer",for:`edit_client_${p.id}`},[e("span",Xa,m(p.name),1),e("span",Za,m(p.description),1)],8,Ja)]))),128))])])])):v("",!0)]),e("div",el,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[24]||(n[24]=p=>j.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:_.value,type:"submit"},[_.value?(r(),d("div",sl)):(r(),d("i",al)),K(" "+m(_.value?"保存中...":"保存修改"),1)],8,tl)])],32)])])]))}},rl=fe(ll,[["__scopeId","data-v-709438db"]]),ol={class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},nl={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-md flex-col p-8"},il={class:"mb-6 flex items-center justify-between"},dl={class:"modal-scroll-content custom-scrollbar flex-1 space-y-6"},ul={class:"rounded-lg border border-blue-200 bg-blue-50 p-4"},cl={class:"flex items-start gap-3"},gl={class:"text-sm text-gray-700"},ml={class:"mt-1 text-xs text-gray-600"},pl={key:0,class:"mt-3"},xl=["min"],yl={key:1,class:"mt-2 text-xs text-gray-500"},fl={class:"flex gap-3 pt-4"},bl=["disabled"],vl={key:0,class:"loading-spinner mr-2"},kl={key:1,class:"fas fa-clock mr-2"},wl={__name:"RenewApiKeyModal",props:{apiKey:{type:Object,required:!0}},emits:["close","success"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=Te({renewDuration:"30d",customExpireDate:"",newExpiresAt:null}),_=N(()=>{const $=new Date;return g.apiKey.expiresAt&&new Date(g.apiKey.expiresAt)>$?new Date(g.apiKey.expiresAt).toISOString().slice(0,16):($.setMinutes($.getMinutes()+1),$.toISOString().slice(0,16))}),U=$=>new Date($).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),T=()=>{if(!L.renewDuration){L.newExpiresAt=null;return}if(L.renewDuration==="permanent"){L.newExpiresAt=null;return}if(L.renewDuration==="custom")return;const $=g.apiKey.expiresAt&&new Date(g.apiKey.expiresAt)>new Date?new Date(g.apiKey.expiresAt):new Date,a=L.renewDuration.match(/(\d+)([dhmy])/);if(a){const[,l,X]=a,R=parseInt(l);switch(X){case"d":$.setDate($.getDate()+R);break;case"h":$.setHours($.getHours()+R);break;case"m":$.setMonth($.getMonth()+R);break;case"y":$.setFullYear($.getFullYear()+R);break}L.newExpiresAt=$.toISOString()}},B=()=>{L.customExpireDate&&(L.newExpiresAt=new Date(L.customExpireDate).toISOString())},S=async()=>{G.value=!0;try{const $={expiresAt:L.renewDuration==="permanent"?null:L.newExpiresAt},E=await W.put(`/admin/api-keys/${g.apiKey.id}`,$);E.success?(q("API Key 续期成功","success"),P("success"),P("close")):q(E.message||"续期失败","error")}catch{q("续期失败","error")}finally{G.value=!1}};return T(),($,E)=>(r(),re(be,{to:"body"},[e("div",ol,[e("div",nl,[e("div",il,[E[5]||(E[5]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-clock text-white"})]),e("h3",{class:"text-xl font-bold text-gray-900"},"续期 API Key")],-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:E[0]||(E[0]=a=>$.$emit("close"))},E[4]||(E[4]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("div",dl,[e("div",ul,[e("div",cl,[E[7]||(E[7]=e("div",{class:"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-info text-sm text-white"})],-1)),e("div",null,[E[6]||(E[6]=e("h4",{class:"mb-1 font-semibold text-gray-800"},"API Key 信息",-1)),e("p",gl,m(A.apiKey.name),1),e("p",ml," 当前过期时间:"+m(A.apiKey.expiresAt?U(A.apiKey.expiresAt):"永不过期"),1)])])]),e("div",null,[E[9]||(E[9]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"续期时长",-1)),M(e("select",{"onUpdate:modelValue":E[1]||(E[1]=a=>L.renewDuration=a),class:"form-input w-full",onChange:T},E[8]||(E[8]=[e("option",{value:"7d"},"延长 7 天",-1),e("option",{value:"30d"},"延长 30 天",-1),e("option",{value:"90d"},"延长 90 天",-1),e("option",{value:"180d"},"延长 180 天",-1),e("option",{value:"365d"},"延长 365 天",-1),e("option",{value:"custom"},"自定义日期",-1),e("option",{value:"permanent"},"设为永不过期",-1)]),544),[[$e,L.renewDuration]]),L.renewDuration==="custom"?(r(),d("div",pl,[M(e("input",{"onUpdate:modelValue":E[2]||(E[2]=a=>L.customExpireDate=a),class:"form-input w-full",min:_.value,type:"datetime-local",onChange:B},null,40,xl),[[ee,L.customExpireDate]])])):v("",!0),L.newExpiresAt?(r(),d("p",yl," 新的过期时间:"+m(U(L.newExpiresAt)),1)):v("",!0)])]),e("div",fl,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200",type:"button",onClick:E[3]||(E[3]=a=>$.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:G.value||!L.renewDuration,type:"button",onClick:S},[G.value?(r(),d("div",vl)):(r(),d("i",kl)),K(" "+m(G.value?"续期中...":"确认续期"),1)],8,bl)])])])]))}},hl=fe(wl,[["__scopeId","data-v-2fba52a3"]]),$l={class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},Al={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-lg overflow-y-auto p-8"},Cl={class:"mb-6 space-y-4"},Il={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-600 dark:bg-gray-800"},Kl={class:"font-medium text-gray-900 dark:text-gray-100"},Dl={key:0},Ll={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-600 dark:bg-gray-800"},_l={class:"text-gray-700 dark:text-gray-300"},Tl={class:"relative"},Ml={class:"flex min-h-[60px] items-center break-all rounded-lg border border-gray-700 bg-gray-900 p-4 pr-14 font-mono text-sm text-white dark:border-gray-600 dark:bg-gray-900"},Sl={class:"absolute right-3 top-3"},Rl=["title"],Vl={__name:"NewApiKeyModal",props:{apiKey:{type:Object,required:!0}},emits:["close"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=()=>{G.value=!G.value},_=()=>{const S=g.apiKey.apiKey||g.apiKey.key||"";return S?G.value||S.length<=12?S:S.substring(0,8)+"●".repeat(Math.max(0,S.length-12))+S.substring(S.length-4):""},U=async()=>{const S=g.apiKey.apiKey||g.apiKey.key||"";if(!S){q("API Key 不存在","error");return}try{await navigator.clipboard.writeText(S),q("API Key 已复制到剪贴板","success")}catch($){console.error("Failed to copy:",$);const E=document.createElement("textarea");E.value=S,document.body.appendChild(E),E.select();try{document.execCommand("copy"),q("API Key 已复制到剪贴板","success")}catch{q("复制失败,请手动复制","error")}finally{document.body.removeChild(E)}}},T=async()=>{window.showConfirm?await window.showConfirm("关闭提醒",`关闭后将无法再次查看完整的API Key,请确保已经妥善保存。 +import{E as Kt}from"./element-plus-Bq6mBxnk.js";import{aR as it,r as D,c as N,q as _e,V as Dt,o as he,x as d,y as r,z as e,I as re,C as z,P as m,R as ne,J as Lt,L as v,B as De,K as M,aq as ee,Q as Y,ac as J,T as _t,a5 as be,D as Tt,_ as Te,Y as me,an as ae,O as K,aa as Le,aW as $e,al as ye}from"./vue-vendor-Ig-GgGwA.js";import{s as q}from"./toast-BvwA7Mwb.js";import{b as W,_ as fe}from"./index-CY9cPBXr.js";import{_ as Ue}from"./WindowCountdown-DSqUCtdk.js";import{C as nt}from"./CustomDropdown-C7e2WJat.js";import"./vendor-BDiMbLwQ.js";const Ge=it("clients",{state:()=>({supportedClients:[],loading:!1,error:null}),actions:{async loadSupportedClients(){if(this.supportedClients.length>0)return this.supportedClients;this.loading=!0,this.error=null;try{const A=await W.get("/admin/supported-clients");return A.success?this.supportedClients=A.data||[]:(this.error=A.message||"加载支持的客户端失败",console.error("Failed to load supported clients:",this.error)),this.supportedClients}catch(A){return this.error=A.message||"加载支持的客户端失败",console.error("Error loading supported clients:",A),[]}finally{this.loading=!1}}}}),Oe=it("apiKeys",()=>{const A=D([]),Q=D(!1),g=D(null),P=D("all"),G=D(""),L=D("asc"),_=async()=>{Q.value=!0,g.value=null;try{const R=await W.get("/admin/api-keys");if(R.success)A.value=R.data||[];else throw new Error(R.message||"获取API Keys失败")}catch(R){throw g.value=R.message,R}finally{Q.value=!1}};return{apiKeys:A,loading:Q,error:g,statsTimeRange:P,sortBy:G,sortOrder:L,fetchApiKeys:_,createApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.post("/admin/api-keys",R);if(C.success)return await _(),C.data;throw new Error(C.message||"创建API Key失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},updateApiKey:async(R,C)=>{Q.value=!0,g.value=null;try{const f=await W.put(`/admin/api-keys/${R}`,C);if(f.success)return await _(),f;throw new Error(f.message||"更新API Key失败")}catch(f){throw g.value=f.message,f}finally{Q.value=!1}},toggleApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.put(`/admin/api-keys/${R}/toggle`);if(C.success)return await _(),C;throw new Error(C.message||"切换状态失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},renewApiKey:async(R,C)=>{Q.value=!0,g.value=null;try{const f=await W.put(`/admin/api-keys/${R}`,C);if(f.success)return await _(),f;throw new Error(f.message||"续期失败")}catch(f){throw g.value=f.message,f}finally{Q.value=!1}},deleteApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.delete(`/admin/api-keys/${R}`);if(C.success)return await _(),C;throw new Error(C.message||"删除失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},fetchApiKeyStats:async(R,C="all")=>{try{const f=await W.get(`/admin/api-keys/${R}/stats`,{params:{timeRange:C}});if(f.success)return f.stats;throw new Error(f.message||"获取统计失败")}catch(f){return console.error("获取API Key统计失败:",f),null}},fetchTags:async()=>{try{const R=await W.get("/admin/api-keys/tags");if(R.success)return R.data||[];throw new Error(R.message||"获取标签失败")}catch(R){return console.error("获取标签失败:",R),[]}},sortApiKeys:R=>{G.value===R?L.value=L.value==="asc"?"desc":"asc":(G.value=R,L.value="asc")},reset:()=>{A.value=[],Q.value=!1,g.value=null,P.value="all",G.value="",L.value="asc"}}}),Mt={class:"flex-shrink-0 border-b border-gray-200 p-3 dark:border-gray-600"},St={class:"relative"},Rt={class:"custom-scrollbar flex-1 overflow-y-auto"},Vt={class:"text-gray-700 dark:text-gray-300"},Pt={key:0},Et=["onClick"],jt={class:"flex items-center justify-between"},Ut={class:"text-gray-700 dark:text-gray-300"},Gt={class:"text-xs text-gray-500 dark:text-gray-400"},Ot={key:1},qt={class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"},Wt=["onClick"],Bt={class:"flex items-center justify-between"},Ft={class:"text-gray-700 dark:text-gray-300"},zt={class:"text-xs text-gray-400 dark:text-gray-500"},Ht={key:2},Nt=["onClick"],Yt={class:"flex items-center justify-between"},Qt={class:"text-gray-700 dark:text-gray-300"},Jt={class:"text-xs text-gray-400 dark:text-gray-500"},Xt={key:3,class:"px-4 py-8 text-center text-gray-500 dark:text-gray-400"},Zt={__name:"AccountSelector",props:{modelValue:{type:String,default:""},platform:{type:String,required:!0,validator:A=>["claude","gemini"].includes(A)},accounts:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},placeholder:{type:String,default:"请选择账号"},defaultOptionText:{type:String,default:"使用共享账号池"}},emits:["update:modelValue"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=D(""),_=D(null),U=D(null),T=D({}),B=D(null),S=D(""),$=N(()=>{if(!g.modelValue)return g.defaultOptionText;if(g.modelValue.startsWith("group:")){const I=g.modelValue.substring(6),w=g.groups.find(h=>h.id===I);return w?`${w.name} (${w.memberCount||0} 个成员)`:""}if(g.modelValue.startsWith("console:")){const I=g.modelValue.substring(8),w=g.accounts.find(h=>h.id===I&&h.platform==="claude-console");return w?`${w.name} (${E(w)})`:""}const p=g.accounts.find(I=>I.id===g.modelValue);return p?`${p.name} (${E(p)})`:""}),E=p=>{if(!p)return"未知";if(p.isActive===!1)switch(p.status){case"unauthorized":return"未授权";case"error":return"Token错误";case"created":return"待验证";case"rate_limited":return"限流中";default:return"异常"}return"正常"},a=N(()=>[...g.accounts].sort((p,I)=>{const w=new Date(p.createdAt||0);return new Date(I.createdAt||0)-w})),l=N(()=>{if(!L.value)return g.groups;const p=L.value.toLowerCase();return g.groups.filter(I=>I.name.toLowerCase().includes(p))}),X=N(()=>{let p=a.value.filter(I=>I.accountType==="dedicated"&&(g.platform==="claude"?I.platform==="claude-oauth":I.platform!=="claude-console"));if(L.value){const I=L.value.toLowerCase();p=p.filter(w=>w.name.toLowerCase().includes(I))}return p}),R=N(()=>{if(g.platform!=="claude")return[];let p=a.value.filter(I=>I.accountType==="dedicated"&&I.platform==="claude-console");if(L.value){const I=L.value.toLowerCase();p=p.filter(w=>w.name.toLowerCase().includes(I))}return p}),C=N(()=>l.value.length>0||X.value.length>0||R.value.length>0),f=p=>{if(!p)return"";const I=new Date(p),h=(new Date-I)/(1e3*60*60);return h<24?"今天创建":h<48?"昨天创建":h<168?`${Math.floor(h/24)} 天前`:I.toLocaleDateString("zh-CN",{month:"2-digit",day:"2-digit"})},k=()=>{if(!G.value||!U.value||!B.value)return;const p=B.value;if(!p)return;const I=p.getBoundingClientRect(),w=window.innerHeight,h=window.innerWidth,o=w-I.bottom,x=I.top,Z=8,H=o-Z,le=x-Z;let ce=!1,pe=H;S.value==="above"&&le>=150?(ce=!0,pe=le):S.value==="below"&&H>=150?(ce=!1,pe=H):le>H&&H<200&&(ce=!0,pe=le),S.value=ce?"above":"below";let ue=I.left;const te=I.width;ue+te>h-Z&&(ue=h-te-Z),ue{if(!G.value&&B.value){const p=B.value.getBoundingClientRect(),w=window.innerHeight-p.bottom,h=8;T.value={position:"fixed",left:`${p.left}px`,width:`${p.width}px`,maxHeight:`${Math.min(w-h,400)}px`,top:`${p.bottom}px`}}G.value=!G.value,G.value&&Tt(()=>{var p;k(),(p=_.value)==null||p.focus()})},c=p=>{P("update:modelValue",p||""),G.value=!1,L.value=""},b=()=>{},ie=()=>{var p;L.value="",(p=_.value)==null||p.focus()},j=p=>{var I,w;!((I=B.value)!=null&&I.contains(p.target))&&!((w=U.value)!=null&&w.contains(p.target))&&(G.value=!1)},n=()=>{G.value&&k()};return _e(()=>{document.addEventListener("click",j),window.addEventListener("scroll",n,!0),window.addEventListener("resize",k)}),Dt(()=>{document.removeEventListener("click",j),window.removeEventListener("scroll",n,!0),window.removeEventListener("resize",k)}),he(G,p=>{p||(L.value="",S.value="")}),(p,I)=>(r(),d("div",{ref_key:"triggerRef",ref:B,class:"relative"},[e("div",{class:z(["form-input flex w-full cursor-pointer items-center justify-between dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"opacity-50":A.disabled}]),onClick:I[0]||(I[0]=w=>!A.disabled&&u())},[e("span",{class:z(A.modelValue?"text-gray-900 dark:text-gray-200":"text-gray-500 dark:text-gray-400")},m($.value),3),e("i",{class:z(["fas fa-chevron-down text-gray-400 transition-transform duration-200 dark:text-gray-500",{"rotate-180":G.value}])},null,2)],2),(r(),re(be,{to:"body"},[ne(_t,{"enter-active-class":"transition ease-out duration-100","enter-from-class":"transform opacity-0 scale-95","enter-to-class":"transform opacity-100 scale-100","leave-active-class":"transition ease-in duration-75","leave-from-class":"transform opacity-100 scale-100","leave-to-class":"transform opacity-0 scale-95"},{default:Lt(()=>[G.value?(r(),d("div",{key:0,ref_key:"dropdownRef",ref:U,class:"absolute z-50 flex flex-col rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-600 dark:bg-gray-800",style:De(T.value)},[e("div",Mt,[e("div",St,[M(e("input",{ref_key:"searchInput",ref:_,"onUpdate:modelValue":I[1]||(I[1]=w=>L.value=w),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"搜索账号名称...",style:{"padding-left":"40px","padding-right":"36px"},type:"text",onInput:b},null,544),[[ee,L.value]]),I[4]||(I[4]=e("i",{class:"fas fa-search pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm text-gray-400 dark:text-gray-500"},null,-1)),L.value?(r(),d("button",{key:0,class:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:ie},I[3]||(I[3]=[e("i",{class:"fas fa-times text-sm"},null,-1)]))):v("",!0)])]),e("div",Rt,[e("div",{class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":!A.modelValue}]),onClick:I[2]||(I[2]=w=>c(null))},[e("span",Vt,m(A.defaultOptionText),1)],2),l.value.length>0?(r(),d("div",Pt,[I[5]||(I[5]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," 调度分组 ",-1)),(r(!0),d(Y,null,J(l.value,w=>(r(),d("div",{key:`group:${w.id}`,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===`group:${w.id}`}]),onClick:h=>c(`group:${w.id}`)},[e("div",jt,[e("span",Ut,m(w.name),1),e("span",Gt,m(w.memberCount||0)+" 个成员",1)])],10,Et))),128))])):v("",!0),X.value.length>0?(r(),d("div",Ot,[e("div",qt,m(A.platform==="claude"?"Claude OAuth 专属账号":"OAuth 专属账号"),1),(r(!0),d(Y,null,J(X.value,w=>(r(),d("div",{key:w.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===w.id}]),onClick:h=>c(w.id)},[e("div",Bt,[e("div",null,[e("span",Ft,m(w.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",w.isActive?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":w.status==="unauthorized"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},m(E(w)),3)]),e("span",zt,m(f(w.createdAt)),1)])],10,Wt))),128))])):v("",!0),A.platform==="claude"&&R.value.length>0?(r(),d("div",Ht,[I[6]||(I[6]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," Claude Console 专属账号 ",-1)),(r(!0),d(Y,null,J(R.value,w=>(r(),d("div",{key:w.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===`console:${w.id}`}]),onClick:h=>c(`console:${w.id}`)},[e("div",Yt,[e("div",null,[e("span",Qt,m(w.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",w.isActive?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":w.status==="unauthorized"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},m(E(w)),3)]),e("span",Jt,m(f(w.createdAt)),1)])],10,Nt))),128))])):v("",!0),L.value&&!C.value?(r(),d("div",Xt,I[7]||(I[7]=[e("i",{class:"fas fa-search mb-2 text-2xl"},null,-1),e("p",{class:"text-sm"},"没有找到匹配的账号",-1)]))):v("",!0)])],4)):v("",!0)]),_:1})]))],512))}},we=fe(Zt,[["__scopeId","data-v-7e9dcf0d"]]),es={class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},ts={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-4xl flex-col p-4 sm:p-6"},ss={class:"mb-4 flex items-center justify-between"},as={class:"rounded-lg border border-blue-200 bg-gradient-to-r from-blue-50 to-indigo-50 p-3 dark:border-blue-700 dark:from-blue-900/20 dark:to-indigo-900/20 sm:p-4"},ls={class:"flex items-center gap-3 sm:gap-4"},rs={class:"flex cursor-pointer items-center"},os={class:"flex cursor-pointer items-center"},ns={key:0,class:"mt-3"},is={class:"flex items-center gap-4"},ds={class:"flex-1"},us={class:"flex items-center gap-2"},cs={class:"mt-2 flex items-start text-xs text-amber-600 dark:text-amber-400"},gs=["placeholder"],ms={key:0,class:"mt-1 text-xs text-red-500 dark:text-red-400"},ps={class:"space-y-4"},xs={key:0},ys={class:"flex flex-wrap gap-2"},fs=["onClick"],bs={key:1},vs={class:"flex flex-wrap gap-2"},ks=["onClick"],ws={class:"flex gap-2"},hs=["onKeypress"],$s={class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/20"},As={class:"space-y-2"},Cs={class:"grid grid-cols-1 gap-2 lg:grid-cols-3"},Is={class:"space-y-2"},Ks={class:"flex gap-2"},Ds={key:0,class:"mt-3"},Ls=["min"],_s={key:1,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Ts={class:"flex gap-4"},Ms={class:"flex cursor-pointer items-center"},Ss={class:"flex cursor-pointer items-center"},Rs={class:"flex cursor-pointer items-center"},Vs={class:"flex cursor-pointer items-center"},Ps={class:"mb-2 flex items-center justify-between"},Es=["disabled"],js={class:"grid grid-cols-1 gap-3"},Us={class:"mb-2 flex items-center"},Gs={key:0,class:"space-y-3"},Os={class:"mb-3 flex min-h-[32px] flex-wrap gap-2 rounded-lg border border-gray-200 bg-gray-50 p-2"},qs=["onClick"],Ws={key:0,class:"text-sm text-gray-400"},Bs={class:"space-y-3"},Fs={class:"flex flex-wrap gap-2"},zs=["onClick"],Hs={key:0,class:"text-sm italic text-gray-400"},Ns={class:"flex gap-2"},Ys=["onKeydown"],Qs={class:"mb-2 flex items-center"},Js={key:0,class:"rounded-lg border border-green-200 bg-green-50 p-3 dark:border-green-700 dark:bg-green-900/20"},Xs={class:"space-y-1"},Zs=["id","value"],ea=["for"],ta={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},sa={class:"block text-xs text-gray-500 dark:text-gray-400"},aa={class:"flex gap-3 pt-2"},la=["disabled"],ra={key:0,class:"loading-spinner mr-2"},oa={key:1,class:"fas fa-plus mr-2"},na={__name:"CreateApiKeyModal",props:{accounts:{type:Object,default:()=>({claude:[],gemini:[]})}},emits:["close","success","batch-success"],setup(A,{emit:Q}){const g=A,P=Q,G=Ge(),L=Oe(),_=D(!1),U=D(!1),T=D({claude:[],gemini:[],openai:[],bedrock:[],claudeGroups:[],geminiGroups:[],openaiGroups:[]}),B=D({name:""}),S=D(""),$=D([]),E=N(()=>$.value.filter(h=>!l.tags.includes(h))),a=D([]),l=Te({createType:"single",batchCount:10,name:"",description:"",tokenLimit:"",rateLimitWindow:"",rateLimitRequests:"",concurrencyLimit:"",dailyCostLimit:"",expireDuration:"",customExpireDate:"",expiresAt:null,permissions:"all",claudeAccountId:"",geminiAccountId:"",openaiAccountId:"",bedrockAccountId:"",enableModelRestriction:!1,restrictedModels:[],modelInput:"",enableClientRestriction:!1,allowedClients:[],tags:[]});_e(async()=>{a.value=await G.loadSupportedClients(),$.value=await L.fetchTags(),g.accounts&&(T.value={claude:g.accounts.claude||[],gemini:g.accounts.gemini||[],openai:g.accounts.openai||[],bedrock:g.accounts.bedrock||[],claudeGroups:g.accounts.claudeGroups||[],geminiGroups:g.accounts.geminiGroups||[],openaiGroups:g.accounts.openaiGroups||[]})});const X=async()=>{var h,o;U.value=!0;try{const[x,Z,H,le,ce,pe]=await Promise.all([W.get("/admin/claude-accounts"),W.get("/admin/claude-console-accounts"),W.get("/admin/gemini-accounts"),W.get("/admin/openai-accounts"),W.get("/admin/bedrock-accounts"),W.get("/admin/account-groups")]),ue=[];if(x.success&&((h=x.data)==null||h.forEach(te=>{ue.push({...te,platform:"claude-oauth",isDedicated:te.accountType==="dedicated"})})),Z.success&&((o=Z.data)==null||o.forEach(te=>{ue.push({...te,platform:"claude-console",isDedicated:te.accountType==="dedicated"})})),T.value.claude=ue,H.success&&(T.value.gemini=(H.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),le.success&&(T.value.openai=(le.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),ce.success&&(T.value.bedrock=(ce.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),pe.success){const te=pe.data||[];T.value.claudeGroups=te.filter(de=>de.platform==="claude"),T.value.geminiGroups=te.filter(de=>de.platform==="gemini"),T.value.openaiGroups=te.filter(de=>de.platform==="openai")}q("账号列表已刷新","success")}catch{q("刷新账号列表失败","error")}finally{U.value=!1}},R=N(()=>{const h=new Date;return h.setMinutes(h.getMinutes()+1),h.toISOString().slice(0,16)}),C=()=>{if(!l.expireDuration){l.expiresAt=null;return}if(l.expireDuration==="custom")return;const h=new Date,x=l.expireDuration.match(/(\d+)([dhmy])/);if(x){const[,Z,H]=x,le=parseInt(Z);switch(H){case"d":h.setDate(h.getDate()+le);break;case"h":h.setHours(h.getHours()+le);break;case"m":h.setMonth(h.getMonth()+le);break;case"y":h.setFullYear(h.getFullYear()+le);break}l.expiresAt=h.toISOString()}},f=()=>{l.customExpireDate&&(l.expiresAt=new Date(l.customExpireDate).toISOString())},k=h=>new Date(h).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),u=()=>{l.modelInput&&!l.restrictedModels.includes(l.modelInput)&&(l.restrictedModels.push(l.modelInput),l.modelInput="")},c=h=>{l.restrictedModels.splice(h,1)},b=D(["claude-opus-4-20250514","claude-opus-4-1-20250805"]),ie=N(()=>b.value.filter(h=>!l.restrictedModels.includes(h))),j=h=>{l.restrictedModels.includes(h)||l.restrictedModels.push(h)},n=()=>{if(S.value&&S.value.trim()){const h=S.value.trim();l.tags.includes(h)||l.tags.push(h),S.value=""}},p=h=>{l.tags.includes(h)||l.tags.push(h)},I=h=>{l.tags.splice(h,1)},w=async()=>{if(B.value.name="",!l.name||!l.name.trim()){B.value.name="请输入API Key名称";return}if(l.createType==="batch"&&(!l.batchCount||l.batchCount<2||l.batchCount>500)){q("批量创建数量必须在 2-500 之间","error");return}_.value=!0;try{const h={description:l.description||void 0,tokenLimit:l.tokenLimit!==""&&l.tokenLimit!==null?parseInt(l.tokenLimit):null,rateLimitWindow:l.rateLimitWindow!==""&&l.rateLimitWindow!==null?parseInt(l.rateLimitWindow):null,rateLimitRequests:l.rateLimitRequests!==""&&l.rateLimitRequests!==null?parseInt(l.rateLimitRequests):null,concurrencyLimit:l.concurrencyLimit!==""&&l.concurrencyLimit!==null?parseInt(l.concurrencyLimit):0,dailyCostLimit:l.dailyCostLimit!==""&&l.dailyCostLimit!==null?parseFloat(l.dailyCostLimit):0,expiresAt:l.expiresAt||void 0,permissions:l.permissions,tags:l.tags.length>0?l.tags:void 0,enableModelRestriction:l.enableModelRestriction,restrictedModels:l.restrictedModels,enableClientRestriction:l.enableClientRestriction,allowedClients:l.allowedClients};if(l.claudeAccountId&&(l.claudeAccountId.startsWith("console:")?(h.claudeConsoleAccountId=l.claudeAccountId.substring(8),delete h.claudeAccountId):(h.claudeAccountId=l.claudeAccountId,delete h.claudeConsoleAccountId)),l.geminiAccountId&&(h.geminiAccountId=l.geminiAccountId),l.openaiAccountId&&(h.openaiAccountId=l.openaiAccountId),l.bedrockAccountId&&(h.bedrockAccountId=l.bedrockAccountId),l.createType==="single"){const o={...h,name:l.name},x=await W.post("/admin/api-keys",o);x.success?(q("API Key 创建成功","success"),P("success",x.data),P("close")):q(x.message||"创建失败","error")}else{const o={...h,createType:"batch",baseName:l.name,count:l.batchCount},x=await W.post("/admin/api-keys/batch",o);x.success?(q(`成功创建 ${x.data.length} 个 API Key`,"success"),P("batch-success",x.data),P("close")):q(x.message||"批量创建失败","error")}}catch{q("创建失败","error")}finally{_.value=!1}};return(h,o)=>(r(),re(be,{to:"body"},[e("div",es,[e("div",ts,[e("div",ss,[o[33]||(o[33]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-key text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 创建新的 API Key ")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:o[0]||(o[0]=x=>h.$emit("close"))},o[32]||(o[32]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-4",onSubmit:me(w,["prevent"])},[e("div",as,[e("div",{class:z(["flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",l.createType==="batch"?"mb-3":""])},[o[36]||(o[36]=e("label",{class:"flex h-full items-center text-xs font-semibold text-gray-700 dark:text-gray-300 sm:text-sm"},"创建类型",-1)),e("div",ls,[e("label",rs,[M(e("input",{"onUpdate:modelValue":o[1]||(o[1]=x=>l.createType=x),class:"mr-1.5 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 sm:mr-2",type:"radio",value:"single"},null,512),[[ae,l.createType]]),o[34]||(o[34]=e("span",{class:"flex items-center text-xs text-gray-700 dark:text-gray-300 sm:text-sm"},[e("i",{class:"fas fa-key mr-1 text-xs"}),K(" 单个创建 ")],-1))]),e("label",os,[M(e("input",{"onUpdate:modelValue":o[2]||(o[2]=x=>l.createType=x),class:"mr-1.5 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 sm:mr-2",type:"radio",value:"batch"},null,512),[[ae,l.createType]]),o[35]||(o[35]=e("span",{class:"flex items-center text-xs text-gray-700 dark:text-gray-300 sm:text-sm"},[e("i",{class:"fas fa-layer-group mr-1 text-xs"}),K(" 批量创建 ")],-1))])])],2),l.createType==="batch"?(r(),d("div",ns,[e("div",is,[e("div",ds,[o[38]||(o[38]=e("label",{class:"mb-1 block text-xs font-medium text-gray-600 dark:text-gray-400"},"创建数量",-1)),e("div",us,[M(e("input",{"onUpdate:modelValue":o[3]||(o[3]=x=>l.batchCount=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"500",min:"2",placeholder:"输入数量 (2-500)",required:"",type:"number"},null,512),[[ee,l.batchCount,void 0,{number:!0}]]),o[37]||(o[37]=e("div",{class:"whitespace-nowrap text-xs text-gray-500 dark:text-gray-400"}," 最大支持 500 个 ",-1))])])]),e("p",cs,[o[39]||(o[39]=e("i",{class:"fas fa-info-circle mr-1 mt-0.5 flex-shrink-0"},null,-1)),e("span",null,"批量创建时,每个 Key 的名称会自动添加序号后缀,例如:"+m(l.name||"MyKey")+"_1, "+m(l.name||"MyKey")+"_2 ...",1)])])):v("",!0)]),e("div",null,[o[40]||(o[40]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-2 sm:text-sm"},[K("名称 "),e("span",{class:"text-red-500"},"*")],-1)),M(e("input",{"onUpdate:modelValue":o[4]||(o[4]=x=>l.name=x),class:z(["form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":B.value.name}]),placeholder:l.createType==="batch"?"输入基础名称(将自动添加序号)":"为您的 API Key 取一个名称",required:"",type:"text",onInput:o[5]||(o[5]=x=>B.value.name="")},null,42,gs),[[ee,l.name]]),B.value.name?(r(),d("p",ms,m(B.value.name),1)):v("",!0)]),e("div",null,[o[48]||(o[48]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"标签",-1)),e("div",ps,[l.tags.length>0?(r(),d("div",xs,[o[42]||(o[42]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 已选择的标签: ",-1)),e("div",ys,[(r(!0),d(Y,null,J(l.tags,(x,Z)=>(r(),d("span",{key:"selected-"+Z,class:"inline-flex items-center gap-1 rounded-full bg-blue-100 px-3 py-1 text-sm text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},[K(m(x)+" ",1),e("button",{class:"ml-1 hover:text-blue-900 dark:hover:text-blue-300",type:"button",onClick:H=>I(Z)},o[41]||(o[41]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,fs)]))),128))])])):v("",!0),E.value.length>0?(r(),d("div",bs,[o[44]||(o[44]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 点击选择已有标签: ",-1)),e("div",vs,[(r(!0),d(Y,null,J(E.value,x=>(r(),d("button",{key:"available-"+x,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-blue-900/30 dark:hover:text-blue-400",type:"button",onClick:Z=>p(x)},[o[43]||(o[43]=e("i",{class:"fas fa-tag text-xs text-gray-500 dark:text-gray-400"},null,-1)),K(" "+m(x),1)],8,ks))),128))])])):v("",!0),e("div",null,[o[46]||(o[46]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 创建新标签: ",-1)),e("div",ws,[M(e("input",{"onUpdate:modelValue":o[6]||(o[6]=x=>S.value=x),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入新标签名称",type:"text",onKeypress:Le(me(n,["prevent"]),["enter"])},null,40,hs),[[ee,S.value]]),e("button",{class:"rounded-lg bg-green-500 px-4 py-2 text-white transition-colors hover:bg-green-600",type:"button",onClick:n},o[45]||(o[45]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),o[47]||(o[47]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 用于标记不同团队或用途,方便筛选管理 ",-1))])]),e("div",$s,[o[56]||(o[56]=e("div",{class:"mb-2 flex items-center gap-2"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded bg-blue-500"},[e("i",{class:"fas fa-tachometer-alt text-xs text-white"})]),e("h4",{class:"text-sm font-semibold text-gray-800 dark:text-gray-200"}," 速率限制设置 (可选) ")],-1)),e("div",As,[e("div",Cs,[e("div",null,[o[49]||(o[49]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"时间窗口 (分钟)",-1)),M(e("input",{"onUpdate:modelValue":o[7]||(o[7]=x=>l.rateLimitWindow=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,l.rateLimitWindow]]),o[50]||(o[50]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"时间段单位",-1))]),e("div",null,[o[51]||(o[51]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"请求次数限制",-1)),M(e("input",{"onUpdate:modelValue":o[8]||(o[8]=x=>l.rateLimitRequests=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,l.rateLimitRequests]]),o[52]||(o[52]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大请求",-1))]),e("div",null,[o[53]||(o[53]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"Token 限制",-1)),M(e("input",{"onUpdate:modelValue":o[9]||(o[9]=x=>l.tokenLimit=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"无限制",type:"number"},null,512),[[ee,l.tokenLimit]]),o[54]||(o[54]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"}," 窗口内最大Token ",-1))])]),o[55]||(o[55]=e("div",{class:"rounded-lg bg-blue-100 p-2 dark:bg-blue-900/30"},[e("h5",{class:"mb-1 text-xs font-semibold text-blue-800 dark:text-blue-400"}," 💡 使用示例 "),e("div",{class:"space-y-0.5 text-xs text-blue-700 dark:text-blue-300"},[e("div",null,[e("strong",null,"示例1:"),K(" 时间窗口=60,请求次数=1000 → 每60分钟最多1000次请求 ")]),e("div",null,[e("strong",null,"示例2:"),K(" 时间窗口=1,Token=10000 → 每分钟最多10,000个Token ")]),e("div",null,[e("strong",null,"示例3:"),K(" 窗口=30,请求=50,Token=100000 → 每30分钟50次请求且不超10万Token ")])])],-1))])]),e("div",null,[o[58]||(o[58]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日费用限制 (美元)",-1)),e("div",Is,[e("div",Ks,[e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[10]||(o[10]=x=>l.dailyCostLimit="50")}," $50 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[11]||(o[11]=x=>l.dailyCostLimit="100")}," $100 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[12]||(o[12]=x=>l.dailyCostLimit="200")}," $200 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[13]||(o[13]=x=>l.dailyCostLimit="")}," 自定义 ")]),M(e("input",{"onUpdate:modelValue":o[14]||(o[14]=x=>l.dailyCostLimit=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[ee,l.dailyCostLimit]]),o[57]||(o[57]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 每日的费用限制,超过限制将拒绝请求,0 或留空表示无限制 ",-1))])]),e("div",null,[o[59]||(o[59]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"并发限制 (可选)",-1)),M(e("input",{"onUpdate:modelValue":o[15]||(o[15]=x=>l.concurrencyLimit=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",type:"number"},null,512),[[ee,l.concurrencyLimit]]),o[60]||(o[60]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 可同时处理的最大请求数,0 或留空表示无限制 ",-1))]),e("div",null,[o[61]||(o[61]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"备注 (可选)",-1)),M(e("textarea",{"onUpdate:modelValue":o[16]||(o[16]=x=>l.description=x),class:"form-input w-full resize-none text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"描述此 API Key 的用途...",rows:"2"},null,512),[[ee,l.description]])]),e("div",null,[o[63]||(o[63]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"有效期限",-1)),M(e("select",{"onUpdate:modelValue":o[17]||(o[17]=x=>l.expireDuration=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",onChange:C},o[62]||(o[62]=[e("option",{value:""},"永不过期",-1),e("option",{value:"1d"},"1 天",-1),e("option",{value:"7d"},"7 天",-1),e("option",{value:"30d"},"30 天",-1),e("option",{value:"90d"},"90 天",-1),e("option",{value:"180d"},"180 天",-1),e("option",{value:"365d"},"365 天",-1),e("option",{value:"custom"},"自定义日期",-1)]),544),[[$e,l.expireDuration]]),l.expireDuration==="custom"?(r(),d("div",Ds,[M(e("input",{"onUpdate:modelValue":o[18]||(o[18]=x=>l.customExpireDate=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:R.value,type:"datetime-local",onChange:f},null,40,Ls),[[ee,l.customExpireDate]])])):v("",!0),l.expiresAt?(r(),d("p",_s," 将于 "+m(k(l.expiresAt))+" 过期 ",1)):v("",!0)]),e("div",null,[o[68]||(o[68]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"服务权限",-1)),e("div",Ts,[e("label",Ms,[M(e("input",{"onUpdate:modelValue":o[19]||(o[19]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"all"},null,512),[[ae,l.permissions]]),o[64]||(o[64]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"全部服务",-1))]),e("label",Ss,[M(e("input",{"onUpdate:modelValue":o[20]||(o[20]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[ae,l.permissions]]),o[65]||(o[65]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Claude",-1))]),e("label",Rs,[M(e("input",{"onUpdate:modelValue":o[21]||(o[21]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[ae,l.permissions]]),o[66]||(o[66]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Gemini",-1))]),e("label",Vs,[M(e("input",{"onUpdate:modelValue":o[22]||(o[22]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[ae,l.permissions]]),o[67]||(o[67]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 OpenAI",-1))])]),o[69]||(o[69]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 控制此 API Key 可以访问哪些服务 ",-1))]),e("div",null,[e("div",Ps,[o[70]||(o[70]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"专属账号绑定 (可选)",-1)),e("button",{class:"flex items-center gap-1 text-sm text-blue-600 transition-colors hover:text-blue-800 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-400 dark:hover:text-blue-300",disabled:U.value,title:"刷新账号列表",type:"button",onClick:X},[e("i",{class:z(["fas",U.value?"fa-spinner fa-spin":"fa-sync-alt","text-xs"])},null,2),e("span",null,m(U.value?"刷新中...":"刷新账号"),1)],8,Es)]),e("div",js,[e("div",null,[o[71]||(o[71]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Claude 专属账号",-1)),ne(we,{modelValue:l.claudeAccountId,"onUpdate:modelValue":o[23]||(o[23]=x=>l.claudeAccountId=x),accounts:T.value.claude,"default-option-text":"使用共享账号池",disabled:l.permissions==="gemini"||l.permissions==="openai",groups:T.value.claudeGroups,placeholder:"请选择Claude账号",platform:"claude"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[72]||(o[72]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Gemini 专属账号",-1)),ne(we,{modelValue:l.geminiAccountId,"onUpdate:modelValue":o[24]||(o[24]=x=>l.geminiAccountId=x),accounts:T.value.gemini,"default-option-text":"使用共享账号池",disabled:l.permissions==="claude"||l.permissions==="openai",groups:T.value.geminiGroups,placeholder:"请选择Gemini账号",platform:"gemini"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[73]||(o[73]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"OpenAI 专属账号",-1)),ne(we,{modelValue:l.openaiAccountId,"onUpdate:modelValue":o[25]||(o[25]=x=>l.openaiAccountId=x),accounts:T.value.openai,"default-option-text":"使用共享账号池",disabled:l.permissions==="claude"||l.permissions==="gemini",groups:T.value.openaiGroups,placeholder:"请选择OpenAI账号",platform:"openai"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[74]||(o[74]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Bedrock 专属账号",-1)),ne(we,{modelValue:l.bedrockAccountId,"onUpdate:modelValue":o[26]||(o[26]=x=>l.bedrockAccountId=x),accounts:T.value.bedrock,"default-option-text":"使用共享账号池",disabled:l.permissions==="gemini"||l.permissions==="openai",groups:[],placeholder:"请选择Bedrock账号",platform:"bedrock"},null,8,["modelValue","accounts","disabled"])])]),o[75]||(o[75]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 选择专属账号后,此API Key将只使用该账号,不选择则使用共享账号池 ",-1))]),e("div",null,[e("div",Us,[M(e("input",{id:"enableModelRestriction","onUpdate:modelValue":o[27]||(o[27]=x=>l.enableModelRestriction=x),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ye,l.enableModelRestriction]]),o[76]||(o[76]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"enableModelRestriction"}," 启用模型限制 ",-1))]),l.enableModelRestriction?(r(),d("div",Gs,[e("div",null,[o[79]||(o[79]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600"},"限制的模型列表",-1)),e("div",Os,[(r(!0),d(Y,null,J(l.restrictedModels,(x,Z)=>(r(),d("span",{key:Z,class:"inline-flex items-center rounded-full bg-red-100 px-3 py-1 text-sm text-red-800"},[K(m(x)+" ",1),e("button",{class:"ml-2 text-red-600 hover:text-red-800",type:"button",onClick:H=>c(Z)},o[77]||(o[77]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,qs)]))),128)),l.restrictedModels.length===0?(r(),d("span",Ws," 暂无限制的模型 ")):v("",!0)]),e("div",Bs,[e("div",Fs,[(r(!0),d(Y,null,J(ie.value,x=>(r(),d("button",{key:x,class:"flex-shrink-0 rounded-lg bg-gray-100 px-3 py-1 text-xs text-gray-700 transition-colors hover:bg-gray-200 sm:text-sm",type:"button",onClick:Z=>j(x)},m(x),9,zs))),128)),ie.value.length===0?(r(),d("span",Hs," 所有常用模型已在限制列表中 ")):v("",!0)]),e("div",Ns,[M(e("input",{"onUpdate:modelValue":o[28]||(o[28]=x=>l.modelInput=x),class:"form-input flex-1",placeholder:"输入模型名称,按回车添加",type:"text",onKeydown:Le(me(u,["prevent"]),["enter"])},null,40,Ys),[[ee,l.modelInput]]),e("button",{class:"rounded-lg bg-red-500 px-4 py-2 text-white transition-colors hover:bg-red-600",type:"button",onClick:u},o[78]||(o[78]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),o[80]||(o[80]=e("p",{class:"mt-2 text-xs text-gray-500"}," 设置此API Key无法访问的模型,例如:claude-opus-4-20250514 ",-1))])])):v("",!0)]),e("div",null,[e("div",Qs,[M(e("input",{id:"enableClientRestriction","onUpdate:modelValue":o[29]||(o[29]=x=>l.enableClientRestriction=x),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ye,l.enableClientRestriction]]),o[81]||(o[81]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"enableClientRestriction"}," 启用客户端限制 ",-1))]),l.enableClientRestriction?(r(),d("div",Js,[e("div",null,[o[82]||(o[82]=e("label",{class:"mb-2 block text-xs font-medium text-gray-700 dark:text-gray-300"},"允许的客户端",-1)),e("div",Xs,[(r(!0),d(Y,null,J(a.value,x=>(r(),d("div",{key:x.id,class:"flex items-start"},[M(e("input",{id:`client_${x.id}`,"onUpdate:modelValue":o[30]||(o[30]=Z=>l.allowedClients=Z),class:"mt-0.5 h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox",value:x.id},null,8,Zs),[[ye,l.allowedClients]]),e("label",{class:"ml-2 flex-1 cursor-pointer",for:`client_${x.id}`},[e("span",ta,m(x.name),1),e("span",sa,m(x.description),1)],8,ea)]))),128))])])])):v("",!0)]),e("div",aa,[e("button",{class:"flex-1 rounded-lg bg-gray-100 px-4 py-2.5 text-sm font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[31]||(o[31]=x=>h.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-4 py-2.5 text-sm font-semibold",disabled:_.value,type:"submit"},[_.value?(r(),d("div",ra)):(r(),d("i",oa)),K(" "+m(_.value?"创建中...":"创建"),1)],8,la)])],32)])])]))}},ia=fe(na,[["__scopeId","data-v-6d814316"]]),da={class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},ua={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-4xl flex-col p-4 sm:p-6 md:p-8"},ca={class:"mb-4 flex items-center justify-between sm:mb-6"},ga=["value"],ma={class:"space-y-4"},pa={key:0},xa={class:"flex flex-wrap gap-2"},ya=["onClick"],fa={key:1},ba={class:"flex flex-wrap gap-2"},va=["onClick"],ka={class:"flex gap-2"},wa=["onKeypress"],ha={class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/20"},$a={class:"space-y-2"},Aa={class:"grid grid-cols-1 gap-2 lg:grid-cols-3"},Ca={class:"space-y-3"},Ia={class:"flex gap-2"},Ka={class:"mb-3 flex items-center"},Da={class:"flex gap-4"},La={class:"flex cursor-pointer items-center"},_a={class:"flex cursor-pointer items-center"},Ta={class:"flex cursor-pointer items-center"},Ma={class:"flex cursor-pointer items-center"},Sa={class:"mb-3 flex items-center justify-between"},Ra=["disabled"],Va={class:"grid grid-cols-1 gap-3"},Pa={class:"mb-3 flex items-center"},Ea={key:0,class:"space-y-3"},ja={class:"mb-3 flex min-h-[32px] flex-wrap gap-2 rounded-lg border border-gray-200 bg-gray-50 p-2 dark:border-gray-600 dark:bg-gray-700"},Ua=["onClick"],Ga={key:0,class:"text-sm text-gray-400 dark:text-gray-500"},Oa={class:"space-y-3"},qa={class:"flex flex-wrap gap-2"},Wa=["onClick"],Ba={key:0,class:"text-sm italic text-gray-400 dark:text-gray-500"},Fa={class:"flex gap-2"},za=["onKeydown"],Ha={class:"mb-3 flex items-center"},Na={key:0,class:"space-y-3"},Ya={class:"space-y-2"},Qa=["id","value"],Ja=["for"],Xa={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Za={class:"block text-xs text-gray-500 dark:text-gray-400"},el={class:"flex gap-3 pt-4"},tl=["disabled"],sl={key:0,class:"loading-spinner mr-2"},al={key:1,class:"fas fa-save mr-2"},ll={__name:"EditApiKeyModal",props:{apiKey:{type:Object,required:!0},accounts:{type:Object,default:()=>({claude:[],gemini:[]})}},emits:["close","success"],setup(A,{emit:Q}){const g=A,P=Q,G=Ge(),L=Oe(),_=D(!1),U=D(!1),T=D({claude:[],gemini:[],openai:[],bedrock:[],claudeGroups:[],geminiGroups:[],openaiGroups:[]}),B=D([]),S=D(""),$=D([]),E=N(()=>$.value.filter(j=>!a.tags.includes(j))),a=Te({name:"",tokenLimit:"",rateLimitWindow:"",rateLimitRequests:"",concurrencyLimit:"",dailyCostLimit:"",permissions:"all",claudeAccountId:"",geminiAccountId:"",openaiAccountId:"",bedrockAccountId:"",enableModelRestriction:!1,restrictedModels:[],modelInput:"",enableClientRestriction:!1,allowedClients:[],tags:[],isActive:!0}),l=()=>{a.modelInput&&!a.restrictedModels.includes(a.modelInput)&&(a.restrictedModels.push(a.modelInput),a.modelInput="")},X=j=>{a.restrictedModels.splice(j,1)},R=D(["claude-opus-4-20250514","claude-opus-4-1-20250805"]),C=N(()=>R.value.filter(j=>!a.restrictedModels.includes(j))),f=j=>{a.restrictedModels.includes(j)||a.restrictedModels.push(j)},k=()=>{if(S.value&&S.value.trim()){const j=S.value.trim();a.tags.includes(j)||a.tags.push(j),S.value=""}},u=j=>{a.tags.includes(j)||a.tags.push(j)},c=j=>{a.tags.splice(j,1)},b=async()=>{_.value=!0;try{const j={tokenLimit:a.tokenLimit!==""&&a.tokenLimit!==null?parseInt(a.tokenLimit):0,rateLimitWindow:a.rateLimitWindow!==""&&a.rateLimitWindow!==null?parseInt(a.rateLimitWindow):0,rateLimitRequests:a.rateLimitRequests!==""&&a.rateLimitRequests!==null?parseInt(a.rateLimitRequests):0,concurrencyLimit:a.concurrencyLimit!==""&&a.concurrencyLimit!==null?parseInt(a.concurrencyLimit):0,dailyCostLimit:a.dailyCostLimit!==""&&a.dailyCostLimit!==null?parseFloat(a.dailyCostLimit):0,permissions:a.permissions,tags:a.tags};a.claudeAccountId?a.claudeAccountId.startsWith("console:")?(j.claudeConsoleAccountId=a.claudeAccountId.substring(8),j.claudeAccountId=null):(a.claudeAccountId.startsWith("group:"),j.claudeAccountId=a.claudeAccountId,j.claudeConsoleAccountId=null):(j.claudeAccountId=null,j.claudeConsoleAccountId=null),a.geminiAccountId?j.geminiAccountId=a.geminiAccountId:j.geminiAccountId=null,a.openaiAccountId?j.openaiAccountId=a.openaiAccountId:j.openaiAccountId=null,a.bedrockAccountId?j.bedrockAccountId=a.bedrockAccountId:j.bedrockAccountId=null,j.enableModelRestriction=a.enableModelRestriction,j.restrictedModels=a.restrictedModels,j.enableClientRestriction=a.enableClientRestriction,j.allowedClients=a.allowedClients,j.isActive=a.isActive;const n=await W.put(`/admin/api-keys/${g.apiKey.id}`,j);n.success?(P("success"),P("close")):q(n.message||"更新失败","error")}catch{q("更新失败","error")}finally{_.value=!1}},ie=async()=>{var j,n;U.value=!0;try{const[p,I,w,h,o,x]=await Promise.all([W.get("/admin/claude-accounts"),W.get("/admin/claude-console-accounts"),W.get("/admin/gemini-accounts"),W.get("/admin/openai-accounts"),W.get("/admin/bedrock-accounts"),W.get("/admin/account-groups")]),Z=[];if(p.success&&((j=p.data)==null||j.forEach(H=>{Z.push({...H,platform:"claude-oauth",isDedicated:H.accountType==="dedicated"})})),I.success&&((n=I.data)==null||n.forEach(H=>{Z.push({...H,platform:"claude-console",isDedicated:H.accountType==="dedicated"})})),T.value.claude=Z,w.success&&(T.value.gemini=(w.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),h.success&&(T.value.openai=(h.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),o.success&&(T.value.bedrock=(o.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),x.success){const H=x.data||[];T.value.claudeGroups=H.filter(le=>le.platform==="claude"),T.value.geminiGroups=H.filter(le=>le.platform==="gemini"),T.value.openaiGroups=H.filter(le=>le.platform==="openai")}q("账号列表已刷新","success")}catch{q("刷新账号列表失败","error")}finally{U.value=!1}};return _e(async()=>{B.value=await G.loadSupportedClients(),$.value=await L.fetchTags(),g.accounts&&(T.value={claude:g.accounts.claude||[],gemini:g.accounts.gemini||[],openai:g.accounts.openai||[],bedrock:g.accounts.bedrock||[],claudeGroups:g.accounts.claudeGroups||[],geminiGroups:g.accounts.geminiGroups||[],openaiGroups:g.accounts.openaiGroups||[]}),a.name=g.apiKey.name,a.tokenLimit=g.apiKey.tokenLimit||"",a.rateLimitWindow=g.apiKey.rateLimitWindow||"",a.rateLimitRequests=g.apiKey.rateLimitRequests||"",a.concurrencyLimit=g.apiKey.concurrencyLimit||"",a.dailyCostLimit=g.apiKey.dailyCostLimit||"",a.permissions=g.apiKey.permissions||"all",g.apiKey.claudeConsoleAccountId?a.claudeAccountId=`console:${g.apiKey.claudeConsoleAccountId}`:a.claudeAccountId=g.apiKey.claudeAccountId||"",a.geminiAccountId=g.apiKey.geminiAccountId||"",a.openaiAccountId=g.apiKey.openaiAccountId||"",a.bedrockAccountId=g.apiKey.bedrockAccountId||"",a.restrictedModels=g.apiKey.restrictedModels||[],a.allowedClients=g.apiKey.allowedClients||[],a.tags=g.apiKey.tags||[],a.enableModelRestriction=g.apiKey.enableModelRestriction||!1,a.enableClientRestriction=g.apiKey.enableClientRestriction||!1,a.isActive=g.apiKey.isActive!==void 0?g.apiKey.isActive:!0}),(j,n)=>(r(),re(be,{to:"body"},[e("div",da,[e("div",ua,[e("div",ca,[n[26]||(n[26]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-edit text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 编辑 API Key ")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:n[0]||(n[0]=p=>j.$emit("close"))},n[25]||(n[25]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-4 sm:space-y-6",onSubmit:me(b,["prevent"])},[e("div",null,[n[27]||(n[27]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"},"名称",-1)),e("input",{class:"form-input w-full cursor-not-allowed bg-gray-100 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400",disabled:"",type:"text",value:a.name},null,8,ga),n[28]||(n[28]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400 sm:mt-2"},"名称不可修改",-1))]),e("div",null,[n[36]||(n[36]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"},"标签",-1)),e("div",ma,[a.tags.length>0?(r(),d("div",pa,[n[30]||(n[30]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 已选择的标签: ",-1)),e("div",xa,[(r(!0),d(Y,null,J(a.tags,(p,I)=>(r(),d("span",{key:"selected-"+I,class:"inline-flex items-center gap-1 rounded-full bg-blue-100 px-3 py-1 text-sm text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},[K(m(p)+" ",1),e("button",{class:"ml-1 hover:text-blue-900 dark:hover:text-blue-300",type:"button",onClick:w=>c(I)},n[29]||(n[29]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,ya)]))),128))])])):v("",!0),E.value.length>0?(r(),d("div",fa,[n[32]||(n[32]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 点击选择已有标签: ",-1)),e("div",ba,[(r(!0),d(Y,null,J(E.value,p=>(r(),d("button",{key:"available-"+p,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-blue-900/30 dark:hover:text-blue-400",type:"button",onClick:I=>u(p)},[n[31]||(n[31]=e("i",{class:"fas fa-tag text-xs text-gray-500 dark:text-gray-400"},null,-1)),K(" "+m(p),1)],8,va))),128))])])):v("",!0),e("div",null,[n[34]||(n[34]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 创建新标签: ",-1)),e("div",ka,[M(e("input",{"onUpdate:modelValue":n[1]||(n[1]=p=>S.value=p),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入新标签名称",type:"text",onKeypress:Le(me(k,["prevent"]),["enter"])},null,40,wa),[[ee,S.value]]),e("button",{class:"rounded-lg bg-green-500 px-4 py-2 text-white transition-colors hover:bg-green-600",type:"button",onClick:k},n[33]||(n[33]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),n[35]||(n[35]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 用于标记不同团队或用途,方便筛选管理 ",-1))])]),e("div",ha,[n[44]||(n[44]=e("div",{class:"mb-2 flex items-center gap-2"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded bg-blue-500"},[e("i",{class:"fas fa-tachometer-alt text-xs text-white"})]),e("h4",{class:"text-sm font-semibold text-gray-800 dark:text-gray-200"}," 速率限制设置 (可选) ")],-1)),e("div",$a,[e("div",Aa,[e("div",null,[n[37]||(n[37]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"时间窗口 (分钟)",-1)),M(e("input",{"onUpdate:modelValue":n[2]||(n[2]=p=>a.rateLimitWindow=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,a.rateLimitWindow]]),n[38]||(n[38]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"时间段单位",-1))]),e("div",null,[n[39]||(n[39]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"请求次数限制",-1)),M(e("input",{"onUpdate:modelValue":n[3]||(n[3]=p=>a.rateLimitRequests=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,a.rateLimitRequests]]),n[40]||(n[40]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大请求",-1))]),e("div",null,[n[41]||(n[41]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"Token 限制",-1)),M(e("input",{"onUpdate:modelValue":n[4]||(n[4]=p=>a.tokenLimit=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"无限制",type:"number"},null,512),[[ee,a.tokenLimit]]),n[42]||(n[42]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"}," 窗口内最大Token ",-1))])]),n[43]||(n[43]=e("div",{class:"rounded-lg bg-blue-100 p-2 dark:bg-blue-900/30"},[e("h5",{class:"mb-1 text-xs font-semibold text-blue-800 dark:text-blue-400"}," 💡 使用示例 "),e("div",{class:"space-y-0.5 text-xs text-blue-700 dark:text-blue-300"},[e("div",null,[e("strong",null,"示例1:"),K(" 时间窗口=60,请求次数=1000 → 每60分钟最多1000次请求 ")]),e("div",null,[e("strong",null,"示例2:"),K(" 时间窗口=1,Token=10000 → 每分钟最多10,000个Token ")]),e("div",null,[e("strong",null,"示例3:"),K(" 窗口=30,请求=50,Token=100000 → 每30分钟50次请求且不超10万Token ")])])],-1))])]),e("div",null,[n[46]||(n[46]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日费用限制 (美元)",-1)),e("div",Ca,[e("div",Ia,[e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[5]||(n[5]=p=>a.dailyCostLimit="50")}," $50 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[6]||(n[6]=p=>a.dailyCostLimit="100")}," $100 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[7]||(n[7]=p=>a.dailyCostLimit="200")}," $200 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[8]||(n[8]=p=>a.dailyCostLimit="")}," 自定义 ")]),M(e("input",{"onUpdate:modelValue":n[9]||(n[9]=p=>a.dailyCostLimit=p),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[ee,a.dailyCostLimit]]),n[45]||(n[45]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 每日的费用限制,超过限制将拒绝请求,0 或留空表示无限制 ",-1))])]),e("div",null,[n[47]||(n[47]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"并发限制",-1)),M(e("input",{"onUpdate:modelValue":n[10]||(n[10]=p=>a.concurrencyLimit=p),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",type:"number"},null,512),[[ee,a.concurrencyLimit]]),n[48]||(n[48]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 可同时处理的最大请求数 ",-1))]),e("div",null,[e("div",Ka,[M(e("input",{id:"editIsActive","onUpdate:modelValue":n[11]||(n[11]=p=>a.isActive=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.isActive]]),n[49]||(n[49]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editIsActive"}," 激活账号 ",-1))]),n[50]||(n[50]=e("p",{class:"mb-4 text-xs text-gray-500 dark:text-gray-400"}," 取消勾选将禁用此 API Key,暂停所有请求,客户端返回 401 错误 ",-1))]),e("div",null,[n[55]||(n[55]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"服务权限",-1)),e("div",Da,[e("label",La,[M(e("input",{"onUpdate:modelValue":n[12]||(n[12]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"all"},null,512),[[ae,a.permissions]]),n[51]||(n[51]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"全部服务",-1))]),e("label",_a,[M(e("input",{"onUpdate:modelValue":n[13]||(n[13]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[ae,a.permissions]]),n[52]||(n[52]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Claude",-1))]),e("label",Ta,[M(e("input",{"onUpdate:modelValue":n[14]||(n[14]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[ae,a.permissions]]),n[53]||(n[53]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Gemini",-1))]),e("label",Ma,[M(e("input",{"onUpdate:modelValue":n[15]||(n[15]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[ae,a.permissions]]),n[54]||(n[54]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 OpenAI",-1))])]),n[56]||(n[56]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 控制此 API Key 可以访问哪些服务 ",-1))]),e("div",null,[e("div",Sa,[n[57]||(n[57]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"专属账号绑定",-1)),e("button",{class:"flex items-center gap-1 text-sm text-blue-600 transition-colors hover:text-blue-800 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-400 dark:hover:text-blue-300",disabled:U.value,title:"刷新账号列表",type:"button",onClick:ie},[e("i",{class:z(["fas",U.value?"fa-spinner fa-spin":"fa-sync-alt","text-xs"])},null,2),e("span",null,m(U.value?"刷新中...":"刷新账号"),1)],8,Ra)]),e("div",Va,[e("div",null,[n[58]||(n[58]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Claude 专属账号",-1)),ne(we,{modelValue:a.claudeAccountId,"onUpdate:modelValue":n[16]||(n[16]=p=>a.claudeAccountId=p),accounts:T.value.claude,"default-option-text":"使用共享账号池",disabled:a.permissions==="gemini"||a.permissions==="openai",groups:T.value.claudeGroups,placeholder:"请选择Claude账号",platform:"claude"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[59]||(n[59]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Gemini 专属账号",-1)),ne(we,{modelValue:a.geminiAccountId,"onUpdate:modelValue":n[17]||(n[17]=p=>a.geminiAccountId=p),accounts:T.value.gemini,"default-option-text":"使用共享账号池",disabled:a.permissions==="claude"||a.permissions==="openai",groups:T.value.geminiGroups,placeholder:"请选择Gemini账号",platform:"gemini"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[60]||(n[60]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"OpenAI 专属账号",-1)),ne(we,{modelValue:a.openaiAccountId,"onUpdate:modelValue":n[18]||(n[18]=p=>a.openaiAccountId=p),accounts:T.value.openai,"default-option-text":"使用共享账号池",disabled:a.permissions==="claude"||a.permissions==="gemini",groups:T.value.openaiGroups,placeholder:"请选择OpenAI账号",platform:"openai"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[61]||(n[61]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Bedrock 专属账号",-1)),ne(we,{modelValue:a.bedrockAccountId,"onUpdate:modelValue":n[19]||(n[19]=p=>a.bedrockAccountId=p),accounts:T.value.bedrock,"default-option-text":"使用共享账号池",disabled:a.permissions==="gemini"||a.permissions==="openai",groups:[],placeholder:"请选择Bedrock账号",platform:"bedrock"},null,8,["modelValue","accounts","disabled"])])]),n[62]||(n[62]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 修改绑定账号将影响此API Key的请求路由 ",-1))]),e("div",null,[e("div",Pa,[M(e("input",{id:"editEnableModelRestriction","onUpdate:modelValue":n[20]||(n[20]=p=>a.enableModelRestriction=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.enableModelRestriction]]),n[63]||(n[63]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editEnableModelRestriction"}," 启用模型限制 ",-1))]),a.enableModelRestriction?(r(),d("div",Ea,[e("div",null,[n[66]||(n[66]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600 dark:text-gray-400"},"限制的模型列表",-1)),e("div",ja,[(r(!0),d(Y,null,J(a.restrictedModels,(p,I)=>(r(),d("span",{key:I,class:"inline-flex items-center rounded-full bg-red-100 px-3 py-1 text-sm text-red-800 dark:bg-red-900/30 dark:text-red-400"},[K(m(p)+" ",1),e("button",{class:"ml-2 text-red-600 hover:text-red-800 dark:text-red-400 dark:hover:text-red-300",type:"button",onClick:w=>X(I)},n[64]||(n[64]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,Ua)]))),128)),a.restrictedModels.length===0?(r(),d("span",Ga," 暂无限制的模型 ")):v("",!0)]),e("div",Oa,[e("div",qa,[(r(!0),d(Y,null,J(C.value,p=>(r(),d("button",{key:p,class:"flex-shrink-0 rounded-lg bg-gray-100 px-3 py-1 text-xs text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600 sm:text-sm",type:"button",onClick:I=>f(p)},m(p),9,Wa))),128)),C.value.length===0?(r(),d("span",Ba," 所有常用模型已在限制列表中 ")):v("",!0)]),e("div",Fa,[M(e("input",{"onUpdate:modelValue":n[21]||(n[21]=p=>a.modelInput=p),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入模型名称,按回车添加",type:"text",onKeydown:Le(me(l,["prevent"]),["enter"])},null,40,za),[[ee,a.modelInput]]),e("button",{class:"rounded-lg bg-red-500 px-4 py-2 text-white transition-colors hover:bg-red-600",type:"button",onClick:l},n[65]||(n[65]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),n[67]||(n[67]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此API Key无法访问的模型,例如:claude-opus-4-20250514 ",-1))])])):v("",!0)]),e("div",null,[e("div",Ha,[M(e("input",{id:"editEnableClientRestriction","onUpdate:modelValue":n[22]||(n[22]=p=>a.enableClientRestriction=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.enableClientRestriction]]),n[68]||(n[68]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editEnableClientRestriction"}," 启用客户端限制 ",-1))]),a.enableClientRestriction?(r(),d("div",Na,[e("div",null,[n[69]||(n[69]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600 dark:text-gray-400"},"允许的客户端",-1)),n[70]||(n[70]=e("p",{class:"mb-3 text-xs text-gray-500 dark:text-gray-400"}," 勾选允许使用此API Key的客户端 ",-1)),e("div",Ya,[(r(!0),d(Y,null,J(B.value,p=>(r(),d("div",{key:p.id,class:"flex items-start"},[M(e("input",{id:`edit_client_${p.id}`,"onUpdate:modelValue":n[23]||(n[23]=I=>a.allowedClients=I),class:"mt-0.5 h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox",value:p.id},null,8,Qa),[[ye,a.allowedClients]]),e("label",{class:"ml-2 flex-1 cursor-pointer",for:`edit_client_${p.id}`},[e("span",Xa,m(p.name),1),e("span",Za,m(p.description),1)],8,Ja)]))),128))])])])):v("",!0)]),e("div",el,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[24]||(n[24]=p=>j.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:_.value,type:"submit"},[_.value?(r(),d("div",sl)):(r(),d("i",al)),K(" "+m(_.value?"保存中...":"保存修改"),1)],8,tl)])],32)])])]))}},rl=fe(ll,[["__scopeId","data-v-709438db"]]),ol={class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},nl={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-md flex-col p-8"},il={class:"mb-6 flex items-center justify-between"},dl={class:"modal-scroll-content custom-scrollbar flex-1 space-y-6"},ul={class:"rounded-lg border border-blue-200 bg-blue-50 p-4"},cl={class:"flex items-start gap-3"},gl={class:"text-sm text-gray-700"},ml={class:"mt-1 text-xs text-gray-600"},pl={key:0,class:"mt-3"},xl=["min"],yl={key:1,class:"mt-2 text-xs text-gray-500"},fl={class:"flex gap-3 pt-4"},bl=["disabled"],vl={key:0,class:"loading-spinner mr-2"},kl={key:1,class:"fas fa-clock mr-2"},wl={__name:"RenewApiKeyModal",props:{apiKey:{type:Object,required:!0}},emits:["close","success"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=Te({renewDuration:"30d",customExpireDate:"",newExpiresAt:null}),_=N(()=>{const $=new Date;return g.apiKey.expiresAt&&new Date(g.apiKey.expiresAt)>$?new Date(g.apiKey.expiresAt).toISOString().slice(0,16):($.setMinutes($.getMinutes()+1),$.toISOString().slice(0,16))}),U=$=>new Date($).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),T=()=>{if(!L.renewDuration){L.newExpiresAt=null;return}if(L.renewDuration==="permanent"){L.newExpiresAt=null;return}if(L.renewDuration==="custom")return;const $=g.apiKey.expiresAt&&new Date(g.apiKey.expiresAt)>new Date?new Date(g.apiKey.expiresAt):new Date,a=L.renewDuration.match(/(\d+)([dhmy])/);if(a){const[,l,X]=a,R=parseInt(l);switch(X){case"d":$.setDate($.getDate()+R);break;case"h":$.setHours($.getHours()+R);break;case"m":$.setMonth($.getMonth()+R);break;case"y":$.setFullYear($.getFullYear()+R);break}L.newExpiresAt=$.toISOString()}},B=()=>{L.customExpireDate&&(L.newExpiresAt=new Date(L.customExpireDate).toISOString())},S=async()=>{G.value=!0;try{const $={expiresAt:L.renewDuration==="permanent"?null:L.newExpiresAt},E=await W.put(`/admin/api-keys/${g.apiKey.id}`,$);E.success?(q("API Key 续期成功","success"),P("success"),P("close")):q(E.message||"续期失败","error")}catch{q("续期失败","error")}finally{G.value=!1}};return T(),($,E)=>(r(),re(be,{to:"body"},[e("div",ol,[e("div",nl,[e("div",il,[E[5]||(E[5]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-clock text-white"})]),e("h3",{class:"text-xl font-bold text-gray-900"},"续期 API Key")],-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:E[0]||(E[0]=a=>$.$emit("close"))},E[4]||(E[4]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("div",dl,[e("div",ul,[e("div",cl,[E[7]||(E[7]=e("div",{class:"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-info text-sm text-white"})],-1)),e("div",null,[E[6]||(E[6]=e("h4",{class:"mb-1 font-semibold text-gray-800"},"API Key 信息",-1)),e("p",gl,m(A.apiKey.name),1),e("p",ml," 当前过期时间:"+m(A.apiKey.expiresAt?U(A.apiKey.expiresAt):"永不过期"),1)])])]),e("div",null,[E[9]||(E[9]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"续期时长",-1)),M(e("select",{"onUpdate:modelValue":E[1]||(E[1]=a=>L.renewDuration=a),class:"form-input w-full",onChange:T},E[8]||(E[8]=[e("option",{value:"7d"},"延长 7 天",-1),e("option",{value:"30d"},"延长 30 天",-1),e("option",{value:"90d"},"延长 90 天",-1),e("option",{value:"180d"},"延长 180 天",-1),e("option",{value:"365d"},"延长 365 天",-1),e("option",{value:"custom"},"自定义日期",-1),e("option",{value:"permanent"},"设为永不过期",-1)]),544),[[$e,L.renewDuration]]),L.renewDuration==="custom"?(r(),d("div",pl,[M(e("input",{"onUpdate:modelValue":E[2]||(E[2]=a=>L.customExpireDate=a),class:"form-input w-full",min:_.value,type:"datetime-local",onChange:B},null,40,xl),[[ee,L.customExpireDate]])])):v("",!0),L.newExpiresAt?(r(),d("p",yl," 新的过期时间:"+m(U(L.newExpiresAt)),1)):v("",!0)])]),e("div",fl,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200",type:"button",onClick:E[3]||(E[3]=a=>$.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:G.value||!L.renewDuration,type:"button",onClick:S},[G.value?(r(),d("div",vl)):(r(),d("i",kl)),K(" "+m(G.value?"续期中...":"确认续期"),1)],8,bl)])])])]))}},hl=fe(wl,[["__scopeId","data-v-2fba52a3"]]),$l={class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},Al={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-lg overflow-y-auto p-8"},Cl={class:"mb-6 space-y-4"},Il={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-600 dark:bg-gray-800"},Kl={class:"font-medium text-gray-900 dark:text-gray-100"},Dl={key:0},Ll={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-600 dark:bg-gray-800"},_l={class:"text-gray-700 dark:text-gray-300"},Tl={class:"relative"},Ml={class:"flex min-h-[60px] items-center break-all rounded-lg border border-gray-700 bg-gray-900 p-4 pr-14 font-mono text-sm text-white dark:border-gray-600 dark:bg-gray-900"},Sl={class:"absolute right-3 top-3"},Rl=["title"],Vl={__name:"NewApiKeyModal",props:{apiKey:{type:Object,required:!0}},emits:["close"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=()=>{G.value=!G.value},_=()=>{const S=g.apiKey.apiKey||g.apiKey.key||"";return S?G.value||S.length<=12?S:S.substring(0,8)+"●".repeat(Math.max(0,S.length-12))+S.substring(S.length-4):""},U=async()=>{const S=g.apiKey.apiKey||g.apiKey.key||"";if(!S){q("API Key 不存在","error");return}try{await navigator.clipboard.writeText(S),q("API Key 已复制到剪贴板","success")}catch($){console.error("Failed to copy:",$);const E=document.createElement("textarea");E.value=S,document.body.appendChild(E),E.select();try{document.execCommand("copy"),q("API Key 已复制到剪贴板","success")}catch{q("复制失败,请手动复制","error")}finally{document.body.removeChild(E)}}},T=async()=>{window.showConfirm?await window.showConfirm("关闭提醒",`关闭后将无法再次查看完整的API Key,请确保已经妥善保存。 确定要关闭吗?`,"确定关闭","取消")&&P("close"):confirm(`关闭后将无法再次查看完整的API Key,请确保已经妥善保存。 diff --git a/web/admin-spa/dist/assets/ApiStatsView-DHzUrYlz.js b/assets/ApiStatsView-B3sDs7Mx.js similarity index 98% rename from web/admin-spa/dist/assets/ApiStatsView-DHzUrYlz.js rename to assets/ApiStatsView-B3sDs7Mx.js index 361339de..7e9f84f4 100644 --- a/web/admin-spa/dist/assets/ApiStatsView-DHzUrYlz.js +++ b/assets/ApiStatsView-B3sDs7Mx.js @@ -1 +1 @@ -import{aR as Y,r as _,c as V,aW as A,x as n,y as d,z as t,O as f,K as H,aq as Q,u as s,aa as G,f as X,P as l,C,L,B as Z,R as S,Q as W,ac as z,q as tt,aU as et,V as st,o as at,J as rt,av as it}from"./vue-vendor-DfnFpxGJ.js";import{_ as q,a as ot}from"./index-BdtiivzQ.js";import{L as lt}from"./LogoTitle-CipNTyYU.js";import{T as nt}from"./ThemeToggle-DACcdK5F.js";import{b as dt}from"./vendor-BDiMbLwQ.js";import{_ as mt}from"./WindowCountdown-RaAYa1A3.js";import ct from"./TutorialView-CC1KbDlg.js";import"./element-plus-CMedNaYf.js";class xt{constructor(){this.baseURL=window.location.origin,this.isDev=!1}async request(o,a={}){try{this.isDev&&o.startsWith("/admin")&&(o="/webapi"+o);const m=await fetch(`${this.baseURL}${o}`,{headers:{"Content-Type":"application/json",...a.headers},...a}),x=await m.json();if(!m.ok)throw new Error(x.message||`请求失败: ${m.status}`);return x}catch(m){throw console.error("API Stats request error:",m),m}}async getKeyId(o){return this.request("/apiStats/api/get-key-id",{method:"POST",body:JSON.stringify({apiKey:o})})}async getUserStats(o){return this.request("/apiStats/api/user-stats",{method:"POST",body:JSON.stringify({apiId:o})})}async getUserModelStats(o,a="daily"){return this.request("/apiStats/api/user-model-stats",{method:"POST",body:JSON.stringify({apiId:o,period:a})})}async getOemSettings(){try{return await this.request("/admin/oem-settings")}catch(o){return console.error("Failed to load OEM settings:",o),{success:!0,data:{siteName:"Claude Relay Service",siteIcon:"",siteIconData:""}}}}}const P=new xt,K=Y("apistats",()=>{const h=_(""),o=_(null),a=_(!1),m=_(!1),x=_(!0),c=_(""),e=_("daily"),i=_(null),p=_([]),v=_(null),w=_(null),u=_({siteName:"",siteIcon:"",siteIconData:""}),g=V(()=>{const r={requests:0,inputTokens:0,outputTokens:0,cacheCreateTokens:0,cacheReadTokens:0,allTokens:0,cost:0,formattedCost:"$0.000000"};return e.value==="daily"?v.value||r:w.value||r}),U=V(()=>{if(!i.value||!g.value)return{tokenUsage:0,costUsage:0,requestUsage:0};const r=g.value,b=i.value.limits;return{tokenUsage:b.tokenLimit>0?Math.min(r.allTokens/b.tokenLimit*100,100):0,costUsage:b.dailyCostLimit>0?Math.min(r.cost/b.dailyCostLimit*100,100):0,requestUsage:b.rateLimitRequests>0?Math.min(r.requests/b.rateLimitRequests*100,100):0}});async function T(){if(!h.value.trim()){c.value="请输入 API Key";return}a.value=!0,c.value="",i.value=null,p.value=[],o.value=null;try{const r=await P.getKeyId(h.value);if(r.success){o.value=r.data.id;const b=await P.getUserStats(o.value);if(b.success)i.value=b.data,await M(),c.value="",y();else throw new Error(b.message||"查询失败")}else throw new Error(r.message||"获取 API Key ID 失败")}catch(r){console.error("Query stats error:",r),c.value=r.message||"查询统计数据失败,请检查您的 API Key 是否正确",i.value=null,p.value=[],o.value=null}finally{a.value=!1}}async function M(){o.value&&(await Promise.all([I("daily"),I("monthly")]),await R(e.value))}async function I(r){try{const b=await P.getUserModelStats(o.value,r);if(b.success){const J=b.data||[],$={requests:0,inputTokens:0,outputTokens:0,cacheCreateTokens:0,cacheReadTokens:0,allTokens:0,cost:0,formattedCost:"$0.000000"};J.forEach(D=>{var B;$.requests+=D.requests||0,$.inputTokens+=D.inputTokens||0,$.outputTokens+=D.outputTokens||0,$.cacheCreateTokens+=D.cacheCreateTokens||0,$.cacheReadTokens+=D.cacheReadTokens||0,$.allTokens+=D.allTokens||0,$.cost+=((B=D.costs)==null?void 0:B.total)||0}),$.formattedCost=k($.cost),r==="daily"?v.value=$:w.value=$}else console.warn(`Failed to load ${r} stats:`,b.message)}catch(b){console.error(`Load ${r} stats error:`,b)}}async function R(r="daily"){if(o.value){m.value=!0;try{const b=await P.getUserModelStats(o.value,r);if(b.success)p.value=b.data||[];else throw new Error(b.message||"加载模型统计失败")}catch(b){console.error("Load model stats error:",b),p.value=[]}finally{m.value=!1}}}async function N(r){e.value===r||m.value||(e.value=r,(r==="daily"&&!v.value||r==="monthly"&&!w.value)&&await I(r),await R(r))}async function O(){if(o.value){a.value=!0,c.value="",i.value=null,p.value=[];try{const r=await P.getUserStats(o.value);if(r.success)i.value=r.data,await M(),c.value="";else throw new Error(r.message||"查询失败")}catch(r){console.error("Load stats with apiId error:",r),c.value=r.message||"查询统计数据失败",i.value=null,p.value=[]}finally{a.value=!1}}}async function E(){x.value=!0;try{const r=await P.getOemSettings();r&&r.success&&r.data&&(u.value={...u.value,...r.data})}catch(r){console.error("Error loading OEM settings:",r),u.value={siteName:"Claude Relay Service",siteIcon:"",siteIconData:""}}finally{x.value=!1}}function k(r){return typeof r!="number"||r===0?"$0.000000":r>=1?"$"+r.toFixed(2):r>=.01?"$"+r.toFixed(4):"$"+r.toFixed(6)}function y(){if(o.value){const r=new URL(window.location);r.searchParams.set("apiId",o.value),window.history.pushState({},"",r)}}function F(){i.value=null,p.value=[],v.value=null,w.value=null,c.value="",e.value="daily",o.value=null}function j(){h.value="",F()}return{apiKey:h,apiId:o,loading:a,modelStatsLoading:m,oemLoading:x,error:c,statsPeriod:e,statsData:i,modelStats:p,dailyStats:v,monthlyStats:w,oemSettings:u,currentPeriodData:g,usagePercentages:U,queryStats:T,loadAllPeriodStats:M,loadPeriodStats:I,loadModelStats:R,switchPeriod:N,loadStatsWithApiId:O,loadOemSettings:E,clearData:F,reset:j}}),ut={class:"api-input-wide-card mb-8 rounded-3xl p-6 shadow-xl"},gt={class:"mx-auto max-w-4xl"},ft={class:"api-input-grid grid grid-cols-1 lg:grid-cols-4"},yt={class:"lg:col-span-3"},pt=["disabled"],bt={class:"lg:col-span-1"},vt=["disabled"],kt={key:0,class:"fas fa-spinner loading-spinner"},_t={key:1,class:"fas fa-search"},wt={__name:"ApiKeyInput",setup(h){const o=K(),{apiKey:a,loading:m}=A(o),{queryStats:x}=o;return(c,e)=>(d(),n("div",ut,[e[6]||(e[6]=t("div",{class:"wide-card-title mb-6 text-center"},[t("h2",{class:"mb-2 text-2xl font-bold text-gray-900 dark:text-white"},[t("i",{class:"fas fa-chart-line mr-3"}),f(" 使用统计查询 ")]),t("p",{class:"text-base text-gray-600 dark:text-gray-300"},"查询您的 API Key 使用情况和统计数据")],-1)),t("div",gt,[t("div",ft,[t("div",yt,[e[3]||(e[3]=t("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-200"},[t("i",{class:"fas fa-key mr-2"}),f(" 输入您的 API Key ")],-1)),H(t("input",{"onUpdate:modelValue":e[0]||(e[0]=i=>X(a)?a.value=i:null),class:"wide-card-input w-full",disabled:s(m),placeholder:"请输入您的 API Key (cr_...)",type:"password",onKeyup:e[1]||(e[1]=G((...i)=>s(x)&&s(x)(...i),["enter"]))},null,40,pt),[[Q,s(a)]])]),t("div",bt,[e[4]||(e[4]=t("label",{class:"mb-2 hidden text-sm font-medium text-gray-700 dark:text-gray-200 lg:block"},"   ",-1)),t("button",{class:"btn btn-primary btn-query flex h-full w-full items-center justify-center gap-2",disabled:s(m)||!s(a).trim(),onClick:e[2]||(e[2]=(...i)=>s(x)&&s(x)(...i))},[s(m)?(d(),n("i",kt)):(d(),n("i",_t)),f(" "+l(s(m)?"查询中...":"查询统计"),1)],8,vt)])]),e[5]||(e[5]=t("div",{class:"security-notice mt-4"},[t("i",{class:"fas fa-shield-alt mr-2"}),f(" 您的 API Key 仅用于查询自己的统计数据,不会被存储或用于其他用途 ")],-1))])]))}},ht=q(wt,[["__scopeId","data-v-0b1313e4"]]),$t={class:"mb-6 grid grid-cols-1 gap-4 md:mb-8 md:gap-6 lg:grid-cols-2"},St={class:"card p-4 md:p-6"},Tt={class:"space-y-2 md:space-y-3"},Ct={class:"flex items-center justify-between"},Lt={class:"break-all text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},It={class:"flex items-center justify-between"},Dt={class:"flex items-center justify-between"},Pt={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},At={class:"flex items-center justify-between"},qt={class:"break-all text-xs font-medium text-gray-900 dark:text-gray-100 md:text-base"},Kt={class:"flex items-start justify-between"},Mt={key:0,class:"text-right"},Rt={key:0,class:"text-sm font-medium text-red-600 md:text-base"},jt={key:1,class:"break-all text-xs font-medium text-orange-600 md:text-base"},Ut={key:2,class:"break-all text-xs font-medium text-gray-900 dark:text-gray-100 md:text-base"},Et={key:1,class:"text-sm font-medium text-gray-400 dark:text-gray-500 md:text-base"},Ft={class:"card p-4 md:p-6"},Nt={class:"mb-3 flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:mb-4 md:text-xl"},Ot={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},Vt={class:"grid grid-cols-2 gap-3 md:gap-4"},Wt={class:"stat-card text-center"},zt={class:"text-lg font-bold text-green-600 md:text-3xl"},Bt={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Jt={class:"stat-card text-center"},Yt={class:"text-lg font-bold text-blue-600 md:text-3xl"},Ht={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Qt={class:"stat-card text-center"},Gt={class:"text-lg font-bold text-purple-600 md:text-3xl"},Xt={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Zt={class:"stat-card text-center"},te={class:"text-lg font-bold text-yellow-600 md:text-3xl"},ee={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},se={__name:"StatsOverview",setup(h){const o=K(),{statsData:a,statsPeriod:m,currentPeriodData:x}=A(o),c=u=>{if(!u)return"无";try{return dt(u).format("YYYY年MM月DD日 HH:mm")}catch{return"格式错误"}},e=u=>u?new Date(u).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):"",i=u=>u?new Date(u){if(!u)return!1;const T=(new Date(u)-new Date)/(1e3*60*60*24);return T>0&&T<=7},v=u=>(typeof u!="number"&&(u=parseInt(u)||0),u===0?"0":u>=1e6?(u/1e6).toFixed(1)+"M":u>=1e3?(u/1e3).toFixed(1)+"K":u.toLocaleString()),w=u=>({claude:"Claude",gemini:"Gemini",all:"全部模型"})[u]||u||"未知";return(u,g)=>(d(),n("div",$t,[t("div",St,[g[8]||(g[8]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-info-circle mr-2 text-sm text-blue-500 md:mr-3 md:text-base"}),f(" API Key 信息 ")],-1)),t("div",Tt,[t("div",Ct,[g[0]||(g[0]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"名称",-1)),t("span",Lt,l(s(a).name),1)]),t("div",It,[g[1]||(g[1]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"状态",-1)),t("span",{class:C(["text-sm font-medium md:text-base",s(a).isActive?"text-green-600":"text-red-600"])},[t("i",{class:C(["mr-1 text-xs md:text-sm",s(a).isActive?"fas fa-check-circle":"fas fa-times-circle"])},null,2),f(" "+l(s(a).isActive?"活跃":"已停用"),1)],2)]),t("div",Dt,[g[2]||(g[2]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"权限",-1)),t("span",Pt,l(w(s(a).permissions)),1)]),t("div",At,[g[3]||(g[3]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"创建时间",-1)),t("span",qt,l(c(s(a).createdAt)),1)]),t("div",Kt,[g[7]||(g[7]=t("span",{class:"mt-1 flex-shrink-0 text-sm text-gray-600 dark:text-gray-400 md:text-base"},"过期时间",-1)),s(a).expiresAt?(d(),n("div",Mt,[i(s(a).expiresAt)?(d(),n("div",Rt,g[4]||(g[4]=[t("i",{class:"fas fa-exclamation-circle mr-1 text-xs md:text-sm"},null,-1),f(" 已过期 ",-1)]))):p(s(a).expiresAt)?(d(),n("div",jt,[g[5]||(g[5]=t("i",{class:"fas fa-clock mr-1 text-xs md:text-sm"},null,-1)),f(" "+l(e(s(a).expiresAt)),1)])):(d(),n("div",Ut,l(e(s(a).expiresAt)),1))])):(d(),n("div",Et,g[6]||(g[6]=[t("i",{class:"fas fa-infinity mr-1 text-xs md:text-sm"},null,-1),f(" 永不过期 ",-1)])))])])]),t("div",Ft,[t("h3",Nt,[g[9]||(g[9]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-chart-bar mr-2 text-sm text-green-500 md:mr-3 md:text-base"}),f(" 使用统计概览 ")],-1)),t("span",Ot,"("+l(s(m)==="daily"?"今日":"本月")+")",1)]),t("div",Vt,[t("div",Wt,[t("div",zt,l(v(s(x).requests)),1),t("div",Bt,l(s(m)==="daily"?"今日":"本月")+"请求数 ",1)]),t("div",Jt,[t("div",Yt,l(v(s(x).allTokens)),1),t("div",Ht,l(s(m)==="daily"?"今日":"本月")+"Token数 ",1)]),t("div",Qt,[t("div",Gt,l(s(x).formattedCost||"$0.000000"),1),t("div",Xt,l(s(m)==="daily"?"今日":"本月")+"费用 ",1)]),t("div",Zt,[t("div",te,l(v(s(x).inputTokens)),1),t("div",ee,l(s(m)==="daily"?"今日":"本月")+"输入Token ",1)])])])]))}},ae=q(se,[["__scopeId","data-v-f536da49"]]),re={class:"card p-4 md:p-6"},ie={class:"mb-3 flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:mb-4 md:text-xl"},oe={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},le={class:"space-y-2 md:space-y-3"},ne={class:"flex items-center justify-between"},de={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},me={class:"flex items-center justify-between"},ce={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},xe={class:"flex items-center justify-between"},ue={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},ge={class:"flex items-center justify-between"},fe={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},ye={class:"mt-3 border-t border-gray-200 pt-3 dark:border-gray-700 md:mt-4 md:pt-4"},pe={class:"flex items-center justify-between font-bold text-gray-900 dark:text-gray-100"},be={class:"text-sm md:text-base"},ve={class:"text-lg md:text-xl"},ke={__name:"TokenDistribution",setup(h){const o=K(),{statsPeriod:a,currentPeriodData:m}=A(o),x=c=>(typeof c!="number"&&(c=parseInt(c)||0),c===0?"0":c>=1e6?(c/1e6).toFixed(1)+"M":c>=1e3?(c/1e3).toFixed(1)+"K":c.toLocaleString());return(c,e)=>(d(),n("div",re,[t("h3",ie,[e[0]||(e[0]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-coins mr-2 text-sm text-yellow-500 md:mr-3 md:text-base"}),f(" Token 使用分布 ")],-1)),t("span",oe,"("+l(s(a)==="daily"?"今日":"本月")+")",1)]),t("div",le,[t("div",ne,[e[1]||(e[1]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-arrow-right mr-1 text-xs text-green-500 md:mr-2 md:text-sm"}),f(" 输入 Token ")],-1)),t("span",de,l(x(s(m).inputTokens)),1)]),t("div",me,[e[2]||(e[2]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-arrow-left mr-1 text-xs text-blue-500 md:mr-2 md:text-sm"}),f(" 输出 Token ")],-1)),t("span",ce,l(x(s(m).outputTokens)),1)]),t("div",xe,[e[3]||(e[3]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-save mr-1 text-xs text-purple-500 md:mr-2 md:text-sm"}),f(" 缓存创建 Token ")],-1)),t("span",ue,l(x(s(m).cacheCreateTokens)),1)]),t("div",ge,[e[4]||(e[4]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-download mr-1 text-xs text-orange-500 md:mr-2 md:text-sm"}),f(" 缓存读取 Token ")],-1)),t("span",fe,l(x(s(m).cacheReadTokens)),1)])]),t("div",ye,[t("div",pe,[t("span",be,l(s(a)==="daily"?"今日":"本月")+"总计",1),t("span",ve,l(x(s(m).allTokens)),1)])])]))}},_e=q(ke,[["__scopeId","data-v-ecee0a94"]]),we={class:"card p-4 md:p-6"},he={class:"space-y-4 md:space-y-5"},$e={class:"mb-2 flex items-center justify-between"},Se={class:"text-xs text-gray-500 dark:text-gray-400 md:text-sm"},Te={key:0},Ce={key:1,class:"flex items-center gap-1"},Le={key:0,class:"h-2 w-full rounded-full bg-gray-200 dark:bg-gray-700"},Ie={key:1,class:"h-2 w-full rounded-full bg-gray-200"},De={key:0},Pe={class:"space-y-2 border-t border-gray-100 pt-2 dark:border-gray-700"},Ae={class:"flex items-center justify-between"},qe={class:"text-sm font-medium text-gray-900 md:text-base"},Ke={key:0},Me={key:1,class:"flex items-center gap-1"},Re={class:"flex items-center justify-between"},je={class:"text-sm font-medium text-gray-900 md:text-base"},Ue={key:0,class:"text-orange-600"},Ee={key:1,class:"text-green-600"},Fe={class:"flex items-center justify-between"},Ne={class:"text-sm font-medium text-gray-900 md:text-base"},Oe={key:0,class:"text-orange-600"},Ve={key:1,class:"text-green-600"},We={key:0,class:"card mt-4 p-4 md:mt-6 md:p-6"},ze={class:"grid grid-cols-1 gap-4 md:gap-6 lg:grid-cols-2"},Be={key:0,class:"rounded-lg border border-amber-200 bg-amber-50 p-3 dark:border-amber-800 dark:bg-amber-900/20 md:p-4"},Je={class:"space-y-1 md:space-y-2"},Ye={class:"break-all text-gray-800 dark:text-gray-200"},He={key:1,class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-800 dark:bg-blue-900/20 md:p-4"},Qe={class:"space-y-1 md:space-y-2"},Ge={class:"break-all text-gray-800 dark:text-gray-200"},Xe={__name:"LimitConfig",setup(h){const o=K(),{statsData:a}=A(o),m=()=>{if(!a.value.limits.dailyCostLimit||a.value.limits.dailyCostLimit===0)return 0;const c=a.value.limits.currentDailyCost/a.value.limits.dailyCostLimit*100;return Math.min(c,100)},x=()=>{const c=m();return c>=100?"bg-red-500":c>=80?"bg-yellow-500":"bg-green-500"};return(c,e)=>(d(),n("div",null,[t("div",we,[e[12]||(e[12]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-shield-alt mr-2 text-sm text-red-500 md:mr-3 md:text-base"}),f(" 限制配置 ")],-1)),t("div",he,[t("div",null,[t("div",$e,[e[1]||(e[1]=t("span",{class:"text-sm font-medium text-gray-600 dark:text-gray-400 md:text-base"},"每日费用限制",-1)),t("span",Se,[s(a).limits.dailyCostLimit>0?(d(),n("span",Te," $"+l(s(a).limits.currentDailyCost.toFixed(4))+" / $"+l(s(a).limits.dailyCostLimit.toFixed(2)),1)):(d(),n("span",Ce,[f(" $"+l(s(a).limits.currentDailyCost.toFixed(4))+" / ",1),e[0]||(e[0]=t("i",{class:"fas fa-infinity"},null,-1))]))])]),s(a).limits.dailyCostLimit>0?(d(),n("div",Le,[t("div",{class:C(["h-2 rounded-full transition-all duration-300",x()]),style:Z({width:m()+"%"})},null,6)])):(d(),n("div",Ie,e[2]||(e[2]=[t("div",{class:"h-2 rounded-full bg-green-500",style:{width:"0%"}},null,-1)])))]),s(a).limits.rateLimitWindow>0&&(s(a).limits.rateLimitRequests>0||s(a).limits.tokenLimit>0)?(d(),n("div",De,[S(mt,{"current-requests":s(a).limits.currentWindowRequests,"current-tokens":s(a).limits.currentWindowTokens,label:"时间窗口限制","rate-limit-window":s(a).limits.rateLimitWindow,"request-limit":s(a).limits.rateLimitRequests,"show-progress":!0,"show-tooltip":!0,"token-limit":s(a).limits.tokenLimit,"window-end-time":s(a).limits.windowEndTime,"window-remaining-seconds":s(a).limits.windowRemainingSeconds,"window-start-time":s(a).limits.windowStartTime},null,8,["current-requests","current-tokens","rate-limit-window","request-limit","token-limit","window-end-time","window-remaining-seconds","window-start-time"]),e[3]||(e[3]=t("div",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[t("i",{class:"fas fa-info-circle mr-1"}),f(' 请求次数和Token使用量为"或"的关系,任一达到限制即触发限流 ')],-1))])):L("",!0),t("div",Pe,[t("div",Ae,[e[5]||(e[5]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"并发限制",-1)),t("span",qe,[s(a).limits.concurrencyLimit>0?(d(),n("span",Ke,l(s(a).limits.concurrencyLimit),1)):(d(),n("span",Me,e[4]||(e[4]=[t("i",{class:"fas fa-infinity text-gray-400"},null,-1)])))])]),t("div",Re,[e[8]||(e[8]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"模型限制",-1)),t("span",je,[s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0?(d(),n("span",Ue,[e[6]||(e[6]=t("i",{class:"fas fa-exclamation-triangle mr-1 text-xs md:text-sm"},null,-1)),f(" 限制 "+l(s(a).restrictions.restrictedModels.length)+" 个模型 ",1)])):(d(),n("span",Ee,e[7]||(e[7]=[t("i",{class:"fas fa-check-circle mr-1 text-xs md:text-sm"},null,-1),f(" 允许所有模型 ",-1)])))])]),t("div",Fe,[e[11]||(e[11]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"客户端限制",-1)),t("span",Ne,[s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("span",Oe,[e[9]||(e[9]=t("i",{class:"fas fa-exclamation-triangle mr-1 text-xs md:text-sm"},null,-1)),f(" 限制 "+l(s(a).restrictions.allowedClients.length)+" 个客户端 ",1)])):(d(),n("span",Ve,e[10]||(e[10]=[t("i",{class:"fas fa-check-circle mr-1 text-xs md:text-sm"},null,-1),f(" 允许所有客户端 ",-1)])))])])])])]),s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0||s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("div",We,[e[19]||(e[19]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-list-alt mr-2 text-sm text-amber-500 md:mr-3 md:text-base"}),f(" 详细限制信息 ")],-1)),t("div",ze,[s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0?(d(),n("div",Be,[e[14]||(e[14]=t("h4",{class:"mb-2 flex items-center text-sm font-bold text-amber-800 dark:text-amber-300 md:mb-3 md:text-base"},[t("i",{class:"fas fa-robot mr-1 text-xs md:mr-2 md:text-sm"}),f(" 受限模型列表 ")],-1)),t("div",Je,[(d(!0),n(W,null,z(s(a).restrictions.restrictedModels,i=>(d(),n("div",{key:i,class:"rounded border border-amber-200 bg-white px-2 py-1 text-xs dark:border-amber-700 dark:bg-gray-800 md:px-3 md:py-2 md:text-sm"},[e[13]||(e[13]=t("i",{class:"fas fa-ban mr-1 text-xs text-red-500 md:mr-2"},null,-1)),t("span",Ye,l(i),1)]))),128))]),e[15]||(e[15]=t("p",{class:"mt-2 text-xs text-amber-700 dark:text-amber-400 md:mt-3"},[t("i",{class:"fas fa-info-circle mr-1"}),f(" 此 API Key 不能访问以上列出的模型 ")],-1))])):L("",!0),s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("div",He,[e[17]||(e[17]=t("h4",{class:"mb-2 flex items-center text-sm font-bold text-blue-800 dark:text-blue-300 md:mb-3 md:text-base"},[t("i",{class:"fas fa-desktop mr-1 text-xs md:mr-2 md:text-sm"}),f(" 允许的客户端 ")],-1)),t("div",Qe,[(d(!0),n(W,null,z(s(a).restrictions.allowedClients,i=>(d(),n("div",{key:i,class:"rounded border border-blue-200 bg-white px-2 py-1 text-xs dark:border-blue-700 dark:bg-gray-800 md:px-3 md:py-2 md:text-sm"},[e[16]||(e[16]=t("i",{class:"fas fa-check mr-1 text-xs text-green-500 md:mr-2"},null,-1)),t("span",Ge,l(i),1)]))),128))]),e[18]||(e[18]=t("p",{class:"mt-2 text-xs text-blue-700 dark:text-blue-400 md:mt-3"},[t("i",{class:"fas fa-info-circle mr-1"}),f(" 此 API Key 只能被以上列出的客户端使用 ")],-1))])):L("",!0)])])):L("",!0)]))}},Ze=q(Xe,[["__scopeId","data-v-2b2bf3be"]]),ts={class:"card p-4 md:p-6"},es={class:"mb-4 md:mb-6"},ss={class:"flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:text-xl"},as={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},rs={key:0,class:"py-6 text-center md:py-8"},is={key:1,class:"space-y-3 md:space-y-4"},os={class:"mb-2 flex items-start justify-between md:mb-3"},ls={class:"min-w-0 flex-1"},ns={class:"break-all text-base font-bold text-gray-900 dark:text-gray-100 md:text-lg"},ds={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},ms={class:"ml-3 flex-shrink-0 text-right"},cs={class:"text-base font-bold text-green-600 md:text-lg"},xs={class:"grid grid-cols-2 gap-2 text-xs md:grid-cols-4 md:gap-3 md:text-sm"},us={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},gs={class:"font-medium text-gray-900 dark:text-gray-100"},fs={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},ys={class:"font-medium text-gray-900 dark:text-gray-100"},ps={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},bs={class:"font-medium text-gray-900 dark:text-gray-100"},vs={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},ks={class:"font-medium text-gray-900 dark:text-gray-100"},_s={key:2,class:"py-6 text-center text-gray-500 dark:text-gray-400 md:py-8"},ws={class:"text-sm md:text-base"},hs={__name:"ModelUsageStats",setup(h){const o=K(),{statsPeriod:a,modelStats:m,modelStatsLoading:x}=A(o),c=e=>(typeof e!="number"&&(e=parseInt(e)||0),e===0?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toLocaleString());return(e,i)=>(d(),n("div",ts,[t("div",es,[t("h3",ss,[i[0]||(i[0]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-robot mr-2 text-sm text-indigo-500 md:mr-3 md:text-base"}),f(" 模型使用统计 ")],-1)),t("span",as,"("+l(s(a)==="daily"?"今日":"本月")+")",1)])]),s(x)?(d(),n("div",rs,i[1]||(i[1]=[t("i",{class:"fas fa-spinner loading-spinner mb-2 text-xl text-gray-600 dark:text-gray-400 md:text-2xl"},null,-1),t("p",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"加载模型统计数据中...",-1)]))):s(m).length>0?(d(),n("div",is,[(d(!0),n(W,null,z(s(m),(p,v)=>{var w;return d(),n("div",{key:v,class:"model-usage-item"},[t("div",os,[t("div",ls,[t("h4",ns,l(p.model),1),t("p",ds,l(p.requests)+" 次请求 ",1)]),t("div",ms,[t("div",cs,l(((w=p.formatted)==null?void 0:w.total)||"$0.000000"),1),i[2]||(i[2]=t("div",{class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},"总费用",-1))])]),t("div",xs,[t("div",us,[i[3]||(i[3]=t("div",{class:"text-gray-600 dark:text-gray-400"},"输入 Token",-1)),t("div",gs,l(c(p.inputTokens)),1)]),t("div",fs,[i[4]||(i[4]=t("div",{class:"text-gray-600 dark:text-gray-400"},"输出 Token",-1)),t("div",ys,l(c(p.outputTokens)),1)]),t("div",ps,[i[5]||(i[5]=t("div",{class:"text-gray-600 dark:text-gray-400"},"缓存创建",-1)),t("div",bs,l(c(p.cacheCreateTokens)),1)]),t("div",vs,[i[6]||(i[6]=t("div",{class:"text-gray-600 dark:text-gray-400"},"缓存读取",-1)),t("div",ks,l(c(p.cacheReadTokens)),1)])])])}),128))])):(d(),n("div",_s,[i[7]||(i[7]=t("i",{class:"fas fa-chart-pie mb-3 text-2xl md:text-3xl"},null,-1)),t("p",ws," 暂无"+l(s(a)==="daily"?"今日":"本月")+"模型使用数据 ",1)]))]))}},$s=q(hs,[["__scopeId","data-v-b3b8dc5f"]]),Ss={class:"glass-strong mb-6 rounded-3xl p-4 shadow-xl md:mb-8 md:p-6"},Ts={class:"flex flex-col items-center justify-between gap-4 md:flex-row"},Cs={class:"flex items-center gap-2 md:gap-4"},Ls={class:"flex items-center"},Is={class:"mb-6 md:mb-8"},Ds={class:"flex justify-center"},Ps={class:"inline-flex w-full max-w-md rounded-full border border-white/20 bg-white/10 p-1 shadow-lg backdrop-blur-xl md:w-auto"},As={key:0,class:"tab-content"},qs={key:0,class:"mb-6 md:mb-8"},Ks={class:"rounded-xl border border-red-500/30 bg-red-500/20 p-3 text-sm text-red-800 backdrop-blur-sm dark:border-red-500/20 dark:bg-red-500/10 dark:text-red-200 md:p-4 md:text-base"},Ms={key:1,class:"fade-in"},Rs={class:"glass-strong rounded-3xl p-4 shadow-xl md:p-6"},js={class:"mb-4 border-b border-gray-200 pb-4 dark:border-gray-700 md:mb-6 md:pb-6"},Us={class:"flex flex-col items-start justify-between gap-3 md:flex-row md:items-center md:gap-4"},Es={class:"flex w-full gap-2 md:w-auto"},Fs=["disabled"],Ns=["disabled"],Os={class:"mb-6 grid grid-cols-1 gap-4 md:mb-8 md:gap-6 lg:grid-cols-2"},Vs={key:1,class:"tab-content"},Ws={class:"glass-strong rounded-3xl shadow-xl"},zs={__name:"ApiStatsView",setup(h){const o=et(),a=K(),m=ot(),x=_("stats"),c=V(()=>m.isDarkMode),{apiKey:e,apiId:i,loading:p,modelStatsLoading:v,oemLoading:w,error:u,statsPeriod:g,statsData:U,oemSettings:T}=A(a),{queryStats:M,switchPeriod:I,loadStatsWithApiId:R,loadOemSettings:N,reset:O}=a,E=k=>{(k.ctrlKey||k.metaKey)&&k.key==="Enter"&&(!p.value&&e.value.trim()&&M(),k.preventDefault()),k.key==="Escape"&&O()};return tt(()=>{console.log("API Stats Page loaded"),m.initTheme(),N();const k=o.query.apiId,y=o.query.apiKey;k&&k.match(/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i)?(i.value=k,R()):y&&y.length>10&&(e.value=y),document.addEventListener("keydown",E)}),st(()=>{document.removeEventListener("keydown",E)}),at(e,k=>{k||a.clearData()}),(k,y)=>{const F=it("router-link");return d(),n("div",{class:C(["min-h-screen p-4 md:p-6",c.value?"gradient-bg-dark":"gradient-bg"])},[t("div",Ss,[t("div",Ts,[S(lt,{loading:s(w),"logo-src":s(T).siteIconData||s(T).siteIcon,subtitle:x.value==="stats"?"API Key 使用统计":"使用教程",title:s(T).siteName},null,8,["loading","logo-src","subtitle","title"]),t("div",Cs,[t("div",Ls,[S(nt,{mode:"dropdown"})]),y[5]||(y[5]=t("div",{class:"h-8 w-px bg-gradient-to-b from-transparent via-gray-300 to-transparent opacity-50 dark:via-gray-600"},null,-1)),S(F,{class:"admin-button-refined flex items-center gap-2 rounded-2xl px-4 py-2 transition-all duration-300 md:px-5 md:py-2.5",to:"/dashboard"},{default:rt(()=>y[4]||(y[4]=[t("i",{class:"fas fa-shield-alt text-sm md:text-base"},null,-1),t("span",{class:"text-xs font-semibold tracking-wide md:text-sm"},"管理后台",-1)])),_:1,__:[4]})])])]),t("div",Is,[t("div",Ds,[t("div",Ps,[t("button",{class:C(["tab-pill-button",x.value==="stats"?"active":""]),onClick:y[0]||(y[0]=j=>x.value="stats")},y[6]||(y[6]=[t("i",{class:"fas fa-chart-line mr-1 md:mr-2"},null,-1),t("span",{class:"text-sm md:text-base"},"统计查询",-1)]),2),t("button",{class:C(["tab-pill-button",x.value==="tutorial"?"active":""]),onClick:y[1]||(y[1]=j=>x.value="tutorial")},y[7]||(y[7]=[t("i",{class:"fas fa-graduation-cap mr-1 md:mr-2"},null,-1),t("span",{class:"text-sm md:text-base"},"使用教程",-1)]),2)])])]),x.value==="stats"?(d(),n("div",As,[S(ht),s(u)?(d(),n("div",qs,[t("div",Ks,[y[8]||(y[8]=t("i",{class:"fas fa-exclamation-triangle mr-2"},null,-1)),f(" "+l(s(u)),1)])])):L("",!0),s(U)?(d(),n("div",Ms,[t("div",Rs,[t("div",js,[t("div",Us,[y[11]||(y[11]=t("div",{class:"flex items-center gap-2 md:gap-3"},[t("i",{class:"fas fa-clock text-base text-blue-500 md:text-lg"}),t("span",{class:"text-base font-medium text-gray-700 dark:text-gray-200 md:text-lg"},"统计时间范围")],-1)),t("div",Es,[t("button",{class:C(["flex flex-1 items-center justify-center gap-1 px-4 py-2 text-xs font-medium md:flex-none md:gap-2 md:px-6 md:text-sm",["period-btn",{active:s(g)==="daily"}]]),disabled:s(p)||s(v),onClick:y[2]||(y[2]=j=>s(I)("daily"))},y[9]||(y[9]=[t("i",{class:"fas fa-calendar-day text-xs md:text-sm"},null,-1),f(" 今日 ",-1)]),10,Fs),t("button",{class:C(["flex flex-1 items-center justify-center gap-1 px-4 py-2 text-xs font-medium md:flex-none md:gap-2 md:px-6 md:text-sm",["period-btn",{active:s(g)==="monthly"}]]),disabled:s(p)||s(v),onClick:y[3]||(y[3]=j=>s(I)("monthly"))},y[10]||(y[10]=[t("i",{class:"fas fa-calendar-alt text-xs md:text-sm"},null,-1),f(" 本月 ",-1)]),10,Ns)])])]),S(ae),t("div",Os,[S(_e),S(Ze)]),S($s)])])):L("",!0)])):L("",!0),x.value==="tutorial"?(d(),n("div",Vs,[t("div",Ws,[S(ct)])])):L("",!0)],2)}}},ta=q(zs,[["__scopeId","data-v-fa71f87c"]]);export{ta as default}; +import{aR as Y,r as _,c as V,aV as A,x as n,y as d,z as t,O as f,K as H,aq as Q,u as s,aa as G,f as X,P as l,C,L,B as Z,R as S,Q as W,ac as z,q as tt,aU as et,V as st,o as at,J as rt,av as it}from"./vue-vendor-Ig-GgGwA.js";import{_ as q,a as ot}from"./index-CY9cPBXr.js";import{L as lt}from"./LogoTitle-DmOAmnuZ.js";import{T as nt}from"./ThemeToggle-Bb-3yEk7.js";import{b as dt}from"./vendor-BDiMbLwQ.js";import{_ as mt}from"./WindowCountdown-DSqUCtdk.js";import ct from"./TutorialView-N5jhXyjx.js";import"./element-plus-Bq6mBxnk.js";class xt{constructor(){this.baseURL=window.location.origin,this.isDev=!1}async request(o,a={}){try{this.isDev&&o.startsWith("/admin")&&(o="/webapi"+o);const m=await fetch(`${this.baseURL}${o}`,{headers:{"Content-Type":"application/json",...a.headers},...a}),x=await m.json();if(!m.ok)throw new Error(x.message||`请求失败: ${m.status}`);return x}catch(m){throw console.error("API Stats request error:",m),m}}async getKeyId(o){return this.request("/apiStats/api/get-key-id",{method:"POST",body:JSON.stringify({apiKey:o})})}async getUserStats(o){return this.request("/apiStats/api/user-stats",{method:"POST",body:JSON.stringify({apiId:o})})}async getUserModelStats(o,a="daily"){return this.request("/apiStats/api/user-model-stats",{method:"POST",body:JSON.stringify({apiId:o,period:a})})}async getOemSettings(){try{return await this.request("/admin/oem-settings")}catch(o){return console.error("Failed to load OEM settings:",o),{success:!0,data:{siteName:"Claude Relay Service",siteIcon:"",siteIconData:""}}}}}const P=new xt,K=Y("apistats",()=>{const h=_(""),o=_(null),a=_(!1),m=_(!1),x=_(!0),c=_(""),e=_("daily"),i=_(null),p=_([]),v=_(null),w=_(null),u=_({siteName:"",siteIcon:"",siteIconData:""}),g=V(()=>{const r={requests:0,inputTokens:0,outputTokens:0,cacheCreateTokens:0,cacheReadTokens:0,allTokens:0,cost:0,formattedCost:"$0.000000"};return e.value==="daily"?v.value||r:w.value||r}),U=V(()=>{if(!i.value||!g.value)return{tokenUsage:0,costUsage:0,requestUsage:0};const r=g.value,b=i.value.limits;return{tokenUsage:b.tokenLimit>0?Math.min(r.allTokens/b.tokenLimit*100,100):0,costUsage:b.dailyCostLimit>0?Math.min(r.cost/b.dailyCostLimit*100,100):0,requestUsage:b.rateLimitRequests>0?Math.min(r.requests/b.rateLimitRequests*100,100):0}});async function T(){if(!h.value.trim()){c.value="请输入 API Key";return}a.value=!0,c.value="",i.value=null,p.value=[],o.value=null;try{const r=await P.getKeyId(h.value);if(r.success){o.value=r.data.id;const b=await P.getUserStats(o.value);if(b.success)i.value=b.data,await M(),c.value="",y();else throw new Error(b.message||"查询失败")}else throw new Error(r.message||"获取 API Key ID 失败")}catch(r){console.error("Query stats error:",r),c.value=r.message||"查询统计数据失败,请检查您的 API Key 是否正确",i.value=null,p.value=[],o.value=null}finally{a.value=!1}}async function M(){o.value&&(await Promise.all([I("daily"),I("monthly")]),await R(e.value))}async function I(r){try{const b=await P.getUserModelStats(o.value,r);if(b.success){const J=b.data||[],$={requests:0,inputTokens:0,outputTokens:0,cacheCreateTokens:0,cacheReadTokens:0,allTokens:0,cost:0,formattedCost:"$0.000000"};J.forEach(D=>{var B;$.requests+=D.requests||0,$.inputTokens+=D.inputTokens||0,$.outputTokens+=D.outputTokens||0,$.cacheCreateTokens+=D.cacheCreateTokens||0,$.cacheReadTokens+=D.cacheReadTokens||0,$.allTokens+=D.allTokens||0,$.cost+=((B=D.costs)==null?void 0:B.total)||0}),$.formattedCost=k($.cost),r==="daily"?v.value=$:w.value=$}else console.warn(`Failed to load ${r} stats:`,b.message)}catch(b){console.error(`Load ${r} stats error:`,b)}}async function R(r="daily"){if(o.value){m.value=!0;try{const b=await P.getUserModelStats(o.value,r);if(b.success)p.value=b.data||[];else throw new Error(b.message||"加载模型统计失败")}catch(b){console.error("Load model stats error:",b),p.value=[]}finally{m.value=!1}}}async function N(r){e.value===r||m.value||(e.value=r,(r==="daily"&&!v.value||r==="monthly"&&!w.value)&&await I(r),await R(r))}async function O(){if(o.value){a.value=!0,c.value="",i.value=null,p.value=[];try{const r=await P.getUserStats(o.value);if(r.success)i.value=r.data,await M(),c.value="";else throw new Error(r.message||"查询失败")}catch(r){console.error("Load stats with apiId error:",r),c.value=r.message||"查询统计数据失败",i.value=null,p.value=[]}finally{a.value=!1}}}async function E(){x.value=!0;try{const r=await P.getOemSettings();r&&r.success&&r.data&&(u.value={...u.value,...r.data})}catch(r){console.error("Error loading OEM settings:",r),u.value={siteName:"Claude Relay Service",siteIcon:"",siteIconData:""}}finally{x.value=!1}}function k(r){return typeof r!="number"||r===0?"$0.000000":r>=1?"$"+r.toFixed(2):r>=.01?"$"+r.toFixed(4):"$"+r.toFixed(6)}function y(){if(o.value){const r=new URL(window.location);r.searchParams.set("apiId",o.value),window.history.pushState({},"",r)}}function F(){i.value=null,p.value=[],v.value=null,w.value=null,c.value="",e.value="daily",o.value=null}function j(){h.value="",F()}return{apiKey:h,apiId:o,loading:a,modelStatsLoading:m,oemLoading:x,error:c,statsPeriod:e,statsData:i,modelStats:p,dailyStats:v,monthlyStats:w,oemSettings:u,currentPeriodData:g,usagePercentages:U,queryStats:T,loadAllPeriodStats:M,loadPeriodStats:I,loadModelStats:R,switchPeriod:N,loadStatsWithApiId:O,loadOemSettings:E,clearData:F,reset:j}}),ut={class:"api-input-wide-card mb-8 rounded-3xl p-6 shadow-xl"},gt={class:"mx-auto max-w-4xl"},ft={class:"api-input-grid grid grid-cols-1 lg:grid-cols-4"},yt={class:"lg:col-span-3"},pt=["disabled"],bt={class:"lg:col-span-1"},vt=["disabled"],kt={key:0,class:"fas fa-spinner loading-spinner"},_t={key:1,class:"fas fa-search"},wt={__name:"ApiKeyInput",setup(h){const o=K(),{apiKey:a,loading:m}=A(o),{queryStats:x}=o;return(c,e)=>(d(),n("div",ut,[e[6]||(e[6]=t("div",{class:"wide-card-title mb-6 text-center"},[t("h2",{class:"mb-2 text-2xl font-bold text-gray-900 dark:text-white"},[t("i",{class:"fas fa-chart-line mr-3"}),f(" 使用统计查询 ")]),t("p",{class:"text-base text-gray-600 dark:text-gray-300"},"查询您的 API Key 使用情况和统计数据")],-1)),t("div",gt,[t("div",ft,[t("div",yt,[e[3]||(e[3]=t("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-200"},[t("i",{class:"fas fa-key mr-2"}),f(" 输入您的 API Key ")],-1)),H(t("input",{"onUpdate:modelValue":e[0]||(e[0]=i=>X(a)?a.value=i:null),class:"wide-card-input w-full",disabled:s(m),placeholder:"请输入您的 API Key (cr_...)",type:"password",onKeyup:e[1]||(e[1]=G((...i)=>s(x)&&s(x)(...i),["enter"]))},null,40,pt),[[Q,s(a)]])]),t("div",bt,[e[4]||(e[4]=t("label",{class:"mb-2 hidden text-sm font-medium text-gray-700 dark:text-gray-200 lg:block"},"   ",-1)),t("button",{class:"btn btn-primary btn-query flex h-full w-full items-center justify-center gap-2",disabled:s(m)||!s(a).trim(),onClick:e[2]||(e[2]=(...i)=>s(x)&&s(x)(...i))},[s(m)?(d(),n("i",kt)):(d(),n("i",_t)),f(" "+l(s(m)?"查询中...":"查询统计"),1)],8,vt)])]),e[5]||(e[5]=t("div",{class:"security-notice mt-4"},[t("i",{class:"fas fa-shield-alt mr-2"}),f(" 您的 API Key 仅用于查询自己的统计数据,不会被存储或用于其他用途 ")],-1))])]))}},ht=q(wt,[["__scopeId","data-v-0b1313e4"]]),$t={class:"mb-6 grid grid-cols-1 gap-4 md:mb-8 md:gap-6 lg:grid-cols-2"},St={class:"card p-4 md:p-6"},Tt={class:"space-y-2 md:space-y-3"},Ct={class:"flex items-center justify-between"},Lt={class:"break-all text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},It={class:"flex items-center justify-between"},Dt={class:"flex items-center justify-between"},Pt={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},At={class:"flex items-center justify-between"},qt={class:"break-all text-xs font-medium text-gray-900 dark:text-gray-100 md:text-base"},Kt={class:"flex items-start justify-between"},Mt={key:0,class:"text-right"},Rt={key:0,class:"text-sm font-medium text-red-600 md:text-base"},jt={key:1,class:"break-all text-xs font-medium text-orange-600 md:text-base"},Ut={key:2,class:"break-all text-xs font-medium text-gray-900 dark:text-gray-100 md:text-base"},Et={key:1,class:"text-sm font-medium text-gray-400 dark:text-gray-500 md:text-base"},Ft={class:"card p-4 md:p-6"},Nt={class:"mb-3 flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:mb-4 md:text-xl"},Ot={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},Vt={class:"grid grid-cols-2 gap-3 md:gap-4"},Wt={class:"stat-card text-center"},zt={class:"text-lg font-bold text-green-600 md:text-3xl"},Bt={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Jt={class:"stat-card text-center"},Yt={class:"text-lg font-bold text-blue-600 md:text-3xl"},Ht={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Qt={class:"stat-card text-center"},Gt={class:"text-lg font-bold text-purple-600 md:text-3xl"},Xt={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Zt={class:"stat-card text-center"},te={class:"text-lg font-bold text-yellow-600 md:text-3xl"},ee={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},se={__name:"StatsOverview",setup(h){const o=K(),{statsData:a,statsPeriod:m,currentPeriodData:x}=A(o),c=u=>{if(!u)return"无";try{return dt(u).format("YYYY年MM月DD日 HH:mm")}catch{return"格式错误"}},e=u=>u?new Date(u).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):"",i=u=>u?new Date(u){if(!u)return!1;const T=(new Date(u)-new Date)/(1e3*60*60*24);return T>0&&T<=7},v=u=>(typeof u!="number"&&(u=parseInt(u)||0),u===0?"0":u>=1e6?(u/1e6).toFixed(1)+"M":u>=1e3?(u/1e3).toFixed(1)+"K":u.toLocaleString()),w=u=>({claude:"Claude",gemini:"Gemini",all:"全部模型"})[u]||u||"未知";return(u,g)=>(d(),n("div",$t,[t("div",St,[g[8]||(g[8]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-info-circle mr-2 text-sm text-blue-500 md:mr-3 md:text-base"}),f(" API Key 信息 ")],-1)),t("div",Tt,[t("div",Ct,[g[0]||(g[0]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"名称",-1)),t("span",Lt,l(s(a).name),1)]),t("div",It,[g[1]||(g[1]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"状态",-1)),t("span",{class:C(["text-sm font-medium md:text-base",s(a).isActive?"text-green-600":"text-red-600"])},[t("i",{class:C(["mr-1 text-xs md:text-sm",s(a).isActive?"fas fa-check-circle":"fas fa-times-circle"])},null,2),f(" "+l(s(a).isActive?"活跃":"已停用"),1)],2)]),t("div",Dt,[g[2]||(g[2]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"权限",-1)),t("span",Pt,l(w(s(a).permissions)),1)]),t("div",At,[g[3]||(g[3]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"创建时间",-1)),t("span",qt,l(c(s(a).createdAt)),1)]),t("div",Kt,[g[7]||(g[7]=t("span",{class:"mt-1 flex-shrink-0 text-sm text-gray-600 dark:text-gray-400 md:text-base"},"过期时间",-1)),s(a).expiresAt?(d(),n("div",Mt,[i(s(a).expiresAt)?(d(),n("div",Rt,g[4]||(g[4]=[t("i",{class:"fas fa-exclamation-circle mr-1 text-xs md:text-sm"},null,-1),f(" 已过期 ",-1)]))):p(s(a).expiresAt)?(d(),n("div",jt,[g[5]||(g[5]=t("i",{class:"fas fa-clock mr-1 text-xs md:text-sm"},null,-1)),f(" "+l(e(s(a).expiresAt)),1)])):(d(),n("div",Ut,l(e(s(a).expiresAt)),1))])):(d(),n("div",Et,g[6]||(g[6]=[t("i",{class:"fas fa-infinity mr-1 text-xs md:text-sm"},null,-1),f(" 永不过期 ",-1)])))])])]),t("div",Ft,[t("h3",Nt,[g[9]||(g[9]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-chart-bar mr-2 text-sm text-green-500 md:mr-3 md:text-base"}),f(" 使用统计概览 ")],-1)),t("span",Ot,"("+l(s(m)==="daily"?"今日":"本月")+")",1)]),t("div",Vt,[t("div",Wt,[t("div",zt,l(v(s(x).requests)),1),t("div",Bt,l(s(m)==="daily"?"今日":"本月")+"请求数 ",1)]),t("div",Jt,[t("div",Yt,l(v(s(x).allTokens)),1),t("div",Ht,l(s(m)==="daily"?"今日":"本月")+"Token数 ",1)]),t("div",Qt,[t("div",Gt,l(s(x).formattedCost||"$0.000000"),1),t("div",Xt,l(s(m)==="daily"?"今日":"本月")+"费用 ",1)]),t("div",Zt,[t("div",te,l(v(s(x).inputTokens)),1),t("div",ee,l(s(m)==="daily"?"今日":"本月")+"输入Token ",1)])])])]))}},ae=q(se,[["__scopeId","data-v-f536da49"]]),re={class:"card p-4 md:p-6"},ie={class:"mb-3 flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:mb-4 md:text-xl"},oe={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},le={class:"space-y-2 md:space-y-3"},ne={class:"flex items-center justify-between"},de={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},me={class:"flex items-center justify-between"},ce={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},xe={class:"flex items-center justify-between"},ue={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},ge={class:"flex items-center justify-between"},fe={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},ye={class:"mt-3 border-t border-gray-200 pt-3 dark:border-gray-700 md:mt-4 md:pt-4"},pe={class:"flex items-center justify-between font-bold text-gray-900 dark:text-gray-100"},be={class:"text-sm md:text-base"},ve={class:"text-lg md:text-xl"},ke={__name:"TokenDistribution",setup(h){const o=K(),{statsPeriod:a,currentPeriodData:m}=A(o),x=c=>(typeof c!="number"&&(c=parseInt(c)||0),c===0?"0":c>=1e6?(c/1e6).toFixed(1)+"M":c>=1e3?(c/1e3).toFixed(1)+"K":c.toLocaleString());return(c,e)=>(d(),n("div",re,[t("h3",ie,[e[0]||(e[0]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-coins mr-2 text-sm text-yellow-500 md:mr-3 md:text-base"}),f(" Token 使用分布 ")],-1)),t("span",oe,"("+l(s(a)==="daily"?"今日":"本月")+")",1)]),t("div",le,[t("div",ne,[e[1]||(e[1]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-arrow-right mr-1 text-xs text-green-500 md:mr-2 md:text-sm"}),f(" 输入 Token ")],-1)),t("span",de,l(x(s(m).inputTokens)),1)]),t("div",me,[e[2]||(e[2]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-arrow-left mr-1 text-xs text-blue-500 md:mr-2 md:text-sm"}),f(" 输出 Token ")],-1)),t("span",ce,l(x(s(m).outputTokens)),1)]),t("div",xe,[e[3]||(e[3]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-save mr-1 text-xs text-purple-500 md:mr-2 md:text-sm"}),f(" 缓存创建 Token ")],-1)),t("span",ue,l(x(s(m).cacheCreateTokens)),1)]),t("div",ge,[e[4]||(e[4]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-download mr-1 text-xs text-orange-500 md:mr-2 md:text-sm"}),f(" 缓存读取 Token ")],-1)),t("span",fe,l(x(s(m).cacheReadTokens)),1)])]),t("div",ye,[t("div",pe,[t("span",be,l(s(a)==="daily"?"今日":"本月")+"总计",1),t("span",ve,l(x(s(m).allTokens)),1)])])]))}},_e=q(ke,[["__scopeId","data-v-ecee0a94"]]),we={class:"card p-4 md:p-6"},he={class:"space-y-4 md:space-y-5"},$e={class:"mb-2 flex items-center justify-between"},Se={class:"text-xs text-gray-500 dark:text-gray-400 md:text-sm"},Te={key:0},Ce={key:1,class:"flex items-center gap-1"},Le={key:0,class:"h-2 w-full rounded-full bg-gray-200 dark:bg-gray-700"},Ie={key:1,class:"h-2 w-full rounded-full bg-gray-200"},De={key:0},Pe={class:"space-y-2 border-t border-gray-100 pt-2 dark:border-gray-700"},Ae={class:"flex items-center justify-between"},qe={class:"text-sm font-medium text-gray-900 md:text-base"},Ke={key:0},Me={key:1,class:"flex items-center gap-1"},Re={class:"flex items-center justify-between"},je={class:"text-sm font-medium text-gray-900 md:text-base"},Ue={key:0,class:"text-orange-600"},Ee={key:1,class:"text-green-600"},Fe={class:"flex items-center justify-between"},Ne={class:"text-sm font-medium text-gray-900 md:text-base"},Oe={key:0,class:"text-orange-600"},Ve={key:1,class:"text-green-600"},We={key:0,class:"card mt-4 p-4 md:mt-6 md:p-6"},ze={class:"grid grid-cols-1 gap-4 md:gap-6 lg:grid-cols-2"},Be={key:0,class:"rounded-lg border border-amber-200 bg-amber-50 p-3 dark:border-amber-800 dark:bg-amber-900/20 md:p-4"},Je={class:"space-y-1 md:space-y-2"},Ye={class:"break-all text-gray-800 dark:text-gray-200"},He={key:1,class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-800 dark:bg-blue-900/20 md:p-4"},Qe={class:"space-y-1 md:space-y-2"},Ge={class:"break-all text-gray-800 dark:text-gray-200"},Xe={__name:"LimitConfig",setup(h){const o=K(),{statsData:a}=A(o),m=()=>{if(!a.value.limits.dailyCostLimit||a.value.limits.dailyCostLimit===0)return 0;const c=a.value.limits.currentDailyCost/a.value.limits.dailyCostLimit*100;return Math.min(c,100)},x=()=>{const c=m();return c>=100?"bg-red-500":c>=80?"bg-yellow-500":"bg-green-500"};return(c,e)=>(d(),n("div",null,[t("div",we,[e[12]||(e[12]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-shield-alt mr-2 text-sm text-red-500 md:mr-3 md:text-base"}),f(" 限制配置 ")],-1)),t("div",he,[t("div",null,[t("div",$e,[e[1]||(e[1]=t("span",{class:"text-sm font-medium text-gray-600 dark:text-gray-400 md:text-base"},"每日费用限制",-1)),t("span",Se,[s(a).limits.dailyCostLimit>0?(d(),n("span",Te," $"+l(s(a).limits.currentDailyCost.toFixed(4))+" / $"+l(s(a).limits.dailyCostLimit.toFixed(2)),1)):(d(),n("span",Ce,[f(" $"+l(s(a).limits.currentDailyCost.toFixed(4))+" / ",1),e[0]||(e[0]=t("i",{class:"fas fa-infinity"},null,-1))]))])]),s(a).limits.dailyCostLimit>0?(d(),n("div",Le,[t("div",{class:C(["h-2 rounded-full transition-all duration-300",x()]),style:Z({width:m()+"%"})},null,6)])):(d(),n("div",Ie,e[2]||(e[2]=[t("div",{class:"h-2 rounded-full bg-green-500",style:{width:"0%"}},null,-1)])))]),s(a).limits.rateLimitWindow>0&&(s(a).limits.rateLimitRequests>0||s(a).limits.tokenLimit>0)?(d(),n("div",De,[S(mt,{"current-requests":s(a).limits.currentWindowRequests,"current-tokens":s(a).limits.currentWindowTokens,label:"时间窗口限制","rate-limit-window":s(a).limits.rateLimitWindow,"request-limit":s(a).limits.rateLimitRequests,"show-progress":!0,"show-tooltip":!0,"token-limit":s(a).limits.tokenLimit,"window-end-time":s(a).limits.windowEndTime,"window-remaining-seconds":s(a).limits.windowRemainingSeconds,"window-start-time":s(a).limits.windowStartTime},null,8,["current-requests","current-tokens","rate-limit-window","request-limit","token-limit","window-end-time","window-remaining-seconds","window-start-time"]),e[3]||(e[3]=t("div",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[t("i",{class:"fas fa-info-circle mr-1"}),f(' 请求次数和Token使用量为"或"的关系,任一达到限制即触发限流 ')],-1))])):L("",!0),t("div",Pe,[t("div",Ae,[e[5]||(e[5]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"并发限制",-1)),t("span",qe,[s(a).limits.concurrencyLimit>0?(d(),n("span",Ke,l(s(a).limits.concurrencyLimit),1)):(d(),n("span",Me,e[4]||(e[4]=[t("i",{class:"fas fa-infinity text-gray-400"},null,-1)])))])]),t("div",Re,[e[8]||(e[8]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"模型限制",-1)),t("span",je,[s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0?(d(),n("span",Ue,[e[6]||(e[6]=t("i",{class:"fas fa-exclamation-triangle mr-1 text-xs md:text-sm"},null,-1)),f(" 限制 "+l(s(a).restrictions.restrictedModels.length)+" 个模型 ",1)])):(d(),n("span",Ee,e[7]||(e[7]=[t("i",{class:"fas fa-check-circle mr-1 text-xs md:text-sm"},null,-1),f(" 允许所有模型 ",-1)])))])]),t("div",Fe,[e[11]||(e[11]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"客户端限制",-1)),t("span",Ne,[s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("span",Oe,[e[9]||(e[9]=t("i",{class:"fas fa-exclamation-triangle mr-1 text-xs md:text-sm"},null,-1)),f(" 限制 "+l(s(a).restrictions.allowedClients.length)+" 个客户端 ",1)])):(d(),n("span",Ve,e[10]||(e[10]=[t("i",{class:"fas fa-check-circle mr-1 text-xs md:text-sm"},null,-1),f(" 允许所有客户端 ",-1)])))])])])])]),s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0||s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("div",We,[e[19]||(e[19]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-list-alt mr-2 text-sm text-amber-500 md:mr-3 md:text-base"}),f(" 详细限制信息 ")],-1)),t("div",ze,[s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0?(d(),n("div",Be,[e[14]||(e[14]=t("h4",{class:"mb-2 flex items-center text-sm font-bold text-amber-800 dark:text-amber-300 md:mb-3 md:text-base"},[t("i",{class:"fas fa-robot mr-1 text-xs md:mr-2 md:text-sm"}),f(" 受限模型列表 ")],-1)),t("div",Je,[(d(!0),n(W,null,z(s(a).restrictions.restrictedModels,i=>(d(),n("div",{key:i,class:"rounded border border-amber-200 bg-white px-2 py-1 text-xs dark:border-amber-700 dark:bg-gray-800 md:px-3 md:py-2 md:text-sm"},[e[13]||(e[13]=t("i",{class:"fas fa-ban mr-1 text-xs text-red-500 md:mr-2"},null,-1)),t("span",Ye,l(i),1)]))),128))]),e[15]||(e[15]=t("p",{class:"mt-2 text-xs text-amber-700 dark:text-amber-400 md:mt-3"},[t("i",{class:"fas fa-info-circle mr-1"}),f(" 此 API Key 不能访问以上列出的模型 ")],-1))])):L("",!0),s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("div",He,[e[17]||(e[17]=t("h4",{class:"mb-2 flex items-center text-sm font-bold text-blue-800 dark:text-blue-300 md:mb-3 md:text-base"},[t("i",{class:"fas fa-desktop mr-1 text-xs md:mr-2 md:text-sm"}),f(" 允许的客户端 ")],-1)),t("div",Qe,[(d(!0),n(W,null,z(s(a).restrictions.allowedClients,i=>(d(),n("div",{key:i,class:"rounded border border-blue-200 bg-white px-2 py-1 text-xs dark:border-blue-700 dark:bg-gray-800 md:px-3 md:py-2 md:text-sm"},[e[16]||(e[16]=t("i",{class:"fas fa-check mr-1 text-xs text-green-500 md:mr-2"},null,-1)),t("span",Ge,l(i),1)]))),128))]),e[18]||(e[18]=t("p",{class:"mt-2 text-xs text-blue-700 dark:text-blue-400 md:mt-3"},[t("i",{class:"fas fa-info-circle mr-1"}),f(" 此 API Key 只能被以上列出的客户端使用 ")],-1))])):L("",!0)])])):L("",!0)]))}},Ze=q(Xe,[["__scopeId","data-v-2b2bf3be"]]),ts={class:"card p-4 md:p-6"},es={class:"mb-4 md:mb-6"},ss={class:"flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:text-xl"},as={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},rs={key:0,class:"py-6 text-center md:py-8"},is={key:1,class:"space-y-3 md:space-y-4"},os={class:"mb-2 flex items-start justify-between md:mb-3"},ls={class:"min-w-0 flex-1"},ns={class:"break-all text-base font-bold text-gray-900 dark:text-gray-100 md:text-lg"},ds={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},ms={class:"ml-3 flex-shrink-0 text-right"},cs={class:"text-base font-bold text-green-600 md:text-lg"},xs={class:"grid grid-cols-2 gap-2 text-xs md:grid-cols-4 md:gap-3 md:text-sm"},us={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},gs={class:"font-medium text-gray-900 dark:text-gray-100"},fs={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},ys={class:"font-medium text-gray-900 dark:text-gray-100"},ps={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},bs={class:"font-medium text-gray-900 dark:text-gray-100"},vs={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},ks={class:"font-medium text-gray-900 dark:text-gray-100"},_s={key:2,class:"py-6 text-center text-gray-500 dark:text-gray-400 md:py-8"},ws={class:"text-sm md:text-base"},hs={__name:"ModelUsageStats",setup(h){const o=K(),{statsPeriod:a,modelStats:m,modelStatsLoading:x}=A(o),c=e=>(typeof e!="number"&&(e=parseInt(e)||0),e===0?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toLocaleString());return(e,i)=>(d(),n("div",ts,[t("div",es,[t("h3",ss,[i[0]||(i[0]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-robot mr-2 text-sm text-indigo-500 md:mr-3 md:text-base"}),f(" 模型使用统计 ")],-1)),t("span",as,"("+l(s(a)==="daily"?"今日":"本月")+")",1)])]),s(x)?(d(),n("div",rs,i[1]||(i[1]=[t("i",{class:"fas fa-spinner loading-spinner mb-2 text-xl text-gray-600 dark:text-gray-400 md:text-2xl"},null,-1),t("p",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"加载模型统计数据中...",-1)]))):s(m).length>0?(d(),n("div",is,[(d(!0),n(W,null,z(s(m),(p,v)=>{var w;return d(),n("div",{key:v,class:"model-usage-item"},[t("div",os,[t("div",ls,[t("h4",ns,l(p.model),1),t("p",ds,l(p.requests)+" 次请求 ",1)]),t("div",ms,[t("div",cs,l(((w=p.formatted)==null?void 0:w.total)||"$0.000000"),1),i[2]||(i[2]=t("div",{class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},"总费用",-1))])]),t("div",xs,[t("div",us,[i[3]||(i[3]=t("div",{class:"text-gray-600 dark:text-gray-400"},"输入 Token",-1)),t("div",gs,l(c(p.inputTokens)),1)]),t("div",fs,[i[4]||(i[4]=t("div",{class:"text-gray-600 dark:text-gray-400"},"输出 Token",-1)),t("div",ys,l(c(p.outputTokens)),1)]),t("div",ps,[i[5]||(i[5]=t("div",{class:"text-gray-600 dark:text-gray-400"},"缓存创建",-1)),t("div",bs,l(c(p.cacheCreateTokens)),1)]),t("div",vs,[i[6]||(i[6]=t("div",{class:"text-gray-600 dark:text-gray-400"},"缓存读取",-1)),t("div",ks,l(c(p.cacheReadTokens)),1)])])])}),128))])):(d(),n("div",_s,[i[7]||(i[7]=t("i",{class:"fas fa-chart-pie mb-3 text-2xl md:text-3xl"},null,-1)),t("p",ws," 暂无"+l(s(a)==="daily"?"今日":"本月")+"模型使用数据 ",1)]))]))}},$s=q(hs,[["__scopeId","data-v-b3b8dc5f"]]),Ss={class:"glass-strong mb-6 rounded-3xl p-4 shadow-xl md:mb-8 md:p-6"},Ts={class:"flex flex-col items-center justify-between gap-4 md:flex-row"},Cs={class:"flex items-center gap-2 md:gap-4"},Ls={class:"flex items-center"},Is={class:"mb-6 md:mb-8"},Ds={class:"flex justify-center"},Ps={class:"inline-flex w-full max-w-md rounded-full border border-white/20 bg-white/10 p-1 shadow-lg backdrop-blur-xl md:w-auto"},As={key:0,class:"tab-content"},qs={key:0,class:"mb-6 md:mb-8"},Ks={class:"rounded-xl border border-red-500/30 bg-red-500/20 p-3 text-sm text-red-800 backdrop-blur-sm dark:border-red-500/20 dark:bg-red-500/10 dark:text-red-200 md:p-4 md:text-base"},Ms={key:1,class:"fade-in"},Rs={class:"glass-strong rounded-3xl p-4 shadow-xl md:p-6"},js={class:"mb-4 border-b border-gray-200 pb-4 dark:border-gray-700 md:mb-6 md:pb-6"},Us={class:"flex flex-col items-start justify-between gap-3 md:flex-row md:items-center md:gap-4"},Es={class:"flex w-full gap-2 md:w-auto"},Fs=["disabled"],Ns=["disabled"],Os={class:"mb-6 grid grid-cols-1 gap-4 md:mb-8 md:gap-6 lg:grid-cols-2"},Vs={key:1,class:"tab-content"},Ws={class:"glass-strong rounded-3xl shadow-xl"},zs={__name:"ApiStatsView",setup(h){const o=et(),a=K(),m=ot(),x=_("stats"),c=V(()=>m.isDarkMode),{apiKey:e,apiId:i,loading:p,modelStatsLoading:v,oemLoading:w,error:u,statsPeriod:g,statsData:U,oemSettings:T}=A(a),{queryStats:M,switchPeriod:I,loadStatsWithApiId:R,loadOemSettings:N,reset:O}=a,E=k=>{(k.ctrlKey||k.metaKey)&&k.key==="Enter"&&(!p.value&&e.value.trim()&&M(),k.preventDefault()),k.key==="Escape"&&O()};return tt(()=>{console.log("API Stats Page loaded"),m.initTheme(),N();const k=o.query.apiId,y=o.query.apiKey;k&&k.match(/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i)?(i.value=k,R()):y&&y.length>10&&(e.value=y),document.addEventListener("keydown",E)}),st(()=>{document.removeEventListener("keydown",E)}),at(e,k=>{k||a.clearData()}),(k,y)=>{const F=it("router-link");return d(),n("div",{class:C(["min-h-screen p-4 md:p-6",c.value?"gradient-bg-dark":"gradient-bg"])},[t("div",Ss,[t("div",Ts,[S(lt,{loading:s(w),"logo-src":s(T).siteIconData||s(T).siteIcon,subtitle:x.value==="stats"?"API Key 使用统计":"使用教程",title:s(T).siteName},null,8,["loading","logo-src","subtitle","title"]),t("div",Cs,[t("div",Ls,[S(nt,{mode:"dropdown"})]),y[5]||(y[5]=t("div",{class:"h-8 w-px bg-gradient-to-b from-transparent via-gray-300 to-transparent opacity-50 dark:via-gray-600"},null,-1)),S(F,{class:"admin-button-refined flex items-center gap-2 rounded-2xl px-4 py-2 transition-all duration-300 md:px-5 md:py-2.5",to:"/dashboard"},{default:rt(()=>y[4]||(y[4]=[t("i",{class:"fas fa-shield-alt text-sm md:text-base"},null,-1),t("span",{class:"text-xs font-semibold tracking-wide md:text-sm"},"管理后台",-1)])),_:1,__:[4]})])])]),t("div",Is,[t("div",Ds,[t("div",Ps,[t("button",{class:C(["tab-pill-button",x.value==="stats"?"active":""]),onClick:y[0]||(y[0]=j=>x.value="stats")},y[6]||(y[6]=[t("i",{class:"fas fa-chart-line mr-1 md:mr-2"},null,-1),t("span",{class:"text-sm md:text-base"},"统计查询",-1)]),2),t("button",{class:C(["tab-pill-button",x.value==="tutorial"?"active":""]),onClick:y[1]||(y[1]=j=>x.value="tutorial")},y[7]||(y[7]=[t("i",{class:"fas fa-graduation-cap mr-1 md:mr-2"},null,-1),t("span",{class:"text-sm md:text-base"},"使用教程",-1)]),2)])])]),x.value==="stats"?(d(),n("div",As,[S(ht),s(u)?(d(),n("div",qs,[t("div",Ks,[y[8]||(y[8]=t("i",{class:"fas fa-exclamation-triangle mr-2"},null,-1)),f(" "+l(s(u)),1)])])):L("",!0),s(U)?(d(),n("div",Ms,[t("div",Rs,[t("div",js,[t("div",Us,[y[11]||(y[11]=t("div",{class:"flex items-center gap-2 md:gap-3"},[t("i",{class:"fas fa-clock text-base text-blue-500 md:text-lg"}),t("span",{class:"text-base font-medium text-gray-700 dark:text-gray-200 md:text-lg"},"统计时间范围")],-1)),t("div",Es,[t("button",{class:C(["flex flex-1 items-center justify-center gap-1 px-4 py-2 text-xs font-medium md:flex-none md:gap-2 md:px-6 md:text-sm",["period-btn",{active:s(g)==="daily"}]]),disabled:s(p)||s(v),onClick:y[2]||(y[2]=j=>s(I)("daily"))},y[9]||(y[9]=[t("i",{class:"fas fa-calendar-day text-xs md:text-sm"},null,-1),f(" 今日 ",-1)]),10,Fs),t("button",{class:C(["flex flex-1 items-center justify-center gap-1 px-4 py-2 text-xs font-medium md:flex-none md:gap-2 md:px-6 md:text-sm",["period-btn",{active:s(g)==="monthly"}]]),disabled:s(p)||s(v),onClick:y[3]||(y[3]=j=>s(I)("monthly"))},y[10]||(y[10]=[t("i",{class:"fas fa-calendar-alt text-xs md:text-sm"},null,-1),f(" 本月 ",-1)]),10,Ns)])])]),S(ae),t("div",Os,[S(_e),S(Ze)]),S($s)])])):L("",!0)])):L("",!0),x.value==="tutorial"?(d(),n("div",Vs,[t("div",Ws,[S(ct)])])):L("",!0)],2)}}},ta=q(zs,[["__scopeId","data-v-fa71f87c"]]);export{ta as default}; diff --git a/assets/CustomDropdown-D7ci0ZD4.js b/assets/CustomDropdown-C7e2WJat.js similarity index 96% rename from assets/CustomDropdown-D7ci0ZD4.js rename to assets/CustomDropdown-C7e2WJat.js index e9766108..f393fa6c 100644 --- a/assets/CustomDropdown-D7ci0ZD4.js +++ b/assets/CustomDropdown-C7e2WJat.js @@ -1 +1 @@ -import{r as m,c as D,q as E,Z as R,x as n,y as r,z as d,I as N,L as v,C as c,P as L,R as T,J as W,B as $,Q as O,ac as q,T as A,a5 as H,D as I}from"./vue-vendor-DfnFpxGJ.js";import{_ as P}from"./index-BdtiivzQ.js";const F={class:"relative"},J={class:"select-none whitespace-nowrap text-sm font-medium text-gray-700 dark:text-gray-200"},M={class:"max-h-60 overflow-y-auto py-1"},Q=["onClick"],U={key:1,class:"fas fa-check ml-auto pl-3 text-xs text-blue-600"},Z={__name:"CustomDropdown",props:{modelValue:{type:[String,Number],default:""},options:{type:Array,required:!0},placeholder:{type:String,default:"请选择"},icon:{type:String,default:""},iconColor:{type:String,default:"text-gray-500"}},emits:["update:modelValue","change"],setup(o,{emit:V}){const p=o,y=V,t=m(!1),l=m(null),u=m(null),w=m({}),B=D(()=>{const e=p.options.find(i=>i.value===p.modelValue);return e?e.label:""}),S=async()=>{t.value=!t.value,t.value&&(await I(),h())},f=()=>{t.value=!1},z=e=>{y("update:modelValue",e.value),y("change",e.value),f()},h=()=>{if(!l.value||!t.value)return;const e=l.value.getBoundingClientRect(),i=250,a=window.innerHeight-e.bottom,C=e.top;let g,s;a>=i||a>=C?g=e.bottom+8:g=e.top-i-8,s=e.left;const _=200;s+_>window.innerWidth&&(s=window.innerWidth-_-10),s<10&&(s=10),w.value={top:`${g}px`,left:`${s}px`,minWidth:`${e.width}px`}},x=()=>{t.value&&h()},b=()=>{t.value&&f()},k=e=>{!l.value||!t.value||l.value.contains(e.target)||(u.value&&!u.value.contains(e.target)?f():u.value||f())};return E(()=>{window.addEventListener("scroll",x,!0),window.addEventListener("resize",b),document.addEventListener("click",k)}),R(()=>{window.removeEventListener("scroll",x,!0),window.removeEventListener("resize",b),document.removeEventListener("click",k)}),(e,i)=>(r(),n("div",F,[d("div",{ref_key:"triggerRef",ref:l,class:c(["relative flex cursor-pointer items-center gap-2 rounded-lg border border-gray-200 bg-white px-3 py-2 shadow-sm transition-all duration-200 hover:shadow-md dark:border-gray-600 dark:bg-gray-800",[t.value&&"border-blue-400 shadow-md"]]),onClick:S},[o.icon?(r(),n("i",{key:0,class:c(["fas",o.icon,"text-sm",o.iconColor])},null,2)):v("",!0),d("span",J,L(B.value||o.placeholder),1),d("i",{class:c(["fas fa-chevron-down ml-auto text-xs text-gray-400 transition-transform duration-200 dark:text-gray-500",t.value&&"rotate-180"])},null,2)],2),(r(),N(H,{to:"body"},[T(A,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"transform scale-95 opacity-0","enter-to-class":"transform scale-100 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"transform scale-100 opacity-100","leave-to-class":"transform scale-95 opacity-0"},{default:W(()=>[t.value?(r(),n("div",{key:0,ref_key:"dropdownRef",ref:u,class:"fixed z-[9999] min-w-max overflow-hidden rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-600 dark:bg-gray-800",style:$(w.value)},[d("div",M,[(r(!0),n(O,null,q(o.options,a=>(r(),n("div",{key:a.value,class:c(["flex cursor-pointer items-center gap-2 whitespace-nowrap px-3 py-2 text-sm transition-colors duration-150",[a.value===o.modelValue?"bg-blue-50 font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400":"text-gray-700 hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700"]]),onClick:C=>z(a)},[a.icon?(r(),n("i",{key:0,class:c(["fas",a.icon,"text-xs"])},null,2)):v("",!0),d("span",null,L(a.label),1),a.value===o.modelValue?(r(),n("i",U)):v("",!0)],10,Q))),128))])],4)):v("",!0)]),_:1})]))]))}},K=P(Z,[["__scopeId","data-v-ffee8773"]]);export{K as C}; +import{r as m,c as D,q as E,Z as R,x as n,y as r,z as d,I as N,L as v,C as c,P as L,R as T,J as W,B as $,Q as O,ac as q,T as A,a5 as H,D as I}from"./vue-vendor-Ig-GgGwA.js";import{_ as P}from"./index-CY9cPBXr.js";const F={class:"relative"},J={class:"select-none whitespace-nowrap text-sm font-medium text-gray-700 dark:text-gray-200"},M={class:"max-h-60 overflow-y-auto py-1"},Q=["onClick"],U={key:1,class:"fas fa-check ml-auto pl-3 text-xs text-blue-600"},Z={__name:"CustomDropdown",props:{modelValue:{type:[String,Number],default:""},options:{type:Array,required:!0},placeholder:{type:String,default:"请选择"},icon:{type:String,default:""},iconColor:{type:String,default:"text-gray-500"}},emits:["update:modelValue","change"],setup(o,{emit:V}){const p=o,y=V,t=m(!1),l=m(null),u=m(null),w=m({}),B=D(()=>{const e=p.options.find(i=>i.value===p.modelValue);return e?e.label:""}),S=async()=>{t.value=!t.value,t.value&&(await I(),h())},f=()=>{t.value=!1},z=e=>{y("update:modelValue",e.value),y("change",e.value),f()},h=()=>{if(!l.value||!t.value)return;const e=l.value.getBoundingClientRect(),i=250,a=window.innerHeight-e.bottom,C=e.top;let g,s;a>=i||a>=C?g=e.bottom+8:g=e.top-i-8,s=e.left;const _=200;s+_>window.innerWidth&&(s=window.innerWidth-_-10),s<10&&(s=10),w.value={top:`${g}px`,left:`${s}px`,minWidth:`${e.width}px`}},x=()=>{t.value&&h()},b=()=>{t.value&&f()},k=e=>{!l.value||!t.value||l.value.contains(e.target)||(u.value&&!u.value.contains(e.target)?f():u.value||f())};return E(()=>{window.addEventListener("scroll",x,!0),window.addEventListener("resize",b),document.addEventListener("click",k)}),R(()=>{window.removeEventListener("scroll",x,!0),window.removeEventListener("resize",b),document.removeEventListener("click",k)}),(e,i)=>(r(),n("div",F,[d("div",{ref_key:"triggerRef",ref:l,class:c(["relative flex cursor-pointer items-center gap-2 rounded-lg border border-gray-200 bg-white px-3 py-2 shadow-sm transition-all duration-200 hover:shadow-md dark:border-gray-600 dark:bg-gray-800",[t.value&&"border-blue-400 shadow-md"]]),onClick:S},[o.icon?(r(),n("i",{key:0,class:c(["fas",o.icon,"text-sm",o.iconColor])},null,2)):v("",!0),d("span",J,L(B.value||o.placeholder),1),d("i",{class:c(["fas fa-chevron-down ml-auto text-xs text-gray-400 transition-transform duration-200 dark:text-gray-500",t.value&&"rotate-180"])},null,2)],2),(r(),N(H,{to:"body"},[T(A,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"transform scale-95 opacity-0","enter-to-class":"transform scale-100 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"transform scale-100 opacity-100","leave-to-class":"transform scale-95 opacity-0"},{default:W(()=>[t.value?(r(),n("div",{key:0,ref_key:"dropdownRef",ref:u,class:"fixed z-[9999] min-w-max overflow-hidden rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-600 dark:bg-gray-800",style:$(w.value)},[d("div",M,[(r(!0),n(O,null,q(o.options,a=>(r(),n("div",{key:a.value,class:c(["flex cursor-pointer items-center gap-2 whitespace-nowrap px-3 py-2 text-sm transition-colors duration-150",[a.value===o.modelValue?"bg-blue-50 font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400":"text-gray-700 hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700"]]),onClick:C=>z(a)},[a.icon?(r(),n("i",{key:0,class:c(["fas",a.icon,"text-xs"])},null,2)):v("",!0),d("span",null,L(a.label),1),a.value===o.modelValue?(r(),n("i",U)):v("",!0)],10,Q))),128))])],4)):v("",!0)]),_:1})]))]))}},K=P(Z,[["__scopeId","data-v-ffee8773"]]);export{K as C}; diff --git a/assets/DashboardView-B8PC7PpI.js b/assets/DashboardView-B8PC7PpI.js new file mode 100644 index 00000000..e02db618 --- /dev/null +++ b/assets/DashboardView-B8PC7PpI.js @@ -0,0 +1 @@ +import{E as $t}from"./element-plus-Bq6mBxnk.js";import{aR as Rt,r as $,c as wt,aV as Tt,o as st,q as At,D as Z,V as Pt,x as h,z as t,P as y,u as a,L as P,O as B,Q as _t,ac as Ct,C as j,R as Bt,K as It,al as Ut,y as k}from"./vue-vendor-Ig-GgGwA.js";import{b as J,_ as Mt,a as Kt}from"./index-CY9cPBXr.js";import{s as bt}from"./toast-BvwA7Mwb.js";import{C as vt}from"./chart-Cor9iTVD.js";import"./vendor-BDiMbLwQ.js";const Ot=Rt("dashboard",()=>{const ot=$(!1),Y=$({totalApiKeys:0,activeApiKeys:0,totalAccounts:0,normalAccounts:0,abnormalAccounts:0,pausedAccounts:0,activeAccounts:0,rateLimitedAccounts:0,accountsByPlatform:{claude:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},"claude-console":{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},gemini:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},openai:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},azure_openai:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},bedrock:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0}},todayRequests:0,totalRequests:0,todayTokens:0,todayInputTokens:0,todayOutputTokens:0,totalTokens:0,totalInputTokens:0,totalOutputTokens:0,totalCacheCreateTokens:0,totalCacheReadTokens:0,todayCacheCreateTokens:0,todayCacheReadTokens:0,systemRPM:0,systemTPM:0,realtimeRPM:0,realtimeTPM:0,metricsWindow:5,isHistoricalMetrics:!1,systemStatus:"正常",uptime:0,systemTimezone:8}),nt=$({todayCosts:{totalCost:0,formatted:{totalCost:"$0.000000"}},totalCosts:{totalCost:0,formatted:{totalCost:"$0.000000"}}}),G=$([]),o=$([]),X=$([]),z=$({data:[],topApiKeys:[],totalApiKeys:0}),n=$({type:"preset",preset:"7days",customStart:"",customEnd:"",customRange:null,presetOptions:[{value:"today",label:"今日",days:1},{value:"7days",label:"7天",days:7},{value:"30days",label:"30天",days:30}]}),T=$("day"),lt=$("requests"),q=$([new Date(2e3,1,1,0,0,0),new Date(2e3,2,1,23,59,59)]),E=wt(()=>{const c=Y.value.uptime,r=Math.floor(c/86400),i=Math.floor(c%86400/3600),d=Math.floor(c%3600/60);return r>0?`${r}天 ${i}小时`:i>0?`${i}小时 ${d}分钟`:`${d}分钟`});function f(c,r=!0){const i=c.getFullYear(),d=c.getMonth(),l=c.getDate();return r?new Date(Date.UTC(i,d,l-1,16,0,0,0)):new Date(Date.UTC(i,d,l,15,59,59,999))}async function pt(c=null){ot.value=!0;try{let r={today:"today",all:"all"};c&&(r={today:{today:"today",all:"today"},"7days":{today:"7days",all:"7days"},monthly:{today:"monthly",all:"monthly"},all:{today:"today",all:"all"}}[c]||r);const[i,d,l]=await Promise.all([J.get("/admin/dashboard"),J.get(`/admin/usage-costs?period=${r.today}`),J.get(`/admin/usage-costs?period=${r.all}`)]);if(i.success){const s=i.data.overview||{},u=i.data.recentActivity||{},m=i.data.systemAverages||{},_=i.data.realtimeMetrics||{},C=i.data.systemHealth||{};Y.value={totalApiKeys:s.totalApiKeys||0,activeApiKeys:s.activeApiKeys||0,totalAccounts:s.totalAccounts||s.totalClaudeAccounts||0,normalAccounts:s.normalAccounts||0,abnormalAccounts:s.abnormalAccounts||0,pausedAccounts:s.pausedAccounts||0,activeAccounts:s.activeAccounts||s.activeClaudeAccounts||0,rateLimitedAccounts:s.rateLimitedAccounts||s.rateLimitedClaudeAccounts||0,accountsByPlatform:s.accountsByPlatform||{claude:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},"claude-console":{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},gemini:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},openai:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},azure_openai:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},bedrock:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0}},todayRequests:u.requestsToday||0,totalRequests:s.totalRequestsUsed||0,todayTokens:u.tokensToday||0,todayInputTokens:u.inputTokensToday||0,todayOutputTokens:u.outputTokensToday||0,totalTokens:s.totalTokensUsed||0,totalInputTokens:s.totalInputTokensUsed||0,totalOutputTokens:s.totalOutputTokensUsed||0,totalCacheCreateTokens:s.totalCacheCreateTokensUsed||0,totalCacheReadTokens:s.totalCacheReadTokensUsed||0,todayCacheCreateTokens:u.cacheCreateTokensToday||0,todayCacheReadTokens:u.cacheReadTokensToday||0,systemRPM:m.rpm||0,systemTPM:m.tpm||0,realtimeRPM:_.rpm||0,realtimeTPM:_.tpm||0,metricsWindow:_.windowMinutes||5,isHistoricalMetrics:_.isHistorical||!1,systemStatus:C.redisConnected?"正常":"异常",uptime:C.uptime||0,systemTimezone:i.data.systemTimezone||8}}d.success&&l.success&&(nt.value={todayCosts:d.data.totalCosts||{totalCost:0,formatted:{totalCost:"$0.000000"}},totalCosts:l.data.totalCosts||{totalCost:0,formatted:{totalCost:"$0.000000"}}})}catch(r){console.error("加载仪表板数据失败:",r)}finally{ot.value=!1}}async function rt(c=7,r="day"){try{let i="/admin/usage-trend?";if(r==="hour")if(i+="granularity=hour",n.value.customRange&&n.value.customRange.length===2){const l=s=>{const[m,_]=s.split(" "),[C,x,v]=m.split("-").map(Number),[M,K,O]=_.split(":").map(Number);return new Date(Date.UTC(C,x-1,v,M-8,K,O)).toISOString()};i+=`&startDate=${encodeURIComponent(l(n.value.customRange[0]))}`,i+=`&endDate=${encodeURIComponent(l(n.value.customRange[1]))}`}else{const l=new Date;let s,u;if(n.value.type==="preset")switch(n.value.preset){case"last24h":{u=new Date(l),s=new Date(l.getTime()-24*60*60*1e3);break}case"yesterday":{const m=new Date;m.setDate(m.getDate()-1),s=f(m,!0),u=f(m,!1);break}case"dayBefore":{const m=new Date;m.setDate(m.getDate()-2),s=f(m,!0),u=f(m,!1);break}default:s=new Date(l.getTime()-24*60*60*1e3),u=l}else s=new Date(l.getTime()-c*24*60*60*1e3),u=l;i+=`&startDate=${encodeURIComponent(s.toISOString())}`,i+=`&endDate=${encodeURIComponent(u.toISOString())}`}else i+=`granularity=day&days=${c}`;const d=await J.get(i);d.success&&(o.value=d.data)}catch(i){console.error("加载使用趋势失败:",i)}}async function it(c="daily"){try{let r=`/admin/model-stats?period=${c}`;if(n.value.type==="custom"||T.value==="hour"){if(n.value.customRange&&n.value.customRange.length===2){const d=l=>{const[u,m]=l.split(" "),[_,C,x]=u.split("-").map(Number),[v,M,K]=m.split(":").map(Number);return new Date(Date.UTC(_,C-1,x,v-8,M,K)).toISOString()};r+=`&startDate=${encodeURIComponent(d(n.value.customRange[0]))}`,r+=`&endDate=${encodeURIComponent(d(n.value.customRange[1]))}`}else if(T.value==="hour"&&n.value.type==="preset"){const d=new Date;let l,s;switch(n.value.preset){case"last24h":{s=new Date(d),l=new Date(d.getTime()-24*60*60*1e3);break}case"yesterday":{const u=new Date;u.setDate(u.getDate()-1),l=f(u,!0),s=f(u,!1);break}case"dayBefore":{const u=new Date;u.setDate(u.getDate()-2),l=f(u,!0),s=f(u,!1);break}default:l=new Date(d.getTime()-24*60*60*1e3),s=d}r+=`&startDate=${encodeURIComponent(l.toISOString())}`,r+=`&endDate=${encodeURIComponent(s.toISOString())}`}}else if(n.value.type==="preset"&&T.value==="day"){const d=new Date;let l,s;const u=n.value.presetOptions.find(m=>m.value===n.value.preset);if(u){if(n.value.preset==="today")l=f(d,!0),s=f(d,!1);else{const m=new Date;m.setDate(m.getDate()-(u.days-1)),l=f(m,!0),s=f(d,!1)}r+=`&startDate=${encodeURIComponent(l.toISOString())}`,r+=`&endDate=${encodeURIComponent(s.toISOString())}`}}const i=await J.get(r);i.success&&(X.value=i.data)}catch(r){console.error("加载模型统计失败:",r)}}async function dt(c="requests"){try{let r="/admin/api-keys-usage-trend?",i=7;if(T.value==="hour")if(r+="granularity=hour",n.value.customRange&&n.value.customRange.length===2){const l=s=>{const[m,_]=s.split(" "),[C,x,v]=m.split("-").map(Number),[M,K,O]=_.split(":").map(Number);return new Date(Date.UTC(C,x-1,v,M-8,K,O)).toISOString()};r+=`&startDate=${encodeURIComponent(l(n.value.customRange[0]))}`,r+=`&endDate=${encodeURIComponent(l(n.value.customRange[1]))}`}else{const l=new Date;let s,u;if(n.value.type==="preset")switch(n.value.preset){case"last24h":{u=new Date(l),s=new Date(l.getTime()-24*60*60*1e3);break}case"yesterday":{const m=new Date;m.setDate(m.getDate()-1),s=f(m,!0),u=f(m,!1);break}case"dayBefore":{const m=new Date;m.setDate(m.getDate()-2),s=f(m,!0),u=f(m,!1);break}default:s=new Date(l.getTime()-24*60*60*1e3),u=l}else s=new Date(l.getTime()-24*60*60*1e3),u=l;r+=`&startDate=${encodeURIComponent(s.toISOString())}`,r+=`&endDate=${encodeURIComponent(u.toISOString())}`}else i=n.value.type==="preset"?n.value.preset==="today"?1:n.value.preset==="7days"?7:30:Q(n.value.customStart,n.value.customEnd),r+=`granularity=day&days=${i}`;r+=`&metric=${c}`;const d=await J.get(r);d.success&&(z.value={data:d.data||[],topApiKeys:d.topApiKeys||[],totalApiKeys:d.totalApiKeys||0})}catch(r){console.error("加载API Keys趋势失败:",r)}}function N(c){n.value.type="preset",n.value.preset=c;const r=n.value.presetOptions.find(i=>i.value===c);if(r){const i=new Date;let d,l;if(T.value==="hour")switch(c){case"last24h":{l=new Date(i),d=new Date(i.getTime()-24*60*60*1e3);break}case"yesterday":{const s=new Date;s.setDate(s.getDate()-1),d=f(s,!0),l=f(s,!1);break}case"dayBefore":{const s=new Date;s.setDate(s.getDate()-2),d=f(s,!0),l=f(s,!1);break}}else d=new Date(i),l=new Date(i),c==="today"?(d.setHours(0,0,0,0),l.setHours(23,59,59,999)):(d.setDate(i.getDate()-(r.days-1)),d.setHours(0,0,0,0),l.setHours(23,59,59,999));if(n.value.customStart=d.toISOString().split("T")[0],n.value.customEnd=l.toISOString().split("T")[0],T.value==="hour"&&(c==="yesterday"||c==="dayBefore")){const s=new Date;c==="yesterday"?s.setDate(s.getDate()-1):s.setDate(s.getDate()-2);const u=s.getFullYear(),m=String(s.getMonth()+1).padStart(2,"0"),_=String(s.getDate()).padStart(2,"0");n.value.customRange=[`${u}-${m}-${_} 00:00:00`,`${u}-${m}-${_} 23:59:59`]}else{const s=u=>{const C=new Date(u.getTime()+288e5),x=C.getUTCFullYear(),v=String(C.getUTCMonth()+1).padStart(2,"0"),M=String(C.getUTCDate()).padStart(2,"0"),K=String(C.getUTCHours()).padStart(2,"0"),O=String(C.getUTCMinutes()).padStart(2,"0"),L=String(C.getUTCSeconds()).padStart(2,"0");return`${x}-${v}-${M} ${K}:${O}:${L}`};n.value.customRange=[s(d),s(l)]}}W()}function ct(c){if(c&&c.length===2){n.value.type="custom",n.value.preset="",n.value.customRange=c,n.value.customStart=c[0].split(" ")[0],n.value.customEnd=c[1].split(" ")[0];const r=l=>{const[s,u]=l.split(" "),[m,_,C]=s.split("-").map(Number),[x,v,M]=u.split(":").map(Number);return new Date(m,_-1,C,x,v,M)},i=r(c[0]),d=r(c[1]);if(T.value==="hour"){if((d-i)/36e5>24){bt("小时粒度下日期范围不能超过24小时","warning");return}}else if(Math.ceil((d-i)/864e5)+1>31){bt("日期范围不能超过 31 天","warning");return}W()}else c===null&&N(T.value==="hour"?"last24h":"7days")}function gt(c){if(T.value=c,c==="hour"){if(n.value.presetOptions=[{value:"last24h",label:"近24小时",hours:24},{value:"yesterday",label:"昨天",hours:24},{value:"dayBefore",label:"前天",hours:24}],n.value.type==="custom"&&n.value.customRange&&n.value.customRange.length===2){const r=new Date(n.value.customRange[0]);if((new Date(n.value.customRange[1])-r)/(1e3*60*60)>24){bt("小时粒度下日期范围不能超过24小时,已切换到近24小时","warning"),N("last24h");return}}if(["today","7days","30days"].includes(n.value.preset)){N("last24h");return}}else if(n.value.presetOptions=[{value:"today",label:"今日",days:1},{value:"7days",label:"7天",days:7},{value:"30days",label:"30天",days:30}],["last24h","yesterday","dayBefore"].includes(n.value.preset)){N("7days");return}W()}async function W(){let c,r="monthly";if(n.value.type==="preset"){const i=n.value.presetOptions.find(d=>d.value===n.value.preset);T.value==="hour"?(c=1,r="daily"):(c=i?i.days:7,n.value.preset==="today"?r="daily":r="monthly")}else{if(T.value==="hour"){const i=new Date(n.value.customRange[0]),d=new Date(n.value.customRange[1]),l=Math.ceil((d-i)/(1e3*60*60));c=Math.ceil(l/24)||1}else c=Q(n.value.customStart,n.value.customEnd);r="daily"}await Promise.all([rt(c,T.value),it(r),dt(lt.value)])}function Q(c,r){if(!c||!r)return 7;const i=new Date(c),d=new Date(r),l=Math.abs(d-i);return Math.ceil(l/(1e3*60*60*24))||7}function tt(c){return c>new Date}return{loading:ot,dashboardData:Y,costsData:nt,modelStats:G,trendData:o,dashboardModelStats:X,apiKeysTrendData:z,dateFilter:n,trendGranularity:T,apiKeysTrendMetric:lt,defaultTime:q,formattedUptime:E,loadDashboardData:pt,loadUsageTrend:rt,loadModelStats:it,loadApiKeysTrend:dt,setDateFilterPreset:N,onCustomDateRangeChange:ct,setTrendGranularity:gt,refreshChartsData:W,disabledDate:tt}}),Ft={class:"mb-4 grid grid-cols-1 gap-3 sm:mb-6 sm:grid-cols-2 sm:gap-4 md:mb-8 md:gap-6 lg:grid-cols-4"},zt={class:"stat-card"},Lt={class:"flex items-center justify-between"},Ht={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},qt={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Et={class:"stat-card"},Nt={class:"flex items-center justify-between"},Vt={class:"flex-1"},jt={class:"flex flex-wrap items-baseline gap-x-2"},Yt={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},Gt={key:0,class:"flex items-center gap-2"},Wt=["title"],Qt={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},Zt=["title"],Jt={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},Xt=["title"],te={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},ee=["title"],ae={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},se=["title"],oe={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},ne=["title"],le={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},re={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ie={key:0,class:"text-red-600"},de={key:1,class:"text-gray-600 dark:text-gray-400"},ce={key:2,class:"text-yellow-600"},ue={class:"stat-card"},me={class:"flex items-center justify-between"},ye={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},pe={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ge={class:"stat-card"},fe={class:"flex items-center justify-between"},xe={class:"text-2xl font-bold text-green-600 sm:text-3xl"},be={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ve={class:"mb-4 grid grid-cols-1 gap-3 sm:mb-6 sm:grid-cols-2 sm:gap-4 md:mb-8 md:gap-6 lg:grid-cols-4"},he={class:"stat-card"},ke={class:"flex items-center justify-between"},De={class:"mr-8 flex-1"},Te={class:"mb-2 flex flex-wrap items-baseline gap-2"},_e={class:"text-xl font-bold text-blue-600 sm:text-2xl md:text-3xl"},Ce={class:"text-sm font-medium text-green-600"},we={class:"text-xs text-gray-500 dark:text-gray-400"},Se={class:"flex flex-wrap items-center justify-between gap-x-4"},$e={class:"font-medium"},Re={class:"font-medium"},Ae={key:0,class:"text-purple-600"},Pe={class:"font-medium"},Be={key:1,class:"text-purple-600"},Ie={class:"font-medium"},Ue={class:"stat-card"},Me={class:"flex items-center justify-between"},Ke={class:"mr-8 flex-1"},Oe={class:"mb-2 flex flex-wrap items-baseline gap-2"},Fe={class:"text-xl font-bold text-emerald-600 sm:text-2xl md:text-3xl"},ze={class:"text-sm font-medium text-green-600"},Le={class:"text-xs text-gray-500 dark:text-gray-400"},He={class:"flex flex-wrap items-center justify-between gap-x-4"},qe={class:"font-medium"},Ee={class:"font-medium"},Ne={key:0,class:"text-purple-600"},Ve={class:"font-medium"},je={key:1,class:"text-purple-600"},Ye={class:"font-medium"},Ge={class:"stat-card"},We={class:"flex items-center justify-between"},Qe={class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"},Ze={class:"text-xs text-gray-400"},Je={class:"text-2xl font-bold text-orange-600 sm:text-3xl"},Xe={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ta={key:0,class:"text-yellow-600"},ea={class:"stat-card"},aa={class:"flex items-center justify-between"},sa={class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"},oa={class:"text-xs text-gray-400"},na={class:"text-2xl font-bold text-rose-600 sm:text-3xl"},la={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ra={key:0,class:"text-yellow-600"},ia={class:"mb-8"},da={class:"mb-4 flex flex-col gap-4 sm:mb-6"},ca={class:"flex flex-col gap-2 lg:flex-row lg:items-center lg:justify-end"},ua={class:"flex flex-shrink-0 gap-1 overflow-x-auto rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},ma=["onClick"],ya={class:"flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},pa={class:"flex items-center gap-2"},ga={key:0,class:"text-xs text-orange-600"},fa={class:"flex items-center gap-2"},xa={class:"flex items-center rounded-lg bg-gray-100 px-3 py-1 dark:bg-gray-700"},ba={class:"relative inline-flex cursor-pointer items-center"},va={class:"ml-2.5 flex select-none items-center gap-1 text-sm font-medium text-gray-600 dark:text-gray-300"},ha=["disabled"],ka={class:"hidden sm:inline"},Da={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Ta={class:"card p-4 sm:p-6"},_a={class:"relative",style:{height:"250px"}},Ca={class:"card p-4 sm:p-6"},wa={key:0,class:"py-8 text-center"},Sa={key:1,class:"max-h-[250px] overflow-auto sm:max-h-[300px]"},$a={class:"min-w-full"},Ra={class:"divide-y divide-gray-200 dark:divide-gray-600"},Aa={class:"px-2 py-2 text-xs text-gray-900 dark:text-gray-100 sm:px-4 sm:text-sm"},Pa=["title"],Ba={class:"hidden px-2 py-2 text-right text-xs text-gray-600 dark:text-gray-400 sm:table-cell sm:px-4 sm:text-sm"},Ia={class:"px-2 py-2 text-right text-xs text-gray-600 dark:text-gray-400 sm:px-4 sm:text-sm"},Ua={class:"px-2 py-2 text-right text-xs font-medium text-green-600 sm:px-4 sm:text-sm"},Ma={class:"hidden px-2 py-2 text-right text-xs font-medium sm:table-cell sm:px-4 sm:text-sm"},Ka={class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-1 text-xs font-medium text-blue-800 dark:bg-blue-900/30 dark:text-blue-300"},Oa={class:"mb-4 sm:mb-6 md:mb-8"},Fa={class:"card p-4 sm:p-6"},za={class:"sm:h-[300px]",style:{height:"250px"}},La={class:"mb-4 sm:mb-6 md:mb-8"},Ha={class:"card p-4 sm:p-6"},qa={class:"mb-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},Ea={class:"flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},Na={class:"mb-4 text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},Va={key:0},ja={key:1},Ya={class:"sm:h-[350px]",style:{height:"300px"}},Ga={__name:"DashboardView",setup(ot){const Y=Ot(),nt=Kt(),{isDarkMode:G}=Tt(nt),{dashboardData:o,costsData:X,dashboardModelStats:z,trendData:n,apiKeysTrendData:T,formattedUptime:lt,dateFilter:q,trendGranularity:E,apiKeysTrendMetric:f,defaultTime:pt}=Tt(Y),{loadDashboardData:rt,loadApiKeysTrend:it,setDateFilterPreset:dt,onCustomDateRangeChange:N,setTrendGranularity:ct,refreshChartsData:gt,disabledDate:W}=Y,Q=$(null),tt=$(null),c=$(null);let r=null,i=null,d=null;const l=$(!1),s=$(30),u=$(null),m=$(0),_=$(null),C=$(!1),x=wt(()=>({text:G.value?"#e5e7eb":"#374151",grid:G.value?"rgba(75, 85, 99, 0.3)":"rgba(0, 0, 0, 0.1)",legend:G.value?"#e5e7eb":"#374151"}));function v(D){return D>=1e6?(D/1e6).toFixed(2)+"M":D>=1e3?(D/1e3).toFixed(2)+"K":D.toString()}function M(D,e){if(!e||e.length===0)return 0;const R=e.reduce((g,H)=>g+H.allTokens,0);return R===0?0:(D/R*100).toFixed(1)}function K(){if(!Q.value)return;r&&r.destroy();const D=z.value||[],e={labels:D.map(R=>R.model),datasets:[{data:D.map(R=>R.allTokens),backgroundColor:["#3B82F6","#10B981","#F59E0B","#EF4444","#8B5CF6","#EC4899","#14B8A6","#F97316","#6366F1","#84CC16"],borderWidth:0}]};r=new vt(Q.value,{type:"doughnut",data:e,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{padding:15,usePointStyle:!0,font:{size:12},color:x.value.legend}},tooltip:{callbacks:{label:function(R){const g=R.label||"",H=v(R.parsed),et=M(R.parsed,D);return`${g}: ${H} (${et}%)`}}}}}})}function O(){var A;if(!tt.value)return;i&&i.destroy();const D=n.value||[],e=D.map(p=>p.inputTokens||0),R=D.map(p=>p.outputTokens||0),g=D.map(p=>p.cacheCreateTokens||0),H=D.map(p=>p.cacheReadTokens||0),et=D.map(p=>p.requests||0),ut=D.map(p=>p.cost||0),mt=(A=D[0])!=null&&A.date?"date":"hour",U={labels:D.map(p=>{if(p.label)return p.label;if(mt==="hour"){const b=new Date(p.hour),I=String(b.getMonth()+1).padStart(2,"0"),V=String(b.getDate()).padStart(2,"0"),yt=String(b.getHours()).padStart(2,"0");return`${I}/${V} ${yt}:00`}const S=p.date;if(S&&S.includes("-")){const b=S.split("-");if(b.length>=3)return`${b[1]}/${b[2]}`}return p.date}),datasets:[{label:"输入Token",data:e,borderColor:"rgb(102, 126, 234)",backgroundColor:"rgba(102, 126, 234, 0.1)",tension:.3},{label:"输出Token",data:R,borderColor:"rgb(240, 147, 251)",backgroundColor:"rgba(240, 147, 251, 0.1)",tension:.3},{label:"缓存创建Token",data:g,borderColor:"rgb(59, 130, 246)",backgroundColor:"rgba(59, 130, 246, 0.1)",tension:.3},{label:"缓存读取Token",data:H,borderColor:"rgb(147, 51, 234)",backgroundColor:"rgba(147, 51, 234, 0.1)",tension:.3},{label:"费用 (USD)",data:ut,borderColor:"rgb(34, 197, 94)",backgroundColor:"rgba(34, 197, 94, 0.1)",tension:.3,yAxisID:"y2"},{label:"请求数",data:et,borderColor:"rgb(16, 185, 129)",backgroundColor:"rgba(16, 185, 129, 0.1)",tension:.3,yAxisID:"y1"}]};i=new vt(tt.value,{type:"line",data:U,options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{title:{display:!0,text:"Token使用趋势",font:{size:16,weight:"bold"},color:x.value.text},legend:{position:"top",labels:{color:x.value.legend}},tooltip:{mode:"index",intersect:!1,itemSort:function(p,S){const b=p.dataset.label||"",I=S.dataset.label||"";return b==="费用 (USD)"||I==="费用 (USD)"?b==="费用 (USD)"?-1:1:b==="请求数"||I==="请求数"?b==="请求数"?1:-1:S.parsed.y-p.parsed.y},callbacks:{label:function(p){const S=p.dataset.label||"";let b=p.parsed.y;return S==="费用 (USD)"?b<.01?S+": $"+b.toFixed(6):S+": $"+b.toFixed(4):S==="请求数"?S+": "+b.toLocaleString()+" 次":b>=1e6?S+": "+(b/1e6).toFixed(2)+"M tokens":b>=1e3?S+": "+(b/1e3).toFixed(2)+"K tokens":S+": "+b.toLocaleString()+" tokens"}}}},scales:{x:{type:"category",display:!0,title:{display:!0,text:E==="hour"?"时间":"日期",color:x.value.text},ticks:{color:x.value.text},grid:{color:x.value.grid}},y:{type:"linear",display:!0,position:"left",title:{display:!0,text:"Token数量",color:x.value.text},ticks:{callback:function(p){return v(p)},color:x.value.text},grid:{color:x.value.grid}},y1:{type:"linear",display:!0,position:"right",title:{display:!0,text:"请求数",color:x.value.text},grid:{drawOnChartArea:!1},ticks:{callback:function(p){return p.toLocaleString()},color:x.value.text}},y2:{type:"linear",display:!1,position:"right"}}}})}function L(){var ut,mt;if(!c.value)return;d&&d.destroy();const D=T.value.data||[],e=f.value,R=["#3B82F6","#10B981","#F59E0B","#EF4444","#8B5CF6","#EC4899","#14B8A6","#F97316","#6366F1","#84CC16"],g=((ut=T.value.topApiKeys)==null?void 0:ut.map((w,U)=>{var S,b;const A=T.value.data.map(I=>!I.apiKeys||!I.apiKeys[w]?0:e==="tokens"?I.apiKeys[w].tokens:I.apiKeys[w].requests||0);return{label:((b=(S=T.value.data.find(I=>I.apiKeys&&I.apiKeys[w]))==null?void 0:S.apiKeys[w])==null?void 0:b.name)||`API Key ${w}`,data:A,borderColor:R[U%R.length],backgroundColor:R[U%R.length]+"20",tension:.4,fill:!1}}))||[],H=(mt=D[0])!=null&&mt.date?"date":"hour",et={labels:D.map(w=>{if(w.label)return w.label;if(H==="hour"){const A=new Date(w.hour),p=String(A.getMonth()+1).padStart(2,"0"),S=String(A.getDate()).padStart(2,"0"),b=String(A.getHours()).padStart(2,"0");return`${p}/${S} ${b}:00`}const U=w.date;if(U&&U.includes("-")){const A=U.split("-");if(A.length>=3)return`${A[1]}/${A[2]}`}return w.date}),datasets:g};d=new vt(c.value,{type:"line",data:et,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{padding:20,usePointStyle:!0,font:{size:12},color:x.value.legend}},tooltip:{mode:"index",intersect:!1,itemSort:function(w,U){return U.parsed.y-w.parsed.y},callbacks:{label:function(w){var yt;const U=w.dataset.label||"",A=w.parsed.y,p=w.dataIndex,S=T.value.data[p],I=w.chart.data.datasets.map((F,at)=>({value:F.data[p]||0,index:at})).sort((F,at)=>at.value-F.value).findIndex(F=>F.index===w.datasetIndex)+1;let V="";if(I===1?V="🥇 ":I===2?V="🥈 ":I===3&&(V="🥉 "),f.value==="tokens"){let F="";A>=1e6?F=(A/1e6).toFixed(2)+"M":A>=1e3?F=(A/1e3).toFixed(2)+"K":F=A.toLocaleString();const at=T.value.topApiKeys[w.datasetIndex],xt=(yt=S==null?void 0:S.apiKeys)==null?void 0:yt[at],St=(xt==null?void 0:xt.formattedCost)||"$0.00";return`${V}${U}: ${F} tokens (${St})`}else return`${V}${U}: ${A.toLocaleString()} 次`}}}},scales:{x:{type:"category",display:!0,title:{display:!0,text:E==="hour"?"时间":"日期",color:x.value.text},ticks:{color:x.value.text},grid:{color:x.value.grid}},y:{beginAtZero:!0,title:{display:!0,text:f.value==="tokens"?"Token 数量":"请求次数",color:x.value.text},ticks:{callback:function(w){return v(w)},color:x.value.text},grid:{color:x.value.grid}}}}})}async function ht(){await it(f.value),await Z(),L()}st(z,()=>{Z(()=>K())}),st(n,()=>{Z(()=>O())}),st(T,()=>{Z(()=>L())});async function ft(){if(!C.value){C.value=!0;try{await Promise.all([rt(),gt()])}finally{C.value=!1}}}function kt(){l.value&&(m.value=s.value,_.value&&clearInterval(_.value),u.value&&clearTimeout(u.value),_.value=setInterval(()=>{m.value--,m.value<=0&&clearInterval(_.value)},1e3),u.value=setTimeout(async()=>{await ft(),l.value&&kt()},s.value*1e3))}function Dt(){_.value&&(clearInterval(_.value),_.value=null),u.value&&(clearTimeout(u.value),u.value=null),m.value=0}return st(l,D=>{D?kt():Dt()}),st(G,()=>{Z(()=>{K(),O(),L()})}),At(async()=>{await ft(),await Z(),K(),O(),L()}),Pt(()=>{Dt(),r&&r.destroy(),i&&i.destroy(),d&&d.destroy()}),(D,e)=>{const R=$t;return k(),h("div",null,[t("div",Ft,[t("div",zt,[t("div",Lt,[t("div",null,[e[7]||(e[7]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 总API Keys ",-1)),t("p",Ht,y(a(o).totalApiKeys),1),t("p",qt," 活跃: "+y(a(o).activeApiKeys||0),1)]),e[8]||(e[8]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-blue-500 to-blue-600"},[t("i",{class:"fas fa-key"})],-1))])]),t("div",Et,[t("div",Nt,[t("div",Vt,[e[15]||(e[15]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 服务账户 ",-1)),t("div",jt,[t("p",Yt,y(a(o).totalAccounts),1),a(o).accountsByPlatform?(k(),h("div",Gt,[a(o).accountsByPlatform.claude&&a(o).accountsByPlatform.claude.total>0?(k(),h("div",{key:0,class:"inline-flex items-center gap-0.5",title:`Claude: ${a(o).accountsByPlatform.claude.total} 个 (正常: ${a(o).accountsByPlatform.claude.normal})`},[e[9]||(e[9]=t("i",{class:"fas fa-brain text-xs text-indigo-600"},null,-1)),t("span",Qt,y(a(o).accountsByPlatform.claude.total),1)],8,Wt)):P("",!0),a(o).accountsByPlatform["claude-console"]&&a(o).accountsByPlatform["claude-console"].total>0?(k(),h("div",{key:1,class:"inline-flex items-center gap-0.5",title:`Console: ${a(o).accountsByPlatform["claude-console"].total} 个 (正常: ${a(o).accountsByPlatform["claude-console"].normal})`},[e[10]||(e[10]=t("i",{class:"fas fa-terminal text-xs text-purple-600"},null,-1)),t("span",Jt,y(a(o).accountsByPlatform["claude-console"].total),1)],8,Zt)):P("",!0),a(o).accountsByPlatform.gemini&&a(o).accountsByPlatform.gemini.total>0?(k(),h("div",{key:2,class:"inline-flex items-center gap-0.5",title:`Gemini: ${a(o).accountsByPlatform.gemini.total} 个 (正常: ${a(o).accountsByPlatform.gemini.normal})`},[e[11]||(e[11]=t("i",{class:"fas fa-robot text-xs text-yellow-600"},null,-1)),t("span",te,y(a(o).accountsByPlatform.gemini.total),1)],8,Xt)):P("",!0),a(o).accountsByPlatform.bedrock&&a(o).accountsByPlatform.bedrock.total>0?(k(),h("div",{key:3,class:"inline-flex items-center gap-0.5",title:`Bedrock: ${a(o).accountsByPlatform.bedrock.total} 个 (正常: ${a(o).accountsByPlatform.bedrock.normal})`},[e[12]||(e[12]=t("i",{class:"fab fa-aws text-xs text-orange-600"},null,-1)),t("span",ae,y(a(o).accountsByPlatform.bedrock.total),1)],8,ee)):P("",!0),a(o).accountsByPlatform.openai&&a(o).accountsByPlatform.openai.total>0?(k(),h("div",{key:4,class:"inline-flex items-center gap-0.5",title:`OpenAI: ${a(o).accountsByPlatform.openai.total} 个 (正常: ${a(o).accountsByPlatform.openai.normal})`},[e[13]||(e[13]=t("i",{class:"fas fa-openai text-xs text-gray-100"},null,-1)),t("span",oe,y(a(o).accountsByPlatform.openai.total),1)],8,se)):P("",!0),a(o).accountsByPlatform.azure_openai&&a(o).accountsByPlatform.azure_openai.total>0?(k(),h("div",{key:5,class:"inline-flex items-center gap-0.5",title:`Azure OpenAI: ${a(o).accountsByPlatform.azure_openai.total} 个 (正常: ${a(o).accountsByPlatform.azure_openai.normal})`},[e[14]||(e[14]=t("i",{class:"fab fa-microsoft text-xs text-blue-600"},null,-1)),t("span",le,y(a(o).accountsByPlatform.azure_openai.total),1)],8,ne)):P("",!0)])):P("",!0)]),t("p",re,[B(" 正常: "+y(a(o).normalAccounts||0)+" ",1),a(o).abnormalAccounts>0?(k(),h("span",ie," | 异常: "+y(a(o).abnormalAccounts),1)):P("",!0),a(o).pausedAccounts>0?(k(),h("span",de," | 停止调度: "+y(a(o).pausedAccounts),1)):P("",!0),a(o).rateLimitedAccounts>0?(k(),h("span",ce," | 限流: "+y(a(o).rateLimitedAccounts),1)):P("",!0)])]),e[16]||(e[16]=t("div",{class:"stat-icon ml-2 flex-shrink-0 bg-gradient-to-br from-green-500 to-green-600"},[t("i",{class:"fas fa-user-circle"})],-1))])]),t("div",ue,[t("div",me,[t("div",null,[e[17]||(e[17]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 今日请求 ",-1)),t("p",ye,y(a(o).todayRequests),1),t("p",pe," 总请求: "+y(v(a(o).totalRequests||0)),1)]),e[18]||(e[18]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-purple-500 to-purple-600"},[t("i",{class:"fas fa-chart-line"})],-1))])]),t("div",ge,[t("div",fe,[t("div",null,[e[19]||(e[19]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 系统状态 ",-1)),t("p",xe,y(a(o).systemStatus),1),t("p",be," 运行时间: "+y(a(lt)),1)]),e[20]||(e[20]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-yellow-500 to-orange-500"},[t("i",{class:"fas fa-heartbeat"})],-1))])])]),t("div",ve,[t("div",he,[t("div",ke,[t("div",De,[e[25]||(e[25]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 今日Token ",-1)),t("div",Te,[t("p",_e,y(v((a(o).todayInputTokens||0)+(a(o).todayOutputTokens||0)+(a(o).todayCacheCreateTokens||0)+(a(o).todayCacheReadTokens||0))),1),t("span",Ce,"/ "+y(a(X).todayCosts.formatted.totalCost),1)]),t("div",we,[t("div",Se,[t("span",null,[e[21]||(e[21]=B("输入: ",-1)),t("span",$e,y(v(a(o).todayInputTokens||0)),1)]),t("span",null,[e[22]||(e[22]=B("输出: ",-1)),t("span",Re,y(v(a(o).todayOutputTokens||0)),1)]),(a(o).todayCacheCreateTokens||0)>0?(k(),h("span",Ae,[e[23]||(e[23]=B("缓存创建: ",-1)),t("span",Pe,y(v(a(o).todayCacheCreateTokens||0)),1)])):P("",!0),(a(o).todayCacheReadTokens||0)>0?(k(),h("span",Be,[e[24]||(e[24]=B("缓存读取: ",-1)),t("span",Ie,y(v(a(o).todayCacheReadTokens||0)),1)])):P("",!0)])])]),e[26]||(e[26]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-indigo-500 to-indigo-600"},[t("i",{class:"fas fa-coins"})],-1))])]),t("div",Ue,[t("div",Me,[t("div",Ke,[e[31]||(e[31]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 总Token消耗 ",-1)),t("div",Oe,[t("p",Fe,y(v((a(o).totalInputTokens||0)+(a(o).totalOutputTokens||0)+(a(o).totalCacheCreateTokens||0)+(a(o).totalCacheReadTokens||0))),1),t("span",ze,"/ "+y(a(X).totalCosts.formatted.totalCost),1)]),t("div",Le,[t("div",He,[t("span",null,[e[27]||(e[27]=B("输入: ",-1)),t("span",qe,y(v(a(o).totalInputTokens||0)),1)]),t("span",null,[e[28]||(e[28]=B("输出: ",-1)),t("span",Ee,y(v(a(o).totalOutputTokens||0)),1)]),(a(o).totalCacheCreateTokens||0)>0?(k(),h("span",Ne,[e[29]||(e[29]=B("缓存创建: ",-1)),t("span",Ve,y(v(a(o).totalCacheCreateTokens||0)),1)])):P("",!0),(a(o).totalCacheReadTokens||0)>0?(k(),h("span",je,[e[30]||(e[30]=B("缓存读取: ",-1)),t("span",Ye,y(v(a(o).totalCacheReadTokens||0)),1)])):P("",!0)])])]),e[32]||(e[32]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-emerald-500 to-emerald-600"},[t("i",{class:"fas fa-database"})],-1))])]),t("div",Ge,[t("div",We,[t("div",null,[t("p",Qe,[e[33]||(e[33]=B(" 实时RPM ",-1)),t("span",Ze,"("+y(a(o).metricsWindow)+"分钟)",1)]),t("p",Je,y(a(o).realtimeRPM||0),1),t("p",Xe,[e[35]||(e[35]=B(" 每分钟请求数 ",-1)),a(o).isHistoricalMetrics?(k(),h("span",ta,e[34]||(e[34]=[t("i",{class:"fas fa-exclamation-circle"},null,-1),B(" 历史数据 ",-1)]))):P("",!0)])]),e[36]||(e[36]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-orange-500 to-orange-600"},[t("i",{class:"fas fa-tachometer-alt"})],-1))])]),t("div",ea,[t("div",aa,[t("div",null,[t("p",sa,[e[37]||(e[37]=B(" 实时TPM ",-1)),t("span",oa,"("+y(a(o).metricsWindow)+"分钟)",1)]),t("p",na,y(v(a(o).realtimeTPM||0)),1),t("p",la,[e[39]||(e[39]=B(" 每分钟Token数 ",-1)),a(o).isHistoricalMetrics?(k(),h("span",ra,e[38]||(e[38]=[t("i",{class:"fas fa-exclamation-circle"},null,-1),B(" 历史数据 ",-1)]))):P("",!0)])]),e[40]||(e[40]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-rose-500 to-rose-600"},[t("i",{class:"fas fa-rocket"})],-1))])])]),t("div",ia,[t("div",da,[e[47]||(e[47]=t("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 模型使用分布与Token使用趋势 ",-1)),t("div",ca,[t("div",ua,[(k(!0),h(_t,null,Ct(a(q).presetOptions,g=>(k(),h("button",{key:g.value,class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(q).preset===g.value&&a(q).type==="preset"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:H=>a(dt)(g.value)},y(g.label),11,ma))),128))]),t("div",ya,[t("button",{class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(E)==="day"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[0]||(e[0]=g=>a(ct)("day"))},e[41]||(e[41]=[t("i",{class:"fas fa-calendar-day mr-1"},null,-1),B("按天 ",-1)]),2),t("button",{class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(E)==="hour"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[1]||(e[1]=g=>a(ct)("hour"))},e[42]||(e[42]=[t("i",{class:"fas fa-clock mr-1"},null,-1),B("按小时 ",-1)]),2)]),t("div",pa,[Bt(R,{modelValue:a(q).customRange,"onUpdate:modelValue":e[2]||(e[2]=g=>a(q).customRange=g),class:"custom-date-picker w-full lg:w-auto","default-time":a(pt),"disabled-date":a(W),"end-placeholder":"结束日期",format:"YYYY-MM-DD HH:mm:ss","range-separator":"至",size:"default","start-placeholder":"开始日期",style:{"max-width":"400px"},type:"datetimerange","value-format":"YYYY-MM-DD HH:mm:ss",onChange:a(N)},null,8,["modelValue","default-time","disabled-date","onChange"]),a(E)==="hour"?(k(),h("span",ga,e[43]||(e[43]=[t("i",{class:"fas fa-info-circle"},null,-1),B(" 最多24小时 ",-1)]))):P("",!0)]),t("div",fa,[t("div",xa,[t("label",ba,[It(t("input",{"onUpdate:modelValue":e[3]||(e[3]=g=>l.value=g),class:"peer sr-only",type:"checkbox"},null,512),[[Ut,l.value]]),e[46]||(e[46]=t("div",{class:"peer relative h-5 w-9 rounded-full bg-gray-300 transition-all duration-200 after:absolute after:left-[2px] after:top-0.5 after:h-4 after:w-4 after:rounded-full after:bg-white after:shadow-sm after:transition-transform after:duration-200 after:content-[''] peer-checked:bg-blue-500 peer-checked:after:translate-x-4 peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-blue-300 dark:bg-gray-600 dark:after:bg-gray-300 dark:peer-focus:ring-blue-600"},null,-1)),t("span",va,[e[44]||(e[44]=t("i",{class:"fas fa-redo-alt text-xs text-gray-500 dark:text-gray-400"},null,-1)),e[45]||(e[45]=t("span",null,"自动刷新",-1)),l.value?(k(),h("span",{key:0,class:j(["ml-1 font-mono text-xs text-blue-600 transition-opacity",m.value>0?"opacity-100":"opacity-0"])},y(m.value)+"s ",3)):P("",!0)])])]),t("button",{class:"flex items-center gap-1 rounded-md border border-gray-300 bg-white px-3 py-1 text-sm font-medium text-blue-600 shadow-sm transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:hover:bg-gray-700 sm:gap-2",disabled:C.value,title:"立即刷新数据",onClick:e[4]||(e[4]=g=>ft())},[t("i",{class:j(["fas fa-sync-alt text-xs",{"animate-spin":C.value}])},null,2),t("span",ka,y(C.value?"刷新中":"刷新"),1)],8,ha)])])]),t("div",Da,[t("div",Ta,[e[48]||(e[48]=t("h4",{class:"mb-4 text-base font-semibold text-gray-800 dark:text-gray-200 sm:text-lg"}," Token使用分布 ",-1)),t("div",_a,[t("canvas",{ref_key:"modelUsageChart",ref:Q},null,512)])]),t("div",Ca,[e[51]||(e[51]=t("h4",{class:"mb-4 text-base font-semibold text-gray-800 dark:text-gray-200 sm:text-lg"}," 详细统计数据 ",-1)),a(z).length===0?(k(),h("div",wa,e[49]||(e[49]=[t("p",{class:"text-sm text-gray-500 sm:text-base"},"暂无模型使用数据",-1)]))):(k(),h("div",Sa,[t("table",$a,[e[50]||(e[50]=t("thead",{class:"sticky top-0 bg-gray-50 dark:bg-gray-700"},[t("tr",null,[t("th",{class:"px-2 py-2 text-left text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 模型 "),t("th",{class:"hidden px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:table-cell sm:px-4"}," 请求数 "),t("th",{class:"px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 总Token "),t("th",{class:"px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 费用 "),t("th",{class:"hidden px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:table-cell sm:px-4"}," 占比 ")])],-1)),t("tbody",Ra,[(k(!0),h(_t,null,Ct(a(z),g=>(k(),h("tr",{key:g.model,class:"hover:bg-gray-50 dark:hover:bg-gray-700"},[t("td",Aa,[t("span",{class:"block max-w-[100px] truncate sm:max-w-none",title:g.model},y(g.model),9,Pa)]),t("td",Ba,y(v(g.requests)),1),t("td",Ia,y(v(g.allTokens)),1),t("td",Ua,y(g.formatted?g.formatted.total:"$0.000000"),1),t("td",Ma,[t("span",Ka,y(M(g.allTokens,a(z)))+"% ",1)])]))),128))])])]))])])]),t("div",Oa,[t("div",Fa,[t("div",za,[t("canvas",{ref_key:"usageTrendChart",ref:tt},null,512)])])]),t("div",La,[t("div",Ha,[t("div",qa,[e[54]||(e[54]=t("h3",{class:"text-base font-semibold text-gray-900 dark:text-gray-100 sm:text-lg"}," API Keys 使用趋势 ",-1)),t("div",Ea,[t("button",{class:j(["rounded-md px-2 py-1 text-xs font-medium transition-colors sm:px-3 sm:text-sm",a(f)==="requests"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[5]||(e[5]=g=>(f.value="requests",ht()))},e[52]||(e[52]=[t("i",{class:"fas fa-exchange-alt mr-1"},null,-1),t("span",{class:"hidden sm:inline"},"请求次数",-1),t("span",{class:"sm:hidden"},"请求",-1)]),2),t("button",{class:j(["rounded-md px-2 py-1 text-xs font-medium transition-colors sm:px-3 sm:text-sm",a(f)==="tokens"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[6]||(e[6]=g=>(f.value="tokens",ht()))},e[53]||(e[53]=[t("i",{class:"fas fa-coins mr-1"},null,-1),t("span",{class:"hidden sm:inline"},"Token 数量",-1),t("span",{class:"sm:hidden"},"Token",-1)]),2)])]),t("div",Na,[a(T).totalApiKeys>10?(k(),h("span",Va," 共 "+y(a(T).totalApiKeys)+" 个 API Key,显示使用量前 10 个 ",1)):(k(),h("span",ja," 共 "+y(a(T).totalApiKeys)+" 个 API Key ",1))]),t("div",Ya,[t("canvas",{ref_key:"apiKeysUsageTrendChart",ref:c},null,512)])])])])}}},es=Mt(Ga,[["__scopeId","data-v-e71abcc3"]]);export{es as default}; diff --git a/assets/DashboardView-CQUmRYwD.js b/assets/DashboardView-CQUmRYwD.js deleted file mode 100644 index ae4ca6ef..00000000 --- a/assets/DashboardView-CQUmRYwD.js +++ /dev/null @@ -1 +0,0 @@ -import{E as $t}from"./element-plus-CMedNaYf.js";import{aR as Rt,r as $,c as wt,aW as Tt,o as st,q as At,D as Z,V as Pt,x as k,z as t,P as y,u as a,L as I,O as P,Q as Ct,ac as _t,C as j,R as It,K as Bt,al as Ut,y as D}from"./vue-vendor-DfnFpxGJ.js";import{b as J,_ as Mt,a as Kt}from"./index-BdtiivzQ.js";import{s as bt}from"./toast-BvwA7Mwb.js";import{C as vt}from"./chart-Cor9iTVD.js";import"./vendor-BDiMbLwQ.js";const Ot=Rt("dashboard",()=>{const ot=$(!1),Y=$({totalApiKeys:0,activeApiKeys:0,totalAccounts:0,normalAccounts:0,abnormalAccounts:0,pausedAccounts:0,activeAccounts:0,rateLimitedAccounts:0,accountsByPlatform:{claude:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},"claude-console":{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},gemini:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},bedrock:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0}},todayRequests:0,totalRequests:0,todayTokens:0,todayInputTokens:0,todayOutputTokens:0,totalTokens:0,totalInputTokens:0,totalOutputTokens:0,totalCacheCreateTokens:0,totalCacheReadTokens:0,todayCacheCreateTokens:0,todayCacheReadTokens:0,systemRPM:0,systemTPM:0,realtimeRPM:0,realtimeTPM:0,metricsWindow:5,isHistoricalMetrics:!1,systemStatus:"正常",uptime:0,systemTimezone:8}),nt=$({todayCosts:{totalCost:0,formatted:{totalCost:"$0.000000"}},totalCosts:{totalCost:0,formatted:{totalCost:"$0.000000"}}}),W=$([]),o=$([]),X=$([]),L=$({data:[],topApiKeys:[],totalApiKeys:0}),n=$({type:"preset",preset:"7days",customStart:"",customEnd:"",customRange:null,presetOptions:[{value:"today",label:"今日",days:1},{value:"7days",label:"7天",days:7},{value:"30days",label:"30天",days:30}]}),T=$("day"),lt=$("requests"),q=$([new Date(2e3,1,1,0,0,0),new Date(2e3,2,1,23,59,59)]),E=wt(()=>{const c=Y.value.uptime,r=Math.floor(c/86400),i=Math.floor(c%86400/3600),d=Math.floor(c%3600/60);return r>0?`${r}天 ${i}小时`:i>0?`${i}小时 ${d}分钟`:`${d}分钟`});function f(c,r=!0){const i=c.getFullYear(),d=c.getMonth(),l=c.getDate();return r?new Date(Date.UTC(i,d,l-1,16,0,0,0)):new Date(Date.UTC(i,d,l,15,59,59,999))}async function pt(c=null){ot.value=!0;try{let r={today:"today",all:"all"};c&&(r={today:{today:"today",all:"today"},"7days":{today:"7days",all:"7days"},monthly:{today:"monthly",all:"monthly"},all:{today:"today",all:"all"}}[c]||r);const[i,d,l]=await Promise.all([J.get("/admin/dashboard"),J.get(`/admin/usage-costs?period=${r.today}`),J.get(`/admin/usage-costs?period=${r.all}`)]);if(i.success){const s=i.data.overview||{},u=i.data.recentActivity||{},m=i.data.systemAverages||{},C=i.data.realtimeMetrics||{},_=i.data.systemHealth||{};Y.value={totalApiKeys:s.totalApiKeys||0,activeApiKeys:s.activeApiKeys||0,totalAccounts:s.totalAccounts||s.totalClaudeAccounts||0,normalAccounts:s.normalAccounts||0,abnormalAccounts:s.abnormalAccounts||0,pausedAccounts:s.pausedAccounts||0,activeAccounts:s.activeAccounts||s.activeClaudeAccounts||0,rateLimitedAccounts:s.rateLimitedAccounts||s.rateLimitedClaudeAccounts||0,accountsByPlatform:s.accountsByPlatform||{claude:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},"claude-console":{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},gemini:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},bedrock:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0}},todayRequests:u.requestsToday||0,totalRequests:s.totalRequestsUsed||0,todayTokens:u.tokensToday||0,todayInputTokens:u.inputTokensToday||0,todayOutputTokens:u.outputTokensToday||0,totalTokens:s.totalTokensUsed||0,totalInputTokens:s.totalInputTokensUsed||0,totalOutputTokens:s.totalOutputTokensUsed||0,totalCacheCreateTokens:s.totalCacheCreateTokensUsed||0,totalCacheReadTokens:s.totalCacheReadTokensUsed||0,todayCacheCreateTokens:u.cacheCreateTokensToday||0,todayCacheReadTokens:u.cacheReadTokensToday||0,systemRPM:m.rpm||0,systemTPM:m.tpm||0,realtimeRPM:C.rpm||0,realtimeTPM:C.tpm||0,metricsWindow:C.windowMinutes||5,isHistoricalMetrics:C.isHistorical||!1,systemStatus:_.redisConnected?"正常":"异常",uptime:_.uptime||0,systemTimezone:i.data.systemTimezone||8}}d.success&&l.success&&(nt.value={todayCosts:d.data.totalCosts||{totalCost:0,formatted:{totalCost:"$0.000000"}},totalCosts:l.data.totalCosts||{totalCost:0,formatted:{totalCost:"$0.000000"}}})}catch(r){console.error("加载仪表板数据失败:",r)}finally{ot.value=!1}}async function rt(c=7,r="day"){try{let i="/admin/usage-trend?";if(r==="hour")if(i+="granularity=hour",n.value.customRange&&n.value.customRange.length===2){const l=s=>{const[m,C]=s.split(" "),[_,x,v]=m.split("-").map(Number),[M,K,O]=C.split(":").map(Number);return new Date(Date.UTC(_,x-1,v,M-8,K,O)).toISOString()};i+=`&startDate=${encodeURIComponent(l(n.value.customRange[0]))}`,i+=`&endDate=${encodeURIComponent(l(n.value.customRange[1]))}`}else{const l=new Date;let s,u;if(n.value.type==="preset")switch(n.value.preset){case"last24h":{u=new Date(l),s=new Date(l.getTime()-24*60*60*1e3);break}case"yesterday":{const m=new Date;m.setDate(m.getDate()-1),s=f(m,!0),u=f(m,!1);break}case"dayBefore":{const m=new Date;m.setDate(m.getDate()-2),s=f(m,!0),u=f(m,!1);break}default:s=new Date(l.getTime()-24*60*60*1e3),u=l}else s=new Date(l.getTime()-c*24*60*60*1e3),u=l;i+=`&startDate=${encodeURIComponent(s.toISOString())}`,i+=`&endDate=${encodeURIComponent(u.toISOString())}`}else i+=`granularity=day&days=${c}`;const d=await J.get(i);d.success&&(o.value=d.data)}catch(i){console.error("加载使用趋势失败:",i)}}async function it(c="daily"){try{let r=`/admin/model-stats?period=${c}`;if(n.value.type==="custom"||T.value==="hour"){if(n.value.customRange&&n.value.customRange.length===2){const d=l=>{const[u,m]=l.split(" "),[C,_,x]=u.split("-").map(Number),[v,M,K]=m.split(":").map(Number);return new Date(Date.UTC(C,_-1,x,v-8,M,K)).toISOString()};r+=`&startDate=${encodeURIComponent(d(n.value.customRange[0]))}`,r+=`&endDate=${encodeURIComponent(d(n.value.customRange[1]))}`}else if(T.value==="hour"&&n.value.type==="preset"){const d=new Date;let l,s;switch(n.value.preset){case"last24h":{s=new Date(d),l=new Date(d.getTime()-24*60*60*1e3);break}case"yesterday":{const u=new Date;u.setDate(u.getDate()-1),l=f(u,!0),s=f(u,!1);break}case"dayBefore":{const u=new Date;u.setDate(u.getDate()-2),l=f(u,!0),s=f(u,!1);break}default:l=new Date(d.getTime()-24*60*60*1e3),s=d}r+=`&startDate=${encodeURIComponent(l.toISOString())}`,r+=`&endDate=${encodeURIComponent(s.toISOString())}`}}else if(n.value.type==="preset"&&T.value==="day"){const d=new Date;let l,s;const u=n.value.presetOptions.find(m=>m.value===n.value.preset);if(u){if(n.value.preset==="today")l=f(d,!0),s=f(d,!1);else{const m=new Date;m.setDate(m.getDate()-(u.days-1)),l=f(m,!0),s=f(d,!1)}r+=`&startDate=${encodeURIComponent(l.toISOString())}`,r+=`&endDate=${encodeURIComponent(s.toISOString())}`}}const i=await J.get(r);i.success&&(X.value=i.data)}catch(r){console.error("加载模型统计失败:",r)}}async function dt(c="requests"){try{let r="/admin/api-keys-usage-trend?",i=7;if(T.value==="hour")if(r+="granularity=hour",n.value.customRange&&n.value.customRange.length===2){const l=s=>{const[m,C]=s.split(" "),[_,x,v]=m.split("-").map(Number),[M,K,O]=C.split(":").map(Number);return new Date(Date.UTC(_,x-1,v,M-8,K,O)).toISOString()};r+=`&startDate=${encodeURIComponent(l(n.value.customRange[0]))}`,r+=`&endDate=${encodeURIComponent(l(n.value.customRange[1]))}`}else{const l=new Date;let s,u;if(n.value.type==="preset")switch(n.value.preset){case"last24h":{u=new Date(l),s=new Date(l.getTime()-24*60*60*1e3);break}case"yesterday":{const m=new Date;m.setDate(m.getDate()-1),s=f(m,!0),u=f(m,!1);break}case"dayBefore":{const m=new Date;m.setDate(m.getDate()-2),s=f(m,!0),u=f(m,!1);break}default:s=new Date(l.getTime()-24*60*60*1e3),u=l}else s=new Date(l.getTime()-24*60*60*1e3),u=l;r+=`&startDate=${encodeURIComponent(s.toISOString())}`,r+=`&endDate=${encodeURIComponent(u.toISOString())}`}else i=n.value.type==="preset"?n.value.preset==="today"?1:n.value.preset==="7days"?7:30:Q(n.value.customStart,n.value.customEnd),r+=`granularity=day&days=${i}`;r+=`&metric=${c}`;const d=await J.get(r);d.success&&(L.value={data:d.data||[],topApiKeys:d.topApiKeys||[],totalApiKeys:d.totalApiKeys||0})}catch(r){console.error("加载API Keys趋势失败:",r)}}function N(c){n.value.type="preset",n.value.preset=c;const r=n.value.presetOptions.find(i=>i.value===c);if(r){const i=new Date;let d,l;if(T.value==="hour")switch(c){case"last24h":{l=new Date(i),d=new Date(i.getTime()-24*60*60*1e3);break}case"yesterday":{const s=new Date;s.setDate(s.getDate()-1),d=f(s,!0),l=f(s,!1);break}case"dayBefore":{const s=new Date;s.setDate(s.getDate()-2),d=f(s,!0),l=f(s,!1);break}}else d=new Date(i),l=new Date(i),c==="today"?(d.setHours(0,0,0,0),l.setHours(23,59,59,999)):(d.setDate(i.getDate()-(r.days-1)),d.setHours(0,0,0,0),l.setHours(23,59,59,999));if(n.value.customStart=d.toISOString().split("T")[0],n.value.customEnd=l.toISOString().split("T")[0],T.value==="hour"&&(c==="yesterday"||c==="dayBefore")){const s=new Date;c==="yesterday"?s.setDate(s.getDate()-1):s.setDate(s.getDate()-2);const u=s.getFullYear(),m=String(s.getMonth()+1).padStart(2,"0"),C=String(s.getDate()).padStart(2,"0");n.value.customRange=[`${u}-${m}-${C} 00:00:00`,`${u}-${m}-${C} 23:59:59`]}else{const s=u=>{const _=new Date(u.getTime()+288e5),x=_.getUTCFullYear(),v=String(_.getUTCMonth()+1).padStart(2,"0"),M=String(_.getUTCDate()).padStart(2,"0"),K=String(_.getUTCHours()).padStart(2,"0"),O=String(_.getUTCMinutes()).padStart(2,"0"),z=String(_.getUTCSeconds()).padStart(2,"0");return`${x}-${v}-${M} ${K}:${O}:${z}`};n.value.customRange=[s(d),s(l)]}}G()}function ct(c){if(c&&c.length===2){n.value.type="custom",n.value.preset="",n.value.customRange=c,n.value.customStart=c[0].split(" ")[0],n.value.customEnd=c[1].split(" ")[0];const r=l=>{const[s,u]=l.split(" "),[m,C,_]=s.split("-").map(Number),[x,v,M]=u.split(":").map(Number);return new Date(m,C-1,_,x,v,M)},i=r(c[0]),d=r(c[1]);if(T.value==="hour"){if((d-i)/36e5>24){bt("小时粒度下日期范围不能超过24小时","warning");return}}else if(Math.ceil((d-i)/864e5)+1>31){bt("日期范围不能超过 31 天","warning");return}G()}else c===null&&N(T.value==="hour"?"last24h":"7days")}function gt(c){if(T.value=c,c==="hour"){if(n.value.presetOptions=[{value:"last24h",label:"近24小时",hours:24},{value:"yesterday",label:"昨天",hours:24},{value:"dayBefore",label:"前天",hours:24}],n.value.type==="custom"&&n.value.customRange&&n.value.customRange.length===2){const r=new Date(n.value.customRange[0]);if((new Date(n.value.customRange[1])-r)/(1e3*60*60)>24){bt("小时粒度下日期范围不能超过24小时,已切换到近24小时","warning"),N("last24h");return}}if(["today","7days","30days"].includes(n.value.preset)){N("last24h");return}}else if(n.value.presetOptions=[{value:"today",label:"今日",days:1},{value:"7days",label:"7天",days:7},{value:"30days",label:"30天",days:30}],["last24h","yesterday","dayBefore"].includes(n.value.preset)){N("7days");return}G()}async function G(){let c,r="monthly";if(n.value.type==="preset"){const i=n.value.presetOptions.find(d=>d.value===n.value.preset);T.value==="hour"?(c=1,r="daily"):(c=i?i.days:7,n.value.preset==="today"?r="daily":r="monthly")}else{if(T.value==="hour"){const i=new Date(n.value.customRange[0]),d=new Date(n.value.customRange[1]),l=Math.ceil((d-i)/(1e3*60*60));c=Math.ceil(l/24)||1}else c=Q(n.value.customStart,n.value.customEnd);r="daily"}await Promise.all([rt(c,T.value),it(r),dt(lt.value)])}function Q(c,r){if(!c||!r)return 7;const i=new Date(c),d=new Date(r),l=Math.abs(d-i);return Math.ceil(l/(1e3*60*60*24))||7}function tt(c){return c>new Date}return{loading:ot,dashboardData:Y,costsData:nt,modelStats:W,trendData:o,dashboardModelStats:X,apiKeysTrendData:L,dateFilter:n,trendGranularity:T,apiKeysTrendMetric:lt,defaultTime:q,formattedUptime:E,loadDashboardData:pt,loadUsageTrend:rt,loadModelStats:it,loadApiKeysTrend:dt,setDateFilterPreset:N,onCustomDateRangeChange:ct,setTrendGranularity:gt,refreshChartsData:G,disabledDate:tt}}),Ft={class:"mb-4 grid grid-cols-1 gap-3 sm:mb-6 sm:grid-cols-2 sm:gap-4 md:mb-8 md:gap-6 lg:grid-cols-4"},Lt={class:"stat-card"},zt={class:"flex items-center justify-between"},Ht={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},qt={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Et={class:"stat-card"},Nt={class:"flex items-center justify-between"},Vt={class:"flex-1"},jt={class:"flex flex-wrap items-baseline gap-x-2"},Yt={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},Wt={key:0,class:"flex items-center gap-2"},Gt=["title"],Qt={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},Zt=["title"],Jt={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},Xt=["title"],te={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},ee=["title"],ae={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},se=["title"],oe={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},ne={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},le={key:0,class:"text-red-600"},re={key:1,class:"text-gray-600 dark:text-gray-400"},ie={key:2,class:"text-yellow-600"},de={class:"stat-card"},ce={class:"flex items-center justify-between"},ue={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},me={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ye={class:"stat-card"},pe={class:"flex items-center justify-between"},ge={class:"text-2xl font-bold text-green-600 sm:text-3xl"},fe={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},xe={class:"mb-4 grid grid-cols-1 gap-3 sm:mb-6 sm:grid-cols-2 sm:gap-4 md:mb-8 md:gap-6 lg:grid-cols-4"},be={class:"stat-card"},ve={class:"flex items-center justify-between"},he={class:"mr-8 flex-1"},ke={class:"mb-2 flex flex-wrap items-baseline gap-2"},De={class:"text-xl font-bold text-blue-600 sm:text-2xl md:text-3xl"},Te={class:"text-sm font-medium text-green-600"},Ce={class:"text-xs text-gray-500 dark:text-gray-400"},_e={class:"flex flex-wrap items-center justify-between gap-x-4"},we={class:"font-medium"},Se={class:"font-medium"},$e={key:0,class:"text-purple-600"},Re={class:"font-medium"},Ae={key:1,class:"text-purple-600"},Pe={class:"font-medium"},Ie={class:"stat-card"},Be={class:"flex items-center justify-between"},Ue={class:"mr-8 flex-1"},Me={class:"mb-2 flex flex-wrap items-baseline gap-2"},Ke={class:"text-xl font-bold text-emerald-600 sm:text-2xl md:text-3xl"},Oe={class:"text-sm font-medium text-green-600"},Fe={class:"text-xs text-gray-500 dark:text-gray-400"},Le={class:"flex flex-wrap items-center justify-between gap-x-4"},ze={class:"font-medium"},He={class:"font-medium"},qe={key:0,class:"text-purple-600"},Ee={class:"font-medium"},Ne={key:1,class:"text-purple-600"},Ve={class:"font-medium"},je={class:"stat-card"},Ye={class:"flex items-center justify-between"},We={class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"},Ge={class:"text-xs text-gray-400"},Qe={class:"text-2xl font-bold text-orange-600 sm:text-3xl"},Ze={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Je={key:0,class:"text-yellow-600"},Xe={class:"stat-card"},ta={class:"flex items-center justify-between"},ea={class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"},aa={class:"text-xs text-gray-400"},sa={class:"text-2xl font-bold text-rose-600 sm:text-3xl"},oa={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},na={key:0,class:"text-yellow-600"},la={class:"mb-8"},ra={class:"mb-4 flex flex-col gap-4 sm:mb-6"},ia={class:"flex flex-col gap-2 lg:flex-row lg:items-center lg:justify-end"},da={class:"flex flex-shrink-0 gap-1 overflow-x-auto rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},ca=["onClick"],ua={class:"flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},ma={class:"flex items-center gap-2"},ya={key:0,class:"text-xs text-orange-600"},pa={class:"flex items-center gap-2"},ga={class:"flex items-center rounded-lg bg-gray-100 px-3 py-1 dark:bg-gray-700"},fa={class:"relative inline-flex cursor-pointer items-center"},xa={class:"ml-2.5 flex select-none items-center gap-1 text-sm font-medium text-gray-600 dark:text-gray-300"},ba=["disabled"],va={class:"hidden sm:inline"},ha={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},ka={class:"card p-4 sm:p-6"},Da={class:"relative",style:{height:"250px"}},Ta={class:"card p-4 sm:p-6"},Ca={key:0,class:"py-8 text-center"},_a={key:1,class:"max-h-[250px] overflow-auto sm:max-h-[300px]"},wa={class:"min-w-full"},Sa={class:"divide-y divide-gray-200 dark:divide-gray-600"},$a={class:"px-2 py-2 text-xs text-gray-900 dark:text-gray-100 sm:px-4 sm:text-sm"},Ra=["title"],Aa={class:"hidden px-2 py-2 text-right text-xs text-gray-600 dark:text-gray-400 sm:table-cell sm:px-4 sm:text-sm"},Pa={class:"px-2 py-2 text-right text-xs text-gray-600 dark:text-gray-400 sm:px-4 sm:text-sm"},Ia={class:"px-2 py-2 text-right text-xs font-medium text-green-600 sm:px-4 sm:text-sm"},Ba={class:"hidden px-2 py-2 text-right text-xs font-medium sm:table-cell sm:px-4 sm:text-sm"},Ua={class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-1 text-xs font-medium text-blue-800 dark:bg-blue-900/30 dark:text-blue-300"},Ma={class:"mb-4 sm:mb-6 md:mb-8"},Ka={class:"card p-4 sm:p-6"},Oa={class:"sm:h-[300px]",style:{height:"250px"}},Fa={class:"mb-4 sm:mb-6 md:mb-8"},La={class:"card p-4 sm:p-6"},za={class:"mb-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},Ha={class:"flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},qa={class:"mb-4 text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},Ea={key:0},Na={key:1},Va={class:"sm:h-[350px]",style:{height:"300px"}},ja={__name:"DashboardView",setup(ot){const Y=Ot(),nt=Kt(),{isDarkMode:W}=Tt(nt),{dashboardData:o,costsData:X,dashboardModelStats:L,trendData:n,apiKeysTrendData:T,formattedUptime:lt,dateFilter:q,trendGranularity:E,apiKeysTrendMetric:f,defaultTime:pt}=Tt(Y),{loadDashboardData:rt,loadApiKeysTrend:it,setDateFilterPreset:dt,onCustomDateRangeChange:N,setTrendGranularity:ct,refreshChartsData:gt,disabledDate:G}=Y,Q=$(null),tt=$(null),c=$(null);let r=null,i=null,d=null;const l=$(!1),s=$(30),u=$(null),m=$(0),C=$(null),_=$(!1),x=wt(()=>({text:W.value?"#e5e7eb":"#374151",grid:W.value?"rgba(75, 85, 99, 0.3)":"rgba(0, 0, 0, 0.1)",legend:W.value?"#e5e7eb":"#374151"}));function v(h){return h>=1e6?(h/1e6).toFixed(2)+"M":h>=1e3?(h/1e3).toFixed(2)+"K":h.toString()}function M(h,e){if(!e||e.length===0)return 0;const R=e.reduce((g,H)=>g+H.allTokens,0);return R===0?0:(h/R*100).toFixed(1)}function K(){if(!Q.value)return;r&&r.destroy();const h=L.value||[],e={labels:h.map(R=>R.model),datasets:[{data:h.map(R=>R.allTokens),backgroundColor:["#3B82F6","#10B981","#F59E0B","#EF4444","#8B5CF6","#EC4899","#14B8A6","#F97316","#6366F1","#84CC16"],borderWidth:0}]};r=new vt(Q.value,{type:"doughnut",data:e,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{padding:15,usePointStyle:!0,font:{size:12},color:x.value.legend}},tooltip:{callbacks:{label:function(R){const g=R.label||"",H=v(R.parsed),et=M(R.parsed,h);return`${g}: ${H} (${et}%)`}}}}}})}function O(){var A;if(!tt.value)return;i&&i.destroy();const h=n.value||[],e=h.map(p=>p.inputTokens||0),R=h.map(p=>p.outputTokens||0),g=h.map(p=>p.cacheCreateTokens||0),H=h.map(p=>p.cacheReadTokens||0),et=h.map(p=>p.requests||0),ut=h.map(p=>p.cost||0),mt=(A=h[0])!=null&&A.date?"date":"hour",U={labels:h.map(p=>{if(p.label)return p.label;if(mt==="hour"){const b=new Date(p.hour),B=String(b.getMonth()+1).padStart(2,"0"),V=String(b.getDate()).padStart(2,"0"),yt=String(b.getHours()).padStart(2,"0");return`${B}/${V} ${yt}:00`}const S=p.date;if(S&&S.includes("-")){const b=S.split("-");if(b.length>=3)return`${b[1]}/${b[2]}`}return p.date}),datasets:[{label:"输入Token",data:e,borderColor:"rgb(102, 126, 234)",backgroundColor:"rgba(102, 126, 234, 0.1)",tension:.3},{label:"输出Token",data:R,borderColor:"rgb(240, 147, 251)",backgroundColor:"rgba(240, 147, 251, 0.1)",tension:.3},{label:"缓存创建Token",data:g,borderColor:"rgb(59, 130, 246)",backgroundColor:"rgba(59, 130, 246, 0.1)",tension:.3},{label:"缓存读取Token",data:H,borderColor:"rgb(147, 51, 234)",backgroundColor:"rgba(147, 51, 234, 0.1)",tension:.3},{label:"费用 (USD)",data:ut,borderColor:"rgb(34, 197, 94)",backgroundColor:"rgba(34, 197, 94, 0.1)",tension:.3,yAxisID:"y2"},{label:"请求数",data:et,borderColor:"rgb(16, 185, 129)",backgroundColor:"rgba(16, 185, 129, 0.1)",tension:.3,yAxisID:"y1"}]};i=new vt(tt.value,{type:"line",data:U,options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{title:{display:!0,text:"Token使用趋势",font:{size:16,weight:"bold"},color:x.value.text},legend:{position:"top",labels:{color:x.value.legend}},tooltip:{mode:"index",intersect:!1,itemSort:function(p,S){const b=p.dataset.label||"",B=S.dataset.label||"";return b==="费用 (USD)"||B==="费用 (USD)"?b==="费用 (USD)"?-1:1:b==="请求数"||B==="请求数"?b==="请求数"?1:-1:S.parsed.y-p.parsed.y},callbacks:{label:function(p){const S=p.dataset.label||"";let b=p.parsed.y;return S==="费用 (USD)"?b<.01?S+": $"+b.toFixed(6):S+": $"+b.toFixed(4):S==="请求数"?S+": "+b.toLocaleString()+" 次":b>=1e6?S+": "+(b/1e6).toFixed(2)+"M tokens":b>=1e3?S+": "+(b/1e3).toFixed(2)+"K tokens":S+": "+b.toLocaleString()+" tokens"}}}},scales:{x:{type:"category",display:!0,title:{display:!0,text:E==="hour"?"时间":"日期",color:x.value.text},ticks:{color:x.value.text},grid:{color:x.value.grid}},y:{type:"linear",display:!0,position:"left",title:{display:!0,text:"Token数量",color:x.value.text},ticks:{callback:function(p){return v(p)},color:x.value.text},grid:{color:x.value.grid}},y1:{type:"linear",display:!0,position:"right",title:{display:!0,text:"请求数",color:x.value.text},grid:{drawOnChartArea:!1},ticks:{callback:function(p){return p.toLocaleString()},color:x.value.text}},y2:{type:"linear",display:!1,position:"right"}}}})}function z(){var ut,mt;if(!c.value)return;d&&d.destroy();const h=T.value.data||[],e=f,R=["#3B82F6","#10B981","#F59E0B","#EF4444","#8B5CF6","#EC4899","#14B8A6","#F97316","#6366F1","#84CC16"],g=((ut=T.value.topApiKeys)==null?void 0:ut.map((w,U)=>{var S,b;const A=T.value.data.map(B=>!B.apiKeys||!B.apiKeys[w]?0:e==="tokens"?B.apiKeys[w].tokens:B.apiKeys[w].requests||0);return{label:((b=(S=T.value.data.find(B=>B.apiKeys&&B.apiKeys[w]))==null?void 0:S.apiKeys[w])==null?void 0:b.name)||`API Key ${w}`,data:A,borderColor:R[U%R.length],backgroundColor:R[U%R.length]+"20",tension:.4,fill:!1}}))||[],H=(mt=h[0])!=null&&mt.date?"date":"hour",et={labels:h.map(w=>{if(w.label)return w.label;if(H==="hour"){const A=new Date(w.hour),p=String(A.getMonth()+1).padStart(2,"0"),S=String(A.getDate()).padStart(2,"0"),b=String(A.getHours()).padStart(2,"0");return`${p}/${S} ${b}:00`}const U=w.date;if(U&&U.includes("-")){const A=U.split("-");if(A.length>=3)return`${A[1]}/${A[2]}`}return w.date}),datasets:g};d=new vt(c.value,{type:"line",data:et,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{padding:20,usePointStyle:!0,font:{size:12},color:x.value.legend}},tooltip:{mode:"index",intersect:!1,itemSort:function(w,U){return U.parsed.y-w.parsed.y},callbacks:{label:function(w){var yt;const U=w.dataset.label||"",A=w.parsed.y,p=w.dataIndex,S=T.value.data[p],B=w.chart.data.datasets.map((F,at)=>({value:F.data[p]||0,index:at})).sort((F,at)=>at.value-F.value).findIndex(F=>F.index===w.datasetIndex)+1;let V="";if(B===1?V="🥇 ":B===2?V="🥈 ":B===3&&(V="🥉 "),f==="tokens"){let F="";A>=1e6?F=(A/1e6).toFixed(2)+"M":A>=1e3?F=(A/1e3).toFixed(2)+"K":F=A.toLocaleString();const at=T.value.topApiKeys[w.datasetIndex],xt=(yt=S==null?void 0:S.apiKeys)==null?void 0:yt[at],St=(xt==null?void 0:xt.formattedCost)||"$0.00";return`${V}${U}: ${F} tokens (${St})`}else return`${V}${U}: ${A.toLocaleString()} 次`}}}},scales:{x:{type:"category",display:!0,title:{display:!0,text:E==="hour"?"时间":"日期",color:x.value.text},ticks:{color:x.value.text},grid:{color:x.value.grid}},y:{beginAtZero:!0,title:{display:!0,text:f==="tokens"?"Token 数量":"请求次数",color:x.value.text},ticks:{callback:function(w){return v(w)},color:x.value.text},grid:{color:x.value.grid}}}}})}async function ht(){await it(f),await Z(),z()}st(L,()=>{Z(()=>K())}),st(n,()=>{Z(()=>O())}),st(T,()=>{Z(()=>z())});async function ft(){if(!_.value){_.value=!0;try{await Promise.all([rt(),gt()])}finally{_.value=!1}}}function kt(){l.value&&(m.value=s.value,C.value&&clearInterval(C.value),u.value&&clearTimeout(u.value),C.value=setInterval(()=>{m.value--,m.value<=0&&clearInterval(C.value)},1e3),u.value=setTimeout(async()=>{await ft(),l.value&&kt()},s.value*1e3))}function Dt(){C.value&&(clearInterval(C.value),C.value=null),u.value&&(clearTimeout(u.value),u.value=null),m.value=0}return st(l,h=>{h?kt():Dt()}),st(W,()=>{Z(()=>{K(),O(),z()})}),At(async()=>{await ft(),await Z(),K(),O(),z()}),Pt(()=>{Dt(),r&&r.destroy(),i&&i.destroy(),d&&d.destroy()}),(h,e)=>{const R=$t;return D(),k("div",null,[t("div",Ft,[t("div",Lt,[t("div",zt,[t("div",null,[e[7]||(e[7]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 总API Keys ",-1)),t("p",Ht,y(a(o).totalApiKeys),1),t("p",qt," 活跃: "+y(a(o).activeApiKeys||0),1)]),e[8]||(e[8]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-blue-500 to-blue-600"},[t("i",{class:"fas fa-key"})],-1))])]),t("div",Et,[t("div",Nt,[t("div",Vt,[e[14]||(e[14]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 服务账户 ",-1)),t("div",jt,[t("p",Yt,y(a(o).totalAccounts),1),a(o).accountsByPlatform?(D(),k("div",Wt,[a(o).accountsByPlatform.claude&&a(o).accountsByPlatform.claude.total>0?(D(),k("div",{key:0,class:"inline-flex items-center gap-0.5",title:`Claude: ${a(o).accountsByPlatform.claude.total} 个 (正常: ${a(o).accountsByPlatform.claude.normal})`},[e[9]||(e[9]=t("i",{class:"fas fa-brain text-xs text-indigo-600"},null,-1)),t("span",Qt,y(a(o).accountsByPlatform.claude.total),1)],8,Gt)):I("",!0),a(o).accountsByPlatform["claude-console"]&&a(o).accountsByPlatform["claude-console"].total>0?(D(),k("div",{key:1,class:"inline-flex items-center gap-0.5",title:`Console: ${a(o).accountsByPlatform["claude-console"].total} 个 (正常: ${a(o).accountsByPlatform["claude-console"].normal})`},[e[10]||(e[10]=t("i",{class:"fas fa-terminal text-xs text-purple-600"},null,-1)),t("span",Jt,y(a(o).accountsByPlatform["claude-console"].total),1)],8,Zt)):I("",!0),a(o).accountsByPlatform.gemini&&a(o).accountsByPlatform.gemini.total>0?(D(),k("div",{key:2,class:"inline-flex items-center gap-0.5",title:`Gemini: ${a(o).accountsByPlatform.gemini.total} 个 (正常: ${a(o).accountsByPlatform.gemini.normal})`},[e[11]||(e[11]=t("i",{class:"fas fa-robot text-xs text-yellow-600"},null,-1)),t("span",te,y(a(o).accountsByPlatform.gemini.total),1)],8,Xt)):I("",!0),a(o).accountsByPlatform.bedrock&&a(o).accountsByPlatform.bedrock.total>0?(D(),k("div",{key:3,class:"inline-flex items-center gap-0.5",title:`Bedrock: ${a(o).accountsByPlatform.bedrock.total} 个 (正常: ${a(o).accountsByPlatform.bedrock.normal})`},[e[12]||(e[12]=t("i",{class:"fab fa-aws text-xs text-orange-600"},null,-1)),t("span",ae,y(a(o).accountsByPlatform.bedrock.total),1)],8,ee)):I("",!0),a(o).accountsByPlatform.openai&&a(o).accountsByPlatform.openai.total>0?(D(),k("div",{key:4,class:"inline-flex items-center gap-0.5",title:`OpenAI: ${a(o).accountsByPlatform.openai.total} 个 (正常: ${a(o).accountsByPlatform.openai.normal})`},[e[13]||(e[13]=t("i",{class:"fas fa-openai text-xs text-gray-100"},null,-1)),t("span",oe,y(a(o).accountsByPlatform.openai.total),1)],8,se)):I("",!0)])):I("",!0)]),t("p",ne,[P(" 正常: "+y(a(o).normalAccounts||0)+" ",1),a(o).abnormalAccounts>0?(D(),k("span",le," | 异常: "+y(a(o).abnormalAccounts),1)):I("",!0),a(o).pausedAccounts>0?(D(),k("span",re," | 停止调度: "+y(a(o).pausedAccounts),1)):I("",!0),a(o).rateLimitedAccounts>0?(D(),k("span",ie," | 限流: "+y(a(o).rateLimitedAccounts),1)):I("",!0)])]),e[15]||(e[15]=t("div",{class:"stat-icon ml-2 flex-shrink-0 bg-gradient-to-br from-green-500 to-green-600"},[t("i",{class:"fas fa-user-circle"})],-1))])]),t("div",de,[t("div",ce,[t("div",null,[e[16]||(e[16]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 今日请求 ",-1)),t("p",ue,y(a(o).todayRequests),1),t("p",me," 总请求: "+y(v(a(o).totalRequests||0)),1)]),e[17]||(e[17]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-purple-500 to-purple-600"},[t("i",{class:"fas fa-chart-line"})],-1))])]),t("div",ye,[t("div",pe,[t("div",null,[e[18]||(e[18]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 系统状态 ",-1)),t("p",ge,y(a(o).systemStatus),1),t("p",fe," 运行时间: "+y(a(lt)),1)]),e[19]||(e[19]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-yellow-500 to-orange-500"},[t("i",{class:"fas fa-heartbeat"})],-1))])])]),t("div",xe,[t("div",be,[t("div",ve,[t("div",he,[e[24]||(e[24]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 今日Token ",-1)),t("div",ke,[t("p",De,y(v((a(o).todayInputTokens||0)+(a(o).todayOutputTokens||0)+(a(o).todayCacheCreateTokens||0)+(a(o).todayCacheReadTokens||0))),1),t("span",Te,"/ "+y(a(X).todayCosts.formatted.totalCost),1)]),t("div",Ce,[t("div",_e,[t("span",null,[e[20]||(e[20]=P("输入: ",-1)),t("span",we,y(v(a(o).todayInputTokens||0)),1)]),t("span",null,[e[21]||(e[21]=P("输出: ",-1)),t("span",Se,y(v(a(o).todayOutputTokens||0)),1)]),(a(o).todayCacheCreateTokens||0)>0?(D(),k("span",$e,[e[22]||(e[22]=P("缓存创建: ",-1)),t("span",Re,y(v(a(o).todayCacheCreateTokens||0)),1)])):I("",!0),(a(o).todayCacheReadTokens||0)>0?(D(),k("span",Ae,[e[23]||(e[23]=P("缓存读取: ",-1)),t("span",Pe,y(v(a(o).todayCacheReadTokens||0)),1)])):I("",!0)])])]),e[25]||(e[25]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-indigo-500 to-indigo-600"},[t("i",{class:"fas fa-coins"})],-1))])]),t("div",Ie,[t("div",Be,[t("div",Ue,[e[30]||(e[30]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 总Token消耗 ",-1)),t("div",Me,[t("p",Ke,y(v((a(o).totalInputTokens||0)+(a(o).totalOutputTokens||0)+(a(o).totalCacheCreateTokens||0)+(a(o).totalCacheReadTokens||0))),1),t("span",Oe,"/ "+y(a(X).totalCosts.formatted.totalCost),1)]),t("div",Fe,[t("div",Le,[t("span",null,[e[26]||(e[26]=P("输入: ",-1)),t("span",ze,y(v(a(o).totalInputTokens||0)),1)]),t("span",null,[e[27]||(e[27]=P("输出: ",-1)),t("span",He,y(v(a(o).totalOutputTokens||0)),1)]),(a(o).totalCacheCreateTokens||0)>0?(D(),k("span",qe,[e[28]||(e[28]=P("缓存创建: ",-1)),t("span",Ee,y(v(a(o).totalCacheCreateTokens||0)),1)])):I("",!0),(a(o).totalCacheReadTokens||0)>0?(D(),k("span",Ne,[e[29]||(e[29]=P("缓存读取: ",-1)),t("span",Ve,y(v(a(o).totalCacheReadTokens||0)),1)])):I("",!0)])])]),e[31]||(e[31]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-emerald-500 to-emerald-600"},[t("i",{class:"fas fa-database"})],-1))])]),t("div",je,[t("div",Ye,[t("div",null,[t("p",We,[e[32]||(e[32]=P(" 实时RPM ",-1)),t("span",Ge,"("+y(a(o).metricsWindow)+"分钟)",1)]),t("p",Qe,y(a(o).realtimeRPM||0),1),t("p",Ze,[e[34]||(e[34]=P(" 每分钟请求数 ",-1)),a(o).isHistoricalMetrics?(D(),k("span",Je,e[33]||(e[33]=[t("i",{class:"fas fa-exclamation-circle"},null,-1),P(" 历史数据 ",-1)]))):I("",!0)])]),e[35]||(e[35]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-orange-500 to-orange-600"},[t("i",{class:"fas fa-tachometer-alt"})],-1))])]),t("div",Xe,[t("div",ta,[t("div",null,[t("p",ea,[e[36]||(e[36]=P(" 实时TPM ",-1)),t("span",aa,"("+y(a(o).metricsWindow)+"分钟)",1)]),t("p",sa,y(v(a(o).realtimeTPM||0)),1),t("p",oa,[e[38]||(e[38]=P(" 每分钟Token数 ",-1)),a(o).isHistoricalMetrics?(D(),k("span",na,e[37]||(e[37]=[t("i",{class:"fas fa-exclamation-circle"},null,-1),P(" 历史数据 ",-1)]))):I("",!0)])]),e[39]||(e[39]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-rose-500 to-rose-600"},[t("i",{class:"fas fa-rocket"})],-1))])])]),t("div",la,[t("div",ra,[e[46]||(e[46]=t("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 模型使用分布与Token使用趋势 ",-1)),t("div",ia,[t("div",da,[(D(!0),k(Ct,null,_t(a(q).presetOptions,g=>(D(),k("button",{key:g.value,class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(q).preset===g.value&&a(q).type==="preset"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:H=>a(dt)(g.value)},y(g.label),11,ca))),128))]),t("div",ua,[t("button",{class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(E)==="day"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[0]||(e[0]=g=>a(ct)("day"))},e[40]||(e[40]=[t("i",{class:"fas fa-calendar-day mr-1"},null,-1),P("按天 ",-1)]),2),t("button",{class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(E)==="hour"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[1]||(e[1]=g=>a(ct)("hour"))},e[41]||(e[41]=[t("i",{class:"fas fa-clock mr-1"},null,-1),P("按小时 ",-1)]),2)]),t("div",ma,[It(R,{modelValue:a(q).customRange,"onUpdate:modelValue":e[2]||(e[2]=g=>a(q).customRange=g),class:"custom-date-picker w-full lg:w-auto","default-time":a(pt),"disabled-date":a(G),"end-placeholder":"结束日期",format:"YYYY-MM-DD HH:mm:ss","range-separator":"至",size:"default","start-placeholder":"开始日期",style:{"max-width":"400px"},type:"datetimerange","value-format":"YYYY-MM-DD HH:mm:ss",onChange:a(N)},null,8,["modelValue","default-time","disabled-date","onChange"]),a(E)==="hour"?(D(),k("span",ya,e[42]||(e[42]=[t("i",{class:"fas fa-info-circle"},null,-1),P(" 最多24小时 ",-1)]))):I("",!0)]),t("div",pa,[t("div",ga,[t("label",fa,[Bt(t("input",{"onUpdate:modelValue":e[3]||(e[3]=g=>l.value=g),class:"peer sr-only",type:"checkbox"},null,512),[[Ut,l.value]]),e[45]||(e[45]=t("div",{class:"peer relative h-5 w-9 rounded-full bg-gray-300 transition-all duration-200 after:absolute after:left-[2px] after:top-0.5 after:h-4 after:w-4 after:rounded-full after:bg-white after:shadow-sm after:transition-transform after:duration-200 after:content-[''] peer-checked:bg-blue-500 peer-checked:after:translate-x-4 peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-blue-300 dark:bg-gray-600 dark:after:bg-gray-300 dark:peer-focus:ring-blue-600"},null,-1)),t("span",xa,[e[43]||(e[43]=t("i",{class:"fas fa-redo-alt text-xs text-gray-500 dark:text-gray-400"},null,-1)),e[44]||(e[44]=t("span",null,"自动刷新",-1)),l.value?(D(),k("span",{key:0,class:j(["ml-1 font-mono text-xs text-blue-600 transition-opacity",m.value>0?"opacity-100":"opacity-0"])},y(m.value)+"s ",3)):I("",!0)])])]),t("button",{class:"flex items-center gap-1 rounded-md border border-gray-300 bg-white px-3 py-1 text-sm font-medium text-blue-600 shadow-sm transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:hover:bg-gray-700 sm:gap-2",disabled:_.value,title:"立即刷新数据",onClick:e[4]||(e[4]=g=>ft())},[t("i",{class:j(["fas fa-sync-alt text-xs",{"animate-spin":_.value}])},null,2),t("span",va,y(_.value?"刷新中":"刷新"),1)],8,ba)])])]),t("div",ha,[t("div",ka,[e[47]||(e[47]=t("h4",{class:"mb-4 text-base font-semibold text-gray-800 dark:text-gray-200 sm:text-lg"}," Token使用分布 ",-1)),t("div",Da,[t("canvas",{ref_key:"modelUsageChart",ref:Q},null,512)])]),t("div",Ta,[e[50]||(e[50]=t("h4",{class:"mb-4 text-base font-semibold text-gray-800 dark:text-gray-200 sm:text-lg"}," 详细统计数据 ",-1)),a(L).length===0?(D(),k("div",Ca,e[48]||(e[48]=[t("p",{class:"text-sm text-gray-500 sm:text-base"},"暂无模型使用数据",-1)]))):(D(),k("div",_a,[t("table",wa,[e[49]||(e[49]=t("thead",{class:"sticky top-0 bg-gray-50 dark:bg-gray-700"},[t("tr",null,[t("th",{class:"px-2 py-2 text-left text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 模型 "),t("th",{class:"hidden px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:table-cell sm:px-4"}," 请求数 "),t("th",{class:"px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 总Token "),t("th",{class:"px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 费用 "),t("th",{class:"hidden px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:table-cell sm:px-4"}," 占比 ")])],-1)),t("tbody",Sa,[(D(!0),k(Ct,null,_t(a(L),g=>(D(),k("tr",{key:g.model,class:"hover:bg-gray-50 dark:hover:bg-gray-700"},[t("td",$a,[t("span",{class:"block max-w-[100px] truncate sm:max-w-none",title:g.model},y(g.model),9,Ra)]),t("td",Aa,y(v(g.requests)),1),t("td",Pa,y(v(g.allTokens)),1),t("td",Ia,y(g.formatted?g.formatted.total:"$0.000000"),1),t("td",Ba,[t("span",Ua,y(M(g.allTokens,a(L)))+"% ",1)])]))),128))])])]))])])]),t("div",Ma,[t("div",Ka,[t("div",Oa,[t("canvas",{ref_key:"usageTrendChart",ref:tt},null,512)])])]),t("div",Fa,[t("div",La,[t("div",za,[e[53]||(e[53]=t("h3",{class:"text-base font-semibold text-gray-900 dark:text-gray-100 sm:text-lg"}," API Keys 使用趋势 ",-1)),t("div",Ha,[t("button",{class:j(["rounded-md px-2 py-1 text-xs font-medium transition-colors sm:px-3 sm:text-sm",a(f)==="requests"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[5]||(e[5]=g=>(f.value="requests",ht()))},e[51]||(e[51]=[t("i",{class:"fas fa-exchange-alt mr-1"},null,-1),t("span",{class:"hidden sm:inline"},"请求次数",-1),t("span",{class:"sm:hidden"},"请求",-1)]),2),t("button",{class:j(["rounded-md px-2 py-1 text-xs font-medium transition-colors sm:px-3 sm:text-sm",a(f)==="tokens"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[6]||(e[6]=g=>(f.value="tokens",ht()))},e[52]||(e[52]=[t("i",{class:"fas fa-coins mr-1"},null,-1),t("span",{class:"hidden sm:inline"},"Token 数量",-1),t("span",{class:"sm:hidden"},"Token",-1)]),2)])]),t("div",qa,[a(T).totalApiKeys>10?(D(),k("span",Ea," 共 "+y(a(T).totalApiKeys)+" 个 API Key,显示使用量前 10 个 ",1)):(D(),k("span",Na," 共 "+y(a(T).totalApiKeys)+" 个 API Key ",1))]),t("div",Va,[t("canvas",{ref_key:"apiKeysUsageTrendChart",ref:c},null,512)])])])])}}},Xa=Mt(ja,[["__scopeId","data-v-6534b251"]]);export{Xa as default}; diff --git a/assets/DashboardView-OFXgpCdk.css b/assets/DashboardView-OFXgpCdk.css deleted file mode 100644 index ec299889..00000000 --- a/assets/DashboardView-OFXgpCdk.css +++ /dev/null @@ -1 +0,0 @@ -.custom-date-picker[data-v-6534b251]{font-size:13px}@keyframes spin-6534b251{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin[data-v-6534b251]{animation:spin-6534b251 1s linear infinite} diff --git a/assets/DashboardView-cbgZleS2.css b/assets/DashboardView-cbgZleS2.css new file mode 100644 index 00000000..693f451b --- /dev/null +++ b/assets/DashboardView-cbgZleS2.css @@ -0,0 +1 @@ +.custom-date-picker[data-v-e71abcc3]{font-size:13px}@keyframes spin-e71abcc3{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin[data-v-e71abcc3]{animation:spin-e71abcc3 1s linear infinite} diff --git a/assets/LoginView-BnBqXii9.js b/assets/LoginView-BawsCHOq.js similarity index 94% rename from assets/LoginView-BnBqXii9.js rename to assets/LoginView-BawsCHOq.js index 60fecc010..29d306e7 100644 --- a/assets/LoginView-BnBqXii9.js +++ b/assets/LoginView-BawsCHOq.js @@ -1 +1 @@ -import{c as b,r as y,q as f,x as a,z as s,R as h,L as i,Q as _,u as o,P as m,Y as w,K as u,aq as c,O as g,y as r}from"./vue-vendor-DfnFpxGJ.js";import{_ as v,u as k,a as S}from"./index-BdtiivzQ.js";import{T as L}from"./ThemeToggle-DACcdK5F.js";import"./element-plus-CMedNaYf.js";import"./vendor-BDiMbLwQ.js";const V={class:"flex min-h-screen items-center justify-center p-4 sm:p-6"},T={class:"fixed right-4 top-4 z-50"},N={class:"glass-strong w-full max-w-md rounded-xl p-6 shadow-2xl sm:rounded-2xl sm:p-8 md:rounded-3xl md:p-10"},I={class:"mb-6 text-center sm:mb-8"},q={class:"mx-auto mb-4 flex h-16 w-16 items-center justify-center overflow-hidden rounded-xl border border-gray-300/30 bg-gradient-to-br from-blue-500/20 to-purple-500/20 backdrop-blur-sm sm:mb-6 sm:h-20 sm:w-20 sm:rounded-2xl"},D=["src"],E={key:1,class:"fas fa-cloud text-2xl text-gray-700 sm:text-3xl"},j={key:1,class:"h-10 w-10 animate-pulse rounded bg-gray-300/50 sm:h-12 sm:w-12"},B={key:0,class:"header-title mb-2 text-2xl font-bold text-white sm:text-3xl"},M={key:1,class:"mx-auto mb-2 h-8 w-48 animate-pulse rounded bg-gray-300/50 sm:h-9 sm:w-64"},z=["disabled"],F={key:0,class:"fas fa-sign-in-alt mr-2"},O={key:1,class:"loading-spinner mr-2"},U={key:0,class:"mt-4 rounded-lg border border-red-500/30 bg-red-500/20 p-3 text-center text-xs text-red-800 backdrop-blur-sm dark:text-red-400 sm:mt-6 sm:rounded-xl sm:p-4 sm:text-sm"},A={__name:"LoginView",setup(C){const e=k(),p=S(),d=b(()=>e.oemLoading),n=y({username:"",password:""});f(()=>{p.initTheme(),e.loadOemSettings()});const x=async()=>{await e.login(n.value)};return(K,t)=>(r(),a("div",V,[s("div",T,[h(L,{mode:"dropdown"})]),s("div",N,[s("div",I,[s("div",q,[d.value?(r(),a("div",j)):(r(),a(_,{key:0},[o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon?(r(),a("img",{key:0,alt:"Logo",class:"h-10 w-10 object-contain sm:h-12 sm:w-12",src:o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon,onError:t[0]||(t[0]=l=>l.target.style.display="none")},null,40,D)):(r(),a("i",E))],64))]),!d.value&&o(e).oemSettings.siteName?(r(),a("h1",B,m(o(e).oemSettings.siteName),1)):d.value?(r(),a("div",M)):i("",!0),t[3]||(t[3]=s("p",{class:"text-base text-gray-600 dark:text-gray-400 sm:text-lg"},"管理后台",-1))]),s("form",{class:"space-y-4 sm:space-y-6",onSubmit:w(x,["prevent"])},[s("div",null,[t[4]||(t[4]=s("label",{class:"mb-2 block text-sm font-semibold text-gray-900 dark:text-gray-100 sm:mb-3"},"用户名",-1)),u(s("input",{"onUpdate:modelValue":t[1]||(t[1]=l=>n.value.username=l),class:"form-input w-full",placeholder:"请输入用户名",required:"",type:"text"},null,512),[[c,n.value.username]])]),s("div",null,[t[5]||(t[5]=s("label",{class:"mb-2 block text-sm font-semibold text-gray-900 dark:text-gray-100 sm:mb-3"},"密码",-1)),u(s("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>n.value.password=l),class:"form-input w-full",placeholder:"请输入密码",required:"",type:"password"},null,512),[[c,n.value.password]])]),s("button",{class:"btn btn-primary w-full px-4 py-3 text-base font-semibold sm:px-6 sm:py-4 sm:text-lg",disabled:o(e).loginLoading,type:"submit"},[o(e).loginLoading?i("",!0):(r(),a("i",F)),o(e).loginLoading?(r(),a("div",O)):i("",!0),g(" "+m(o(e).loginLoading?"登录中...":"登录"),1)],8,z)],32),o(e).loginError?(r(),a("div",U,[t[6]||(t[6]=s("i",{class:"fas fa-exclamation-triangle mr-2"},null,-1)),g(m(o(e).loginError),1)])):i("",!0)])]))}},H=v(A,[["__scopeId","data-v-4e1eb19c"]]);export{H as default}; +import{c as b,r as y,q as f,x as a,z as s,R as h,L as i,Q as _,u as o,P as m,Y as w,K as u,aq as c,O as g,y as r}from"./vue-vendor-Ig-GgGwA.js";import{_ as v,u as k,a as S}from"./index-CY9cPBXr.js";import{T as L}from"./ThemeToggle-Bb-3yEk7.js";import"./element-plus-Bq6mBxnk.js";import"./vendor-BDiMbLwQ.js";const V={class:"flex min-h-screen items-center justify-center p-4 sm:p-6"},T={class:"fixed right-4 top-4 z-50"},N={class:"glass-strong w-full max-w-md rounded-xl p-6 shadow-2xl sm:rounded-2xl sm:p-8 md:rounded-3xl md:p-10"},I={class:"mb-6 text-center sm:mb-8"},q={class:"mx-auto mb-4 flex h-16 w-16 items-center justify-center overflow-hidden rounded-xl border border-gray-300/30 bg-gradient-to-br from-blue-500/20 to-purple-500/20 backdrop-blur-sm sm:mb-6 sm:h-20 sm:w-20 sm:rounded-2xl"},D=["src"],E={key:1,class:"fas fa-cloud text-2xl text-gray-700 sm:text-3xl"},j={key:1,class:"h-10 w-10 animate-pulse rounded bg-gray-300/50 sm:h-12 sm:w-12"},B={key:0,class:"header-title mb-2 text-2xl font-bold text-white sm:text-3xl"},M={key:1,class:"mx-auto mb-2 h-8 w-48 animate-pulse rounded bg-gray-300/50 sm:h-9 sm:w-64"},z=["disabled"],F={key:0,class:"fas fa-sign-in-alt mr-2"},O={key:1,class:"loading-spinner mr-2"},U={key:0,class:"mt-4 rounded-lg border border-red-500/30 bg-red-500/20 p-3 text-center text-xs text-red-800 backdrop-blur-sm dark:text-red-400 sm:mt-6 sm:rounded-xl sm:p-4 sm:text-sm"},A={__name:"LoginView",setup(C){const e=k(),p=S(),d=b(()=>e.oemLoading),n=y({username:"",password:""});f(()=>{p.initTheme(),e.loadOemSettings()});const x=async()=>{await e.login(n.value)};return(K,t)=>(r(),a("div",V,[s("div",T,[h(L,{mode:"dropdown"})]),s("div",N,[s("div",I,[s("div",q,[d.value?(r(),a("div",j)):(r(),a(_,{key:0},[o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon?(r(),a("img",{key:0,alt:"Logo",class:"h-10 w-10 object-contain sm:h-12 sm:w-12",src:o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon,onError:t[0]||(t[0]=l=>l.target.style.display="none")},null,40,D)):(r(),a("i",E))],64))]),!d.value&&o(e).oemSettings.siteName?(r(),a("h1",B,m(o(e).oemSettings.siteName),1)):d.value?(r(),a("div",M)):i("",!0),t[3]||(t[3]=s("p",{class:"text-base text-gray-600 dark:text-gray-400 sm:text-lg"},"管理后台",-1))]),s("form",{class:"space-y-4 sm:space-y-6",onSubmit:w(x,["prevent"])},[s("div",null,[t[4]||(t[4]=s("label",{class:"mb-2 block text-sm font-semibold text-gray-900 dark:text-gray-100 sm:mb-3"},"用户名",-1)),u(s("input",{"onUpdate:modelValue":t[1]||(t[1]=l=>n.value.username=l),class:"form-input w-full",placeholder:"请输入用户名",required:"",type:"text"},null,512),[[c,n.value.username]])]),s("div",null,[t[5]||(t[5]=s("label",{class:"mb-2 block text-sm font-semibold text-gray-900 dark:text-gray-100 sm:mb-3"},"密码",-1)),u(s("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>n.value.password=l),class:"form-input w-full",placeholder:"请输入密码",required:"",type:"password"},null,512),[[c,n.value.password]])]),s("button",{class:"btn btn-primary w-full px-4 py-3 text-base font-semibold sm:px-6 sm:py-4 sm:text-lg",disabled:o(e).loginLoading,type:"submit"},[o(e).loginLoading?i("",!0):(r(),a("i",F)),o(e).loginLoading?(r(),a("div",O)):i("",!0),g(" "+m(o(e).loginLoading?"登录中...":"登录"),1)],8,z)],32),o(e).loginError?(r(),a("div",U,[t[6]||(t[6]=s("i",{class:"fas fa-exclamation-triangle mr-2"},null,-1)),g(m(o(e).loginError),1)])):i("",!0)])]))}},H=v(A,[["__scopeId","data-v-4e1eb19c"]]);export{H as default}; diff --git a/assets/LogoTitle-CipNTyYU.js b/assets/LogoTitle-DmOAmnuZ.js similarity index 88% rename from assets/LogoTitle-CipNTyYU.js rename to assets/LogoTitle-DmOAmnuZ.js index c5e28cb4..479cfa9d 100644 --- a/assets/LogoTitle-CipNTyYU.js +++ b/assets/LogoTitle-DmOAmnuZ.js @@ -1 +1 @@ -import{_ as d}from"./index-BdtiivzQ.js";import{x as t,y as a,z as l,Q as n,L as o,A as c,C as g,P as r}from"./vue-vendor-DfnFpxGJ.js";const u={class:"flex items-center gap-4"},y={class:"flex h-12 w-12 flex-shrink-0 items-center justify-center overflow-hidden rounded-xl border border-gray-300/30 bg-gradient-to-br from-blue-500/20 to-purple-500/20 backdrop-blur-sm dark:border-gray-600/30 dark:from-blue-600/20 dark:to-purple-600/20"},f=["src"],m={key:1,class:"fas fa-cloud text-xl text-gray-700 dark:text-gray-300"},h={key:1,class:"h-8 w-8 animate-pulse rounded bg-gray-300/50 dark:bg-gray-600/50"},x={class:"flex min-h-[48px] flex-col justify-center"},b={class:"flex items-center gap-3"},k={key:1,class:"h-8 w-64 animate-pulse rounded bg-gray-300/50 dark:bg-gray-600/50"},_={key:0,class:"mt-0.5 text-sm leading-tight text-gray-600 dark:text-gray-400"},p={__name:"LogoTitle",props:{loading:{type:Boolean,default:!1},title:{type:String,default:""},subtitle:{type:String,default:""},logoSrc:{type:String,default:""},titleClass:{type:String,default:"text-gray-900"}},setup(e){const i=s=>{s.target.style.display="none"};return(s,S)=>(a(),t("div",u,[l("div",y,[e.loading?(a(),t("div",h)):(a(),t(n,{key:0},[e.logoSrc?(a(),t("img",{key:0,alt:"Logo",class:"h-8 w-8 object-contain",src:e.logoSrc,onError:i},null,40,f)):(a(),t("i",m))],64))]),l("div",x,[l("div",b,[!e.loading&&e.title?(a(),t("h1",{key:0,class:g(["header-title text-2xl font-bold leading-tight",e.titleClass])},r(e.title),3)):e.loading?(a(),t("div",k)):o("",!0),c(s.$slots,"after-title",{},void 0,!0)]),e.subtitle?(a(),t("p",_,r(e.subtitle),1)):o("",!0)])]))}},w=d(p,[["__scopeId","data-v-15eb26fd"]]);export{w as L}; +import{_ as d}from"./index-CY9cPBXr.js";import{x as t,y as a,z as l,Q as n,L as o,A as c,C as g,P as r}from"./vue-vendor-Ig-GgGwA.js";const u={class:"flex items-center gap-4"},y={class:"flex h-12 w-12 flex-shrink-0 items-center justify-center overflow-hidden rounded-xl border border-gray-300/30 bg-gradient-to-br from-blue-500/20 to-purple-500/20 backdrop-blur-sm dark:border-gray-600/30 dark:from-blue-600/20 dark:to-purple-600/20"},f=["src"],m={key:1,class:"fas fa-cloud text-xl text-gray-700 dark:text-gray-300"},h={key:1,class:"h-8 w-8 animate-pulse rounded bg-gray-300/50 dark:bg-gray-600/50"},x={class:"flex min-h-[48px] flex-col justify-center"},b={class:"flex items-center gap-3"},k={key:1,class:"h-8 w-64 animate-pulse rounded bg-gray-300/50 dark:bg-gray-600/50"},_={key:0,class:"mt-0.5 text-sm leading-tight text-gray-600 dark:text-gray-400"},p={__name:"LogoTitle",props:{loading:{type:Boolean,default:!1},title:{type:String,default:""},subtitle:{type:String,default:""},logoSrc:{type:String,default:""},titleClass:{type:String,default:"text-gray-900"}},setup(e){const i=s=>{s.target.style.display="none"};return(s,S)=>(a(),t("div",u,[l("div",y,[e.loading?(a(),t("div",h)):(a(),t(n,{key:0},[e.logoSrc?(a(),t("img",{key:0,alt:"Logo",class:"h-8 w-8 object-contain",src:e.logoSrc,onError:i},null,40,f)):(a(),t("i",m))],64))]),l("div",x,[l("div",b,[!e.loading&&e.title?(a(),t("h1",{key:0,class:g(["header-title text-2xl font-bold leading-tight",e.titleClass])},r(e.title),3)):e.loading?(a(),t("div",k)):o("",!0),c(s.$slots,"after-title",{},void 0,!0)]),e.subtitle?(a(),t("p",_,r(e.subtitle),1)):o("",!0)])]))}},w=d(p,[["__scopeId","data-v-15eb26fd"]]);export{w as L}; diff --git a/assets/MainLayout-BgC31_Mb.js b/assets/MainLayout-BgC31_Mb.js new file mode 100644 index 00000000..08c80127 --- /dev/null +++ b/assets/MainLayout-BgC31_Mb.js @@ -0,0 +1 @@ +import{c as T,r as k,_ as z,q as B,V as E,x as l,y as i,z as e,L as I,R as b,J as S,P as x,C as M,Y as L,O as v,T as R,K as _,aq as U,Q as $,aT as V,ac as j,o as F,av as J,aU as H,D as Q}from"./vue-vendor-Ig-GgGwA.js";import{_ as N,u as Y,b as D}from"./index-CY9cPBXr.js";import{s as y}from"./toast-BvwA7Mwb.js";import{L as G}from"./LogoTitle-DmOAmnuZ.js";import{T as W}from"./ThemeToggle-Bb-3yEk7.js";import"./element-plus-Bq6mBxnk.js";import"./vendor-BDiMbLwQ.js";const X={class:"glass-strong mb-4 rounded-xl p-3 shadow-xl sm:mb-6 sm:rounded-2xl sm:p-4 md:mb-8 md:rounded-3xl md:p-6",style:{"z-index":"10",position:"relative"}},Z={class:"flex flex-col items-center justify-between gap-3 sm:flex-row sm:gap-4"},ee={class:"flex w-full items-center justify-center gap-2 sm:w-auto sm:justify-start sm:gap-3 md:gap-4"},te={class:"flex items-center gap-1 sm:gap-2"},se={class:"font-mono text-xs text-gray-400 dark:text-gray-500 sm:text-sm"},ae=["href"],re={class:"flex items-center gap-2 sm:gap-4"},oe={class:"flex items-center"},ne={class:"user-menu-container relative"},le={class:"hidden sm:inline"},ie={class:"border-b border-gray-100 px-4 py-3 dark:border-gray-700"},de={class:"flex items-center justify-between text-sm"},ue={class:"font-mono text-gray-700 dark:text-gray-300"},ce={key:0,class:"mt-2"},me={class:"mb-2 flex items-center justify-between text-sm"},ge={class:"font-mono text-green-600 dark:text-green-400"},pe=["href"],fe={key:1,class:"mt-2 text-center text-xs text-gray-500 dark:text-gray-400"},xe={key:2,class:"mt-2 text-center"},ve={key:"message",class:"inline-block rounded-lg border border-green-200 bg-green-100 px-3 py-1.5 dark:border-green-800 dark:bg-green-900/30"},ye={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},be={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-md flex-col p-4 sm:p-6 md:p-8"},he=["value"],ke={class:"flex gap-3 pt-4"},we=["disabled"],_e={key:0,class:"loading-spinner mr-2"},Ue={key:1,class:"fas fa-save mr-2"},Ce={__name:"AppHeader",setup(w){const m=V(),p=Y(),d=T(()=>p.user||{username:"Admin"}),r=T(()=>p.oemSettings||{}),h=T(()=>p.oemLoading),s=k({current:"...",latest:"",hasUpdate:!1,checkingUpdate:!1,lastChecked:null,releaseInfo:null,noUpdateMessage:!1}),n=k(!1),u=k(!1),o=k(!1),a=z({currentPassword:"",newPassword:"",confirmPassword:"",newUsername:""}),C=async()=>{if(!s.value.checkingUpdate){s.value.checkingUpdate=!0;try{const g=await D.get("/admin/check-updates");if(g.success){const t=g.data;s.value.current=t.current,s.value.latest=t.latest,s.value.hasUpdate=t.hasUpdate,s.value.releaseInfo=t.releaseInfo,s.value.lastChecked=new Date,localStorage.setItem("versionInfo",JSON.stringify({current:t.current,latest:t.latest,lastChecked:s.value.lastChecked,hasUpdate:t.hasUpdate,releaseInfo:t.releaseInfo})),t.hasUpdate||(s.value.noUpdateMessage=!0,setTimeout(()=>{s.value.noUpdateMessage=!1},3e3))}}catch(g){console.error("Error checking for updates:",g);const t=localStorage.getItem("versionInfo");if(t){const f=JSON.parse(t);s.value.current=f.current||s.value.current,s.value.latest=f.latest,s.value.hasUpdate=f.hasUpdate,s.value.releaseInfo=f.releaseInfo,s.value.lastChecked=new Date(f.lastChecked)}}finally{s.value.checkingUpdate=!1}}},K=()=>{a.currentPassword="",a.newPassword="",a.confirmPassword="",a.newUsername="",u.value=!0,n.value=!1},P=()=>{u.value=!1},O=async()=>{if(a.newPassword!==a.confirmPassword){y("两次输入的密码不一致","error");return}if(a.newPassword.length<8){y("新密码长度至少8位","error");return}o.value=!0;try{const g=await D.post("/web/auth/change-password",{currentPassword:a.currentPassword,newPassword:a.newPassword,newUsername:a.newUsername||void 0});if(g.success){const t=a.newUsername?"账户信息修改成功,请重新登录":"密码修改成功,请重新登录";y(t,"success"),P(),setTimeout(()=>{p.logout(),m.push("/login")},1500)}else y(g.message||"修改失败","error")}catch{y("修改密码失败","error")}finally{o.value=!1}},q=()=>{confirm("确定要退出登录吗?")&&(p.logout(),m.push("/login"),y("已安全退出","success")),n.value=!1},A=g=>{!g.target.closest(".user-menu-container")&&n.value&&(n.value=!1)};return B(()=>{C(),setInterval(()=>{C()},36e5),document.addEventListener("click",A)}),E(()=>{document.removeEventListener("click",A)}),(g,t)=>{var f;return i(),l($,null,[e("div",X,[e("div",Z,[e("div",ee,[b(G,{loading:h.value,"logo-src":r.value.siteIconData||r.value.siteIcon,subtitle:"管理后台",title:r.value.siteName,"title-class":"text-white dark:text-gray-100"},{"after-title":S(()=>{var c;return[e("div",te,[e("span",se,"v"+x(s.value.current||"..."),1),s.value.hasUpdate?(i(),l("a",{key:0,class:"inline-flex animate-pulse items-center gap-1 rounded-full border border-green-600 bg-green-500 px-2 py-0.5 text-xs text-white transition-colors hover:bg-green-600",href:((c=s.value.releaseInfo)==null?void 0:c.htmlUrl)||"#",target:"_blank",title:"有新版本可用"},t[7]||(t[7]=[e("i",{class:"fas fa-arrow-up text-[10px]"},null,-1),e("span",null,"新版本",-1)]),8,ae)):I("",!0)])]}),_:1},8,["loading","logo-src","title"])]),e("div",re,[e("div",oe,[b(W,{mode:"dropdown"})]),t[18]||(t[18]=e("div",{class:"h-8 w-px bg-gradient-to-b from-transparent via-gray-300 to-transparent opacity-50 dark:via-gray-600"},null,-1)),e("div",ne,[e("button",{class:"user-menu-button flex items-center gap-2 rounded-2xl bg-gradient-to-r from-blue-500 to-blue-600 px-3 py-2 text-sm font-semibold text-white shadow-lg transition-all duration-200 hover:scale-105 hover:shadow-xl active:scale-95 sm:px-4 sm:py-2.5",onClick:t[0]||(t[0]=c=>n.value=!n.value)},[t[8]||(t[8]=e("i",{class:"fas fa-user-circle text-sm sm:text-base"},null,-1)),e("span",le,x(d.value.username||"Admin"),1),e("i",{class:M(["fas fa-chevron-down ml-1 text-xs transition-transform duration-200",{"rotate-180":n.value}])},null,2)]),n.value?(i(),l("div",{key:0,class:"user-menu-dropdown absolute right-0 top-full mt-2 w-48 rounded-xl border border-gray-200 bg-white py-2 shadow-xl dark:border-gray-700 dark:bg-gray-800 sm:w-56",style:{"z-index":"999999"},onClick:t[2]||(t[2]=L(()=>{},["stop"]))},[e("div",ie,[e("div",de,[t[9]||(t[9]=e("span",{class:"text-gray-500 dark:text-gray-400"},"当前版本",-1)),e("span",ue,"v"+x(s.value.current||"..."),1)]),s.value.hasUpdate?(i(),l("div",ce,[e("div",me,[t[10]||(t[10]=e("span",{class:"font-medium text-green-600 dark:text-green-400"},[e("i",{class:"fas fa-arrow-up mr-1"}),v("有新版本 ")],-1)),e("span",ge,"v"+x(s.value.latest),1)]),e("a",{class:"block w-full rounded-lg bg-green-500 px-3 py-1.5 text-center text-sm text-white transition-colors hover:bg-green-600",href:((f=s.value.releaseInfo)==null?void 0:f.htmlUrl)||"#",target:"_blank"},t[11]||(t[11]=[e("i",{class:"fas fa-external-link-alt mr-1"},null,-1),v("查看更新 ",-1)]),8,pe)])):s.value.checkingUpdate?(i(),l("div",fe,t[12]||(t[12]=[e("i",{class:"fas fa-spinner fa-spin mr-1"},null,-1),v("检查更新中... ",-1)]))):(i(),l("div",xe,[b(R,{mode:"out-in",name:"fade"},{default:S(()=>[s.value.noUpdateMessage?(i(),l("div",ve,t[13]||(t[13]=[e("p",{class:"text-xs font-medium text-green-700 dark:text-green-400"},[e("i",{class:"fas fa-check-circle mr-1"}),v("当前已是最新版本 ")],-1)]))):(i(),l("button",{key:"button",class:"text-xs text-blue-500 transition-colors hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300",onClick:t[1]||(t[1]=c=>C())},t[14]||(t[14]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),v("检查更新 ",-1)])))]),_:1})]))]),e("button",{class:"flex w-full items-center gap-3 px-4 py-3 text-left text-gray-700 transition-colors hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700",onClick:K},t[15]||(t[15]=[e("i",{class:"fas fa-key text-blue-500"},null,-1),e("span",null,"修改账户信息",-1)])),t[17]||(t[17]=e("hr",{class:"my-2 border-gray-200 dark:border-gray-700"},null,-1)),e("button",{class:"flex w-full items-center gap-3 px-4 py-3 text-left text-gray-700 transition-colors hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700",onClick:q},t[16]||(t[16]=[e("i",{class:"fas fa-sign-out-alt text-red-500"},null,-1),e("span",null,"退出登录",-1)]))])):I("",!0)])])])]),u.value?(i(),l("div",ye,[e("div",be,[e("div",{class:"mb-6 flex items-center justify-between"},[t[20]||(t[20]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-blue-500 to-blue-600"},[e("i",{class:"fas fa-key text-white"})]),e("h3",{class:"text-xl font-bold text-gray-900 dark:text-gray-100"},"修改账户信息")],-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600 dark:hover:text-gray-300",onClick:P},t[19]||(t[19]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-6",onSubmit:L(O,["prevent"])},[e("div",null,[t[21]||(t[21]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"当前用户名",-1)),e("input",{class:"form-input w-full cursor-not-allowed bg-gray-100 dark:bg-gray-700 dark:text-gray-300",disabled:"",type:"text",value:d.value.username||"Admin"},null,8,he),t[22]||(t[22]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 当前用户名,输入新用户名以修改 ",-1))]),e("div",null,[t[23]||(t[23]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新用户名",-1)),_(e("input",{"onUpdate:modelValue":t[3]||(t[3]=c=>a.newUsername=c),class:"form-input w-full",placeholder:"输入新用户名(留空保持不变)",type:"text"},null,512),[[U,a.newUsername]]),t[24]||(t[24]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},"留空表示不修改用户名",-1))]),e("div",null,[t[25]||(t[25]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"当前密码",-1)),_(e("input",{"onUpdate:modelValue":t[4]||(t[4]=c=>a.currentPassword=c),class:"form-input w-full",placeholder:"请输入当前密码",required:"",type:"password"},null,512),[[U,a.currentPassword]])]),e("div",null,[t[26]||(t[26]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新密码",-1)),_(e("input",{"onUpdate:modelValue":t[5]||(t[5]=c=>a.newPassword=c),class:"form-input w-full",placeholder:"请输入新密码",required:"",type:"password"},null,512),[[U,a.newPassword]]),t[27]||(t[27]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},"密码长度至少8位",-1))]),e("div",null,[t[28]||(t[28]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"确认新密码",-1)),_(e("input",{"onUpdate:modelValue":t[6]||(t[6]=c=>a.confirmPassword=c),class:"form-input w-full",placeholder:"请再次输入新密码",required:"",type:"password"},null,512),[[U,a.confirmPassword]])]),e("div",ke,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:P}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:o.value,type:"submit"},[o.value?(i(),l("div",_e)):(i(),l("i",Ue)),v(" "+x(o.value?"保存中...":"保存修改"),1)],8,we)])],32)])])):I("",!0)],64)}}},Pe=N(Ce,[["__scopeId","data-v-1d65ae6c"]]),Te={class:"mb-4 sm:mb-6"},Ie={class:"block rounded-xl bg-white/10 p-2 backdrop-blur-sm dark:bg-gray-800/20 sm:hidden"},Me=["value"],$e=["value"],Ne={class:"hidden flex-wrap gap-2 rounded-2xl bg-white/10 p-2 backdrop-blur-sm dark:bg-gray-800/20 sm:flex"},Ae=["onClick"],Se={class:"hidden md:inline"},Le={class:"md:hidden"},je={__name:"TabBar",props:{activeTab:{type:String,required:!0}},emits:["tab-change"],setup(w){const m=[{key:"dashboard",name:"仪表板",shortName:"仪表板",icon:"fas fa-tachometer-alt"},{key:"apiKeys",name:"API Keys",shortName:"API",icon:"fas fa-key"},{key:"accounts",name:"账户管理",shortName:"账户",icon:"fas fa-user-circle"},{key:"tutorial",name:"使用教程",shortName:"教程",icon:"fas fa-graduation-cap"},{key:"settings",name:"系统设置",shortName:"设置",icon:"fas fa-cogs"}];return(p,d)=>(i(),l("div",Te,[e("div",Ie,[e("select",{class:"focus:ring-primary-color w-full rounded-lg bg-white/90 px-4 py-3 font-semibold text-gray-700 focus:outline-none focus:ring-2 dark:bg-gray-800/90 dark:text-gray-200 dark:focus:ring-indigo-400",value:w.activeTab,onChange:d[0]||(d[0]=r=>p.$emit("tab-change",r.target.value))},[(i(),l($,null,j(m,r=>e("option",{key:r.key,value:r.key},x(r.name),9,$e)),64))],40,Me)]),e("div",Ne,[(i(),l($,null,j(m,r=>e("button",{key:r.key,class:M(["tab-btn flex-1 px-3 py-2 text-xs font-semibold transition-all duration-300 sm:px-4 sm:py-3 sm:text-sm md:px-6",w.activeTab===r.key?"active":"text-gray-700 hover:bg-white/10 hover:text-gray-900 dark:text-gray-300 dark:hover:bg-gray-700/30 dark:hover:text-gray-100"]),onClick:h=>p.$emit("tab-change",r.key)},[e("i",{class:M(r.icon+" mr-1 sm:mr-2")},null,2),e("span",Se,x(r.name),1),e("span",Le,x(r.shortName||r.name),1)],10,Ae)),64))])]))}},De=N(je,[["__scopeId","data-v-5158bf7c"]]),Ve={class:"min-h-screen p-3 sm:p-4 md:p-6"},Ke={class:"glass-strong rounded-xl p-3 shadow-xl sm:rounded-2xl sm:p-4 md:rounded-3xl md:p-6",style:{"z-index":"1","min-height":"calc(100vh - 120px)"}},Oe={class:"tab-content"},qe={__name:"MainLayout",setup(w){const m=H(),p=V(),d=k("dashboard"),r={dashboard:"/dashboard",apiKeys:"/api-keys",accounts:"/accounts",tutorial:"/tutorial",settings:"/settings"},h=()=>{const n=m.path,u=Object.keys(r).find(o=>r[o]===n);if(u)d.value=u;else{const o=m.name,a={Dashboard:"dashboard",ApiKeys:"apiKeys",Accounts:"accounts",Tutorial:"tutorial",Settings:"settings"};o&&a[o]?d.value=a[o]:d.value="dashboard"}};h(),F(()=>m.path,n=>{const u=Object.keys(r).find(o=>r[o]===n);if(u)d.value=u;else{const o=m.name,a={Dashboard:"dashboard",ApiKeys:"apiKeys",Accounts:"accounts",Tutorial:"tutorial",Settings:"settings"};o&&a[o]&&(d.value=a[o])}});const s=async n=>{if(r[n]!==m.path){d.value=n;try{await p.push(r[n]),await Q()}catch(u){u.name!=="NavigationDuplicated"&&(console.error("路由切换失败:",u),h())}}};return(n,u)=>{const o=J("router-view");return i(),l("div",Ve,[b(Pe),e("div",Ke,[b(De,{"active-tab":d.value,onTabChange:s},null,8,["active-tab"]),e("div",Oe,[b(o)])])])}}},Qe=N(qe,[["__scopeId","data-v-55c24776"]]);export{Qe as default}; diff --git a/assets/MainLayout-DksoGYYS.js b/assets/MainLayout-DksoGYYS.js deleted file mode 100644 index b2f7b44b..00000000 --- a/assets/MainLayout-DksoGYYS.js +++ /dev/null @@ -1 +0,0 @@ -import{c as T,r as k,_ as E,q as R,V as F,x as n,y as o,z as e,L as $,R as v,J as C,P as g,C as M,Y as S,O as y,T as q,K as _,aq as U,Q as N,aT as z,ac as A,o as J,av as H,aU as Q,I as j,aV as Y,M as G}from"./vue-vendor-DfnFpxGJ.js";import{_ as V,u as W,b as D}from"./index-BdtiivzQ.js";import{s as b}from"./toast-BvwA7Mwb.js";import{L as X}from"./LogoTitle-CipNTyYU.js";import{T as Z}from"./ThemeToggle-DACcdK5F.js";import"./element-plus-CMedNaYf.js";import"./vendor-BDiMbLwQ.js";const ee={class:"glass-strong mb-4 rounded-xl p-3 shadow-xl sm:mb-6 sm:rounded-2xl sm:p-4 md:mb-8 md:rounded-3xl md:p-6",style:{"z-index":"10",position:"relative"}},te={class:"flex flex-col items-center justify-between gap-3 sm:flex-row sm:gap-4"},se={class:"flex w-full items-center justify-center gap-2 sm:w-auto sm:justify-start sm:gap-3 md:gap-4"},ae={class:"flex items-center gap-1 sm:gap-2"},re={class:"font-mono text-xs text-gray-400 dark:text-gray-500 sm:text-sm"},oe=["href"],ne={class:"flex items-center gap-2 sm:gap-4"},le={class:"flex items-center"},de={class:"user-menu-container relative"},ie={class:"hidden sm:inline"},ue={class:"border-b border-gray-100 px-4 py-3 dark:border-gray-700"},ce={class:"flex items-center justify-between text-sm"},me={class:"font-mono text-gray-700 dark:text-gray-300"},ge={key:0,class:"mt-2"},pe={class:"mb-2 flex items-center justify-between text-sm"},fe={class:"font-mono text-green-600 dark:text-green-400"},xe=["href"],ve={key:1,class:"mt-2 text-center text-xs text-gray-500 dark:text-gray-400"},ye={key:2,class:"mt-2 text-center"},be={key:"message",class:"inline-block rounded-lg border border-green-200 bg-green-100 px-3 py-1.5 dark:border-green-800 dark:bg-green-900/30"},ke={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},he={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-md flex-col p-4 sm:p-6 md:p-8"},we=["value"],_e={class:"flex gap-3 pt-4"},Ue=["disabled"],Ce={key:0,class:"loading-spinner mr-2"},Pe={key:1,class:"fas fa-save mr-2"},Ie={__name:"AppHeader",setup(h){const p=z(),u=W(),c=T(()=>u.user||{username:"Admin"}),a=T(()=>u.oemSettings||{}),w=T(()=>u.oemLoading),s=k({current:"...",latest:"",hasUpdate:!1,checkingUpdate:!1,lastChecked:null,releaseInfo:null,noUpdateMessage:!1}),l=k(!1),f=k(!1),x=k(!1),r=E({currentPassword:"",newPassword:"",confirmPassword:"",newUsername:""}),P=async()=>{if(!s.value.checkingUpdate){s.value.checkingUpdate=!0;try{const i=await D.get("/admin/check-updates");if(i.success){const t=i.data;s.value.current=t.current,s.value.latest=t.latest,s.value.hasUpdate=t.hasUpdate,s.value.releaseInfo=t.releaseInfo,s.value.lastChecked=new Date,localStorage.setItem("versionInfo",JSON.stringify({current:t.current,latest:t.latest,lastChecked:s.value.lastChecked,hasUpdate:t.hasUpdate,releaseInfo:t.releaseInfo})),t.hasUpdate||(s.value.noUpdateMessage=!0,setTimeout(()=>{s.value.noUpdateMessage=!1},3e3))}}catch(i){console.error("Error checking for updates:",i);const t=localStorage.getItem("versionInfo");if(t){const m=JSON.parse(t);s.value.current=m.current||s.value.current,s.value.latest=m.latest,s.value.hasUpdate=m.hasUpdate,s.value.releaseInfo=m.releaseInfo,s.value.lastChecked=new Date(m.lastChecked)}}finally{s.value.checkingUpdate=!1}}},B=()=>{r.currentPassword="",r.newPassword="",r.confirmPassword="",r.newUsername="",f.value=!0,l.value=!1},I=()=>{f.value=!1},K=async()=>{if(r.newPassword!==r.confirmPassword){b("两次输入的密码不一致","error");return}if(r.newPassword.length<8){b("新密码长度至少8位","error");return}x.value=!0;try{const i=await D.post("/web/auth/change-password",{currentPassword:r.currentPassword,newPassword:r.newPassword,newUsername:r.newUsername||void 0});if(i.success){const t=r.newUsername?"账户信息修改成功,请重新登录":"密码修改成功,请重新登录";b(t,"success"),I(),setTimeout(()=>{u.logout(),p.push("/login")},1500)}else b(i.message||"修改失败","error")}catch{b("修改密码失败","error")}finally{x.value=!1}},O=()=>{confirm("确定要退出登录吗?")&&(u.logout(),p.push("/login"),b("已安全退出","success")),l.value=!1},L=i=>{!i.target.closest(".user-menu-container")&&l.value&&(l.value=!1)};return R(()=>{P(),setInterval(()=>{P()},36e5),document.addEventListener("click",L)}),F(()=>{document.removeEventListener("click",L)}),(i,t)=>{var m;return o(),n(N,null,[e("div",ee,[e("div",te,[e("div",se,[v(X,{loading:w.value,"logo-src":a.value.siteIconData||a.value.siteIcon,subtitle:"管理后台",title:a.value.siteName,"title-class":"text-white dark:text-gray-100"},{"after-title":C(()=>{var d;return[e("div",ae,[e("span",re,"v"+g(s.value.current||"..."),1),s.value.hasUpdate?(o(),n("a",{key:0,class:"inline-flex animate-pulse items-center gap-1 rounded-full border border-green-600 bg-green-500 px-2 py-0.5 text-xs text-white transition-colors hover:bg-green-600",href:((d=s.value.releaseInfo)==null?void 0:d.htmlUrl)||"#",target:"_blank",title:"有新版本可用"},t[7]||(t[7]=[e("i",{class:"fas fa-arrow-up text-[10px]"},null,-1),e("span",null,"新版本",-1)]),8,oe)):$("",!0)])]}),_:1},8,["loading","logo-src","title"])]),e("div",ne,[e("div",le,[v(Z,{mode:"dropdown"})]),t[18]||(t[18]=e("div",{class:"h-8 w-px bg-gradient-to-b from-transparent via-gray-300 to-transparent opacity-50 dark:via-gray-600"},null,-1)),e("div",de,[e("button",{class:"user-menu-button flex items-center gap-2 rounded-2xl bg-gradient-to-r from-blue-500 to-blue-600 px-3 py-2 text-sm font-semibold text-white shadow-lg transition-all duration-200 hover:scale-105 hover:shadow-xl active:scale-95 sm:px-4 sm:py-2.5",onClick:t[0]||(t[0]=d=>l.value=!l.value)},[t[8]||(t[8]=e("i",{class:"fas fa-user-circle text-sm sm:text-base"},null,-1)),e("span",ie,g(c.value.username||"Admin"),1),e("i",{class:M(["fas fa-chevron-down ml-1 text-xs transition-transform duration-200",{"rotate-180":l.value}])},null,2)]),l.value?(o(),n("div",{key:0,class:"user-menu-dropdown absolute right-0 top-full mt-2 w-48 rounded-xl border border-gray-200 bg-white py-2 shadow-xl dark:border-gray-700 dark:bg-gray-800 sm:w-56",style:{"z-index":"999999"},onClick:t[2]||(t[2]=S(()=>{},["stop"]))},[e("div",ue,[e("div",ce,[t[9]||(t[9]=e("span",{class:"text-gray-500 dark:text-gray-400"},"当前版本",-1)),e("span",me,"v"+g(s.value.current||"..."),1)]),s.value.hasUpdate?(o(),n("div",ge,[e("div",pe,[t[10]||(t[10]=e("span",{class:"font-medium text-green-600 dark:text-green-400"},[e("i",{class:"fas fa-arrow-up mr-1"}),y("有新版本 ")],-1)),e("span",fe,"v"+g(s.value.latest),1)]),e("a",{class:"block w-full rounded-lg bg-green-500 px-3 py-1.5 text-center text-sm text-white transition-colors hover:bg-green-600",href:((m=s.value.releaseInfo)==null?void 0:m.htmlUrl)||"#",target:"_blank"},t[11]||(t[11]=[e("i",{class:"fas fa-external-link-alt mr-1"},null,-1),y("查看更新 ",-1)]),8,xe)])):s.value.checkingUpdate?(o(),n("div",ve,t[12]||(t[12]=[e("i",{class:"fas fa-spinner fa-spin mr-1"},null,-1),y("检查更新中... ",-1)]))):(o(),n("div",ye,[v(q,{mode:"out-in",name:"fade"},{default:C(()=>[s.value.noUpdateMessage?(o(),n("div",be,t[13]||(t[13]=[e("p",{class:"text-xs font-medium text-green-700 dark:text-green-400"},[e("i",{class:"fas fa-check-circle mr-1"}),y("当前已是最新版本 ")],-1)]))):(o(),n("button",{key:"button",class:"text-xs text-blue-500 transition-colors hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300",onClick:t[1]||(t[1]=d=>P())},t[14]||(t[14]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),y("检查更新 ",-1)])))]),_:1})]))]),e("button",{class:"flex w-full items-center gap-3 px-4 py-3 text-left text-gray-700 transition-colors hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700",onClick:B},t[15]||(t[15]=[e("i",{class:"fas fa-key text-blue-500"},null,-1),e("span",null,"修改账户信息",-1)])),t[17]||(t[17]=e("hr",{class:"my-2 border-gray-200 dark:border-gray-700"},null,-1)),e("button",{class:"flex w-full items-center gap-3 px-4 py-3 text-left text-gray-700 transition-colors hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700",onClick:O},t[16]||(t[16]=[e("i",{class:"fas fa-sign-out-alt text-red-500"},null,-1),e("span",null,"退出登录",-1)]))])):$("",!0)])])])]),f.value?(o(),n("div",ke,[e("div",he,[e("div",{class:"mb-6 flex items-center justify-between"},[t[20]||(t[20]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-blue-500 to-blue-600"},[e("i",{class:"fas fa-key text-white"})]),e("h3",{class:"text-xl font-bold text-gray-900 dark:text-gray-100"},"修改账户信息")],-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600 dark:hover:text-gray-300",onClick:I},t[19]||(t[19]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-6",onSubmit:S(K,["prevent"])},[e("div",null,[t[21]||(t[21]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"当前用户名",-1)),e("input",{class:"form-input w-full cursor-not-allowed bg-gray-100 dark:bg-gray-700 dark:text-gray-300",disabled:"",type:"text",value:c.value.username||"Admin"},null,8,we),t[22]||(t[22]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 当前用户名,输入新用户名以修改 ",-1))]),e("div",null,[t[23]||(t[23]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新用户名",-1)),_(e("input",{"onUpdate:modelValue":t[3]||(t[3]=d=>r.newUsername=d),class:"form-input w-full",placeholder:"输入新用户名(留空保持不变)",type:"text"},null,512),[[U,r.newUsername]]),t[24]||(t[24]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},"留空表示不修改用户名",-1))]),e("div",null,[t[25]||(t[25]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"当前密码",-1)),_(e("input",{"onUpdate:modelValue":t[4]||(t[4]=d=>r.currentPassword=d),class:"form-input w-full",placeholder:"请输入当前密码",required:"",type:"password"},null,512),[[U,r.currentPassword]])]),e("div",null,[t[26]||(t[26]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新密码",-1)),_(e("input",{"onUpdate:modelValue":t[5]||(t[5]=d=>r.newPassword=d),class:"form-input w-full",placeholder:"请输入新密码",required:"",type:"password"},null,512),[[U,r.newPassword]]),t[27]||(t[27]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},"密码长度至少8位",-1))]),e("div",null,[t[28]||(t[28]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"确认新密码",-1)),_(e("input",{"onUpdate:modelValue":t[6]||(t[6]=d=>r.confirmPassword=d),class:"form-input w-full",placeholder:"请再次输入新密码",required:"",type:"password"},null,512),[[U,r.confirmPassword]])]),e("div",_e,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:I}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:x.value,type:"submit"},[x.value?(o(),n("div",Ce)):(o(),n("i",Pe)),y(" "+g(x.value?"保存中...":"保存修改"),1)],8,Ue)])],32)])])):$("",!0)],64)}}},Te=V(Ie,[["__scopeId","data-v-1d65ae6c"]]),$e={class:"mb-4 sm:mb-6"},Me={class:"block rounded-xl bg-white/10 p-2 backdrop-blur-sm dark:bg-gray-800/20 sm:hidden"},Ne=["value"],Ve=["value"],Le={class:"hidden flex-wrap gap-2 rounded-2xl bg-white/10 p-2 backdrop-blur-sm dark:bg-gray-800/20 sm:flex"},Se=["onClick"],Ae={class:"hidden md:inline"},je={class:"md:hidden"},De={__name:"TabBar",props:{activeTab:{type:String,required:!0}},emits:["tab-change"],setup(h){const p=[{key:"dashboard",name:"仪表板",shortName:"仪表板",icon:"fas fa-tachometer-alt"},{key:"apiKeys",name:"API Keys",shortName:"API",icon:"fas fa-key"},{key:"accounts",name:"账户管理",shortName:"账户",icon:"fas fa-user-circle"},{key:"tutorial",name:"使用教程",shortName:"教程",icon:"fas fa-graduation-cap"},{key:"settings",name:"其他设置",shortName:"设置",icon:"fas fa-cogs"}];return(u,c)=>(o(),n("div",$e,[e("div",Me,[e("select",{class:"focus:ring-primary-color w-full rounded-lg bg-white/90 px-4 py-3 font-semibold text-gray-700 focus:outline-none focus:ring-2 dark:bg-gray-800/90 dark:text-gray-200 dark:focus:ring-indigo-400",value:h.activeTab,onChange:c[0]||(c[0]=a=>u.$emit("tab-change",a.target.value))},[(o(),n(N,null,A(p,a=>e("option",{key:a.key,value:a.key},g(a.name),9,Ve)),64))],40,Ne)]),e("div",Le,[(o(),n(N,null,A(p,a=>e("button",{key:a.key,class:M(["tab-btn flex-1 px-3 py-2 text-xs font-semibold transition-all duration-300 sm:px-4 sm:py-3 sm:text-sm md:px-6",h.activeTab===a.key?"active":"text-gray-700 hover:bg-white/10 hover:text-gray-900 dark:text-gray-300 dark:hover:bg-gray-700/30 dark:hover:text-gray-100"]),onClick:w=>u.$emit("tab-change",a.key)},[e("i",{class:M(a.icon+" mr-1 sm:mr-2")},null,2),e("span",Ae,g(a.name),1),e("span",je,g(a.shortName||a.name),1)],10,Se)),64))])]))}},qe=V(De,[["__scopeId","data-v-2dada84c"]]),ze={class:"min-h-screen p-3 sm:p-4 md:p-6"},Be={class:"glass-strong rounded-xl p-3 shadow-xl sm:rounded-2xl sm:p-4 md:rounded-3xl md:p-6",style:{"z-index":"1","min-height":"calc(100vh - 120px)"}},Ke={class:"tab-content"},Oe={__name:"MainLayout",setup(h){const p=Q(),u=z(),c=k("dashboard"),a={dashboard:"/dashboard",apiKeys:"/api-keys",accounts:"/accounts",tutorial:"/tutorial",settings:"/settings"};J(()=>p.path,s=>{const l=Object.keys(a).find(f=>a[f]===s);l&&(c.value=l)},{immediate:!0});const w=s=>{c.value=s,u.push(a[s])};return(s,l)=>{const f=H("router-view");return o(),n("div",ze,[v(Te),e("div",Be,[v(qe,{"active-tab":c.value,onTabChange:w},null,8,["active-tab"]),e("div",Ke,[v(f,null,{default:C(({Component:x})=>[v(q,{mode:"out-in",name:"slide-up"},{default:C(()=>[(o(),j(Y,{include:["DashboardView","ApiKeysView"]},[(o(),j(G(x)))],1024))]),_:2},1024)]),_:1})])])])}}},Ge=V(Oe,[["__scopeId","data-v-8a08dab6"]]);export{Ge as default}; diff --git a/assets/SettingsView-BaUN8Iwk.js b/assets/SettingsView-BaUN8Iwk.js deleted file mode 100644 index 23e05d8e..00000000 --- a/assets/SettingsView-BaUN8Iwk.js +++ /dev/null @@ -1,3 +0,0 @@ -import{aR as F,r as h,aW as O,q as T,x as d,z as t,L as f,u as s,K as S,aq as D,O as m,C as j,P as k,aY as C,y as c}from"./vue-vendor-DfnFpxGJ.js";import{s as y}from"./toast-BvwA7Mwb.js";import{b as N,_ as E}from"./index-BdtiivzQ.js";import"./element-plus-CMedNaYf.js";import"./vendor-BDiMbLwQ.js";const V=F("settings",()=>{const n=h({siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",updatedAt:null}),g=h(!1),p=h(!1),u=async()=>{g.value=!0;try{const r=await N.get("/admin/oem-settings");return r&&r.success&&(n.value={...n.value,...r.data},x()),r}catch(r){throw console.error("Failed to load OEM settings:",r),r}finally{g.value=!1}},a=async r=>{p.value=!0;try{const o=await N.put("/admin/oem-settings",r);return o&&o.success&&(n.value={...n.value,...o.data},x()),o}catch(o){throw console.error("Failed to save OEM settings:",o),o}finally{p.value=!1}},v=async()=>{const r={siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",updatedAt:null};return n.value={...r},await a(r)},x=()=>{if(n.value.siteName&&(document.title=`${n.value.siteName} - 管理后台`),n.value.siteIconData||n.value.siteIcon){const r=document.querySelector('link[rel="icon"]')||document.createElement("link");r.rel="icon",r.href=n.value.siteIconData||n.value.siteIcon,document.querySelector('link[rel="icon"]')||document.head.appendChild(r)}};return{oemSettings:n,loading:g,saving:p,loadOemSettings:u,saveOemSettings:a,resetOemSettings:v,applyOemSettings:x,formatDateTime:r=>r?new Date(r).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):"",validateIconFile:r=>{const o=[];return r.size>350*1024&&o.push("图标文件大小不能超过 350KB"),["image/x-icon","image/png","image/jpeg","image/jpg","image/svg+xml"].includes(r.type)||o.push("不支持的文件类型,请选择 .ico, .png, .jpg 或 .svg 文件"),{isValid:o.length===0,errors:o}},fileToBase64:r=>new Promise((o,i)=>{const e=new FileReader;e.onload=l=>o(l.target.result),e.onerror=i,e.readAsDataURL(r)})}}),R={class:"settings-container"},B={class:"card p-4 sm:p-6"},A={key:0,class:"py-12 text-center"},M={key:1,class:"table-container hidden sm:block"},U={class:"min-w-full"},$={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},q={class:"table-row"},z={class:"px-6 py-4"},L={class:"table-row"},P={class:"px-6 py-4"},G={class:"space-y-3"},K={key:0,class:"inline-flex items-center gap-3 rounded-lg bg-gray-50 p-3 dark:bg-gray-700"},J=["src"],W={class:"px-6 py-6",colspan:"2"},Y={class:"flex items-center justify-between"},H={class:"flex gap-3"},Q=["disabled"],X={key:0,class:"loading-spinner mr-2"},Z={key:1,class:"fas fa-save mr-2"},tt=["disabled"],et={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},st={key:2,class:"space-y-4 sm:hidden"},at={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-700"},rt={class:"space-y-2"},ot={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-700"},it={class:"space-y-3"},nt={key:0,class:"inline-flex w-full items-center gap-3 rounded-lg border border-gray-200 bg-white p-3 dark:border-gray-600 dark:bg-gray-800"},lt=["src"],dt={class:"flex flex-col gap-2"},ct={class:"space-y-3 pt-2"},gt=["disabled"],ut={key:0,class:"loading-spinner mr-2"},mt={key:1,class:"fas fa-save mr-2"},yt=["disabled"],pt={key:0,class:"text-center text-xs text-gray-500 dark:text-gray-400"},xt={__name:"SettingsView",setup(n){const g=V(),{loading:p,saving:u,oemSettings:a}=O(g),v=h();T(async()=>{try{await g.loadOemSettings()}catch{y("加载设置失败","error")}});const x=async()=>{try{const i={siteName:a.value.siteName,siteIcon:a.value.siteIcon,siteIconData:a.value.siteIconData},e=await g.saveOemSettings(i);e&&e.success?y("OEM设置保存成功","success"):y((e==null?void 0:e.message)||"保存失败","error")}catch{y("保存OEM设置失败","error")}},w=async()=>{if(confirm(`确定要重置为默认设置吗? - -这将清除所有自定义的网站名称和图标设置。`))try{const i=await g.resetOemSettings();i&&i.success?y("已重置为默认设置","success"):y("重置失败","error")}catch{y("重置失败","error")}},I=async i=>{const e=i.target.files[0];if(!e)return;const l=g.validateIconFile(e);if(!l.isValid){l.errors.forEach(b=>y(b,"error"));return}try{const b=await g.fileToBase64(e);a.value.siteIconData=b}catch{y("文件读取失败","error")}i.target.value=""},_=()=>{a.value.siteIcon="",a.value.siteIconData=""},r=()=>{console.warn("Icon failed to load")},o=g.formatDateTime;return(i,e)=>(c(),d("div",R,[t("div",B,[e[25]||(e[25]=t("div",{class:"mb-4 sm:mb-6"},[t("h3",{class:"mb-1 text-lg font-bold text-gray-900 dark:text-gray-100 sm:mb-2 sm:text-xl"}," 其他设置 "),t("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"},"自定义网站名称和图标")],-1)),s(p)?(c(),d("div",A,e[5]||(e[5]=[t("div",{class:"loading-spinner mx-auto mb-4"},null,-1),t("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载设置...",-1)]))):(c(),d("div",M,[t("table",U,[t("tbody",$,[t("tr",q,[e[7]||(e[7]=t("td",{class:"w-48 whitespace-nowrap px-6 py-4"},[t("div",{class:"flex items-center"},[t("div",{class:"mr-3 flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600"},[t("i",{class:"fas fa-font text-xs text-white"})]),t("div",null,[t("div",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," 网站名称 "),t("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"品牌标识")])])],-1)),t("td",z,[S(t("input",{"onUpdate:modelValue":e[0]||(e[0]=l=>s(a).siteName=l),class:"form-input w-full max-w-md dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",maxlength:"100",placeholder:"Claude Relay Service",type:"text"},null,512),[[D,s(a).siteName]]),e[6]||(e[6]=t("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 将显示在浏览器标题和页面头部 ",-1))])]),t("tr",L,[e[12]||(e[12]=t("td",{class:"w-48 whitespace-nowrap px-6 py-4"},[t("div",{class:"flex items-center"},[t("div",{class:"mr-3 flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600"},[t("i",{class:"fas fa-image text-xs text-white"})]),t("div",null,[t("div",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," 网站图标 "),t("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Favicon")])])],-1)),t("td",P,[t("div",G,[s(a).siteIconData||s(a).siteIcon?(c(),d("div",K,[t("img",{alt:"图标预览",class:"h-8 w-8",src:s(a).siteIconData||s(a).siteIcon,onError:r},null,40,J),e[9]||(e[9]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400"},"当前图标",-1)),t("button",{class:"rounded-lg px-3 py-1 font-medium text-red-600 transition-colors hover:bg-red-50 hover:text-red-900",onClick:_},e[8]||(e[8]=[t("i",{class:"fas fa-trash mr-1"},null,-1),m("删除 ",-1)]))])):f("",!0),t("div",null,[t("input",{ref_key:"iconFileInput",ref:v,accept:".ico,.png,.jpg,.jpeg,.svg",class:"hidden",type:"file",onChange:I},null,544),t("button",{class:"btn btn-success px-4 py-2",onClick:e[1]||(e[1]=l=>i.$refs.iconFileInput.click())},e[10]||(e[10]=[t("i",{class:"fas fa-upload mr-2"},null,-1),m(" 上传图标 ",-1)])),e[11]||(e[11]=t("span",{class:"ml-3 text-xs text-gray-500 dark:text-gray-400"},"支持 .ico, .png, .jpg, .svg 格式,最大 350KB",-1))])])])]),t("tr",null,[t("td",W,[t("div",Y,[t("div",H,[t("button",{class:j(["btn btn-primary px-6 py-3",{"cursor-not-allowed opacity-50":s(u)}]),disabled:s(u),onClick:x},[s(u)?(c(),d("div",X)):(c(),d("i",Z)),m(" "+k(s(u)?"保存中...":"保存设置"),1)],10,Q),t("button",{class:"btn bg-gray-100 px-6 py-3 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:s(u),onClick:w},e[13]||(e[13]=[t("i",{class:"fas fa-undo mr-2"},null,-1),m(" 重置为默认 ",-1)]),8,tt)]),s(a).updatedAt?(c(),d("div",et,[e[14]||(e[14]=t("i",{class:"fas fa-clock mr-1"},null,-1)),m(" 最后更新:"+k(s(o)(s(a).updatedAt)),1)])):f("",!0)])])])])])])),s(p)?f("",!0):(c(),d("div",st,[t("div",at,[e[16]||(e[16]=C('

网站名称

品牌标识

',1)),t("div",rt,[S(t("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>s(a).siteName=l),class:"form-input w-full text-sm dark:border-gray-500 dark:bg-gray-600 dark:text-gray-200",maxlength:"100",placeholder:"Claude Relay Service",type:"text"},null,512),[[D,s(a).siteName]]),e[15]||(e[15]=t("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"将显示在浏览器标题和页面头部",-1))])]),t("div",ot,[e[22]||(e[22]=C('

网站图标

Favicon

',1)),t("div",it,[s(a).siteIconData||s(a).siteIcon?(c(),d("div",nt,[t("img",{alt:"图标预览",class:"h-8 w-8",src:s(a).siteIconData||s(a).siteIcon,onError:r},null,40,lt),e[18]||(e[18]=t("span",{class:"flex-1 text-sm text-gray-600 dark:text-gray-400"},"当前图标",-1)),t("button",{class:"rounded-lg px-3 py-1 text-sm font-medium text-red-600 transition-colors hover:bg-red-50 hover:text-red-900",onClick:_},e[17]||(e[17]=[t("i",{class:"fas fa-trash mr-1"},null,-1),m("删除 ",-1)]))])):f("",!0),t("input",{ref_key:"iconFileInput",ref:v,accept:"image/*",style:{display:"none"},type:"file",onChange:I},null,544),t("div",dt,[t("button",{class:"flex w-full items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm text-gray-700 transition-colors hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",onClick:e[3]||(e[3]=l=>i.$refs.iconFileInput.click())},e[19]||(e[19]=[t("i",{class:"fas fa-upload"},null,-1),m(" 上传图标 ",-1)])),e[20]||(e[20]=t("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"或者输入图标URL:",-1)),S(t("input",{"onUpdate:modelValue":e[4]||(e[4]=l=>s(a).siteIcon=l),class:"form-input w-full text-sm dark:border-gray-500 dark:bg-gray-600 dark:text-gray-200",placeholder:"https://example.com/icon.png",type:"url"},null,512),[[D,s(a).siteIcon]])]),e[21]||(e[21]=t("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 支持 PNG、JPEG、GIF 格式,建议使用正方形图片 ",-1))])]),t("div",ct,[t("button",{class:"btn btn-primary w-full py-3 text-sm font-semibold",disabled:s(u),onClick:x},[s(u)?(c(),d("div",ut)):(c(),d("i",mt)),m(" "+k(s(u)?"保存中...":"保存设置"),1)],8,gt),t("button",{class:"btn w-full bg-gray-100 py-3 text-sm text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:s(u),onClick:w},e[23]||(e[23]=[t("i",{class:"fas fa-undo mr-2"},null,-1),m(" 重置为默认 ",-1)]),8,yt),s(a).updatedAt?(c(),d("div",pt,[e[24]||(e[24]=t("i",{class:"fas fa-clock mr-1"},null,-1)),m(" 最后更新:"+k(s(o)(s(a).updatedAt)),1)])):f("",!0)])]))])]))}},wt=E(xt,[["__scopeId","data-v-32a92c9b"]]);export{wt as default}; diff --git a/assets/SettingsView-DRYQRRYU.js b/assets/SettingsView-DRYQRRYU.js new file mode 100644 index 00000000..d44ce066 --- /dev/null +++ b/assets/SettingsView-DRYQRRYU.js @@ -0,0 +1,3 @@ +import{aR as ie,r as m,aV as de,o as ue,q as ce,Z as ge,x as i,z as e,L as S,C as W,O as g,u as b,K as x,S as L,aq as A,P as h,al as O,Q as P,ac as B,aW as fe,aX as be,R as me,J as ye,T as ve,Y as xe,y as d}from"./vue-vendor-Ig-GgGwA.js";import{s as l}from"./toast-BvwA7Mwb.js";import{b as C,_ as pe}from"./index-CY9cPBXr.js";import"./element-plus-Bq6mBxnk.js";import"./vendor-BDiMbLwQ.js";const ke=ie("settings",()=>{const v=m({siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",updatedAt:null}),w=m(!1),E=m(!1),T=async()=>{w.value=!0;try{const a=await C.get("/admin/oem-settings");return a&&a.success&&(v.value={...v.value,...a.data},p()),a}catch(a){throw console.error("Failed to load OEM settings:",a),a}finally{w.value=!1}},f=async a=>{E.value=!0;try{const u=await C.put("/admin/oem-settings",a);return u&&u.success&&(v.value={...v.value,...u.data},p()),u}catch(u){throw console.error("Failed to save OEM settings:",u),u}finally{E.value=!1}},R=async()=>{const a={siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",updatedAt:null};return v.value={...a},await f(a)},p=()=>{if(v.value.siteName&&(document.title=`${v.value.siteName} - 管理后台`),v.value.siteIconData||v.value.siteIcon){const a=document.querySelector('link[rel="icon"]')||document.createElement("link");a.rel="icon",a.href=v.value.siteIconData||v.value.siteIcon,document.querySelector('link[rel="icon"]')||document.head.appendChild(a)}};return{oemSettings:v,loading:w,saving:E,loadOemSettings:T,saveOemSettings:f,resetOemSettings:R,applyOemSettings:p,formatDateTime:a=>a?new Date(a).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):"",validateIconFile:a=>{const u=[];return a.size>350*1024&&u.push("图标文件大小不能超过 350KB"),["image/x-icon","image/png","image/jpeg","image/jpg","image/svg+xml"].includes(a.type)||u.push("不支持的文件类型,请选择 .ico, .png, .jpg 或 .svg 文件"),{isValid:u.length===0,errors:u}},fileToBase64:a=>new Promise((u,D)=>{const c=new FileReader;c.onload=V=>u(V.target.result),c.onerror=D,c.readAsDataURL(a)})}}),he={class:"settings-container"},we={class:"card p-4 sm:p-6"},_e={class:"mb-6"},Se={class:"flex space-x-8"},Ce={key:0,class:"py-12 text-center"},Ie={key:1},De={class:"table-container hidden sm:block"},Ve={class:"min-w-full"},Te={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},We={class:"table-row"},Ae={class:"px-6 py-4"},Ee={class:"table-row"},Ue={class:"px-6 py-4"},je={class:"space-y-3"},Ne={key:0,class:"inline-flex items-center gap-3 rounded-lg bg-gray-50 p-3 dark:bg-gray-700"},Re=["src"],Oe={class:"px-6 py-6",colspan:"2"},Pe={class:"flex items-center justify-between"},Fe={class:"flex gap-3"},$e=["disabled"],Me={key:0,class:"loading-spinner mr-2"},Le={key:1,class:"fas fa-save mr-2"},Be=["disabled"],qe={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},ze={class:"mb-6 rounded-lg bg-white/80 p-6 shadow-lg backdrop-blur-sm dark:bg-gray-800/80"},Ke={class:"flex items-center justify-between"},He={class:"relative inline-flex cursor-pointer items-center"},Je={class:"mb-6 rounded-lg bg-white/80 p-6 shadow-lg backdrop-blur-sm dark:bg-gray-800/80"},Qe={class:"space-y-3"},Xe={class:"font-medium text-gray-700 dark:text-gray-300"},Ye={class:"ml-2 text-sm text-gray-500 dark:text-gray-400"},Ze={class:"relative inline-flex cursor-pointer items-center"},Ge=["onUpdate:modelValue"],et={class:"mb-6 rounded-lg bg-white/80 p-6 shadow-lg backdrop-blur-sm dark:bg-gray-800/80"},tt={class:"mb-4 flex items-center justify-between"},rt={key:0,class:"space-y-4"},st={class:"flex items-start justify-between"},at={class:"flex-1"},ot={class:"flex items-center"},lt={class:"font-semibold text-gray-800 dark:text-gray-200"},nt={class:"text-sm text-gray-500 dark:text-gray-400"},it={class:"mt-3 space-y-1 text-sm"},dt={class:"flex items-center text-gray-600 dark:text-gray-400"},ut={class:"truncate"},ct={key:0,class:"flex items-center text-gray-600 dark:text-gray-400"},gt={class:"ml-4 flex items-center space-x-2"},ft={class:"relative inline-flex cursor-pointer items-center"},bt=["checked","onChange"],mt=["onClick"],yt=["onClick"],vt=["onClick"],xt={key:1,class:"py-8 text-center text-gray-500 dark:text-gray-400"},pt={class:"rounded-lg bg-white/80 p-6 shadow-lg backdrop-blur-sm dark:bg-gray-800/80"},kt={class:"grid grid-cols-1 gap-4 md:grid-cols-3"},ht={class:"dark:to-gray-750 relative border-b border-gray-200 bg-gradient-to-r from-blue-50 to-indigo-50 px-6 py-5 dark:border-gray-700 dark:from-gray-800"},wt={class:"flex items-center justify-between"},_t={class:"flex items-center space-x-3"},St={class:"text-xl font-semibold text-gray-900 dark:text-white"},Ct={class:"mt-0.5 text-sm text-gray-600 dark:text-gray-400"},It={class:"p-6"},Dt={class:"space-y-5"},Vt={class:"relative"},Tt=["disabled"],Wt={key:0,class:"mt-1 text-xs text-amber-600 dark:text-amber-400"},At={class:"relative"},Et={key:0,class:"absolute inset-y-0 right-0 flex items-center pr-3"},Ut={key:1,class:"absolute inset-y-0 right-0 flex items-center pr-3"},jt={key:0,class:"mt-2 flex items-start rounded-lg bg-blue-50 p-3 dark:bg-blue-900/20"},Nt={class:"text-sm text-blue-700 dark:text-blue-300"},Rt={key:0,class:"rounded-xl border border-gray-200 bg-gray-50 p-4 dark:border-gray-700 dark:bg-gray-900/50"},Ot={class:"space-y-4"},Pt={class:"flex items-center justify-between"},Ft={class:"flex cursor-pointer items-center",for:"enableSign"},$t={key:0,class:"rounded-full bg-green-100 px-2 py-1 text-xs font-medium text-green-700 dark:bg-green-900/50 dark:text-green-400"},Mt={key:0},Lt={class:"border-t border-gray-200 bg-gray-50 px-6 py-4 dark:border-gray-700 dark:bg-gray-900/50"},Bt={class:"flex items-center justify-between"},qt={class:"flex space-x-3"},zt=["disabled"],Kt=["disabled"],Ht=Object.assign({name:"SettingsView"},{__name:"SettingsView",setup(v){const w=ke(),{loading:E,saving:T,oemSettings:f}=de(w),R=m(),p=m("branding"),o=m(!0),k=m(new AbortController),I=m(!1),a=m(!1),u=m(!1),D=m(!1),c=m({enabled:!1,platforms:[],notificationTypes:{accountAnomaly:!0,quotaWarning:!0,systemError:!0,securityAlert:!0},retrySettings:{maxRetries:3,retryDelay:1e3,timeout:1e4}}),V=m(!1),_=m(null),n=m({type:"wechat_work",name:"",url:"",enableSign:!1,secret:""}),F=ue(p,async r=>{o.value&&r==="webhook"&&await U()});ce(async()=>{try{await w.loadOemSettings(),p.value==="webhook"&&await U()}catch{l("加载设置失败","error")}}),ge(()=>{o.value=!1,k.value&&k.value.abort(),F&&F(),V.value&&(V.value=!1,_.value=null)});const U=async()=>{if(o.value)try{const r=await C.get("/admin/webhook/config",{signal:k.value.signal});r.success&&o.value&&(c.value=r.config)}catch(r){if(r.name==="AbortError"||!o.value)return;l("获取webhook配置失败","error"),console.error(r)}},j=async()=>{if(o.value)try{(await C.post("/admin/webhook/config",c.value,{signal:k.value.signal})).success&&o.value&&l("配置已保存","success")}catch(r){if(r.name==="AbortError"||!o.value)return;l("保存配置失败","error"),console.error(r)}},q=()=>{const r=n.value.url;if(!r){I.value=!1,a.value=!1;return}try{new URL(r),r.startsWith("http://")||r.startsWith("https://")?(I.value=!1,a.value=!0):(I.value=!0,a.value=!1)}catch{I.value=!0,a.value=!1}},z=async()=>{if(o.value){if(!n.value.url){l("请输入Webhook URL","error");return}if(I.value){l("请输入有效的Webhook URL","error");return}D.value=!0;try{let r;_.value?r=await C.put(`/admin/webhook/platforms/${_.value.id}`,n.value,{signal:k.value.signal}):r=await C.post("/admin/webhook/platforms",n.value,{signal:k.value.signal}),r.success&&o.value&&(l(_.value?"平台已更新":"平台已添加","success"),await U(),N())}catch(r){if(r.name==="AbortError"||!o.value)return;l(r.message||"操作失败","error"),console.error(r)}finally{o.value&&(D.value=!1)}}},K=r=>{_.value=r,n.value={...r},V.value=!0},H=async r=>{if(o.value&&confirm("确定要删除这个平台吗?"))try{(await C.delete(`/admin/webhook/platforms/${r}`,{signal:k.value.signal})).success&&o.value&&(l("平台已删除","success"),await U())}catch(t){if(t.name==="AbortError"||!o.value)return;l("删除失败","error"),console.error(t)}},J=async r=>{if(o.value)try{const t=await C.post(`/admin/webhook/platforms/${r}/toggle`,{},{signal:k.value.signal});t.success&&o.value&&(l(t.message,"success"),await U())}catch(t){if(t.name==="AbortError"||!o.value)return;l("操作失败","error"),console.error(t)}},Q=async r=>{if(o.value)try{(await C.post("/admin/webhook/test",{url:r.url,type:r.type,secret:r.secret,enableSign:r.enableSign},{signal:k.value.signal})).success&&o.value&&l("测试成功,webhook连接正常","success")}catch(t){if(t.name==="AbortError"||!o.value)return;l(t.error||t.message||"测试失败","error"),console.error(t)}},X=async()=>{if(o.value){if(!n.value.url){l("请先输入Webhook URL","error");return}if(I.value){l("请输入有效的Webhook URL","error");return}u.value=!0;try{(await C.post("/admin/webhook/test",n.value,{signal:k.value.signal})).success&&o.value&&l("测试成功,webhook连接正常","success")}catch(r){if(r.name==="AbortError"||!o.value)return;l(r.error||r.message||"测试失败","error"),console.error(r)}finally{o.value&&(u.value=!1)}}},Y=async()=>{if(o.value)try{(await C.post("/admin/webhook/test-notification",{},{signal:k.value.signal})).success&&o.value&&l("测试通知已发送","success")}catch(r){if(r.name==="AbortError"||!o.value)return;l("发送失败","error"),console.error(r)}},N=()=>{o.value&&(V.value=!1,setTimeout(()=>{o.value&&(_.value=null,n.value={type:"wechat_work",name:"",url:"",enableSign:!1,secret:""},I.value=!1,a.value=!1,u.value=!1,D.value=!1)},0))},$=r=>({wechat_work:"企业微信",dingtalk:"钉钉",feishu:"飞书",slack:"Slack",discord:"Discord",custom:"自定义"})[r]||r,Z=r=>({wechat_work:"fab fa-weixin text-green-600",dingtalk:"fas fa-comment-dots text-blue-500",feishu:"fas fa-dove text-blue-600",slack:"fab fa-slack text-purple-600",discord:"fab fa-discord text-indigo-600",custom:"fas fa-webhook text-gray-600"})[r]||"fas fa-bell",M=r=>({wechat_work:"请在企业微信群机器人设置中获取Webhook地址",dingtalk:"请在钉钉群机器人设置中获取Webhook地址",feishu:"请在飞书群机器人设置中获取Webhook地址",slack:"请在Slack应用的Incoming Webhooks中获取地址",discord:"请在Discord服务器的集成设置中创建Webhook",custom:"请输入完整的Webhook接收地址"})[r]||"",G=r=>({accountAnomaly:"账号异常",quotaWarning:"配额警告",systemError:"系统错误",securityAlert:"安全警报"})[r]||r,ee=r=>({accountAnomaly:"账号状态异常、认证失败等",quotaWarning:"API调用配额不足警告",systemError:"系统运行错误和故障",securityAlert:"安全相关的警报通知"})[r]||"",te=async()=>{try{const r={siteName:f.value.siteName,siteIcon:f.value.siteIcon,siteIconData:f.value.siteIconData},t=await w.saveOemSettings(r);t&&t.success?l("OEM设置保存成功","success"):l((t==null?void 0:t.message)||"保存失败","error")}catch{l("保存OEM设置失败","error")}},re=async()=>{if(confirm(`确定要重置为默认设置吗? + +这将清除所有自定义的网站名称和图标设置。`))try{const r=await w.resetOemSettings();r&&r.success?l("已重置为默认设置","success"):l("重置失败","error")}catch{l("重置失败","error")}},se=async r=>{const t=r.target.files[0];if(!t)return;const s=w.validateIconFile(t);if(!s.isValid){s.errors.forEach(y=>l(y,"error"));return}try{const y=await w.fileToBase64(t);f.value.siteIconData=y}catch{l("文件读取失败","error")}r.target.value=""},ae=()=>{f.value.siteIcon="",f.value.siteIconData=""},oe=()=>{console.warn("Icon failed to load")},le=w.formatDateTime;return(r,t)=>(d(),i(P,null,[e("div",he,[e("div",we,[t[45]||(t[45]=e("div",{class:"mb-4 sm:mb-6"},[e("h3",{class:"mb-1 text-lg font-bold text-gray-900 dark:text-gray-100 sm:mb-2 sm:text-xl"}," 系统设置 "),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"},"网站定制和通知配置")],-1)),e("div",_e,[e("nav",Se,[e("button",{class:W(["border-b-2 pb-2 text-sm font-medium transition-colors",p.value==="branding"?"border-blue-500 text-blue-600 dark:border-blue-400 dark:text-blue-400":"border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300"]),onClick:t[0]||(t[0]=s=>p.value="branding")},t[15]||(t[15]=[e("i",{class:"fas fa-palette mr-2"},null,-1),g(" 品牌设置 ",-1)]),2),e("button",{class:W(["border-b-2 pb-2 text-sm font-medium transition-colors",p.value==="webhook"?"border-blue-500 text-blue-600 dark:border-blue-400 dark:text-blue-400":"border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300"]),onClick:t[1]||(t[1]=s=>p.value="webhook")},t[16]||(t[16]=[e("i",{class:"fas fa-bell mr-2"},null,-1),g(" 通知设置 ",-1)]),2)])]),b(E)?(d(),i("div",Ce,t[17]||(t[17]=[e("div",{class:"loading-spinner mx-auto mb-4"},[e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载设置...")],-1)]))):(d(),i("div",Ie,[x(e("div",null,[e("div",De,[e("table",Ve,[e("tbody",Te,[e("tr",We,[t[19]||(t[19]=e("td",{class:"w-48 whitespace-nowrap px-6 py-4"},[e("div",{class:"flex items-center"},[e("div",{class:"mr-3 flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600"},[e("i",{class:"fas fa-font text-xs text-white"})]),e("div",null,[e("div",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," 网站名称 "),e("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"品牌标识")])])],-1)),e("td",Ae,[x(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>b(f).siteName=s),class:"form-input w-full max-w-md dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",maxlength:"100",placeholder:"Claude Relay Service",type:"text"},null,512),[[A,b(f).siteName]]),t[18]||(t[18]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 将显示在浏览器标题和页面头部 ",-1))])]),e("tr",Ee,[t[24]||(t[24]=e("td",{class:"w-48 whitespace-nowrap px-6 py-4"},[e("div",{class:"flex items-center"},[e("div",{class:"mr-3 flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600"},[e("i",{class:"fas fa-image text-xs text-white"})]),e("div",null,[e("div",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," 网站图标 "),e("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Favicon")])])],-1)),e("td",Ue,[e("div",je,[b(f).siteIconData||b(f).siteIcon?(d(),i("div",Ne,[e("img",{alt:"图标预览",class:"h-8 w-8",src:b(f).siteIconData||b(f).siteIcon,onError:oe},null,40,Re),t[21]||(t[21]=e("span",{class:"text-sm text-gray-600 dark:text-gray-400"},"当前图标",-1)),e("button",{class:"rounded-lg px-3 py-1 font-medium text-red-600 transition-colors hover:bg-red-50 hover:text-red-900",onClick:ae},t[20]||(t[20]=[e("i",{class:"fas fa-trash mr-1"},null,-1),g("删除 ",-1)]))])):S("",!0),e("div",null,[e("input",{ref_key:"iconFileInput",ref:R,accept:".ico,.png,.jpg,.jpeg,.svg",class:"hidden",type:"file",onChange:se},null,544),e("button",{class:"btn btn-success px-4 py-2",onClick:t[3]||(t[3]=s=>r.$refs.iconFileInput.click())},t[22]||(t[22]=[e("i",{class:"fas fa-upload mr-2"},null,-1),g(" 上传图标 ",-1)])),t[23]||(t[23]=e("span",{class:"ml-3 text-xs text-gray-500 dark:text-gray-400"},"支持 .ico, .png, .jpg, .svg 格式,最大 350KB",-1))])])])]),e("tr",null,[e("td",Oe,[e("div",Pe,[e("div",Fe,[e("button",{class:W(["btn btn-primary px-6 py-3",{"cursor-not-allowed opacity-50":b(T)}]),disabled:b(T),onClick:te},[b(T)?(d(),i("div",Me)):(d(),i("i",Le)),g(" "+h(b(T)?"保存中...":"保存设置"),1)],10,$e),e("button",{class:"btn bg-gray-100 px-6 py-3 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:b(T),onClick:re},t[25]||(t[25]=[e("i",{class:"fas fa-undo mr-2"},null,-1),g(" 重置为默认 ",-1)]),8,Be)]),b(f).updatedAt?(d(),i("div",qe,[t[26]||(t[26]=e("i",{class:"fas fa-clock mr-1"},null,-1)),g(" 最后更新:"+h(b(le)(b(f).updatedAt)),1)])):S("",!0)])])])])])]),t[27]||(t[27]=e("div",{class:"space-y-4 sm:hidden"},null,-1))],512),[[L,p.value==="branding"]]),x(e("div",null,[e("div",ze,[e("div",Ke,[t[29]||(t[29]=e("div",null,[e("h2",{class:"text-lg font-semibold text-gray-800 dark:text-gray-200"}," 启用 Webhook 通知 "),e("p",{class:"mt-1 text-sm text-gray-600 dark:text-gray-400"}," 开启后,系统将按配置发送通知到指定平台 ")],-1)),e("label",He,[x(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>c.value.enabled=s),class:"peer sr-only",type:"checkbox",onChange:j},null,544),[[O,c.value.enabled]]),t[28]||(t[28]=e("div",{class:"peer h-6 w-11 rounded-full bg-gray-200 after:absolute after:left-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-blue-600 peer-checked:after:translate-x-full peer-checked:after:border-white peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 dark:border-gray-600 dark:bg-gray-700 dark:peer-focus:ring-blue-800"},null,-1))])])]),e("div",Je,[t[31]||(t[31]=e("h2",{class:"mb-4 text-lg font-semibold text-gray-800 dark:text-gray-200"},"通知类型",-1)),e("div",Qe,[(d(!0),i(P,null,B(c.value.notificationTypes,(s,y)=>(d(),i("div",{key:y,class:"flex items-center justify-between"},[e("div",null,[e("span",Xe,h(G(y)),1),e("span",Ye,h(ee(y)),1)]),e("label",Ze,[x(e("input",{"onUpdate:modelValue":ne=>c.value.notificationTypes[y]=ne,class:"peer sr-only",type:"checkbox",onChange:j},null,40,Ge),[[O,c.value.notificationTypes[y]]]),t[30]||(t[30]=e("div",{class:"peer h-5 w-9 rounded-full bg-gray-200 after:absolute after:left-[2px] after:top-[2px] after:h-4 after:w-4 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-green-600 peer-checked:after:translate-x-full peer-checked:after:border-white dark:border-gray-600 dark:bg-gray-700"},null,-1))])]))),128))])]),e("div",et,[e("div",tt,[t[33]||(t[33]=e("h2",{class:"text-lg font-semibold text-gray-800 dark:text-gray-200"},"通知平台",-1)),e("button",{class:"rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700",onClick:t[5]||(t[5]=s=>V.value=!0)},t[32]||(t[32]=[e("i",{class:"fas fa-plus mr-2"},null,-1),g(" 添加平台 ",-1)]))]),c.value.platforms&&c.value.platforms.length>0?(d(),i("div",rt,[(d(!0),i(P,null,B(c.value.platforms,s=>(d(),i("div",{key:s.id,class:"rounded-lg border border-gray-200 p-4 dark:border-gray-700"},[e("div",st,[e("div",at,[e("div",ot,[e("i",{class:W(["mr-3 text-xl",Z(s.type)])},null,2),e("div",null,[e("h3",lt,h(s.name||$(s.type)),1),e("p",nt,h($(s.type)),1)])]),e("div",it,[e("div",dt,[t[34]||(t[34]=e("i",{class:"fas fa-link mr-2"},null,-1)),e("span",ut,h(s.url),1)]),s.enableSign?(d(),i("div",ct,t[35]||(t[35]=[e("i",{class:"fas fa-shield-alt mr-2"},null,-1),e("span",null,"已启用签名验证",-1)]))):S("",!0)])]),e("div",gt,[e("label",ft,[e("input",{checked:s.enabled,class:"peer sr-only",type:"checkbox",onChange:y=>J(s.id)},null,40,bt),t[36]||(t[36]=e("div",{class:"peer h-5 w-9 rounded-full bg-gray-200 after:absolute after:left-[2px] after:top-[2px] after:h-4 after:w-4 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-green-600 peer-checked:after:translate-x-full peer-checked:after:border-white dark:border-gray-600 dark:bg-gray-700"},null,-1))]),e("button",{class:"rounded-lg bg-blue-100 p-2 text-blue-600 transition-colors hover:bg-blue-200 dark:bg-blue-900 dark:text-blue-400 dark:hover:bg-blue-800",title:"测试连接",onClick:y=>Q(s)},t[37]||(t[37]=[e("i",{class:"fas fa-vial"},null,-1)]),8,mt),e("button",{class:"rounded-lg bg-gray-100 p-2 text-gray-600 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600",title:"编辑",onClick:y=>K(s)},t[38]||(t[38]=[e("i",{class:"fas fa-edit"},null,-1)]),8,yt),e("button",{class:"rounded-lg bg-red-100 p-2 text-red-600 transition-colors hover:bg-red-200 dark:bg-red-900 dark:text-red-400 dark:hover:bg-red-800",title:"删除",onClick:y=>H(s.id)},t[39]||(t[39]=[e("i",{class:"fas fa-trash"},null,-1)]),8,vt)])])]))),128))])):(d(),i("div",xt,' 暂无配置的通知平台,请点击"添加平台"按钮添加 '))]),e("div",pt,[t[43]||(t[43]=e("h2",{class:"mb-4 text-lg font-semibold text-gray-800 dark:text-gray-200"},"高级设置",-1)),e("div",kt,[e("div",null,[t[40]||(t[40]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300"}," 最大重试次数 ",-1)),x(e("input",{"onUpdate:modelValue":t[6]||(t[6]=s=>c.value.retrySettings.maxRetries=s),class:"mt-1 block w-full rounded-lg border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white sm:text-sm",max:"10",min:"0",type:"number",onChange:j},null,544),[[A,c.value.retrySettings.maxRetries,void 0,{number:!0}]])]),e("div",null,[t[41]||(t[41]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300"}," 重试延迟 (毫秒) ",-1)),x(e("input",{"onUpdate:modelValue":t[7]||(t[7]=s=>c.value.retrySettings.retryDelay=s),class:"mt-1 block w-full rounded-lg border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white sm:text-sm",max:"10000",min:"100",step:"100",type:"number",onChange:j},null,544),[[A,c.value.retrySettings.retryDelay,void 0,{number:!0}]])]),e("div",null,[t[42]||(t[42]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300"}," 超时时间 (毫秒) ",-1)),x(e("input",{"onUpdate:modelValue":t[8]||(t[8]=s=>c.value.retrySettings.timeout=s),class:"mt-1 block w-full rounded-lg border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white sm:text-sm",max:"30000",min:"1000",step:"1000",type:"number",onChange:j},null,544),[[A,c.value.retrySettings.timeout,void 0,{number:!0}]])])])]),e("div",{class:"mt-6 text-center"},[e("button",{class:"rounded-lg bg-green-600 px-6 py-3 text-white shadow-lg transition-all hover:bg-green-700 hover:shadow-xl",onClick:Y},t[44]||(t[44]=[e("i",{class:"fas fa-paper-plane mr-2"},null,-1),g(" 发送测试通知 ",-1)]))])],512),[[L,p.value==="webhook"]])]))])]),V.value?(d(),i("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm transition-all duration-300 ease-out",onClick:N},[e("div",{class:"relative mx-4 w-full max-w-2xl overflow-hidden rounded-2xl bg-white shadow-2xl transition-all duration-300 ease-out dark:bg-gray-800",onClick:t[14]||(t[14]=xe(()=>{},["stop"]))},[e("div",ht,[e("div",wt,[e("div",_t,[t[46]||(t[46]=e("div",{class:"flex h-10 w-10 items-center justify-center rounded-full bg-gradient-to-br from-blue-500 to-indigo-600 text-white shadow-lg"},[e("i",{class:"fas fa-bell"})],-1)),e("div",null,[e("h3",St,h(_.value?"编辑":"添加")+"通知平台 ",1),e("p",Ct," 配置"+h(_.value?"并更新":"新的")+"Webhook通知渠道 ",1)])]),e("button",{class:"rounded-lg p-2 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",onClick:N},t[47]||(t[47]=[e("i",{class:"fas fa-times text-lg"},null,-1)]))])]),e("div",It,[e("div",Dt,[e("div",null,[t[51]||(t[51]=e("label",{class:"mb-2 flex items-center text-sm font-medium text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-layer-group mr-2 text-gray-400"}),g(" 平台类型 ")],-1)),e("div",Vt,[x(e("select",{"onUpdate:modelValue":t[9]||(t[9]=s=>n.value.type=s),class:"w-full appearance-none rounded-xl border border-gray-300 bg-white px-4 py-3 pr-10 text-gray-900 shadow-sm transition-all focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20 dark:border-gray-600 dark:bg-gray-700 dark:text-white",disabled:_.value},t[48]||(t[48]=[be('',6)]),8,Tt),[[fe,n.value.type]]),t[49]||(t[49]=e("div",{class:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3"},[e("i",{class:"fas fa-chevron-down text-gray-400"})],-1))]),_.value?(d(),i("p",Wt,t[50]||(t[50]=[e("i",{class:"fas fa-info-circle mr-1"},null,-1),g(" 编辑模式下不能更改平台类型 ",-1)]))):S("",!0)]),e("div",null,[t[52]||(t[52]=e("label",{class:"mb-2 flex items-center text-sm font-medium text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-tag mr-2 text-gray-400"}),g(" 名称 "),e("span",{class:"ml-2 text-xs text-gray-500"},"(可选)")],-1)),x(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>n.value.name=s),class:"w-full rounded-xl border border-gray-300 bg-white px-4 py-3 text-gray-900 shadow-sm transition-all placeholder:text-gray-400 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder:text-gray-500",placeholder:"例如:运维群通知、开发测试群",type:"text"},null,512),[[A,n.value.name]])]),e("div",null,[t[56]||(t[56]=e("label",{class:"mb-2 flex items-center text-sm font-medium text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-link mr-2 text-gray-400"}),g(" Webhook URL "),e("span",{class:"ml-1 text-xs text-red-500"},"*")],-1)),e("div",At,[x(e("input",{"onUpdate:modelValue":t[11]||(t[11]=s=>n.value.url=s),class:W(["w-full rounded-xl border border-gray-300 bg-white px-4 py-3 pr-10 font-mono text-sm text-gray-900 shadow-sm transition-all placeholder:text-gray-400 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder:text-gray-500",{"border-red-500 focus:border-red-500 focus:ring-red-500/20":I.value,"border-green-500 focus:border-green-500 focus:ring-green-500/20":a.value}]),placeholder:"https://...",required:"",type:"url",onInput:q},null,34),[[A,n.value.url]]),a.value?(d(),i("div",Et,t[53]||(t[53]=[e("i",{class:"fas fa-check-circle text-green-500"},null,-1)]))):S("",!0),I.value?(d(),i("div",Ut,t[54]||(t[54]=[e("i",{class:"fas fa-exclamation-circle text-red-500"},null,-1)]))):S("",!0)]),M(n.value.type)?(d(),i("div",jt,[t[55]||(t[55]=e("i",{class:"fas fa-info-circle mr-2 mt-0.5 text-blue-600 dark:text-blue-400"},null,-1)),e("p",Nt,h(M(n.value.type)),1)])):S("",!0)]),n.value.type==="dingtalk"||n.value.type==="feishu"?(d(),i("div",Rt,[e("div",Ot,[e("div",Pt,[e("label",Ft,[x(e("input",{id:"enableSign","onUpdate:modelValue":t[12]||(t[12]=s=>n.value.enableSign=s),class:"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-2 focus:ring-blue-500 focus:ring-offset-0",type:"checkbox"},null,512),[[O,n.value.enableSign]]),t[57]||(t[57]=e("span",{class:"ml-3 flex items-center text-sm font-medium text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-shield-alt mr-2 text-gray-400"}),g(" 启用签名验证 ")],-1))]),n.value.enableSign?(d(),i("span",$t," 已启用 ")):S("",!0)]),me(ve,{"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 -translate-y-2","enter-to-class":"opacity-100 translate-y-0","leave-active-class":"transition-all duration-150 ease-in","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 -translate-y-2"},{default:ye(()=>[n.value.enableSign?(d(),i("div",Mt,[t[58]||(t[58]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"}," 签名密钥 ",-1)),x(e("input",{"onUpdate:modelValue":t[13]||(t[13]=s=>n.value.secret=s),class:"w-full rounded-xl border border-gray-300 bg-white px-4 py-3 font-mono text-sm text-gray-900 shadow-sm transition-all placeholder:text-gray-400 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20 dark:border-gray-600 dark:bg-gray-800 dark:text-white dark:placeholder:text-gray-500",placeholder:"SEC...",type:"text"},null,512),[[A,n.value.secret]])])):S("",!0)]),_:1})])])):S("",!0)])]),e("div",Lt,[e("div",Bt,[t[60]||(t[60]=e("div",{class:"text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-asterisk mr-1 text-red-500"}),g(" 必填项 ")],-1)),e("div",qt,[e("button",{class:"group flex items-center rounded-xl border border-gray-300 bg-white px-4 py-2.5 text-sm font-medium text-gray-700 shadow-sm transition-all hover:bg-gray-50 hover:shadow-md dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",onClick:N},t[59]||(t[59]=[e("i",{class:"fas fa-times mr-2 transition-transform group-hover:scale-110"},null,-1),g(" 取消 ",-1)])),e("button",{class:"group flex items-center rounded-xl border border-blue-200 bg-blue-50 px-4 py-2.5 text-sm font-medium text-blue-700 shadow-sm transition-all hover:bg-blue-100 hover:shadow-md dark:border-blue-800 dark:bg-blue-900/50 dark:text-blue-300 dark:hover:bg-blue-900/70",disabled:u.value,onClick:X},[e("i",{class:W(["mr-2 transition-transform",u.value?"fas fa-spinner fa-spin":"fas fa-vial group-hover:scale-110"])},null,2),g(" "+h(u.value?"测试中...":"测试连接"),1)],8,zt),e("button",{class:"group flex items-center rounded-xl bg-gradient-to-r from-blue-600 to-indigo-600 px-5 py-2.5 text-sm font-medium text-white shadow-md transition-all hover:from-blue-700 hover:to-indigo-700 hover:shadow-lg disabled:cursor-not-allowed disabled:from-gray-400 disabled:to-gray-500",disabled:!n.value.url||D.value,onClick:z},[e("i",{class:W(["mr-2 transition-transform",D.value?"fas fa-spinner fa-spin":"fas fa-save group-hover:scale-110"])},null,2),g(" "+h(D.value?"保存中...":_.value?"保存修改":"添加平台"),1)],8,Kt)])])])])])):S("",!0)],64))}}),Gt=pe(Ht,[["__scopeId","data-v-44082597"]]);export{Gt as default}; diff --git a/assets/SettingsView-B6pg4BZM.css b/assets/SettingsView-DmJWeqhD.css similarity index 52% rename from assets/SettingsView-B6pg4BZM.css rename to assets/SettingsView-DmJWeqhD.css index c34a07bf..137d1473 100644 --- a/assets/SettingsView-B6pg4BZM.css +++ b/assets/SettingsView-DmJWeqhD.css @@ -1 +1 @@ -.settings-container[data-v-32a92c9b]{min-height:calc(100vh - 300px)}.card[data-v-32a92c9b]{background:#fff;border-radius:12px;box-shadow:0 2px 12px #0000001a;border:1px solid #e5e7eb}:root.dark .card[data-v-32a92c9b]{background:#1f2937;border:1px solid #374151;box-shadow:0 2px 12px #0000004d}.table-container[data-v-32a92c9b]{overflow:hidden;border-radius:8px;border:1px solid #f3f4f6}:root.dark .table-container[data-v-32a92c9b]{border:1px solid #4b5563}.table-row[data-v-32a92c9b]{transition:background-color .2s ease}.table-row[data-v-32a92c9b]:hover{background-color:#f9fafb}:root.dark .table-row[data-v-32a92c9b]:hover{background-color:#374151}.form-input[data-v-32a92c9b]{width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));padding:.5rem 1rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.form-input[data-v-32a92c9b]:focus{border-color:transparent;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn[data-v-32a92c9b]{display:inline-flex;align-items:center;justify-content:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn[data-v-32a92c9b]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-offset-width: 2px}.btn-primary[data-v-32a92c9b]{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-primary[data-v-32a92c9b]:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.btn-primary[data-v-32a92c9b]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn-success[data-v-32a92c9b]{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-success[data-v-32a92c9b]:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.btn-success[data-v-32a92c9b]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(34 197 94 / var(--tw-ring-opacity, 1))}.loading-spinner[data-v-32a92c9b]{height:1.25rem;width:1.25rem}@keyframes spin-32a92c9b{to{transform:rotate(360deg)}}.loading-spinner[data-v-32a92c9b]{animation:spin-32a92c9b 1s linear infinite;border-radius:9999px;border-width:2px;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-border-opacity: 1;border-top-color:rgb(37 99 235 / var(--tw-border-opacity, 1))} +.settings-container[data-v-44082597]{min-height:calc(100vh - 300px)}.card[data-v-44082597]{background:#fff;border-radius:12px;box-shadow:0 2px 12px #0000001a;border:1px solid #e5e7eb}:root.dark .card[data-v-44082597]{background:#1f2937;border:1px solid #374151;box-shadow:0 2px 12px #0000004d}.table-container[data-v-44082597]{overflow:hidden;border-radius:8px;border:1px solid #f3f4f6}:root.dark .table-container[data-v-44082597]{border:1px solid #4b5563}.table-row[data-v-44082597]{transition:background-color .2s ease}.table-row[data-v-44082597]:hover{background-color:#f9fafb}:root.dark .table-row[data-v-44082597]:hover{background-color:#374151}.form-input[data-v-44082597]{width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));padding:.5rem 1rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.form-input[data-v-44082597]:focus{border-color:transparent;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn[data-v-44082597]{display:inline-flex;align-items:center;justify-content:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn[data-v-44082597]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-offset-width: 2px}.btn-primary[data-v-44082597]{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-primary[data-v-44082597]:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.btn-primary[data-v-44082597]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn-success[data-v-44082597]{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-success[data-v-44082597]:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.btn-success[data-v-44082597]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(34 197 94 / var(--tw-ring-opacity, 1))}.loading-spinner[data-v-44082597]{height:1.25rem;width:1.25rem}@keyframes spin-44082597{to{transform:rotate(360deg)}}.loading-spinner[data-v-44082597]{animation:spin-44082597 1s linear infinite;border-radius:9999px;border-width:2px;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-border-opacity: 1;border-top-color:rgb(37 99 235 / var(--tw-border-opacity, 1))} diff --git a/assets/ThemeToggle-DACcdK5F.js b/assets/ThemeToggle-Bb-3yEk7.js similarity index 94% rename from assets/ThemeToggle-DACcdK5F.js rename to assets/ThemeToggle-Bb-3yEk7.js index 35e19b78..2cd19593 100644 --- a/assets/ThemeToggle-DACcdK5F.js +++ b/assets/ThemeToggle-Bb-3yEk7.js @@ -1 +1 @@ -import{c as f,x as s,y as t,L as u,R as k,J as v,u as o,T as g,z as e,C as d,Q as p,ac as y,P as b}from"./vue-vendor-DfnFpxGJ.js";import{_ as T,a as w}from"./index-BdtiivzQ.js";const M={class:"theme-toggle-container"},C=["title"],L={key:"sun",class:"fas fa-sun"},x={key:"moon",class:"fas fa-moon"},B={key:"auto",class:"fas fa-circle-half-stroke"},S={key:1,class:"theme-switch-wrapper"},N=["title"],V={class:"switch-handle"},z={class:"handle-icon"},$={key:0,class:"fas fa-sun"},D={key:1,class:"fas fa-moon"},E={key:2,class:"fas fa-circle-half-stroke"},F={key:2,class:"theme-segmented"},I=["title","onClick"],J={key:0,class:"ml-1 hidden sm:inline"},O={__name:"ThemeToggle",props:{mode:{type:String,default:"compact",validator:l=>["compact","dropdown","segmented"].includes(l)},showLabel:{type:Boolean,default:!1}},setup(l){const a=w(),h=[{value:"light",label:"浅色模式",shortLabel:"浅色",icon:"fas fa-sun"},{value:"dark",label:"深色模式",shortLabel:"深色",icon:"fas fa-moon"},{value:"auto",label:"跟随系统",shortLabel:"自动",icon:"fas fa-circle-half-stroke"}],m=f(()=>{const n=h.find(i=>i.value===a.themeMode);return n?`点击切换主题 - ${n.label}`:"切换主题"}),r=()=>{a.cycleThemeMode()},_=n=>{a.setThemeMode(n)};return(n,i)=>(t(),s("div",M,[l.mode==="compact"?(t(),s("button",{key:0,class:"theme-toggle-button",title:m.value,onClick:r},[k(g,{mode:"out-in",name:"fade"},{default:v(()=>[o(a).themeMode==="light"?(t(),s("i",L)):o(a).themeMode==="dark"?(t(),s("i",x)):(t(),s("i",B))]),_:1})],8,C)):l.mode==="dropdown"?(t(),s("div",S,[e("button",{class:d(["theme-switch",{"is-dark":o(a).themeMode==="dark","is-auto":o(a).themeMode==="auto"}]),title:m.value,onClick:r},[i[0]||(i[0]=e("div",{class:"switch-bg"},[e("div",{class:"stars"},[e("span"),e("span"),e("span")]),e("div",{class:"clouds"},[e("span"),e("span")])],-1)),e("div",V,[e("div",z,[o(a).themeMode==="light"?(t(),s("i",$)):o(a).themeMode==="dark"?(t(),s("i",D)):(t(),s("i",E))])])],10,N)])):l.mode==="segmented"?(t(),s("div",F,[(t(),s(p,null,y(h,c=>e("button",{key:c.value,class:d(["theme-segment",{active:o(a).themeMode===c.value}]),title:c.label,onClick:P=>_(c.value)},[e("i",{class:d(c.icon)},null,2),l.showLabel?(t(),s("span",J,b(c.shortLabel),1)):u("",!0)],10,I)),64))])):u("",!0)]))}},j=T(O,[["__scopeId","data-v-58747959"]]);export{j as T}; +import{c as f,x as s,y as t,L as u,R as k,J as v,u as o,T as g,z as e,C as d,Q as p,ac as y,P as b}from"./vue-vendor-Ig-GgGwA.js";import{_ as T,a as w}from"./index-CY9cPBXr.js";const M={class:"theme-toggle-container"},C=["title"],L={key:"sun",class:"fas fa-sun"},x={key:"moon",class:"fas fa-moon"},B={key:"auto",class:"fas fa-circle-half-stroke"},S={key:1,class:"theme-switch-wrapper"},N=["title"],V={class:"switch-handle"},z={class:"handle-icon"},$={key:0,class:"fas fa-sun"},D={key:1,class:"fas fa-moon"},E={key:2,class:"fas fa-circle-half-stroke"},F={key:2,class:"theme-segmented"},I=["title","onClick"],J={key:0,class:"ml-1 hidden sm:inline"},O={__name:"ThemeToggle",props:{mode:{type:String,default:"compact",validator:l=>["compact","dropdown","segmented"].includes(l)},showLabel:{type:Boolean,default:!1}},setup(l){const a=w(),h=[{value:"light",label:"浅色模式",shortLabel:"浅色",icon:"fas fa-sun"},{value:"dark",label:"深色模式",shortLabel:"深色",icon:"fas fa-moon"},{value:"auto",label:"跟随系统",shortLabel:"自动",icon:"fas fa-circle-half-stroke"}],m=f(()=>{const n=h.find(i=>i.value===a.themeMode);return n?`点击切换主题 - ${n.label}`:"切换主题"}),r=()=>{a.cycleThemeMode()},_=n=>{a.setThemeMode(n)};return(n,i)=>(t(),s("div",M,[l.mode==="compact"?(t(),s("button",{key:0,class:"theme-toggle-button",title:m.value,onClick:r},[k(g,{mode:"out-in",name:"fade"},{default:v(()=>[o(a).themeMode==="light"?(t(),s("i",L)):o(a).themeMode==="dark"?(t(),s("i",x)):(t(),s("i",B))]),_:1})],8,C)):l.mode==="dropdown"?(t(),s("div",S,[e("button",{class:d(["theme-switch",{"is-dark":o(a).themeMode==="dark","is-auto":o(a).themeMode==="auto"}]),title:m.value,onClick:r},[i[0]||(i[0]=e("div",{class:"switch-bg"},[e("div",{class:"stars"},[e("span"),e("span"),e("span")]),e("div",{class:"clouds"},[e("span"),e("span")])],-1)),e("div",V,[e("div",z,[o(a).themeMode==="light"?(t(),s("i",$)):o(a).themeMode==="dark"?(t(),s("i",D)):(t(),s("i",E))])])],10,N)])):l.mode==="segmented"?(t(),s("div",F,[(t(),s(p,null,y(h,c=>e("button",{key:c.value,class:d(["theme-segment",{active:o(a).themeMode===c.value}]),title:c.label,onClick:P=>_(c.value)},[e("i",{class:d(c.icon)},null,2),l.showLabel?(t(),s("span",J,b(c.shortLabel),1)):u("",!0)],10,I)),64))])):u("",!0)]))}},j=T(O,[["__scopeId","data-v-58747959"]]);export{j as T}; diff --git a/web/admin-spa/dist/assets/TutorialView-CC1KbDlg.js b/assets/TutorialView-N5jhXyjx.js similarity index 98% rename from web/admin-spa/dist/assets/TutorialView-CC1KbDlg.js rename to assets/TutorialView-N5jhXyjx.js index 3acd8194..415295df 100644 --- a/web/admin-spa/dist/assets/TutorialView-CC1KbDlg.js +++ b/assets/TutorialView-N5jhXyjx.js @@ -1 +1 @@ -import{_ as u}from"./index-BdtiivzQ.js";import{r as w,c as g,x as v,z as e,L as f,O as a,Q as h,ac as C,aY as d,P as s,y as c,C as b}from"./vue-vendor-DfnFpxGJ.js";import"./element-plus-CMedNaYf.js";import"./vendor-BDiMbLwQ.js";const E={class:"card p-3 sm:p-6"},A={class:"mb-4 sm:mb-8"},S={class:"flex flex-wrap gap-1 rounded-xl bg-gray-100 p-1 dark:bg-gray-700 sm:gap-2 sm:p-2"},O=["onClick"],I={key:0,class:"tutorial-content"},P={class:"mb-6 sm:mb-10"},k={class:"mb-4 rounded-xl border border-purple-100 bg-gradient-to-r from-purple-50 to-pink-50 p-4 sm:mb-6 sm:p-6"},N={class:"space-y-4"},T={class:"rounded-lg border border-purple-200 bg-white p-3 dark:border-purple-700 dark:bg-gray-800 sm:p-4"},_={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},L={class:"whitespace-nowrap text-gray-300"},G={class:"rounded-lg border border-purple-200 bg-white p-3 dark:border-purple-700 dark:bg-gray-800 sm:p-4"},U={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},R={class:"whitespace-nowrap text-gray-300"},D={class:"mt-6 rounded-lg border border-blue-200 bg-blue-50 p-3 sm:p-4"},H={class:"mt-3 space-y-2"},K={class:"rounded bg-gray-100 p-2 font-mono text-sm dark:bg-gray-700"},j={class:"mt-8"},B={class:"space-y-4"},z={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},$={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},V={class:"whitespace-nowrap text-gray-300"},q={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Y={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},M={class:"whitespace-nowrap text-gray-300"},W={class:"mt-8"},F={class:"space-y-4"},Q={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},J={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},X={class:"whitespace-nowrap text-gray-300"},Z={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},tt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},et={class:"whitespace-nowrap text-gray-300"},st={key:1,class:"tutorial-content"},at={class:"mb-6 sm:mb-10"},dt={class:"mb-4 rounded-xl border border-orange-100 bg-gradient-to-r from-orange-50 to-yellow-50 p-4 sm:mb-6 sm:p-6"},rt={class:"space-y-4"},ot={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},mt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},lt={class:"whitespace-nowrap text-gray-300"},it={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},xt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},nt={class:"whitespace-nowrap text-gray-300"},vt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ct={class:"whitespace-nowrap text-gray-300"},pt={class:"mt-8"},gt={class:"space-y-4"},bt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},yt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ut={class:"whitespace-nowrap text-gray-300"},wt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},ft={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ht={class:"whitespace-nowrap text-gray-300"},Ct={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Et={class:"whitespace-nowrap text-gray-300"},At={class:"mt-8"},St={class:"space-y-4"},Ot={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},It={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Pt={class:"whitespace-nowrap text-gray-300"},kt={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},Nt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Tt={class:"whitespace-nowrap text-gray-300"},_t={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Lt={class:"whitespace-nowrap text-gray-300"},Gt={key:2,class:"tutorial-content"},Ut={class:"mb-6 sm:mb-10"},Rt={class:"mb-4 rounded-xl border border-orange-100 bg-gradient-to-r from-orange-50 to-yellow-50 p-4 sm:mb-6 sm:p-6"},Dt={class:"space-y-4"},Ht={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},Kt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},jt={class:"whitespace-nowrap text-gray-300"},Bt={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},zt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},$t={class:"whitespace-nowrap text-gray-300"},Vt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},qt={class:"whitespace-nowrap text-gray-300"},Yt={class:"mt-8"},Mt={class:"space-y-4"},Wt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Ft={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Qt={class:"whitespace-nowrap text-gray-300"},Jt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Xt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Zt={class:"whitespace-nowrap text-gray-300"},te={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ee={class:"whitespace-nowrap text-gray-300"},se={class:"mt-8"},ae={class:"space-y-4"},de={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},re={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},oe={class:"whitespace-nowrap text-gray-300"},me={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},le={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ie={class:"whitespace-nowrap text-gray-300"},xe={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ne={class:"whitespace-nowrap text-gray-300"},ve={__name:"TutorialView",setup(ce){const x=w("windows"),y=[{key:"windows",name:"Windows",icon:"fab fa-windows"},{key:"macos",name:"macOS",icon:"fab fa-apple"},{key:"linux",name:"Linux / WSL2",icon:"fab fa-linux"}],p=()=>{let i="";if(window.location.origin)i=window.location.origin;else{const t=window.location.protocol,r=window.location.hostname,n=window.location.port;i=t+"//"+r,n&&(t==="http:"&&n!=="80"||t==="https:"&&n!=="443")&&(i+=":"+n)}if(!i){const t=window.location.href,r=t.indexOf("/",8);if(r!==-1)i=t.substring(0,r);else return console.warn("无法获取完整的 origin,将使用相对路径"),""}return i},o=g(()=>p()+"/api"),m=g(()=>p()+"/gemini"),l=g(()=>p()+"/openai");return(i,t)=>(c(),v("div",E,[t[144]||(t[144]=e("div",{class:"mb-4 sm:mb-8"},[e("h3",{class:"mb-3 flex items-center text-xl font-bold text-gray-900 dark:text-gray-100 sm:mb-4 sm:text-2xl"},[e("i",{class:"fas fa-graduation-cap mr-2 text-blue-600 sm:mr-3"}),a(" Claude Code 使用教程 ")]),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-lg"}," 跟着这个教程,你可以轻松在自己的电脑上安装并使用 Claude Code。 ")],-1)),e("div",A,[e("div",S,[(c(),v(h,null,C(y,r=>e("button",{key:r.key,class:b(["flex flex-1 items-center justify-center gap-1 rounded-lg px-3 py-2 text-xs font-semibold transition-all duration-300 sm:gap-2 sm:px-6 sm:py-3 sm:text-sm",x.value===r.key?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:bg-white/50 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200"]),onClick:n=>x.value=r.key},[e("i",{class:b(r.icon)},null,2),a(" "+s(r.name),1)],10,O)),64))])]),x.value==="windows"?(c(),v("div",I,[t[42]||(t[42]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

Windows 安装方法

方法一:官网下载(推荐)

  1. 打开浏览器访问 https://nodejs.org/
  2. 点击 "LTS" 版本进行下载(推荐长期支持版本)
  3. 下载完成后双击 .msi 文件
  4. 按照安装向导完成安装,保持默认设置即可

方法二:使用包管理器

如果你安装了 Chocolatey 或 Scoop,可以使用命令行安装:

# 使用 Chocolatey
choco install nodejs
# 或使用 Scoop
scoop install nodejs
Windows 注意事项
  • • 建议使用 PowerShell 而不是 CMD
  • • 如果遇到权限问题,尝试以管理员身份运行
  • • 某些杀毒软件可能会误报,需要添加白名单
验证安装是否成功

安装完成后,打开 PowerShell 或 CMD,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开 PowerShell 或 CMD,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

这个命令会从 npm 官方仓库下载并安装最新版本的 Claude Code。

提示
  • • 建议使用 PowerShell 而不是 CMD,功能更强大
  • • 如果遇到权限问题,以管理员身份运行 PowerShell
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",P,[t[41]||(t[41]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-purple-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",k,[t[9]||(t[9]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-purple-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[10]||(t[10]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",N,[e("div",T,[t[1]||(t[1]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:PowerShell 临时设置(当前会话) ",-1)),t[2]||(t[2]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",_,[e("div",L,' $env:ANTHROPIC_BASE_URL = "'+s(o.value)+'" ',1),t[0]||(t[0]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:ANTHROPIC_AUTH_TOKEN = "你的API密钥" ',-1))]),t[3]||(t[3]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",G,[t[6]||(t[6]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:PowerShell 永久设置(用户级) ",-1)),t[7]||(t[7]=e("p",{class:"mb-3 text-sm text-gray-600"}," 在 PowerShell 中运行以下命令设置用户级环境变量: ",-1)),e("div",U,[t[4]||(t[4]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",R,' [System.Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "'+s(o.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[5]||(t[5]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1))]),t[8]||(t[8]=d('

查看已设置的环境变量:

# 查看用户级环境变量
[System.Environment]::GetEnvironmentVariable("ANTHROPIC_BASE_URL", [System.EnvironmentVariableTarget]::User)
[System.Environment]::GetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", [System.EnvironmentVariableTarget]::User)

💡 设置后需要重新打开 PowerShell 窗口才能生效。

',3))])])]),e("div",D,[t[14]||(t[14]=d('
验证环境变量设置

设置完环境变量后,可以通过以下命令验证是否设置成功:

在 PowerShell 中验证:
echo $env:ANTHROPIC_BASE_URL
echo $env:ANTHROPIC_AUTH_TOKEN
在 CMD 中验证:
echo %ANTHROPIC_BASE_URL%
echo %ANTHROPIC_AUTH_TOKEN%
',3)),e("div",H,[t[12]||(t[12]=e("p",{class:"text-sm text-blue-700"},[e("strong",null,"预期输出示例:")],-1)),e("div",K,[e("div",null,s(o.value),1),t[11]||(t[11]=e("div",null,"cr_xxxxxxxxxxxxxxxxxx",-1))]),t[13]||(t[13]=e("p",{class:"text-xs text-blue-700"}," 💡 如果输出为空或显示变量名本身,说明环境变量设置失败,请重新设置。 ",-1))])]),e("div",j,[t[27]||(t[27]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[28]||(t[28]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",B,[e("div",z,[t[17]||(t[17]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 设置方法 ",-1)),t[18]||(t[18]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",$,[e("div",V,' $env:CODE_ASSIST_ENDPOINT = "'+s(m.value)+'" ',1),t[15]||(t[15]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:GOOGLE_CLOUD_ACCESS_TOKEN = "你的API密钥" ',-1)),t[16]||(t[16]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:GOOGLE_GENAI_USE_GCA = "true" ',-1))]),t[19]||(t[19]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",q,[t[23]||(t[23]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 永久设置(用户级) ",-1)),t[24]||(t[24]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",Y,[t[20]||(t[20]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",M,' [System.Environment]::SetEnvironmentVariable("CODE_ASSIST_ENDPOINT", "'+s(m.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[21]||(t[21]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("GOOGLE_CLOUD_ACCESS_TOKEN", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1)),t[22]||(t[22]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("GOOGLE_GENAI_USE_GCA", "true", [System.EnvironmentVariableTarget]::User) ',-1))]),t[25]||(t[25]=e("p",{class:"mt-2 text-xs text-blue-700"}," 💡 设置后需要重新打开 PowerShell 窗口才能生效。 ",-1))]),t[26]||(t[26]=d('
验证 Gemini CLI 环境变量

在 PowerShell 中验证:

echo $env:CODE_ASSIST_ENDPOINT
echo $env:GOOGLE_CLOUD_ACCESS_TOKEN
echo $env:GOOGLE_GENAI_USE_GCA
',1))])]),e("div",W,[t[39]||(t[39]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[40]||(t[40]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",F,[e("div",Q,[t[30]||(t[30]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 设置方法 ",-1)),t[31]||(t[31]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",J,[e("div",X,' $env:OPENAI_BASE_URL = "'+s(l.value)+'" ',1),t[29]||(t[29]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:OPENAI_API_KEY = "你的API密钥" ',-1))]),t[32]||(t[32]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",Z,[t[35]||(t[35]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 永久设置(用户级) ",-1)),t[36]||(t[36]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",tt,[t[33]||(t[33]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",et,' [System.Environment]::SetEnvironmentVariable("OPENAI_BASE_URL", "'+s(l.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[34]||(t[34]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1))]),t[37]||(t[37]=e("p",{class:"mt-2 text-xs text-blue-700"}," 💡 设置后需要重新打开 PowerShell 窗口才能生效。 ",-1))]),t[38]||(t[38]=d('
验证 Codex 环境变量

在 PowerShell 中验证:

echo $env:OPENAI_BASE_URL
echo $env:OPENAI_API_KEY
',1))])])]),t[43]||(t[43]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd C:\\path\\to\\your\\project
# 启动 Claude Code
claude

Windows 常见问题解决

安装时提示 "permission denied" 错误

这通常是权限问题,尝试以下解决方法:

  • 以管理员身份运行 PowerShell
  • 或者配置 npm 使用用户目录:npm config set prefix %APPDATA%\\npm
PowerShell 执行策略错误

如果遇到执行策略限制,运行:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
环境变量设置后不生效

设置永久环境变量后需要:

  • 重新启动 PowerShell 或 CMD
  • 或者注销并重新登录 Windows
  • 验证设置:echo $env:ANTHROPIC_BASE_URL
',2))])):x.value==="macos"?(c(),v("div",st,[t[92]||(t[92]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

macOS 安装方法

方法一:使用 Homebrew(推荐)

如果你已经安装了 Homebrew,使用它安装 Node.js 会更方便:

# 更新 Homebrew
brew update
# 安装 Node.js
brew install node

方法二:官网下载

  1. 访问 https://nodejs.org/
  2. 下载适合 macOS 的 LTS 版本
  3. 打开下载的 .pkg 文件
  4. 按照安装程序指引完成安装
macOS 注意事项
  • • 如果遇到权限问题,可能需要使用 sudo
  • • 首次运行可能需要在系统偏好设置中允许
  • • 建议使用 Terminal 或 iTerm2
验证安装是否成功

安装完成后,打开 Terminal,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开 Terminal,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

如果遇到权限问题,可以使用 sudo:

sudo npm install -g @anthropic-ai/claude-code
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",at,[t[91]||(t[91]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-orange-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",dt,[t[56]||(t[56]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-orange-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[57]||(t[57]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",rt,[e("div",ot,[t[45]||(t[45]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:临时设置(当前会话) ",-1)),t[46]||(t[46]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",mt,[e("div",lt,' export ANTHROPIC_BASE_URL="'+s(o.value)+'" ',1),t[44]||(t[44]=e("div",{class:"whitespace-nowrap text-gray-300"},' export ANTHROPIC_AUTH_TOKEN="你的API密钥" ',-1))]),t[47]||(t[47]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",it,[t[54]||(t[54]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:永久设置 ",-1)),t[55]||(t[55]=e("p",{class:"mb-3 text-sm text-gray-600"}," 编辑你的 shell 配置文件(根据你使用的 shell): ",-1)),e("div",xt,[t[48]||(t[48]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",nt,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.zshrc `,1),t[49]||(t[49]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[50]||(t[50]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",vt,[t[51]||(t[51]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",ct,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.bash_profile `,1),t[52]||(t[52]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.bash_profile `,-1)),t[53]||(t[53]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])])])]),e("div",pt,[t[74]||(t[74]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[75]||(t[75]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",gt,[e("div",bt,[t[60]||(t[60]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," Terminal 设置方法 ",-1)),t[61]||(t[61]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",yt,[e("div",ut,' export CODE_ASSIST_ENDPOINT="'+s(m.value)+'" ',1),t[58]||(t[58]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥" ',-1)),t[59]||(t[59]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_GENAI_USE_GCA="true" ',-1))]),t[62]||(t[62]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",wt,[t[71]||(t[71]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[72]||(t[72]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",ft,[t[63]||(t[63]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",ht,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.zshrc `,1),t[64]||(t[64]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[65]||(t[65]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.zshrc `,-1)),t[66]||(t[66]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",Ct,[t[67]||(t[67]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",Et,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.bash_profile `,1),t[68]||(t[68]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.bash_profile `,-1)),t[69]||(t[69]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.bash_profile `,-1)),t[70]||(t[70]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])]),t[73]||(t[73]=d('
验证 Gemini CLI 环境变量

在 Terminal 中验证:

echo $CODE_ASSIST_ENDPOINT
echo $GOOGLE_CLOUD_ACCESS_TOKEN
echo $GOOGLE_GENAI_USE_GCA
',1))])]),e("div",At,[t[89]||(t[89]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[90]||(t[90]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",St,[e("div",Ot,[t[77]||(t[77]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," Terminal 设置方法 ",-1)),t[78]||(t[78]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",It,[e("div",Pt,' export OPENAI_BASE_URL="'+s(l.value)+'" ',1),t[76]||(t[76]=e("div",{class:"whitespace-nowrap text-gray-300"},' export OPENAI_API_KEY="你的API密钥" ',-1))]),t[79]||(t[79]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",kt,[t[86]||(t[86]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[87]||(t[87]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",Nt,[t[80]||(t[80]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",Tt,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.zshrc `,1),t[81]||(t[81]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.zshrc `,-1)),t[82]||(t[82]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",_t,[t[83]||(t[83]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",Lt,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.bash_profile `,1),t[84]||(t[84]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.bash_profile `,-1)),t[85]||(t[85]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])]),t[88]||(t[88]=d('
验证 Codex 环境变量

在 Terminal 中验证:

echo $OPENAI_BASE_URL
echo $OPENAI_API_KEY
',1))])])]),t[93]||(t[93]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd /path/to/your/project
# 启动 Claude Code
claude

macOS 常见问题解决

安装时提示权限错误

尝试以下解决方法:

  • 使用 sudo 安装:sudo npm install -g @anthropic-ai/claude-code
  • 或者配置 npm 使用用户目录:npm config set prefix ~/.npm-global
macOS 安全设置阻止运行

如果系统阻止运行 Claude Code:

  • 打开"系统偏好设置" → "安全性与隐私"
  • 点击"仍要打开"或"允许"
  • 或者在 Terminal 中运行:sudo spctl --master-disable
环境变量不生效

检查以下几点:

  • 确认修改了正确的配置文件(.zshrc 或 .bash_profile)
  • 重新启动 Terminal
  • 验证设置:echo $ANTHROPIC_BASE_URL
',2))])):x.value==="linux"?(c(),v("div",Gt,[t[142]||(t[142]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

Linux 安装方法

方法一:使用官方仓库(推荐)

# 添加 NodeSource 仓库
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
# 安装 Node.js
sudo apt-get install -y nodejs

方法二:使用系统包管理器

虽然版本可能不是最新的,但对于基本使用已经足够:

# Ubuntu/Debian
sudo apt update
sudo apt install nodejs npm
# CentOS/RHEL/Fedora
sudo dnf install nodejs npm
Linux 注意事项
  • • 某些发行版可能需要安装额外的依赖
  • • 如果遇到权限问题,使用 sudo
  • • 确保你的用户在 npm 的全局目录有写权限
验证安装是否成功

安装完成后,打开终端,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开终端,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

如果遇到权限问题,可以使用 sudo:

sudo npm install -g @anthropic-ai/claude-code
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",Ut,[t[141]||(t[141]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-orange-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",Rt,[t[106]||(t[106]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-orange-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[107]||(t[107]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",Dt,[e("div",Ht,[t[95]||(t[95]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:临时设置(当前会话) ",-1)),t[96]||(t[96]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",Kt,[e("div",jt,' export ANTHROPIC_BASE_URL="'+s(o.value)+'" ',1),t[94]||(t[94]=e("div",{class:"whitespace-nowrap text-gray-300"},' export ANTHROPIC_AUTH_TOKEN="你的API密钥" ',-1))]),t[97]||(t[97]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",Bt,[t[104]||(t[104]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:永久设置 ",-1)),t[105]||(t[105]=e("p",{class:"mb-3 text-sm text-gray-600"},"编辑你的 shell 配置文件:",-1)),e("div",zt,[t[98]||(t[98]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",$t,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.bashrc `,1),t[99]||(t[99]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.bashrc `,-1)),t[100]||(t[100]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",Vt,[t[101]||(t[101]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",qt,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.zshrc `,1),t[102]||(t[102]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[103]||(t[103]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])])])]),e("div",Yt,[t[124]||(t[124]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[125]||(t[125]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",Mt,[e("div",Wt,[t[110]||(t[110]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 终端设置方法 ",-1)),t[111]||(t[111]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",Ft,[e("div",Qt,' export CODE_ASSIST_ENDPOINT="'+s(m.value)+'" ',1),t[108]||(t[108]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥" ',-1)),t[109]||(t[109]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_GENAI_USE_GCA="true" ',-1))]),t[112]||(t[112]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",Jt,[t[121]||(t[121]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[122]||(t[122]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",Xt,[t[113]||(t[113]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",Zt,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.bashrc `,1),t[114]||(t[114]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.bashrc `,-1)),t[115]||(t[115]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.bashrc `,-1)),t[116]||(t[116]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",te,[t[117]||(t[117]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",ee,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.zshrc `,1),t[118]||(t[118]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[119]||(t[119]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.zshrc `,-1)),t[120]||(t[120]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])]),t[123]||(t[123]=d('
验证 Gemini CLI 环境变量

在终端中验证:

echo $CODE_ASSIST_ENDPOINT
echo $GOOGLE_CLOUD_ACCESS_TOKEN
echo $GOOGLE_GENAI_USE_GCA
',1))])]),e("div",se,[t[139]||(t[139]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[140]||(t[140]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",ae,[e("div",de,[t[127]||(t[127]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 终端设置方法 ",-1)),t[128]||(t[128]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",re,[e("div",oe,' export OPENAI_BASE_URL="'+s(l.value)+'" ',1),t[126]||(t[126]=e("div",{class:"whitespace-nowrap text-gray-300"},' export OPENAI_API_KEY="你的API密钥" ',-1))]),t[129]||(t[129]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",me,[t[136]||(t[136]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[137]||(t[137]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",le,[t[130]||(t[130]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",ie,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.bashrc `,1),t[131]||(t[131]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.bashrc `,-1)),t[132]||(t[132]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",xe,[t[133]||(t[133]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",ne,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.zshrc `,1),t[134]||(t[134]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.zshrc `,-1)),t[135]||(t[135]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])]),t[138]||(t[138]=d('
验证 Codex 环境变量

在终端中验证:

echo $OPENAI_BASE_URL
echo $OPENAI_API_KEY
',1))])])]),t[143]||(t[143]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd /path/to/your/project
# 启动 Claude Code
claude

Linux 常见问题解决

安装时提示权限错误

尝试以下解决方法:

  • 使用 sudo 安装:sudo npm install -g @anthropic-ai/claude-code
  • 或者配置 npm 使用用户目录:npm config set prefix ~/.npm-global
  • 然后添加到 PATH:export PATH=~/.npm-global/bin:$PATH
缺少依赖库

某些 Linux 发行版需要安装额外依赖:

# Ubuntu/Debian
sudo apt install build-essential
# CentOS/RHEL
sudo dnf groupinstall "Development Tools"
环境变量不生效

检查以下几点:

  • 确认修改了正确的配置文件(.bashrc 或 .zshrc)
  • 重新启动终端或运行 source ~/.bashrc
  • 验证设置:echo $ANTHROPIC_BASE_URL
',2))])):f("",!0),t[145]||(t[145]=e("div",{class:"rounded-xl bg-gradient-to-r from-blue-500 to-purple-600 p-4 text-center text-white sm:p-6"},[e("h5",{class:"mb-2 text-lg font-semibold sm:text-xl"},"🎉 恭喜你!"),e("p",{class:"mb-3 text-sm text-blue-100 sm:mb-4 sm:text-base"}," 你已经成功安装并配置了 Claude Code,现在可以开始享受 AI 编程助手带来的便利了。 "),e("p",{class:"text-xs text-blue-200 sm:text-sm"}," 如果在使用过程中遇到任何问题,可以查看官方文档或社区讨论获取帮助。 ")],-1))]))}},ue=u(ve,[["__scopeId","data-v-c6010d69"]]);export{ue as default}; +import{_ as u}from"./index-CY9cPBXr.js";import{r as w,c as g,x as v,z as e,L as f,O as a,Q as h,ac as C,aX as d,P as s,y as c,C as b}from"./vue-vendor-Ig-GgGwA.js";import"./element-plus-Bq6mBxnk.js";import"./vendor-BDiMbLwQ.js";const E={class:"card p-3 sm:p-6"},A={class:"mb-4 sm:mb-8"},S={class:"flex flex-wrap gap-1 rounded-xl bg-gray-100 p-1 dark:bg-gray-700 sm:gap-2 sm:p-2"},O=["onClick"],I={key:0,class:"tutorial-content"},P={class:"mb-6 sm:mb-10"},k={class:"mb-4 rounded-xl border border-purple-100 bg-gradient-to-r from-purple-50 to-pink-50 p-4 sm:mb-6 sm:p-6"},N={class:"space-y-4"},T={class:"rounded-lg border border-purple-200 bg-white p-3 dark:border-purple-700 dark:bg-gray-800 sm:p-4"},_={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},L={class:"whitespace-nowrap text-gray-300"},G={class:"rounded-lg border border-purple-200 bg-white p-3 dark:border-purple-700 dark:bg-gray-800 sm:p-4"},U={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},R={class:"whitespace-nowrap text-gray-300"},D={class:"mt-6 rounded-lg border border-blue-200 bg-blue-50 p-3 sm:p-4"},H={class:"mt-3 space-y-2"},K={class:"rounded bg-gray-100 p-2 font-mono text-sm dark:bg-gray-700"},j={class:"mt-8"},B={class:"space-y-4"},z={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},$={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},V={class:"whitespace-nowrap text-gray-300"},q={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Y={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},M={class:"whitespace-nowrap text-gray-300"},W={class:"mt-8"},F={class:"space-y-4"},Q={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},X={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},J={class:"whitespace-nowrap text-gray-300"},Z={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},tt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},et={class:"whitespace-nowrap text-gray-300"},st={key:1,class:"tutorial-content"},at={class:"mb-6 sm:mb-10"},dt={class:"mb-4 rounded-xl border border-orange-100 bg-gradient-to-r from-orange-50 to-yellow-50 p-4 sm:mb-6 sm:p-6"},rt={class:"space-y-4"},ot={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},mt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},lt={class:"whitespace-nowrap text-gray-300"},it={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},xt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},nt={class:"whitespace-nowrap text-gray-300"},vt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ct={class:"whitespace-nowrap text-gray-300"},pt={class:"mt-8"},gt={class:"space-y-4"},bt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},yt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ut={class:"whitespace-nowrap text-gray-300"},wt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},ft={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ht={class:"whitespace-nowrap text-gray-300"},Ct={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Et={class:"whitespace-nowrap text-gray-300"},At={class:"mt-8"},St={class:"space-y-4"},Ot={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},It={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Pt={class:"whitespace-nowrap text-gray-300"},kt={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},Nt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Tt={class:"whitespace-nowrap text-gray-300"},_t={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Lt={class:"whitespace-nowrap text-gray-300"},Gt={key:2,class:"tutorial-content"},Ut={class:"mb-6 sm:mb-10"},Rt={class:"mb-4 rounded-xl border border-orange-100 bg-gradient-to-r from-orange-50 to-yellow-50 p-4 sm:mb-6 sm:p-6"},Dt={class:"space-y-4"},Ht={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},Kt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},jt={class:"whitespace-nowrap text-gray-300"},Bt={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},zt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},$t={class:"whitespace-nowrap text-gray-300"},Vt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},qt={class:"whitespace-nowrap text-gray-300"},Yt={class:"mt-8"},Mt={class:"space-y-4"},Wt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Ft={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Qt={class:"whitespace-nowrap text-gray-300"},Xt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Jt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Zt={class:"whitespace-nowrap text-gray-300"},te={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ee={class:"whitespace-nowrap text-gray-300"},se={class:"mt-8"},ae={class:"space-y-4"},de={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},re={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},oe={class:"whitespace-nowrap text-gray-300"},me={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},le={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ie={class:"whitespace-nowrap text-gray-300"},xe={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ne={class:"whitespace-nowrap text-gray-300"},ve={__name:"TutorialView",setup(ce){const x=w("windows"),y=[{key:"windows",name:"Windows",icon:"fab fa-windows"},{key:"macos",name:"macOS",icon:"fab fa-apple"},{key:"linux",name:"Linux / WSL2",icon:"fab fa-linux"}],p=()=>{let i="";if(window.location.origin)i=window.location.origin;else{const t=window.location.protocol,r=window.location.hostname,n=window.location.port;i=t+"//"+r,n&&(t==="http:"&&n!=="80"||t==="https:"&&n!=="443")&&(i+=":"+n)}if(!i){const t=window.location.href,r=t.indexOf("/",8);if(r!==-1)i=t.substring(0,r);else return console.warn("无法获取完整的 origin,将使用相对路径"),""}return i},o=g(()=>p()+"/api"),m=g(()=>p()+"/gemini"),l=g(()=>p()+"/openai");return(i,t)=>(c(),v("div",E,[t[144]||(t[144]=e("div",{class:"mb-4 sm:mb-8"},[e("h3",{class:"mb-3 flex items-center text-xl font-bold text-gray-900 dark:text-gray-100 sm:mb-4 sm:text-2xl"},[e("i",{class:"fas fa-graduation-cap mr-2 text-blue-600 sm:mr-3"}),a(" Claude Code 使用教程 ")]),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-lg"}," 跟着这个教程,你可以轻松在自己的电脑上安装并使用 Claude Code。 ")],-1)),e("div",A,[e("div",S,[(c(),v(h,null,C(y,r=>e("button",{key:r.key,class:b(["flex flex-1 items-center justify-center gap-1 rounded-lg px-3 py-2 text-xs font-semibold transition-all duration-300 sm:gap-2 sm:px-6 sm:py-3 sm:text-sm",x.value===r.key?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:bg-white/50 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200"]),onClick:n=>x.value=r.key},[e("i",{class:b(r.icon)},null,2),a(" "+s(r.name),1)],10,O)),64))])]),x.value==="windows"?(c(),v("div",I,[t[42]||(t[42]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

Windows 安装方法

方法一:官网下载(推荐)

  1. 打开浏览器访问 https://nodejs.org/
  2. 点击 "LTS" 版本进行下载(推荐长期支持版本)
  3. 下载完成后双击 .msi 文件
  4. 按照安装向导完成安装,保持默认设置即可

方法二:使用包管理器

如果你安装了 Chocolatey 或 Scoop,可以使用命令行安装:

# 使用 Chocolatey
choco install nodejs
# 或使用 Scoop
scoop install nodejs
Windows 注意事项
  • • 建议使用 PowerShell 而不是 CMD
  • • 如果遇到权限问题,尝试以管理员身份运行
  • • 某些杀毒软件可能会误报,需要添加白名单
验证安装是否成功

安装完成后,打开 PowerShell 或 CMD,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开 PowerShell 或 CMD,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

这个命令会从 npm 官方仓库下载并安装最新版本的 Claude Code。

提示
  • • 建议使用 PowerShell 而不是 CMD,功能更强大
  • • 如果遇到权限问题,以管理员身份运行 PowerShell
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",P,[t[41]||(t[41]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-purple-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",k,[t[9]||(t[9]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-purple-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[10]||(t[10]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",N,[e("div",T,[t[1]||(t[1]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:PowerShell 临时设置(当前会话) ",-1)),t[2]||(t[2]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",_,[e("div",L,' $env:ANTHROPIC_BASE_URL = "'+s(o.value)+'" ',1),t[0]||(t[0]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:ANTHROPIC_AUTH_TOKEN = "你的API密钥" ',-1))]),t[3]||(t[3]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",G,[t[6]||(t[6]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:PowerShell 永久设置(用户级) ",-1)),t[7]||(t[7]=e("p",{class:"mb-3 text-sm text-gray-600"}," 在 PowerShell 中运行以下命令设置用户级环境变量: ",-1)),e("div",U,[t[4]||(t[4]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",R,' [System.Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "'+s(o.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[5]||(t[5]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1))]),t[8]||(t[8]=d('

查看已设置的环境变量:

# 查看用户级环境变量
[System.Environment]::GetEnvironmentVariable("ANTHROPIC_BASE_URL", [System.EnvironmentVariableTarget]::User)
[System.Environment]::GetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", [System.EnvironmentVariableTarget]::User)

💡 设置后需要重新打开 PowerShell 窗口才能生效。

',3))])])]),e("div",D,[t[14]||(t[14]=d('
验证环境变量设置

设置完环境变量后,可以通过以下命令验证是否设置成功:

在 PowerShell 中验证:
echo $env:ANTHROPIC_BASE_URL
echo $env:ANTHROPIC_AUTH_TOKEN
在 CMD 中验证:
echo %ANTHROPIC_BASE_URL%
echo %ANTHROPIC_AUTH_TOKEN%
',3)),e("div",H,[t[12]||(t[12]=e("p",{class:"text-sm text-blue-700"},[e("strong",null,"预期输出示例:")],-1)),e("div",K,[e("div",null,s(o.value),1),t[11]||(t[11]=e("div",null,"cr_xxxxxxxxxxxxxxxxxx",-1))]),t[13]||(t[13]=e("p",{class:"text-xs text-blue-700"}," 💡 如果输出为空或显示变量名本身,说明环境变量设置失败,请重新设置。 ",-1))])]),e("div",j,[t[27]||(t[27]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[28]||(t[28]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",B,[e("div",z,[t[17]||(t[17]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 设置方法 ",-1)),t[18]||(t[18]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",$,[e("div",V,' $env:CODE_ASSIST_ENDPOINT = "'+s(m.value)+'" ',1),t[15]||(t[15]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:GOOGLE_CLOUD_ACCESS_TOKEN = "你的API密钥" ',-1)),t[16]||(t[16]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:GOOGLE_GENAI_USE_GCA = "true" ',-1))]),t[19]||(t[19]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",q,[t[23]||(t[23]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 永久设置(用户级) ",-1)),t[24]||(t[24]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",Y,[t[20]||(t[20]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",M,' [System.Environment]::SetEnvironmentVariable("CODE_ASSIST_ENDPOINT", "'+s(m.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[21]||(t[21]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("GOOGLE_CLOUD_ACCESS_TOKEN", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1)),t[22]||(t[22]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("GOOGLE_GENAI_USE_GCA", "true", [System.EnvironmentVariableTarget]::User) ',-1))]),t[25]||(t[25]=e("p",{class:"mt-2 text-xs text-blue-700"}," 💡 设置后需要重新打开 PowerShell 窗口才能生效。 ",-1))]),t[26]||(t[26]=d('
验证 Gemini CLI 环境变量

在 PowerShell 中验证:

echo $env:CODE_ASSIST_ENDPOINT
echo $env:GOOGLE_CLOUD_ACCESS_TOKEN
echo $env:GOOGLE_GENAI_USE_GCA
',1))])]),e("div",W,[t[39]||(t[39]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[40]||(t[40]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",F,[e("div",Q,[t[30]||(t[30]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 设置方法 ",-1)),t[31]||(t[31]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",X,[e("div",J,' $env:OPENAI_BASE_URL = "'+s(l.value)+'" ',1),t[29]||(t[29]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:OPENAI_API_KEY = "你的API密钥" ',-1))]),t[32]||(t[32]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",Z,[t[35]||(t[35]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 永久设置(用户级) ",-1)),t[36]||(t[36]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",tt,[t[33]||(t[33]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",et,' [System.Environment]::SetEnvironmentVariable("OPENAI_BASE_URL", "'+s(l.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[34]||(t[34]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1))]),t[37]||(t[37]=e("p",{class:"mt-2 text-xs text-blue-700"}," 💡 设置后需要重新打开 PowerShell 窗口才能生效。 ",-1))]),t[38]||(t[38]=d('
验证 Codex 环境变量

在 PowerShell 中验证:

echo $env:OPENAI_BASE_URL
echo $env:OPENAI_API_KEY
',1))])])]),t[43]||(t[43]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd C:\\path\\to\\your\\project
# 启动 Claude Code
claude

Windows 常见问题解决

安装时提示 "permission denied" 错误

这通常是权限问题,尝试以下解决方法:

  • 以管理员身份运行 PowerShell
  • 或者配置 npm 使用用户目录:npm config set prefix %APPDATA%\\npm
PowerShell 执行策略错误

如果遇到执行策略限制,运行:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
环境变量设置后不生效

设置永久环境变量后需要:

  • 重新启动 PowerShell 或 CMD
  • 或者注销并重新登录 Windows
  • 验证设置:echo $env:ANTHROPIC_BASE_URL
',2))])):x.value==="macos"?(c(),v("div",st,[t[92]||(t[92]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

macOS 安装方法

方法一:使用 Homebrew(推荐)

如果你已经安装了 Homebrew,使用它安装 Node.js 会更方便:

# 更新 Homebrew
brew update
# 安装 Node.js
brew install node

方法二:官网下载

  1. 访问 https://nodejs.org/
  2. 下载适合 macOS 的 LTS 版本
  3. 打开下载的 .pkg 文件
  4. 按照安装程序指引完成安装
macOS 注意事项
  • • 如果遇到权限问题,可能需要使用 sudo
  • • 首次运行可能需要在系统偏好设置中允许
  • • 建议使用 Terminal 或 iTerm2
验证安装是否成功

安装完成后,打开 Terminal,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开 Terminal,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

如果遇到权限问题,可以使用 sudo:

sudo npm install -g @anthropic-ai/claude-code
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",at,[t[91]||(t[91]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-orange-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",dt,[t[56]||(t[56]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-orange-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[57]||(t[57]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",rt,[e("div",ot,[t[45]||(t[45]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:临时设置(当前会话) ",-1)),t[46]||(t[46]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",mt,[e("div",lt,' export ANTHROPIC_BASE_URL="'+s(o.value)+'" ',1),t[44]||(t[44]=e("div",{class:"whitespace-nowrap text-gray-300"},' export ANTHROPIC_AUTH_TOKEN="你的API密钥" ',-1))]),t[47]||(t[47]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",it,[t[54]||(t[54]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:永久设置 ",-1)),t[55]||(t[55]=e("p",{class:"mb-3 text-sm text-gray-600"}," 编辑你的 shell 配置文件(根据你使用的 shell): ",-1)),e("div",xt,[t[48]||(t[48]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",nt,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.zshrc `,1),t[49]||(t[49]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[50]||(t[50]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",vt,[t[51]||(t[51]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",ct,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.bash_profile `,1),t[52]||(t[52]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.bash_profile `,-1)),t[53]||(t[53]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])])])]),e("div",pt,[t[74]||(t[74]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[75]||(t[75]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",gt,[e("div",bt,[t[60]||(t[60]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," Terminal 设置方法 ",-1)),t[61]||(t[61]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",yt,[e("div",ut,' export CODE_ASSIST_ENDPOINT="'+s(m.value)+'" ',1),t[58]||(t[58]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥" ',-1)),t[59]||(t[59]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_GENAI_USE_GCA="true" ',-1))]),t[62]||(t[62]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",wt,[t[71]||(t[71]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[72]||(t[72]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",ft,[t[63]||(t[63]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",ht,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.zshrc `,1),t[64]||(t[64]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[65]||(t[65]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.zshrc `,-1)),t[66]||(t[66]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",Ct,[t[67]||(t[67]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",Et,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.bash_profile `,1),t[68]||(t[68]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.bash_profile `,-1)),t[69]||(t[69]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.bash_profile `,-1)),t[70]||(t[70]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])]),t[73]||(t[73]=d('
验证 Gemini CLI 环境变量

在 Terminal 中验证:

echo $CODE_ASSIST_ENDPOINT
echo $GOOGLE_CLOUD_ACCESS_TOKEN
echo $GOOGLE_GENAI_USE_GCA
',1))])]),e("div",At,[t[89]||(t[89]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[90]||(t[90]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",St,[e("div",Ot,[t[77]||(t[77]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," Terminal 设置方法 ",-1)),t[78]||(t[78]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",It,[e("div",Pt,' export OPENAI_BASE_URL="'+s(l.value)+'" ',1),t[76]||(t[76]=e("div",{class:"whitespace-nowrap text-gray-300"},' export OPENAI_API_KEY="你的API密钥" ',-1))]),t[79]||(t[79]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",kt,[t[86]||(t[86]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[87]||(t[87]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",Nt,[t[80]||(t[80]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",Tt,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.zshrc `,1),t[81]||(t[81]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.zshrc `,-1)),t[82]||(t[82]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",_t,[t[83]||(t[83]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",Lt,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.bash_profile `,1),t[84]||(t[84]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.bash_profile `,-1)),t[85]||(t[85]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])]),t[88]||(t[88]=d('
验证 Codex 环境变量

在 Terminal 中验证:

echo $OPENAI_BASE_URL
echo $OPENAI_API_KEY
',1))])])]),t[93]||(t[93]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd /path/to/your/project
# 启动 Claude Code
claude

macOS 常见问题解决

安装时提示权限错误

尝试以下解决方法:

  • 使用 sudo 安装:sudo npm install -g @anthropic-ai/claude-code
  • 或者配置 npm 使用用户目录:npm config set prefix ~/.npm-global
macOS 安全设置阻止运行

如果系统阻止运行 Claude Code:

  • 打开"系统偏好设置" → "安全性与隐私"
  • 点击"仍要打开"或"允许"
  • 或者在 Terminal 中运行:sudo spctl --master-disable
环境变量不生效

检查以下几点:

  • 确认修改了正确的配置文件(.zshrc 或 .bash_profile)
  • 重新启动 Terminal
  • 验证设置:echo $ANTHROPIC_BASE_URL
',2))])):x.value==="linux"?(c(),v("div",Gt,[t[142]||(t[142]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

Linux 安装方法

方法一:使用官方仓库(推荐)

# 添加 NodeSource 仓库
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
# 安装 Node.js
sudo apt-get install -y nodejs

方法二:使用系统包管理器

虽然版本可能不是最新的,但对于基本使用已经足够:

# Ubuntu/Debian
sudo apt update
sudo apt install nodejs npm
# CentOS/RHEL/Fedora
sudo dnf install nodejs npm
Linux 注意事项
  • • 某些发行版可能需要安装额外的依赖
  • • 如果遇到权限问题,使用 sudo
  • • 确保你的用户在 npm 的全局目录有写权限
验证安装是否成功

安装完成后,打开终端,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开终端,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

如果遇到权限问题,可以使用 sudo:

sudo npm install -g @anthropic-ai/claude-code
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",Ut,[t[141]||(t[141]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-orange-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",Rt,[t[106]||(t[106]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-orange-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[107]||(t[107]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",Dt,[e("div",Ht,[t[95]||(t[95]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:临时设置(当前会话) ",-1)),t[96]||(t[96]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",Kt,[e("div",jt,' export ANTHROPIC_BASE_URL="'+s(o.value)+'" ',1),t[94]||(t[94]=e("div",{class:"whitespace-nowrap text-gray-300"},' export ANTHROPIC_AUTH_TOKEN="你的API密钥" ',-1))]),t[97]||(t[97]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",Bt,[t[104]||(t[104]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:永久设置 ",-1)),t[105]||(t[105]=e("p",{class:"mb-3 text-sm text-gray-600"},"编辑你的 shell 配置文件:",-1)),e("div",zt,[t[98]||(t[98]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",$t,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.bashrc `,1),t[99]||(t[99]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.bashrc `,-1)),t[100]||(t[100]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",Vt,[t[101]||(t[101]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",qt,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.zshrc `,1),t[102]||(t[102]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[103]||(t[103]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])])])]),e("div",Yt,[t[124]||(t[124]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[125]||(t[125]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",Mt,[e("div",Wt,[t[110]||(t[110]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 终端设置方法 ",-1)),t[111]||(t[111]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",Ft,[e("div",Qt,' export CODE_ASSIST_ENDPOINT="'+s(m.value)+'" ',1),t[108]||(t[108]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥" ',-1)),t[109]||(t[109]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_GENAI_USE_GCA="true" ',-1))]),t[112]||(t[112]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",Xt,[t[121]||(t[121]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[122]||(t[122]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",Jt,[t[113]||(t[113]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",Zt,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.bashrc `,1),t[114]||(t[114]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.bashrc `,-1)),t[115]||(t[115]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.bashrc `,-1)),t[116]||(t[116]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",te,[t[117]||(t[117]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",ee,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.zshrc `,1),t[118]||(t[118]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[119]||(t[119]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.zshrc `,-1)),t[120]||(t[120]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])]),t[123]||(t[123]=d('
验证 Gemini CLI 环境变量

在终端中验证:

echo $CODE_ASSIST_ENDPOINT
echo $GOOGLE_CLOUD_ACCESS_TOKEN
echo $GOOGLE_GENAI_USE_GCA
',1))])]),e("div",se,[t[139]||(t[139]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[140]||(t[140]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",ae,[e("div",de,[t[127]||(t[127]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 终端设置方法 ",-1)),t[128]||(t[128]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",re,[e("div",oe,' export OPENAI_BASE_URL="'+s(l.value)+'" ',1),t[126]||(t[126]=e("div",{class:"whitespace-nowrap text-gray-300"},' export OPENAI_API_KEY="你的API密钥" ',-1))]),t[129]||(t[129]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",me,[t[136]||(t[136]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[137]||(t[137]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",le,[t[130]||(t[130]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",ie,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.bashrc `,1),t[131]||(t[131]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.bashrc `,-1)),t[132]||(t[132]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",xe,[t[133]||(t[133]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",ne,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.zshrc `,1),t[134]||(t[134]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.zshrc `,-1)),t[135]||(t[135]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])]),t[138]||(t[138]=d('
验证 Codex 环境变量

在终端中验证:

echo $OPENAI_BASE_URL
echo $OPENAI_API_KEY
',1))])])]),t[143]||(t[143]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd /path/to/your/project
# 启动 Claude Code
claude

Linux 常见问题解决

安装时提示权限错误

尝试以下解决方法:

  • 使用 sudo 安装:sudo npm install -g @anthropic-ai/claude-code
  • 或者配置 npm 使用用户目录:npm config set prefix ~/.npm-global
  • 然后添加到 PATH:export PATH=~/.npm-global/bin:$PATH
缺少依赖库

某些 Linux 发行版需要安装额外依赖:

# Ubuntu/Debian
sudo apt install build-essential
# CentOS/RHEL
sudo dnf groupinstall "Development Tools"
环境变量不生效

检查以下几点:

  • 确认修改了正确的配置文件(.bashrc 或 .zshrc)
  • 重新启动终端或运行 source ~/.bashrc
  • 验证设置:echo $ANTHROPIC_BASE_URL
',2))])):f("",!0),t[145]||(t[145]=e("div",{class:"rounded-xl bg-gradient-to-r from-blue-500 to-purple-600 p-4 text-center text-white sm:p-6"},[e("h5",{class:"mb-2 text-lg font-semibold sm:text-xl"},"🎉 恭喜你!"),e("p",{class:"mb-3 text-sm text-blue-100 sm:mb-4 sm:text-base"}," 你已经成功安装并配置了 Claude Code,现在可以开始享受 AI 编程助手带来的便利了。 "),e("p",{class:"text-xs text-blue-200 sm:text-sm"}," 如果在使用过程中遇到任何问题,可以查看官方文档或社区讨论获取帮助。 ")],-1))]))}},ue=u(ve,[["__scopeId","data-v-c6010d69"]]);export{ue as default}; diff --git a/assets/WindowCountdown-RaAYa1A3.js b/assets/WindowCountdown-DSqUCtdk.js similarity index 98% rename from assets/WindowCountdown-RaAYa1A3.js rename to assets/WindowCountdown-DSqUCtdk.js index c79fded0..98f69ec3 100644 --- a/assets/WindowCountdown-RaAYa1A3.js +++ b/assets/WindowCountdown-DSqUCtdk.js @@ -1 +1 @@ -import{r as N,c as y,o as x,q as R,V as C,x as i,y as o,z as n,L as f,P as l,O as w,B as k,C as b}from"./vue-vendor-DfnFpxGJ.js";const $={class:"space-y-1"},P={class:"flex items-center justify-between text-xs"},B={class:"text-gray-500"},E={key:0,class:"font-medium text-gray-700"},I={key:1,class:"font-medium text-orange-600"},V={key:2,class:"font-medium text-gray-500"},j={key:3,class:"font-medium text-gray-400"},z={key:0,class:"space-y-0.5"},D={key:0,class:"space-y-0.5"},W={class:"flex items-center justify-between text-xs"},F={class:"text-gray-600"},K={class:"h-1 w-full rounded-full bg-gray-200"},O={key:1,class:"space-y-0.5"},U={class:"flex items-center justify-between text-xs"},A={class:"text-gray-600"},G={class:"h-1 w-full rounded-full bg-gray-200"},H={key:1,class:"text-xs text-gray-500"},J={key:0},Q={key:1},X={key:2},Z={__name:"WindowCountdown",props:{label:{type:String,default:"窗口限制"},rateLimitWindow:{type:Number,required:!0},windowStartTime:{type:Number,default:null},windowEndTime:{type:Number,default:null},windowRemainingSeconds:{type:Number,default:null},currentRequests:{type:Number,default:0},requestLimit:{type:Number,default:0},currentTokens:{type:Number,default:0},tokenLimit:{type:Number,default:0},showProgress:{type:Boolean,default:!0},showTooltip:{type:Boolean,default:!1}},setup(a){const s=a,r=N(s.windowRemainingSeconds);let u=null;const c=y(()=>s.windowStartTime===null?"notStarted":r.value===0?"expired":r.value>0?"active":"unknown"),T=y(()=>s.requestLimit>0),_=y(()=>s.tokenLimit>0),L=e=>{if(e==null)return"--:--";const t=Math.floor(e/3600),d=Math.floor(e%3600/60),p=e%60;return t>0?`${t}h ${d}m`:d>0?`${d}m ${p}s`:`${p}s`},q=e=>{const t=Math.floor(e/3600),d=Math.floor(e%3600/60);return t>0?`${t}小时${d}分钟`:`${d}分钟`},g=e=>e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),v=()=>{if(!s.requestLimit||s.requestLimit===0)return 0;const e=(s.currentRequests||0)/s.requestLimit*100;return Math.min(e,100)},S=()=>{const e=v();return e>=100?"bg-red-500":e>=80?"bg-yellow-500":"bg-blue-500"},h=()=>{if(!s.tokenLimit||s.tokenLimit===0)return 0;const e=(s.currentTokens||0)/s.tokenLimit*100;return Math.min(e,100)},M=()=>{const e=h();return e>=100?"bg-red-500":e>=80?"bg-yellow-500":"bg-purple-500"},m=()=>{if(s.windowEndTime&&r.value>0){const e=Date.now(),t=Math.max(0,Math.floor((s.windowEndTime-e)/1e3));r.value=t,t===0&&u&&(clearInterval(u),u=null)}};return x(()=>s.windowRemainingSeconds,e=>{r.value=e}),x(()=>s.windowEndTime,e=>{e&&(m(),!u&&r.value>0&&(u=setInterval(m,1e3)))}),R(()=>{s.windowEndTime&&r.value>0&&(m(),u=setInterval(m,1e3))}),C(()=>{u&&clearInterval(u)}),(e,t)=>(o(),i("div",$,[n("div",P,[n("span",B,l(a.label),1),c.value==="active"?(o(),i("span",E,[t[0]||(t[0]=n("i",{class:"fas fa-clock mr-1 text-blue-500"},null,-1)),w(" "+l(L(r.value)),1)])):c.value==="expired"?(o(),i("span",I,t[1]||(t[1]=[n("i",{class:"fas fa-sync-alt mr-1"},null,-1),w(" 窗口已过期 ",-1)]))):c.value==="notStarted"?(o(),i("span",V,t[2]||(t[2]=[n("i",{class:"fas fa-pause-circle mr-1"},null,-1),w(" 窗口未激活 ",-1)]))):(o(),i("span",j,l(a.rateLimitWindow)+" 分钟 ",1))]),a.showProgress?(o(),i("div",z,[T.value?(o(),i("div",D,[n("div",W,[t[3]||(t[3]=n("span",{class:"text-gray-400"},"请求",-1)),n("span",F,l(a.currentRequests||0)+"/"+l(a.requestLimit),1)]),n("div",K,[n("div",{class:b(["h-1 rounded-full transition-all duration-300",S()]),style:k({width:v()+"%"})},null,6)])])):f("",!0),_.value?(o(),i("div",O,[n("div",U,[t[4]||(t[4]=n("span",{class:"text-gray-400"},"Token",-1)),n("span",A,l(g(a.currentTokens||0))+"/"+l(g(a.tokenLimit)),1)]),n("div",G,[n("div",{class:b(["h-1 rounded-full transition-all duration-300",M()]),style:k({width:h()+"%"})},null,6)])])):f("",!0)])):f("",!0),c.value==="active"&&a.showTooltip?(o(),i("div",H,[t[5]||(t[5]=n("i",{class:"fas fa-info-circle mr-1"},null,-1)),r.value<60?(o(),i("span",J,"即将重置")):r.value<300?(o(),i("span",Q,l(Math.ceil(r.value/60))+" 分钟后重置",1)):(o(),i("span",X,l(q(r.value))+"后重置",1))])):f("",!0)]))}};export{Z as _}; +import{r as N,c as y,o as x,q as R,V as C,x as i,y as o,z as n,L as f,P as l,O as w,B as k,C as b}from"./vue-vendor-Ig-GgGwA.js";const $={class:"space-y-1"},P={class:"flex items-center justify-between text-xs"},B={class:"text-gray-500"},E={key:0,class:"font-medium text-gray-700"},I={key:1,class:"font-medium text-orange-600"},V={key:2,class:"font-medium text-gray-500"},j={key:3,class:"font-medium text-gray-400"},z={key:0,class:"space-y-0.5"},D={key:0,class:"space-y-0.5"},W={class:"flex items-center justify-between text-xs"},F={class:"text-gray-600"},K={class:"h-1 w-full rounded-full bg-gray-200"},O={key:1,class:"space-y-0.5"},U={class:"flex items-center justify-between text-xs"},A={class:"text-gray-600"},G={class:"h-1 w-full rounded-full bg-gray-200"},H={key:1,class:"text-xs text-gray-500"},J={key:0},Q={key:1},X={key:2},Z={__name:"WindowCountdown",props:{label:{type:String,default:"窗口限制"},rateLimitWindow:{type:Number,required:!0},windowStartTime:{type:Number,default:null},windowEndTime:{type:Number,default:null},windowRemainingSeconds:{type:Number,default:null},currentRequests:{type:Number,default:0},requestLimit:{type:Number,default:0},currentTokens:{type:Number,default:0},tokenLimit:{type:Number,default:0},showProgress:{type:Boolean,default:!0},showTooltip:{type:Boolean,default:!1}},setup(a){const s=a,r=N(s.windowRemainingSeconds);let u=null;const c=y(()=>s.windowStartTime===null?"notStarted":r.value===0?"expired":r.value>0?"active":"unknown"),T=y(()=>s.requestLimit>0),_=y(()=>s.tokenLimit>0),L=e=>{if(e==null)return"--:--";const t=Math.floor(e/3600),d=Math.floor(e%3600/60),p=e%60;return t>0?`${t}h ${d}m`:d>0?`${d}m ${p}s`:`${p}s`},q=e=>{const t=Math.floor(e/3600),d=Math.floor(e%3600/60);return t>0?`${t}小时${d}分钟`:`${d}分钟`},g=e=>e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),v=()=>{if(!s.requestLimit||s.requestLimit===0)return 0;const e=(s.currentRequests||0)/s.requestLimit*100;return Math.min(e,100)},S=()=>{const e=v();return e>=100?"bg-red-500":e>=80?"bg-yellow-500":"bg-blue-500"},h=()=>{if(!s.tokenLimit||s.tokenLimit===0)return 0;const e=(s.currentTokens||0)/s.tokenLimit*100;return Math.min(e,100)},M=()=>{const e=h();return e>=100?"bg-red-500":e>=80?"bg-yellow-500":"bg-purple-500"},m=()=>{if(s.windowEndTime&&r.value>0){const e=Date.now(),t=Math.max(0,Math.floor((s.windowEndTime-e)/1e3));r.value=t,t===0&&u&&(clearInterval(u),u=null)}};return x(()=>s.windowRemainingSeconds,e=>{r.value=e}),x(()=>s.windowEndTime,e=>{e&&(m(),!u&&r.value>0&&(u=setInterval(m,1e3)))}),R(()=>{s.windowEndTime&&r.value>0&&(m(),u=setInterval(m,1e3))}),C(()=>{u&&clearInterval(u)}),(e,t)=>(o(),i("div",$,[n("div",P,[n("span",B,l(a.label),1),c.value==="active"?(o(),i("span",E,[t[0]||(t[0]=n("i",{class:"fas fa-clock mr-1 text-blue-500"},null,-1)),w(" "+l(L(r.value)),1)])):c.value==="expired"?(o(),i("span",I,t[1]||(t[1]=[n("i",{class:"fas fa-sync-alt mr-1"},null,-1),w(" 窗口已过期 ",-1)]))):c.value==="notStarted"?(o(),i("span",V,t[2]||(t[2]=[n("i",{class:"fas fa-pause-circle mr-1"},null,-1),w(" 窗口未激活 ",-1)]))):(o(),i("span",j,l(a.rateLimitWindow)+" 分钟 ",1))]),a.showProgress?(o(),i("div",z,[T.value?(o(),i("div",D,[n("div",W,[t[3]||(t[3]=n("span",{class:"text-gray-400"},"请求",-1)),n("span",F,l(a.currentRequests||0)+"/"+l(a.requestLimit),1)]),n("div",K,[n("div",{class:b(["h-1 rounded-full transition-all duration-300",S()]),style:k({width:v()+"%"})},null,6)])])):f("",!0),_.value?(o(),i("div",O,[n("div",U,[t[4]||(t[4]=n("span",{class:"text-gray-400"},"Token",-1)),n("span",A,l(g(a.currentTokens||0))+"/"+l(g(a.tokenLimit)),1)]),n("div",G,[n("div",{class:b(["h-1 rounded-full transition-all duration-300",M()]),style:k({width:h()+"%"})},null,6)])])):f("",!0)])):f("",!0),c.value==="active"&&a.showTooltip?(o(),i("div",H,[t[5]||(t[5]=n("i",{class:"fas fa-info-circle mr-1"},null,-1)),r.value<60?(o(),i("span",J,"即将重置")):r.value<300?(o(),i("span",Q,l(Math.ceil(r.value/60))+" 分钟后重置",1)):(o(),i("span",X,l(q(r.value))+"后重置",1))])):f("",!0)]))}};export{Z as _}; diff --git a/assets/element-plus-CMedNaYf.js b/assets/element-plus-Bq6mBxnk.js similarity index 99% rename from assets/element-plus-CMedNaYf.js rename to assets/element-plus-Bq6mBxnk.js index 271353b1..cc4d452c 100644 --- a/assets/element-plus-CMedNaYf.js +++ b/assets/element-plus-Bq6mBxnk.js @@ -1,4 +1,4 @@ -import{g as lt,i as we,r as I,c as y,u as o,a as ke,b as yt,d as Ve,e as bt,f as gn,h as rn,w as _p,j as Qe,p as rt,k as Ar,l as x,s as Lt,m as Tp,n as nu,o as ie,q as Xe,t as xt,v as bn,x as V,y as _,z as F,A as G,B as _e,C as T,D as Ee,N as Bt,E as et,F as $p,G as Xt,H as wt,I as oe,J as U,K as We,L as J,M as Ge,O as st,P as pe,Q as Oe,R as H,S as mt,T as an,U as Ha,V as cs,W as pl,X as Ft,Y as Le,Z as Nt,_ as kt,$ as Fr,a0 as hl,a1 as Np,a2 as Nc,a3 as jl,a4 as ua,a5 as Ip,a6 as xr,a7 as zr,a8 as Ic,a9 as Mp,aa as Tt,ab as Mn,ac as ut,ad as Mc,ae as wo,af as On,ag as cl,ah as Dt,ai as Re,aj as Oa,ak as Uo,al as Ka,am as nn,an as Rc,ao as Pc,ap as Yo,aq as ds,ar as Rp,as as Pp,at as Op,au as Ul,av as ht,aw as Lp,ax as Oc,ay as $l,az as Bp,aA as Vp,aB as nr,aC as lr,aD as fs,aE as Dp,aF as Lc,aG as Il,aH as Ap,aI as Fp,aJ as Bc,aK as xp,aL as zp,aM as Hp,aN as Kp,aO as Wp}from"./vue-vendor-DfnFpxGJ.js";import{i as qt,g as Yt,f as qo,s as jp,p as An,E as Xl,y as Up,a as Yp,d as Ln,T as vo,b as Ke,l as Vc,t as Hl,c as tn,e as qp,h as Wa,j as ln,u as Ds,k as Hr,m as Gp,n as Xp,w as Zp,o as Jp,q as Qp,r as eh,v as th,x as lu,S as nh,z as Dc,A as lh,B as oh,D as ca,F as Ac,G as Fc,Y as ah,H as xc,I as zc,J as Hc,K as Kc,L as sh,M as rh,N as ih,O as uh}from"./vendor-BDiMbLwQ.js";const ch="2.10.4",ou=Symbol("INSTALLED_KEY"),Wc=Symbol(),Ko="el",dh="is-",Bl=(e,t,n,l,a)=>{let s=`${e}-${t}`;return n&&(s+=`-${n}`),l&&(s+=`__${l}`),a&&(s+=`--${a}`),s},jc=Symbol("namespaceContextKey"),Kr=e=>{const t=e||(lt()?we(jc,I(Ko)):I(Ko));return y(()=>o(t)||Ko)},ue=(e,t)=>{const n=Kr(t);return{namespace:n,b:(p="")=>Bl(n.value,e,p,"",""),e:p=>p?Bl(n.value,e,"",p,""):"",m:p=>p?Bl(n.value,e,"","",p):"",be:(p,g)=>p&&g?Bl(n.value,e,p,g,""):"",em:(p,g)=>p&&g?Bl(n.value,e,"",p,g):"",bm:(p,g)=>p&&g?Bl(n.value,e,p,"",g):"",bem:(p,g,b)=>p&&g&&b?Bl(n.value,e,p,g,b):"",is:(p,...g)=>{const b=g.length>=1?g[0]:!0;return p&&b?`${dh}${p}`:""},cssVar:p=>{const g={};for(const b in p)p[b]&&(g[`--${n.value}-${b}`]=p[b]);return g},cssVarName:p=>`--${n.value}-${p}`,cssVarBlock:p=>{const g={};for(const b in p)p[b]&&(g[`--${n.value}-${e}-${b}`]=p[b]);return g},cssVarBlockName:p=>`--${n.value}-${e}-${p}`}},vt=e=>e===void 0,_t=e=>typeof e=="boolean",Te=e=>typeof e=="number",Pn=e=>!e&&e!==0||ke(e)&&e.length===0||yt(e)&&!Object.keys(e).length,_n=e=>typeof Element>"u"?!1:e instanceof Element,In=e=>qt(e),fh=e=>Ve(e)?!Number.isNaN(Number(e)):!1,vs=e=>e===window;class vh extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function jt(e,t){throw new vh(`[${e}] ${t}`)}const au={current:0},su=I(0),Uc=2e3,ru=Symbol("elZIndexContextKey"),Yc=Symbol("zIndexContextKey"),Mo=e=>{const t=lt()?we(ru,au):au,n=e||(lt()?we(Yc,void 0):void 0),l=y(()=>{const r=o(n);return Te(r)?r:Uc}),a=y(()=>l.value+su.value),s=()=>(t.current++,su.value=t.current,a.value);return!bt&&we(ru),{initialZIndex:l,currentZIndex:a,nextZIndex:s}};var ph={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color.",alphaLabel:"pick alpha value"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},mention:{loading:"Loading"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const hh=e=>(t,n)=>mh(t,n,o(e)),mh=(e,t,n)=>Yt(n,e,e).replace(/\{(\w+)\}/g,(l,a)=>{var s;return`${(s=t==null?void 0:t[a])!=null?s:`{${a}}`}`}),gh=e=>{const t=y(()=>o(e).name),n=gn(e)?e:I(e);return{lang:t,locale:n,t:hh(e)}},qc=Symbol("localeContextKey"),pt=e=>{const t=e||we(qc,I());return gh(y(()=>t.value||ph))},Gc="__epPropKey",Y=e=>e,bh=e=>yt(e)&&!!e[Gc],Un=(e,t)=>{if(!yt(e)||bh(e))return e;const{values:n,required:l,default:a,type:s,validator:r}=e,u={type:s,required:!!l,validator:n||r?c=>{let d=!1,f=[];if(n&&(f=Array.from(n),rn(e,"default")&&f.push(a),d||(d=f.includes(c))),r&&(d||(d=r(c))),!d&&f.length>0){const m=[...new Set(f)].map(v=>JSON.stringify(v)).join(", ");_p(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${m}], got value ${JSON.stringify(c)}.`)}return d}:void 0,[Gc]:!0};return rn(e,"default")&&(u.default=a),u},de=e=>qo(Object.entries(e).map(([t,n])=>[t,Un(n,t)])),tl=["","default","small","large"],Jt=Un({type:String,values:tl,required:!1}),Xc=Symbol("size"),Zc=()=>{const e=we(Xc,{});return y(()=>o(e.size)||"")},Jc=Symbol("emptyValuesContextKey"),yh=["",void 0,null],Ch=void 0,Zl=de({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>Qe(e)?!e():!e}}),da=(e,t)=>{const n=lt()?we(Jc,I({})):I({}),l=y(()=>e.emptyValues||n.value.emptyValues||yh),a=y(()=>Qe(e.valueOnClear)?e.valueOnClear():e.valueOnClear!==void 0?e.valueOnClear:Qe(n.value.valueOnClear)?n.value.valueOnClear():n.value.valueOnClear!==void 0?n.value.valueOnClear:t!==void 0?t:Ch),s=r=>l.value.includes(r);return l.value.includes(a.value),{emptyValues:l,valueOnClear:a,isEmptyValue:s}},ko=e=>Object.keys(e),Qc=e=>Object.entries(e),Wo=(e,t,n)=>({get value(){return Yt(e,t,n)},set value(l){jp(e,t,l)}}),ja=I();function fa(e,t=void 0){const n=lt()?we(Wc,ja):ja;return e?y(()=>{var l,a;return(a=(l=n.value)==null?void 0:l[e])!=null?a:t}):n}function ps(e,t){const n=fa(),l=ue(e,y(()=>{var i;return((i=n.value)==null?void 0:i.namespace)||Ko})),a=pt(y(()=>{var i;return(i=n.value)==null?void 0:i.locale})),s=Mo(y(()=>{var i;return((i=n.value)==null?void 0:i.zIndex)||Uc})),r=y(()=>{var i;return o(t)||((i=n.value)==null?void 0:i.size)||""});return Wr(y(()=>o(n)||{})),{ns:l,locale:a,zIndex:s,size:r}}const Wr=(e,t,n=!1)=>{var l;const a=!!lt(),s=a?fa():void 0,r=(l=t==null?void 0:t.provide)!=null?l:a?rt:void 0;if(!r)return;const i=y(()=>{const u=o(e);return s!=null&&s.value?wh(s.value,u):u});return r(Wc,i),r(qc,y(()=>i.value.locale)),r(jc,y(()=>i.value.namespace)),r(Yc,y(()=>i.value.zIndex)),r(Xc,{size:y(()=>i.value.size||"")}),r(Jc,y(()=>({emptyValues:i.value.emptyValues,valueOnClear:i.value.valueOnClear}))),(n||!ja.value)&&(ja.value=i.value),i},wh=(e,t)=>{const n=[...new Set([...ko(e),...ko(t)])],l={};for(const a of n)l[a]=t[a]!==void 0?t[a]:e[a];return l},kh=(e=[])=>({version:ch,install:(n,l)=>{n[ou]||(n[ou]=!0,e.forEach(a=>n.use(a)),l&&Wr(l,n,!0))}}),De="update:modelValue",nt="change",Zt="input",Sh=de({zIndex:{type:Y([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),Eh={scroll:({scrollTop:e,fixed:t})=>Te(e)&&_t(t),[nt]:e=>_t(e)};var fe=(e,t)=>{const n=e.__vccOpts||e;for(const[l,a]of t)n[l]=a;return n};function _h(e,t,n,l){const a=n-t;return e/=l/2,e<1?a/2*e*e*e+t:a/2*((e-=2)*e*e+2)+t}const Ml=e=>bt?window.requestAnimationFrame(e):setTimeout(e,16),Yl=e=>bt?window.cancelAnimationFrame(e):clearTimeout(e),ed=(e="")=>e.split(" ").filter(t=>!!t.trim()),Nn=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},Fn=(e,t)=>{!e||!t.trim()||e.classList.add(...ed(t))},yn=(e,t)=>{!e||!t.trim()||e.classList.remove(...ed(t))},rl=(e,t)=>{var n;if(!bt||!e||!t)return"";let l=Ar(t);l==="float"&&(l="cssFloat");try{const a=e.style[l];if(a)return a;const s=(n=document.defaultView)==null?void 0:n.getComputedStyle(e,"");return s?s[l]:""}catch{return e.style[l]}},td=(e,t,n)=>{if(!(!e||!t))if(yt(t))Qc(t).forEach(([l,a])=>td(e,l,a));else{const l=Ar(t);e.style[l]=n}};function zt(e,t="px"){if(!e)return"";if(Te(e)||fh(e))return`${e}${t}`;if(Ve(e))return e}const Th=(e,t)=>{if(!bt)return!1;const n={undefined:"overflow",true:"overflow-y",false:"overflow-x"}[String(t)],l=rl(e,n);return["scroll","auto","overlay"].some(a=>l.includes(a))},jr=(e,t)=>{if(!bt)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(Th(n,t))return n;n=n.parentNode}return n};let wa;const nd=e=>{var t;if(!bt)return 0;if(wa!==void 0)return wa;const n=document.createElement("div");n.className=`${e}-scrollbar__wrap`,n.style.visibility="hidden",n.style.width="100px",n.style.position="absolute",n.style.top="-9999px",document.body.appendChild(n);const l=n.offsetWidth;n.style.overflow="scroll";const a=document.createElement("div");a.style.width="100%",n.appendChild(a);const s=a.offsetWidth;return(t=n.parentNode)==null||t.removeChild(n),wa=l-s,wa};function Ur(e,t){if(!bt)return;if(!t){e.scrollTop=0;return}const n=[];let l=t.offsetParent;for(;l!==null&&e!==l&&e.contains(l);)n.push(l),l=l.offsetParent;const a=t.offsetTop+n.reduce((u,c)=>u+c.offsetTop,0),s=a+t.offsetHeight,r=e.scrollTop,i=r+e.clientHeight;ai&&(e.scrollTop=s-e.clientHeight)}function $h(e,t,n,l,a){const s=Date.now();let r;const i=()=>{const c=Date.now()-s,d=_h(c>l?l:c,t,n,l);vs(e)?e.scrollTo(window.pageXOffset,d):e.scrollTop=d,c{r&&Yl(r)}}const iu=(e,t)=>vs(t)?e.ownerDocument.documentElement:t,uu=e=>vs(e)?window.scrollY:e.scrollTop,ld="ElAffix",Nh=x({name:ld}),Ih=x({...Nh,props:Sh,emits:Eh,setup(e,{expose:t,emit:n}){const l=e,a=ue("affix"),s=Lt(),r=Lt(),i=Lt(),{height:u}=Tp(),{height:c,width:d,top:f,bottom:m,update:v}=nu(r,{windowScroll:!1}),h=nu(s),p=I(!1),g=I(0),b=I(0),E=y(()=>({height:p.value?`${c.value}px`:"",width:p.value?`${d.value}px`:""})),C=y(()=>{if(!p.value)return{};const $=l.offset?zt(l.offset):0;return{height:`${c.value}px`,width:`${d.value}px`,top:l.position==="top"?$:"",bottom:l.position==="bottom"?$:"",transform:b.value?`translateY(${b.value}px)`:"",zIndex:l.zIndex}}),w=()=>{if(!i.value)return;g.value=i.value instanceof Window?document.documentElement.scrollTop:i.value.scrollTop||0;const{position:$,target:M,offset:R}=l,N=R+c.value;if($==="top")if(M){const O=h.bottom.value-N;p.value=R>f.value&&h.bottom.value>0,b.value=O<0?O:0}else p.value=R>f.value;else if(M){const O=u.value-h.top.value-N;p.value=u.value-Rh.top.value,b.value=O<0?-O:0}else p.value=u.value-R{if(!p.value){v();return}p.value=!1,await Ee(),v(),p.value=!0},S=async()=>{v(),await Ee(),n("scroll",{scrollTop:g.value,fixed:p.value})};return ie(p,$=>n(nt,$)),Xe(()=>{var $;l.target?(s.value=($=document.querySelector(l.target))!=null?$:void 0,s.value||jt(ld,`Target does not exist: ${l.target}`)):s.value=document.documentElement,i.value=jr(r.value,!0),v()}),xt(i,"scroll",S),bn(w),t({update:w,updateRoot:k}),($,M)=>(_(),V("div",{ref_key:"root",ref:r,class:T(o(a).b()),style:_e(o(E))},[F("div",{class:T({[o(a).m("fixed")]:p.value}),style:_e(o(C))},[G($.$slots,"default")],6)],6))}});var Mh=fe(Ih,[["__file","affix.vue"]]);const He=(e,t)=>{if(e.install=n=>{for(const l of[e,...Object.values(t??{})])n.component(l.name,l)},t)for(const[n,l]of Object.entries(t))e[n]=l;return e},od=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),Rh=(e,t)=>(e.install=n=>{n.directive(t,e)},e),At=e=>(e.install=Bt,e),Ph=He(Mh),Oh=de({size:{type:Y([Number,String])},color:{type:String}}),Lh=x({name:"ElIcon",inheritAttrs:!1}),Bh=x({...Lh,props:Oh,setup(e){const t=e,n=ue("icon"),l=y(()=>{const{size:a,color:s}=t;return!a&&!s?{}:{fontSize:vt(a)?void 0:zt(a),"--color":s}});return(a,s)=>(_(),V("i",et({class:o(n).b(),style:o(l)},a.$attrs),[G(a.$slots,"default")],16))}});var Vh=fe(Bh,[["__file","icon.vue"]]);const Se=He(Vh);function cu(){let e;const t=(l,a)=>{n(),e=window.setTimeout(l,a)},n=()=>window.clearTimeout(e);return $p(()=>n()),{registerTimeout:t,cancelTimeout:n}}const ad=de({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),sd=({showAfter:e,hideAfter:t,autoClose:n,open:l,close:a})=>{const{registerTimeout:s}=cu(),{registerTimeout:r,cancelTimeout:i}=cu();return{onOpen:d=>{s(()=>{l(d);const f=o(n);Te(f)&&f>0&&r(()=>{a(d)},f)},o(e))},onClose:d=>{i(),s(()=>{a(d)},o(t))}}};/*! Element Plus Icons Vue v2.3.1 */var Dh=x({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"})]))}}),nl=Dh,Ah=x({name:"ArrowLeft",__name:"arrow-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"})]))}}),dl=Ah,Fh=x({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),Cn=Fh,xh=x({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),hs=xh,zh=x({name:"Back",__name:"back",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"}),F("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"})]))}}),Hh=zh,Kh=x({name:"Calendar",__name:"calendar",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"})]))}}),Wh=Kh,jh=x({name:"CaretRight",__name:"caret-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 192v640l384-320.064z"})]))}}),rd=jh,Uh=x({name:"CaretTop",__name:"caret-top",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 320 192 704h639.936z"})]))}}),Yh=Uh,qh=x({name:"Check",__name:"check",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"})]))}}),va=qh,Gh=x({name:"CircleCheckFilled",__name:"circle-check-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Xh=Gh,Zh=x({name:"CircleCheck",__name:"circle-check",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"})]))}}),Yr=Zh,Jh=x({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),qr=Jh,Qh=x({name:"CircleClose",__name:"circle-close",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"}),F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),ml=Qh,em=x({name:"Clock",__name:"clock",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"}),F("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"})]))}}),id=em,tm=x({name:"Close",__name:"close",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),zn=tm,nm=x({name:"DArrowLeft",__name:"d-arrow-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z"})]))}}),Rl=nm,lm=x({name:"DArrowRight",__name:"d-arrow-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z"})]))}}),Pl=lm,om=x({name:"Delete",__name:"delete",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),am=om,sm=x({name:"Document",__name:"document",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z"})]))}}),rm=sm,im=x({name:"FullScreen",__name:"full-screen",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z"})]))}}),um=im,cm=x({name:"Hide",__name:"hide",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z"}),F("path",{fill:"currentColor",d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z"})]))}}),dm=cm,fm=x({name:"InfoFilled",__name:"info-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Go=fm,vm=x({name:"Loading",__name:"loading",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"})]))}}),Qn=vm,pm=x({name:"Minus",__name:"minus",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"})]))}}),hm=pm,mm=x({name:"MoreFilled",__name:"more-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"})]))}}),du=mm,gm=x({name:"More",__name:"more",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),bm=gm,ym=x({name:"PictureFilled",__name:"picture-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384"})]))}}),Cm=ym,wm=x({name:"Plus",__name:"plus",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),ud=wm,km=x({name:"QuestionFilled",__name:"question-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"})]))}}),Sm=km,Em=x({name:"RefreshLeft",__name:"refresh-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"})]))}}),_m=Em,Tm=x({name:"RefreshRight",__name:"refresh-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z"})]))}}),$m=Tm,Nm=x({name:"ScaleToOriginal",__name:"scale-to-original",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118M512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412M512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512"})]))}}),Im=Nm,Mm=x({name:"Search",__name:"search",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704"})]))}}),Rm=Mm,Pm=x({name:"SortDown",__name:"sort-down",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0"})]))}}),Om=Pm,Lm=x({name:"SortUp",__name:"sort-up",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248"})]))}}),Bm=Lm,Vm=x({name:"StarFilled",__name:"star-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z"})]))}}),ka=Vm,Dm=x({name:"Star",__name:"star",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"})]))}}),Am=Dm,Fm=x({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),cd=Fm,xm=x({name:"View",__name:"view",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),zm=xm,Hm=x({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),ms=Hm,Km=x({name:"ZoomIn",__name:"zoom-in",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"})]))}}),dd=Km,Wm=x({name:"ZoomOut",__name:"zoom-out",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64"})]))}}),jm=Wm;const $t=Y([String,Object,Function]),fd={Close:zn},Gr={Close:zn,SuccessFilled:cd,InfoFilled:Go,WarningFilled:ms,CircleCloseFilled:qr},Ol={primary:Go,success:cd,warning:ms,error:qr,info:Go},gs={validating:Qn,success:Yr,error:ml},Um=["light","dark"],Ym=de({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:ko(Ol),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:Um,default:"light"},...ad}),qm={open:()=>!0,close:e=>vt(e)||e instanceof Event},Gm=x({name:"ElAlert"}),Xm=x({...Gm,props:Ym,emits:qm,setup(e,{emit:t}){const n=e,{Close:l}=Gr,a=Xt(),s=ue("alert"),r=I(!1),i=y(()=>Ol[n.type]),u=y(()=>!!(n.description||a.default)),c=()=>{r.value=!0,t("open")},d=v=>{r.value=!1,t("close",v)},{onOpen:f,onClose:m}=sd({showAfter:wt(n,"showAfter"),hideAfter:wt(n,"hideAfter"),autoClose:wt(n,"autoClose"),open:c,close:d});return bt&&f(),(v,h)=>(_(),oe(an,{name:o(s).b("fade"),persisted:""},{default:U(()=>[We(F("div",{class:T([o(s).b(),o(s).m(v.type),o(s).is("center",v.center),o(s).is(v.effect)]),role:"alert"},[v.showIcon&&(v.$slots.icon||o(i))?(_(),oe(o(Se),{key:0,class:T([o(s).e("icon"),{[o(s).is("big")]:o(u)}])},{default:U(()=>[G(v.$slots,"icon",{},()=>[(_(),oe(Ge(o(i))))])]),_:3},8,["class"])):J("v-if",!0),F("div",{class:T(o(s).e("content"))},[v.title||v.$slots.title?(_(),V("span",{key:0,class:T([o(s).e("title"),{"with-description":o(u)}])},[G(v.$slots,"title",{},()=>[st(pe(v.title),1)])],2)):J("v-if",!0),o(u)?(_(),V("p",{key:1,class:T(o(s).e("description"))},[G(v.$slots,"default",{},()=>[st(pe(v.description),1)])],2)):J("v-if",!0),v.closable?(_(),V(Oe,{key:2},[v.closeText?(_(),V("div",{key:0,class:T([o(s).e("close-btn"),o(s).is("customed")]),onClick:d},pe(v.closeText),3)):(_(),oe(o(Se),{key:1,class:T(o(s).e("close-btn")),onClick:o(m)},{default:U(()=>[H(o(l))]),_:1},8,["class","onClick"]))],64)):J("v-if",!0)],2)],2),[[mt,r.value]])]),_:3},8,["name"]))}});var Zm=fe(Xm,[["__file","alert.vue"]]);const Jm=He(Zm),Xr=()=>bt&&/firefox/i.test(window.navigator.userAgent);let Tn;const Qm={height:"0",visibility:"hidden",overflow:Xr()?"":"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0"},eg=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function tg(e){const t=window.getComputedStyle(e),n=t.getPropertyValue("box-sizing"),l=Number.parseFloat(t.getPropertyValue("padding-bottom"))+Number.parseFloat(t.getPropertyValue("padding-top")),a=Number.parseFloat(t.getPropertyValue("border-bottom-width"))+Number.parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:eg.map(r=>[r,t.getPropertyValue(r)]),paddingSize:l,borderSize:a,boxSizing:n}}function fu(e,t=1,n){var l;Tn||(Tn=document.createElement("textarea"),document.body.appendChild(Tn));const{paddingSize:a,borderSize:s,boxSizing:r,contextStyle:i}=tg(e);i.forEach(([f,m])=>Tn==null?void 0:Tn.style.setProperty(f,m)),Object.entries(Qm).forEach(([f,m])=>Tn==null?void 0:Tn.style.setProperty(f,m,"important")),Tn.value=e.value||e.placeholder||"";let u=Tn.scrollHeight;const c={};r==="border-box"?u=u+s:r==="content-box"&&(u=u-a),Tn.value="";const d=Tn.scrollHeight-a;if(Te(t)){let f=d*t;r==="border-box"&&(f=f+a+s),u=Math.max(f,u),c.minHeight=`${f}px`}if(Te(n)){let f=d*n;r==="border-box"&&(f=f+a+s),u=Math.min(f,u)}return c.height=`${u}px`,(l=Tn.parentNode)==null||l.removeChild(Tn),Tn=void 0,c}const Vt=e=>e,ng=de({ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical","undefined"]},ariaControls:String}),cn=e=>An(ng,e),pa=de({id:{type:String,default:void 0},size:Jt,disabled:Boolean,modelValue:{type:Y([String,Number,Object]),default:""},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:Y([Boolean,Object]),default:!1},autocomplete:{type:String,default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,showPassword:Boolean,showWordLimit:Boolean,suffixIcon:{type:$t},prefixIcon:{type:$t},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:Y([Object,Array,String]),default:()=>Vt({})},autofocus:Boolean,rows:{type:Number,default:2},...cn(["ariaLabel"]),inputmode:{type:Y(String),default:void 0},name:String}),lg={[De]:e=>Ve(e),input:e=>Ve(e),change:e=>Ve(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},og=["class","style"],ag=/^on[A-Z]/,bs=(e={})=>{const{excludeListeners:t=!1,excludeKeys:n}=e,l=y(()=>((n==null?void 0:n.value)||[]).concat(og)),a=lt();return a?y(()=>{var s;return qo(Object.entries((s=a.proxy)==null?void 0:s.$attrs).filter(([r])=>!l.value.includes(r)&&!(t&&ag.test(r))))}):y(()=>({}))},vu={prefix:Math.floor(Math.random()*1e4),current:0},sg=Symbol("elIdInjection"),Zr=()=>lt()?we(sg,vu):vu,sn=e=>{const t=Zr(),n=Kr();return Ha(()=>o(e)||`${n.value}-id-${t.prefix}-${t.current++}`)},Jl=Symbol("formContextKey"),el=Symbol("formItemContextKey"),dn=()=>{const e=we(Jl,void 0),t=we(el,void 0);return{form:e,formItem:t}},Kn=(e,{formItemContext:t,disableIdGeneration:n,disableIdManagement:l})=>{n||(n=I(!1)),l||(l=I(!1));const a=I();let s;const r=y(()=>{var i;return!!(!(e.label||e.ariaLabel)&&t&&t.inputIds&&((i=t.inputIds)==null?void 0:i.length)<=1)});return Xe(()=>{s=ie([wt(e,"id"),n],([i,u])=>{const c=i??(u?void 0:sn().value);c!==a.value&&(t!=null&&t.removeInputId&&(a.value&&t.removeInputId(a.value),!(l!=null&&l.value)&&!u&&c&&t.addInputId(c)),a.value=c)},{immediate:!0})}),cs(()=>{s&&s(),t!=null&&t.removeInputId&&a.value&&t.removeInputId(a.value)}),{isLabeledByFormItem:r,inputId:a}},vd=e=>{const t=lt();return y(()=>{var n,l;return(l=(n=t==null?void 0:t.proxy)==null?void 0:n.$props)==null?void 0:l[e]})},Gt=(e,t={})=>{const n=I(void 0),l=t.prop?n:vd("size"),a=t.global?n:Zc(),s=t.form?{size:void 0}:we(Jl,void 0),r=t.formItem?{size:void 0}:we(el,void 0);return y(()=>l.value||o(e)||(r==null?void 0:r.size)||(s==null?void 0:s.size)||a.value||"")},fn=e=>{const t=vd("disabled"),n=we(Jl,void 0);return y(()=>t.value||o(e)||(n==null?void 0:n.disabled)||!1)},rg='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',ig=e=>getComputedStyle(e).position==="fixed"?!1:e.offsetParent!==null,pu=e=>Array.from(e.querySelectorAll(rg)).filter(t=>Xo(t)&&ig(t)),Xo=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.tabIndex<0||e.hasAttribute("disabled")||e.getAttribute("aria-disabled")==="true")return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return!(e.type==="hidden"||e.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},La=function(e,t,...n){let l;t.includes("mouse")||t.includes("click")?l="MouseEvents":t.includes("key")?l="KeyboardEvent":l="HTMLEvents";const a=document.createEvent(l);return a.initEvent(t,...n),e.dispatchEvent(a),e},pd=e=>!e.getAttribute("aria-owns"),hd=(e,t,n)=>{const{parentNode:l}=e;if(!l)return null;const a=l.querySelectorAll(n),s=Array.prototype.indexOf.call(a,e);return a[s+t]||null},Ba=e=>{e&&(e.focus(),!pd(e)&&e.click())};function Ll(e,{disabled:t,beforeFocus:n,afterFocus:l,beforeBlur:a,afterBlur:s}={}){const r=lt(),{emit:i}=r,u=Lt(),c=I(!1),d=v=>{const h=Qe(n)?n(v):!1;o(t)||c.value||h||(c.value=!0,i("focus",v),l==null||l())},f=v=>{var h;const p=Qe(a)?a(v):!1;o(t)||v.relatedTarget&&((h=u.value)!=null&&h.contains(v.relatedTarget))||p||(c.value=!1,i("blur",v),s==null||s())},m=v=>{var h,p;o(t)||Xo(v.target)||(h=u.value)!=null&&h.contains(document.activeElement)&&u.value!==document.activeElement||(p=e.value)==null||p.focus()};return ie([u,()=>o(t)],([v,h])=>{v&&(h?v.removeAttribute("tabindex"):v.setAttribute("tabindex","-1"))}),xt(u,"focus",d,!0),xt(u,"blur",f,!0),xt(u,"click",m,!0),{isFocused:c,wrapperRef:u,handleFocus:d,handleBlur:f}}const ug=e=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(e);function ha({afterComposition:e,emit:t}){const n=I(!1),l=i=>{t==null||t("compositionstart",i),n.value=!0},a=i=>{var u;t==null||t("compositionupdate",i);const c=(u=i.target)==null?void 0:u.value,d=c[c.length-1]||"";n.value=!ug(d)},s=i=>{t==null||t("compositionend",i),n.value&&(n.value=!1,Ee(()=>e(i)))};return{isComposing:n,handleComposition:i=>{i.type==="compositionend"?s(i):a(i)},handleCompositionStart:l,handleCompositionUpdate:a,handleCompositionEnd:s}}function cg(e){let t;function n(){if(e.value==null)return;const{selectionStart:a,selectionEnd:s,value:r}=e.value;if(a==null||s==null)return;const i=r.slice(0,Math.max(0,a)),u=r.slice(Math.max(0,s));t={selectionStart:a,selectionEnd:s,value:r,beforeTxt:i,afterTxt:u}}function l(){if(e.value==null||t==null)return;const{value:a}=e.value,{beforeTxt:s,afterTxt:r,selectionStart:i}=t;if(s==null||r==null||i==null)return;let u=a.length;if(a.endsWith(r))u=a.length-r.length;else if(a.startsWith(s))u=s.length;else{const c=s[i-1],d=a.indexOf(c,i-1);d!==-1&&(u=d+1)}e.value.setSelectionRange(u,u)}return[n,l]}const dg="ElInput",fg=x({name:dg,inheritAttrs:!1}),vg=x({...fg,props:pa,emits:lg,setup(e,{expose:t,emit:n}){const l=e,a=pl(),s=bs(),r=Xt(),i=y(()=>[l.type==="textarea"?p.b():h.b(),h.m(m.value),h.is("disabled",v.value),h.is("exceed",Q.value),{[h.b("group")]:r.prepend||r.append,[h.m("prefix")]:r.prefix||l.prefixIcon,[h.m("suffix")]:r.suffix||l.suffixIcon||l.clearable||l.showPassword,[h.bm("suffix","password-clear")]:B.value&&A.value,[h.b("hidden")]:l.type==="hidden"},a.class]),u=y(()=>[h.e("wrapper"),h.is("focus",M.value)]),{form:c,formItem:d}=dn(),{inputId:f}=Kn(l,{formItemContext:d}),m=Gt(),v=fn(),h=ue("input"),p=ue("textarea"),g=Lt(),b=Lt(),E=I(!1),C=I(!1),w=I(),k=Lt(l.inputStyle),S=y(()=>g.value||b.value),{wrapperRef:$,isFocused:M,handleFocus:R,handleBlur:N}=Ll(S,{disabled:v,afterBlur(){var ye;l.validateEvent&&((ye=d==null?void 0:d.validate)==null||ye.call(d,"blur").catch(Ue=>void 0))}}),O=y(()=>{var ye;return(ye=c==null?void 0:c.statusIcon)!=null?ye:!1}),P=y(()=>(d==null?void 0:d.validateState)||""),W=y(()=>P.value&&gs[P.value]),K=y(()=>C.value?zm:dm),D=y(()=>[a.style]),L=y(()=>[l.inputStyle,k.value,{resize:l.resize}]),z=y(()=>qt(l.modelValue)?"":String(l.modelValue)),B=y(()=>l.clearable&&!v.value&&!l.readonly&&!!z.value&&(M.value||E.value)),A=y(()=>l.showPassword&&!v.value&&!!z.value),ne=y(()=>l.showWordLimit&&!!l.maxlength&&(l.type==="text"||l.type==="textarea")&&!v.value&&!l.readonly&&!l.showPassword),j=y(()=>z.value.length),Q=y(()=>!!ne.value&&j.value>Number(l.maxlength)),Z=y(()=>!!r.suffix||!!l.suffixIcon||B.value||l.showPassword||ne.value||!!P.value&&O.value),[ee,ae]=cg(g);Ft(b,ye=>{if(se(),!ne.value||l.resize!=="both")return;const Ue=ye[0],{width:It}=Ue.contentRect;w.value={right:`calc(100% - ${It+15+6}px)`}});const re=()=>{const{type:ye,autosize:Ue}=l;if(!(!bt||ye!=="textarea"||!b.value))if(Ue){const It=yt(Ue)?Ue.minRows:void 0,Ot=yt(Ue)?Ue.maxRows:void 0,Rt=fu(b.value,It,Ot);k.value={overflowY:"hidden",...Rt},Ee(()=>{b.value.offsetHeight,k.value=Rt})}else k.value={minHeight:fu(b.value).minHeight}},se=(ye=>{let Ue=!1;return()=>{var It;if(Ue||!l.autosize)return;((It=b.value)==null?void 0:It.offsetParent)===null||(ye(),Ue=!0)}})(re),ge=()=>{const ye=S.value,Ue=l.formatter?l.formatter(z.value):z.value;!ye||ye.value===Ue||(ye.value=Ue)},Be=async ye=>{ee();let{value:Ue}=ye.target;if(l.formatter&&l.parser&&(Ue=l.parser(Ue)),!ce.value){if(Ue===z.value){ge();return}n(De,Ue),n(Zt,Ue),await Ee(),ge(),ae()}},te=ye=>{let{value:Ue}=ye.target;l.formatter&&l.parser&&(Ue=l.parser(Ue)),n(nt,Ue)},{isComposing:ce,handleCompositionStart:Ie,handleCompositionUpdate:Ae,handleCompositionEnd:xe}=ha({emit:n,afterComposition:Be}),Ye=()=>{ee(),C.value=!C.value,setTimeout(ae)},$e=()=>{var ye;return(ye=S.value)==null?void 0:ye.focus()},Me=()=>{var ye;return(ye=S.value)==null?void 0:ye.blur()},Pe=ye=>{E.value=!1,n("mouseleave",ye)},Ze=ye=>{E.value=!0,n("mouseenter",ye)},ot=ye=>{n("keydown",ye)},at=()=>{var ye;(ye=S.value)==null||ye.select()},ct=()=>{n(De,""),n(nt,""),n("clear"),n(Zt,"")};return ie(()=>l.modelValue,()=>{var ye;Ee(()=>re()),l.validateEvent&&((ye=d==null?void 0:d.validate)==null||ye.call(d,"change").catch(Ue=>void 0))}),ie(z,()=>ge()),ie(()=>l.type,async()=>{await Ee(),ge(),re()}),Xe(()=>{!l.formatter&&l.parser,ge(),Ee(re)}),t({input:g,textarea:b,ref:S,textareaStyle:L,autosize:wt(l,"autosize"),isComposing:ce,focus:$e,blur:Me,select:at,clear:ct,resizeTextarea:re}),(ye,Ue)=>(_(),V("div",{class:T([o(i),{[o(h).bm("group","append")]:ye.$slots.append,[o(h).bm("group","prepend")]:ye.$slots.prepend}]),style:_e(o(D)),onMouseenter:Ze,onMouseleave:Pe},[J(" input "),ye.type!=="textarea"?(_(),V(Oe,{key:0},[J(" prepend slot "),ye.$slots.prepend?(_(),V("div",{key:0,class:T(o(h).be("group","prepend"))},[G(ye.$slots,"prepend")],2)):J("v-if",!0),F("div",{ref_key:"wrapperRef",ref:$,class:T(o(u))},[J(" prefix slot "),ye.$slots.prefix||ye.prefixIcon?(_(),V("span",{key:0,class:T(o(h).e("prefix"))},[F("span",{class:T(o(h).e("prefix-inner"))},[G(ye.$slots,"prefix"),ye.prefixIcon?(_(),oe(o(Se),{key:0,class:T(o(h).e("icon"))},{default:U(()=>[(_(),oe(Ge(ye.prefixIcon)))]),_:1},8,["class"])):J("v-if",!0)],2)],2)):J("v-if",!0),F("input",et({id:o(f),ref_key:"input",ref:g,class:o(h).e("inner")},o(s),{name:ye.name,minlength:ye.minlength,maxlength:ye.maxlength,type:ye.showPassword?C.value?"text":"password":ye.type,disabled:o(v),readonly:ye.readonly,autocomplete:ye.autocomplete,tabindex:ye.tabindex,"aria-label":ye.ariaLabel,placeholder:ye.placeholder,style:ye.inputStyle,form:ye.form,autofocus:ye.autofocus,role:ye.containerRole,inputmode:ye.inputmode,onCompositionstart:o(Ie),onCompositionupdate:o(Ae),onCompositionend:o(xe),onInput:Be,onChange:te,onKeydown:ot}),null,16,["id","name","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus","role","inputmode","onCompositionstart","onCompositionupdate","onCompositionend"]),J(" suffix slot "),o(Z)?(_(),V("span",{key:1,class:T(o(h).e("suffix"))},[F("span",{class:T(o(h).e("suffix-inner"))},[!o(B)||!o(A)||!o(ne)?(_(),V(Oe,{key:0},[G(ye.$slots,"suffix"),ye.suffixIcon?(_(),oe(o(Se),{key:0,class:T(o(h).e("icon"))},{default:U(()=>[(_(),oe(Ge(ye.suffixIcon)))]),_:1},8,["class"])):J("v-if",!0)],64)):J("v-if",!0),o(B)?(_(),oe(o(Se),{key:1,class:T([o(h).e("icon"),o(h).e("clear")]),onMousedown:Le(o(Bt),["prevent"]),onClick:ct},{default:U(()=>[H(o(ml))]),_:1},8,["class","onMousedown"])):J("v-if",!0),o(A)?(_(),oe(o(Se),{key:2,class:T([o(h).e("icon"),o(h).e("password")]),onClick:Ye},{default:U(()=>[(_(),oe(Ge(o(K))))]),_:1},8,["class"])):J("v-if",!0),o(ne)?(_(),V("span",{key:3,class:T(o(h).e("count"))},[F("span",{class:T(o(h).e("count-inner"))},pe(o(j))+" / "+pe(ye.maxlength),3)],2)):J("v-if",!0),o(P)&&o(W)&&o(O)?(_(),oe(o(Se),{key:4,class:T([o(h).e("icon"),o(h).e("validateIcon"),o(h).is("loading",o(P)==="validating")])},{default:U(()=>[(_(),oe(Ge(o(W))))]),_:1},8,["class"])):J("v-if",!0)],2)],2)):J("v-if",!0)],2),J(" append slot "),ye.$slots.append?(_(),V("div",{key:1,class:T(o(h).be("group","append"))},[G(ye.$slots,"append")],2)):J("v-if",!0)],64)):(_(),V(Oe,{key:1},[J(" textarea "),F("textarea",et({id:o(f),ref_key:"textarea",ref:b,class:[o(p).e("inner"),o(h).is("focus",o(M))]},o(s),{minlength:ye.minlength,maxlength:ye.maxlength,tabindex:ye.tabindex,disabled:o(v),readonly:ye.readonly,autocomplete:ye.autocomplete,style:o(L),"aria-label":ye.ariaLabel,placeholder:ye.placeholder,form:ye.form,autofocus:ye.autofocus,rows:ye.rows,role:ye.containerRole,onCompositionstart:o(Ie),onCompositionupdate:o(Ae),onCompositionend:o(xe),onInput:Be,onFocus:o(R),onBlur:o(N),onChange:te,onKeydown:ot}),null,16,["id","minlength","maxlength","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus","rows","role","onCompositionstart","onCompositionupdate","onCompositionend","onFocus","onBlur"]),o(ne)?(_(),V("span",{key:0,style:_e(w.value),class:T(o(h).e("count"))},pe(o(j))+" / "+pe(ye.maxlength),7)):J("v-if",!0)],64))],38))}});var pg=fe(vg,[["__file","input.vue"]]);const hn=He(pg),no=4,md={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},hg=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),Jr=Symbol("scrollbarContextKey"),mg=de({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),gg="Thumb",bg=x({__name:"thumb",props:mg,setup(e){const t=e,n=we(Jr),l=ue("scrollbar");n||jt(gg,"can not inject scrollbar context");const a=I(),s=I(),r=I({}),i=I(!1);let u=!1,c=!1,d=0,f=0,m=bt?document.onselectstart:null;const v=y(()=>md[t.vertical?"vertical":"horizontal"]),h=y(()=>hg({size:t.size,move:t.move,bar:v.value})),p=y(()=>a.value[v.value.offset]**2/n.wrapElement[v.value.scrollSize]/t.ratio/s.value[v.value.offset]),g=M=>{var R;if(M.stopPropagation(),M.ctrlKey||[1,2].includes(M.button))return;(R=window.getSelection())==null||R.removeAllRanges(),E(M);const N=M.currentTarget;N&&(r.value[v.value.axis]=N[v.value.offset]-(M[v.value.client]-N.getBoundingClientRect()[v.value.direction]))},b=M=>{if(!s.value||!a.value||!n.wrapElement)return;const R=Math.abs(M.target.getBoundingClientRect()[v.value.direction]-M[v.value.client]),N=s.value[v.value.offset]/2,O=(R-N)*100*p.value/a.value[v.value.offset];n.wrapElement[v.value.scroll]=O*n.wrapElement[v.value.scrollSize]/100},E=M=>{M.stopImmediatePropagation(),u=!0,d=n.wrapElement.scrollHeight,f=n.wrapElement.scrollWidth,document.addEventListener("mousemove",C),document.addEventListener("mouseup",w),m=document.onselectstart,document.onselectstart=()=>!1},C=M=>{if(!a.value||!s.value||u===!1)return;const R=r.value[v.value.axis];if(!R)return;const N=(a.value.getBoundingClientRect()[v.value.direction]-M[v.value.client])*-1,O=s.value[v.value.offset]-R,P=(N-O)*100*p.value/a.value[v.value.offset];v.value.scroll==="scrollLeft"?n.wrapElement[v.value.scroll]=P*f/100:n.wrapElement[v.value.scroll]=P*d/100},w=()=>{u=!1,r.value[v.value.axis]=0,document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",w),$(),c&&(i.value=!1)},k=()=>{c=!1,i.value=!!t.size},S=()=>{c=!0,i.value=u};Nt(()=>{$(),document.removeEventListener("mouseup",w)});const $=()=>{document.onselectstart!==m&&(document.onselectstart=m)};return xt(wt(n,"scrollbarElement"),"mousemove",k),xt(wt(n,"scrollbarElement"),"mouseleave",S),(M,R)=>(_(),oe(an,{name:o(l).b("fade"),persisted:""},{default:U(()=>[We(F("div",{ref_key:"instance",ref:a,class:T([o(l).e("bar"),o(l).is(o(v).key)]),onMousedown:b,onClick:Le(()=>{},["stop"])},[F("div",{ref_key:"thumb",ref:s,class:T(o(l).e("thumb")),style:_e(o(h)),onMousedown:g},null,38)],42,["onClick"]),[[mt,M.always||i.value]])]),_:1},8,["name"]))}});var hu=fe(bg,[["__file","thumb.vue"]]);const yg=de({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),Cg=x({__name:"bar",props:yg,setup(e,{expose:t}){const n=e,l=we(Jr),a=I(0),s=I(0),r=I(""),i=I(""),u=I(1),c=I(1);return t({handleScroll:m=>{if(m){const v=m.offsetHeight-no,h=m.offsetWidth-no;s.value=m.scrollTop*100/v*u.value,a.value=m.scrollLeft*100/h*c.value}},update:()=>{const m=l==null?void 0:l.wrapElement;if(!m)return;const v=m.offsetHeight-no,h=m.offsetWidth-no,p=v**2/m.scrollHeight,g=h**2/m.scrollWidth,b=Math.max(p,n.minSize),E=Math.max(g,n.minSize);u.value=p/(v-p)/(b/(v-b)),c.value=g/(h-g)/(E/(h-E)),i.value=b+no(_(),V(Oe,null,[H(hu,{move:a.value,ratio:c.value,size:r.value,always:m.always},null,8,["move","ratio","size","always"]),H(hu,{move:s.value,ratio:u.value,size:i.value,vertical:"",always:m.always},null,8,["move","ratio","size","always"])],64))}});var wg=fe(Cg,[["__file","bar.vue"]]);const kg=de({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:Boolean,wrapStyle:{type:Y([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},tabindex:{type:[String,Number],default:void 0},id:String,role:String,...cn(["ariaLabel","ariaOrientation"])}),gd={"end-reached":e=>["left","right","top","bottom"].includes(e),scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(Te)},Sg="ElScrollbar",Eg=x({name:Sg}),_g=x({...Eg,props:kg,emits:gd,setup(e,{expose:t,emit:n}){const l=e,a=ue("scrollbar");let s,r,i=0,u=0,c="";const d=I(),f=I(),m=I(),v=I(),h=y(()=>{const S={};return l.height&&(S.height=zt(l.height)),l.maxHeight&&(S.maxHeight=zt(l.maxHeight)),[l.wrapStyle,S]}),p=y(()=>[l.wrapClass,a.e("wrap"),{[a.em("wrap","hidden-default")]:!l.native}]),g=y(()=>[a.e("view"),l.viewClass]),b=()=>{var S;if(f.value){(S=v.value)==null||S.handleScroll(f.value);const $=i,M=u;i=f.value.scrollTop,u=f.value.scrollLeft;const R={bottom:i+f.value.clientHeight>=f.value.scrollHeight,top:i<=0&&$!==0,right:u+f.value.clientWidth>=f.value.scrollWidth&&M!==u,left:u<=0&&M!==0};$!==i&&(c=i>$?"bottom":"top"),M!==u&&(c=u>M?"right":"left"),n("scroll",{scrollTop:i,scrollLeft:u}),R[c]&&n("end-reached",c)}};function E(S,$){yt(S)?f.value.scrollTo(S):Te(S)&&Te($)&&f.value.scrollTo(S,$)}const C=S=>{Te(S)&&(f.value.scrollTop=S)},w=S=>{Te(S)&&(f.value.scrollLeft=S)},k=()=>{var S;(S=v.value)==null||S.update()};return ie(()=>l.noresize,S=>{S?(s==null||s(),r==null||r()):({stop:s}=Ft(m,k),r=xt("resize",k))},{immediate:!0}),ie(()=>[l.maxHeight,l.height],()=>{l.native||Ee(()=>{var S;k(),f.value&&((S=v.value)==null||S.handleScroll(f.value))})}),rt(Jr,kt({scrollbarElement:d,wrapElement:f})),Fr(()=>{f.value&&(f.value.scrollTop=i,f.value.scrollLeft=u)}),Xe(()=>{l.native||Ee(()=>{k()})}),hl(()=>k()),t({wrapRef:f,update:k,scrollTo:E,setScrollTop:C,setScrollLeft:w,handleScroll:b}),(S,$)=>(_(),V("div",{ref_key:"scrollbarRef",ref:d,class:T(o(a).b())},[F("div",{ref_key:"wrapRef",ref:f,class:T(o(p)),style:_e(o(h)),tabindex:S.tabindex,onScroll:b},[(_(),oe(Ge(S.tag),{id:S.id,ref_key:"resizeRef",ref:m,class:T(o(g)),style:_e(S.viewStyle),role:S.role,"aria-label":S.ariaLabel,"aria-orientation":S.ariaOrientation},{default:U(()=>[G(S.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,["tabindex"]),S.native?J("v-if",!0):(_(),oe(wg,{key:0,ref_key:"barRef",ref:v,always:S.always,"min-size":S.minSize},null,8,["always","min-size"]))],2))}});var Tg=fe(_g,[["__file","scrollbar.vue"]]);const jn=He(Tg),Qr=Symbol("popper"),bd=Symbol("popperContent"),yd=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],Cd=de({role:{type:String,values:yd,default:"tooltip"}}),$g=x({name:"ElPopper",inheritAttrs:!1}),Ng=x({...$g,props:Cd,setup(e,{expose:t}){const n=e,l=I(),a=I(),s=I(),r=I(),i=y(()=>n.role),u={triggerRef:l,popperInstanceRef:a,contentRef:s,referenceRef:r,role:i};return t(u),rt(Qr,u),(c,d)=>G(c.$slots,"default")}});var Ig=fe(Ng,[["__file","popper.vue"]]);const Mg=x({name:"ElPopperArrow",inheritAttrs:!1}),Rg=x({...Mg,setup(e,{expose:t}){const n=ue("popper"),{arrowRef:l,arrowStyle:a}=we(bd,void 0);return Nt(()=>{l.value=void 0}),t({arrowRef:l}),(s,r)=>(_(),V("span",{ref_key:"arrowRef",ref:l,class:T(o(n).e("arrow")),style:_e(o(a)),"data-popper-arrow":""},null,6))}});var Pg=fe(Rg,[["__file","arrow.vue"]]);const wd=de({virtualRef:{type:Y(Object)},virtualTriggering:Boolean,onMouseenter:{type:Y(Function)},onMouseleave:{type:Y(Function)},onClick:{type:Y(Function)},onKeydown:{type:Y(Function)},onFocus:{type:Y(Function)},onBlur:{type:Y(Function)},onContextmenu:{type:Y(Function)},id:String,open:Boolean}),kd=Symbol("elForwardRef"),Og=e=>{rt(kd,{setForwardRef:n=>{e.value=n}})},Lg=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),Bg="ElOnlyChild",Sd=x({name:Bg,setup(e,{slots:t,attrs:n}){var l;const a=we(kd),s=Lg((l=a==null?void 0:a.setForwardRef)!=null?l:Bt);return()=>{var r;const i=(r=t.default)==null?void 0:r.call(t,n);if(!i||i.length>1)return null;const u=Ed(i);return u?We(Np(u,n),[[s]]):null}}});function Ed(e){if(!e)return null;const t=e;for(const n of t){if(yt(n))switch(n.type){case jl:continue;case Nc:case"svg":return mu(n);case Oe:return Ed(n.children);default:return n}return mu(n)}return null}function mu(e){const t=ue("only-child");return H("span",{class:t.e("content")},[e])}const Vg=x({name:"ElPopperTrigger",inheritAttrs:!1}),Dg=x({...Vg,props:wd,setup(e,{expose:t}){const n=e,{role:l,triggerRef:a}=we(Qr,void 0);Og(a);const s=y(()=>i.value?n.id:void 0),r=y(()=>{if(l&&l.value==="tooltip")return n.open&&n.id?n.id:void 0}),i=y(()=>{if(l&&l.value!=="tooltip")return l.value}),u=y(()=>i.value?`${n.open}`:void 0);let c;const d=["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"];return Xe(()=>{ie(()=>n.virtualRef,f=>{f&&(a.value=ua(f))},{immediate:!0}),ie(a,(f,m)=>{c==null||c(),c=void 0,_n(f)&&(d.forEach(v=>{var h;const p=n[v];p&&(f.addEventListener(v.slice(2).toLowerCase(),p),(h=m==null?void 0:m.removeEventListener)==null||h.call(m,v.slice(2).toLowerCase(),p))}),Xo(f)&&(c=ie([s,r,i,u],v=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((h,p)=>{qt(v[p])?f.removeAttribute(h):f.setAttribute(h,v[p])})},{immediate:!0}))),_n(m)&&Xo(m)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(v=>m.removeAttribute(v))},{immediate:!0})}),Nt(()=>{if(c==null||c(),c=void 0,a.value&&_n(a.value)){const f=a.value;d.forEach(m=>{const v=n[m];v&&f.removeEventListener(m.slice(2).toLowerCase(),v)}),a.value=void 0}}),t({triggerRef:a}),(f,m)=>f.virtualTriggering?J("v-if",!0):(_(),oe(o(Sd),et({key:0},f.$attrs,{"aria-controls":o(s),"aria-describedby":o(r),"aria-expanded":o(u),"aria-haspopup":o(i)}),{default:U(()=>[G(f.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var Ag=fe(Dg,[["__file","trigger.vue"]]);const As="focus-trap.focus-after-trapped",Fs="focus-trap.focus-after-released",Fg="focus-trap.focusout-prevented",gu={cancelable:!0,bubbles:!1},xg={cancelable:!0,bubbles:!1},bu="focusAfterTrapped",yu="focusAfterReleased",ei=Symbol("elFocusTrap"),ti=I(),ys=I(0),ni=I(0);let Sa=0;const _d=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:l=>{const a=l.tagName==="INPUT"&&l.type==="hidden";return l.disabled||l.hidden||a?NodeFilter.FILTER_SKIP:l.tabIndex>=0||l===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},Cu=(e,t)=>{for(const n of e)if(!zg(n,t))return n},zg=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},Hg=e=>{const t=_d(e),n=Cu(t,e),l=Cu(t.reverse(),e);return[n,l]},Kg=e=>e instanceof HTMLInputElement&&"select"in e,al=(e,t)=>{if(e&&e.focus){const n=document.activeElement;let l=!1;_n(e)&&!Xo(e)&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","-1"),l=!0),e.focus({preventScroll:!0}),ni.value=window.performance.now(),e!==n&&Kg(e)&&t&&e.select(),_n(e)&&l&&e.removeAttribute("tabindex")}};function wu(e,t){const n=[...e],l=e.indexOf(t);return l!==-1&&n.splice(l,1),n}const Wg=()=>{let e=[];return{push:l=>{const a=e[0];a&&l!==a&&a.pause(),e=wu(e,l),e.unshift(l)},remove:l=>{var a,s;e=wu(e,l),(s=(a=e[0])==null?void 0:a.resume)==null||s.call(a)}}},jg=(e,t=!1)=>{const n=document.activeElement;for(const l of e)if(al(l,t),document.activeElement!==n)return},ku=Wg(),Ug=()=>ys.value>ni.value,Ea=()=>{ti.value="pointer",ys.value=window.performance.now()},Su=()=>{ti.value="keyboard",ys.value=window.performance.now()},Yg=()=>(Xe(()=>{Sa===0&&(document.addEventListener("mousedown",Ea),document.addEventListener("touchstart",Ea),document.addEventListener("keydown",Su)),Sa++}),Nt(()=>{Sa--,Sa<=0&&(document.removeEventListener("mousedown",Ea),document.removeEventListener("touchstart",Ea),document.removeEventListener("keydown",Su))}),{focusReason:ti,lastUserFocusTimestamp:ys,lastAutomatedFocusTimestamp:ni}),_a=e=>new CustomEvent(Fg,{...xg,detail:e}),Ce={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"};let io=[];const Eu=e=>{e.code===Ce.esc&&io.forEach(t=>t(e))},qg=e=>{Xe(()=>{io.length===0&&document.addEventListener("keydown",Eu),bt&&io.push(e)}),Nt(()=>{io=io.filter(t=>t!==e),io.length===0&&bt&&document.removeEventListener("keydown",Eu)})},Gg=x({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[bu,yu,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:t}){const n=I();let l,a;const{focusReason:s}=Yg();qg(h=>{e.trapped&&!r.paused&&t("release-requested",h)});const r={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},i=h=>{if(!e.loop&&!e.trapped||r.paused)return;const{code:p,altKey:g,ctrlKey:b,metaKey:E,currentTarget:C,shiftKey:w}=h,{loop:k}=e,S=p===Ce.tab&&!g&&!b&&!E,$=document.activeElement;if(S&&$){const M=C,[R,N]=Hg(M);if(R&&N){if(!w&&$===N){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||(h.preventDefault(),k&&al(R,!0))}else if(w&&[R,M].includes($)){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||(h.preventDefault(),k&&al(N,!0))}}else if($===M){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||h.preventDefault()}}};rt(ei,{focusTrapRef:n,onKeydown:i}),ie(()=>e.focusTrapEl,h=>{h&&(n.value=h)},{immediate:!0}),ie([n],([h],[p])=>{h&&(h.addEventListener("keydown",i),h.addEventListener("focusin",d),h.addEventListener("focusout",f)),p&&(p.removeEventListener("keydown",i),p.removeEventListener("focusin",d),p.removeEventListener("focusout",f))});const u=h=>{t(bu,h)},c=h=>t(yu,h),d=h=>{const p=o(n);if(!p)return;const g=h.target,b=h.relatedTarget,E=g&&p.contains(g);e.trapped||b&&p.contains(b)||(l=b),E&&t("focusin",h),!r.paused&&e.trapped&&(E?a=g:al(a,!0))},f=h=>{const p=o(n);if(!(r.paused||!p))if(e.trapped){const g=h.relatedTarget;!qt(g)&&!p.contains(g)&&setTimeout(()=>{if(!r.paused&&e.trapped){const b=_a({focusReason:s.value});t("focusout-prevented",b),b.defaultPrevented||al(a,!0)}},0)}else{const g=h.target;g&&p.contains(g)||t("focusout",h)}};async function m(){await Ee();const h=o(n);if(h){ku.push(r);const p=h.contains(document.activeElement)?l:document.activeElement;if(l=p,!h.contains(p)){const b=new Event(As,gu);h.addEventListener(As,u),h.dispatchEvent(b),b.defaultPrevented||Ee(()=>{let E=e.focusStartEl;Ve(E)||(al(E),document.activeElement!==E&&(E="first")),E==="first"&&jg(_d(h),!0),(document.activeElement===p||E==="container")&&al(h)})}}}function v(){const h=o(n);if(h){h.removeEventListener(As,u);const p=new CustomEvent(Fs,{...gu,detail:{focusReason:s.value}});h.addEventListener(Fs,c),h.dispatchEvent(p),!p.defaultPrevented&&(s.value=="keyboard"||!Ug()||h.contains(document.activeElement))&&al(l??document.body),h.removeEventListener(Fs,c),ku.remove(r)}}return Xe(()=>{e.trapped&&m(),ie(()=>e.trapped,h=>{h?m():v()})}),Nt(()=>{e.trapped&&v(),n.value&&(n.value.removeEventListener("keydown",i),n.value.removeEventListener("focusin",d),n.value.removeEventListener("focusout",f),n.value=void 0)}),{onKeydown:i}}});function Xg(e,t,n,l,a,s){return G(e.$slots,"default",{handleKeydown:e.onKeydown})}var Ro=fe(Gg,[["render",Xg],["__file","focus-trap.vue"]]);const Td=de({arrowOffset:{type:Number,default:5}}),Zg=["fixed","absolute"],Jg=de({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:Y(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:Xl,default:"bottom"},popperOptions:{type:Y(Object),default:()=>({})},strategy:{type:String,values:Zg,default:"absolute"}}),$d=de({...Jg,...Td,id:String,style:{type:Y([String,Array,Object])},className:{type:Y([String,Array,Object])},effect:{type:Y(String),default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:Boolean,trapping:Boolean,popperClass:{type:Y([String,Array,Object])},popperStyle:{type:Y([String,Array,Object])},referenceEl:{type:Y(Object)},triggerTargetEl:{type:Y(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...cn(["ariaLabel"])}),Qg={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},eb=(e,t)=>{const n=I(!1),l=I();return{focusStartRef:l,trapped:n,onFocusAfterReleased:c=>{var d;((d=c.detail)==null?void 0:d.focusReason)!=="pointer"&&(l.value="first",t("blur"))},onFocusAfterTrapped:()=>{t("focus")},onFocusInTrap:c=>{e.visible&&!n.value&&(c.target&&(l.value=c.target),n.value=!0)},onFocusoutPrevented:c=>{e.trapping||(c.detail.focusReason==="pointer"&&c.preventDefault(),n.value=!1)},onReleaseRequested:()=>{n.value=!1,t("close")}}},tb=(e,t=[])=>{const{placement:n,strategy:l,popperOptions:a}=e,s={placement:n,strategy:l,...a,modifiers:[...lb(e),...t]};return ob(s,a==null?void 0:a.modifiers),s},nb=e=>{if(bt)return ua(e)};function lb(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:l}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:l}},{name:"computeStyles",options:{gpuAcceleration:n}}]}function ob(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const ab=(e,t,n={})=>{const l={name:"updateState",enabled:!0,phase:"write",fn:({state:u})=>{const c=sb(u);Object.assign(r.value,c)},requires:["computeStyles"]},a=y(()=>{const{onFirstUpdate:u,placement:c,strategy:d,modifiers:f}=o(n);return{onFirstUpdate:u,placement:c||"bottom",strategy:d||"absolute",modifiers:[...f||[],l,{name:"applyStyles",enabled:!1}]}}),s=Lt(),r=I({styles:{popper:{position:o(a).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),i=()=>{s.value&&(s.value.destroy(),s.value=void 0)};return ie(a,u=>{const c=o(s);c&&c.setOptions(u)},{deep:!0}),ie([e,t],([u,c])=>{i(),!(!u||!c)&&(s.value=Up(u,c,o(a)))}),Nt(()=>{i()}),{state:y(()=>{var u;return{...((u=o(s))==null?void 0:u.state)||{}}}),styles:y(()=>o(r).styles),attributes:y(()=>o(r).attributes),update:()=>{var u;return(u=o(s))==null?void 0:u.update()},forceUpdate:()=>{var u;return(u=o(s))==null?void 0:u.forceUpdate()},instanceRef:y(()=>o(s))}};function sb(e){const t=Object.keys(e.elements),n=qo(t.map(a=>[a,e.styles[a]||{}])),l=qo(t.map(a=>[a,e.attributes[a]]));return{styles:n,attributes:l}}const rb=0,ib=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:l,role:a}=we(Qr,void 0),s=I(),r=y(()=>e.arrowOffset),i=y(()=>({name:"eventListeners",enabled:!!e.visible})),u=y(()=>{var b;const E=o(s),C=(b=o(r))!=null?b:rb;return{name:"arrow",enabled:!Yp(E),options:{element:E,padding:C}}}),c=y(()=>({onFirstUpdate:()=>{h()},...tb(e,[o(u),o(i)])})),d=y(()=>nb(e.referenceEl)||o(l)),{attributes:f,state:m,styles:v,update:h,forceUpdate:p,instanceRef:g}=ab(d,n,c);return ie(g,b=>t.value=b,{flush:"sync"}),Xe(()=>{ie(()=>{var b;return(b=o(d))==null?void 0:b.getBoundingClientRect()},()=>{h()})}),{attributes:f,arrowRef:s,contentRef:n,instanceRef:g,state:m,styles:v,role:a,forceUpdate:p,update:h}},ub=(e,{attributes:t,styles:n,role:l})=>{const{nextZIndex:a}=Mo(),s=ue("popper"),r=y(()=>o(t).popper),i=I(Te(e.zIndex)?e.zIndex:a()),u=y(()=>[s.b(),s.is("pure",e.pure),s.is(e.effect),e.popperClass]),c=y(()=>[{zIndex:o(i)},o(n).popper,e.popperStyle||{}]),d=y(()=>l.value==="dialog"?"false":void 0),f=y(()=>o(n).arrow||{});return{ariaModal:d,arrowStyle:f,contentAttrs:r,contentClass:u,contentStyle:c,contentZIndex:i,updateZIndex:()=>{i.value=Te(e.zIndex)?e.zIndex:a()}}},cb=x({name:"ElPopperContent"}),db=x({...cb,props:$d,emits:Qg,setup(e,{expose:t,emit:n}){const l=e,{focusStartRef:a,trapped:s,onFocusAfterReleased:r,onFocusAfterTrapped:i,onFocusInTrap:u,onFocusoutPrevented:c,onReleaseRequested:d}=eb(l,n),{attributes:f,arrowRef:m,contentRef:v,styles:h,instanceRef:p,role:g,update:b}=ib(l),{ariaModal:E,arrowStyle:C,contentAttrs:w,contentClass:k,contentStyle:S,updateZIndex:$}=ub(l,{styles:h,attributes:f,role:g}),M=we(el,void 0);rt(bd,{arrowStyle:C,arrowRef:m}),M&&rt(el,{...M,addInputId:Bt,removeInputId:Bt});let R;const N=(P=!0)=>{b(),P&&$()},O=()=>{N(!1),l.visible&&l.focusOnShow?s.value=!0:l.visible===!1&&(s.value=!1)};return Xe(()=>{ie(()=>l.triggerTargetEl,(P,W)=>{R==null||R(),R=void 0;const K=o(P||v.value),D=o(W||v.value);_n(K)&&(R=ie([g,()=>l.ariaLabel,E,()=>l.id],L=>{["role","aria-label","aria-modal","id"].forEach((z,B)=>{qt(L[B])?K.removeAttribute(z):K.setAttribute(z,L[B])})},{immediate:!0})),D!==K&&_n(D)&&["role","aria-label","aria-modal","id"].forEach(L=>{D.removeAttribute(L)})},{immediate:!0}),ie(()=>l.visible,O,{immediate:!0})}),Nt(()=>{R==null||R(),R=void 0}),t({popperContentRef:v,popperInstanceRef:p,updatePopper:N,contentStyle:S}),(P,W)=>(_(),V("div",et({ref_key:"contentRef",ref:v},o(w),{style:o(S),class:o(k),tabindex:"-1",onMouseenter:K=>P.$emit("mouseenter",K),onMouseleave:K=>P.$emit("mouseleave",K)}),[H(o(Ro),{trapped:o(s),"trap-on-focus-in":!0,"focus-trap-el":o(v),"focus-start-el":o(a),onFocusAfterTrapped:o(i),onFocusAfterReleased:o(r),onFocusin:o(u),onFocusoutPrevented:o(c),onReleaseRequested:o(d)},{default:U(()=>[G(P.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16,["onMouseenter","onMouseleave"]))}});var fb=fe(db,[["__file","content.vue"]]);const Nd=He(Ig),Cs=Symbol("elTooltip"),ws=de({to:{type:Y([String,Object]),required:!0},disabled:Boolean}),Wt=de({...ad,...$d,appendTo:{type:ws.to.type},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:Y(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...cn(["ariaLabel"])}),mo=de({...wd,disabled:Boolean,trigger:{type:Y([String,Array]),default:"hover"},triggerKeys:{type:Y(Array),default:()=>[Ce.enter,Ce.numpadEnter,Ce.space]}}),vb=Un({type:Y(Boolean),default:null}),pb=Un({type:Y(Function)}),hb=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,l=[t],a={[e]:vb,[n]:pb};return{useModelToggle:({indicator:r,toggleReason:i,shouldHideWhenRouteChanges:u,shouldProceed:c,onShow:d,onHide:f})=>{const m=lt(),{emit:v}=m,h=m.props,p=y(()=>Qe(h[n])),g=y(()=>h[e]===null),b=$=>{r.value!==!0&&(r.value=!0,i&&(i.value=$),Qe(d)&&d($))},E=$=>{r.value!==!1&&(r.value=!1,i&&(i.value=$),Qe(f)&&f($))},C=$=>{if(h.disabled===!0||Qe(c)&&!c())return;const M=p.value&&bt;M&&v(t,!0),(g.value||!M)&&b($)},w=$=>{if(h.disabled===!0||!bt)return;const M=p.value&&bt;M&&v(t,!1),(g.value||!M)&&E($)},k=$=>{_t($)&&(h.disabled&&$?p.value&&v(t,!1):r.value!==$&&($?b():E()))},S=()=>{r.value?w():C()};return ie(()=>h[e],k),u&&m.appContext.config.globalProperties.$route!==void 0&&ie(()=>({...m.proxy.$route}),()=>{u.value&&r.value&&w()}),Xe(()=>{k(h[e])}),{hide:w,show:C,toggle:S,hasUpdateHandler:p}},useModelToggleProps:a,useModelToggleEmits:l}},{useModelToggleProps:mb,useModelToggleEmits:gb,useModelToggle:bb}=hb("visible"),yb=de({...Cd,...mb,...Wt,...mo,...Td,showArrow:{type:Boolean,default:!0}}),Cb=[...gb,"before-show","before-hide","show","hide","open","close"],wb=(e,t)=>ke(e)?e.includes(t):e===t,lo=(e,t,n)=>l=>{wb(o(e),t)&&n(l)},Ht=(e,t,{checkForDefaultPrevented:n=!0}={})=>a=>{const s=e==null?void 0:e(a);if(n===!1||!s)return t==null?void 0:t(a)},_u=e=>t=>t.pointerType==="mouse"?e(t):void 0,kb=x({name:"ElTooltipTrigger"}),Sb=x({...kb,props:mo,setup(e,{expose:t}){const n=e,l=ue("tooltip"),{controlled:a,id:s,open:r,onOpen:i,onClose:u,onToggle:c}=we(Cs,void 0),d=I(null),f=()=>{if(o(a)||n.disabled)return!0},m=wt(n,"trigger"),v=Ht(f,lo(m,"hover",i)),h=Ht(f,lo(m,"hover",u)),p=Ht(f,lo(m,"click",w=>{w.button===0&&c(w)})),g=Ht(f,lo(m,"focus",i)),b=Ht(f,lo(m,"focus",u)),E=Ht(f,lo(m,"contextmenu",w=>{w.preventDefault(),c(w)})),C=Ht(f,w=>{const{code:k}=w;n.triggerKeys.includes(k)&&(w.preventDefault(),c(w))});return t({triggerRef:d}),(w,k)=>(_(),oe(o(Ag),{id:o(s),"virtual-ref":w.virtualRef,open:o(r),"virtual-triggering":w.virtualTriggering,class:T(o(l).e("trigger")),onBlur:o(b),onClick:o(p),onContextmenu:o(E),onFocus:o(g),onMouseenter:o(v),onMouseleave:o(h),onKeydown:o(C)},{default:U(()=>[G(w.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var Eb=fe(Sb,[["__file","trigger.vue"]]);const _b=x({__name:"teleport",props:ws,setup(e){return(t,n)=>t.disabled?G(t.$slots,"default",{key:0}):(_(),oe(Ip,{key:1,to:t.to},[G(t.$slots,"default")],8,["to"]))}});var Tb=fe(_b,[["__file","teleport.vue"]]);const Po=He(Tb),Id=()=>{const e=Kr(),t=Zr(),n=y(()=>`${e.value}-popper-container-${t.prefix}`),l=y(()=>`#${n.value}`);return{id:n,selector:l}},$b=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},Nb=()=>{const{id:e,selector:t}=Id();return xr(()=>{bt&&(document.body.querySelector(t.value)||$b(e.value))}),{id:e,selector:t}},Ib=x({name:"ElTooltipContent",inheritAttrs:!1}),Mb=x({...Ib,props:Wt,setup(e,{expose:t}){const n=e,{selector:l}=Id(),a=ue("tooltip"),s=I(),r=Ha(()=>{var B;return(B=s.value)==null?void 0:B.popperContentRef});let i;const{controlled:u,id:c,open:d,trigger:f,onClose:m,onOpen:v,onShow:h,onHide:p,onBeforeShow:g,onBeforeHide:b}=we(Cs,void 0),E=y(()=>n.transition||`${a.namespace.value}-fade-in-linear`),C=y(()=>n.persistent);Nt(()=>{i==null||i()});const w=y(()=>o(C)?!0:o(d)),k=y(()=>n.disabled?!1:o(d)),S=y(()=>n.appendTo||l.value),$=y(()=>{var B;return(B=n.style)!=null?B:{}}),M=I(!0),R=()=>{p(),z()&&al(document.body),M.value=!0},N=()=>{if(o(u))return!0},O=Ht(N,()=>{n.enterable&&o(f)==="hover"&&v()}),P=Ht(N,()=>{o(f)==="hover"&&m()}),W=()=>{var B,A;(A=(B=s.value)==null?void 0:B.updatePopper)==null||A.call(B),g==null||g()},K=()=>{b==null||b()},D=()=>{h()},L=()=>{n.virtualTriggering||m()},z=B=>{var A;const ne=(A=s.value)==null?void 0:A.popperContentRef,j=(B==null?void 0:B.relatedTarget)||document.activeElement;return ne==null?void 0:ne.contains(j)};return ie(()=>o(d),B=>{B?(M.value=!1,i=zr(r,()=>{if(o(u))return;o(f)!=="hover"&&m()})):i==null||i()},{flush:"post"}),ie(()=>n.content,()=>{var B,A;(A=(B=s.value)==null?void 0:B.updatePopper)==null||A.call(B)}),t({contentRef:s,isFocusInsideContent:z}),(B,A)=>(_(),oe(o(Po),{disabled:!B.teleported,to:o(S)},{default:U(()=>[H(an,{name:o(E),onAfterLeave:R,onBeforeEnter:W,onAfterEnter:D,onBeforeLeave:K},{default:U(()=>[o(w)?We((_(),oe(o(fb),et({key:0,id:o(c),ref_key:"contentRef",ref:s},B.$attrs,{"aria-label":B.ariaLabel,"aria-hidden":M.value,"boundaries-padding":B.boundariesPadding,"fallback-placements":B.fallbackPlacements,"gpu-acceleration":B.gpuAcceleration,offset:B.offset,placement:B.placement,"popper-options":B.popperOptions,"arrow-offset":B.arrowOffset,strategy:B.strategy,effect:B.effect,enterable:B.enterable,pure:B.pure,"popper-class":B.popperClass,"popper-style":[B.popperStyle,o($)],"reference-el":B.referenceEl,"trigger-target-el":B.triggerTargetEl,visible:o(k),"z-index":B.zIndex,onMouseenter:o(O),onMouseleave:o(P),onBlur:L,onClose:o(m)}),{default:U(()=>[G(B.$slots,"default")]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","arrow-offset","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"])),[[mt,o(k)]]):J("v-if",!0)]),_:3},8,["name"])]),_:3},8,["disabled","to"]))}});var Rb=fe(Mb,[["__file","content.vue"]]);const Pb=x({name:"ElTooltip"}),Ob=x({...Pb,props:yb,emits:Cb,setup(e,{expose:t,emit:n}){const l=e;Nb();const a=ue("tooltip"),s=sn(),r=I(),i=I(),u=()=>{var C;const w=o(r);w&&((C=w.popperInstanceRef)==null||C.update())},c=I(!1),d=I(),{show:f,hide:m,hasUpdateHandler:v}=bb({indicator:c,toggleReason:d}),{onOpen:h,onClose:p}=sd({showAfter:wt(l,"showAfter"),hideAfter:wt(l,"hideAfter"),autoClose:wt(l,"autoClose"),open:f,close:m}),g=y(()=>_t(l.visible)&&!v.value),b=y(()=>[a.b(),l.popperClass]);rt(Cs,{controlled:g,id:s,open:Ic(c),trigger:wt(l,"trigger"),onOpen:C=>{h(C)},onClose:C=>{p(C)},onToggle:C=>{o(c)?p(C):h(C)},onShow:()=>{n("show",d.value)},onHide:()=>{n("hide",d.value)},onBeforeShow:()=>{n("before-show",d.value)},onBeforeHide:()=>{n("before-hide",d.value)},updatePopper:u}),ie(()=>l.disabled,C=>{C&&c.value&&(c.value=!1)});const E=C=>{var w;return(w=i.value)==null?void 0:w.isFocusInsideContent(C)};return Mp(()=>c.value&&m()),t({popperRef:r,contentRef:i,isFocusInsideContent:E,updatePopper:u,onOpen:h,onClose:p,hide:m}),(C,w)=>(_(),oe(o(Nd),{ref_key:"popperRef",ref:r,role:C.role},{default:U(()=>[H(Eb,{disabled:C.disabled,trigger:C.trigger,"trigger-keys":C.triggerKeys,"virtual-ref":C.virtualRef,"virtual-triggering":C.virtualTriggering},{default:U(()=>[C.$slots.default?G(C.$slots,"default",{key:0}):J("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering"]),H(Rb,{ref_key:"contentRef",ref:i,"aria-label":C.ariaLabel,"boundaries-padding":C.boundariesPadding,content:C.content,disabled:C.disabled,effect:C.effect,enterable:C.enterable,"fallback-placements":C.fallbackPlacements,"hide-after":C.hideAfter,"gpu-acceleration":C.gpuAcceleration,offset:C.offset,persistent:C.persistent,"popper-class":o(b),"popper-style":C.popperStyle,placement:C.placement,"popper-options":C.popperOptions,"arrow-offset":C.arrowOffset,pure:C.pure,"raw-content":C.rawContent,"reference-el":C.referenceEl,"trigger-target-el":C.triggerTargetEl,"show-after":C.showAfter,strategy:C.strategy,teleported:C.teleported,transition:C.transition,"virtual-triggering":C.virtualTriggering,"z-index":C.zIndex,"append-to":C.appendTo},{default:U(()=>[G(C.$slots,"content",{},()=>[C.rawContent?(_(),V("span",{key:0,innerHTML:C.content},null,8,["innerHTML"])):(_(),V("span",{key:1},pe(C.content),1))]),C.showArrow?(_(),oe(o(Pg),{key:0})):J("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","arrow-offset","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"]))}});var Lb=fe(Ob,[["__file","tooltip.vue"]]);const un=He(Lb),Bb=de({...pa,valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:Y(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:Y([Function,Array]),default:Bt},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:Boolean,hideLoading:Boolean,teleported:Wt.teleported,appendTo:Wt.appendTo,highlightFirstItem:Boolean,fitInputWidth:Boolean}),Vb={[De]:e=>Ve(e),[Zt]:e=>Ve(e),[nt]:e=>Ve(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>yt(e)},Md="ElAutocomplete",Db=x({name:Md,inheritAttrs:!1}),Ab=x({...Db,props:Bb,emits:Vb,setup(e,{expose:t,emit:n}){const l=e,a=y(()=>An(l,Object.keys(pa))),s=pl(),r=fn(),i=ue("autocomplete"),u=I(),c=I(),d=I(),f=I();let m=!1,v=!1;const h=I([]),p=I(-1),g=I(""),b=I(!1),E=I(!1),C=I(!1),w=sn(),k=y(()=>s.style),S=y(()=>(h.value.length>0||C.value)&&b.value),$=y(()=>!l.hideLoading&&C.value),M=y(()=>u.value?Array.from(u.value.$el.querySelectorAll("input")):[]),R=()=>{S.value&&(g.value=`${u.value.$el.offsetWidth}px`)},N=()=>{p.value=-1},O=async le=>{if(E.value)return;const se=ge=>{C.value=!1,!E.value&&(ke(ge)?(h.value=ge,p.value=l.highlightFirstItem?0:-1):jt(Md,"autocomplete suggestions must be an array"))};if(C.value=!0,ke(l.fetchSuggestions))se(l.fetchSuggestions);else{const ge=await l.fetchSuggestions(le,se);ke(ge)&&se(ge)}},P=Ln(O,l.debounce),W=le=>{const se=!!le;if(n(Zt,le),n(De,le),E.value=!1,b.value||(b.value=se),!l.triggerOnFocus&&!le){E.value=!0,h.value=[];return}P(le)},K=le=>{var se;r.value||(((se=le.target)==null?void 0:se.tagName)!=="INPUT"||M.value.includes(document.activeElement))&&(b.value=!0)},D=le=>{n(nt,le)},L=le=>{var se;if(v)v=!1;else{b.value=!0,n("focus",le);const ge=(se=l.modelValue)!=null?se:"";l.triggerOnFocus&&!m&&P(String(ge))}},z=le=>{setTimeout(()=>{var se;if((se=d.value)!=null&&se.isFocusInsideContent()){v=!0;return}b.value&&j(),n("blur",le)})},B=()=>{b.value=!1,n(De,""),n("clear")},A=async()=>{S.value&&p.value>=0&&p.value{S.value&&(le.preventDefault(),le.stopPropagation(),j())},j=()=>{b.value=!1},Q=()=>{var le;(le=u.value)==null||le.focus()},Z=()=>{var le;(le=u.value)==null||le.blur()},ee=async le=>{n(Zt,le[l.valueKey]),n(De,le[l.valueKey]),n("select",le),h.value=[],p.value=-1},ae=le=>{if(!S.value||C.value)return;if(le<0){p.value=-1;return}le>=h.value.length&&(le=h.value.length-1);const se=c.value.querySelector(`.${i.be("suggestion","wrap")}`),Be=se.querySelectorAll(`.${i.be("suggestion","list")} li`)[le],te=se.scrollTop,{offsetTop:ce,scrollHeight:Ie}=Be;ce+Ie>te+se.clientHeight&&(se.scrollTop+=Ie),ce{var le;(le=d.value)!=null&&le.isFocusInsideContent()||S.value&&j()});return Nt(()=>{re==null||re()}),Xe(()=>{u.value.ref.setAttribute("role","textbox"),u.value.ref.setAttribute("aria-autocomplete","list"),u.value.ref.setAttribute("aria-controls","id"),u.value.ref.setAttribute("aria-activedescendant",`${w.value}-item-${p.value}`),m=u.value.ref.hasAttribute("readonly")}),t({highlightedIndex:p,activated:b,loading:C,inputRef:u,popperRef:d,suggestions:h,handleSelect:ee,handleKeyEnter:A,focus:Q,blur:Z,close:j,highlight:ae,getData:O}),(le,se)=>(_(),oe(o(un),{ref_key:"popperRef",ref:d,visible:o(S),placement:le.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[o(i).e("popper"),le.popperClass],teleported:le.teleported,"append-to":le.appendTo,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${o(i).namespace.value}-zoom-in-top`,persistent:"",role:"listbox",onBeforeShow:R,onHide:N},{content:U(()=>[F("div",{ref_key:"regionRef",ref:c,class:T([o(i).b("suggestion"),o(i).is("loading",o($))]),style:_e({[le.fitInputWidth?"width":"minWidth"]:g.value,outline:"none"}),role:"region"},[H(o(jn),{id:o(w),tag:"ul","wrap-class":o(i).be("suggestion","wrap"),"view-class":o(i).be("suggestion","list"),role:"listbox"},{default:U(()=>[o($)?(_(),V("li",{key:0},[G(le.$slots,"loading",{},()=>[H(o(Se),{class:T(o(i).is("loading"))},{default:U(()=>[H(o(Qn))]),_:1},8,["class"])])])):(_(!0),V(Oe,{key:1},ut(h.value,(ge,Be)=>(_(),V("li",{id:`${o(w)}-item-${Be}`,key:Be,class:T({highlighted:p.value===Be}),role:"option","aria-selected":p.value===Be,onClick:te=>ee(ge)},[G(le.$slots,"default",{item:ge},()=>[st(pe(ge[le.valueKey]),1)])],10,["id","aria-selected","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class"])],6)]),default:U(()=>[F("div",{ref_key:"listboxRef",ref:f,class:T([o(i).b(),le.$attrs.class]),style:_e(o(k)),role:"combobox","aria-haspopup":"listbox","aria-expanded":o(S),"aria-owns":o(w)},[H(o(hn),et({ref_key:"inputRef",ref:u},et(o(a),le.$attrs),{"model-value":le.modelValue,disabled:o(r),onInput:W,onChange:D,onFocus:L,onBlur:z,onClear:B,onKeydown:[Tt(Le(ge=>ae(p.value-1),["prevent"]),["up"]),Tt(Le(ge=>ae(p.value+1),["prevent"]),["down"]),Tt(A,["enter"]),Tt(j,["tab"]),Tt(ne,["esc"])],onMousedown:K}),Mn({_:2},[le.$slots.prepend?{name:"prepend",fn:U(()=>[G(le.$slots,"prepend")])}:void 0,le.$slots.append?{name:"append",fn:U(()=>[G(le.$slots,"append")])}:void 0,le.$slots.prefix?{name:"prefix",fn:U(()=>[G(le.$slots,"prefix")])}:void 0,le.$slots.suffix?{name:"suffix",fn:U(()=>[G(le.$slots,"suffix")])}:void 0]),1040,["model-value","disabled","onKeydown"])],14,["aria-expanded","aria-owns"])]),_:3},8,["visible","placement","popper-class","teleported","append-to","transition"]))}});var Fb=fe(Ab,[["__file","autocomplete.vue"]]);const xb=He(Fb),zb=de({size:{type:[Number,String],values:tl,default:"",validator:e=>Te(e)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:$t},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:Y(String),default:"cover"}}),Hb={error:e=>e instanceof Event},Kb=x({name:"ElAvatar"}),Wb=x({...Kb,props:zb,emits:Hb,setup(e,{emit:t}){const n=e,l=ue("avatar"),a=I(!1),s=y(()=>{const{size:c,icon:d,shape:f}=n,m=[l.b()];return Ve(c)&&m.push(l.m(c)),d&&m.push(l.m("icon")),f&&m.push(l.m(f)),m}),r=y(()=>{const{size:c}=n;return Te(c)?l.cssVarBlock({size:zt(c)||""}):void 0}),i=y(()=>({objectFit:n.fit}));ie(()=>n.src,()=>a.value=!1);function u(c){a.value=!0,t("error",c)}return(c,d)=>(_(),V("span",{class:T(o(s)),style:_e(o(r))},[(c.src||c.srcSet)&&!a.value?(_(),V("img",{key:0,src:c.src,alt:c.alt,srcset:c.srcSet,style:_e(o(i)),onError:u},null,44,["src","alt","srcset"])):c.icon?(_(),oe(o(Se),{key:1},{default:U(()=>[(_(),oe(Ge(c.icon)))]),_:1})):G(c.$slots,"default",{key:2})],6))}});var jb=fe(Wb,[["__file","avatar.vue"]]);const Ub=He(jb),Yb={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},qb={click:e=>e instanceof MouseEvent},Gb=(e,t,n)=>{const l=Lt(),a=Lt(),s=I(!1),r=()=>{l.value&&(s.value=l.value.scrollTop>=e.visibilityHeight)},i=c=>{var d;(d=l.value)==null||d.scrollTo({top:0,behavior:"smooth"}),t("click",c)},u=Mc(r,300,!0);return xt(a,"scroll",u),Xe(()=>{var c;a.value=document,l.value=document.documentElement,e.target&&(l.value=(c=document.querySelector(e.target))!=null?c:void 0,l.value||jt(n,`target does not exist: ${e.target}`),a.value=l.value),r()}),{visible:s,handleClick:i}},Rd="ElBacktop",Xb=x({name:Rd}),Zb=x({...Xb,props:Yb,emits:qb,setup(e,{emit:t}){const n=e,l=ue("backtop"),{handleClick:a,visible:s}=Gb(n,t,Rd),r=y(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`}));return(i,u)=>(_(),oe(an,{name:`${o(l).namespace.value}-fade-in`},{default:U(()=>[o(s)?(_(),V("div",{key:0,style:_e(o(r)),class:T(o(l).b()),onClick:Le(o(a),["stop"])},[G(i.$slots,"default",{},()=>[H(o(Se),{class:T(o(l).e("icon"))},{default:U(()=>[H(o(Yh))]),_:1},8,["class"])])],14,["onClick"])):J("v-if",!0)]),_:3},8,["name"]))}});var Jb=fe(Zb,[["__file","backtop.vue"]]);const Qb=He(Jb),e0=de({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:Y([String,Object,Array])},offset:{type:Y(Array),default:[0,0]},badgeClass:{type:String}}),t0=x({name:"ElBadge"}),n0=x({...t0,props:e0,setup(e,{expose:t}){const n=e,l=ue("badge"),a=y(()=>n.isDot?"":Te(n.value)&&Te(n.max)?n.max{var r,i,u,c,d;return[{backgroundColor:n.color,marginRight:zt(-((i=(r=n.offset)==null?void 0:r[0])!=null?i:0)),marginTop:zt((c=(u=n.offset)==null?void 0:u[1])!=null?c:0)},(d=n.badgeStyle)!=null?d:{}]});return t({content:a}),(r,i)=>(_(),V("div",{class:T(o(l).b())},[G(r.$slots,"default"),H(an,{name:`${o(l).namespace.value}-zoom-in-center`,persisted:""},{default:U(()=>[We(F("sup",{class:T([o(l).e("content"),o(l).em("content",r.type),o(l).is("fixed",!!r.$slots.default),o(l).is("dot",r.isDot),o(l).is("hide-zero",!r.showZero&&n.value===0),r.badgeClass]),style:_e(o(s))},[G(r.$slots,"content",{value:o(a)},()=>[st(pe(o(a)),1)])],6),[[mt,!r.hidden&&(o(a)||r.isDot||r.$slots.content)]])]),_:3},8,["name"])],2))}});var l0=fe(n0,[["__file","badge.vue"]]);const Pd=He(l0),Od=Symbol("breadcrumbKey"),o0=de({separator:{type:String,default:"/"},separatorIcon:{type:$t}}),a0=x({name:"ElBreadcrumb"}),s0=x({...a0,props:o0,setup(e){const t=e,{t:n}=pt(),l=ue("breadcrumb"),a=I();return rt(Od,t),Xe(()=>{const s=a.value.querySelectorAll(`.${l.e("item")}`);s.length&&s[s.length-1].setAttribute("aria-current","page")}),(s,r)=>(_(),V("div",{ref_key:"breadcrumb",ref:a,class:T(o(l).b()),"aria-label":o(n)("el.breadcrumb.label"),role:"navigation"},[G(s.$slots,"default")],10,["aria-label"]))}});var r0=fe(s0,[["__file","breadcrumb.vue"]]);const i0=de({to:{type:Y([String,Object]),default:""},replace:Boolean}),u0=x({name:"ElBreadcrumbItem"}),c0=x({...u0,props:i0,setup(e){const t=e,n=lt(),l=we(Od,void 0),a=ue("breadcrumb"),s=n.appContext.config.globalProperties.$router,r=I(),i=()=>{!t.to||!s||(t.replace?s.replace(t.to):s.push(t.to))};return(u,c)=>{var d,f;return _(),V("span",{class:T(o(a).e("item"))},[F("span",{ref_key:"link",ref:r,class:T([o(a).e("inner"),o(a).is("link",!!u.to)]),role:"link",onClick:i},[G(u.$slots,"default")],2),(d=o(l))!=null&&d.separatorIcon?(_(),oe(o(Se),{key:0,class:T(o(a).e("separator"))},{default:U(()=>[(_(),oe(Ge(o(l).separatorIcon)))]),_:1},8,["class"])):(_(),V("span",{key:1,class:T(o(a).e("separator")),role:"presentation"},pe((f=o(l))==null?void 0:f.separator),3))],2)}}});var Ld=fe(c0,[["__file","breadcrumb-item.vue"]]);const d0=He(r0,{BreadcrumbItem:Ld}),f0=At(Ld),Bd=Symbol("buttonGroupContextKey"),ul=({from:e,replacement:t,scope:n,version:l,ref:a,type:s="API"},r)=>{ie(()=>o(r),i=>{},{immediate:!0})},v0=(e,t)=>{ul({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},y(()=>e.type==="text"));const n=we(Bd,void 0),l=fa("button"),{form:a}=dn(),s=Gt(y(()=>n==null?void 0:n.size)),r=fn(),i=I(),u=Xt(),c=y(()=>{var g;return e.type||(n==null?void 0:n.type)||((g=l.value)==null?void 0:g.type)||""}),d=y(()=>{var g,b,E;return(E=(b=e.autoInsertSpace)!=null?b:(g=l.value)==null?void 0:g.autoInsertSpace)!=null?E:!1}),f=y(()=>{var g,b,E;return(E=(b=e.plain)!=null?b:(g=l.value)==null?void 0:g.plain)!=null?E:!1}),m=y(()=>{var g,b,E;return(E=(b=e.round)!=null?b:(g=l.value)==null?void 0:g.round)!=null?E:!1}),v=y(()=>e.tag==="button"?{ariaDisabled:r.value||e.loading,disabled:r.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),h=y(()=>{var g;const b=(g=u.default)==null?void 0:g.call(u);if(d.value&&(b==null?void 0:b.length)===1){const E=b[0];if((E==null?void 0:E.type)===Nc){const C=E.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(C.trim())}}return!1});return{_disabled:r,_size:s,_type:c,_ref:i,_props:v,_plain:f,_round:m,shouldAddSpace:h,handleClick:g=>{if(r.value||e.loading){g.stopPropagation();return}e.nativeType==="reset"&&(a==null||a.resetFields()),t("click",g)}}},or=["default","primary","success","warning","info","danger","text",""],p0=["button","submit","reset"],ar=de({size:Jt,disabled:Boolean,type:{type:String,values:or,default:""},icon:{type:$t},nativeType:{type:String,values:p0,default:"button"},loading:Boolean,loadingIcon:{type:$t,default:()=>Qn},plain:{type:Boolean,default:void 0},text:Boolean,link:Boolean,bg:Boolean,autofocus:Boolean,round:{type:Boolean,default:void 0},circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:Y([String,Object]),default:"button"}}),h0={click:e=>e instanceof MouseEvent};function kl(e,t=20){return e.mix("#141414",t).toString()}function m0(e){const t=fn(),n=ue("button");return y(()=>{let l={},a=e.color;if(a){const s=a.match(/var\((.*?)\)/);s&&(a=window.getComputedStyle(window.document.documentElement).getPropertyValue(s[1]));const r=new vo(a),i=e.dark?r.tint(20).toString():kl(r,20);if(e.plain)l=n.cssVarBlock({"bg-color":e.dark?kl(r,90):r.tint(90).toString(),"text-color":a,"border-color":e.dark?kl(r,50):r.tint(50).toString(),"hover-text-color":`var(${n.cssVarName("color-white")})`,"hover-bg-color":a,"hover-border-color":a,"active-bg-color":i,"active-text-color":`var(${n.cssVarName("color-white")})`,"active-border-color":i}),t.value&&(l[n.cssVarBlockName("disabled-bg-color")]=e.dark?kl(r,90):r.tint(90).toString(),l[n.cssVarBlockName("disabled-text-color")]=e.dark?kl(r,50):r.tint(50).toString(),l[n.cssVarBlockName("disabled-border-color")]=e.dark?kl(r,80):r.tint(80).toString());else{const u=e.dark?kl(r,30):r.tint(30).toString(),c=r.isDark()?`var(${n.cssVarName("color-white")})`:`var(${n.cssVarName("color-black")})`;if(l=n.cssVarBlock({"bg-color":a,"text-color":c,"border-color":a,"hover-bg-color":u,"hover-text-color":c,"hover-border-color":u,"active-bg-color":i,"active-border-color":i}),t.value){const d=e.dark?kl(r,50):r.tint(50).toString();l[n.cssVarBlockName("disabled-bg-color")]=d,l[n.cssVarBlockName("disabled-text-color")]=e.dark?"rgba(255, 255, 255, 0.5)":`var(${n.cssVarName("color-white")})`,l[n.cssVarBlockName("disabled-border-color")]=d}}}return l})}const g0=x({name:"ElButton"}),b0=x({...g0,props:ar,emits:h0,setup(e,{expose:t,emit:n}){const l=e,a=m0(l),s=ue("button"),{_ref:r,_size:i,_type:u,_disabled:c,_props:d,_plain:f,_round:m,shouldAddSpace:v,handleClick:h}=v0(l,n),p=y(()=>[s.b(),s.m(u.value),s.m(i.value),s.is("disabled",c.value),s.is("loading",l.loading),s.is("plain",f.value),s.is("round",m.value),s.is("circle",l.circle),s.is("text",l.text),s.is("link",l.link),s.is("has-bg",l.bg)]);return t({ref:r,size:i,type:u,disabled:c,shouldAddSpace:v}),(g,b)=>(_(),oe(Ge(g.tag),et({ref_key:"_ref",ref:r},o(d),{class:o(p),style:o(a),onClick:o(h)}),{default:U(()=>[g.loading?(_(),V(Oe,{key:0},[g.$slots.loading?G(g.$slots,"loading",{key:0}):(_(),oe(o(Se),{key:1,class:T(o(s).is("loading"))},{default:U(()=>[(_(),oe(Ge(g.loadingIcon)))]),_:1},8,["class"]))],64)):g.icon||g.$slots.icon?(_(),oe(o(Se),{key:1},{default:U(()=>[g.icon?(_(),oe(Ge(g.icon),{key:0})):G(g.$slots,"icon",{key:1})]),_:3})):J("v-if",!0),g.$slots.default?(_(),V("span",{key:2,class:T({[o(s).em("text","expand")]:o(v)})},[G(g.$slots,"default")],2)):J("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var y0=fe(b0,[["__file","button.vue"]]);const C0={size:ar.size,type:ar.type},w0=x({name:"ElButtonGroup"}),k0=x({...w0,props:C0,setup(e){const t=e;rt(Bd,kt({size:wt(t,"size"),type:wt(t,"type")}));const n=ue("button");return(l,a)=>(_(),V("div",{class:T(o(n).b("group"))},[G(l.$slots,"default")],2))}});var Vd=fe(k0,[["__file","button-group.vue"]]);const on=He(y0,{ButtonGroup:Vd}),Dd=At(Vd),xs=(e,t)=>[e>0?e-1:void 0,e,eArray.from(Array.from({length:e}).keys()),Ad=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),Fd=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),Tu=function(e,t){const n=wo(e),l=wo(t);return n&&l?e.getTime()===t.getTime():!n&&!l?e===t:!1},$u=function(e,t){const n=ke(e),l=ke(t);return n&&l?e.length!==t.length?!1:e.every((a,s)=>Tu(a,t[s])):!n&&!l?Tu(e,t):!1},Nu=function(e,t,n){const l=Pn(t)||t==="x"?Ke(e).locale(n):Ke(e,t).locale(n);return l.isValid()?l:void 0},Iu=function(e,t,n){return Pn(t)?e:t==="x"?+e:Ke(e).locale(n).format(t)},zs=(e,t)=>{var n;const l=[],a=t==null?void 0:t();for(let s=0;ske(e)?e.map(t=>t.toDate()):e.toDate(),S0=(e,t)=>{const n=e.subtract(1,"month").endOf("month").date();return Nl(t).map((l,a)=>n-(t-a-1))},E0=e=>{const t=e.daysInMonth();return Nl(t).map((n,l)=>l+1)},_0=e=>Nl(e.length/7).map(t=>{const n=t*7;return e.slice(n,n+7)}),T0=de({selectedDay:{type:Y(Object)},range:{type:Y(Array)},date:{type:Y(Object),required:!0},hideHeader:{type:Boolean}}),$0={pick:e=>yt(e)},N0=["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange","yearrange"],Hs=["sun","mon","tue","wed","thu","fri","sat"],I0=(e,t)=>{Ke.extend(Vc);const n=Ke.localeData().firstDayOfWeek(),{t:l,lang:a}=pt(),s=Ke().locale(a.value),r=y(()=>!!e.range&&!!e.range.length),i=y(()=>{let m=[];if(r.value){const[v,h]=e.range,p=Nl(h.date()-v.date()+1).map(E=>({text:v.date()+E,type:"current"}));let g=p.length%7;g=g===0?0:7-g;const b=Nl(g).map((E,C)=>({text:C+1,type:"next"}));m=p.concat(b)}else{const v=e.date.startOf("month").day(),h=S0(e.date,(v-n+7)%7).map(E=>({text:E,type:"prev"})),p=E0(e.date).map(E=>({text:E,type:"current"}));m=[...h,...p];const g=7-(m.length%7||7),b=Nl(g).map((E,C)=>({text:C+1,type:"next"}));m=m.concat(b)}return _0(m)}),u=y(()=>{const m=n;return m===0?Hs.map(v=>l(`el.datepicker.weeks.${v}`)):Hs.slice(m).concat(Hs.slice(0,m)).map(v=>l(`el.datepicker.weeks.${v}`))}),c=(m,v)=>{switch(v){case"prev":return e.date.startOf("month").subtract(1,"month").date(m);case"next":return e.date.startOf("month").add(1,"month").date(m);case"current":return e.date.date(m)}};return{now:s,isInRange:r,rows:i,weekDays:u,getFormattedDate:c,handlePickDay:({text:m,type:v})=>{const h=c(m,v);t("pick",h)},getSlotData:({text:m,type:v})=>{const h=c(m,v);return{isSelected:h.isSame(e.selectedDay),type:`${v}-month`,day:h.format("YYYY-MM-DD"),date:h.toDate()}}}},M0=x({name:"DateTable"}),R0=x({...M0,props:T0,emits:$0,setup(e,{expose:t,emit:n}){const l=e,{isInRange:a,now:s,rows:r,weekDays:i,getFormattedDate:u,handlePickDay:c,getSlotData:d}=I0(l,n),f=ue("calendar-table"),m=ue("calendar-day"),v=({text:h,type:p})=>{const g=[p];if(p==="current"){const b=u(h,p);b.isSame(l.selectedDay,"day")&&g.push(m.is("selected")),b.isSame(s,"day")&&g.push(m.is("today"))}return g};return t({getFormattedDate:u}),(h,p)=>(_(),V("table",{class:T([o(f).b(),o(f).is("range",o(a))]),cellspacing:"0",cellpadding:"0"},[h.hideHeader?J("v-if",!0):(_(),V("thead",{key:0},[F("tr",null,[(_(!0),V(Oe,null,ut(o(i),g=>(_(),V("th",{key:g,scope:"col"},pe(g),1))),128))])])),F("tbody",null,[(_(!0),V(Oe,null,ut(o(r),(g,b)=>(_(),V("tr",{key:b,class:T({[o(f).e("row")]:!0,[o(f).em("row","hide-border")]:b===0&&h.hideHeader})},[(_(!0),V(Oe,null,ut(g,(E,C)=>(_(),V("td",{key:C,class:T(v(E)),onClick:w=>o(c)(E)},[F("div",{class:T(o(m).b())},[G(h.$slots,"date-cell",{data:o(d)(E)},()=>[F("span",null,pe(E.text),1)])],2)],10,["onClick"]))),128))],2))),128))])],2))}});var Mu=fe(R0,[["__file","date-table.vue"]]);const P0=(e,t)=>{const n=e.endOf("month"),l=t.startOf("month"),s=n.isSame(l,"week")?l.add(1,"week"):l;return[[e,n],[s.startOf("week"),t]]},O0=(e,t)=>{const n=e.endOf("month"),l=e.add(1,"month").startOf("month"),a=n.isSame(l,"week")?l.add(1,"week"):l,s=a.endOf("month"),r=t.startOf("month"),i=s.isSame(r,"week")?r.add(1,"week"):r;return[[e,n],[a.startOf("week"),s],[i.startOf("week"),t]]},L0=(e,t,n)=>{const{lang:l}=pt(),a=I(),s=Ke().locale(l.value),r=y({get(){return e.modelValue?u.value:a.value},set(g){if(!g)return;a.value=g;const b=g.toDate();t(Zt,b),t(De,b)}}),i=y(()=>{if(!e.range||!ke(e.range)||e.range.length!==2||e.range.some(C=>!wo(C)))return[];const g=e.range.map(C=>Ke(C).locale(l.value)),[b,E]=g;return b.isAfter(E)?[]:b.isSame(E,"month")?v(b,E):b.add(1,"month").month()!==E.month()?[]:v(b,E)}),u=y(()=>e.modelValue?Ke(e.modelValue).locale(l.value):r.value||(i.value.length?i.value[0][0]:s)),c=y(()=>u.value.subtract(1,"month").date(1)),d=y(()=>u.value.add(1,"month").date(1)),f=y(()=>u.value.subtract(1,"year").date(1)),m=y(()=>u.value.add(1,"year").date(1)),v=(g,b)=>{const E=g.startOf("week"),C=b.endOf("week"),w=E.get("month"),k=C.get("month");return w===k?[[E,C]]:(w+1)%12===k?P0(E,C):w+2===k||(w+1)%11===k?O0(E,C):[]},h=g=>{r.value=g};return{calculateValidatedDateRange:v,date:u,realSelectedDay:r,pickDay:h,selectDate:g=>{const E={"prev-month":c.value,"next-month":d.value,"prev-year":f.value,"next-year":m.value,today:s}[g];E.isSame(u.value,"day")||h(E)},validatedRange:i}},B0=e=>ke(e)&&e.length===2&&e.every(t=>wo(t)),V0=de({modelValue:{type:Date},range:{type:Y(Array),validator:B0}}),D0={[De]:e=>wo(e),[Zt]:e=>wo(e)},A0="ElCalendar",F0=x({name:A0}),x0=x({...F0,props:V0,emits:D0,setup(e,{expose:t,emit:n}){const l=e,a=ue("calendar"),{calculateValidatedDateRange:s,date:r,pickDay:i,realSelectedDay:u,selectDate:c,validatedRange:d}=L0(l,n),{t:f}=pt(),m=y(()=>{const v=`el.datepicker.month${r.value.format("M")}`;return`${r.value.year()} ${f("el.datepicker.year")} ${f(v)}`});return t({selectedDay:u,pickDay:i,selectDate:c,calculateValidatedDateRange:s}),(v,h)=>(_(),V("div",{class:T(o(a).b())},[F("div",{class:T(o(a).e("header"))},[G(v.$slots,"header",{date:o(m)},()=>[F("div",{class:T(o(a).e("title"))},pe(o(m)),3),o(d).length===0?(_(),V("div",{key:0,class:T(o(a).e("button-group"))},[H(o(Dd),null,{default:U(()=>[H(o(on),{size:"small",onClick:p=>o(c)("prev-month")},{default:U(()=>[st(pe(o(f)("el.datepicker.prevMonth")),1)]),_:1},8,["onClick"]),H(o(on),{size:"small",onClick:p=>o(c)("today")},{default:U(()=>[st(pe(o(f)("el.datepicker.today")),1)]),_:1},8,["onClick"]),H(o(on),{size:"small",onClick:p=>o(c)("next-month")},{default:U(()=>[st(pe(o(f)("el.datepicker.nextMonth")),1)]),_:1},8,["onClick"])]),_:1})],2)):J("v-if",!0)])],2),o(d).length===0?(_(),V("div",{key:0,class:T(o(a).e("body"))},[H(Mu,{date:o(r),"selected-day":o(u),onPick:o(i)},Mn({_:2},[v.$slots["date-cell"]?{name:"date-cell",fn:U(p=>[G(v.$slots,"date-cell",On(cl(p)))])}:void 0]),1032,["date","selected-day","onPick"])],2)):(_(),V("div",{key:1,class:T(o(a).e("body"))},[(_(!0),V(Oe,null,ut(o(d),(p,g)=>(_(),oe(Mu,{key:g,date:p[0],"selected-day":o(u),range:p,"hide-header":g!==0,onPick:o(i)},Mn({_:2},[v.$slots["date-cell"]?{name:"date-cell",fn:U(b=>[G(v.$slots,"date-cell",On(cl(b)))])}:void 0]),1032,["date","selected-day","range","hide-header","onPick"]))),128))],2))],2))}});var z0=fe(x0,[["__file","calendar.vue"]]);const H0=He(z0),K0=de({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:Y([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:"always"}}),W0=x({name:"ElCard"}),j0=x({...W0,props:K0,setup(e){const t=ue("card");return(n,l)=>(_(),V("div",{class:T([o(t).b(),o(t).is(`${n.shadow}-shadow`)])},[n.$slots.header||n.header?(_(),V("div",{key:0,class:T([o(t).e("header"),n.headerClass])},[G(n.$slots,"header",{},()=>[st(pe(n.header),1)])],2)):J("v-if",!0),F("div",{class:T([o(t).e("body"),n.bodyClass]),style:_e(n.bodyStyle)},[G(n.$slots,"default")],6),n.$slots.footer||n.footer?(_(),V("div",{key:1,class:T([o(t).e("footer"),n.footerClass])},[G(n.$slots,"footer",{},()=>[st(pe(n.footer),1)])],2)):J("v-if",!0)],2))}});var U0=fe(j0,[["__file","card.vue"]]);const Y0=He(U0),q0=de({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,values:["hover","click"],default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:["","none","outside"],default:""},arrow:{type:String,values:["always","hover","never"],default:"hover"},type:{type:String,values:["","card"],default:""},cardScale:{type:Number,default:.83},loop:{type:Boolean,default:!0},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},pauseOnHover:{type:Boolean,default:!0},motionBlur:Boolean}),G0={change:(e,t)=>[e,t].every(Te)},xd=Symbol("carouselContextKey"),sr="ElCarouselItem";var Vn=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Vn||{});function rr(e){return Dt(e)&&e.type===Oe}function X0(e){return Dt(e)&&e.type===jl}function Z0(e){return Dt(e)&&!rr(e)&&!X0(e)}const J0=e=>{if(!Dt(e))return{};const t=e.props||{},n=(Dt(e.type)?e.type.props:void 0)||{},l={};return Object.keys(n).forEach(a=>{rn(n[a],"default")&&(l[a]=n[a].default)}),Object.keys(t).forEach(a=>{l[Ar(a)]=t[a]}),l},Q0=e=>{if(!ke(e)||e.length>1)throw new Error("expect to receive a single Vue element child");return e[0]},Zn=e=>{const t=ke(e)?e:[e],n=[];return t.forEach(l=>{var a;ke(l)?n.push(...Zn(l)):Dt(l)&&((a=l.component)!=null&&a.subTree)?n.push(l,...Zn(l.component.subTree)):Dt(l)&&ke(l.children)?n.push(...Zn(l.children)):Dt(l)&&l.shapeFlag===2?n.push(...Zn(l.type())):n.push(l)}),n},ey=(e,t,n)=>Zn(e.subTree).filter(s=>{var r;return Dt(s)&&((r=s.type)==null?void 0:r.name)===t&&!!s.component}).map(s=>s.component.uid).map(s=>n[s]).filter(s=>!!s),ks=(e,t)=>{const n=Lt({}),l=Lt([]),a=new WeakMap,s=d=>{n.value[d.uid]=d,Oa(n),Xe(()=>{const f=d.getVnode().el,m=f.parentNode;if(!a.has(m)){a.set(m,[]);const v=m.insertBefore.bind(m);m.insertBefore=(h,p)=>(a.get(m).some(b=>h===b||p===b)&&Oa(n),v(h,p))}a.get(m).push(f)})},r=d=>{delete n.value[d.uid],Oa(n);const f=d.getVnode().el,m=f.parentNode,v=a.get(m),h=v.indexOf(f);v.splice(h,1)},i=()=>{l.value=ey(e,t,n.value)},u=d=>d.render(),c=x({setup(d,{slots:f}){return()=>(i(),f.default?Re(u,{render:f.default}):null)}});return{children:l,addChild:s,removeChild:r,ChildrenSorter:c}},Ru=300,ty=(e,t,n)=>{const{children:l,addChild:a,removeChild:s,ChildrenSorter:r}=ks(lt(),sr),i=Xt(),u=I(-1),c=I(null),d=I(!1),f=I(),m=I(0),v=I(!0),h=y(()=>e.arrow!=="never"&&!o(b)),p=y(()=>l.value.some(ee=>ee.props.label.toString().length>0)),g=y(()=>e.type==="card"),b=y(()=>e.direction==="vertical"),E=y(()=>e.height!=="auto"?{height:e.height}:{height:`${m.value}px`,overflow:"hidden"}),C=Hl(ee=>{R(ee)},Ru,{trailing:!0}),w=Hl(ee=>{z(ee)},Ru),k=ee=>v.value?u.value<=1?ee<=1:ee>1:!0;function S(){c.value&&(clearInterval(c.value),c.value=null)}function $(){e.interval<=0||!e.autoplay||c.value||(c.value=setInterval(()=>M(),e.interval))}const M=()=>{u.valuese.props.name===ee);le.length>0&&(ee=l.value.indexOf(le[0]))}if(ee=Number(ee),Number.isNaN(ee)||ee!==Math.floor(ee))return;const ae=l.value.length,re=u.value;ee<0?u.value=e.loop?ae-1:0:ee>=ae?u.value=e.loop?0:ae-1:u.value=ee,re===u.value&&N(re),ne()}function N(ee){l.value.forEach((ae,re)=>{ae.translateItem(re,u.value,ee)})}function O(ee,ae){var re,le,se,ge;const Be=o(l),te=Be.length;if(te===0||!ee.states.inStage)return!1;const ce=ae+1,Ie=ae-1,Ae=te-1,xe=Be[Ae].states.active,Ye=Be[0].states.active,$e=(le=(re=Be[ce])==null?void 0:re.states)==null?void 0:le.active,Me=(ge=(se=Be[Ie])==null?void 0:se.states)==null?void 0:ge.active;return ae===Ae&&Ye||$e?"left":ae===0&&xe||Me?"right":!1}function P(){d.value=!0,e.pauseOnHover&&S()}function W(){d.value=!1,$()}function K(ee){o(b)||l.value.forEach((ae,re)=>{ee===O(ae,re)&&(ae.states.hover=!0)})}function D(){o(b)||l.value.forEach(ee=>{ee.states.hover=!1})}function L(ee){u.value=ee}function z(ee){e.trigger==="hover"&&ee!==u.value&&(u.value=ee)}function B(){R(u.value-1)}function A(){R(u.value+1)}function ne(){S(),e.pauseOnHover||$()}function j(ee){e.height==="auto"&&(m.value=ee)}function Q(){var ee;const ae=(ee=i.default)==null?void 0:ee.call(i);if(!ae)return null;const le=Zn(ae).filter(se=>Dt(se)&&se.type.name===sr);return(le==null?void 0:le.length)===2&&e.loop&&!g.value?(v.value=!0,le):(v.value=!1,null)}ie(()=>u.value,(ee,ae)=>{N(ae),v.value&&(ee=ee%2,ae=ae%2),ae>-1&&t(nt,ee,ae)}),ie(()=>e.autoplay,ee=>{ee?$():S()}),ie(()=>e.loop,()=>{R(u.value)}),ie(()=>e.interval,()=>{ne()});const Z=Lt();return Xe(()=>{ie(()=>l.value,()=>{l.value.length>0&&R(e.initialIndex)},{immediate:!0}),Z.value=Ft(f.value,()=>{N()}),$()}),Nt(()=>{S(),f.value&&Z.value&&Z.value.stop()}),rt(xd,{root:f,isCardType:g,isVertical:b,items:l,loop:e.loop,cardScale:e.cardScale,addItem:a,removeItem:s,setActiveItem:R,setContainerHeight:j}),{root:f,activeIndex:u,arrowDisplay:h,hasLabel:p,hover:d,isCardType:g,items:l,isVertical:b,containerStyle:E,isItemsTwoLength:v,handleButtonEnter:K,handleButtonLeave:D,handleIndicatorClick:L,handleMouseEnter:P,handleMouseLeave:W,setActiveItem:R,prev:B,next:A,PlaceholderItem:Q,isTwoLengthShow:k,ItemsSorter:r,throttledArrowClick:C,throttledIndicatorHover:w}},ny="ElCarousel",ly=x({name:ny}),oy=x({...ly,props:q0,emits:G0,setup(e,{expose:t,emit:n}){const l=e,{root:a,activeIndex:s,arrowDisplay:r,hasLabel:i,hover:u,isCardType:c,items:d,isVertical:f,containerStyle:m,handleButtonEnter:v,handleButtonLeave:h,handleIndicatorClick:p,handleMouseEnter:g,handleMouseLeave:b,setActiveItem:E,prev:C,next:w,PlaceholderItem:k,isTwoLengthShow:S,ItemsSorter:$,throttledArrowClick:M,throttledIndicatorHover:R}=ty(l,n),N=ue("carousel"),{t:O}=pt(),P=y(()=>{const L=[N.b(),N.m(l.direction)];return o(c)&&L.push(N.m("card")),L}),W=y(()=>{const L=[N.e("indicators"),N.em("indicators",l.direction)];return o(i)&&L.push(N.em("indicators","labels")),l.indicatorPosition==="outside"&&L.push(N.em("indicators","outside")),o(f)&&L.push(N.em("indicators","right")),L});function K(L){if(!l.motionBlur)return;const z=o(f)?`${N.namespace.value}-transitioning-vertical`:`${N.namespace.value}-transitioning`;L.currentTarget.classList.add(z)}function D(L){if(!l.motionBlur)return;const z=o(f)?`${N.namespace.value}-transitioning-vertical`:`${N.namespace.value}-transitioning`;L.currentTarget.classList.remove(z)}return t({activeIndex:s,setActiveItem:E,prev:C,next:w}),(L,z)=>(_(),V("div",{ref_key:"root",ref:a,class:T(o(P)),onMouseenter:Le(o(g),["stop"]),onMouseleave:Le(o(b),["stop"])},[o(r)?(_(),oe(an,{key:0,name:"carousel-arrow-left",persisted:""},{default:U(()=>[We(F("button",{type:"button",class:T([o(N).e("arrow"),o(N).em("arrow","left")]),"aria-label":o(O)("el.carousel.leftArrow"),onMouseenter:B=>o(v)("left"),onMouseleave:o(h),onClick:Le(B=>o(M)(o(s)-1),["stop"])},[H(o(Se),null,{default:U(()=>[H(o(dl))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[mt,(L.arrow==="always"||o(u))&&(l.loop||o(s)>0)]])]),_:1})):J("v-if",!0),o(r)?(_(),oe(an,{key:1,name:"carousel-arrow-right",persisted:""},{default:U(()=>[We(F("button",{type:"button",class:T([o(N).e("arrow"),o(N).em("arrow","right")]),"aria-label":o(O)("el.carousel.rightArrow"),onMouseenter:B=>o(v)("right"),onMouseleave:o(h),onClick:Le(B=>o(M)(o(s)+1),["stop"])},[H(o(Se),null,{default:U(()=>[H(o(Cn))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[mt,(L.arrow==="always"||o(u))&&(l.loop||o(s)[L.indicatorPosition!=="none"?(_(),V("ul",{key:0,class:T(o(W))},[(_(!0),V(Oe,null,ut(o(d),(B,A)=>We((_(),V("li",{key:A,class:T([o(N).e("indicator"),o(N).em("indicator",L.direction),o(N).is("active",A===o(s))]),onMouseenter:ne=>o(R)(A),onClick:Le(ne=>o(p)(A),["stop"])},[F("button",{class:T(o(N).e("button")),"aria-label":o(O)("el.carousel.indicator",{index:A+1})},[o(i)?(_(),V("span",{key:0},pe(B.props.label),1)):J("v-if",!0)],10,["aria-label"])],42,["onMouseenter","onClick"])),[[mt,o(S)(A)]])),128))],2)):J("v-if",!0)]),_:1}),l.motionBlur?(_(),V("svg",{key:2,xmlns:"http://www.w3.org/2000/svg",version:"1.1",style:{display:"none"}},[F("defs",null,[F("filter",{id:"elCarouselHorizontal"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"12,0"})]),F("filter",{id:"elCarouselVertical"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"0,10"})])])])):J("v-if",!0)],42,["onMouseenter","onMouseleave"]))}});var ay=fe(oy,[["__file","carousel.vue"]]);const sy=de({name:{type:String,default:""},label:{type:[String,Number],default:""}}),ry=e=>{const t=we(xd),n=lt(),l=I(),a=I(!1),s=I(0),r=I(1),i=I(!1),u=I(!1),c=I(!1),d=I(!1),{isCardType:f,isVertical:m,cardScale:v}=t;function h(w,k,S){const $=S-1,M=k-1,R=k+1,N=S/2;return k===0&&w===$?-1:k===$&&w===0?S:w=N?S+1:w>R&&w-k>=N?-2:w}function p(w,k){var S,$;const M=o(m)?((S=t.root.value)==null?void 0:S.offsetHeight)||0:(($=t.root.value)==null?void 0:$.offsetWidth)||0;return c.value?M*((2-v)*(w-k)+1)/4:w{var $;const M=o(f),R=($=t.items.value.length)!=null?$:Number.NaN,N=w===k;!M&&!vt(S)&&(d.value=N||w===S),!N&&R>2&&t.loop&&(w=h(w,k,R));const O=o(m);i.value=N,M?(c.value=Math.round(Math.abs(w-k))<=1,s.value=p(w,k),r.value=o(i)?1:v):s.value=g(w,k,O),u.value=!0,N&&l.value&&t.setContainerHeight(l.value.offsetHeight)};function E(){if(t&&o(f)){const w=t.items.value.findIndex(({uid:k})=>k===n.uid);t.setActiveItem(w)}}const C={props:e,states:kt({hover:a,translate:s,scale:r,active:i,ready:u,inStage:c,animating:d}),uid:n.uid,getVnode:()=>n.vnode,translateItem:b};return t.addItem(C),Nt(()=>{t.removeItem(C)}),{carouselItemRef:l,active:i,animating:d,hover:a,inStage:c,isVertical:m,translate:s,isCardType:f,scale:r,ready:u,handleItemClick:E}},iy=x({name:sr}),uy=x({...iy,props:sy,setup(e){const t=e,n=ue("carousel"),{carouselItemRef:l,active:a,animating:s,hover:r,inStage:i,isVertical:u,translate:c,isCardType:d,scale:f,ready:m,handleItemClick:v}=ry(t),h=y(()=>[n.e("item"),n.is("active",a.value),n.is("in-stage",i.value),n.is("hover",r.value),n.is("animating",s.value),{[n.em("item","card")]:d.value,[n.em("item","card-vertical")]:d.value&&u.value}]),p=y(()=>{const b=`${`translate${o(u)?"Y":"X"}`}(${o(c)}px)`,E=`scale(${o(f)})`;return{transform:[b,E].join(" ")}});return(g,b)=>We((_(),V("div",{ref_key:"carouselItemRef",ref:l,class:T(o(h)),style:_e(o(p)),onClick:o(v)},[o(d)?We((_(),V("div",{key:0,class:T(o(n).e("mask"))},null,2)),[[mt,!o(a)]]):J("v-if",!0),G(g.$slots,"default")],14,["onClick"])),[[mt,o(m)]])}});var zd=fe(uy,[["__file","carousel-item.vue"]]);const cy=He(ay,{CarouselItem:zd}),dy=At(zd),Hd={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:Jt,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},...cn(["ariaControls"])},Kd={[De]:e=>Ve(e)||Te(e)||_t(e),change:e=>Ve(e)||Te(e)||_t(e)},Oo=Symbol("checkboxGroupContextKey"),fy=({model:e,isChecked:t})=>{const n=we(Oo,void 0),l=y(()=>{var s,r;const i=(s=n==null?void 0:n.max)==null?void 0:s.value,u=(r=n==null?void 0:n.min)==null?void 0:r.value;return!vt(i)&&e.value.length>=i&&!t.value||!vt(u)&&e.value.length<=u&&t.value});return{isDisabled:fn(y(()=>(n==null?void 0:n.disabled.value)||l.value)),isLimitDisabled:l}},vy=(e,{model:t,isLimitExceeded:n,hasOwnLabel:l,isDisabled:a,isLabeledByFormItem:s})=>{const r=we(Oo,void 0),{formItem:i}=dn(),{emit:u}=lt();function c(h){var p,g,b,E;return[!0,e.trueValue,e.trueLabel].includes(h)?(g=(p=e.trueValue)!=null?p:e.trueLabel)!=null?g:!0:(E=(b=e.falseValue)!=null?b:e.falseLabel)!=null?E:!1}function d(h,p){u(nt,c(h),p)}function f(h){if(n.value)return;const p=h.target;u(nt,c(p.checked),h)}async function m(h){n.value||!l.value&&!a.value&&s.value&&(h.composedPath().some(b=>b.tagName==="LABEL")||(t.value=c([!1,e.falseValue,e.falseLabel].includes(t.value)),await Ee(),d(t.value,h)))}const v=y(()=>(r==null?void 0:r.validateEvent)||e.validateEvent);return ie(()=>e.modelValue,()=>{v.value&&(i==null||i.validate("change").catch(h=>void 0))}),{handleChange:f,onClickRoot:m}},py=e=>{const t=I(!1),{emit:n}=lt(),l=we(Oo,void 0),a=y(()=>vt(l)===!1),s=I(!1),r=y({get(){var i,u;return a.value?(i=l==null?void 0:l.modelValue)==null?void 0:i.value:(u=e.modelValue)!=null?u:t.value},set(i){var u,c;a.value&&ke(i)?(s.value=((u=l==null?void 0:l.max)==null?void 0:u.value)!==void 0&&i.length>(l==null?void 0:l.max.value)&&i.length>r.value.length,s.value===!1&&((c=l==null?void 0:l.changeEvent)==null||c.call(l,i))):(n(De,i),t.value=i)}});return{model:r,isGroup:a,isLimitExceeded:s}},hy=(e,t,{model:n})=>{const l=we(Oo,void 0),a=I(!1),s=y(()=>In(e.value)?e.label:e.value),r=y(()=>{const d=n.value;return _t(d)?d:ke(d)?yt(s.value)?d.map(Uo).some(f=>tn(f,s.value)):d.map(Uo).includes(s.value):d!=null?d===e.trueValue||d===e.trueLabel:!!d}),i=Gt(y(()=>{var d;return(d=l==null?void 0:l.size)==null?void 0:d.value}),{prop:!0}),u=Gt(y(()=>{var d;return(d=l==null?void 0:l.size)==null?void 0:d.value})),c=y(()=>!!t.default||!In(s.value));return{checkboxButtonSize:i,isChecked:r,isFocused:a,checkboxSize:u,hasOwnLabel:c,actualValue:s}},Wd=(e,t)=>{const{formItem:n}=dn(),{model:l,isGroup:a,isLimitExceeded:s}=py(e),{isFocused:r,isChecked:i,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:d,actualValue:f}=hy(e,t,{model:l}),{isDisabled:m}=fy({model:l,isChecked:i}),{inputId:v,isLabeledByFormItem:h}=Kn(e,{formItemContext:n,disableIdGeneration:d,disableIdManagement:a}),{handleChange:p,onClickRoot:g}=vy(e,{model:l,isLimitExceeded:s,hasOwnLabel:d,isDisabled:m,isLabeledByFormItem:h});return(()=>{function E(){var C,w;ke(l.value)&&!l.value.includes(f.value)?l.value.push(f.value):l.value=(w=(C=e.trueValue)!=null?C:e.trueLabel)!=null?w:!0}e.checked&&E()})(),ul({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>a.value&&In(e.value))),ul({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>!!e.trueLabel)),ul({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>!!e.falseLabel)),{inputId:v,isLabeledByFormItem:h,isChecked:i,isDisabled:m,isFocused:r,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:d,model:l,actualValue:f,handleChange:p,onClickRoot:g}},my=x({name:"ElCheckbox"}),gy=x({...my,props:Hd,emits:Kd,setup(e){const t=e,n=Xt(),{inputId:l,isLabeledByFormItem:a,isChecked:s,isDisabled:r,isFocused:i,checkboxSize:u,hasOwnLabel:c,model:d,actualValue:f,handleChange:m,onClickRoot:v}=Wd(t,n),h=ue("checkbox"),p=y(()=>[h.b(),h.m(u.value),h.is("disabled",r.value),h.is("bordered",t.border),h.is("checked",s.value)]),g=y(()=>[h.e("input"),h.is("disabled",r.value),h.is("checked",s.value),h.is("indeterminate",t.indeterminate),h.is("focus",i.value)]);return(b,E)=>(_(),oe(Ge(!o(c)&&o(a)?"span":"label"),{class:T(o(p)),"aria-controls":b.indeterminate?b.ariaControls:null,onClick:o(v)},{default:U(()=>{var C,w,k,S;return[F("span",{class:T(o(g))},[b.trueValue||b.falseValue||b.trueLabel||b.falseLabel?We((_(),V("input",{key:0,id:o(l),"onUpdate:modelValue":$=>gn(d)?d.value=$:null,class:T(o(h).e("original")),type:"checkbox",indeterminate:b.indeterminate,name:b.name,tabindex:b.tabindex,disabled:o(r),"true-value":(w=(C=b.trueValue)!=null?C:b.trueLabel)!=null?w:!0,"false-value":(S=(k=b.falseValue)!=null?k:b.falseLabel)!=null?S:!1,onChange:o(m),onFocus:$=>i.value=!0,onBlur:$=>i.value=!1,onClick:Le(()=>{},["stop"])},null,42,["id","onUpdate:modelValue","indeterminate","name","tabindex","disabled","true-value","false-value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(d)]]):We((_(),V("input",{key:1,id:o(l),"onUpdate:modelValue":$=>gn(d)?d.value=$:null,class:T(o(h).e("original")),type:"checkbox",indeterminate:b.indeterminate,disabled:o(r),value:o(f),name:b.name,tabindex:b.tabindex,onChange:o(m),onFocus:$=>i.value=!0,onBlur:$=>i.value=!1,onClick:Le(()=>{},["stop"])},null,42,["id","onUpdate:modelValue","indeterminate","disabled","value","name","tabindex","onChange","onFocus","onBlur","onClick"])),[[Ka,o(d)]]),F("span",{class:T(o(h).e("inner"))},null,2)],2),o(c)?(_(),V("span",{key:0,class:T(o(h).e("label"))},[G(b.$slots,"default"),b.$slots.default?J("v-if",!0):(_(),V(Oe,{key:0},[st(pe(b.label),1)],64))],2)):J("v-if",!0)]}),_:3},8,["class","aria-controls","onClick"]))}});var by=fe(gy,[["__file","checkbox.vue"]]);const yy=x({name:"ElCheckboxButton"}),Cy=x({...yy,props:Hd,emits:Kd,setup(e){const t=e,n=Xt(),{isFocused:l,isChecked:a,isDisabled:s,checkboxButtonSize:r,model:i,actualValue:u,handleChange:c}=Wd(t,n),d=we(Oo,void 0),f=ue("checkbox"),m=y(()=>{var h,p,g,b;const E=(p=(h=d==null?void 0:d.fill)==null?void 0:h.value)!=null?p:"";return{backgroundColor:E,borderColor:E,color:(b=(g=d==null?void 0:d.textColor)==null?void 0:g.value)!=null?b:"",boxShadow:E?`-1px 0 0 0 ${E}`:void 0}}),v=y(()=>[f.b("button"),f.bm("button",r.value),f.is("disabled",s.value),f.is("checked",a.value),f.is("focus",l.value)]);return(h,p)=>{var g,b,E,C;return _(),V("label",{class:T(o(v))},[h.trueValue||h.falseValue||h.trueLabel||h.falseLabel?We((_(),V("input",{key:0,"onUpdate:modelValue":w=>gn(i)?i.value=w:null,class:T(o(f).be("button","original")),type:"checkbox",name:h.name,tabindex:h.tabindex,disabled:o(s),"true-value":(b=(g=h.trueValue)!=null?g:h.trueLabel)!=null?b:!0,"false-value":(C=(E=h.falseValue)!=null?E:h.falseLabel)!=null?C:!1,onChange:o(c),onFocus:w=>l.value=!0,onBlur:w=>l.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","name","tabindex","disabled","true-value","false-value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(i)]]):We((_(),V("input",{key:1,"onUpdate:modelValue":w=>gn(i)?i.value=w:null,class:T(o(f).be("button","original")),type:"checkbox",name:h.name,tabindex:h.tabindex,disabled:o(s),value:o(u),onChange:o(c),onFocus:w=>l.value=!0,onBlur:w=>l.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","name","tabindex","disabled","value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(i)]]),h.$slots.default||h.label?(_(),V("span",{key:2,class:T(o(f).be("button","inner")),style:_e(o(a)?o(m):void 0)},[G(h.$slots,"default",{},()=>[st(pe(h.label),1)])],6)):J("v-if",!0)],2)}}});var jd=fe(Cy,[["__file","checkbox-button.vue"]]);const wy=de({modelValue:{type:Y(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:Jt,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},...cn(["ariaLabel"])}),ky={[De]:e=>ke(e),change:e=>ke(e)},Sy=x({name:"ElCheckboxGroup"}),Ey=x({...Sy,props:wy,emits:ky,setup(e,{emit:t}){const n=e,l=ue("checkbox"),{formItem:a}=dn(),{inputId:s,isLabeledByFormItem:r}=Kn(n,{formItemContext:a}),i=async c=>{t(De,c),await Ee(),t(nt,c)},u=y({get(){return n.modelValue},set(c){i(c)}});return rt(Oo,{...An(nn(n),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:u,changeEvent:i}),ie(()=>n.modelValue,()=>{n.validateEvent&&(a==null||a.validate("change").catch(c=>void 0))}),(c,d)=>{var f;return _(),oe(Ge(c.tag),{id:o(s),class:T(o(l).b("group")),role:"group","aria-label":o(r)?void 0:c.ariaLabel||"checkbox-group","aria-labelledby":o(r)?(f=o(a))==null?void 0:f.labelId:void 0},{default:U(()=>[G(c.$slots,"default")]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var Ud=fe(Ey,[["__file","checkbox-group.vue"]]);const Hn=He(by,{CheckboxButton:jd,CheckboxGroup:Ud}),_y=At(jd),Yd=At(Ud),qd=de({modelValue:{type:[String,Number,Boolean],default:void 0},size:Jt,disabled:Boolean,label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),Ty=de({...qd,border:Boolean}),Gd={[De]:e=>Ve(e)||Te(e)||_t(e),[nt]:e=>Ve(e)||Te(e)||_t(e)},Xd=Symbol("radioGroupKey"),Zd=(e,t)=>{const n=I(),l=we(Xd,void 0),a=y(()=>!!l),s=y(()=>In(e.value)?e.label:e.value),r=y({get(){return a.value?l.modelValue:e.modelValue},set(f){a.value?l.changeEvent(f):t&&t(De,f),n.value.checked=e.modelValue===s.value}}),i=Gt(y(()=>l==null?void 0:l.size)),u=fn(y(()=>l==null?void 0:l.disabled)),c=I(!1),d=y(()=>u.value||a.value&&r.value!==s.value?-1:0);return ul({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},y(()=>a.value&&In(e.value))),{radioRef:n,isGroup:a,radioGroup:l,focus:c,size:i,disabled:u,tabIndex:d,modelValue:r,actualValue:s}},$y=x({name:"ElRadio"}),Ny=x({...$y,props:Ty,emits:Gd,setup(e,{emit:t}){const n=e,l=ue("radio"),{radioRef:a,radioGroup:s,focus:r,size:i,disabled:u,modelValue:c,actualValue:d}=Zd(n,t);function f(){Ee(()=>t(nt,c.value))}return(m,v)=>{var h;return _(),V("label",{class:T([o(l).b(),o(l).is("disabled",o(u)),o(l).is("focus",o(r)),o(l).is("bordered",m.border),o(l).is("checked",o(c)===o(d)),o(l).m(o(i))])},[F("span",{class:T([o(l).e("input"),o(l).is("disabled",o(u)),o(l).is("checked",o(c)===o(d))])},[We(F("input",{ref_key:"radioRef",ref:a,"onUpdate:modelValue":p=>gn(c)?c.value=p:null,class:T(o(l).e("original")),value:o(d),name:m.name||((h=o(s))==null?void 0:h.name),disabled:o(u),checked:o(c)===o(d),type:"radio",onFocus:p=>r.value=!0,onBlur:p=>r.value=!1,onChange:f,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","checked","onFocus","onBlur","onClick"]),[[Rc,o(c)]]),F("span",{class:T(o(l).e("inner"))},null,2)],2),F("span",{class:T(o(l).e("label")),onKeydown:Le(()=>{},["stop"])},[G(m.$slots,"default",{},()=>[st(pe(m.label),1)])],42,["onKeydown"])],2)}}});var Iy=fe(Ny,[["__file","radio.vue"]]);const My=de({...qd}),Ry=x({name:"ElRadioButton"}),Py=x({...Ry,props:My,setup(e){const t=e,n=ue("radio"),{radioRef:l,focus:a,size:s,disabled:r,modelValue:i,radioGroup:u,actualValue:c}=Zd(t),d=y(()=>({backgroundColor:(u==null?void 0:u.fill)||"",borderColor:(u==null?void 0:u.fill)||"",boxShadow:u!=null&&u.fill?`-1px 0 0 0 ${u.fill}`:"",color:(u==null?void 0:u.textColor)||""}));return(f,m)=>{var v;return _(),V("label",{class:T([o(n).b("button"),o(n).is("active",o(i)===o(c)),o(n).is("disabled",o(r)),o(n).is("focus",o(a)),o(n).bm("button",o(s))])},[We(F("input",{ref_key:"radioRef",ref:l,"onUpdate:modelValue":h=>gn(i)?i.value=h:null,class:T(o(n).be("button","original-radio")),value:o(c),type:"radio",name:f.name||((v=o(u))==null?void 0:v.name),disabled:o(r),onFocus:h=>a.value=!0,onBlur:h=>a.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","onFocus","onBlur","onClick"]),[[Rc,o(i)]]),F("span",{class:T(o(n).be("button","inner")),style:_e(o(i)===o(c)?o(d):{}),onKeydown:Le(()=>{},["stop"])},[G(f.$slots,"default",{},()=>[st(pe(f.label),1)])],46,["onKeydown"])],2)}}});var Jd=fe(Py,[["__file","radio-button.vue"]]);const Oy=de({id:{type:String,default:void 0},size:Jt,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},...cn(["ariaLabel"])}),Ly=Gd,By=x({name:"ElRadioGroup"}),Vy=x({...By,props:Oy,emits:Ly,setup(e,{emit:t}){const n=e,l=ue("radio"),a=sn(),s=I(),{formItem:r}=dn(),{inputId:i,isLabeledByFormItem:u}=Kn(n,{formItemContext:r}),c=f=>{t(De,f),Ee(()=>t(nt,f))};Xe(()=>{const f=s.value.querySelectorAll("[type=radio]"),m=f[0];!Array.from(f).some(v=>v.checked)&&m&&(m.tabIndex=0)});const d=y(()=>n.name||a.value);return rt(Xd,kt({...nn(n),changeEvent:c,name:d})),ie(()=>n.modelValue,()=>{n.validateEvent&&(r==null||r.validate("change").catch(f=>void 0))}),(f,m)=>(_(),V("div",{id:o(i),ref_key:"radioGroupRef",ref:s,class:T(o(l).b("group")),role:"radiogroup","aria-label":o(u)?void 0:f.ariaLabel||"radio-group","aria-labelledby":o(u)?o(r).labelId:void 0},[G(f.$slots,"default")],10,["id","aria-label","aria-labelledby"]))}});var Qd=fe(Vy,[["__file","radio-group.vue"]]);const ef=He(Iy,{RadioButton:Jd,RadioGroup:Qd}),Dy=At(Qd),Ay=At(Jd);function Fy(e){return!!(ke(e)?e.every(({type:t})=>t===jl):(e==null?void 0:e.type)===jl)}var xy=x({name:"NodeContent",props:{node:{type:Object,required:!0},renderLabelFn:Function},setup(e){const t=ue("cascader-node"),{renderLabelFn:n,node:l}=e,{data:a,label:s}=l,r=()=>{const i=n==null?void 0:n({node:l,data:a});return Fy(i)?s:i??s};return()=>H("span",{class:t.e("label")},[r()])}});const li=Symbol(),zy=x({name:"ElCascaderNode"}),Hy=x({...zy,props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(e,{emit:t}){const n=e,l=we(li),a=ue("cascader-node"),s=y(()=>l.isHoverMenu),r=y(()=>l.config.multiple),i=y(()=>l.config.checkStrictly),u=y(()=>{var $;return($=l.checkedNodes[0])==null?void 0:$.uid}),c=y(()=>n.node.isDisabled),d=y(()=>n.node.isLeaf),f=y(()=>i.value&&!d.value||!c.value),m=y(()=>h(l.expandingNode)),v=y(()=>i.value&&l.checkedNodes.some(h)),h=$=>{var M;const{level:R,uid:N}=n.node;return((M=$==null?void 0:$.pathNodes[R-1])==null?void 0:M.uid)===N},p=()=>{m.value||l.expandNode(n.node)},g=$=>{const{node:M}=n;$!==M.checked&&l.handleCheckChange(M,$)},b=()=>{l.lazyLoad(n.node,()=>{d.value||p()})},E=$=>{s.value&&(C(),!d.value&&t("expand",$))},C=()=>{const{node:$}=n;!f.value||$.loading||($.loaded?p():b())},w=()=>{s.value&&!d.value||(d.value&&!c.value&&!i.value&&!r.value?S(!0):C())},k=$=>{i.value?(g($),n.node.loaded&&p()):S($)},S=$=>{n.node.loaded?(g($),!i.value&&p()):b()};return($,M)=>(_(),V("li",{id:`${e.menuId}-${e.node.uid}`,role:"menuitem","aria-haspopup":!o(d),"aria-owns":o(d)?void 0:e.menuId,"aria-expanded":o(m),tabindex:o(f)?-1:void 0,class:T([o(a).b(),o(a).is("selectable",o(i)),o(a).is("active",e.node.checked),o(a).is("disabled",!o(f)),o(m)&&"in-active-path",o(v)&&"in-checked-path"]),onMouseenter:E,onFocus:E,onClick:w},[J(" prefix "),o(r)?(_(),oe(o(Hn),{key:0,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:o(c),onClick:Le(()=>{},["stop"]),"onUpdate:modelValue":k},null,8,["model-value","indeterminate","disabled","onClick"])):o(i)?(_(),oe(o(ef),{key:1,"model-value":o(u),label:e.node.uid,disabled:o(c),"onUpdate:modelValue":k,onClick:Le(()=>{},["stop"])},{default:U(()=>[J(` +import{g as lt,i as we,r as I,c as y,u as o,a as ke,b as yt,d as Ve,e as bt,f as gn,h as rn,w as _p,j as Qe,p as rt,k as Ar,l as x,s as Lt,m as Tp,n as nu,o as ie,q as Xe,t as xt,v as bn,x as V,y as _,z as F,A as G,B as _e,C as T,D as Ee,N as Bt,E as et,F as $p,G as Xt,H as wt,I as oe,J as U,K as We,L as J,M as Ge,O as st,P as pe,Q as Oe,R as H,S as mt,T as an,U as Ha,V as cs,W as pl,X as Ft,Y as Le,Z as Nt,_ as kt,$ as Fr,a0 as hl,a1 as Np,a2 as Nc,a3 as jl,a4 as ua,a5 as Ip,a6 as xr,a7 as zr,a8 as Ic,a9 as Mp,aa as Tt,ab as Mn,ac as ut,ad as Mc,ae as wo,af as On,ag as cl,ah as Dt,ai as Re,aj as Oa,ak as Uo,al as Ka,am as nn,an as Rc,ao as Pc,ap as Yo,aq as ds,ar as Rp,as as Pp,at as Op,au as Ul,av as ht,aw as Lp,ax as Oc,ay as $l,az as Bp,aA as Vp,aB as nr,aC as lr,aD as fs,aE as Dp,aF as Lc,aG as Il,aH as Ap,aI as Fp,aJ as Bc,aK as xp,aL as zp,aM as Hp,aN as Kp,aO as Wp}from"./vue-vendor-Ig-GgGwA.js";import{i as qt,g as Yt,f as qo,s as jp,p as An,E as Xl,y as Up,a as Yp,d as Ln,T as vo,b as Ke,l as Vc,t as Hl,c as tn,e as qp,h as Wa,j as ln,u as Ds,k as Hr,m as Gp,n as Xp,w as Zp,o as Jp,q as Qp,r as eh,v as th,x as lu,S as nh,z as Dc,A as lh,B as oh,D as ca,F as Ac,G as Fc,Y as ah,H as xc,I as zc,J as Hc,K as Kc,L as sh,M as rh,N as ih,O as uh}from"./vendor-BDiMbLwQ.js";const ch="2.10.4",ou=Symbol("INSTALLED_KEY"),Wc=Symbol(),Ko="el",dh="is-",Bl=(e,t,n,l,a)=>{let s=`${e}-${t}`;return n&&(s+=`-${n}`),l&&(s+=`__${l}`),a&&(s+=`--${a}`),s},jc=Symbol("namespaceContextKey"),Kr=e=>{const t=e||(lt()?we(jc,I(Ko)):I(Ko));return y(()=>o(t)||Ko)},ue=(e,t)=>{const n=Kr(t);return{namespace:n,b:(p="")=>Bl(n.value,e,p,"",""),e:p=>p?Bl(n.value,e,"",p,""):"",m:p=>p?Bl(n.value,e,"","",p):"",be:(p,g)=>p&&g?Bl(n.value,e,p,g,""):"",em:(p,g)=>p&&g?Bl(n.value,e,"",p,g):"",bm:(p,g)=>p&&g?Bl(n.value,e,p,"",g):"",bem:(p,g,b)=>p&&g&&b?Bl(n.value,e,p,g,b):"",is:(p,...g)=>{const b=g.length>=1?g[0]:!0;return p&&b?`${dh}${p}`:""},cssVar:p=>{const g={};for(const b in p)p[b]&&(g[`--${n.value}-${b}`]=p[b]);return g},cssVarName:p=>`--${n.value}-${p}`,cssVarBlock:p=>{const g={};for(const b in p)p[b]&&(g[`--${n.value}-${e}-${b}`]=p[b]);return g},cssVarBlockName:p=>`--${n.value}-${e}-${p}`}},vt=e=>e===void 0,_t=e=>typeof e=="boolean",Te=e=>typeof e=="number",Pn=e=>!e&&e!==0||ke(e)&&e.length===0||yt(e)&&!Object.keys(e).length,_n=e=>typeof Element>"u"?!1:e instanceof Element,In=e=>qt(e),fh=e=>Ve(e)?!Number.isNaN(Number(e)):!1,vs=e=>e===window;class vh extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function jt(e,t){throw new vh(`[${e}] ${t}`)}const au={current:0},su=I(0),Uc=2e3,ru=Symbol("elZIndexContextKey"),Yc=Symbol("zIndexContextKey"),Mo=e=>{const t=lt()?we(ru,au):au,n=e||(lt()?we(Yc,void 0):void 0),l=y(()=>{const r=o(n);return Te(r)?r:Uc}),a=y(()=>l.value+su.value),s=()=>(t.current++,su.value=t.current,a.value);return!bt&&we(ru),{initialZIndex:l,currentZIndex:a,nextZIndex:s}};var ph={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color.",alphaLabel:"pick alpha value"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},mention:{loading:"Loading"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const hh=e=>(t,n)=>mh(t,n,o(e)),mh=(e,t,n)=>Yt(n,e,e).replace(/\{(\w+)\}/g,(l,a)=>{var s;return`${(s=t==null?void 0:t[a])!=null?s:`{${a}}`}`}),gh=e=>{const t=y(()=>o(e).name),n=gn(e)?e:I(e);return{lang:t,locale:n,t:hh(e)}},qc=Symbol("localeContextKey"),pt=e=>{const t=e||we(qc,I());return gh(y(()=>t.value||ph))},Gc="__epPropKey",Y=e=>e,bh=e=>yt(e)&&!!e[Gc],Un=(e,t)=>{if(!yt(e)||bh(e))return e;const{values:n,required:l,default:a,type:s,validator:r}=e,u={type:s,required:!!l,validator:n||r?c=>{let d=!1,f=[];if(n&&(f=Array.from(n),rn(e,"default")&&f.push(a),d||(d=f.includes(c))),r&&(d||(d=r(c))),!d&&f.length>0){const m=[...new Set(f)].map(v=>JSON.stringify(v)).join(", ");_p(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${m}], got value ${JSON.stringify(c)}.`)}return d}:void 0,[Gc]:!0};return rn(e,"default")&&(u.default=a),u},de=e=>qo(Object.entries(e).map(([t,n])=>[t,Un(n,t)])),tl=["","default","small","large"],Jt=Un({type:String,values:tl,required:!1}),Xc=Symbol("size"),Zc=()=>{const e=we(Xc,{});return y(()=>o(e.size)||"")},Jc=Symbol("emptyValuesContextKey"),yh=["",void 0,null],Ch=void 0,Zl=de({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>Qe(e)?!e():!e}}),da=(e,t)=>{const n=lt()?we(Jc,I({})):I({}),l=y(()=>e.emptyValues||n.value.emptyValues||yh),a=y(()=>Qe(e.valueOnClear)?e.valueOnClear():e.valueOnClear!==void 0?e.valueOnClear:Qe(n.value.valueOnClear)?n.value.valueOnClear():n.value.valueOnClear!==void 0?n.value.valueOnClear:t!==void 0?t:Ch),s=r=>l.value.includes(r);return l.value.includes(a.value),{emptyValues:l,valueOnClear:a,isEmptyValue:s}},ko=e=>Object.keys(e),Qc=e=>Object.entries(e),Wo=(e,t,n)=>({get value(){return Yt(e,t,n)},set value(l){jp(e,t,l)}}),ja=I();function fa(e,t=void 0){const n=lt()?we(Wc,ja):ja;return e?y(()=>{var l,a;return(a=(l=n.value)==null?void 0:l[e])!=null?a:t}):n}function ps(e,t){const n=fa(),l=ue(e,y(()=>{var i;return((i=n.value)==null?void 0:i.namespace)||Ko})),a=pt(y(()=>{var i;return(i=n.value)==null?void 0:i.locale})),s=Mo(y(()=>{var i;return((i=n.value)==null?void 0:i.zIndex)||Uc})),r=y(()=>{var i;return o(t)||((i=n.value)==null?void 0:i.size)||""});return Wr(y(()=>o(n)||{})),{ns:l,locale:a,zIndex:s,size:r}}const Wr=(e,t,n=!1)=>{var l;const a=!!lt(),s=a?fa():void 0,r=(l=t==null?void 0:t.provide)!=null?l:a?rt:void 0;if(!r)return;const i=y(()=>{const u=o(e);return s!=null&&s.value?wh(s.value,u):u});return r(Wc,i),r(qc,y(()=>i.value.locale)),r(jc,y(()=>i.value.namespace)),r(Yc,y(()=>i.value.zIndex)),r(Xc,{size:y(()=>i.value.size||"")}),r(Jc,y(()=>({emptyValues:i.value.emptyValues,valueOnClear:i.value.valueOnClear}))),(n||!ja.value)&&(ja.value=i.value),i},wh=(e,t)=>{const n=[...new Set([...ko(e),...ko(t)])],l={};for(const a of n)l[a]=t[a]!==void 0?t[a]:e[a];return l},kh=(e=[])=>({version:ch,install:(n,l)=>{n[ou]||(n[ou]=!0,e.forEach(a=>n.use(a)),l&&Wr(l,n,!0))}}),De="update:modelValue",nt="change",Zt="input",Sh=de({zIndex:{type:Y([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),Eh={scroll:({scrollTop:e,fixed:t})=>Te(e)&&_t(t),[nt]:e=>_t(e)};var fe=(e,t)=>{const n=e.__vccOpts||e;for(const[l,a]of t)n[l]=a;return n};function _h(e,t,n,l){const a=n-t;return e/=l/2,e<1?a/2*e*e*e+t:a/2*((e-=2)*e*e+2)+t}const Ml=e=>bt?window.requestAnimationFrame(e):setTimeout(e,16),Yl=e=>bt?window.cancelAnimationFrame(e):clearTimeout(e),ed=(e="")=>e.split(" ").filter(t=>!!t.trim()),Nn=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},Fn=(e,t)=>{!e||!t.trim()||e.classList.add(...ed(t))},yn=(e,t)=>{!e||!t.trim()||e.classList.remove(...ed(t))},rl=(e,t)=>{var n;if(!bt||!e||!t)return"";let l=Ar(t);l==="float"&&(l="cssFloat");try{const a=e.style[l];if(a)return a;const s=(n=document.defaultView)==null?void 0:n.getComputedStyle(e,"");return s?s[l]:""}catch{return e.style[l]}},td=(e,t,n)=>{if(!(!e||!t))if(yt(t))Qc(t).forEach(([l,a])=>td(e,l,a));else{const l=Ar(t);e.style[l]=n}};function zt(e,t="px"){if(!e)return"";if(Te(e)||fh(e))return`${e}${t}`;if(Ve(e))return e}const Th=(e,t)=>{if(!bt)return!1;const n={undefined:"overflow",true:"overflow-y",false:"overflow-x"}[String(t)],l=rl(e,n);return["scroll","auto","overlay"].some(a=>l.includes(a))},jr=(e,t)=>{if(!bt)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(Th(n,t))return n;n=n.parentNode}return n};let wa;const nd=e=>{var t;if(!bt)return 0;if(wa!==void 0)return wa;const n=document.createElement("div");n.className=`${e}-scrollbar__wrap`,n.style.visibility="hidden",n.style.width="100px",n.style.position="absolute",n.style.top="-9999px",document.body.appendChild(n);const l=n.offsetWidth;n.style.overflow="scroll";const a=document.createElement("div");a.style.width="100%",n.appendChild(a);const s=a.offsetWidth;return(t=n.parentNode)==null||t.removeChild(n),wa=l-s,wa};function Ur(e,t){if(!bt)return;if(!t){e.scrollTop=0;return}const n=[];let l=t.offsetParent;for(;l!==null&&e!==l&&e.contains(l);)n.push(l),l=l.offsetParent;const a=t.offsetTop+n.reduce((u,c)=>u+c.offsetTop,0),s=a+t.offsetHeight,r=e.scrollTop,i=r+e.clientHeight;ai&&(e.scrollTop=s-e.clientHeight)}function $h(e,t,n,l,a){const s=Date.now();let r;const i=()=>{const c=Date.now()-s,d=_h(c>l?l:c,t,n,l);vs(e)?e.scrollTo(window.pageXOffset,d):e.scrollTop=d,c{r&&Yl(r)}}const iu=(e,t)=>vs(t)?e.ownerDocument.documentElement:t,uu=e=>vs(e)?window.scrollY:e.scrollTop,ld="ElAffix",Nh=x({name:ld}),Ih=x({...Nh,props:Sh,emits:Eh,setup(e,{expose:t,emit:n}){const l=e,a=ue("affix"),s=Lt(),r=Lt(),i=Lt(),{height:u}=Tp(),{height:c,width:d,top:f,bottom:m,update:v}=nu(r,{windowScroll:!1}),h=nu(s),p=I(!1),g=I(0),b=I(0),E=y(()=>({height:p.value?`${c.value}px`:"",width:p.value?`${d.value}px`:""})),C=y(()=>{if(!p.value)return{};const $=l.offset?zt(l.offset):0;return{height:`${c.value}px`,width:`${d.value}px`,top:l.position==="top"?$:"",bottom:l.position==="bottom"?$:"",transform:b.value?`translateY(${b.value}px)`:"",zIndex:l.zIndex}}),w=()=>{if(!i.value)return;g.value=i.value instanceof Window?document.documentElement.scrollTop:i.value.scrollTop||0;const{position:$,target:M,offset:R}=l,N=R+c.value;if($==="top")if(M){const O=h.bottom.value-N;p.value=R>f.value&&h.bottom.value>0,b.value=O<0?O:0}else p.value=R>f.value;else if(M){const O=u.value-h.top.value-N;p.value=u.value-Rh.top.value,b.value=O<0?-O:0}else p.value=u.value-R{if(!p.value){v();return}p.value=!1,await Ee(),v(),p.value=!0},S=async()=>{v(),await Ee(),n("scroll",{scrollTop:g.value,fixed:p.value})};return ie(p,$=>n(nt,$)),Xe(()=>{var $;l.target?(s.value=($=document.querySelector(l.target))!=null?$:void 0,s.value||jt(ld,`Target does not exist: ${l.target}`)):s.value=document.documentElement,i.value=jr(r.value,!0),v()}),xt(i,"scroll",S),bn(w),t({update:w,updateRoot:k}),($,M)=>(_(),V("div",{ref_key:"root",ref:r,class:T(o(a).b()),style:_e(o(E))},[F("div",{class:T({[o(a).m("fixed")]:p.value}),style:_e(o(C))},[G($.$slots,"default")],6)],6))}});var Mh=fe(Ih,[["__file","affix.vue"]]);const He=(e,t)=>{if(e.install=n=>{for(const l of[e,...Object.values(t??{})])n.component(l.name,l)},t)for(const[n,l]of Object.entries(t))e[n]=l;return e},od=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),Rh=(e,t)=>(e.install=n=>{n.directive(t,e)},e),At=e=>(e.install=Bt,e),Ph=He(Mh),Oh=de({size:{type:Y([Number,String])},color:{type:String}}),Lh=x({name:"ElIcon",inheritAttrs:!1}),Bh=x({...Lh,props:Oh,setup(e){const t=e,n=ue("icon"),l=y(()=>{const{size:a,color:s}=t;return!a&&!s?{}:{fontSize:vt(a)?void 0:zt(a),"--color":s}});return(a,s)=>(_(),V("i",et({class:o(n).b(),style:o(l)},a.$attrs),[G(a.$slots,"default")],16))}});var Vh=fe(Bh,[["__file","icon.vue"]]);const Se=He(Vh);function cu(){let e;const t=(l,a)=>{n(),e=window.setTimeout(l,a)},n=()=>window.clearTimeout(e);return $p(()=>n()),{registerTimeout:t,cancelTimeout:n}}const ad=de({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),sd=({showAfter:e,hideAfter:t,autoClose:n,open:l,close:a})=>{const{registerTimeout:s}=cu(),{registerTimeout:r,cancelTimeout:i}=cu();return{onOpen:d=>{s(()=>{l(d);const f=o(n);Te(f)&&f>0&&r(()=>{a(d)},f)},o(e))},onClose:d=>{i(),s(()=>{a(d)},o(t))}}};/*! Element Plus Icons Vue v2.3.1 */var Dh=x({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"})]))}}),nl=Dh,Ah=x({name:"ArrowLeft",__name:"arrow-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"})]))}}),dl=Ah,Fh=x({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),Cn=Fh,xh=x({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),hs=xh,zh=x({name:"Back",__name:"back",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"}),F("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"})]))}}),Hh=zh,Kh=x({name:"Calendar",__name:"calendar",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"})]))}}),Wh=Kh,jh=x({name:"CaretRight",__name:"caret-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 192v640l384-320.064z"})]))}}),rd=jh,Uh=x({name:"CaretTop",__name:"caret-top",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 320 192 704h639.936z"})]))}}),Yh=Uh,qh=x({name:"Check",__name:"check",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"})]))}}),va=qh,Gh=x({name:"CircleCheckFilled",__name:"circle-check-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Xh=Gh,Zh=x({name:"CircleCheck",__name:"circle-check",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"})]))}}),Yr=Zh,Jh=x({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),qr=Jh,Qh=x({name:"CircleClose",__name:"circle-close",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"}),F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),ml=Qh,em=x({name:"Clock",__name:"clock",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"}),F("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"})]))}}),id=em,tm=x({name:"Close",__name:"close",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),zn=tm,nm=x({name:"DArrowLeft",__name:"d-arrow-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z"})]))}}),Rl=nm,lm=x({name:"DArrowRight",__name:"d-arrow-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z"})]))}}),Pl=lm,om=x({name:"Delete",__name:"delete",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),am=om,sm=x({name:"Document",__name:"document",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z"})]))}}),rm=sm,im=x({name:"FullScreen",__name:"full-screen",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z"})]))}}),um=im,cm=x({name:"Hide",__name:"hide",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z"}),F("path",{fill:"currentColor",d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z"})]))}}),dm=cm,fm=x({name:"InfoFilled",__name:"info-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Go=fm,vm=x({name:"Loading",__name:"loading",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"})]))}}),Qn=vm,pm=x({name:"Minus",__name:"minus",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"})]))}}),hm=pm,mm=x({name:"MoreFilled",__name:"more-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"})]))}}),du=mm,gm=x({name:"More",__name:"more",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),bm=gm,ym=x({name:"PictureFilled",__name:"picture-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384"})]))}}),Cm=ym,wm=x({name:"Plus",__name:"plus",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),ud=wm,km=x({name:"QuestionFilled",__name:"question-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"})]))}}),Sm=km,Em=x({name:"RefreshLeft",__name:"refresh-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"})]))}}),_m=Em,Tm=x({name:"RefreshRight",__name:"refresh-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z"})]))}}),$m=Tm,Nm=x({name:"ScaleToOriginal",__name:"scale-to-original",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118M512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412M512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512"})]))}}),Im=Nm,Mm=x({name:"Search",__name:"search",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704"})]))}}),Rm=Mm,Pm=x({name:"SortDown",__name:"sort-down",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0"})]))}}),Om=Pm,Lm=x({name:"SortUp",__name:"sort-up",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248"})]))}}),Bm=Lm,Vm=x({name:"StarFilled",__name:"star-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z"})]))}}),ka=Vm,Dm=x({name:"Star",__name:"star",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"})]))}}),Am=Dm,Fm=x({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),cd=Fm,xm=x({name:"View",__name:"view",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),zm=xm,Hm=x({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),ms=Hm,Km=x({name:"ZoomIn",__name:"zoom-in",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"})]))}}),dd=Km,Wm=x({name:"ZoomOut",__name:"zoom-out",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64"})]))}}),jm=Wm;const $t=Y([String,Object,Function]),fd={Close:zn},Gr={Close:zn,SuccessFilled:cd,InfoFilled:Go,WarningFilled:ms,CircleCloseFilled:qr},Ol={primary:Go,success:cd,warning:ms,error:qr,info:Go},gs={validating:Qn,success:Yr,error:ml},Um=["light","dark"],Ym=de({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:ko(Ol),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:Um,default:"light"},...ad}),qm={open:()=>!0,close:e=>vt(e)||e instanceof Event},Gm=x({name:"ElAlert"}),Xm=x({...Gm,props:Ym,emits:qm,setup(e,{emit:t}){const n=e,{Close:l}=Gr,a=Xt(),s=ue("alert"),r=I(!1),i=y(()=>Ol[n.type]),u=y(()=>!!(n.description||a.default)),c=()=>{r.value=!0,t("open")},d=v=>{r.value=!1,t("close",v)},{onOpen:f,onClose:m}=sd({showAfter:wt(n,"showAfter"),hideAfter:wt(n,"hideAfter"),autoClose:wt(n,"autoClose"),open:c,close:d});return bt&&f(),(v,h)=>(_(),oe(an,{name:o(s).b("fade"),persisted:""},{default:U(()=>[We(F("div",{class:T([o(s).b(),o(s).m(v.type),o(s).is("center",v.center),o(s).is(v.effect)]),role:"alert"},[v.showIcon&&(v.$slots.icon||o(i))?(_(),oe(o(Se),{key:0,class:T([o(s).e("icon"),{[o(s).is("big")]:o(u)}])},{default:U(()=>[G(v.$slots,"icon",{},()=>[(_(),oe(Ge(o(i))))])]),_:3},8,["class"])):J("v-if",!0),F("div",{class:T(o(s).e("content"))},[v.title||v.$slots.title?(_(),V("span",{key:0,class:T([o(s).e("title"),{"with-description":o(u)}])},[G(v.$slots,"title",{},()=>[st(pe(v.title),1)])],2)):J("v-if",!0),o(u)?(_(),V("p",{key:1,class:T(o(s).e("description"))},[G(v.$slots,"default",{},()=>[st(pe(v.description),1)])],2)):J("v-if",!0),v.closable?(_(),V(Oe,{key:2},[v.closeText?(_(),V("div",{key:0,class:T([o(s).e("close-btn"),o(s).is("customed")]),onClick:d},pe(v.closeText),3)):(_(),oe(o(Se),{key:1,class:T(o(s).e("close-btn")),onClick:o(m)},{default:U(()=>[H(o(l))]),_:1},8,["class","onClick"]))],64)):J("v-if",!0)],2)],2),[[mt,r.value]])]),_:3},8,["name"]))}});var Zm=fe(Xm,[["__file","alert.vue"]]);const Jm=He(Zm),Xr=()=>bt&&/firefox/i.test(window.navigator.userAgent);let Tn;const Qm={height:"0",visibility:"hidden",overflow:Xr()?"":"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0"},eg=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function tg(e){const t=window.getComputedStyle(e),n=t.getPropertyValue("box-sizing"),l=Number.parseFloat(t.getPropertyValue("padding-bottom"))+Number.parseFloat(t.getPropertyValue("padding-top")),a=Number.parseFloat(t.getPropertyValue("border-bottom-width"))+Number.parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:eg.map(r=>[r,t.getPropertyValue(r)]),paddingSize:l,borderSize:a,boxSizing:n}}function fu(e,t=1,n){var l;Tn||(Tn=document.createElement("textarea"),document.body.appendChild(Tn));const{paddingSize:a,borderSize:s,boxSizing:r,contextStyle:i}=tg(e);i.forEach(([f,m])=>Tn==null?void 0:Tn.style.setProperty(f,m)),Object.entries(Qm).forEach(([f,m])=>Tn==null?void 0:Tn.style.setProperty(f,m,"important")),Tn.value=e.value||e.placeholder||"";let u=Tn.scrollHeight;const c={};r==="border-box"?u=u+s:r==="content-box"&&(u=u-a),Tn.value="";const d=Tn.scrollHeight-a;if(Te(t)){let f=d*t;r==="border-box"&&(f=f+a+s),u=Math.max(f,u),c.minHeight=`${f}px`}if(Te(n)){let f=d*n;r==="border-box"&&(f=f+a+s),u=Math.min(f,u)}return c.height=`${u}px`,(l=Tn.parentNode)==null||l.removeChild(Tn),Tn=void 0,c}const Vt=e=>e,ng=de({ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical","undefined"]},ariaControls:String}),cn=e=>An(ng,e),pa=de({id:{type:String,default:void 0},size:Jt,disabled:Boolean,modelValue:{type:Y([String,Number,Object]),default:""},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:Y([Boolean,Object]),default:!1},autocomplete:{type:String,default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,showPassword:Boolean,showWordLimit:Boolean,suffixIcon:{type:$t},prefixIcon:{type:$t},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:Y([Object,Array,String]),default:()=>Vt({})},autofocus:Boolean,rows:{type:Number,default:2},...cn(["ariaLabel"]),inputmode:{type:Y(String),default:void 0},name:String}),lg={[De]:e=>Ve(e),input:e=>Ve(e),change:e=>Ve(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},og=["class","style"],ag=/^on[A-Z]/,bs=(e={})=>{const{excludeListeners:t=!1,excludeKeys:n}=e,l=y(()=>((n==null?void 0:n.value)||[]).concat(og)),a=lt();return a?y(()=>{var s;return qo(Object.entries((s=a.proxy)==null?void 0:s.$attrs).filter(([r])=>!l.value.includes(r)&&!(t&&ag.test(r))))}):y(()=>({}))},vu={prefix:Math.floor(Math.random()*1e4),current:0},sg=Symbol("elIdInjection"),Zr=()=>lt()?we(sg,vu):vu,sn=e=>{const t=Zr(),n=Kr();return Ha(()=>o(e)||`${n.value}-id-${t.prefix}-${t.current++}`)},Jl=Symbol("formContextKey"),el=Symbol("formItemContextKey"),dn=()=>{const e=we(Jl,void 0),t=we(el,void 0);return{form:e,formItem:t}},Kn=(e,{formItemContext:t,disableIdGeneration:n,disableIdManagement:l})=>{n||(n=I(!1)),l||(l=I(!1));const a=I();let s;const r=y(()=>{var i;return!!(!(e.label||e.ariaLabel)&&t&&t.inputIds&&((i=t.inputIds)==null?void 0:i.length)<=1)});return Xe(()=>{s=ie([wt(e,"id"),n],([i,u])=>{const c=i??(u?void 0:sn().value);c!==a.value&&(t!=null&&t.removeInputId&&(a.value&&t.removeInputId(a.value),!(l!=null&&l.value)&&!u&&c&&t.addInputId(c)),a.value=c)},{immediate:!0})}),cs(()=>{s&&s(),t!=null&&t.removeInputId&&a.value&&t.removeInputId(a.value)}),{isLabeledByFormItem:r,inputId:a}},vd=e=>{const t=lt();return y(()=>{var n,l;return(l=(n=t==null?void 0:t.proxy)==null?void 0:n.$props)==null?void 0:l[e]})},Gt=(e,t={})=>{const n=I(void 0),l=t.prop?n:vd("size"),a=t.global?n:Zc(),s=t.form?{size:void 0}:we(Jl,void 0),r=t.formItem?{size:void 0}:we(el,void 0);return y(()=>l.value||o(e)||(r==null?void 0:r.size)||(s==null?void 0:s.size)||a.value||"")},fn=e=>{const t=vd("disabled"),n=we(Jl,void 0);return y(()=>t.value||o(e)||(n==null?void 0:n.disabled)||!1)},rg='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',ig=e=>getComputedStyle(e).position==="fixed"?!1:e.offsetParent!==null,pu=e=>Array.from(e.querySelectorAll(rg)).filter(t=>Xo(t)&&ig(t)),Xo=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.tabIndex<0||e.hasAttribute("disabled")||e.getAttribute("aria-disabled")==="true")return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return!(e.type==="hidden"||e.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},La=function(e,t,...n){let l;t.includes("mouse")||t.includes("click")?l="MouseEvents":t.includes("key")?l="KeyboardEvent":l="HTMLEvents";const a=document.createEvent(l);return a.initEvent(t,...n),e.dispatchEvent(a),e},pd=e=>!e.getAttribute("aria-owns"),hd=(e,t,n)=>{const{parentNode:l}=e;if(!l)return null;const a=l.querySelectorAll(n),s=Array.prototype.indexOf.call(a,e);return a[s+t]||null},Ba=e=>{e&&(e.focus(),!pd(e)&&e.click())};function Ll(e,{disabled:t,beforeFocus:n,afterFocus:l,beforeBlur:a,afterBlur:s}={}){const r=lt(),{emit:i}=r,u=Lt(),c=I(!1),d=v=>{const h=Qe(n)?n(v):!1;o(t)||c.value||h||(c.value=!0,i("focus",v),l==null||l())},f=v=>{var h;const p=Qe(a)?a(v):!1;o(t)||v.relatedTarget&&((h=u.value)!=null&&h.contains(v.relatedTarget))||p||(c.value=!1,i("blur",v),s==null||s())},m=v=>{var h,p;o(t)||Xo(v.target)||(h=u.value)!=null&&h.contains(document.activeElement)&&u.value!==document.activeElement||(p=e.value)==null||p.focus()};return ie([u,()=>o(t)],([v,h])=>{v&&(h?v.removeAttribute("tabindex"):v.setAttribute("tabindex","-1"))}),xt(u,"focus",d,!0),xt(u,"blur",f,!0),xt(u,"click",m,!0),{isFocused:c,wrapperRef:u,handleFocus:d,handleBlur:f}}const ug=e=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(e);function ha({afterComposition:e,emit:t}){const n=I(!1),l=i=>{t==null||t("compositionstart",i),n.value=!0},a=i=>{var u;t==null||t("compositionupdate",i);const c=(u=i.target)==null?void 0:u.value,d=c[c.length-1]||"";n.value=!ug(d)},s=i=>{t==null||t("compositionend",i),n.value&&(n.value=!1,Ee(()=>e(i)))};return{isComposing:n,handleComposition:i=>{i.type==="compositionend"?s(i):a(i)},handleCompositionStart:l,handleCompositionUpdate:a,handleCompositionEnd:s}}function cg(e){let t;function n(){if(e.value==null)return;const{selectionStart:a,selectionEnd:s,value:r}=e.value;if(a==null||s==null)return;const i=r.slice(0,Math.max(0,a)),u=r.slice(Math.max(0,s));t={selectionStart:a,selectionEnd:s,value:r,beforeTxt:i,afterTxt:u}}function l(){if(e.value==null||t==null)return;const{value:a}=e.value,{beforeTxt:s,afterTxt:r,selectionStart:i}=t;if(s==null||r==null||i==null)return;let u=a.length;if(a.endsWith(r))u=a.length-r.length;else if(a.startsWith(s))u=s.length;else{const c=s[i-1],d=a.indexOf(c,i-1);d!==-1&&(u=d+1)}e.value.setSelectionRange(u,u)}return[n,l]}const dg="ElInput",fg=x({name:dg,inheritAttrs:!1}),vg=x({...fg,props:pa,emits:lg,setup(e,{expose:t,emit:n}){const l=e,a=pl(),s=bs(),r=Xt(),i=y(()=>[l.type==="textarea"?p.b():h.b(),h.m(m.value),h.is("disabled",v.value),h.is("exceed",Q.value),{[h.b("group")]:r.prepend||r.append,[h.m("prefix")]:r.prefix||l.prefixIcon,[h.m("suffix")]:r.suffix||l.suffixIcon||l.clearable||l.showPassword,[h.bm("suffix","password-clear")]:B.value&&A.value,[h.b("hidden")]:l.type==="hidden"},a.class]),u=y(()=>[h.e("wrapper"),h.is("focus",M.value)]),{form:c,formItem:d}=dn(),{inputId:f}=Kn(l,{formItemContext:d}),m=Gt(),v=fn(),h=ue("input"),p=ue("textarea"),g=Lt(),b=Lt(),E=I(!1),C=I(!1),w=I(),k=Lt(l.inputStyle),S=y(()=>g.value||b.value),{wrapperRef:$,isFocused:M,handleFocus:R,handleBlur:N}=Ll(S,{disabled:v,afterBlur(){var ye;l.validateEvent&&((ye=d==null?void 0:d.validate)==null||ye.call(d,"blur").catch(Ue=>void 0))}}),O=y(()=>{var ye;return(ye=c==null?void 0:c.statusIcon)!=null?ye:!1}),P=y(()=>(d==null?void 0:d.validateState)||""),W=y(()=>P.value&&gs[P.value]),K=y(()=>C.value?zm:dm),D=y(()=>[a.style]),L=y(()=>[l.inputStyle,k.value,{resize:l.resize}]),z=y(()=>qt(l.modelValue)?"":String(l.modelValue)),B=y(()=>l.clearable&&!v.value&&!l.readonly&&!!z.value&&(M.value||E.value)),A=y(()=>l.showPassword&&!v.value&&!!z.value),ne=y(()=>l.showWordLimit&&!!l.maxlength&&(l.type==="text"||l.type==="textarea")&&!v.value&&!l.readonly&&!l.showPassword),j=y(()=>z.value.length),Q=y(()=>!!ne.value&&j.value>Number(l.maxlength)),Z=y(()=>!!r.suffix||!!l.suffixIcon||B.value||l.showPassword||ne.value||!!P.value&&O.value),[ee,ae]=cg(g);Ft(b,ye=>{if(se(),!ne.value||l.resize!=="both")return;const Ue=ye[0],{width:It}=Ue.contentRect;w.value={right:`calc(100% - ${It+15+6}px)`}});const re=()=>{const{type:ye,autosize:Ue}=l;if(!(!bt||ye!=="textarea"||!b.value))if(Ue){const It=yt(Ue)?Ue.minRows:void 0,Ot=yt(Ue)?Ue.maxRows:void 0,Rt=fu(b.value,It,Ot);k.value={overflowY:"hidden",...Rt},Ee(()=>{b.value.offsetHeight,k.value=Rt})}else k.value={minHeight:fu(b.value).minHeight}},se=(ye=>{let Ue=!1;return()=>{var It;if(Ue||!l.autosize)return;((It=b.value)==null?void 0:It.offsetParent)===null||(ye(),Ue=!0)}})(re),ge=()=>{const ye=S.value,Ue=l.formatter?l.formatter(z.value):z.value;!ye||ye.value===Ue||(ye.value=Ue)},Be=async ye=>{ee();let{value:Ue}=ye.target;if(l.formatter&&l.parser&&(Ue=l.parser(Ue)),!ce.value){if(Ue===z.value){ge();return}n(De,Ue),n(Zt,Ue),await Ee(),ge(),ae()}},te=ye=>{let{value:Ue}=ye.target;l.formatter&&l.parser&&(Ue=l.parser(Ue)),n(nt,Ue)},{isComposing:ce,handleCompositionStart:Ie,handleCompositionUpdate:Ae,handleCompositionEnd:xe}=ha({emit:n,afterComposition:Be}),Ye=()=>{ee(),C.value=!C.value,setTimeout(ae)},$e=()=>{var ye;return(ye=S.value)==null?void 0:ye.focus()},Me=()=>{var ye;return(ye=S.value)==null?void 0:ye.blur()},Pe=ye=>{E.value=!1,n("mouseleave",ye)},Ze=ye=>{E.value=!0,n("mouseenter",ye)},ot=ye=>{n("keydown",ye)},at=()=>{var ye;(ye=S.value)==null||ye.select()},ct=()=>{n(De,""),n(nt,""),n("clear"),n(Zt,"")};return ie(()=>l.modelValue,()=>{var ye;Ee(()=>re()),l.validateEvent&&((ye=d==null?void 0:d.validate)==null||ye.call(d,"change").catch(Ue=>void 0))}),ie(z,()=>ge()),ie(()=>l.type,async()=>{await Ee(),ge(),re()}),Xe(()=>{!l.formatter&&l.parser,ge(),Ee(re)}),t({input:g,textarea:b,ref:S,textareaStyle:L,autosize:wt(l,"autosize"),isComposing:ce,focus:$e,blur:Me,select:at,clear:ct,resizeTextarea:re}),(ye,Ue)=>(_(),V("div",{class:T([o(i),{[o(h).bm("group","append")]:ye.$slots.append,[o(h).bm("group","prepend")]:ye.$slots.prepend}]),style:_e(o(D)),onMouseenter:Ze,onMouseleave:Pe},[J(" input "),ye.type!=="textarea"?(_(),V(Oe,{key:0},[J(" prepend slot "),ye.$slots.prepend?(_(),V("div",{key:0,class:T(o(h).be("group","prepend"))},[G(ye.$slots,"prepend")],2)):J("v-if",!0),F("div",{ref_key:"wrapperRef",ref:$,class:T(o(u))},[J(" prefix slot "),ye.$slots.prefix||ye.prefixIcon?(_(),V("span",{key:0,class:T(o(h).e("prefix"))},[F("span",{class:T(o(h).e("prefix-inner"))},[G(ye.$slots,"prefix"),ye.prefixIcon?(_(),oe(o(Se),{key:0,class:T(o(h).e("icon"))},{default:U(()=>[(_(),oe(Ge(ye.prefixIcon)))]),_:1},8,["class"])):J("v-if",!0)],2)],2)):J("v-if",!0),F("input",et({id:o(f),ref_key:"input",ref:g,class:o(h).e("inner")},o(s),{name:ye.name,minlength:ye.minlength,maxlength:ye.maxlength,type:ye.showPassword?C.value?"text":"password":ye.type,disabled:o(v),readonly:ye.readonly,autocomplete:ye.autocomplete,tabindex:ye.tabindex,"aria-label":ye.ariaLabel,placeholder:ye.placeholder,style:ye.inputStyle,form:ye.form,autofocus:ye.autofocus,role:ye.containerRole,inputmode:ye.inputmode,onCompositionstart:o(Ie),onCompositionupdate:o(Ae),onCompositionend:o(xe),onInput:Be,onChange:te,onKeydown:ot}),null,16,["id","name","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus","role","inputmode","onCompositionstart","onCompositionupdate","onCompositionend"]),J(" suffix slot "),o(Z)?(_(),V("span",{key:1,class:T(o(h).e("suffix"))},[F("span",{class:T(o(h).e("suffix-inner"))},[!o(B)||!o(A)||!o(ne)?(_(),V(Oe,{key:0},[G(ye.$slots,"suffix"),ye.suffixIcon?(_(),oe(o(Se),{key:0,class:T(o(h).e("icon"))},{default:U(()=>[(_(),oe(Ge(ye.suffixIcon)))]),_:1},8,["class"])):J("v-if",!0)],64)):J("v-if",!0),o(B)?(_(),oe(o(Se),{key:1,class:T([o(h).e("icon"),o(h).e("clear")]),onMousedown:Le(o(Bt),["prevent"]),onClick:ct},{default:U(()=>[H(o(ml))]),_:1},8,["class","onMousedown"])):J("v-if",!0),o(A)?(_(),oe(o(Se),{key:2,class:T([o(h).e("icon"),o(h).e("password")]),onClick:Ye},{default:U(()=>[(_(),oe(Ge(o(K))))]),_:1},8,["class"])):J("v-if",!0),o(ne)?(_(),V("span",{key:3,class:T(o(h).e("count"))},[F("span",{class:T(o(h).e("count-inner"))},pe(o(j))+" / "+pe(ye.maxlength),3)],2)):J("v-if",!0),o(P)&&o(W)&&o(O)?(_(),oe(o(Se),{key:4,class:T([o(h).e("icon"),o(h).e("validateIcon"),o(h).is("loading",o(P)==="validating")])},{default:U(()=>[(_(),oe(Ge(o(W))))]),_:1},8,["class"])):J("v-if",!0)],2)],2)):J("v-if",!0)],2),J(" append slot "),ye.$slots.append?(_(),V("div",{key:1,class:T(o(h).be("group","append"))},[G(ye.$slots,"append")],2)):J("v-if",!0)],64)):(_(),V(Oe,{key:1},[J(" textarea "),F("textarea",et({id:o(f),ref_key:"textarea",ref:b,class:[o(p).e("inner"),o(h).is("focus",o(M))]},o(s),{minlength:ye.minlength,maxlength:ye.maxlength,tabindex:ye.tabindex,disabled:o(v),readonly:ye.readonly,autocomplete:ye.autocomplete,style:o(L),"aria-label":ye.ariaLabel,placeholder:ye.placeholder,form:ye.form,autofocus:ye.autofocus,rows:ye.rows,role:ye.containerRole,onCompositionstart:o(Ie),onCompositionupdate:o(Ae),onCompositionend:o(xe),onInput:Be,onFocus:o(R),onBlur:o(N),onChange:te,onKeydown:ot}),null,16,["id","minlength","maxlength","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus","rows","role","onCompositionstart","onCompositionupdate","onCompositionend","onFocus","onBlur"]),o(ne)?(_(),V("span",{key:0,style:_e(w.value),class:T(o(h).e("count"))},pe(o(j))+" / "+pe(ye.maxlength),7)):J("v-if",!0)],64))],38))}});var pg=fe(vg,[["__file","input.vue"]]);const hn=He(pg),no=4,md={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},hg=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),Jr=Symbol("scrollbarContextKey"),mg=de({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),gg="Thumb",bg=x({__name:"thumb",props:mg,setup(e){const t=e,n=we(Jr),l=ue("scrollbar");n||jt(gg,"can not inject scrollbar context");const a=I(),s=I(),r=I({}),i=I(!1);let u=!1,c=!1,d=0,f=0,m=bt?document.onselectstart:null;const v=y(()=>md[t.vertical?"vertical":"horizontal"]),h=y(()=>hg({size:t.size,move:t.move,bar:v.value})),p=y(()=>a.value[v.value.offset]**2/n.wrapElement[v.value.scrollSize]/t.ratio/s.value[v.value.offset]),g=M=>{var R;if(M.stopPropagation(),M.ctrlKey||[1,2].includes(M.button))return;(R=window.getSelection())==null||R.removeAllRanges(),E(M);const N=M.currentTarget;N&&(r.value[v.value.axis]=N[v.value.offset]-(M[v.value.client]-N.getBoundingClientRect()[v.value.direction]))},b=M=>{if(!s.value||!a.value||!n.wrapElement)return;const R=Math.abs(M.target.getBoundingClientRect()[v.value.direction]-M[v.value.client]),N=s.value[v.value.offset]/2,O=(R-N)*100*p.value/a.value[v.value.offset];n.wrapElement[v.value.scroll]=O*n.wrapElement[v.value.scrollSize]/100},E=M=>{M.stopImmediatePropagation(),u=!0,d=n.wrapElement.scrollHeight,f=n.wrapElement.scrollWidth,document.addEventListener("mousemove",C),document.addEventListener("mouseup",w),m=document.onselectstart,document.onselectstart=()=>!1},C=M=>{if(!a.value||!s.value||u===!1)return;const R=r.value[v.value.axis];if(!R)return;const N=(a.value.getBoundingClientRect()[v.value.direction]-M[v.value.client])*-1,O=s.value[v.value.offset]-R,P=(N-O)*100*p.value/a.value[v.value.offset];v.value.scroll==="scrollLeft"?n.wrapElement[v.value.scroll]=P*f/100:n.wrapElement[v.value.scroll]=P*d/100},w=()=>{u=!1,r.value[v.value.axis]=0,document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",w),$(),c&&(i.value=!1)},k=()=>{c=!1,i.value=!!t.size},S=()=>{c=!0,i.value=u};Nt(()=>{$(),document.removeEventListener("mouseup",w)});const $=()=>{document.onselectstart!==m&&(document.onselectstart=m)};return xt(wt(n,"scrollbarElement"),"mousemove",k),xt(wt(n,"scrollbarElement"),"mouseleave",S),(M,R)=>(_(),oe(an,{name:o(l).b("fade"),persisted:""},{default:U(()=>[We(F("div",{ref_key:"instance",ref:a,class:T([o(l).e("bar"),o(l).is(o(v).key)]),onMousedown:b,onClick:Le(()=>{},["stop"])},[F("div",{ref_key:"thumb",ref:s,class:T(o(l).e("thumb")),style:_e(o(h)),onMousedown:g},null,38)],42,["onClick"]),[[mt,M.always||i.value]])]),_:1},8,["name"]))}});var hu=fe(bg,[["__file","thumb.vue"]]);const yg=de({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),Cg=x({__name:"bar",props:yg,setup(e,{expose:t}){const n=e,l=we(Jr),a=I(0),s=I(0),r=I(""),i=I(""),u=I(1),c=I(1);return t({handleScroll:m=>{if(m){const v=m.offsetHeight-no,h=m.offsetWidth-no;s.value=m.scrollTop*100/v*u.value,a.value=m.scrollLeft*100/h*c.value}},update:()=>{const m=l==null?void 0:l.wrapElement;if(!m)return;const v=m.offsetHeight-no,h=m.offsetWidth-no,p=v**2/m.scrollHeight,g=h**2/m.scrollWidth,b=Math.max(p,n.minSize),E=Math.max(g,n.minSize);u.value=p/(v-p)/(b/(v-b)),c.value=g/(h-g)/(E/(h-E)),i.value=b+no(_(),V(Oe,null,[H(hu,{move:a.value,ratio:c.value,size:r.value,always:m.always},null,8,["move","ratio","size","always"]),H(hu,{move:s.value,ratio:u.value,size:i.value,vertical:"",always:m.always},null,8,["move","ratio","size","always"])],64))}});var wg=fe(Cg,[["__file","bar.vue"]]);const kg=de({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:Boolean,wrapStyle:{type:Y([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},tabindex:{type:[String,Number],default:void 0},id:String,role:String,...cn(["ariaLabel","ariaOrientation"])}),gd={"end-reached":e=>["left","right","top","bottom"].includes(e),scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(Te)},Sg="ElScrollbar",Eg=x({name:Sg}),_g=x({...Eg,props:kg,emits:gd,setup(e,{expose:t,emit:n}){const l=e,a=ue("scrollbar");let s,r,i=0,u=0,c="";const d=I(),f=I(),m=I(),v=I(),h=y(()=>{const S={};return l.height&&(S.height=zt(l.height)),l.maxHeight&&(S.maxHeight=zt(l.maxHeight)),[l.wrapStyle,S]}),p=y(()=>[l.wrapClass,a.e("wrap"),{[a.em("wrap","hidden-default")]:!l.native}]),g=y(()=>[a.e("view"),l.viewClass]),b=()=>{var S;if(f.value){(S=v.value)==null||S.handleScroll(f.value);const $=i,M=u;i=f.value.scrollTop,u=f.value.scrollLeft;const R={bottom:i+f.value.clientHeight>=f.value.scrollHeight,top:i<=0&&$!==0,right:u+f.value.clientWidth>=f.value.scrollWidth&&M!==u,left:u<=0&&M!==0};$!==i&&(c=i>$?"bottom":"top"),M!==u&&(c=u>M?"right":"left"),n("scroll",{scrollTop:i,scrollLeft:u}),R[c]&&n("end-reached",c)}};function E(S,$){yt(S)?f.value.scrollTo(S):Te(S)&&Te($)&&f.value.scrollTo(S,$)}const C=S=>{Te(S)&&(f.value.scrollTop=S)},w=S=>{Te(S)&&(f.value.scrollLeft=S)},k=()=>{var S;(S=v.value)==null||S.update()};return ie(()=>l.noresize,S=>{S?(s==null||s(),r==null||r()):({stop:s}=Ft(m,k),r=xt("resize",k))},{immediate:!0}),ie(()=>[l.maxHeight,l.height],()=>{l.native||Ee(()=>{var S;k(),f.value&&((S=v.value)==null||S.handleScroll(f.value))})}),rt(Jr,kt({scrollbarElement:d,wrapElement:f})),Fr(()=>{f.value&&(f.value.scrollTop=i,f.value.scrollLeft=u)}),Xe(()=>{l.native||Ee(()=>{k()})}),hl(()=>k()),t({wrapRef:f,update:k,scrollTo:E,setScrollTop:C,setScrollLeft:w,handleScroll:b}),(S,$)=>(_(),V("div",{ref_key:"scrollbarRef",ref:d,class:T(o(a).b())},[F("div",{ref_key:"wrapRef",ref:f,class:T(o(p)),style:_e(o(h)),tabindex:S.tabindex,onScroll:b},[(_(),oe(Ge(S.tag),{id:S.id,ref_key:"resizeRef",ref:m,class:T(o(g)),style:_e(S.viewStyle),role:S.role,"aria-label":S.ariaLabel,"aria-orientation":S.ariaOrientation},{default:U(()=>[G(S.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,["tabindex"]),S.native?J("v-if",!0):(_(),oe(wg,{key:0,ref_key:"barRef",ref:v,always:S.always,"min-size":S.minSize},null,8,["always","min-size"]))],2))}});var Tg=fe(_g,[["__file","scrollbar.vue"]]);const jn=He(Tg),Qr=Symbol("popper"),bd=Symbol("popperContent"),yd=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],Cd=de({role:{type:String,values:yd,default:"tooltip"}}),$g=x({name:"ElPopper",inheritAttrs:!1}),Ng=x({...$g,props:Cd,setup(e,{expose:t}){const n=e,l=I(),a=I(),s=I(),r=I(),i=y(()=>n.role),u={triggerRef:l,popperInstanceRef:a,contentRef:s,referenceRef:r,role:i};return t(u),rt(Qr,u),(c,d)=>G(c.$slots,"default")}});var Ig=fe(Ng,[["__file","popper.vue"]]);const Mg=x({name:"ElPopperArrow",inheritAttrs:!1}),Rg=x({...Mg,setup(e,{expose:t}){const n=ue("popper"),{arrowRef:l,arrowStyle:a}=we(bd,void 0);return Nt(()=>{l.value=void 0}),t({arrowRef:l}),(s,r)=>(_(),V("span",{ref_key:"arrowRef",ref:l,class:T(o(n).e("arrow")),style:_e(o(a)),"data-popper-arrow":""},null,6))}});var Pg=fe(Rg,[["__file","arrow.vue"]]);const wd=de({virtualRef:{type:Y(Object)},virtualTriggering:Boolean,onMouseenter:{type:Y(Function)},onMouseleave:{type:Y(Function)},onClick:{type:Y(Function)},onKeydown:{type:Y(Function)},onFocus:{type:Y(Function)},onBlur:{type:Y(Function)},onContextmenu:{type:Y(Function)},id:String,open:Boolean}),kd=Symbol("elForwardRef"),Og=e=>{rt(kd,{setForwardRef:n=>{e.value=n}})},Lg=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),Bg="ElOnlyChild",Sd=x({name:Bg,setup(e,{slots:t,attrs:n}){var l;const a=we(kd),s=Lg((l=a==null?void 0:a.setForwardRef)!=null?l:Bt);return()=>{var r;const i=(r=t.default)==null?void 0:r.call(t,n);if(!i||i.length>1)return null;const u=Ed(i);return u?We(Np(u,n),[[s]]):null}}});function Ed(e){if(!e)return null;const t=e;for(const n of t){if(yt(n))switch(n.type){case jl:continue;case Nc:case"svg":return mu(n);case Oe:return Ed(n.children);default:return n}return mu(n)}return null}function mu(e){const t=ue("only-child");return H("span",{class:t.e("content")},[e])}const Vg=x({name:"ElPopperTrigger",inheritAttrs:!1}),Dg=x({...Vg,props:wd,setup(e,{expose:t}){const n=e,{role:l,triggerRef:a}=we(Qr,void 0);Og(a);const s=y(()=>i.value?n.id:void 0),r=y(()=>{if(l&&l.value==="tooltip")return n.open&&n.id?n.id:void 0}),i=y(()=>{if(l&&l.value!=="tooltip")return l.value}),u=y(()=>i.value?`${n.open}`:void 0);let c;const d=["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"];return Xe(()=>{ie(()=>n.virtualRef,f=>{f&&(a.value=ua(f))},{immediate:!0}),ie(a,(f,m)=>{c==null||c(),c=void 0,_n(f)&&(d.forEach(v=>{var h;const p=n[v];p&&(f.addEventListener(v.slice(2).toLowerCase(),p),(h=m==null?void 0:m.removeEventListener)==null||h.call(m,v.slice(2).toLowerCase(),p))}),Xo(f)&&(c=ie([s,r,i,u],v=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((h,p)=>{qt(v[p])?f.removeAttribute(h):f.setAttribute(h,v[p])})},{immediate:!0}))),_n(m)&&Xo(m)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(v=>m.removeAttribute(v))},{immediate:!0})}),Nt(()=>{if(c==null||c(),c=void 0,a.value&&_n(a.value)){const f=a.value;d.forEach(m=>{const v=n[m];v&&f.removeEventListener(m.slice(2).toLowerCase(),v)}),a.value=void 0}}),t({triggerRef:a}),(f,m)=>f.virtualTriggering?J("v-if",!0):(_(),oe(o(Sd),et({key:0},f.$attrs,{"aria-controls":o(s),"aria-describedby":o(r),"aria-expanded":o(u),"aria-haspopup":o(i)}),{default:U(()=>[G(f.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var Ag=fe(Dg,[["__file","trigger.vue"]]);const As="focus-trap.focus-after-trapped",Fs="focus-trap.focus-after-released",Fg="focus-trap.focusout-prevented",gu={cancelable:!0,bubbles:!1},xg={cancelable:!0,bubbles:!1},bu="focusAfterTrapped",yu="focusAfterReleased",ei=Symbol("elFocusTrap"),ti=I(),ys=I(0),ni=I(0);let Sa=0;const _d=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:l=>{const a=l.tagName==="INPUT"&&l.type==="hidden";return l.disabled||l.hidden||a?NodeFilter.FILTER_SKIP:l.tabIndex>=0||l===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},Cu=(e,t)=>{for(const n of e)if(!zg(n,t))return n},zg=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},Hg=e=>{const t=_d(e),n=Cu(t,e),l=Cu(t.reverse(),e);return[n,l]},Kg=e=>e instanceof HTMLInputElement&&"select"in e,al=(e,t)=>{if(e&&e.focus){const n=document.activeElement;let l=!1;_n(e)&&!Xo(e)&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","-1"),l=!0),e.focus({preventScroll:!0}),ni.value=window.performance.now(),e!==n&&Kg(e)&&t&&e.select(),_n(e)&&l&&e.removeAttribute("tabindex")}};function wu(e,t){const n=[...e],l=e.indexOf(t);return l!==-1&&n.splice(l,1),n}const Wg=()=>{let e=[];return{push:l=>{const a=e[0];a&&l!==a&&a.pause(),e=wu(e,l),e.unshift(l)},remove:l=>{var a,s;e=wu(e,l),(s=(a=e[0])==null?void 0:a.resume)==null||s.call(a)}}},jg=(e,t=!1)=>{const n=document.activeElement;for(const l of e)if(al(l,t),document.activeElement!==n)return},ku=Wg(),Ug=()=>ys.value>ni.value,Ea=()=>{ti.value="pointer",ys.value=window.performance.now()},Su=()=>{ti.value="keyboard",ys.value=window.performance.now()},Yg=()=>(Xe(()=>{Sa===0&&(document.addEventListener("mousedown",Ea),document.addEventListener("touchstart",Ea),document.addEventListener("keydown",Su)),Sa++}),Nt(()=>{Sa--,Sa<=0&&(document.removeEventListener("mousedown",Ea),document.removeEventListener("touchstart",Ea),document.removeEventListener("keydown",Su))}),{focusReason:ti,lastUserFocusTimestamp:ys,lastAutomatedFocusTimestamp:ni}),_a=e=>new CustomEvent(Fg,{...xg,detail:e}),Ce={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"};let io=[];const Eu=e=>{e.code===Ce.esc&&io.forEach(t=>t(e))},qg=e=>{Xe(()=>{io.length===0&&document.addEventListener("keydown",Eu),bt&&io.push(e)}),Nt(()=>{io=io.filter(t=>t!==e),io.length===0&&bt&&document.removeEventListener("keydown",Eu)})},Gg=x({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[bu,yu,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:t}){const n=I();let l,a;const{focusReason:s}=Yg();qg(h=>{e.trapped&&!r.paused&&t("release-requested",h)});const r={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},i=h=>{if(!e.loop&&!e.trapped||r.paused)return;const{code:p,altKey:g,ctrlKey:b,metaKey:E,currentTarget:C,shiftKey:w}=h,{loop:k}=e,S=p===Ce.tab&&!g&&!b&&!E,$=document.activeElement;if(S&&$){const M=C,[R,N]=Hg(M);if(R&&N){if(!w&&$===N){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||(h.preventDefault(),k&&al(R,!0))}else if(w&&[R,M].includes($)){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||(h.preventDefault(),k&&al(N,!0))}}else if($===M){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||h.preventDefault()}}};rt(ei,{focusTrapRef:n,onKeydown:i}),ie(()=>e.focusTrapEl,h=>{h&&(n.value=h)},{immediate:!0}),ie([n],([h],[p])=>{h&&(h.addEventListener("keydown",i),h.addEventListener("focusin",d),h.addEventListener("focusout",f)),p&&(p.removeEventListener("keydown",i),p.removeEventListener("focusin",d),p.removeEventListener("focusout",f))});const u=h=>{t(bu,h)},c=h=>t(yu,h),d=h=>{const p=o(n);if(!p)return;const g=h.target,b=h.relatedTarget,E=g&&p.contains(g);e.trapped||b&&p.contains(b)||(l=b),E&&t("focusin",h),!r.paused&&e.trapped&&(E?a=g:al(a,!0))},f=h=>{const p=o(n);if(!(r.paused||!p))if(e.trapped){const g=h.relatedTarget;!qt(g)&&!p.contains(g)&&setTimeout(()=>{if(!r.paused&&e.trapped){const b=_a({focusReason:s.value});t("focusout-prevented",b),b.defaultPrevented||al(a,!0)}},0)}else{const g=h.target;g&&p.contains(g)||t("focusout",h)}};async function m(){await Ee();const h=o(n);if(h){ku.push(r);const p=h.contains(document.activeElement)?l:document.activeElement;if(l=p,!h.contains(p)){const b=new Event(As,gu);h.addEventListener(As,u),h.dispatchEvent(b),b.defaultPrevented||Ee(()=>{let E=e.focusStartEl;Ve(E)||(al(E),document.activeElement!==E&&(E="first")),E==="first"&&jg(_d(h),!0),(document.activeElement===p||E==="container")&&al(h)})}}}function v(){const h=o(n);if(h){h.removeEventListener(As,u);const p=new CustomEvent(Fs,{...gu,detail:{focusReason:s.value}});h.addEventListener(Fs,c),h.dispatchEvent(p),!p.defaultPrevented&&(s.value=="keyboard"||!Ug()||h.contains(document.activeElement))&&al(l??document.body),h.removeEventListener(Fs,c),ku.remove(r)}}return Xe(()=>{e.trapped&&m(),ie(()=>e.trapped,h=>{h?m():v()})}),Nt(()=>{e.trapped&&v(),n.value&&(n.value.removeEventListener("keydown",i),n.value.removeEventListener("focusin",d),n.value.removeEventListener("focusout",f),n.value=void 0)}),{onKeydown:i}}});function Xg(e,t,n,l,a,s){return G(e.$slots,"default",{handleKeydown:e.onKeydown})}var Ro=fe(Gg,[["render",Xg],["__file","focus-trap.vue"]]);const Td=de({arrowOffset:{type:Number,default:5}}),Zg=["fixed","absolute"],Jg=de({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:Y(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:Xl,default:"bottom"},popperOptions:{type:Y(Object),default:()=>({})},strategy:{type:String,values:Zg,default:"absolute"}}),$d=de({...Jg,...Td,id:String,style:{type:Y([String,Array,Object])},className:{type:Y([String,Array,Object])},effect:{type:Y(String),default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:Boolean,trapping:Boolean,popperClass:{type:Y([String,Array,Object])},popperStyle:{type:Y([String,Array,Object])},referenceEl:{type:Y(Object)},triggerTargetEl:{type:Y(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...cn(["ariaLabel"])}),Qg={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},eb=(e,t)=>{const n=I(!1),l=I();return{focusStartRef:l,trapped:n,onFocusAfterReleased:c=>{var d;((d=c.detail)==null?void 0:d.focusReason)!=="pointer"&&(l.value="first",t("blur"))},onFocusAfterTrapped:()=>{t("focus")},onFocusInTrap:c=>{e.visible&&!n.value&&(c.target&&(l.value=c.target),n.value=!0)},onFocusoutPrevented:c=>{e.trapping||(c.detail.focusReason==="pointer"&&c.preventDefault(),n.value=!1)},onReleaseRequested:()=>{n.value=!1,t("close")}}},tb=(e,t=[])=>{const{placement:n,strategy:l,popperOptions:a}=e,s={placement:n,strategy:l,...a,modifiers:[...lb(e),...t]};return ob(s,a==null?void 0:a.modifiers),s},nb=e=>{if(bt)return ua(e)};function lb(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:l}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:l}},{name:"computeStyles",options:{gpuAcceleration:n}}]}function ob(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const ab=(e,t,n={})=>{const l={name:"updateState",enabled:!0,phase:"write",fn:({state:u})=>{const c=sb(u);Object.assign(r.value,c)},requires:["computeStyles"]},a=y(()=>{const{onFirstUpdate:u,placement:c,strategy:d,modifiers:f}=o(n);return{onFirstUpdate:u,placement:c||"bottom",strategy:d||"absolute",modifiers:[...f||[],l,{name:"applyStyles",enabled:!1}]}}),s=Lt(),r=I({styles:{popper:{position:o(a).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),i=()=>{s.value&&(s.value.destroy(),s.value=void 0)};return ie(a,u=>{const c=o(s);c&&c.setOptions(u)},{deep:!0}),ie([e,t],([u,c])=>{i(),!(!u||!c)&&(s.value=Up(u,c,o(a)))}),Nt(()=>{i()}),{state:y(()=>{var u;return{...((u=o(s))==null?void 0:u.state)||{}}}),styles:y(()=>o(r).styles),attributes:y(()=>o(r).attributes),update:()=>{var u;return(u=o(s))==null?void 0:u.update()},forceUpdate:()=>{var u;return(u=o(s))==null?void 0:u.forceUpdate()},instanceRef:y(()=>o(s))}};function sb(e){const t=Object.keys(e.elements),n=qo(t.map(a=>[a,e.styles[a]||{}])),l=qo(t.map(a=>[a,e.attributes[a]]));return{styles:n,attributes:l}}const rb=0,ib=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:l,role:a}=we(Qr,void 0),s=I(),r=y(()=>e.arrowOffset),i=y(()=>({name:"eventListeners",enabled:!!e.visible})),u=y(()=>{var b;const E=o(s),C=(b=o(r))!=null?b:rb;return{name:"arrow",enabled:!Yp(E),options:{element:E,padding:C}}}),c=y(()=>({onFirstUpdate:()=>{h()},...tb(e,[o(u),o(i)])})),d=y(()=>nb(e.referenceEl)||o(l)),{attributes:f,state:m,styles:v,update:h,forceUpdate:p,instanceRef:g}=ab(d,n,c);return ie(g,b=>t.value=b,{flush:"sync"}),Xe(()=>{ie(()=>{var b;return(b=o(d))==null?void 0:b.getBoundingClientRect()},()=>{h()})}),{attributes:f,arrowRef:s,contentRef:n,instanceRef:g,state:m,styles:v,role:a,forceUpdate:p,update:h}},ub=(e,{attributes:t,styles:n,role:l})=>{const{nextZIndex:a}=Mo(),s=ue("popper"),r=y(()=>o(t).popper),i=I(Te(e.zIndex)?e.zIndex:a()),u=y(()=>[s.b(),s.is("pure",e.pure),s.is(e.effect),e.popperClass]),c=y(()=>[{zIndex:o(i)},o(n).popper,e.popperStyle||{}]),d=y(()=>l.value==="dialog"?"false":void 0),f=y(()=>o(n).arrow||{});return{ariaModal:d,arrowStyle:f,contentAttrs:r,contentClass:u,contentStyle:c,contentZIndex:i,updateZIndex:()=>{i.value=Te(e.zIndex)?e.zIndex:a()}}},cb=x({name:"ElPopperContent"}),db=x({...cb,props:$d,emits:Qg,setup(e,{expose:t,emit:n}){const l=e,{focusStartRef:a,trapped:s,onFocusAfterReleased:r,onFocusAfterTrapped:i,onFocusInTrap:u,onFocusoutPrevented:c,onReleaseRequested:d}=eb(l,n),{attributes:f,arrowRef:m,contentRef:v,styles:h,instanceRef:p,role:g,update:b}=ib(l),{ariaModal:E,arrowStyle:C,contentAttrs:w,contentClass:k,contentStyle:S,updateZIndex:$}=ub(l,{styles:h,attributes:f,role:g}),M=we(el,void 0);rt(bd,{arrowStyle:C,arrowRef:m}),M&&rt(el,{...M,addInputId:Bt,removeInputId:Bt});let R;const N=(P=!0)=>{b(),P&&$()},O=()=>{N(!1),l.visible&&l.focusOnShow?s.value=!0:l.visible===!1&&(s.value=!1)};return Xe(()=>{ie(()=>l.triggerTargetEl,(P,W)=>{R==null||R(),R=void 0;const K=o(P||v.value),D=o(W||v.value);_n(K)&&(R=ie([g,()=>l.ariaLabel,E,()=>l.id],L=>{["role","aria-label","aria-modal","id"].forEach((z,B)=>{qt(L[B])?K.removeAttribute(z):K.setAttribute(z,L[B])})},{immediate:!0})),D!==K&&_n(D)&&["role","aria-label","aria-modal","id"].forEach(L=>{D.removeAttribute(L)})},{immediate:!0}),ie(()=>l.visible,O,{immediate:!0})}),Nt(()=>{R==null||R(),R=void 0}),t({popperContentRef:v,popperInstanceRef:p,updatePopper:N,contentStyle:S}),(P,W)=>(_(),V("div",et({ref_key:"contentRef",ref:v},o(w),{style:o(S),class:o(k),tabindex:"-1",onMouseenter:K=>P.$emit("mouseenter",K),onMouseleave:K=>P.$emit("mouseleave",K)}),[H(o(Ro),{trapped:o(s),"trap-on-focus-in":!0,"focus-trap-el":o(v),"focus-start-el":o(a),onFocusAfterTrapped:o(i),onFocusAfterReleased:o(r),onFocusin:o(u),onFocusoutPrevented:o(c),onReleaseRequested:o(d)},{default:U(()=>[G(P.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16,["onMouseenter","onMouseleave"]))}});var fb=fe(db,[["__file","content.vue"]]);const Nd=He(Ig),Cs=Symbol("elTooltip"),ws=de({to:{type:Y([String,Object]),required:!0},disabled:Boolean}),Wt=de({...ad,...$d,appendTo:{type:ws.to.type},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:Y(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...cn(["ariaLabel"])}),mo=de({...wd,disabled:Boolean,trigger:{type:Y([String,Array]),default:"hover"},triggerKeys:{type:Y(Array),default:()=>[Ce.enter,Ce.numpadEnter,Ce.space]}}),vb=Un({type:Y(Boolean),default:null}),pb=Un({type:Y(Function)}),hb=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,l=[t],a={[e]:vb,[n]:pb};return{useModelToggle:({indicator:r,toggleReason:i,shouldHideWhenRouteChanges:u,shouldProceed:c,onShow:d,onHide:f})=>{const m=lt(),{emit:v}=m,h=m.props,p=y(()=>Qe(h[n])),g=y(()=>h[e]===null),b=$=>{r.value!==!0&&(r.value=!0,i&&(i.value=$),Qe(d)&&d($))},E=$=>{r.value!==!1&&(r.value=!1,i&&(i.value=$),Qe(f)&&f($))},C=$=>{if(h.disabled===!0||Qe(c)&&!c())return;const M=p.value&&bt;M&&v(t,!0),(g.value||!M)&&b($)},w=$=>{if(h.disabled===!0||!bt)return;const M=p.value&&bt;M&&v(t,!1),(g.value||!M)&&E($)},k=$=>{_t($)&&(h.disabled&&$?p.value&&v(t,!1):r.value!==$&&($?b():E()))},S=()=>{r.value?w():C()};return ie(()=>h[e],k),u&&m.appContext.config.globalProperties.$route!==void 0&&ie(()=>({...m.proxy.$route}),()=>{u.value&&r.value&&w()}),Xe(()=>{k(h[e])}),{hide:w,show:C,toggle:S,hasUpdateHandler:p}},useModelToggleProps:a,useModelToggleEmits:l}},{useModelToggleProps:mb,useModelToggleEmits:gb,useModelToggle:bb}=hb("visible"),yb=de({...Cd,...mb,...Wt,...mo,...Td,showArrow:{type:Boolean,default:!0}}),Cb=[...gb,"before-show","before-hide","show","hide","open","close"],wb=(e,t)=>ke(e)?e.includes(t):e===t,lo=(e,t,n)=>l=>{wb(o(e),t)&&n(l)},Ht=(e,t,{checkForDefaultPrevented:n=!0}={})=>a=>{const s=e==null?void 0:e(a);if(n===!1||!s)return t==null?void 0:t(a)},_u=e=>t=>t.pointerType==="mouse"?e(t):void 0,kb=x({name:"ElTooltipTrigger"}),Sb=x({...kb,props:mo,setup(e,{expose:t}){const n=e,l=ue("tooltip"),{controlled:a,id:s,open:r,onOpen:i,onClose:u,onToggle:c}=we(Cs,void 0),d=I(null),f=()=>{if(o(a)||n.disabled)return!0},m=wt(n,"trigger"),v=Ht(f,lo(m,"hover",i)),h=Ht(f,lo(m,"hover",u)),p=Ht(f,lo(m,"click",w=>{w.button===0&&c(w)})),g=Ht(f,lo(m,"focus",i)),b=Ht(f,lo(m,"focus",u)),E=Ht(f,lo(m,"contextmenu",w=>{w.preventDefault(),c(w)})),C=Ht(f,w=>{const{code:k}=w;n.triggerKeys.includes(k)&&(w.preventDefault(),c(w))});return t({triggerRef:d}),(w,k)=>(_(),oe(o(Ag),{id:o(s),"virtual-ref":w.virtualRef,open:o(r),"virtual-triggering":w.virtualTriggering,class:T(o(l).e("trigger")),onBlur:o(b),onClick:o(p),onContextmenu:o(E),onFocus:o(g),onMouseenter:o(v),onMouseleave:o(h),onKeydown:o(C)},{default:U(()=>[G(w.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var Eb=fe(Sb,[["__file","trigger.vue"]]);const _b=x({__name:"teleport",props:ws,setup(e){return(t,n)=>t.disabled?G(t.$slots,"default",{key:0}):(_(),oe(Ip,{key:1,to:t.to},[G(t.$slots,"default")],8,["to"]))}});var Tb=fe(_b,[["__file","teleport.vue"]]);const Po=He(Tb),Id=()=>{const e=Kr(),t=Zr(),n=y(()=>`${e.value}-popper-container-${t.prefix}`),l=y(()=>`#${n.value}`);return{id:n,selector:l}},$b=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},Nb=()=>{const{id:e,selector:t}=Id();return xr(()=>{bt&&(document.body.querySelector(t.value)||$b(e.value))}),{id:e,selector:t}},Ib=x({name:"ElTooltipContent",inheritAttrs:!1}),Mb=x({...Ib,props:Wt,setup(e,{expose:t}){const n=e,{selector:l}=Id(),a=ue("tooltip"),s=I(),r=Ha(()=>{var B;return(B=s.value)==null?void 0:B.popperContentRef});let i;const{controlled:u,id:c,open:d,trigger:f,onClose:m,onOpen:v,onShow:h,onHide:p,onBeforeShow:g,onBeforeHide:b}=we(Cs,void 0),E=y(()=>n.transition||`${a.namespace.value}-fade-in-linear`),C=y(()=>n.persistent);Nt(()=>{i==null||i()});const w=y(()=>o(C)?!0:o(d)),k=y(()=>n.disabled?!1:o(d)),S=y(()=>n.appendTo||l.value),$=y(()=>{var B;return(B=n.style)!=null?B:{}}),M=I(!0),R=()=>{p(),z()&&al(document.body),M.value=!0},N=()=>{if(o(u))return!0},O=Ht(N,()=>{n.enterable&&o(f)==="hover"&&v()}),P=Ht(N,()=>{o(f)==="hover"&&m()}),W=()=>{var B,A;(A=(B=s.value)==null?void 0:B.updatePopper)==null||A.call(B),g==null||g()},K=()=>{b==null||b()},D=()=>{h()},L=()=>{n.virtualTriggering||m()},z=B=>{var A;const ne=(A=s.value)==null?void 0:A.popperContentRef,j=(B==null?void 0:B.relatedTarget)||document.activeElement;return ne==null?void 0:ne.contains(j)};return ie(()=>o(d),B=>{B?(M.value=!1,i=zr(r,()=>{if(o(u))return;o(f)!=="hover"&&m()})):i==null||i()},{flush:"post"}),ie(()=>n.content,()=>{var B,A;(A=(B=s.value)==null?void 0:B.updatePopper)==null||A.call(B)}),t({contentRef:s,isFocusInsideContent:z}),(B,A)=>(_(),oe(o(Po),{disabled:!B.teleported,to:o(S)},{default:U(()=>[H(an,{name:o(E),onAfterLeave:R,onBeforeEnter:W,onAfterEnter:D,onBeforeLeave:K},{default:U(()=>[o(w)?We((_(),oe(o(fb),et({key:0,id:o(c),ref_key:"contentRef",ref:s},B.$attrs,{"aria-label":B.ariaLabel,"aria-hidden":M.value,"boundaries-padding":B.boundariesPadding,"fallback-placements":B.fallbackPlacements,"gpu-acceleration":B.gpuAcceleration,offset:B.offset,placement:B.placement,"popper-options":B.popperOptions,"arrow-offset":B.arrowOffset,strategy:B.strategy,effect:B.effect,enterable:B.enterable,pure:B.pure,"popper-class":B.popperClass,"popper-style":[B.popperStyle,o($)],"reference-el":B.referenceEl,"trigger-target-el":B.triggerTargetEl,visible:o(k),"z-index":B.zIndex,onMouseenter:o(O),onMouseleave:o(P),onBlur:L,onClose:o(m)}),{default:U(()=>[G(B.$slots,"default")]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","arrow-offset","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"])),[[mt,o(k)]]):J("v-if",!0)]),_:3},8,["name"])]),_:3},8,["disabled","to"]))}});var Rb=fe(Mb,[["__file","content.vue"]]);const Pb=x({name:"ElTooltip"}),Ob=x({...Pb,props:yb,emits:Cb,setup(e,{expose:t,emit:n}){const l=e;Nb();const a=ue("tooltip"),s=sn(),r=I(),i=I(),u=()=>{var C;const w=o(r);w&&((C=w.popperInstanceRef)==null||C.update())},c=I(!1),d=I(),{show:f,hide:m,hasUpdateHandler:v}=bb({indicator:c,toggleReason:d}),{onOpen:h,onClose:p}=sd({showAfter:wt(l,"showAfter"),hideAfter:wt(l,"hideAfter"),autoClose:wt(l,"autoClose"),open:f,close:m}),g=y(()=>_t(l.visible)&&!v.value),b=y(()=>[a.b(),l.popperClass]);rt(Cs,{controlled:g,id:s,open:Ic(c),trigger:wt(l,"trigger"),onOpen:C=>{h(C)},onClose:C=>{p(C)},onToggle:C=>{o(c)?p(C):h(C)},onShow:()=>{n("show",d.value)},onHide:()=>{n("hide",d.value)},onBeforeShow:()=>{n("before-show",d.value)},onBeforeHide:()=>{n("before-hide",d.value)},updatePopper:u}),ie(()=>l.disabled,C=>{C&&c.value&&(c.value=!1)});const E=C=>{var w;return(w=i.value)==null?void 0:w.isFocusInsideContent(C)};return Mp(()=>c.value&&m()),t({popperRef:r,contentRef:i,isFocusInsideContent:E,updatePopper:u,onOpen:h,onClose:p,hide:m}),(C,w)=>(_(),oe(o(Nd),{ref_key:"popperRef",ref:r,role:C.role},{default:U(()=>[H(Eb,{disabled:C.disabled,trigger:C.trigger,"trigger-keys":C.triggerKeys,"virtual-ref":C.virtualRef,"virtual-triggering":C.virtualTriggering},{default:U(()=>[C.$slots.default?G(C.$slots,"default",{key:0}):J("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering"]),H(Rb,{ref_key:"contentRef",ref:i,"aria-label":C.ariaLabel,"boundaries-padding":C.boundariesPadding,content:C.content,disabled:C.disabled,effect:C.effect,enterable:C.enterable,"fallback-placements":C.fallbackPlacements,"hide-after":C.hideAfter,"gpu-acceleration":C.gpuAcceleration,offset:C.offset,persistent:C.persistent,"popper-class":o(b),"popper-style":C.popperStyle,placement:C.placement,"popper-options":C.popperOptions,"arrow-offset":C.arrowOffset,pure:C.pure,"raw-content":C.rawContent,"reference-el":C.referenceEl,"trigger-target-el":C.triggerTargetEl,"show-after":C.showAfter,strategy:C.strategy,teleported:C.teleported,transition:C.transition,"virtual-triggering":C.virtualTriggering,"z-index":C.zIndex,"append-to":C.appendTo},{default:U(()=>[G(C.$slots,"content",{},()=>[C.rawContent?(_(),V("span",{key:0,innerHTML:C.content},null,8,["innerHTML"])):(_(),V("span",{key:1},pe(C.content),1))]),C.showArrow?(_(),oe(o(Pg),{key:0})):J("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","arrow-offset","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"]))}});var Lb=fe(Ob,[["__file","tooltip.vue"]]);const un=He(Lb),Bb=de({...pa,valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:Y(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:Y([Function,Array]),default:Bt},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:Boolean,hideLoading:Boolean,teleported:Wt.teleported,appendTo:Wt.appendTo,highlightFirstItem:Boolean,fitInputWidth:Boolean}),Vb={[De]:e=>Ve(e),[Zt]:e=>Ve(e),[nt]:e=>Ve(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>yt(e)},Md="ElAutocomplete",Db=x({name:Md,inheritAttrs:!1}),Ab=x({...Db,props:Bb,emits:Vb,setup(e,{expose:t,emit:n}){const l=e,a=y(()=>An(l,Object.keys(pa))),s=pl(),r=fn(),i=ue("autocomplete"),u=I(),c=I(),d=I(),f=I();let m=!1,v=!1;const h=I([]),p=I(-1),g=I(""),b=I(!1),E=I(!1),C=I(!1),w=sn(),k=y(()=>s.style),S=y(()=>(h.value.length>0||C.value)&&b.value),$=y(()=>!l.hideLoading&&C.value),M=y(()=>u.value?Array.from(u.value.$el.querySelectorAll("input")):[]),R=()=>{S.value&&(g.value=`${u.value.$el.offsetWidth}px`)},N=()=>{p.value=-1},O=async le=>{if(E.value)return;const se=ge=>{C.value=!1,!E.value&&(ke(ge)?(h.value=ge,p.value=l.highlightFirstItem?0:-1):jt(Md,"autocomplete suggestions must be an array"))};if(C.value=!0,ke(l.fetchSuggestions))se(l.fetchSuggestions);else{const ge=await l.fetchSuggestions(le,se);ke(ge)&&se(ge)}},P=Ln(O,l.debounce),W=le=>{const se=!!le;if(n(Zt,le),n(De,le),E.value=!1,b.value||(b.value=se),!l.triggerOnFocus&&!le){E.value=!0,h.value=[];return}P(le)},K=le=>{var se;r.value||(((se=le.target)==null?void 0:se.tagName)!=="INPUT"||M.value.includes(document.activeElement))&&(b.value=!0)},D=le=>{n(nt,le)},L=le=>{var se;if(v)v=!1;else{b.value=!0,n("focus",le);const ge=(se=l.modelValue)!=null?se:"";l.triggerOnFocus&&!m&&P(String(ge))}},z=le=>{setTimeout(()=>{var se;if((se=d.value)!=null&&se.isFocusInsideContent()){v=!0;return}b.value&&j(),n("blur",le)})},B=()=>{b.value=!1,n(De,""),n("clear")},A=async()=>{S.value&&p.value>=0&&p.value{S.value&&(le.preventDefault(),le.stopPropagation(),j())},j=()=>{b.value=!1},Q=()=>{var le;(le=u.value)==null||le.focus()},Z=()=>{var le;(le=u.value)==null||le.blur()},ee=async le=>{n(Zt,le[l.valueKey]),n(De,le[l.valueKey]),n("select",le),h.value=[],p.value=-1},ae=le=>{if(!S.value||C.value)return;if(le<0){p.value=-1;return}le>=h.value.length&&(le=h.value.length-1);const se=c.value.querySelector(`.${i.be("suggestion","wrap")}`),Be=se.querySelectorAll(`.${i.be("suggestion","list")} li`)[le],te=se.scrollTop,{offsetTop:ce,scrollHeight:Ie}=Be;ce+Ie>te+se.clientHeight&&(se.scrollTop+=Ie),ce{var le;(le=d.value)!=null&&le.isFocusInsideContent()||S.value&&j()});return Nt(()=>{re==null||re()}),Xe(()=>{u.value.ref.setAttribute("role","textbox"),u.value.ref.setAttribute("aria-autocomplete","list"),u.value.ref.setAttribute("aria-controls","id"),u.value.ref.setAttribute("aria-activedescendant",`${w.value}-item-${p.value}`),m=u.value.ref.hasAttribute("readonly")}),t({highlightedIndex:p,activated:b,loading:C,inputRef:u,popperRef:d,suggestions:h,handleSelect:ee,handleKeyEnter:A,focus:Q,blur:Z,close:j,highlight:ae,getData:O}),(le,se)=>(_(),oe(o(un),{ref_key:"popperRef",ref:d,visible:o(S),placement:le.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[o(i).e("popper"),le.popperClass],teleported:le.teleported,"append-to":le.appendTo,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${o(i).namespace.value}-zoom-in-top`,persistent:"",role:"listbox",onBeforeShow:R,onHide:N},{content:U(()=>[F("div",{ref_key:"regionRef",ref:c,class:T([o(i).b("suggestion"),o(i).is("loading",o($))]),style:_e({[le.fitInputWidth?"width":"minWidth"]:g.value,outline:"none"}),role:"region"},[H(o(jn),{id:o(w),tag:"ul","wrap-class":o(i).be("suggestion","wrap"),"view-class":o(i).be("suggestion","list"),role:"listbox"},{default:U(()=>[o($)?(_(),V("li",{key:0},[G(le.$slots,"loading",{},()=>[H(o(Se),{class:T(o(i).is("loading"))},{default:U(()=>[H(o(Qn))]),_:1},8,["class"])])])):(_(!0),V(Oe,{key:1},ut(h.value,(ge,Be)=>(_(),V("li",{id:`${o(w)}-item-${Be}`,key:Be,class:T({highlighted:p.value===Be}),role:"option","aria-selected":p.value===Be,onClick:te=>ee(ge)},[G(le.$slots,"default",{item:ge},()=>[st(pe(ge[le.valueKey]),1)])],10,["id","aria-selected","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class"])],6)]),default:U(()=>[F("div",{ref_key:"listboxRef",ref:f,class:T([o(i).b(),le.$attrs.class]),style:_e(o(k)),role:"combobox","aria-haspopup":"listbox","aria-expanded":o(S),"aria-owns":o(w)},[H(o(hn),et({ref_key:"inputRef",ref:u},et(o(a),le.$attrs),{"model-value":le.modelValue,disabled:o(r),onInput:W,onChange:D,onFocus:L,onBlur:z,onClear:B,onKeydown:[Tt(Le(ge=>ae(p.value-1),["prevent"]),["up"]),Tt(Le(ge=>ae(p.value+1),["prevent"]),["down"]),Tt(A,["enter"]),Tt(j,["tab"]),Tt(ne,["esc"])],onMousedown:K}),Mn({_:2},[le.$slots.prepend?{name:"prepend",fn:U(()=>[G(le.$slots,"prepend")])}:void 0,le.$slots.append?{name:"append",fn:U(()=>[G(le.$slots,"append")])}:void 0,le.$slots.prefix?{name:"prefix",fn:U(()=>[G(le.$slots,"prefix")])}:void 0,le.$slots.suffix?{name:"suffix",fn:U(()=>[G(le.$slots,"suffix")])}:void 0]),1040,["model-value","disabled","onKeydown"])],14,["aria-expanded","aria-owns"])]),_:3},8,["visible","placement","popper-class","teleported","append-to","transition"]))}});var Fb=fe(Ab,[["__file","autocomplete.vue"]]);const xb=He(Fb),zb=de({size:{type:[Number,String],values:tl,default:"",validator:e=>Te(e)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:$t},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:Y(String),default:"cover"}}),Hb={error:e=>e instanceof Event},Kb=x({name:"ElAvatar"}),Wb=x({...Kb,props:zb,emits:Hb,setup(e,{emit:t}){const n=e,l=ue("avatar"),a=I(!1),s=y(()=>{const{size:c,icon:d,shape:f}=n,m=[l.b()];return Ve(c)&&m.push(l.m(c)),d&&m.push(l.m("icon")),f&&m.push(l.m(f)),m}),r=y(()=>{const{size:c}=n;return Te(c)?l.cssVarBlock({size:zt(c)||""}):void 0}),i=y(()=>({objectFit:n.fit}));ie(()=>n.src,()=>a.value=!1);function u(c){a.value=!0,t("error",c)}return(c,d)=>(_(),V("span",{class:T(o(s)),style:_e(o(r))},[(c.src||c.srcSet)&&!a.value?(_(),V("img",{key:0,src:c.src,alt:c.alt,srcset:c.srcSet,style:_e(o(i)),onError:u},null,44,["src","alt","srcset"])):c.icon?(_(),oe(o(Se),{key:1},{default:U(()=>[(_(),oe(Ge(c.icon)))]),_:1})):G(c.$slots,"default",{key:2})],6))}});var jb=fe(Wb,[["__file","avatar.vue"]]);const Ub=He(jb),Yb={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},qb={click:e=>e instanceof MouseEvent},Gb=(e,t,n)=>{const l=Lt(),a=Lt(),s=I(!1),r=()=>{l.value&&(s.value=l.value.scrollTop>=e.visibilityHeight)},i=c=>{var d;(d=l.value)==null||d.scrollTo({top:0,behavior:"smooth"}),t("click",c)},u=Mc(r,300,!0);return xt(a,"scroll",u),Xe(()=>{var c;a.value=document,l.value=document.documentElement,e.target&&(l.value=(c=document.querySelector(e.target))!=null?c:void 0,l.value||jt(n,`target does not exist: ${e.target}`),a.value=l.value),r()}),{visible:s,handleClick:i}},Rd="ElBacktop",Xb=x({name:Rd}),Zb=x({...Xb,props:Yb,emits:qb,setup(e,{emit:t}){const n=e,l=ue("backtop"),{handleClick:a,visible:s}=Gb(n,t,Rd),r=y(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`}));return(i,u)=>(_(),oe(an,{name:`${o(l).namespace.value}-fade-in`},{default:U(()=>[o(s)?(_(),V("div",{key:0,style:_e(o(r)),class:T(o(l).b()),onClick:Le(o(a),["stop"])},[G(i.$slots,"default",{},()=>[H(o(Se),{class:T(o(l).e("icon"))},{default:U(()=>[H(o(Yh))]),_:1},8,["class"])])],14,["onClick"])):J("v-if",!0)]),_:3},8,["name"]))}});var Jb=fe(Zb,[["__file","backtop.vue"]]);const Qb=He(Jb),e0=de({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:Y([String,Object,Array])},offset:{type:Y(Array),default:[0,0]},badgeClass:{type:String}}),t0=x({name:"ElBadge"}),n0=x({...t0,props:e0,setup(e,{expose:t}){const n=e,l=ue("badge"),a=y(()=>n.isDot?"":Te(n.value)&&Te(n.max)?n.max{var r,i,u,c,d;return[{backgroundColor:n.color,marginRight:zt(-((i=(r=n.offset)==null?void 0:r[0])!=null?i:0)),marginTop:zt((c=(u=n.offset)==null?void 0:u[1])!=null?c:0)},(d=n.badgeStyle)!=null?d:{}]});return t({content:a}),(r,i)=>(_(),V("div",{class:T(o(l).b())},[G(r.$slots,"default"),H(an,{name:`${o(l).namespace.value}-zoom-in-center`,persisted:""},{default:U(()=>[We(F("sup",{class:T([o(l).e("content"),o(l).em("content",r.type),o(l).is("fixed",!!r.$slots.default),o(l).is("dot",r.isDot),o(l).is("hide-zero",!r.showZero&&n.value===0),r.badgeClass]),style:_e(o(s))},[G(r.$slots,"content",{value:o(a)},()=>[st(pe(o(a)),1)])],6),[[mt,!r.hidden&&(o(a)||r.isDot||r.$slots.content)]])]),_:3},8,["name"])],2))}});var l0=fe(n0,[["__file","badge.vue"]]);const Pd=He(l0),Od=Symbol("breadcrumbKey"),o0=de({separator:{type:String,default:"/"},separatorIcon:{type:$t}}),a0=x({name:"ElBreadcrumb"}),s0=x({...a0,props:o0,setup(e){const t=e,{t:n}=pt(),l=ue("breadcrumb"),a=I();return rt(Od,t),Xe(()=>{const s=a.value.querySelectorAll(`.${l.e("item")}`);s.length&&s[s.length-1].setAttribute("aria-current","page")}),(s,r)=>(_(),V("div",{ref_key:"breadcrumb",ref:a,class:T(o(l).b()),"aria-label":o(n)("el.breadcrumb.label"),role:"navigation"},[G(s.$slots,"default")],10,["aria-label"]))}});var r0=fe(s0,[["__file","breadcrumb.vue"]]);const i0=de({to:{type:Y([String,Object]),default:""},replace:Boolean}),u0=x({name:"ElBreadcrumbItem"}),c0=x({...u0,props:i0,setup(e){const t=e,n=lt(),l=we(Od,void 0),a=ue("breadcrumb"),s=n.appContext.config.globalProperties.$router,r=I(),i=()=>{!t.to||!s||(t.replace?s.replace(t.to):s.push(t.to))};return(u,c)=>{var d,f;return _(),V("span",{class:T(o(a).e("item"))},[F("span",{ref_key:"link",ref:r,class:T([o(a).e("inner"),o(a).is("link",!!u.to)]),role:"link",onClick:i},[G(u.$slots,"default")],2),(d=o(l))!=null&&d.separatorIcon?(_(),oe(o(Se),{key:0,class:T(o(a).e("separator"))},{default:U(()=>[(_(),oe(Ge(o(l).separatorIcon)))]),_:1},8,["class"])):(_(),V("span",{key:1,class:T(o(a).e("separator")),role:"presentation"},pe((f=o(l))==null?void 0:f.separator),3))],2)}}});var Ld=fe(c0,[["__file","breadcrumb-item.vue"]]);const d0=He(r0,{BreadcrumbItem:Ld}),f0=At(Ld),Bd=Symbol("buttonGroupContextKey"),ul=({from:e,replacement:t,scope:n,version:l,ref:a,type:s="API"},r)=>{ie(()=>o(r),i=>{},{immediate:!0})},v0=(e,t)=>{ul({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},y(()=>e.type==="text"));const n=we(Bd,void 0),l=fa("button"),{form:a}=dn(),s=Gt(y(()=>n==null?void 0:n.size)),r=fn(),i=I(),u=Xt(),c=y(()=>{var g;return e.type||(n==null?void 0:n.type)||((g=l.value)==null?void 0:g.type)||""}),d=y(()=>{var g,b,E;return(E=(b=e.autoInsertSpace)!=null?b:(g=l.value)==null?void 0:g.autoInsertSpace)!=null?E:!1}),f=y(()=>{var g,b,E;return(E=(b=e.plain)!=null?b:(g=l.value)==null?void 0:g.plain)!=null?E:!1}),m=y(()=>{var g,b,E;return(E=(b=e.round)!=null?b:(g=l.value)==null?void 0:g.round)!=null?E:!1}),v=y(()=>e.tag==="button"?{ariaDisabled:r.value||e.loading,disabled:r.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),h=y(()=>{var g;const b=(g=u.default)==null?void 0:g.call(u);if(d.value&&(b==null?void 0:b.length)===1){const E=b[0];if((E==null?void 0:E.type)===Nc){const C=E.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(C.trim())}}return!1});return{_disabled:r,_size:s,_type:c,_ref:i,_props:v,_plain:f,_round:m,shouldAddSpace:h,handleClick:g=>{if(r.value||e.loading){g.stopPropagation();return}e.nativeType==="reset"&&(a==null||a.resetFields()),t("click",g)}}},or=["default","primary","success","warning","info","danger","text",""],p0=["button","submit","reset"],ar=de({size:Jt,disabled:Boolean,type:{type:String,values:or,default:""},icon:{type:$t},nativeType:{type:String,values:p0,default:"button"},loading:Boolean,loadingIcon:{type:$t,default:()=>Qn},plain:{type:Boolean,default:void 0},text:Boolean,link:Boolean,bg:Boolean,autofocus:Boolean,round:{type:Boolean,default:void 0},circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:Y([String,Object]),default:"button"}}),h0={click:e=>e instanceof MouseEvent};function kl(e,t=20){return e.mix("#141414",t).toString()}function m0(e){const t=fn(),n=ue("button");return y(()=>{let l={},a=e.color;if(a){const s=a.match(/var\((.*?)\)/);s&&(a=window.getComputedStyle(window.document.documentElement).getPropertyValue(s[1]));const r=new vo(a),i=e.dark?r.tint(20).toString():kl(r,20);if(e.plain)l=n.cssVarBlock({"bg-color":e.dark?kl(r,90):r.tint(90).toString(),"text-color":a,"border-color":e.dark?kl(r,50):r.tint(50).toString(),"hover-text-color":`var(${n.cssVarName("color-white")})`,"hover-bg-color":a,"hover-border-color":a,"active-bg-color":i,"active-text-color":`var(${n.cssVarName("color-white")})`,"active-border-color":i}),t.value&&(l[n.cssVarBlockName("disabled-bg-color")]=e.dark?kl(r,90):r.tint(90).toString(),l[n.cssVarBlockName("disabled-text-color")]=e.dark?kl(r,50):r.tint(50).toString(),l[n.cssVarBlockName("disabled-border-color")]=e.dark?kl(r,80):r.tint(80).toString());else{const u=e.dark?kl(r,30):r.tint(30).toString(),c=r.isDark()?`var(${n.cssVarName("color-white")})`:`var(${n.cssVarName("color-black")})`;if(l=n.cssVarBlock({"bg-color":a,"text-color":c,"border-color":a,"hover-bg-color":u,"hover-text-color":c,"hover-border-color":u,"active-bg-color":i,"active-border-color":i}),t.value){const d=e.dark?kl(r,50):r.tint(50).toString();l[n.cssVarBlockName("disabled-bg-color")]=d,l[n.cssVarBlockName("disabled-text-color")]=e.dark?"rgba(255, 255, 255, 0.5)":`var(${n.cssVarName("color-white")})`,l[n.cssVarBlockName("disabled-border-color")]=d}}}return l})}const g0=x({name:"ElButton"}),b0=x({...g0,props:ar,emits:h0,setup(e,{expose:t,emit:n}){const l=e,a=m0(l),s=ue("button"),{_ref:r,_size:i,_type:u,_disabled:c,_props:d,_plain:f,_round:m,shouldAddSpace:v,handleClick:h}=v0(l,n),p=y(()=>[s.b(),s.m(u.value),s.m(i.value),s.is("disabled",c.value),s.is("loading",l.loading),s.is("plain",f.value),s.is("round",m.value),s.is("circle",l.circle),s.is("text",l.text),s.is("link",l.link),s.is("has-bg",l.bg)]);return t({ref:r,size:i,type:u,disabled:c,shouldAddSpace:v}),(g,b)=>(_(),oe(Ge(g.tag),et({ref_key:"_ref",ref:r},o(d),{class:o(p),style:o(a),onClick:o(h)}),{default:U(()=>[g.loading?(_(),V(Oe,{key:0},[g.$slots.loading?G(g.$slots,"loading",{key:0}):(_(),oe(o(Se),{key:1,class:T(o(s).is("loading"))},{default:U(()=>[(_(),oe(Ge(g.loadingIcon)))]),_:1},8,["class"]))],64)):g.icon||g.$slots.icon?(_(),oe(o(Se),{key:1},{default:U(()=>[g.icon?(_(),oe(Ge(g.icon),{key:0})):G(g.$slots,"icon",{key:1})]),_:3})):J("v-if",!0),g.$slots.default?(_(),V("span",{key:2,class:T({[o(s).em("text","expand")]:o(v)})},[G(g.$slots,"default")],2)):J("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var y0=fe(b0,[["__file","button.vue"]]);const C0={size:ar.size,type:ar.type},w0=x({name:"ElButtonGroup"}),k0=x({...w0,props:C0,setup(e){const t=e;rt(Bd,kt({size:wt(t,"size"),type:wt(t,"type")}));const n=ue("button");return(l,a)=>(_(),V("div",{class:T(o(n).b("group"))},[G(l.$slots,"default")],2))}});var Vd=fe(k0,[["__file","button-group.vue"]]);const on=He(y0,{ButtonGroup:Vd}),Dd=At(Vd),xs=(e,t)=>[e>0?e-1:void 0,e,eArray.from(Array.from({length:e}).keys()),Ad=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),Fd=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),Tu=function(e,t){const n=wo(e),l=wo(t);return n&&l?e.getTime()===t.getTime():!n&&!l?e===t:!1},$u=function(e,t){const n=ke(e),l=ke(t);return n&&l?e.length!==t.length?!1:e.every((a,s)=>Tu(a,t[s])):!n&&!l?Tu(e,t):!1},Nu=function(e,t,n){const l=Pn(t)||t==="x"?Ke(e).locale(n):Ke(e,t).locale(n);return l.isValid()?l:void 0},Iu=function(e,t,n){return Pn(t)?e:t==="x"?+e:Ke(e).locale(n).format(t)},zs=(e,t)=>{var n;const l=[],a=t==null?void 0:t();for(let s=0;ske(e)?e.map(t=>t.toDate()):e.toDate(),S0=(e,t)=>{const n=e.subtract(1,"month").endOf("month").date();return Nl(t).map((l,a)=>n-(t-a-1))},E0=e=>{const t=e.daysInMonth();return Nl(t).map((n,l)=>l+1)},_0=e=>Nl(e.length/7).map(t=>{const n=t*7;return e.slice(n,n+7)}),T0=de({selectedDay:{type:Y(Object)},range:{type:Y(Array)},date:{type:Y(Object),required:!0},hideHeader:{type:Boolean}}),$0={pick:e=>yt(e)},N0=["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange","yearrange"],Hs=["sun","mon","tue","wed","thu","fri","sat"],I0=(e,t)=>{Ke.extend(Vc);const n=Ke.localeData().firstDayOfWeek(),{t:l,lang:a}=pt(),s=Ke().locale(a.value),r=y(()=>!!e.range&&!!e.range.length),i=y(()=>{let m=[];if(r.value){const[v,h]=e.range,p=Nl(h.date()-v.date()+1).map(E=>({text:v.date()+E,type:"current"}));let g=p.length%7;g=g===0?0:7-g;const b=Nl(g).map((E,C)=>({text:C+1,type:"next"}));m=p.concat(b)}else{const v=e.date.startOf("month").day(),h=S0(e.date,(v-n+7)%7).map(E=>({text:E,type:"prev"})),p=E0(e.date).map(E=>({text:E,type:"current"}));m=[...h,...p];const g=7-(m.length%7||7),b=Nl(g).map((E,C)=>({text:C+1,type:"next"}));m=m.concat(b)}return _0(m)}),u=y(()=>{const m=n;return m===0?Hs.map(v=>l(`el.datepicker.weeks.${v}`)):Hs.slice(m).concat(Hs.slice(0,m)).map(v=>l(`el.datepicker.weeks.${v}`))}),c=(m,v)=>{switch(v){case"prev":return e.date.startOf("month").subtract(1,"month").date(m);case"next":return e.date.startOf("month").add(1,"month").date(m);case"current":return e.date.date(m)}};return{now:s,isInRange:r,rows:i,weekDays:u,getFormattedDate:c,handlePickDay:({text:m,type:v})=>{const h=c(m,v);t("pick",h)},getSlotData:({text:m,type:v})=>{const h=c(m,v);return{isSelected:h.isSame(e.selectedDay),type:`${v}-month`,day:h.format("YYYY-MM-DD"),date:h.toDate()}}}},M0=x({name:"DateTable"}),R0=x({...M0,props:T0,emits:$0,setup(e,{expose:t,emit:n}){const l=e,{isInRange:a,now:s,rows:r,weekDays:i,getFormattedDate:u,handlePickDay:c,getSlotData:d}=I0(l,n),f=ue("calendar-table"),m=ue("calendar-day"),v=({text:h,type:p})=>{const g=[p];if(p==="current"){const b=u(h,p);b.isSame(l.selectedDay,"day")&&g.push(m.is("selected")),b.isSame(s,"day")&&g.push(m.is("today"))}return g};return t({getFormattedDate:u}),(h,p)=>(_(),V("table",{class:T([o(f).b(),o(f).is("range",o(a))]),cellspacing:"0",cellpadding:"0"},[h.hideHeader?J("v-if",!0):(_(),V("thead",{key:0},[F("tr",null,[(_(!0),V(Oe,null,ut(o(i),g=>(_(),V("th",{key:g,scope:"col"},pe(g),1))),128))])])),F("tbody",null,[(_(!0),V(Oe,null,ut(o(r),(g,b)=>(_(),V("tr",{key:b,class:T({[o(f).e("row")]:!0,[o(f).em("row","hide-border")]:b===0&&h.hideHeader})},[(_(!0),V(Oe,null,ut(g,(E,C)=>(_(),V("td",{key:C,class:T(v(E)),onClick:w=>o(c)(E)},[F("div",{class:T(o(m).b())},[G(h.$slots,"date-cell",{data:o(d)(E)},()=>[F("span",null,pe(E.text),1)])],2)],10,["onClick"]))),128))],2))),128))])],2))}});var Mu=fe(R0,[["__file","date-table.vue"]]);const P0=(e,t)=>{const n=e.endOf("month"),l=t.startOf("month"),s=n.isSame(l,"week")?l.add(1,"week"):l;return[[e,n],[s.startOf("week"),t]]},O0=(e,t)=>{const n=e.endOf("month"),l=e.add(1,"month").startOf("month"),a=n.isSame(l,"week")?l.add(1,"week"):l,s=a.endOf("month"),r=t.startOf("month"),i=s.isSame(r,"week")?r.add(1,"week"):r;return[[e,n],[a.startOf("week"),s],[i.startOf("week"),t]]},L0=(e,t,n)=>{const{lang:l}=pt(),a=I(),s=Ke().locale(l.value),r=y({get(){return e.modelValue?u.value:a.value},set(g){if(!g)return;a.value=g;const b=g.toDate();t(Zt,b),t(De,b)}}),i=y(()=>{if(!e.range||!ke(e.range)||e.range.length!==2||e.range.some(C=>!wo(C)))return[];const g=e.range.map(C=>Ke(C).locale(l.value)),[b,E]=g;return b.isAfter(E)?[]:b.isSame(E,"month")?v(b,E):b.add(1,"month").month()!==E.month()?[]:v(b,E)}),u=y(()=>e.modelValue?Ke(e.modelValue).locale(l.value):r.value||(i.value.length?i.value[0][0]:s)),c=y(()=>u.value.subtract(1,"month").date(1)),d=y(()=>u.value.add(1,"month").date(1)),f=y(()=>u.value.subtract(1,"year").date(1)),m=y(()=>u.value.add(1,"year").date(1)),v=(g,b)=>{const E=g.startOf("week"),C=b.endOf("week"),w=E.get("month"),k=C.get("month");return w===k?[[E,C]]:(w+1)%12===k?P0(E,C):w+2===k||(w+1)%11===k?O0(E,C):[]},h=g=>{r.value=g};return{calculateValidatedDateRange:v,date:u,realSelectedDay:r,pickDay:h,selectDate:g=>{const E={"prev-month":c.value,"next-month":d.value,"prev-year":f.value,"next-year":m.value,today:s}[g];E.isSame(u.value,"day")||h(E)},validatedRange:i}},B0=e=>ke(e)&&e.length===2&&e.every(t=>wo(t)),V0=de({modelValue:{type:Date},range:{type:Y(Array),validator:B0}}),D0={[De]:e=>wo(e),[Zt]:e=>wo(e)},A0="ElCalendar",F0=x({name:A0}),x0=x({...F0,props:V0,emits:D0,setup(e,{expose:t,emit:n}){const l=e,a=ue("calendar"),{calculateValidatedDateRange:s,date:r,pickDay:i,realSelectedDay:u,selectDate:c,validatedRange:d}=L0(l,n),{t:f}=pt(),m=y(()=>{const v=`el.datepicker.month${r.value.format("M")}`;return`${r.value.year()} ${f("el.datepicker.year")} ${f(v)}`});return t({selectedDay:u,pickDay:i,selectDate:c,calculateValidatedDateRange:s}),(v,h)=>(_(),V("div",{class:T(o(a).b())},[F("div",{class:T(o(a).e("header"))},[G(v.$slots,"header",{date:o(m)},()=>[F("div",{class:T(o(a).e("title"))},pe(o(m)),3),o(d).length===0?(_(),V("div",{key:0,class:T(o(a).e("button-group"))},[H(o(Dd),null,{default:U(()=>[H(o(on),{size:"small",onClick:p=>o(c)("prev-month")},{default:U(()=>[st(pe(o(f)("el.datepicker.prevMonth")),1)]),_:1},8,["onClick"]),H(o(on),{size:"small",onClick:p=>o(c)("today")},{default:U(()=>[st(pe(o(f)("el.datepicker.today")),1)]),_:1},8,["onClick"]),H(o(on),{size:"small",onClick:p=>o(c)("next-month")},{default:U(()=>[st(pe(o(f)("el.datepicker.nextMonth")),1)]),_:1},8,["onClick"])]),_:1})],2)):J("v-if",!0)])],2),o(d).length===0?(_(),V("div",{key:0,class:T(o(a).e("body"))},[H(Mu,{date:o(r),"selected-day":o(u),onPick:o(i)},Mn({_:2},[v.$slots["date-cell"]?{name:"date-cell",fn:U(p=>[G(v.$slots,"date-cell",On(cl(p)))])}:void 0]),1032,["date","selected-day","onPick"])],2)):(_(),V("div",{key:1,class:T(o(a).e("body"))},[(_(!0),V(Oe,null,ut(o(d),(p,g)=>(_(),oe(Mu,{key:g,date:p[0],"selected-day":o(u),range:p,"hide-header":g!==0,onPick:o(i)},Mn({_:2},[v.$slots["date-cell"]?{name:"date-cell",fn:U(b=>[G(v.$slots,"date-cell",On(cl(b)))])}:void 0]),1032,["date","selected-day","range","hide-header","onPick"]))),128))],2))],2))}});var z0=fe(x0,[["__file","calendar.vue"]]);const H0=He(z0),K0=de({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:Y([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:"always"}}),W0=x({name:"ElCard"}),j0=x({...W0,props:K0,setup(e){const t=ue("card");return(n,l)=>(_(),V("div",{class:T([o(t).b(),o(t).is(`${n.shadow}-shadow`)])},[n.$slots.header||n.header?(_(),V("div",{key:0,class:T([o(t).e("header"),n.headerClass])},[G(n.$slots,"header",{},()=>[st(pe(n.header),1)])],2)):J("v-if",!0),F("div",{class:T([o(t).e("body"),n.bodyClass]),style:_e(n.bodyStyle)},[G(n.$slots,"default")],6),n.$slots.footer||n.footer?(_(),V("div",{key:1,class:T([o(t).e("footer"),n.footerClass])},[G(n.$slots,"footer",{},()=>[st(pe(n.footer),1)])],2)):J("v-if",!0)],2))}});var U0=fe(j0,[["__file","card.vue"]]);const Y0=He(U0),q0=de({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,values:["hover","click"],default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:["","none","outside"],default:""},arrow:{type:String,values:["always","hover","never"],default:"hover"},type:{type:String,values:["","card"],default:""},cardScale:{type:Number,default:.83},loop:{type:Boolean,default:!0},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},pauseOnHover:{type:Boolean,default:!0},motionBlur:Boolean}),G0={change:(e,t)=>[e,t].every(Te)},xd=Symbol("carouselContextKey"),sr="ElCarouselItem";var Vn=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Vn||{});function rr(e){return Dt(e)&&e.type===Oe}function X0(e){return Dt(e)&&e.type===jl}function Z0(e){return Dt(e)&&!rr(e)&&!X0(e)}const J0=e=>{if(!Dt(e))return{};const t=e.props||{},n=(Dt(e.type)?e.type.props:void 0)||{},l={};return Object.keys(n).forEach(a=>{rn(n[a],"default")&&(l[a]=n[a].default)}),Object.keys(t).forEach(a=>{l[Ar(a)]=t[a]}),l},Q0=e=>{if(!ke(e)||e.length>1)throw new Error("expect to receive a single Vue element child");return e[0]},Zn=e=>{const t=ke(e)?e:[e],n=[];return t.forEach(l=>{var a;ke(l)?n.push(...Zn(l)):Dt(l)&&((a=l.component)!=null&&a.subTree)?n.push(l,...Zn(l.component.subTree)):Dt(l)&&ke(l.children)?n.push(...Zn(l.children)):Dt(l)&&l.shapeFlag===2?n.push(...Zn(l.type())):n.push(l)}),n},ey=(e,t,n)=>Zn(e.subTree).filter(s=>{var r;return Dt(s)&&((r=s.type)==null?void 0:r.name)===t&&!!s.component}).map(s=>s.component.uid).map(s=>n[s]).filter(s=>!!s),ks=(e,t)=>{const n=Lt({}),l=Lt([]),a=new WeakMap,s=d=>{n.value[d.uid]=d,Oa(n),Xe(()=>{const f=d.getVnode().el,m=f.parentNode;if(!a.has(m)){a.set(m,[]);const v=m.insertBefore.bind(m);m.insertBefore=(h,p)=>(a.get(m).some(b=>h===b||p===b)&&Oa(n),v(h,p))}a.get(m).push(f)})},r=d=>{delete n.value[d.uid],Oa(n);const f=d.getVnode().el,m=f.parentNode,v=a.get(m),h=v.indexOf(f);v.splice(h,1)},i=()=>{l.value=ey(e,t,n.value)},u=d=>d.render(),c=x({setup(d,{slots:f}){return()=>(i(),f.default?Re(u,{render:f.default}):null)}});return{children:l,addChild:s,removeChild:r,ChildrenSorter:c}},Ru=300,ty=(e,t,n)=>{const{children:l,addChild:a,removeChild:s,ChildrenSorter:r}=ks(lt(),sr),i=Xt(),u=I(-1),c=I(null),d=I(!1),f=I(),m=I(0),v=I(!0),h=y(()=>e.arrow!=="never"&&!o(b)),p=y(()=>l.value.some(ee=>ee.props.label.toString().length>0)),g=y(()=>e.type==="card"),b=y(()=>e.direction==="vertical"),E=y(()=>e.height!=="auto"?{height:e.height}:{height:`${m.value}px`,overflow:"hidden"}),C=Hl(ee=>{R(ee)},Ru,{trailing:!0}),w=Hl(ee=>{z(ee)},Ru),k=ee=>v.value?u.value<=1?ee<=1:ee>1:!0;function S(){c.value&&(clearInterval(c.value),c.value=null)}function $(){e.interval<=0||!e.autoplay||c.value||(c.value=setInterval(()=>M(),e.interval))}const M=()=>{u.valuese.props.name===ee);le.length>0&&(ee=l.value.indexOf(le[0]))}if(ee=Number(ee),Number.isNaN(ee)||ee!==Math.floor(ee))return;const ae=l.value.length,re=u.value;ee<0?u.value=e.loop?ae-1:0:ee>=ae?u.value=e.loop?0:ae-1:u.value=ee,re===u.value&&N(re),ne()}function N(ee){l.value.forEach((ae,re)=>{ae.translateItem(re,u.value,ee)})}function O(ee,ae){var re,le,se,ge;const Be=o(l),te=Be.length;if(te===0||!ee.states.inStage)return!1;const ce=ae+1,Ie=ae-1,Ae=te-1,xe=Be[Ae].states.active,Ye=Be[0].states.active,$e=(le=(re=Be[ce])==null?void 0:re.states)==null?void 0:le.active,Me=(ge=(se=Be[Ie])==null?void 0:se.states)==null?void 0:ge.active;return ae===Ae&&Ye||$e?"left":ae===0&&xe||Me?"right":!1}function P(){d.value=!0,e.pauseOnHover&&S()}function W(){d.value=!1,$()}function K(ee){o(b)||l.value.forEach((ae,re)=>{ee===O(ae,re)&&(ae.states.hover=!0)})}function D(){o(b)||l.value.forEach(ee=>{ee.states.hover=!1})}function L(ee){u.value=ee}function z(ee){e.trigger==="hover"&&ee!==u.value&&(u.value=ee)}function B(){R(u.value-1)}function A(){R(u.value+1)}function ne(){S(),e.pauseOnHover||$()}function j(ee){e.height==="auto"&&(m.value=ee)}function Q(){var ee;const ae=(ee=i.default)==null?void 0:ee.call(i);if(!ae)return null;const le=Zn(ae).filter(se=>Dt(se)&&se.type.name===sr);return(le==null?void 0:le.length)===2&&e.loop&&!g.value?(v.value=!0,le):(v.value=!1,null)}ie(()=>u.value,(ee,ae)=>{N(ae),v.value&&(ee=ee%2,ae=ae%2),ae>-1&&t(nt,ee,ae)}),ie(()=>e.autoplay,ee=>{ee?$():S()}),ie(()=>e.loop,()=>{R(u.value)}),ie(()=>e.interval,()=>{ne()});const Z=Lt();return Xe(()=>{ie(()=>l.value,()=>{l.value.length>0&&R(e.initialIndex)},{immediate:!0}),Z.value=Ft(f.value,()=>{N()}),$()}),Nt(()=>{S(),f.value&&Z.value&&Z.value.stop()}),rt(xd,{root:f,isCardType:g,isVertical:b,items:l,loop:e.loop,cardScale:e.cardScale,addItem:a,removeItem:s,setActiveItem:R,setContainerHeight:j}),{root:f,activeIndex:u,arrowDisplay:h,hasLabel:p,hover:d,isCardType:g,items:l,isVertical:b,containerStyle:E,isItemsTwoLength:v,handleButtonEnter:K,handleButtonLeave:D,handleIndicatorClick:L,handleMouseEnter:P,handleMouseLeave:W,setActiveItem:R,prev:B,next:A,PlaceholderItem:Q,isTwoLengthShow:k,ItemsSorter:r,throttledArrowClick:C,throttledIndicatorHover:w}},ny="ElCarousel",ly=x({name:ny}),oy=x({...ly,props:q0,emits:G0,setup(e,{expose:t,emit:n}){const l=e,{root:a,activeIndex:s,arrowDisplay:r,hasLabel:i,hover:u,isCardType:c,items:d,isVertical:f,containerStyle:m,handleButtonEnter:v,handleButtonLeave:h,handleIndicatorClick:p,handleMouseEnter:g,handleMouseLeave:b,setActiveItem:E,prev:C,next:w,PlaceholderItem:k,isTwoLengthShow:S,ItemsSorter:$,throttledArrowClick:M,throttledIndicatorHover:R}=ty(l,n),N=ue("carousel"),{t:O}=pt(),P=y(()=>{const L=[N.b(),N.m(l.direction)];return o(c)&&L.push(N.m("card")),L}),W=y(()=>{const L=[N.e("indicators"),N.em("indicators",l.direction)];return o(i)&&L.push(N.em("indicators","labels")),l.indicatorPosition==="outside"&&L.push(N.em("indicators","outside")),o(f)&&L.push(N.em("indicators","right")),L});function K(L){if(!l.motionBlur)return;const z=o(f)?`${N.namespace.value}-transitioning-vertical`:`${N.namespace.value}-transitioning`;L.currentTarget.classList.add(z)}function D(L){if(!l.motionBlur)return;const z=o(f)?`${N.namespace.value}-transitioning-vertical`:`${N.namespace.value}-transitioning`;L.currentTarget.classList.remove(z)}return t({activeIndex:s,setActiveItem:E,prev:C,next:w}),(L,z)=>(_(),V("div",{ref_key:"root",ref:a,class:T(o(P)),onMouseenter:Le(o(g),["stop"]),onMouseleave:Le(o(b),["stop"])},[o(r)?(_(),oe(an,{key:0,name:"carousel-arrow-left",persisted:""},{default:U(()=>[We(F("button",{type:"button",class:T([o(N).e("arrow"),o(N).em("arrow","left")]),"aria-label":o(O)("el.carousel.leftArrow"),onMouseenter:B=>o(v)("left"),onMouseleave:o(h),onClick:Le(B=>o(M)(o(s)-1),["stop"])},[H(o(Se),null,{default:U(()=>[H(o(dl))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[mt,(L.arrow==="always"||o(u))&&(l.loop||o(s)>0)]])]),_:1})):J("v-if",!0),o(r)?(_(),oe(an,{key:1,name:"carousel-arrow-right",persisted:""},{default:U(()=>[We(F("button",{type:"button",class:T([o(N).e("arrow"),o(N).em("arrow","right")]),"aria-label":o(O)("el.carousel.rightArrow"),onMouseenter:B=>o(v)("right"),onMouseleave:o(h),onClick:Le(B=>o(M)(o(s)+1),["stop"])},[H(o(Se),null,{default:U(()=>[H(o(Cn))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[mt,(L.arrow==="always"||o(u))&&(l.loop||o(s)[L.indicatorPosition!=="none"?(_(),V("ul",{key:0,class:T(o(W))},[(_(!0),V(Oe,null,ut(o(d),(B,A)=>We((_(),V("li",{key:A,class:T([o(N).e("indicator"),o(N).em("indicator",L.direction),o(N).is("active",A===o(s))]),onMouseenter:ne=>o(R)(A),onClick:Le(ne=>o(p)(A),["stop"])},[F("button",{class:T(o(N).e("button")),"aria-label":o(O)("el.carousel.indicator",{index:A+1})},[o(i)?(_(),V("span",{key:0},pe(B.props.label),1)):J("v-if",!0)],10,["aria-label"])],42,["onMouseenter","onClick"])),[[mt,o(S)(A)]])),128))],2)):J("v-if",!0)]),_:1}),l.motionBlur?(_(),V("svg",{key:2,xmlns:"http://www.w3.org/2000/svg",version:"1.1",style:{display:"none"}},[F("defs",null,[F("filter",{id:"elCarouselHorizontal"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"12,0"})]),F("filter",{id:"elCarouselVertical"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"0,10"})])])])):J("v-if",!0)],42,["onMouseenter","onMouseleave"]))}});var ay=fe(oy,[["__file","carousel.vue"]]);const sy=de({name:{type:String,default:""},label:{type:[String,Number],default:""}}),ry=e=>{const t=we(xd),n=lt(),l=I(),a=I(!1),s=I(0),r=I(1),i=I(!1),u=I(!1),c=I(!1),d=I(!1),{isCardType:f,isVertical:m,cardScale:v}=t;function h(w,k,S){const $=S-1,M=k-1,R=k+1,N=S/2;return k===0&&w===$?-1:k===$&&w===0?S:w=N?S+1:w>R&&w-k>=N?-2:w}function p(w,k){var S,$;const M=o(m)?((S=t.root.value)==null?void 0:S.offsetHeight)||0:(($=t.root.value)==null?void 0:$.offsetWidth)||0;return c.value?M*((2-v)*(w-k)+1)/4:w{var $;const M=o(f),R=($=t.items.value.length)!=null?$:Number.NaN,N=w===k;!M&&!vt(S)&&(d.value=N||w===S),!N&&R>2&&t.loop&&(w=h(w,k,R));const O=o(m);i.value=N,M?(c.value=Math.round(Math.abs(w-k))<=1,s.value=p(w,k),r.value=o(i)?1:v):s.value=g(w,k,O),u.value=!0,N&&l.value&&t.setContainerHeight(l.value.offsetHeight)};function E(){if(t&&o(f)){const w=t.items.value.findIndex(({uid:k})=>k===n.uid);t.setActiveItem(w)}}const C={props:e,states:kt({hover:a,translate:s,scale:r,active:i,ready:u,inStage:c,animating:d}),uid:n.uid,getVnode:()=>n.vnode,translateItem:b};return t.addItem(C),Nt(()=>{t.removeItem(C)}),{carouselItemRef:l,active:i,animating:d,hover:a,inStage:c,isVertical:m,translate:s,isCardType:f,scale:r,ready:u,handleItemClick:E}},iy=x({name:sr}),uy=x({...iy,props:sy,setup(e){const t=e,n=ue("carousel"),{carouselItemRef:l,active:a,animating:s,hover:r,inStage:i,isVertical:u,translate:c,isCardType:d,scale:f,ready:m,handleItemClick:v}=ry(t),h=y(()=>[n.e("item"),n.is("active",a.value),n.is("in-stage",i.value),n.is("hover",r.value),n.is("animating",s.value),{[n.em("item","card")]:d.value,[n.em("item","card-vertical")]:d.value&&u.value}]),p=y(()=>{const b=`${`translate${o(u)?"Y":"X"}`}(${o(c)}px)`,E=`scale(${o(f)})`;return{transform:[b,E].join(" ")}});return(g,b)=>We((_(),V("div",{ref_key:"carouselItemRef",ref:l,class:T(o(h)),style:_e(o(p)),onClick:o(v)},[o(d)?We((_(),V("div",{key:0,class:T(o(n).e("mask"))},null,2)),[[mt,!o(a)]]):J("v-if",!0),G(g.$slots,"default")],14,["onClick"])),[[mt,o(m)]])}});var zd=fe(uy,[["__file","carousel-item.vue"]]);const cy=He(ay,{CarouselItem:zd}),dy=At(zd),Hd={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:Jt,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},...cn(["ariaControls"])},Kd={[De]:e=>Ve(e)||Te(e)||_t(e),change:e=>Ve(e)||Te(e)||_t(e)},Oo=Symbol("checkboxGroupContextKey"),fy=({model:e,isChecked:t})=>{const n=we(Oo,void 0),l=y(()=>{var s,r;const i=(s=n==null?void 0:n.max)==null?void 0:s.value,u=(r=n==null?void 0:n.min)==null?void 0:r.value;return!vt(i)&&e.value.length>=i&&!t.value||!vt(u)&&e.value.length<=u&&t.value});return{isDisabled:fn(y(()=>(n==null?void 0:n.disabled.value)||l.value)),isLimitDisabled:l}},vy=(e,{model:t,isLimitExceeded:n,hasOwnLabel:l,isDisabled:a,isLabeledByFormItem:s})=>{const r=we(Oo,void 0),{formItem:i}=dn(),{emit:u}=lt();function c(h){var p,g,b,E;return[!0,e.trueValue,e.trueLabel].includes(h)?(g=(p=e.trueValue)!=null?p:e.trueLabel)!=null?g:!0:(E=(b=e.falseValue)!=null?b:e.falseLabel)!=null?E:!1}function d(h,p){u(nt,c(h),p)}function f(h){if(n.value)return;const p=h.target;u(nt,c(p.checked),h)}async function m(h){n.value||!l.value&&!a.value&&s.value&&(h.composedPath().some(b=>b.tagName==="LABEL")||(t.value=c([!1,e.falseValue,e.falseLabel].includes(t.value)),await Ee(),d(t.value,h)))}const v=y(()=>(r==null?void 0:r.validateEvent)||e.validateEvent);return ie(()=>e.modelValue,()=>{v.value&&(i==null||i.validate("change").catch(h=>void 0))}),{handleChange:f,onClickRoot:m}},py=e=>{const t=I(!1),{emit:n}=lt(),l=we(Oo,void 0),a=y(()=>vt(l)===!1),s=I(!1),r=y({get(){var i,u;return a.value?(i=l==null?void 0:l.modelValue)==null?void 0:i.value:(u=e.modelValue)!=null?u:t.value},set(i){var u,c;a.value&&ke(i)?(s.value=((u=l==null?void 0:l.max)==null?void 0:u.value)!==void 0&&i.length>(l==null?void 0:l.max.value)&&i.length>r.value.length,s.value===!1&&((c=l==null?void 0:l.changeEvent)==null||c.call(l,i))):(n(De,i),t.value=i)}});return{model:r,isGroup:a,isLimitExceeded:s}},hy=(e,t,{model:n})=>{const l=we(Oo,void 0),a=I(!1),s=y(()=>In(e.value)?e.label:e.value),r=y(()=>{const d=n.value;return _t(d)?d:ke(d)?yt(s.value)?d.map(Uo).some(f=>tn(f,s.value)):d.map(Uo).includes(s.value):d!=null?d===e.trueValue||d===e.trueLabel:!!d}),i=Gt(y(()=>{var d;return(d=l==null?void 0:l.size)==null?void 0:d.value}),{prop:!0}),u=Gt(y(()=>{var d;return(d=l==null?void 0:l.size)==null?void 0:d.value})),c=y(()=>!!t.default||!In(s.value));return{checkboxButtonSize:i,isChecked:r,isFocused:a,checkboxSize:u,hasOwnLabel:c,actualValue:s}},Wd=(e,t)=>{const{formItem:n}=dn(),{model:l,isGroup:a,isLimitExceeded:s}=py(e),{isFocused:r,isChecked:i,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:d,actualValue:f}=hy(e,t,{model:l}),{isDisabled:m}=fy({model:l,isChecked:i}),{inputId:v,isLabeledByFormItem:h}=Kn(e,{formItemContext:n,disableIdGeneration:d,disableIdManagement:a}),{handleChange:p,onClickRoot:g}=vy(e,{model:l,isLimitExceeded:s,hasOwnLabel:d,isDisabled:m,isLabeledByFormItem:h});return(()=>{function E(){var C,w;ke(l.value)&&!l.value.includes(f.value)?l.value.push(f.value):l.value=(w=(C=e.trueValue)!=null?C:e.trueLabel)!=null?w:!0}e.checked&&E()})(),ul({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>a.value&&In(e.value))),ul({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>!!e.trueLabel)),ul({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>!!e.falseLabel)),{inputId:v,isLabeledByFormItem:h,isChecked:i,isDisabled:m,isFocused:r,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:d,model:l,actualValue:f,handleChange:p,onClickRoot:g}},my=x({name:"ElCheckbox"}),gy=x({...my,props:Hd,emits:Kd,setup(e){const t=e,n=Xt(),{inputId:l,isLabeledByFormItem:a,isChecked:s,isDisabled:r,isFocused:i,checkboxSize:u,hasOwnLabel:c,model:d,actualValue:f,handleChange:m,onClickRoot:v}=Wd(t,n),h=ue("checkbox"),p=y(()=>[h.b(),h.m(u.value),h.is("disabled",r.value),h.is("bordered",t.border),h.is("checked",s.value)]),g=y(()=>[h.e("input"),h.is("disabled",r.value),h.is("checked",s.value),h.is("indeterminate",t.indeterminate),h.is("focus",i.value)]);return(b,E)=>(_(),oe(Ge(!o(c)&&o(a)?"span":"label"),{class:T(o(p)),"aria-controls":b.indeterminate?b.ariaControls:null,onClick:o(v)},{default:U(()=>{var C,w,k,S;return[F("span",{class:T(o(g))},[b.trueValue||b.falseValue||b.trueLabel||b.falseLabel?We((_(),V("input",{key:0,id:o(l),"onUpdate:modelValue":$=>gn(d)?d.value=$:null,class:T(o(h).e("original")),type:"checkbox",indeterminate:b.indeterminate,name:b.name,tabindex:b.tabindex,disabled:o(r),"true-value":(w=(C=b.trueValue)!=null?C:b.trueLabel)!=null?w:!0,"false-value":(S=(k=b.falseValue)!=null?k:b.falseLabel)!=null?S:!1,onChange:o(m),onFocus:$=>i.value=!0,onBlur:$=>i.value=!1,onClick:Le(()=>{},["stop"])},null,42,["id","onUpdate:modelValue","indeterminate","name","tabindex","disabled","true-value","false-value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(d)]]):We((_(),V("input",{key:1,id:o(l),"onUpdate:modelValue":$=>gn(d)?d.value=$:null,class:T(o(h).e("original")),type:"checkbox",indeterminate:b.indeterminate,disabled:o(r),value:o(f),name:b.name,tabindex:b.tabindex,onChange:o(m),onFocus:$=>i.value=!0,onBlur:$=>i.value=!1,onClick:Le(()=>{},["stop"])},null,42,["id","onUpdate:modelValue","indeterminate","disabled","value","name","tabindex","onChange","onFocus","onBlur","onClick"])),[[Ka,o(d)]]),F("span",{class:T(o(h).e("inner"))},null,2)],2),o(c)?(_(),V("span",{key:0,class:T(o(h).e("label"))},[G(b.$slots,"default"),b.$slots.default?J("v-if",!0):(_(),V(Oe,{key:0},[st(pe(b.label),1)],64))],2)):J("v-if",!0)]}),_:3},8,["class","aria-controls","onClick"]))}});var by=fe(gy,[["__file","checkbox.vue"]]);const yy=x({name:"ElCheckboxButton"}),Cy=x({...yy,props:Hd,emits:Kd,setup(e){const t=e,n=Xt(),{isFocused:l,isChecked:a,isDisabled:s,checkboxButtonSize:r,model:i,actualValue:u,handleChange:c}=Wd(t,n),d=we(Oo,void 0),f=ue("checkbox"),m=y(()=>{var h,p,g,b;const E=(p=(h=d==null?void 0:d.fill)==null?void 0:h.value)!=null?p:"";return{backgroundColor:E,borderColor:E,color:(b=(g=d==null?void 0:d.textColor)==null?void 0:g.value)!=null?b:"",boxShadow:E?`-1px 0 0 0 ${E}`:void 0}}),v=y(()=>[f.b("button"),f.bm("button",r.value),f.is("disabled",s.value),f.is("checked",a.value),f.is("focus",l.value)]);return(h,p)=>{var g,b,E,C;return _(),V("label",{class:T(o(v))},[h.trueValue||h.falseValue||h.trueLabel||h.falseLabel?We((_(),V("input",{key:0,"onUpdate:modelValue":w=>gn(i)?i.value=w:null,class:T(o(f).be("button","original")),type:"checkbox",name:h.name,tabindex:h.tabindex,disabled:o(s),"true-value":(b=(g=h.trueValue)!=null?g:h.trueLabel)!=null?b:!0,"false-value":(C=(E=h.falseValue)!=null?E:h.falseLabel)!=null?C:!1,onChange:o(c),onFocus:w=>l.value=!0,onBlur:w=>l.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","name","tabindex","disabled","true-value","false-value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(i)]]):We((_(),V("input",{key:1,"onUpdate:modelValue":w=>gn(i)?i.value=w:null,class:T(o(f).be("button","original")),type:"checkbox",name:h.name,tabindex:h.tabindex,disabled:o(s),value:o(u),onChange:o(c),onFocus:w=>l.value=!0,onBlur:w=>l.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","name","tabindex","disabled","value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(i)]]),h.$slots.default||h.label?(_(),V("span",{key:2,class:T(o(f).be("button","inner")),style:_e(o(a)?o(m):void 0)},[G(h.$slots,"default",{},()=>[st(pe(h.label),1)])],6)):J("v-if",!0)],2)}}});var jd=fe(Cy,[["__file","checkbox-button.vue"]]);const wy=de({modelValue:{type:Y(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:Jt,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},...cn(["ariaLabel"])}),ky={[De]:e=>ke(e),change:e=>ke(e)},Sy=x({name:"ElCheckboxGroup"}),Ey=x({...Sy,props:wy,emits:ky,setup(e,{emit:t}){const n=e,l=ue("checkbox"),{formItem:a}=dn(),{inputId:s,isLabeledByFormItem:r}=Kn(n,{formItemContext:a}),i=async c=>{t(De,c),await Ee(),t(nt,c)},u=y({get(){return n.modelValue},set(c){i(c)}});return rt(Oo,{...An(nn(n),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:u,changeEvent:i}),ie(()=>n.modelValue,()=>{n.validateEvent&&(a==null||a.validate("change").catch(c=>void 0))}),(c,d)=>{var f;return _(),oe(Ge(c.tag),{id:o(s),class:T(o(l).b("group")),role:"group","aria-label":o(r)?void 0:c.ariaLabel||"checkbox-group","aria-labelledby":o(r)?(f=o(a))==null?void 0:f.labelId:void 0},{default:U(()=>[G(c.$slots,"default")]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var Ud=fe(Ey,[["__file","checkbox-group.vue"]]);const Hn=He(by,{CheckboxButton:jd,CheckboxGroup:Ud}),_y=At(jd),Yd=At(Ud),qd=de({modelValue:{type:[String,Number,Boolean],default:void 0},size:Jt,disabled:Boolean,label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),Ty=de({...qd,border:Boolean}),Gd={[De]:e=>Ve(e)||Te(e)||_t(e),[nt]:e=>Ve(e)||Te(e)||_t(e)},Xd=Symbol("radioGroupKey"),Zd=(e,t)=>{const n=I(),l=we(Xd,void 0),a=y(()=>!!l),s=y(()=>In(e.value)?e.label:e.value),r=y({get(){return a.value?l.modelValue:e.modelValue},set(f){a.value?l.changeEvent(f):t&&t(De,f),n.value.checked=e.modelValue===s.value}}),i=Gt(y(()=>l==null?void 0:l.size)),u=fn(y(()=>l==null?void 0:l.disabled)),c=I(!1),d=y(()=>u.value||a.value&&r.value!==s.value?-1:0);return ul({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},y(()=>a.value&&In(e.value))),{radioRef:n,isGroup:a,radioGroup:l,focus:c,size:i,disabled:u,tabIndex:d,modelValue:r,actualValue:s}},$y=x({name:"ElRadio"}),Ny=x({...$y,props:Ty,emits:Gd,setup(e,{emit:t}){const n=e,l=ue("radio"),{radioRef:a,radioGroup:s,focus:r,size:i,disabled:u,modelValue:c,actualValue:d}=Zd(n,t);function f(){Ee(()=>t(nt,c.value))}return(m,v)=>{var h;return _(),V("label",{class:T([o(l).b(),o(l).is("disabled",o(u)),o(l).is("focus",o(r)),o(l).is("bordered",m.border),o(l).is("checked",o(c)===o(d)),o(l).m(o(i))])},[F("span",{class:T([o(l).e("input"),o(l).is("disabled",o(u)),o(l).is("checked",o(c)===o(d))])},[We(F("input",{ref_key:"radioRef",ref:a,"onUpdate:modelValue":p=>gn(c)?c.value=p:null,class:T(o(l).e("original")),value:o(d),name:m.name||((h=o(s))==null?void 0:h.name),disabled:o(u),checked:o(c)===o(d),type:"radio",onFocus:p=>r.value=!0,onBlur:p=>r.value=!1,onChange:f,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","checked","onFocus","onBlur","onClick"]),[[Rc,o(c)]]),F("span",{class:T(o(l).e("inner"))},null,2)],2),F("span",{class:T(o(l).e("label")),onKeydown:Le(()=>{},["stop"])},[G(m.$slots,"default",{},()=>[st(pe(m.label),1)])],42,["onKeydown"])],2)}}});var Iy=fe(Ny,[["__file","radio.vue"]]);const My=de({...qd}),Ry=x({name:"ElRadioButton"}),Py=x({...Ry,props:My,setup(e){const t=e,n=ue("radio"),{radioRef:l,focus:a,size:s,disabled:r,modelValue:i,radioGroup:u,actualValue:c}=Zd(t),d=y(()=>({backgroundColor:(u==null?void 0:u.fill)||"",borderColor:(u==null?void 0:u.fill)||"",boxShadow:u!=null&&u.fill?`-1px 0 0 0 ${u.fill}`:"",color:(u==null?void 0:u.textColor)||""}));return(f,m)=>{var v;return _(),V("label",{class:T([o(n).b("button"),o(n).is("active",o(i)===o(c)),o(n).is("disabled",o(r)),o(n).is("focus",o(a)),o(n).bm("button",o(s))])},[We(F("input",{ref_key:"radioRef",ref:l,"onUpdate:modelValue":h=>gn(i)?i.value=h:null,class:T(o(n).be("button","original-radio")),value:o(c),type:"radio",name:f.name||((v=o(u))==null?void 0:v.name),disabled:o(r),onFocus:h=>a.value=!0,onBlur:h=>a.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","onFocus","onBlur","onClick"]),[[Rc,o(i)]]),F("span",{class:T(o(n).be("button","inner")),style:_e(o(i)===o(c)?o(d):{}),onKeydown:Le(()=>{},["stop"])},[G(f.$slots,"default",{},()=>[st(pe(f.label),1)])],46,["onKeydown"])],2)}}});var Jd=fe(Py,[["__file","radio-button.vue"]]);const Oy=de({id:{type:String,default:void 0},size:Jt,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},...cn(["ariaLabel"])}),Ly=Gd,By=x({name:"ElRadioGroup"}),Vy=x({...By,props:Oy,emits:Ly,setup(e,{emit:t}){const n=e,l=ue("radio"),a=sn(),s=I(),{formItem:r}=dn(),{inputId:i,isLabeledByFormItem:u}=Kn(n,{formItemContext:r}),c=f=>{t(De,f),Ee(()=>t(nt,f))};Xe(()=>{const f=s.value.querySelectorAll("[type=radio]"),m=f[0];!Array.from(f).some(v=>v.checked)&&m&&(m.tabIndex=0)});const d=y(()=>n.name||a.value);return rt(Xd,kt({...nn(n),changeEvent:c,name:d})),ie(()=>n.modelValue,()=>{n.validateEvent&&(r==null||r.validate("change").catch(f=>void 0))}),(f,m)=>(_(),V("div",{id:o(i),ref_key:"radioGroupRef",ref:s,class:T(o(l).b("group")),role:"radiogroup","aria-label":o(u)?void 0:f.ariaLabel||"radio-group","aria-labelledby":o(u)?o(r).labelId:void 0},[G(f.$slots,"default")],10,["id","aria-label","aria-labelledby"]))}});var Qd=fe(Vy,[["__file","radio-group.vue"]]);const ef=He(Iy,{RadioButton:Jd,RadioGroup:Qd}),Dy=At(Qd),Ay=At(Jd);function Fy(e){return!!(ke(e)?e.every(({type:t})=>t===jl):(e==null?void 0:e.type)===jl)}var xy=x({name:"NodeContent",props:{node:{type:Object,required:!0},renderLabelFn:Function},setup(e){const t=ue("cascader-node"),{renderLabelFn:n,node:l}=e,{data:a,label:s}=l,r=()=>{const i=n==null?void 0:n({node:l,data:a});return Fy(i)?s:i??s};return()=>H("span",{class:t.e("label")},[r()])}});const li=Symbol(),zy=x({name:"ElCascaderNode"}),Hy=x({...zy,props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(e,{emit:t}){const n=e,l=we(li),a=ue("cascader-node"),s=y(()=>l.isHoverMenu),r=y(()=>l.config.multiple),i=y(()=>l.config.checkStrictly),u=y(()=>{var $;return($=l.checkedNodes[0])==null?void 0:$.uid}),c=y(()=>n.node.isDisabled),d=y(()=>n.node.isLeaf),f=y(()=>i.value&&!d.value||!c.value),m=y(()=>h(l.expandingNode)),v=y(()=>i.value&&l.checkedNodes.some(h)),h=$=>{var M;const{level:R,uid:N}=n.node;return((M=$==null?void 0:$.pathNodes[R-1])==null?void 0:M.uid)===N},p=()=>{m.value||l.expandNode(n.node)},g=$=>{const{node:M}=n;$!==M.checked&&l.handleCheckChange(M,$)},b=()=>{l.lazyLoad(n.node,()=>{d.value||p()})},E=$=>{s.value&&(C(),!d.value&&t("expand",$))},C=()=>{const{node:$}=n;!f.value||$.loading||($.loaded?p():b())},w=()=>{s.value&&!d.value||(d.value&&!c.value&&!i.value&&!r.value?S(!0):C())},k=$=>{i.value?(g($),n.node.loaded&&p()):S($)},S=$=>{n.node.loaded?(g($),!i.value&&p()):b()};return($,M)=>(_(),V("li",{id:`${e.menuId}-${e.node.uid}`,role:"menuitem","aria-haspopup":!o(d),"aria-owns":o(d)?void 0:e.menuId,"aria-expanded":o(m),tabindex:o(f)?-1:void 0,class:T([o(a).b(),o(a).is("selectable",o(i)),o(a).is("active",e.node.checked),o(a).is("disabled",!o(f)),o(m)&&"in-active-path",o(v)&&"in-checked-path"]),onMouseenter:E,onFocus:E,onClick:w},[J(" prefix "),o(r)?(_(),oe(o(Hn),{key:0,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:o(c),onClick:Le(()=>{},["stop"]),"onUpdate:modelValue":k},null,8,["model-value","indeterminate","disabled","onClick"])):o(i)?(_(),oe(o(ef),{key:1,"model-value":o(u),label:e.node.uid,disabled:o(c),"onUpdate:modelValue":k,onClick:Le(()=>{},["stop"])},{default:U(()=>[J(` Add an empty element to avoid render label, do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485 `),F("span")]),_:1},8,["model-value","label","disabled","onClick"])):o(d)&&e.node.checked?(_(),oe(o(Se),{key:2,class:T(o(a).e("prefix"))},{default:U(()=>[H(o(va))]),_:1},8,["class"])):J("v-if",!0),H(o(xy),{"render-label-fn":o(l).renderLabelFn,node:e.node},null,8,["render-label-fn","node"]),J(" postfix "),o(d)?J("v-if",!0):(_(),V(Oe,{key:3},[e.node.loading?(_(),oe(o(Se),{key:0,class:T([o(a).is("loading"),o(a).e("postfix")])},{default:U(()=>[H(o(Qn))]),_:1},8,["class"])):(_(),oe(o(Se),{key:1,class:T(["arrow-right",o(a).e("postfix")])},{default:U(()=>[H(o(Cn))]),_:1},8,["class"]))],64))],42,["id","aria-haspopup","aria-owns","aria-expanded","tabindex"]))}});var Ky=fe(Hy,[["__file","node.vue"]]);const Wy=x({name:"ElCascaderMenu"}),jy=x({...Wy,props:{nodes:{type:Array,required:!0},index:{type:Number,required:!0}},setup(e){const t=e,n=lt(),l=ue("cascader-menu"),{t:a}=pt(),s=sn();let r,i;const u=we(li),c=I(),d=y(()=>!t.nodes.length),f=y(()=>!u.initialLoaded),m=y(()=>`${s.value}-${t.index}`),v=b=>{r=b.target},h=b=>{if(!(!u.isHoverMenu||!r||!c.value))if(r.contains(b.target)){p();const E=n.vnode.el,{left:C}=E.getBoundingClientRect(),{offsetWidth:w,offsetHeight:k}=E,S=b.clientX-C,$=r.offsetTop,M=$+r.offsetHeight;c.value.innerHTML=` diff --git a/assets/index-BdtiivzQ.js b/assets/index-CY9cPBXr.js similarity index 88% rename from assets/index-BdtiivzQ.js rename to assets/index-CY9cPBXr.js index 3265bab9..380ef08a 100644 --- a/assets/index-BdtiivzQ.js +++ b/assets/index-CY9cPBXr.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-BnBqXii9.js","assets/vue-vendor-DfnFpxGJ.js","assets/ThemeToggle-DACcdK5F.js","assets/ThemeToggle-BbfeH87u.css","assets/element-plus-CMedNaYf.js","assets/vendor-BDiMbLwQ.js","assets/element-plus-nq7etrhL.css","assets/LoginView-tn0RQdqM.css","assets/MainLayout-DksoGYYS.js","assets/toast-BvwA7Mwb.js","assets/LogoTitle-CipNTyYU.js","assets/LogoTitle-DXipqypn.css","assets/MainLayout-CCQ2LruH.css","assets/DashboardView-CQUmRYwD.js","assets/chart-Cor9iTVD.js","assets/DashboardView-OFXgpCdk.css","assets/ApiKeysView-DuWy3uje.js","assets/WindowCountdown-RaAYa1A3.js","assets/CustomDropdown-D7ci0ZD4.js","assets/CustomDropdown-jjrvIxsf.css","assets/ApiKeysView-BAk5rs4W.css","assets/AccountsView-DBRgMVT7.js","assets/AccountsView-B3Ip8fto.css","assets/TutorialView-CC1KbDlg.js","assets/TutorialView-BVycHwR_.css","assets/SettingsView-BaUN8Iwk.js","assets/SettingsView-B6pg4BZM.css","assets/ApiStatsView-DHzUrYlz.js","assets/ApiStatsView-D_A6K6R6.css"])))=>i.map(i=>d[i]); -import{aP as H,aQ as W,aR as N,r as g,c as E,o as $,q as D,V as q,I as M,z as p,x as b,ac as F,Q as J,a5 as K,y as w,C as R,L,P as A,Y as j,B as Q,R as I,J as X,T as Y,O as Z,av as ee,aM as te,aS as se}from"./vue-vendor-DfnFpxGJ.js";import{i as oe,z as ne}from"./element-plus-CMedNaYf.js";import"./vendor-BDiMbLwQ.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function e(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=e(r);fetch(r.href,i)}})();const ae="modulepreload",re=function(o){return"/admin-next/"+o},U={},T=function(t,e,n){let r=Promise.resolve();if(e&&e.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));r=Promise.allSettled(e.map(l=>{if(l=re(l),l in U)return;U[l]=!0;const d=l.endsWith(".css"),m=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${m}`))return;const s=document.createElement("link");if(s.rel=d?"stylesheet":ae,d||(s.as="script"),s.crossOrigin="",s.href=l,c&&s.setAttribute("nonce",c),document.head.appendChild(s),d)return new Promise((u,h)=>{s.addEventListener("load",u),s.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${l}`)))})}))}function i(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return r.then(a=>{for(const c of a||[])c.status==="rejected"&&i(c.reason);return t().catch(i)})},C={basePath:"/admin-next/",apiPrefix:""};function ie(o=""){return o&&!o.startsWith("/")&&(o="/"+o),C.basePath+(o.startsWith("#")?o:"#"+o)}function ce(){return ie("/login")}const le=()=>T(()=>import("./LoginView-BnBqXii9.js"),__vite__mapDeps([0,1,2,3,4,5,6,7])),k=()=>T(()=>import("./MainLayout-DksoGYYS.js"),__vite__mapDeps([8,1,9,10,11,2,3,4,5,6,12])),ue=()=>T(()=>import("./DashboardView-CQUmRYwD.js"),__vite__mapDeps([13,4,1,5,6,9,14,15])),de=()=>T(()=>import("./ApiKeysView-DuWy3uje.js"),__vite__mapDeps([16,4,1,5,6,9,17,18,19,20])),he=()=>T(()=>import("./AccountsView-DBRgMVT7.js"),__vite__mapDeps([21,4,1,5,6,9,18,19,22])),fe=()=>T(()=>import("./TutorialView-CC1KbDlg.js"),__vite__mapDeps([23,1,4,5,6,24])),me=()=>T(()=>import("./SettingsView-BaUN8Iwk.js"),__vite__mapDeps([25,1,9,4,5,6,26])),pe=()=>T(()=>import("./ApiStatsView-DHzUrYlz.js"),__vite__mapDeps([27,1,10,11,2,3,5,17,23,4,6,24,28])),ge=[{path:"/",redirect:()=>{const o=window.location.pathname,t=C.basePath.replace(/\/$/,"");return o===t||o===t+"/","/api-stats"}},{path:"/login",name:"Login",component:le,meta:{requiresAuth:!1}},{path:"/api-stats",name:"ApiStats",component:pe,meta:{requiresAuth:!1}},{path:"/dashboard",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Dashboard",component:ue}]},{path:"/api-keys",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"ApiKeys",component:de}]},{path:"/accounts",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Accounts",component:he}]},{path:"/tutorial",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Tutorial",component:fe}]},{path:"/settings",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Settings",component:me}]},{path:"/:pathMatch(.*)*",redirect:"/api-stats"}],S=H({history:W(C.basePath),routes:ge});S.beforeEach((o,t,e)=>{const n=B();if(console.log("路由导航:",{to:o.path,from:t.path,fullPath:o.fullPath,requiresAuth:o.meta.requiresAuth,isAuthenticated:n.isAuthenticated}),o.path===t.path&&o.fullPath===t.fullPath)return e();o.path==="/api-stats"||o.path.startsWith("/api-stats")?e():o.meta.requiresAuth&&!n.isAuthenticated?e("/login"):o.path==="/login"&&n.isAuthenticated?e("/dashboard"):e()});const z=C.apiPrefix;function P(o){return o.startsWith("/")||(o="/"+o),z+o}class ve{constructor(){this.baseURL=z}getAuthToken(){return localStorage.getItem("authToken")||null}buildConfig(t={}){const e={headers:{"Content-Type":"application/json",...t.headers},...t},n=this.getAuthToken();return n&&(e.headers.Authorization=`Bearer ${n}`),e}async handleResponse(t){if(t.status===401){const n=window.location.pathname+window.location.hash;throw n.includes("/login")||n.endsWith("/")||(localStorage.removeItem("authToken"),window.location.href=ce()),new Error("Unauthorized")}const e=t.headers.get("content-type");if(e&&e.includes("application/json")){const n=await t.json();if(!t.ok)throw new Error(n.message||`HTTP ${t.status}`);return n}if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);return t}async get(t,e={}){const n=P(t),r=this.buildConfig({...e,method:"GET"});try{const i=await fetch(n,r);return await this.handleResponse(i)}catch(i){throw console.error("API GET Error:",i),i}}async post(t,e=null,n={}){const r=P(t),i=this.buildConfig({...n,method:"POST",body:e?JSON.stringify(e):void 0});try{const a=await fetch(r,i);return await this.handleResponse(a)}catch(a){throw console.error("API POST Error:",a),a}}async put(t,e=null,n={}){const r=P(t),i=this.buildConfig({...n,method:"PUT",body:e?JSON.stringify(e):void 0});try{const a=await fetch(r,i);return await this.handleResponse(a)}catch(a){throw console.error("API PUT Error:",a),a}}async delete(t,e={}){const n=P(t),{data:r,...i}=e,a=this.buildConfig({...i,method:"DELETE",body:r?JSON.stringify(r):void 0});try{const c=await fetch(n,a);return await this.handleResponse(c)}catch(c){throw console.error("API DELETE Error:",c),c}}}const x=new ve,B=N("auth",()=>{const o=g(!1),t=g(localStorage.getItem("authToken")||""),e=g(""),n=g(""),r=g(!1),i=g({siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",faviconData:""}),a=g(!0),c=E(()=>!!t.value&&o.value),l=E(()=>t.value),d=E(()=>({username:e.value}));async function m(f){r.value=!0,n.value="";try{const v=await x.post("/web/auth/login",f);v.success?(t.value=v.token,e.value=v.username||f.username,o.value=!0,localStorage.setItem("authToken",v.token),await S.push("/dashboard")):n.value=v.message||"登录失败"}catch(v){n.value=v.message||"登录失败,请检查用户名和密码"}finally{r.value=!1}}function s(){o.value=!1,t.value="",e.value="",localStorage.removeItem("authToken"),S.push("/login")}function u(){t.value&&(o.value=!0,h())}async function h(){try{const f=await x.get("/web/auth/user");f.success&&f.user&&(e.value=f.user.username),(await x.get("/admin/dashboard")).success||s()}catch{s()}}async function y(){a.value=!0;try{const f=await x.get("/admin/oem-settings");if(f.success&&f.data){if(i.value={...i.value,...f.data},f.data.siteIconData||f.data.siteIcon){const v=document.querySelector("link[rel*='icon']")||document.createElement("link");v.type="image/x-icon",v.rel="shortcut icon",v.href=f.data.siteIconData||f.data.siteIcon,document.getElementsByTagName("head")[0].appendChild(v)}f.data.siteName&&(document.title=`${f.data.siteName} - 管理后台`)}}catch(f){console.error("加载OEM设置失败:",f)}finally{a.value=!1}}return{isLoggedIn:o,authToken:t,username:e,loginError:n,loginLoading:r,oemSettings:i,oemLoading:a,isAuthenticated:c,token:l,user:d,login:m,logout:s,checkAuth:u,loadOemSettings:y}}),_={LIGHT:"light",DARK:"dark",AUTO:"auto"},_e=N("theme",()=>{const o=g(_.AUTO),t=g(!1),e=E(()=>o.value===_.DARK?!0:o.value===_.LIGHT?!1:t.value),n=E(()=>e.value?_.DARK:_.LIGHT),r=()=>{const s=window.matchMedia("(prefers-color-scheme: dark)");t.value=s.matches;const u=localStorage.getItem("themeMode");u&&Object.values(_).includes(u)?o.value=u:o.value=_.AUTO,i(),l()},i=()=>{const s=document.documentElement;e.value?s.classList.add("dark"):s.classList.remove("dark")},a=s=>{Object.values(_).includes(s)&&(o.value=s)},c=()=>{const s=[_.LIGHT,_.DARK,_.AUTO],h=(s.indexOf(o.value)+1)%s.length;o.value=s[h]};$(o,s=>{localStorage.setItem("themeMode",s),i()}),$(t,()=>{o.value===_.AUTO&&i()});const l=()=>{const s=window.matchMedia("(prefers-color-scheme: dark)"),u=h=>{t.value=h.matches};return t.value=s.matches,s.addEventListener("change",u),()=>{s.removeEventListener("change",u)}};return{themeMode:o,isDarkMode:e,currentTheme:n,systemPrefersDark:t,ThemeMode:_,initTheme:r,setThemeMode:a,cycleThemeMode:c,watchSystemTheme:l,toggleTheme:()=>{c()},setTheme:s=>{s==="dark"?a(_.DARK):s==="light"&&a(_.LIGHT)}}}),V=(o,t)=>{const e=o.__vccOpts||o;for(const[n,r]of t)e[n]=r;return e},ye={class:"toast-container"},we=["onClick"],Te={class:"toast-content"},be={class:"toast-icon"},Ae={class:"toast-body"},ke={key:0,class:"toast-title"},Ee={class:"toast-message"},Pe=["onClick"],xe={__name:"ToastNotification",setup(o,{expose:t}){const e=g([]);let n=0;const r=d=>{const m={success:"fas fa-check-circle",error:"fas fa-exclamation-circle",warning:"fas fa-exclamation-triangle",info:"fas fa-info-circle"};return m[d]||m.info},i=(d,m="info",s=null,u=5e3)=>{const h=++n,y={id:h,message:d,type:m,title:s,duration:u,isVisible:!1};return e.value.push(y),setTimeout(()=>{y.isVisible=!0},10),u>0&&setTimeout(()=>{a(h)},u),h},a=d=>{const m=e.value.findIndex(s=>s.id===d);if(m>-1){const s=e.value[m];s.isVisible=!1,setTimeout(()=>{const u=e.value.findIndex(h=>h.id===d);u>-1&&e.value.splice(u,1)},300)}},c=()=>{e.value.forEach(d=>{d.isVisible=!1}),setTimeout(()=>{e.value.length=0},300)},l=(d,m="info",s=null,u=5e3)=>i(d,m,s,u);return D(()=>{window.showToast=l}),q(()=>{window.showToast===l&&delete window.showToast}),t({showToast:l,removeToast:a,clearAllToasts:c}),(d,m)=>(w(),M(K,{to:"body"},[p("div",ye,[(w(!0),b(J,null,F(e.value,s=>(w(),b("div",{key:s.id,class:R(["toast",`toast-${s.type}`,s.isVisible?"toast-show":"toast-hide"]),onClick:u=>a(s.id)},[p("div",Te,[p("div",be,[p("i",{class:R(r(s.type))},null,2)]),p("div",Ae,[s.title?(w(),b("div",ke,A(s.title),1)):L("",!0),p("div",Ee,A(s.message),1)]),p("button",{class:"toast-close",onClick:j(u=>a(s.id),["stop"])},m[0]||(m[0]=[p("i",{class:"fas fa-times"},null,-1)]),8,Pe)]),s.duration>0?(w(),b("div",{key:0,class:"toast-progress",style:Q({animationDuration:`${s.duration}ms`})},null,4)):L("",!0)],10,we))),128))])]))}},Ie=V(xe,[["__scopeId","data-v-c8b24ff5"]]),Le={class:"modal-content mx-auto w-full max-w-md p-6"},Se={class:"mb-6 flex items-start gap-4"},Ce={class:"flex-1"},Oe={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Re={class:"whitespace-pre-line leading-relaxed text-gray-700 dark:text-gray-400"},De={class:"flex items-center justify-end gap-3"},Ve=["disabled"],$e=["disabled"],Ue={key:0,class:"loading-spinner mr-2"},Ne={__name:"ConfirmDialog",setup(o,{expose:t}){const e=g(!1),n=g(!1),r=g(""),i=g(""),a=g("确认"),c=g("取消");let l=null;const d=(h,y,f="确认",v="取消")=>new Promise(G=>{r.value=h,i.value=y,a.value=f,c.value=v,e.value=!0,n.value=!1,l=G}),m=()=>{n.value||(n.value=!0,setTimeout(()=>{e.value=!1,n.value=!1,l&&(l(!0),l=null)},200))},s=()=>{n.value||(e.value=!1,l&&(l(!1),l=null))},u=h=>{e.value&&(h.key==="Escape"?s():h.key==="Enter"&&!h.shiftKey&&!h.ctrlKey&&!h.altKey&&m())};return D(()=>{window.showConfirm=d,document.addEventListener("keydown",u)}),q(()=>{window.showConfirm===d&&delete window.showConfirm,document.removeEventListener("keydown",u)}),t({showConfirm:d}),(h,y)=>(w(),M(K,{to:"body"},[I(Y,{appear:"",name:"modal"},{default:X(()=>[e.value?(w(),b("div",{key:0,class:"modal fixed inset-0 z-[100] flex items-center justify-center p-4",onClick:j(s,["self"])},[p("div",Le,[p("div",Se,[y[0]||(y[0]=p("div",{class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl bg-gradient-to-br from-amber-500 to-amber-600"},[p("i",{class:"fas fa-exclamation-triangle text-lg text-white"})],-1)),p("div",Ce,[p("h3",Oe,A(r.value),1),p("div",Re,A(i.value),1)])]),p("div",De,[p("button",{class:"btn bg-gray-100 px-6 py-3 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:n.value,onClick:s},A(c.value),9,Ve),p("button",{class:R(["btn btn-warning px-6 py-3",{"cursor-not-allowed opacity-50":n.value}]),disabled:n.value,onClick:m},[n.value?(w(),b("div",Ue)):L("",!0),Z(" "+A(a.value),1)],10,$e)])])])):L("",!0)]),_:1})]))}},qe=V(Ne,[["__scopeId","data-v-6b3390a6"]]),Me={id:"app"},Ke={__name:"App",setup(o){const t=B(),e=_e(),n=g(),r=g();return D(()=>{e.initTheme(),e.watchSystemTheme(),t.checkAuth(),t.loadOemSettings()}),(i,a)=>{const c=ee("router-view");return w(),b("div",Me,[I(c),I(Ie,{ref_key:"toastRef",ref:n},null,512),I(qe,{ref_key:"confirmRef",ref:r},null,512)])}}},je=V(Ke,[["__scopeId","data-v-dab04b7e"]]),O=te(je),ze=se();O.use(ze);O.use(S);O.use(oe,{locale:ne});O.mount("#app");export{V as _,_e as a,x as b,B as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-BawsCHOq.js","assets/vue-vendor-Ig-GgGwA.js","assets/ThemeToggle-Bb-3yEk7.js","assets/ThemeToggle-BbfeH87u.css","assets/element-plus-Bq6mBxnk.js","assets/vendor-BDiMbLwQ.js","assets/element-plus-nq7etrhL.css","assets/LoginView-tn0RQdqM.css","assets/MainLayout-BgC31_Mb.js","assets/toast-BvwA7Mwb.js","assets/LogoTitle-DmOAmnuZ.js","assets/LogoTitle-DXipqypn.css","assets/MainLayout-CCQ2LruH.css","assets/DashboardView-B8PC7PpI.js","assets/chart-Cor9iTVD.js","assets/DashboardView-cbgZleS2.css","assets/ApiKeysView-AJLEWrkM.js","assets/WindowCountdown-DSqUCtdk.js","assets/CustomDropdown-C7e2WJat.js","assets/CustomDropdown-jjrvIxsf.css","assets/ApiKeysView-BAk5rs4W.css","assets/AccountsView-CxtkDnoV.js","assets/AccountsView-BtGq4rQp.css","assets/TutorialView-N5jhXyjx.js","assets/TutorialView-BVycHwR_.css","assets/SettingsView-DRYQRRYU.js","assets/SettingsView-DmJWeqhD.css","assets/ApiStatsView-B3sDs7Mx.js","assets/ApiStatsView-D_A6K6R6.css"])))=>i.map(i=>d[i]); +import{aP as H,aQ as W,aR as N,r as g,c as E,o as $,q as D,V as q,I as M,z as p,x as b,ac as F,Q as J,a5 as K,y as w,C as R,L,P as A,Y as j,B as Q,R as I,J as X,T as Y,O as Z,av as ee,aM as te,aS as se}from"./vue-vendor-Ig-GgGwA.js";import{i as oe,z as ne}from"./element-plus-Bq6mBxnk.js";import"./vendor-BDiMbLwQ.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function e(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=e(r);fetch(r.href,i)}})();const ae="modulepreload",re=function(o){return"/admin-next/"+o},U={},T=function(t,e,n){let r=Promise.resolve();if(e&&e.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));r=Promise.allSettled(e.map(l=>{if(l=re(l),l in U)return;U[l]=!0;const d=l.endsWith(".css"),m=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${m}`))return;const s=document.createElement("link");if(s.rel=d?"stylesheet":ae,d||(s.as="script"),s.crossOrigin="",s.href=l,c&&s.setAttribute("nonce",c),document.head.appendChild(s),d)return new Promise((u,h)=>{s.addEventListener("load",u),s.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${l}`)))})}))}function i(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return r.then(a=>{for(const c of a||[])c.status==="rejected"&&i(c.reason);return t().catch(i)})},C={basePath:"/admin-next/",apiPrefix:""};function ie(o=""){return o&&!o.startsWith("/")&&(o="/"+o),C.basePath+(o.startsWith("#")?o:"#"+o)}function ce(){return ie("/login")}const le=()=>T(()=>import("./LoginView-BawsCHOq.js"),__vite__mapDeps([0,1,2,3,4,5,6,7])),k=()=>T(()=>import("./MainLayout-BgC31_Mb.js"),__vite__mapDeps([8,1,9,10,11,2,3,4,5,6,12])),ue=()=>T(()=>import("./DashboardView-B8PC7PpI.js"),__vite__mapDeps([13,4,1,5,6,9,14,15])),de=()=>T(()=>import("./ApiKeysView-AJLEWrkM.js"),__vite__mapDeps([16,4,1,5,6,9,17,18,19,20])),he=()=>T(()=>import("./AccountsView-CxtkDnoV.js"),__vite__mapDeps([21,4,1,5,6,9,18,19,22])),fe=()=>T(()=>import("./TutorialView-N5jhXyjx.js"),__vite__mapDeps([23,1,4,5,6,24])),me=()=>T(()=>import("./SettingsView-DRYQRRYU.js"),__vite__mapDeps([25,1,9,4,5,6,26])),pe=()=>T(()=>import("./ApiStatsView-B3sDs7Mx.js"),__vite__mapDeps([27,1,10,11,2,3,5,17,23,4,6,24,28])),ge=[{path:"/",redirect:()=>{const o=window.location.pathname,t=C.basePath.replace(/\/$/,"");return o===t||o===t+"/","/api-stats"}},{path:"/login",name:"Login",component:le,meta:{requiresAuth:!1}},{path:"/api-stats",name:"ApiStats",component:pe,meta:{requiresAuth:!1}},{path:"/dashboard",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Dashboard",component:ue}]},{path:"/api-keys",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"ApiKeys",component:de}]},{path:"/accounts",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Accounts",component:he}]},{path:"/tutorial",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Tutorial",component:fe}]},{path:"/settings",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Settings",component:me}]},{path:"/:pathMatch(.*)*",redirect:"/api-stats"}],S=H({history:W(C.basePath),routes:ge});S.beforeEach((o,t,e)=>{const n=B();if(console.log("路由导航:",{to:o.path,from:t.path,fullPath:o.fullPath,requiresAuth:o.meta.requiresAuth,isAuthenticated:n.isAuthenticated}),o.path===t.path&&o.fullPath===t.fullPath)return e();o.path==="/api-stats"||o.path.startsWith("/api-stats")?e():o.meta.requiresAuth&&!n.isAuthenticated?e("/login"):o.path==="/login"&&n.isAuthenticated?e("/dashboard"):e()});const z=C.apiPrefix;function P(o){return o.startsWith("/")||(o="/"+o),z+o}class ve{constructor(){this.baseURL=z}getAuthToken(){return localStorage.getItem("authToken")||null}buildConfig(t={}){const e={headers:{"Content-Type":"application/json",...t.headers},...t},n=this.getAuthToken();return n&&(e.headers.Authorization=`Bearer ${n}`),e}async handleResponse(t){if(t.status===401){const n=window.location.pathname+window.location.hash;throw n.includes("/login")||n.endsWith("/")||(localStorage.removeItem("authToken"),window.location.href=ce()),new Error("Unauthorized")}const e=t.headers.get("content-type");if(e&&e.includes("application/json")){const n=await t.json();if(!t.ok)throw new Error(n.message||`HTTP ${t.status}`);return n}if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);return t}async get(t,e={}){const n=P(t),r=this.buildConfig({...e,method:"GET"});try{const i=await fetch(n,r);return await this.handleResponse(i)}catch(i){throw console.error("API GET Error:",i),i}}async post(t,e=null,n={}){const r=P(t),i=this.buildConfig({...n,method:"POST",body:e?JSON.stringify(e):void 0});try{const a=await fetch(r,i);return await this.handleResponse(a)}catch(a){throw console.error("API POST Error:",a),a}}async put(t,e=null,n={}){const r=P(t),i=this.buildConfig({...n,method:"PUT",body:e?JSON.stringify(e):void 0});try{const a=await fetch(r,i);return await this.handleResponse(a)}catch(a){throw console.error("API PUT Error:",a),a}}async delete(t,e={}){const n=P(t),{data:r,...i}=e,a=this.buildConfig({...i,method:"DELETE",body:r?JSON.stringify(r):void 0});try{const c=await fetch(n,a);return await this.handleResponse(c)}catch(c){throw console.error("API DELETE Error:",c),c}}}const x=new ve,B=N("auth",()=>{const o=g(!1),t=g(localStorage.getItem("authToken")||""),e=g(""),n=g(""),r=g(!1),i=g({siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",faviconData:""}),a=g(!0),c=E(()=>!!t.value&&o.value),l=E(()=>t.value),d=E(()=>({username:e.value}));async function m(f){r.value=!0,n.value="";try{const v=await x.post("/web/auth/login",f);v.success?(t.value=v.token,e.value=v.username||f.username,o.value=!0,localStorage.setItem("authToken",v.token),await S.push("/dashboard")):n.value=v.message||"登录失败"}catch(v){n.value=v.message||"登录失败,请检查用户名和密码"}finally{r.value=!1}}function s(){o.value=!1,t.value="",e.value="",localStorage.removeItem("authToken"),S.push("/login")}function u(){t.value&&(o.value=!0,h())}async function h(){try{const f=await x.get("/web/auth/user");f.success&&f.user&&(e.value=f.user.username),(await x.get("/admin/dashboard")).success||s()}catch{s()}}async function y(){a.value=!0;try{const f=await x.get("/admin/oem-settings");if(f.success&&f.data){if(i.value={...i.value,...f.data},f.data.siteIconData||f.data.siteIcon){const v=document.querySelector("link[rel*='icon']")||document.createElement("link");v.type="image/x-icon",v.rel="shortcut icon",v.href=f.data.siteIconData||f.data.siteIcon,document.getElementsByTagName("head")[0].appendChild(v)}f.data.siteName&&(document.title=`${f.data.siteName} - 管理后台`)}}catch(f){console.error("加载OEM设置失败:",f)}finally{a.value=!1}}return{isLoggedIn:o,authToken:t,username:e,loginError:n,loginLoading:r,oemSettings:i,oemLoading:a,isAuthenticated:c,token:l,user:d,login:m,logout:s,checkAuth:u,loadOemSettings:y}}),_={LIGHT:"light",DARK:"dark",AUTO:"auto"},_e=N("theme",()=>{const o=g(_.AUTO),t=g(!1),e=E(()=>o.value===_.DARK?!0:o.value===_.LIGHT?!1:t.value),n=E(()=>e.value?_.DARK:_.LIGHT),r=()=>{const s=window.matchMedia("(prefers-color-scheme: dark)");t.value=s.matches;const u=localStorage.getItem("themeMode");u&&Object.values(_).includes(u)?o.value=u:o.value=_.AUTO,i(),l()},i=()=>{const s=document.documentElement;e.value?s.classList.add("dark"):s.classList.remove("dark")},a=s=>{Object.values(_).includes(s)&&(o.value=s)},c=()=>{const s=[_.LIGHT,_.DARK,_.AUTO],h=(s.indexOf(o.value)+1)%s.length;o.value=s[h]};$(o,s=>{localStorage.setItem("themeMode",s),i()}),$(t,()=>{o.value===_.AUTO&&i()});const l=()=>{const s=window.matchMedia("(prefers-color-scheme: dark)"),u=h=>{t.value=h.matches};return t.value=s.matches,s.addEventListener("change",u),()=>{s.removeEventListener("change",u)}};return{themeMode:o,isDarkMode:e,currentTheme:n,systemPrefersDark:t,ThemeMode:_,initTheme:r,setThemeMode:a,cycleThemeMode:c,watchSystemTheme:l,toggleTheme:()=>{c()},setTheme:s=>{s==="dark"?a(_.DARK):s==="light"&&a(_.LIGHT)}}}),V=(o,t)=>{const e=o.__vccOpts||o;for(const[n,r]of t)e[n]=r;return e},ye={class:"toast-container"},we=["onClick"],Te={class:"toast-content"},be={class:"toast-icon"},Ae={class:"toast-body"},ke={key:0,class:"toast-title"},Ee={class:"toast-message"},Pe=["onClick"],xe={__name:"ToastNotification",setup(o,{expose:t}){const e=g([]);let n=0;const r=d=>{const m={success:"fas fa-check-circle",error:"fas fa-exclamation-circle",warning:"fas fa-exclamation-triangle",info:"fas fa-info-circle"};return m[d]||m.info},i=(d,m="info",s=null,u=5e3)=>{const h=++n,y={id:h,message:d,type:m,title:s,duration:u,isVisible:!1};return e.value.push(y),setTimeout(()=>{y.isVisible=!0},10),u>0&&setTimeout(()=>{a(h)},u),h},a=d=>{const m=e.value.findIndex(s=>s.id===d);if(m>-1){const s=e.value[m];s.isVisible=!1,setTimeout(()=>{const u=e.value.findIndex(h=>h.id===d);u>-1&&e.value.splice(u,1)},300)}},c=()=>{e.value.forEach(d=>{d.isVisible=!1}),setTimeout(()=>{e.value.length=0},300)},l=(d,m="info",s=null,u=5e3)=>i(d,m,s,u);return D(()=>{window.showToast=l}),q(()=>{window.showToast===l&&delete window.showToast}),t({showToast:l,removeToast:a,clearAllToasts:c}),(d,m)=>(w(),M(K,{to:"body"},[p("div",ye,[(w(!0),b(J,null,F(e.value,s=>(w(),b("div",{key:s.id,class:R(["toast",`toast-${s.type}`,s.isVisible?"toast-show":"toast-hide"]),onClick:u=>a(s.id)},[p("div",Te,[p("div",be,[p("i",{class:R(r(s.type))},null,2)]),p("div",Ae,[s.title?(w(),b("div",ke,A(s.title),1)):L("",!0),p("div",Ee,A(s.message),1)]),p("button",{class:"toast-close",onClick:j(u=>a(s.id),["stop"])},m[0]||(m[0]=[p("i",{class:"fas fa-times"},null,-1)]),8,Pe)]),s.duration>0?(w(),b("div",{key:0,class:"toast-progress",style:Q({animationDuration:`${s.duration}ms`})},null,4)):L("",!0)],10,we))),128))])]))}},Ie=V(xe,[["__scopeId","data-v-c8b24ff5"]]),Le={class:"modal-content mx-auto w-full max-w-md p-6"},Se={class:"mb-6 flex items-start gap-4"},Ce={class:"flex-1"},Oe={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Re={class:"whitespace-pre-line leading-relaxed text-gray-700 dark:text-gray-400"},De={class:"flex items-center justify-end gap-3"},Ve=["disabled"],$e=["disabled"],Ue={key:0,class:"loading-spinner mr-2"},Ne={__name:"ConfirmDialog",setup(o,{expose:t}){const e=g(!1),n=g(!1),r=g(""),i=g(""),a=g("确认"),c=g("取消");let l=null;const d=(h,y,f="确认",v="取消")=>new Promise(G=>{r.value=h,i.value=y,a.value=f,c.value=v,e.value=!0,n.value=!1,l=G}),m=()=>{n.value||(n.value=!0,setTimeout(()=>{e.value=!1,n.value=!1,l&&(l(!0),l=null)},200))},s=()=>{n.value||(e.value=!1,l&&(l(!1),l=null))},u=h=>{e.value&&(h.key==="Escape"?s():h.key==="Enter"&&!h.shiftKey&&!h.ctrlKey&&!h.altKey&&m())};return D(()=>{window.showConfirm=d,document.addEventListener("keydown",u)}),q(()=>{window.showConfirm===d&&delete window.showConfirm,document.removeEventListener("keydown",u)}),t({showConfirm:d}),(h,y)=>(w(),M(K,{to:"body"},[I(Y,{appear:"",name:"modal"},{default:X(()=>[e.value?(w(),b("div",{key:0,class:"modal fixed inset-0 z-[100] flex items-center justify-center p-4",onClick:j(s,["self"])},[p("div",Le,[p("div",Se,[y[0]||(y[0]=p("div",{class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl bg-gradient-to-br from-amber-500 to-amber-600"},[p("i",{class:"fas fa-exclamation-triangle text-lg text-white"})],-1)),p("div",Ce,[p("h3",Oe,A(r.value),1),p("div",Re,A(i.value),1)])]),p("div",De,[p("button",{class:"btn bg-gray-100 px-6 py-3 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:n.value,onClick:s},A(c.value),9,Ve),p("button",{class:R(["btn btn-warning px-6 py-3",{"cursor-not-allowed opacity-50":n.value}]),disabled:n.value,onClick:m},[n.value?(w(),b("div",Ue)):L("",!0),Z(" "+A(a.value),1)],10,$e)])])])):L("",!0)]),_:1})]))}},qe=V(Ne,[["__scopeId","data-v-6b3390a6"]]),Me={id:"app"},Ke={__name:"App",setup(o){const t=B(),e=_e(),n=g(),r=g();return D(()=>{e.initTheme(),e.watchSystemTheme(),t.checkAuth(),t.loadOemSettings()}),(i,a)=>{const c=ee("router-view");return w(),b("div",Me,[I(c),I(Ie,{ref_key:"toastRef",ref:n},null,512),I(qe,{ref_key:"confirmRef",ref:r},null,512)])}}},je=V(Ke,[["__scopeId","data-v-dab04b7e"]]),O=te(je),ze=se();O.use(ze);O.use(S);O.use(oe,{locale:ne});O.mount("#app");export{V as _,_e as a,x as b,B as u}; diff --git a/assets/index-CtIRgL_b.css b/assets/index-CpSw-PRl.css similarity index 50% rename from assets/index-CtIRgL_b.css rename to assets/index-CpSw-PRl.css index 950e80ad..44f5b816 100644 --- a/assets/index-CtIRgL_b.css +++ b/assets/index-CpSw-PRl.css @@ -1,5 +1,5 @@ -.toast-container[data-v-c8b24ff5]{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:12px;pointer-events:none}.toast[data-v-c8b24ff5]{min-width:320px;max-width:500px;background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000001f;border:1px solid #e5e7eb;overflow:hidden;position:relative;pointer-events:auto;cursor:pointer;transform:translate(100%);opacity:0;transition:all .3s cubic-bezier(.4,0,.2,1)}.dark{background:#1f2937;border:1px solid #374151;box-shadow:0 8px 32px #0000004d}.toast-show[data-v-c8b24ff5]{transform:translate(0);opacity:1}.toast-hide[data-v-c8b24ff5]{transform:translate(100%);opacity:0}.toast-content[data-v-c8b24ff5]{display:flex;align-items:flex-start;padding:16px;gap:12px}.toast-icon[data-v-c8b24ff5]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:14px}.toast-body[data-v-c8b24ff5]{flex:1}.toast-title[data-v-c8b24ff5]{font-weight:600;font-size:14px;line-height:1.4;margin-bottom:4px}.toast-message[data-v-c8b24ff5]{font-size:14px;line-height:1.5;word-wrap:break-word}.toast-close[data-v-c8b24ff5]{flex-shrink:0;width:24px;height:24px;border:none;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;color:#9ca3af;transition:all .2s ease}.toast-close[data-v-c8b24ff5]:hover{background:#f3f4f6;color:#6b7280}.dark{background:#374151;color:#9ca3af}.toast-progress[data-v-c8b24ff5]{position:absolute;bottom:0;left:0;height:3px;background:currentColor;opacity:.3;animation:toast-progress-c8b24ff5 linear forwards}@keyframes toast-progress-c8b24ff5{0%{width:100%}to{width:0%}}.toast-success[data-v-c8b24ff5]{border-left:4px solid #10b981}.toast-success .toast-icon[data-v-c8b24ff5]{color:#10b981;background:#d1fae5}.dark{background:#064e3b}.toast-success .toast-title[data-v-c8b24ff5]{color:#065f46}.dark{color:#10b981}.toast-success .toast-message[data-v-c8b24ff5]{color:#047857}.dark{color:#34d399}.toast-success .toast-progress[data-v-c8b24ff5]{background:#10b981}.toast-error[data-v-c8b24ff5]{border-left:4px solid #ef4444}.toast-error .toast-icon[data-v-c8b24ff5]{color:#ef4444;background:#fee2e2}.dark{background:#7f1d1d}.toast-error .toast-title[data-v-c8b24ff5]{color:#991b1b}.dark{color:#ef4444}.toast-error .toast-message[data-v-c8b24ff5]{color:#dc2626}.dark{color:#f87171}.toast-error .toast-progress[data-v-c8b24ff5]{background:#ef4444}.toast-warning[data-v-c8b24ff5]{border-left:4px solid #f59e0b}.toast-warning .toast-icon[data-v-c8b24ff5]{color:#f59e0b;background:#fef3c7}.dark{background:#78350f}.toast-warning .toast-title[data-v-c8b24ff5]{color:#92400e}.dark{color:#f59e0b}.toast-warning .toast-message[data-v-c8b24ff5]{color:#d97706}.dark{color:#fbbf24}.toast-warning .toast-progress[data-v-c8b24ff5]{background:#f59e0b}.toast-info[data-v-c8b24ff5]{border-left:4px solid #3b82f6}.toast-info .toast-icon[data-v-c8b24ff5]{color:#3b82f6;background:#dbeafe}.dark{background:#1e3a8a}.toast-info .toast-title[data-v-c8b24ff5]{color:#1e40af}.dark{color:#3b82f6}.toast-info .toast-message[data-v-c8b24ff5]{color:#2563eb}.dark{color:#60a5fa}.toast-info .toast-progress[data-v-c8b24ff5]{background:#3b82f6}@media (max-width: 640px){.toast-container[data-v-c8b24ff5]{top:10px;right:10px;left:10px}.toast[data-v-c8b24ff5]{min-width:auto;max-width:none}}.toast-list-enter-active[data-v-c8b24ff5],.toast-list-leave-active[data-v-c8b24ff5]{transition:all .3s ease}.toast-list-enter-from[data-v-c8b24ff5],.toast-list-leave-to[data-v-c8b24ff5]{opacity:0;transform:translate(100%)}.toast-list-move[data-v-c8b24ff5]{transition:transform .3s ease}.modal[data-v-6b3390a6]{background:#00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dark{background:#000000b3}.modal-content[data-v-6b3390a6]{background:#fff;border-radius:16px;box-shadow:0 20px 64px #00000026;border:1px solid #e5e7eb;max-height:90vh;overflow-y:auto}.dark{background:#1f2937;border:1px solid #374151;box-shadow:0 20px 64px #000c}.btn[data-v-6b3390a6]{display:inline-flex;align-items:center;justify-content:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn[data-v-6b3390a6]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-offset-width: 2px}.btn-danger[data-v-6b3390a6]{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-danger[data-v-6b3390a6]:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.btn-danger[data-v-6b3390a6]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.btn-warning[data-v-6b3390a6]{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-warning[data-v-6b3390a6]:hover{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity, 1))}.btn-warning[data-v-6b3390a6]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(245 158 11 / var(--tw-ring-opacity, 1))}.loading-spinner[data-v-6b3390a6]{height:1rem;width:1rem}@keyframes spin-6b3390a6{to{transform:rotate(360deg)}}.loading-spinner[data-v-6b3390a6]{animation:spin-6b3390a6 1s linear infinite;border-radius:9999px;border-width:2px;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-border-opacity: 1;border-top-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.modal-enter-active[data-v-6b3390a6],.modal-leave-active[data-v-6b3390a6]{transition:all .3s ease}.modal-enter-from[data-v-6b3390a6],.modal-leave-to[data-v-6b3390a6]{opacity:0}.modal-enter-active .modal-content[data-v-6b3390a6],.modal-leave-active .modal-content[data-v-6b3390a6]{transition:transform .3s ease}.modal-enter-from .modal-content[data-v-6b3390a6],.modal-leave-to .modal-content[data-v-6b3390a6]{transform:scale(.9) translateY(-20px)}.modal-content[data-v-6b3390a6]::-webkit-scrollbar{width:6px}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px}.dark{background:#374151}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.dark{background:#4b5563}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-thumb:hover{background:#94a3b8}.dark{background:#6b7280}#app[data-v-dab04b7e]{min-height:100vh}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-0\.5{top:-.125rem;right:-.125rem;bottom:-.125rem;left:-.125rem}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.-right-2{right:-.5rem}.-top-2{top:-.5rem}.left-0{left:0}.left-3{left:.75rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-3{top:.75rem}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[9999\]{z-index:9999}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-8{margin-right:2rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-row{display:table-row}.grid{display:grid}.hidden{display:none}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-\[250px\]{max-height:250px}.max-h-\[90vh\]{max-height:90vh}.min-h-\[32px\]{min-height:32px}.min-h-\[48px\]{min-height:48px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[10\%\]{width:10%}.w-\[12\%\]{width:12%}.w-\[15\%\]{width:15%}.w-\[17\%\]{width:17%}.w-\[20\%\]{width:20%}.w-\[22\%\]{width:22%}.w-\[25\%\]{width:25%}.w-\[50px\]{width:50px}.w-\[8\%\]{width:8%}.w-\[95\%\]{width:95%}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[20px\]{min-width:20px}.min-w-\[32px\]{min-width:32px}.min-w-\[70px\]{min-width:70px}.min-w-\[80px\]{min-width:80px}.min-w-\[90px\]{min-width:90px}.min-w-full{min-width:100%}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[100px\]{max-width:100px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.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))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.divide-gray-200\/50>:not([hidden])~:not([hidden]){border-color:#e5e7eb80}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-amber-400{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1))}.border-blue-100{--tw-border-opacity: 1;border-color:rgb(219 234 254 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-300{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-200\/50{border-color:#e5e7eb80}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-300\/30{border-color:#d1d5db4d}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-green-100{--tw-border-opacity: 1;border-color:rgb(220 252 231 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-indigo-100{--tw-border-opacity: 1;border-color:rgb(224 231 255 / var(--tw-border-opacity, 1))}.border-indigo-200{--tw-border-opacity: 1;border-color:rgb(199 210 254 / var(--tw-border-opacity, 1))}.border-orange-100{--tw-border-opacity: 1;border-color:rgb(255 237 213 / var(--tw-border-opacity, 1))}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-300{--tw-border-opacity: 1;border-color:rgb(253 186 116 / var(--tw-border-opacity, 1))}.border-purple-100{--tw-border-opacity: 1;border-color:rgb(243 232 255 / var(--tw-border-opacity, 1))}.border-purple-200{--tw-border-opacity: 1;border-color:rgb(233 213 255 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/30{border-color:#ef44444d}.border-white\/20{border-color:#fff3}.border-yellow-100{--tw-border-opacity: 1;border-color:rgb(254 249 195 / var(--tw-border-opacity, 1))}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-300{--tw-border-opacity: 1;border-color:rgb(253 224 71 / var(--tw-border-opacity, 1))}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-300\/50{background-color:#d1d5db80}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-50\/80{background-color:#f9fafbcc}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-indigo-300{--tw-bg-opacity: 1;background-color:rgb(165 180 252 / var(--tw-bg-opacity, 1))}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-orange-200{--tw-bg-opacity: 1;background-color:rgb(254 215 170 / var(--tw-bg-opacity, 1))}.bg-orange-300{--tw-bg-opacity: 1;background-color:rgb(253 186 116 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-300{--tw-bg-opacity: 1;background-color:rgb(216 180 254 / var(--tw-bg-opacity, 1))}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/20{background-color:#ef444433}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/30{background-color:#ffffff4d}.bg-white\/80{background-color:#fffc}.bg-white\/90{background-color:#ffffffe6}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-300{--tw-bg-opacity: 1;background-color:rgb(253 224 71 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-opacity-20{--tw-bg-opacity: .2}.bg-opacity-50{--tw-bg-opacity: .5}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from: #f59e0b var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from: #eff6ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 246 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500\/20{--tw-gradient-from: rgb(59 130 246 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500{--tw-gradient-from: #06b6d4 var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500{--tw-gradient-from: #10b981 var(--tw-gradient-from-position);--tw-gradient-to: rgb(16 185 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-100{--tw-gradient-from: #f3f4f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(243 244 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-50{--tw-gradient-from: #f9fafb var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 250 251 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-50{--tw-gradient-from: #f0fdf4 var(--tw-gradient-from-position);--tw-gradient-to: rgb(240 253 244 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-100{--tw-gradient-from: #e0e7ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(224 231 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-50{--tw-gradient-from: #eef2ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(238 242 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-100{--tw-gradient-from: #ffedd5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 237 213 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-50{--tw-gradient-from: #fff7ed var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 247 237 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-100{--tw-gradient-from: #f3e8ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(243 232 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-50{--tw-gradient-from: #faf5ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(250 245 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-rose-500{--tw-gradient-from: #f43f5e var(--tw-gradient-from-position);--tw-gradient-to: rgb(244 63 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from: transparent var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-100{--tw-gradient-from: #fef9c3 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 249 195 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-400{--tw-gradient-from: #facc15 var(--tw-gradient-from-position);--tw-gradient-to: rgb(250 204 21 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-50{--tw-gradient-from: #fefce8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 252 232 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-500{--tw-gradient-from: #eab308 var(--tw-gradient-from-position);--tw-gradient-to: rgb(234 179 8 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-gray-300{--tw-gradient-to: rgb(209 213 219 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #d1d5db var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-amber-100{--tw-gradient-to: #fef3c7 var(--tw-gradient-to-position)}.to-amber-50{--tw-gradient-to: #fffbeb var(--tw-gradient-to-position)}.to-amber-600{--tw-gradient-to: #d97706 var(--tw-gradient-to-position)}.to-blue-100{--tw-gradient-to: #dbeafe var(--tw-gradient-to-position)}.to-blue-500{--tw-gradient-to: #3b82f6 var(--tw-gradient-to-position)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-emerald-50{--tw-gradient-to: #ecfdf5 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-emerald-600{--tw-gradient-to: #059669 var(--tw-gradient-to-position)}.to-gray-100{--tw-gradient-to: #f3f4f6 var(--tw-gradient-to-position)}.to-gray-200{--tw-gradient-to: #e5e7eb var(--tw-gradient-to-position)}.to-gray-50{--tw-gradient-to: #f9fafb var(--tw-gradient-to-position)}.to-green-100{--tw-gradient-to: #dcfce7 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-indigo-50{--tw-gradient-to: #eef2ff var(--tw-gradient-to-position)}.to-indigo-500{--tw-gradient-to: #6366f1 var(--tw-gradient-to-position)}.to-indigo-600{--tw-gradient-to: #4f46e5 var(--tw-gradient-to-position)}.to-orange-100{--tw-gradient-to: #ffedd5 var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.to-pink-100{--tw-gradient-to: #fce7f3 var(--tw-gradient-to-position)}.to-pink-50{--tw-gradient-to: #fdf2f8 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-purple-100{--tw-gradient-to: #f3e8ff var(--tw-gradient-to-position)}.to-purple-50{--tw-gradient-to: #faf5ff var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-purple-500\/20{--tw-gradient-to: rgb(168 85 247 / .2) var(--tw-gradient-to-position)}.to-purple-600{--tw-gradient-to: #9333ea var(--tw-gradient-to-position)}.to-red-100{--tw-gradient-to: #fee2e2 var(--tw-gradient-to-position)}.to-red-50{--tw-gradient-to: #fef2f2 var(--tw-gradient-to-position)}.to-red-600{--tw-gradient-to: #dc2626 var(--tw-gradient-to-position)}.to-rose-600{--tw-gradient-to: #e11d48 var(--tw-gradient-to-position)}.to-slate-50{--tw-gradient-to: #f8fafc var(--tw-gradient-to-position)}.to-teal-500{--tw-gradient-to: #14b8a6 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.to-yellow-100{--tw-gradient-to: #fef9c3 var(--tw-gradient-to-position)}.to-yellow-50{--tw-gradient-to: #fefce8 var(--tw-gradient-to-position)}.to-yellow-500{--tw-gradient-to: #eab308 var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-3{padding-left:.75rem}.pl-9{padding-left:2.25rem}.pr-10{padding-right:2.5rem}.pr-14{padding-right:3.5rem}.pr-3{padding-right:.75rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10px\]{font-size:10px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-100{--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.text-blue-200{--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-cyan-500{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-gray-950{--tw-text-opacity: 1;color:rgb(3 7 18 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-green-900{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-indigo-800{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-purple-800{--tw-text-opacity: 1;color:rgb(107 33 168 / var(--tw-text-opacity, 1))}.text-purple-900{--tw-text-opacity: 1;color:rgb(88 28 135 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-rose-600{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/70{color:#ffffffb3}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-90{opacity:.9}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.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)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));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-sm{--tw-backdrop-blur: blur(4px);-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(24px);-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{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--primary-color: #667eea;--secondary-color: #764ba2;--accent-color: #f093fb;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(255, 255, 255, .95);--glass-color: rgba(255, 255, 255, .1);--text-primary: #1f2937;--text-secondary: #6b7280;--border-color: rgba(255, 255, 255, .2)}.glass{background:var(--glass-color);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-color);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,inset 0 1px #ffffff1a}.glass-strong{background:var(--surface-color);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);border:1px solid rgba(255,255,255,.3);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d,inset 0 1px #ffffff1a}.card{background:var(--surface-color);border-radius:16px;border:1px solid rgba(255,255,255,.2);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative}.stat-card{background:linear-gradient(135deg,#fffffff2,#fffc);border-radius:20px;border:1px solid rgba(255,255,255,.3);padding:24px;position:relative;overflow:hidden;transition:all .3s ease}.btn-secondary{background:linear-gradient(135deg,#6b7280,#4b5563);color:#fff;box-shadow:0 10px 15px -3px #6b72804d,0 4px 6px -2px #6b72800d}.btn-secondary:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #6b72804d,0 10px 10px -5px #6b72801a}.form-input{background:#ffffffe6;border:2px solid rgba(255,255,255,.3);border-radius:12px;padding:8px 12px;font-size:14px;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.form-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #667eea1a,0 10px 15px -3px #0000001a;background:#fffffff2}.table-container{background:#fffffff2;border-radius:16px;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.table-row{transition:all .2s ease}.table-row:hover{background:#667eea0d;transform:scale(1.005)}.modal{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0006}.modal-content{background:#fffffff2;border-radius:24px;border:1px solid rgba(255,255,255,.3);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}@media (max-width: 640px){.glass,.glass-strong{margin:12px;border-radius:16px;padding:16px}.stat-card{padding:12px;border-radius:12px}.stat-icon{width:40px;height:40px;font-size:16px}.tab-btn{font-size:12px;padding:10px 6px}.modal-content{margin:8px;max-width:calc(100vw - 24px);padding:16px}.modal-scroll-content{max-height:calc(90vh - 100px)}.card{border-radius:12px}.form-input,.form-select,.form-textarea{font-size:14px;padding:8px 12px}.btn{font-size:14px;padding:8px 16px}.table-container table{font-size:12px}.table-container th,.table-container td{padding:8px 12px}.toast{min-width:280px;max-width:calc(100vw - 40px);right:12px;top:60px}.loading-spinner{width:16px;height:16px}}.fa-openai{width:16px;height:16px;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNjQwIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIHY3LjAuMCBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIENvcHlyaWdodCAyMDI1IEZvbnRpY29ucywgSW5jLi0tPjxwYXRoIGQ9Ik0yNjAuNCAyNDkuOHYtNDguNmMwLTQuMSAxLjUtNy4yIDUuMS05LjJsOTcuOC01Ni4zYzEzLjMtNy43IDI5LjItMTEuMyA0NS42LTExLjMgNjEuNCAwIDEwMC40IDQ3LjYgMTAwLjQgOTguMyAwIDMuNiAwIDcuNy0uNSAxMS44bC0xMDEuNS01OS40Yy02LjEtMy42LTEyLjMtMy42LTE4LjQgMGwtMTI4LjUgNzQuN3ptMjI4LjMgMTg5LjRWMzIzYzAtNy4yLTMuMS0xMi4zLTkuMi0xNS45TDM1MSAyMzIuNGw0Mi0yNC4xYzMuNi0yIDYuNy0yIDEwLjIgMGw5Ny44IDU2LjRjMjguMiAxNi40IDQ3LjEgNTEuMiA0Ny4xIDg1IDAgMzguOS0yMyA3NC44LTU5LjQgODkuNnpNMjMwLjIgMzM2LjhsLTQyLTI0LjZjLTMuNi0yLTUuMS01LjEtNS4xLTkuMlYxOTAuNGMwLTU0LjggNDItOTYuMyA5OC44LTk2LjMgMjEuNSAwIDQxLjUgNy4yIDU4LjQgMjBsLTEwMC45IDU4LjRjLTYuMSAzLjYtOS4yIDguNy05LjIgMTUuOXYxNDguNXptOTAuNCA1Mi4ybC02MC4yLTMzLjh2LTcxLjdsNjAuMi0zMy44IDYwLjIgMzMuOHY3MS43TDMyMC42IDM4OXptMzguNyAxNTUuN2MtMjEuNSAwLTQxLjUtNy4yLTU4LjQtMjBsMTAwLjktNTguNGM2LjEtMy42IDkuMi04LjcgOS4yLTE1LjlWMzAxLjlsNDIuNSAyNC42YzMuNiAyIDUuMSA1LjEgNS4xIDkuMnYxMTIuNmMwIDU0LjgtNDIuNSA5Ni4zLTk5LjMgOTYuM3pNMjM3LjggNDMwLjVsLTk3LjctNTYuM0MxMTEuOSAzNTcuOCA5MyAzMjMgOTMgMjg5LjJjMC0zOS40IDIzLjYtNzQuOCA1OS45LTg5LjZ2MTE2LjdjMCA3LjIgMy4xIDEyLjMgOS4yIDE1LjlsMTI4IDc0LjItNDIgMjQuMWMtMy42IDItNi43IDItMTAuMiAwem0tNS42IDg0Yy01Ny45IDAtMTAwLjQtNDMuNS0xMDAuNC05Ny4zIDAtNC4xLjUtOC4yIDEtMTIuM2wxMDAuOSA1OC40YzYuMSAzLjYgMTIuMyAzLjYgMTguNCAwbDEyOC41LTc0LjJ2NDguNmMwIDQuMS0xLjUgNy4yLTUuMSA5LjJsLTk3LjggNTYuM2MtMTMuMyA3LjctMjkuMiAxMS4zLTQ1LjYgMTEuM3ptMTI3IDYwLjljNjIgMCAxMTMuNy00NCAxMjUuNC0xMDIuNCA1Ny4zLTE0LjkgOTQuMi02OC42IDk0LjItMTIzLjQgMC0zNS44LTE1LjQtNzAuNy00My05NS43IDIuNi0xMC44IDQuMS0yMS41IDQuMS0zMi4zIDAtNzMuMi01OS40LTEyOC0xMjgtMTI4LTEzLjggMC0yNy4xIDItNDAuNCA2LjctMjMtMjIuNS01NC44LTM2LjktODkuNi0zNi45LTYyIDAtMTEzLjcgNDQtMTI1LjQgMTAyLjQtNTcuMyAxNC44LTk0LjIgNjguNi05NC4yIDEyMy40IDAgMzUuOCAxNS40IDcwLjcgNDMgOTUuNy0yLjYgMTAuOC00LjEgMjEuNS00LjEgMzIuMyAwIDczLjIgNTkuNCAxMjggMTI4IDEyOCAxMy44IDAgMjcuMS0yIDQwLjQtNi43IDIzIDIyLjUgNTQuOCAzNi45IDg5LjYgMzYuOXoiLz48L3N2Zz4=) no-repeat center/100%}/*! +.toast-container[data-v-c8b24ff5]{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:12px;pointer-events:none}.toast[data-v-c8b24ff5]{min-width:320px;max-width:500px;background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000001f;border:1px solid #e5e7eb;overflow:hidden;position:relative;pointer-events:auto;cursor:pointer;transform:translate(100%);opacity:0;transition:all .3s cubic-bezier(.4,0,.2,1)}.dark{background:#1f2937;border:1px solid #374151;box-shadow:0 8px 32px #0000004d}.toast-show[data-v-c8b24ff5]{transform:translate(0);opacity:1}.toast-hide[data-v-c8b24ff5]{transform:translate(100%);opacity:0}.toast-content[data-v-c8b24ff5]{display:flex;align-items:flex-start;padding:16px;gap:12px}.toast-icon[data-v-c8b24ff5]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:14px}.toast-body[data-v-c8b24ff5]{flex:1}.toast-title[data-v-c8b24ff5]{font-weight:600;font-size:14px;line-height:1.4;margin-bottom:4px}.toast-message[data-v-c8b24ff5]{font-size:14px;line-height:1.5;word-wrap:break-word}.toast-close[data-v-c8b24ff5]{flex-shrink:0;width:24px;height:24px;border:none;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;color:#9ca3af;transition:all .2s ease}.toast-close[data-v-c8b24ff5]:hover{background:#f3f4f6;color:#6b7280}.dark{background:#374151;color:#9ca3af}.toast-progress[data-v-c8b24ff5]{position:absolute;bottom:0;left:0;height:3px;background:currentColor;opacity:.3;animation:toast-progress-c8b24ff5 linear forwards}@keyframes toast-progress-c8b24ff5{0%{width:100%}to{width:0%}}.toast-success[data-v-c8b24ff5]{border-left:4px solid #10b981}.toast-success .toast-icon[data-v-c8b24ff5]{color:#10b981;background:#d1fae5}.dark{background:#064e3b}.toast-success .toast-title[data-v-c8b24ff5]{color:#065f46}.dark{color:#10b981}.toast-success .toast-message[data-v-c8b24ff5]{color:#047857}.dark{color:#34d399}.toast-success .toast-progress[data-v-c8b24ff5]{background:#10b981}.toast-error[data-v-c8b24ff5]{border-left:4px solid #ef4444}.toast-error .toast-icon[data-v-c8b24ff5]{color:#ef4444;background:#fee2e2}.dark{background:#7f1d1d}.toast-error .toast-title[data-v-c8b24ff5]{color:#991b1b}.dark{color:#ef4444}.toast-error .toast-message[data-v-c8b24ff5]{color:#dc2626}.dark{color:#f87171}.toast-error .toast-progress[data-v-c8b24ff5]{background:#ef4444}.toast-warning[data-v-c8b24ff5]{border-left:4px solid #f59e0b}.toast-warning .toast-icon[data-v-c8b24ff5]{color:#f59e0b;background:#fef3c7}.dark{background:#78350f}.toast-warning .toast-title[data-v-c8b24ff5]{color:#92400e}.dark{color:#f59e0b}.toast-warning .toast-message[data-v-c8b24ff5]{color:#d97706}.dark{color:#fbbf24}.toast-warning .toast-progress[data-v-c8b24ff5]{background:#f59e0b}.toast-info[data-v-c8b24ff5]{border-left:4px solid #3b82f6}.toast-info .toast-icon[data-v-c8b24ff5]{color:#3b82f6;background:#dbeafe}.dark{background:#1e3a8a}.toast-info .toast-title[data-v-c8b24ff5]{color:#1e40af}.dark{color:#3b82f6}.toast-info .toast-message[data-v-c8b24ff5]{color:#2563eb}.dark{color:#60a5fa}.toast-info .toast-progress[data-v-c8b24ff5]{background:#3b82f6}@media (max-width: 640px){.toast-container[data-v-c8b24ff5]{top:10px;right:10px;left:10px}.toast[data-v-c8b24ff5]{min-width:auto;max-width:none}}.toast-list-enter-active[data-v-c8b24ff5],.toast-list-leave-active[data-v-c8b24ff5]{transition:all .3s ease}.toast-list-enter-from[data-v-c8b24ff5],.toast-list-leave-to[data-v-c8b24ff5]{opacity:0;transform:translate(100%)}.toast-list-move[data-v-c8b24ff5]{transition:transform .3s ease}.modal[data-v-6b3390a6]{background:#00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dark{background:#000000b3}.modal-content[data-v-6b3390a6]{background:#fff;border-radius:16px;box-shadow:0 20px 64px #00000026;border:1px solid #e5e7eb;max-height:90vh;overflow-y:auto}.dark{background:#1f2937;border:1px solid #374151;box-shadow:0 20px 64px #000c}.btn[data-v-6b3390a6]{display:inline-flex;align-items:center;justify-content:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn[data-v-6b3390a6]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-offset-width: 2px}.btn-danger[data-v-6b3390a6]{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-danger[data-v-6b3390a6]:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.btn-danger[data-v-6b3390a6]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.btn-warning[data-v-6b3390a6]{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-warning[data-v-6b3390a6]:hover{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity, 1))}.btn-warning[data-v-6b3390a6]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(245 158 11 / var(--tw-ring-opacity, 1))}.loading-spinner[data-v-6b3390a6]{height:1rem;width:1rem}@keyframes spin-6b3390a6{to{transform:rotate(360deg)}}.loading-spinner[data-v-6b3390a6]{animation:spin-6b3390a6 1s linear infinite;border-radius:9999px;border-width:2px;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-border-opacity: 1;border-top-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.modal-enter-active[data-v-6b3390a6],.modal-leave-active[data-v-6b3390a6]{transition:all .3s ease}.modal-enter-from[data-v-6b3390a6],.modal-leave-to[data-v-6b3390a6]{opacity:0}.modal-enter-active .modal-content[data-v-6b3390a6],.modal-leave-active .modal-content[data-v-6b3390a6]{transition:transform .3s ease}.modal-enter-from .modal-content[data-v-6b3390a6],.modal-leave-to .modal-content[data-v-6b3390a6]{transform:scale(.9) translateY(-20px)}.modal-content[data-v-6b3390a6]::-webkit-scrollbar{width:6px}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px}.dark{background:#374151}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.dark{background:#4b5563}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-thumb:hover{background:#94a3b8}.dark{background:#6b7280}#app[data-v-dab04b7e]{min-height:100vh}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-0\.5{top:-.125rem;right:-.125rem;bottom:-.125rem;left:-.125rem}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.-right-2{right:-.5rem}.-top-2{top:-.5rem}.left-0{left:0}.left-3{left:.75rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-3{top:.75rem}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[9999\]{z-index:9999}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-8{margin-right:2rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-row{display:table-row}.grid{display:grid}.hidden{display:none}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-\[250px\]{max-height:250px}.max-h-\[90vh\]{max-height:90vh}.min-h-\[32px\]{min-height:32px}.min-h-\[48px\]{min-height:48px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[10\%\]{width:10%}.w-\[12\%\]{width:12%}.w-\[15\%\]{width:15%}.w-\[17\%\]{width:17%}.w-\[20\%\]{width:20%}.w-\[22\%\]{width:22%}.w-\[25\%\]{width:25%}.w-\[50px\]{width:50px}.w-\[8\%\]{width:8%}.w-\[95\%\]{width:95%}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[20px\]{min-width:20px}.min-w-\[32px\]{min-width:32px}.min-w-\[70px\]{min-width:70px}.min-w-\[80px\]{min-width:80px}.min-w-\[90px\]{min-width:90px}.min-w-full{min-width:100%}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[100px\]{max-width:100px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-2{--tw-translate-y: -.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance: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))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.divide-gray-200\/50>:not([hidden])~:not([hidden]){border-color:#e5e7eb80}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-amber-400{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1))}.border-blue-100{--tw-border-opacity: 1;border-color:rgb(219 234 254 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-300{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-200\/50{border-color:#e5e7eb80}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-300\/30{border-color:#d1d5db4d}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-green-100{--tw-border-opacity: 1;border-color:rgb(220 252 231 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-indigo-100{--tw-border-opacity: 1;border-color:rgb(224 231 255 / var(--tw-border-opacity, 1))}.border-indigo-200{--tw-border-opacity: 1;border-color:rgb(199 210 254 / var(--tw-border-opacity, 1))}.border-orange-100{--tw-border-opacity: 1;border-color:rgb(255 237 213 / var(--tw-border-opacity, 1))}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-300{--tw-border-opacity: 1;border-color:rgb(253 186 116 / var(--tw-border-opacity, 1))}.border-purple-100{--tw-border-opacity: 1;border-color:rgb(243 232 255 / var(--tw-border-opacity, 1))}.border-purple-200{--tw-border-opacity: 1;border-color:rgb(233 213 255 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/30{border-color:#ef44444d}.border-transparent{border-color:transparent}.border-white\/20{border-color:#fff3}.border-yellow-100{--tw-border-opacity: 1;border-color:rgb(254 249 195 / var(--tw-border-opacity, 1))}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-300{--tw-border-opacity: 1;border-color:rgb(253 224 71 / var(--tw-border-opacity, 1))}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1))}.bg-black\/60{background-color:#0009}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-300{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-300\/50{background-color:#d1d5db80}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-50\/80{background-color:#f9fafbcc}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-indigo-300{--tw-bg-opacity: 1;background-color:rgb(165 180 252 / var(--tw-bg-opacity, 1))}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-orange-200{--tw-bg-opacity: 1;background-color:rgb(254 215 170 / var(--tw-bg-opacity, 1))}.bg-orange-300{--tw-bg-opacity: 1;background-color:rgb(253 186 116 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-300{--tw-bg-opacity: 1;background-color:rgb(216 180 254 / var(--tw-bg-opacity, 1))}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/20{background-color:#ef444433}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/30{background-color:#ffffff4d}.bg-white\/80{background-color:#fffc}.bg-white\/90{background-color:#ffffffe6}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-300{--tw-bg-opacity: 1;background-color:rgb(253 224 71 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-opacity-20{--tw-bg-opacity: .2}.bg-opacity-50{--tw-bg-opacity: .5}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from: #f59e0b var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-100{--tw-gradient-from: #dbeafe var(--tw-gradient-from-position);--tw-gradient-to: rgb(219 234 254 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from: #eff6ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 246 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500\/20{--tw-gradient-from: rgb(59 130 246 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-600{--tw-gradient-from: #2563eb var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500{--tw-gradient-from: #06b6d4 var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500{--tw-gradient-from: #10b981 var(--tw-gradient-from-position);--tw-gradient-to: rgb(16 185 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-100{--tw-gradient-from: #f3f4f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(243 244 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-50{--tw-gradient-from: #f9fafb var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 250 251 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-600{--tw-gradient-from: #4b5563 var(--tw-gradient-from-position);--tw-gradient-to: rgb(75 85 99 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-50{--tw-gradient-from: #f0fdf4 var(--tw-gradient-from-position);--tw-gradient-to: rgb(240 253 244 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-100{--tw-gradient-from: #e0e7ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(224 231 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-50{--tw-gradient-from: #eef2ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(238 242 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-100{--tw-gradient-from: #ffedd5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 237 213 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-50{--tw-gradient-from: #fff7ed var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 247 237 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-100{--tw-gradient-from: #f3e8ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(243 232 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-50{--tw-gradient-from: #faf5ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(250 245 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-rose-500{--tw-gradient-from: #f43f5e var(--tw-gradient-from-position);--tw-gradient-to: rgb(244 63 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from: transparent var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-100{--tw-gradient-from: #fef9c3 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 249 195 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-400{--tw-gradient-from: #facc15 var(--tw-gradient-from-position);--tw-gradient-to: rgb(250 204 21 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-50{--tw-gradient-from: #fefce8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 252 232 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-500{--tw-gradient-from: #eab308 var(--tw-gradient-from-position);--tw-gradient-to: rgb(234 179 8 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-gray-300{--tw-gradient-to: rgb(209 213 219 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #d1d5db var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-amber-100{--tw-gradient-to: #fef3c7 var(--tw-gradient-to-position)}.to-amber-50{--tw-gradient-to: #fffbeb var(--tw-gradient-to-position)}.to-amber-600{--tw-gradient-to: #d97706 var(--tw-gradient-to-position)}.to-blue-100{--tw-gradient-to: #dbeafe var(--tw-gradient-to-position)}.to-blue-500{--tw-gradient-to: #3b82f6 var(--tw-gradient-to-position)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-100{--tw-gradient-to: #cffafe var(--tw-gradient-to-position)}.to-cyan-600{--tw-gradient-to: #0891b2 var(--tw-gradient-to-position)}.to-emerald-50{--tw-gradient-to: #ecfdf5 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-emerald-600{--tw-gradient-to: #059669 var(--tw-gradient-to-position)}.to-gray-100{--tw-gradient-to: #f3f4f6 var(--tw-gradient-to-position)}.to-gray-200{--tw-gradient-to: #e5e7eb var(--tw-gradient-to-position)}.to-gray-50{--tw-gradient-to: #f9fafb var(--tw-gradient-to-position)}.to-gray-700{--tw-gradient-to: #374151 var(--tw-gradient-to-position)}.to-green-100{--tw-gradient-to: #dcfce7 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-indigo-50{--tw-gradient-to: #eef2ff var(--tw-gradient-to-position)}.to-indigo-500{--tw-gradient-to: #6366f1 var(--tw-gradient-to-position)}.to-indigo-600{--tw-gradient-to: #4f46e5 var(--tw-gradient-to-position)}.to-orange-100{--tw-gradient-to: #ffedd5 var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.to-pink-100{--tw-gradient-to: #fce7f3 var(--tw-gradient-to-position)}.to-pink-50{--tw-gradient-to: #fdf2f8 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-purple-100{--tw-gradient-to: #f3e8ff var(--tw-gradient-to-position)}.to-purple-50{--tw-gradient-to: #faf5ff var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-purple-500\/20{--tw-gradient-to: rgb(168 85 247 / .2) var(--tw-gradient-to-position)}.to-purple-600{--tw-gradient-to: #9333ea var(--tw-gradient-to-position)}.to-red-100{--tw-gradient-to: #fee2e2 var(--tw-gradient-to-position)}.to-red-50{--tw-gradient-to: #fef2f2 var(--tw-gradient-to-position)}.to-red-600{--tw-gradient-to: #dc2626 var(--tw-gradient-to-position)}.to-rose-600{--tw-gradient-to: #e11d48 var(--tw-gradient-to-position)}.to-slate-50{--tw-gradient-to: #f8fafc var(--tw-gradient-to-position)}.to-teal-500{--tw-gradient-to: #14b8a6 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.to-yellow-100{--tw-gradient-to: #fef9c3 var(--tw-gradient-to-position)}.to-yellow-50{--tw-gradient-to: #fefce8 var(--tw-gradient-to-position)}.to-yellow-500{--tw-gradient-to: #eab308 var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-3{padding-left:.75rem}.pl-9{padding-left:2.25rem}.pr-10{padding-right:2.5rem}.pr-14{padding-right:3.5rem}.pr-3{padding-right:.75rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10px\]{font-size:10px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-100{--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.text-blue-200{--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-cyan-500{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-gray-950{--tw-text-opacity: 1;color:rgb(3 7 18 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-green-900{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-indigo-800{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-purple-800{--tw-text-opacity: 1;color:rgb(107 33 168 / var(--tw-text-opacity, 1))}.text-purple-900{--tw-text-opacity: 1;color:rgb(88 28 135 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-rose-600{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/70{color:#ffffffb3}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-90{opacity:.9}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-green-500\/20{--tw-ring-color: rgb(34 197 94 / .2)}.ring-red-500\/20{--tw-ring-color: rgb(239 68 68 / .2)}.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)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));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-sm{--tw-backdrop-blur: blur(4px);-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(24px);-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{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--primary-color: #667eea;--secondary-color: #764ba2;--accent-color: #f093fb;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(255, 255, 255, .95);--glass-color: rgba(255, 255, 255, .1);--text-primary: #1f2937;--text-secondary: #6b7280;--border-color: rgba(255, 255, 255, .2)}.glass{background:var(--glass-color);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-color);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,inset 0 1px #ffffff1a}.glass-strong{background:var(--surface-color);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);border:1px solid rgba(255,255,255,.3);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d,inset 0 1px #ffffff1a}.card{background:var(--surface-color);border-radius:16px;border:1px solid rgba(255,255,255,.2);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative}.stat-card{background:linear-gradient(135deg,#fffffff2,#fffc);border-radius:20px;border:1px solid rgba(255,255,255,.3);padding:24px;position:relative;overflow:hidden;transition:all .3s ease}.btn-secondary{background:linear-gradient(135deg,#6b7280,#4b5563);color:#fff;box-shadow:0 10px 15px -3px #6b72804d,0 4px 6px -2px #6b72800d}.btn-secondary:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #6b72804d,0 10px 10px -5px #6b72801a}.form-input{background:#ffffffe6;border:2px solid rgba(255,255,255,.3);border-radius:12px;padding:8px 12px;font-size:14px;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.form-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #667eea1a,0 10px 15px -3px #0000001a;background:#fffffff2}.table-container{background:#fffffff2;border-radius:16px;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.table-row{transition:all .2s ease}.table-row:hover{background:#667eea0d;transform:scale(1.005)}.modal{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0006}.modal-content{background:#fffffff2;border-radius:24px;border:1px solid rgba(255,255,255,.3);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}@media (max-width: 640px){.glass,.glass-strong{margin:12px;border-radius:16px;padding:16px}.stat-card{padding:12px;border-radius:12px}.stat-icon{width:40px;height:40px;font-size:16px}.tab-btn{font-size:12px;padding:10px 6px}.modal-content{margin:8px;max-width:calc(100vw - 24px);padding:16px}.modal-scroll-content{max-height:calc(90vh - 100px)}.card{border-radius:12px}.form-input,.form-select,.form-textarea{font-size:14px;padding:8px 12px}.btn{font-size:14px;padding:8px 16px}.table-container table{font-size:12px}.table-container th,.table-container td{padding:8px 12px}.toast{min-width:280px;max-width:calc(100vw - 40px);right:12px;top:60px}.loading-spinner{width:16px;height:16px}}.fa-openai{width:16px;height:16px;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNjQwIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIHY3LjAuMCBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIENvcHlyaWdodCAyMDI1IEZvbnRpY29ucywgSW5jLi0tPjxwYXRoIGQ9Ik0yNjAuNCAyNDkuOHYtNDguNmMwLTQuMSAxLjUtNy4yIDUuMS05LjJsOTcuOC01Ni4zYzEzLjMtNy43IDI5LjItMTEuMyA0NS42LTExLjMgNjEuNCAwIDEwMC40IDQ3LjYgMTAwLjQgOTguMyAwIDMuNiAwIDcuNy0uNSAxMS44bC0xMDEuNS01OS40Yy02LjEtMy42LTEyLjMtMy42LTE4LjQgMGwtMTI4LjUgNzQuN3ptMjI4LjMgMTg5LjRWMzIzYzAtNy4yLTMuMS0xMi4zLTkuMi0xNS45TDM1MSAyMzIuNGw0Mi0yNC4xYzMuNi0yIDYuNy0yIDEwLjIgMGw5Ny44IDU2LjRjMjguMiAxNi40IDQ3LjEgNTEuMiA0Ny4xIDg1IDAgMzguOS0yMyA3NC44LTU5LjQgODkuNnpNMjMwLjIgMzM2LjhsLTQyLTI0LjZjLTMuNi0yLTUuMS01LjEtNS4xLTkuMlYxOTAuNGMwLTU0LjggNDItOTYuMyA5OC44LTk2LjMgMjEuNSAwIDQxLjUgNy4yIDU4LjQgMjBsLTEwMC45IDU4LjRjLTYuMSAzLjYtOS4yIDguNy05LjIgMTUuOXYxNDguNXptOTAuNCA1Mi4ybC02MC4yLTMzLjh2LTcxLjdsNjAuMi0zMy44IDYwLjIgMzMuOHY3MS43TDMyMC42IDM4OXptMzguNyAxNTUuN2MtMjEuNSAwLTQxLjUtNy4yLTU4LjQtMjBsMTAwLjktNTguNGM2LjEtMy42IDkuMi04LjcgOS4yLTE1LjlWMzAxLjlsNDIuNSAyNC42YzMuNiAyIDUuMSA1LjEgNS4xIDkuMnYxMTIuNmMwIDU0LjgtNDIuNSA5Ni4zLTk5LjMgOTYuM3pNMjM3LjggNDMwLjVsLTk3LjctNTYuM0MxMTEuOSAzNTcuOCA5MyAzMjMgOTMgMjg5LjJjMC0zOS40IDIzLjYtNzQuOCA1OS45LTg5LjZ2MTE2LjdjMCA3LjIgMy4xIDEyLjMgOS4yIDE1LjlsMTI4IDc0LjItNDIgMjQuMWMtMy42IDItNi43IDItMTAuMiAwem0tNS42IDg0Yy01Ny45IDAtMTAwLjQtNDMuNS0xMDAuNC05Ny4zIDAtNC4xLjUtOC4yIDEtMTIuM2wxMDAuOSA1OC40YzYuMSAzLjYgMTIuMyAzLjYgMTguNCAwbDEyOC41LTc0LjJ2NDguNmMwIDQuMS0xLjUgNy4yLTUuMSA5LjJsLTk3LjggNTYuM2MtMTMuMyA3LjctMjkuMiAxMS4zLTQ1LjYgMTEuM3ptMTI3IDYwLjljNjIgMCAxMTMuNy00NCAxMjUuNC0xMDIuNCA1Ny4zLTE0LjkgOTQuMi02OC42IDk0LjItMTIzLjQgMC0zNS44LTE1LjQtNzAuNy00My05NS43IDIuNi0xMC44IDQuMS0yMS41IDQuMS0zMi4zIDAtNzMuMi01OS40LTEyOC0xMjgtMTI4LTEzLjggMC0yNy4xIDItNDAuNCA2LjctMjMtMjIuNS01NC44LTM2LjktODkuNi0zNi45LTYyIDAtMTEzLjcgNDQtMTI1LjQgMTAyLjQtNTcuMyAxNC44LTk0LjIgNjguNi05NC4yIDEyMy40IDAgMzUuOCAxNS40IDcwLjcgNDMgOTUuNy0yLjYgMTAuOC00LjEgMjEuNS00LjEgMzIuMyAwIDczLjIgNTkuNCAxMjggMTI4IDEyOCAxMy44IDAgMjcuMS0yIDQwLjQtNi43IDIzIDIyLjUgNTQuOCAzNi45IDg5LjYgMzYuOXoiLz48L3N2Zz4=) no-repeat center/100%}/*! * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. - */.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas:before,.far:before,.fab:before,.fa-solid:before,.fa-regular:before,.fa-brands:before,.fa:before{content:var(--fa)}.fa-classic,.fas,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(-1 * var(--fa-li-width, 2em));position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, .1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, .08em);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.28, .84, .42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 2s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0)}}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle, 0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0{--fa: "0"}.fa-1{--fa: "1"}.fa-2{--fa: "2"}.fa-3{--fa: "3"}.fa-4{--fa: "4"}.fa-5{--fa: "5"}.fa-6{--fa: "6"}.fa-7{--fa: "7"}.fa-8{--fa: "8"}.fa-9{--fa: "9"}.fa-fill-drip{--fa: ""}.fa-arrows-to-circle{--fa: ""}.fa-circle-chevron-right,.fa-chevron-circle-right{--fa: ""}.fa-at{--fa: "@"}.fa-trash-can,.fa-trash-alt{--fa: ""}.fa-text-height{--fa: ""}.fa-user-xmark,.fa-user-times{--fa: ""}.fa-stethoscope{--fa: ""}.fa-message,.fa-comment-alt{--fa: ""}.fa-info{--fa: ""}.fa-down-left-and-up-right-to-center,.fa-compress-alt{--fa: ""}.fa-explosion{--fa: ""}.fa-file-lines,.fa-file-alt,.fa-file-text{--fa: ""}.fa-wave-square{--fa: ""}.fa-ring{--fa: ""}.fa-building-un{--fa: ""}.fa-dice-three{--fa: ""}.fa-calendar-days,.fa-calendar-alt{--fa: ""}.fa-anchor-circle-check{--fa: ""}.fa-building-circle-arrow-right{--fa: ""}.fa-volleyball,.fa-volleyball-ball{--fa: ""}.fa-arrows-up-to-line{--fa: ""}.fa-sort-down,.fa-sort-desc{--fa: ""}.fa-circle-minus,.fa-minus-circle{--fa: ""}.fa-door-open{--fa: ""}.fa-right-from-bracket,.fa-sign-out-alt{--fa: ""}.fa-atom{--fa: ""}.fa-soap{--fa: ""}.fa-icons,.fa-heart-music-camera-bolt{--fa: ""}.fa-microphone-lines-slash,.fa-microphone-alt-slash{--fa: ""}.fa-bridge-circle-check{--fa: ""}.fa-pump-medical{--fa: ""}.fa-fingerprint{--fa: ""}.fa-hand-point-right{--fa: ""}.fa-magnifying-glass-location,.fa-search-location{--fa: ""}.fa-forward-step,.fa-step-forward{--fa: ""}.fa-face-smile-beam,.fa-smile-beam{--fa: ""}.fa-flag-checkered{--fa: ""}.fa-football,.fa-football-ball{--fa: ""}.fa-school-circle-exclamation{--fa: ""}.fa-crop{--fa: ""}.fa-angles-down,.fa-angle-double-down{--fa: ""}.fa-users-rectangle{--fa: ""}.fa-people-roof{--fa: ""}.fa-people-line{--fa: ""}.fa-beer-mug-empty,.fa-beer{--fa: ""}.fa-diagram-predecessor{--fa: ""}.fa-arrow-up-long,.fa-long-arrow-up{--fa: ""}.fa-fire-flame-simple,.fa-burn{--fa: ""}.fa-person,.fa-male{--fa: ""}.fa-laptop{--fa: ""}.fa-file-csv{--fa: ""}.fa-menorah{--fa: ""}.fa-truck-plane{--fa: ""}.fa-record-vinyl{--fa: ""}.fa-face-grin-stars,.fa-grin-stars{--fa: ""}.fa-bong{--fa: ""}.fa-spaghetti-monster-flying,.fa-pastafarianism{--fa: ""}.fa-arrow-down-up-across-line{--fa: ""}.fa-spoon,.fa-utensil-spoon{--fa: ""}.fa-jar-wheat{--fa: ""}.fa-envelopes-bulk,.fa-mail-bulk{--fa: ""}.fa-file-circle-exclamation{--fa: ""}.fa-circle-h,.fa-hospital-symbol{--fa: ""}.fa-pager{--fa: ""}.fa-address-book,.fa-contact-book{--fa: ""}.fa-strikethrough{--fa: ""}.fa-k{--fa: "K"}.fa-landmark-flag{--fa: ""}.fa-pencil,.fa-pencil-alt{--fa: ""}.fa-backward{--fa: ""}.fa-caret-right{--fa: ""}.fa-comments{--fa: ""}.fa-paste,.fa-file-clipboard{--fa: ""}.fa-code-pull-request{--fa: ""}.fa-clipboard-list{--fa: ""}.fa-truck-ramp-box,.fa-truck-loading{--fa: ""}.fa-user-check{--fa: ""}.fa-vial-virus{--fa: ""}.fa-sheet-plastic{--fa: ""}.fa-blog{--fa: ""}.fa-user-ninja{--fa: ""}.fa-person-arrow-up-from-line{--fa: ""}.fa-scroll-torah,.fa-torah{--fa: ""}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa: ""}.fa-toggle-off{--fa: ""}.fa-box-archive,.fa-archive{--fa: ""}.fa-person-drowning{--fa: ""}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa: ""}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa: ""}.fa-spray-can{--fa: ""}.fa-truck-monster{--fa: ""}.fa-w{--fa: "W"}.fa-earth-africa,.fa-globe-africa{--fa: ""}.fa-rainbow{--fa: ""}.fa-circle-notch{--fa: ""}.fa-tablet-screen-button,.fa-tablet-alt{--fa: ""}.fa-paw{--fa: ""}.fa-cloud{--fa: ""}.fa-trowel-bricks{--fa: ""}.fa-face-flushed,.fa-flushed{--fa: ""}.fa-hospital-user{--fa: ""}.fa-tent-arrow-left-right{--fa: ""}.fa-gavel,.fa-legal{--fa: ""}.fa-binoculars{--fa: ""}.fa-microphone-slash{--fa: ""}.fa-box-tissue{--fa: ""}.fa-motorcycle{--fa: ""}.fa-bell-concierge,.fa-concierge-bell{--fa: ""}.fa-pen-ruler,.fa-pencil-ruler{--fa: ""}.fa-people-arrows,.fa-people-arrows-left-right{--fa: ""}.fa-mars-and-venus-burst{--fa: ""}.fa-square-caret-right,.fa-caret-square-right{--fa: ""}.fa-scissors,.fa-cut{--fa: ""}.fa-sun-plant-wilt{--fa: ""}.fa-toilets-portable{--fa: ""}.fa-hockey-puck{--fa: ""}.fa-table{--fa: ""}.fa-magnifying-glass-arrow-right{--fa: ""}.fa-tachograph-digital,.fa-digital-tachograph{--fa: ""}.fa-users-slash{--fa: ""}.fa-clover{--fa: ""}.fa-reply,.fa-mail-reply{--fa: ""}.fa-star-and-crescent{--fa: ""}.fa-house-fire{--fa: ""}.fa-square-minus,.fa-minus-square{--fa: ""}.fa-helicopter{--fa: ""}.fa-compass{--fa: ""}.fa-square-caret-down,.fa-caret-square-down{--fa: ""}.fa-file-circle-question{--fa: ""}.fa-laptop-code{--fa: ""}.fa-swatchbook{--fa: ""}.fa-prescription-bottle{--fa: ""}.fa-bars,.fa-navicon{--fa: ""}.fa-people-group{--fa: ""}.fa-hourglass-end,.fa-hourglass-3{--fa: ""}.fa-heart-crack,.fa-heart-broken{--fa: ""}.fa-square-up-right,.fa-external-link-square-alt{--fa: ""}.fa-face-kiss-beam,.fa-kiss-beam{--fa: ""}.fa-film{--fa: ""}.fa-ruler-horizontal{--fa: ""}.fa-people-robbery{--fa: ""}.fa-lightbulb{--fa: ""}.fa-caret-left{--fa: ""}.fa-circle-exclamation,.fa-exclamation-circle{--fa: ""}.fa-school-circle-xmark{--fa: ""}.fa-arrow-right-from-bracket,.fa-sign-out{--fa: ""}.fa-circle-chevron-down,.fa-chevron-circle-down{--fa: ""}.fa-unlock-keyhole,.fa-unlock-alt{--fa: ""}.fa-cloud-showers-heavy{--fa: ""}.fa-headphones-simple,.fa-headphones-alt{--fa: ""}.fa-sitemap{--fa: ""}.fa-circle-dollar-to-slot,.fa-donate{--fa: ""}.fa-memory{--fa: ""}.fa-road-spikes{--fa: ""}.fa-fire-burner{--fa: ""}.fa-flag{--fa: ""}.fa-hanukiah{--fa: ""}.fa-feather{--fa: ""}.fa-volume-low,.fa-volume-down{--fa: ""}.fa-comment-slash{--fa: ""}.fa-cloud-sun-rain{--fa: ""}.fa-compress{--fa: ""}.fa-wheat-awn,.fa-wheat-alt{--fa: ""}.fa-ankh{--fa: ""}.fa-hands-holding-child{--fa: ""}.fa-asterisk{--fa: "*"}.fa-square-check,.fa-check-square{--fa: ""}.fa-peseta-sign{--fa: ""}.fa-heading,.fa-header{--fa: ""}.fa-ghost{--fa: ""}.fa-list,.fa-list-squares{--fa: ""}.fa-square-phone-flip,.fa-phone-square-alt{--fa: ""}.fa-cart-plus{--fa: ""}.fa-gamepad{--fa: ""}.fa-circle-dot,.fa-dot-circle{--fa: ""}.fa-face-dizzy,.fa-dizzy{--fa: ""}.fa-egg{--fa: ""}.fa-house-medical-circle-xmark{--fa: ""}.fa-campground{--fa: ""}.fa-folder-plus{--fa: ""}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa: ""}.fa-paintbrush,.fa-paint-brush{--fa: ""}.fa-lock{--fa: ""}.fa-gas-pump{--fa: ""}.fa-hot-tub-person,.fa-hot-tub{--fa: ""}.fa-map-location,.fa-map-marked{--fa: ""}.fa-house-flood-water{--fa: ""}.fa-tree{--fa: ""}.fa-bridge-lock{--fa: ""}.fa-sack-dollar{--fa: ""}.fa-pen-to-square,.fa-edit{--fa: ""}.fa-car-side{--fa: ""}.fa-share-nodes,.fa-share-alt{--fa: ""}.fa-heart-circle-minus{--fa: ""}.fa-hourglass-half,.fa-hourglass-2{--fa: ""}.fa-microscope{--fa: ""}.fa-sink{--fa: ""}.fa-bag-shopping,.fa-shopping-bag{--fa: ""}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa: ""}.fa-mitten{--fa: ""}.fa-person-rays{--fa: ""}.fa-users{--fa: ""}.fa-eye-slash{--fa: ""}.fa-flask-vial{--fa: ""}.fa-hand,.fa-hand-paper{--fa: ""}.fa-om{--fa: ""}.fa-worm{--fa: ""}.fa-house-circle-xmark{--fa: ""}.fa-plug{--fa: ""}.fa-chevron-up{--fa: ""}.fa-hand-spock{--fa: ""}.fa-stopwatch{--fa: ""}.fa-face-kiss,.fa-kiss{--fa: ""}.fa-bridge-circle-xmark{--fa: ""}.fa-face-grin-tongue,.fa-grin-tongue{--fa: ""}.fa-chess-bishop{--fa: ""}.fa-face-grin-wink,.fa-grin-wink{--fa: ""}.fa-ear-deaf,.fa-deaf,.fa-deafness,.fa-hard-of-hearing{--fa: ""}.fa-road-circle-check{--fa: ""}.fa-dice-five{--fa: ""}.fa-square-rss,.fa-rss-square{--fa: ""}.fa-land-mine-on{--fa: ""}.fa-i-cursor{--fa: ""}.fa-stamp{--fa: ""}.fa-stairs{--fa: ""}.fa-i{--fa: "I"}.fa-hryvnia-sign,.fa-hryvnia{--fa: ""}.fa-pills{--fa: ""}.fa-face-grin-wide,.fa-grin-alt{--fa: ""}.fa-tooth{--fa: ""}.fa-v{--fa: "V"}.fa-bangladeshi-taka-sign{--fa: ""}.fa-bicycle{--fa: ""}.fa-staff-snake,.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius{--fa: ""}.fa-head-side-cough-slash{--fa: ""}.fa-truck-medical,.fa-ambulance{--fa: ""}.fa-wheat-awn-circle-exclamation{--fa: ""}.fa-snowman{--fa: ""}.fa-mortar-pestle{--fa: ""}.fa-road-barrier{--fa: ""}.fa-school{--fa: ""}.fa-igloo{--fa: ""}.fa-joint{--fa: ""}.fa-angle-right{--fa: ""}.fa-horse{--fa: ""}.fa-q{--fa: "Q"}.fa-g{--fa: "G"}.fa-notes-medical{--fa: ""}.fa-temperature-half,.fa-temperature-2,.fa-thermometer-2,.fa-thermometer-half{--fa: ""}.fa-dong-sign{--fa: ""}.fa-capsules{--fa: ""}.fa-poo-storm,.fa-poo-bolt{--fa: ""}.fa-face-frown-open,.fa-frown-open{--fa: ""}.fa-hand-point-up{--fa: ""}.fa-money-bill{--fa: ""}.fa-bookmark{--fa: ""}.fa-align-justify{--fa: ""}.fa-umbrella-beach{--fa: ""}.fa-helmet-un{--fa: ""}.fa-bullseye{--fa: ""}.fa-bacon{--fa: ""}.fa-hand-point-down{--fa: ""}.fa-arrow-up-from-bracket{--fa: ""}.fa-folder,.fa-folder-blank{--fa: ""}.fa-file-waveform,.fa-file-medical-alt{--fa: ""}.fa-radiation{--fa: ""}.fa-chart-simple{--fa: ""}.fa-mars-stroke{--fa: ""}.fa-vial{--fa: ""}.fa-gauge,.fa-dashboard,.fa-gauge-med,.fa-tachometer-alt-average{--fa: ""}.fa-wand-magic-sparkles,.fa-magic-wand-sparkles{--fa: ""}.fa-e{--fa: "E"}.fa-pen-clip,.fa-pen-alt{--fa: ""}.fa-bridge-circle-exclamation{--fa: ""}.fa-user{--fa: ""}.fa-school-circle-check{--fa: ""}.fa-dumpster{--fa: ""}.fa-van-shuttle,.fa-shuttle-van{--fa: ""}.fa-building-user{--fa: ""}.fa-square-caret-left,.fa-caret-square-left{--fa: ""}.fa-highlighter{--fa: ""}.fa-key{--fa: ""}.fa-bullhorn{--fa: ""}.fa-globe{--fa: ""}.fa-synagogue{--fa: ""}.fa-person-half-dress{--fa: ""}.fa-road-bridge{--fa: ""}.fa-location-arrow{--fa: ""}.fa-c{--fa: "C"}.fa-tablet-button{--fa: ""}.fa-building-lock{--fa: ""}.fa-pizza-slice{--fa: ""}.fa-money-bill-wave{--fa: ""}.fa-chart-area,.fa-area-chart{--fa: ""}.fa-house-flag{--fa: ""}.fa-person-circle-minus{--fa: ""}.fa-ban,.fa-cancel{--fa: ""}.fa-camera-rotate{--fa: ""}.fa-spray-can-sparkles,.fa-air-freshener{--fa: ""}.fa-star{--fa: ""}.fa-repeat{--fa: ""}.fa-cross{--fa: ""}.fa-box{--fa: ""}.fa-venus-mars{--fa: ""}.fa-arrow-pointer,.fa-mouse-pointer{--fa: ""}.fa-maximize,.fa-expand-arrows-alt{--fa: ""}.fa-charging-station{--fa: ""}.fa-shapes,.fa-triangle-circle-square{--fa: ""}.fa-shuffle,.fa-random{--fa: ""}.fa-person-running,.fa-running{--fa: ""}.fa-mobile-retro{--fa: ""}.fa-grip-lines-vertical{--fa: ""}.fa-spider{--fa: ""}.fa-hands-bound{--fa: ""}.fa-file-invoice-dollar{--fa: ""}.fa-plane-circle-exclamation{--fa: ""}.fa-x-ray{--fa: ""}.fa-spell-check{--fa: ""}.fa-slash{--fa: ""}.fa-computer-mouse,.fa-mouse{--fa: ""}.fa-arrow-right-to-bracket,.fa-sign-in{--fa: ""}.fa-shop-slash,.fa-store-alt-slash{--fa: ""}.fa-server{--fa: ""}.fa-virus-covid-slash{--fa: ""}.fa-shop-lock{--fa: ""}.fa-hourglass-start,.fa-hourglass-1{--fa: ""}.fa-blender-phone{--fa: ""}.fa-building-wheat{--fa: ""}.fa-person-breastfeeding{--fa: ""}.fa-right-to-bracket,.fa-sign-in-alt{--fa: ""}.fa-venus{--fa: ""}.fa-passport{--fa: ""}.fa-thumbtack-slash,.fa-thumb-tack-slash{--fa: ""}.fa-heart-pulse,.fa-heartbeat{--fa: ""}.fa-people-carry-box,.fa-people-carry{--fa: ""}.fa-temperature-high{--fa: ""}.fa-microchip{--fa: ""}.fa-crown{--fa: ""}.fa-weight-hanging{--fa: ""}.fa-xmarks-lines{--fa: ""}.fa-file-prescription{--fa: ""}.fa-weight-scale,.fa-weight{--fa: ""}.fa-user-group,.fa-user-friends{--fa: ""}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa: ""}.fa-chess-knight{--fa: ""}.fa-face-laugh-squint,.fa-laugh-squint{--fa: ""}.fa-wheelchair{--fa: ""}.fa-circle-arrow-up,.fa-arrow-circle-up{--fa: ""}.fa-toggle-on{--fa: ""}.fa-person-walking,.fa-walking{--fa: ""}.fa-l{--fa: "L"}.fa-fire{--fa: ""}.fa-bed-pulse,.fa-procedures{--fa: ""}.fa-shuttle-space,.fa-space-shuttle{--fa: ""}.fa-face-laugh,.fa-laugh{--fa: ""}.fa-folder-open{--fa: ""}.fa-heart-circle-plus{--fa: ""}.fa-code-fork{--fa: ""}.fa-city{--fa: ""}.fa-microphone-lines,.fa-microphone-alt{--fa: ""}.fa-pepper-hot{--fa: ""}.fa-unlock{--fa: ""}.fa-colon-sign{--fa: ""}.fa-headset{--fa: ""}.fa-store-slash{--fa: ""}.fa-road-circle-xmark{--fa: ""}.fa-user-minus{--fa: ""}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa: ""}.fa-champagne-glasses,.fa-glass-cheers{--fa: ""}.fa-clipboard{--fa: ""}.fa-house-circle-exclamation{--fa: ""}.fa-file-arrow-up,.fa-file-upload{--fa: ""}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa: ""}.fa-bath,.fa-bathtub{--fa: ""}.fa-underline{--fa: ""}.fa-user-pen,.fa-user-edit{--fa: ""}.fa-signature{--fa: ""}.fa-stroopwafel{--fa: ""}.fa-bold{--fa: ""}.fa-anchor-lock{--fa: ""}.fa-building-ngo{--fa: ""}.fa-manat-sign{--fa: ""}.fa-not-equal{--fa: ""}.fa-border-top-left,.fa-border-style{--fa: ""}.fa-map-location-dot,.fa-map-marked-alt{--fa: ""}.fa-jedi{--fa: ""}.fa-square-poll-vertical,.fa-poll{--fa: ""}.fa-mug-hot{--fa: ""}.fa-car-battery,.fa-battery-car{--fa: ""}.fa-gift{--fa: ""}.fa-dice-two{--fa: ""}.fa-chess-queen{--fa: ""}.fa-glasses{--fa: ""}.fa-chess-board{--fa: ""}.fa-building-circle-check{--fa: ""}.fa-person-chalkboard{--fa: ""}.fa-mars-stroke-right,.fa-mars-stroke-h{--fa: ""}.fa-hand-back-fist,.fa-hand-rock{--fa: ""}.fa-square-caret-up,.fa-caret-square-up{--fa: ""}.fa-cloud-showers-water{--fa: ""}.fa-chart-bar,.fa-bar-chart{--fa: ""}.fa-hands-bubbles,.fa-hands-wash{--fa: ""}.fa-less-than-equal{--fa: ""}.fa-train{--fa: ""}.fa-eye-low-vision,.fa-low-vision{--fa: ""}.fa-crow{--fa: ""}.fa-sailboat{--fa: ""}.fa-window-restore{--fa: ""}.fa-square-plus,.fa-plus-square{--fa: ""}.fa-torii-gate{--fa: ""}.fa-frog{--fa: ""}.fa-bucket{--fa: ""}.fa-image{--fa: ""}.fa-microphone{--fa: ""}.fa-cow{--fa: ""}.fa-caret-up{--fa: ""}.fa-screwdriver{--fa: ""}.fa-folder-closed{--fa: ""}.fa-house-tsunami{--fa: ""}.fa-square-nfi{--fa: ""}.fa-arrow-up-from-ground-water{--fa: ""}.fa-martini-glass,.fa-glass-martini-alt{--fa: ""}.fa-square-binary{--fa: ""}.fa-rotate-left,.fa-rotate-back,.fa-rotate-backward,.fa-undo-alt{--fa: ""}.fa-table-columns,.fa-columns{--fa: ""}.fa-lemon{--fa: ""}.fa-head-side-mask{--fa: ""}.fa-handshake{--fa: ""}.fa-gem{--fa: ""}.fa-dolly,.fa-dolly-box{--fa: ""}.fa-smoking{--fa: ""}.fa-minimize,.fa-compress-arrows-alt{--fa: ""}.fa-monument{--fa: ""}.fa-snowplow{--fa: ""}.fa-angles-right,.fa-angle-double-right{--fa: ""}.fa-cannabis{--fa: ""}.fa-circle-play,.fa-play-circle{--fa: ""}.fa-tablets{--fa: ""}.fa-ethernet{--fa: ""}.fa-euro-sign,.fa-eur,.fa-euro{--fa: ""}.fa-chair{--fa: ""}.fa-circle-check,.fa-check-circle{--fa: ""}.fa-circle-stop,.fa-stop-circle{--fa: ""}.fa-compass-drafting,.fa-drafting-compass{--fa: ""}.fa-plate-wheat{--fa: ""}.fa-icicles{--fa: ""}.fa-person-shelter{--fa: ""}.fa-neuter{--fa: ""}.fa-id-badge{--fa: ""}.fa-marker{--fa: ""}.fa-face-laugh-beam,.fa-laugh-beam{--fa: ""}.fa-helicopter-symbol{--fa: ""}.fa-universal-access{--fa: ""}.fa-circle-chevron-up,.fa-chevron-circle-up{--fa: ""}.fa-lari-sign{--fa: ""}.fa-volcano{--fa: ""}.fa-person-walking-dashed-line-arrow-right{--fa: ""}.fa-sterling-sign,.fa-gbp,.fa-pound-sign{--fa: ""}.fa-viruses{--fa: ""}.fa-square-person-confined{--fa: ""}.fa-user-tie{--fa: ""}.fa-arrow-down-long,.fa-long-arrow-down{--fa: ""}.fa-tent-arrow-down-to-line{--fa: ""}.fa-certificate{--fa: ""}.fa-reply-all,.fa-mail-reply-all{--fa: ""}.fa-suitcase{--fa: ""}.fa-person-skating,.fa-skating{--fa: ""}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa: ""}.fa-camera-retro{--fa: ""}.fa-circle-arrow-down,.fa-arrow-circle-down{--fa: ""}.fa-file-import,.fa-arrow-right-to-file{--fa: ""}.fa-square-arrow-up-right,.fa-external-link-square{--fa: ""}.fa-box-open{--fa: ""}.fa-scroll{--fa: ""}.fa-spa{--fa: ""}.fa-location-pin-lock{--fa: ""}.fa-pause{--fa: ""}.fa-hill-avalanche{--fa: ""}.fa-temperature-empty,.fa-temperature-0,.fa-thermometer-0,.fa-thermometer-empty{--fa: ""}.fa-bomb{--fa: ""}.fa-registered{--fa: ""}.fa-address-card,.fa-contact-card,.fa-vcard{--fa: ""}.fa-scale-unbalanced-flip,.fa-balance-scale-right{--fa: ""}.fa-subscript{--fa: ""}.fa-diamond-turn-right,.fa-directions{--fa: ""}.fa-burst{--fa: ""}.fa-house-laptop,.fa-laptop-house{--fa: ""}.fa-face-tired,.fa-tired{--fa: ""}.fa-money-bills{--fa: ""}.fa-smog{--fa: ""}.fa-crutch{--fa: ""}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa: ""}.fa-palette{--fa: ""}.fa-arrows-turn-right{--fa: ""}.fa-vest{--fa: ""}.fa-ferry{--fa: ""}.fa-arrows-down-to-people{--fa: ""}.fa-seedling,.fa-sprout{--fa: ""}.fa-left-right,.fa-arrows-alt-h{--fa: ""}.fa-boxes-packing{--fa: ""}.fa-circle-arrow-left,.fa-arrow-circle-left{--fa: ""}.fa-group-arrows-rotate{--fa: ""}.fa-bowl-food{--fa: ""}.fa-candy-cane{--fa: ""}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa: ""}.fa-cloud-bolt,.fa-thunderstorm{--fa: ""}.fa-text-slash,.fa-remove-format{--fa: ""}.fa-face-smile-wink,.fa-smile-wink{--fa: ""}.fa-file-word{--fa: ""}.fa-file-powerpoint{--fa: ""}.fa-arrows-left-right,.fa-arrows-h{--fa: ""}.fa-house-lock{--fa: ""}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa: ""}.fa-children{--fa: ""}.fa-chalkboard,.fa-blackboard{--fa: ""}.fa-user-large-slash,.fa-user-alt-slash{--fa: ""}.fa-envelope-open{--fa: ""}.fa-handshake-simple-slash,.fa-handshake-alt-slash{--fa: ""}.fa-mattress-pillow{--fa: ""}.fa-guarani-sign{--fa: ""}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa: ""}.fa-fire-extinguisher{--fa: ""}.fa-cruzeiro-sign{--fa: ""}.fa-greater-than-equal{--fa: ""}.fa-shield-halved,.fa-shield-alt{--fa: ""}.fa-book-atlas,.fa-atlas{--fa: ""}.fa-virus{--fa: ""}.fa-envelope-circle-check{--fa: ""}.fa-layer-group{--fa: ""}.fa-arrows-to-dot{--fa: ""}.fa-archway{--fa: ""}.fa-heart-circle-check{--fa: ""}.fa-house-chimney-crack,.fa-house-damage{--fa: ""}.fa-file-zipper,.fa-file-archive{--fa: ""}.fa-square{--fa: ""}.fa-martini-glass-empty,.fa-glass-martini{--fa: ""}.fa-couch{--fa: ""}.fa-cedi-sign{--fa: ""}.fa-italic{--fa: ""}.fa-table-cells-column-lock{--fa: ""}.fa-church{--fa: ""}.fa-comments-dollar{--fa: ""}.fa-democrat{--fa: ""}.fa-z{--fa: "Z"}.fa-person-skiing,.fa-skiing{--fa: ""}.fa-road-lock{--fa: ""}.fa-a{--fa: "A"}.fa-temperature-arrow-down,.fa-temperature-down{--fa: ""}.fa-feather-pointed,.fa-feather-alt{--fa: ""}.fa-p{--fa: "P"}.fa-snowflake{--fa: ""}.fa-newspaper{--fa: ""}.fa-rectangle-ad,.fa-ad{--fa: ""}.fa-circle-arrow-right,.fa-arrow-circle-right{--fa: ""}.fa-filter-circle-xmark{--fa: ""}.fa-locust{--fa: ""}.fa-sort,.fa-unsorted{--fa: ""}.fa-list-ol,.fa-list-1-2,.fa-list-numeric{--fa: ""}.fa-person-dress-burst{--fa: ""}.fa-money-check-dollar,.fa-money-check-alt{--fa: ""}.fa-vector-square{--fa: ""}.fa-bread-slice{--fa: ""}.fa-language{--fa: ""}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa: ""}.fa-filter{--fa: ""}.fa-question{--fa: "?"}.fa-file-signature{--fa: ""}.fa-up-down-left-right,.fa-arrows-alt{--fa: ""}.fa-house-chimney-user{--fa: ""}.fa-hand-holding-heart{--fa: ""}.fa-puzzle-piece{--fa: ""}.fa-money-check{--fa: ""}.fa-star-half-stroke,.fa-star-half-alt{--fa: ""}.fa-code{--fa: ""}.fa-whiskey-glass,.fa-glass-whiskey{--fa: ""}.fa-building-circle-exclamation{--fa: ""}.fa-magnifying-glass-chart{--fa: ""}.fa-arrow-up-right-from-square,.fa-external-link{--fa: ""}.fa-cubes-stacked{--fa: ""}.fa-won-sign,.fa-krw,.fa-won{--fa: ""}.fa-virus-covid{--fa: ""}.fa-austral-sign{--fa: ""}.fa-f{--fa: "F"}.fa-leaf{--fa: ""}.fa-road{--fa: ""}.fa-taxi,.fa-cab{--fa: ""}.fa-person-circle-plus{--fa: ""}.fa-chart-pie,.fa-pie-chart{--fa: ""}.fa-bolt-lightning{--fa: ""}.fa-sack-xmark{--fa: ""}.fa-file-excel{--fa: ""}.fa-file-contract{--fa: ""}.fa-fish-fins{--fa: ""}.fa-building-flag{--fa: ""}.fa-face-grin-beam,.fa-grin-beam{--fa: ""}.fa-object-ungroup{--fa: ""}.fa-poop{--fa: ""}.fa-location-pin,.fa-map-marker{--fa: ""}.fa-kaaba{--fa: ""}.fa-toilet-paper{--fa: ""}.fa-helmet-safety,.fa-hard-hat,.fa-hat-hard{--fa: ""}.fa-eject{--fa: ""}.fa-circle-right,.fa-arrow-alt-circle-right{--fa: ""}.fa-plane-circle-check{--fa: ""}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa: ""}.fa-object-group{--fa: ""}.fa-chart-line,.fa-line-chart{--fa: ""}.fa-mask-ventilator{--fa: ""}.fa-arrow-right{--fa: ""}.fa-signs-post,.fa-map-signs{--fa: ""}.fa-cash-register{--fa: ""}.fa-person-circle-question{--fa: ""}.fa-h{--fa: "H"}.fa-tarp{--fa: ""}.fa-screwdriver-wrench,.fa-tools{--fa: ""}.fa-arrows-to-eye{--fa: ""}.fa-plug-circle-bolt{--fa: ""}.fa-heart{--fa: ""}.fa-mars-and-venus{--fa: ""}.fa-house-user,.fa-home-user{--fa: ""}.fa-dumpster-fire{--fa: ""}.fa-house-crack{--fa: ""}.fa-martini-glass-citrus,.fa-cocktail{--fa: ""}.fa-face-surprise,.fa-surprise{--fa: ""}.fa-bottle-water{--fa: ""}.fa-circle-pause,.fa-pause-circle{--fa: ""}.fa-toilet-paper-slash{--fa: ""}.fa-apple-whole,.fa-apple-alt{--fa: ""}.fa-kitchen-set{--fa: ""}.fa-r{--fa: "R"}.fa-temperature-quarter,.fa-temperature-1,.fa-thermometer-1,.fa-thermometer-quarter{--fa: ""}.fa-cube{--fa: ""}.fa-bitcoin-sign{--fa: ""}.fa-shield-dog{--fa: ""}.fa-solar-panel{--fa: ""}.fa-lock-open{--fa: ""}.fa-elevator{--fa: ""}.fa-money-bill-transfer{--fa: ""}.fa-money-bill-trend-up{--fa: ""}.fa-house-flood-water-circle-arrow-right{--fa: ""}.fa-square-poll-horizontal,.fa-poll-h{--fa: ""}.fa-circle{--fa: ""}.fa-backward-fast,.fa-fast-backward{--fa: ""}.fa-recycle{--fa: ""}.fa-user-astronaut{--fa: ""}.fa-plane-slash{--fa: ""}.fa-trademark{--fa: ""}.fa-basketball,.fa-basketball-ball{--fa: ""}.fa-satellite-dish{--fa: ""}.fa-circle-up,.fa-arrow-alt-circle-up{--fa: ""}.fa-mobile-screen-button,.fa-mobile-alt{--fa: ""}.fa-volume-high,.fa-volume-up{--fa: ""}.fa-users-rays{--fa: ""}.fa-wallet{--fa: ""}.fa-clipboard-check{--fa: ""}.fa-file-audio{--fa: ""}.fa-burger,.fa-hamburger{--fa: ""}.fa-wrench{--fa: ""}.fa-bugs{--fa: ""}.fa-rupee-sign,.fa-rupee{--fa: ""}.fa-file-image{--fa: ""}.fa-circle-question,.fa-question-circle{--fa: ""}.fa-plane-departure{--fa: ""}.fa-handshake-slash{--fa: ""}.fa-book-bookmark{--fa: ""}.fa-code-branch{--fa: ""}.fa-hat-cowboy{--fa: ""}.fa-bridge{--fa: ""}.fa-phone-flip,.fa-phone-alt{--fa: ""}.fa-truck-front{--fa: ""}.fa-cat{--fa: ""}.fa-anchor-circle-exclamation{--fa: ""}.fa-truck-field{--fa: ""}.fa-route{--fa: ""}.fa-clipboard-question{--fa: ""}.fa-panorama{--fa: ""}.fa-comment-medical{--fa: ""}.fa-teeth-open{--fa: ""}.fa-file-circle-minus{--fa: ""}.fa-tags{--fa: ""}.fa-wine-glass{--fa: ""}.fa-forward-fast,.fa-fast-forward{--fa: ""}.fa-face-meh-blank,.fa-meh-blank{--fa: ""}.fa-square-parking,.fa-parking{--fa: ""}.fa-house-signal{--fa: ""}.fa-bars-progress,.fa-tasks-alt{--fa: ""}.fa-faucet-drip{--fa: ""}.fa-cart-flatbed,.fa-dolly-flatbed{--fa: ""}.fa-ban-smoking,.fa-smoking-ban{--fa: ""}.fa-terminal{--fa: ""}.fa-mobile-button{--fa: ""}.fa-house-medical-flag{--fa: ""}.fa-basket-shopping,.fa-shopping-basket{--fa: ""}.fa-tape{--fa: ""}.fa-bus-simple,.fa-bus-alt{--fa: ""}.fa-eye{--fa: ""}.fa-face-sad-cry,.fa-sad-cry{--fa: ""}.fa-audio-description{--fa: ""}.fa-person-military-to-person{--fa: ""}.fa-file-shield{--fa: ""}.fa-user-slash{--fa: ""}.fa-pen{--fa: ""}.fa-tower-observation{--fa: ""}.fa-file-code{--fa: ""}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa: ""}.fa-bus{--fa: ""}.fa-heart-circle-xmark{--fa: ""}.fa-house-chimney,.fa-home-lg{--fa: ""}.fa-window-maximize{--fa: ""}.fa-face-frown,.fa-frown{--fa: ""}.fa-prescription{--fa: ""}.fa-shop,.fa-store-alt{--fa: ""}.fa-floppy-disk,.fa-save{--fa: ""}.fa-vihara{--fa: ""}.fa-scale-unbalanced,.fa-balance-scale-left{--fa: ""}.fa-sort-up,.fa-sort-asc{--fa: ""}.fa-comment-dots,.fa-commenting{--fa: ""}.fa-plant-wilt{--fa: ""}.fa-diamond{--fa: ""}.fa-face-grin-squint,.fa-grin-squint{--fa: ""}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa: ""}.fa-chart-diagram{--fa: ""}.fa-bacterium{--fa: ""}.fa-hand-pointer{--fa: ""}.fa-drum-steelpan{--fa: ""}.fa-hand-scissors{--fa: ""}.fa-hands-praying,.fa-praying-hands{--fa: ""}.fa-arrow-rotate-right,.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-redo{--fa: ""}.fa-biohazard{--fa: ""}.fa-location-crosshairs,.fa-location{--fa: ""}.fa-mars-double{--fa: ""}.fa-child-dress{--fa: ""}.fa-users-between-lines{--fa: ""}.fa-lungs-virus{--fa: ""}.fa-face-grin-tears,.fa-grin-tears{--fa: ""}.fa-phone{--fa: ""}.fa-calendar-xmark,.fa-calendar-times{--fa: ""}.fa-child-reaching{--fa: ""}.fa-head-side-virus{--fa: ""}.fa-user-gear,.fa-user-cog{--fa: ""}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa: ""}.fa-door-closed{--fa: ""}.fa-shield-virus{--fa: ""}.fa-dice-six{--fa: ""}.fa-mosquito-net{--fa: ""}.fa-file-fragment{--fa: ""}.fa-bridge-water{--fa: ""}.fa-person-booth{--fa: ""}.fa-text-width{--fa: ""}.fa-hat-wizard{--fa: ""}.fa-pen-fancy{--fa: ""}.fa-person-digging,.fa-digging{--fa: ""}.fa-trash{--fa: ""}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa: ""}.fa-book-medical{--fa: ""}.fa-poo{--fa: ""}.fa-quote-right,.fa-quote-right-alt{--fa: ""}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa: ""}.fa-cubes{--fa: ""}.fa-divide{--fa: ""}.fa-tenge-sign,.fa-tenge{--fa: ""}.fa-headphones{--fa: ""}.fa-hands-holding{--fa: ""}.fa-hands-clapping{--fa: ""}.fa-republican{--fa: ""}.fa-arrow-left{--fa: ""}.fa-person-circle-xmark{--fa: ""}.fa-ruler{--fa: ""}.fa-align-left{--fa: ""}.fa-dice-d6{--fa: ""}.fa-restroom{--fa: ""}.fa-j{--fa: "J"}.fa-users-viewfinder{--fa: ""}.fa-file-video{--fa: ""}.fa-up-right-from-square,.fa-external-link-alt{--fa: ""}.fa-table-cells,.fa-th{--fa: ""}.fa-file-pdf{--fa: ""}.fa-book-bible,.fa-bible{--fa: ""}.fa-o{--fa: "O"}.fa-suitcase-medical,.fa-medkit{--fa: ""}.fa-user-secret{--fa: ""}.fa-otter{--fa: ""}.fa-person-dress,.fa-female{--fa: ""}.fa-comment-dollar{--fa: ""}.fa-business-time,.fa-briefcase-clock{--fa: ""}.fa-table-cells-large,.fa-th-large{--fa: ""}.fa-book-tanakh,.fa-tanakh{--fa: ""}.fa-phone-volume,.fa-volume-control-phone{--fa: ""}.fa-hat-cowboy-side{--fa: ""}.fa-clipboard-user{--fa: ""}.fa-child{--fa: ""}.fa-lira-sign{--fa: ""}.fa-satellite{--fa: ""}.fa-plane-lock{--fa: ""}.fa-tag{--fa: ""}.fa-comment{--fa: ""}.fa-cake-candles,.fa-birthday-cake,.fa-cake{--fa: ""}.fa-envelope{--fa: ""}.fa-angles-up,.fa-angle-double-up{--fa: ""}.fa-paperclip{--fa: ""}.fa-arrow-right-to-city{--fa: ""}.fa-ribbon{--fa: ""}.fa-lungs{--fa: ""}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa: ""}.fa-litecoin-sign{--fa: ""}.fa-border-none{--fa: ""}.fa-circle-nodes{--fa: ""}.fa-parachute-box{--fa: ""}.fa-indent{--fa: ""}.fa-truck-field-un{--fa: ""}.fa-hourglass,.fa-hourglass-empty{--fa: ""}.fa-mountain{--fa: ""}.fa-user-doctor,.fa-user-md{--fa: ""}.fa-circle-info,.fa-info-circle{--fa: ""}.fa-cloud-meatball{--fa: ""}.fa-camera,.fa-camera-alt{--fa: ""}.fa-square-virus{--fa: ""}.fa-meteor{--fa: ""}.fa-car-on{--fa: ""}.fa-sleigh{--fa: ""}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa: ""}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa: ""}.fa-water{--fa: ""}.fa-calendar-check{--fa: ""}.fa-braille{--fa: ""}.fa-prescription-bottle-medical,.fa-prescription-bottle-alt{--fa: ""}.fa-landmark{--fa: ""}.fa-truck{--fa: ""}.fa-crosshairs{--fa: ""}.fa-person-cane{--fa: ""}.fa-tent{--fa: ""}.fa-vest-patches{--fa: ""}.fa-check-double{--fa: ""}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa: ""}.fa-money-bill-wheat{--fa: ""}.fa-cookie{--fa: ""}.fa-arrow-rotate-left,.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-undo{--fa: ""}.fa-hard-drive,.fa-hdd{--fa: ""}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa: ""}.fa-dumbbell{--fa: ""}.fa-rectangle-list,.fa-list-alt{--fa: ""}.fa-tarp-droplet{--fa: ""}.fa-house-medical-circle-check{--fa: ""}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa: ""}.fa-calendar-plus{--fa: ""}.fa-plane-arrival{--fa: ""}.fa-circle-left,.fa-arrow-alt-circle-left{--fa: ""}.fa-train-subway,.fa-subway{--fa: ""}.fa-chart-gantt{--fa: ""}.fa-indian-rupee-sign,.fa-indian-rupee,.fa-inr{--fa: ""}.fa-crop-simple,.fa-crop-alt{--fa: ""}.fa-money-bill-1,.fa-money-bill-alt{--fa: ""}.fa-left-long,.fa-long-arrow-alt-left{--fa: ""}.fa-dna{--fa: ""}.fa-virus-slash{--fa: ""}.fa-minus,.fa-subtract{--fa: ""}.fa-chess{--fa: ""}.fa-arrow-left-long,.fa-long-arrow-left{--fa: ""}.fa-plug-circle-check{--fa: ""}.fa-street-view{--fa: ""}.fa-franc-sign{--fa: ""}.fa-volume-off{--fa: ""}.fa-hands-asl-interpreting,.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting{--fa: ""}.fa-gear,.fa-cog{--fa: ""}.fa-droplet-slash,.fa-tint-slash{--fa: ""}.fa-mosque{--fa: ""}.fa-mosquito{--fa: ""}.fa-star-of-david{--fa: ""}.fa-person-military-rifle{--fa: ""}.fa-cart-shopping,.fa-shopping-cart{--fa: ""}.fa-vials{--fa: ""}.fa-plug-circle-plus{--fa: ""}.fa-place-of-worship{--fa: ""}.fa-grip-vertical{--fa: ""}.fa-hexagon-nodes{--fa: ""}.fa-arrow-turn-up,.fa-level-up{--fa: ""}.fa-u{--fa: "U"}.fa-square-root-variable,.fa-square-root-alt{--fa: ""}.fa-clock,.fa-clock-four{--fa: ""}.fa-backward-step,.fa-step-backward{--fa: ""}.fa-pallet{--fa: ""}.fa-faucet{--fa: ""}.fa-baseball-bat-ball{--fa: ""}.fa-s{--fa: "S"}.fa-timeline{--fa: ""}.fa-keyboard{--fa: ""}.fa-caret-down{--fa: ""}.fa-house-chimney-medical,.fa-clinic-medical{--fa: ""}.fa-temperature-three-quarters,.fa-temperature-3,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa: ""}.fa-mobile-screen,.fa-mobile-android-alt{--fa: ""}.fa-plane-up{--fa: ""}.fa-piggy-bank{--fa: ""}.fa-battery-half,.fa-battery-3{--fa: ""}.fa-mountain-city{--fa: ""}.fa-coins{--fa: ""}.fa-khanda{--fa: ""}.fa-sliders,.fa-sliders-h{--fa: ""}.fa-folder-tree{--fa: ""}.fa-network-wired{--fa: ""}.fa-map-pin{--fa: ""}.fa-hamsa{--fa: ""}.fa-cent-sign{--fa: ""}.fa-flask{--fa: ""}.fa-person-pregnant{--fa: ""}.fa-wand-sparkles{--fa: ""}.fa-ellipsis-vertical,.fa-ellipsis-v{--fa: ""}.fa-ticket{--fa: ""}.fa-power-off{--fa: ""}.fa-right-long,.fa-long-arrow-alt-right{--fa: ""}.fa-flag-usa{--fa: ""}.fa-laptop-file{--fa: ""}.fa-tty,.fa-teletype{--fa: ""}.fa-diagram-next{--fa: ""}.fa-person-rifle{--fa: ""}.fa-house-medical-circle-exclamation{--fa: ""}.fa-closed-captioning{--fa: ""}.fa-person-hiking,.fa-hiking{--fa: ""}.fa-venus-double{--fa: ""}.fa-images{--fa: ""}.fa-calculator{--fa: ""}.fa-people-pulling{--fa: ""}.fa-n{--fa: "N"}.fa-cable-car,.fa-tram{--fa: ""}.fa-cloud-rain{--fa: ""}.fa-building-circle-xmark{--fa: ""}.fa-ship{--fa: ""}.fa-arrows-down-to-line{--fa: ""}.fa-download{--fa: ""}.fa-face-grin,.fa-grin{--fa: ""}.fa-delete-left,.fa-backspace{--fa: ""}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa: ""}.fa-file-circle-check{--fa: ""}.fa-forward{--fa: ""}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa: ""}.fa-face-meh,.fa-meh{--fa: ""}.fa-align-center{--fa: ""}.fa-book-skull,.fa-book-dead{--fa: ""}.fa-id-card,.fa-drivers-license{--fa: ""}.fa-outdent,.fa-dedent{--fa: ""}.fa-heart-circle-exclamation{--fa: ""}.fa-house,.fa-home,.fa-home-alt,.fa-home-lg-alt{--fa: ""}.fa-calendar-week{--fa: ""}.fa-laptop-medical{--fa: ""}.fa-b{--fa: "B"}.fa-file-medical{--fa: ""}.fa-dice-one{--fa: ""}.fa-kiwi-bird{--fa: ""}.fa-arrow-right-arrow-left,.fa-exchange{--fa: ""}.fa-rotate-right,.fa-redo-alt,.fa-rotate-forward{--fa: ""}.fa-utensils,.fa-cutlery{--fa: ""}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa: ""}.fa-mill-sign{--fa: ""}.fa-bowl-rice{--fa: ""}.fa-skull{--fa: ""}.fa-tower-broadcast,.fa-broadcast-tower{--fa: ""}.fa-truck-pickup{--fa: ""}.fa-up-long,.fa-long-arrow-alt-up{--fa: ""}.fa-stop{--fa: ""}.fa-code-merge{--fa: ""}.fa-upload{--fa: ""}.fa-hurricane{--fa: ""}.fa-mound{--fa: ""}.fa-toilet-portable{--fa: ""}.fa-compact-disc{--fa: ""}.fa-file-arrow-down,.fa-file-download{--fa: ""}.fa-caravan{--fa: ""}.fa-shield-cat{--fa: ""}.fa-bolt,.fa-zap{--fa: ""}.fa-glass-water{--fa: ""}.fa-oil-well{--fa: ""}.fa-vault{--fa: ""}.fa-mars{--fa: ""}.fa-toilet{--fa: ""}.fa-plane-circle-xmark{--fa: ""}.fa-yen-sign,.fa-cny,.fa-jpy,.fa-rmb,.fa-yen{--fa: ""}.fa-ruble-sign,.fa-rouble,.fa-rub,.fa-ruble{--fa: ""}.fa-sun{--fa: ""}.fa-guitar{--fa: ""}.fa-face-laugh-wink,.fa-laugh-wink{--fa: ""}.fa-horse-head{--fa: ""}.fa-bore-hole{--fa: ""}.fa-industry{--fa: ""}.fa-circle-down,.fa-arrow-alt-circle-down{--fa: ""}.fa-arrows-turn-to-dots{--fa: ""}.fa-florin-sign{--fa: ""}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa: ""}.fa-less-than{--fa: "<"}.fa-angle-down{--fa: ""}.fa-car-tunnel{--fa: ""}.fa-head-side-cough{--fa: ""}.fa-grip-lines{--fa: ""}.fa-thumbs-down{--fa: ""}.fa-user-lock{--fa: ""}.fa-arrow-right-long,.fa-long-arrow-right{--fa: ""}.fa-anchor-circle-xmark{--fa: ""}.fa-ellipsis,.fa-ellipsis-h{--fa: ""}.fa-chess-pawn{--fa: ""}.fa-kit-medical,.fa-first-aid{--fa: ""}.fa-person-through-window{--fa: ""}.fa-toolbox{--fa: ""}.fa-hands-holding-circle{--fa: ""}.fa-bug{--fa: ""}.fa-credit-card,.fa-credit-card-alt{--fa: ""}.fa-car,.fa-automobile{--fa: ""}.fa-hand-holding-hand{--fa: ""}.fa-book-open-reader,.fa-book-reader{--fa: ""}.fa-mountain-sun{--fa: ""}.fa-arrows-left-right-to-line{--fa: ""}.fa-dice-d20{--fa: ""}.fa-truck-droplet{--fa: ""}.fa-file-circle-xmark{--fa: ""}.fa-temperature-arrow-up,.fa-temperature-up{--fa: ""}.fa-medal{--fa: ""}.fa-bed{--fa: ""}.fa-square-h,.fa-h-square{--fa: ""}.fa-podcast{--fa: ""}.fa-temperature-full,.fa-temperature-4,.fa-thermometer-4,.fa-thermometer-full{--fa: ""}.fa-bell{--fa: ""}.fa-superscript{--fa: ""}.fa-plug-circle-xmark{--fa: ""}.fa-star-of-life{--fa: ""}.fa-phone-slash{--fa: ""}.fa-paint-roller{--fa: ""}.fa-handshake-angle,.fa-hands-helping{--fa: ""}.fa-location-dot,.fa-map-marker-alt{--fa: ""}.fa-file{--fa: ""}.fa-greater-than{--fa: ">"}.fa-person-swimming,.fa-swimmer{--fa: ""}.fa-arrow-down{--fa: ""}.fa-droplet,.fa-tint{--fa: ""}.fa-eraser{--fa: ""}.fa-earth-americas,.fa-earth,.fa-earth-america,.fa-globe-americas{--fa: ""}.fa-person-burst{--fa: ""}.fa-dove{--fa: ""}.fa-battery-empty,.fa-battery-0{--fa: ""}.fa-socks{--fa: ""}.fa-inbox{--fa: ""}.fa-section{--fa: ""}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa: ""}.fa-envelope-open-text{--fa: ""}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa: ""}.fa-wine-bottle{--fa: ""}.fa-chess-rook{--fa: ""}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa: ""}.fa-dharmachakra{--fa: ""}.fa-hotdog{--fa: ""}.fa-person-walking-with-cane,.fa-blind{--fa: ""}.fa-drum{--fa: ""}.fa-ice-cream{--fa: ""}.fa-heart-circle-bolt{--fa: ""}.fa-fax{--fa: ""}.fa-paragraph{--fa: ""}.fa-check-to-slot,.fa-vote-yea{--fa: ""}.fa-star-half{--fa: ""}.fa-boxes-stacked,.fa-boxes,.fa-boxes-alt{--fa: ""}.fa-link,.fa-chain{--fa: ""}.fa-ear-listen,.fa-assistive-listening-systems{--fa: ""}.fa-tree-city{--fa: ""}.fa-play{--fa: ""}.fa-font{--fa: ""}.fa-table-cells-row-lock{--fa: ""}.fa-rupiah-sign{--fa: ""}.fa-magnifying-glass,.fa-search{--fa: ""}.fa-table-tennis-paddle-ball,.fa-ping-pong-paddle-ball,.fa-table-tennis{--fa: ""}.fa-person-dots-from-line,.fa-diagnoses{--fa: ""}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa: ""}.fa-naira-sign{--fa: ""}.fa-cart-arrow-down{--fa: ""}.fa-walkie-talkie{--fa: ""}.fa-file-pen,.fa-file-edit{--fa: ""}.fa-receipt{--fa: ""}.fa-square-pen,.fa-pen-square,.fa-pencil-square{--fa: ""}.fa-suitcase-rolling{--fa: ""}.fa-person-circle-exclamation{--fa: ""}.fa-chevron-down{--fa: ""}.fa-battery-full,.fa-battery,.fa-battery-5{--fa: ""}.fa-skull-crossbones{--fa: ""}.fa-code-compare{--fa: ""}.fa-list-ul,.fa-list-dots{--fa: ""}.fa-school-lock{--fa: ""}.fa-tower-cell{--fa: ""}.fa-down-long,.fa-long-arrow-alt-down{--fa: ""}.fa-ranking-star{--fa: ""}.fa-chess-king{--fa: ""}.fa-person-harassing{--fa: ""}.fa-brazilian-real-sign{--fa: ""}.fa-landmark-dome,.fa-landmark-alt{--fa: ""}.fa-arrow-up{--fa: ""}.fa-tv,.fa-television,.fa-tv-alt{--fa: ""}.fa-shrimp{--fa: ""}.fa-list-check,.fa-tasks{--fa: ""}.fa-jug-detergent{--fa: ""}.fa-circle-user,.fa-user-circle{--fa: ""}.fa-user-shield{--fa: ""}.fa-wind{--fa: ""}.fa-car-burst,.fa-car-crash{--fa: ""}.fa-y{--fa: "Y"}.fa-person-snowboarding,.fa-snowboarding{--fa: ""}.fa-truck-fast,.fa-shipping-fast{--fa: ""}.fa-fish{--fa: ""}.fa-user-graduate{--fa: ""}.fa-circle-half-stroke,.fa-adjust{--fa: ""}.fa-clapperboard{--fa: ""}.fa-circle-radiation,.fa-radiation-alt{--fa: ""}.fa-baseball,.fa-baseball-ball{--fa: ""}.fa-jet-fighter-up{--fa: ""}.fa-diagram-project,.fa-project-diagram{--fa: ""}.fa-copy{--fa: ""}.fa-volume-xmark,.fa-volume-mute,.fa-volume-times{--fa: ""}.fa-hand-sparkles{--fa: ""}.fa-grip,.fa-grip-horizontal{--fa: ""}.fa-share-from-square,.fa-share-square{--fa: ""}.fa-child-combatant,.fa-child-rifle{--fa: ""}.fa-gun{--fa: ""}.fa-square-phone,.fa-phone-square{--fa: ""}.fa-plus,.fa-add{--fa: "+"}.fa-expand{--fa: ""}.fa-computer{--fa: ""}.fa-xmark,.fa-close,.fa-multiply,.fa-remove,.fa-times{--fa: ""}.fa-arrows-up-down-left-right,.fa-arrows{--fa: ""}.fa-chalkboard-user,.fa-chalkboard-teacher{--fa: ""}.fa-peso-sign{--fa: ""}.fa-building-shield{--fa: ""}.fa-baby{--fa: ""}.fa-users-line{--fa: ""}.fa-quote-left,.fa-quote-left-alt{--fa: ""}.fa-tractor{--fa: ""}.fa-trash-arrow-up,.fa-trash-restore{--fa: ""}.fa-arrow-down-up-lock{--fa: ""}.fa-lines-leaning{--fa: ""}.fa-ruler-combined{--fa: ""}.fa-copyright{--fa: ""}.fa-equals{--fa: "="}.fa-blender{--fa: ""}.fa-teeth{--fa: ""}.fa-shekel-sign,.fa-ils,.fa-shekel,.fa-sheqel,.fa-sheqel-sign{--fa: ""}.fa-map{--fa: ""}.fa-rocket{--fa: ""}.fa-photo-film,.fa-photo-video{--fa: ""}.fa-folder-minus{--fa: ""}.fa-hexagon-nodes-bolt{--fa: ""}.fa-store{--fa: ""}.fa-arrow-trend-up{--fa: ""}.fa-plug-circle-minus{--fa: ""}.fa-sign-hanging,.fa-sign{--fa: ""}.fa-bezier-curve{--fa: ""}.fa-bell-slash{--fa: ""}.fa-tablet,.fa-tablet-android{--fa: ""}.fa-school-flag{--fa: ""}.fa-fill{--fa: ""}.fa-angle-up{--fa: ""}.fa-drumstick-bite{--fa: ""}.fa-holly-berry{--fa: ""}.fa-chevron-left{--fa: ""}.fa-bacteria{--fa: ""}.fa-hand-lizard{--fa: ""}.fa-notdef{--fa: ""}.fa-disease{--fa: ""}.fa-briefcase-medical{--fa: ""}.fa-genderless{--fa: ""}.fa-chevron-right{--fa: ""}.fa-retweet{--fa: ""}.fa-car-rear,.fa-car-alt{--fa: ""}.fa-pump-soap{--fa: ""}.fa-video-slash{--fa: ""}.fa-battery-quarter,.fa-battery-2{--fa: ""}.fa-radio{--fa: ""}.fa-baby-carriage,.fa-carriage-baby{--fa: ""}.fa-traffic-light{--fa: ""}.fa-thermometer{--fa: ""}.fa-vr-cardboard{--fa: ""}.fa-hand-middle-finger{--fa: ""}.fa-percent,.fa-percentage{--fa: "%"}.fa-truck-moving{--fa: ""}.fa-glass-water-droplet{--fa: ""}.fa-display{--fa: ""}.fa-face-smile,.fa-smile{--fa: ""}.fa-thumbtack,.fa-thumb-tack{--fa: ""}.fa-trophy{--fa: ""}.fa-person-praying,.fa-pray{--fa: ""}.fa-hammer{--fa: ""}.fa-hand-peace{--fa: ""}.fa-rotate,.fa-sync-alt{--fa: ""}.fa-spinner{--fa: ""}.fa-robot{--fa: ""}.fa-peace{--fa: ""}.fa-gears,.fa-cogs{--fa: ""}.fa-warehouse{--fa: ""}.fa-arrow-up-right-dots{--fa: ""}.fa-splotch{--fa: ""}.fa-face-grin-hearts,.fa-grin-hearts{--fa: ""}.fa-dice-four{--fa: ""}.fa-sim-card{--fa: ""}.fa-transgender,.fa-transgender-alt{--fa: ""}.fa-mercury{--fa: ""}.fa-arrow-turn-down,.fa-level-down{--fa: ""}.fa-person-falling-burst{--fa: ""}.fa-award{--fa: ""}.fa-ticket-simple,.fa-ticket-alt{--fa: ""}.fa-building{--fa: ""}.fa-angles-left,.fa-angle-double-left{--fa: ""}.fa-qrcode{--fa: ""}.fa-clock-rotate-left,.fa-history{--fa: ""}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa: ""}.fa-file-export,.fa-arrow-right-from-file{--fa: ""}.fa-shield,.fa-shield-blank{--fa: ""}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa: ""}.fa-comment-nodes{--fa: ""}.fa-house-medical{--fa: ""}.fa-golf-ball-tee,.fa-golf-ball{--fa: ""}.fa-circle-chevron-left,.fa-chevron-circle-left{--fa: ""}.fa-house-chimney-window{--fa: ""}.fa-pen-nib{--fa: ""}.fa-tent-arrow-turn-left{--fa: ""}.fa-tents{--fa: ""}.fa-wand-magic,.fa-magic{--fa: ""}.fa-dog{--fa: ""}.fa-carrot{--fa: ""}.fa-moon{--fa: ""}.fa-wine-glass-empty,.fa-wine-glass-alt{--fa: ""}.fa-cheese{--fa: ""}.fa-yin-yang{--fa: ""}.fa-music{--fa: ""}.fa-code-commit{--fa: ""}.fa-temperature-low{--fa: ""}.fa-person-biking,.fa-biking{--fa: ""}.fa-broom{--fa: ""}.fa-shield-heart{--fa: ""}.fa-gopuram{--fa: ""}.fa-earth-oceania,.fa-globe-oceania{--fa: ""}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa: ""}.fa-hashtag{--fa: "#"}.fa-up-right-and-down-left-from-center,.fa-expand-alt{--fa: ""}.fa-oil-can{--fa: ""}.fa-t{--fa: "T"}.fa-hippo{--fa: ""}.fa-chart-column{--fa: ""}.fa-infinity{--fa: ""}.fa-vial-circle-check{--fa: ""}.fa-person-arrow-down-to-line{--fa: ""}.fa-voicemail{--fa: ""}.fa-fan{--fa: ""}.fa-person-walking-luggage{--fa: ""}.fa-up-down,.fa-arrows-alt-v{--fa: ""}.fa-cloud-moon-rain{--fa: ""}.fa-calendar{--fa: ""}.fa-trailer{--fa: ""}.fa-bahai,.fa-haykal{--fa: ""}.fa-sd-card{--fa: ""}.fa-dragon{--fa: ""}.fa-shoe-prints{--fa: ""}.fa-circle-plus,.fa-plus-circle{--fa: ""}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa: ""}.fa-hand-holding{--fa: ""}.fa-plug-circle-exclamation{--fa: ""}.fa-link-slash,.fa-chain-broken,.fa-chain-slash,.fa-unlink{--fa: ""}.fa-clone{--fa: ""}.fa-person-walking-arrow-loop-left{--fa: ""}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa: ""}.fa-fire-flame-curved,.fa-fire-alt{--fa: ""}.fa-tornado{--fa: ""}.fa-file-circle-plus{--fa: ""}.fa-book-quran,.fa-quran{--fa: ""}.fa-anchor{--fa: ""}.fa-border-all{--fa: ""}.fa-face-angry,.fa-angry{--fa: ""}.fa-cookie-bite{--fa: ""}.fa-arrow-trend-down{--fa: ""}.fa-rss,.fa-feed{--fa: ""}.fa-draw-polygon{--fa: ""}.fa-scale-balanced,.fa-balance-scale{--fa: ""}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa: ""}.fa-shower{--fa: ""}.fa-desktop,.fa-desktop-alt{--fa: ""}.fa-m{--fa: "M"}.fa-table-list,.fa-th-list{--fa: ""}.fa-comment-sms,.fa-sms{--fa: ""}.fa-book{--fa: ""}.fa-user-plus{--fa: ""}.fa-check{--fa: ""}.fa-battery-three-quarters,.fa-battery-4{--fa: ""}.fa-house-circle-check{--fa: ""}.fa-angle-left{--fa: ""}.fa-diagram-successor{--fa: ""}.fa-truck-arrow-right{--fa: ""}.fa-arrows-split-up-and-left{--fa: ""}.fa-hand-fist,.fa-fist-raised{--fa: ""}.fa-cloud-moon{--fa: ""}.fa-briefcase{--fa: ""}.fa-person-falling{--fa: ""}.fa-image-portrait,.fa-portrait{--fa: ""}.fa-user-tag{--fa: ""}.fa-rug{--fa: ""}.fa-earth-europe,.fa-globe-europe{--fa: ""}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa: ""}.fa-rectangle-xmark,.fa-rectangle-times,.fa-times-rectangle,.fa-window-close{--fa: ""}.fa-baht-sign{--fa: ""}.fa-book-open{--fa: ""}.fa-book-journal-whills,.fa-journal-whills{--fa: ""}.fa-handcuffs{--fa: ""}.fa-triangle-exclamation,.fa-exclamation-triangle,.fa-warning{--fa: ""}.fa-database{--fa: ""}.fa-share,.fa-mail-forward{--fa: ""}.fa-bottle-droplet{--fa: ""}.fa-mask-face{--fa: ""}.fa-hill-rockslide{--fa: ""}.fa-right-left,.fa-exchange-alt{--fa: ""}.fa-paper-plane{--fa: ""}.fa-road-circle-exclamation{--fa: ""}.fa-dungeon{--fa: ""}.fa-align-right{--fa: ""}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa: ""}.fa-life-ring{--fa: ""}.fa-hands,.fa-sign-language,.fa-signing{--fa: ""}.fa-calendar-day{--fa: ""}.fa-water-ladder,.fa-ladder-water,.fa-swimming-pool{--fa: ""}.fa-arrows-up-down,.fa-arrows-v{--fa: ""}.fa-face-grimace,.fa-grimace{--fa: ""}.fa-wheelchair-move,.fa-wheelchair-alt{--fa: ""}.fa-turn-down,.fa-level-down-alt{--fa: ""}.fa-person-walking-arrow-right{--fa: ""}.fa-square-envelope,.fa-envelope-square{--fa: ""}.fa-dice{--fa: ""}.fa-bowling-ball{--fa: ""}.fa-brain{--fa: ""}.fa-bandage,.fa-band-aid{--fa: ""}.fa-calendar-minus{--fa: ""}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa: ""}.fa-gifts{--fa: ""}.fa-hotel{--fa: ""}.fa-earth-asia,.fa-globe-asia{--fa: ""}.fa-id-card-clip,.fa-id-card-alt{--fa: ""}.fa-magnifying-glass-plus,.fa-search-plus{--fa: ""}.fa-thumbs-up{--fa: ""}.fa-user-clock{--fa: ""}.fa-hand-dots,.fa-allergies{--fa: ""}.fa-file-invoice{--fa: ""}.fa-window-minimize{--fa: ""}.fa-mug-saucer,.fa-coffee{--fa: ""}.fa-brush{--fa: ""}.fa-file-half-dashed{--fa: ""}.fa-mask{--fa: ""}.fa-magnifying-glass-minus,.fa-search-minus{--fa: ""}.fa-ruler-vertical{--fa: ""}.fa-user-large,.fa-user-alt{--fa: ""}.fa-train-tram{--fa: ""}.fa-user-nurse{--fa: ""}.fa-syringe{--fa: ""}.fa-cloud-sun{--fa: ""}.fa-stopwatch-20{--fa: ""}.fa-square-full{--fa: ""}.fa-magnet{--fa: ""}.fa-jar{--fa: ""}.fa-note-sticky,.fa-sticky-note{--fa: ""}.fa-bug-slash{--fa: ""}.fa-arrow-up-from-water-pump{--fa: ""}.fa-bone{--fa: ""}.fa-table-cells-row-unlock{--fa: ""}.fa-user-injured{--fa: ""}.fa-face-sad-tear,.fa-sad-tear{--fa: ""}.fa-plane{--fa: ""}.fa-tent-arrows-down{--fa: ""}.fa-exclamation{--fa: "!"}.fa-arrows-spin{--fa: ""}.fa-print{--fa: ""}.fa-turkish-lira-sign,.fa-try,.fa-turkish-lira{--fa: ""}.fa-dollar-sign,.fa-dollar,.fa-usd{--fa: "$"}.fa-x{--fa: "X"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa: ""}.fa-users-gear,.fa-users-cog{--fa: ""}.fa-person-military-pointing{--fa: ""}.fa-building-columns,.fa-bank,.fa-institution,.fa-museum,.fa-university{--fa: ""}.fa-umbrella{--fa: ""}.fa-trowel{--fa: ""}.fa-d{--fa: "D"}.fa-stapler{--fa: ""}.fa-masks-theater,.fa-theater-masks{--fa: ""}.fa-kip-sign{--fa: ""}.fa-hand-point-left{--fa: ""}.fa-handshake-simple,.fa-handshake-alt{--fa: ""}.fa-jet-fighter,.fa-fighter-jet{--fa: ""}.fa-square-share-nodes,.fa-share-alt-square{--fa: ""}.fa-barcode{--fa: ""}.fa-plus-minus{--fa: ""}.fa-video,.fa-video-camera{--fa: ""}.fa-graduation-cap,.fa-mortar-board{--fa: ""}.fa-hand-holding-medical{--fa: ""}.fa-person-circle-check{--fa: ""}.fa-turn-up,.fa-level-up-alt{--fa: ""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:root,:host{--fa-style-family-brands: "Font Awesome 6 Brands";--fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}.fab,.fa-brands{font-weight:400}.fa-monero{--fa: ""}.fa-hooli{--fa: ""}.fa-yelp{--fa: ""}.fa-cc-visa{--fa: ""}.fa-lastfm{--fa: ""}.fa-shopware{--fa: ""}.fa-creative-commons-nc{--fa: ""}.fa-aws{--fa: ""}.fa-redhat{--fa: ""}.fa-yoast{--fa: ""}.fa-cloudflare{--fa: ""}.fa-ups{--fa: ""}.fa-pixiv{--fa: ""}.fa-wpexplorer{--fa: ""}.fa-dyalog{--fa: ""}.fa-bity{--fa: ""}.fa-stackpath{--fa: ""}.fa-buysellads{--fa: ""}.fa-first-order{--fa: ""}.fa-modx{--fa: ""}.fa-guilded{--fa: ""}.fa-vnv{--fa: ""}.fa-square-js,.fa-js-square{--fa: ""}.fa-microsoft{--fa: ""}.fa-qq{--fa: ""}.fa-orcid{--fa: ""}.fa-java{--fa: ""}.fa-invision{--fa: ""}.fa-creative-commons-pd-alt{--fa: ""}.fa-centercode{--fa: ""}.fa-glide-g{--fa: ""}.fa-drupal{--fa: ""}.fa-jxl{--fa: ""}.fa-dart-lang{--fa: ""}.fa-hire-a-helper{--fa: ""}.fa-creative-commons-by{--fa: ""}.fa-unity{--fa: ""}.fa-whmcs{--fa: ""}.fa-rocketchat{--fa: ""}.fa-vk{--fa: ""}.fa-untappd{--fa: ""}.fa-mailchimp{--fa: ""}.fa-css3-alt{--fa: ""}.fa-square-reddit,.fa-reddit-square{--fa: ""}.fa-vimeo-v{--fa: ""}.fa-contao{--fa: ""}.fa-square-font-awesome{--fa: ""}.fa-deskpro{--fa: ""}.fa-brave{--fa: ""}.fa-sistrix{--fa: ""}.fa-square-instagram,.fa-instagram-square{--fa: ""}.fa-battle-net{--fa: ""}.fa-the-red-yeti{--fa: ""}.fa-square-hacker-news,.fa-hacker-news-square{--fa: ""}.fa-edge{--fa: ""}.fa-threads{--fa: ""}.fa-napster{--fa: ""}.fa-square-snapchat,.fa-snapchat-square{--fa: ""}.fa-google-plus-g{--fa: ""}.fa-artstation{--fa: ""}.fa-markdown{--fa: ""}.fa-sourcetree{--fa: ""}.fa-google-plus{--fa: ""}.fa-diaspora{--fa: ""}.fa-foursquare{--fa: ""}.fa-stack-overflow{--fa: ""}.fa-github-alt{--fa: ""}.fa-phoenix-squadron{--fa: ""}.fa-pagelines{--fa: ""}.fa-algolia{--fa: ""}.fa-red-river{--fa: ""}.fa-creative-commons-sa{--fa: ""}.fa-safari{--fa: ""}.fa-google{--fa: ""}.fa-square-font-awesome-stroke,.fa-font-awesome-alt{--fa: ""}.fa-atlassian{--fa: ""}.fa-linkedin-in{--fa: ""}.fa-digital-ocean{--fa: ""}.fa-nimblr{--fa: ""}.fa-chromecast{--fa: ""}.fa-evernote{--fa: ""}.fa-hacker-news{--fa: ""}.fa-creative-commons-sampling{--fa: ""}.fa-adversal{--fa: ""}.fa-creative-commons{--fa: ""}.fa-watchman-monitoring{--fa: ""}.fa-fonticons{--fa: ""}.fa-weixin{--fa: ""}.fa-shirtsinbulk{--fa: ""}.fa-codepen{--fa: ""}.fa-git-alt{--fa: ""}.fa-lyft{--fa: ""}.fa-rev{--fa: ""}.fa-windows{--fa: ""}.fa-wizards-of-the-coast{--fa: ""}.fa-square-viadeo,.fa-viadeo-square{--fa: ""}.fa-meetup{--fa: ""}.fa-centos{--fa: ""}.fa-adn{--fa: ""}.fa-cloudsmith{--fa: ""}.fa-opensuse{--fa: ""}.fa-pied-piper-alt{--fa: ""}.fa-square-dribbble,.fa-dribbble-square{--fa: ""}.fa-codiepie{--fa: ""}.fa-node{--fa: ""}.fa-mix{--fa: ""}.fa-steam{--fa: ""}.fa-cc-apple-pay{--fa: ""}.fa-scribd{--fa: ""}.fa-debian{--fa: ""}.fa-openid{--fa: ""}.fa-instalod{--fa: ""}.fa-files-pinwheel{--fa: ""}.fa-expeditedssl{--fa: ""}.fa-sellcast{--fa: ""}.fa-square-twitter,.fa-twitter-square{--fa: ""}.fa-r-project{--fa: ""}.fa-delicious{--fa: ""}.fa-freebsd{--fa: ""}.fa-vuejs{--fa: ""}.fa-accusoft{--fa: ""}.fa-ioxhost{--fa: ""}.fa-fonticons-fi{--fa: ""}.fa-app-store{--fa: ""}.fa-cc-mastercard{--fa: ""}.fa-itunes-note{--fa: ""}.fa-golang{--fa: ""}.fa-kickstarter,.fa-square-kickstarter{--fa: ""}.fa-grav{--fa: ""}.fa-weibo{--fa: ""}.fa-uncharted{--fa: ""}.fa-firstdraft{--fa: ""}.fa-square-youtube,.fa-youtube-square{--fa: ""}.fa-wikipedia-w{--fa: ""}.fa-wpressr,.fa-rendact{--fa: ""}.fa-angellist{--fa: ""}.fa-galactic-republic{--fa: ""}.fa-nfc-directional{--fa: ""}.fa-skype{--fa: ""}.fa-joget{--fa: ""}.fa-fedora{--fa: ""}.fa-stripe-s{--fa: ""}.fa-meta{--fa: ""}.fa-laravel{--fa: ""}.fa-hotjar{--fa: ""}.fa-bluetooth-b{--fa: ""}.fa-square-letterboxd{--fa: ""}.fa-sticker-mule{--fa: ""}.fa-creative-commons-zero{--fa: ""}.fa-hips{--fa: ""}.fa-css{--fa: ""}.fa-behance{--fa: ""}.fa-reddit{--fa: ""}.fa-discord{--fa: ""}.fa-chrome{--fa: ""}.fa-app-store-ios{--fa: ""}.fa-cc-discover{--fa: ""}.fa-wpbeginner{--fa: ""}.fa-confluence{--fa: ""}.fa-shoelace{--fa: ""}.fa-mdb{--fa: ""}.fa-dochub{--fa: ""}.fa-accessible-icon{--fa: ""}.fa-ebay{--fa: ""}.fa-amazon{--fa: ""}.fa-unsplash{--fa: ""}.fa-yarn{--fa: ""}.fa-square-steam,.fa-steam-square{--fa: ""}.fa-500px{--fa: ""}.fa-square-vimeo,.fa-vimeo-square{--fa: ""}.fa-asymmetrik{--fa: ""}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa: ""}.fa-gratipay{--fa: ""}.fa-apple{--fa: ""}.fa-hive{--fa: ""}.fa-gitkraken{--fa: ""}.fa-keybase{--fa: ""}.fa-apple-pay{--fa: ""}.fa-padlet{--fa: ""}.fa-amazon-pay{--fa: ""}.fa-square-github,.fa-github-square{--fa: ""}.fa-stumbleupon{--fa: ""}.fa-fedex{--fa: ""}.fa-phoenix-framework{--fa: ""}.fa-shopify{--fa: ""}.fa-neos{--fa: ""}.fa-square-threads{--fa: ""}.fa-hackerrank{--fa: ""}.fa-researchgate{--fa: ""}.fa-swift{--fa: ""}.fa-angular{--fa: ""}.fa-speakap{--fa: ""}.fa-angrycreative{--fa: ""}.fa-y-combinator{--fa: ""}.fa-empire{--fa: ""}.fa-envira{--fa: ""}.fa-google-scholar{--fa: ""}.fa-square-gitlab,.fa-gitlab-square{--fa: ""}.fa-studiovinari{--fa: ""}.fa-pied-piper{--fa: ""}.fa-wordpress{--fa: ""}.fa-product-hunt{--fa: ""}.fa-firefox{--fa: ""}.fa-linode{--fa: ""}.fa-goodreads{--fa: ""}.fa-square-odnoklassniki,.fa-odnoklassniki-square{--fa: ""}.fa-jsfiddle{--fa: ""}.fa-sith{--fa: ""}.fa-themeisle{--fa: ""}.fa-page4{--fa: ""}.fa-hashnode{--fa: ""}.fa-react{--fa: ""}.fa-cc-paypal{--fa: ""}.fa-squarespace{--fa: ""}.fa-cc-stripe{--fa: ""}.fa-creative-commons-share{--fa: ""}.fa-bitcoin{--fa: ""}.fa-keycdn{--fa: ""}.fa-opera{--fa: ""}.fa-itch-io{--fa: ""}.fa-umbraco{--fa: ""}.fa-galactic-senate{--fa: ""}.fa-ubuntu{--fa: ""}.fa-draft2digital{--fa: ""}.fa-stripe{--fa: ""}.fa-houzz{--fa: ""}.fa-gg{--fa: ""}.fa-dhl{--fa: ""}.fa-square-pinterest,.fa-pinterest-square{--fa: ""}.fa-xing{--fa: ""}.fa-blackberry{--fa: ""}.fa-creative-commons-pd{--fa: ""}.fa-playstation{--fa: ""}.fa-quinscape{--fa: ""}.fa-less{--fa: ""}.fa-blogger-b{--fa: ""}.fa-opencart{--fa: ""}.fa-vine{--fa: ""}.fa-signal-messenger{--fa: ""}.fa-paypal{--fa: ""}.fa-gitlab{--fa: ""}.fa-typo3{--fa: ""}.fa-reddit-alien{--fa: ""}.fa-yahoo{--fa: ""}.fa-dailymotion{--fa: ""}.fa-affiliatetheme{--fa: ""}.fa-pied-piper-pp{--fa: ""}.fa-bootstrap{--fa: ""}.fa-odnoklassniki{--fa: ""}.fa-nfc-symbol{--fa: ""}.fa-mintbit{--fa: ""}.fa-ethereum{--fa: ""}.fa-speaker-deck{--fa: ""}.fa-creative-commons-nc-eu{--fa: ""}.fa-patreon{--fa: ""}.fa-avianex{--fa: ""}.fa-ello{--fa: ""}.fa-gofore{--fa: ""}.fa-bimobject{--fa: ""}.fa-brave-reverse{--fa: ""}.fa-facebook-f{--fa: ""}.fa-square-google-plus,.fa-google-plus-square{--fa: ""}.fa-web-awesome{--fa: ""}.fa-mandalorian{--fa: ""}.fa-first-order-alt{--fa: ""}.fa-osi{--fa: ""}.fa-google-wallet{--fa: ""}.fa-d-and-d-beyond{--fa: ""}.fa-periscope{--fa: ""}.fa-fulcrum{--fa: ""}.fa-cloudscale{--fa: ""}.fa-forumbee{--fa: ""}.fa-mizuni{--fa: ""}.fa-schlix{--fa: ""}.fa-square-xing,.fa-xing-square{--fa: ""}.fa-bandcamp{--fa: ""}.fa-wpforms{--fa: ""}.fa-cloudversify{--fa: ""}.fa-usps{--fa: ""}.fa-megaport{--fa: ""}.fa-magento{--fa: ""}.fa-spotify{--fa: ""}.fa-optin-monster{--fa: ""}.fa-fly{--fa: ""}.fa-square-bluesky{--fa: ""}.fa-aviato{--fa: ""}.fa-itunes{--fa: ""}.fa-cuttlefish{--fa: ""}.fa-blogger{--fa: ""}.fa-flickr{--fa: ""}.fa-viber{--fa: ""}.fa-soundcloud{--fa: ""}.fa-digg{--fa: ""}.fa-tencent-weibo{--fa: ""}.fa-letterboxd{--fa: ""}.fa-symfony{--fa: ""}.fa-maxcdn{--fa: ""}.fa-etsy{--fa: ""}.fa-facebook-messenger{--fa: ""}.fa-audible{--fa: ""}.fa-think-peaks{--fa: ""}.fa-bilibili{--fa: ""}.fa-erlang{--fa: ""}.fa-x-twitter{--fa: ""}.fa-cotton-bureau{--fa: ""}.fa-dashcube{--fa: ""}.fa-42-group,.fa-innosoft{--fa: ""}.fa-stack-exchange{--fa: ""}.fa-elementor{--fa: ""}.fa-square-pied-piper,.fa-pied-piper-square{--fa: ""}.fa-creative-commons-nd{--fa: ""}.fa-palfed{--fa: ""}.fa-superpowers{--fa: ""}.fa-resolving{--fa: ""}.fa-xbox{--fa: ""}.fa-square-web-awesome-stroke{--fa: ""}.fa-searchengin{--fa: ""}.fa-tiktok{--fa: ""}.fa-square-facebook,.fa-facebook-square{--fa: ""}.fa-renren{--fa: ""}.fa-linux{--fa: ""}.fa-glide{--fa: ""}.fa-linkedin{--fa: ""}.fa-hubspot{--fa: ""}.fa-deploydog{--fa: ""}.fa-twitch{--fa: ""}.fa-flutter{--fa: ""}.fa-ravelry{--fa: ""}.fa-mixer{--fa: ""}.fa-square-lastfm,.fa-lastfm-square{--fa: ""}.fa-vimeo{--fa: ""}.fa-mendeley{--fa: ""}.fa-uniregistry{--fa: ""}.fa-figma{--fa: ""}.fa-creative-commons-remix{--fa: ""}.fa-cc-amazon-pay{--fa: ""}.fa-dropbox{--fa: ""}.fa-instagram{--fa: ""}.fa-cmplid{--fa: ""}.fa-upwork{--fa: ""}.fa-facebook{--fa: ""}.fa-gripfire{--fa: ""}.fa-jedi-order{--fa: ""}.fa-uikit{--fa: ""}.fa-fort-awesome-alt{--fa: ""}.fa-phabricator{--fa: ""}.fa-ussunnah{--fa: ""}.fa-earlybirds{--fa: ""}.fa-trade-federation{--fa: ""}.fa-autoprefixer{--fa: ""}.fa-whatsapp{--fa: ""}.fa-square-upwork{--fa: ""}.fa-slideshare{--fa: ""}.fa-google-play{--fa: ""}.fa-viadeo{--fa: ""}.fa-line{--fa: ""}.fa-google-drive{--fa: ""}.fa-servicestack{--fa: ""}.fa-simplybuilt{--fa: ""}.fa-bitbucket{--fa: ""}.fa-imdb{--fa: ""}.fa-deezer{--fa: ""}.fa-raspberry-pi{--fa: ""}.fa-jira{--fa: ""}.fa-docker{--fa: ""}.fa-screenpal{--fa: ""}.fa-bluetooth{--fa: ""}.fa-gitter{--fa: ""}.fa-d-and-d{--fa: ""}.fa-microblog{--fa: ""}.fa-cc-diners-club{--fa: ""}.fa-gg-circle{--fa: ""}.fa-pied-piper-hat{--fa: ""}.fa-kickstarter-k{--fa: ""}.fa-yandex{--fa: ""}.fa-readme{--fa: ""}.fa-html5{--fa: ""}.fa-sellsy{--fa: ""}.fa-square-web-awesome{--fa: ""}.fa-sass{--fa: ""}.fa-wirsindhandwerk,.fa-wsh{--fa: ""}.fa-buromobelexperte{--fa: ""}.fa-salesforce{--fa: ""}.fa-octopus-deploy{--fa: ""}.fa-medapps{--fa: ""}.fa-ns8{--fa: ""}.fa-pinterest-p{--fa: ""}.fa-apper{--fa: ""}.fa-fort-awesome{--fa: ""}.fa-waze{--fa: ""}.fa-bluesky{--fa: ""}.fa-cc-jcb{--fa: ""}.fa-snapchat,.fa-snapchat-ghost{--fa: ""}.fa-fantasy-flight-games{--fa: ""}.fa-rust{--fa: ""}.fa-wix{--fa: ""}.fa-square-behance,.fa-behance-square{--fa: ""}.fa-supple{--fa: ""}.fa-webflow{--fa: ""}.fa-rebel{--fa: ""}.fa-css3{--fa: ""}.fa-staylinked{--fa: ""}.fa-kaggle{--fa: ""}.fa-space-awesome{--fa: ""}.fa-deviantart{--fa: ""}.fa-cpanel{--fa: ""}.fa-goodreads-g{--fa: ""}.fa-square-git,.fa-git-square{--fa: ""}.fa-square-tumblr,.fa-tumblr-square{--fa: ""}.fa-trello{--fa: ""}.fa-creative-commons-nc-jp{--fa: ""}.fa-get-pocket{--fa: ""}.fa-perbyte{--fa: ""}.fa-grunt{--fa: ""}.fa-weebly{--fa: ""}.fa-connectdevelop{--fa: ""}.fa-leanpub{--fa: ""}.fa-black-tie{--fa: ""}.fa-themeco{--fa: ""}.fa-python{--fa: ""}.fa-android{--fa: ""}.fa-bots{--fa: ""}.fa-free-code-camp{--fa: ""}.fa-hornbill{--fa: ""}.fa-js{--fa: ""}.fa-ideal{--fa: ""}.fa-git{--fa: ""}.fa-dev{--fa: ""}.fa-sketch{--fa: ""}.fa-yandex-international{--fa: ""}.fa-cc-amex{--fa: ""}.fa-uber{--fa: ""}.fa-github{--fa: ""}.fa-php{--fa: ""}.fa-alipay{--fa: ""}.fa-youtube{--fa: ""}.fa-skyatlas{--fa: ""}.fa-firefox-browser{--fa: ""}.fa-replyd{--fa: ""}.fa-suse{--fa: ""}.fa-jenkins{--fa: ""}.fa-twitter{--fa: ""}.fa-rockrms{--fa: ""}.fa-pinterest{--fa: ""}.fa-buffer{--fa: ""}.fa-npm{--fa: ""}.fa-yammer{--fa: ""}.fa-btc{--fa: ""}.fa-dribbble{--fa: ""}.fa-stumbleupon-circle{--fa: ""}.fa-internet-explorer{--fa: ""}.fa-stubber{--fa: ""}.fa-telegram,.fa-telegram-plane{--fa: ""}.fa-old-republic{--fa: ""}.fa-odysee{--fa: ""}.fa-square-whatsapp,.fa-whatsapp-square{--fa: ""}.fa-node-js{--fa: ""}.fa-edge-legacy{--fa: ""}.fa-slack,.fa-slack-hash{--fa: ""}.fa-medrt{--fa: ""}.fa-usb{--fa: ""}.fa-tumblr{--fa: ""}.fa-vaadin{--fa: ""}.fa-quora{--fa: ""}.fa-square-x-twitter{--fa: ""}.fa-reacteurope{--fa: ""}.fa-medium,.fa-medium-m{--fa: ""}.fa-amilia{--fa: ""}.fa-mixcloud{--fa: ""}.fa-flipboard{--fa: ""}.fa-viacoin{--fa: ""}.fa-critical-role{--fa: ""}.fa-sitrox{--fa: ""}.fa-discourse{--fa: ""}.fa-joomla{--fa: ""}.fa-mastodon{--fa: ""}.fa-airbnb{--fa: ""}.fa-wolf-pack-battalion{--fa: ""}.fa-buy-n-large{--fa: ""}.fa-gulp{--fa: ""}.fa-creative-commons-sampling-plus{--fa: ""}.fa-strava{--fa: ""}.fa-ember{--fa: ""}.fa-canadian-maple-leaf{--fa: ""}.fa-teamspeak{--fa: ""}.fa-pushed{--fa: ""}.fa-wordpress-simple{--fa: ""}.fa-nutritionix{--fa: ""}.fa-wodu{--fa: ""}.fa-google-pay{--fa: ""}.fa-intercom{--fa: ""}.fa-zhihu{--fa: ""}.fa-korvue{--fa: ""}.fa-pix{--fa: ""}.fa-steam-symbol{--fa: ""}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype")}.far,.fa-regular{font-weight:400}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}.fas,.fa-solid{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype");unicode-range:U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-v4compatibility-C9RhG_FT.woff2) format("woff2"),url(/admin-next/assets/fa-v4compatibility-CCth-dXg.ttf) format("truetype");unicode-range:U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 50%,var(--accent-color) 100%);background-attachment:fixed;min-height:100vh;margin:0;overflow-x:hidden}body,div,button,input,select,textarea,table,tr,td,th,span,p,h1,h2,h3,h4,h5,h6{transition:all .3s cubic-bezier(.4,0,.2,1)}.el-button--primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);border-color:transparent}.el-button--primary:hover,.el-button--primary:focus{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);opacity:.9}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[2px\]:after{content:var(--tw-content);left:2px}.after\:top-0\.5:after{content:var(--tw-content);top:.125rem}.after\:h-4:after{content:var(--tw-content);height:1rem}.after\:w-4:after{content:var(--tw-content);width:1rem}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.after\:shadow-sm:after{content:var(--tw-content);--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.after\:transition-transform:after{content:var(--tw-content);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:duration-200:after{content:var(--tw-content);transition-duration:.2s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-300:hover{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.hover\:border-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.hover\:border-indigo-300:hover{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity, 1))}.hover\:border-red-300:hover{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.hover\:bg-amber-700:hover{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-200:hover{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-50:hover{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.hover\:bg-green-100:hover{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.hover\:bg-green-200:hover{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.hover\:bg-green-50:hover{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.hover\:bg-green-600:hover{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-50:hover{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-100:hover{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 215 170 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-50:hover{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-200:hover{--tw-bg-opacity: 1;background-color:rgb(233 213 255 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-50:hover{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-red-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/50:hover{background-color:#ffffff80}.hover\:bg-white\/90:hover{background-color:#ffffffe6}.hover\:bg-yellow-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.hover\:from-blue-600:hover{--tw-gradient-from: #2563eb var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-green-600:hover{--tw-gradient-from: #16a34a var(--tw-gradient-from-position);--tw-gradient-to: rgb(22 163 74 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-yellow-600:hover{--tw-gradient-from: #ca8a04 var(--tw-gradient-from-position);--tw-gradient-to: rgb(202 138 4 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:to-blue-700:hover{--tw-gradient-to: #1d4ed8 var(--tw-gradient-to-position)}.hover\:to-green-700:hover{--tw-gradient-to: #15803d var(--tw-gradient-to-position)}.hover\:to-orange-600:hover{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.hover\:text-blue-700:hover{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.hover\:text-blue-900:hover{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-green-900:hover{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.hover\:text-indigo-900:hover{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-orange-900:hover{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.hover\:text-purple-900:hover{--tw-text-opacity: 1;color:rgb(88 28 135 / var(--tw-text-opacity, 1))}.hover\:text-red-800:hover{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.hover\:text-red-900:hover{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.focus\:border-cyan-500:focus{--tw-border-opacity: 1;border-color:rgb(6 182 212 / var(--tw-border-opacity, 1))}.focus\:border-transparent:focus{border-color:transparent}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(191 219 254 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus\:ring-cyan-500\/20:focus{--tw-ring-color: rgb(6 182 212 / .2)}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-20{opacity:.2}.peer:checked~.peer-checked\:bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.peer:checked~.peer-checked\:after\:translate-x-4:after{content:var(--tw-content);--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}.peer:focus~.peer-focus\:ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.peer:focus~.peer-focus\:ring-blue-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity, 1))}.dark\:divide-gray-600:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(75 85 99 / var(--tw-divide-opacity, 1))}.dark\:divide-gray-600\/50:is(.dark *)>:not([hidden])~:not([hidden]){border-color:#4b556380}.dark\:border-amber-500:is(.dark *){--tw-border-opacity: 1;border-color:rgb(245 158 11 / var(--tw-border-opacity, 1))}.dark\:border-amber-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(180 83 9 / var(--tw-border-opacity, 1))}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.dark\:border-blue-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-500:is(.dark *){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity, 1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.dark\:border-gray-600\/30:is(.dark *){border-color:#4b55634d}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-green-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.dark\:border-green-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-indigo-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(67 56 202 / var(--tw-border-opacity, 1))}.dark\:border-orange-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.dark\:border-orange-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(194 65 12 / var(--tw-border-opacity, 1))}.dark\:border-purple-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(126 34 206 / var(--tw-border-opacity, 1))}.dark\:border-red-500\/20:is(.dark *){border-color:#ef444433}.dark\:border-yellow-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(161 98 7 / var(--tw-border-opacity, 1))}.dark\:bg-amber-500:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.dark\:bg-amber-900\/20:is(.dark *){background-color:#78350f33}.dark\:bg-amber-900\/30:is(.dark *){background-color:#78350f4d}.dark\:bg-blue-900\/20:is(.dark *){background-color:#1e3a8a33}.dark\:bg-blue-900\/30:is(.dark *){background-color:#1e3a8a4d}.dark\:bg-blue-900\/50:is(.dark *){background-color:#1e3a8a80}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-600\/50:is(.dark *){background-color:#4b556380}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700\/50:is(.dark *){background-color:#37415180}.dark\:bg-gray-700\/80:is(.dark *){background-color:#374151cc}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/20:is(.dark *){background-color:#1f293733}.dark\:bg-gray-800\/80:is(.dark *){background-color:#1f2937cc}.dark\:bg-gray-800\/90:is(.dark *){background-color:#1f2937e6}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-green-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/20:is(.dark *){background-color:#14532d33}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-orange-900\/30:is(.dark *){background-color:#7c2d124d}.dark\:bg-purple-900\/30:is(.dark *){background-color:#581c874d}.dark\:bg-red-500\/10:is(.dark *){background-color:#ef44441a}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-yellow-900\/30:is(.dark *){background-color:#713f124d}.dark\:from-blue-600\/20:is(.dark *){--tw-gradient-from: rgb(37 99 235 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-blue-900\/20:is(.dark *){--tw-gradient-from: rgb(30 58 138 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 58 138 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-gray-700:is(.dark *){--tw-gradient-from: #374151 var(--tw-gradient-from-position);--tw-gradient-to: rgb(55 65 81 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-gray-800:is(.dark *){--tw-gradient-from: #1f2937 var(--tw-gradient-from-position);--tw-gradient-to: rgb(31 41 55 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-green-900\/20:is(.dark *){--tw-gradient-from: rgb(20 83 45 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(20 83 45 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-indigo-900\/20:is(.dark *){--tw-gradient-from: rgb(49 46 129 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(49 46 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-purple-900\/20:is(.dark *){--tw-gradient-from: rgb(88 28 135 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(88 28 135 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-yellow-900\/20:is(.dark *){--tw-gradient-from: rgb(113 63 18 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(113 63 18 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:via-gray-600:is(.dark *){--tw-gradient-to: rgb(75 85 99 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #4b5563 var(--tw-gradient-via-position), var(--tw-gradient-to)}.dark\:to-blue-800\/20:is(.dark *){--tw-gradient-to: rgb(30 64 175 / .2) var(--tw-gradient-to-position)}.dark\:to-gray-700:is(.dark *){--tw-gradient-to: #374151 var(--tw-gradient-to-position)}.dark\:to-gray-800:is(.dark *){--tw-gradient-to: #1f2937 var(--tw-gradient-to-position)}.dark\:to-green-800\/20:is(.dark *){--tw-gradient-to: rgb(22 101 52 / .2) var(--tw-gradient-to-position)}.dark\:to-indigo-900\/20:is(.dark *){--tw-gradient-to: rgb(49 46 129 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-600\/20:is(.dark *){--tw-gradient-to: rgb(147 51 234 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-800\/20:is(.dark *){--tw-gradient-to: rgb(107 33 168 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-900\/20:is(.dark *){--tw-gradient-to: rgb(88 28 135 / .2) var(--tw-gradient-to-position)}.dark\:to-yellow-800\/20:is(.dark *){--tw-gradient-to: rgb(133 77 14 / .2) var(--tw-gradient-to-position)}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-200:is(.dark *){--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 186 116 / var(--tw-text-opacity, 1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-purple-400:is(.dark *){--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.dark\:text-red-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:placeholder-gray-400:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-400:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-500:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-500:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.dark\:after\:bg-gray-300:is(.dark *):after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.dark\:hover\:border-gray-500:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity, 1))}.dark\:hover\:border-indigo-500:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.dark\:hover\:bg-blue-900\/20:hover:is(.dark *){background-color:#1e3a8a33}.dark\:hover\:bg-blue-900\/30:hover:is(.dark *){background-color:#1e3a8a4d}.dark\:hover\:bg-blue-900\/50:hover:is(.dark *){background-color:#1e3a8a80}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700\/30:hover:is(.dark *){background-color:#3741514d}.dark\:hover\:bg-green-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-green-900\/50:hover:is(.dark *){background-color:#14532d80}.dark\:hover\:bg-orange-900\/50:hover:is(.dark *){background-color:#7c2d1280}.dark\:hover\:bg-purple-900\/50:hover:is(.dark *){background-color:#581c8780}.dark\:hover\:bg-red-900\/20:hover:is(.dark *){background-color:#7f1d1d33}.dark\:hover\:text-blue-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:hover\:text-blue-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:hover\:text-red-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:focus\:ring-indigo-400:focus:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(129 140 248 / var(--tw-ring-opacity, 1))}.peer:focus~.dark\:peer-focus\:ring-blue-600:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity, 1))}@media (min-width: 640px){.sm\:mb-10{margin-bottom:2.5rem}.sm\:mb-2{margin-bottom:.5rem}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:mb-8{margin-bottom:2rem}.sm\:ml-2{margin-left:.5rem}.sm\:ml-4{margin-left:1rem}.sm\:mr-2{margin-right:.5rem}.sm\:mr-3{margin-right:.75rem}.sm\:mt-2{margin-top:.5rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-20{height:5rem}.sm\:h-8{height:2rem}.sm\:h-9{height:2.25rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[350px\]{height:350px}.sm\:max-h-\[300px\]{max-height:300px}.sm\:w-10{width:2.5rem}.sm\:w-12{width:3rem}.sm\:w-20{width:5rem}.sm\:w-56{width:14rem}.sm\:w-64{width:16rem}.sm\:w-8{width:2rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-none{max-width:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:rounded-2xl{border-radius:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-2{padding:.5rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.sm\:py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.sm\:py-3{padding-top:.75rem;padding-bottom:.75rem}.sm\:py-4{padding-top:1rem;padding-bottom:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width: 768px){.md\:mb-3{margin-bottom:.75rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mr-2{margin-right:.5rem}.md\:mr-3{margin-right:.75rem}.md\:mt-3{margin-top:.75rem}.md\:mt-4{margin-top:1rem}.md\:mt-6{margin-top:1.5rem}.md\:block{display:block}.md\:inline{display:inline}.md\:hidden{display:none}.md\:w-auto{width:auto}.md\:flex-none{flex:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.md\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.md\:rounded-3xl{border-radius:1.5rem}.md\:p-10{padding:2.5rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:px-5{padding-left:1.25rem;padding-right:1.25rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-2{padding-top:.5rem;padding-bottom:.5rem}.md\:py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.md\:py-8{padding-top:2rem;padding-bottom:2rem}.md\:pb-6{padding-bottom:1.5rem}.md\:pt-4{padding-top:1rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:block{display:block}.lg\:w-auto{width:auto}.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\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-end{justify-content:flex-end}}@media (min-width: 1280px){.xl\:inline{display:inline}}:root{--primary-color: #667eea;--secondary-color: #764ba2;--accent-color: #f093fb;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(255, 255, 255, .95);--glass-color: rgba(255, 255, 255, .1);--glass-strong-color: rgba(255, 255, 255, .95);--text-primary: #1f2937;--text-secondary: #6b7280;--border-color: rgba(255, 255, 255, .2);--bg-gradient-start: #667eea;--bg-gradient-mid: #764ba2;--bg-gradient-end: #f093fb;--input-bg: rgba(255, 255, 255, .9);--input-border: rgba(255, 255, 255, .3);--modal-bg: rgba(0, 0, 0, .4);--table-bg: rgba(255, 255, 255, .95);--table-hover: rgba(102, 126, 234, .05)}.dark{--primary-color: #818cf8;--secondary-color: #a78bfa;--accent-color: #c084fc;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(31, 41, 55, .95);--glass-color: rgba(0, 0, 0, .2);--glass-strong-color: rgba(31, 41, 55, .95);--text-primary: #f3f4f6;--text-secondary: #9ca3af;--border-color: rgba(75, 85, 99, .3);--bg-gradient-start: #1f2937;--bg-gradient-mid: #374151;--bg-gradient-end: #4b5563;--input-bg: rgba(31, 41, 55, .9);--input-border: rgba(75, 85, 99, .5);--modal-bg: rgba(0, 0, 0, .6);--table-bg: rgba(31, 41, 55, .95);--table-hover: rgba(129, 140, 248, .1)}button,input,select,textarea{transition:background-color .3s ease,border-color .3s ease,box-shadow .3s ease,transform .2s ease}.transition-colors{transition:color .3s ease,background-color .3s ease,border-color .3s ease}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,var(--bg-gradient-start) 0%,var(--bg-gradient-mid) 50%,var(--bg-gradient-end) 100%);background-attachment:fixed;min-height:100vh;margin:0;overflow-x:hidden;color:var(--text-primary);transition:background .3s ease,color .3s ease}body:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 80%,rgba(240,147,251,.2) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(102,126,234,.2) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(118,75,162,.1) 0%,transparent 50%);pointer-events:none;z-index:-1}.glass{background:var(--glass-color);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-color);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,inset 0 1px #ffffff1a;transition:background-color .3s ease,border-color .3s ease}.dark .glass{box-shadow:0 20px 25px -5px #00000040,0 10px 10px -5px #0000001a,inset 0 1px #ffffff0d}.glass-strong{background:var(--glass-strong-color);backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px);border:1px solid var(--border-color);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d,inset 0 1px #ffffff1a;transition:background-color .3s ease,border-color .3s ease}.dark .glass-strong{box-shadow:0 25px 50px -12px #0006,0 0 0 1px #ffffff05,inset 0 1px #ffffff0d}.tab-btn{position:relative;overflow:hidden;border-radius:12px;font-weight:500;letter-spacing:.025em}.tab-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.tab-btn:hover:before{left:100%}.tab-btn.active{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);color:#fff;box-shadow:0 10px 15px -3px #667eea4d,0 4px 6px -2px #667eea0d;transform:translateY(-1px)}.card{background:var(--surface-color);border-radius:16px;border:1px solid var(--border-color);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative;transition:background-color .3s ease,border-color .3s ease}.dark .card{box-shadow:0 10px 15px -3px #00000040,0 4px 6px -2px #0000001a}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent)}.stat-card{background:linear-gradient(135deg,var(--surface-color) 0%,var(--glass-strong-color) 100%);border-radius:20px;border:1px solid var(--border-color);padding:24px;position:relative;overflow:hidden;transition:transform .3s ease,box-shadow .3s ease}.dark .stat-card{background:linear-gradient(135deg,#1f2937f2,#111827cc)}.stat-card:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 70%);opacity:0;transition:opacity .3s ease}.stat-card:hover{transform:translateY(-4px);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.stat-card:hover:before{opacity:1}.stat-icon{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.btn{font-weight:500;border-radius:12px;border:none;cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden;letter-spacing:.025em}.btn:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:#fff3;border-radius:50%;transform:translate(-50%,-50%);transition:width .3s ease,height .3s ease}.btn:active:before{width:300px;height:300px}.btn-primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);color:#fff;box-shadow:0 10px 15px -3px #667eea4d,0 4px 6px -2px #667eea0d}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #667eea4d,0 10px 10px -5px #667eea1a}.btn-success{background:linear-gradient(135deg,var(--success-color) 0%,#059669 100%);color:#fff;box-shadow:0 10px 15px -3px #10b9814d,0 4px 6px -2px #10b9810d}.btn-success:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #10b9814d,0 10px 10px -5px #10b9811a}.btn-danger{background:linear-gradient(135deg,var(--error-color) 0%,#dc2626 100%);color:#fff;box-shadow:0 10px 15px -3px #ef44444d,0 4px 6px -2px #ef44440d}.btn-danger:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #ef44444d,0 10px 10px -5px #ef44441a}.form-input{background:var(--input-bg);border:2px solid var(--input-border);border-radius:12px;padding:16px;font-size:16px;color:var(--text-primary);transition:background-color .3s ease,border-color .3s ease,box-shadow .3s ease;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.form-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #667eea1a,0 10px 15px -3px #0000001a;background:#fffffff2;color:#1f2937}.dark .form-input:focus{box-shadow:0 0 0 3px #818cf833,0 10px 15px -3px #0003;background:#111827f2;color:#f3f4f6}.table-container{background:var(--table-bg);border-radius:16px;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;transition:background-color .3s ease}.dark .table-container{box-shadow:0 10px 15px -3px #00000040,0 4px 6px -2px #0000001a}.table-row{transition:background-color .2s ease,transform .2s ease}.table-row:hover{background:var(--table-hover);transform:scale(1.005)}.modal{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:var(--modal-bg);transition:background-color .3s ease}.modal-content{background:#fff;border-radius:24px;border:1px solid rgba(229,231,235,.8);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:background-color .3s ease,border-color .3s ease}.dark .modal-content{background:#1f2937;border:1px solid rgba(75,85,99,.5);box-shadow:0 25px 50px -12px #0009,0 0 0 1px #ffffff05}.header-title{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;letter-spacing:-.025em}.loading-spinner{display:inline-block;width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top:2px solid white;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fade-enter-active,.fade-leave-active{transition:opacity .3s ease}.fade-enter-from,.fade-leave-to{opacity:0}.slide-up-enter-active,.slide-up-leave-active{transition:all .3s ease}.slide-up-enter-from{opacity:0;transform:translateY(30px)}.slide-up-leave-to{opacity:0;transform:translateY(-30px)}.toast{position:fixed;top:80px;right:20px;z-index:1000;min-width:320px;max-width:500px;transform:translate(100%);transition:transform .3s ease-in-out}.toast.show{transform:translate(0)}.toast-success{background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:1px solid rgba(16,185,129,.3)}.toast-error{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border:1px solid rgba(239,68,68,.3)}.toast-info{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:1px solid rgba(59,130,246,.3)}.toast-warning{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;border:1px solid rgba(245,158,11,.3)}[v-cloak]{display:none}.custom-scrollbar{scrollbar-width:thin;scrollbar-color:rgba(102,126,234,.3) rgba(102,126,234,.05)}.dark .custom-scrollbar{scrollbar-color:rgba(129,140,248,.3) rgba(129,140,248,.05)}.custom-scrollbar::-webkit-scrollbar{width:8px;height:8px}.custom-scrollbar::-webkit-scrollbar-track{background:#667eea0d;border-radius:10px}.dark .custom-scrollbar::-webkit-scrollbar-track{background:#818cf80d}.custom-scrollbar::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#667eea66,#764ba266);border-radius:10px;-webkit-transition:background .3s ease;transition:background .3s ease}.dark .custom-scrollbar::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#818cf866,#a78bfa66)}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#667eea99,#764ba299)}.dark .custom-scrollbar::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#818cf899,#a78bfa99)}.custom-scrollbar::-webkit-scrollbar-thumb:active{background:linear-gradient(135deg,#667eeacc,#764ba2cc)}.dark .custom-scrollbar::-webkit-scrollbar-thumb:active{background:linear-gradient(135deg,#818cf8cc,#a78bfacc)}.modal-scroll-content{max-height:calc(90vh - 160px);overflow-y:auto;padding-right:8px}@media (max-width: 768px){.glass,.glass-strong{margin:16px;border-radius:20px}.stat-card{padding:16px}.tab-btn{font-size:14px;padding:12px 8px}.modal-scroll-content{max-height:calc(85vh - 120px)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}to{transform:scale(1);opacity:1}}.animate-pulse{animation:pulse 2s infinite}.user-menu-dropdown{min-width:240px;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.tab-content{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}} + */.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas:before,.far:before,.fab:before,.fa-solid:before,.fa-regular:before,.fa-brands:before,.fa:before{content:var(--fa)}.fa-classic,.fas,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(-1 * var(--fa-li-width, 2em));position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, .1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, .08em);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.28, .84, .42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 2s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0)}}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle, 0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0{--fa: "0"}.fa-1{--fa: "1"}.fa-2{--fa: "2"}.fa-3{--fa: "3"}.fa-4{--fa: "4"}.fa-5{--fa: "5"}.fa-6{--fa: "6"}.fa-7{--fa: "7"}.fa-8{--fa: "8"}.fa-9{--fa: "9"}.fa-fill-drip{--fa: ""}.fa-arrows-to-circle{--fa: ""}.fa-circle-chevron-right,.fa-chevron-circle-right{--fa: ""}.fa-at{--fa: "@"}.fa-trash-can,.fa-trash-alt{--fa: ""}.fa-text-height{--fa: ""}.fa-user-xmark,.fa-user-times{--fa: ""}.fa-stethoscope{--fa: ""}.fa-message,.fa-comment-alt{--fa: ""}.fa-info{--fa: ""}.fa-down-left-and-up-right-to-center,.fa-compress-alt{--fa: ""}.fa-explosion{--fa: ""}.fa-file-lines,.fa-file-alt,.fa-file-text{--fa: ""}.fa-wave-square{--fa: ""}.fa-ring{--fa: ""}.fa-building-un{--fa: ""}.fa-dice-three{--fa: ""}.fa-calendar-days,.fa-calendar-alt{--fa: ""}.fa-anchor-circle-check{--fa: ""}.fa-building-circle-arrow-right{--fa: ""}.fa-volleyball,.fa-volleyball-ball{--fa: ""}.fa-arrows-up-to-line{--fa: ""}.fa-sort-down,.fa-sort-desc{--fa: ""}.fa-circle-minus,.fa-minus-circle{--fa: ""}.fa-door-open{--fa: ""}.fa-right-from-bracket,.fa-sign-out-alt{--fa: ""}.fa-atom{--fa: ""}.fa-soap{--fa: ""}.fa-icons,.fa-heart-music-camera-bolt{--fa: ""}.fa-microphone-lines-slash,.fa-microphone-alt-slash{--fa: ""}.fa-bridge-circle-check{--fa: ""}.fa-pump-medical{--fa: ""}.fa-fingerprint{--fa: ""}.fa-hand-point-right{--fa: ""}.fa-magnifying-glass-location,.fa-search-location{--fa: ""}.fa-forward-step,.fa-step-forward{--fa: ""}.fa-face-smile-beam,.fa-smile-beam{--fa: ""}.fa-flag-checkered{--fa: ""}.fa-football,.fa-football-ball{--fa: ""}.fa-school-circle-exclamation{--fa: ""}.fa-crop{--fa: ""}.fa-angles-down,.fa-angle-double-down{--fa: ""}.fa-users-rectangle{--fa: ""}.fa-people-roof{--fa: ""}.fa-people-line{--fa: ""}.fa-beer-mug-empty,.fa-beer{--fa: ""}.fa-diagram-predecessor{--fa: ""}.fa-arrow-up-long,.fa-long-arrow-up{--fa: ""}.fa-fire-flame-simple,.fa-burn{--fa: ""}.fa-person,.fa-male{--fa: ""}.fa-laptop{--fa: ""}.fa-file-csv{--fa: ""}.fa-menorah{--fa: ""}.fa-truck-plane{--fa: ""}.fa-record-vinyl{--fa: ""}.fa-face-grin-stars,.fa-grin-stars{--fa: ""}.fa-bong{--fa: ""}.fa-spaghetti-monster-flying,.fa-pastafarianism{--fa: ""}.fa-arrow-down-up-across-line{--fa: ""}.fa-spoon,.fa-utensil-spoon{--fa: ""}.fa-jar-wheat{--fa: ""}.fa-envelopes-bulk,.fa-mail-bulk{--fa: ""}.fa-file-circle-exclamation{--fa: ""}.fa-circle-h,.fa-hospital-symbol{--fa: ""}.fa-pager{--fa: ""}.fa-address-book,.fa-contact-book{--fa: ""}.fa-strikethrough{--fa: ""}.fa-k{--fa: "K"}.fa-landmark-flag{--fa: ""}.fa-pencil,.fa-pencil-alt{--fa: ""}.fa-backward{--fa: ""}.fa-caret-right{--fa: ""}.fa-comments{--fa: ""}.fa-paste,.fa-file-clipboard{--fa: ""}.fa-code-pull-request{--fa: ""}.fa-clipboard-list{--fa: ""}.fa-truck-ramp-box,.fa-truck-loading{--fa: ""}.fa-user-check{--fa: ""}.fa-vial-virus{--fa: ""}.fa-sheet-plastic{--fa: ""}.fa-blog{--fa: ""}.fa-user-ninja{--fa: ""}.fa-person-arrow-up-from-line{--fa: ""}.fa-scroll-torah,.fa-torah{--fa: ""}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa: ""}.fa-toggle-off{--fa: ""}.fa-box-archive,.fa-archive{--fa: ""}.fa-person-drowning{--fa: ""}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa: ""}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa: ""}.fa-spray-can{--fa: ""}.fa-truck-monster{--fa: ""}.fa-w{--fa: "W"}.fa-earth-africa,.fa-globe-africa{--fa: ""}.fa-rainbow{--fa: ""}.fa-circle-notch{--fa: ""}.fa-tablet-screen-button,.fa-tablet-alt{--fa: ""}.fa-paw{--fa: ""}.fa-cloud{--fa: ""}.fa-trowel-bricks{--fa: ""}.fa-face-flushed,.fa-flushed{--fa: ""}.fa-hospital-user{--fa: ""}.fa-tent-arrow-left-right{--fa: ""}.fa-gavel,.fa-legal{--fa: ""}.fa-binoculars{--fa: ""}.fa-microphone-slash{--fa: ""}.fa-box-tissue{--fa: ""}.fa-motorcycle{--fa: ""}.fa-bell-concierge,.fa-concierge-bell{--fa: ""}.fa-pen-ruler,.fa-pencil-ruler{--fa: ""}.fa-people-arrows,.fa-people-arrows-left-right{--fa: ""}.fa-mars-and-venus-burst{--fa: ""}.fa-square-caret-right,.fa-caret-square-right{--fa: ""}.fa-scissors,.fa-cut{--fa: ""}.fa-sun-plant-wilt{--fa: ""}.fa-toilets-portable{--fa: ""}.fa-hockey-puck{--fa: ""}.fa-table{--fa: ""}.fa-magnifying-glass-arrow-right{--fa: ""}.fa-tachograph-digital,.fa-digital-tachograph{--fa: ""}.fa-users-slash{--fa: ""}.fa-clover{--fa: ""}.fa-reply,.fa-mail-reply{--fa: ""}.fa-star-and-crescent{--fa: ""}.fa-house-fire{--fa: ""}.fa-square-minus,.fa-minus-square{--fa: ""}.fa-helicopter{--fa: ""}.fa-compass{--fa: ""}.fa-square-caret-down,.fa-caret-square-down{--fa: ""}.fa-file-circle-question{--fa: ""}.fa-laptop-code{--fa: ""}.fa-swatchbook{--fa: ""}.fa-prescription-bottle{--fa: ""}.fa-bars,.fa-navicon{--fa: ""}.fa-people-group{--fa: ""}.fa-hourglass-end,.fa-hourglass-3{--fa: ""}.fa-heart-crack,.fa-heart-broken{--fa: ""}.fa-square-up-right,.fa-external-link-square-alt{--fa: ""}.fa-face-kiss-beam,.fa-kiss-beam{--fa: ""}.fa-film{--fa: ""}.fa-ruler-horizontal{--fa: ""}.fa-people-robbery{--fa: ""}.fa-lightbulb{--fa: ""}.fa-caret-left{--fa: ""}.fa-circle-exclamation,.fa-exclamation-circle{--fa: ""}.fa-school-circle-xmark{--fa: ""}.fa-arrow-right-from-bracket,.fa-sign-out{--fa: ""}.fa-circle-chevron-down,.fa-chevron-circle-down{--fa: ""}.fa-unlock-keyhole,.fa-unlock-alt{--fa: ""}.fa-cloud-showers-heavy{--fa: ""}.fa-headphones-simple,.fa-headphones-alt{--fa: ""}.fa-sitemap{--fa: ""}.fa-circle-dollar-to-slot,.fa-donate{--fa: ""}.fa-memory{--fa: ""}.fa-road-spikes{--fa: ""}.fa-fire-burner{--fa: ""}.fa-flag{--fa: ""}.fa-hanukiah{--fa: ""}.fa-feather{--fa: ""}.fa-volume-low,.fa-volume-down{--fa: ""}.fa-comment-slash{--fa: ""}.fa-cloud-sun-rain{--fa: ""}.fa-compress{--fa: ""}.fa-wheat-awn,.fa-wheat-alt{--fa: ""}.fa-ankh{--fa: ""}.fa-hands-holding-child{--fa: ""}.fa-asterisk{--fa: "*"}.fa-square-check,.fa-check-square{--fa: ""}.fa-peseta-sign{--fa: ""}.fa-heading,.fa-header{--fa: ""}.fa-ghost{--fa: ""}.fa-list,.fa-list-squares{--fa: ""}.fa-square-phone-flip,.fa-phone-square-alt{--fa: ""}.fa-cart-plus{--fa: ""}.fa-gamepad{--fa: ""}.fa-circle-dot,.fa-dot-circle{--fa: ""}.fa-face-dizzy,.fa-dizzy{--fa: ""}.fa-egg{--fa: ""}.fa-house-medical-circle-xmark{--fa: ""}.fa-campground{--fa: ""}.fa-folder-plus{--fa: ""}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa: ""}.fa-paintbrush,.fa-paint-brush{--fa: ""}.fa-lock{--fa: ""}.fa-gas-pump{--fa: ""}.fa-hot-tub-person,.fa-hot-tub{--fa: ""}.fa-map-location,.fa-map-marked{--fa: ""}.fa-house-flood-water{--fa: ""}.fa-tree{--fa: ""}.fa-bridge-lock{--fa: ""}.fa-sack-dollar{--fa: ""}.fa-pen-to-square,.fa-edit{--fa: ""}.fa-car-side{--fa: ""}.fa-share-nodes,.fa-share-alt{--fa: ""}.fa-heart-circle-minus{--fa: ""}.fa-hourglass-half,.fa-hourglass-2{--fa: ""}.fa-microscope{--fa: ""}.fa-sink{--fa: ""}.fa-bag-shopping,.fa-shopping-bag{--fa: ""}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa: ""}.fa-mitten{--fa: ""}.fa-person-rays{--fa: ""}.fa-users{--fa: ""}.fa-eye-slash{--fa: ""}.fa-flask-vial{--fa: ""}.fa-hand,.fa-hand-paper{--fa: ""}.fa-om{--fa: ""}.fa-worm{--fa: ""}.fa-house-circle-xmark{--fa: ""}.fa-plug{--fa: ""}.fa-chevron-up{--fa: ""}.fa-hand-spock{--fa: ""}.fa-stopwatch{--fa: ""}.fa-face-kiss,.fa-kiss{--fa: ""}.fa-bridge-circle-xmark{--fa: ""}.fa-face-grin-tongue,.fa-grin-tongue{--fa: ""}.fa-chess-bishop{--fa: ""}.fa-face-grin-wink,.fa-grin-wink{--fa: ""}.fa-ear-deaf,.fa-deaf,.fa-deafness,.fa-hard-of-hearing{--fa: ""}.fa-road-circle-check{--fa: ""}.fa-dice-five{--fa: ""}.fa-square-rss,.fa-rss-square{--fa: ""}.fa-land-mine-on{--fa: ""}.fa-i-cursor{--fa: ""}.fa-stamp{--fa: ""}.fa-stairs{--fa: ""}.fa-i{--fa: "I"}.fa-hryvnia-sign,.fa-hryvnia{--fa: ""}.fa-pills{--fa: ""}.fa-face-grin-wide,.fa-grin-alt{--fa: ""}.fa-tooth{--fa: ""}.fa-v{--fa: "V"}.fa-bangladeshi-taka-sign{--fa: ""}.fa-bicycle{--fa: ""}.fa-staff-snake,.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius{--fa: ""}.fa-head-side-cough-slash{--fa: ""}.fa-truck-medical,.fa-ambulance{--fa: ""}.fa-wheat-awn-circle-exclamation{--fa: ""}.fa-snowman{--fa: ""}.fa-mortar-pestle{--fa: ""}.fa-road-barrier{--fa: ""}.fa-school{--fa: ""}.fa-igloo{--fa: ""}.fa-joint{--fa: ""}.fa-angle-right{--fa: ""}.fa-horse{--fa: ""}.fa-q{--fa: "Q"}.fa-g{--fa: "G"}.fa-notes-medical{--fa: ""}.fa-temperature-half,.fa-temperature-2,.fa-thermometer-2,.fa-thermometer-half{--fa: ""}.fa-dong-sign{--fa: ""}.fa-capsules{--fa: ""}.fa-poo-storm,.fa-poo-bolt{--fa: ""}.fa-face-frown-open,.fa-frown-open{--fa: ""}.fa-hand-point-up{--fa: ""}.fa-money-bill{--fa: ""}.fa-bookmark{--fa: ""}.fa-align-justify{--fa: ""}.fa-umbrella-beach{--fa: ""}.fa-helmet-un{--fa: ""}.fa-bullseye{--fa: ""}.fa-bacon{--fa: ""}.fa-hand-point-down{--fa: ""}.fa-arrow-up-from-bracket{--fa: ""}.fa-folder,.fa-folder-blank{--fa: ""}.fa-file-waveform,.fa-file-medical-alt{--fa: ""}.fa-radiation{--fa: ""}.fa-chart-simple{--fa: ""}.fa-mars-stroke{--fa: ""}.fa-vial{--fa: ""}.fa-gauge,.fa-dashboard,.fa-gauge-med,.fa-tachometer-alt-average{--fa: ""}.fa-wand-magic-sparkles,.fa-magic-wand-sparkles{--fa: ""}.fa-e{--fa: "E"}.fa-pen-clip,.fa-pen-alt{--fa: ""}.fa-bridge-circle-exclamation{--fa: ""}.fa-user{--fa: ""}.fa-school-circle-check{--fa: ""}.fa-dumpster{--fa: ""}.fa-van-shuttle,.fa-shuttle-van{--fa: ""}.fa-building-user{--fa: ""}.fa-square-caret-left,.fa-caret-square-left{--fa: ""}.fa-highlighter{--fa: ""}.fa-key{--fa: ""}.fa-bullhorn{--fa: ""}.fa-globe{--fa: ""}.fa-synagogue{--fa: ""}.fa-person-half-dress{--fa: ""}.fa-road-bridge{--fa: ""}.fa-location-arrow{--fa: ""}.fa-c{--fa: "C"}.fa-tablet-button{--fa: ""}.fa-building-lock{--fa: ""}.fa-pizza-slice{--fa: ""}.fa-money-bill-wave{--fa: ""}.fa-chart-area,.fa-area-chart{--fa: ""}.fa-house-flag{--fa: ""}.fa-person-circle-minus{--fa: ""}.fa-ban,.fa-cancel{--fa: ""}.fa-camera-rotate{--fa: ""}.fa-spray-can-sparkles,.fa-air-freshener{--fa: ""}.fa-star{--fa: ""}.fa-repeat{--fa: ""}.fa-cross{--fa: ""}.fa-box{--fa: ""}.fa-venus-mars{--fa: ""}.fa-arrow-pointer,.fa-mouse-pointer{--fa: ""}.fa-maximize,.fa-expand-arrows-alt{--fa: ""}.fa-charging-station{--fa: ""}.fa-shapes,.fa-triangle-circle-square{--fa: ""}.fa-shuffle,.fa-random{--fa: ""}.fa-person-running,.fa-running{--fa: ""}.fa-mobile-retro{--fa: ""}.fa-grip-lines-vertical{--fa: ""}.fa-spider{--fa: ""}.fa-hands-bound{--fa: ""}.fa-file-invoice-dollar{--fa: ""}.fa-plane-circle-exclamation{--fa: ""}.fa-x-ray{--fa: ""}.fa-spell-check{--fa: ""}.fa-slash{--fa: ""}.fa-computer-mouse,.fa-mouse{--fa: ""}.fa-arrow-right-to-bracket,.fa-sign-in{--fa: ""}.fa-shop-slash,.fa-store-alt-slash{--fa: ""}.fa-server{--fa: ""}.fa-virus-covid-slash{--fa: ""}.fa-shop-lock{--fa: ""}.fa-hourglass-start,.fa-hourglass-1{--fa: ""}.fa-blender-phone{--fa: ""}.fa-building-wheat{--fa: ""}.fa-person-breastfeeding{--fa: ""}.fa-right-to-bracket,.fa-sign-in-alt{--fa: ""}.fa-venus{--fa: ""}.fa-passport{--fa: ""}.fa-thumbtack-slash,.fa-thumb-tack-slash{--fa: ""}.fa-heart-pulse,.fa-heartbeat{--fa: ""}.fa-people-carry-box,.fa-people-carry{--fa: ""}.fa-temperature-high{--fa: ""}.fa-microchip{--fa: ""}.fa-crown{--fa: ""}.fa-weight-hanging{--fa: ""}.fa-xmarks-lines{--fa: ""}.fa-file-prescription{--fa: ""}.fa-weight-scale,.fa-weight{--fa: ""}.fa-user-group,.fa-user-friends{--fa: ""}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa: ""}.fa-chess-knight{--fa: ""}.fa-face-laugh-squint,.fa-laugh-squint{--fa: ""}.fa-wheelchair{--fa: ""}.fa-circle-arrow-up,.fa-arrow-circle-up{--fa: ""}.fa-toggle-on{--fa: ""}.fa-person-walking,.fa-walking{--fa: ""}.fa-l{--fa: "L"}.fa-fire{--fa: ""}.fa-bed-pulse,.fa-procedures{--fa: ""}.fa-shuttle-space,.fa-space-shuttle{--fa: ""}.fa-face-laugh,.fa-laugh{--fa: ""}.fa-folder-open{--fa: ""}.fa-heart-circle-plus{--fa: ""}.fa-code-fork{--fa: ""}.fa-city{--fa: ""}.fa-microphone-lines,.fa-microphone-alt{--fa: ""}.fa-pepper-hot{--fa: ""}.fa-unlock{--fa: ""}.fa-colon-sign{--fa: ""}.fa-headset{--fa: ""}.fa-store-slash{--fa: ""}.fa-road-circle-xmark{--fa: ""}.fa-user-minus{--fa: ""}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa: ""}.fa-champagne-glasses,.fa-glass-cheers{--fa: ""}.fa-clipboard{--fa: ""}.fa-house-circle-exclamation{--fa: ""}.fa-file-arrow-up,.fa-file-upload{--fa: ""}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa: ""}.fa-bath,.fa-bathtub{--fa: ""}.fa-underline{--fa: ""}.fa-user-pen,.fa-user-edit{--fa: ""}.fa-signature{--fa: ""}.fa-stroopwafel{--fa: ""}.fa-bold{--fa: ""}.fa-anchor-lock{--fa: ""}.fa-building-ngo{--fa: ""}.fa-manat-sign{--fa: ""}.fa-not-equal{--fa: ""}.fa-border-top-left,.fa-border-style{--fa: ""}.fa-map-location-dot,.fa-map-marked-alt{--fa: ""}.fa-jedi{--fa: ""}.fa-square-poll-vertical,.fa-poll{--fa: ""}.fa-mug-hot{--fa: ""}.fa-car-battery,.fa-battery-car{--fa: ""}.fa-gift{--fa: ""}.fa-dice-two{--fa: ""}.fa-chess-queen{--fa: ""}.fa-glasses{--fa: ""}.fa-chess-board{--fa: ""}.fa-building-circle-check{--fa: ""}.fa-person-chalkboard{--fa: ""}.fa-mars-stroke-right,.fa-mars-stroke-h{--fa: ""}.fa-hand-back-fist,.fa-hand-rock{--fa: ""}.fa-square-caret-up,.fa-caret-square-up{--fa: ""}.fa-cloud-showers-water{--fa: ""}.fa-chart-bar,.fa-bar-chart{--fa: ""}.fa-hands-bubbles,.fa-hands-wash{--fa: ""}.fa-less-than-equal{--fa: ""}.fa-train{--fa: ""}.fa-eye-low-vision,.fa-low-vision{--fa: ""}.fa-crow{--fa: ""}.fa-sailboat{--fa: ""}.fa-window-restore{--fa: ""}.fa-square-plus,.fa-plus-square{--fa: ""}.fa-torii-gate{--fa: ""}.fa-frog{--fa: ""}.fa-bucket{--fa: ""}.fa-image{--fa: ""}.fa-microphone{--fa: ""}.fa-cow{--fa: ""}.fa-caret-up{--fa: ""}.fa-screwdriver{--fa: ""}.fa-folder-closed{--fa: ""}.fa-house-tsunami{--fa: ""}.fa-square-nfi{--fa: ""}.fa-arrow-up-from-ground-water{--fa: ""}.fa-martini-glass,.fa-glass-martini-alt{--fa: ""}.fa-square-binary{--fa: ""}.fa-rotate-left,.fa-rotate-back,.fa-rotate-backward,.fa-undo-alt{--fa: ""}.fa-table-columns,.fa-columns{--fa: ""}.fa-lemon{--fa: ""}.fa-head-side-mask{--fa: ""}.fa-handshake{--fa: ""}.fa-gem{--fa: ""}.fa-dolly,.fa-dolly-box{--fa: ""}.fa-smoking{--fa: ""}.fa-minimize,.fa-compress-arrows-alt{--fa: ""}.fa-monument{--fa: ""}.fa-snowplow{--fa: ""}.fa-angles-right,.fa-angle-double-right{--fa: ""}.fa-cannabis{--fa: ""}.fa-circle-play,.fa-play-circle{--fa: ""}.fa-tablets{--fa: ""}.fa-ethernet{--fa: ""}.fa-euro-sign,.fa-eur,.fa-euro{--fa: ""}.fa-chair{--fa: ""}.fa-circle-check,.fa-check-circle{--fa: ""}.fa-circle-stop,.fa-stop-circle{--fa: ""}.fa-compass-drafting,.fa-drafting-compass{--fa: ""}.fa-plate-wheat{--fa: ""}.fa-icicles{--fa: ""}.fa-person-shelter{--fa: ""}.fa-neuter{--fa: ""}.fa-id-badge{--fa: ""}.fa-marker{--fa: ""}.fa-face-laugh-beam,.fa-laugh-beam{--fa: ""}.fa-helicopter-symbol{--fa: ""}.fa-universal-access{--fa: ""}.fa-circle-chevron-up,.fa-chevron-circle-up{--fa: ""}.fa-lari-sign{--fa: ""}.fa-volcano{--fa: ""}.fa-person-walking-dashed-line-arrow-right{--fa: ""}.fa-sterling-sign,.fa-gbp,.fa-pound-sign{--fa: ""}.fa-viruses{--fa: ""}.fa-square-person-confined{--fa: ""}.fa-user-tie{--fa: ""}.fa-arrow-down-long,.fa-long-arrow-down{--fa: ""}.fa-tent-arrow-down-to-line{--fa: ""}.fa-certificate{--fa: ""}.fa-reply-all,.fa-mail-reply-all{--fa: ""}.fa-suitcase{--fa: ""}.fa-person-skating,.fa-skating{--fa: ""}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa: ""}.fa-camera-retro{--fa: ""}.fa-circle-arrow-down,.fa-arrow-circle-down{--fa: ""}.fa-file-import,.fa-arrow-right-to-file{--fa: ""}.fa-square-arrow-up-right,.fa-external-link-square{--fa: ""}.fa-box-open{--fa: ""}.fa-scroll{--fa: ""}.fa-spa{--fa: ""}.fa-location-pin-lock{--fa: ""}.fa-pause{--fa: ""}.fa-hill-avalanche{--fa: ""}.fa-temperature-empty,.fa-temperature-0,.fa-thermometer-0,.fa-thermometer-empty{--fa: ""}.fa-bomb{--fa: ""}.fa-registered{--fa: ""}.fa-address-card,.fa-contact-card,.fa-vcard{--fa: ""}.fa-scale-unbalanced-flip,.fa-balance-scale-right{--fa: ""}.fa-subscript{--fa: ""}.fa-diamond-turn-right,.fa-directions{--fa: ""}.fa-burst{--fa: ""}.fa-house-laptop,.fa-laptop-house{--fa: ""}.fa-face-tired,.fa-tired{--fa: ""}.fa-money-bills{--fa: ""}.fa-smog{--fa: ""}.fa-crutch{--fa: ""}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa: ""}.fa-palette{--fa: ""}.fa-arrows-turn-right{--fa: ""}.fa-vest{--fa: ""}.fa-ferry{--fa: ""}.fa-arrows-down-to-people{--fa: ""}.fa-seedling,.fa-sprout{--fa: ""}.fa-left-right,.fa-arrows-alt-h{--fa: ""}.fa-boxes-packing{--fa: ""}.fa-circle-arrow-left,.fa-arrow-circle-left{--fa: ""}.fa-group-arrows-rotate{--fa: ""}.fa-bowl-food{--fa: ""}.fa-candy-cane{--fa: ""}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa: ""}.fa-cloud-bolt,.fa-thunderstorm{--fa: ""}.fa-text-slash,.fa-remove-format{--fa: ""}.fa-face-smile-wink,.fa-smile-wink{--fa: ""}.fa-file-word{--fa: ""}.fa-file-powerpoint{--fa: ""}.fa-arrows-left-right,.fa-arrows-h{--fa: ""}.fa-house-lock{--fa: ""}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa: ""}.fa-children{--fa: ""}.fa-chalkboard,.fa-blackboard{--fa: ""}.fa-user-large-slash,.fa-user-alt-slash{--fa: ""}.fa-envelope-open{--fa: ""}.fa-handshake-simple-slash,.fa-handshake-alt-slash{--fa: ""}.fa-mattress-pillow{--fa: ""}.fa-guarani-sign{--fa: ""}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa: ""}.fa-fire-extinguisher{--fa: ""}.fa-cruzeiro-sign{--fa: ""}.fa-greater-than-equal{--fa: ""}.fa-shield-halved,.fa-shield-alt{--fa: ""}.fa-book-atlas,.fa-atlas{--fa: ""}.fa-virus{--fa: ""}.fa-envelope-circle-check{--fa: ""}.fa-layer-group{--fa: ""}.fa-arrows-to-dot{--fa: ""}.fa-archway{--fa: ""}.fa-heart-circle-check{--fa: ""}.fa-house-chimney-crack,.fa-house-damage{--fa: ""}.fa-file-zipper,.fa-file-archive{--fa: ""}.fa-square{--fa: ""}.fa-martini-glass-empty,.fa-glass-martini{--fa: ""}.fa-couch{--fa: ""}.fa-cedi-sign{--fa: ""}.fa-italic{--fa: ""}.fa-table-cells-column-lock{--fa: ""}.fa-church{--fa: ""}.fa-comments-dollar{--fa: ""}.fa-democrat{--fa: ""}.fa-z{--fa: "Z"}.fa-person-skiing,.fa-skiing{--fa: ""}.fa-road-lock{--fa: ""}.fa-a{--fa: "A"}.fa-temperature-arrow-down,.fa-temperature-down{--fa: ""}.fa-feather-pointed,.fa-feather-alt{--fa: ""}.fa-p{--fa: "P"}.fa-snowflake{--fa: ""}.fa-newspaper{--fa: ""}.fa-rectangle-ad,.fa-ad{--fa: ""}.fa-circle-arrow-right,.fa-arrow-circle-right{--fa: ""}.fa-filter-circle-xmark{--fa: ""}.fa-locust{--fa: ""}.fa-sort,.fa-unsorted{--fa: ""}.fa-list-ol,.fa-list-1-2,.fa-list-numeric{--fa: ""}.fa-person-dress-burst{--fa: ""}.fa-money-check-dollar,.fa-money-check-alt{--fa: ""}.fa-vector-square{--fa: ""}.fa-bread-slice{--fa: ""}.fa-language{--fa: ""}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa: ""}.fa-filter{--fa: ""}.fa-question{--fa: "?"}.fa-file-signature{--fa: ""}.fa-up-down-left-right,.fa-arrows-alt{--fa: ""}.fa-house-chimney-user{--fa: ""}.fa-hand-holding-heart{--fa: ""}.fa-puzzle-piece{--fa: ""}.fa-money-check{--fa: ""}.fa-star-half-stroke,.fa-star-half-alt{--fa: ""}.fa-code{--fa: ""}.fa-whiskey-glass,.fa-glass-whiskey{--fa: ""}.fa-building-circle-exclamation{--fa: ""}.fa-magnifying-glass-chart{--fa: ""}.fa-arrow-up-right-from-square,.fa-external-link{--fa: ""}.fa-cubes-stacked{--fa: ""}.fa-won-sign,.fa-krw,.fa-won{--fa: ""}.fa-virus-covid{--fa: ""}.fa-austral-sign{--fa: ""}.fa-f{--fa: "F"}.fa-leaf{--fa: ""}.fa-road{--fa: ""}.fa-taxi,.fa-cab{--fa: ""}.fa-person-circle-plus{--fa: ""}.fa-chart-pie,.fa-pie-chart{--fa: ""}.fa-bolt-lightning{--fa: ""}.fa-sack-xmark{--fa: ""}.fa-file-excel{--fa: ""}.fa-file-contract{--fa: ""}.fa-fish-fins{--fa: ""}.fa-building-flag{--fa: ""}.fa-face-grin-beam,.fa-grin-beam{--fa: ""}.fa-object-ungroup{--fa: ""}.fa-poop{--fa: ""}.fa-location-pin,.fa-map-marker{--fa: ""}.fa-kaaba{--fa: ""}.fa-toilet-paper{--fa: ""}.fa-helmet-safety,.fa-hard-hat,.fa-hat-hard{--fa: ""}.fa-eject{--fa: ""}.fa-circle-right,.fa-arrow-alt-circle-right{--fa: ""}.fa-plane-circle-check{--fa: ""}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa: ""}.fa-object-group{--fa: ""}.fa-chart-line,.fa-line-chart{--fa: ""}.fa-mask-ventilator{--fa: ""}.fa-arrow-right{--fa: ""}.fa-signs-post,.fa-map-signs{--fa: ""}.fa-cash-register{--fa: ""}.fa-person-circle-question{--fa: ""}.fa-h{--fa: "H"}.fa-tarp{--fa: ""}.fa-screwdriver-wrench,.fa-tools{--fa: ""}.fa-arrows-to-eye{--fa: ""}.fa-plug-circle-bolt{--fa: ""}.fa-heart{--fa: ""}.fa-mars-and-venus{--fa: ""}.fa-house-user,.fa-home-user{--fa: ""}.fa-dumpster-fire{--fa: ""}.fa-house-crack{--fa: ""}.fa-martini-glass-citrus,.fa-cocktail{--fa: ""}.fa-face-surprise,.fa-surprise{--fa: ""}.fa-bottle-water{--fa: ""}.fa-circle-pause,.fa-pause-circle{--fa: ""}.fa-toilet-paper-slash{--fa: ""}.fa-apple-whole,.fa-apple-alt{--fa: ""}.fa-kitchen-set{--fa: ""}.fa-r{--fa: "R"}.fa-temperature-quarter,.fa-temperature-1,.fa-thermometer-1,.fa-thermometer-quarter{--fa: ""}.fa-cube{--fa: ""}.fa-bitcoin-sign{--fa: ""}.fa-shield-dog{--fa: ""}.fa-solar-panel{--fa: ""}.fa-lock-open{--fa: ""}.fa-elevator{--fa: ""}.fa-money-bill-transfer{--fa: ""}.fa-money-bill-trend-up{--fa: ""}.fa-house-flood-water-circle-arrow-right{--fa: ""}.fa-square-poll-horizontal,.fa-poll-h{--fa: ""}.fa-circle{--fa: ""}.fa-backward-fast,.fa-fast-backward{--fa: ""}.fa-recycle{--fa: ""}.fa-user-astronaut{--fa: ""}.fa-plane-slash{--fa: ""}.fa-trademark{--fa: ""}.fa-basketball,.fa-basketball-ball{--fa: ""}.fa-satellite-dish{--fa: ""}.fa-circle-up,.fa-arrow-alt-circle-up{--fa: ""}.fa-mobile-screen-button,.fa-mobile-alt{--fa: ""}.fa-volume-high,.fa-volume-up{--fa: ""}.fa-users-rays{--fa: ""}.fa-wallet{--fa: ""}.fa-clipboard-check{--fa: ""}.fa-file-audio{--fa: ""}.fa-burger,.fa-hamburger{--fa: ""}.fa-wrench{--fa: ""}.fa-bugs{--fa: ""}.fa-rupee-sign,.fa-rupee{--fa: ""}.fa-file-image{--fa: ""}.fa-circle-question,.fa-question-circle{--fa: ""}.fa-plane-departure{--fa: ""}.fa-handshake-slash{--fa: ""}.fa-book-bookmark{--fa: ""}.fa-code-branch{--fa: ""}.fa-hat-cowboy{--fa: ""}.fa-bridge{--fa: ""}.fa-phone-flip,.fa-phone-alt{--fa: ""}.fa-truck-front{--fa: ""}.fa-cat{--fa: ""}.fa-anchor-circle-exclamation{--fa: ""}.fa-truck-field{--fa: ""}.fa-route{--fa: ""}.fa-clipboard-question{--fa: ""}.fa-panorama{--fa: ""}.fa-comment-medical{--fa: ""}.fa-teeth-open{--fa: ""}.fa-file-circle-minus{--fa: ""}.fa-tags{--fa: ""}.fa-wine-glass{--fa: ""}.fa-forward-fast,.fa-fast-forward{--fa: ""}.fa-face-meh-blank,.fa-meh-blank{--fa: ""}.fa-square-parking,.fa-parking{--fa: ""}.fa-house-signal{--fa: ""}.fa-bars-progress,.fa-tasks-alt{--fa: ""}.fa-faucet-drip{--fa: ""}.fa-cart-flatbed,.fa-dolly-flatbed{--fa: ""}.fa-ban-smoking,.fa-smoking-ban{--fa: ""}.fa-terminal{--fa: ""}.fa-mobile-button{--fa: ""}.fa-house-medical-flag{--fa: ""}.fa-basket-shopping,.fa-shopping-basket{--fa: ""}.fa-tape{--fa: ""}.fa-bus-simple,.fa-bus-alt{--fa: ""}.fa-eye{--fa: ""}.fa-face-sad-cry,.fa-sad-cry{--fa: ""}.fa-audio-description{--fa: ""}.fa-person-military-to-person{--fa: ""}.fa-file-shield{--fa: ""}.fa-user-slash{--fa: ""}.fa-pen{--fa: ""}.fa-tower-observation{--fa: ""}.fa-file-code{--fa: ""}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa: ""}.fa-bus{--fa: ""}.fa-heart-circle-xmark{--fa: ""}.fa-house-chimney,.fa-home-lg{--fa: ""}.fa-window-maximize{--fa: ""}.fa-face-frown,.fa-frown{--fa: ""}.fa-prescription{--fa: ""}.fa-shop,.fa-store-alt{--fa: ""}.fa-floppy-disk,.fa-save{--fa: ""}.fa-vihara{--fa: ""}.fa-scale-unbalanced,.fa-balance-scale-left{--fa: ""}.fa-sort-up,.fa-sort-asc{--fa: ""}.fa-comment-dots,.fa-commenting{--fa: ""}.fa-plant-wilt{--fa: ""}.fa-diamond{--fa: ""}.fa-face-grin-squint,.fa-grin-squint{--fa: ""}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa: ""}.fa-chart-diagram{--fa: ""}.fa-bacterium{--fa: ""}.fa-hand-pointer{--fa: ""}.fa-drum-steelpan{--fa: ""}.fa-hand-scissors{--fa: ""}.fa-hands-praying,.fa-praying-hands{--fa: ""}.fa-arrow-rotate-right,.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-redo{--fa: ""}.fa-biohazard{--fa: ""}.fa-location-crosshairs,.fa-location{--fa: ""}.fa-mars-double{--fa: ""}.fa-child-dress{--fa: ""}.fa-users-between-lines{--fa: ""}.fa-lungs-virus{--fa: ""}.fa-face-grin-tears,.fa-grin-tears{--fa: ""}.fa-phone{--fa: ""}.fa-calendar-xmark,.fa-calendar-times{--fa: ""}.fa-child-reaching{--fa: ""}.fa-head-side-virus{--fa: ""}.fa-user-gear,.fa-user-cog{--fa: ""}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa: ""}.fa-door-closed{--fa: ""}.fa-shield-virus{--fa: ""}.fa-dice-six{--fa: ""}.fa-mosquito-net{--fa: ""}.fa-file-fragment{--fa: ""}.fa-bridge-water{--fa: ""}.fa-person-booth{--fa: ""}.fa-text-width{--fa: ""}.fa-hat-wizard{--fa: ""}.fa-pen-fancy{--fa: ""}.fa-person-digging,.fa-digging{--fa: ""}.fa-trash{--fa: ""}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa: ""}.fa-book-medical{--fa: ""}.fa-poo{--fa: ""}.fa-quote-right,.fa-quote-right-alt{--fa: ""}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa: ""}.fa-cubes{--fa: ""}.fa-divide{--fa: ""}.fa-tenge-sign,.fa-tenge{--fa: ""}.fa-headphones{--fa: ""}.fa-hands-holding{--fa: ""}.fa-hands-clapping{--fa: ""}.fa-republican{--fa: ""}.fa-arrow-left{--fa: ""}.fa-person-circle-xmark{--fa: ""}.fa-ruler{--fa: ""}.fa-align-left{--fa: ""}.fa-dice-d6{--fa: ""}.fa-restroom{--fa: ""}.fa-j{--fa: "J"}.fa-users-viewfinder{--fa: ""}.fa-file-video{--fa: ""}.fa-up-right-from-square,.fa-external-link-alt{--fa: ""}.fa-table-cells,.fa-th{--fa: ""}.fa-file-pdf{--fa: ""}.fa-book-bible,.fa-bible{--fa: ""}.fa-o{--fa: "O"}.fa-suitcase-medical,.fa-medkit{--fa: ""}.fa-user-secret{--fa: ""}.fa-otter{--fa: ""}.fa-person-dress,.fa-female{--fa: ""}.fa-comment-dollar{--fa: ""}.fa-business-time,.fa-briefcase-clock{--fa: ""}.fa-table-cells-large,.fa-th-large{--fa: ""}.fa-book-tanakh,.fa-tanakh{--fa: ""}.fa-phone-volume,.fa-volume-control-phone{--fa: ""}.fa-hat-cowboy-side{--fa: ""}.fa-clipboard-user{--fa: ""}.fa-child{--fa: ""}.fa-lira-sign{--fa: ""}.fa-satellite{--fa: ""}.fa-plane-lock{--fa: ""}.fa-tag{--fa: ""}.fa-comment{--fa: ""}.fa-cake-candles,.fa-birthday-cake,.fa-cake{--fa: ""}.fa-envelope{--fa: ""}.fa-angles-up,.fa-angle-double-up{--fa: ""}.fa-paperclip{--fa: ""}.fa-arrow-right-to-city{--fa: ""}.fa-ribbon{--fa: ""}.fa-lungs{--fa: ""}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa: ""}.fa-litecoin-sign{--fa: ""}.fa-border-none{--fa: ""}.fa-circle-nodes{--fa: ""}.fa-parachute-box{--fa: ""}.fa-indent{--fa: ""}.fa-truck-field-un{--fa: ""}.fa-hourglass,.fa-hourglass-empty{--fa: ""}.fa-mountain{--fa: ""}.fa-user-doctor,.fa-user-md{--fa: ""}.fa-circle-info,.fa-info-circle{--fa: ""}.fa-cloud-meatball{--fa: ""}.fa-camera,.fa-camera-alt{--fa: ""}.fa-square-virus{--fa: ""}.fa-meteor{--fa: ""}.fa-car-on{--fa: ""}.fa-sleigh{--fa: ""}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa: ""}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa: ""}.fa-water{--fa: ""}.fa-calendar-check{--fa: ""}.fa-braille{--fa: ""}.fa-prescription-bottle-medical,.fa-prescription-bottle-alt{--fa: ""}.fa-landmark{--fa: ""}.fa-truck{--fa: ""}.fa-crosshairs{--fa: ""}.fa-person-cane{--fa: ""}.fa-tent{--fa: ""}.fa-vest-patches{--fa: ""}.fa-check-double{--fa: ""}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa: ""}.fa-money-bill-wheat{--fa: ""}.fa-cookie{--fa: ""}.fa-arrow-rotate-left,.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-undo{--fa: ""}.fa-hard-drive,.fa-hdd{--fa: ""}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa: ""}.fa-dumbbell{--fa: ""}.fa-rectangle-list,.fa-list-alt{--fa: ""}.fa-tarp-droplet{--fa: ""}.fa-house-medical-circle-check{--fa: ""}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa: ""}.fa-calendar-plus{--fa: ""}.fa-plane-arrival{--fa: ""}.fa-circle-left,.fa-arrow-alt-circle-left{--fa: ""}.fa-train-subway,.fa-subway{--fa: ""}.fa-chart-gantt{--fa: ""}.fa-indian-rupee-sign,.fa-indian-rupee,.fa-inr{--fa: ""}.fa-crop-simple,.fa-crop-alt{--fa: ""}.fa-money-bill-1,.fa-money-bill-alt{--fa: ""}.fa-left-long,.fa-long-arrow-alt-left{--fa: ""}.fa-dna{--fa: ""}.fa-virus-slash{--fa: ""}.fa-minus,.fa-subtract{--fa: ""}.fa-chess{--fa: ""}.fa-arrow-left-long,.fa-long-arrow-left{--fa: ""}.fa-plug-circle-check{--fa: ""}.fa-street-view{--fa: ""}.fa-franc-sign{--fa: ""}.fa-volume-off{--fa: ""}.fa-hands-asl-interpreting,.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting{--fa: ""}.fa-gear,.fa-cog{--fa: ""}.fa-droplet-slash,.fa-tint-slash{--fa: ""}.fa-mosque{--fa: ""}.fa-mosquito{--fa: ""}.fa-star-of-david{--fa: ""}.fa-person-military-rifle{--fa: ""}.fa-cart-shopping,.fa-shopping-cart{--fa: ""}.fa-vials{--fa: ""}.fa-plug-circle-plus{--fa: ""}.fa-place-of-worship{--fa: ""}.fa-grip-vertical{--fa: ""}.fa-hexagon-nodes{--fa: ""}.fa-arrow-turn-up,.fa-level-up{--fa: ""}.fa-u{--fa: "U"}.fa-square-root-variable,.fa-square-root-alt{--fa: ""}.fa-clock,.fa-clock-four{--fa: ""}.fa-backward-step,.fa-step-backward{--fa: ""}.fa-pallet{--fa: ""}.fa-faucet{--fa: ""}.fa-baseball-bat-ball{--fa: ""}.fa-s{--fa: "S"}.fa-timeline{--fa: ""}.fa-keyboard{--fa: ""}.fa-caret-down{--fa: ""}.fa-house-chimney-medical,.fa-clinic-medical{--fa: ""}.fa-temperature-three-quarters,.fa-temperature-3,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa: ""}.fa-mobile-screen,.fa-mobile-android-alt{--fa: ""}.fa-plane-up{--fa: ""}.fa-piggy-bank{--fa: ""}.fa-battery-half,.fa-battery-3{--fa: ""}.fa-mountain-city{--fa: ""}.fa-coins{--fa: ""}.fa-khanda{--fa: ""}.fa-sliders,.fa-sliders-h{--fa: ""}.fa-folder-tree{--fa: ""}.fa-network-wired{--fa: ""}.fa-map-pin{--fa: ""}.fa-hamsa{--fa: ""}.fa-cent-sign{--fa: ""}.fa-flask{--fa: ""}.fa-person-pregnant{--fa: ""}.fa-wand-sparkles{--fa: ""}.fa-ellipsis-vertical,.fa-ellipsis-v{--fa: ""}.fa-ticket{--fa: ""}.fa-power-off{--fa: ""}.fa-right-long,.fa-long-arrow-alt-right{--fa: ""}.fa-flag-usa{--fa: ""}.fa-laptop-file{--fa: ""}.fa-tty,.fa-teletype{--fa: ""}.fa-diagram-next{--fa: ""}.fa-person-rifle{--fa: ""}.fa-house-medical-circle-exclamation{--fa: ""}.fa-closed-captioning{--fa: ""}.fa-person-hiking,.fa-hiking{--fa: ""}.fa-venus-double{--fa: ""}.fa-images{--fa: ""}.fa-calculator{--fa: ""}.fa-people-pulling{--fa: ""}.fa-n{--fa: "N"}.fa-cable-car,.fa-tram{--fa: ""}.fa-cloud-rain{--fa: ""}.fa-building-circle-xmark{--fa: ""}.fa-ship{--fa: ""}.fa-arrows-down-to-line{--fa: ""}.fa-download{--fa: ""}.fa-face-grin,.fa-grin{--fa: ""}.fa-delete-left,.fa-backspace{--fa: ""}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa: ""}.fa-file-circle-check{--fa: ""}.fa-forward{--fa: ""}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa: ""}.fa-face-meh,.fa-meh{--fa: ""}.fa-align-center{--fa: ""}.fa-book-skull,.fa-book-dead{--fa: ""}.fa-id-card,.fa-drivers-license{--fa: ""}.fa-outdent,.fa-dedent{--fa: ""}.fa-heart-circle-exclamation{--fa: ""}.fa-house,.fa-home,.fa-home-alt,.fa-home-lg-alt{--fa: ""}.fa-calendar-week{--fa: ""}.fa-laptop-medical{--fa: ""}.fa-b{--fa: "B"}.fa-file-medical{--fa: ""}.fa-dice-one{--fa: ""}.fa-kiwi-bird{--fa: ""}.fa-arrow-right-arrow-left,.fa-exchange{--fa: ""}.fa-rotate-right,.fa-redo-alt,.fa-rotate-forward{--fa: ""}.fa-utensils,.fa-cutlery{--fa: ""}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa: ""}.fa-mill-sign{--fa: ""}.fa-bowl-rice{--fa: ""}.fa-skull{--fa: ""}.fa-tower-broadcast,.fa-broadcast-tower{--fa: ""}.fa-truck-pickup{--fa: ""}.fa-up-long,.fa-long-arrow-alt-up{--fa: ""}.fa-stop{--fa: ""}.fa-code-merge{--fa: ""}.fa-upload{--fa: ""}.fa-hurricane{--fa: ""}.fa-mound{--fa: ""}.fa-toilet-portable{--fa: ""}.fa-compact-disc{--fa: ""}.fa-file-arrow-down,.fa-file-download{--fa: ""}.fa-caravan{--fa: ""}.fa-shield-cat{--fa: ""}.fa-bolt,.fa-zap{--fa: ""}.fa-glass-water{--fa: ""}.fa-oil-well{--fa: ""}.fa-vault{--fa: ""}.fa-mars{--fa: ""}.fa-toilet{--fa: ""}.fa-plane-circle-xmark{--fa: ""}.fa-yen-sign,.fa-cny,.fa-jpy,.fa-rmb,.fa-yen{--fa: ""}.fa-ruble-sign,.fa-rouble,.fa-rub,.fa-ruble{--fa: ""}.fa-sun{--fa: ""}.fa-guitar{--fa: ""}.fa-face-laugh-wink,.fa-laugh-wink{--fa: ""}.fa-horse-head{--fa: ""}.fa-bore-hole{--fa: ""}.fa-industry{--fa: ""}.fa-circle-down,.fa-arrow-alt-circle-down{--fa: ""}.fa-arrows-turn-to-dots{--fa: ""}.fa-florin-sign{--fa: ""}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa: ""}.fa-less-than{--fa: "<"}.fa-angle-down{--fa: ""}.fa-car-tunnel{--fa: ""}.fa-head-side-cough{--fa: ""}.fa-grip-lines{--fa: ""}.fa-thumbs-down{--fa: ""}.fa-user-lock{--fa: ""}.fa-arrow-right-long,.fa-long-arrow-right{--fa: ""}.fa-anchor-circle-xmark{--fa: ""}.fa-ellipsis,.fa-ellipsis-h{--fa: ""}.fa-chess-pawn{--fa: ""}.fa-kit-medical,.fa-first-aid{--fa: ""}.fa-person-through-window{--fa: ""}.fa-toolbox{--fa: ""}.fa-hands-holding-circle{--fa: ""}.fa-bug{--fa: ""}.fa-credit-card,.fa-credit-card-alt{--fa: ""}.fa-car,.fa-automobile{--fa: ""}.fa-hand-holding-hand{--fa: ""}.fa-book-open-reader,.fa-book-reader{--fa: ""}.fa-mountain-sun{--fa: ""}.fa-arrows-left-right-to-line{--fa: ""}.fa-dice-d20{--fa: ""}.fa-truck-droplet{--fa: ""}.fa-file-circle-xmark{--fa: ""}.fa-temperature-arrow-up,.fa-temperature-up{--fa: ""}.fa-medal{--fa: ""}.fa-bed{--fa: ""}.fa-square-h,.fa-h-square{--fa: ""}.fa-podcast{--fa: ""}.fa-temperature-full,.fa-temperature-4,.fa-thermometer-4,.fa-thermometer-full{--fa: ""}.fa-bell{--fa: ""}.fa-superscript{--fa: ""}.fa-plug-circle-xmark{--fa: ""}.fa-star-of-life{--fa: ""}.fa-phone-slash{--fa: ""}.fa-paint-roller{--fa: ""}.fa-handshake-angle,.fa-hands-helping{--fa: ""}.fa-location-dot,.fa-map-marker-alt{--fa: ""}.fa-file{--fa: ""}.fa-greater-than{--fa: ">"}.fa-person-swimming,.fa-swimmer{--fa: ""}.fa-arrow-down{--fa: ""}.fa-droplet,.fa-tint{--fa: ""}.fa-eraser{--fa: ""}.fa-earth-americas,.fa-earth,.fa-earth-america,.fa-globe-americas{--fa: ""}.fa-person-burst{--fa: ""}.fa-dove{--fa: ""}.fa-battery-empty,.fa-battery-0{--fa: ""}.fa-socks{--fa: ""}.fa-inbox{--fa: ""}.fa-section{--fa: ""}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa: ""}.fa-envelope-open-text{--fa: ""}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa: ""}.fa-wine-bottle{--fa: ""}.fa-chess-rook{--fa: ""}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa: ""}.fa-dharmachakra{--fa: ""}.fa-hotdog{--fa: ""}.fa-person-walking-with-cane,.fa-blind{--fa: ""}.fa-drum{--fa: ""}.fa-ice-cream{--fa: ""}.fa-heart-circle-bolt{--fa: ""}.fa-fax{--fa: ""}.fa-paragraph{--fa: ""}.fa-check-to-slot,.fa-vote-yea{--fa: ""}.fa-star-half{--fa: ""}.fa-boxes-stacked,.fa-boxes,.fa-boxes-alt{--fa: ""}.fa-link,.fa-chain{--fa: ""}.fa-ear-listen,.fa-assistive-listening-systems{--fa: ""}.fa-tree-city{--fa: ""}.fa-play{--fa: ""}.fa-font{--fa: ""}.fa-table-cells-row-lock{--fa: ""}.fa-rupiah-sign{--fa: ""}.fa-magnifying-glass,.fa-search{--fa: ""}.fa-table-tennis-paddle-ball,.fa-ping-pong-paddle-ball,.fa-table-tennis{--fa: ""}.fa-person-dots-from-line,.fa-diagnoses{--fa: ""}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa: ""}.fa-naira-sign{--fa: ""}.fa-cart-arrow-down{--fa: ""}.fa-walkie-talkie{--fa: ""}.fa-file-pen,.fa-file-edit{--fa: ""}.fa-receipt{--fa: ""}.fa-square-pen,.fa-pen-square,.fa-pencil-square{--fa: ""}.fa-suitcase-rolling{--fa: ""}.fa-person-circle-exclamation{--fa: ""}.fa-chevron-down{--fa: ""}.fa-battery-full,.fa-battery,.fa-battery-5{--fa: ""}.fa-skull-crossbones{--fa: ""}.fa-code-compare{--fa: ""}.fa-list-ul,.fa-list-dots{--fa: ""}.fa-school-lock{--fa: ""}.fa-tower-cell{--fa: ""}.fa-down-long,.fa-long-arrow-alt-down{--fa: ""}.fa-ranking-star{--fa: ""}.fa-chess-king{--fa: ""}.fa-person-harassing{--fa: ""}.fa-brazilian-real-sign{--fa: ""}.fa-landmark-dome,.fa-landmark-alt{--fa: ""}.fa-arrow-up{--fa: ""}.fa-tv,.fa-television,.fa-tv-alt{--fa: ""}.fa-shrimp{--fa: ""}.fa-list-check,.fa-tasks{--fa: ""}.fa-jug-detergent{--fa: ""}.fa-circle-user,.fa-user-circle{--fa: ""}.fa-user-shield{--fa: ""}.fa-wind{--fa: ""}.fa-car-burst,.fa-car-crash{--fa: ""}.fa-y{--fa: "Y"}.fa-person-snowboarding,.fa-snowboarding{--fa: ""}.fa-truck-fast,.fa-shipping-fast{--fa: ""}.fa-fish{--fa: ""}.fa-user-graduate{--fa: ""}.fa-circle-half-stroke,.fa-adjust{--fa: ""}.fa-clapperboard{--fa: ""}.fa-circle-radiation,.fa-radiation-alt{--fa: ""}.fa-baseball,.fa-baseball-ball{--fa: ""}.fa-jet-fighter-up{--fa: ""}.fa-diagram-project,.fa-project-diagram{--fa: ""}.fa-copy{--fa: ""}.fa-volume-xmark,.fa-volume-mute,.fa-volume-times{--fa: ""}.fa-hand-sparkles{--fa: ""}.fa-grip,.fa-grip-horizontal{--fa: ""}.fa-share-from-square,.fa-share-square{--fa: ""}.fa-child-combatant,.fa-child-rifle{--fa: ""}.fa-gun{--fa: ""}.fa-square-phone,.fa-phone-square{--fa: ""}.fa-plus,.fa-add{--fa: "+"}.fa-expand{--fa: ""}.fa-computer{--fa: ""}.fa-xmark,.fa-close,.fa-multiply,.fa-remove,.fa-times{--fa: ""}.fa-arrows-up-down-left-right,.fa-arrows{--fa: ""}.fa-chalkboard-user,.fa-chalkboard-teacher{--fa: ""}.fa-peso-sign{--fa: ""}.fa-building-shield{--fa: ""}.fa-baby{--fa: ""}.fa-users-line{--fa: ""}.fa-quote-left,.fa-quote-left-alt{--fa: ""}.fa-tractor{--fa: ""}.fa-trash-arrow-up,.fa-trash-restore{--fa: ""}.fa-arrow-down-up-lock{--fa: ""}.fa-lines-leaning{--fa: ""}.fa-ruler-combined{--fa: ""}.fa-copyright{--fa: ""}.fa-equals{--fa: "="}.fa-blender{--fa: ""}.fa-teeth{--fa: ""}.fa-shekel-sign,.fa-ils,.fa-shekel,.fa-sheqel,.fa-sheqel-sign{--fa: ""}.fa-map{--fa: ""}.fa-rocket{--fa: ""}.fa-photo-film,.fa-photo-video{--fa: ""}.fa-folder-minus{--fa: ""}.fa-hexagon-nodes-bolt{--fa: ""}.fa-store{--fa: ""}.fa-arrow-trend-up{--fa: ""}.fa-plug-circle-minus{--fa: ""}.fa-sign-hanging,.fa-sign{--fa: ""}.fa-bezier-curve{--fa: ""}.fa-bell-slash{--fa: ""}.fa-tablet,.fa-tablet-android{--fa: ""}.fa-school-flag{--fa: ""}.fa-fill{--fa: ""}.fa-angle-up{--fa: ""}.fa-drumstick-bite{--fa: ""}.fa-holly-berry{--fa: ""}.fa-chevron-left{--fa: ""}.fa-bacteria{--fa: ""}.fa-hand-lizard{--fa: ""}.fa-notdef{--fa: ""}.fa-disease{--fa: ""}.fa-briefcase-medical{--fa: ""}.fa-genderless{--fa: ""}.fa-chevron-right{--fa: ""}.fa-retweet{--fa: ""}.fa-car-rear,.fa-car-alt{--fa: ""}.fa-pump-soap{--fa: ""}.fa-video-slash{--fa: ""}.fa-battery-quarter,.fa-battery-2{--fa: ""}.fa-radio{--fa: ""}.fa-baby-carriage,.fa-carriage-baby{--fa: ""}.fa-traffic-light{--fa: ""}.fa-thermometer{--fa: ""}.fa-vr-cardboard{--fa: ""}.fa-hand-middle-finger{--fa: ""}.fa-percent,.fa-percentage{--fa: "%"}.fa-truck-moving{--fa: ""}.fa-glass-water-droplet{--fa: ""}.fa-display{--fa: ""}.fa-face-smile,.fa-smile{--fa: ""}.fa-thumbtack,.fa-thumb-tack{--fa: ""}.fa-trophy{--fa: ""}.fa-person-praying,.fa-pray{--fa: ""}.fa-hammer{--fa: ""}.fa-hand-peace{--fa: ""}.fa-rotate,.fa-sync-alt{--fa: ""}.fa-spinner{--fa: ""}.fa-robot{--fa: ""}.fa-peace{--fa: ""}.fa-gears,.fa-cogs{--fa: ""}.fa-warehouse{--fa: ""}.fa-arrow-up-right-dots{--fa: ""}.fa-splotch{--fa: ""}.fa-face-grin-hearts,.fa-grin-hearts{--fa: ""}.fa-dice-four{--fa: ""}.fa-sim-card{--fa: ""}.fa-transgender,.fa-transgender-alt{--fa: ""}.fa-mercury{--fa: ""}.fa-arrow-turn-down,.fa-level-down{--fa: ""}.fa-person-falling-burst{--fa: ""}.fa-award{--fa: ""}.fa-ticket-simple,.fa-ticket-alt{--fa: ""}.fa-building{--fa: ""}.fa-angles-left,.fa-angle-double-left{--fa: ""}.fa-qrcode{--fa: ""}.fa-clock-rotate-left,.fa-history{--fa: ""}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa: ""}.fa-file-export,.fa-arrow-right-from-file{--fa: ""}.fa-shield,.fa-shield-blank{--fa: ""}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa: ""}.fa-comment-nodes{--fa: ""}.fa-house-medical{--fa: ""}.fa-golf-ball-tee,.fa-golf-ball{--fa: ""}.fa-circle-chevron-left,.fa-chevron-circle-left{--fa: ""}.fa-house-chimney-window{--fa: ""}.fa-pen-nib{--fa: ""}.fa-tent-arrow-turn-left{--fa: ""}.fa-tents{--fa: ""}.fa-wand-magic,.fa-magic{--fa: ""}.fa-dog{--fa: ""}.fa-carrot{--fa: ""}.fa-moon{--fa: ""}.fa-wine-glass-empty,.fa-wine-glass-alt{--fa: ""}.fa-cheese{--fa: ""}.fa-yin-yang{--fa: ""}.fa-music{--fa: ""}.fa-code-commit{--fa: ""}.fa-temperature-low{--fa: ""}.fa-person-biking,.fa-biking{--fa: ""}.fa-broom{--fa: ""}.fa-shield-heart{--fa: ""}.fa-gopuram{--fa: ""}.fa-earth-oceania,.fa-globe-oceania{--fa: ""}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa: ""}.fa-hashtag{--fa: "#"}.fa-up-right-and-down-left-from-center,.fa-expand-alt{--fa: ""}.fa-oil-can{--fa: ""}.fa-t{--fa: "T"}.fa-hippo{--fa: ""}.fa-chart-column{--fa: ""}.fa-infinity{--fa: ""}.fa-vial-circle-check{--fa: ""}.fa-person-arrow-down-to-line{--fa: ""}.fa-voicemail{--fa: ""}.fa-fan{--fa: ""}.fa-person-walking-luggage{--fa: ""}.fa-up-down,.fa-arrows-alt-v{--fa: ""}.fa-cloud-moon-rain{--fa: ""}.fa-calendar{--fa: ""}.fa-trailer{--fa: ""}.fa-bahai,.fa-haykal{--fa: ""}.fa-sd-card{--fa: ""}.fa-dragon{--fa: ""}.fa-shoe-prints{--fa: ""}.fa-circle-plus,.fa-plus-circle{--fa: ""}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa: ""}.fa-hand-holding{--fa: ""}.fa-plug-circle-exclamation{--fa: ""}.fa-link-slash,.fa-chain-broken,.fa-chain-slash,.fa-unlink{--fa: ""}.fa-clone{--fa: ""}.fa-person-walking-arrow-loop-left{--fa: ""}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa: ""}.fa-fire-flame-curved,.fa-fire-alt{--fa: ""}.fa-tornado{--fa: ""}.fa-file-circle-plus{--fa: ""}.fa-book-quran,.fa-quran{--fa: ""}.fa-anchor{--fa: ""}.fa-border-all{--fa: ""}.fa-face-angry,.fa-angry{--fa: ""}.fa-cookie-bite{--fa: ""}.fa-arrow-trend-down{--fa: ""}.fa-rss,.fa-feed{--fa: ""}.fa-draw-polygon{--fa: ""}.fa-scale-balanced,.fa-balance-scale{--fa: ""}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa: ""}.fa-shower{--fa: ""}.fa-desktop,.fa-desktop-alt{--fa: ""}.fa-m{--fa: "M"}.fa-table-list,.fa-th-list{--fa: ""}.fa-comment-sms,.fa-sms{--fa: ""}.fa-book{--fa: ""}.fa-user-plus{--fa: ""}.fa-check{--fa: ""}.fa-battery-three-quarters,.fa-battery-4{--fa: ""}.fa-house-circle-check{--fa: ""}.fa-angle-left{--fa: ""}.fa-diagram-successor{--fa: ""}.fa-truck-arrow-right{--fa: ""}.fa-arrows-split-up-and-left{--fa: ""}.fa-hand-fist,.fa-fist-raised{--fa: ""}.fa-cloud-moon{--fa: ""}.fa-briefcase{--fa: ""}.fa-person-falling{--fa: ""}.fa-image-portrait,.fa-portrait{--fa: ""}.fa-user-tag{--fa: ""}.fa-rug{--fa: ""}.fa-earth-europe,.fa-globe-europe{--fa: ""}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa: ""}.fa-rectangle-xmark,.fa-rectangle-times,.fa-times-rectangle,.fa-window-close{--fa: ""}.fa-baht-sign{--fa: ""}.fa-book-open{--fa: ""}.fa-book-journal-whills,.fa-journal-whills{--fa: ""}.fa-handcuffs{--fa: ""}.fa-triangle-exclamation,.fa-exclamation-triangle,.fa-warning{--fa: ""}.fa-database{--fa: ""}.fa-share,.fa-mail-forward{--fa: ""}.fa-bottle-droplet{--fa: ""}.fa-mask-face{--fa: ""}.fa-hill-rockslide{--fa: ""}.fa-right-left,.fa-exchange-alt{--fa: ""}.fa-paper-plane{--fa: ""}.fa-road-circle-exclamation{--fa: ""}.fa-dungeon{--fa: ""}.fa-align-right{--fa: ""}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa: ""}.fa-life-ring{--fa: ""}.fa-hands,.fa-sign-language,.fa-signing{--fa: ""}.fa-calendar-day{--fa: ""}.fa-water-ladder,.fa-ladder-water,.fa-swimming-pool{--fa: ""}.fa-arrows-up-down,.fa-arrows-v{--fa: ""}.fa-face-grimace,.fa-grimace{--fa: ""}.fa-wheelchair-move,.fa-wheelchair-alt{--fa: ""}.fa-turn-down,.fa-level-down-alt{--fa: ""}.fa-person-walking-arrow-right{--fa: ""}.fa-square-envelope,.fa-envelope-square{--fa: ""}.fa-dice{--fa: ""}.fa-bowling-ball{--fa: ""}.fa-brain{--fa: ""}.fa-bandage,.fa-band-aid{--fa: ""}.fa-calendar-minus{--fa: ""}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa: ""}.fa-gifts{--fa: ""}.fa-hotel{--fa: ""}.fa-earth-asia,.fa-globe-asia{--fa: ""}.fa-id-card-clip,.fa-id-card-alt{--fa: ""}.fa-magnifying-glass-plus,.fa-search-plus{--fa: ""}.fa-thumbs-up{--fa: ""}.fa-user-clock{--fa: ""}.fa-hand-dots,.fa-allergies{--fa: ""}.fa-file-invoice{--fa: ""}.fa-window-minimize{--fa: ""}.fa-mug-saucer,.fa-coffee{--fa: ""}.fa-brush{--fa: ""}.fa-file-half-dashed{--fa: ""}.fa-mask{--fa: ""}.fa-magnifying-glass-minus,.fa-search-minus{--fa: ""}.fa-ruler-vertical{--fa: ""}.fa-user-large,.fa-user-alt{--fa: ""}.fa-train-tram{--fa: ""}.fa-user-nurse{--fa: ""}.fa-syringe{--fa: ""}.fa-cloud-sun{--fa: ""}.fa-stopwatch-20{--fa: ""}.fa-square-full{--fa: ""}.fa-magnet{--fa: ""}.fa-jar{--fa: ""}.fa-note-sticky,.fa-sticky-note{--fa: ""}.fa-bug-slash{--fa: ""}.fa-arrow-up-from-water-pump{--fa: ""}.fa-bone{--fa: ""}.fa-table-cells-row-unlock{--fa: ""}.fa-user-injured{--fa: ""}.fa-face-sad-tear,.fa-sad-tear{--fa: ""}.fa-plane{--fa: ""}.fa-tent-arrows-down{--fa: ""}.fa-exclamation{--fa: "!"}.fa-arrows-spin{--fa: ""}.fa-print{--fa: ""}.fa-turkish-lira-sign,.fa-try,.fa-turkish-lira{--fa: ""}.fa-dollar-sign,.fa-dollar,.fa-usd{--fa: "$"}.fa-x{--fa: "X"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa: ""}.fa-users-gear,.fa-users-cog{--fa: ""}.fa-person-military-pointing{--fa: ""}.fa-building-columns,.fa-bank,.fa-institution,.fa-museum,.fa-university{--fa: ""}.fa-umbrella{--fa: ""}.fa-trowel{--fa: ""}.fa-d{--fa: "D"}.fa-stapler{--fa: ""}.fa-masks-theater,.fa-theater-masks{--fa: ""}.fa-kip-sign{--fa: ""}.fa-hand-point-left{--fa: ""}.fa-handshake-simple,.fa-handshake-alt{--fa: ""}.fa-jet-fighter,.fa-fighter-jet{--fa: ""}.fa-square-share-nodes,.fa-share-alt-square{--fa: ""}.fa-barcode{--fa: ""}.fa-plus-minus{--fa: ""}.fa-video,.fa-video-camera{--fa: ""}.fa-graduation-cap,.fa-mortar-board{--fa: ""}.fa-hand-holding-medical{--fa: ""}.fa-person-circle-check{--fa: ""}.fa-turn-up,.fa-level-up-alt{--fa: ""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:root,:host{--fa-style-family-brands: "Font Awesome 6 Brands";--fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}.fab,.fa-brands{font-weight:400}.fa-monero{--fa: ""}.fa-hooli{--fa: ""}.fa-yelp{--fa: ""}.fa-cc-visa{--fa: ""}.fa-lastfm{--fa: ""}.fa-shopware{--fa: ""}.fa-creative-commons-nc{--fa: ""}.fa-aws{--fa: ""}.fa-redhat{--fa: ""}.fa-yoast{--fa: ""}.fa-cloudflare{--fa: ""}.fa-ups{--fa: ""}.fa-pixiv{--fa: ""}.fa-wpexplorer{--fa: ""}.fa-dyalog{--fa: ""}.fa-bity{--fa: ""}.fa-stackpath{--fa: ""}.fa-buysellads{--fa: ""}.fa-first-order{--fa: ""}.fa-modx{--fa: ""}.fa-guilded{--fa: ""}.fa-vnv{--fa: ""}.fa-square-js,.fa-js-square{--fa: ""}.fa-microsoft{--fa: ""}.fa-qq{--fa: ""}.fa-orcid{--fa: ""}.fa-java{--fa: ""}.fa-invision{--fa: ""}.fa-creative-commons-pd-alt{--fa: ""}.fa-centercode{--fa: ""}.fa-glide-g{--fa: ""}.fa-drupal{--fa: ""}.fa-jxl{--fa: ""}.fa-dart-lang{--fa: ""}.fa-hire-a-helper{--fa: ""}.fa-creative-commons-by{--fa: ""}.fa-unity{--fa: ""}.fa-whmcs{--fa: ""}.fa-rocketchat{--fa: ""}.fa-vk{--fa: ""}.fa-untappd{--fa: ""}.fa-mailchimp{--fa: ""}.fa-css3-alt{--fa: ""}.fa-square-reddit,.fa-reddit-square{--fa: ""}.fa-vimeo-v{--fa: ""}.fa-contao{--fa: ""}.fa-square-font-awesome{--fa: ""}.fa-deskpro{--fa: ""}.fa-brave{--fa: ""}.fa-sistrix{--fa: ""}.fa-square-instagram,.fa-instagram-square{--fa: ""}.fa-battle-net{--fa: ""}.fa-the-red-yeti{--fa: ""}.fa-square-hacker-news,.fa-hacker-news-square{--fa: ""}.fa-edge{--fa: ""}.fa-threads{--fa: ""}.fa-napster{--fa: ""}.fa-square-snapchat,.fa-snapchat-square{--fa: ""}.fa-google-plus-g{--fa: ""}.fa-artstation{--fa: ""}.fa-markdown{--fa: ""}.fa-sourcetree{--fa: ""}.fa-google-plus{--fa: ""}.fa-diaspora{--fa: ""}.fa-foursquare{--fa: ""}.fa-stack-overflow{--fa: ""}.fa-github-alt{--fa: ""}.fa-phoenix-squadron{--fa: ""}.fa-pagelines{--fa: ""}.fa-algolia{--fa: ""}.fa-red-river{--fa: ""}.fa-creative-commons-sa{--fa: ""}.fa-safari{--fa: ""}.fa-google{--fa: ""}.fa-square-font-awesome-stroke,.fa-font-awesome-alt{--fa: ""}.fa-atlassian{--fa: ""}.fa-linkedin-in{--fa: ""}.fa-digital-ocean{--fa: ""}.fa-nimblr{--fa: ""}.fa-chromecast{--fa: ""}.fa-evernote{--fa: ""}.fa-hacker-news{--fa: ""}.fa-creative-commons-sampling{--fa: ""}.fa-adversal{--fa: ""}.fa-creative-commons{--fa: ""}.fa-watchman-monitoring{--fa: ""}.fa-fonticons{--fa: ""}.fa-weixin{--fa: ""}.fa-shirtsinbulk{--fa: ""}.fa-codepen{--fa: ""}.fa-git-alt{--fa: ""}.fa-lyft{--fa: ""}.fa-rev{--fa: ""}.fa-windows{--fa: ""}.fa-wizards-of-the-coast{--fa: ""}.fa-square-viadeo,.fa-viadeo-square{--fa: ""}.fa-meetup{--fa: ""}.fa-centos{--fa: ""}.fa-adn{--fa: ""}.fa-cloudsmith{--fa: ""}.fa-opensuse{--fa: ""}.fa-pied-piper-alt{--fa: ""}.fa-square-dribbble,.fa-dribbble-square{--fa: ""}.fa-codiepie{--fa: ""}.fa-node{--fa: ""}.fa-mix{--fa: ""}.fa-steam{--fa: ""}.fa-cc-apple-pay{--fa: ""}.fa-scribd{--fa: ""}.fa-debian{--fa: ""}.fa-openid{--fa: ""}.fa-instalod{--fa: ""}.fa-files-pinwheel{--fa: ""}.fa-expeditedssl{--fa: ""}.fa-sellcast{--fa: ""}.fa-square-twitter,.fa-twitter-square{--fa: ""}.fa-r-project{--fa: ""}.fa-delicious{--fa: ""}.fa-freebsd{--fa: ""}.fa-vuejs{--fa: ""}.fa-accusoft{--fa: ""}.fa-ioxhost{--fa: ""}.fa-fonticons-fi{--fa: ""}.fa-app-store{--fa: ""}.fa-cc-mastercard{--fa: ""}.fa-itunes-note{--fa: ""}.fa-golang{--fa: ""}.fa-kickstarter,.fa-square-kickstarter{--fa: ""}.fa-grav{--fa: ""}.fa-weibo{--fa: ""}.fa-uncharted{--fa: ""}.fa-firstdraft{--fa: ""}.fa-square-youtube,.fa-youtube-square{--fa: ""}.fa-wikipedia-w{--fa: ""}.fa-wpressr,.fa-rendact{--fa: ""}.fa-angellist{--fa: ""}.fa-galactic-republic{--fa: ""}.fa-nfc-directional{--fa: ""}.fa-skype{--fa: ""}.fa-joget{--fa: ""}.fa-fedora{--fa: ""}.fa-stripe-s{--fa: ""}.fa-meta{--fa: ""}.fa-laravel{--fa: ""}.fa-hotjar{--fa: ""}.fa-bluetooth-b{--fa: ""}.fa-square-letterboxd{--fa: ""}.fa-sticker-mule{--fa: ""}.fa-creative-commons-zero{--fa: ""}.fa-hips{--fa: ""}.fa-css{--fa: ""}.fa-behance{--fa: ""}.fa-reddit{--fa: ""}.fa-discord{--fa: ""}.fa-chrome{--fa: ""}.fa-app-store-ios{--fa: ""}.fa-cc-discover{--fa: ""}.fa-wpbeginner{--fa: ""}.fa-confluence{--fa: ""}.fa-shoelace{--fa: ""}.fa-mdb{--fa: ""}.fa-dochub{--fa: ""}.fa-accessible-icon{--fa: ""}.fa-ebay{--fa: ""}.fa-amazon{--fa: ""}.fa-unsplash{--fa: ""}.fa-yarn{--fa: ""}.fa-square-steam,.fa-steam-square{--fa: ""}.fa-500px{--fa: ""}.fa-square-vimeo,.fa-vimeo-square{--fa: ""}.fa-asymmetrik{--fa: ""}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa: ""}.fa-gratipay{--fa: ""}.fa-apple{--fa: ""}.fa-hive{--fa: ""}.fa-gitkraken{--fa: ""}.fa-keybase{--fa: ""}.fa-apple-pay{--fa: ""}.fa-padlet{--fa: ""}.fa-amazon-pay{--fa: ""}.fa-square-github,.fa-github-square{--fa: ""}.fa-stumbleupon{--fa: ""}.fa-fedex{--fa: ""}.fa-phoenix-framework{--fa: ""}.fa-shopify{--fa: ""}.fa-neos{--fa: ""}.fa-square-threads{--fa: ""}.fa-hackerrank{--fa: ""}.fa-researchgate{--fa: ""}.fa-swift{--fa: ""}.fa-angular{--fa: ""}.fa-speakap{--fa: ""}.fa-angrycreative{--fa: ""}.fa-y-combinator{--fa: ""}.fa-empire{--fa: ""}.fa-envira{--fa: ""}.fa-google-scholar{--fa: ""}.fa-square-gitlab,.fa-gitlab-square{--fa: ""}.fa-studiovinari{--fa: ""}.fa-pied-piper{--fa: ""}.fa-wordpress{--fa: ""}.fa-product-hunt{--fa: ""}.fa-firefox{--fa: ""}.fa-linode{--fa: ""}.fa-goodreads{--fa: ""}.fa-square-odnoklassniki,.fa-odnoklassniki-square{--fa: ""}.fa-jsfiddle{--fa: ""}.fa-sith{--fa: ""}.fa-themeisle{--fa: ""}.fa-page4{--fa: ""}.fa-hashnode{--fa: ""}.fa-react{--fa: ""}.fa-cc-paypal{--fa: ""}.fa-squarespace{--fa: ""}.fa-cc-stripe{--fa: ""}.fa-creative-commons-share{--fa: ""}.fa-bitcoin{--fa: ""}.fa-keycdn{--fa: ""}.fa-opera{--fa: ""}.fa-itch-io{--fa: ""}.fa-umbraco{--fa: ""}.fa-galactic-senate{--fa: ""}.fa-ubuntu{--fa: ""}.fa-draft2digital{--fa: ""}.fa-stripe{--fa: ""}.fa-houzz{--fa: ""}.fa-gg{--fa: ""}.fa-dhl{--fa: ""}.fa-square-pinterest,.fa-pinterest-square{--fa: ""}.fa-xing{--fa: ""}.fa-blackberry{--fa: ""}.fa-creative-commons-pd{--fa: ""}.fa-playstation{--fa: ""}.fa-quinscape{--fa: ""}.fa-less{--fa: ""}.fa-blogger-b{--fa: ""}.fa-opencart{--fa: ""}.fa-vine{--fa: ""}.fa-signal-messenger{--fa: ""}.fa-paypal{--fa: ""}.fa-gitlab{--fa: ""}.fa-typo3{--fa: ""}.fa-reddit-alien{--fa: ""}.fa-yahoo{--fa: ""}.fa-dailymotion{--fa: ""}.fa-affiliatetheme{--fa: ""}.fa-pied-piper-pp{--fa: ""}.fa-bootstrap{--fa: ""}.fa-odnoklassniki{--fa: ""}.fa-nfc-symbol{--fa: ""}.fa-mintbit{--fa: ""}.fa-ethereum{--fa: ""}.fa-speaker-deck{--fa: ""}.fa-creative-commons-nc-eu{--fa: ""}.fa-patreon{--fa: ""}.fa-avianex{--fa: ""}.fa-ello{--fa: ""}.fa-gofore{--fa: ""}.fa-bimobject{--fa: ""}.fa-brave-reverse{--fa: ""}.fa-facebook-f{--fa: ""}.fa-square-google-plus,.fa-google-plus-square{--fa: ""}.fa-web-awesome{--fa: ""}.fa-mandalorian{--fa: ""}.fa-first-order-alt{--fa: ""}.fa-osi{--fa: ""}.fa-google-wallet{--fa: ""}.fa-d-and-d-beyond{--fa: ""}.fa-periscope{--fa: ""}.fa-fulcrum{--fa: ""}.fa-cloudscale{--fa: ""}.fa-forumbee{--fa: ""}.fa-mizuni{--fa: ""}.fa-schlix{--fa: ""}.fa-square-xing,.fa-xing-square{--fa: ""}.fa-bandcamp{--fa: ""}.fa-wpforms{--fa: ""}.fa-cloudversify{--fa: ""}.fa-usps{--fa: ""}.fa-megaport{--fa: ""}.fa-magento{--fa: ""}.fa-spotify{--fa: ""}.fa-optin-monster{--fa: ""}.fa-fly{--fa: ""}.fa-square-bluesky{--fa: ""}.fa-aviato{--fa: ""}.fa-itunes{--fa: ""}.fa-cuttlefish{--fa: ""}.fa-blogger{--fa: ""}.fa-flickr{--fa: ""}.fa-viber{--fa: ""}.fa-soundcloud{--fa: ""}.fa-digg{--fa: ""}.fa-tencent-weibo{--fa: ""}.fa-letterboxd{--fa: ""}.fa-symfony{--fa: ""}.fa-maxcdn{--fa: ""}.fa-etsy{--fa: ""}.fa-facebook-messenger{--fa: ""}.fa-audible{--fa: ""}.fa-think-peaks{--fa: ""}.fa-bilibili{--fa: ""}.fa-erlang{--fa: ""}.fa-x-twitter{--fa: ""}.fa-cotton-bureau{--fa: ""}.fa-dashcube{--fa: ""}.fa-42-group,.fa-innosoft{--fa: ""}.fa-stack-exchange{--fa: ""}.fa-elementor{--fa: ""}.fa-square-pied-piper,.fa-pied-piper-square{--fa: ""}.fa-creative-commons-nd{--fa: ""}.fa-palfed{--fa: ""}.fa-superpowers{--fa: ""}.fa-resolving{--fa: ""}.fa-xbox{--fa: ""}.fa-square-web-awesome-stroke{--fa: ""}.fa-searchengin{--fa: ""}.fa-tiktok{--fa: ""}.fa-square-facebook,.fa-facebook-square{--fa: ""}.fa-renren{--fa: ""}.fa-linux{--fa: ""}.fa-glide{--fa: ""}.fa-linkedin{--fa: ""}.fa-hubspot{--fa: ""}.fa-deploydog{--fa: ""}.fa-twitch{--fa: ""}.fa-flutter{--fa: ""}.fa-ravelry{--fa: ""}.fa-mixer{--fa: ""}.fa-square-lastfm,.fa-lastfm-square{--fa: ""}.fa-vimeo{--fa: ""}.fa-mendeley{--fa: ""}.fa-uniregistry{--fa: ""}.fa-figma{--fa: ""}.fa-creative-commons-remix{--fa: ""}.fa-cc-amazon-pay{--fa: ""}.fa-dropbox{--fa: ""}.fa-instagram{--fa: ""}.fa-cmplid{--fa: ""}.fa-upwork{--fa: ""}.fa-facebook{--fa: ""}.fa-gripfire{--fa: ""}.fa-jedi-order{--fa: ""}.fa-uikit{--fa: ""}.fa-fort-awesome-alt{--fa: ""}.fa-phabricator{--fa: ""}.fa-ussunnah{--fa: ""}.fa-earlybirds{--fa: ""}.fa-trade-federation{--fa: ""}.fa-autoprefixer{--fa: ""}.fa-whatsapp{--fa: ""}.fa-square-upwork{--fa: ""}.fa-slideshare{--fa: ""}.fa-google-play{--fa: ""}.fa-viadeo{--fa: ""}.fa-line{--fa: ""}.fa-google-drive{--fa: ""}.fa-servicestack{--fa: ""}.fa-simplybuilt{--fa: ""}.fa-bitbucket{--fa: ""}.fa-imdb{--fa: ""}.fa-deezer{--fa: ""}.fa-raspberry-pi{--fa: ""}.fa-jira{--fa: ""}.fa-docker{--fa: ""}.fa-screenpal{--fa: ""}.fa-bluetooth{--fa: ""}.fa-gitter{--fa: ""}.fa-d-and-d{--fa: ""}.fa-microblog{--fa: ""}.fa-cc-diners-club{--fa: ""}.fa-gg-circle{--fa: ""}.fa-pied-piper-hat{--fa: ""}.fa-kickstarter-k{--fa: ""}.fa-yandex{--fa: ""}.fa-readme{--fa: ""}.fa-html5{--fa: ""}.fa-sellsy{--fa: ""}.fa-square-web-awesome{--fa: ""}.fa-sass{--fa: ""}.fa-wirsindhandwerk,.fa-wsh{--fa: ""}.fa-buromobelexperte{--fa: ""}.fa-salesforce{--fa: ""}.fa-octopus-deploy{--fa: ""}.fa-medapps{--fa: ""}.fa-ns8{--fa: ""}.fa-pinterest-p{--fa: ""}.fa-apper{--fa: ""}.fa-fort-awesome{--fa: ""}.fa-waze{--fa: ""}.fa-bluesky{--fa: ""}.fa-cc-jcb{--fa: ""}.fa-snapchat,.fa-snapchat-ghost{--fa: ""}.fa-fantasy-flight-games{--fa: ""}.fa-rust{--fa: ""}.fa-wix{--fa: ""}.fa-square-behance,.fa-behance-square{--fa: ""}.fa-supple{--fa: ""}.fa-webflow{--fa: ""}.fa-rebel{--fa: ""}.fa-css3{--fa: ""}.fa-staylinked{--fa: ""}.fa-kaggle{--fa: ""}.fa-space-awesome{--fa: ""}.fa-deviantart{--fa: ""}.fa-cpanel{--fa: ""}.fa-goodreads-g{--fa: ""}.fa-square-git,.fa-git-square{--fa: ""}.fa-square-tumblr,.fa-tumblr-square{--fa: ""}.fa-trello{--fa: ""}.fa-creative-commons-nc-jp{--fa: ""}.fa-get-pocket{--fa: ""}.fa-perbyte{--fa: ""}.fa-grunt{--fa: ""}.fa-weebly{--fa: ""}.fa-connectdevelop{--fa: ""}.fa-leanpub{--fa: ""}.fa-black-tie{--fa: ""}.fa-themeco{--fa: ""}.fa-python{--fa: ""}.fa-android{--fa: ""}.fa-bots{--fa: ""}.fa-free-code-camp{--fa: ""}.fa-hornbill{--fa: ""}.fa-js{--fa: ""}.fa-ideal{--fa: ""}.fa-git{--fa: ""}.fa-dev{--fa: ""}.fa-sketch{--fa: ""}.fa-yandex-international{--fa: ""}.fa-cc-amex{--fa: ""}.fa-uber{--fa: ""}.fa-github{--fa: ""}.fa-php{--fa: ""}.fa-alipay{--fa: ""}.fa-youtube{--fa: ""}.fa-skyatlas{--fa: ""}.fa-firefox-browser{--fa: ""}.fa-replyd{--fa: ""}.fa-suse{--fa: ""}.fa-jenkins{--fa: ""}.fa-twitter{--fa: ""}.fa-rockrms{--fa: ""}.fa-pinterest{--fa: ""}.fa-buffer{--fa: ""}.fa-npm{--fa: ""}.fa-yammer{--fa: ""}.fa-btc{--fa: ""}.fa-dribbble{--fa: ""}.fa-stumbleupon-circle{--fa: ""}.fa-internet-explorer{--fa: ""}.fa-stubber{--fa: ""}.fa-telegram,.fa-telegram-plane{--fa: ""}.fa-old-republic{--fa: ""}.fa-odysee{--fa: ""}.fa-square-whatsapp,.fa-whatsapp-square{--fa: ""}.fa-node-js{--fa: ""}.fa-edge-legacy{--fa: ""}.fa-slack,.fa-slack-hash{--fa: ""}.fa-medrt{--fa: ""}.fa-usb{--fa: ""}.fa-tumblr{--fa: ""}.fa-vaadin{--fa: ""}.fa-quora{--fa: ""}.fa-square-x-twitter{--fa: ""}.fa-reacteurope{--fa: ""}.fa-medium,.fa-medium-m{--fa: ""}.fa-amilia{--fa: ""}.fa-mixcloud{--fa: ""}.fa-flipboard{--fa: ""}.fa-viacoin{--fa: ""}.fa-critical-role{--fa: ""}.fa-sitrox{--fa: ""}.fa-discourse{--fa: ""}.fa-joomla{--fa: ""}.fa-mastodon{--fa: ""}.fa-airbnb{--fa: ""}.fa-wolf-pack-battalion{--fa: ""}.fa-buy-n-large{--fa: ""}.fa-gulp{--fa: ""}.fa-creative-commons-sampling-plus{--fa: ""}.fa-strava{--fa: ""}.fa-ember{--fa: ""}.fa-canadian-maple-leaf{--fa: ""}.fa-teamspeak{--fa: ""}.fa-pushed{--fa: ""}.fa-wordpress-simple{--fa: ""}.fa-nutritionix{--fa: ""}.fa-wodu{--fa: ""}.fa-google-pay{--fa: ""}.fa-intercom{--fa: ""}.fa-zhihu{--fa: ""}.fa-korvue{--fa: ""}.fa-pix{--fa: ""}.fa-steam-symbol{--fa: ""}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype")}.far,.fa-regular{font-weight:400}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}.fas,.fa-solid{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype");unicode-range:U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-v4compatibility-C9RhG_FT.woff2) format("woff2"),url(/admin-next/assets/fa-v4compatibility-CCth-dXg.ttf) format("truetype");unicode-range:U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 50%,var(--accent-color) 100%);background-attachment:fixed;min-height:100vh;margin:0;overflow-x:hidden}body,div,button,input,select,textarea,table,tr,td,th,span,p,h1,h2,h3,h4,h5,h6{transition:all .3s cubic-bezier(.4,0,.2,1)}.el-button--primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);border-color:transparent}.el-button--primary:hover,.el-button--primary:focus{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);opacity:.9}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[2px\]:after{content:var(--tw-content);left:2px}.after\:top-0\.5:after{content:var(--tw-content);top:.125rem}.after\:top-\[2px\]:after{content:var(--tw-content);top:2px}.after\:h-4:after{content:var(--tw-content);height:1rem}.after\:h-5:after{content:var(--tw-content);height:1.25rem}.after\:w-4:after{content:var(--tw-content);width:1rem}.after\:w-5:after{content:var(--tw-content);width:1.25rem}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:border:after{content:var(--tw-content);border-width:1px}.after\:border-gray-300:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.after\:shadow-sm:after{content:var(--tw-content);--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:transition-transform:after{content:var(--tw-content);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:duration-200:after{content:var(--tw-content);transition-duration:.2s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-300:hover{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.hover\:border-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.hover\:border-indigo-300:hover{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity, 1))}.hover\:border-red-300:hover{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.hover\:bg-amber-700:hover{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-200:hover{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-50:hover{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.hover\:bg-green-100:hover{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.hover\:bg-green-200:hover{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.hover\:bg-green-50:hover{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.hover\:bg-green-600:hover{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-50:hover{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-100:hover{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 215 170 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-50:hover{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-200:hover{--tw-bg-opacity: 1;background-color:rgb(233 213 255 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-50:hover{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-red-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/50:hover{background-color:#ffffff80}.hover\:bg-white\/90:hover{background-color:#ffffffe6}.hover\:bg-yellow-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.hover\:from-blue-600:hover{--tw-gradient-from: #2563eb var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-blue-700:hover{--tw-gradient-from: #1d4ed8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(29 78 216 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-green-600:hover{--tw-gradient-from: #16a34a var(--tw-gradient-from-position);--tw-gradient-to: rgb(22 163 74 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-yellow-600:hover{--tw-gradient-from: #ca8a04 var(--tw-gradient-from-position);--tw-gradient-to: rgb(202 138 4 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:to-blue-700:hover{--tw-gradient-to: #1d4ed8 var(--tw-gradient-to-position)}.hover\:to-green-700:hover{--tw-gradient-to: #15803d var(--tw-gradient-to-position)}.hover\:to-indigo-700:hover{--tw-gradient-to: #4338ca var(--tw-gradient-to-position)}.hover\:to-orange-600:hover{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.hover\:text-blue-700:hover{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.hover\:text-blue-900:hover{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-green-900:hover{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.hover\:text-indigo-900:hover{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-orange-900:hover{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.hover\:text-purple-900:hover{--tw-text-opacity: 1;color:rgb(88 28 135 / var(--tw-text-opacity, 1))}.hover\:text-red-800:hover{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.hover\:text-red-900:hover{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.focus\:border-cyan-500:focus{--tw-border-opacity: 1;border-color:rgb(6 182 212 / var(--tw-border-opacity, 1))}.focus\:border-green-500:focus{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.focus\:border-transparent:focus{border-color:transparent}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(191 219 254 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-500\/20:focus{--tw-ring-color: rgb(59 130 246 / .2)}.focus\:ring-cyan-500\/20:focus{--tw-ring-color: rgb(6 182 212 / .2)}.focus\:ring-green-500\/20:focus{--tw-ring-color: rgb(34 197 94 / .2)}.focus\:ring-red-500\/20:focus{--tw-ring-color: rgb(239 68 68 / .2)}.focus\:ring-offset-0:focus{--tw-ring-offset-width: 0px}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:from-gray-400:disabled{--tw-gradient-from: #9ca3af var(--tw-gradient-from-position);--tw-gradient-to: rgb(156 163 175 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.disabled\:to-gray-500:disabled{--tw-gradient-to: #6b7280 var(--tw-gradient-to-position)}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-20{opacity:.2}.peer:checked~.peer-checked\:bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.peer:checked~.peer-checked\:bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.peer:checked~.peer-checked\:bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.peer:checked~.peer-checked\:after\:translate-x-4:after{content:var(--tw-content);--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:after\:translate-x-full:after{content:var(--tw-content);--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:after\:border-white:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}.peer:focus~.peer-focus\:ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.peer:focus~.peer-focus\:ring-4{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.peer:focus~.peer-focus\:ring-blue-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity, 1))}.dark\:divide-gray-600:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(75 85 99 / var(--tw-divide-opacity, 1))}.dark\:divide-gray-600\/50:is(.dark *)>:not([hidden])~:not([hidden]){border-color:#4b556380}.dark\:border-amber-500:is(.dark *){--tw-border-opacity: 1;border-color:rgb(245 158 11 / var(--tw-border-opacity, 1))}.dark\:border-amber-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(180 83 9 / var(--tw-border-opacity, 1))}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-400:is(.dark *){--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.dark\:border-blue-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.dark\:border-blue-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.dark\:border-gray-600\/30:is(.dark *){border-color:#4b55634d}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-green-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.dark\:border-green-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-indigo-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(67 56 202 / var(--tw-border-opacity, 1))}.dark\:border-orange-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.dark\:border-orange-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(194 65 12 / var(--tw-border-opacity, 1))}.dark\:border-purple-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(126 34 206 / var(--tw-border-opacity, 1))}.dark\:border-red-500\/20:is(.dark *){border-color:#ef444433}.dark\:border-yellow-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(161 98 7 / var(--tw-border-opacity, 1))}.dark\:bg-amber-500:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.dark\:bg-amber-900\/20:is(.dark *){background-color:#78350f33}.dark\:bg-amber-900\/30:is(.dark *){background-color:#78350f4d}.dark\:bg-blue-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900\/20:is(.dark *){background-color:#1e3a8a33}.dark\:bg-blue-900\/30:is(.dark *){background-color:#1e3a8a4d}.dark\:bg-blue-900\/50:is(.dark *){background-color:#1e3a8a80}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-600\/50:is(.dark *){background-color:#4b556380}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700\/50:is(.dark *){background-color:#37415180}.dark\:bg-gray-700\/80:is(.dark *){background-color:#374151cc}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/20:is(.dark *){background-color:#1f293733}.dark\:bg-gray-800\/80:is(.dark *){background-color:#1f2937cc}.dark\:bg-gray-800\/90:is(.dark *){background-color:#1f2937e6}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900\/50:is(.dark *){background-color:#11182780}.dark\:bg-green-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/20:is(.dark *){background-color:#14532d33}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-900\/50:is(.dark *){background-color:#14532d80}.dark\:bg-orange-900\/30:is(.dark *){background-color:#7c2d124d}.dark\:bg-purple-900\/30:is(.dark *){background-color:#581c874d}.dark\:bg-red-500\/10:is(.dark *){background-color:#ef44441a}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-yellow-900\/30:is(.dark *){background-color:#713f124d}.dark\:from-blue-600\/20:is(.dark *){--tw-gradient-from: rgb(37 99 235 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-blue-900\/20:is(.dark *){--tw-gradient-from: rgb(30 58 138 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 58 138 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-gray-700:is(.dark *){--tw-gradient-from: #374151 var(--tw-gradient-from-position);--tw-gradient-to: rgb(55 65 81 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-gray-800:is(.dark *){--tw-gradient-from: #1f2937 var(--tw-gradient-from-position);--tw-gradient-to: rgb(31 41 55 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-green-900\/20:is(.dark *){--tw-gradient-from: rgb(20 83 45 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(20 83 45 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-indigo-900\/20:is(.dark *){--tw-gradient-from: rgb(49 46 129 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(49 46 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-purple-900\/20:is(.dark *){--tw-gradient-from: rgb(88 28 135 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(88 28 135 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-yellow-900\/20:is(.dark *){--tw-gradient-from: rgb(113 63 18 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(113 63 18 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:via-gray-600:is(.dark *){--tw-gradient-to: rgb(75 85 99 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #4b5563 var(--tw-gradient-via-position), var(--tw-gradient-to)}.dark\:to-blue-800\/20:is(.dark *){--tw-gradient-to: rgb(30 64 175 / .2) var(--tw-gradient-to-position)}.dark\:to-cyan-900\/20:is(.dark *){--tw-gradient-to: rgb(22 78 99 / .2) var(--tw-gradient-to-position)}.dark\:to-gray-700:is(.dark *){--tw-gradient-to: #374151 var(--tw-gradient-to-position)}.dark\:to-gray-800:is(.dark *){--tw-gradient-to: #1f2937 var(--tw-gradient-to-position)}.dark\:to-green-800\/20:is(.dark *){--tw-gradient-to: rgb(22 101 52 / .2) var(--tw-gradient-to-position)}.dark\:to-indigo-900\/20:is(.dark *){--tw-gradient-to: rgb(49 46 129 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-600\/20:is(.dark *){--tw-gradient-to: rgb(147 51 234 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-800\/20:is(.dark *){--tw-gradient-to: rgb(107 33 168 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-900\/20:is(.dark *){--tw-gradient-to: rgb(88 28 135 / .2) var(--tw-gradient-to-position)}.dark\:to-yellow-800\/20:is(.dark *){--tw-gradient-to: rgb(133 77 14 / .2) var(--tw-gradient-to-position)}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-200:is(.dark *){--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 186 116 / var(--tw-text-opacity, 1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-purple-400:is(.dark *){--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.dark\:text-red-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:placeholder-gray-400:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-400:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-500:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-500:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder\:text-gray-500:is(.dark *)::-moz-placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:placeholder\:text-gray-500:is(.dark *)::placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:after\:bg-gray-300:is(.dark *):after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.dark\:hover\:border-gray-500:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity, 1))}.dark\:hover\:border-indigo-500:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.dark\:hover\:bg-blue-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 64 175 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-blue-900\/20:hover:is(.dark *){background-color:#1e3a8a33}.dark\:hover\:bg-blue-900\/30:hover:is(.dark *){background-color:#1e3a8a4d}.dark\:hover\:bg-blue-900\/50:hover:is(.dark *){background-color:#1e3a8a80}.dark\:hover\:bg-blue-900\/70:hover:is(.dark *){background-color:#1e3a8ab3}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700\/30:hover:is(.dark *){background-color:#3741514d}.dark\:hover\:bg-green-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-green-900\/50:hover:is(.dark *){background-color:#14532d80}.dark\:hover\:bg-orange-900\/50:hover:is(.dark *){background-color:#7c2d1280}.dark\:hover\:bg-purple-900\/50:hover:is(.dark *){background-color:#581c8780}.dark\:hover\:bg-red-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-red-900\/20:hover:is(.dark *){background-color:#7f1d1d33}.dark\:hover\:text-blue-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:hover\:text-blue-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:hover\:text-red-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:focus\:ring-indigo-400:focus:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(129 140 248 / var(--tw-ring-opacity, 1))}.peer:focus~.dark\:peer-focus\:ring-blue-600:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity, 1))}.peer:focus~.dark\:peer-focus\:ring-blue-800:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity, 1))}@media (min-width: 640px){.sm\:mb-10{margin-bottom:2.5rem}.sm\:mb-2{margin-bottom:.5rem}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:mb-8{margin-bottom:2rem}.sm\:ml-2{margin-left:.5rem}.sm\:ml-4{margin-left:1rem}.sm\:mr-2{margin-right:.5rem}.sm\:mr-3{margin-right:.75rem}.sm\:mt-2{margin-top:.5rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-20{height:5rem}.sm\:h-8{height:2rem}.sm\:h-9{height:2.25rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[350px\]{height:350px}.sm\:max-h-\[300px\]{max-height:300px}.sm\:w-10{width:2.5rem}.sm\:w-12{width:3rem}.sm\:w-20{width:5rem}.sm\:w-56{width:14rem}.sm\:w-64{width:16rem}.sm\:w-8{width:2rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-none{max-width:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:rounded-2xl{border-radius:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-2{padding:.5rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.sm\:py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.sm\:py-3{padding-top:.75rem;padding-bottom:.75rem}.sm\:py-4{padding-top:1rem;padding-bottom:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width: 768px){.md\:mb-3{margin-bottom:.75rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mr-2{margin-right:.5rem}.md\:mr-3{margin-right:.75rem}.md\:mt-3{margin-top:.75rem}.md\:mt-4{margin-top:1rem}.md\:mt-6{margin-top:1.5rem}.md\:block{display:block}.md\:inline{display:inline}.md\:hidden{display:none}.md\:w-auto{width:auto}.md\:flex-none{flex:none}.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-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.md\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.md\:rounded-3xl{border-radius:1.5rem}.md\:p-10{padding:2.5rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:px-5{padding-left:1.25rem;padding-right:1.25rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-2{padding-top:.5rem;padding-bottom:.5rem}.md\:py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.md\:py-8{padding-top:2rem;padding-bottom:2rem}.md\:pb-6{padding-bottom:1.5rem}.md\:pt-4{padding-top:1rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:block{display:block}.lg\:w-auto{width:auto}.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\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-end{justify-content:flex-end}}@media (min-width: 1280px){.xl\:inline{display:inline}}:root{--primary-color: #667eea;--secondary-color: #764ba2;--accent-color: #f093fb;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(255, 255, 255, .95);--glass-color: rgba(255, 255, 255, .1);--glass-strong-color: rgba(255, 255, 255, .95);--text-primary: #1f2937;--text-secondary: #6b7280;--border-color: rgba(255, 255, 255, .2);--bg-gradient-start: #667eea;--bg-gradient-mid: #764ba2;--bg-gradient-end: #f093fb;--input-bg: rgba(255, 255, 255, .9);--input-border: rgba(255, 255, 255, .3);--modal-bg: rgba(0, 0, 0, .4);--table-bg: rgba(255, 255, 255, .95);--table-hover: rgba(102, 126, 234, .05)}.dark{--primary-color: #818cf8;--secondary-color: #a78bfa;--accent-color: #c084fc;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(31, 41, 55, .95);--glass-color: rgba(0, 0, 0, .2);--glass-strong-color: rgba(31, 41, 55, .95);--text-primary: #f3f4f6;--text-secondary: #9ca3af;--border-color: rgba(75, 85, 99, .3);--bg-gradient-start: #1f2937;--bg-gradient-mid: #374151;--bg-gradient-end: #4b5563;--input-bg: rgba(31, 41, 55, .9);--input-border: rgba(75, 85, 99, .5);--modal-bg: rgba(0, 0, 0, .6);--table-bg: rgba(31, 41, 55, .95);--table-hover: rgba(129, 140, 248, .1)}button,input,select,textarea{transition:background-color .3s ease,border-color .3s ease,box-shadow .3s ease,transform .2s ease}.transition-colors{transition:color .3s ease,background-color .3s ease,border-color .3s ease}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,var(--bg-gradient-start) 0%,var(--bg-gradient-mid) 50%,var(--bg-gradient-end) 100%);background-attachment:fixed;min-height:100vh;margin:0;overflow-x:hidden;color:var(--text-primary);transition:background .3s ease,color .3s ease}body:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 80%,rgba(240,147,251,.2) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(102,126,234,.2) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(118,75,162,.1) 0%,transparent 50%);pointer-events:none;z-index:-1}.glass{background:var(--glass-color);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-color);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,inset 0 1px #ffffff1a;transition:background-color .3s ease,border-color .3s ease}.dark .glass{box-shadow:0 20px 25px -5px #00000040,0 10px 10px -5px #0000001a,inset 0 1px #ffffff0d}.glass-strong{background:var(--glass-strong-color);backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px);border:1px solid var(--border-color);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d,inset 0 1px #ffffff1a;transition:background-color .3s ease,border-color .3s ease}.dark .glass-strong{box-shadow:0 25px 50px -12px #0006,0 0 0 1px #ffffff05,inset 0 1px #ffffff0d}.tab-btn{position:relative;overflow:hidden;border-radius:12px;font-weight:500;letter-spacing:.025em}.tab-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.tab-btn:hover:before{left:100%}.tab-btn.active{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);color:#fff;box-shadow:0 10px 15px -3px #667eea4d,0 4px 6px -2px #667eea0d;transform:translateY(-1px)}.card{background:var(--surface-color);border-radius:16px;border:1px solid var(--border-color);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative;transition:background-color .3s ease,border-color .3s ease}.dark .card{box-shadow:0 10px 15px -3px #00000040,0 4px 6px -2px #0000001a}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent)}.stat-card{background:linear-gradient(135deg,var(--surface-color) 0%,var(--glass-strong-color) 100%);border-radius:20px;border:1px solid var(--border-color);padding:24px;position:relative;overflow:hidden;transition:transform .3s ease,box-shadow .3s ease}.dark .stat-card{background:linear-gradient(135deg,#1f2937f2,#111827cc)}.stat-card:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 70%);opacity:0;transition:opacity .3s ease}.stat-card:hover{transform:translateY(-4px);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.stat-card:hover:before{opacity:1}.stat-icon{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.btn{font-weight:500;border-radius:12px;border:none;cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden;letter-spacing:.025em}.btn:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:#fff3;border-radius:50%;transform:translate(-50%,-50%);transition:width .3s ease,height .3s ease}.btn:active:before{width:300px;height:300px}.btn-primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);color:#fff;box-shadow:0 10px 15px -3px #667eea4d,0 4px 6px -2px #667eea0d}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #667eea4d,0 10px 10px -5px #667eea1a}.btn-success{background:linear-gradient(135deg,var(--success-color) 0%,#059669 100%);color:#fff;box-shadow:0 10px 15px -3px #10b9814d,0 4px 6px -2px #10b9810d}.btn-success:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #10b9814d,0 10px 10px -5px #10b9811a}.btn-danger{background:linear-gradient(135deg,var(--error-color) 0%,#dc2626 100%);color:#fff;box-shadow:0 10px 15px -3px #ef44444d,0 4px 6px -2px #ef44440d}.btn-danger:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #ef44444d,0 10px 10px -5px #ef44441a}.form-input{background:var(--input-bg);border:2px solid var(--input-border);border-radius:12px;padding:16px;font-size:16px;color:var(--text-primary);transition:background-color .3s ease,border-color .3s ease,box-shadow .3s ease;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.form-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #667eea1a,0 10px 15px -3px #0000001a;background:#fffffff2;color:#1f2937}.dark .form-input:focus{box-shadow:0 0 0 3px #818cf833,0 10px 15px -3px #0003;background:#111827f2;color:#f3f4f6}.table-container{background:var(--table-bg);border-radius:16px;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;transition:background-color .3s ease}.dark .table-container{box-shadow:0 10px 15px -3px #00000040,0 4px 6px -2px #0000001a}.table-row{transition:background-color .2s ease,transform .2s ease}.table-row:hover{background:var(--table-hover);transform:scale(1.005)}.modal{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:var(--modal-bg);transition:background-color .3s ease}.modal-content{background:#fff;border-radius:24px;border:1px solid rgba(229,231,235,.8);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:background-color .3s ease,border-color .3s ease}.dark .modal-content{background:#1f2937;border:1px solid rgba(75,85,99,.5);box-shadow:0 25px 50px -12px #0009,0 0 0 1px #ffffff05}.header-title{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;letter-spacing:-.025em}.loading-spinner{display:inline-block;width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top:2px solid white;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fade-enter-active,.fade-leave-active{transition:opacity .3s ease}.fade-enter-from,.fade-leave-to{opacity:0}.slide-up-enter-active,.slide-up-leave-active{transition:all .3s ease}.slide-up-enter-from{opacity:0;transform:translateY(30px)}.slide-up-leave-to{opacity:0;transform:translateY(-30px)}.toast{position:fixed;top:80px;right:20px;z-index:1000;min-width:320px;max-width:500px;transform:translate(100%);transition:transform .3s ease-in-out}.toast.show{transform:translate(0)}.toast-success{background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:1px solid rgba(16,185,129,.3)}.toast-error{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border:1px solid rgba(239,68,68,.3)}.toast-info{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:1px solid rgba(59,130,246,.3)}.toast-warning{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;border:1px solid rgba(245,158,11,.3)}[v-cloak]{display:none}.custom-scrollbar{scrollbar-width:thin;scrollbar-color:rgba(102,126,234,.3) rgba(102,126,234,.05)}.dark .custom-scrollbar{scrollbar-color:rgba(129,140,248,.3) rgba(129,140,248,.05)}.custom-scrollbar::-webkit-scrollbar{width:8px;height:8px}.custom-scrollbar::-webkit-scrollbar-track{background:#667eea0d;border-radius:10px}.dark .custom-scrollbar::-webkit-scrollbar-track{background:#818cf80d}.custom-scrollbar::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#667eea66,#764ba266);border-radius:10px;-webkit-transition:background .3s ease;transition:background .3s ease}.dark .custom-scrollbar::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#818cf866,#a78bfa66)}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#667eea99,#764ba299)}.dark .custom-scrollbar::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#818cf899,#a78bfa99)}.custom-scrollbar::-webkit-scrollbar-thumb:active{background:linear-gradient(135deg,#667eeacc,#764ba2cc)}.dark .custom-scrollbar::-webkit-scrollbar-thumb:active{background:linear-gradient(135deg,#818cf8cc,#a78bfacc)}.modal-scroll-content{max-height:calc(90vh - 160px);overflow-y:auto;padding-right:8px}@media (max-width: 768px){.glass,.glass-strong{margin:16px;border-radius:20px}.stat-card{padding:16px}.tab-btn{font-size:14px;padding:12px 8px}.modal-scroll-content{max-height:calc(85vh - 120px)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}to{transform:scale(1);opacity:1}}.animate-pulse{animation:pulse 2s infinite}.user-menu-dropdown{min-width:240px;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.tab-content{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}} diff --git a/assets/vue-vendor-DfnFpxGJ.js b/assets/vue-vendor-DfnFpxGJ.js deleted file mode 100644 index 7e720979..00000000 --- a/assets/vue-vendor-DfnFpxGJ.js +++ /dev/null @@ -1,25 +0,0 @@ -/** -* @vue/shared v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function cr(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ie={},Wt=[],Be=()=>{},ql=()=>!1,os=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ur=e=>e.startsWith("onUpdate:"),pe=Object.assign,ar=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},zl=Object.prototype.hasOwnProperty,te=(e,t)=>zl.call(e,t),V=Array.isArray,Gt=e=>nn(e)==="[object Map]",tn=e=>nn(e)==="[object Set]",Vr=e=>nn(e)==="[object Date]",Ql=e=>nn(e)==="[object RegExp]",q=e=>typeof e=="function",ae=e=>typeof e=="string",Ue=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",si=e=>(se(e)||q(e))&&q(e.then)&&q(e.catch),ri=Object.prototype.toString,nn=e=>ri.call(e),Jl=e=>nn(e).slice(8,-1),oi=e=>nn(e)==="[object Object]",fr=e=>ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,fn=cr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),is=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Yl=/-(\w)/g,ke=is(e=>e.replace(Yl,(t,n)=>n?n.toUpperCase():"")),Xl=/\B([A-Z])/g,Ot=is(e=>e.replace(Xl,"-$1").toLowerCase()),ls=is(e=>e.charAt(0).toUpperCase()+e.slice(1)),kn=is(e=>e?`on${ls(e)}`:""),Et=(e,t)=>!Object.is(e,t),qt=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},qn=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Zl=e=>{const t=ae(e)?Number(e):NaN;return isNaN(t)?e:t};let Hr;const cs=()=>Hr||(Hr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function us(e){if(V(e)){const t={};for(let n=0;n{if(n){const s=n.split(tc);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function as(e){let t="";if(ae(e))t=e;else if(V(e))for(let n=0;njt(n,t))}const li=e=>!!(e&&e.__v_isRef===!0),lc=e=>ae(e)?e:e==null?"":V(e)||se(e)&&(e.toString===ri||!q(e.toString))?li(e)?lc(e.value):JSON.stringify(e,ci,2):String(e),ci=(e,t)=>li(t)?ci(e,t.value):Gt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[Rs(s,o)+" =>"]=r,n),{})}:tn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Rs(n))}:Ue(t)?Rs(t):se(t)&&!V(t)&&!oi(t)?String(t):t,Rs=(e,t="")=>{var n;return Ue(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let _e;class ui{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(_e=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(hn){let t=hn;for(hn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;dn;){let t=dn;for(dn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function gi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function mi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),mr(s),cc(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Bs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(vi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function vi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Sn)||(e.globalVersion=Sn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Bs(e))))return;e.flags|=2;const t=e.dep,n=ce,s=Ke;ce=e,Ke=!0;try{gi(e);const r=e.fn(e._value);(t.version===0||Et(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ce=n,Ke=s,mi(e),e.flags&=-3}}function mr(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)mr(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function cc(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ke=!0;const yi=[];function ct(){yi.push(Ke),Ke=!1}function ut(){const e=yi.pop();Ke=e===void 0?!0:e}function kr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ce;ce=void 0;try{t()}finally{ce=n}}}let Sn=0;class uc{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class fs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ce||!Ke||ce===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ce)n=this.activeLink=new uc(ce,this),ce.deps?(n.prevDep=ce.depsTail,ce.depsTail.nextDep=n,ce.depsTail=n):ce.deps=ce.depsTail=n,_i(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ce.depsTail,n.nextDep=void 0,ce.depsTail.nextDep=n,ce.depsTail=n,ce.deps===n&&(ce.deps=s)}return n}trigger(t){this.version++,Sn++,this.notify(t)}notify(t){pr();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{gr()}}}function _i(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)_i(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const zn=new WeakMap,Ft=Symbol(""),Ks=Symbol(""),wn=Symbol("");function be(e,t,n){if(Ke&&ce){let s=zn.get(e);s||zn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new fs),r.map=s,r.key=n),r.track()}}function rt(e,t,n,s,r,o){const i=zn.get(e);if(!i){Sn++;return}const l=c=>{c&&c.trigger()};if(pr(),t==="clear")i.forEach(l);else{const c=V(e),a=c&&fr(n);if(c&&n==="length"){const u=Number(s);i.forEach((f,h)=>{(h==="length"||h===wn||!Ue(h)&&h>=u)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),a&&l(i.get(wn)),t){case"add":c?a&&l(i.get("length")):(l(i.get(Ft)),Gt(e)&&l(i.get(Ks)));break;case"delete":c||(l(i.get(Ft)),Gt(e)&&l(i.get(Ks)));break;case"set":Gt(e)&&l(i.get(Ft));break}}gr()}function ac(e,t){const n=zn.get(e);return n&&n.get(t)}function kt(e){const t=J(e);return t===e?t:(be(t,"iterate",wn),De(e)?t:t.map(ge))}function ds(e){return be(e=J(e),"iterate",wn),e}const fc={__proto__:null,[Symbol.iterator](){return Os(this,Symbol.iterator,ge)},concat(...e){return kt(this).concat(...e.map(t=>V(t)?kt(t):t))},entries(){return Os(this,"entries",e=>(e[1]=ge(e[1]),e))},every(e,t){return tt(this,"every",e,t,void 0,arguments)},filter(e,t){return tt(this,"filter",e,t,n=>n.map(ge),arguments)},find(e,t){return tt(this,"find",e,t,ge,arguments)},findIndex(e,t){return tt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return tt(this,"findLast",e,t,ge,arguments)},findLastIndex(e,t){return tt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return tt(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ps(this,"includes",e)},indexOf(...e){return Ps(this,"indexOf",e)},join(e){return kt(this).join(e)},lastIndexOf(...e){return Ps(this,"lastIndexOf",e)},map(e,t){return tt(this,"map",e,t,void 0,arguments)},pop(){return rn(this,"pop")},push(...e){return rn(this,"push",e)},reduce(e,...t){return Br(this,"reduce",e,t)},reduceRight(e,...t){return Br(this,"reduceRight",e,t)},shift(){return rn(this,"shift")},some(e,t){return tt(this,"some",e,t,void 0,arguments)},splice(...e){return rn(this,"splice",e)},toReversed(){return kt(this).toReversed()},toSorted(e){return kt(this).toSorted(e)},toSpliced(...e){return kt(this).toSpliced(...e)},unshift(...e){return rn(this,"unshift",e)},values(){return Os(this,"values",ge)}};function Os(e,t,n){const s=ds(e),r=s[t]();return s!==e&&!De(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.value&&(o.value=n(o.value)),o}),r}const dc=Array.prototype;function tt(e,t,n,s,r,o){const i=ds(e),l=i!==e&&!De(e),c=i[t];if(c!==dc[t]){const f=c.apply(e,o);return l?ge(f):f}let a=n;i!==e&&(l?a=function(f,h){return n.call(this,ge(f),h,e)}:n.length>2&&(a=function(f,h){return n.call(this,f,h,e)}));const u=c.call(i,a,s);return l&&r?r(u):u}function Br(e,t,n,s){const r=ds(e);let o=n;return r!==e&&(De(e)?n.length>3&&(o=function(i,l,c){return n.call(this,i,l,c,e)}):o=function(i,l,c){return n.call(this,i,ge(l),c,e)}),r[t](o,...s)}function Ps(e,t,n){const s=J(e);be(s,"iterate",wn);const r=s[t](...n);return(r===-1||r===!1)&&_r(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function rn(e,t,n=[]){ct(),pr();const s=J(e)[t].apply(e,n);return gr(),ut(),s}const hc=cr("__proto__,__v_isRef,__isVue"),bi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ue));function pc(e){Ue(e)||(e=String(e));const t=J(this);return be(t,"has",e),t.hasOwnProperty(e)}class Si{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?xc:Ci:o?xi:Ei).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=V(t);if(!r){let c;if(i&&(c=fc[n]))return c;if(n==="hasOwnProperty")return pc}const l=Reflect.get(t,n,fe(t)?t:s);return(Ue(n)?bi.has(n):hc(n))||(r||be(t,"get",n),o)?l:fe(l)?i&&fr(n)?l:l.value:se(l)?r?hs(l):Pn(l):l}}class wi extends Si{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(!this._isShallow){const c=xt(o);if(!De(s)&&!xt(s)&&(o=J(o),s=J(s)),!V(t)&&fe(o)&&!fe(s))return c?!1:(o.value=s,!0)}const i=V(t)&&fr(n)?Number(n)e,Fn=e=>Reflect.getPrototypeOf(e);function _c(e,t,n){return function(...s){const r=this.__v_raw,o=J(r),i=Gt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=r[e](...s),u=n?Us:t?Qn:ge;return!t&&be(o,"iterate",c?Ks:Ft),{next(){const{value:f,done:h}=a.next();return h?{value:f,done:h}:{value:l?[u(f[0]),u(f[1])]:u(f),done:h}},[Symbol.iterator](){return this}}}}function Ln(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function bc(e,t){const n={get(r){const o=this.__v_raw,i=J(o),l=J(r);e||(Et(r,l)&&be(i,"get",r),be(i,"get",l));const{has:c}=Fn(i),a=t?Us:e?Qn:ge;if(c.call(i,r))return a(o.get(r));if(c.call(i,l))return a(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&be(J(r),"iterate",Ft),Reflect.get(r,"size",r)},has(r){const o=this.__v_raw,i=J(o),l=J(r);return e||(Et(r,l)&&be(i,"has",r),be(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,c=J(l),a=t?Us:e?Qn:ge;return!e&&be(c,"iterate",Ft),l.forEach((u,f)=>r.call(o,a(u),a(f),i))}};return pe(n,e?{add:Ln("add"),set:Ln("set"),delete:Ln("delete"),clear:Ln("clear")}:{add(r){!t&&!De(r)&&!xt(r)&&(r=J(r));const o=J(this);return Fn(o).has.call(o,r)||(o.add(r),rt(o,"add",r,r)),this},set(r,o){!t&&!De(o)&&!xt(o)&&(o=J(o));const i=J(this),{has:l,get:c}=Fn(i);let a=l.call(i,r);a||(r=J(r),a=l.call(i,r));const u=c.call(i,r);return i.set(r,o),a?Et(o,u)&&rt(i,"set",r,o):rt(i,"add",r,o),this},delete(r){const o=J(this),{has:i,get:l}=Fn(o);let c=i.call(o,r);c||(r=J(r),c=i.call(o,r)),l&&l.call(o,r);const a=o.delete(r);return c&&rt(o,"delete",r,void 0),a},clear(){const r=J(this),o=r.size!==0,i=r.clear();return o&&rt(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=_c(r,e,t)}),n}function vr(e,t){const n=bc(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(te(n,r)&&r in s?n:s,r,o)}const Sc={get:vr(!1,!1)},wc={get:vr(!1,!0)},Ec={get:vr(!0,!1)};const Ei=new WeakMap,xi=new WeakMap,Ci=new WeakMap,xc=new WeakMap;function Cc(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Rc(e){return e.__v_skip||!Object.isExtensible(e)?0:Cc(Jl(e))}function Pn(e){return xt(e)?e:yr(e,!1,mc,Sc,Ei)}function Ri(e){return yr(e,!1,yc,wc,xi)}function hs(e){return yr(e,!0,vc,Ec,Ci)}function yr(e,t,n,s,r){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=Rc(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function lt(e){return xt(e)?lt(e.__v_raw):!!(e&&e.__v_isReactive)}function xt(e){return!!(e&&e.__v_isReadonly)}function De(e){return!!(e&&e.__v_isShallow)}function _r(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function br(e){return!te(e,"__v_skip")&&Object.isExtensible(e)&&ks(e,"__v_skip",!0),e}const ge=e=>se(e)?Pn(e):e,Qn=e=>se(e)?hs(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function ue(e){return Oi(e,!1)}function Ti(e){return Oi(e,!0)}function Oi(e,t){return fe(e)?e:new Tc(e,t)}class Tc{constructor(t,n){this.dep=new fs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:ge(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||De(t)||xt(t);t=s?t:J(t),Et(t,n)&&(this._rawValue=t,this._value=s?t:ge(t),this.dep.trigger())}}function fd(e){e.dep&&e.dep.trigger()}function Lt(e){return fe(e)?e.value:e}const Oc={get:(e,t,n)=>t==="__v_raw"?e:Lt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Pi(e){return lt(e)?e:new Proxy(e,Oc)}class Pc{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new fs,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Ac(e){return new Pc(e)}function Ic(e){const t=V(e)?new Array(e.length):{};for(const n in e)t[n]=Ai(e,n);return t}class Mc{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return ac(J(this._object),this._key)}}class Nc{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Fc(e,t,n){return fe(e)?e:q(e)?new Nc(e):se(e)&&arguments.length>1?Ai(e,t,n):ue(e)}function Ai(e,t,n){const s=e[t];return fe(s)?s:new Mc(e,t,n)}class Lc{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new fs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Sn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ce!==this)return pi(this,!0),!0}get value(){const t=this.dep.track();return vi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function $c(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Lc(s,r,n)}const $n={},Jn=new WeakMap;let Nt;function Dc(e,t=!1,n=Nt){if(n){let s=Jn.get(n);s||Jn.set(n,s=[]),s.push(e)}}function jc(e,t,n=ie){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:c}=n,a=E=>r?E:De(E)||r===!1||r===0?ot(E,1):ot(E);let u,f,h,g,v=!1,x=!1;if(fe(e)?(f=()=>e.value,v=De(e)):lt(e)?(f=()=>a(e),v=!0):V(e)?(x=!0,v=e.some(E=>lt(E)||De(E)),f=()=>e.map(E=>{if(fe(E))return E.value;if(lt(E))return a(E);if(q(E))return c?c(E,2):E()})):q(e)?t?f=c?()=>c(e,2):e:f=()=>{if(h){ct();try{h()}finally{ut()}}const E=Nt;Nt=u;try{return c?c(e,3,[g]):e(g)}finally{Nt=E}}:f=Be,t&&r){const E=f,D=r===!0?1/0:r;f=()=>ot(E(),D)}const F=hr(),A=()=>{u.stop(),F&&F.active&&ar(F.effects,u)};if(o&&t){const E=t;t=(...D)=>{E(...D),A()}}let S=x?new Array(e.length).fill($n):$n;const C=E=>{if(!(!(u.flags&1)||!u.dirty&&!E))if(t){const D=u.run();if(r||v||(x?D.some((W,U)=>Et(W,S[U])):Et(D,S))){h&&h();const W=Nt;Nt=u;try{const U=[D,S===$n?void 0:x&&S[0]===$n?[]:S,g];S=D,c?c(t,3,U):t(...U)}finally{Nt=W}}}else u.run()};return l&&l(C),u=new di(f),u.scheduler=i?()=>i(C,!1):C,g=E=>Dc(E,!1,u),h=u.onStop=()=>{const E=Jn.get(u);if(E){if(c)c(E,4);else for(const D of E)D();Jn.delete(u)}},t?s?C(!0):S=u.run():i?i(C.bind(null,!0),!0):u.run(),A.pause=u.pause.bind(u),A.resume=u.resume.bind(u),A.stop=A,A}function ot(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))ot(e.value,t,n);else if(V(e))for(let s=0;s{ot(s,t,n)});else if(oi(e)){for(const s in e)ot(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&ot(e[s],t,n)}return e}/** -* @vue/runtime-core v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function An(e,t,n,s){try{return s?e(...s):e()}catch(r){ps(r,t,n)}}function We(e,t,n,s){if(q(e)){const r=An(e,t,n,s);return r&&si(r)&&r.catch(o=>{ps(o,t,n)}),r}if(V(e)){const r=[];for(let o=0;o>>1,r=Re[s],o=En(r);o=En(n)?Re.push(e):Re.splice(Hc(t),0,e),e.flags|=1,Mi()}}function Mi(){Yn||(Yn=Ii.then(Fi))}function kc(e){V(e)?zt.push(...e):yt&&e.id===-1?yt.splice(Kt+1,0,e):e.flags&1||(zt.push(e),e.flags|=1),Mi()}function Kr(e,t,n=Xe+1){for(;nEn(n)-En(s));if(zt.length=0,yt){yt.push(...t);return}for(yt=t,Kt=0;Kte.id==null?e.flags&2?-1:1/0:e.id;function Fi(e){try{for(Xe=0;Xe{s._d&&no(-1);const o=Xn(t);let i;try{i=e(...r)}finally{Xn(o),s._d&&no(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function dd(e,t){if(ve===null)return e;const n=bs(ve),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,pn=e=>e&&(e.disabled||e.disabled===""),Ur=e=>e&&(e.defer||e.defer===""),Wr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Gr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ws=(e,t)=>{const n=e&&e.to;return ae(n)?t?t(n):null:n},ji={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,o,i,l,c,a){const{mc:u,pc:f,pbc:h,o:{insert:g,querySelector:v,createText:x,createComment:F}}=a,A=pn(t.props);let{shapeFlag:S,children:C,dynamicChildren:E}=t;if(e==null){const D=t.el=x(""),W=t.anchor=x("");g(D,n,s),g(W,n,s);const U=(T,k)=>{S&16&&(r&&r.isCE&&(r.ce._teleportTarget=T),u(C,T,k,r,o,i,l,c))},H=()=>{const T=t.target=Ws(t.props,v),k=Vi(T,t,x,g);T&&(i!=="svg"&&Wr(T)?i="svg":i!=="mathml"&&Gr(T)&&(i="mathml"),A||(U(T,k),Bn(t,!1)))};A&&(U(n,W),Bn(t,!0)),Ur(t.props)?(t.el.__isMounted=!1,he(()=>{H(),delete t.el.__isMounted},o)):H()}else{if(Ur(t.props)&&e.el.__isMounted===!1){he(()=>{ji.process(e,t,n,s,r,o,i,l,c,a)},o);return}t.el=e.el,t.targetStart=e.targetStart;const D=t.anchor=e.anchor,W=t.target=e.target,U=t.targetAnchor=e.targetAnchor,H=pn(e.props),T=H?n:W,k=H?D:U;if(i==="svg"||Wr(W)?i="svg":(i==="mathml"||Gr(W))&&(i="mathml"),E?(h(e.dynamicChildren,E,T,r,o,i,l),Pr(e,t,!0)):c||f(e,t,T,k,r,o,i,l,!1),A)H?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Dn(t,n,D,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const Q=t.target=Ws(t.props,v);Q&&Dn(t,Q,null,a,0)}else H&&Dn(t,W,U,a,1);Bn(t,A)}},remove(e,t,n,{um:s,o:{remove:r}},o){const{shapeFlag:i,children:l,anchor:c,targetStart:a,targetAnchor:u,target:f,props:h}=e;if(f&&(r(a),r(u)),o&&r(c),i&16){const g=o||!pn(h);for(let v=0;v{e.isMounted=!0}),xr(()=>{e.isUnmounting=!0}),e}const Le=[Function,Array],ki={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Le,onEnter:Le,onAfterEnter:Le,onEnterCancelled:Le,onBeforeLeave:Le,onLeave:Le,onAfterLeave:Le,onLeaveCancelled:Le,onBeforeAppear:Le,onAppear:Le,onAfterAppear:Le,onAppearCancelled:Le},Bi=e=>{const t=e.subTree;return t.component?Bi(t.component):t},Uc={name:"BaseTransition",props:ki,setup(e,{slots:t}){const n=Pt(),s=Hi();return()=>{const r=t.default&&wr(t.default(),!0);if(!r||!r.length)return;const o=Ki(r),i=J(e),{mode:l}=i;if(s.isLeaving)return As(o);const c=qr(o);if(!c)return As(o);let a=xn(c,i,s,n,f=>a=f);c.type!==me&&Ct(c,a);let u=n.subTree&&qr(n.subTree);if(u&&u.type!==me&&!wt(c,u)&&Bi(n).type!==me){let f=xn(u,i,s,n);if(Ct(u,f),l==="out-in"&&c.type!==me)return s.isLeaving=!0,f.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,u=void 0},As(o);l==="in-out"&&c.type!==me?f.delayLeave=(h,g,v)=>{const x=Ui(s,u);x[String(u.key)]=u,h[_t]=()=>{g(),h[_t]=void 0,delete a.delayedLeave,u=void 0},a.delayedLeave=()=>{v(),delete a.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return o}}};function Ki(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==me){t=n;break}}return t}const Wc=Uc;function Ui(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function xn(e,t,n,s,r){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:a,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:h,onLeave:g,onAfterLeave:v,onLeaveCancelled:x,onBeforeAppear:F,onAppear:A,onAfterAppear:S,onAppearCancelled:C}=t,E=String(e.key),D=Ui(n,e),W=(T,k)=>{T&&We(T,s,9,k)},U=(T,k)=>{const Q=k[1];W(T,k),V(T)?T.every(L=>L.length<=1)&&Q():T.length<=1&&Q()},H={mode:i,persisted:l,beforeEnter(T){let k=c;if(!n.isMounted)if(o)k=F||c;else return;T[_t]&&T[_t](!0);const Q=D[E];Q&&wt(e,Q)&&Q.el[_t]&&Q.el[_t](),W(k,[T])},enter(T){let k=a,Q=u,L=f;if(!n.isMounted)if(o)k=A||a,Q=S||u,L=C||f;else return;let Y=!1;const de=T[jn]=xe=>{Y||(Y=!0,xe?W(L,[T]):W(Q,[T]),H.delayedLeave&&H.delayedLeave(),T[jn]=void 0)};k?U(k,[T,de]):de()},leave(T,k){const Q=String(e.key);if(T[jn]&&T[jn](!0),n.isUnmounting)return k();W(h,[T]);let L=!1;const Y=T[_t]=de=>{L||(L=!0,k(),de?W(x,[T]):W(v,[T]),T[_t]=void 0,D[Q]===e&&delete D[Q])};D[Q]=e,g?U(g,[T,Y]):Y()},clone(T){const k=xn(T,t,n,s,r);return r&&r(k),k}};return H}function As(e){if(gs(e))return e=at(e),e.children=null,e}function qr(e){if(!gs(e))return Di(e.type)&&e.children?Ki(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Ct(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Ct(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function wr(e,t=!1,n){let s=[],r=0;for(let o=0;o1)for(let o=0;ogn(v,t&&(V(t)?t[x]:t),n,s,r));return}if($t(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&gn(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?bs(s.component):s.el,i=r?null:o,{i:l,r:c}=e,a=t&&t.r,u=l.refs===ie?l.refs={}:l.refs,f=l.setupState,h=J(f),g=f===ie?()=>!1:v=>te(h,v);if(a!=null&&a!==c&&(ae(a)?(u[a]=null,g(a)&&(f[a]=null)):fe(a)&&(a.value=null)),q(c))An(c,l,12,[i,u]);else{const v=ae(c),x=fe(c);if(v||x){const F=()=>{if(e.f){const A=v?g(c)?f[c]:u[c]:c.value;r?V(A)&&ar(A,o):V(A)?A.includes(o)||A.push(o):v?(u[c]=[o],g(c)&&(f[c]=u[c])):(c.value=[o],e.k&&(u[e.k]=c.value))}else v?(u[c]=i,g(c)&&(f[c]=i)):x&&(c.value=i,e.k&&(u[e.k]=i))};i?(F.id=-1,he(F,n)):F()}}}cs().requestIdleCallback;cs().cancelIdleCallback;const $t=e=>!!e.type.__asyncLoader,gs=e=>e.type.__isKeepAlive,Gc={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Pt(),s=n.ctx;if(!s.renderer)return()=>{const S=t.default&&t.default();return S&&S.length===1?S[0]:S};const r=new Map,o=new Set;let i=null;const l=n.suspense,{renderer:{p:c,m:a,um:u,o:{createElement:f}}}=s,h=f("div");s.activate=(S,C,E,D,W)=>{const U=S.component;a(S,C,E,0,l),c(U.vnode,S,C,E,U,l,D,S.slotScopeIds,W),he(()=>{U.isDeactivated=!1,U.a&&qt(U.a);const H=S.props&&S.props.onVnodeMounted;H&&$e(H,U.parent,S)},l)},s.deactivate=S=>{const C=S.component;es(C.m),es(C.a),a(S,h,null,1,l),he(()=>{C.da&&qt(C.da);const E=S.props&&S.props.onVnodeUnmounted;E&&$e(E,C.parent,S),C.isDeactivated=!0},l)};function g(S){Is(S),u(S,n,l,!0)}function v(S){r.forEach((C,E)=>{const D=Zs(C.type);D&&!S(D)&&x(E)})}function x(S){const C=r.get(S);C&&(!i||!wt(C,i))?g(C):i&&Is(i),r.delete(S),o.delete(S)}ye(()=>[e.include,e.exclude],([S,C])=>{S&&v(E=>un(S,E)),C&&v(E=>!un(C,E))},{flush:"post",deep:!0});let F=null;const A=()=>{F!=null&&(ts(n.subTree.type)?he(()=>{r.set(F,Vn(n.subTree))},n.subTree.suspense):r.set(F,Vn(n.subTree)))};return vs(A),Er(A),xr(()=>{r.forEach(S=>{const{subTree:C,suspense:E}=n,D=Vn(C);if(S.type===D.type&&S.key===D.key){Is(D);const W=D.component.da;W&&he(W,E);return}g(S)})}),()=>{if(F=null,!t.default)return i=null;const S=t.default(),C=S[0];if(S.length>1)return i=null,S;if(!Qt(C)||!(C.shapeFlag&4)&&!(C.shapeFlag&128))return i=null,C;let E=Vn(C);if(E.type===me)return i=null,E;const D=E.type,W=Zs($t(E)?E.type.__asyncResolved||{}:D),{include:U,exclude:H,max:T}=e;if(U&&(!W||!un(U,W))||H&&W&&un(H,W))return E.shapeFlag&=-257,i=E,C;const k=E.key==null?D:E.key,Q=r.get(k);return E.el&&(E=at(E),C.shapeFlag&128&&(C.ssContent=E)),F=k,Q?(E.el=Q.el,E.component=Q.component,E.transition&&Ct(E,E.transition),E.shapeFlag|=512,o.delete(k),o.add(k)):(o.add(k),T&&o.size>parseInt(T,10)&&x(o.values().next().value)),E.shapeFlag|=256,i=E,ts(C.type)?C:E}}},pd=Gc;function un(e,t){return V(e)?e.some(n=>un(n,t)):ae(e)?e.split(",").includes(t):Ql(e)?(e.lastIndex=0,e.test(t)):!1}function qc(e,t){qi(e,"a",t)}function zc(e,t){qi(e,"da",t)}function qi(e,t,n=Se){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(ms(t,s,n),n){let r=n.parent;for(;r&&r.parent;)gs(r.parent.vnode)&&Qc(s,t,n,r),r=r.parent}}function Qc(e,t,n,s){const r=ms(t,e,s,!0);zi(()=>{ar(s[t],r)},n)}function Is(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Vn(e){return e.shapeFlag&128?e.ssContent:e}function ms(e,t,n=Se,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{ct();const l=Mn(n),c=We(t,n,e,i);return l(),ut(),c});return s?r.unshift(o):r.push(o),o}}const ft=e=>(t,n=Se)=>{(!Rn||e==="sp")&&ms(e,(...s)=>t(...s),n)},Jc=ft("bm"),vs=ft("m"),Yc=ft("bu"),Er=ft("u"),xr=ft("bum"),zi=ft("um"),Xc=ft("sp"),Zc=ft("rtg"),eu=ft("rtc");function tu(e,t=Se){ms("ec",e,t)}const Cr="components",nu="directives";function gd(e,t){return Rr(Cr,e,!0,t)||e}const Qi=Symbol.for("v-ndc");function md(e){return ae(e)?Rr(Cr,e,!1)||e:e||Qi}function vd(e){return Rr(nu,e)}function Rr(e,t,n=!0,s=!1){const r=ve||Se;if(r){const o=r.type;if(e===Cr){const l=Zs(o,!1);if(l&&(l===t||l===ke(t)||l===ls(ke(t))))return o}const i=zr(r[e]||o[e],t)||zr(r.appContext[e],t);return!i&&s?o:i}}function zr(e,t){return e&&(e[t]||e[ke(t)]||e[ls(ke(t))])}function yd(e,t,n,s){let r;const o=n,i=V(e);if(i||ae(e)){const l=i&<(e);let c=!1,a=!1;l&&(c=!De(e),a=xt(e),e=ds(e)),r=new Array(e.length);for(let u=0,f=e.length;ut(l,c,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,a=l.length;c{const o=s.fn(...r);return o&&(o.key=s.key),o}:s.fn)}return e}function bd(e,t,n={},s,r){if(ve.ce||ve.parent&&$t(ve.parent)&&ve.parent.ce)return t!=="default"&&(n.name=t),Js(),Ys(Ae,null,[Ee("slot",n,s&&s())],64);let o=e[t];o&&o._c&&(o._d=!1),Js();const i=o&&Ji(o(n)),l=n.key||i&&i.key,c=Ys(Ae,{key:(l&&!Ue(l)?l:`_${t}`)+(!i&&s?"_fb":"")},i||(s?s():[]),i&&e._===1?64:-2);return!r&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),o&&o._c&&(o._d=!0),c}function Ji(e){return e.some(t=>Qt(t)?!(t.type===me||t.type===Ae&&!Ji(t.children)):!0)?e:null}function Sd(e,t){const n={};for(const s in e)n[kn(s)]=e[s];return n}const Gs=e=>e?gl(e)?bs(e):Gs(e.parent):null,mn=pe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Gs(e.parent),$root:e=>Gs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Zi(e),$forceUpdate:e=>e.f||(e.f=()=>{Sr(e.update)}),$nextTick:e=>e.n||(e.n=In.bind(e.proxy)),$watch:e=>Cu.bind(e)}),Ms=(e,t)=>e!==ie&&!e.__isScriptSetup&&te(e,t),su={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(Ms(s,t))return i[t]=1,s[t];if(r!==ie&&te(r,t))return i[t]=2,r[t];if((a=e.propsOptions[0])&&te(a,t))return i[t]=3,o[t];if(n!==ie&&te(n,t))return i[t]=4,n[t];qs&&(i[t]=0)}}const u=mn[t];let f,h;if(u)return t==="$attrs"&&be(e.attrs,"get",""),u(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==ie&&te(n,t))return i[t]=4,n[t];if(h=c.config.globalProperties,te(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return Ms(r,t)?(r[t]=n,!0):s!==ie&&te(s,t)?(s[t]=n,!0):te(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==ie&&te(e,i)||Ms(t,i)||(l=o[0])&&te(l,i)||te(s,i)||te(mn,i)||te(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:te(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function wd(){return Yi().slots}function Ed(){return Yi().attrs}function Yi(e){const t=Pt();return t.setupContext||(t.setupContext=vl(t))}function Qr(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let qs=!0;function ru(e){const t=Zi(e),n=e.proxy,s=e.ctx;qs=!1,t.beforeCreate&&Jr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:a,created:u,beforeMount:f,mounted:h,beforeUpdate:g,updated:v,activated:x,deactivated:F,beforeDestroy:A,beforeUnmount:S,destroyed:C,unmounted:E,render:D,renderTracked:W,renderTriggered:U,errorCaptured:H,serverPrefetch:T,expose:k,inheritAttrs:Q,components:L,directives:Y,filters:de}=t;if(a&&ou(a,s,null),i)for(const z in i){const Z=i[z];q(Z)&&(s[z]=Z.bind(n))}if(r){const z=r.call(n,n);se(z)&&(e.data=Pn(z))}if(qs=!0,o)for(const z in o){const Z=o[z],et=q(Z)?Z.bind(n,n):q(Z.get)?Z.get.bind(n,n):Be,ht=!q(Z)&&q(Z.set)?Z.set.bind(n):Be,qe=we({get:et,set:ht});Object.defineProperty(s,z,{enumerable:!0,configurable:!0,get:()=>qe.value,set:Te=>qe.value=Te})}if(l)for(const z in l)Xi(l[z],s,n,z);if(c){const z=q(c)?c.call(n):c;Reflect.ownKeys(z).forEach(Z=>{Kn(Z,z[Z])})}u&&Jr(u,e,"c");function re(z,Z){V(Z)?Z.forEach(et=>z(et.bind(n))):Z&&z(Z.bind(n))}if(re(Jc,f),re(vs,h),re(Yc,g),re(Er,v),re(qc,x),re(zc,F),re(tu,H),re(eu,W),re(Zc,U),re(xr,S),re(zi,E),re(Xc,T),V(k))if(k.length){const z=e.exposed||(e.exposed={});k.forEach(Z=>{Object.defineProperty(z,Z,{get:()=>n[Z],set:et=>n[Z]=et,enumerable:!0})})}else e.exposed||(e.exposed={});D&&e.render===Be&&(e.render=D),Q!=null&&(e.inheritAttrs=Q),L&&(e.components=L),Y&&(e.directives=Y),T&&Gi(e)}function ou(e,t,n=Be){V(e)&&(e=zs(e));for(const s in e){const r=e[s];let o;se(r)?"default"in r?o=je(r.from||s,r.default,!0):o=je(r.from||s):o=je(r),fe(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function Jr(e,t,n){We(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Xi(e,t,n,s){let r=s.includes(".")?al(n,s):()=>n[s];if(ae(e)){const o=t[e];q(o)&&ye(r,o)}else if(q(e))ye(r,e.bind(n));else if(se(e))if(V(e))e.forEach(o=>Xi(o,t,n,s));else{const o=q(e.handler)?e.handler.bind(n):t[e.handler];q(o)&&ye(r,o,e)}}function Zi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>Zn(c,a,i,!0)),Zn(c,t,i)),se(t)&&o.set(t,c),c}function Zn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Zn(e,o,n,!0),r&&r.forEach(i=>Zn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=iu[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const iu={data:Yr,props:Xr,emits:Xr,methods:an,computed:an,beforeCreate:Ce,created:Ce,beforeMount:Ce,mounted:Ce,beforeUpdate:Ce,updated:Ce,beforeDestroy:Ce,beforeUnmount:Ce,destroyed:Ce,unmounted:Ce,activated:Ce,deactivated:Ce,errorCaptured:Ce,serverPrefetch:Ce,components:an,directives:an,watch:cu,provide:Yr,inject:lu};function Yr(e,t){return t?e?function(){return pe(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function lu(e,t){return an(zs(e),zs(t))}function zs(e){if(V(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}function fu(){return!!(Pt()||Dt)}const tl={},nl=()=>Object.create(tl),sl=e=>Object.getPrototypeOf(e)===tl;function du(e,t,n,s=!1){const r={},o=nl();e.propsDefaults=Object.create(null),rl(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:Ri(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function hu(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=J(r),[c]=e.propsOptions;let a=!1;if((s||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let f=0;f{c=!0;const[h,g]=ol(f,t,!0);pe(i,h),g&&l.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!c)return se(e)&&s.set(e,Wt),Wt;if(V(o))for(let u=0;ue==="_"||e==="__"||e==="_ctx"||e==="$stable",Or=e=>V(e)?e.map(Ze):[Ze(e)],gu=(e,t,n)=>{if(t._n)return t;const s=Bc((...r)=>Or(t(...r)),n);return s._c=!1,s},il=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Tr(r))continue;const o=e[r];if(q(o))t[r]=gu(r,o,s);else if(o!=null){const i=Or(o);t[r]=()=>i}}},ll=(e,t)=>{const n=Or(t);e.slots.default=()=>n},cl=(e,t,n)=>{for(const s in t)(n||!Tr(s))&&(e[s]=t[s])},mu=(e,t,n)=>{const s=e.slots=nl();if(e.vnode.shapeFlag&32){const r=t.__;r&&ks(s,"__",r,!0);const o=t._;o?(cl(s,t,n),n&&ks(s,"_",o,!0)):il(t,s)}else t&&ll(e,t)},vu=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ie;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:cl(r,t,n):(o=!t.$stable,il(t,r)),i=t}else t&&(ll(e,t),i={default:1});if(o)for(const l in r)!Tr(l)&&i[l]==null&&delete r[l]},he=Mu;function yu(e){return _u(e)}function _u(e,t){const n=cs();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:u,parentNode:f,nextSibling:h,setScopeId:g=Be,insertStaticContent:v}=e,x=(d,p,m,y=null,w=null,b=null,I=void 0,P=null,O=!!p.dynamicChildren)=>{if(d===p)return;d&&!wt(d,p)&&(y=_(d),Te(d,w,b,!0),d=null),p.patchFlag===-2&&(O=!1,p.dynamicChildren=null);const{type:R,ref:K,shapeFlag:N}=p;switch(R){case _s:F(d,p,m,y);break;case me:A(d,p,m,y);break;case Un:d==null&&S(p,m,y,I);break;case Ae:L(d,p,m,y,w,b,I,P,O);break;default:N&1?D(d,p,m,y,w,b,I,P,O):N&6?Y(d,p,m,y,w,b,I,P,O):(N&64||N&128)&&R.process(d,p,m,y,w,b,I,P,O,j)}K!=null&&w?gn(K,d&&d.ref,b,p||d,!p):K==null&&d&&d.ref!=null&&gn(d.ref,null,b,d,!0)},F=(d,p,m,y)=>{if(d==null)s(p.el=l(p.children),m,y);else{const w=p.el=d.el;p.children!==d.children&&a(w,p.children)}},A=(d,p,m,y)=>{d==null?s(p.el=c(p.children||""),m,y):p.el=d.el},S=(d,p,m,y)=>{[d.el,d.anchor]=v(d.children,p,m,y,d.el,d.anchor)},C=({el:d,anchor:p},m,y)=>{let w;for(;d&&d!==p;)w=h(d),s(d,m,y),d=w;s(p,m,y)},E=({el:d,anchor:p})=>{let m;for(;d&&d!==p;)m=h(d),r(d),d=m;r(p)},D=(d,p,m,y,w,b,I,P,O)=>{p.type==="svg"?I="svg":p.type==="math"&&(I="mathml"),d==null?W(p,m,y,w,b,I,P,O):T(d,p,w,b,I,P,O)},W=(d,p,m,y,w,b,I,P)=>{let O,R;const{props:K,shapeFlag:N,transition:B,dirs:G}=d;if(O=d.el=i(d.type,b,K&&K.is,K),N&8?u(O,d.children):N&16&&H(d.children,O,null,y,w,Ns(d,b),I,P),G&&At(d,null,y,"created"),U(O,d,d.scopeId,I,y),K){for(const le in K)le!=="value"&&!fn(le)&&o(O,le,null,K[le],b,y);"value"in K&&o(O,"value",null,K.value,b),(R=K.onVnodeBeforeMount)&&$e(R,y,d)}G&&At(d,null,y,"beforeMount");const X=bu(w,B);X&&B.beforeEnter(O),s(O,p,m),((R=K&&K.onVnodeMounted)||X||G)&&he(()=>{R&&$e(R,y,d),X&&B.enter(O),G&&At(d,null,y,"mounted")},w)},U=(d,p,m,y,w)=>{if(m&&g(d,m),y)for(let b=0;b{for(let R=O;R{const P=p.el=d.el;let{patchFlag:O,dynamicChildren:R,dirs:K}=p;O|=d.patchFlag&16;const N=d.props||ie,B=p.props||ie;let G;if(m&&It(m,!1),(G=B.onVnodeBeforeUpdate)&&$e(G,m,p,d),K&&At(p,d,m,"beforeUpdate"),m&&It(m,!0),(N.innerHTML&&B.innerHTML==null||N.textContent&&B.textContent==null)&&u(P,""),R?k(d.dynamicChildren,R,P,m,y,Ns(p,w),b):I||Z(d,p,P,null,m,y,Ns(p,w),b,!1),O>0){if(O&16)Q(P,N,B,m,w);else if(O&2&&N.class!==B.class&&o(P,"class",null,B.class,w),O&4&&o(P,"style",N.style,B.style,w),O&8){const X=p.dynamicProps;for(let le=0;le{G&&$e(G,m,p,d),K&&At(p,d,m,"updated")},y)},k=(d,p,m,y,w,b,I)=>{for(let P=0;P{if(p!==m){if(p!==ie)for(const b in p)!fn(b)&&!(b in m)&&o(d,b,p[b],null,w,y);for(const b in m){if(fn(b))continue;const I=m[b],P=p[b];I!==P&&b!=="value"&&o(d,b,P,I,w,y)}"value"in m&&o(d,"value",p.value,m.value,w)}},L=(d,p,m,y,w,b,I,P,O)=>{const R=p.el=d?d.el:l(""),K=p.anchor=d?d.anchor:l("");let{patchFlag:N,dynamicChildren:B,slotScopeIds:G}=p;G&&(P=P?P.concat(G):G),d==null?(s(R,m,y),s(K,m,y),H(p.children||[],m,K,w,b,I,P,O)):N>0&&N&64&&B&&d.dynamicChildren?(k(d.dynamicChildren,B,m,w,b,I,P),(p.key!=null||w&&p===w.subTree)&&Pr(d,p,!0)):Z(d,p,m,K,w,b,I,P,O)},Y=(d,p,m,y,w,b,I,P,O)=>{p.slotScopeIds=P,d==null?p.shapeFlag&512?w.ctx.activate(p,m,y,I,O):de(p,m,y,w,b,I,O):xe(d,p,O)},de=(d,p,m,y,w,b,I)=>{const P=d.component=Hu(d,y,w);if(gs(d)&&(P.ctx.renderer=j),ku(P,!1,I),P.asyncDep){if(w&&w.registerDep(P,re,I),!d.el){const O=P.subTree=Ee(me);A(null,O,p,m),d.placeholder=O.el}}else re(P,d,p,m,w,b,I)},xe=(d,p,m)=>{const y=p.component=d.component;if(Au(d,p,m))if(y.asyncDep&&!y.asyncResolved){z(y,p,m);return}else y.next=p,y.update();else p.el=d.el,y.vnode=p},re=(d,p,m,y,w,b,I)=>{const P=()=>{if(d.isMounted){let{next:N,bu:B,u:G,parent:X,vnode:le}=d;{const Qe=ul(d);if(Qe){N&&(N.el=le.el,z(d,N,I)),Qe.asyncDep.then(()=>{d.isUnmounted||P()});return}}let ne=N,Oe;It(d,!1),N?(N.el=le.el,z(d,N,I)):N=le,B&&qt(B),(Oe=N.props&&N.props.onVnodeBeforeUpdate)&&$e(Oe,X,N,le),It(d,!0);const Pe=eo(d),ze=d.subTree;d.subTree=Pe,x(ze,Pe,f(ze.el),_(ze),d,w,b),N.el=Pe.el,ne===null&&Iu(d,Pe.el),G&&he(G,w),(Oe=N.props&&N.props.onVnodeUpdated)&&he(()=>$e(Oe,X,N,le),w)}else{let N;const{el:B,props:G}=p,{bm:X,m:le,parent:ne,root:Oe,type:Pe}=d,ze=$t(p);It(d,!1),X&&qt(X),!ze&&(N=G&&G.onVnodeBeforeMount)&&$e(N,ne,p),It(d,!0);{Oe.ce&&Oe.ce._def.shadowRoot!==!1&&Oe.ce._injectChildStyle(Pe);const Qe=d.subTree=eo(d);x(null,Qe,m,y,d,w,b),p.el=Qe.el}if(le&&he(le,w),!ze&&(N=G&&G.onVnodeMounted)){const Qe=p;he(()=>$e(N,ne,Qe),w)}(p.shapeFlag&256||ne&&$t(ne.vnode)&&ne.vnode.shapeFlag&256)&&d.a&&he(d.a,w),d.isMounted=!0,p=m=y=null}};d.scope.on();const O=d.effect=new di(P);d.scope.off();const R=d.update=O.run.bind(O),K=d.job=O.runIfDirty.bind(O);K.i=d,K.id=d.uid,O.scheduler=()=>Sr(K),It(d,!0),R()},z=(d,p,m)=>{p.component=d;const y=d.vnode.props;d.vnode=p,d.next=null,hu(d,p.props,y,m),vu(d,p.children,m),ct(),Kr(d),ut()},Z=(d,p,m,y,w,b,I,P,O=!1)=>{const R=d&&d.children,K=d?d.shapeFlag:0,N=p.children,{patchFlag:B,shapeFlag:G}=p;if(B>0){if(B&128){ht(R,N,m,y,w,b,I,P,O);return}else if(B&256){et(R,N,m,y,w,b,I,P,O);return}}G&8?(K&16&&Fe(R,w,b),N!==R&&u(m,N)):K&16?G&16?ht(R,N,m,y,w,b,I,P,O):Fe(R,w,b,!0):(K&8&&u(m,""),G&16&&H(N,m,y,w,b,I,P,O))},et=(d,p,m,y,w,b,I,P,O)=>{d=d||Wt,p=p||Wt;const R=d.length,K=p.length,N=Math.min(R,K);let B;for(B=0;BK?Fe(d,w,b,!0,!1,N):H(p,m,y,w,b,I,P,O,N)},ht=(d,p,m,y,w,b,I,P,O)=>{let R=0;const K=p.length;let N=d.length-1,B=K-1;for(;R<=N&&R<=B;){const G=d[R],X=p[R]=O?bt(p[R]):Ze(p[R]);if(wt(G,X))x(G,X,m,null,w,b,I,P,O);else break;R++}for(;R<=N&&R<=B;){const G=d[N],X=p[B]=O?bt(p[B]):Ze(p[B]);if(wt(G,X))x(G,X,m,null,w,b,I,P,O);else break;N--,B--}if(R>N){if(R<=B){const G=B+1,X=GB)for(;R<=N;)Te(d[R],w,b,!0),R++;else{const G=R,X=R,le=new Map;for(R=X;R<=B;R++){const Ie=p[R]=O?bt(p[R]):Ze(p[R]);Ie.key!=null&&le.set(Ie.key,R)}let ne,Oe=0;const Pe=B-X+1;let ze=!1,Qe=0;const sn=new Array(Pe);for(R=0;R=Pe){Te(Ie,w,b,!0);continue}let Je;if(Ie.key!=null)Je=le.get(Ie.key);else for(ne=X;ne<=B;ne++)if(sn[ne-X]===0&&wt(Ie,p[ne])){Je=ne;break}Je===void 0?Te(Ie,w,b,!0):(sn[Je-X]=R+1,Je>=Qe?Qe=Je:ze=!0,x(Ie,p[Je],m,null,w,b,I,P,O),Oe++)}const $r=ze?Su(sn):Wt;for(ne=$r.length-1,R=Pe-1;R>=0;R--){const Ie=X+R,Je=p[Ie],Dr=p[Ie+1],jr=Ie+1{const{el:b,type:I,transition:P,children:O,shapeFlag:R}=d;if(R&6){qe(d.component.subTree,p,m,y);return}if(R&128){d.suspense.move(p,m,y);return}if(R&64){I.move(d,p,m,j);return}if(I===Ae){s(b,p,m);for(let N=0;NP.enter(b),w);else{const{leave:N,delayLeave:B,afterLeave:G}=P,X=()=>{d.ctx.isUnmounted?r(b):s(b,p,m)},le=()=>{N(b,()=>{X(),G&&G()})};B?B(b,X,le):le()}else s(b,p,m)},Te=(d,p,m,y=!1,w=!1)=>{const{type:b,props:I,ref:P,children:O,dynamicChildren:R,shapeFlag:K,patchFlag:N,dirs:B,cacheIndex:G}=d;if(N===-2&&(w=!1),P!=null&&(ct(),gn(P,null,m,d,!0),ut()),G!=null&&(p.renderCache[G]=void 0),K&256){p.ctx.deactivate(d);return}const X=K&1&&B,le=!$t(d);let ne;if(le&&(ne=I&&I.onVnodeBeforeUnmount)&&$e(ne,p,d),K&6)Nn(d.component,m,y);else{if(K&128){d.suspense.unmount(m,y);return}X&&At(d,null,p,"beforeUnmount"),K&64?d.type.remove(d,p,m,j,y):R&&!R.hasOnce&&(b!==Ae||N>0&&N&64)?Fe(R,p,m,!1,!0):(b===Ae&&N&384||!w&&K&16)&&Fe(O,p,m),y&&Vt(d)}(le&&(ne=I&&I.onVnodeUnmounted)||X)&&he(()=>{ne&&$e(ne,p,d),X&&At(d,null,p,"unmounted")},m)},Vt=d=>{const{type:p,el:m,anchor:y,transition:w}=d;if(p===Ae){Ht(m,y);return}if(p===Un){E(d);return}const b=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(d.shapeFlag&1&&w&&!w.persisted){const{leave:I,delayLeave:P}=w,O=()=>I(m,b);P?P(d.el,b,O):O()}else b()},Ht=(d,p)=>{let m;for(;d!==p;)m=h(d),r(d),d=m;r(p)},Nn=(d,p,m)=>{const{bum:y,scope:w,job:b,subTree:I,um:P,m:O,a:R,parent:K,slots:{__:N}}=d;es(O),es(R),y&&qt(y),K&&V(N)&&N.forEach(B=>{K.renderCache[B]=void 0}),w.stop(),b&&(b.flags|=8,Te(I,d,p,m)),P&&he(P,p),he(()=>{d.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&d.asyncDep&&!d.asyncResolved&&d.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},Fe=(d,p,m,y=!1,w=!1,b=0)=>{for(let I=b;I{if(d.shapeFlag&6)return _(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const p=h(d.anchor||d.el),m=p&&p[$i];return m?h(m):p};let $=!1;const M=(d,p,m)=>{d==null?p._vnode&&Te(p._vnode,null,null,!0):x(p._vnode||null,d,p,null,null,null,m),p._vnode=d,$||($=!0,Kr(),Ni(),$=!1)},j={p:x,um:Te,m:qe,r:Vt,mt:de,mc:H,pc:Z,pbc:k,n:_,o:e};return{render:M,hydrate:void 0,createApp:au(M)}}function Ns({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function It({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function bu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Pr(e,t,n=!1){const s=e.children,r=t.children;if(V(s)&&V(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function ul(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ul(t)}function es(e){if(e)for(let t=0;tje(wu);function xu(e,t){return Ar(e,null,t)}function ye(e,t,n){return Ar(e,t,n)}function Ar(e,t,n=ie){const{immediate:s,deep:r,flush:o,once:i}=n,l=pe({},n),c=t&&s||!t&&o!=="post";let a;if(Rn){if(o==="sync"){const g=Eu();a=g.__watcherHandles||(g.__watcherHandles=[])}else if(!c){const g=()=>{};return g.stop=Be,g.resume=Be,g.pause=Be,g}}const u=Se;l.call=(g,v,x)=>We(g,u,v,x);let f=!1;o==="post"?l.scheduler=g=>{he(g,u&&u.suspense)}:o!=="sync"&&(f=!0,l.scheduler=(g,v)=>{v?g():Sr(g)}),l.augmentJob=g=>{t&&(g.flags|=4),f&&(g.flags|=2,u&&(g.id=u.uid,g.i=u))};const h=jc(e,t,l);return Rn&&(a?a.push(h):c&&h()),h}function Cu(e,t,n){const s=this.proxy,r=ae(e)?e.includes(".")?al(s,e):()=>s[e]:e.bind(s,s);let o;q(t)?o=t:(o=t.handler,n=t);const i=Mn(this),l=Ar(r,o.bind(s),n);return i(),l}function al(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ke(t)}Modifiers`]||e[`${Ot(t)}Modifiers`];function Tu(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ie;let r=n;const o=t.startsWith("update:"),i=o&&Ru(s,t.slice(7));i&&(i.trim&&(r=n.map(u=>ae(u)?u.trim():u)),i.number&&(r=n.map(qn)));let l,c=s[l=kn(t)]||s[l=kn(ke(t))];!c&&o&&(c=s[l=kn(Ot(t))]),c&&We(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,We(a,e,6,r)}}function fl(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!q(e)){const c=a=>{const u=fl(a,t,!0);u&&(l=!0,pe(i,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(se(e)&&s.set(e,null),null):(V(o)?o.forEach(c=>i[c]=null):pe(i,o),se(e)&&s.set(e,i),i)}function ys(e,t){return!e||!os(t)?!1:(t=t.slice(2).replace(/Once$/,""),te(e,t[0].toLowerCase()+t.slice(1))||te(e,Ot(t))||te(e,t))}function eo(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:a,renderCache:u,props:f,data:h,setupState:g,ctx:v,inheritAttrs:x}=e,F=Xn(e);let A,S;try{if(n.shapeFlag&4){const E=r||s,D=E;A=Ze(a.call(D,E,u,f,g,h,v)),S=l}else{const E=t;A=Ze(E.length>1?E(f,{attrs:l,slots:i,emit:c}):E(f,null)),S=t.props?l:Ou(l)}}catch(E){vn.length=0,ps(E,e,1),A=Ee(me)}let C=A;if(S&&x!==!1){const E=Object.keys(S),{shapeFlag:D}=C;E.length&&D&7&&(o&&E.some(ur)&&(S=Pu(S,o)),C=at(C,S,!1,!0))}return n.dirs&&(C=at(C,null,!1,!0),C.dirs=C.dirs?C.dirs.concat(n.dirs):n.dirs),n.transition&&Ct(C,n.transition),A=C,Xn(F),A}const Ou=e=>{let t;for(const n in e)(n==="class"||n==="style"||os(n))&&((t||(t={}))[n]=e[n]);return t},Pu=(e,t)=>{const n={};for(const s in e)(!ur(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Au(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?to(s,i,a):!!i;if(c&8){const u=t.dynamicProps;for(let f=0;fe.__isSuspense;function Mu(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):kc(e)}const Ae=Symbol.for("v-fgt"),_s=Symbol.for("v-txt"),me=Symbol.for("v-cmt"),Un=Symbol.for("v-stc"),vn=[];let Me=null;function Js(e=!1){vn.push(Me=e?null:[])}function Nu(){vn.pop(),Me=vn[vn.length-1]||null}let Cn=1;function no(e,t=!1){Cn+=e,e<0&&Me&&t&&(Me.hasOnce=!0)}function dl(e){return e.dynamicChildren=Cn>0?Me||Wt:null,Nu(),Cn>0&&Me&&Me.push(e),e}function xd(e,t,n,s,r,o){return dl(pl(e,t,n,s,r,o,!0))}function Ys(e,t,n,s,r){return dl(Ee(e,t,n,s,r,!0))}function Qt(e){return e?e.__v_isVNode===!0:!1}function wt(e,t){return e.type===t.type&&e.key===t.key}const hl=({key:e})=>e??null,Wn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ae(e)||fe(e)||q(e)?{i:ve,r:e,k:t,f:!!n}:e:null);function pl(e,t=null,n=null,s=0,r=null,o=e===Ae?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&hl(t),ref:t&&Wn(t),scopeId:Li,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ve};return l?(Ir(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ae(n)?8:16),Cn>0&&!i&&Me&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Me.push(c),c}const Ee=Fu;function Fu(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Qi)&&(e=me),Qt(e)){const l=at(e,t,!0);return n&&Ir(l,n),Cn>0&&!o&&Me&&(l.shapeFlag&6?Me[Me.indexOf(e)]=l:Me.push(l)),l.patchFlag=-2,l}if(Uu(e)&&(e=e.__vccOpts),t){t=Lu(t);let{class:l,style:c}=t;l&&!ae(l)&&(t.class=as(l)),se(c)&&(_r(c)&&!V(c)&&(c=pe({},c)),t.style=us(c))}const i=ae(e)?1:ts(e)?128:Di(e)?64:se(e)?4:q(e)?2:0;return pl(e,t,n,s,r,i,o,!0)}function Lu(e){return e?_r(e)||sl(e)?pe({},e):e:null}function at(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,a=t?Du(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&hl(a),ref:t&&t.ref?n&&o?V(o)?o.concat(Wn(t)):[o,Wn(t)]:Wn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ae?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&at(e.ssContent),ssFallback:e.ssFallback&&at(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Ct(u,c.clone(u)),u}function $u(e=" ",t=0){return Ee(_s,null,e,t)}function Cd(e,t){const n=Ee(Un,null,e);return n.staticCount=t,n}function Rd(e="",t=!1){return t?(Js(),Ys(me,null,e)):Ee(me,null,e)}function Ze(e){return e==null||typeof e=="boolean"?Ee(me):V(e)?Ee(Ae,null,e.slice()):Qt(e)?bt(e):Ee(_s,null,String(e))}function bt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:at(e)}function Ir(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(V(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ir(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!sl(t)?t._ctx=ve:r===3&&ve&&(ve.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:ve},n=32):(t=String(t),s&64?(n=16,t=[$u(t)]):n=8);e.children=t,e.shapeFlag|=n}function Du(...e){const t={};for(let n=0;nSe||ve;let ns,Xs;{const e=cs(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};ns=t("__VUE_INSTANCE_SETTERS__",n=>Se=n),Xs=t("__VUE_SSR_SETTERS__",n=>Rn=n)}const Mn=e=>{const t=Se;return ns(e),e.scope.on(),()=>{e.scope.off(),ns(t)}},so=()=>{Se&&Se.scope.off(),ns(null)};function gl(e){return e.vnode.shapeFlag&4}let Rn=!1;function ku(e,t=!1,n=!1){t&&Xs(t);const{props:s,children:r}=e.vnode,o=gl(e);du(e,s,o,t),mu(e,r,n||t);const i=o?Bu(e,t):void 0;return t&&Xs(!1),i}function Bu(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,su);const{setup:s}=n;if(s){ct();const r=e.setupContext=s.length>1?vl(e):null,o=Mn(e),i=An(s,e,0,[e.props,r]),l=si(i);if(ut(),o(),(l||e.sp)&&!$t(e)&&Gi(e),l){if(i.then(so,so),t)return i.then(c=>{ro(e,c)}).catch(c=>{ps(c,e,0)});e.asyncDep=i}else ro(e,i)}else ml(e)}function ro(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=Pi(t)),ml(e)}function ml(e,t,n){const s=e.type;e.render||(e.render=s.render||Be);{const r=Mn(e);ct();try{ru(e)}finally{ut(),r()}}}const Ku={get(e,t){return be(e,"get",""),e[t]}};function vl(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ku),slots:e.slots,emit:e.emit,expose:t}}function bs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Pi(br(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in mn)return mn[n](e)},has(t,n){return n in t||n in mn}})):e.proxy}function Zs(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Uu(e){return q(e)&&"__vccOpts"in e}const we=(e,t)=>$c(e,t,Rn);function Mr(e,t,n){const s=arguments.length;return s===2?se(t)&&!V(t)?Qt(t)?Ee(e,null,[t]):Ee(e,t):Ee(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Qt(n)&&(n=[n]),Ee(e,t,n))}const Wu="3.5.18",Td=Be;/** -* @vue/runtime-dom v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let er;const oo=typeof window<"u"&&window.trustedTypes;if(oo)try{er=oo.createPolicy("vue",{createHTML:e=>e})}catch{}const yl=er?e=>er.createHTML(e):e=>e,Gu="http://www.w3.org/2000/svg",qu="http://www.w3.org/1998/Math/MathML",st=typeof document<"u"?document:null,io=st&&st.createElement("template"),zu={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?st.createElementNS(Gu,e):t==="mathml"?st.createElementNS(qu,e):n?st.createElement(e,{is:n}):st.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{io.innerHTML=yl(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=io.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},pt="transition",on="animation",Jt=Symbol("_vtc"),_l={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},bl=pe({},ki,_l),Qu=e=>(e.displayName="Transition",e.props=bl,e),Od=Qu((e,{slots:t})=>Mr(Wc,Sl(e),t)),Mt=(e,t=[])=>{V(e)?e.forEach(n=>n(...t)):e&&e(...t)},lo=e=>e?V(e)?e.some(t=>t.length>1):e.length>1:!1;function Sl(e){const t={};for(const L in e)L in _l||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:u=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,v=Ju(r),x=v&&v[0],F=v&&v[1],{onBeforeEnter:A,onEnter:S,onEnterCancelled:C,onLeave:E,onLeaveCancelled:D,onBeforeAppear:W=A,onAppear:U=S,onAppearCancelled:H=C}=t,T=(L,Y,de,xe)=>{L._enterCancelled=xe,mt(L,Y?u:l),mt(L,Y?a:i),de&&de()},k=(L,Y)=>{L._isLeaving=!1,mt(L,f),mt(L,g),mt(L,h),Y&&Y()},Q=L=>(Y,de)=>{const xe=L?U:S,re=()=>T(Y,L,de);Mt(xe,[Y,re]),co(()=>{mt(Y,L?c:o),Ye(Y,L?u:l),lo(xe)||uo(Y,s,x,re)})};return pe(t,{onBeforeEnter(L){Mt(A,[L]),Ye(L,o),Ye(L,i)},onBeforeAppear(L){Mt(W,[L]),Ye(L,c),Ye(L,a)},onEnter:Q(!1),onAppear:Q(!0),onLeave(L,Y){L._isLeaving=!0;const de=()=>k(L,Y);Ye(L,f),L._enterCancelled?(Ye(L,h),tr()):(tr(),Ye(L,h)),co(()=>{L._isLeaving&&(mt(L,f),Ye(L,g),lo(E)||uo(L,s,F,de))}),Mt(E,[L,de])},onEnterCancelled(L){T(L,!1,void 0,!0),Mt(C,[L])},onAppearCancelled(L){T(L,!0,void 0,!0),Mt(H,[L])},onLeaveCancelled(L){k(L),Mt(D,[L])}})}function Ju(e){if(e==null)return null;if(se(e))return[Fs(e.enter),Fs(e.leave)];{const t=Fs(e);return[t,t]}}function Fs(e){return Zl(e)}function Ye(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Jt]||(e[Jt]=new Set)).add(t)}function mt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Jt];n&&(n.delete(t),n.size||(e[Jt]=void 0))}function co(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Yu=0;function uo(e,t,n,s){const r=e._endId=++Yu,o=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=wl(e,t);if(!i)return s();const a=i+"end";let u=0;const f=()=>{e.removeEventListener(a,h),o()},h=g=>{g.target===e&&++u>=c&&f()};setTimeout(()=>{u(n[v]||"").split(", "),r=s(`${pt}Delay`),o=s(`${pt}Duration`),i=ao(r,o),l=s(`${on}Delay`),c=s(`${on}Duration`),a=ao(l,c);let u=null,f=0,h=0;t===pt?i>0&&(u=pt,f=i,h=o.length):t===on?a>0&&(u=on,f=a,h=c.length):(f=Math.max(i,a),u=f>0?i>a?pt:on:null,h=u?u===pt?o.length:c.length:0);const g=u===pt&&/\b(transform|all)(,|$)/.test(s(`${pt}Property`).toString());return{type:u,timeout:f,propCount:h,hasTransform:g}}function ao(e,t){for(;e.lengthfo(n)+fo(e[s])))}function fo(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function tr(){return document.body.offsetHeight}function Xu(e,t,n){const s=e[Jt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const ss=Symbol("_vod"),El=Symbol("_vsh"),Pd={beforeMount(e,{value:t},{transition:n}){e[ss]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):ln(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),ln(e,!0),s.enter(e)):s.leave(e,()=>{ln(e,!1)}):ln(e,t))},beforeUnmount(e,{value:t}){ln(e,t)}};function ln(e,t){e.style.display=t?e[ss]:"none",e[El]=!t}const Zu=Symbol(""),ea=/(^|;)\s*display\s*:/;function ta(e,t,n){const s=e.style,r=ae(n);let o=!1;if(n&&!r){if(t)if(ae(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Gn(s,l,"")}else for(const i in t)n[i]==null&&Gn(s,i,"");for(const i in n)i==="display"&&(o=!0),Gn(s,i,n[i])}else if(r){if(t!==n){const i=s[Zu];i&&(n+=";"+i),s.cssText=n,o=ea.test(n)}}else t&&e.removeAttribute("style");ss in e&&(e[ss]=o?s.display:"",e[El]&&(s.display="none"))}const ho=/\s*!important$/;function Gn(e,t,n){if(V(n))n.forEach(s=>Gn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=na(e,t);ho.test(n)?e.setProperty(Ot(s),n.replace(ho,""),"important"):e[s]=n}}const po=["Webkit","Moz","ms"],Ls={};function na(e,t){const n=Ls[t];if(n)return n;let s=ke(t);if(s!=="filter"&&s in e)return Ls[t]=s;s=ls(s);for(let r=0;r$s||(ia.then(()=>$s=0),$s=Date.now());function ca(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;We(ua(s,n.value),t,5,[s])};return n.value=e,n.attached=la(),n}function ua(e,t){if(V(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const bo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,aa=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?Xu(e,s,i):t==="style"?ta(e,n,s):os(t)?ur(t)||ra(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):fa(e,t,s,i))?(vo(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&mo(e,t,s,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ae(s))?vo(e,ke(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),mo(e,t,s,i))};function fa(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&bo(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return bo(t)&&ae(n)?!1:t in e}const xl=new WeakMap,Cl=new WeakMap,rs=Symbol("_moveCb"),So=Symbol("_enterCb"),da=e=>(delete e.props.mode,e),ha=da({name:"TransitionGroup",props:pe({},bl,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Pt(),s=Hi();let r,o;return Er(()=>{if(!r.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!va(r[0].el,n.vnode.el,i)){r=[];return}r.forEach(pa),r.forEach(ga);const l=r.filter(ma);tr(),l.forEach(c=>{const a=c.el,u=a.style;Ye(a,i),u.transform=u.webkitTransform=u.transitionDuration="";const f=a[rs]=h=>{h&&h.target!==a||(!h||/transform$/.test(h.propertyName))&&(a.removeEventListener("transitionend",f),a[rs]=null,mt(a,i))};a.addEventListener("transitionend",f)}),r=[]}),()=>{const i=J(e),l=Sl(i);let c=i.tag||Ae;if(r=[],o)for(let a=0;a{l.split(/\s+/).forEach(c=>c&&s.classList.remove(c))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(s);const{hasTransform:i}=wl(s);return o.removeChild(s),i}const Rt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?n=>qt(t,n):t};function ya(e){e.target.composing=!0}function wo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ve=Symbol("_assign"),Eo={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Ve]=Rt(r);const o=s||r.props&&r.props.type==="number";it(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=qn(l)),e[Ve](l)}),n&&it(e,"change",()=>{e.value=e.value.trim()}),t||(it(e,"compositionstart",ya),it(e,"compositionend",wo),it(e,"change",wo))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[Ve]=Rt(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?qn(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},_a={deep:!0,created(e,t,n){e[Ve]=Rt(n),it(e,"change",()=>{const s=e._modelValue,r=Yt(e),o=e.checked,i=e[Ve];if(V(s)){const l=dr(s,r),c=l!==-1;if(o&&!c)i(s.concat(r));else if(!o&&c){const a=[...s];a.splice(l,1),i(a)}}else if(tn(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(Rl(e,o))})},mounted:xo,beforeUpdate(e,t,n){e[Ve]=Rt(n),xo(e,t,n)}};function xo(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(V(t))r=dr(t,s.props.value)>-1;else if(tn(t))r=t.has(s.props.value);else{if(t===n)return;r=jt(t,Rl(e,!0))}e.checked!==r&&(e.checked=r)}const ba={created(e,{value:t},n){e.checked=jt(t,n.props.value),e[Ve]=Rt(n),it(e,"change",()=>{e[Ve](Yt(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[Ve]=Rt(s),t!==n&&(e.checked=jt(t,s.props.value))}},Sa={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=tn(t);it(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?qn(Yt(i)):Yt(i));e[Ve](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,In(()=>{e._assigning=!1})}),e[Ve]=Rt(s)},mounted(e,{value:t}){Co(e,t)},beforeUpdate(e,t,n){e[Ve]=Rt(n)},updated(e,{value:t}){e._assigning||Co(e,t)}};function Co(e,t){const n=e.multiple,s=V(t);if(!(n&&!s&&!tn(t))){for(let r=0,o=e.options.length;rString(a)===String(l)):i.selected=dr(t,l)>-1}else i.selected=t.has(l);else if(jt(Yt(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Yt(e){return"_value"in e?e._value:e.value}function Rl(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Id={created(e,t,n){Hn(e,t,n,null,"created")},mounted(e,t,n){Hn(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){Hn(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){Hn(e,t,n,s,"updated")}};function wa(e,t){switch(e){case"SELECT":return Sa;case"TEXTAREA":return Eo;default:switch(t){case"checkbox":return _a;case"radio":return ba;default:return Eo}}}function Hn(e,t,n,s,r){const i=wa(e.tagName,n.props&&n.props.type)[r];i&&i(e,t,n,s)}const Ea=["ctrl","shift","alt","meta"],xa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ea.some(n=>e[`${n}Key`]&&!t.includes(n))},Md=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const o=Ot(r.key);if(t.some(i=>i===o||Ca[i]===o))return e(r)})},Ra=pe({patchProp:aa},zu);let Ro;function Tl(){return Ro||(Ro=yu(Ra))}const Fd=(...e)=>{Tl().render(...e)},Ld=(...e)=>{const t=Tl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Oa(s);if(!r)return;const o=t._component;!q(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,Ta(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function Ta(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Oa(e){return ae(e)?document.querySelector(e):e}/*! - * pinia v2.3.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */let Ol;const Ss=e=>Ol=e,Pl=Symbol();function nr(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var yn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(yn||(yn={}));function $d(){const e=ai(!0),t=e.run(()=>ue({}));let n=[],s=[];const r=br({install(o){Ss(r),r._a=o,o.provide(Pl,r),o.config.globalProperties.$pinia=r,s.forEach(i=>n.push(i)),s=[]},use(o){return this._a?n.push(o):s.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const Al=()=>{};function To(e,t,n,s=Al){e.push(t);const r=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),s())};return!n&&hr()&&fi(r),r}function Bt(e,...t){e.slice().forEach(n=>{n(...t)})}const Pa=e=>e(),Oo=Symbol(),Ds=Symbol();function sr(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],r=e[n];nr(r)&&nr(s)&&e.hasOwnProperty(n)&&!fe(s)&&!lt(s)?e[n]=sr(r,s):e[n]=s}return e}const Aa=Symbol();function Ia(e){return!nr(e)||!e.hasOwnProperty(Aa)}const{assign:vt}=Object;function Ma(e){return!!(fe(e)&&e.effect)}function Na(e,t,n,s){const{state:r,actions:o,getters:i}=t,l=n.state.value[e];let c;function a(){l||(n.state.value[e]=r?r():{});const u=Ic(n.state.value[e]);return vt(u,o,Object.keys(i||{}).reduce((f,h)=>(f[h]=br(we(()=>{Ss(n);const g=n._s.get(e);return i[h].call(g,g)})),f),{}))}return c=Il(e,a,t,n,s,!0),c}function Il(e,t,n={},s,r,o){let i;const l=vt({actions:{}},n),c={deep:!0};let a,u,f=[],h=[],g;const v=s.state.value[e];!o&&!v&&(s.state.value[e]={}),ue({});let x;function F(H){let T;a=u=!1,typeof H=="function"?(H(s.state.value[e]),T={type:yn.patchFunction,storeId:e,events:g}):(sr(s.state.value[e],H),T={type:yn.patchObject,payload:H,storeId:e,events:g});const k=x=Symbol();In().then(()=>{x===k&&(a=!0)}),u=!0,Bt(f,T,s.state.value[e])}const A=o?function(){const{state:T}=n,k=T?T():{};this.$patch(Q=>{vt(Q,k)})}:Al;function S(){i.stop(),f=[],h=[],s._s.delete(e)}const C=(H,T="")=>{if(Oo in H)return H[Ds]=T,H;const k=function(){Ss(s);const Q=Array.from(arguments),L=[],Y=[];function de(z){L.push(z)}function xe(z){Y.push(z)}Bt(h,{args:Q,name:k[Ds],store:D,after:de,onError:xe});let re;try{re=H.apply(this&&this.$id===e?this:D,Q)}catch(z){throw Bt(Y,z),z}return re instanceof Promise?re.then(z=>(Bt(L,z),z)).catch(z=>(Bt(Y,z),Promise.reject(z))):(Bt(L,re),re)};return k[Oo]=!0,k[Ds]=T,k},E={_p:s,$id:e,$onAction:To.bind(null,h),$patch:F,$reset:A,$subscribe(H,T={}){const k=To(f,H,T.detached,()=>Q()),Q=i.run(()=>ye(()=>s.state.value[e],L=>{(T.flush==="sync"?u:a)&&H({storeId:e,type:yn.direct,events:g},L)},vt({},c,T)));return k},$dispose:S},D=Pn(E);s._s.set(e,D);const U=(s._a&&s._a.runWithContext||Pa)(()=>s._e.run(()=>(i=ai()).run(()=>t({action:C}))));for(const H in U){const T=U[H];if(fe(T)&&!Ma(T)||lt(T))o||(v&&Ia(T)&&(fe(T)?T.value=v[H]:sr(T,v[H])),s.state.value[e][H]=T);else if(typeof T=="function"){const k=C(T,H);U[H]=k,l.actions[H]=T}}return vt(D,U),vt(J(D),U),Object.defineProperty(D,"$state",{get:()=>s.state.value[e],set:H=>{F(T=>{vt(T,H)})}}),s._p.forEach(H=>{vt(D,i.run(()=>H({store:D,app:s._a,pinia:s,options:l})))}),v&&o&&n.hydrate&&n.hydrate(D.$state,v),a=!0,u=!0,D}/*! #__NO_SIDE_EFFECTS__ */function Dd(e,t,n){let s,r;const o=typeof t=="function";typeof e=="string"?(s=e,r=o?n:t):(r=e,s=e.id);function i(l,c){const a=fu();return l=l||(a?je(Pl,null):null),l&&Ss(l),l=Ol,l._s.has(s)||(o?Il(s,t,r,l):Na(s,r,l)),l._s.get(s)}return i.$id=s,i}function jd(e){{const t=J(e),n={};for(const s in t){const r=t[s];r.effect?n[s]=we({get:()=>e[s],set(o){e[s]=o}}):(fe(r)||lt(r))&&(n[s]=Fc(e,s))}return n}}var Fa=Object.defineProperty,La=Object.defineProperties,$a=Object.getOwnPropertyDescriptors,Po=Object.getOwnPropertySymbols,Da=Object.prototype.hasOwnProperty,ja=Object.prototype.propertyIsEnumerable,Ao=(e,t,n)=>t in e?Fa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Va=(e,t)=>{for(var n in t||(t={}))Da.call(t,n)&&Ao(e,n,t[n]);if(Po)for(var n of Po(t))ja.call(t,n)&&Ao(e,n,t[n]);return e},Ha=(e,t)=>La(e,$a(t));function Vd(e,t){var n;const s=Ti();return xu(()=>{s.value=e()},Ha(Va({},t),{flush:(n=void 0)!=null?n:"sync"})),hs(s)}var Io;const ws=typeof window<"u",ka=e=>typeof e<"u",rr=e=>typeof e=="function",Ba=e=>typeof e=="string",Xt=()=>{},Ka=ws&&((Io=window==null?void 0:window.navigator)==null?void 0:Io.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Tt(e){return typeof e=="function"?e():Lt(e)}function Ml(e,t){function n(...s){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(o)})}return n}function Ua(e,t={}){let n,s,r=Xt;const o=l=>{clearTimeout(l),r(),r=Xt};return l=>{const c=Tt(e),a=Tt(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(s&&(o(s),s=null),Promise.resolve(l())):new Promise((u,f)=>{r=t.rejectOnCancel?f:u,a&&!s&&(s=setTimeout(()=>{n&&o(n),s=null,u(l())},a)),n=setTimeout(()=>{s&&o(s),s=null,u(l())},c)})}}function Wa(e,t=!0,n=!0,s=!1){let r=0,o,i=!0,l=Xt,c;const a=()=>{o&&(clearTimeout(o),o=void 0,l(),l=Xt)};return f=>{const h=Tt(e),g=Date.now()-r,v=()=>c=f();return a(),h<=0?(r=Date.now(),v()):(g>h&&(n||!i)?(r=Date.now(),v()):t&&(c=new Promise((x,F)=>{l=s?F:x,o=setTimeout(()=>{r=Date.now(),i=!0,x(v()),a()},Math.max(0,h-g))})),!n&&!o&&(o=setTimeout(()=>i=!0,h)),i=!1,c)}}function Ga(e){return e}function qa(e,t){let n,s,r;const o=ue(!0),i=()=>{o.value=!0,r()};ye(e,i,{flush:"sync"});const l=rr(t)?t:t.get,c=rr(t)?void 0:t.set,a=Ac((u,f)=>(s=u,r=f,{get(){return o.value&&(n=l(),o.value=!1),s(),n},set(h){c==null||c(h)}}));return Object.isExtensible(a)&&(a.trigger=i),a}function Es(e){return hr()?(fi(e),!0):!1}function za(e,t=200,n={}){return Ml(Ua(t,n),e)}function Hd(e,t=200,n={}){const s=ue(e.value),r=za(()=>{s.value=e.value},t,n);return ye(e,()=>r()),s}function kd(e,t=200,n=!1,s=!0,r=!1){return Ml(Wa(t,n,s,r),e)}function Nr(e,t=!0){Pt()?vs(e):t?e():In(e)}function Bd(e,t,n={}){const{immediate:s=!0}=n,r=ue(!1);let o=null;function i(){o&&(clearTimeout(o),o=null)}function l(){r.value=!1,i()}function c(...a){i(),r.value=!0,o=setTimeout(()=>{r.value=!1,o=null,e(...a)},Tt(t))}return s&&(r.value=!0,ws&&c()),Es(l),{isPending:hs(r),start:c,stop:l}}function Ne(e){var t;const n=Tt(e);return(t=n==null?void 0:n.$el)!=null?t:n}const dt=ws?window:void 0,Qa=ws?window.document:void 0;function He(...e){let t,n,s,r;if(Ba(e[0])||Array.isArray(e[0])?([n,s,r]=e,t=dt):[t,n,s,r]=e,!t)return Xt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const o=[],i=()=>{o.forEach(u=>u()),o.length=0},l=(u,f,h,g)=>(u.addEventListener(f,h,g),()=>u.removeEventListener(f,h,g)),c=ye(()=>[Ne(t),Tt(r)],([u,f])=>{i(),u&&o.push(...n.flatMap(h=>s.map(g=>l(u,h,g,f))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return Es(a),a}let Mo=!1;function Kd(e,t,n={}){const{window:s=dt,ignore:r=[],capture:o=!0,detectIframe:i=!1}=n;if(!s)return;Ka&&!Mo&&(Mo=!0,Array.from(s.document.body.children).forEach(h=>h.addEventListener("click",Xt)));let l=!0;const c=h=>r.some(g=>{if(typeof g=="string")return Array.from(s.document.querySelectorAll(g)).some(v=>v===h.target||h.composedPath().includes(v));{const v=Ne(g);return v&&(h.target===v||h.composedPath().includes(v))}}),u=[He(s,"click",h=>{const g=Ne(e);if(!(!g||g===h.target||h.composedPath().includes(g))){if(h.detail===0&&(l=!c(h)),!l){l=!0;return}t(h)}},{passive:!0,capture:o}),He(s,"pointerdown",h=>{const g=Ne(e);g&&(l=!h.composedPath().includes(g)&&!c(h))},{passive:!0}),i&&He(s,"blur",h=>{var g;const v=Ne(e);((g=s.document.activeElement)==null?void 0:g.tagName)==="IFRAME"&&!(v!=null&&v.contains(s.document.activeElement))&&t(h)})].filter(Boolean);return()=>u.forEach(h=>h())}function Ud(e={}){var t;const{window:n=dt}=e,s=(t=e.document)!=null?t:n==null?void 0:n.document,r=qa(()=>null,()=>s==null?void 0:s.activeElement);return n&&(He(n,"blur",o=>{o.relatedTarget===null&&r.trigger()},!0),He(n,"focus",r.trigger,!0)),r}function Nl(e,t=!1){const n=ue(),s=()=>n.value=!!e();return s(),Nr(s,t),n}function Ja(e){return JSON.parse(JSON.stringify(e))}const No=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Fo="__vueuse_ssr_handlers__";No[Fo]=No[Fo]||{};function Wd(e,t,{window:n=dt,initialValue:s=""}={}){const r=ue(s),o=we(()=>{var i;return Ne(t)||((i=n==null?void 0:n.document)==null?void 0:i.documentElement)});return ye([o,()=>Tt(e)],([i,l])=>{var c;if(i&&n){const a=(c=n.getComputedStyle(i).getPropertyValue(l))==null?void 0:c.trim();r.value=a||s}},{immediate:!0}),ye(r,i=>{var l;(l=o.value)!=null&&l.style&&o.value.style.setProperty(Tt(e),i)}),r}function Gd({document:e=Qa}={}){if(!e)return ue("visible");const t=ue(e.visibilityState);return He(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}var Lo=Object.getOwnPropertySymbols,Ya=Object.prototype.hasOwnProperty,Xa=Object.prototype.propertyIsEnumerable,Za=(e,t)=>{var n={};for(var s in e)Ya.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&Lo)for(var s of Lo(e))t.indexOf(s)<0&&Xa.call(e,s)&&(n[s]=e[s]);return n};function Fl(e,t,n={}){const s=n,{window:r=dt}=s,o=Za(s,["window"]);let i;const l=Nl(()=>r&&"ResizeObserver"in r),c=()=>{i&&(i.disconnect(),i=void 0)},a=ye(()=>Ne(e),f=>{c(),l.value&&r&&f&&(i=new ResizeObserver(t),i.observe(f,o))},{immediate:!0,flush:"post"}),u=()=>{c(),a()};return Es(u),{isSupported:l,stop:u}}function qd(e,t={}){const{reset:n=!0,windowResize:s=!0,windowScroll:r=!0,immediate:o=!0}=t,i=ue(0),l=ue(0),c=ue(0),a=ue(0),u=ue(0),f=ue(0),h=ue(0),g=ue(0);function v(){const x=Ne(e);if(!x){n&&(i.value=0,l.value=0,c.value=0,a.value=0,u.value=0,f.value=0,h.value=0,g.value=0);return}const F=x.getBoundingClientRect();i.value=F.height,l.value=F.bottom,c.value=F.left,a.value=F.right,u.value=F.top,f.value=F.width,h.value=F.x,g.value=F.y}return Fl(e,v),ye(()=>Ne(e),x=>!x&&v()),r&&He("scroll",v,{capture:!0,passive:!0}),s&&He("resize",v,{passive:!0}),Nr(()=>{o&&v()}),{height:i,bottom:l,left:c,right:a,top:u,width:f,x:h,y:g,update:v}}function zd(e,t={width:0,height:0},n={}){const{window:s=dt,box:r="content-box"}=n,o=we(()=>{var c,a;return(a=(c=Ne(e))==null?void 0:c.namespaceURI)==null?void 0:a.includes("svg")}),i=ue(t.width),l=ue(t.height);return Fl(e,([c])=>{const a=r==="border-box"?c.borderBoxSize:r==="content-box"?c.contentBoxSize:c.devicePixelContentBoxSize;if(s&&o.value){const u=Ne(e);if(u){const f=s.getComputedStyle(u);i.value=parseFloat(f.width),l.value=parseFloat(f.height)}}else if(a){const u=Array.isArray(a)?a:[a];i.value=u.reduce((f,{inlineSize:h})=>f+h,0),l.value=u.reduce((f,{blockSize:h})=>f+h,0)}else i.value=c.contentRect.width,l.value=c.contentRect.height},n),ye(()=>Ne(e),c=>{i.value=c?t.width:0,l.value=c?t.height:0}),{width:i,height:l}}var $o=Object.getOwnPropertySymbols,ef=Object.prototype.hasOwnProperty,tf=Object.prototype.propertyIsEnumerable,nf=(e,t)=>{var n={};for(var s in e)ef.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&$o)for(var s of $o(e))t.indexOf(s)<0&&tf.call(e,s)&&(n[s]=e[s]);return n};function Qd(e,t,n={}){const s=n,{window:r=dt}=s,o=nf(s,["window"]);let i;const l=Nl(()=>r&&"MutationObserver"in r),c=()=>{i&&(i.disconnect(),i=void 0)},a=ye(()=>Ne(e),f=>{c(),l.value&&r&&f&&(i=new MutationObserver(t),i.observe(f,o))},{immediate:!0}),u=()=>{c(),a()};return Es(u),{isSupported:l,stop:u}}var Do;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(Do||(Do={}));var sf=Object.defineProperty,jo=Object.getOwnPropertySymbols,rf=Object.prototype.hasOwnProperty,of=Object.prototype.propertyIsEnumerable,Vo=(e,t,n)=>t in e?sf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lf=(e,t)=>{for(var n in t||(t={}))rf.call(t,n)&&Vo(e,n,t[n]);if(jo)for(var n of jo(t))of.call(t,n)&&Vo(e,n,t[n]);return e};const cf={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};lf({linear:Ga},cf);function Jd(e,t,n,s={}){var r,o,i;const{clone:l=!1,passive:c=!1,eventName:a,deep:u=!1,defaultValue:f}=s,h=Pt(),g=n||(h==null?void 0:h.emit)||((r=h==null?void 0:h.$emit)==null?void 0:r.bind(h))||((i=(o=h==null?void 0:h.proxy)==null?void 0:o.$emit)==null?void 0:i.bind(h==null?void 0:h.proxy));let v=a;t||(t="modelValue"),v=a||v||`update:${t.toString()}`;const x=A=>l?rr(l)?l(A):Ja(A):A,F=()=>ka(e[t])?x(e[t]):f;if(c){const A=F(),S=ue(A);return ye(()=>e[t],C=>S.value=x(C)),ye(S,C=>{(C!==e[t]||u)&&g(v,C)},{deep:u}),S}else return we({get(){return F()},set(A){g(v,A)}})}function Yd({window:e=dt}={}){if(!e)return ue(!1);const t=ue(e.document.hasFocus());return He(e,"blur",()=>{t.value=!1}),He(e,"focus",()=>{t.value=!0}),t}function Xd(e={}){const{window:t=dt,initialWidth:n=1/0,initialHeight:s=1/0,listenOrientation:r=!0,includeScrollbar:o=!0}=e,i=ue(n),l=ue(s),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};return c(),Nr(c),He("resize",c,{passive:!0}),r&&He("orientationchange",c,{passive:!0}),{width:i,height:l}}/*! - * vue-router v4.5.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */const Ut=typeof document<"u";function Ll(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function uf(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Ll(e.default)}const ee=Object.assign;function js(e,t){const n={};for(const s in t){const r=t[s];n[s]=Ge(r)?r.map(e):e(r)}return n}const _n=()=>{},Ge=Array.isArray,$l=/#/g,af=/&/g,ff=/\//g,df=/=/g,hf=/\?/g,Dl=/\+/g,pf=/%5B/g,gf=/%5D/g,jl=/%5E/g,mf=/%60/g,Vl=/%7B/g,vf=/%7C/g,Hl=/%7D/g,yf=/%20/g;function Fr(e){return encodeURI(""+e).replace(vf,"|").replace(pf,"[").replace(gf,"]")}function _f(e){return Fr(e).replace(Vl,"{").replace(Hl,"}").replace(jl,"^")}function or(e){return Fr(e).replace(Dl,"%2B").replace(yf,"+").replace($l,"%23").replace(af,"%26").replace(mf,"`").replace(Vl,"{").replace(Hl,"}").replace(jl,"^")}function bf(e){return or(e).replace(df,"%3D")}function Sf(e){return Fr(e).replace($l,"%23").replace(hf,"%3F")}function wf(e){return e==null?"":Sf(e).replace(ff,"%2F")}function Tn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Ef=/\/$/,xf=e=>e.replace(Ef,"");function Vs(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let c=t.indexOf("?");return l=0&&(c=-1),c>-1&&(s=t.slice(0,c),o=t.slice(c+1,l>-1?l:t.length),r=e(o)),l>-1&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=Of(s??t,n),{fullPath:s+(o&&"?")+o+i,path:s,query:r,hash:Tn(i)}}function Cf(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Ho(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Rf(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Zt(t.matched[s],n.matched[r])&&kl(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Zt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function kl(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Tf(e[n],t[n]))return!1;return!0}function Tf(e,t){return Ge(e)?ko(e,t):Ge(t)?ko(t,e):e===t}function ko(e,t){return Ge(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Of(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const gt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var On;(function(e){e.pop="pop",e.push="push"})(On||(On={}));var bn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(bn||(bn={}));function Pf(e){if(!e)if(Ut){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),xf(e)}const Af=/^[^#]+#/;function If(e,t){return e.replace(Af,"#")+t}function Mf(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const xs=()=>({left:window.scrollX,top:window.scrollY});function Nf(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Mf(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Bo(e,t){return(history.state?history.state.position-t:-1)+e}const ir=new Map;function Ff(e,t){ir.set(e,t)}function Lf(e){const t=ir.get(e);return ir.delete(e),t}let $f=()=>location.protocol+"//"+location.host;function Bl(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let l=r.includes(e.slice(o))?e.slice(o).length:1,c=r.slice(l);return c[0]!=="/"&&(c="/"+c),Ho(c,"")}return Ho(n,e)+s+r}function Df(e,t,n,s){let r=[],o=[],i=null;const l=({state:h})=>{const g=Bl(e,location),v=n.value,x=t.value;let F=0;if(h){if(n.value=g,t.value=h,i&&i===v){i=null;return}F=x?h.position-x.position:0}else s(g);r.forEach(A=>{A(n.value,v,{delta:F,type:On.pop,direction:F?F>0?bn.forward:bn.back:bn.unknown})})};function c(){i=n.value}function a(h){r.push(h);const g=()=>{const v=r.indexOf(h);v>-1&&r.splice(v,1)};return o.push(g),g}function u(){const{history:h}=window;h.state&&h.replaceState(ee({},h.state,{scroll:xs()}),"")}function f(){for(const h of o)h();o=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:c,listen:a,destroy:f}}function Ko(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?xs():null}}function jf(e){const{history:t,location:n}=window,s={value:Bl(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,a,u){const f=e.indexOf("#"),h=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+c:$f()+e+c;try{t[u?"replaceState":"pushState"](a,"",h),r.value=a}catch(g){console.error(g),n[u?"replace":"assign"](h)}}function i(c,a){const u=ee({},t.state,Ko(r.value.back,c,r.value.forward,!0),a,{position:r.value.position});o(c,u,!0),s.value=c}function l(c,a){const u=ee({},r.value,t.state,{forward:c,scroll:xs()});o(u.current,u,!0);const f=ee({},Ko(s.value,c,null),{position:u.position+1},a);o(c,f,!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function Zd(e){e=Pf(e);const t=jf(e),n=Df(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=ee({location:"",base:e,go:s,createHref:If.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function Vf(e){return typeof e=="string"||e&&typeof e=="object"}function Kl(e){return typeof e=="string"||typeof e=="symbol"}const Ul=Symbol("");var Uo;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Uo||(Uo={}));function en(e,t){return ee(new Error,{type:e,[Ul]:!0},t)}function nt(e,t){return e instanceof Error&&Ul in e&&(t==null||!!(e.type&t))}const Wo="[^/]+?",Hf={sensitive:!1,strict:!1,start:!0,end:!0},kf=/[.+*?^${}()[\]/\\]/g;function Bf(e,t){const n=ee({},Hf,t),s=[];let r=n.start?"^":"";const o=[];for(const a of e){const u=a.length?[]:[90];n.strict&&!a.length&&(r+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function Wl(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Uf={type:0,value:""},Wf=/[a-zA-Z0-9_]/;function Gf(e){if(!e)return[[]];if(e==="/")return[[Uf]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${a}": ${g}`)}let n=0,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,a="",u="";function f(){a&&(n===0?o.push({type:0,value:a}):n===1||n===2||n===3?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:a,regexp:u,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function h(){a+=c}for(;l{i(C)}:_n}function i(f){if(Kl(f)){const h=s.get(f);h&&(s.delete(f),n.splice(n.indexOf(h),1),h.children.forEach(i),h.alias.forEach(i))}else{const h=n.indexOf(f);h>-1&&(n.splice(h,1),f.record.name&&s.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function l(){return n}function c(f){const h=Yf(f,n);n.splice(h,0,f),f.record.name&&!Qo(f)&&s.set(f.record.name,f)}function a(f,h){let g,v={},x,F;if("name"in f&&f.name){if(g=s.get(f.name),!g)throw en(1,{location:f});F=g.record.name,v=ee(qo(h.params,g.keys.filter(C=>!C.optional).concat(g.parent?g.parent.keys.filter(C=>C.optional):[]).map(C=>C.name)),f.params&&qo(f.params,g.keys.map(C=>C.name))),x=g.stringify(v)}else if(f.path!=null)x=f.path,g=n.find(C=>C.re.test(x)),g&&(v=g.parse(x),F=g.record.name);else{if(g=h.name?s.get(h.name):n.find(C=>C.re.test(h.path)),!g)throw en(1,{location:f,currentLocation:h});F=g.record.name,v=ee({},h.params,f.params),x=g.stringify(v)}const A=[];let S=g;for(;S;)A.unshift(S.record),S=S.parent;return{name:F,path:x,params:v,matched:A,meta:Jf(A)}}e.forEach(f=>o(f));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:a,removeRoute:i,clearRoutes:u,getRoutes:l,getRecordMatcher:r}}function qo(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function zo(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Qf(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Qf(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Qo(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Jf(e){return e.reduce((t,n)=>ee(t,n.meta),{})}function Jo(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function Yf(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;Wl(e,t[o])<0?s=o:n=o+1}const r=Xf(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function Xf(e){let t=e;for(;t=t.parent;)if(Gl(t)&&Wl(e,t)===0)return t}function Gl({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Zf(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ro&&or(o)):[s&&or(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function ed(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Ge(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const td=Symbol(""),Xo=Symbol(""),Cs=Symbol(""),Lr=Symbol(""),lr=Symbol("");function cn(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function St(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const a=h=>{h===!1?c(en(4,{from:n,to:t})):h instanceof Error?c(h):Vf(h)?c(en(2,{from:t,to:h})):(i&&s.enterCallbacks[r]===i&&typeof h=="function"&&i.push(h),l())},u=o(()=>e.call(s&&s.instances[r],t,n,a));let f=Promise.resolve(u);e.length<3&&(f=f.then(a)),f.catch(h=>c(h))})}function Hs(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let c=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(Ll(c)){const u=(c.__vccOpts||c)[t];u&&o.push(St(u,n,s,i,l,r))}else{let a=c();o.push(()=>a.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const f=uf(u)?u.default:u;i.mods[l]=u,i.components[l]=f;const g=(f.__vccOpts||f)[t];return g&&St(g,n,s,i,l,r)()}))}}return o}function Zo(e){const t=je(Cs),n=je(Lr),s=we(()=>{const c=Lt(e.to);return t.resolve(c)}),r=we(()=>{const{matched:c}=s.value,{length:a}=c,u=c[a-1],f=n.matched;if(!u||!f.length)return-1;const h=f.findIndex(Zt.bind(null,u));if(h>-1)return h;const g=ei(c[a-2]);return a>1&&ei(u)===g&&f[f.length-1].path!==g?f.findIndex(Zt.bind(null,c[a-2])):h}),o=we(()=>r.value>-1&&id(n.params,s.value.params)),i=we(()=>r.value>-1&&r.value===n.matched.length-1&&kl(n.params,s.value.params));function l(c={}){if(od(c)){const a=t[Lt(e.replace)?"replace":"push"](Lt(e.to)).catch(_n);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:s,href:we(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function nd(e){return e.length===1?e[0]:e}const sd=Wi({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Zo,setup(e,{slots:t}){const n=Pn(Zo(e)),{options:s}=je(Cs),r=we(()=>({[ti(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[ti(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&nd(t.default(n));return e.custom?o:Mr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),rd=sd;function od(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function id(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Ge(r)||r.length!==s.length||s.some((o,i)=>o!==r[i]))return!1}return!0}function ei(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ti=(e,t,n)=>e??t??n,ld=Wi({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=je(lr),r=we(()=>e.route||s.value),o=je(Xo,0),i=we(()=>{let a=Lt(o);const{matched:u}=r.value;let f;for(;(f=u[a])&&!f.components;)a++;return a}),l=we(()=>r.value.matched[i.value]);Kn(Xo,we(()=>i.value+1)),Kn(td,l),Kn(lr,r);const c=ue();return ye(()=>[c.value,l.value,e.name],([a,u,f],[h,g,v])=>{u&&(u.instances[f]=a,g&&g!==u&&a&&a===h&&(u.leaveGuards.size||(u.leaveGuards=g.leaveGuards),u.updateGuards.size||(u.updateGuards=g.updateGuards))),a&&u&&(!g||!Zt(u,g)||!h)&&(u.enterCallbacks[f]||[]).forEach(x=>x(a))},{flush:"post"}),()=>{const a=r.value,u=e.name,f=l.value,h=f&&f.components[u];if(!h)return ni(n.default,{Component:h,route:a});const g=f.props[u],v=g?g===!0?a.params:typeof g=="function"?g(a):g:null,F=Mr(h,ee({},v,t,{onVnodeUnmounted:A=>{A.component.isUnmounted&&(f.instances[u]=null)},ref:c}));return ni(n.default,{Component:F,route:a})||F}}});function ni(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const cd=ld;function eh(e){const t=zf(e.routes,e),n=e.parseQuery||Zf,s=e.stringifyQuery||Yo,r=e.history,o=cn(),i=cn(),l=cn(),c=Ti(gt);let a=gt;Ut&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=js.bind(null,_=>""+_),f=js.bind(null,wf),h=js.bind(null,Tn);function g(_,$){let M,j;return Kl(_)?(M=t.getRecordMatcher(_),j=$):j=_,t.addRoute(j,M)}function v(_){const $=t.getRecordMatcher(_);$&&t.removeRoute($)}function x(){return t.getRoutes().map(_=>_.record)}function F(_){return!!t.getRecordMatcher(_)}function A(_,$){if($=ee({},$||c.value),typeof _=="string"){const m=Vs(n,_,$.path),y=t.resolve({path:m.path},$),w=r.createHref(m.fullPath);return ee(m,y,{params:h(y.params),hash:Tn(m.hash),redirectedFrom:void 0,href:w})}let M;if(_.path!=null)M=ee({},_,{path:Vs(n,_.path,$.path).path});else{const m=ee({},_.params);for(const y in m)m[y]==null&&delete m[y];M=ee({},_,{params:f(m)}),$.params=f($.params)}const j=t.resolve(M,$),oe=_.hash||"";j.params=u(h(j.params));const d=Cf(s,ee({},_,{hash:_f(oe),path:j.path})),p=r.createHref(d);return ee({fullPath:d,hash:oe,query:s===Yo?ed(_.query):_.query||{}},j,{redirectedFrom:void 0,href:p})}function S(_){return typeof _=="string"?Vs(n,_,c.value.path):ee({},_)}function C(_,$){if(a!==_)return en(8,{from:$,to:_})}function E(_){return U(_)}function D(_){return E(ee(S(_),{replace:!0}))}function W(_){const $=_.matched[_.matched.length-1];if($&&$.redirect){const{redirect:M}=$;let j=typeof M=="function"?M(_):M;return typeof j=="string"&&(j=j.includes("?")||j.includes("#")?j=S(j):{path:j},j.params={}),ee({query:_.query,hash:_.hash,params:j.path!=null?{}:_.params},j)}}function U(_,$){const M=a=A(_),j=c.value,oe=_.state,d=_.force,p=_.replace===!0,m=W(M);if(m)return U(ee(S(m),{state:typeof m=="object"?ee({},oe,m.state):oe,force:d,replace:p}),$||M);const y=M;y.redirectedFrom=$;let w;return!d&&Rf(s,j,M)&&(w=en(16,{to:y,from:j}),qe(j,j,!0,!1)),(w?Promise.resolve(w):k(y,j)).catch(b=>nt(b)?nt(b,2)?b:ht(b):Z(b,y,j)).then(b=>{if(b){if(nt(b,2))return U(ee({replace:p},S(b.to),{state:typeof b.to=="object"?ee({},oe,b.to.state):oe,force:d}),$||y)}else b=L(y,j,!0,p,oe);return Q(y,j,b),b})}function H(_,$){const M=C(_,$);return M?Promise.reject(M):Promise.resolve()}function T(_){const $=Ht.values().next().value;return $&&typeof $.runWithContext=="function"?$.runWithContext(_):_()}function k(_,$){let M;const[j,oe,d]=ud(_,$);M=Hs(j.reverse(),"beforeRouteLeave",_,$);for(const m of j)m.leaveGuards.forEach(y=>{M.push(St(y,_,$))});const p=H.bind(null,_,$);return M.push(p),Fe(M).then(()=>{M=[];for(const m of o.list())M.push(St(m,_,$));return M.push(p),Fe(M)}).then(()=>{M=Hs(oe,"beforeRouteUpdate",_,$);for(const m of oe)m.updateGuards.forEach(y=>{M.push(St(y,_,$))});return M.push(p),Fe(M)}).then(()=>{M=[];for(const m of d)if(m.beforeEnter)if(Ge(m.beforeEnter))for(const y of m.beforeEnter)M.push(St(y,_,$));else M.push(St(m.beforeEnter,_,$));return M.push(p),Fe(M)}).then(()=>(_.matched.forEach(m=>m.enterCallbacks={}),M=Hs(d,"beforeRouteEnter",_,$,T),M.push(p),Fe(M))).then(()=>{M=[];for(const m of i.list())M.push(St(m,_,$));return M.push(p),Fe(M)}).catch(m=>nt(m,8)?m:Promise.reject(m))}function Q(_,$,M){l.list().forEach(j=>T(()=>j(_,$,M)))}function L(_,$,M,j,oe){const d=C(_,$);if(d)return d;const p=$===gt,m=Ut?history.state:{};M&&(j||p?r.replace(_.fullPath,ee({scroll:p&&m&&m.scroll},oe)):r.push(_.fullPath,oe)),c.value=_,qe(_,$,M,p),ht()}let Y;function de(){Y||(Y=r.listen((_,$,M)=>{if(!Nn.listening)return;const j=A(_),oe=W(j);if(oe){U(ee(oe,{replace:!0,force:!0}),j).catch(_n);return}a=j;const d=c.value;Ut&&Ff(Bo(d.fullPath,M.delta),xs()),k(j,d).catch(p=>nt(p,12)?p:nt(p,2)?(U(ee(S(p.to),{force:!0}),j).then(m=>{nt(m,20)&&!M.delta&&M.type===On.pop&&r.go(-1,!1)}).catch(_n),Promise.reject()):(M.delta&&r.go(-M.delta,!1),Z(p,j,d))).then(p=>{p=p||L(j,d,!1),p&&(M.delta&&!nt(p,8)?r.go(-M.delta,!1):M.type===On.pop&&nt(p,20)&&r.go(-1,!1)),Q(j,d,p)}).catch(_n)}))}let xe=cn(),re=cn(),z;function Z(_,$,M){ht(_);const j=re.list();return j.length?j.forEach(oe=>oe(_,$,M)):console.error(_),Promise.reject(_)}function et(){return z&&c.value!==gt?Promise.resolve():new Promise((_,$)=>{xe.add([_,$])})}function ht(_){return z||(z=!_,de(),xe.list().forEach(([$,M])=>_?M(_):$()),xe.reset()),_}function qe(_,$,M,j){const{scrollBehavior:oe}=e;if(!Ut||!oe)return Promise.resolve();const d=!M&&Lf(Bo(_.fullPath,0))||(j||!M)&&history.state&&history.state.scroll||null;return In().then(()=>oe(_,$,d)).then(p=>p&&Nf(p)).catch(p=>Z(p,_,$))}const Te=_=>r.go(_);let Vt;const Ht=new Set,Nn={currentRoute:c,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:F,getRoutes:x,resolve:A,options:e,push:E,replace:D,go:Te,back:()=>Te(-1),forward:()=>Te(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:re.add,isReady:et,install(_){const $=this;_.component("RouterLink",rd),_.component("RouterView",cd),_.config.globalProperties.$router=$,Object.defineProperty(_.config.globalProperties,"$route",{enumerable:!0,get:()=>Lt(c)}),Ut&&!Vt&&c.value===gt&&(Vt=!0,E(r.location).catch(oe=>{}));const M={};for(const oe in gt)Object.defineProperty(M,oe,{get:()=>c.value[oe],enumerable:!0});_.provide(Cs,$),_.provide(Lr,Ri(M)),_.provide(lr,c);const j=_.unmount;Ht.add(_),_.unmount=function(){Ht.delete(_),Ht.size<1&&(a=gt,Y&&Y(),Y=null,c.value=gt,Vt=!1,z=!1),j()}}};function Fe(_){return _.reduce(($,M)=>$.then(()=>T(M)),Promise.resolve())}return Nn}function ud(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iZt(a,l))?s.push(l):n.push(l));const c=e.matched[i];c&&(t.matched.find(a=>Zt(a,c))||r.push(c))}return[n,s,r]}function th(){return je(Cs)}function nh(e){return je(Lr)}export{qc as $,bd as A,us as B,as as C,In as D,Du as E,Es as F,wd as G,Fc as H,Ys as I,Bc as J,dd as K,Rd as L,md as M,Be as N,$u as O,lc as P,Ae as Q,Ee as R,Pd as S,Od as T,Vd as U,zi as V,Ed as W,Fl as X,Md as Y,xr as Z,Pn as _,V as a,Er as a0,at as a1,_s as a2,me as a3,Ne as a4,hd as a5,Jc as a6,Kd as a7,hs as a8,zc as a9,ls as aA,Ka as aB,oi as aC,vd as aD,kn as aE,Qd as aF,Fd as aG,Gd as aH,Yd as aI,Jd as aJ,Ud as aK,zd as aL,Ld as aM,Ot as aN,Ri as aO,eh as aP,Zd as aQ,Dd as aR,$d as aS,th as aT,nh as aU,pd as aV,jd as aW,Sa as aX,Cd as aY,Id as aZ,Nd as aa,_d as ab,yd as ac,kd as ad,Vr as ae,ad as af,Lu as ag,Qt as ah,Mr as ai,fd as aj,J as ak,_a as al,Ic as am,ba as an,Yc as ao,si as ap,Eo as aq,Wd as ar,Sd as as,fi as at,Bd as au,gd as av,Hd as aw,Ad as ax,br as ay,ai as az,se as b,we as c,ae as d,ws as e,fe as f,Pt as g,te as h,je as i,q as j,ke as k,Wi as l,Xd as m,qd as n,ye as o,Kn as p,vs as q,ue as r,Ti as s,He as t,Lt as u,xu as v,Td as w,xd as x,Js as y,pl as z}; diff --git a/assets/vue-vendor-Ig-GgGwA.js b/assets/vue-vendor-Ig-GgGwA.js new file mode 100644 index 00000000..9a3a49ac --- /dev/null +++ b/assets/vue-vendor-Ig-GgGwA.js @@ -0,0 +1,25 @@ +/** +* @vue/shared v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function tr(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ie={},Ut=[],ke=()=>{},Kl=()=>!1,ts=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),nr=e=>e.startsWith("onUpdate:"),he=Object.assign,sr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ul=Object.prototype.hasOwnProperty,te=(e,t)=>Ul.call(e,t),j=Array.isArray,Wt=e=>Rn(e)==="[object Map]",Zt=e=>Rn(e)==="[object Set]",Ir=e=>Rn(e)==="[object Date]",W=e=>typeof e=="function",ae=e=>typeof e=="string",Ke=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",Jo=e=>(se(e)||W(e))&&W(e.then)&&W(e.catch),Yo=Object.prototype.toString,Rn=e=>Yo.call(e),Wl=e=>Rn(e).slice(8,-1),Xo=e=>Rn(e)==="[object Object]",rr=e=>ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ln=tr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ns=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Gl=/-(\w)/g,Ve=ns(e=>e.replace(Gl,(t,n)=>n?n.toUpperCase():"")),ql=/\B([A-Z])/g,Rt=ns(e=>e.replace(ql,"-$1").toLowerCase()),ss=ns(e=>e.charAt(0).toUpperCase()+e.slice(1)),jn=ns(e=>e?`on${ss(e)}`:""),wt=(e,t)=>!Object.is(e,t),Hn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Wn=e=>{const t=parseFloat(e);return isNaN(t)?e:t},zl=e=>{const t=ae(e)?Number(e):NaN;return isNaN(t)?e:t};let Mr;const rs=()=>Mr||(Mr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function os(e){if(j(e)){const t={};for(let n=0;n{if(n){const s=n.split(Jl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function is(e){let t="";if(ae(e))t=e;else if(j(e))for(let n=0;nFt(n,t))}const ei=e=>!!(e&&e.__v_isRef===!0),nc=e=>ae(e)?e:e==null?"":j(e)||se(e)&&(e.toString===Yo||!W(e.toString))?ei(e)?nc(e.value):JSON.stringify(e,ti,2):String(e),ti=(e,t)=>ei(t)?ti(e,t.value):Wt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[ws(s,o)+" =>"]=r,n),{})}:Zt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ws(n))}:Ke(t)?ws(t):se(t)&&!j(t)&&!Xo(t)?String(t):t,ws=(e,t="")=>{var n;return Ke(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let me;class ni{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=me,!t&&me&&(this.index=(me.scopes||(me.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(me=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(un){let t=un;for(un=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;cn;){let t=cn;for(cn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function ci(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ui(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),ur(s),sc(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function $s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ai(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ai(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===vn)||(e.globalVersion=vn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!$s(e))))return;e.flags|=2;const t=e.dep,n=ce,s=Be;ce=e,Be=!0;try{ci(e);const r=e.fn(e._value);(t.version===0||wt(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ce=n,Be=s,ui(e),e.flags&=-3}}function ur(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)ur(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function sc(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Be=!0;const fi=[];function ct(){fi.push(Be),Be=!1}function ut(){const e=fi.pop();Be=e===void 0?!0:e}function Nr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ce;ce=void 0;try{t()}finally{ce=n}}}let vn=0;class rc{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ls{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ce||!Be||ce===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ce)n=this.activeLink=new rc(ce,this),ce.deps?(n.prevDep=ce.depsTail,ce.depsTail.nextDep=n,ce.depsTail=n):ce.deps=ce.depsTail=n,di(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ce.depsTail,n.nextDep=void 0,ce.depsTail.nextDep=n,ce.depsTail=n,ce.deps===n&&(ce.deps=s)}return n}trigger(t){this.version++,vn++,this.notify(t)}notify(t){lr();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{cr()}}}function di(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)di(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Gn=new WeakMap,Mt=Symbol(""),Ds=Symbol(""),yn=Symbol("");function ve(e,t,n){if(Be&&ce){let s=Gn.get(e);s||Gn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new ls),r.map=s,r.key=n),r.track()}}function rt(e,t,n,s,r,o){const i=Gn.get(e);if(!i){vn++;return}const l=c=>{c&&c.trigger()};if(lr(),t==="clear")i.forEach(l);else{const c=j(e),a=c&&rr(n);if(c&&n==="length"){const u=Number(s);i.forEach((f,h)=>{(h==="length"||h===yn||!Ke(h)&&h>=u)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),a&&l(i.get(yn)),t){case"add":c?a&&l(i.get("length")):(l(i.get(Mt)),Wt(e)&&l(i.get(Ds)));break;case"delete":c||(l(i.get(Mt)),Wt(e)&&l(i.get(Ds)));break;case"set":Wt(e)&&l(i.get(Mt));break}}cr()}function oc(e,t){const n=Gn.get(e);return n&&n.get(t)}function Vt(e){const t=J(e);return t===e?t:(ve(t,"iterate",yn),$e(e)?t:t.map(pe))}function cs(e){return ve(e=J(e),"iterate",yn),e}const ic={__proto__:null,[Symbol.iterator](){return Es(this,Symbol.iterator,pe)},concat(...e){return Vt(this).concat(...e.map(t=>j(t)?Vt(t):t))},entries(){return Es(this,"entries",e=>(e[1]=pe(e[1]),e))},every(e,t){return tt(this,"every",e,t,void 0,arguments)},filter(e,t){return tt(this,"filter",e,t,n=>n.map(pe),arguments)},find(e,t){return tt(this,"find",e,t,pe,arguments)},findIndex(e,t){return tt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return tt(this,"findLast",e,t,pe,arguments)},findLastIndex(e,t){return tt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return tt(this,"forEach",e,t,void 0,arguments)},includes(...e){return xs(this,"includes",e)},indexOf(...e){return xs(this,"indexOf",e)},join(e){return Vt(this).join(e)},lastIndexOf(...e){return xs(this,"lastIndexOf",e)},map(e,t){return tt(this,"map",e,t,void 0,arguments)},pop(){return tn(this,"pop")},push(...e){return tn(this,"push",e)},reduce(e,...t){return Lr(this,"reduce",e,t)},reduceRight(e,...t){return Lr(this,"reduceRight",e,t)},shift(){return tn(this,"shift")},some(e,t){return tt(this,"some",e,t,void 0,arguments)},splice(...e){return tn(this,"splice",e)},toReversed(){return Vt(this).toReversed()},toSorted(e){return Vt(this).toSorted(e)},toSpliced(...e){return Vt(this).toSpliced(...e)},unshift(...e){return tn(this,"unshift",e)},values(){return Es(this,"values",pe)}};function Es(e,t,n){const s=cs(e),r=s[t]();return s!==e&&!$e(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.value&&(o.value=n(o.value)),o}),r}const lc=Array.prototype;function tt(e,t,n,s,r,o){const i=cs(e),l=i!==e&&!$e(e),c=i[t];if(c!==lc[t]){const f=c.apply(e,o);return l?pe(f):f}let a=n;i!==e&&(l?a=function(f,h){return n.call(this,pe(f),h,e)}:n.length>2&&(a=function(f,h){return n.call(this,f,h,e)}));const u=c.call(i,a,s);return l&&r?r(u):u}function Lr(e,t,n,s){const r=cs(e);let o=n;return r!==e&&($e(e)?n.length>3&&(o=function(i,l,c){return n.call(this,i,l,c,e)}):o=function(i,l,c){return n.call(this,i,pe(l),c,e)}),r[t](o,...s)}function xs(e,t,n){const s=J(e);ve(s,"iterate",yn);const r=s[t](...n);return(r===-1||r===!1)&&dr(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function tn(e,t,n=[]){ct(),lr();const s=J(e)[t].apply(e,n);return cr(),ut(),s}const cc=tr("__proto__,__v_isRef,__isVue"),hi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ke));function uc(e){Ke(e)||(e=String(e));const t=J(this);return ve(t,"has",e),t.hasOwnProperty(e)}class pi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?_c:yi:o?vi:mi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=j(t);if(!r){let c;if(i&&(c=ic[n]))return c;if(n==="hasOwnProperty")return uc}const l=Reflect.get(t,n,fe(t)?t:s);return(Ke(n)?hi.has(n):cc(n))||(r||ve(t,"get",n),o)?l:fe(l)?i&&rr(n)?l:l.value:se(l)?r?us(l):On(l):l}}class gi extends pi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(!this._isShallow){const c=St(o);if(!$e(s)&&!St(s)&&(o=J(o),s=J(s)),!j(t)&&fe(o)&&!fe(s))return c?!1:(o.value=s,!0)}const i=j(t)&&rr(n)?Number(n)e,Mn=e=>Reflect.getPrototypeOf(e);function pc(e,t,n){return function(...s){const r=this.__v_raw,o=J(r),i=Wt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=r[e](...s),u=n?js:t?qn:pe;return!t&&ve(o,"iterate",c?Ds:Mt),{next(){const{value:f,done:h}=a.next();return h?{value:f,done:h}:{value:l?[u(f[0]),u(f[1])]:u(f),done:h}},[Symbol.iterator](){return this}}}}function Nn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function gc(e,t){const n={get(r){const o=this.__v_raw,i=J(o),l=J(r);e||(wt(r,l)&&ve(i,"get",r),ve(i,"get",l));const{has:c}=Mn(i),a=t?js:e?qn:pe;if(c.call(i,r))return a(o.get(r));if(c.call(i,l))return a(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&ve(J(r),"iterate",Mt),Reflect.get(r,"size",r)},has(r){const o=this.__v_raw,i=J(o),l=J(r);return e||(wt(r,l)&&ve(i,"has",r),ve(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,c=J(l),a=t?js:e?qn:pe;return!e&&ve(c,"iterate",Mt),l.forEach((u,f)=>r.call(o,a(u),a(f),i))}};return he(n,e?{add:Nn("add"),set:Nn("set"),delete:Nn("delete"),clear:Nn("clear")}:{add(r){!t&&!$e(r)&&!St(r)&&(r=J(r));const o=J(this);return Mn(o).has.call(o,r)||(o.add(r),rt(o,"add",r,r)),this},set(r,o){!t&&!$e(o)&&!St(o)&&(o=J(o));const i=J(this),{has:l,get:c}=Mn(i);let a=l.call(i,r);a||(r=J(r),a=l.call(i,r));const u=c.call(i,r);return i.set(r,o),a?wt(o,u)&&rt(i,"set",r,o):rt(i,"add",r,o),this},delete(r){const o=J(this),{has:i,get:l}=Mn(o);let c=i.call(o,r);c||(r=J(r),c=i.call(o,r)),l&&l.call(o,r);const a=o.delete(r);return c&&rt(o,"delete",r,void 0),a},clear(){const r=J(this),o=r.size!==0,i=r.clear();return o&&rt(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=pc(r,e,t)}),n}function ar(e,t){const n=gc(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(te(n,r)&&r in s?n:s,r,o)}const mc={get:ar(!1,!1)},vc={get:ar(!1,!0)},yc={get:ar(!0,!1)};const mi=new WeakMap,vi=new WeakMap,yi=new WeakMap,_c=new WeakMap;function bc(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function wc(e){return e.__v_skip||!Object.isExtensible(e)?0:bc(Wl(e))}function On(e){return St(e)?e:fr(e,!1,fc,mc,mi)}function _i(e){return fr(e,!1,hc,vc,vi)}function us(e){return fr(e,!0,dc,yc,yi)}function fr(e,t,n,s,r){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=wc(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function lt(e){return St(e)?lt(e.__v_raw):!!(e&&e.__v_isReactive)}function St(e){return!!(e&&e.__v_isReadonly)}function $e(e){return!!(e&&e.__v_isShallow)}function dr(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function hr(e){return!te(e,"__v_skip")&&Object.isExtensible(e)&&Fs(e,"__v_skip",!0),e}const pe=e=>se(e)?On(e):e,qn=e=>se(e)?us(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function ue(e){return wi(e,!1)}function bi(e){return wi(e,!0)}function wi(e,t){return fe(e)?e:new Sc(e,t)}class Sc{constructor(t,n){this.dep=new ls,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:pe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||$e(t)||St(t);t=s?t:J(t),wt(t,n)&&(this._rawValue=t,this._value=s?t:pe(t),this.dep.trigger())}}function id(e){e.dep&&e.dep.trigger()}function Nt(e){return fe(e)?e.value:e}const Ec={get:(e,t,n)=>t==="__v_raw"?e:Nt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Si(e){return lt(e)?e:new Proxy(e,Ec)}class xc{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new ls,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Cc(e){return new xc(e)}function Rc(e){const t=j(e)?new Array(e.length):{};for(const n in e)t[n]=Ei(e,n);return t}class Oc{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return oc(J(this._object),this._key)}}class Pc{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Tc(e,t,n){return fe(e)?e:W(e)?new Pc(e):se(e)&&arguments.length>1?Ei(e,t,n):ue(e)}function Ei(e,t,n){const s=e[t];return fe(s)?s:new Oc(e,t,n)}class Ac{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new ls(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=vn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ce!==this)return li(this,!0),!0}get value(){const t=this.dep.track();return ai(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ic(e,t,n=!1){let s,r;return W(e)?s=e:(s=e.get,r=e.set),new Ac(s,r,n)}const Ln={},zn=new WeakMap;let At;function Mc(e,t=!1,n=At){if(n){let s=zn.get(n);s||zn.set(n,s=[]),s.push(e)}}function Nc(e,t,n=ie){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:c}=n,a=N=>r?N:$e(N)||r===!1||r===0?ot(N,1):ot(N);let u,f,h,g,v=!1,S=!1;if(fe(e)?(f=()=>e.value,v=$e(e)):lt(e)?(f=()=>a(e),v=!0):j(e)?(S=!0,v=e.some(N=>lt(N)||$e(N)),f=()=>e.map(N=>{if(fe(N))return N.value;if(lt(N))return a(N);if(W(N))return c?c(N,2):N()})):W(e)?t?f=c?()=>c(e,2):e:f=()=>{if(h){ct();try{h()}finally{ut()}}const N=At;At=u;try{return c?c(e,3,[g]):e(g)}finally{At=N}}:f=ke,t&&r){const N=f,k=r===!0?1/0:r;f=()=>ot(N(),k)}const $=ir(),A=()=>{u.stop(),$&&$.active&&sr($.effects,u)};if(o&&t){const N=t;t=(...k)=>{N(...k),A()}}let I=S?new Array(e.length).fill(Ln):Ln;const F=N=>{if(!(!(u.flags&1)||!u.dirty&&!N))if(t){const k=u.run();if(r||v||(S?k.some((z,q)=>wt(z,I[q])):wt(k,I))){h&&h();const z=At;At=u;try{const q=[k,I===Ln?void 0:S&&I[0]===Ln?[]:I,g];I=k,c?c(t,3,q):t(...q)}finally{At=z}}}else u.run()};return l&&l(F),u=new oi(f),u.scheduler=i?()=>i(F,!1):F,g=N=>Mc(N,!1,u),h=u.onStop=()=>{const N=zn.get(u);if(N){if(c)c(N,4);else for(const k of N)k();zn.delete(u)}},t?s?F(!0):I=u.run():i?i(F.bind(null,!0),!0):u.run(),A.pause=u.pause.bind(u),A.resume=u.resume.bind(u),A.stop=A,A}function ot(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))ot(e.value,t,n);else if(j(e))for(let s=0;s{ot(s,t,n)});else if(Xo(e)){for(const s in e)ot(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&ot(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Pn(e,t,n,s){try{return s?e(...s):e()}catch(r){as(r,t,n)}}function Ue(e,t,n,s){if(W(e)){const r=Pn(e,t,n,s);return r&&Jo(r)&&r.catch(o=>{as(o,t,n)}),r}if(j(e)){const r=[];for(let o=0;o>>1,r=Re[s],o=_n(r);o=_n(n)?Re.push(e):Re.splice(Fc(t),0,e),e.flags|=1,Ci()}}function Ci(){Qn||(Qn=xi.then(Oi))}function $c(e){j(e)?Gt.push(...e):vt&&e.id===-1?vt.splice(Bt+1,0,e):e.flags&1||(Gt.push(e),e.flags|=1),Ci()}function Fr(e,t,n=Xe+1){for(;n_n(n)-_n(s));if(Gt.length=0,vt){vt.push(...t);return}for(vt=t,Bt=0;Bte.id==null?e.flags&2?-1:1/0:e.id;function Oi(e){try{for(Xe=0;Xe{s._d&&Qr(-1);const o=Jn(t);let i;try{i=e(...r)}finally{Jn(o),s._d&&Qr(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function ld(e,t){if(ge===null)return e;const n=gs(ge),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,an=e=>e&&(e.disabled||e.disabled===""),$r=e=>e&&(e.defer||e.defer===""),Dr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,jr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Hs=(e,t)=>{const n=e&&e.to;return ae(n)?t?t(n):null:n},Ii={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,o,i,l,c,a){const{mc:u,pc:f,pbc:h,o:{insert:g,querySelector:v,createText:S,createComment:$}}=a,A=an(t.props);let{shapeFlag:I,children:F,dynamicChildren:N}=t;if(e==null){const k=t.el=S(""),z=t.anchor=S("");g(k,n,s),g(z,n,s);const q=(x,K)=>{I&16&&(r&&r.isCE&&(r.ce._teleportTarget=x),u(F,x,K,r,o,i,l,c))},B=()=>{const x=t.target=Hs(t.props,v),K=Mi(x,t,S,g);x&&(i!=="svg"&&Dr(x)?i="svg":i!=="mathml"&&jr(x)&&(i="mathml"),A||(q(x,K),Vn(t,!1)))};A&&(q(n,z),Vn(t,!0)),$r(t.props)?(t.el.__isMounted=!1,Ce(()=>{B(),delete t.el.__isMounted},o)):B()}else{if($r(t.props)&&e.el.__isMounted===!1){Ce(()=>{Ii.process(e,t,n,s,r,o,i,l,c,a)},o);return}t.el=e.el,t.targetStart=e.targetStart;const k=t.anchor=e.anchor,z=t.target=e.target,q=t.targetAnchor=e.targetAnchor,B=an(e.props),x=B?n:z,K=B?k:q;if(i==="svg"||Dr(z)?i="svg":(i==="mathml"||jr(z))&&(i="mathml"),N?(h(e.dynamicChildren,N,x,r,o,i,l),wr(e,t,!0)):c||f(e,t,x,K,r,o,i,l,!1),A)B?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Fn(t,n,k,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const Q=t.target=Hs(t.props,v);Q&&Fn(t,Q,null,a,0)}else B&&Fn(t,z,q,a,1);Vn(t,A)}},remove(e,t,n,{um:s,o:{remove:r}},o){const{shapeFlag:i,children:l,anchor:c,targetStart:a,targetAnchor:u,target:f,props:h}=e;if(f&&(r(a),r(u)),o&&r(c),i&16){const g=o||!an(h);for(let v=0;v{e.isMounted=!0}),Bi(()=>{e.isUnmounting=!0}),e}const Fe=[Function,Array],Li={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Fe,onEnter:Fe,onAfterEnter:Fe,onEnterCancelled:Fe,onBeforeLeave:Fe,onLeave:Fe,onAfterLeave:Fe,onLeaveCancelled:Fe,onBeforeAppear:Fe,onAppear:Fe,onAfterAppear:Fe,onAppearCancelled:Fe},Fi=e=>{const t=e.subTree;return t.component?Fi(t.component):t},Hc={name:"BaseTransition",props:Li,setup(e,{slots:t}){const n=Dt(),s=Ni();return()=>{const r=t.default&&gr(t.default(),!0);if(!r||!r.length)return;const o=$i(r),i=J(e),{mode:l}=i;if(s.isLeaving)return Cs(o);const c=Hr(o);if(!c)return Cs(o);let a=bn(c,i,s,n,f=>a=f);c.type!==ye&&$t(c,a);let u=n.subTree&&Hr(n.subTree);if(u&&u.type!==ye&&!It(c,u)&&Fi(n).type!==ye){let f=bn(u,i,s,n);if($t(u,f),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,f.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,u=void 0},Cs(o);l==="in-out"&&c.type!==ye?f.delayLeave=(h,g,v)=>{const S=Di(s,u);S[String(u.key)]=u,h[yt]=()=>{g(),h[yt]=void 0,delete a.delayedLeave,u=void 0},a.delayedLeave=()=>{v(),delete a.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return o}}};function $i(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const Vc=Hc;function Di(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function bn(e,t,n,s,r){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:a,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:h,onLeave:g,onAfterLeave:v,onLeaveCancelled:S,onBeforeAppear:$,onAppear:A,onAfterAppear:I,onAppearCancelled:F}=t,N=String(e.key),k=Di(n,e),z=(x,K)=>{x&&Ue(x,s,9,K)},q=(x,K)=>{const Q=K[1];z(x,K),j(x)?x.every(M=>M.length<=1)&&Q():x.length<=1&&Q()},B={mode:i,persisted:l,beforeEnter(x){let K=c;if(!n.isMounted)if(o)K=$||c;else return;x[yt]&&x[yt](!0);const Q=k[N];Q&&It(e,Q)&&Q.el[yt]&&Q.el[yt](),z(K,[x])},enter(x){let K=a,Q=u,M=f;if(!n.isMounted)if(o)K=A||a,Q=I||u,M=F||f;else return;let Y=!1;const de=x[$n]=Ee=>{Y||(Y=!0,Ee?z(M,[x]):z(Q,[x]),B.delayedLeave&&B.delayedLeave(),x[$n]=void 0)};K?q(K,[x,de]):de()},leave(x,K){const Q=String(e.key);if(x[$n]&&x[$n](!0),n.isUnmounting)return K();z(h,[x]);let M=!1;const Y=x[yt]=de=>{M||(M=!0,K(),de?z(S,[x]):z(v,[x]),x[yt]=void 0,k[Q]===e&&delete k[Q])};k[Q]=e,g?q(g,[x,Y]):Y()},clone(x){const K=bn(x,t,n,s,r);return r&&r(K),K}};return B}function Cs(e){if(fs(e))return e=Et(e),e.children=null,e}function Hr(e){if(!fs(e))return Ai(e.type)&&e.children?$i(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&W(n.default))return n.default()}}function $t(e,t){e.shapeFlag&6&&e.component?(e.transition=t,$t(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function gr(e,t=!1,n){let s=[],r=0;for(let o=0;o1)for(let o=0;ofn(v,t&&(j(t)?t[S]:t),n,s,r));return}if(qt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&fn(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?gs(s.component):s.el,i=r?null:o,{i:l,r:c}=e,a=t&&t.r,u=l.refs===ie?l.refs={}:l.refs,f=l.setupState,h=J(f),g=f===ie?()=>!1:v=>te(h,v);if(a!=null&&a!==c&&(ae(a)?(u[a]=null,g(a)&&(f[a]=null)):fe(a)&&(a.value=null)),W(c))Pn(c,l,12,[i,u]);else{const v=ae(c),S=fe(c);if(v||S){const $=()=>{if(e.f){const A=v?g(c)?f[c]:u[c]:c.value;r?j(A)&&sr(A,o):j(A)?A.includes(o)||A.push(o):v?(u[c]=[o],g(c)&&(f[c]=u[c])):(c.value=[o],e.k&&(u[e.k]=c.value))}else v?(u[c]=i,g(c)&&(f[c]=i)):S&&(c.value=i,e.k&&(u[e.k]=i))};i?($.id=-1,Ce($,n)):$()}}}rs().requestIdleCallback;rs().cancelIdleCallback;const qt=e=>!!e.type.__asyncLoader,fs=e=>e.type.__isKeepAlive;function kc(e,t){Vi(e,"a",t)}function Bc(e,t){Vi(e,"da",t)}function Vi(e,t,n=_e){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(ds(t,s,n),n){let r=n.parent;for(;r&&r.parent;)fs(r.parent.vnode)&&Kc(s,t,n,r),r=r.parent}}function Kc(e,t,n,s){const r=ds(t,e,s,!0);Ki(()=>{sr(s[t],r)},n)}function ds(e,t,n=_e,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{ct();const l=An(n),c=Ue(t,n,e,i);return l(),ut(),c});return s?r.unshift(o):r.push(o),o}}const at=e=>(t,n=_e)=>{(!En||e==="sp")&&ds(e,(...s)=>t(...s),n)},Uc=at("bm"),mr=at("m"),Wc=at("bu"),ki=at("u"),Bi=at("bum"),Ki=at("um"),Gc=at("sp"),qc=at("rtg"),zc=at("rtc");function Qc(e,t=_e){ds("ec",e,t)}const vr="components",Jc="directives";function ud(e,t){return yr(vr,e,!0,t)||e}const Ui=Symbol.for("v-ndc");function ad(e){return ae(e)?yr(vr,e,!1)||e:e||Ui}function fd(e){return yr(Jc,e)}function yr(e,t,n=!0,s=!1){const r=ge||_e;if(r){const o=r.type;if(e===vr){const l=ju(o,!1);if(l&&(l===t||l===Ve(t)||l===ss(Ve(t))))return o}const i=Vr(r[e]||o[e],t)||Vr(r.appContext[e],t);return!i&&s?o:i}}function Vr(e,t){return e&&(e[t]||e[Ve(t)]||e[ss(Ve(t))])}function dd(e,t,n,s){let r;const o=n,i=j(e);if(i||ae(e)){const l=i&<(e);let c=!1,a=!1;l&&(c=!$e(e),a=St(e),e=cs(e)),r=new Array(e.length);for(let u=0,f=e.length;ut(l,c,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,a=l.length;c{const o=s.fn(...r);return o&&(o.key=s.key),o}:s.fn)}return e}function pd(e,t,n={},s,r){if(ge.ce||ge.parent&&qt(ge.parent)&&ge.parent.ce)return t!=="default"&&(n.name=t),Us(),Ws(Ae,null,[we("slot",n,s&&s())],64);let o=e[t];o&&o._c&&(o._d=!1),Us();const i=o&&Wi(o(n)),l=n.key||i&&i.key,c=Ws(Ae,{key:(l&&!Ke(l)?l:`_${t}`)+(!i&&s?"_fb":"")},i||(s?s():[]),i&&e._===1?64:-2);return!r&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),o&&o._c&&(o._d=!0),c}function Wi(e){return e.some(t=>Sn(t)?!(t.type===ye||t.type===Ae&&!Wi(t.children)):!0)?e:null}function gd(e,t){const n={};for(const s in e)n[jn(s)]=e[s];return n}const Vs=e=>e?fl(e)?gs(e):Vs(e.parent):null,dn=he(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Vs(e.parent),$root:e=>Vs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>zi(e),$forceUpdate:e=>e.f||(e.f=()=>{pr(e.update)}),$nextTick:e=>e.n||(e.n=Tn.bind(e.proxy)),$watch:e=>_u.bind(e)}),Rs=(e,t)=>e!==ie&&!e.__isScriptSetup&&te(e,t),Yc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(Rs(s,t))return i[t]=1,s[t];if(r!==ie&&te(r,t))return i[t]=2,r[t];if((a=e.propsOptions[0])&&te(a,t))return i[t]=3,o[t];if(n!==ie&&te(n,t))return i[t]=4,n[t];ks&&(i[t]=0)}}const u=dn[t];let f,h;if(u)return t==="$attrs"&&ve(e.attrs,"get",""),u(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==ie&&te(n,t))return i[t]=4,n[t];if(h=c.config.globalProperties,te(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return Rs(r,t)?(r[t]=n,!0):s!==ie&&te(s,t)?(s[t]=n,!0):te(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==ie&&te(e,i)||Rs(t,i)||(l=o[0])&&te(l,i)||te(s,i)||te(dn,i)||te(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:te(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function md(){return Gi().slots}function vd(){return Gi().attrs}function Gi(e){const t=Dt();return t.setupContext||(t.setupContext=hl(t))}function kr(e){return j(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ks=!0;function Xc(e){const t=zi(e),n=e.proxy,s=e.ctx;ks=!1,t.beforeCreate&&Br(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:a,created:u,beforeMount:f,mounted:h,beforeUpdate:g,updated:v,activated:S,deactivated:$,beforeDestroy:A,beforeUnmount:I,destroyed:F,unmounted:N,render:k,renderTracked:z,renderTriggered:q,errorCaptured:B,serverPrefetch:x,expose:K,inheritAttrs:Q,components:M,directives:Y,filters:de}=t;if(a&&Zc(a,s,null),i)for(const G in i){const Z=i[G];W(Z)&&(s[G]=Z.bind(n))}if(r){const G=r.call(n,n);se(G)&&(e.data=On(G))}if(ks=!0,o)for(const G in o){const Z=o[G],et=W(Z)?Z.bind(n,n):W(Z.get)?Z.get.bind(n,n):ke,dt=!W(Z)&&W(Z.set)?Z.set.bind(n):ke,Ge=be({get:et,set:dt});Object.defineProperty(s,G,{enumerable:!0,configurable:!0,get:()=>Ge.value,set:Oe=>Ge.value=Oe})}if(l)for(const G in l)qi(l[G],s,n,G);if(c){const G=W(c)?c.call(n):c;Reflect.ownKeys(G).forEach(Z=>{kn(Z,G[Z])})}u&&Br(u,e,"c");function re(G,Z){j(Z)?Z.forEach(et=>G(et.bind(n))):Z&&G(Z.bind(n))}if(re(Uc,f),re(mr,h),re(Wc,g),re(ki,v),re(kc,S),re(Bc,$),re(Qc,B),re(zc,z),re(qc,q),re(Bi,I),re(Ki,N),re(Gc,x),j(K))if(K.length){const G=e.exposed||(e.exposed={});K.forEach(Z=>{Object.defineProperty(G,Z,{get:()=>n[Z],set:et=>n[Z]=et,enumerable:!0})})}else e.exposed||(e.exposed={});k&&e.render===ke&&(e.render=k),Q!=null&&(e.inheritAttrs=Q),M&&(e.components=M),Y&&(e.directives=Y),x&&Hi(e)}function Zc(e,t,n=ke){j(e)&&(e=Bs(e));for(const s in e){const r=e[s];let o;se(r)?"default"in r?o=De(r.from||s,r.default,!0):o=De(r.from||s):o=De(r),fe(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function Br(e,t,n){Ue(j(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function qi(e,t,n,s){let r=s.includes(".")?ol(n,s):()=>n[s];if(ae(e)){const o=t[e];W(o)&&Se(r,o)}else if(W(e))Se(r,e.bind(n));else if(se(e))if(j(e))e.forEach(o=>qi(o,t,n,s));else{const o=W(e.handler)?e.handler.bind(n):t[e.handler];W(o)&&Se(r,o,e)}}function zi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>Yn(c,a,i,!0)),Yn(c,t,i)),se(t)&&o.set(t,c),c}function Yn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Yn(e,o,n,!0),r&&r.forEach(i=>Yn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=eu[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const eu={data:Kr,props:Ur,emits:Ur,methods:on,computed:on,beforeCreate:xe,created:xe,beforeMount:xe,mounted:xe,beforeUpdate:xe,updated:xe,beforeDestroy:xe,beforeUnmount:xe,destroyed:xe,unmounted:xe,activated:xe,deactivated:xe,errorCaptured:xe,serverPrefetch:xe,components:on,directives:on,watch:nu,provide:Kr,inject:tu};function Kr(e,t){return t?e?function(){return he(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function tu(e,t){return on(Bs(e),Bs(t))}function Bs(e){if(j(e)){const t={};for(let n=0;n1)return n&&W(t)?t.call(s&&s.proxy):t}}function ou(){return!!(Dt()||Lt)}const Ji={},Yi=()=>Object.create(Ji),Xi=e=>Object.getPrototypeOf(e)===Ji;function iu(e,t,n,s=!1){const r={},o=Yi();e.propsDefaults=Object.create(null),Zi(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:_i(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function lu(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=J(r),[c]=e.propsOptions;let a=!1;if((s||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let f=0;f{c=!0;const[h,g]=el(f,t,!0);he(i,h),g&&l.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!c)return se(e)&&s.set(e,Ut),Ut;if(j(o))for(let u=0;ue==="_"||e==="__"||e==="_ctx"||e==="$stable",br=e=>j(e)?e.map(Ze):[Ze(e)],uu=(e,t,n)=>{if(t._n)return t;const s=Dc((...r)=>br(t(...r)),n);return s._c=!1,s},tl=(e,t,n)=>{const s=e._ctx;for(const r in e){if(_r(r))continue;const o=e[r];if(W(o))t[r]=uu(r,o,s);else if(o!=null){const i=br(o);t[r]=()=>i}}},nl=(e,t)=>{const n=br(t);e.slots.default=()=>n},sl=(e,t,n)=>{for(const s in t)(n||!_r(s))&&(e[s]=t[s])},au=(e,t,n)=>{const s=e.slots=Yi();if(e.vnode.shapeFlag&32){const r=t.__;r&&Fs(s,"__",r,!0);const o=t._;o?(sl(s,t,n),n&&Fs(s,"_",o,!0)):tl(t,s)}else t&&nl(e,t)},fu=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ie;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:sl(r,t,n):(o=!t.$stable,tl(t,r)),i=t}else t&&(nl(e,t),i={default:1});if(o)for(const l in r)!_r(l)&&i[l]==null&&delete r[l]},Ce=Ru;function du(e){return hu(e)}function hu(e,t){const n=rs();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:u,parentNode:f,nextSibling:h,setScopeId:g=ke,insertStaticContent:v}=e,S=(d,p,m,y=null,w=null,b=null,O=void 0,R=null,C=!!p.dynamicChildren)=>{if(d===p)return;d&&!It(d,p)&&(y=_(d),Oe(d,w,b,!0),d=null),p.patchFlag===-2&&(C=!1,p.dynamicChildren=null);const{type:E,ref:V,shapeFlag:T}=p;switch(E){case ps:$(d,p,m,y);break;case ye:A(d,p,m,y);break;case Bn:d==null&&I(p,m,y,O);break;case Ae:M(d,p,m,y,w,b,O,R,C);break;default:T&1?k(d,p,m,y,w,b,O,R,C):T&6?Y(d,p,m,y,w,b,O,R,C):(T&64||T&128)&&E.process(d,p,m,y,w,b,O,R,C,D)}V!=null&&w?fn(V,d&&d.ref,b,p||d,!p):V==null&&d&&d.ref!=null&&fn(d.ref,null,b,d,!0)},$=(d,p,m,y)=>{if(d==null)s(p.el=l(p.children),m,y);else{const w=p.el=d.el;p.children!==d.children&&a(w,p.children)}},A=(d,p,m,y)=>{d==null?s(p.el=c(p.children||""),m,y):p.el=d.el},I=(d,p,m,y)=>{[d.el,d.anchor]=v(d.children,p,m,y,d.el,d.anchor)},F=({el:d,anchor:p},m,y)=>{let w;for(;d&&d!==p;)w=h(d),s(d,m,y),d=w;s(p,m,y)},N=({el:d,anchor:p})=>{let m;for(;d&&d!==p;)m=h(d),r(d),d=m;r(p)},k=(d,p,m,y,w,b,O,R,C)=>{p.type==="svg"?O="svg":p.type==="math"&&(O="mathml"),d==null?z(p,m,y,w,b,O,R,C):x(d,p,w,b,O,R,C)},z=(d,p,m,y,w,b,O,R)=>{let C,E;const{props:V,shapeFlag:T,transition:H,dirs:U}=d;if(C=d.el=i(d.type,b,V&&V.is,V),T&8?u(C,d.children):T&16&&B(d.children,C,null,y,w,Os(d,b),O,R),U&&Ot(d,null,y,"created"),q(C,d,d.scopeId,O,y),V){for(const le in V)le!=="value"&&!ln(le)&&o(C,le,null,V[le],b,y);"value"in V&&o(C,"value",null,V.value,b),(E=V.onVnodeBeforeMount)&&Je(E,y,d)}U&&Ot(d,null,y,"beforeMount");const X=pu(w,H);X&&H.beforeEnter(C),s(C,p,m),((E=V&&V.onVnodeMounted)||X||U)&&Ce(()=>{E&&Je(E,y,d),X&&H.enter(C),U&&Ot(d,null,y,"mounted")},w)},q=(d,p,m,y,w)=>{if(m&&g(d,m),y)for(let b=0;b{for(let E=C;E{const R=p.el=d.el;let{patchFlag:C,dynamicChildren:E,dirs:V}=p;C|=d.patchFlag&16;const T=d.props||ie,H=p.props||ie;let U;if(m&&Pt(m,!1),(U=H.onVnodeBeforeUpdate)&&Je(U,m,p,d),V&&Ot(p,d,m,"beforeUpdate"),m&&Pt(m,!0),(T.innerHTML&&H.innerHTML==null||T.textContent&&H.textContent==null)&&u(R,""),E?K(d.dynamicChildren,E,R,m,y,Os(p,w),b):O||Z(d,p,R,null,m,y,Os(p,w),b,!1),C>0){if(C&16)Q(R,T,H,m,w);else if(C&2&&T.class!==H.class&&o(R,"class",null,H.class,w),C&4&&o(R,"style",T.style,H.style,w),C&8){const X=p.dynamicProps;for(let le=0;le{U&&Je(U,m,p,d),V&&Ot(p,d,m,"updated")},y)},K=(d,p,m,y,w,b,O)=>{for(let R=0;R{if(p!==m){if(p!==ie)for(const b in p)!ln(b)&&!(b in m)&&o(d,b,p[b],null,w,y);for(const b in m){if(ln(b))continue;const O=m[b],R=p[b];O!==R&&b!=="value"&&o(d,b,R,O,w,y)}"value"in m&&o(d,"value",p.value,m.value,w)}},M=(d,p,m,y,w,b,O,R,C)=>{const E=p.el=d?d.el:l(""),V=p.anchor=d?d.anchor:l("");let{patchFlag:T,dynamicChildren:H,slotScopeIds:U}=p;U&&(R=R?R.concat(U):U),d==null?(s(E,m,y),s(V,m,y),B(p.children||[],m,V,w,b,O,R,C)):T>0&&T&64&&H&&d.dynamicChildren?(K(d.dynamicChildren,H,m,w,b,O,R),(p.key!=null||w&&p===w.subTree)&&wr(d,p,!0)):Z(d,p,m,V,w,b,O,R,C)},Y=(d,p,m,y,w,b,O,R,C)=>{p.slotScopeIds=R,d==null?p.shapeFlag&512?w.ctx.activate(p,m,y,O,C):de(p,m,y,w,b,O,C):Ee(d,p,C)},de=(d,p,m,y,w,b,O)=>{const R=d.component=Lu(d,y,w);if(fs(d)&&(R.ctx.renderer=D),Fu(R,!1,O),R.asyncDep){if(w&&w.registerDep(R,re,O),!d.el){const C=R.subTree=we(ye);A(null,C,p,m),d.placeholder=C.el}}else re(R,d,p,m,w,b,O)},Ee=(d,p,m)=>{const y=p.component=d.component;if(xu(d,p,m))if(y.asyncDep&&!y.asyncResolved){G(y,p,m);return}else y.next=p,y.update();else p.el=d.el,y.vnode=p},re=(d,p,m,y,w,b,O)=>{const R=()=>{if(d.isMounted){let{next:T,bu:H,u:U,parent:X,vnode:le}=d;{const ze=rl(d);if(ze){T&&(T.el=le.el,G(d,T,O)),ze.asyncDep.then(()=>{d.isUnmounted||R()});return}}let ne=T,Pe;Pt(d,!1),T?(T.el=le.el,G(d,T,O)):T=le,H&&Hn(H),(Pe=T.props&&T.props.onVnodeBeforeUpdate)&&Je(Pe,X,T,le),Pt(d,!0);const Te=qr(d),qe=d.subTree;d.subTree=Te,S(qe,Te,f(qe.el),_(qe),d,w,b),T.el=Te.el,ne===null&&Cu(d,Te.el),U&&Ce(U,w),(Pe=T.props&&T.props.onVnodeUpdated)&&Ce(()=>Je(Pe,X,T,le),w)}else{let T;const{el:H,props:U}=p,{bm:X,m:le,parent:ne,root:Pe,type:Te}=d,qe=qt(p);Pt(d,!1),X&&Hn(X),!qe&&(T=U&&U.onVnodeBeforeMount)&&Je(T,ne,p),Pt(d,!0);{Pe.ce&&Pe.ce._def.shadowRoot!==!1&&Pe.ce._injectChildStyle(Te);const ze=d.subTree=qr(d);S(null,ze,m,y,d,w,b),p.el=ze.el}if(le&&Ce(le,w),!qe&&(T=U&&U.onVnodeMounted)){const ze=p;Ce(()=>Je(T,ne,ze),w)}(p.shapeFlag&256||ne&&qt(ne.vnode)&&ne.vnode.shapeFlag&256)&&d.a&&Ce(d.a,w),d.isMounted=!0,p=m=y=null}};d.scope.on();const C=d.effect=new oi(R);d.scope.off();const E=d.update=C.run.bind(C),V=d.job=C.runIfDirty.bind(C);V.i=d,V.id=d.uid,C.scheduler=()=>pr(V),Pt(d,!0),E()},G=(d,p,m)=>{p.component=d;const y=d.vnode.props;d.vnode=p,d.next=null,lu(d,p.props,y,m),fu(d,p.children,m),ct(),Fr(d),ut()},Z=(d,p,m,y,w,b,O,R,C=!1)=>{const E=d&&d.children,V=d?d.shapeFlag:0,T=p.children,{patchFlag:H,shapeFlag:U}=p;if(H>0){if(H&128){dt(E,T,m,y,w,b,O,R,C);return}else if(H&256){et(E,T,m,y,w,b,O,R,C);return}}U&8?(V&16&&Le(E,w,b),T!==E&&u(m,T)):V&16?U&16?dt(E,T,m,y,w,b,O,R,C):Le(E,w,b,!0):(V&8&&u(m,""),U&16&&B(T,m,y,w,b,O,R,C))},et=(d,p,m,y,w,b,O,R,C)=>{d=d||Ut,p=p||Ut;const E=d.length,V=p.length,T=Math.min(E,V);let H;for(H=0;HV?Le(d,w,b,!0,!1,T):B(p,m,y,w,b,O,R,C,T)},dt=(d,p,m,y,w,b,O,R,C)=>{let E=0;const V=p.length;let T=d.length-1,H=V-1;for(;E<=T&&E<=H;){const U=d[E],X=p[E]=C?_t(p[E]):Ze(p[E]);if(It(U,X))S(U,X,m,null,w,b,O,R,C);else break;E++}for(;E<=T&&E<=H;){const U=d[T],X=p[H]=C?_t(p[H]):Ze(p[H]);if(It(U,X))S(U,X,m,null,w,b,O,R,C);else break;T--,H--}if(E>T){if(E<=H){const U=H+1,X=UH)for(;E<=T;)Oe(d[E],w,b,!0),E++;else{const U=E,X=E,le=new Map;for(E=X;E<=H;E++){const Ie=p[E]=C?_t(p[E]):Ze(p[E]);Ie.key!=null&&le.set(Ie.key,E)}let ne,Pe=0;const Te=H-X+1;let qe=!1,ze=0;const en=new Array(Te);for(E=0;E=Te){Oe(Ie,w,b,!0);continue}let Qe;if(Ie.key!=null)Qe=le.get(Ie.key);else for(ne=X;ne<=H;ne++)if(en[ne-X]===0&&It(Ie,p[ne])){Qe=ne;break}Qe===void 0?Oe(Ie,w,b,!0):(en[Qe-X]=E+1,Qe>=ze?ze=Qe:qe=!0,S(Ie,p[Qe],m,null,w,b,O,R,C),Pe++)}const Pr=qe?gu(en):Ut;for(ne=Pr.length-1,E=Te-1;E>=0;E--){const Ie=X+E,Qe=p[Ie],Tr=p[Ie+1],Ar=Ie+1{const{el:b,type:O,transition:R,children:C,shapeFlag:E}=d;if(E&6){Ge(d.component.subTree,p,m,y);return}if(E&128){d.suspense.move(p,m,y);return}if(E&64){O.move(d,p,m,D);return}if(O===Ae){s(b,p,m);for(let T=0;TR.enter(b),w);else{const{leave:T,delayLeave:H,afterLeave:U}=R,X=()=>{d.ctx.isUnmounted?r(b):s(b,p,m)},le=()=>{T(b,()=>{X(),U&&U()})};H?H(b,X,le):le()}else s(b,p,m)},Oe=(d,p,m,y=!1,w=!1)=>{const{type:b,props:O,ref:R,children:C,dynamicChildren:E,shapeFlag:V,patchFlag:T,dirs:H,cacheIndex:U}=d;if(T===-2&&(w=!1),R!=null&&(ct(),fn(R,null,m,d,!0),ut()),U!=null&&(p.renderCache[U]=void 0),V&256){p.ctx.deactivate(d);return}const X=V&1&&H,le=!qt(d);let ne;if(le&&(ne=O&&O.onVnodeBeforeUnmount)&&Je(ne,p,d),V&6)In(d.component,m,y);else{if(V&128){d.suspense.unmount(m,y);return}X&&Ot(d,null,p,"beforeUnmount"),V&64?d.type.remove(d,p,m,D,y):E&&!E.hasOnce&&(b!==Ae||T>0&&T&64)?Le(E,p,m,!1,!0):(b===Ae&&T&384||!w&&V&16)&&Le(C,p,m),y&&jt(d)}(le&&(ne=O&&O.onVnodeUnmounted)||X)&&Ce(()=>{ne&&Je(ne,p,d),X&&Ot(d,null,p,"unmounted")},m)},jt=d=>{const{type:p,el:m,anchor:y,transition:w}=d;if(p===Ae){Ht(m,y);return}if(p===Bn){N(d);return}const b=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(d.shapeFlag&1&&w&&!w.persisted){const{leave:O,delayLeave:R}=w,C=()=>O(m,b);R?R(d.el,b,C):C()}else b()},Ht=(d,p)=>{let m;for(;d!==p;)m=h(d),r(d),d=m;r(p)},In=(d,p,m)=>{const{bum:y,scope:w,job:b,subTree:O,um:R,m:C,a:E,parent:V,slots:{__:T}}=d;Gr(C),Gr(E),y&&Hn(y),V&&j(T)&&T.forEach(H=>{V.renderCache[H]=void 0}),w.stop(),b&&(b.flags|=8,Oe(O,d,p,m)),R&&Ce(R,p),Ce(()=>{d.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&d.asyncDep&&!d.asyncResolved&&d.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},Le=(d,p,m,y=!1,w=!1,b=0)=>{for(let O=b;O{if(d.shapeFlag&6)return _(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const p=h(d.anchor||d.el),m=p&&p[Ti];return m?h(m):p};let L=!1;const P=(d,p,m)=>{d==null?p._vnode&&Oe(p._vnode,null,null,!0):S(p._vnode||null,d,p,null,null,null,m),p._vnode=d,L||(L=!0,Fr(),Ri(),L=!1)},D={p:S,um:Oe,m:Ge,r:jt,mt:de,mc:B,pc:Z,pbc:K,n:_,o:e};return{render:P,hydrate:void 0,createApp:ru(P)}}function Os({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Pt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function pu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function wr(e,t,n=!1){const s=e.children,r=t.children;if(j(s)&&j(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function rl(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:rl(t)}function Gr(e){if(e)for(let t=0;tDe(mu);function yu(e,t){return Sr(e,null,t)}function Se(e,t,n){return Sr(e,t,n)}function Sr(e,t,n=ie){const{immediate:s,deep:r,flush:o,once:i}=n,l=he({},n),c=t&&s||!t&&o!=="post";let a;if(En){if(o==="sync"){const g=vu();a=g.__watcherHandles||(g.__watcherHandles=[])}else if(!c){const g=()=>{};return g.stop=ke,g.resume=ke,g.pause=ke,g}}const u=_e;l.call=(g,v,S)=>Ue(g,u,v,S);let f=!1;o==="post"?l.scheduler=g=>{Ce(g,u&&u.suspense)}:o!=="sync"&&(f=!0,l.scheduler=(g,v)=>{v?g():pr(g)}),l.augmentJob=g=>{t&&(g.flags|=4),f&&(g.flags|=2,u&&(g.id=u.uid,g.i=u))};const h=Nc(e,t,l);return En&&(a?a.push(h):c&&h()),h}function _u(e,t,n){const s=this.proxy,r=ae(e)?e.includes(".")?ol(s,e):()=>s[e]:e.bind(s,s);let o;W(t)?o=t:(o=t.handler,n=t);const i=An(this),l=Sr(r,o.bind(s),n);return i(),l}function ol(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ve(t)}Modifiers`]||e[`${Rt(t)}Modifiers`];function wu(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ie;let r=n;const o=t.startsWith("update:"),i=o&&bu(s,t.slice(7));i&&(i.trim&&(r=n.map(u=>ae(u)?u.trim():u)),i.number&&(r=n.map(Wn)));let l,c=s[l=jn(t)]||s[l=jn(Ve(t))];!c&&o&&(c=s[l=jn(Rt(t))]),c&&Ue(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ue(a,e,6,r)}}function il(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!W(e)){const c=a=>{const u=il(a,t,!0);u&&(l=!0,he(i,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(se(e)&&s.set(e,null),null):(j(o)?o.forEach(c=>i[c]=null):he(i,o),se(e)&&s.set(e,i),i)}function hs(e,t){return!e||!ts(t)?!1:(t=t.slice(2).replace(/Once$/,""),te(e,t[0].toLowerCase()+t.slice(1))||te(e,Rt(t))||te(e,t))}function qr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:a,renderCache:u,props:f,data:h,setupState:g,ctx:v,inheritAttrs:S}=e,$=Jn(e);let A,I;try{if(n.shapeFlag&4){const N=r||s,k=N;A=Ze(a.call(k,N,u,f,g,h,v)),I=l}else{const N=t;A=Ze(N.length>1?N(f,{attrs:l,slots:i,emit:c}):N(f,null)),I=t.props?l:Su(l)}}catch(N){hn.length=0,as(N,e,1),A=we(ye)}let F=A;if(I&&S!==!1){const N=Object.keys(I),{shapeFlag:k}=F;N.length&&k&7&&(o&&N.some(nr)&&(I=Eu(I,o)),F=Et(F,I,!1,!0))}return n.dirs&&(F=Et(F,null,!1,!0),F.dirs=F.dirs?F.dirs.concat(n.dirs):n.dirs),n.transition&&$t(F,n.transition),A=F,Jn($),A}const Su=e=>{let t;for(const n in e)(n==="class"||n==="style"||ts(n))&&((t||(t={}))[n]=e[n]);return t},Eu=(e,t)=>{const n={};for(const s in e)(!nr(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function xu(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?zr(s,i,a):!!i;if(c&8){const u=t.dynamicProps;for(let f=0;fe.__isSuspense;function Ru(e,t){t&&t.pendingBranch?j(e)?t.effects.push(...e):t.effects.push(e):$c(e)}const Ae=Symbol.for("v-fgt"),ps=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Bn=Symbol.for("v-stc"),hn=[];let Me=null;function Us(e=!1){hn.push(Me=e?null:[])}function Ou(){hn.pop(),Me=hn[hn.length-1]||null}let wn=1;function Qr(e,t=!1){wn+=e,e<0&&Me&&t&&(Me.hasOnce=!0)}function cl(e){return e.dynamicChildren=wn>0?Me||Ut:null,Ou(),wn>0&&Me&&Me.push(e),e}function yd(e,t,n,s,r,o){return cl(al(e,t,n,s,r,o,!0))}function Ws(e,t,n,s,r){return cl(we(e,t,n,s,r,!0))}function Sn(e){return e?e.__v_isVNode===!0:!1}function It(e,t){return e.type===t.type&&e.key===t.key}const ul=({key:e})=>e??null,Kn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ae(e)||fe(e)||W(e)?{i:ge,r:e,k:t,f:!!n}:e:null);function al(e,t=null,n=null,s=0,r=null,o=e===Ae?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ul(t),ref:t&&Kn(t),scopeId:Pi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ge};return l?(Er(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ae(n)?8:16),wn>0&&!i&&Me&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Me.push(c),c}const we=Pu;function Pu(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Ui)&&(e=ye),Sn(e)){const l=Et(e,t,!0);return n&&Er(l,n),wn>0&&!o&&Me&&(l.shapeFlag&6?Me[Me.indexOf(e)]=l:Me.push(l)),l.patchFlag=-2,l}if(Hu(e)&&(e=e.__vccOpts),t){t=Tu(t);let{class:l,style:c}=t;l&&!ae(l)&&(t.class=is(l)),se(c)&&(dr(c)&&!j(c)&&(c=he({},c)),t.style=os(c))}const i=ae(e)?1:ll(e)?128:Ai(e)?64:se(e)?4:W(e)?2:0;return al(e,t,n,s,r,i,o,!0)}function Tu(e){return e?dr(e)||Xi(e)?he({},e):e:null}function Et(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,a=t?Iu(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&ul(a),ref:t&&t.ref?n&&o?j(o)?o.concat(Kn(t)):[o,Kn(t)]:Kn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ae?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Et(e.ssContent),ssFallback:e.ssFallback&&Et(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&$t(u,c.clone(u)),u}function Au(e=" ",t=0){return we(ps,null,e,t)}function _d(e,t){const n=we(Bn,null,e);return n.staticCount=t,n}function bd(e="",t=!1){return t?(Us(),Ws(ye,null,e)):we(ye,null,e)}function Ze(e){return e==null||typeof e=="boolean"?we(ye):j(e)?we(Ae,null,e.slice()):Sn(e)?_t(e):we(ps,null,String(e))}function _t(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Et(e)}function Er(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(j(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Er(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Xi(t)?t._ctx=ge:r===3&&ge&&(ge.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:ge},n=32):(t=String(t),s&64?(n=16,t=[Au(t)]):n=8);e.children=t,e.shapeFlag|=n}function Iu(...e){const t={};for(let n=0;n_e||ge;let Xn,Gs;{const e=rs(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Xn=t("__VUE_INSTANCE_SETTERS__",n=>_e=n),Gs=t("__VUE_SSR_SETTERS__",n=>En=n)}const An=e=>{const t=_e;return Xn(e),e.scope.on(),()=>{e.scope.off(),Xn(t)}},Jr=()=>{_e&&_e.scope.off(),Xn(null)};function fl(e){return e.vnode.shapeFlag&4}let En=!1;function Fu(e,t=!1,n=!1){t&&Gs(t);const{props:s,children:r}=e.vnode,o=fl(e);iu(e,s,o,t),au(e,r,n||t);const i=o?$u(e,t):void 0;return t&&Gs(!1),i}function $u(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Yc);const{setup:s}=n;if(s){ct();const r=e.setupContext=s.length>1?hl(e):null,o=An(e),i=Pn(s,e,0,[e.props,r]),l=Jo(i);if(ut(),o(),(l||e.sp)&&!qt(e)&&Hi(e),l){if(i.then(Jr,Jr),t)return i.then(c=>{Yr(e,c)}).catch(c=>{as(c,e,0)});e.asyncDep=i}else Yr(e,i)}else dl(e)}function Yr(e,t,n){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=Si(t)),dl(e)}function dl(e,t,n){const s=e.type;e.render||(e.render=s.render||ke);{const r=An(e);ct();try{Xc(e)}finally{ut(),r()}}}const Du={get(e,t){return ve(e,"get",""),e[t]}};function hl(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Du),slots:e.slots,emit:e.emit,expose:t}}function gs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Si(hr(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in dn)return dn[n](e)},has(t,n){return n in t||n in dn}})):e.proxy}function ju(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function Hu(e){return W(e)&&"__vccOpts"in e}const be=(e,t)=>Ic(e,t,En);function xr(e,t,n){const s=arguments.length;return s===2?se(t)&&!j(t)?Sn(t)?we(e,null,[t]):we(e,t):we(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Sn(n)&&(n=[n]),we(e,t,n))}const Vu="3.5.18",wd=ke;/** +* @vue/runtime-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let qs;const Xr=typeof window<"u"&&window.trustedTypes;if(Xr)try{qs=Xr.createPolicy("vue",{createHTML:e=>e})}catch{}const pl=qs?e=>qs.createHTML(e):e=>e,ku="http://www.w3.org/2000/svg",Bu="http://www.w3.org/1998/Math/MathML",st=typeof document<"u"?document:null,Zr=st&&st.createElement("template"),Ku={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?st.createElementNS(ku,e):t==="mathml"?st.createElementNS(Bu,e):n?st.createElement(e,{is:n}):st.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Zr.innerHTML=pl(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Zr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ht="transition",nn="animation",zt=Symbol("_vtc"),gl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ml=he({},Li,gl),Uu=e=>(e.displayName="Transition",e.props=ml,e),Sd=Uu((e,{slots:t})=>xr(Vc,vl(e),t)),Tt=(e,t=[])=>{j(e)?e.forEach(n=>n(...t)):e&&e(...t)},eo=e=>e?j(e)?e.some(t=>t.length>1):e.length>1:!1;function vl(e){const t={};for(const M in e)M in gl||(t[M]=e[M]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:u=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,v=Wu(r),S=v&&v[0],$=v&&v[1],{onBeforeEnter:A,onEnter:I,onEnterCancelled:F,onLeave:N,onLeaveCancelled:k,onBeforeAppear:z=A,onAppear:q=I,onAppearCancelled:B=F}=t,x=(M,Y,de,Ee)=>{M._enterCancelled=Ee,gt(M,Y?u:l),gt(M,Y?a:i),de&&de()},K=(M,Y)=>{M._isLeaving=!1,gt(M,f),gt(M,g),gt(M,h),Y&&Y()},Q=M=>(Y,de)=>{const Ee=M?q:I,re=()=>x(Y,M,de);Tt(Ee,[Y,re]),to(()=>{gt(Y,M?c:o),Ye(Y,M?u:l),eo(Ee)||no(Y,s,S,re)})};return he(t,{onBeforeEnter(M){Tt(A,[M]),Ye(M,o),Ye(M,i)},onBeforeAppear(M){Tt(z,[M]),Ye(M,c),Ye(M,a)},onEnter:Q(!1),onAppear:Q(!0),onLeave(M,Y){M._isLeaving=!0;const de=()=>K(M,Y);Ye(M,f),M._enterCancelled?(Ye(M,h),zs()):(zs(),Ye(M,h)),to(()=>{M._isLeaving&&(gt(M,f),Ye(M,g),eo(N)||no(M,s,$,de))}),Tt(N,[M,de])},onEnterCancelled(M){x(M,!1,void 0,!0),Tt(F,[M])},onAppearCancelled(M){x(M,!0,void 0,!0),Tt(B,[M])},onLeaveCancelled(M){K(M),Tt(k,[M])}})}function Wu(e){if(e==null)return null;if(se(e))return[Ps(e.enter),Ps(e.leave)];{const t=Ps(e);return[t,t]}}function Ps(e){return zl(e)}function Ye(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[zt]||(e[zt]=new Set)).add(t)}function gt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[zt];n&&(n.delete(t),n.size||(e[zt]=void 0))}function to(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Gu=0;function no(e,t,n,s){const r=e._endId=++Gu,o=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=yl(e,t);if(!i)return s();const a=i+"end";let u=0;const f=()=>{e.removeEventListener(a,h),o()},h=g=>{g.target===e&&++u>=c&&f()};setTimeout(()=>{u(n[v]||"").split(", "),r=s(`${ht}Delay`),o=s(`${ht}Duration`),i=so(r,o),l=s(`${nn}Delay`),c=s(`${nn}Duration`),a=so(l,c);let u=null,f=0,h=0;t===ht?i>0&&(u=ht,f=i,h=o.length):t===nn?a>0&&(u=nn,f=a,h=c.length):(f=Math.max(i,a),u=f>0?i>a?ht:nn:null,h=u?u===ht?o.length:c.length:0);const g=u===ht&&/\b(transform|all)(,|$)/.test(s(`${ht}Property`).toString());return{type:u,timeout:f,propCount:h,hasTransform:g}}function so(e,t){for(;e.lengthro(n)+ro(e[s])))}function ro(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function zs(){return document.body.offsetHeight}function qu(e,t,n){const s=e[zt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Zn=Symbol("_vod"),_l=Symbol("_vsh"),Ed={beforeMount(e,{value:t},{transition:n}){e[Zn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):sn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),sn(e,!0),s.enter(e)):s.leave(e,()=>{sn(e,!1)}):sn(e,t))},beforeUnmount(e,{value:t}){sn(e,t)}};function sn(e,t){e.style.display=t?e[Zn]:"none",e[_l]=!t}const zu=Symbol(""),Qu=/(^|;)\s*display\s*:/;function Ju(e,t,n){const s=e.style,r=ae(n);let o=!1;if(n&&!r){if(t)if(ae(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Un(s,l,"")}else for(const i in t)n[i]==null&&Un(s,i,"");for(const i in n)i==="display"&&(o=!0),Un(s,i,n[i])}else if(r){if(t!==n){const i=s[zu];i&&(n+=";"+i),s.cssText=n,o=Qu.test(n)}}else t&&e.removeAttribute("style");Zn in e&&(e[Zn]=o?s.display:"",e[_l]&&(s.display="none"))}const oo=/\s*!important$/;function Un(e,t,n){if(j(n))n.forEach(s=>Un(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Yu(e,t);oo.test(n)?e.setProperty(Rt(s),n.replace(oo,""),"important"):e[s]=n}}const io=["Webkit","Moz","ms"],Ts={};function Yu(e,t){const n=Ts[t];if(n)return n;let s=Ve(t);if(s!=="filter"&&s in e)return Ts[t]=s;s=ss(s);for(let r=0;rAs||(ta.then(()=>As=0),As=Date.now());function sa(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ue(ra(s,n.value),t,5,[s])};return n.value=e,n.attached=na(),n}function ra(e,t){if(j(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const ho=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,oa=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?qu(e,s,i):t==="style"?Ju(e,n,s):ts(t)?nr(t)||Zu(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ia(e,t,s,i))?(uo(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&co(e,t,s,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ae(s))?uo(e,Ve(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),co(e,t,s,i))};function ia(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&ho(t)&&W(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return ho(t)&&ae(n)?!1:t in e}const bl=new WeakMap,wl=new WeakMap,es=Symbol("_moveCb"),po=Symbol("_enterCb"),la=e=>(delete e.props.mode,e),ca=la({name:"TransitionGroup",props:he({},ml,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Dt(),s=Ni();let r,o;return ki(()=>{if(!r.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!da(r[0].el,n.vnode.el,i)){r=[];return}r.forEach(ua),r.forEach(aa);const l=r.filter(fa);zs(),l.forEach(c=>{const a=c.el,u=a.style;Ye(a,i),u.transform=u.webkitTransform=u.transitionDuration="";const f=a[es]=h=>{h&&h.target!==a||(!h||/transform$/.test(h.propertyName))&&(a.removeEventListener("transitionend",f),a[es]=null,gt(a,i))};a.addEventListener("transitionend",f)}),r=[]}),()=>{const i=J(e),l=vl(i);let c=i.tag||Ae;if(r=[],o)for(let a=0;a{l.split(/\s+/).forEach(c=>c&&s.classList.remove(c))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(s);const{hasTransform:i}=yl(s);return o.removeChild(s),i}const xt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return j(t)?n=>Hn(t,n):t};function ha(e){e.target.composing=!0}function go(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const je=Symbol("_assign"),mo={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[je]=xt(r);const o=s||r.props&&r.props.type==="number";it(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=Wn(l)),e[je](l)}),n&&it(e,"change",()=>{e.value=e.value.trim()}),t||(it(e,"compositionstart",ha),it(e,"compositionend",go),it(e,"change",go))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[je]=xt(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?Wn(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},pa={deep:!0,created(e,t,n){e[je]=xt(n),it(e,"change",()=>{const s=e._modelValue,r=Qt(e),o=e.checked,i=e[je];if(j(s)){const l=or(s,r),c=l!==-1;if(o&&!c)i(s.concat(r));else if(!o&&c){const a=[...s];a.splice(l,1),i(a)}}else if(Zt(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(Sl(e,o))})},mounted:vo,beforeUpdate(e,t,n){e[je]=xt(n),vo(e,t,n)}};function vo(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(j(t))r=or(t,s.props.value)>-1;else if(Zt(t))r=t.has(s.props.value);else{if(t===n)return;r=Ft(t,Sl(e,!0))}e.checked!==r&&(e.checked=r)}const ga={created(e,{value:t},n){e.checked=Ft(t,n.props.value),e[je]=xt(n),it(e,"change",()=>{e[je](Qt(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[je]=xt(s),t!==n&&(e.checked=Ft(t,s.props.value))}},ma={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=Zt(t);it(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Wn(Qt(i)):Qt(i));e[je](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,Tn(()=>{e._assigning=!1})}),e[je]=xt(s)},mounted(e,{value:t}){yo(e,t)},beforeUpdate(e,t,n){e[je]=xt(n)},updated(e,{value:t}){e._assigning||yo(e,t)}};function yo(e,t){const n=e.multiple,s=j(t);if(!(n&&!s&&!Zt(t))){for(let r=0,o=e.options.length;rString(a)===String(l)):i.selected=or(t,l)>-1}else i.selected=t.has(l);else if(Ft(Qt(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Qt(e){return"_value"in e?e._value:e.value}function Sl(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Cd={created(e,t,n){Dn(e,t,n,null,"created")},mounted(e,t,n){Dn(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){Dn(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){Dn(e,t,n,s,"updated")}};function va(e,t){switch(e){case"SELECT":return ma;case"TEXTAREA":return mo;default:switch(t){case"checkbox":return pa;case"radio":return ga;default:return mo}}}function Dn(e,t,n,s,r){const i=va(e.tagName,n.props&&n.props.type)[r];i&&i(e,t,n,s)}const ya=["ctrl","shift","alt","meta"],_a={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ya.some(n=>e[`${n}Key`]&&!t.includes(n))},Rd=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const o=Rt(r.key);if(t.some(i=>i===o||ba[i]===o))return e(r)})},wa=he({patchProp:oa},Ku);let _o;function El(){return _o||(_o=du(wa))}const Pd=(...e)=>{El().render(...e)},Td=(...e)=>{const t=El().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ea(s);if(!r)return;const o=t._component;!W(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,Sa(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function Sa(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ea(e){return ae(e)?document.querySelector(e):e}/*! + * pinia v2.3.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let xl;const ms=e=>xl=e,Cl=Symbol();function Qs(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var pn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(pn||(pn={}));function Ad(){const e=si(!0),t=e.run(()=>ue({}));let n=[],s=[];const r=hr({install(o){ms(r),r._a=o,o.provide(Cl,r),o.config.globalProperties.$pinia=r,s.forEach(i=>n.push(i)),s=[]},use(o){return this._a?n.push(o):s.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const Rl=()=>{};function bo(e,t,n,s=Rl){e.push(t);const r=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),s())};return!n&&ir()&&ri(r),r}function kt(e,...t){e.slice().forEach(n=>{n(...t)})}const xa=e=>e(),wo=Symbol(),Is=Symbol();function Js(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],r=e[n];Qs(r)&&Qs(s)&&e.hasOwnProperty(n)&&!fe(s)&&!lt(s)?e[n]=Js(r,s):e[n]=s}return e}const Ca=Symbol();function Ra(e){return!Qs(e)||!e.hasOwnProperty(Ca)}const{assign:mt}=Object;function Oa(e){return!!(fe(e)&&e.effect)}function Pa(e,t,n,s){const{state:r,actions:o,getters:i}=t,l=n.state.value[e];let c;function a(){l||(n.state.value[e]=r?r():{});const u=Rc(n.state.value[e]);return mt(u,o,Object.keys(i||{}).reduce((f,h)=>(f[h]=hr(be(()=>{ms(n);const g=n._s.get(e);return i[h].call(g,g)})),f),{}))}return c=Ol(e,a,t,n,s,!0),c}function Ol(e,t,n={},s,r,o){let i;const l=mt({actions:{}},n),c={deep:!0};let a,u,f=[],h=[],g;const v=s.state.value[e];!o&&!v&&(s.state.value[e]={}),ue({});let S;function $(B){let x;a=u=!1,typeof B=="function"?(B(s.state.value[e]),x={type:pn.patchFunction,storeId:e,events:g}):(Js(s.state.value[e],B),x={type:pn.patchObject,payload:B,storeId:e,events:g});const K=S=Symbol();Tn().then(()=>{S===K&&(a=!0)}),u=!0,kt(f,x,s.state.value[e])}const A=o?function(){const{state:x}=n,K=x?x():{};this.$patch(Q=>{mt(Q,K)})}:Rl;function I(){i.stop(),f=[],h=[],s._s.delete(e)}const F=(B,x="")=>{if(wo in B)return B[Is]=x,B;const K=function(){ms(s);const Q=Array.from(arguments),M=[],Y=[];function de(G){M.push(G)}function Ee(G){Y.push(G)}kt(h,{args:Q,name:K[Is],store:k,after:de,onError:Ee});let re;try{re=B.apply(this&&this.$id===e?this:k,Q)}catch(G){throw kt(Y,G),G}return re instanceof Promise?re.then(G=>(kt(M,G),G)).catch(G=>(kt(Y,G),Promise.reject(G))):(kt(M,re),re)};return K[wo]=!0,K[Is]=x,K},N={_p:s,$id:e,$onAction:bo.bind(null,h),$patch:$,$reset:A,$subscribe(B,x={}){const K=bo(f,B,x.detached,()=>Q()),Q=i.run(()=>Se(()=>s.state.value[e],M=>{(x.flush==="sync"?u:a)&&B({storeId:e,type:pn.direct,events:g},M)},mt({},c,x)));return K},$dispose:I},k=On(N);s._s.set(e,k);const q=(s._a&&s._a.runWithContext||xa)(()=>s._e.run(()=>(i=si()).run(()=>t({action:F}))));for(const B in q){const x=q[B];if(fe(x)&&!Oa(x)||lt(x))o||(v&&Ra(x)&&(fe(x)?x.value=v[B]:Js(x,v[B])),s.state.value[e][B]=x);else if(typeof x=="function"){const K=F(x,B);q[B]=K,l.actions[B]=x}}return mt(k,q),mt(J(k),q),Object.defineProperty(k,"$state",{get:()=>s.state.value[e],set:B=>{$(x=>{mt(x,B)})}}),s._p.forEach(B=>{mt(k,i.run(()=>B({store:k,app:s._a,pinia:s,options:l})))}),v&&o&&n.hydrate&&n.hydrate(k.$state,v),a=!0,u=!0,k}/*! #__NO_SIDE_EFFECTS__ */function Id(e,t,n){let s,r;const o=typeof t=="function";typeof e=="string"?(s=e,r=o?n:t):(r=e,s=e.id);function i(l,c){const a=ou();return l=l||(a?De(Cl,null):null),l&&ms(l),l=xl,l._s.has(s)||(o?Ol(s,t,r,l):Pa(s,r,l)),l._s.get(s)}return i.$id=s,i}function Md(e){{const t=J(e),n={};for(const s in t){const r=t[s];r.effect?n[s]=be({get:()=>e[s],set(o){e[s]=o}}):(fe(r)||lt(r))&&(n[s]=Tc(e,s))}return n}}var Ta=Object.defineProperty,Aa=Object.defineProperties,Ia=Object.getOwnPropertyDescriptors,So=Object.getOwnPropertySymbols,Ma=Object.prototype.hasOwnProperty,Na=Object.prototype.propertyIsEnumerable,Eo=(e,t,n)=>t in e?Ta(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,La=(e,t)=>{for(var n in t||(t={}))Ma.call(t,n)&&Eo(e,n,t[n]);if(So)for(var n of So(t))Na.call(t,n)&&Eo(e,n,t[n]);return e},Fa=(e,t)=>Aa(e,Ia(t));function Nd(e,t){var n;const s=bi();return yu(()=>{s.value=e()},Fa(La({},t),{flush:(n=void 0)!=null?n:"sync"})),us(s)}var xo;const vs=typeof window<"u",$a=e=>typeof e<"u",Ys=e=>typeof e=="function",Da=e=>typeof e=="string",Jt=()=>{},ja=vs&&((xo=window==null?void 0:window.navigator)==null?void 0:xo.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Ct(e){return typeof e=="function"?e():Nt(e)}function Pl(e,t){function n(...s){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(o)})}return n}function Ha(e,t={}){let n,s,r=Jt;const o=l=>{clearTimeout(l),r(),r=Jt};return l=>{const c=Ct(e),a=Ct(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(s&&(o(s),s=null),Promise.resolve(l())):new Promise((u,f)=>{r=t.rejectOnCancel?f:u,a&&!s&&(s=setTimeout(()=>{n&&o(n),s=null,u(l())},a)),n=setTimeout(()=>{s&&o(s),s=null,u(l())},c)})}}function Va(e,t=!0,n=!0,s=!1){let r=0,o,i=!0,l=Jt,c;const a=()=>{o&&(clearTimeout(o),o=void 0,l(),l=Jt)};return f=>{const h=Ct(e),g=Date.now()-r,v=()=>c=f();return a(),h<=0?(r=Date.now(),v()):(g>h&&(n||!i)?(r=Date.now(),v()):t&&(c=new Promise((S,$)=>{l=s?$:S,o=setTimeout(()=>{r=Date.now(),i=!0,S(v()),a()},Math.max(0,h-g))})),!n&&!o&&(o=setTimeout(()=>i=!0,h)),i=!1,c)}}function ka(e){return e}function Ba(e,t){let n,s,r;const o=ue(!0),i=()=>{o.value=!0,r()};Se(e,i,{flush:"sync"});const l=Ys(t)?t:t.get,c=Ys(t)?void 0:t.set,a=Cc((u,f)=>(s=u,r=f,{get(){return o.value&&(n=l(),o.value=!1),s(),n},set(h){c==null||c(h)}}));return Object.isExtensible(a)&&(a.trigger=i),a}function ys(e){return ir()?(ri(e),!0):!1}function Ka(e,t=200,n={}){return Pl(Ha(t,n),e)}function Ld(e,t=200,n={}){const s=ue(e.value),r=Ka(()=>{s.value=e.value},t,n);return Se(e,()=>r()),s}function Fd(e,t=200,n=!1,s=!0,r=!1){return Pl(Va(t,n,s,r),e)}function Cr(e,t=!0){Dt()?mr(e):t?e():Tn(e)}function $d(e,t,n={}){const{immediate:s=!0}=n,r=ue(!1);let o=null;function i(){o&&(clearTimeout(o),o=null)}function l(){r.value=!1,i()}function c(...a){i(),r.value=!0,o=setTimeout(()=>{r.value=!1,o=null,e(...a)},Ct(t))}return s&&(r.value=!0,vs&&c()),ys(l),{isPending:us(r),start:c,stop:l}}function Ne(e){var t;const n=Ct(e);return(t=n==null?void 0:n.$el)!=null?t:n}const ft=vs?window:void 0,Ua=vs?window.document:void 0;function He(...e){let t,n,s,r;if(Da(e[0])||Array.isArray(e[0])?([n,s,r]=e,t=ft):[t,n,s,r]=e,!t)return Jt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const o=[],i=()=>{o.forEach(u=>u()),o.length=0},l=(u,f,h,g)=>(u.addEventListener(f,h,g),()=>u.removeEventListener(f,h,g)),c=Se(()=>[Ne(t),Ct(r)],([u,f])=>{i(),u&&o.push(...n.flatMap(h=>s.map(g=>l(u,h,g,f))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return ys(a),a}let Co=!1;function Dd(e,t,n={}){const{window:s=ft,ignore:r=[],capture:o=!0,detectIframe:i=!1}=n;if(!s)return;ja&&!Co&&(Co=!0,Array.from(s.document.body.children).forEach(h=>h.addEventListener("click",Jt)));let l=!0;const c=h=>r.some(g=>{if(typeof g=="string")return Array.from(s.document.querySelectorAll(g)).some(v=>v===h.target||h.composedPath().includes(v));{const v=Ne(g);return v&&(h.target===v||h.composedPath().includes(v))}}),u=[He(s,"click",h=>{const g=Ne(e);if(!(!g||g===h.target||h.composedPath().includes(g))){if(h.detail===0&&(l=!c(h)),!l){l=!0;return}t(h)}},{passive:!0,capture:o}),He(s,"pointerdown",h=>{const g=Ne(e);g&&(l=!h.composedPath().includes(g)&&!c(h))},{passive:!0}),i&&He(s,"blur",h=>{var g;const v=Ne(e);((g=s.document.activeElement)==null?void 0:g.tagName)==="IFRAME"&&!(v!=null&&v.contains(s.document.activeElement))&&t(h)})].filter(Boolean);return()=>u.forEach(h=>h())}function jd(e={}){var t;const{window:n=ft}=e,s=(t=e.document)!=null?t:n==null?void 0:n.document,r=Ba(()=>null,()=>s==null?void 0:s.activeElement);return n&&(He(n,"blur",o=>{o.relatedTarget===null&&r.trigger()},!0),He(n,"focus",r.trigger,!0)),r}function Tl(e,t=!1){const n=ue(),s=()=>n.value=!!e();return s(),Cr(s,t),n}function Wa(e){return JSON.parse(JSON.stringify(e))}const Ro=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Oo="__vueuse_ssr_handlers__";Ro[Oo]=Ro[Oo]||{};function Hd(e,t,{window:n=ft,initialValue:s=""}={}){const r=ue(s),o=be(()=>{var i;return Ne(t)||((i=n==null?void 0:n.document)==null?void 0:i.documentElement)});return Se([o,()=>Ct(e)],([i,l])=>{var c;if(i&&n){const a=(c=n.getComputedStyle(i).getPropertyValue(l))==null?void 0:c.trim();r.value=a||s}},{immediate:!0}),Se(r,i=>{var l;(l=o.value)!=null&&l.style&&o.value.style.setProperty(Ct(e),i)}),r}function Vd({document:e=Ua}={}){if(!e)return ue("visible");const t=ue(e.visibilityState);return He(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}var Po=Object.getOwnPropertySymbols,Ga=Object.prototype.hasOwnProperty,qa=Object.prototype.propertyIsEnumerable,za=(e,t)=>{var n={};for(var s in e)Ga.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&Po)for(var s of Po(e))t.indexOf(s)<0&&qa.call(e,s)&&(n[s]=e[s]);return n};function Al(e,t,n={}){const s=n,{window:r=ft}=s,o=za(s,["window"]);let i;const l=Tl(()=>r&&"ResizeObserver"in r),c=()=>{i&&(i.disconnect(),i=void 0)},a=Se(()=>Ne(e),f=>{c(),l.value&&r&&f&&(i=new ResizeObserver(t),i.observe(f,o))},{immediate:!0,flush:"post"}),u=()=>{c(),a()};return ys(u),{isSupported:l,stop:u}}function kd(e,t={}){const{reset:n=!0,windowResize:s=!0,windowScroll:r=!0,immediate:o=!0}=t,i=ue(0),l=ue(0),c=ue(0),a=ue(0),u=ue(0),f=ue(0),h=ue(0),g=ue(0);function v(){const S=Ne(e);if(!S){n&&(i.value=0,l.value=0,c.value=0,a.value=0,u.value=0,f.value=0,h.value=0,g.value=0);return}const $=S.getBoundingClientRect();i.value=$.height,l.value=$.bottom,c.value=$.left,a.value=$.right,u.value=$.top,f.value=$.width,h.value=$.x,g.value=$.y}return Al(e,v),Se(()=>Ne(e),S=>!S&&v()),r&&He("scroll",v,{capture:!0,passive:!0}),s&&He("resize",v,{passive:!0}),Cr(()=>{o&&v()}),{height:i,bottom:l,left:c,right:a,top:u,width:f,x:h,y:g,update:v}}function Bd(e,t={width:0,height:0},n={}){const{window:s=ft,box:r="content-box"}=n,o=be(()=>{var c,a;return(a=(c=Ne(e))==null?void 0:c.namespaceURI)==null?void 0:a.includes("svg")}),i=ue(t.width),l=ue(t.height);return Al(e,([c])=>{const a=r==="border-box"?c.borderBoxSize:r==="content-box"?c.contentBoxSize:c.devicePixelContentBoxSize;if(s&&o.value){const u=Ne(e);if(u){const f=s.getComputedStyle(u);i.value=parseFloat(f.width),l.value=parseFloat(f.height)}}else if(a){const u=Array.isArray(a)?a:[a];i.value=u.reduce((f,{inlineSize:h})=>f+h,0),l.value=u.reduce((f,{blockSize:h})=>f+h,0)}else i.value=c.contentRect.width,l.value=c.contentRect.height},n),Se(()=>Ne(e),c=>{i.value=c?t.width:0,l.value=c?t.height:0}),{width:i,height:l}}var To=Object.getOwnPropertySymbols,Qa=Object.prototype.hasOwnProperty,Ja=Object.prototype.propertyIsEnumerable,Ya=(e,t)=>{var n={};for(var s in e)Qa.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&To)for(var s of To(e))t.indexOf(s)<0&&Ja.call(e,s)&&(n[s]=e[s]);return n};function Kd(e,t,n={}){const s=n,{window:r=ft}=s,o=Ya(s,["window"]);let i;const l=Tl(()=>r&&"MutationObserver"in r),c=()=>{i&&(i.disconnect(),i=void 0)},a=Se(()=>Ne(e),f=>{c(),l.value&&r&&f&&(i=new MutationObserver(t),i.observe(f,o))},{immediate:!0}),u=()=>{c(),a()};return ys(u),{isSupported:l,stop:u}}var Ao;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(Ao||(Ao={}));var Xa=Object.defineProperty,Io=Object.getOwnPropertySymbols,Za=Object.prototype.hasOwnProperty,ef=Object.prototype.propertyIsEnumerable,Mo=(e,t,n)=>t in e?Xa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,tf=(e,t)=>{for(var n in t||(t={}))Za.call(t,n)&&Mo(e,n,t[n]);if(Io)for(var n of Io(t))ef.call(t,n)&&Mo(e,n,t[n]);return e};const nf={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};tf({linear:ka},nf);function Ud(e,t,n,s={}){var r,o,i;const{clone:l=!1,passive:c=!1,eventName:a,deep:u=!1,defaultValue:f}=s,h=Dt(),g=n||(h==null?void 0:h.emit)||((r=h==null?void 0:h.$emit)==null?void 0:r.bind(h))||((i=(o=h==null?void 0:h.proxy)==null?void 0:o.$emit)==null?void 0:i.bind(h==null?void 0:h.proxy));let v=a;t||(t="modelValue"),v=a||v||`update:${t.toString()}`;const S=A=>l?Ys(l)?l(A):Wa(A):A,$=()=>$a(e[t])?S(e[t]):f;if(c){const A=$(),I=ue(A);return Se(()=>e[t],F=>I.value=S(F)),Se(I,F=>{(F!==e[t]||u)&&g(v,F)},{deep:u}),I}else return be({get(){return $()},set(A){g(v,A)}})}function Wd({window:e=ft}={}){if(!e)return ue(!1);const t=ue(e.document.hasFocus());return He(e,"blur",()=>{t.value=!1}),He(e,"focus",()=>{t.value=!0}),t}function Gd(e={}){const{window:t=ft,initialWidth:n=1/0,initialHeight:s=1/0,listenOrientation:r=!0,includeScrollbar:o=!0}=e,i=ue(n),l=ue(s),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};return c(),Cr(c),He("resize",c,{passive:!0}),r&&He("orientationchange",c,{passive:!0}),{width:i,height:l}}/*! + * vue-router v4.5.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const Kt=typeof document<"u";function Il(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function sf(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Il(e.default)}const ee=Object.assign;function Ms(e,t){const n={};for(const s in t){const r=t[s];n[s]=We(r)?r.map(e):e(r)}return n}const gn=()=>{},We=Array.isArray,Ml=/#/g,rf=/&/g,of=/\//g,lf=/=/g,cf=/\?/g,Nl=/\+/g,uf=/%5B/g,af=/%5D/g,Ll=/%5E/g,ff=/%60/g,Fl=/%7B/g,df=/%7C/g,$l=/%7D/g,hf=/%20/g;function Rr(e){return encodeURI(""+e).replace(df,"|").replace(uf,"[").replace(af,"]")}function pf(e){return Rr(e).replace(Fl,"{").replace($l,"}").replace(Ll,"^")}function Xs(e){return Rr(e).replace(Nl,"%2B").replace(hf,"+").replace(Ml,"%23").replace(rf,"%26").replace(ff,"`").replace(Fl,"{").replace($l,"}").replace(Ll,"^")}function gf(e){return Xs(e).replace(lf,"%3D")}function mf(e){return Rr(e).replace(Ml,"%23").replace(cf,"%3F")}function vf(e){return e==null?"":mf(e).replace(of,"%2F")}function xn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const yf=/\/$/,_f=e=>e.replace(yf,"");function Ns(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let c=t.indexOf("?");return l=0&&(c=-1),c>-1&&(s=t.slice(0,c),o=t.slice(c+1,l>-1?l:t.length),r=e(o)),l>-1&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=Ef(s??t,n),{fullPath:s+(o&&"?")+o+i,path:s,query:r,hash:xn(i)}}function bf(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function No(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function wf(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Yt(t.matched[s],n.matched[r])&&Dl(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Yt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Dl(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Sf(e[n],t[n]))return!1;return!0}function Sf(e,t){return We(e)?Lo(e,t):We(t)?Lo(t,e):e===t}function Lo(e,t){return We(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Ef(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const pt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var Cn;(function(e){e.pop="pop",e.push="push"})(Cn||(Cn={}));var mn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(mn||(mn={}));function xf(e){if(!e)if(Kt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),_f(e)}const Cf=/^[^#]+#/;function Rf(e,t){return e.replace(Cf,"#")+t}function Of(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const _s=()=>({left:window.scrollX,top:window.scrollY});function Pf(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Of(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Fo(e,t){return(history.state?history.state.position-t:-1)+e}const Zs=new Map;function Tf(e,t){Zs.set(e,t)}function Af(e){const t=Zs.get(e);return Zs.delete(e),t}let If=()=>location.protocol+"//"+location.host;function jl(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let l=r.includes(e.slice(o))?e.slice(o).length:1,c=r.slice(l);return c[0]!=="/"&&(c="/"+c),No(c,"")}return No(n,e)+s+r}function Mf(e,t,n,s){let r=[],o=[],i=null;const l=({state:h})=>{const g=jl(e,location),v=n.value,S=t.value;let $=0;if(h){if(n.value=g,t.value=h,i&&i===v){i=null;return}$=S?h.position-S.position:0}else s(g);r.forEach(A=>{A(n.value,v,{delta:$,type:Cn.pop,direction:$?$>0?mn.forward:mn.back:mn.unknown})})};function c(){i=n.value}function a(h){r.push(h);const g=()=>{const v=r.indexOf(h);v>-1&&r.splice(v,1)};return o.push(g),g}function u(){const{history:h}=window;h.state&&h.replaceState(ee({},h.state,{scroll:_s()}),"")}function f(){for(const h of o)h();o=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:c,listen:a,destroy:f}}function $o(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?_s():null}}function Nf(e){const{history:t,location:n}=window,s={value:jl(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,a,u){const f=e.indexOf("#"),h=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+c:If()+e+c;try{t[u?"replaceState":"pushState"](a,"",h),r.value=a}catch(g){console.error(g),n[u?"replace":"assign"](h)}}function i(c,a){const u=ee({},t.state,$o(r.value.back,c,r.value.forward,!0),a,{position:r.value.position});o(c,u,!0),s.value=c}function l(c,a){const u=ee({},r.value,t.state,{forward:c,scroll:_s()});o(u.current,u,!0);const f=ee({},$o(s.value,c,null),{position:u.position+1},a);o(c,f,!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function qd(e){e=xf(e);const t=Nf(e),n=Mf(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=ee({location:"",base:e,go:s,createHref:Rf.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function Lf(e){return typeof e=="string"||e&&typeof e=="object"}function Hl(e){return typeof e=="string"||typeof e=="symbol"}const Vl=Symbol("");var Do;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Do||(Do={}));function Xt(e,t){return ee(new Error,{type:e,[Vl]:!0},t)}function nt(e,t){return e instanceof Error&&Vl in e&&(t==null||!!(e.type&t))}const jo="[^/]+?",Ff={sensitive:!1,strict:!1,start:!0,end:!0},$f=/[.+*?^${}()[\]/\\]/g;function Df(e,t){const n=ee({},Ff,t),s=[];let r=n.start?"^":"";const o=[];for(const a of e){const u=a.length?[]:[90];n.strict&&!a.length&&(r+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function kl(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Hf={type:0,value:""},Vf=/[a-zA-Z0-9_]/;function kf(e){if(!e)return[[]];if(e==="/")return[[Hf]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${a}": ${g}`)}let n=0,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,a="",u="";function f(){a&&(n===0?o.push({type:0,value:a}):n===1||n===2||n===3?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:a,regexp:u,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function h(){a+=c}for(;l{i(F)}:gn}function i(f){if(Hl(f)){const h=s.get(f);h&&(s.delete(f),n.splice(n.indexOf(h),1),h.children.forEach(i),h.alias.forEach(i))}else{const h=n.indexOf(f);h>-1&&(n.splice(h,1),f.record.name&&s.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function l(){return n}function c(f){const h=Gf(f,n);n.splice(h,0,f),f.record.name&&!Bo(f)&&s.set(f.record.name,f)}function a(f,h){let g,v={},S,$;if("name"in f&&f.name){if(g=s.get(f.name),!g)throw Xt(1,{location:f});$=g.record.name,v=ee(Vo(h.params,g.keys.filter(F=>!F.optional).concat(g.parent?g.parent.keys.filter(F=>F.optional):[]).map(F=>F.name)),f.params&&Vo(f.params,g.keys.map(F=>F.name))),S=g.stringify(v)}else if(f.path!=null)S=f.path,g=n.find(F=>F.re.test(S)),g&&(v=g.parse(S),$=g.record.name);else{if(g=h.name?s.get(h.name):n.find(F=>F.re.test(h.path)),!g)throw Xt(1,{location:f,currentLocation:h});$=g.record.name,v=ee({},h.params,f.params),S=g.stringify(v)}const A=[];let I=g;for(;I;)A.unshift(I.record),I=I.parent;return{name:$,path:S,params:v,matched:A,meta:Wf(A)}}e.forEach(f=>o(f));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:a,removeRoute:i,clearRoutes:u,getRoutes:l,getRecordMatcher:r}}function Vo(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function ko(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Uf(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Uf(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Bo(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Wf(e){return e.reduce((t,n)=>ee(t,n.meta),{})}function Ko(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function Gf(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;kl(e,t[o])<0?s=o:n=o+1}const r=qf(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function qf(e){let t=e;for(;t=t.parent;)if(Bl(t)&&kl(e,t)===0)return t}function Bl({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function zf(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ro&&Xs(o)):[s&&Xs(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Qf(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=We(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Jf=Symbol(""),Wo=Symbol(""),bs=Symbol(""),Or=Symbol(""),er=Symbol("");function rn(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function bt(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const a=h=>{h===!1?c(Xt(4,{from:n,to:t})):h instanceof Error?c(h):Lf(h)?c(Xt(2,{from:t,to:h})):(i&&s.enterCallbacks[r]===i&&typeof h=="function"&&i.push(h),l())},u=o(()=>e.call(s&&s.instances[r],t,n,a));let f=Promise.resolve(u);e.length<3&&(f=f.then(a)),f.catch(h=>c(h))})}function Ls(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let c=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(Il(c)){const u=(c.__vccOpts||c)[t];u&&o.push(bt(u,n,s,i,l,r))}else{let a=c();o.push(()=>a.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const f=sf(u)?u.default:u;i.mods[l]=u,i.components[l]=f;const g=(f.__vccOpts||f)[t];return g&&bt(g,n,s,i,l,r)()}))}}return o}function Go(e){const t=De(bs),n=De(Or),s=be(()=>{const c=Nt(e.to);return t.resolve(c)}),r=be(()=>{const{matched:c}=s.value,{length:a}=c,u=c[a-1],f=n.matched;if(!u||!f.length)return-1;const h=f.findIndex(Yt.bind(null,u));if(h>-1)return h;const g=qo(c[a-2]);return a>1&&qo(u)===g&&f[f.length-1].path!==g?f.findIndex(Yt.bind(null,c[a-2])):h}),o=be(()=>r.value>-1&&td(n.params,s.value.params)),i=be(()=>r.value>-1&&r.value===n.matched.length-1&&Dl(n.params,s.value.params));function l(c={}){if(ed(c)){const a=t[Nt(e.replace)?"replace":"push"](Nt(e.to)).catch(gn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:s,href:be(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function Yf(e){return e.length===1?e[0]:e}const Xf=ji({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Go,setup(e,{slots:t}){const n=On(Go(e)),{options:s}=De(bs),r=be(()=>({[zo(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[zo(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Yf(t.default(n));return e.custom?o:xr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Zf=Xf;function ed(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function td(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!We(r)||r.length!==s.length||s.some((o,i)=>o!==r[i]))return!1}return!0}function qo(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const zo=(e,t,n)=>e??t??n,nd=ji({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=De(er),r=be(()=>e.route||s.value),o=De(Wo,0),i=be(()=>{let a=Nt(o);const{matched:u}=r.value;let f;for(;(f=u[a])&&!f.components;)a++;return a}),l=be(()=>r.value.matched[i.value]);kn(Wo,be(()=>i.value+1)),kn(Jf,l),kn(er,r);const c=ue();return Se(()=>[c.value,l.value,e.name],([a,u,f],[h,g,v])=>{u&&(u.instances[f]=a,g&&g!==u&&a&&a===h&&(u.leaveGuards.size||(u.leaveGuards=g.leaveGuards),u.updateGuards.size||(u.updateGuards=g.updateGuards))),a&&u&&(!g||!Yt(u,g)||!h)&&(u.enterCallbacks[f]||[]).forEach(S=>S(a))},{flush:"post"}),()=>{const a=r.value,u=e.name,f=l.value,h=f&&f.components[u];if(!h)return Qo(n.default,{Component:h,route:a});const g=f.props[u],v=g?g===!0?a.params:typeof g=="function"?g(a):g:null,$=xr(h,ee({},v,t,{onVnodeUnmounted:A=>{A.component.isUnmounted&&(f.instances[u]=null)},ref:c}));return Qo(n.default,{Component:$,route:a})||$}}});function Qo(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const sd=nd;function zd(e){const t=Kf(e.routes,e),n=e.parseQuery||zf,s=e.stringifyQuery||Uo,r=e.history,o=rn(),i=rn(),l=rn(),c=bi(pt);let a=pt;Kt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Ms.bind(null,_=>""+_),f=Ms.bind(null,vf),h=Ms.bind(null,xn);function g(_,L){let P,D;return Hl(_)?(P=t.getRecordMatcher(_),D=L):D=_,t.addRoute(D,P)}function v(_){const L=t.getRecordMatcher(_);L&&t.removeRoute(L)}function S(){return t.getRoutes().map(_=>_.record)}function $(_){return!!t.getRecordMatcher(_)}function A(_,L){if(L=ee({},L||c.value),typeof _=="string"){const m=Ns(n,_,L.path),y=t.resolve({path:m.path},L),w=r.createHref(m.fullPath);return ee(m,y,{params:h(y.params),hash:xn(m.hash),redirectedFrom:void 0,href:w})}let P;if(_.path!=null)P=ee({},_,{path:Ns(n,_.path,L.path).path});else{const m=ee({},_.params);for(const y in m)m[y]==null&&delete m[y];P=ee({},_,{params:f(m)}),L.params=f(L.params)}const D=t.resolve(P,L),oe=_.hash||"";D.params=u(h(D.params));const d=bf(s,ee({},_,{hash:pf(oe),path:D.path})),p=r.createHref(d);return ee({fullPath:d,hash:oe,query:s===Uo?Qf(_.query):_.query||{}},D,{redirectedFrom:void 0,href:p})}function I(_){return typeof _=="string"?Ns(n,_,c.value.path):ee({},_)}function F(_,L){if(a!==_)return Xt(8,{from:L,to:_})}function N(_){return q(_)}function k(_){return N(ee(I(_),{replace:!0}))}function z(_){const L=_.matched[_.matched.length-1];if(L&&L.redirect){const{redirect:P}=L;let D=typeof P=="function"?P(_):P;return typeof D=="string"&&(D=D.includes("?")||D.includes("#")?D=I(D):{path:D},D.params={}),ee({query:_.query,hash:_.hash,params:D.path!=null?{}:_.params},D)}}function q(_,L){const P=a=A(_),D=c.value,oe=_.state,d=_.force,p=_.replace===!0,m=z(P);if(m)return q(ee(I(m),{state:typeof m=="object"?ee({},oe,m.state):oe,force:d,replace:p}),L||P);const y=P;y.redirectedFrom=L;let w;return!d&&wf(s,D,P)&&(w=Xt(16,{to:y,from:D}),Ge(D,D,!0,!1)),(w?Promise.resolve(w):K(y,D)).catch(b=>nt(b)?nt(b,2)?b:dt(b):Z(b,y,D)).then(b=>{if(b){if(nt(b,2))return q(ee({replace:p},I(b.to),{state:typeof b.to=="object"?ee({},oe,b.to.state):oe,force:d}),L||y)}else b=M(y,D,!0,p,oe);return Q(y,D,b),b})}function B(_,L){const P=F(_,L);return P?Promise.reject(P):Promise.resolve()}function x(_){const L=Ht.values().next().value;return L&&typeof L.runWithContext=="function"?L.runWithContext(_):_()}function K(_,L){let P;const[D,oe,d]=rd(_,L);P=Ls(D.reverse(),"beforeRouteLeave",_,L);for(const m of D)m.leaveGuards.forEach(y=>{P.push(bt(y,_,L))});const p=B.bind(null,_,L);return P.push(p),Le(P).then(()=>{P=[];for(const m of o.list())P.push(bt(m,_,L));return P.push(p),Le(P)}).then(()=>{P=Ls(oe,"beforeRouteUpdate",_,L);for(const m of oe)m.updateGuards.forEach(y=>{P.push(bt(y,_,L))});return P.push(p),Le(P)}).then(()=>{P=[];for(const m of d)if(m.beforeEnter)if(We(m.beforeEnter))for(const y of m.beforeEnter)P.push(bt(y,_,L));else P.push(bt(m.beforeEnter,_,L));return P.push(p),Le(P)}).then(()=>(_.matched.forEach(m=>m.enterCallbacks={}),P=Ls(d,"beforeRouteEnter",_,L,x),P.push(p),Le(P))).then(()=>{P=[];for(const m of i.list())P.push(bt(m,_,L));return P.push(p),Le(P)}).catch(m=>nt(m,8)?m:Promise.reject(m))}function Q(_,L,P){l.list().forEach(D=>x(()=>D(_,L,P)))}function M(_,L,P,D,oe){const d=F(_,L);if(d)return d;const p=L===pt,m=Kt?history.state:{};P&&(D||p?r.replace(_.fullPath,ee({scroll:p&&m&&m.scroll},oe)):r.push(_.fullPath,oe)),c.value=_,Ge(_,L,P,p),dt()}let Y;function de(){Y||(Y=r.listen((_,L,P)=>{if(!In.listening)return;const D=A(_),oe=z(D);if(oe){q(ee(oe,{replace:!0,force:!0}),D).catch(gn);return}a=D;const d=c.value;Kt&&Tf(Fo(d.fullPath,P.delta),_s()),K(D,d).catch(p=>nt(p,12)?p:nt(p,2)?(q(ee(I(p.to),{force:!0}),D).then(m=>{nt(m,20)&&!P.delta&&P.type===Cn.pop&&r.go(-1,!1)}).catch(gn),Promise.reject()):(P.delta&&r.go(-P.delta,!1),Z(p,D,d))).then(p=>{p=p||M(D,d,!1),p&&(P.delta&&!nt(p,8)?r.go(-P.delta,!1):P.type===Cn.pop&&nt(p,20)&&r.go(-1,!1)),Q(D,d,p)}).catch(gn)}))}let Ee=rn(),re=rn(),G;function Z(_,L,P){dt(_);const D=re.list();return D.length?D.forEach(oe=>oe(_,L,P)):console.error(_),Promise.reject(_)}function et(){return G&&c.value!==pt?Promise.resolve():new Promise((_,L)=>{Ee.add([_,L])})}function dt(_){return G||(G=!_,de(),Ee.list().forEach(([L,P])=>_?P(_):L()),Ee.reset()),_}function Ge(_,L,P,D){const{scrollBehavior:oe}=e;if(!Kt||!oe)return Promise.resolve();const d=!P&&Af(Fo(_.fullPath,0))||(D||!P)&&history.state&&history.state.scroll||null;return Tn().then(()=>oe(_,L,d)).then(p=>p&&Pf(p)).catch(p=>Z(p,_,L))}const Oe=_=>r.go(_);let jt;const Ht=new Set,In={currentRoute:c,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:$,getRoutes:S,resolve:A,options:e,push:N,replace:k,go:Oe,back:()=>Oe(-1),forward:()=>Oe(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:re.add,isReady:et,install(_){const L=this;_.component("RouterLink",Zf),_.component("RouterView",sd),_.config.globalProperties.$router=L,Object.defineProperty(_.config.globalProperties,"$route",{enumerable:!0,get:()=>Nt(c)}),Kt&&!jt&&c.value===pt&&(jt=!0,N(r.location).catch(oe=>{}));const P={};for(const oe in pt)Object.defineProperty(P,oe,{get:()=>c.value[oe],enumerable:!0});_.provide(bs,L),_.provide(Or,_i(P)),_.provide(er,c);const D=_.unmount;Ht.add(_),_.unmount=function(){Ht.delete(_),Ht.size<1&&(a=pt,Y&&Y(),Y=null,c.value=pt,jt=!1,G=!1),D()}}};function Le(_){return _.reduce((L,P)=>L.then(()=>x(P)),Promise.resolve())}return In}function rd(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iYt(a,l))?s.push(l):n.push(l));const c=e.matched[i];c&&(t.matched.find(a=>Yt(a,c))||r.push(c))}return[n,s,r]}function Qd(){return De(bs)}function Jd(e){return De(Or)}export{kc as $,pd as A,os as B,is as C,Tn as D,Iu as E,ys as F,md as G,Tc as H,Ws as I,Dc as J,ld as K,bd as L,ad as M,ke as N,Au as O,nc as P,Ae as Q,we as R,Ed as S,Sd as T,Nd as U,Ki as V,vd as W,Al as X,Rd as Y,Bi as Z,On as _,j as a,ki as a0,Et as a1,ps as a2,ye as a3,Ne as a4,cd as a5,Uc as a6,Dd as a7,us as a8,Bc as a9,ss as aA,ja as aB,Xo as aC,fd as aD,jn as aE,Kd as aF,Pd as aG,Vd as aH,Wd as aI,Ud as aJ,jd as aK,Bd as aL,Td as aM,Rt as aN,_i as aO,zd as aP,qd as aQ,Id as aR,Ad as aS,Qd as aT,Jd as aU,Md as aV,ma as aW,_d as aX,Cd as aY,Od as aa,hd as ab,dd as ac,Fd as ad,Ir as ae,od as af,Tu as ag,Sn as ah,xr as ai,id as aj,J as ak,pa as al,Rc as am,ga as an,Wc as ao,Jo as ap,mo as aq,Hd as ar,gd as as,ri as at,$d as au,ud as av,Ld as aw,xd as ax,hr as ay,si as az,se as b,be as c,ae as d,vs as e,fe as f,Dt as g,te as h,De as i,W as j,Ve as k,ji as l,Gd as m,kd as n,Se as o,kn as p,mr as q,ue as r,bi as s,He as t,Nt as u,yu as v,wd as w,yd as x,Us as y,al as z}; diff --git a/index.html b/index.html index 01fc03b2..3e588380 100644 --- a/index.html +++ b/index.html @@ -19,12 +19,12 @@ - - + + - + - + diff --git a/web/admin-spa/dist/assets/AccountsView-B3Ip8fto.css b/web/admin-spa/dist/assets/AccountsView-B3Ip8fto.css deleted file mode 100644 index fda11dd9..00000000 --- a/web/admin-spa/dist/assets/AccountsView-B3Ip8fto.css +++ /dev/null @@ -1 +0,0 @@ -.modal[data-v-c629d8ff]{background:#00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dark{background:#000000b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.loading-spinner[data-v-4463372c]{width:24px;height:24px;border:2px solid #e5e7eb;border-top:2px solid #3b82f6;border-radius:50%;animation:spin-4463372c 1s linear infinite}@keyframes spin-4463372c{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.accounts-container[data-v-4463372c]{min-height:calc(100vh - 300px)}.table-container[data-v-4463372c]{overflow-x:auto;border-radius:12px;border:1px solid rgba(0,0,0,.05)}.table-row[data-v-4463372c]{transition:all .2s ease}.table-row[data-v-4463372c]:hover{background-color:#00000005} diff --git a/web/admin-spa/dist/assets/AccountsView-BtGq4rQp.css b/web/admin-spa/dist/assets/AccountsView-BtGq4rQp.css new file mode 100644 index 00000000..0ac27a69 --- /dev/null +++ b/web/admin-spa/dist/assets/AccountsView-BtGq4rQp.css @@ -0,0 +1 @@ +.modal[data-v-c629d8ff]{background:#00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dark{background:#000000b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.loading-spinner[data-v-c2f46f02]{width:24px;height:24px;border:2px solid #e5e7eb;border-top:2px solid #3b82f6;border-radius:50%;animation:spin-c2f46f02 1s linear infinite}@keyframes spin-c2f46f02{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.accounts-container[data-v-c2f46f02]{min-height:calc(100vh - 300px)}.table-container[data-v-c2f46f02]{overflow-x:auto;border-radius:12px;border:1px solid rgba(0,0,0,.05)}.table-row[data-v-c2f46f02]{transition:all .2s ease}.table-row[data-v-c2f46f02]:hover{background-color:#00000005} diff --git a/web/admin-spa/dist/assets/AccountsView-CxtkDnoV.js b/web/admin-spa/dist/assets/AccountsView-CxtkDnoV.js new file mode 100644 index 00000000..3dcb7763 --- /dev/null +++ b/web/admin-spa/dist/assets/AccountsView-CxtkDnoV.js @@ -0,0 +1,15 @@ +import{a as tt}from"./element-plus-Bq6mBxnk.js";import{r as $,aR as st,o as J,V as at,x as i,y as n,z as e,L as w,K as y,al as ve,aX as Ie,aW as qe,aq as T,aY as lt,C as R,O as C,c as ke,P as v,I as we,a5 as Be,q as Ye,an as B,Q as pe,ac as me,R as ce,u as ee,J as rt,Y as Ge,B as We}from"./vue-vendor-Ig-GgGwA.js";import{s as I}from"./toast-BvwA7Mwb.js";import{b as S,_ as Qe}from"./index-CY9cPBXr.js";import{C as Fe}from"./CustomDropdown-C7e2WJat.js";import"./vendor-BDiMbLwQ.js";const Ee=$(!1),_e=$({title:"",message:"",confirmText:"继续",cancelText:"取消"}),be=$(null);function Xe(){return{showConfirmModal:Ee,confirmOptions:_e,showConfirm:(H,A,P="继续",k="取消")=>new Promise(g=>{_e.value={title:H,message:A,confirmText:P,cancelText:k},be.value=g,Ee.value=!0}),handleConfirm:()=>{Ee.value=!1,be.value&&(be.value(!0),be.value=null)},handleCancel:()=>{Ee.value=!1,be.value&&(be.value(!1),be.value=null)}}}const Ze=st("accounts",()=>{const N=$([]),Y=$([]),c=$([]),H=$([]),A=$([]),P=$([]),k=$(!1),g=$(null),U=$(""),z=$("asc"),f=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/claude-accounts");if(m.success)N.value=m.data||[];else throw new Error(m.message||"获取Claude账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}},D=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/claude-console-accounts");if(m.success)Y.value=m.data||[];else throw new Error(m.message||"获取Claude Console账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}},j=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/bedrock-accounts");if(m.success)c.value=m.data||[];else throw new Error(m.message||"获取Bedrock账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}},G=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/gemini-accounts");if(m.success)H.value=m.data||[];else throw new Error(m.message||"获取Gemini账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}},E=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/openai-accounts");if(m.success)A.value=m.data||[];else throw new Error(m.message||"获取OpenAI账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}},_=async()=>{k.value=!0,g.value=null;try{const m=await S.get("/admin/azure-openai-accounts");if(m.success)P.value=m.data||[];else throw new Error(m.message||"获取Azure OpenAI账户失败")}catch(m){throw g.value=m.message,m}finally{k.value=!1}};return{claudeAccounts:N,claudeConsoleAccounts:Y,bedrockAccounts:c,geminiAccounts:H,openaiAccounts:A,azureOpenaiAccounts:P,loading:k,error:g,sortBy:U,sortOrder:z,fetchClaudeAccounts:f,fetchClaudeConsoleAccounts:D,fetchBedrockAccounts:j,fetchGeminiAccounts:G,fetchOpenAIAccounts:E,fetchAzureOpenAIAccounts:_,fetchAllAccounts:async()=>{k.value=!0,g.value=null;try{await Promise.all([f(),D(),j(),G(),E(),_()])}catch(m){throw g.value=m.message,m}finally{k.value=!1}},createClaudeAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/claude-accounts",m);if(u.success)return await f(),u.data;throw new Error(u.message||"创建Claude账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},createClaudeConsoleAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/claude-console-accounts",m);if(u.success)return await D(),u.data;throw new Error(u.message||"创建Claude Console账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},createBedrockAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/bedrock-accounts",m);if(u.success)return await j(),u.data;throw new Error(u.message||"创建Bedrock账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},createGeminiAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/gemini-accounts",m);if(u.success)return await G(),u.data;throw new Error(u.message||"创建Gemini账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},createOpenAIAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/openai-accounts",m);if(u.success)return await E(),u.data;throw new Error(u.message||"创建OpenAI账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},createAzureOpenAIAccount:async m=>{k.value=!0,g.value=null;try{const u=await S.post("/admin/azure-openai-accounts",m);if(u.success)return await _(),u.data;throw new Error(u.message||"创建Azure OpenAI账户失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},updateClaudeAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/claude-accounts/${m}`,u);if(b.success)return await f(),b;throw new Error(b.message||"更新Claude账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},updateClaudeConsoleAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/claude-console-accounts/${m}`,u);if(b.success)return await D(),b;throw new Error(b.message||"更新Claude Console账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},updateBedrockAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/bedrock-accounts/${m}`,u);if(b.success)return await j(),b;throw new Error(b.message||"更新Bedrock账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},updateGeminiAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/gemini-accounts/${m}`,u);if(b.success)return await G(),b;throw new Error(b.message||"更新Gemini账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},updateOpenAIAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/openai-accounts/${m}`,u);if(b.success)return await E(),b;throw new Error(b.message||"更新OpenAI账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},updateAzureOpenAIAccount:async(m,u)=>{k.value=!0,g.value=null;try{const b=await S.put(`/admin/azure-openai-accounts/${m}`,u);if(b.success)return await _(),b;throw new Error(b.message||"更新Azure OpenAI账户失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},toggleAccount:async(m,u)=>{k.value=!0,g.value=null;try{let b;m==="claude"?b=`/admin/claude-accounts/${u}/toggle`:m==="claude-console"?b=`/admin/claude-console-accounts/${u}/toggle`:m==="bedrock"?b=`/admin/bedrock-accounts/${u}/toggle`:m==="gemini"?b=`/admin/gemini-accounts/${u}/toggle`:m==="openai"?b=`/admin/openai-accounts/${u}/toggle`:m==="azure_openai"?b=`/admin/azure-openai-accounts/${u}/toggle`:b=`/admin/openai-accounts/${u}/toggle`;const le=await S.put(b);if(le.success)return m==="claude"?await f():m==="claude-console"?await D():m==="bedrock"?await j():m==="gemini"?await G():m==="openai"?await E():m==="azure_openai"?await _():await E(),le;throw new Error(le.message||"切换状态失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},deleteAccount:async(m,u)=>{k.value=!0,g.value=null;try{let b;m==="claude"?b=`/admin/claude-accounts/${u}`:m==="claude-console"?b=`/admin/claude-console-accounts/${u}`:m==="bedrock"?b=`/admin/bedrock-accounts/${u}`:m==="gemini"?b=`/admin/gemini-accounts/${u}`:m==="openai"?b=`/admin/openai-accounts/${u}`:m==="azure_openai"?b=`/admin/azure-openai-accounts/${u}`:b=`/admin/openai-accounts/${u}`;const le=await S.delete(b);if(le.success)return m==="claude"?await f():m==="claude-console"?await D():m==="bedrock"?await j():m==="gemini"?await G():m==="openai"?await E():m==="azure_openai"?await _():await E(),le;throw new Error(le.message||"删除失败")}catch(b){throw g.value=b.message,b}finally{k.value=!1}},refreshClaudeToken:async m=>{k.value=!0,g.value=null;try{const u=await S.post(`/admin/claude-accounts/${m}/refresh`);if(u.success)return await f(),u;throw new Error(u.message||"Token刷新失败")}catch(u){throw g.value=u.message,u}finally{k.value=!1}},generateClaudeAuthUrl:async m=>{try{const u=await S.post("/admin/claude-accounts/generate-auth-url",m);if(u.success)return u.data;throw new Error(u.message||"生成授权URL失败")}catch(u){throw g.value=u.message,u}},exchangeClaudeCode:async m=>{try{const u=await S.post("/admin/claude-accounts/exchange-code",m);if(u.success)return u.data;throw new Error(u.message||"交换授权码失败")}catch(u){throw g.value=u.message,u}},generateClaudeSetupTokenUrl:async m=>{try{const u=await S.post("/admin/claude-accounts/generate-setup-token-url",m);if(u.success)return u.data;throw new Error(u.message||"生成Setup Token URL失败")}catch(u){throw g.value=u.message,u}},exchangeClaudeSetupTokenCode:async m=>{try{const u=await S.post("/admin/claude-accounts/exchange-setup-token-code",m);if(u.success)return u.data;throw new Error(u.message||"交换Setup Token授权码失败")}catch(u){throw g.value=u.message,u}},generateGeminiAuthUrl:async m=>{try{const u=await S.post("/admin/gemini-accounts/generate-auth-url",m);if(u.success)return u.data;throw new Error(u.message||"生成授权URL失败")}catch(u){throw g.value=u.message,u}},exchangeGeminiCode:async m=>{try{const u=await S.post("/admin/gemini-accounts/exchange-code",m);if(u.success)return u.data;throw new Error(u.message||"交换授权码失败")}catch(u){throw g.value=u.message,u}},generateOpenAIAuthUrl:async m=>{try{const u=await S.post("/admin/openai-accounts/generate-auth-url",m);if(u.success)return u.data;throw new Error(u.message||"生成授权URL失败")}catch(u){throw g.value=u.message,u}},exchangeOpenAICode:async m=>{try{const u=await S.post("/admin/openai-accounts/exchange-code",m);if(u.success)return u.data;throw new Error(u.message||"交换授权码失败")}catch(u){throw g.value=u.message,u}},sortAccounts:m=>{U.value===m?z.value=z.value==="asc"?"desc":"asc":(U.value=m,z.value="asc")},reset:()=>{N.value=[],Y.value=[],c.value=[],H.value=[],A.value=[],P.value=[],k.value=!1,g.value=null,U.value="",z.value="asc"}}}),ot={class:"space-y-4"},nt={class:"flex items-center justify-between"},it={class:"flex cursor-pointer items-center"},ut={key:0,class:"space-y-4 rounded-lg border border-gray-200 bg-gray-50 p-4 dark:border-gray-600 dark:bg-gray-800"},dt={class:"grid grid-cols-2 gap-4"},pt={class:"space-y-4"},mt={class:"flex items-center"},ct={key:0,class:"grid grid-cols-2 gap-4"},gt={class:"relative"},xt=["type"],He={__name:"ProxyConfig",props:{modelValue:{type:Object,default:()=>({enabled:!1,type:"socks5",host:"",port:"",username:"",password:""})}},emits:["update:modelValue"],setup(N,{emit:Y}){const c=N,H=Y,A=$({...c.modelValue}),P=$(!!(A.value.username||A.value.password)),k=$(!1);J(()=>c.modelValue,z=>{JSON.stringify(z)!==JSON.stringify(A.value)&&(A.value={...z},P.value=!!(z.username||z.password))},{deep:!0}),J(()=>A.value.enabled,()=>{U()}),J(()=>A.value.type,()=>{U()}),J(()=>A.value.host,()=>{U()}),J(()=>A.value.port,()=>{U()}),J(()=>A.value.username,()=>{U()}),J(()=>A.value.password,()=>{U()}),J(P,z=>{z||(A.value.username="",A.value.password="",U())});let g=null;function U(){g&&clearTimeout(g),g=setTimeout(()=>{const z={...A.value};P.value||(z.username="",z.password=""),H("update:modelValue",z)},100)}return at(()=>{g&&clearTimeout(g)}),(z,f)=>(n(),i("div",ot,[e("div",nt,[f[9]||(f[9]=e("h4",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"代理设置 (可选)",-1)),e("label",it,[y(e("input",{"onUpdate:modelValue":f[0]||(f[0]=D=>A.value.enabled=D),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ve,A.value.enabled]]),f[8]||(f[8]=e("span",{class:"ml-2 text-sm text-gray-700 dark:text-gray-300"},"启用代理",-1))])]),A.value.enabled?(n(),i("div",ut,[f[17]||(f[17]=Ie('

配置代理以访问受限的网络资源。支持 SOCKS5 和 HTTP 代理。

请确保代理服务器稳定可用,否则会影响账户的正常使用。

',1)),e("div",null,[f[11]||(f[11]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"代理类型",-1)),y(e("select",{"onUpdate:modelValue":f[1]||(f[1]=D=>A.value.type=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200"},f[10]||(f[10]=[e("option",{value:"socks5"},"SOCKS5",-1),e("option",{value:"http"},"HTTP",-1),e("option",{value:"https"},"HTTPS",-1)]),512),[[qe,A.value.type]])]),e("div",dt,[e("div",null,[f[12]||(f[12]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"主机地址",-1)),y(e("input",{"onUpdate:modelValue":f[2]||(f[2]=D=>A.value.host=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 192.168.1.100",type:"text"},null,512),[[T,A.value.host]])]),e("div",null,[f[13]||(f[13]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"端口",-1)),y(e("input",{"onUpdate:modelValue":f[3]||(f[3]=D=>A.value.port=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 1080",type:"number"},null,512),[[T,A.value.port]])])]),e("div",pt,[e("div",mt,[y(e("input",{id:"proxyAuth","onUpdate:modelValue":f[4]||(f[4]=D=>P.value=D),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ve,P.value]]),f[14]||(f[14]=e("label",{class:"ml-2 cursor-pointer text-sm text-gray-700 dark:text-gray-300",for:"proxyAuth"}," 需要身份验证 ",-1))]),P.value?(n(),i("div",ct,[e("div",null,[f[15]||(f[15]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"用户名",-1)),y(e("input",{"onUpdate:modelValue":f[5]||(f[5]=D=>A.value.username=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理用户名",type:"text"},null,512),[[T,A.value.username]])]),e("div",null,[f[16]||(f[16]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"密码",-1)),e("div",gt,[y(e("input",{"onUpdate:modelValue":f[6]||(f[6]=D=>A.value.password=D),class:"form-input w-full pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理密码",type:k.value?"text":"password"},null,8,xt),[[lt,A.value.password]]),e("button",{class:"absolute inset-y-0 right-0 flex items-center pr-3 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:f[7]||(f[7]=D=>k.value=!k.value)},[e("i",{class:R(k.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])])])])):w("",!0)]),f[18]||(f[18]=e("div",{class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-300"},[e("i",{class:"fas fa-info-circle mr-1"}),e("strong",null,"提示:"),C("代理设置将用于所有与此账户相关的API请求。请确保代理服务器支持HTTPS流量转发。 ")])],-1))])):w("",!0)]))}},yt={class:"space-y-6"},ft={key:0},bt={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},vt={class:"flex items-start gap-4"},kt={class:"flex-1"},wt={class:"space-y-4"},ht={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},$t={class:"flex items-start gap-3"},At={class:"flex-1"},Ct=["disabled"],Tt={key:0,class:"fas fa-link mr-2"},It={key:1,class:"loading-spinner mr-2"},Ut={key:1,class:"space-y-3"},St={class:"flex items-center gap-2"},Vt=["value"],zt={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Kt={class:"flex items-start gap-3"},Mt={class:"flex-1"},Ot={class:"space-y-3"},Lt={key:1},jt={class:"rounded-lg border border-green-200 bg-green-50 p-6 dark:border-green-700 dark:bg-green-900/30"},Rt={class:"flex items-start gap-4"},Dt={class:"flex-1"},Pt={class:"space-y-4"},Gt={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},Et={class:"flex items-start gap-3"},Wt={class:"flex-1"},Ft=["disabled"],qt={key:0,class:"fas fa-link mr-2"},Bt={key:1,class:"loading-spinner mr-2"},Nt={key:1,class:"space-y-3"},_t={class:"flex items-center gap-2"},Ht=["value"],Jt={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},Yt={class:"flex items-start gap-3"},Qt={class:"flex-1"},Xt={class:"space-y-3"},Zt={key:2},es={class:"rounded-lg border border-orange-200 bg-orange-50 p-6 dark:border-orange-700 dark:bg-orange-900/30"},ts={class:"flex items-start gap-4"},ss={class:"flex-1"},as={class:"space-y-4"},ls={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},rs={class:"flex items-start gap-3"},os={class:"flex-1"},ns=["disabled"],is={key:0,class:"fas fa-link mr-2"},us={key:1,class:"loading-spinner mr-2"},ds={key:1,class:"space-y-3"},ps={class:"flex items-center gap-2"},ms=["value"],cs={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},gs={class:"flex items-start gap-3"},xs={class:"flex-1"},ys={class:"space-y-3"},fs={class:"flex gap-3 pt-4"},bs=["disabled"],vs={key:0,class:"loading-spinner mr-2"},ks={__name:"OAuthFlow",props:{platform:{type:String,required:!0},proxy:{type:Object,default:null}},emits:["success","back"],setup(N,{emit:Y}){const c=N,H=Y,A=Ze(),P=$(!1),k=$(!1),g=$(""),U=$(""),z=$(!1),f=$(""),D=ke(()=>g.value&&U.value.trim());J(U,W=>{if(!W||typeof W!="string")return;const p=W.trim();if(!p)return;if(p.startsWith("http://")||p.startsWith("https://"))if(p.startsWith("http://localhost:45462")||p.startsWith("http://localhost:1455"))try{const ae=new URL(p).searchParams.get("code");ae?(U.value=ae,I("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):I("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(X){console.error("Failed to parse URL:",X),I("链接格式错误,请检查是否为完整的 URL","error")}else if(c.platform==="gemini"||c.platform==="openai")try{const ae=new URL(p).searchParams.get("code");ae&&(U.value=ae,I("成功提取授权码!","success"))}catch{}else I("请粘贴以 http://localhost:1455 或 http://localhost:45462 开头的链接","error")});const j=async()=>{var W;P.value=!0;try{const p=(W=c.proxy)!=null&&W.enabled?{proxy:{type:c.proxy.type,host:c.proxy.host,port:parseInt(c.proxy.port),username:c.proxy.username||null,password:c.proxy.password||null}}:{};if(c.platform==="claude"){const L=await A.generateClaudeAuthUrl(p);g.value=L.authUrl,f.value=L.sessionId}else if(c.platform==="gemini"){const L=await A.generateGeminiAuthUrl(p);g.value=L.authUrl,f.value=L.sessionId}else if(c.platform==="openai"){const L=await A.generateOpenAIAuthUrl(p);g.value=L.authUrl,f.value=L.sessionId}}catch(p){I(p.message||"生成授权链接失败","error")}finally{P.value=!1}},G=()=>{g.value="",U.value="",j()},E=async()=>{try{await navigator.clipboard.writeText(g.value),z.value=!0,I("链接已复制","success"),setTimeout(()=>{z.value=!1},2e3)}catch{const p=document.createElement("input");p.value=g.value,document.body.appendChild(p),p.select(),document.execCommand("copy"),document.body.removeChild(p),z.value=!0,I("链接已复制","success"),setTimeout(()=>{z.value=!1},2e3)}},_=async()=>{var W;if(D.value){k.value=!0;try{let p={};c.platform==="claude"?p={sessionId:f.value,callbackUrl:U.value.trim()}:c.platform==="gemini"?p={code:U.value.trim(),sessionId:f.value}:c.platform==="openai"&&(p={code:U.value.trim(),sessionId:f.value}),(W=c.proxy)!=null&&W.enabled&&(p.proxy={type:c.proxy.type,host:c.proxy.host,port:parseInt(c.proxy.port),username:c.proxy.username||null,password:c.proxy.password||null});let L;c.platform==="claude"?L=await A.exchangeClaudeCode(p):c.platform==="gemini"?L=await A.exchangeGeminiCode(p):c.platform==="openai"&&(L=await A.exchangeOpenAICode(p)),H("success",L)}catch(p){I(p.message||"授权失败,请检查授权码是否正确","error")}finally{k.value=!1}}};return(W,p)=>(n(),i("div",yt,[N.platform==="claude"?(n(),i("div",ft,[e("div",bt,[e("div",vt,[p[15]||(p[15]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-link text-white"})],-1)),e("div",kt,[p[13]||(p[13]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"},"Claude 账户授权",-1)),p[14]||(p[14]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤完成 Claude 账户的授权: ",-1)),e("div",wt,[e("div",ht,[e("div",$t,[p[6]||(p[6]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",At,[p[5]||(p[5]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),g.value?(n(),i("div",Ut,[e("div",St,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:g.value},null,8,Vt),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:E},[e("i",{class:R(z.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:G},p[4]||(p[4]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:P.value,onClick:j},[P.value?(n(),i("div",It)):(n(),i("i",Tt)),C(" "+v(P.value?"生成中...":"生成授权链接"),1)],8,Ct))])])]),p[12]||(p[12]=Ie('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Claude 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",zt,[e("div",Kt,[p[11]||(p[11]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Mt,[p[9]||(p[9]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),p[10]||(p[10]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"},[C(" 授权完成后,页面会显示一个 "),e("strong",null,"Authorization Code"),C(",请将其复制并粘贴到下方输入框: ")],-1)),e("div",Ot,[e("div",null,[p[7]||(p[7]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),C("Authorization Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":p[0]||(p[0]=L=>U.value=L),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Claude页面获取的Authorization Code...",rows:"3"},null,512),[[T,U.value]])]),p[8]||(p[8]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 请粘贴从Claude页面复制的Authorization Code ")],-1))])])])])])])])])])):N.platform==="gemini"?(n(),i("div",Lt,[e("div",jt,[e("div",Rt,[p[27]||(p[27]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-green-500"},[e("i",{class:"fas fa-robot text-white"})],-1)),e("div",Dt,[p[25]||(p[25]=e("h4",{class:"mb-3 font-semibold text-green-900 dark:text-green-200"},"Gemini 账户授权",-1)),p[26]||(p[26]=e("p",{class:"mb-4 text-sm text-green-800 dark:text-green-300"}," 请按照以下步骤完成 Gemini 账户的授权: ",-1)),e("div",Pt,[e("div",Gt,[e("div",Et,[p[18]||(p[18]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Wt,[p[17]||(p[17]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 点击下方按钮生成授权链接 ",-1)),g.value?(n(),i("div",Nt,[e("div",_t,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:g.value},null,8,Ht),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:E},[e("i",{class:R(z.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-green-600 hover:text-green-700",onClick:G},p[16]||(p[16]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:P.value,onClick:j},[P.value?(n(),i("div",Bt)):(n(),i("i",qt)),C(" "+v(P.value?"生成中...":"生成授权链接"),1)],8,Ft))])])]),p[24]||(p[24]=Ie('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Gemini 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",Jt,[e("div",Yt,[p[23]||(p[23]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Qt,[p[21]||(p[21]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 输入 Authorization Code ",-1)),p[22]||(p[22]=e("p",{class:"mb-3 text-sm text-green-700 dark:text-green-300"}," 授权完成后,页面会显示一个 Authorization Code,请将其复制并粘贴到下方输入框: ",-1)),e("div",Xt,[e("div",null,[p[19]||(p[19]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-green-500"}),C("Authorization Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":p[1]||(p[1]=L=>U.value=L),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Gemini页面获取的Authorization Code...",rows:"3"},null,512),[[T,U.value]])]),p[20]||(p[20]=e("div",{class:"mt-2 space-y-1"},[e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},[e("i",{class:"fas fa-check-circle mr-1 text-green-500"}),C(" 请粘贴从Gemini页面复制的Authorization Code ")])],-1))])])])])])])])])])):N.platform==="openai"?(n(),i("div",Zt,[e("div",es,[e("div",ts,[p[39]||(p[39]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-orange-500"},[e("i",{class:"fas fa-brain text-white"})],-1)),e("div",ss,[p[37]||(p[37]=e("h4",{class:"mb-3 font-semibold text-orange-900 dark:text-orange-200"},"OpenAI 账户授权",-1)),p[38]||(p[38]=e("p",{class:"mb-4 text-sm text-orange-800 dark:text-orange-300"}," 请按照以下步骤完成 OpenAI 账户的授权: ",-1)),e("div",as,[e("div",ls,[e("div",rs,[p[30]||(p[30]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",os,[p[29]||(p[29]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 点击下方按钮生成授权链接 ",-1)),g.value?(n(),i("div",ds,[e("div",ps,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:g.value},null,8,ms),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:E},[e("i",{class:R(z.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-orange-600 hover:text-orange-700",onClick:G},p[28]||(p[28]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:P.value,onClick:j},[P.value?(n(),i("div",us)):(n(),i("i",is)),C(" "+v(P.value?"生成中...":"生成授权链接"),1)],8,ns))])])]),p[36]||(p[36]=Ie('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 OpenAI 账户并授权。

重要提示:授权后页面可能会加载较长时间,请耐心等待。

当浏览器地址栏变为 http://localhost:1455/... 开头时,表示授权已完成。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",cs,[e("div",gs,[p[35]||(p[35]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",xs,[p[33]||(p[33]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 输入授权链接或 Code ",-1)),p[34]||(p[34]=e("p",{class:"mb-3 text-sm text-orange-700 dark:text-orange-300"},[C(" 授权完成后,当页面地址变为 "),e("strong",{class:"font-mono"},"http://localhost:1455/..."),C(" 时: ")],-1)),e("div",ys,[e("div",null,[p[31]||(p[31]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-link mr-2 text-orange-500"}),C("授权链接或 Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":p[2]||(p[2]=L=>U.value=L),class:"form-input w-full resize-none font-mono text-sm",placeholder:`方式1:复制完整的链接(http://localhost:1455/auth/callback?code=...) +方式2:仅复制 code 参数的值 +系统会自动识别并提取所需信息`,rows:"3"},null,512),[[T,U.value]])]),p[32]||(p[32]=Ie('

提示:您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别。

• 完整链接示例:http://localhost:1455/auth/callback?code=ac_4hm8...

• 仅 Code 示例:ac_4hm8iqmx9A2fzMy_cwye7U3W7...

',1))])])])])])])])])])):w("",!0),e("div",fs,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:p[3]||(p[3]=L=>W.$emit("back"))}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!D.value||k.value,type:"button",onClick:_},[k.value?(n(),i("div",vs)):w("",!0),C(" "+v(k.value?"验证中...":"完成授权"),1)],8,bs)])]))}},ws={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},hs={class:"modal-content mx-auto w-full max-w-md rounded-2xl bg-white p-6 shadow-xl dark:bg-gray-800"},$s={class:"mb-6 flex items-start gap-4"},As={class:"flex-1"},Cs={class:"mb-2 text-lg font-bold text-gray-900 dark:text-white"},Ts={class:"whitespace-pre-line text-sm leading-relaxed text-gray-700 dark:text-gray-300"},Is={class:"flex gap-3"},Us={__name:"ConfirmModal",props:{show:{type:Boolean,required:!0},title:{type:String,default:""},message:{type:String,default:""},confirmText:{type:String,default:"继续"},cancelText:{type:String,default:"取消"}},emits:["confirm","cancel"],setup(N){return(Y,c)=>(n(),we(Be,{to:"body"},[N.show?(n(),i("div",ws,[e("div",hs,[e("div",$s,[c[2]||(c[2]=e("div",{class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-yellow-400 to-yellow-500"},[e("i",{class:"fas fa-exclamation text-xl text-white"})],-1)),e("div",As,[e("h3",Cs,v(N.title),1),e("p",Ts,v(N.message),1)])]),e("div",Is,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-4 py-2.5 font-medium text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600",onClick:c[0]||(c[0]=H=>Y.$emit("cancel"))},v(N.cancelText),1),e("button",{class:"flex-1 rounded-xl bg-gradient-to-r from-yellow-500 to-orange-500 px-4 py-2.5 font-medium text-white shadow-sm transition-colors hover:from-yellow-600 hover:to-orange-600",onClick:c[1]||(c[1]=H=>Y.$emit("confirm"))},v(N.confirmText),1)])])])):w("",!0)]))}},et=Qe(Us,[["__scopeId","data-v-c629d8ff"]]),Ss={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Vs={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-4xl overflow-y-auto p-4 sm:p-6 md:p-8"},zs={class:"mb-4 flex items-center justify-between sm:mb-6"},Ks={class:"mb-6"},Ms={key:0,class:"mb-6 rounded-lg border border-blue-200 bg-blue-50 p-4"},Os={class:"space-y-4"},Ls={class:"flex gap-4"},js={class:"flex cursor-pointer items-center"},Rs={class:"flex cursor-pointer items-center"},Ds={class:"flex cursor-pointer items-center"},Ps={class:"flex gap-3"},Gs=["disabled"],Es={key:0,class:"loading-spinner mr-2"},Ws={class:"space-y-4"},Fs={key:0,class:"py-8 text-center"},qs={key:1,class:"rounded-lg bg-gray-50 py-8 text-center"},Bs={key:2,class:"grid grid-cols-1 gap-4 md:grid-cols-2"},Ns={class:"mb-3 flex items-start justify-between"},_s={class:"flex-1"},Hs={class:"font-semibold text-gray-900"},Js={class:"mt-1 text-sm text-gray-500"},Ys={class:"ml-4 flex items-center gap-2"},Qs={class:"flex items-center justify-between text-sm text-gray-600"},Xs={class:"flex items-center gap-4"},Zs={class:"flex items-center gap-2"},ea=["onClick"],ta=["disabled","onClick"],sa={key:1,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},aa={class:"modal-content w-full max-w-lg p-4 sm:p-6"},la={class:"space-y-4"},ra={class:"rounded-lg bg-gray-100 px-3 py-2 text-sm text-gray-600"},oa={class:"flex gap-3 pt-4"},na=["disabled"],ia={key:0,class:"loading-spinner mr-2"},ua={__name:"GroupManagementModal",emits:["close","refresh"],setup(N,{emit:Y}){const c=Y,H=$(!0),A=$(!1),P=$([]),k=$(!1),g=$(!1),U=$({name:"",platform:"claude",description:""}),z=$(!1),f=$(!1),D=$(null),j=$({name:"",platform:"",description:""}),G=s=>s?new Date(s).toLocaleDateString("zh-CN"):"-",E=async()=>{A.value=!0;try{const s=await S.get("/admin/account-groups");P.value=s.data||[]}catch{I("加载分组列表失败","error")}finally{A.value=!1}},_=async()=>{var s,x;if(!U.value.name||!U.value.platform){I("请填写必填项","error");return}g.value=!0;try{await S.post("/admin/account-groups",{name:U.value.name,platform:U.value.platform,description:U.value.description}),I("分组创建成功","success"),W(),await E(),c("refresh")}catch(K){I(((x=(s=K.response)==null?void 0:s.data)==null?void 0:x.error)||"创建分组失败","error")}finally{g.value=!1}},W=()=>{k.value=!1,U.value={name:"",platform:"claude",description:""}},p=s=>{D.value=s,j.value={name:s.name,platform:s.platform,description:s.description||""},z.value=!0},L=async()=>{var s,x;if(!j.value.name){I("请填写分组名称","error");return}f.value=!0;try{await S.put(`/admin/account-groups/${D.value.id}`,{name:j.value.name,description:j.value.description}),I("分组更新成功","success"),X(),await E(),c("refresh")}catch(K){I(((x=(s=K.response)==null?void 0:s.data)==null?void 0:x.error)||"更新分组失败","error")}finally{f.value=!1}},X=()=>{z.value=!1,D.value=null,j.value={name:"",platform:"",description:""}},ae=async s=>{var x,K;if(s.memberCount>0){I("分组内还有成员,无法删除","error");return}if(confirm(`确定要删除分组 "${s.name}" 吗?`))try{await S.delete(`/admin/account-groups/${s.id}`),I("分组删除成功","success"),await E(),c("refresh")}catch(h){I(((K=(x=h.response)==null?void 0:x.data)==null?void 0:K.error)||"删除分组失败","error")}};return Ye(()=>{E()}),(s,x)=>(n(),we(Be,{to:"body"},[H.value?(n(),i("div",Ss,[e("div",Vs,[e("div",zs,[x[10]||(x[10]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-layer-group text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 sm:text-xl"},"账户分组管理")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:x[0]||(x[0]=K=>s.$emit("close"))},x[9]||(x[9]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",Ks,[e("button",{class:"btn btn-primary px-4 py-2",onClick:x[1]||(x[1]=K=>k.value=!0)},x[11]||(x[11]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 创建新分组 ",-1)]))]),k.value?(n(),i("div",Ms,[x[18]||(x[18]=e("h4",{class:"mb-4 text-lg font-semibold text-gray-900"},"创建新分组",-1)),e("div",Os,[e("div",null,[x[12]||(x[12]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),y(e("input",{"onUpdate:modelValue":x[2]||(x[2]=K=>U.value.name=K),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[T,U.value.name]])]),e("div",null,[x[16]||(x[16]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型 *",-1)),e("div",Ls,[e("label",js,[y(e("input",{"onUpdate:modelValue":x[3]||(x[3]=K=>U.value.platform=K),class:"mr-2",type:"radio",value:"claude"},null,512),[[B,U.value.platform]]),x[13]||(x[13]=e("span",{class:"text-sm text-gray-700"},"Claude",-1))]),e("label",Rs,[y(e("input",{"onUpdate:modelValue":x[4]||(x[4]=K=>U.value.platform=K),class:"mr-2",type:"radio",value:"gemini"},null,512),[[B,U.value.platform]]),x[14]||(x[14]=e("span",{class:"text-sm text-gray-700"},"Gemini",-1))]),e("label",Ds,[y(e("input",{"onUpdate:modelValue":x[5]||(x[5]=K=>U.value.platform=K),class:"mr-2",type:"radio",value:"openai"},null,512),[[B,U.value.platform]]),x[15]||(x[15]=e("span",{class:"text-sm text-gray-700"},"OpenAI",-1))])])]),e("div",null,[x[17]||(x[17]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":x[6]||(x[6]=K=>U.value.description=K),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[T,U.value.description]])]),e("div",Ps,[e("button",{class:"btn btn-primary px-4 py-2",disabled:!U.value.name||!U.value.platform||g.value,onClick:_},[g.value?(n(),i("div",Es)):w("",!0),C(" "+v(g.value?"创建中...":"创建"),1)],8,Gs),e("button",{class:"btn btn-secondary px-4 py-2",onClick:W},"取消")])])])):w("",!0),e("div",Ws,[A.value?(n(),i("div",Fs,x[19]||(x[19]=[e("div",{class:"loading-spinner-lg mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500"},"加载中...",-1)]))):P.value.length===0?(n(),i("div",qs,x[20]||(x[20]=[e("i",{class:"fas fa-layer-group mb-4 text-4xl text-gray-300"},null,-1),e("p",{class:"text-gray-500"},"暂无分组",-1)]))):(n(),i("div",Bs,[(n(!0),i(pe,null,me(P.value,K=>(n(),i("div",{key:K.id,class:"rounded-lg border bg-white p-4 transition-shadow hover:shadow-md"},[e("div",Ns,[e("div",_s,[e("h4",Hs,v(K.name),1),e("p",Js,v(K.description||"暂无描述"),1)]),e("div",Ys,[e("span",{class:R(["rounded-full px-2 py-1 text-xs font-medium",K.platform==="claude"?"bg-purple-100 text-purple-700":K.platform==="gemini"?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"])},v(K.platform==="claude"?"Claude":K.platform==="gemini"?"Gemini":"OpenAI"),3)])]),e("div",Qs,[e("div",Xs,[e("span",null,[x[21]||(x[21]=e("i",{class:"fas fa-users mr-1"},null,-1)),C(" "+v(K.memberCount||0)+" 个成员 ",1)]),e("span",null,[x[22]||(x[22]=e("i",{class:"fas fa-clock mr-1"},null,-1)),C(" "+v(G(K.createdAt)),1)])]),e("div",Zs,[e("button",{class:"text-blue-600 transition-colors hover:text-blue-800",title:"编辑",onClick:h=>p(K)},x[23]||(x[23]=[e("i",{class:"fas fa-edit"},null,-1)]),8,ea),e("button",{class:"text-red-600 transition-colors hover:text-red-800",disabled:K.memberCount>0,title:"删除",onClick:h=>ae(K)},x[24]||(x[24]=[e("i",{class:"fas fa-trash"},null,-1)]),8,ta)])])]))),128))]))])])])):w("",!0),z.value?(n(),i("div",sa,[e("div",aa,[e("div",{class:"mb-4 flex items-center justify-between"},[x[26]||(x[26]=e("h3",{class:"text-lg font-bold text-gray-900"},"编辑分组",-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:X},x[25]||(x[25]=[e("i",{class:"fas fa-times"},null,-1)]))]),e("div",la,[e("div",null,[x[27]||(x[27]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),y(e("input",{"onUpdate:modelValue":x[7]||(x[7]=K=>j.value.name=K),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[T,j.value.name]])]),e("div",null,[x[29]||(x[29]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型",-1)),e("div",ra,[C(v(j.value.platform==="claude"?"Claude":j.value.platform==="gemini"?"Gemini":"OpenAI")+" ",1),x[28]||(x[28]=e("span",{class:"ml-2 text-xs text-gray-500"},"(不可修改)",-1))])]),e("div",null,[x[30]||(x[30]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":x[8]||(x[8]=K=>j.value.description=K),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[T,j.value.description]])]),e("div",oa,[e("button",{class:"btn btn-primary flex-1 px-4 py-2",disabled:!j.value.name||f.value,onClick:L},[f.value?(n(),i("div",ia)):w("",!0),C(" "+v(f.value?"更新中...":"更新"),1)],8,na),e("button",{class:"btn btn-secondary flex-1 px-4 py-2",onClick:X},"取消")])])])])):w("",!0)]))}},da={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},pa={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-2xl overflow-y-auto p-4 sm:p-6 md:p-8"},ma={class:"mb-4 flex items-center justify-between sm:mb-6"},ca={class:"flex items-center gap-2 sm:gap-3"},ga={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},xa={key:0,class:"mb-4 flex items-center justify-center sm:mb-8"},ya={class:"flex items-center space-x-2 sm:space-x-4"},fa={class:"flex items-center"},ba={class:"flex items-center"},va={key:1},ka={class:"space-y-6"},wa={key:0},ha={class:"flex gap-4"},$a={class:"flex cursor-pointer items-center"},Aa={class:"flex cursor-pointer items-center"},Ca={class:"flex cursor-pointer items-center"},Ta={class:"flex cursor-pointer items-center"},Ia={class:"flex cursor-pointer items-center"},Ua={class:"flex cursor-pointer items-center"},Sa={key:1},Va={class:"flex flex-wrap gap-4"},za={key:0,class:"flex cursor-pointer items-center"},Ka={class:"flex cursor-pointer items-center"},Ma={class:"flex cursor-pointer items-center"},Oa={key:0,class:"mt-1 text-xs text-red-500"},La={class:"flex gap-4"},ja={class:"flex cursor-pointer items-center"},Ra={class:"flex cursor-pointer items-center"},Da={class:"flex cursor-pointer items-center"},Pa={key:2},Ga={class:"flex gap-2"},Ea=["value"],Wa={key:3},Fa={key:4,class:"space-y-4"},qa={key:0,class:"mt-1 text-xs text-red-500"},Ba={key:0,class:"mt-1 text-xs text-red-500"},Na={key:0,class:"mt-1 text-xs text-red-500"},_a={key:5,class:"space-y-4"},Ha={key:0,class:"mt-1 text-xs text-red-500"},Ja={key:0,class:"mt-1 text-xs text-red-500"},Ya={key:0,class:"mt-1 text-xs text-red-500"},Qa={class:"flex flex-wrap gap-2"},Xa=["value"],Za={class:"text-sm text-gray-700 dark:text-gray-300"},el={key:6},tl={class:"mb-3"},sl={class:"inline-flex cursor-pointer items-center"},al={key:0},ll={key:7,class:"space-y-4"},rl={key:0,class:"mt-1 text-xs text-red-500"},ol={key:0,class:"mt-1 text-xs text-red-500"},nl={class:"mb-3 space-y-2"},il=["onUpdate:modelValue"],ul=["onUpdate:modelValue"],dl=["onClick"],pl={class:"mt-3 flex flex-wrap gap-2"},ml={class:"mb-3"},cl={class:"inline-flex cursor-pointer items-center"},gl={key:0},xl={key:8},yl={class:"flex gap-4"},fl={class:"flex cursor-pointer items-center"},bl={class:"flex cursor-pointer items-center"},vl={key:9,class:"space-y-4 rounded-lg border border-blue-200 bg-blue-50 p-4"},kl={class:"mb-4 flex items-start gap-3"},wl={key:0,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},hl={key:1,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},$l={key:2,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},Al={class:"mb-2 mt-2 rounded-lg border border-blue-300 bg-white/80 p-3 dark:border-blue-600 dark:bg-gray-800/80"},Cl={key:0,class:"text-xs text-blue-800 dark:text-blue-300"},Tl={key:1,class:"text-xs text-blue-800 dark:text-blue-300"},Il={key:2,class:"text-xs text-blue-800 dark:text-blue-300"},Ul={key:0},Sl={key:0,class:"mt-1 text-xs text-red-500"},Vl={key:0,class:"mt-1 text-xs text-red-500"},zl={class:"flex gap-3 pt-4"},Kl=["disabled"],Ml=["disabled"],Ol={key:0,class:"loading-spinner mr-2"},Ll={key:3,class:"space-y-6"},jl={key:0},Rl={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},Dl={class:"flex items-start gap-4"},Pl={class:"flex-1"},Gl={class:"space-y-4"},El={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Wl={class:"flex items-start gap-3"},Fl={class:"flex-1"},ql=["disabled"],Bl={key:0,class:"fas fa-link mr-2"},Nl={key:1,class:"loading-spinner mr-2"},_l={key:1,class:"space-y-3"},Hl={class:"flex items-center gap-2"},Jl=["value"],Yl={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Ql={class:"flex items-start gap-3"},Xl={class:"flex-1"},Zl={class:"space-y-3"},er={class:"flex gap-3 pt-4"},tr=["disabled"],sr={key:0,class:"loading-spinner mr-2"},ar={key:4,class:"space-y-6"},lr={class:"flex gap-4"},rr={class:"flex cursor-pointer items-center"},or={class:"flex cursor-pointer items-center"},nr={class:"flex cursor-pointer items-center"},ir={key:0},ur={class:"flex gap-2"},dr=["value"],pr={key:1},mr={key:2},cr={class:"flex gap-4"},gr={class:"flex cursor-pointer items-center"},xr={class:"flex cursor-pointer items-center"},yr={key:3,class:"space-y-4"},fr={class:"mb-3 space-y-2"},br=["onUpdate:modelValue"],vr=["onUpdate:modelValue"],kr=["onClick"],wr={class:"mt-3 flex flex-wrap gap-2"},hr={class:"mb-3"},$r={class:"inline-flex cursor-pointer items-center"},Ar={key:0},Cr={key:4,class:"space-y-4"},Tr={class:"mb-3"},Ir={class:"inline-flex cursor-pointer items-center"},Ur={key:0},Sr={key:5,class:"rounded-lg border border-amber-200 bg-amber-50 p-4 dark:border-amber-700 dark:bg-amber-900/30"},Vr={class:"space-y-4"},zr={class:"flex gap-3 pt-4"},Kr=["disabled"],Mr={key:0,class:"loading-spinner mr-2"},Je={__name:"AccountForm",props:{account:{type:Object,default:null}},emits:["close","success"],setup(N,{emit:Y}){var Ke,Me,Oe,Le,je,Re,De,Pe,d,l,V,r,F,q,te,se,re;const c=N,H=Y,A=Ze(),{showConfirmModal:P,confirmOptions:k,showConfirm:g,handleConfirm:U,handleCancel:z}=Xe(),f=ke(()=>!!c.account),D=$(!0),j=$(1),G=$(!1),E=$(!1),_=$(!1),W=$(""),p=$(""),L=$(!1),X=$(""),ae=()=>{var o;return(o=c.account)!=null&&o.proxy&&c.account.proxy.host&&c.account.proxy.port?{enabled:!0,type:c.account.proxy.type||"socks5",host:c.account.proxy.host,port:c.account.proxy.port,username:c.account.proxy.username||"",password:c.account.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""}},s=$({platform:((Ke=c.account)==null?void 0:Ke.platform)||"claude",addType:((Me=c.account)==null?void 0:Me.platform)==="gemini"?"oauth":"setup-token",name:((Oe=c.account)==null?void 0:Oe.name)||"",description:((Le=c.account)==null?void 0:Le.description)||"",accountType:((je=c.account)==null?void 0:je.accountType)||"shared",subscriptionType:"claude_max",groupId:"",projectId:((Re=c.account)==null?void 0:Re.projectId)||"",idToken:"",accessToken:"",refreshToken:"",proxy:ae(),apiUrl:((De=c.account)==null?void 0:De.apiUrl)||"",apiKey:((Pe=c.account)==null?void 0:Pe.apiKey)||"",priority:((d=c.account)==null?void 0:d.priority)||50,supportedModels:(()=>{var t;const o=(t=c.account)==null?void 0:t.supportedModels;return o?typeof o=="object"&&!Array.isArray(o)?Object.keys(o).join(` +`):Array.isArray(o)?o.join(` +`):"":""})(),userAgent:((l=c.account)==null?void 0:l.userAgent)||"",enableRateLimit:c.account?c.account.rateLimitDuration>0:!0,rateLimitDuration:((V=c.account)==null?void 0:V.rateLimitDuration)||60,accessKeyId:((r=c.account)==null?void 0:r.accessKeyId)||"",secretAccessKey:((F=c.account)==null?void 0:F.secretAccessKey)||"",region:((q=c.account)==null?void 0:q.region)||"",sessionToken:((te=c.account)==null?void 0:te.sessionToken)||"",defaultModel:((se=c.account)==null?void 0:se.defaultModel)||"",smallFastModel:((re=c.account)==null?void 0:re.smallFastModel)||""}),x=$([]),K=()=>{var o;(o=c.account)!=null&&o.supportedModels&&(typeof c.account.supportedModels=="object"&&!Array.isArray(c.account.supportedModels)?x.value=Object.entries(c.account.supportedModels).map(([t,a])=>({from:t,to:a})):Array.isArray(c.account.supportedModels)&&(x.value=c.account.supportedModels.map(t=>({from:t,to:t}))))},h=$({name:"",idToken:"",accessToken:"",apiUrl:"",apiKey:"",accessKeyId:"",secretAccessKey:"",region:""}),ge=ke(()=>{var o;return((o=s.value.name)==null?void 0:o.trim())&&s.value.platform}),Z=ke(()=>W.value&&p.value.trim()),ne=async()=>{if(h.value.name="",!ge.value){(!s.value.name||s.value.name.trim()==="")&&(h.value.name="请填写账户名称");return}if(s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")){I("请选择一个分组","error");return}s.value.platform==="gemini"&&j.value===1&&s.value.addType==="oauth"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await g("项目 ID 未填写",`您尚未填写项目 ID。 + +如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 +如果您使用的是普通个人账号,可以继续不填写。`,"继续","返回填写")||(j.value=2)},ie=async()=>{var o;E.value=!0;try{const t=(o=s.value.proxy)!=null&&o.enabled?{proxy:{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}}:{},a=await A.generateClaudeSetupTokenUrl(t);W.value=a.authUrl,X.value=a.sessionId}catch(t){I(t.message||"生成Setup Token授权链接失败","error")}finally{E.value=!1}},Ae=()=>{W.value="",p.value="",ie()},Ue=async()=>{try{await navigator.clipboard.writeText(W.value),L.value=!0,I("链接已复制","success"),setTimeout(()=>{L.value=!1},2e3)}catch{const t=document.createElement("textarea");t.value=W.value,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy")?(L.value=!0,I("链接已复制","success")):I("复制失败,请手动复制","error")}catch{I("复制失败,请手动复制","error")}document.body.removeChild(t),setTimeout(()=>{L.value=!1},2e3)}},Se=async()=>{var o;if(Z.value){_.value=!0;try{const t={sessionId:X.value,callbackUrl:p.value.trim()};(o=s.value.proxy)!=null&&o.enabled&&(t.proxy={type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null});const a=await A.exchangeClaudeSetupTokenCode(t);await Ce(a)}catch(t){I(t.message||"Setup Token授权失败,请检查授权码是否正确","error")}finally{_.value=!1}}},Ce=async o=>{G.value=!0;try{const t={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};s.value.platform==="claude"?(t.claudeAiOauth=o.claudeAiOauth||o,t.priority=s.value.priority||50,t.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}):s.value.platform==="gemini"?(t.geminiOauth=o.tokens||o,s.value.projectId&&(t.projectId=s.value.projectId),t.priority=s.value.priority||50):s.value.platform==="openai"&&(t.openaiOauth=o.tokens||o,t.accountInfo=o.accountInfo,t.priority=s.value.priority||50);let a;s.value.platform==="claude"?a=await A.createClaudeAccount(t):s.value.platform==="openai"?a=await A.createOpenAIAccount(t):a=await A.createGeminiAccount(t),H("success",a)}catch(t){I(t.message||"账户创建失败","error")}finally{G.value=!1}},Ve=async()=>{h.value.name="",h.value.accessToken="",h.value.apiUrl="",h.value.apiKey="";let o=!1;if((!s.value.name||s.value.name.trim()==="")&&(h.value.name="请填写账户名称",o=!0),s.value.platform==="claude-console"?((!s.value.apiUrl||s.value.apiUrl.trim()==="")&&(h.value.apiUrl="请填写 API URL",o=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(h.value.apiKey="请填写 API Key",o=!0)):s.value.platform==="bedrock"?((!s.value.accessKeyId||s.value.accessKeyId.trim()==="")&&(h.value.accessKeyId="请填写 AWS 访问密钥 ID",o=!0),(!s.value.secretAccessKey||s.value.secretAccessKey.trim()==="")&&(h.value.secretAccessKey="请填写 AWS 秘密访问密钥",o=!0),(!s.value.region||s.value.region.trim()==="")&&(h.value.region="请选择 AWS 区域",o=!0)):s.value.addType==="manual"&&((!s.value.accessToken||s.value.accessToken.trim()==="")&&(h.value.accessToken="请填写 Access Token",o=!0),s.value.platform==="openai"&&(!s.value.idToken||s.value.idToken.trim()==="")&&(h.value.idToken="请填写 ID Token",o=!0)),s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")&&(I("请选择一个分组","error"),o=!0),!o){G.value=!0;try{const t={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.platform==="claude"){const M=s.value.refreshToken?6e5:31536e6;t.claudeAiOauth={accessToken:s.value.accessToken,refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+M,scopes:[]},t.priority=s.value.priority||50,t.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}}else if(s.value.platform==="gemini"){const M=s.value.refreshToken?6e5:31536e6;t.geminiOauth={access_token:s.value.accessToken,refresh_token:s.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+M},s.value.projectId&&(t.projectId=s.value.projectId),t.priority=s.value.priority||50}else if(s.value.platform==="openai"){const M=s.value.refreshToken?6e5:31536e6;t.openaiOauth={idToken:s.value.idToken,accessToken:s.value.accessToken,refreshToken:s.value.refreshToken||"",expires_in:Math.floor(M/1e3)};let O={accountId:"",chatgptUserId:"",organizationId:"",organizationRole:"",organizationTitle:"",planType:"",email:"",emailVerified:!1};if(s.value.idToken)try{const Q=s.value.idToken.split(".");if(Q.length===3){const fe=JSON.parse(atob(Q[1])),oe=fe["https://api.openai.com/auth"]||{};O={accountId:oe.accountId||"",chatgptUserId:oe.chatgptUserId||"",organizationId:oe.organizationId||"",organizationRole:oe.organizationRole||"",organizationTitle:oe.organizationTitle||"",planType:oe.planType||"",email:fe.email||"",emailVerified:fe.email_verified||!1}}}catch(Q){console.warn("Failed to parse ID Token:",Q)}t.accountInfo=O,t.priority=s.value.priority||50}else s.value.platform==="claude-console"?(t.apiUrl=s.value.apiUrl,t.apiKey=s.value.apiKey,t.priority=s.value.priority||50,t.supportedModels=le()||{},t.userAgent=s.value.userAgent||null,t.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0):s.value.platform==="bedrock"&&(t.awsCredentials={accessKeyId:s.value.accessKeyId,secretAccessKey:s.value.secretAccessKey,sessionToken:s.value.sessionToken||null},t.region=s.value.region,t.defaultModel=s.value.defaultModel||null,t.smallFastModel=s.value.smallFastModel||null,t.priority=s.value.priority||50,t.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0);let a;s.value.platform==="claude"?a=await A.createClaudeAccount(t):s.value.platform==="claude-console"?a=await A.createClaudeConsoleAccount(t):s.value.platform==="bedrock"?a=await A.createBedrockAccount(t):s.value.platform==="openai"?a=await A.createOpenAIAccount(t):a=await A.createGeminiAccount(t),H("success",a)}catch(t){I(t.message||"账户创建失败","error")}finally{G.value=!1}}},ze=async()=>{if(h.value.name="",!s.value.name||s.value.name.trim()===""){h.value.name="请填写账户名称";return}if(s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")){I("请选择一个分组","error");return}if(!(s.value.platform==="gemini"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await g("项目 ID 未填写",`您尚未填写项目 ID。 + +如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 +如果您使用的是普通个人账号,可以继续不填写。`,"继续保存","返回填写"))){G.value=!0;try{const o={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.accessToken||s.value.refreshToken){if(c.account.platform==="claude"){const t=s.value.refreshToken?6e5:31536e6;o.claudeAiOauth={accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+t,scopes:c.account.scopes||[]}}else if(c.account.platform==="gemini"){const t=s.value.refreshToken?6e5:31536e6;o.geminiOauth={access_token:s.value.accessToken||"",refresh_token:s.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+t}}else if(c.account.platform==="openai"){const t=s.value.refreshToken?6e5:31536e6;o.openaiOauth={idToken:s.value.idToken||"",accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expires_in:Math.floor(t/1e3)}}}c.account.platform==="gemini"&&(o.projectId=s.value.projectId||""),c.account.platform==="claude"&&(o.priority=s.value.priority||50,o.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}),c.account.platform==="openai"&&(o.priority=s.value.priority||50),c.account.platform==="gemini"&&(o.priority=s.value.priority||50),c.account.platform==="claude-console"&&(o.apiUrl=s.value.apiUrl,s.value.apiKey&&(o.apiKey=s.value.apiKey),o.priority=s.value.priority||50,o.supportedModels=le()||{},o.userAgent=s.value.userAgent||null,o.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0),c.account.platform==="bedrock"&&((s.value.accessKeyId||s.value.secretAccessKey||s.value.sessionToken)&&(o.awsCredentials={},s.value.accessKeyId&&(o.awsCredentials.accessKeyId=s.value.accessKeyId),s.value.secretAccessKey&&(o.awsCredentials.secretAccessKey=s.value.secretAccessKey),s.value.sessionToken!==void 0&&(o.awsCredentials.sessionToken=s.value.sessionToken||null)),s.value.region&&(o.region=s.value.region),o.defaultModel=s.value.defaultModel||null,o.smallFastModel=s.value.smallFastModel||null,o.priority=s.value.priority||50,o.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0),c.account.platform==="claude"?await A.updateClaudeAccount(c.account.id,o):c.account.platform==="claude-console"?await A.updateClaudeConsoleAccount(c.account.id,o):c.account.platform==="bedrock"?await A.updateBedrockAccount(c.account.id,o):c.account.platform==="openai"?await A.updateOpenAIAccount(c.account.id,o):await A.updateGeminiAccount(c.account.id,o),H("success")}catch(o){I(o.message||"账户更新失败","error")}finally{G.value=!1}}};J(()=>s.value.name,()=>{var o;h.value.name&&((o=s.value.name)!=null&&o.trim())&&(h.value.name="")}),J(()=>s.value.accessToken,()=>{var o;h.value.accessToken&&((o=s.value.accessToken)!=null&&o.trim())&&(h.value.accessToken="")}),J(()=>s.value.apiUrl,()=>{var o;h.value.apiUrl&&((o=s.value.apiUrl)!=null&&o.trim())&&(h.value.apiUrl="")}),J(()=>s.value.apiKey,()=>{var o;h.value.apiKey&&((o=s.value.apiKey)!=null&&o.trim())&&(h.value.apiKey="")});const de=$([]),ue=$(!1),xe=$(!1),he=ke(()=>{const o=s.value.platform==="claude-console"?"claude":s.value.platform;return de.value.filter(t=>t.platform===o)}),ye=async()=>{ue.value=!0;try{const o=await S.get("/admin/account-groups");de.value=o.data||[]}catch{I("加载分组列表失败","error"),de.value=[]}finally{ue.value=!1}},$e=async()=>{await ye(),I("分组列表已刷新","success")},Te=async()=>{await ye()};J(()=>s.value.platform,o=>{o==="claude-console"||o==="bedrock"?s.value.addType="manual":o==="claude"?s.value.addType="setup-token":o==="gemini"&&(s.value.addType="oauth"),s.value.accountType==="group"&&(s.value.groupId="")}),J(p,o=>{if(!o||typeof o!="string")return;const t=o.trim();if(!t)return;if(t.startsWith("http://")||t.startsWith("https://"))if(t.startsWith("http://localhost:45462"))try{const O=new URL(t).searchParams.get("code");O?(p.value=O,I("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):I("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(M){console.error("Failed to parse URL:",M),I("链接格式错误,请检查是否为完整的 URL","error")}else I("请粘贴以 http://localhost:45462 开头的链接","error")}),J(()=>s.value.accountType,o=>{o==="group"&&de.value.length===0&&ye()}),J(()=>s.value.groupId,o=>{o==="__new__"&&(s.value.groupId="",xe.value=!0)});const m=()=>{x.value.push({from:"",to:""})},u=o=>{x.value.splice(o,1)},b=(o,t)=>{if(x.value.some(M=>M.from===o)){I(`模型 ${o} 的映射已存在`,"info");return}x.value.push({from:o,to:t}),I(`已添加映射: ${o} → ${t}`,"success")},le=()=>{const o={};return x.value.forEach(t=>{t.from&&t.to&&(o[t.from]=t.to)}),Object.keys(o).length>0?o:null};return J(()=>c.account,o=>{if(o){K();const t=o.proxy&&o.proxy.host&&o.proxy.port?{enabled:!0,type:o.proxy.type||"socks5",host:o.proxy.host,port:o.proxy.port,username:o.proxy.username||"",password:o.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""};let a="";o.accountType==="group"&&(a=o.groupId||o.groupInfo&&o.groupInfo.id||"");let M="claude_max";if(o.subscriptionInfo){const O=typeof o.subscriptionInfo=="string"?JSON.parse(o.subscriptionInfo):o.subscriptionInfo;O.accountType?M=O.accountType:O.hasClaudeMax?M="claude_max":O.hasClaudePro?M="claude_pro":M="claude_free"}s.value={platform:o.platform,addType:"oauth",name:o.name,description:o.description||"",accountType:o.accountType||"shared",subscriptionType:M,groupId:a,projectId:o.projectId||"",accessToken:"",refreshToken:"",proxy:t,apiUrl:o.apiUrl||"",apiKey:"",priority:o.priority||50,supportedModels:(()=>{const O=o.supportedModels;return O?typeof O=="object"&&!Array.isArray(O)?Object.keys(O).join(` +`):Array.isArray(O)?O.join(` +`):"":""})(),userAgent:o.userAgent||"",enableRateLimit:!!(o.rateLimitDuration&&o.rateLimitDuration>0),rateLimitDuration:o.rateLimitDuration||60,accessKeyId:"",secretAccessKey:"",region:o.region||"",sessionToken:"",defaultModel:o.defaultModel||"",smallFastModel:o.smallFastModel||""},o.accountType==="group"&&ye().then(()=>{o.groupInfo&&o.groupInfo.id?s.value.groupId=o.groupInfo.id:de.value.forEach(O=>{S.get(`/admin/account-groups/${O.id}/members`).then(Q=>{(Q.data||[]).some(oe=>oe.id===o.id)&&(s.value.groupId=O.id)}).catch(()=>{})})})}},{immediate:!0}),(o,t)=>(n(),we(Be,{to:"body"},[D.value?(n(),i("div",da,[e("div",pa,[e("div",ma,[e("div",ca,[t[82]||(t[82]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-user-circle text-sm text-white sm:text-base"})],-1)),e("h3",ga,v(f.value?"编辑账户":"添加账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:t[0]||(t[0]=a=>o.$emit("close"))},t[83]||(t[83]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),!f.value&&(s.value.addType==="oauth"||s.value.addType==="setup-token")?(n(),i("div",xa,[e("div",ya,[e("div",fa,[e("div",{class:R(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",j.value>=1?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 1 ",2),t[84]||(t[84]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"基本信息",-1))]),t[86]||(t[86]=e("div",{class:"h-0.5 w-4 bg-gray-300 sm:w-8"},null,-1)),e("div",ba,[e("div",{class:R(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",j.value>=2?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 2 ",2),t[85]||(t[85]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"授权认证",-1))])])])):w("",!0),j.value===1&&!f.value?(n(),i("div",va,[e("div",ka,[f.value?w("",!0):(n(),i("div",wa,[t[93]||(t[93]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"平台",-1)),e("div",ha,[e("label",$a,[y(e("input",{"onUpdate:modelValue":t[1]||(t[1]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[B,s.value.platform]]),t[87]||(t[87]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude",-1))]),e("label",Aa,[y(e("input",{"onUpdate:modelValue":t[2]||(t[2]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude-console"},null,512),[[B,s.value.platform]]),t[88]||(t[88]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Console",-1))]),e("label",Ca,[y(e("input",{"onUpdate:modelValue":t[3]||(t[3]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[B,s.value.platform]]),t[89]||(t[89]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Gemini",-1))]),e("label",Ta,[y(e("input",{"onUpdate:modelValue":t[4]||(t[4]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[B,s.value.platform]]),t[90]||(t[90]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"OpenAI",-1))]),e("label",Ia,[y(e("input",{"onUpdate:modelValue":t[5]||(t[5]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"azure_openai"},null,512),[[B,s.value.platform]]),t[91]||(t[91]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Azure OpenAI",-1))]),e("label",Ua,[y(e("input",{"onUpdate:modelValue":t[6]||(t[6]=a=>s.value.platform=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"bedrock"},null,512),[[B,s.value.platform]]),t[92]||(t[92]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Bedrock",-1))])])])),!f.value&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"?(n(),i("div",Sa,[t[97]||(t[97]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"添加方式",-1)),e("div",Va,[s.value.platform==="claude"?(n(),i("label",za,[y(e("input",{"onUpdate:modelValue":t[7]||(t[7]=a=>s.value.addType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"setup-token"},null,512),[[B,s.value.addType]]),t[94]||(t[94]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Setup Token (推荐)",-1))])):w("",!0),e("label",Ka,[y(e("input",{"onUpdate:modelValue":t[8]||(t[8]=a=>s.value.addType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"oauth"},null,512),[[B,s.value.addType]]),t[95]||(t[95]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"OAuth 授权",-1))]),e("label",Ma,[y(e("input",{"onUpdate:modelValue":t[9]||(t[9]=a=>s.value.addType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"manual"},null,512),[[B,s.value.addType]]),t[96]||(t[96]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"手动输入 Access Token",-1))])])])):w("",!0),e("div",null,[t[98]||(t[98]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),y(e("input",{"onUpdate:modelValue":t[10]||(t[10]=a=>s.value.name=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[T,s.value.name]]),h.value.name?(n(),i("p",Oa,v(h.value.name),1)):w("",!0)]),e("div",null,[t[99]||(t[99]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":t[11]||(t[11]=a=>s.value.description=a),class:"form-input w-full resize-none dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[T,s.value.description]])]),e("div",null,[t[103]||(t[103]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",La,[e("label",ja,[y(e("input",{"onUpdate:modelValue":t[12]||(t[12]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[B,s.value.accountType]]),t[100]||(t[100]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",Ra,[y(e("input",{"onUpdate:modelValue":t[13]||(t[13]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[B,s.value.accountType]]),t[101]||(t[101]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",Da,[y(e("input",{"onUpdate:modelValue":t[14]||(t[14]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[B,s.value.accountType]]),t[102]||(t[102]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[104]||(t[104]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),i("div",Pa,[t[107]||(t[107]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",Ga,[y(e("select",{"onUpdate:modelValue":t[15]||(t[15]=a=>s.value.groupId=a),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",required:""},[t[105]||(t[105]=e("option",{value:""},"请选择分组",-1)),(n(!0),i(pe,null,me(he.value,a=>(n(),i("option",{key:a.id,value:a.id},v(a.name)+" ("+v(a.memberCount||0)+" 个成员) ",9,Ea))),128)),t[106]||(t[106]=e("option",{value:"__new__"},"+ 新建分组",-1))],512),[[qe,s.value.groupId]]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",type:"button",onClick:$e},[e("i",{class:R(["fas fa-sync-alt",{"animate-spin":ue.value}])},null,2)])])])):w("",!0),s.value.platform==="gemini"?(n(),i("div",Wa,[t[108]||(t[108]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[16]||(t[16]=a=>s.value.projectId=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[T,s.value.projectId]]),t[109]||(t[109]=e("div",{class:"mt-2 rounded-lg border border-yellow-200 bg-yellow-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-yellow-600"}),e("div",{class:"text-xs text-yellow-700"},[e("p",{class:"mb-1 font-medium"},"Google Cloud/Workspace 账号需要提供项目 ID"),e("p",null," 某些 Google 账号(特别是绑定了 Google Cloud 的账号)会被识别为 Workspace 账号,需要提供额外的项目 ID。 "),e("div",{class:"mt-2 rounded border border-yellow-300 bg-white p-2"},[e("p",{class:"mb-1 font-medium"},"如何获取项目 ID:"),e("ol",{class:"ml-2 list-inside list-decimal space-y-1"},[e("li",null,[C(" 访问 "),e("a",{class:"font-medium text-blue-600 hover:underline",href:"https://console.cloud.google.com/welcome",target:"_blank"},"Google Cloud Console")]),e("li",null,[C(" 复制"),e("span",{class:"font-semibold text-red-600"},"项目 ID(Project ID)"),C(",通常是字符串格式 ")]),e("li",{class:"text-red-600"}," ⚠️ 注意:要复制项目 ID(Project ID),不要复制项目编号(Project Number)! ")])]),e("p",{class:"mt-2"},[e("strong",null,"提示:"),C("如果您的账号是普通个人账号(未绑定 Google Cloud),请留空此字段。 ")])])])],-1))])):w("",!0),s.value.platform==="bedrock"&&!f.value?(n(),i("div",Fa,[e("div",null,[t[110]||(t[110]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 访问密钥 ID *",-1)),y(e("input",{"onUpdate:modelValue":t[17]||(t[17]=a=>s.value.accessKeyId=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.accessKeyId}]),placeholder:"请输入 AWS Access Key ID",required:"",type:"text"},null,2),[[T,s.value.accessKeyId]]),h.value.accessKeyId?(n(),i("p",qa,v(h.value.accessKeyId),1)):w("",!0)]),e("div",null,[t[111]||(t[111]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 秘密访问密钥 *",-1)),y(e("input",{"onUpdate:modelValue":t[18]||(t[18]=a=>s.value.secretAccessKey=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.secretAccessKey}]),placeholder:"请输入 AWS Secret Access Key",required:"",type:"password"},null,2),[[T,s.value.secretAccessKey]]),h.value.secretAccessKey?(n(),i("p",Ba,v(h.value.secretAccessKey),1)):w("",!0)]),e("div",null,[t[112]||(t[112]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 区域 *",-1)),y(e("input",{"onUpdate:modelValue":t[19]||(t[19]=a=>s.value.region=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.region}]),placeholder:"例如:us-east-1",required:"",type:"text"},null,2),[[T,s.value.region]]),h.value.region?(n(),i("p",Na,v(h.value.region),1)):w("",!0),t[113]||(t[113]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")]),e("p",{class:"mt-2 text-blue-600"},"💡 请输入完整的区域代码,如 us-east-1")])])],-1))]),e("div",null,[t[114]||(t[114]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"会话令牌 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[20]||(t[20]=a=>s.value.sessionToken=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"如果使用临时凭证,请输入会话令牌",type:"password"},null,512),[[T,s.value.sessionToken]]),t[115]||(t[115]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 仅在使用临时 AWS 凭证时需要填写 ",-1))]),e("div",null,[t[116]||(t[116]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"默认主模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[21]||(t[21]=a=>s.value.defaultModel=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[T,s.value.defaultModel]]),t[117]||(t[117]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1)),t[118]||(t[118]=e("div",{class:"mt-2 rounded-lg border border-amber-200 bg-amber-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-amber-600"}),e("div",{class:"text-xs text-amber-700"},[e("p",{class:"mb-1 font-medium"},"Bedrock 模型配置说明:"),e("ul",{class:"list-inside list-disc space-y-1 text-xs"},[e("li",null,"支持 Inference Profile ID(推荐)"),e("li",null,"支持 Application Inference Profile ARN"),e("li",null,"常用模型:us.anthropic.claude-sonnet-4-20250514-v1:0"),e("li",null,"留空将使用系统配置的默认模型")])])])],-1))]),e("div",null,[t[119]||(t[119]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[22]||(t[22]=a=>s.value.smallFastModel=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[T,s.value.smallFastModel]]),t[120]||(t[120]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 用于快速响应的轻量级模型,留空将使用系统默认 ",-1))])])):w("",!0),s.value.platform==="azure_openai"&&!f.value?(n(),i("div",_a,[e("div",null,[t[121]||(t[121]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Azure Endpoint *",-1)),y(e("input",{"onUpdate:modelValue":t[23]||(t[23]=a=>s.value.azureEndpoint=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.azureEndpoint}]),placeholder:"https://your-resource.openai.azure.com",required:"",type:"url"},null,2),[[T,s.value.azureEndpoint]]),h.value.azureEndpoint?(n(),i("p",Ha,v(h.value.azureEndpoint),1)):w("",!0),t[122]||(t[122]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," Azure OpenAI 资源的终结点 URL,格式:https://your-resource.openai.azure.com ",-1))]),e("div",null,[t[123]||(t[123]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API 版本",-1)),y(e("input",{"onUpdate:modelValue":t[24]||(t[24]=a=>s.value.apiVersion=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"2024-02-01",type:"text"},null,512),[[T,s.value.apiVersion]]),t[124]||(t[124]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," Azure OpenAI API 版本,默认使用最新稳定版本 2024-02-01 ",-1))]),e("div",null,[t[125]||(t[125]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"部署名称 *",-1)),y(e("input",{"onUpdate:modelValue":t[25]||(t[25]=a=>s.value.deploymentName=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.deploymentName}]),placeholder:"gpt-4",required:"",type:"text"},null,2),[[T,s.value.deploymentName]]),h.value.deploymentName?(n(),i("p",Ja,v(h.value.deploymentName),1)):w("",!0),t[126]||(t[126]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 在 Azure OpenAI Studio 中创建的部署名称 ",-1))]),e("div",null,[t[127]||(t[127]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),y(e("input",{"onUpdate:modelValue":t[26]||(t[26]=a=>s.value.apiKey=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.apiKey}]),placeholder:"请输入 Azure OpenAI API Key",required:"",type:"password"},null,2),[[T,s.value.apiKey]]),h.value.apiKey?(n(),i("p",Ya,v(h.value.apiKey),1)):w("",!0),t[128]||(t[128]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 从 Azure 门户获取的 API 密钥 ",-1))]),e("div",null,[t[129]||(t[129]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"支持的模型",-1)),e("div",Qa,[(n(),i(pe,null,me(["gpt-4","gpt-4-turbo","gpt-35-turbo","gpt-35-turbo-16k"],a=>e("label",{key:a,class:"flex cursor-pointer items-center"},[y(e("input",{"onUpdate:modelValue":t[27]||(t[27]=M=>s.value.supportedModels=M),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox",value:a},null,8,Xa),[[ve,s.value.supportedModels]]),e("span",Za,v(a),1)])),64))]),t[130]||(t[130]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 选择此部署支持的模型类型 ",-1))])])):w("",!0),s.value.platform==="bedrock"&&!f.value?(n(),i("div",el,[e("div",null,[t[135]||(t[135]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",tl,[e("label",sl,[y(e("input",{"onUpdate:modelValue":t[28]||(t[28]=a=>s.value.enableRateLimit=a),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ve,s.value.enableRateLimit]]),t[131]||(t[131]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[132]||(t[132]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",al,[t[133]||(t[133]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[29]||(t[29]=a=>s.value.rateLimitDuration=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[134]||(t[134]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):w("",!0)])])):w("",!0),s.value.platform==="claude-console"&&!f.value?(n(),i("div",ll,[e("div",null,[t[136]||(t[136]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),y(e("input",{"onUpdate:modelValue":t[30]||(t[30]=a=>s.value.apiUrl=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.apiUrl}]),placeholder:"例如:https://api.example.com",required:"",type:"text"},null,2),[[T,s.value.apiUrl]]),h.value.apiUrl?(n(),i("p",rl,v(h.value.apiUrl),1)):w("",!0)]),e("div",null,[t[137]||(t[137]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),y(e("input",{"onUpdate:modelValue":t[31]||(t[31]=a=>s.value.apiKey=a),class:R(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.apiKey}]),placeholder:"请输入API Key",required:"",type:"password"},null,2),[[T,s.value.apiKey]]),h.value.apiKey?(n(),i("p",ol,v(h.value.apiKey),1)):w("",!0)]),e("div",null,[t[141]||(t[141]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型映射表 (可选)",-1)),t[142]||(t[142]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",nl,[(n(!0),i(pe,null,me(x.value,(a,M)=>(n(),i("div",{key:M,class:"flex items-center gap-2"},[y(e("input",{"onUpdate:modelValue":O=>a.from=O,class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"原始模型名称",type:"text"},null,8,il),[[T,a.from]]),t[139]||(t[139]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),y(e("input",{"onUpdate:modelValue":O=>a.to=O,class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"映射后的模型名称",type:"text"},null,8,ul),[[T,a.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50 dark:hover:bg-red-900/20",type:"button",onClick:O=>u(M)},t[138]||(t[138]=[e("i",{class:"fas fa-trash"},null,-1)]),8,dl)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700 dark:border-gray-600 dark:text-gray-400 dark:hover:border-gray-500 dark:hover:text-gray-300",type:"button",onClick:m},t[140]||(t[140]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 添加模型映射 ",-1)])),e("div",pl,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",type:"button",onClick:t[32]||(t[32]=a=>b("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200 dark:bg-purple-900/30 dark:text-purple-400 dark:hover:bg-purple-900/50",type:"button",onClick:t[33]||(t[33]=a=>b("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200 dark:bg-green-900/30 dark:text-green-400 dark:hover:bg-green-900/50",type:"button",onClick:t[34]||(t[34]=a=>b("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200 dark:bg-orange-900/30 dark:text-orange-400 dark:hover:bg-orange-900/50",type:"button",onClick:t[35]||(t[35]=a=>b("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[143]||(t[143]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[144]||(t[144]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[36]||(t[36]=a=>s.value.userAgent=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[T,s.value.userAgent]]),t[145]||(t[145]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[150]||(t[150]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",ml,[e("label",cl,[y(e("input",{"onUpdate:modelValue":t[37]||(t[37]=a=>s.value.enableRateLimit=a),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ve,s.value.enableRateLimit]]),t[146]||(t[146]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[147]||(t[147]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",gl,[t[148]||(t[148]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[38]||(t[38]=a=>s.value.rateLimitDuration=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[149]||(t[149]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):w("",!0)])])):w("",!0),s.value.platform==="claude"?(n(),i("div",xl,[t[153]||(t[153]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",yl,[e("label",fl,[y(e("input",{"onUpdate:modelValue":t[39]||(t[39]=a=>s.value.subscriptionType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[B,s.value.subscriptionType]]),t[151]||(t[151]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",bl,[y(e("input",{"onUpdate:modelValue":t[40]||(t[40]=a=>s.value.subscriptionType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[B,s.value.subscriptionType]]),t[152]||(t[152]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[154]||(t[154]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):w("",!0),e("div",null,[t[155]||(t[155]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),y(e("input",{"onUpdate:modelValue":t[41]||(t[41]=a=>s.value.priority=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高,默认50",type:"number"},null,512),[[T,s.value.priority,void 0,{number:!0}]]),t[156]||(t[156]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.addType==="manual"&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("div",vl,[e("div",kl,[t[162]||(t[162]=e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-info text-sm text-white"})],-1)),e("div",null,[t[160]||(t[160]=e("h5",{class:"mb-2 font-semibold text-blue-900 dark:text-blue-300"}," 手动输入 Token ",-1)),s.value.platform==="claude"?(n(),i("p",wl," 请输入有效的 Claude Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="gemini"?(n(),i("p",hl," 请输入有效的 Gemini Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="openai"?(n(),i("p",$l," 请输入有效的 OpenAI Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):w("",!0),e("div",Al,[t[159]||(t[159]=e("p",{class:"mb-1 text-sm font-medium text-blue-900 dark:text-blue-300"},[e("i",{class:"fas fa-folder-open mr-1"}),C(" 获取 Access Token 的方法: ")],-1)),s.value.platform==="claude"?(n(),i("p",Cl,t[157]||(t[157]=[C(" 请从已登录 Claude Code 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.claude/.credentials.json",-1),C(" 文件中的凭证, 请勿使用 Claude 官网 API Keys 页面的密钥。 ",-1)]))):s.value.platform==="gemini"?(n(),i("p",Tl,t[158]||(t[158]=[C(" 请从已登录 Gemini CLI 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.config/gemini/credentials.json",-1),C(" 文件中的凭证。 ",-1)]))):s.value.platform==="openai"?(n(),i("p",Il," 请从已登录 OpenAI 账户的机器上获取认证凭证, 或通过 OAuth 授权流程获取 Access Token。 ")):w("",!0)]),t[161]||(t[161]=e("p",{class:"text-xs text-blue-600 dark:text-blue-400"}," 💡 如果未填写 Refresh Token,Token 过期后需要手动更新。 ",-1))])]),s.value.platform==="openai"?(n(),i("div",Ul,[t[163]||(t[163]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"ID Token *",-1)),y(e("textarea",{"onUpdate:modelValue":t[42]||(t[42]=a=>s.value.idToken=a),class:R(["form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.idToken}]),placeholder:"请输入 ID Token (JWT 格式)...",required:"",rows:"4"},null,2),[[T,s.value.idToken]]),h.value.idToken?(n(),i("p",Sl,v(h.value.idToken),1)):w("",!0),t[164]||(t[164]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," ID Token 是 OpenAI OAuth 认证返回的 JWT token,包含用户信息和组织信息 ",-1))])):w("",!0),e("div",null,[t[165]||(t[165]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token *",-1)),y(e("textarea",{"onUpdate:modelValue":t[43]||(t[43]=a=>s.value.accessToken=a),class:R(["form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":h.value.accessToken}]),placeholder:"请输入 Access Token...",required:"",rows:"4"},null,2),[[T,s.value.accessToken]]),h.value.accessToken?(n(),i("p",Vl,v(h.value.accessToken),1)):w("",!0)]),e("div",null,[t[166]||(t[166]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":t[44]||(t[44]=a=>s.value.refreshToken=a),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"请输入 Refresh Token...",rows:"4"},null,512),[[T,s.value.refreshToken]])])])):w("",!0),ce(He,{modelValue:s.value.proxy,"onUpdate:modelValue":t[45]||(t[45]=a=>s.value.proxy=a)},null,8,["modelValue"]),e("div",zl,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[46]||(t[46]=a=>o.$emit("close"))}," 取消 "),(s.value.addType==="oauth"||s.value.addType==="setup-token")&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"&&s.value.platform!=="azure_openai"?(n(),i("button",{key:0,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:G.value,type:"button",onClick:ne}," 下一步 ",8,Kl)):(n(),i("button",{key:1,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:G.value,type:"button",onClick:Ve},[G.value?(n(),i("div",Ol)):w("",!0),C(" "+v(G.value?"创建中...":"创建"),1)],8,Ml))])])])):w("",!0),j.value===2&&s.value.addType==="oauth"?(n(),we(ks,{key:2,platform:s.value.platform,proxy:s.value.proxy,onBack:t[47]||(t[47]=a=>j.value=1),onSuccess:Ce},null,8,["platform","proxy"])):w("",!0),j.value===2&&s.value.addType==="setup-token"?(n(),i("div",Ll,[s.value.platform==="claude"?(n(),i("div",jl,[e("div",Rl,[e("div",Dl,[t[178]||(t[178]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-key text-white"})],-1)),e("div",Pl,[t[176]||(t[176]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"}," Claude Setup Token 授权 ",-1)),t[177]||(t[177]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤通过 Setup Token 完成 Claude 账户的授权: ",-1)),e("div",Gl,[e("div",El,[e("div",Wl,[t[169]||(t[169]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Fl,[t[168]||(t[168]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),W.value?(n(),i("div",_l,[e("div",Hl,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:W.value},null,8,Jl),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:Ue},[e("i",{class:R(L.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:Ae},t[167]||(t[167]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:E.value,onClick:ie},[E.value?(n(),i("div",Nl)):(n(),i("i",Bl)),C(" "+v(E.value?"生成中...":"生成 Setup Token 授权链接"),1)],8,ql))])])]),t[175]||(t[175]=e("div",{class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},[e("div",{class:"flex items-start gap-3"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 2 "),e("div",{class:"flex-1"},[e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 在浏览器中打开链接并完成授权 "),e("p",{class:"mb-2 text-sm text-blue-700 dark:text-blue-300"}," 请在新标签页中打开授权链接,登录您的 Claude 账户并授权 Claude Code。 "),e("div",{class:"rounded border border-yellow-300 bg-yellow-50 p-3 dark:border-yellow-700 dark:bg-yellow-900/30"},[e("p",{class:"text-xs text-yellow-800 dark:text-yellow-300"},[e("i",{class:"fas fa-exclamation-triangle mr-1"}),e("strong",null,"注意:"),C("如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。 ")])])])])],-1)),e("div",Yl,[e("div",Ql,[t[174]||(t[174]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Xl,[t[172]||(t[172]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),t[173]||(t[173]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"}," 授权完成后,从返回页面复制 Authorization Code,并粘贴到下方输入框: ",-1)),e("div",Zl,[e("div",null,[t[170]||(t[170]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),C("Authorization Code ")],-1)),y(e("textarea",{"onUpdate:modelValue":t[48]||(t[48]=a=>p.value=a),class:"form-input w-full resize-none font-mono text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"粘贴从Claude Code授权页面获取的Authorization Code...",rows:"3"},null,512),[[T,p.value]])]),t[171]||(t[171]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 请粘贴从Claude Code授权页面复制的Authorization Code ")],-1))])])])])])])])])])):w("",!0),e("div",er,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[49]||(t[49]=a=>j.value=1)}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!Z.value||_.value,type:"button",onClick:Se},[_.value?(n(),i("div",sr)):w("",!0),C(" "+v(_.value?"验证中...":"完成授权"),1)],8,tr)])])):w("",!0),f.value?(n(),i("div",ar,[e("div",null,[t[179]||(t[179]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),y(e("input",{"onUpdate:modelValue":t[50]||(t[50]=a=>s.value.name=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,512),[[T,s.value.name]])]),e("div",null,[t[180]||(t[180]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),y(e("textarea",{"onUpdate:modelValue":t[51]||(t[51]=a=>s.value.description=a),class:"form-input w-full resize-none dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[T,s.value.description]])]),e("div",null,[t[184]||(t[184]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",lr,[e("label",rr,[y(e("input",{"onUpdate:modelValue":t[52]||(t[52]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[B,s.value.accountType]]),t[181]||(t[181]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",or,[y(e("input",{"onUpdate:modelValue":t[53]||(t[53]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[B,s.value.accountType]]),t[182]||(t[182]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",nr,[y(e("input",{"onUpdate:modelValue":t[54]||(t[54]=a=>s.value.accountType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[B,s.value.accountType]]),t[183]||(t[183]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[185]||(t[185]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),i("div",ir,[t[188]||(t[188]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",ur,[y(e("select",{"onUpdate:modelValue":t[55]||(t[55]=a=>s.value.groupId=a),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",required:""},[t[186]||(t[186]=e("option",{value:""},"请选择分组",-1)),(n(!0),i(pe,null,me(he.value,a=>(n(),i("option",{key:a.id,value:a.id},v(a.name)+" ("+v(a.memberCount||0)+" 个成员) ",9,dr))),128)),t[187]||(t[187]=e("option",{value:"__new__"},"+ 新建分组",-1))],512),[[qe,s.value.groupId]]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:$e},[e("i",{class:R(["fas fa-sync-alt",{"animate-spin":ue.value}])},null,2)])])])):w("",!0),s.value.platform==="gemini"?(n(),i("div",pr,[t[189]||(t[189]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[56]||(t[56]=a=>s.value.projectId=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[T,s.value.projectId]]),t[190]||(t[190]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," Google Cloud/Workspace 账号可能需要提供项目 ID ",-1))])):w("",!0),s.value.platform==="claude"?(n(),i("div",mr,[t[193]||(t[193]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",cr,[e("label",gr,[y(e("input",{"onUpdate:modelValue":t[57]||(t[57]=a=>s.value.subscriptionType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[B,s.value.subscriptionType]]),t[191]||(t[191]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",xr,[y(e("input",{"onUpdate:modelValue":t[58]||(t[58]=a=>s.value.subscriptionType=a),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[B,s.value.subscriptionType]]),t[192]||(t[192]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[194]||(t[194]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):w("",!0),e("div",null,[t[195]||(t[195]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),y(e("input",{"onUpdate:modelValue":t[59]||(t[59]=a=>s.value.priority=a),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高",type:"number"},null,512),[[T,s.value.priority,void 0,{number:!0}]]),t[196]||(t[196]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.platform==="claude-console"?(n(),i("div",yr,[e("div",null,[t[197]||(t[197]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API URL",-1)),y(e("input",{"onUpdate:modelValue":t[60]||(t[60]=a=>s.value.apiUrl=a),class:"form-input w-full",placeholder:"例如:https://api.example.com",required:"",type:"text"},null,512),[[T,s.value.apiUrl]])]),e("div",null,[t[198]||(t[198]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API Key",-1)),y(e("input",{"onUpdate:modelValue":t[61]||(t[61]=a=>s.value.apiKey=a),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[T,s.value.apiKey]]),t[199]||(t[199]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",null,[t[203]||(t[203]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"模型映射表 (可选)",-1)),t[204]||(t[204]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3"},[e("p",{class:"text-xs text-blue-700"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",fr,[(n(!0),i(pe,null,me(x.value,(a,M)=>(n(),i("div",{key:M,class:"flex items-center gap-2"},[y(e("input",{"onUpdate:modelValue":O=>a.from=O,class:"form-input flex-1",placeholder:"原始模型名称",type:"text"},null,8,br),[[T,a.from]]),t[201]||(t[201]=e("i",{class:"fas fa-arrow-right text-gray-400"},null,-1)),y(e("input",{"onUpdate:modelValue":O=>a.to=O,class:"form-input flex-1",placeholder:"映射后的模型名称",type:"text"},null,8,vr),[[T,a.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50",type:"button",onClick:O=>u(M)},t[200]||(t[200]=[e("i",{class:"fas fa-trash"},null,-1)]),8,kr)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700",type:"button",onClick:m},t[202]||(t[202]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 添加模型映射 ",-1)])),e("div",wr,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200",type:"button",onClick:t[62]||(t[62]=a=>b("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200",type:"button",onClick:t[63]||(t[63]=a=>b("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200",type:"button",onClick:t[64]||(t[64]=a=>b("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200",type:"button",onClick:t[65]||(t[65]=a=>b("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[205]||(t[205]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[206]||(t[206]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[66]||(t[66]=a=>s.value.userAgent=a),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[T,s.value.userAgent]]),t[207]||(t[207]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[212]||(t[212]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",hr,[e("label",$r,[y(e("input",{"onUpdate:modelValue":t[67]||(t[67]=a=>s.value.enableRateLimit=a),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[ve,s.value.enableRateLimit]]),t[208]||(t[208]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[209]||(t[209]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",Ar,[t[210]||(t[210]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[68]||(t[68]=a=>s.value.rateLimitDuration=a),class:"form-input w-full",min:"1",type:"number"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[211]||(t[211]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):w("",!0)])])):w("",!0),s.value.platform==="bedrock"?(n(),i("div",Cr,[e("div",null,[t[213]||(t[213]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 访问密钥 ID",-1)),y(e("input",{"onUpdate:modelValue":t[69]||(t[69]=a=>s.value.accessKeyId=a),class:"form-input w-full",placeholder:"留空表示不更新",type:"text"},null,512),[[T,s.value.accessKeyId]]),t[214]||(t[214]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Access Key ID",-1))]),e("div",null,[t[215]||(t[215]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 秘密访问密钥",-1)),y(e("input",{"onUpdate:modelValue":t[70]||(t[70]=a=>s.value.secretAccessKey=a),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[T,s.value.secretAccessKey]]),t[216]||(t[216]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Secret Access Key",-1))]),e("div",null,[t[217]||(t[217]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 区域",-1)),y(e("input",{"onUpdate:modelValue":t[71]||(t[71]=a=>s.value.region=a),class:"form-input w-full",placeholder:"例如:us-east-1",type:"text"},null,512),[[T,s.value.region]]),t[218]||(t[218]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")])])])],-1))]),e("div",null,[t[219]||(t[219]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"会话令牌 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[72]||(t[72]=a=>s.value.sessionToken=a),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[T,s.value.sessionToken]])]),e("div",null,[t[220]||(t[220]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"默认主模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[73]||(t[73]=a=>s.value.defaultModel=a),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[T,s.value.defaultModel]]),t[221]||(t[221]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1))]),e("div",null,[t[222]||(t[222]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),y(e("input",{"onUpdate:modelValue":t[74]||(t[74]=a=>s.value.smallFastModel=a),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[T,s.value.smallFastModel]]),t[223]||(t[223]=e("p",{class:"mt-1 text-xs text-gray-500"},"用于快速响应的轻量级模型,留空将使用系统默认",-1))]),e("div",null,[t[228]||(t[228]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",Tr,[e("label",Ir,[y(e("input",{"onUpdate:modelValue":t[75]||(t[75]=a=>s.value.enableRateLimit=a),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[ve,s.value.enableRateLimit]]),t[224]||(t[224]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[225]||(t[225]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",Ur,[t[226]||(t[226]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),y(e("input",{"onUpdate:modelValue":t[76]||(t[76]=a=>s.value.rateLimitDuration=a),class:"form-input w-full",min:"1",type:"number"},null,512),[[T,s.value.rateLimitDuration,void 0,{number:!0}]]),t[227]||(t[227]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):w("",!0)])])):w("",!0),s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("div",Sr,[t[231]||(t[231]=e("div",{class:"mb-4 flex items-start gap-3"},[e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-amber-500"},[e("i",{class:"fas fa-key text-sm text-white"})]),e("div",null,[e("h5",{class:"mb-2 font-semibold text-amber-900 dark:text-amber-300"},"更新 Token"),e("p",{class:"mb-2 text-sm text-amber-800 dark:text-amber-300"}," 可以更新 Access Token 和 Refresh Token。为了安全起见,不会显示当前的 Token 值。 "),e("p",{class:"text-xs text-amber-600 dark:text-amber-400"},"💡 留空表示不更新该字段。")])],-1)),e("div",Vr,[e("div",null,[t[229]||(t[229]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Access Token",-1)),y(e("textarea",{"onUpdate:modelValue":t[77]||(t[77]=a=>s.value.accessToken=a),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[T,s.value.accessToken]])]),e("div",null,[t[230]||(t[230]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Refresh Token",-1)),y(e("textarea",{"onUpdate:modelValue":t[78]||(t[78]=a=>s.value.refreshToken=a),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[T,s.value.refreshToken]])])])])):w("",!0),ce(He,{modelValue:s.value.proxy,"onUpdate:modelValue":t[79]||(t[79]=a=>s.value.proxy=a)},null,8,["modelValue"]),e("div",zr,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[80]||(t[80]=a=>o.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:G.value,type:"button",onClick:ze},[G.value?(n(),i("div",Mr)):w("",!0),C(" "+v(G.value?"更新中...":"更新"),1)],8,Kr)])])):w("",!0)])])):w("",!0),ce(et,{"cancel-text":ee(k).cancelText,"confirm-text":ee(k).confirmText,message:ee(k).message,show:ee(P),title:ee(k).title,onCancel:ee(z),onConfirm:ee(U)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"]),xe.value?(n(),we(ua,{key:1,onClose:t[81]||(t[81]=a=>xe.value=!1),onRefresh:Te})):w("",!0)]))}},Or={class:"accounts-container"},Lr={class:"card p-4 sm:p-6"},jr={class:"mb-4 flex flex-col gap-4 sm:mb-6"},Rr={class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},Dr={class:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3"},Pr={class:"group relative min-w-[160px]"},Gr={class:"group relative min-w-[140px]"},Er={class:"group relative min-w-[160px]"},Wr={class:"relative"},Fr=["disabled"],qr={key:0,class:"py-12 text-center"},Br={key:1,class:"py-12 text-center"},Nr={key:2,class:"table-container hidden md:block"},_r={class:"w-full table-fixed"},Hr={class:"bg-gray-50/80 backdrop-blur-sm dark:bg-gray-700/80"},Jr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Yr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Qr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Xr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Zr={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},eo={class:"px-3 py-4"},to={class:"flex items-center"},so={class:"min-w-0"},ao={class:"flex items-center gap-2"},lo=["title"],ro={key:0,class:"inline-flex items-center rounded-full bg-purple-100 px-2 py-0.5 text-xs font-medium text-purple-800"},oo={key:1,class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-800"},no={key:2,class:"inline-flex items-center rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800"},io=["title"],uo=["title"],po={class:"px-3 py-4"},mo={class:"flex items-center gap-1"},co={key:0,class:"flex items-center gap-1.5 rounded-lg border border-yellow-200 bg-gradient-to-r from-yellow-100 to-amber-100 px-2.5 py-1"},go={class:"text-xs font-medium text-yellow-700"},xo={key:1,class:"flex items-center gap-1.5 rounded-lg border border-purple-200 bg-gradient-to-r from-purple-100 to-pink-100 px-2.5 py-1"},yo={key:2,class:"flex items-center gap-1.5 rounded-lg border border-orange-200 bg-gradient-to-r from-orange-100 to-red-100 px-2.5 py-1"},fo={key:3,class:"flex items-center gap-1.5 rounded-lg border border-gray-700 bg-gray-100 bg-gradient-to-r from-gray-100 to-gray-100 px-2.5 py-1"},bo={class:"text-xs font-medium text-gray-950"},vo={key:4,class:"flex items-center gap-1.5 rounded-lg border border-blue-200 bg-gradient-to-r from-blue-100 to-cyan-100 px-2.5 py-1 dark:border-blue-700 dark:from-blue-900/20 dark:to-cyan-900/20"},ko={key:5,class:"flex items-center gap-1.5 rounded-lg border border-indigo-200 bg-gradient-to-r from-indigo-100 to-blue-100 px-2.5 py-1"},wo={class:"text-xs font-semibold text-indigo-800"},ho={class:"text-xs font-medium text-indigo-700"},$o={key:6,class:"flex items-center gap-1.5 rounded-lg border border-gray-200 bg-gradient-to-r from-gray-100 to-gray-200 px-2.5 py-1"},Ao={class:"whitespace-nowrap px-3 py-4"},Co={class:"flex flex-col gap-1"},To={key:0,class:"inline-flex items-center rounded-full bg-yellow-100 px-3 py-1 text-xs font-semibold text-yellow-800"},Io={key:0},Uo={key:1,class:"inline-flex items-center rounded-full bg-gray-100 px-3 py-1 text-xs font-semibold text-gray-700"},So=["title"],Vo={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},zo={class:"whitespace-nowrap px-3 py-4"},Ko={key:0,class:"flex items-center gap-2"},Mo={class:"h-2 w-16 rounded-full bg-gray-200"},Oo={class:"min-w-[20px] text-xs font-medium text-gray-700 dark:text-gray-200"},Lo={key:1,class:"text-sm text-gray-400"},jo={class:"px-3 py-4 text-sm text-gray-600"},Ro=["title"],Do={key:1,class:"text-gray-400"},Po={class:"whitespace-nowrap px-3 py-4 text-sm"},Go={key:0,class:"space-y-1"},Eo={class:"flex items-center gap-2"},Wo={class:"text-sm font-medium text-gray-900 dark:text-gray-100"},Fo={class:"flex items-center gap-2"},qo={class:"text-xs text-gray-600 dark:text-gray-300"},Bo={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},No={key:1,class:"text-xs text-gray-400"},_o={class:"whitespace-nowrap px-3 py-4"},Ho={key:0,class:"space-y-2"},Jo={class:"flex items-center gap-2"},Yo={class:"h-2 w-24 rounded-full bg-gray-200"},Qo={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},Xo={class:"text-xs text-gray-600 dark:text-gray-300"},Zo={key:0,class:"font-medium text-indigo-600"},en={key:1,class:"text-sm text-gray-400"},tn={key:2,class:"text-sm text-gray-400"},sn={class:"whitespace-nowrap px-3 py-4 text-sm text-gray-600 dark:text-gray-300"},an={class:"whitespace-nowrap px-3 py-4 text-sm font-medium"},ln={class:"flex flex-wrap items-center gap-1"},rn=["disabled","title","onClick"],on=["disabled","title","onClick"],nn={class:"ml-1"},un=["onClick"],dn=["onClick"],pn={key:3,class:"space-y-3 md:hidden"},mn={class:"mb-3 flex items-start justify-between"},cn={class:"flex items-center gap-3"},gn={class:"text-sm font-semibold text-gray-900"},xn={class:"mt-0.5 flex items-center gap-2"},yn={class:"text-xs text-gray-500 dark:text-gray-400"},fn={class:"text-xs text-gray-500 dark:text-gray-400"},bn={class:"mb-3 grid grid-cols-2 gap-3"},vn={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},kn={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},wn={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},hn={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},$n={class:"mb-3 space-y-2"},An={key:0,class:"space-y-1.5 rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},Cn={class:"flex items-center justify-between text-xs"},Tn={class:"font-medium text-gray-700 dark:text-gray-200"},In={class:"h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-600"},Un={class:"flex items-center justify-between text-xs"},Sn={class:"text-gray-500 dark:text-gray-400"},Vn={key:0,class:"font-medium text-indigo-600"},zn={key:1,class:"text-gray-500"},Kn={class:"flex items-center justify-between text-xs"},Mn={class:"text-gray-700 dark:text-gray-200"},On={key:1,class:"flex items-center justify-between text-xs"},Ln={class:"text-gray-700 dark:text-gray-200"},jn={class:"flex items-center justify-between text-xs"},Rn={class:"font-medium text-gray-700 dark:text-gray-200"},Dn={class:"mt-3 flex gap-2 border-t border-gray-100 pt-3"},Pn=["disabled","onClick"],Gn=["onClick"],En=["onClick"],Wn={__name:"AccountsView",setup(N){const{showConfirmModal:Y,confirmOptions:c,showConfirm:H,handleConfirm:A,handleCancel:P}=Xe(),k=$([]),g=$(!1),U=$("name"),z=$(""),f=$("asc"),D=$([]),j=$([]),G=$("all"),E=$("all"),_=$(!1),W=$(!1),p=$(!1),L=$(new Map),X=$([{value:"name",label:"按名称排序",icon:"fa-font"},{value:"dailyTokens",label:"按今日Token排序",icon:"fa-coins"},{value:"dailyRequests",label:"按今日请求数排序",icon:"fa-chart-line"},{value:"totalTokens",label:"按总Token排序",icon:"fa-database"},{value:"lastUsed",label:"按最后使用排序",icon:"fa-clock"}]),ae=$([{value:"all",label:"所有平台",icon:"fa-globe"},{value:"claude",label:"Claude",icon:"fa-brain"},{value:"claude-console",label:"Claude Console",icon:"fa-terminal"},{value:"gemini",label:"Gemini",icon:"fa-google"},{value:"openai",label:"OpenAi",icon:"fa-openai"},{value:"azure_openai",label:"Azure OpenAI",icon:"fab fa-microsoft"},{value:"bedrock",label:"Bedrock",icon:"fab fa-aws"}]),s=ke(()=>{const d=[{value:"all",label:"所有账户",icon:"fa-globe"},{value:"ungrouped",label:"未分组账户",icon:"fa-user"}];return j.value.forEach(l=>{d.push({value:l.id,label:`${l.name} (${l.platform==="claude"?"Claude":l.platform==="gemini"?"Gemini":"OpenAI"})`,icon:l.platform==="claude"?"fa-brain":l.platform==="gemini"?"fa-robot":"fa-openai"})}),d}),x=$(!1),K=$(!1),h=$(null),ge=ke(()=>{const d=k.value;return z.value?[...d].sort((V,r)=>{var te,se,re,o,t,a,M,O,Q,fe,oe,Ne;let F=V[z.value],q=r[z.value];return z.value==="dailyTokens"?(F=((se=(te=V.usage)==null?void 0:te.daily)==null?void 0:se.allTokens)||0,q=((o=(re=r.usage)==null?void 0:re.daily)==null?void 0:o.allTokens)||0):z.value==="dailyRequests"?(F=((a=(t=V.usage)==null?void 0:t.daily)==null?void 0:a.requests)||0,q=((O=(M=r.usage)==null?void 0:M.daily)==null?void 0:O.requests)||0):z.value==="totalTokens"&&(F=((fe=(Q=V.usage)==null?void 0:Q.total)==null?void 0:fe.allTokens)||0,q=((Ne=(oe=r.usage)==null?void 0:oe.total)==null?void 0:Ne.allTokens)||0),z.value==="lastUsed"&&(F=V.lastUsedAt?new Date(V.lastUsedAt).getTime():0,q=r.lastUsedAt?new Date(r.lastUsedAt).getTime():0),z.value==="status"&&(F=V.isActive?1:0,q=r.isActive?1:0),Fq?f.value==="asc"?1:-1:0}):d}),Z=async(d=!1)=>{g.value=!0;try{const l={};E.value!=="all"&&(l.platform=E.value),G.value!=="all"&&(l.groupId=G.value);const V=[];if(E.value==="all")V.push(S.get("/admin/claude-accounts",{params:l}),S.get("/admin/claude-console-accounts",{params:l}),S.get("/admin/bedrock-accounts",{params:l}),S.get("/admin/gemini-accounts",{params:l}),S.get("/admin/openai-accounts",{params:l}),S.get("/admin/azure-openai-accounts",{params:l}));else switch(E.value){case"claude":V.push(S.get("/admin/claude-accounts",{params:l}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"claude-console":V.push(Promise.resolve({success:!0,data:[]}),S.get("/admin/claude-console-accounts",{params:l}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"bedrock":V.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),S.get("/admin/bedrock-accounts",{params:l}),Promise.resolve({success:!0,data:[]}));break;case"gemini":V.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),S.get("/admin/gemini-accounts",{params:l}));break}await Promise.all([Ue(d),Se(d)]),await Ce(d);const[r,F,q,te,se,re]=await Promise.all(V),o=[];if(r.success){const t=(r.data||[]).map(a=>{const M=D.value.filter(Q=>Q.claudeAccountId===a.id).length,O=L.value.get(a.id)||null;return{...a,platform:"claude",boundApiKeysCount:M,groupInfo:O}});o.push(...t)}if(F.success){const t=(F.data||[]).map(a=>{const M=L.value.get(a.id)||null;return{...a,platform:"claude-console",boundApiKeysCount:0,groupInfo:M}});o.push(...t)}if(q.success){const t=(q.data||[]).map(a=>{const M=L.value.get(a.id)||null;return{...a,platform:"bedrock",boundApiKeysCount:0,groupInfo:M}});o.push(...t)}if(te.success){const t=(te.data||[]).map(a=>{const M=D.value.filter(Q=>Q.geminiAccountId===a.id).length,O=L.value.get(a.id)||null;return{...a,platform:"gemini",boundApiKeysCount:M,groupInfo:O}});o.push(...t)}if(se.success){const t=(se.data||[]).map(a=>{const M=D.value.filter(Q=>Q.openaiAccountId===a.id).length,O=L.value.get(a.id)||null;return{...a,platform:"openai",boundApiKeysCount:M,groupInfo:O}});o.push(...t)}if(re&&re.success){const t=(re.data||[]).map(a=>{const M=D.value.filter(Q=>Q.azureOpenaiAccountId===a.id).length,O=L.value.get(a.id)||null;return{...a,platform:"azure_openai",boundApiKeysCount:M,groupInfo:O}});o.push(...t)}k.value=o}catch{I("加载账户失败","error")}finally{g.value=!1}},ne=d=>{d&&(z.value===d?f.value=f.value==="asc"?"desc":"asc":(z.value=d,f.value="asc"))},ie=d=>{if(d==null)return"0";const l=Number(d);return l>=1e6?Math.floor(l/1e6).toLocaleString()+"M":l.toLocaleString()},Ae=d=>{if(!d)return"从未使用";const l=new Date(d),r=new Date-l;return r<6e4?"刚刚":r<36e5?`${Math.floor(r/6e4)} 分钟前`:r<864e5?`${Math.floor(r/36e5)} 小时前`:r<6048e5?`${Math.floor(r/864e5)} 天前`:l.toLocaleDateString("zh-CN")},Ue=async(d=!1)=>{if(!(!d&&_.value))try{const l=await S.get("/admin/api-keys");l.success&&(D.value=l.data||[],_.value=!0)}catch(l){console.error("Failed to load API keys:",l)}},Se=async(d=!1)=>{if(!(!d&&W.value))try{const l=await S.get("/admin/account-groups");l.success&&(j.value=l.data||[],W.value=!0)}catch(l){console.error("Failed to load account groups:",l)}},Ce=async(d=!1)=>{if(!(!d&&p.value))try{L.value.clear();for(const l of j.value)try{const V=await S.get(`/admin/account-groups/${l.id}/members`);V.success&&(V.data||[]).forEach(F=>{L.value.set(F.id,l)})}catch(V){console.error(`Failed to load members for group ${l.id}:`,V)}p.value=!0}catch(l){console.error("Failed to load group members:",l)}},Ve=()=>{_.value=!1,W.value=!1,p.value=!1,L.value.clear()},ze=()=>{Z()},de=()=>{Z()},ue=d=>{if(!d||!d.host||!d.port)return null;const l=d.type==="socks5"?"S5":d.type.toUpperCase();let V=d.host;V.length>15&&(V=V.substring(0,12)+"...");let r=`${l}://${V}:${d.port}`;return d.username&&(r=`${l}://***@${V}:${d.port}`),r},xe=(d,l)=>{if(!d||!l)return"--";const V=new Date(d),r=new Date(l),F=V.getHours().toString().padStart(2,"0"),q=V.getMinutes().toString().padStart(2,"0"),te=r.getHours().toString().padStart(2,"0"),se=r.getMinutes().toString().padStart(2,"0");return`${F}:${q} - ${te}:${se}`},he=d=>{if(!d||d<=0)return"已结束";const l=Math.floor(d/60),V=d%60;return l>0?`${l}小时${V}分钟`:`${V}分钟`},ye=()=>{x.value=!0},$e=d=>{h.value=d,K.value=!0},Te=async d=>{const l=D.value.filter(r=>r.claudeAccountId===d.id||r.geminiAccountId===d.id||r.openaiAccountId===d.id).length;if(l>0){I(`无法删除此账号,有 ${l} 个API Key绑定到此账号,请先解绑所有API Key`,"error");return}if(await H("删除账户",`确定要删除账户 "${d.name}" 吗? + +此操作不可恢复。`,"删除","取消"))try{let r;d.platform==="claude"?r=`/admin/claude-accounts/${d.id}`:d.platform==="claude-console"?r=`/admin/claude-console-accounts/${d.id}`:d.platform==="bedrock"?r=`/admin/bedrock-accounts/${d.id}`:d.platform==="openai"?r=`/admin/openai-accounts/${d.id}`:d.platform==="azure_openai"?r=`/admin/azure-openai-accounts/${d.id}`:r=`/admin/gemini-accounts/${d.id}`;const F=await S.delete(r);F.success?(I("账户已删除","success"),p.value=!1,Z()):I(F.message||"删除失败","error")}catch{I("删除失败","error")}},m=async d=>{if(d.isResetting)return;let l=!1;if(window.showConfirm?l=await window.showConfirm("重置账户状态","确定要重置此账户的所有异常状态吗?这将清除限流状态、401错误计数等所有异常标记。","确定重置","取消"):l=confirm("确定要重置此账户的所有异常状态吗?"),!!l)try{d.isResetting=!0;const V=await S.post(`/admin/claude-accounts/${d.id}/reset-status`);V.success?(I("账户状态已重置","success"),Z()):I(V.message||"状态重置失败","error")}catch{I("状态重置失败","error")}finally{d.isResetting=!1}},u=async d=>{if(!d.isTogglingSchedulable)try{d.isTogglingSchedulable=!0;let l;if(d.platform==="claude")l=`/admin/claude-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="claude-console")l=`/admin/claude-console-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="bedrock")l=`/admin/bedrock-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="gemini")l=`/admin/gemini-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="openai")l=`/admin/openai-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="azure_openai")l=`/admin/azure-openai-accounts/${d.id}/toggle-schedulable`;else{I("该账户类型暂不支持调度控制","warning");return}const V=await S.put(l);V.success?(d.schedulable=V.schedulable,I(V.schedulable?"已启用调度":"已禁用调度","success")):I(V.message||"操作失败","error")}catch{I("切换调度状态失败","error")}finally{d.isTogglingSchedulable=!1}},b=()=>{x.value=!1,I("账户创建成功","success"),Ve(),Z()},le=()=>{K.value=!1,I("账户更新成功","success"),p.value=!1,Z()},Ke=d=>!d.lastRefreshAt||d.lastRefreshAt===""?"Setup":"OAuth",Me=()=>"OAuth",Oe=()=>"OAuth",Le=d=>{if(d.subscriptionInfo)try{const l=typeof d.subscriptionInfo=="string"?JSON.parse(d.subscriptionInfo):d.subscriptionInfo;return console.log("Account subscription info:",{accountName:d.name,subscriptionInfo:l,hasClaudeMax:l.hasClaudeMax,hasClaudePro:l.hasClaudePro}),l.hasClaudeMax===!0?"Claude Max":l.hasClaudePro===!0?"Claude Pro":"Claude Free"}catch(l){return console.error("Failed to parse subscription info:",l),"Claude"}return console.log("No subscription info for account:",d.name),"Claude"},je=d=>d.status==="blocked"?"已封锁":d.status==="unauthorized"?"异常":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"限流中":d.status==="error"||!d.isActive?"错误":d.schedulable===!1?"已暂停":"正常",Re=d=>d.status==="blocked"||d.status==="unauthorized"?"bg-red-100 text-red-800":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"bg-orange-100 text-orange-800":d.status==="error"||!d.isActive?"bg-red-100 text-red-800":d.schedulable===!1?"bg-gray-100 text-gray-800":"bg-green-100 text-green-800",De=d=>d.status==="blocked"||d.status==="unauthorized"?"bg-red-500":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"bg-orange-500":d.status==="error"||!d.isActive?"bg-red-500":d.schedulable===!1?"bg-gray-500":"bg-green-500",Pe=d=>Ae(d);return J(U,d=>{const l={name:"name",dailyTokens:"dailyTokens",dailyRequests:"dailyRequests",totalTokens:"totalTokens",lastUsed:"lastUsed"};l[d]&&ne(l[d])}),Ye(()=>{Z(!0)}),(d,l)=>{const V=tt;return n(),i("div",Or,[e("div",Lr,[e("div",jr,[l[19]||(l[19]=e("div",null,[e("h3",{class:"mb-1 text-lg font-bold text-gray-900 dark:text-gray-100 sm:mb-2 sm:text-xl"}," 账户管理 "),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"}," 管理您的 Claude、Gemini、OpenAI 和 Azure OpenAI 账户及代理配置 ")],-1)),e("div",Rr,[e("div",Dr,[e("div",Pr,[l[13]||(l[13]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-indigo-500 to-blue-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),ce(Fe,{modelValue:U.value,"onUpdate:modelValue":l[0]||(l[0]=r=>U.value=r),icon:"fa-sort-amount-down","icon-color":"text-indigo-500",options:X.value,placeholder:"选择排序",onChange:l[1]||(l[1]=r=>ne())},null,8,["modelValue","options"])]),e("div",Gr,[l[14]||(l[14]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-blue-500 to-indigo-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),ce(Fe,{modelValue:E.value,"onUpdate:modelValue":l[2]||(l[2]=r=>E.value=r),icon:"fa-server","icon-color":"text-blue-500",options:ae.value,placeholder:"选择平台",onChange:ze},null,8,["modelValue","options"])]),e("div",Er,[l[15]||(l[15]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-purple-500 to-pink-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),ce(Fe,{modelValue:G.value,"onUpdate:modelValue":l[3]||(l[3]=r=>G.value=r),icon:"fa-layer-group","icon-color":"text-purple-500",options:s.value,placeholder:"选择分组",onChange:de},null,8,["modelValue","options"])]),e("div",Wr,[ce(V,{content:"刷新数据 (Ctrl/⌘+点击强制刷新所有缓存)",effect:"dark",placement:"bottom"},{default:rt(()=>[e("button",{class:"group relative flex items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm transition-all duration-200 hover:border-gray-300 hover:shadow-md disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:border-gray-500 sm:w-auto",disabled:g.value,onClick:[l[4]||(l[4]=Ge(r=>Z(!0),["ctrl","exact"])),l[5]||(l[5]=Ge(r=>Z(!1),["exact"])),l[6]||(l[6]=Ge(r=>Z(!0),["meta","exact"]))]},[l[16]||(l[16]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-green-500 to-teal-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),e("i",{class:R(["fas relative text-green-500",g.value?"fa-spinner fa-spin":"fa-sync-alt"])},null,2),l[17]||(l[17]=e("span",{class:"relative"},"刷新",-1))],8,Fr)]),_:1})])]),e("button",{class:"flex w-full items-center justify-center gap-2 rounded-lg bg-gradient-to-r from-green-500 to-green-600 px-5 py-2.5 text-sm font-medium text-white shadow-md transition-all duration-200 hover:from-green-600 hover:to-green-700 hover:shadow-lg sm:w-auto",onClick:Ge(ye,["stop"])},l[18]||(l[18]=[e("i",{class:"fas fa-plus"},null,-1),e("span",null,"添加账户",-1)]))])]),g.value?(n(),i("div",qr,l[20]||(l[20]=[e("div",{class:"loading-spinner mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载账户...",-1)]))):ge.value.length===0?(n(),i("div",Br,l[21]||(l[21]=[e("div",{class:"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-gray-100 dark:bg-gray-700"},[e("i",{class:"fas fa-user-circle text-xl text-gray-400"})],-1),e("p",{class:"text-lg text-gray-500 dark:text-gray-400"},"暂无账户",-1),e("p",{class:"mt-2 text-sm text-gray-400 dark:text-gray-500"},"点击上方按钮添加您的第一个账户",-1)]))):(n(),i("div",Nr,[e("table",_r,[e("thead",Hr,[e("tr",null,[e("th",{class:"w-[22%] min-w-[180px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:l[7]||(l[7]=r=>ne("name"))},[l[22]||(l[22]=C(" 名称 ",-1)),z.value==="name"?(n(),i("i",{key:0,class:R(["fas",f.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Jr))]),e("th",{class:"w-[15%] min-w-[120px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:l[8]||(l[8]=r=>ne("platform"))},[l[23]||(l[23]=C(" 平台/类型 ",-1)),z.value==="platform"?(n(),i("i",{key:0,class:R(["fas",f.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Yr))]),e("th",{class:"w-[12%] min-w-[100px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:l[9]||(l[9]=r=>ne("status"))},[l[24]||(l[24]=C(" 状态 ",-1)),z.value==="status"?(n(),i("i",{key:0,class:R(["fas",f.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Qr))]),e("th",{class:"w-[8%] min-w-[80px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:l[10]||(l[10]=r=>ne("priority"))},[l[25]||(l[25]=C(" 优先级 ",-1)),z.value==="priority"?(n(),i("i",{key:0,class:R(["fas",f.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Xr))]),l[26]||(l[26]=e("th",{class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 代理 ",-1)),l[27]||(l[27]=e("th",{class:"w-[10%] min-w-[90px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 今日使用 ",-1)),l[28]||(l[28]=e("th",{class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 会话窗口 ",-1)),l[29]||(l[29]=e("th",{class:"w-[8%] min-w-[80px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 最后使用 ",-1)),l[30]||(l[30]=e("th",{class:"w-[15%] min-w-[180px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 操作 ",-1))])]),e("tbody",Zr,[(n(!0),i(pe,null,me(ge.value,r=>{var F;return n(),i("tr",{key:r.id,class:"table-row"},[e("td",eo,[e("div",to,[l[35]||(l[35]=e("div",{class:"mr-2 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-user-circle text-xs text-white"})],-1)),e("div",so,[e("div",ao,[e("div",{class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100",title:r.name},v(r.name),9,lo),r.accountType==="dedicated"?(n(),i("span",ro,l[31]||(l[31]=[e("i",{class:"fas fa-lock mr-1"},null,-1),C("专属 ",-1)]))):r.accountType==="group"?(n(),i("span",oo,l[32]||(l[32]=[e("i",{class:"fas fa-layer-group mr-1"},null,-1),C("分组调度 ",-1)]))):(n(),i("span",no,l[33]||(l[33]=[e("i",{class:"fas fa-share-alt mr-1"},null,-1),C("共享 ",-1)]))),r.groupInfo?(n(),i("span",{key:3,class:"ml-1 inline-flex items-center rounded-full bg-gray-100 px-2 py-0.5 text-xs font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-400",title:`所属分组: ${r.groupInfo.name}`},[l[34]||(l[34]=e("i",{class:"fas fa-folder mr-1"},null,-1)),C(v(r.groupInfo.name),1)],8,io)):w("",!0)]),e("div",{class:"truncate text-xs text-gray-500 dark:text-gray-400",title:r.id},v(r.id),9,uo)])])]),e("td",po,[e("div",mo,[r.platform==="gemini"?(n(),i("div",co,[l[36]||(l[36]=e("i",{class:"fas fa-robot text-xs text-yellow-700"},null,-1)),l[37]||(l[37]=e("span",{class:"text-xs font-semibold text-yellow-800"},"Gemini",-1)),l[38]||(l[38]=e("span",{class:"mx-1 h-4 w-px bg-yellow-300"},null,-1)),e("span",go,v(Me()),1)])):r.platform==="claude-console"?(n(),i("div",xo,l[39]||(l[39]=[e("i",{class:"fas fa-terminal text-xs text-purple-700"},null,-1),e("span",{class:"text-xs font-semibold text-purple-800"},"Console",-1),e("span",{class:"mx-1 h-4 w-px bg-purple-300"},null,-1),e("span",{class:"text-xs font-medium text-purple-700"},"API Key",-1)]))):r.platform==="bedrock"?(n(),i("div",yo,l[40]||(l[40]=[e("i",{class:"fab fa-aws text-xs text-orange-700"},null,-1),e("span",{class:"text-xs font-semibold text-orange-800"},"Bedrock",-1),e("span",{class:"mx-1 h-4 w-px bg-orange-300"},null,-1),e("span",{class:"text-xs font-medium text-orange-700"},"AWS",-1)]))):r.platform==="openai"?(n(),i("div",fo,[l[41]||(l[41]=e("div",{class:"fa-openai"},null,-1)),l[42]||(l[42]=e("span",{class:"text-xs font-semibold text-gray-950"},"OpenAi",-1)),l[43]||(l[43]=e("span",{class:"mx-1 h-4 w-px bg-gray-400"},null,-1)),e("span",bo,v(Oe()),1)])):r.platform==="azure_openai"?(n(),i("div",vo,l[44]||(l[44]=[e("i",{class:"fab fa-microsoft text-xs text-blue-700 dark:text-blue-400"},null,-1),e("span",{class:"text-xs font-semibold text-blue-800 dark:text-blue-300"},"Azure OpenAI",-1),e("span",{class:"mx-1 h-4 w-px bg-blue-300 dark:bg-blue-600"},null,-1),e("span",{class:"text-xs font-medium text-blue-700 dark:text-blue-400"},"API Key",-1)]))):r.platform==="claude"||r.platform==="claude-oauth"?(n(),i("div",ko,[l[45]||(l[45]=e("i",{class:"fas fa-brain text-xs text-indigo-700"},null,-1)),e("span",wo,v(Le(r)),1),l[46]||(l[46]=e("span",{class:"mx-1 h-4 w-px bg-indigo-300"},null,-1)),e("span",ho,v(Ke(r)),1)])):(n(),i("div",$o,l[47]||(l[47]=[e("i",{class:"fas fa-question text-xs text-gray-700"},null,-1),e("span",{class:"text-xs font-semibold text-gray-800"},"未知",-1)])))])]),e("td",Ao,[e("div",Co,[e("span",{class:R(["inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold",r.status==="blocked"?"bg-orange-100 text-orange-800":r.status==="unauthorized"?"bg-red-100 text-red-800":r.isActive?"bg-green-100 text-green-800":"bg-red-100 text-red-800"])},[e("div",{class:R(["mr-2 h-2 w-2 rounded-full",r.status==="blocked"?"bg-orange-500":r.status==="unauthorized"?"bg-red-500":r.isActive?"bg-green-500":"bg-red-500"])},null,2),C(" "+v(r.status==="blocked"?"已封锁":r.status==="unauthorized"?"异常":r.isActive?"正常":"异常"),1)],2),r.rateLimitStatus&&r.rateLimitStatus.isRateLimited||r.rateLimitStatus==="limited"?(n(),i("span",To,[l[48]||(l[48]=e("i",{class:"fas fa-exclamation-triangle mr-1"},null,-1)),l[49]||(l[49]=C(" 限流中 ",-1)),r.rateLimitStatus&&typeof r.rateLimitStatus=="object"&&r.rateLimitStatus.minutesRemaining>0?(n(),i("span",Io,"("+v(r.rateLimitStatus.minutesRemaining)+"分钟)",1)):w("",!0)])):w("",!0),r.schedulable===!1?(n(),i("span",Uo,l[50]||(l[50]=[e("i",{class:"fas fa-pause-circle mr-1"},null,-1),C(" 不可调度 ",-1)]))):w("",!0),r.status==="blocked"&&r.errorMessage?(n(),i("span",{key:2,class:"mt-1 max-w-xs truncate text-xs text-gray-500 dark:text-gray-400",title:r.errorMessage},v(r.errorMessage),9,So)):w("",!0),r.accountType==="dedicated"?(n(),i("span",Vo," 绑定: "+v(r.boundApiKeysCount||0)+" 个API Key ",1)):w("",!0)])]),e("td",zo,[r.platform==="claude"||r.platform==="claude-console"||r.platform==="bedrock"||r.platform==="gemini"||r.platform==="openai"?(n(),i("div",Ko,[e("div",Mo,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-green-500 to-blue-600 transition-all duration-300",style:We({width:101-(r.priority||50)+"%"})},null,4)]),e("span",Oo,v(r.priority||50),1)])):(n(),i("div",Lo,l[51]||(l[51]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",jo,[ue(r.proxy)?(n(),i("div",{key:0,class:"break-all rounded bg-blue-50 px-2 py-1 font-mono text-xs",title:ue(r.proxy)},v(ue(r.proxy)),9,Ro)):(n(),i("div",Do,"无代理"))]),e("td",Po,[r.usage&&r.usage.daily?(n(),i("div",Go,[e("div",Eo,[l[52]||(l[52]=e("div",{class:"h-2 w-2 rounded-full bg-green-500"},null,-1)),e("span",Wo,v(r.usage.daily.requests||0)+" 次",1)]),e("div",Fo,[l[53]||(l[53]=e("div",{class:"h-2 w-2 rounded-full bg-blue-500"},null,-1)),e("span",qo,v(ie(r.usage.daily.allTokens||0))+" tokens",1)]),r.usage.averages&&r.usage.averages.rpm>0?(n(),i("div",Bo," 平均 "+v(r.usage.averages.rpm.toFixed(2))+" RPM ",1)):w("",!0)])):(n(),i("div",No,"暂无数据"))]),e("td",_o,[r.platform==="claude"&&r.sessionWindow&&r.sessionWindow.hasActiveWindow?(n(),i("div",Ho,[e("div",Jo,[e("div",Yo,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-blue-500 to-indigo-600 transition-all duration-300",style:We({width:r.sessionWindow.progress+"%"})},null,4)]),e("span",Qo,v(r.sessionWindow.progress)+"% ",1)]),e("div",Xo,[e("div",null,v(xe(r.sessionWindow.windowStart,r.sessionWindow.windowEnd)),1),r.sessionWindow.remainingTime>0?(n(),i("div",Zo," 剩余 "+v(he(r.sessionWindow.remainingTime)),1)):w("",!0)])])):r.platform==="claude"?(n(),i("div",en,l[54]||(l[54]=[e("i",{class:"fas fa-minus"},null,-1)]))):(n(),i("div",tn,l[55]||(l[55]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",sn,v(Ae(r.lastUsedAt)),1),e("td",an,[e("div",ln,[r.platform==="claude"&&(r.status==="unauthorized"||r.status!=="active"||(F=r.rateLimitStatus)!=null&&F.isRateLimited||r.rateLimitStatus==="limited"||!r.isActive)?(n(),i("button",{key:0,class:R(["rounded px-2.5 py-1 text-xs font-medium transition-colors",r.isResetting?"cursor-not-allowed bg-gray-100 text-gray-400":"bg-yellow-100 text-yellow-700 hover:bg-yellow-200"]),disabled:r.isResetting,title:r.isResetting?"重置中...":"重置所有异常状态",onClick:q=>m(r)},[e("i",{class:R(["fas fa-redo",r.isResetting?"animate-spin":""])},null,2),l[56]||(l[56]=e("span",{class:"ml-1"},"重置状态",-1))],10,rn)):w("",!0),e("button",{class:R(["rounded px-2.5 py-1 text-xs font-medium transition-colors",r.isTogglingSchedulable?"cursor-not-allowed bg-gray-100 text-gray-400":r.schedulable?"bg-green-100 text-green-700 hover:bg-green-200":"bg-gray-100 text-gray-700 hover:bg-gray-200"]),disabled:r.isTogglingSchedulable,title:r.schedulable?"点击禁用调度":"点击启用调度",onClick:q=>u(r)},[e("i",{class:R(["fas",r.schedulable?"fa-toggle-on":"fa-toggle-off"])},null,2),e("span",nn,v(r.schedulable?"调度":"停用"),1)],10,on),e("button",{class:"rounded bg-blue-100 px-2.5 py-1 text-xs font-medium text-blue-700 transition-colors hover:bg-blue-200",title:"编辑账户",onClick:q=>$e(r)},l[57]||(l[57]=[e("i",{class:"fas fa-edit"},null,-1),e("span",{class:"ml-1"},"编辑",-1)]),8,un),e("button",{class:"rounded bg-red-100 px-2.5 py-1 text-xs font-medium text-red-700 transition-colors hover:bg-red-200",title:"删除账户",onClick:q=>Te(r)},l[58]||(l[58]=[e("i",{class:"fas fa-trash"},null,-1),e("span",{class:"ml-1"},"删除",-1)]),8,dn)])])])}),128))])])])),!g.value&&ge.value.length>0?(n(),i("div",pn,[(n(!0),i(pe,null,me(ge.value,r=>{var F,q,te,se,re,o,t,a;return n(),i("div",{key:r.id,class:"card p-4 transition-shadow hover:shadow-lg"},[e("div",mn,[e("div",cn,[e("div",{class:R(["flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg",r.platform==="claude"?"bg-gradient-to-br from-purple-500 to-purple-600":r.platform==="bedrock"?"bg-gradient-to-br from-orange-500 to-red-600":r.platform==="azure_openai"?"bg-gradient-to-br from-blue-500 to-cyan-600":r.platform==="openai"?"bg-gradient-to-br from-gray-600 to-gray-700":"bg-gradient-to-br from-blue-500 to-blue-600"])},[e("i",{class:R(["text-sm text-white",r.platform==="claude"?"fas fa-brain":r.platform==="bedrock"?"fab fa-aws":r.platform==="azure_openai"?"fab fa-microsoft":r.platform==="openai"?"fas fa-openai":"fas fa-robot"])},null,2)],2),e("div",null,[e("h4",gn,v(r.name||r.email),1),e("div",xn,[e("span",yn,v(r.platform),1),l[59]||(l[59]=e("span",{class:"text-xs text-gray-400"},"|",-1)),e("span",fn,v(r.type),1)])])]),e("span",{class:R(["inline-flex items-center rounded-full px-2 py-1 text-xs font-semibold",Re(r)])},[e("div",{class:R(["mr-1.5 h-1.5 w-1.5 rounded-full",De(r)])},null,2),C(" "+v(je(r)),1)],2)]),e("div",bn,[e("div",null,[l[60]||(l[60]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"今日使用",-1)),e("p",vn,v(ie(((q=(F=r.usage)==null?void 0:F.daily)==null?void 0:q.requests)||0))+" 次 ",1),e("p",kn,v(ie(((se=(te=r.usage)==null?void 0:te.daily)==null?void 0:se.allTokens)||0))+" tokens ",1)]),e("div",null,[l[61]||(l[61]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"总使用量",-1)),e("p",wn,v(ie(((o=(re=r.usage)==null?void 0:re.total)==null?void 0:o.requests)||0))+" 次 ",1),e("p",hn,v(ie(((a=(t=r.usage)==null?void 0:t.total)==null?void 0:a.allTokens)||0))+" tokens ",1)])]),e("div",$n,[r.platform==="claude"&&r.sessionWindow&&r.sessionWindow.hasActiveWindow?(n(),i("div",An,[e("div",Cn,[l[62]||(l[62]=e("span",{class:"font-medium text-gray-600 dark:text-gray-300"},"会话窗口",-1)),e("span",Tn,v(r.sessionWindow.progress)+"% ",1)]),e("div",In,[e("div",{class:"h-full bg-gradient-to-r from-blue-500 to-indigo-600 transition-all duration-300",style:We({width:r.sessionWindow.progress+"%"})},null,4)]),e("div",Un,[e("span",Sn,v(xe(r.sessionWindow.windowStart,r.sessionWindow.windowEnd)),1),r.sessionWindow.remainingTime>0?(n(),i("span",Vn," 剩余 "+v(he(r.sessionWindow.remainingTime)),1)):(n(),i("span",zn," 已结束 "))])])):w("",!0),e("div",Kn,[l[63]||(l[63]=e("span",{class:"text-gray-500 dark:text-gray-400"},"最后使用",-1)),e("span",Mn,v(r.lastUsedAt?Pe(r.lastUsedAt):"从未使用"),1)]),r.proxyConfig&&r.proxyConfig.type!=="none"?(n(),i("div",On,[l[64]||(l[64]=e("span",{class:"text-gray-500 dark:text-gray-400"},"代理",-1)),e("span",Ln,v(r.proxyConfig.type.toUpperCase()),1)])):w("",!0),e("div",jn,[l[65]||(l[65]=e("span",{class:"text-gray-500 dark:text-gray-400"},"优先级",-1)),e("span",Rn,v(r.priority||50),1)])]),e("div",Dn,[e("button",{class:R(["flex flex-1 items-center justify-center gap-1 rounded-lg px-3 py-2 text-xs transition-colors",r.schedulable?"bg-gray-50 text-gray-600 hover:bg-gray-100":"bg-green-50 text-green-600 hover:bg-green-100"]),disabled:r.isTogglingSchedulable,onClick:M=>u(r)},[e("i",{class:R(["fas",r.schedulable?"fa-pause":"fa-play"])},null,2),C(" "+v(r.schedulable?"暂停":"启用"),1)],10,Pn),e("button",{class:"flex-1 rounded-lg bg-gray-50 px-3 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100",onClick:M=>$e(r)},l[66]||(l[66]=[e("i",{class:"fas fa-edit mr-1"},null,-1),C(" 编辑 ",-1)]),8,Gn),e("button",{class:"rounded-lg bg-red-50 px-3 py-2 text-xs text-red-600 transition-colors hover:bg-red-100",onClick:M=>Te(r)},l[67]||(l[67]=[e("i",{class:"fas fa-trash"},null,-1)]),8,En)])])}),128))])):w("",!0)]),x.value?(n(),we(Je,{key:0,onClose:l[11]||(l[11]=r=>x.value=!1),onSuccess:b})):w("",!0),K.value?(n(),we(Je,{key:1,account:h.value,onClose:l[12]||(l[12]=r=>K.value=!1),onSuccess:le},null,8,["account"])):w("",!0),ce(et,{"cancel-text":ee(c).cancelText,"confirm-text":ee(c).confirmText,message:ee(c).message,show:ee(Y),title:ee(c).title,onCancel:ee(P),onConfirm:ee(A)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"])])}}},Jn=Qe(Wn,[["__scopeId","data-v-c2f46f02"]]);export{Jn as default}; diff --git a/web/admin-spa/dist/assets/AccountsView-DBRgMVT7.js b/web/admin-spa/dist/assets/AccountsView-DBRgMVT7.js deleted file mode 100644 index fa29639d..00000000 --- a/web/admin-spa/dist/assets/AccountsView-DBRgMVT7.js +++ /dev/null @@ -1,15 +0,0 @@ -import{a as tt}from"./element-plus-CMedNaYf.js";import{r as w,aR as st,o as H,V as at,x as i,y as n,z as e,L as k,K as x,al as we,aY as Te,aX as qe,aq as U,aZ as lt,C as P,O as C,c as fe,P as v,I as ke,a5 as Be,q as Ye,an as N,Q as be,ac as ve,R as me,u as ee,J as rt,Y as ze,B as Ee}from"./vue-vendor-DfnFpxGJ.js";import{s as I}from"./toast-BvwA7Mwb.js";import{b as M,_ as Qe}from"./index-BdtiivzQ.js";import{C as Fe}from"./CustomDropdown-D7ci0ZD4.js";import"./vendor-BDiMbLwQ.js";const We=w(!1),_e=w({title:"",message:"",confirmText:"继续",cancelText:"取消"}),ye=w(null);function Xe(){return{showConfirmModal:We,confirmOptions:_e,showConfirm:(_,h,b="继续",f="取消")=>new Promise(K=>{_e.value={title:_,message:h,confirmText:b,cancelText:f},ye.value=K,We.value=!0}),handleConfirm:()=>{We.value=!1,ye.value&&(ye.value(!0),ye.value=null)},handleCancel:()=>{We.value=!1,ye.value&&(ye.value(!1),ye.value=null)}}}const Ze=st("accounts",()=>{const B=w([]),J=w([]),m=w([]),_=w([]),h=w([]),b=w(!1),f=w(null),K=w(""),A=w("asc"),S=async()=>{b.value=!0,f.value=null;try{const c=await M.get("/admin/claude-accounts");if(c.success)B.value=c.data||[];else throw new Error(c.message||"获取Claude账户失败")}catch(c){throw f.value=c.message,c}finally{b.value=!1}},y=async()=>{b.value=!0,f.value=null;try{const c=await M.get("/admin/claude-console-accounts");if(c.success)J.value=c.data||[];else throw new Error(c.message||"获取Claude Console账户失败")}catch(c){throw f.value=c.message,c}finally{b.value=!1}},D=async()=>{b.value=!0,f.value=null;try{const c=await M.get("/admin/bedrock-accounts");if(c.success)m.value=c.data||[];else throw new Error(c.message||"获取Bedrock账户失败")}catch(c){throw f.value=c.message,c}finally{b.value=!1}},O=async()=>{b.value=!0,f.value=null;try{const c=await M.get("/admin/gemini-accounts");if(c.success)_.value=c.data||[];else throw new Error(c.message||"获取Gemini账户失败")}catch(c){throw f.value=c.message,c}finally{b.value=!1}},z=async()=>{b.value=!0,f.value=null;try{const c=await M.get("/admin/openai-accounts");if(c.success)h.value=c.data||[];else throw new Error(c.message||"获取OpenAI账户失败")}catch(c){throw f.value=c.message,c}finally{b.value=!1}};return{claudeAccounts:B,claudeConsoleAccounts:J,bedrockAccounts:m,geminiAccounts:_,openaiAccounts:h,loading:b,error:f,sortBy:K,sortOrder:A,fetchClaudeAccounts:S,fetchClaudeConsoleAccounts:y,fetchBedrockAccounts:D,fetchGeminiAccounts:O,fetchOpenAIAccounts:z,fetchAllAccounts:async()=>{b.value=!0,f.value=null;try{await Promise.all([S(),y(),D(),O(),z()])}catch(c){throw f.value=c.message,c}finally{b.value=!1}},createClaudeAccount:async c=>{b.value=!0,f.value=null;try{const p=await M.post("/admin/claude-accounts",c);if(p.success)return await S(),p.data;throw new Error(p.message||"创建Claude账户失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},createClaudeConsoleAccount:async c=>{b.value=!0,f.value=null;try{const p=await M.post("/admin/claude-console-accounts",c);if(p.success)return await y(),p.data;throw new Error(p.message||"创建Claude Console账户失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},createBedrockAccount:async c=>{b.value=!0,f.value=null;try{const p=await M.post("/admin/bedrock-accounts",c);if(p.success)return await D(),p.data;throw new Error(p.message||"创建Bedrock账户失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},createGeminiAccount:async c=>{b.value=!0,f.value=null;try{const p=await M.post("/admin/gemini-accounts",c);if(p.success)return await O(),p.data;throw new Error(p.message||"创建Gemini账户失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},createOpenAIAccount:async c=>{b.value=!0,f.value=null;try{const p=await M.post("/admin/openai-accounts",c);if(p.success)return await z(),p.data;throw new Error(p.message||"创建OpenAI账户失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},updateClaudeAccount:async(c,p)=>{b.value=!0,f.value=null;try{const $=await M.put(`/admin/claude-accounts/${c}`,p);if($.success)return await S(),$;throw new Error($.message||"更新Claude账户失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},updateClaudeConsoleAccount:async(c,p)=>{b.value=!0,f.value=null;try{const $=await M.put(`/admin/claude-console-accounts/${c}`,p);if($.success)return await y(),$;throw new Error($.message||"更新Claude Console账户失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},updateBedrockAccount:async(c,p)=>{b.value=!0,f.value=null;try{const $=await M.put(`/admin/bedrock-accounts/${c}`,p);if($.success)return await D(),$;throw new Error($.message||"更新Bedrock账户失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},updateGeminiAccount:async(c,p)=>{b.value=!0,f.value=null;try{const $=await M.put(`/admin/gemini-accounts/${c}`,p);if($.success)return await O(),$;throw new Error($.message||"更新Gemini账户失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},updateOpenAIAccount:async(c,p)=>{b.value=!0,f.value=null;try{const $=await M.put(`/admin/openai-accounts/${c}`,p);if($.success)return await z(),$;throw new Error($.message||"更新OpenAI账户失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},toggleAccount:async(c,p)=>{b.value=!0,f.value=null;try{let $;c==="claude"?$=`/admin/claude-accounts/${p}/toggle`:c==="claude-console"?$=`/admin/claude-console-accounts/${p}/toggle`:c==="bedrock"?$=`/admin/bedrock-accounts/${p}/toggle`:c==="gemini"?$=`/admin/gemini-accounts/${p}/toggle`:$=`/admin/openai-accounts/${p}/toggle`;const le=await M.put($);if(le.success)return c==="claude"?await S():c==="claude-console"?await y():c==="bedrock"?await D():c==="gemini"?await O():await z(),le;throw new Error(le.message||"切换状态失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},deleteAccount:async(c,p)=>{b.value=!0,f.value=null;try{let $;c==="claude"?$=`/admin/claude-accounts/${p}`:c==="claude-console"?$=`/admin/claude-console-accounts/${p}`:c==="bedrock"?$=`/admin/bedrock-accounts/${p}`:c==="gemini"?$=`/admin/gemini-accounts/${p}`:$=`/admin/openai-accounts/${p}`;const le=await M.delete($);if(le.success)return c==="claude"?await S():c==="claude-console"?await y():c==="bedrock"?await D():c==="gemini"?await O():await z(),le;throw new Error(le.message||"删除失败")}catch($){throw f.value=$.message,$}finally{b.value=!1}},refreshClaudeToken:async c=>{b.value=!0,f.value=null;try{const p=await M.post(`/admin/claude-accounts/${c}/refresh`);if(p.success)return await S(),p;throw new Error(p.message||"Token刷新失败")}catch(p){throw f.value=p.message,p}finally{b.value=!1}},generateClaudeAuthUrl:async c=>{try{const p=await M.post("/admin/claude-accounts/generate-auth-url",c);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw f.value=p.message,p}},exchangeClaudeCode:async c=>{try{const p=await M.post("/admin/claude-accounts/exchange-code",c);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw f.value=p.message,p}},generateClaudeSetupTokenUrl:async c=>{try{const p=await M.post("/admin/claude-accounts/generate-setup-token-url",c);if(p.success)return p.data;throw new Error(p.message||"生成Setup Token URL失败")}catch(p){throw f.value=p.message,p}},exchangeClaudeSetupTokenCode:async c=>{try{const p=await M.post("/admin/claude-accounts/exchange-setup-token-code",c);if(p.success)return p.data;throw new Error(p.message||"交换Setup Token授权码失败")}catch(p){throw f.value=p.message,p}},generateGeminiAuthUrl:async c=>{try{const p=await M.post("/admin/gemini-accounts/generate-auth-url",c);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw f.value=p.message,p}},exchangeGeminiCode:async c=>{try{const p=await M.post("/admin/gemini-accounts/exchange-code",c);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw f.value=p.message,p}},generateOpenAIAuthUrl:async c=>{try{const p=await M.post("/admin/openai-accounts/generate-auth-url",c);if(p.success)return p.data;throw new Error(p.message||"生成授权URL失败")}catch(p){throw f.value=p.message,p}},exchangeOpenAICode:async c=>{try{const p=await M.post("/admin/openai-accounts/exchange-code",c);if(p.success)return p.data;throw new Error(p.message||"交换授权码失败")}catch(p){throw f.value=p.message,p}},sortAccounts:c=>{K.value===c?A.value=A.value==="asc"?"desc":"asc":(K.value=c,A.value="asc")},reset:()=>{B.value=[],J.value=[],m.value=[],_.value=[],h.value=[],b.value=!1,f.value=null,K.value="",A.value="asc"}}}),ot={class:"space-y-4"},nt={class:"flex items-center justify-between"},it={class:"flex cursor-pointer items-center"},dt={key:0,class:"space-y-4 rounded-lg border border-gray-200 bg-gray-50 p-4 dark:border-gray-600 dark:bg-gray-800"},ut={class:"grid grid-cols-2 gap-4"},pt={class:"space-y-4"},mt={class:"flex items-center"},ct={key:0,class:"grid grid-cols-2 gap-4"},gt={class:"relative"},xt=["type"],He={__name:"ProxyConfig",props:{modelValue:{type:Object,default:()=>({enabled:!1,type:"socks5",host:"",port:"",username:"",password:""})}},emits:["update:modelValue"],setup(B,{emit:J}){const m=B,_=J,h=w({...m.modelValue}),b=w(!!(h.value.username||h.value.password)),f=w(!1);H(()=>m.modelValue,S=>{JSON.stringify(S)!==JSON.stringify(h.value)&&(h.value={...S},b.value=!!(S.username||S.password))},{deep:!0}),H(()=>h.value.enabled,()=>{A()}),H(()=>h.value.type,()=>{A()}),H(()=>h.value.host,()=>{A()}),H(()=>h.value.port,()=>{A()}),H(()=>h.value.username,()=>{A()}),H(()=>h.value.password,()=>{A()}),H(b,S=>{S||(h.value.username="",h.value.password="",A())});let K=null;function A(){K&&clearTimeout(K),K=setTimeout(()=>{const S={...h.value};b.value||(S.username="",S.password=""),_("update:modelValue",S)},100)}return at(()=>{K&&clearTimeout(K)}),(S,y)=>(n(),i("div",ot,[e("div",nt,[y[9]||(y[9]=e("h4",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"代理设置 (可选)",-1)),e("label",it,[x(e("input",{"onUpdate:modelValue":y[0]||(y[0]=D=>h.value.enabled=D),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[we,h.value.enabled]]),y[8]||(y[8]=e("span",{class:"ml-2 text-sm text-gray-700 dark:text-gray-300"},"启用代理",-1))])]),h.value.enabled?(n(),i("div",dt,[y[17]||(y[17]=Te('

配置代理以访问受限的网络资源。支持 SOCKS5 和 HTTP 代理。

请确保代理服务器稳定可用,否则会影响账户的正常使用。

',1)),e("div",null,[y[11]||(y[11]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"代理类型",-1)),x(e("select",{"onUpdate:modelValue":y[1]||(y[1]=D=>h.value.type=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200"},y[10]||(y[10]=[e("option",{value:"socks5"},"SOCKS5",-1),e("option",{value:"http"},"HTTP",-1),e("option",{value:"https"},"HTTPS",-1)]),512),[[qe,h.value.type]])]),e("div",ut,[e("div",null,[y[12]||(y[12]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"主机地址",-1)),x(e("input",{"onUpdate:modelValue":y[2]||(y[2]=D=>h.value.host=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 192.168.1.100",type:"text"},null,512),[[U,h.value.host]])]),e("div",null,[y[13]||(y[13]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"端口",-1)),x(e("input",{"onUpdate:modelValue":y[3]||(y[3]=D=>h.value.port=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如: 1080",type:"number"},null,512),[[U,h.value.port]])])]),e("div",pt,[e("div",mt,[x(e("input",{id:"proxyAuth","onUpdate:modelValue":y[4]||(y[4]=D=>b.value=D),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[we,b.value]]),y[14]||(y[14]=e("label",{class:"ml-2 cursor-pointer text-sm text-gray-700 dark:text-gray-300",for:"proxyAuth"}," 需要身份验证 ",-1))]),b.value?(n(),i("div",ct,[e("div",null,[y[15]||(y[15]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"用户名",-1)),x(e("input",{"onUpdate:modelValue":y[5]||(y[5]=D=>h.value.username=D),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理用户名",type:"text"},null,512),[[U,h.value.username]])]),e("div",null,[y[16]||(y[16]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"},"密码",-1)),e("div",gt,[x(e("input",{"onUpdate:modelValue":y[6]||(y[6]=D=>h.value.password=D),class:"form-input w-full pr-10 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"代理密码",type:f.value?"text":"password"},null,8,xt),[[lt,h.value.password]]),e("button",{class:"absolute inset-y-0 right-0 flex items-center pr-3 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:y[7]||(y[7]=D=>f.value=!f.value)},[e("i",{class:P(f.value?"fas fa-eye-slash":"fas fa-eye")},null,2)])])])])):k("",!0)]),y[18]||(y[18]=e("div",{class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-300"},[e("i",{class:"fas fa-info-circle mr-1"}),e("strong",null,"提示:"),C("代理设置将用于所有与此账户相关的API请求。请确保代理服务器支持HTTPS流量转发。 ")])],-1))])):k("",!0)]))}},yt={class:"space-y-6"},ft={key:0},bt={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},vt={class:"flex items-start gap-4"},kt={class:"flex-1"},wt={class:"space-y-4"},ht={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},$t={class:"flex items-start gap-3"},Ct={class:"flex-1"},Tt=["disabled"],At={key:0,class:"fas fa-link mr-2"},It={key:1,class:"loading-spinner mr-2"},Ut={key:1,class:"space-y-3"},St={class:"flex items-center gap-2"},Vt=["value"],Mt={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Lt={class:"flex items-start gap-3"},Kt={class:"flex-1"},jt={class:"space-y-3"},Rt={key:1},Ot={class:"rounded-lg border border-green-200 bg-green-50 p-6 dark:border-green-700 dark:bg-green-900/30"},Dt={class:"flex items-start gap-4"},Pt={class:"flex-1"},Gt={class:"space-y-4"},zt={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},Wt={class:"flex items-start gap-3"},Et={class:"flex-1"},Ft=["disabled"],qt={key:0,class:"fas fa-link mr-2"},Bt={key:1,class:"loading-spinner mr-2"},Nt={key:1,class:"space-y-3"},_t={class:"flex items-center gap-2"},Ht=["value"],Jt={class:"rounded-lg border border-green-300 bg-white/80 p-4 dark:border-green-600 dark:bg-gray-800/80"},Yt={class:"flex items-start gap-3"},Qt={class:"flex-1"},Xt={class:"space-y-3"},Zt={key:2},es={class:"rounded-lg border border-orange-200 bg-orange-50 p-6 dark:border-orange-700 dark:bg-orange-900/30"},ts={class:"flex items-start gap-4"},ss={class:"flex-1"},as={class:"space-y-4"},ls={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},rs={class:"flex items-start gap-3"},os={class:"flex-1"},ns=["disabled"],is={key:0,class:"fas fa-link mr-2"},ds={key:1,class:"loading-spinner mr-2"},us={key:1,class:"space-y-3"},ps={class:"flex items-center gap-2"},ms=["value"],cs={class:"rounded-lg border border-orange-300 bg-white/80 p-4 dark:border-orange-600 dark:bg-gray-800/80"},gs={class:"flex items-start gap-3"},xs={class:"flex-1"},ys={class:"space-y-3"},fs={class:"flex gap-3 pt-4"},bs=["disabled"],vs={key:0,class:"loading-spinner mr-2"},ks={__name:"OAuthFlow",props:{platform:{type:String,required:!0},proxy:{type:Object,default:null}},emits:["success","back"],setup(B,{emit:J}){const m=B,_=J,h=Ze(),b=w(!1),f=w(!1),K=w(""),A=w(""),S=w(!1),y=w(""),D=fe(()=>K.value&&A.value.trim());H(A,W=>{if(!W||typeof W!="string")return;const u=W.trim();if(!u)return;if(u.startsWith("http://")||u.startsWith("https://"))if(u.startsWith("http://localhost:45462")||u.startsWith("http://localhost:1455"))try{const ae=new URL(u).searchParams.get("code");ae?(A.value=ae,I("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):I("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(X){console.error("Failed to parse URL:",X),I("链接格式错误,请检查是否为完整的 URL","error")}else if(m.platform==="gemini"||m.platform==="openai")try{const ae=new URL(u).searchParams.get("code");ae&&(A.value=ae,I("成功提取授权码!","success"))}catch{}else I("请粘贴以 http://localhost:1455 或 http://localhost:45462 开头的链接","error")});const O=async()=>{var W;b.value=!0;try{const u=(W=m.proxy)!=null&&W.enabled?{proxy:{type:m.proxy.type,host:m.proxy.host,port:parseInt(m.proxy.port),username:m.proxy.username||null,password:m.proxy.password||null}}:{};if(m.platform==="claude"){const j=await h.generateClaudeAuthUrl(u);K.value=j.authUrl,y.value=j.sessionId}else if(m.platform==="gemini"){const j=await h.generateGeminiAuthUrl(u);K.value=j.authUrl,y.value=j.sessionId}else if(m.platform==="openai"){const j=await h.generateOpenAIAuthUrl(u);K.value=j.authUrl,y.value=j.sessionId}}catch(u){I(u.message||"生成授权链接失败","error")}finally{b.value=!1}},z=()=>{K.value="",A.value="",O()},F=async()=>{try{await navigator.clipboard.writeText(K.value),S.value=!0,I("链接已复制","success"),setTimeout(()=>{S.value=!1},2e3)}catch{const u=document.createElement("input");u.value=K.value,document.body.appendChild(u),u.select(),document.execCommand("copy"),document.body.removeChild(u),S.value=!0,I("链接已复制","success"),setTimeout(()=>{S.value=!1},2e3)}},Q=async()=>{var W;if(D.value){f.value=!0;try{let u={};m.platform==="claude"?u={sessionId:y.value,callbackUrl:A.value.trim()}:m.platform==="gemini"?u={code:A.value.trim(),sessionId:y.value}:m.platform==="openai"&&(u={code:A.value.trim(),sessionId:y.value}),(W=m.proxy)!=null&&W.enabled&&(u.proxy={type:m.proxy.type,host:m.proxy.host,port:parseInt(m.proxy.port),username:m.proxy.username||null,password:m.proxy.password||null});let j;m.platform==="claude"?j=await h.exchangeClaudeCode(u):m.platform==="gemini"?j=await h.exchangeGeminiCode(u):m.platform==="openai"&&(j=await h.exchangeOpenAICode(u)),_("success",j)}catch(u){I(u.message||"授权失败,请检查授权码是否正确","error")}finally{f.value=!1}}};return(W,u)=>(n(),i("div",yt,[B.platform==="claude"?(n(),i("div",ft,[e("div",bt,[e("div",vt,[u[15]||(u[15]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-link text-white"})],-1)),e("div",kt,[u[13]||(u[13]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"},"Claude 账户授权",-1)),u[14]||(u[14]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤完成 Claude 账户的授权: ",-1)),e("div",wt,[e("div",ht,[e("div",$t,[u[6]||(u[6]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Ct,[u[5]||(u[5]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),K.value?(n(),i("div",Ut,[e("div",St,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:K.value},null,8,Vt),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:F},[e("i",{class:P(S.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:z},u[4]||(u[4]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:b.value,onClick:O},[b.value?(n(),i("div",It)):(n(),i("i",At)),C(" "+v(b.value?"生成中...":"生成授权链接"),1)],8,Tt))])])]),u[12]||(u[12]=Te('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Claude 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",Mt,[e("div",Lt,[u[11]||(u[11]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Kt,[u[9]||(u[9]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),u[10]||(u[10]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"},[C(" 授权完成后,页面会显示一个 "),e("strong",null,"Authorization Code"),C(",请将其复制并粘贴到下方输入框: ")],-1)),e("div",jt,[e("div",null,[u[7]||(u[7]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),C("Authorization Code ")],-1)),x(e("textarea",{"onUpdate:modelValue":u[0]||(u[0]=j=>A.value=j),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Claude页面获取的Authorization Code...",rows:"3"},null,512),[[U,A.value]])]),u[8]||(u[8]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 请粘贴从Claude页面复制的Authorization Code ")],-1))])])])])])])])])])):B.platform==="gemini"?(n(),i("div",Rt,[e("div",Ot,[e("div",Dt,[u[27]||(u[27]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-green-500"},[e("i",{class:"fas fa-robot text-white"})],-1)),e("div",Pt,[u[25]||(u[25]=e("h4",{class:"mb-3 font-semibold text-green-900 dark:text-green-200"},"Gemini 账户授权",-1)),u[26]||(u[26]=e("p",{class:"mb-4 text-sm text-green-800 dark:text-green-300"}," 请按照以下步骤完成 Gemini 账户的授权: ",-1)),e("div",Gt,[e("div",zt,[e("div",Wt,[u[18]||(u[18]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",Et,[u[17]||(u[17]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 点击下方按钮生成授权链接 ",-1)),K.value?(n(),i("div",Nt,[e("div",_t,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:K.value},null,8,Ht),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:F},[e("i",{class:P(S.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-green-600 hover:text-green-700",onClick:z},u[16]||(u[16]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:b.value,onClick:O},[b.value?(n(),i("div",Bt)):(n(),i("i",qt)),C(" "+v(b.value?"生成中...":"生成授权链接"),1)],8,Ft))])])]),u[24]||(u[24]=Te('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 Gemini 账户并授权。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",Jt,[e("div",Yt,[u[23]||(u[23]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-green-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Qt,[u[21]||(u[21]=e("p",{class:"mb-2 font-medium text-green-900 dark:text-green-200"}," 输入 Authorization Code ",-1)),u[22]||(u[22]=e("p",{class:"mb-3 text-sm text-green-700 dark:text-green-300"}," 授权完成后,页面会显示一个 Authorization Code,请将其复制并粘贴到下方输入框: ",-1)),e("div",Xt,[e("div",null,[u[19]||(u[19]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-green-500"}),C("Authorization Code ")],-1)),x(e("textarea",{"onUpdate:modelValue":u[1]||(u[1]=j=>A.value=j),class:"form-input w-full resize-none font-mono text-sm",placeholder:"粘贴从Gemini页面获取的Authorization Code...",rows:"3"},null,512),[[U,A.value]])]),u[20]||(u[20]=e("div",{class:"mt-2 space-y-1"},[e("p",{class:"text-xs text-gray-600 dark:text-gray-400"},[e("i",{class:"fas fa-check-circle mr-1 text-green-500"}),C(" 请粘贴从Gemini页面复制的Authorization Code ")])],-1))])])])])])])])])])):B.platform==="openai"?(n(),i("div",Zt,[e("div",es,[e("div",ts,[u[39]||(u[39]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-orange-500"},[e("i",{class:"fas fa-brain text-white"})],-1)),e("div",ss,[u[37]||(u[37]=e("h4",{class:"mb-3 font-semibold text-orange-900 dark:text-orange-200"},"OpenAI 账户授权",-1)),u[38]||(u[38]=e("p",{class:"mb-4 text-sm text-orange-800 dark:text-orange-300"}," 请按照以下步骤完成 OpenAI 账户的授权: ",-1)),e("div",as,[e("div",ls,[e("div",rs,[u[30]||(u[30]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",os,[u[29]||(u[29]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 点击下方按钮生成授权链接 ",-1)),K.value?(n(),i("div",us,[e("div",ps,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:K.value},null,8,ms),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:F},[e("i",{class:P(S.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-orange-600 hover:text-orange-700",onClick:z},u[28]||(u[28]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:b.value,onClick:O},[b.value?(n(),i("div",ds)):(n(),i("i",is)),C(" "+v(b.value?"生成中...":"生成授权链接"),1)],8,ns))])])]),u[36]||(u[36]=Te('
2

在浏览器中打开链接并完成授权

请在新标签页中打开授权链接,登录您的 OpenAI 账户并授权。

重要提示:授权后页面可能会加载较长时间,请耐心等待。

当浏览器地址栏变为 http://localhost:1455/... 开头时,表示授权已完成。

注意:如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。

',1)),e("div",cs,[e("div",gs,[u[35]||(u[35]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-orange-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",xs,[u[33]||(u[33]=e("p",{class:"mb-2 font-medium text-orange-900 dark:text-orange-200"}," 输入授权链接或 Code ",-1)),u[34]||(u[34]=e("p",{class:"mb-3 text-sm text-orange-700 dark:text-orange-300"},[C(" 授权完成后,当页面地址变为 "),e("strong",{class:"font-mono"},"http://localhost:1455/..."),C(" 时: ")],-1)),e("div",ys,[e("div",null,[u[31]||(u[31]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-link mr-2 text-orange-500"}),C("授权链接或 Code ")],-1)),x(e("textarea",{"onUpdate:modelValue":u[2]||(u[2]=j=>A.value=j),class:"form-input w-full resize-none font-mono text-sm",placeholder:`方式1:复制完整的链接(http://localhost:1455/auth/callback?code=...) -方式2:仅复制 code 参数的值 -系统会自动识别并提取所需信息`,rows:"3"},null,512),[[U,A.value]])]),u[32]||(u[32]=Te('

提示:您可以直接复制整个链接或仅复制 code 参数值,系统会自动识别。

• 完整链接示例:http://localhost:1455/auth/callback?code=ac_4hm8...

• 仅 Code 示例:ac_4hm8iqmx9A2fzMy_cwye7U3W7...

',1))])])])])])])])])])):k("",!0),e("div",fs,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:u[3]||(u[3]=j=>W.$emit("back"))}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!D.value||f.value,type:"button",onClick:Q},[f.value?(n(),i("div",vs)):k("",!0),C(" "+v(f.value?"验证中...":"完成授权"),1)],8,bs)])]))}},ws={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},hs={class:"modal-content mx-auto w-full max-w-md rounded-2xl bg-white p-6 shadow-xl dark:bg-gray-800"},$s={class:"mb-6 flex items-start gap-4"},Cs={class:"flex-1"},Ts={class:"mb-2 text-lg font-bold text-gray-900 dark:text-white"},As={class:"whitespace-pre-line text-sm leading-relaxed text-gray-700 dark:text-gray-300"},Is={class:"flex gap-3"},Us={__name:"ConfirmModal",props:{show:{type:Boolean,required:!0},title:{type:String,default:""},message:{type:String,default:""},confirmText:{type:String,default:"继续"},cancelText:{type:String,default:"取消"}},emits:["confirm","cancel"],setup(B){return(J,m)=>(n(),ke(Be,{to:"body"},[B.show?(n(),i("div",ws,[e("div",hs,[e("div",$s,[m[2]||(m[2]=e("div",{class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-yellow-400 to-yellow-500"},[e("i",{class:"fas fa-exclamation text-xl text-white"})],-1)),e("div",Cs,[e("h3",Ts,v(B.title),1),e("p",As,v(B.message),1)])]),e("div",Is,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-4 py-2.5 font-medium text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600",onClick:m[0]||(m[0]=_=>J.$emit("cancel"))},v(B.cancelText),1),e("button",{class:"flex-1 rounded-xl bg-gradient-to-r from-yellow-500 to-orange-500 px-4 py-2.5 font-medium text-white shadow-sm transition-colors hover:from-yellow-600 hover:to-orange-600",onClick:m[1]||(m[1]=_=>J.$emit("confirm"))},v(B.confirmText),1)])])])):k("",!0)]))}},et=Qe(Us,[["__scopeId","data-v-c629d8ff"]]),Ss={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},Vs={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-4xl overflow-y-auto p-4 sm:p-6 md:p-8"},Ms={class:"mb-4 flex items-center justify-between sm:mb-6"},Ls={class:"mb-6"},Ks={key:0,class:"mb-6 rounded-lg border border-blue-200 bg-blue-50 p-4"},js={class:"space-y-4"},Rs={class:"flex gap-4"},Os={class:"flex cursor-pointer items-center"},Ds={class:"flex cursor-pointer items-center"},Ps={class:"flex cursor-pointer items-center"},Gs={class:"flex gap-3"},zs=["disabled"],Ws={key:0,class:"loading-spinner mr-2"},Es={class:"space-y-4"},Fs={key:0,class:"py-8 text-center"},qs={key:1,class:"rounded-lg bg-gray-50 py-8 text-center"},Bs={key:2,class:"grid grid-cols-1 gap-4 md:grid-cols-2"},Ns={class:"mb-3 flex items-start justify-between"},_s={class:"flex-1"},Hs={class:"font-semibold text-gray-900"},Js={class:"mt-1 text-sm text-gray-500"},Ys={class:"ml-4 flex items-center gap-2"},Qs={class:"flex items-center justify-between text-sm text-gray-600"},Xs={class:"flex items-center gap-4"},Zs={class:"flex items-center gap-2"},ea=["onClick"],ta=["disabled","onClick"],sa={key:1,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},aa={class:"modal-content w-full max-w-lg p-4 sm:p-6"},la={class:"space-y-4"},ra={class:"rounded-lg bg-gray-100 px-3 py-2 text-sm text-gray-600"},oa={class:"flex gap-3 pt-4"},na=["disabled"],ia={key:0,class:"loading-spinner mr-2"},da={__name:"GroupManagementModal",emits:["close","refresh"],setup(B,{emit:J}){const m=J,_=w(!0),h=w(!1),b=w([]),f=w(!1),K=w(!1),A=w({name:"",platform:"claude",description:""}),S=w(!1),y=w(!1),D=w(null),O=w({name:"",platform:"",description:""}),z=s=>s?new Date(s).toLocaleDateString("zh-CN"):"-",F=async()=>{h.value=!0;try{const s=await M.get("/admin/account-groups");b.value=s.data||[]}catch{I("加载分组列表失败","error")}finally{h.value=!1}},Q=async()=>{var s,g;if(!A.value.name||!A.value.platform){I("请填写必填项","error");return}K.value=!0;try{await M.post("/admin/account-groups",{name:A.value.name,platform:A.value.platform,description:A.value.description}),I("分组创建成功","success"),W(),await F(),m("refresh")}catch(L){I(((g=(s=L.response)==null?void 0:s.data)==null?void 0:g.error)||"创建分组失败","error")}finally{K.value=!1}},W=()=>{f.value=!1,A.value={name:"",platform:"claude",description:""}},u=s=>{D.value=s,O.value={name:s.name,platform:s.platform,description:s.description||""},S.value=!0},j=async()=>{var s,g;if(!O.value.name){I("请填写分组名称","error");return}y.value=!0;try{await M.put(`/admin/account-groups/${D.value.id}`,{name:O.value.name,description:O.value.description}),I("分组更新成功","success"),X(),await F(),m("refresh")}catch(L){I(((g=(s=L.response)==null?void 0:s.data)==null?void 0:g.error)||"更新分组失败","error")}finally{y.value=!1}},X=()=>{S.value=!1,D.value=null,O.value={name:"",platform:"",description:""}},ae=async s=>{var g,L;if(s.memberCount>0){I("分组内还有成员,无法删除","error");return}if(confirm(`确定要删除分组 "${s.name}" 吗?`))try{await M.delete(`/admin/account-groups/${s.id}`),I("分组删除成功","success"),await F(),m("refresh")}catch(T){I(((L=(g=T.response)==null?void 0:g.data)==null?void 0:L.error)||"删除分组失败","error")}};return Ye(()=>{F()}),(s,g)=>(n(),ke(Be,{to:"body"},[_.value?(n(),i("div",Ss,[e("div",Vs,[e("div",Ms,[g[10]||(g[10]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-layer-group text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 sm:text-xl"},"账户分组管理")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:g[0]||(g[0]=L=>s.$emit("close"))},g[9]||(g[9]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("div",Ls,[e("button",{class:"btn btn-primary px-4 py-2",onClick:g[1]||(g[1]=L=>f.value=!0)},g[11]||(g[11]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 创建新分组 ",-1)]))]),f.value?(n(),i("div",Ks,[g[18]||(g[18]=e("h4",{class:"mb-4 text-lg font-semibold text-gray-900"},"创建新分组",-1)),e("div",js,[e("div",null,[g[12]||(g[12]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),x(e("input",{"onUpdate:modelValue":g[2]||(g[2]=L=>A.value.name=L),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[U,A.value.name]])]),e("div",null,[g[16]||(g[16]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型 *",-1)),e("div",Rs,[e("label",Os,[x(e("input",{"onUpdate:modelValue":g[3]||(g[3]=L=>A.value.platform=L),class:"mr-2",type:"radio",value:"claude"},null,512),[[N,A.value.platform]]),g[13]||(g[13]=e("span",{class:"text-sm text-gray-700"},"Claude",-1))]),e("label",Ds,[x(e("input",{"onUpdate:modelValue":g[4]||(g[4]=L=>A.value.platform=L),class:"mr-2",type:"radio",value:"gemini"},null,512),[[N,A.value.platform]]),g[14]||(g[14]=e("span",{class:"text-sm text-gray-700"},"Gemini",-1))]),e("label",Ps,[x(e("input",{"onUpdate:modelValue":g[5]||(g[5]=L=>A.value.platform=L),class:"mr-2",type:"radio",value:"openai"},null,512),[[N,A.value.platform]]),g[15]||(g[15]=e("span",{class:"text-sm text-gray-700"},"OpenAI",-1))])])]),e("div",null,[g[17]||(g[17]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),x(e("textarea",{"onUpdate:modelValue":g[6]||(g[6]=L=>A.value.description=L),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[U,A.value.description]])]),e("div",Gs,[e("button",{class:"btn btn-primary px-4 py-2",disabled:!A.value.name||!A.value.platform||K.value,onClick:Q},[K.value?(n(),i("div",Ws)):k("",!0),C(" "+v(K.value?"创建中...":"创建"),1)],8,zs),e("button",{class:"btn btn-secondary px-4 py-2",onClick:W},"取消")])])])):k("",!0),e("div",Es,[h.value?(n(),i("div",Fs,g[19]||(g[19]=[e("div",{class:"loading-spinner-lg mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500"},"加载中...",-1)]))):b.value.length===0?(n(),i("div",qs,g[20]||(g[20]=[e("i",{class:"fas fa-layer-group mb-4 text-4xl text-gray-300"},null,-1),e("p",{class:"text-gray-500"},"暂无分组",-1)]))):(n(),i("div",Bs,[(n(!0),i(be,null,ve(b.value,L=>(n(),i("div",{key:L.id,class:"rounded-lg border bg-white p-4 transition-shadow hover:shadow-md"},[e("div",Ns,[e("div",_s,[e("h4",Hs,v(L.name),1),e("p",Js,v(L.description||"暂无描述"),1)]),e("div",Ys,[e("span",{class:P(["rounded-full px-2 py-1 text-xs font-medium",L.platform==="claude"?"bg-purple-100 text-purple-700":L.platform==="gemini"?"bg-blue-100 text-blue-700":"bg-gray-100 text-gray-700"])},v(L.platform==="claude"?"Claude":L.platform==="gemini"?"Gemini":"OpenAI"),3)])]),e("div",Qs,[e("div",Xs,[e("span",null,[g[21]||(g[21]=e("i",{class:"fas fa-users mr-1"},null,-1)),C(" "+v(L.memberCount||0)+" 个成员 ",1)]),e("span",null,[g[22]||(g[22]=e("i",{class:"fas fa-clock mr-1"},null,-1)),C(" "+v(z(L.createdAt)),1)])]),e("div",Zs,[e("button",{class:"text-blue-600 transition-colors hover:text-blue-800",title:"编辑",onClick:T=>u(L)},g[23]||(g[23]=[e("i",{class:"fas fa-edit"},null,-1)]),8,ea),e("button",{class:"text-red-600 transition-colors hover:text-red-800",disabled:L.memberCount>0,title:"删除",onClick:T=>ae(L)},g[24]||(g[24]=[e("i",{class:"fas fa-trash"},null,-1)]),8,ta)])])]))),128))]))])])])):k("",!0),S.value?(n(),i("div",sa,[e("div",aa,[e("div",{class:"mb-4 flex items-center justify-between"},[g[26]||(g[26]=e("h3",{class:"text-lg font-bold text-gray-900"},"编辑分组",-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:X},g[25]||(g[25]=[e("i",{class:"fas fa-times"},null,-1)]))]),e("div",la,[e("div",null,[g[27]||(g[27]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"分组名称 *",-1)),x(e("input",{"onUpdate:modelValue":g[7]||(g[7]=L=>O.value.name=L),class:"form-input w-full",placeholder:"输入分组名称",type:"text"},null,512),[[U,O.value.name]])]),e("div",null,[g[29]||(g[29]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"平台类型",-1)),e("div",ra,[C(v(O.value.platform==="claude"?"Claude":O.value.platform==="gemini"?"Gemini":"OpenAI")+" ",1),g[28]||(g[28]=e("span",{class:"ml-2 text-xs text-gray-500"},"(不可修改)",-1))])]),e("div",null,[g[30]||(g[30]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700"},"描述 (可选)",-1)),x(e("textarea",{"onUpdate:modelValue":g[8]||(g[8]=L=>O.value.description=L),class:"form-input w-full resize-none",placeholder:"分组描述...",rows:"2"},null,512),[[U,O.value.description]])]),e("div",oa,[e("button",{class:"btn btn-primary flex-1 px-4 py-2",disabled:!O.value.name||y.value,onClick:j},[y.value?(n(),i("div",ia)):k("",!0),C(" "+v(y.value?"更新中...":"更新"),1)],8,na),e("button",{class:"btn btn-secondary flex-1 px-4 py-2",onClick:X},"取消")])])])])):k("",!0)]))}},ua={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},pa={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-2xl overflow-y-auto p-4 sm:p-6 md:p-8"},ma={class:"mb-4 flex items-center justify-between sm:mb-6"},ca={class:"flex items-center gap-2 sm:gap-3"},ga={class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"},xa={key:0,class:"mb-4 flex items-center justify-center sm:mb-8"},ya={class:"flex items-center space-x-2 sm:space-x-4"},fa={class:"flex items-center"},ba={class:"flex items-center"},va={key:1},ka={class:"space-y-6"},wa={key:0},ha={class:"flex gap-4"},$a={class:"flex cursor-pointer items-center"},Ca={class:"flex cursor-pointer items-center"},Ta={class:"flex cursor-pointer items-center"},Aa={class:"flex cursor-pointer items-center"},Ia={class:"flex cursor-pointer items-center"},Ua={key:1},Sa={class:"flex flex-wrap gap-4"},Va={key:0,class:"flex cursor-pointer items-center"},Ma={class:"flex cursor-pointer items-center"},La={class:"flex cursor-pointer items-center"},Ka={key:0,class:"mt-1 text-xs text-red-500"},ja={class:"flex gap-4"},Ra={class:"flex cursor-pointer items-center"},Oa={class:"flex cursor-pointer items-center"},Da={class:"flex cursor-pointer items-center"},Pa={key:2},Ga={class:"flex gap-2"},za=["value"],Wa={key:3},Ea={key:4,class:"space-y-4"},Fa={key:0,class:"mt-1 text-xs text-red-500"},qa={key:0,class:"mt-1 text-xs text-red-500"},Ba={key:0,class:"mt-1 text-xs text-red-500"},Na={class:"mb-3"},_a={class:"inline-flex cursor-pointer items-center"},Ha={key:0},Ja={key:5,class:"space-y-4"},Ya={key:0,class:"mt-1 text-xs text-red-500"},Qa={key:0,class:"mt-1 text-xs text-red-500"},Xa={class:"mb-3 space-y-2"},Za=["onUpdate:modelValue"],el=["onUpdate:modelValue"],tl=["onClick"],sl={class:"mt-3 flex flex-wrap gap-2"},al={class:"mb-3"},ll={class:"inline-flex cursor-pointer items-center"},rl={key:0},ol={key:6},nl={class:"flex gap-4"},il={class:"flex cursor-pointer items-center"},dl={class:"flex cursor-pointer items-center"},ul={key:7,class:"space-y-4 rounded-lg border border-blue-200 bg-blue-50 p-4"},pl={class:"mb-4 flex items-start gap-3"},ml={key:0,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},cl={key:1,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},gl={key:2,class:"mb-2 text-sm text-blue-800 dark:text-blue-300"},xl={class:"mb-2 mt-2 rounded-lg border border-blue-300 bg-white/80 p-3 dark:border-blue-600 dark:bg-gray-800/80"},yl={key:0,class:"text-xs text-blue-800 dark:text-blue-300"},fl={key:1,class:"text-xs text-blue-800 dark:text-blue-300"},bl={key:2,class:"text-xs text-blue-800 dark:text-blue-300"},vl={key:0},kl={key:0,class:"mt-1 text-xs text-red-500"},wl={key:0,class:"mt-1 text-xs text-red-500"},hl={class:"flex gap-3 pt-4"},$l=["disabled"],Cl=["disabled"],Tl={key:0,class:"loading-spinner mr-2"},Al={key:3,class:"space-y-6"},Il={key:0},Ul={class:"rounded-lg border border-blue-200 bg-blue-50 p-6 dark:border-blue-700 dark:bg-blue-900/30"},Sl={class:"flex items-start gap-4"},Vl={class:"flex-1"},Ml={class:"space-y-4"},Ll={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},Kl={class:"flex items-start gap-3"},jl={class:"flex-1"},Rl=["disabled"],Ol={key:0,class:"fas fa-link mr-2"},Dl={key:1,class:"loading-spinner mr-2"},Pl={key:1,class:"space-y-3"},Gl={class:"flex items-center gap-2"},zl=["value"],Wl={class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},El={class:"flex items-start gap-3"},Fl={class:"flex-1"},ql={class:"space-y-3"},Bl={class:"flex gap-3 pt-4"},Nl=["disabled"],_l={key:0,class:"loading-spinner mr-2"},Hl={key:4,class:"space-y-6"},Jl={class:"flex gap-4"},Yl={class:"flex cursor-pointer items-center"},Ql={class:"flex cursor-pointer items-center"},Xl={class:"flex cursor-pointer items-center"},Zl={key:0},er={class:"flex gap-2"},tr=["value"],sr={key:1},ar={key:2},lr={class:"flex gap-4"},rr={class:"flex cursor-pointer items-center"},or={class:"flex cursor-pointer items-center"},nr={key:3,class:"space-y-4"},ir={class:"mb-3 space-y-2"},dr=["onUpdate:modelValue"],ur=["onUpdate:modelValue"],pr=["onClick"],mr={class:"mt-3 flex flex-wrap gap-2"},cr={class:"mb-3"},gr={class:"inline-flex cursor-pointer items-center"},xr={key:0},yr={key:4,class:"space-y-4"},fr={class:"mb-3"},br={class:"inline-flex cursor-pointer items-center"},vr={key:0},kr={key:5,class:"rounded-lg border border-amber-200 bg-amber-50 p-4 dark:border-amber-700 dark:bg-amber-900/30"},wr={class:"space-y-4"},hr={class:"flex gap-3 pt-4"},$r=["disabled"],Cr={key:0,class:"loading-spinner mr-2"},Je={__name:"AccountForm",props:{account:{type:Object,default:null}},emits:["close","success"],setup(B,{emit:J}){var Le,Ke,je,Re,Oe,De,Pe,Ge,d,a,V,r,E,q,te,se,Y;const m=B,_=J,h=Ze(),{showConfirmModal:b,confirmOptions:f,showConfirm:K,handleConfirm:A,handleCancel:S}=Xe(),y=fe(()=>!!m.account),D=w(!0),O=w(1),z=w(!1),F=w(!1),Q=w(!1),W=w(""),u=w(""),j=w(!1),X=w(""),ae=()=>{var o;return(o=m.account)!=null&&o.proxy&&m.account.proxy.host&&m.account.proxy.port?{enabled:!0,type:m.account.proxy.type||"socks5",host:m.account.proxy.host,port:m.account.proxy.port,username:m.account.proxy.username||"",password:m.account.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""}},s=w({platform:((Le=m.account)==null?void 0:Le.platform)||"claude",addType:((Ke=m.account)==null?void 0:Ke.platform)==="gemini"?"oauth":"setup-token",name:((je=m.account)==null?void 0:je.name)||"",description:((Re=m.account)==null?void 0:Re.description)||"",accountType:((Oe=m.account)==null?void 0:Oe.accountType)||"shared",subscriptionType:"claude_max",groupId:"",projectId:((De=m.account)==null?void 0:De.projectId)||"",idToken:"",accessToken:"",refreshToken:"",proxy:ae(),apiUrl:((Pe=m.account)==null?void 0:Pe.apiUrl)||"",apiKey:((Ge=m.account)==null?void 0:Ge.apiKey)||"",priority:((d=m.account)==null?void 0:d.priority)||50,supportedModels:(()=>{var t;const o=(t=m.account)==null?void 0:t.supportedModels;return o?typeof o=="object"&&!Array.isArray(o)?Object.keys(o).join(` -`):Array.isArray(o)?o.join(` -`):"":""})(),userAgent:((a=m.account)==null?void 0:a.userAgent)||"",enableRateLimit:m.account?m.account.rateLimitDuration>0:!0,rateLimitDuration:((V=m.account)==null?void 0:V.rateLimitDuration)||60,accessKeyId:((r=m.account)==null?void 0:r.accessKeyId)||"",secretAccessKey:((E=m.account)==null?void 0:E.secretAccessKey)||"",region:((q=m.account)==null?void 0:q.region)||"",sessionToken:((te=m.account)==null?void 0:te.sessionToken)||"",defaultModel:((se=m.account)==null?void 0:se.defaultModel)||"",smallFastModel:((Y=m.account)==null?void 0:Y.smallFastModel)||""}),g=w([]),L=()=>{var o;(o=m.account)!=null&&o.supportedModels&&(typeof m.account.supportedModels=="object"&&!Array.isArray(m.account.supportedModels)?g.value=Object.entries(m.account.supportedModels).map(([t,l])=>({from:t,to:l})):Array.isArray(m.account.supportedModels)&&(g.value=m.account.supportedModels.map(t=>({from:t,to:t}))))},T=w({name:"",idToken:"",accessToken:"",apiUrl:"",apiKey:"",accessKeyId:"",secretAccessKey:"",region:""}),ce=fe(()=>{var o;return((o=s.value.name)==null?void 0:o.trim())&&s.value.platform}),Z=fe(()=>W.value&&u.value.trim()),ne=async()=>{if(T.value.name="",!ce.value){(!s.value.name||s.value.name.trim()==="")&&(T.value.name="请填写账户名称");return}if(s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")){I("请选择一个分组","error");return}s.value.platform==="gemini"&&O.value===1&&s.value.addType==="oauth"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await K("项目 ID 未填写",`您尚未填写项目 ID。 - -如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 -如果您使用的是普通个人账号,可以继续不填写。`,"继续","返回填写")||(O.value=2)},ie=async()=>{var o;F.value=!0;try{const t=(o=s.value.proxy)!=null&&o.enabled?{proxy:{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}}:{},l=await h.generateClaudeSetupTokenUrl(t);W.value=l.authUrl,X.value=l.sessionId}catch(t){I(t.message||"生成Setup Token授权链接失败","error")}finally{F.value=!1}},he=()=>{W.value="",u.value="",ie()},Ae=async()=>{try{await navigator.clipboard.writeText(W.value),j.value=!0,I("链接已复制","success"),setTimeout(()=>{j.value=!1},2e3)}catch{const t=document.createElement("textarea");t.value=W.value,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy")?(j.value=!0,I("链接已复制","success")):I("复制失败,请手动复制","error")}catch{I("复制失败,请手动复制","error")}document.body.removeChild(t),setTimeout(()=>{j.value=!1},2e3)}},Ie=async()=>{var o;if(Z.value){Q.value=!0;try{const t={sessionId:X.value,callbackUrl:u.value.trim()};(o=s.value.proxy)!=null&&o.enabled&&(t.proxy={type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null});const l=await h.exchangeClaudeSetupTokenCode(t);await $e(l)}catch(t){I(t.message||"Setup Token授权失败,请检查授权码是否正确","error")}finally{Q.value=!1}}},$e=async o=>{z.value=!0;try{const t={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};s.value.platform==="claude"?(t.claudeAiOauth=o.claudeAiOauth||o,t.priority=s.value.priority||50,t.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}):s.value.platform==="gemini"?(t.geminiOauth=o.tokens||o,s.value.projectId&&(t.projectId=s.value.projectId),t.priority=s.value.priority||50):s.value.platform==="openai"&&(t.openaiOauth=o.tokens||o,t.accountInfo=o.accountInfo,t.priority=s.value.priority||50);let l;s.value.platform==="claude"?l=await h.createClaudeAccount(t):s.value.platform==="openai"?l=await h.createOpenAIAccount(t):l=await h.createGeminiAccount(t),_("success",l)}catch(t){I(t.message||"账户创建失败","error")}finally{z.value=!1}},Ue=async()=>{T.value.name="",T.value.accessToken="",T.value.apiUrl="",T.value.apiKey="";let o=!1;if((!s.value.name||s.value.name.trim()==="")&&(T.value.name="请填写账户名称",o=!0),s.value.platform==="claude-console"?((!s.value.apiUrl||s.value.apiUrl.trim()==="")&&(T.value.apiUrl="请填写 API URL",o=!0),(!s.value.apiKey||s.value.apiKey.trim()==="")&&(T.value.apiKey="请填写 API Key",o=!0)):s.value.platform==="bedrock"?((!s.value.accessKeyId||s.value.accessKeyId.trim()==="")&&(T.value.accessKeyId="请填写 AWS 访问密钥 ID",o=!0),(!s.value.secretAccessKey||s.value.secretAccessKey.trim()==="")&&(T.value.secretAccessKey="请填写 AWS 秘密访问密钥",o=!0),(!s.value.region||s.value.region.trim()==="")&&(T.value.region="请选择 AWS 区域",o=!0)):s.value.addType==="manual"&&((!s.value.accessToken||s.value.accessToken.trim()==="")&&(T.value.accessToken="请填写 Access Token",o=!0),s.value.platform==="openai"&&(!s.value.idToken||s.value.idToken.trim()==="")&&(T.value.idToken="请填写 ID Token",o=!0)),s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")&&(I("请选择一个分组","error"),o=!0),!o){z.value=!0;try{const t={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.platform==="claude"){const G=s.value.refreshToken?6e5:31536e6;t.claudeAiOauth={accessToken:s.value.accessToken,refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+G,scopes:[]},t.priority=s.value.priority||50,t.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}}else if(s.value.platform==="gemini"){const G=s.value.refreshToken?6e5:31536e6;t.geminiOauth={access_token:s.value.accessToken,refresh_token:s.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+G},s.value.projectId&&(t.projectId=s.value.projectId),t.priority=s.value.priority||50}else if(s.value.platform==="openai"){const G=s.value.refreshToken?6e5:31536e6;t.openaiOauth={idToken:s.value.idToken,accessToken:s.value.accessToken,refreshToken:s.value.refreshToken||"",expires_in:Math.floor(G/1e3)};let R={accountId:"",chatgptUserId:"",organizationId:"",organizationRole:"",organizationTitle:"",planType:"",email:"",emailVerified:!1};if(s.value.idToken)try{const ue=s.value.idToken.split(".");if(ue.length===3){const xe=JSON.parse(atob(ue[1])),re=xe["https://api.openai.com/auth"]||{};R={accountId:re.accountId||"",chatgptUserId:re.chatgptUserId||"",organizationId:re.organizationId||"",organizationRole:re.organizationRole||"",organizationTitle:re.organizationTitle||"",planType:re.planType||"",email:xe.email||"",emailVerified:xe.email_verified||!1}}}catch(ue){console.warn("Failed to parse ID Token:",ue)}t.accountInfo=R,t.priority=s.value.priority||50}else s.value.platform==="claude-console"?(t.apiUrl=s.value.apiUrl,t.apiKey=s.value.apiKey,t.priority=s.value.priority||50,t.supportedModels=Me()||{},t.userAgent=s.value.userAgent||null,t.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0):s.value.platform==="bedrock"&&(t.awsCredentials={accessKeyId:s.value.accessKeyId,secretAccessKey:s.value.secretAccessKey,sessionToken:s.value.sessionToken||null},t.region=s.value.region,t.defaultModel=s.value.defaultModel||null,t.smallFastModel=s.value.smallFastModel||null,t.priority=s.value.priority||50,t.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0);let l;s.value.platform==="claude"?l=await h.createClaudeAccount(t):s.value.platform==="claude-console"?l=await h.createClaudeConsoleAccount(t):s.value.platform==="bedrock"?l=await h.createBedrockAccount(t):s.value.platform==="openai"?l=await h.createOpenAIAccount(t):l=await h.createGeminiAccount(t),_("success",l)}catch(t){I(t.message||"账户创建失败","error")}finally{z.value=!1}}},Se=async()=>{if(T.value.name="",!s.value.name||s.value.name.trim()===""){T.value.name="请填写账户名称";return}if(s.value.accountType==="group"&&(!s.value.groupId||s.value.groupId.trim()==="")){I("请选择一个分组","error");return}if(!(s.value.platform==="gemini"&&(!s.value.projectId||s.value.projectId.trim()==="")&&!await K("项目 ID 未填写",`您尚未填写项目 ID。 - -如果您的Google账号绑定了Google Cloud或被识别为Workspace账号,需要提供项目 ID。 -如果您使用的是普通个人账号,可以继续不填写。`,"继续保存","返回填写"))){z.value=!0;try{const o={name:s.value.name,description:s.value.description,accountType:s.value.accountType,groupId:s.value.accountType==="group"?s.value.groupId:void 0,proxy:s.value.proxy.enabled?{type:s.value.proxy.type,host:s.value.proxy.host,port:parseInt(s.value.proxy.port),username:s.value.proxy.username||null,password:s.value.proxy.password||null}:null};if(s.value.accessToken||s.value.refreshToken){if(m.account.platform==="claude"){const t=s.value.refreshToken?6e5:31536e6;o.claudeAiOauth={accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expiresAt:Date.now()+t,scopes:m.account.scopes||[]}}else if(m.account.platform==="gemini"){const t=s.value.refreshToken?6e5:31536e6;o.geminiOauth={access_token:s.value.accessToken||"",refresh_token:s.value.refreshToken||"",scope:"https://www.googleapis.com/auth/cloud-platform",token_type:"Bearer",expiry_date:Date.now()+t}}else if(m.account.platform==="openai"){const t=s.value.refreshToken?6e5:31536e6;o.openaiOauth={idToken:s.value.idToken||"",accessToken:s.value.accessToken||"",refreshToken:s.value.refreshToken||"",expires_in:Math.floor(t/1e3)}}}m.account.platform==="gemini"&&(o.projectId=s.value.projectId||""),m.account.platform==="claude"&&(o.priority=s.value.priority||50,o.subscriptionInfo={accountType:s.value.subscriptionType||"claude_max",hasClaudeMax:s.value.subscriptionType==="claude_max",hasClaudePro:s.value.subscriptionType==="claude_pro",manuallySet:!0}),m.account.platform==="openai"&&(o.priority=s.value.priority||50),m.account.platform==="gemini"&&(o.priority=s.value.priority||50),m.account.platform==="claude-console"&&(o.apiUrl=s.value.apiUrl,s.value.apiKey&&(o.apiKey=s.value.apiKey),o.priority=s.value.priority||50,o.supportedModels=Me()||{},o.userAgent=s.value.userAgent||null,o.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0),m.account.platform==="bedrock"&&((s.value.accessKeyId||s.value.secretAccessKey||s.value.sessionToken)&&(o.awsCredentials={},s.value.accessKeyId&&(o.awsCredentials.accessKeyId=s.value.accessKeyId),s.value.secretAccessKey&&(o.awsCredentials.secretAccessKey=s.value.secretAccessKey),s.value.sessionToken!==void 0&&(o.awsCredentials.sessionToken=s.value.sessionToken||null)),s.value.region&&(o.region=s.value.region),o.defaultModel=s.value.defaultModel||null,o.smallFastModel=s.value.smallFastModel||null,o.priority=s.value.priority||50,o.rateLimitDuration=s.value.enableRateLimit?s.value.rateLimitDuration||60:0),m.account.platform==="claude"?await h.updateClaudeAccount(m.account.id,o):m.account.platform==="claude-console"?await h.updateClaudeConsoleAccount(m.account.id,o):m.account.platform==="bedrock"?await h.updateBedrockAccount(m.account.id,o):m.account.platform==="openai"?await h.updateOpenAIAccount(m.account.id,o):await h.updateGeminiAccount(m.account.id,o),_("success")}catch(o){I(o.message||"账户更新失败","error")}finally{z.value=!1}}};H(()=>s.value.name,()=>{var o;T.value.name&&((o=s.value.name)!=null&&o.trim())&&(T.value.name="")}),H(()=>s.value.accessToken,()=>{var o;T.value.accessToken&&((o=s.value.accessToken)!=null&&o.trim())&&(T.value.accessToken="")}),H(()=>s.value.apiUrl,()=>{var o;T.value.apiUrl&&((o=s.value.apiUrl)!=null&&o.trim())&&(T.value.apiUrl="")}),H(()=>s.value.apiKey,()=>{var o;T.value.apiKey&&((o=s.value.apiKey)!=null&&o.trim())&&(T.value.apiKey="")});const pe=w([]),de=w(!1),ge=w(!1),c=fe(()=>{const o=s.value.platform==="claude-console"?"claude":s.value.platform;return pe.value.filter(t=>t.platform===o)}),p=async()=>{de.value=!0;try{const o=await M.get("/admin/account-groups");pe.value=o.data||[]}catch{I("加载分组列表失败","error"),pe.value=[]}finally{de.value=!1}},$=async()=>{await p(),I("分组列表已刷新","success")},le=async()=>{await p()};H(()=>s.value.platform,o=>{o==="claude-console"||o==="bedrock"?s.value.addType="manual":o==="claude"?s.value.addType="setup-token":o==="gemini"&&(s.value.addType="oauth"),s.value.accountType==="group"&&(s.value.groupId="")}),H(u,o=>{if(!o||typeof o!="string")return;const t=o.trim();if(!t)return;if(t.startsWith("http://")||t.startsWith("https://"))if(t.startsWith("http://localhost:45462"))try{const R=new URL(t).searchParams.get("code");R?(u.value=R,I("成功提取授权码!","success"),console.log("Successfully extracted authorization code from URL")):I("URL 中未找到授权码参数,请检查链接是否正确","error")}catch(G){console.error("Failed to parse URL:",G),I("链接格式错误,请检查是否为完整的 URL","error")}else I("请粘贴以 http://localhost:45462 开头的链接","error")}),H(()=>s.value.accountType,o=>{o==="group"&&pe.value.length===0&&p()}),H(()=>s.value.groupId,o=>{o==="__new__"&&(s.value.groupId="",ge.value=!0)});const Ve=()=>{g.value.push({from:"",to:""})},Ce=o=>{g.value.splice(o,1)},oe=(o,t)=>{if(g.value.some(G=>G.from===o)){I(`模型 ${o} 的映射已存在`,"info");return}g.value.push({from:o,to:t}),I(`已添加映射: ${o} → ${t}`,"success")},Me=()=>{const o={};return g.value.forEach(t=>{t.from&&t.to&&(o[t.from]=t.to)}),Object.keys(o).length>0?o:null};return H(()=>m.account,o=>{if(o){L();const t=o.proxy&&o.proxy.host&&o.proxy.port?{enabled:!0,type:o.proxy.type||"socks5",host:o.proxy.host,port:o.proxy.port,username:o.proxy.username||"",password:o.proxy.password||""}:{enabled:!1,type:"socks5",host:"",port:"",username:"",password:""};let l="";o.accountType==="group"&&(l=o.groupId||o.groupInfo&&o.groupInfo.id||"");let G="claude_max";if(o.subscriptionInfo){const R=typeof o.subscriptionInfo=="string"?JSON.parse(o.subscriptionInfo):o.subscriptionInfo;R.accountType?G=R.accountType:R.hasClaudeMax?G="claude_max":R.hasClaudePro?G="claude_pro":G="claude_free"}s.value={platform:o.platform,addType:"oauth",name:o.name,description:o.description||"",accountType:o.accountType||"shared",subscriptionType:G,groupId:l,projectId:o.projectId||"",accessToken:"",refreshToken:"",proxy:t,apiUrl:o.apiUrl||"",apiKey:"",priority:o.priority||50,supportedModels:(()=>{const R=o.supportedModels;return R?typeof R=="object"&&!Array.isArray(R)?Object.keys(R).join(` -`):Array.isArray(R)?R.join(` -`):"":""})(),userAgent:o.userAgent||"",enableRateLimit:!!(o.rateLimitDuration&&o.rateLimitDuration>0),rateLimitDuration:o.rateLimitDuration||60,accessKeyId:"",secretAccessKey:"",region:o.region||"",sessionToken:"",defaultModel:o.defaultModel||"",smallFastModel:o.smallFastModel||""},o.accountType==="group"&&p().then(()=>{o.groupInfo&&o.groupInfo.id?s.value.groupId=o.groupInfo.id:pe.value.forEach(R=>{M.get(`/admin/account-groups/${R.id}/members`).then(ue=>{(ue.data||[]).some(re=>re.id===o.id)&&(s.value.groupId=R.id)}).catch(()=>{})})})}},{immediate:!0}),(o,t)=>(n(),ke(Be,{to:"body"},[D.value?(n(),i("div",ua,[e("div",pa,[e("div",ma,[e("div",ca,[t[76]||(t[76]=e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-user-circle text-sm text-white sm:text-base"})],-1)),e("h3",ga,v(y.value?"编辑账户":"添加账户"),1)]),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600",onClick:t[0]||(t[0]=l=>o.$emit("close"))},t[77]||(t[77]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),!y.value&&(s.value.addType==="oauth"||s.value.addType==="setup-token")?(n(),i("div",xa,[e("div",ya,[e("div",fa,[e("div",{class:P(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",O.value>=1?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 1 ",2),t[78]||(t[78]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"基本信息",-1))]),t[80]||(t[80]=e("div",{class:"h-0.5 w-4 bg-gray-300 sm:w-8"},null,-1)),e("div",ba,[e("div",{class:P(["flex h-6 w-6 items-center justify-center rounded-full text-xs font-semibold sm:h-8 sm:w-8 sm:text-sm",O.value>=2?"bg-blue-500 text-white":"bg-gray-200 text-gray-500"])}," 2 ",2),t[79]||(t[79]=e("span",{class:"ml-1.5 text-xs font-medium text-gray-700 dark:text-gray-300 sm:ml-2 sm:text-sm"},"授权认证",-1))])])])):k("",!0),O.value===1&&!y.value?(n(),i("div",va,[e("div",ka,[y.value?k("",!0):(n(),i("div",wa,[t[86]||(t[86]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"平台",-1)),e("div",ha,[e("label",$a,[x(e("input",{"onUpdate:modelValue":t[1]||(t[1]=l=>s.value.platform=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[N,s.value.platform]]),t[81]||(t[81]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude",-1))]),e("label",Ca,[x(e("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>s.value.platform=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude-console"},null,512),[[N,s.value.platform]]),t[82]||(t[82]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Console",-1))]),e("label",Ta,[x(e("input",{"onUpdate:modelValue":t[3]||(t[3]=l=>s.value.platform=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[N,s.value.platform]]),t[83]||(t[83]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Gemini",-1))]),e("label",Aa,[x(e("input",{"onUpdate:modelValue":t[4]||(t[4]=l=>s.value.platform=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[N,s.value.platform]]),t[84]||(t[84]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"OpenAI",-1))]),e("label",Ia,[x(e("input",{"onUpdate:modelValue":t[5]||(t[5]=l=>s.value.platform=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"bedrock"},null,512),[[N,s.value.platform]]),t[85]||(t[85]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Bedrock",-1))])])])),!y.value&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("div",Ua,[t[90]||(t[90]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"添加方式",-1)),e("div",Sa,[s.value.platform==="claude"?(n(),i("label",Va,[x(e("input",{"onUpdate:modelValue":t[6]||(t[6]=l=>s.value.addType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"setup-token"},null,512),[[N,s.value.addType]]),t[87]||(t[87]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Setup Token (推荐)",-1))])):k("",!0),e("label",Ma,[x(e("input",{"onUpdate:modelValue":t[7]||(t[7]=l=>s.value.addType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"oauth"},null,512),[[N,s.value.addType]]),t[88]||(t[88]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"OAuth 授权",-1))]),e("label",La,[x(e("input",{"onUpdate:modelValue":t[8]||(t[8]=l=>s.value.addType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"manual"},null,512),[[N,s.value.addType]]),t[89]||(t[89]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"手动输入 Access Token",-1))])])])):k("",!0),e("div",null,[t[91]||(t[91]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),x(e("input",{"onUpdate:modelValue":t[9]||(t[9]=l=>s.value.name=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.name}]),placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,2),[[U,s.value.name]]),T.value.name?(n(),i("p",Ka,v(T.value.name),1)):k("",!0)]),e("div",null,[t[92]||(t[92]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),x(e("textarea",{"onUpdate:modelValue":t[10]||(t[10]=l=>s.value.description=l),class:"form-input w-full resize-none dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[U,s.value.description]])]),e("div",null,[t[96]||(t[96]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",ja,[e("label",Ra,[x(e("input",{"onUpdate:modelValue":t[11]||(t[11]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[N,s.value.accountType]]),t[93]||(t[93]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",Oa,[x(e("input",{"onUpdate:modelValue":t[12]||(t[12]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[N,s.value.accountType]]),t[94]||(t[94]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",Da,[x(e("input",{"onUpdate:modelValue":t[13]||(t[13]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[N,s.value.accountType]]),t[95]||(t[95]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[97]||(t[97]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),i("div",Pa,[t[100]||(t[100]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",Ga,[x(e("select",{"onUpdate:modelValue":t[14]||(t[14]=l=>s.value.groupId=l),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",required:""},[t[98]||(t[98]=e("option",{value:""},"请选择分组",-1)),(n(!0),i(be,null,ve(c.value,l=>(n(),i("option",{key:l.id,value:l.id},v(l.name)+" ("+v(l.memberCount||0)+" 个成员) ",9,za))),128)),t[99]||(t[99]=e("option",{value:"__new__"},"+ 新建分组",-1))],512),[[qe,s.value.groupId]]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",type:"button",onClick:$},[e("i",{class:P(["fas fa-sync-alt",{"animate-spin":de.value}])},null,2)])])])):k("",!0),s.value.platform==="gemini"?(n(),i("div",Wa,[t[101]||(t[101]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[15]||(t[15]=l=>s.value.projectId=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[U,s.value.projectId]]),t[102]||(t[102]=e("div",{class:"mt-2 rounded-lg border border-yellow-200 bg-yellow-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-yellow-600"}),e("div",{class:"text-xs text-yellow-700"},[e("p",{class:"mb-1 font-medium"},"Google Cloud/Workspace 账号需要提供项目 ID"),e("p",null," 某些 Google 账号(特别是绑定了 Google Cloud 的账号)会被识别为 Workspace 账号,需要提供额外的项目 ID。 "),e("div",{class:"mt-2 rounded border border-yellow-300 bg-white p-2"},[e("p",{class:"mb-1 font-medium"},"如何获取项目 ID:"),e("ol",{class:"ml-2 list-inside list-decimal space-y-1"},[e("li",null,[C(" 访问 "),e("a",{class:"font-medium text-blue-600 hover:underline",href:"https://console.cloud.google.com/welcome",target:"_blank"},"Google Cloud Console")]),e("li",null,[C(" 复制"),e("span",{class:"font-semibold text-red-600"},"项目 ID(Project ID)"),C(",通常是字符串格式 ")]),e("li",{class:"text-red-600"}," ⚠️ 注意:要复制项目 ID(Project ID),不要复制项目编号(Project Number)! ")])]),e("p",{class:"mt-2"},[e("strong",null,"提示:"),C("如果您的账号是普通个人账号(未绑定 Google Cloud),请留空此字段。 ")])])])],-1))])):k("",!0),s.value.platform==="bedrock"&&!y.value?(n(),i("div",Ea,[e("div",null,[t[103]||(t[103]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 访问密钥 ID *",-1)),x(e("input",{"onUpdate:modelValue":t[16]||(t[16]=l=>s.value.accessKeyId=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.accessKeyId}]),placeholder:"请输入 AWS Access Key ID",required:"",type:"text"},null,2),[[U,s.value.accessKeyId]]),T.value.accessKeyId?(n(),i("p",Fa,v(T.value.accessKeyId),1)):k("",!0)]),e("div",null,[t[104]||(t[104]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 秘密访问密钥 *",-1)),x(e("input",{"onUpdate:modelValue":t[17]||(t[17]=l=>s.value.secretAccessKey=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.secretAccessKey}]),placeholder:"请输入 AWS Secret Access Key",required:"",type:"password"},null,2),[[U,s.value.secretAccessKey]]),T.value.secretAccessKey?(n(),i("p",qa,v(T.value.secretAccessKey),1)):k("",!0)]),e("div",null,[t[105]||(t[105]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"AWS 区域 *",-1)),x(e("input",{"onUpdate:modelValue":t[18]||(t[18]=l=>s.value.region=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.region}]),placeholder:"例如:us-east-1",required:"",type:"text"},null,2),[[U,s.value.region]]),T.value.region?(n(),i("p",Ba,v(T.value.region),1)):k("",!0),t[106]||(t[106]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")]),e("p",{class:"mt-2 text-blue-600"},"💡 请输入完整的区域代码,如 us-east-1")])])],-1))]),e("div",null,[t[107]||(t[107]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"会话令牌 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[19]||(t[19]=l=>s.value.sessionToken=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"如果使用临时凭证,请输入会话令牌",type:"password"},null,512),[[U,s.value.sessionToken]]),t[108]||(t[108]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 仅在使用临时 AWS 凭证时需要填写 ",-1))]),e("div",null,[t[109]||(t[109]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"默认主模型 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[20]||(t[20]=l=>s.value.defaultModel=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[U,s.value.defaultModel]]),t[110]||(t[110]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1)),t[111]||(t[111]=e("div",{class:"mt-2 rounded-lg border border-amber-200 bg-amber-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-amber-600"}),e("div",{class:"text-xs text-amber-700"},[e("p",{class:"mb-1 font-medium"},"Bedrock 模型配置说明:"),e("ul",{class:"list-inside list-disc space-y-1 text-xs"},[e("li",null,"支持 Inference Profile ID(推荐)"),e("li",null,"支持 Application Inference Profile ARN"),e("li",null,"常用模型:us.anthropic.claude-sonnet-4-20250514-v1:0"),e("li",null,"留空将使用系统配置的默认模型")])])])],-1))]),e("div",null,[t[112]||(t[112]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[21]||(t[21]=l=>s.value.smallFastModel=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[U,s.value.smallFastModel]]),t[113]||(t[113]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 用于快速响应的轻量级模型,留空将使用系统默认 ",-1))]),e("div",null,[t[118]||(t[118]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",Na,[e("label",_a,[x(e("input",{"onUpdate:modelValue":t[22]||(t[22]=l=>s.value.enableRateLimit=l),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[we,s.value.enableRateLimit]]),t[114]||(t[114]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[115]||(t[115]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",Ha,[t[116]||(t[116]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),x(e("input",{"onUpdate:modelValue":t[23]||(t[23]=l=>s.value.rateLimitDuration=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[U,s.value.rateLimitDuration,void 0,{number:!0}]]),t[117]||(t[117]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):k("",!0)])])):k("",!0),s.value.platform==="claude-console"&&!y.value?(n(),i("div",Ja,[e("div",null,[t[119]||(t[119]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API URL *",-1)),x(e("input",{"onUpdate:modelValue":t[24]||(t[24]=l=>s.value.apiUrl=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.apiUrl}]),placeholder:"例如:https://api.example.com",required:"",type:"text"},null,2),[[U,s.value.apiUrl]]),T.value.apiUrl?(n(),i("p",Ya,v(T.value.apiUrl),1)):k("",!0)]),e("div",null,[t[120]||(t[120]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"API Key *",-1)),x(e("input",{"onUpdate:modelValue":t[25]||(t[25]=l=>s.value.apiKey=l),class:P(["form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.apiKey}]),placeholder:"请输入API Key",required:"",type:"password"},null,2),[[U,s.value.apiKey]]),T.value.apiKey?(n(),i("p",Qa,v(T.value.apiKey),1)):k("",!0)]),e("div",null,[t[124]||(t[124]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"模型映射表 (可选)",-1)),t[125]||(t[125]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3 dark:bg-blue-900/30"},[e("p",{class:"text-xs text-blue-700 dark:text-blue-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",Xa,[(n(!0),i(be,null,ve(g.value,(l,G)=>(n(),i("div",{key:G,class:"flex items-center gap-2"},[x(e("input",{"onUpdate:modelValue":R=>l.from=R,class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"原始模型名称",type:"text"},null,8,Za),[[U,l.from]]),t[122]||(t[122]=e("i",{class:"fas fa-arrow-right text-gray-400 dark:text-gray-500"},null,-1)),x(e("input",{"onUpdate:modelValue":R=>l.to=R,class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"映射后的模型名称",type:"text"},null,8,el),[[U,l.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50 dark:hover:bg-red-900/20",type:"button",onClick:R=>Ce(G)},t[121]||(t[121]=[e("i",{class:"fas fa-trash"},null,-1)]),8,tl)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700 dark:border-gray-600 dark:text-gray-400 dark:hover:border-gray-500 dark:hover:text-gray-300",type:"button",onClick:Ve},t[123]||(t[123]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 添加模型映射 ",-1)])),e("div",sl,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200 dark:bg-blue-900/30 dark:text-blue-400 dark:hover:bg-blue-900/50",type:"button",onClick:t[26]||(t[26]=l=>oe("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200 dark:bg-purple-900/30 dark:text-purple-400 dark:hover:bg-purple-900/50",type:"button",onClick:t[27]||(t[27]=l=>oe("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200 dark:bg-green-900/30 dark:text-green-400 dark:hover:bg-green-900/50",type:"button",onClick:t[28]||(t[28]=l=>oe("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200 dark:bg-orange-900/30 dark:text-orange-400 dark:hover:bg-orange-900/50",type:"button",onClick:t[29]||(t[29]=l=>oe("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[126]||(t[126]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[127]||(t[127]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"自定义 User-Agent (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[30]||(t[30]=l=>s.value.userAgent=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[U,s.value.userAgent]]),t[128]||(t[128]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[133]||(t[133]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流机制",-1)),e("div",al,[e("label",ll,[x(e("input",{"onUpdate:modelValue":t[31]||(t[31]=l=>s.value.enableRateLimit=l),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[we,s.value.enableRateLimit]]),t[129]||(t[129]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"启用限流机制",-1))]),t[130]||(t[130]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",rl,[t[131]||(t[131]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"限流时间 (分钟)",-1)),x(e("input",{"onUpdate:modelValue":t[32]||(t[32]=l=>s.value.rateLimitDuration=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"默认60分钟",type:"number"},null,512),[[U,s.value.rateLimitDuration,void 0,{number:!0}]]),t[132]||(t[132]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 账号被限流后暂停调度的时间(分钟) ",-1))])):k("",!0)])])):k("",!0),s.value.platform==="claude"?(n(),i("div",ol,[t[136]||(t[136]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",nl,[e("label",il,[x(e("input",{"onUpdate:modelValue":t[33]||(t[33]=l=>s.value.subscriptionType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[N,s.value.subscriptionType]]),t[134]||(t[134]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",dl,[x(e("input",{"onUpdate:modelValue":t[34]||(t[34]=l=>s.value.subscriptionType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[N,s.value.subscriptionType]]),t[135]||(t[135]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[137]||(t[137]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):k("",!0),e("div",null,[t[138]||(t[138]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),x(e("input",{"onUpdate:modelValue":t[35]||(t[35]=l=>s.value.priority=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高,默认50",type:"number"},null,512),[[U,s.value.priority,void 0,{number:!0}]]),t[139]||(t[139]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.addType==="manual"&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("div",ul,[e("div",pl,[t[145]||(t[145]=e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-info text-sm text-white"})],-1)),e("div",null,[t[143]||(t[143]=e("h5",{class:"mb-2 font-semibold text-blue-900 dark:text-blue-300"}," 手动输入 Token ",-1)),s.value.platform==="claude"?(n(),i("p",ml," 请输入有效的 Claude Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="gemini"?(n(),i("p",cl," 请输入有效的 Gemini Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):s.value.platform==="openai"?(n(),i("p",gl," 请输入有效的 OpenAI Access Token。如果您有 Refresh Token,建议也一并填写以支持自动刷新。 ")):k("",!0),e("div",xl,[t[142]||(t[142]=e("p",{class:"mb-1 text-sm font-medium text-blue-900 dark:text-blue-300"},[e("i",{class:"fas fa-folder-open mr-1"}),C(" 获取 Access Token 的方法: ")],-1)),s.value.platform==="claude"?(n(),i("p",yl,t[140]||(t[140]=[C(" 请从已登录 Claude Code 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.claude/.credentials.json",-1),C(" 文件中的凭证, 请勿使用 Claude 官网 API Keys 页面的密钥。 ",-1)]))):s.value.platform==="gemini"?(n(),i("p",fl,t[141]||(t[141]=[C(" 请从已登录 Gemini CLI 的机器上获取 ",-1),e("code",{class:"rounded bg-blue-100 px-1 py-0.5 font-mono dark:bg-blue-900/50"},"~/.config/gemini/credentials.json",-1),C(" 文件中的凭证。 ",-1)]))):s.value.platform==="openai"?(n(),i("p",bl," 请从已登录 OpenAI 账户的机器上获取认证凭证, 或通过 OAuth 授权流程获取 Access Token。 ")):k("",!0)]),t[144]||(t[144]=e("p",{class:"text-xs text-blue-600 dark:text-blue-400"}," 💡 如果未填写 Refresh Token,Token 过期后需要手动更新。 ",-1))])]),s.value.platform==="openai"?(n(),i("div",vl,[t[146]||(t[146]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"ID Token *",-1)),x(e("textarea",{"onUpdate:modelValue":t[36]||(t[36]=l=>s.value.idToken=l),class:P(["form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.idToken}]),placeholder:"请输入 ID Token (JWT 格式)...",required:"",rows:"4"},null,2),[[U,s.value.idToken]]),T.value.idToken?(n(),i("p",kl,v(T.value.idToken),1)):k("",!0),t[147]||(t[147]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," ID Token 是 OpenAI OAuth 认证返回的 JWT token,包含用户信息和组织信息 ",-1))])):k("",!0),e("div",null,[t[148]||(t[148]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Access Token *",-1)),x(e("textarea",{"onUpdate:modelValue":t[37]||(t[37]=l=>s.value.accessToken=l),class:P(["form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":T.value.accessToken}]),placeholder:"请输入 Access Token...",required:"",rows:"4"},null,2),[[U,s.value.accessToken]]),T.value.accessToken?(n(),i("p",wl,v(T.value.accessToken),1)):k("",!0)]),e("div",null,[t[149]||(t[149]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"Refresh Token (可选)",-1)),x(e("textarea",{"onUpdate:modelValue":t[38]||(t[38]=l=>s.value.refreshToken=l),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"请输入 Refresh Token...",rows:"4"},null,512),[[U,s.value.refreshToken]])])])):k("",!0),me(He,{modelValue:s.value.proxy,"onUpdate:modelValue":t[39]||(t[39]=l=>s.value.proxy=l)},null,8,["modelValue"]),e("div",hl,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[40]||(t[40]=l=>o.$emit("close"))}," 取消 "),(s.value.addType==="oauth"||s.value.addType==="setup-token")&&s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("button",{key:0,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:z.value,type:"button",onClick:ne}," 下一步 ",8,$l)):(n(),i("button",{key:1,class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:z.value,type:"button",onClick:Ue},[z.value?(n(),i("div",Tl)):k("",!0),C(" "+v(z.value?"创建中...":"创建"),1)],8,Cl))])])])):k("",!0),O.value===2&&s.value.addType==="oauth"?(n(),ke(ks,{key:2,platform:s.value.platform,proxy:s.value.proxy,onBack:t[41]||(t[41]=l=>O.value=1),onSuccess:$e},null,8,["platform","proxy"])):k("",!0),O.value===2&&s.value.addType==="setup-token"?(n(),i("div",Al,[s.value.platform==="claude"?(n(),i("div",Il,[e("div",Ul,[e("div",Sl,[t[161]||(t[161]=e("div",{class:"flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-key text-white"})],-1)),e("div",Vl,[t[159]||(t[159]=e("h4",{class:"mb-3 font-semibold text-blue-900 dark:text-blue-200"}," Claude Setup Token 授权 ",-1)),t[160]||(t[160]=e("p",{class:"mb-4 text-sm text-blue-800 dark:text-blue-300"}," 请按照以下步骤通过 Setup Token 完成 Claude 账户的授权: ",-1)),e("div",Ml,[e("div",Ll,[e("div",Kl,[t[152]||(t[152]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 1 ",-1)),e("div",jl,[t[151]||(t[151]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 点击下方按钮生成授权链接 ",-1)),W.value?(n(),i("div",Pl,[e("div",Gl,[e("input",{class:"form-input flex-1 bg-gray-50 font-mono text-xs dark:bg-gray-700",readonly:"",type:"text",value:W.value},null,8,zl),e("button",{class:"rounded-lg bg-gray-100 px-3 py-2 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600",title:"复制链接",onClick:Ae},[e("i",{class:P(j.value?"fas fa-check text-green-500":"fas fa-copy")},null,2)])]),e("button",{class:"text-xs text-blue-600 hover:text-blue-700",onClick:he},t[150]||(t[150]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),C("重新生成 ",-1)]))])):(n(),i("button",{key:0,class:"btn btn-primary px-4 py-2 text-sm",disabled:F.value,onClick:ie},[F.value?(n(),i("div",Dl)):(n(),i("i",Ol)),C(" "+v(F.value?"生成中...":"生成 Setup Token 授权链接"),1)],8,Rl))])])]),t[158]||(t[158]=e("div",{class:"rounded-lg border border-blue-300 bg-white/80 p-4 dark:border-blue-600 dark:bg-gray-800/80"},[e("div",{class:"flex items-start gap-3"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 2 "),e("div",{class:"flex-1"},[e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 在浏览器中打开链接并完成授权 "),e("p",{class:"mb-2 text-sm text-blue-700 dark:text-blue-300"}," 请在新标签页中打开授权链接,登录您的 Claude 账户并授权 Claude Code。 "),e("div",{class:"rounded border border-yellow-300 bg-yellow-50 p-3 dark:border-yellow-700 dark:bg-yellow-900/30"},[e("p",{class:"text-xs text-yellow-800 dark:text-yellow-300"},[e("i",{class:"fas fa-exclamation-triangle mr-1"}),e("strong",null,"注意:"),C("如果您设置了代理,请确保浏览器也使用相同的代理访问授权页面。 ")])])])])],-1)),e("div",Wl,[e("div",El,[t[157]||(t[157]=e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded-full bg-blue-600 text-xs font-bold text-white"}," 3 ",-1)),e("div",Fl,[t[155]||(t[155]=e("p",{class:"mb-2 font-medium text-blue-900 dark:text-blue-200"}," 输入 Authorization Code ",-1)),t[156]||(t[156]=e("p",{class:"mb-3 text-sm text-blue-700 dark:text-blue-300"}," 授权完成后,从返回页面复制 Authorization Code,并粘贴到下方输入框: ",-1)),e("div",ql,[e("div",null,[t[153]||(t[153]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-key mr-2 text-blue-500"}),C("Authorization Code ")],-1)),x(e("textarea",{"onUpdate:modelValue":t[42]||(t[42]=l=>u.value=l),class:"form-input w-full resize-none font-mono text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"粘贴从Claude Code授权页面获取的Authorization Code...",rows:"3"},null,512),[[U,u.value]])]),t[154]||(t[154]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 请粘贴从Claude Code授权页面复制的Authorization Code ")],-1))])])])])])])])])])):k("",!0),e("div",Bl,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[43]||(t[43]=l=>O.value=1)}," 上一步 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:!Z.value||Q.value,type:"button",onClick:Ie},[Q.value?(n(),i("div",_l)):k("",!0),C(" "+v(Q.value?"验证中...":"完成授权"),1)],8,Nl)])])):k("",!0),y.value?(n(),i("div",Hl,[e("div",null,[t[162]||(t[162]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户名称",-1)),x(e("input",{"onUpdate:modelValue":t[44]||(t[44]=l=>s.value.name=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"为账户设置一个易识别的名称",required:"",type:"text"},null,512),[[U,s.value.name]])]),e("div",null,[t[163]||(t[163]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"描述 (可选)",-1)),x(e("textarea",{"onUpdate:modelValue":t[45]||(t[45]=l=>s.value.description=l),class:"form-input w-full resize-none dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"账户用途说明...",rows:"3"},null,512),[[U,s.value.description]])]),e("div",null,[t[167]||(t[167]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"账户类型",-1)),e("div",Jl,[e("label",Yl,[x(e("input",{"onUpdate:modelValue":t[46]||(t[46]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"shared"},null,512),[[N,s.value.accountType]]),t[164]||(t[164]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"共享账户",-1))]),e("label",Ql,[x(e("input",{"onUpdate:modelValue":t[47]||(t[47]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"dedicated"},null,512),[[N,s.value.accountType]]),t[165]||(t[165]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"专属账户",-1))]),e("label",Xl,[x(e("input",{"onUpdate:modelValue":t[48]||(t[48]=l=>s.value.accountType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"group"},null,512),[[N,s.value.accountType]]),t[166]||(t[166]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"分组调度",-1))])]),t[168]||(t[168]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 共享账户:供所有API Key使用;专属账户:仅供特定API Key使用;分组调度:加入分组供分组内调度 ",-1))]),s.value.accountType==="group"?(n(),i("div",Zl,[t[171]||(t[171]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"选择分组 *",-1)),e("div",er,[x(e("select",{"onUpdate:modelValue":t[49]||(t[49]=l=>s.value.groupId=l),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",required:""},[t[169]||(t[169]=e("option",{value:""},"请选择分组",-1)),(n(!0),i(be,null,ve(c.value,l=>(n(),i("option",{key:l.id,value:l.id},v(l.name)+" ("+v(l.memberCount||0)+" 个成员) ",9,tr))),128)),t[170]||(t[170]=e("option",{value:"__new__"},"+ 新建分组",-1))],512),[[qe,s.value.groupId]]),e("button",{class:"rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:$},[e("i",{class:P(["fas fa-sync-alt",{"animate-spin":de.value}])},null,2)])])])):k("",!0),s.value.platform==="gemini"?(n(),i("div",sr,[t[172]||(t[172]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"项目 ID (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[50]||(t[50]=l=>s.value.projectId=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"例如:verdant-wares-464411-k9",type:"text"},null,512),[[U,s.value.projectId]]),t[173]||(t[173]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," Google Cloud/Workspace 账号可能需要提供项目 ID ",-1))])):k("",!0),s.value.platform==="claude"?(n(),i("div",ar,[t[176]||(t[176]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"订阅类型",-1)),e("div",lr,[e("label",rr,[x(e("input",{"onUpdate:modelValue":t[51]||(t[51]=l=>s.value.subscriptionType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_max"},null,512),[[N,s.value.subscriptionType]]),t[174]||(t[174]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Max",-1))]),e("label",or,[x(e("input",{"onUpdate:modelValue":t[52]||(t[52]=l=>s.value.subscriptionType=l),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude_pro"},null,512),[[N,s.value.subscriptionType]]),t[175]||(t[175]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"Claude Pro",-1))])]),t[177]||(t[177]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" Pro 账号不支持 Claude Opus 4 模型 ")],-1))])):k("",!0),e("div",null,[t[178]||(t[178]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"调度优先级 (1-100)",-1)),x(e("input",{"onUpdate:modelValue":t[53]||(t[53]=l=>s.value.priority=l),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"100",min:"1",placeholder:"数字越小优先级越高",type:"number"},null,512),[[U,s.value.priority,void 0,{number:!0}]]),t[179]||(t[179]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 数字越小优先级越高,建议范围:1-100 ",-1))]),s.value.platform==="claude-console"?(n(),i("div",nr,[e("div",null,[t[180]||(t[180]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API URL",-1)),x(e("input",{"onUpdate:modelValue":t[54]||(t[54]=l=>s.value.apiUrl=l),class:"form-input w-full",placeholder:"例如:https://api.example.com",required:"",type:"text"},null,512),[[U,s.value.apiUrl]])]),e("div",null,[t[181]||(t[181]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"API Key",-1)),x(e("input",{"onUpdate:modelValue":t[55]||(t[55]=l=>s.value.apiKey=l),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[U,s.value.apiKey]]),t[182]||(t[182]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 API Key",-1))]),e("div",null,[t[186]||(t[186]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"模型映射表 (可选)",-1)),t[187]||(t[187]=e("div",{class:"mb-3 rounded-lg bg-blue-50 p-3"},[e("p",{class:"text-xs text-blue-700"},[e("i",{class:"fas fa-info-circle mr-1"}),C(" 留空表示支持所有模型且不修改请求。配置映射后,左侧模型会被识别为支持的模型,右侧是实际发送的模型。 ")])],-1)),e("div",ir,[(n(!0),i(be,null,ve(g.value,(l,G)=>(n(),i("div",{key:G,class:"flex items-center gap-2"},[x(e("input",{"onUpdate:modelValue":R=>l.from=R,class:"form-input flex-1",placeholder:"原始模型名称",type:"text"},null,8,dr),[[U,l.from]]),t[184]||(t[184]=e("i",{class:"fas fa-arrow-right text-gray-400"},null,-1)),x(e("input",{"onUpdate:modelValue":R=>l.to=R,class:"form-input flex-1",placeholder:"映射后的模型名称",type:"text"},null,8,ur),[[U,l.to]]),e("button",{class:"rounded-lg p-2 text-red-500 transition-colors hover:bg-red-50",type:"button",onClick:R=>Ce(G)},t[183]||(t[183]=[e("i",{class:"fas fa-trash"},null,-1)]),8,pr)]))),128))]),e("button",{class:"w-full rounded-lg border-2 border-dashed border-gray-300 px-4 py-2 text-gray-600 transition-colors hover:border-gray-400 hover:text-gray-700",type:"button",onClick:Ve},t[185]||(t[185]=[e("i",{class:"fas fa-plus mr-2"},null,-1),C(" 添加模型映射 ",-1)])),e("div",mr,[e("button",{class:"rounded-lg bg-blue-100 px-3 py-1 text-xs text-blue-700 transition-colors hover:bg-blue-200",type:"button",onClick:t[56]||(t[56]=l=>oe("claude-sonnet-4-20250514","claude-sonnet-4-20250514"))}," + Sonnet 4 "),e("button",{class:"rounded-lg bg-purple-100 px-3 py-1 text-xs text-purple-700 transition-colors hover:bg-purple-200",type:"button",onClick:t[57]||(t[57]=l=>oe("claude-opus-4-1-20250805","claude-opus-4-1-20250805"))}," + Opus 4.1 "),e("button",{class:"rounded-lg bg-green-100 px-3 py-1 text-xs text-green-700 transition-colors hover:bg-green-200",type:"button",onClick:t[58]||(t[58]=l=>oe("claude-3-5-haiku-20241022","claude-3-5-haiku-20241022"))}," + Haiku 3.5 "),e("button",{class:"rounded-lg bg-orange-100 px-3 py-1 text-xs text-orange-700 transition-colors hover:bg-orange-200",type:"button",onClick:t[59]||(t[59]=l=>oe("claude-opus-4-1-20250805","claude-sonnet-4-20250514"))}," + Opus 4.1 → Sonnet 4 ")]),t[188]||(t[188]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空表示支持所有模型。如果指定模型,请求中的模型不在列表内将不会调度到此账号 ",-1))]),e("div",null,[t[189]||(t[189]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"自定义 User-Agent (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[60]||(t[60]=l=>s.value.userAgent=l),class:"form-input w-full",placeholder:"留空则透传客户端 User-Agent",type:"text"},null,512),[[U,s.value.userAgent]]),t[190]||(t[190]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空时将自动使用客户端的 User-Agent,仅在需要固定特定 UA 时填写 ",-1))]),e("div",null,[t[195]||(t[195]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",cr,[e("label",gr,[x(e("input",{"onUpdate:modelValue":t[61]||(t[61]=l=>s.value.enableRateLimit=l),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[we,s.value.enableRateLimit]]),t[191]||(t[191]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[192]||(t[192]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",xr,[t[193]||(t[193]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),x(e("input",{"onUpdate:modelValue":t[62]||(t[62]=l=>s.value.rateLimitDuration=l),class:"form-input w-full",min:"1",type:"number"},null,512),[[U,s.value.rateLimitDuration,void 0,{number:!0}]]),t[194]||(t[194]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):k("",!0)])])):k("",!0),s.value.platform==="bedrock"?(n(),i("div",yr,[e("div",null,[t[196]||(t[196]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 访问密钥 ID",-1)),x(e("input",{"onUpdate:modelValue":t[63]||(t[63]=l=>s.value.accessKeyId=l),class:"form-input w-full",placeholder:"留空表示不更新",type:"text"},null,512),[[U,s.value.accessKeyId]]),t[197]||(t[197]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Access Key ID",-1))]),e("div",null,[t[198]||(t[198]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 秘密访问密钥",-1)),x(e("input",{"onUpdate:modelValue":t[64]||(t[64]=l=>s.value.secretAccessKey=l),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[U,s.value.secretAccessKey]]),t[199]||(t[199]=e("p",{class:"mt-1 text-xs text-gray-500"},"留空表示不更新 AWS Secret Access Key",-1))]),e("div",null,[t[200]||(t[200]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"AWS 区域",-1)),x(e("input",{"onUpdate:modelValue":t[65]||(t[65]=l=>s.value.region=l),class:"form-input w-full",placeholder:"例如:us-east-1",type:"text"},null,512),[[U,s.value.region]]),t[201]||(t[201]=e("div",{class:"mt-2 rounded-lg border border-blue-200 bg-blue-50 p-3"},[e("div",{class:"flex items-start gap-2"},[e("i",{class:"fas fa-info-circle mt-0.5 text-blue-600"}),e("div",{class:"text-xs text-blue-700"},[e("p",{class:"mb-1 font-medium"},"常用 AWS 区域参考:"),e("div",{class:"grid grid-cols-2 gap-1 text-xs"},[e("span",null,"• us-east-1 (美国东部)"),e("span",null,"• us-west-2 (美国西部)"),e("span",null,"• eu-west-1 (欧洲爱尔兰)"),e("span",null,"• ap-southeast-1 (新加坡)"),e("span",null,"• ap-northeast-1 (东京)"),e("span",null,"• eu-central-1 (法兰克福)")])])])],-1))]),e("div",null,[t[202]||(t[202]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"会话令牌 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[66]||(t[66]=l=>s.value.sessionToken=l),class:"form-input w-full",placeholder:"留空表示不更新",type:"password"},null,512),[[U,s.value.sessionToken]])]),e("div",null,[t[203]||(t[203]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"默认主模型 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[67]||(t[67]=l=>s.value.defaultModel=l),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-sonnet-4-20250514-v1:0",type:"text"},null,512),[[U,s.value.defaultModel]]),t[204]||(t[204]=e("p",{class:"mt-1 text-xs text-gray-500"}," 留空将使用系统默认模型。支持 inference profile ID 或 ARN ",-1))]),e("div",null,[t[205]||(t[205]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"小快速模型 (可选)",-1)),x(e("input",{"onUpdate:modelValue":t[68]||(t[68]=l=>s.value.smallFastModel=l),class:"form-input w-full",placeholder:"例如:us.anthropic.claude-3-5-haiku-20241022-v1:0",type:"text"},null,512),[[U,s.value.smallFastModel]]),t[206]||(t[206]=e("p",{class:"mt-1 text-xs text-gray-500"},"用于快速响应的轻量级模型,留空将使用系统默认",-1))]),e("div",null,[t[211]||(t[211]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流机制",-1)),e("div",fr,[e("label",br,[x(e("input",{"onUpdate:modelValue":t[69]||(t[69]=l=>s.value.enableRateLimit=l),class:"mr-2 rounded border-gray-300 text-blue-600 focus:border-blue-500 focus:ring focus:ring-blue-200",type:"checkbox"},null,512),[[we,s.value.enableRateLimit]]),t[207]||(t[207]=e("span",{class:"text-sm text-gray-700"},"启用限流机制",-1))]),t[208]||(t[208]=e("p",{class:"mt-1 text-xs text-gray-500"}," 启用后,当账号返回429错误时将暂停调度一段时间 ",-1))]),s.value.enableRateLimit?(n(),i("div",vr,[t[209]||(t[209]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"限流时间 (分钟)",-1)),x(e("input",{"onUpdate:modelValue":t[70]||(t[70]=l=>s.value.rateLimitDuration=l),class:"form-input w-full",min:"1",type:"number"},null,512),[[U,s.value.rateLimitDuration,void 0,{number:!0}]]),t[210]||(t[210]=e("p",{class:"mt-1 text-xs text-gray-500"},"账号被限流后暂停调度的时间(分钟)",-1))])):k("",!0)])])):k("",!0),s.value.platform!=="claude-console"&&s.value.platform!=="bedrock"?(n(),i("div",kr,[t[214]||(t[214]=e("div",{class:"mb-4 flex items-start gap-3"},[e("div",{class:"mt-1 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-amber-500"},[e("i",{class:"fas fa-key text-sm text-white"})]),e("div",null,[e("h5",{class:"mb-2 font-semibold text-amber-900 dark:text-amber-300"},"更新 Token"),e("p",{class:"mb-2 text-sm text-amber-800 dark:text-amber-300"}," 可以更新 Access Token 和 Refresh Token。为了安全起见,不会显示当前的 Token 值。 "),e("p",{class:"text-xs text-amber-600 dark:text-amber-400"},"💡 留空表示不更新该字段。")])],-1)),e("div",wr,[e("div",null,[t[212]||(t[212]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Access Token",-1)),x(e("textarea",{"onUpdate:modelValue":t[71]||(t[71]=l=>s.value.accessToken=l),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[U,s.value.accessToken]])]),e("div",null,[t[213]||(t[213]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新的 Refresh Token",-1)),x(e("textarea",{"onUpdate:modelValue":t[72]||(t[72]=l=>s.value.refreshToken=l),class:"form-input w-full resize-none font-mono text-xs dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"留空表示不更新...",rows:"4"},null,512),[[U,s.value.refreshToken]])])])])):k("",!0),me(He,{modelValue:s.value.proxy,"onUpdate:modelValue":t[73]||(t[73]=l=>s.value.proxy=l)},null,8,["modelValue"]),e("div",hr,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",type:"button",onClick:t[74]||(t[74]=l=>o.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:z.value,type:"button",onClick:Se},[z.value?(n(),i("div",Cr)):k("",!0),C(" "+v(z.value?"更新中...":"更新"),1)],8,$r)])])):k("",!0)])])):k("",!0),me(et,{"cancel-text":ee(f).cancelText,"confirm-text":ee(f).confirmText,message:ee(f).message,show:ee(b),title:ee(f).title,onCancel:ee(S),onConfirm:ee(A)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"]),ge.value?(n(),ke(da,{key:1,onClose:t[75]||(t[75]=l=>ge.value=!1),onRefresh:le})):k("",!0)]))}},Tr={class:"accounts-container"},Ar={class:"card p-4 sm:p-6"},Ir={class:"mb-4 flex flex-col gap-4 sm:mb-6"},Ur={class:"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},Sr={class:"flex flex-col gap-3 sm:flex-row sm:flex-wrap sm:items-center sm:gap-3"},Vr={class:"group relative min-w-[160px]"},Mr={class:"group relative min-w-[140px]"},Lr={class:"group relative min-w-[160px]"},Kr={class:"relative"},jr=["disabled"],Rr={key:0,class:"py-12 text-center"},Or={key:1,class:"py-12 text-center"},Dr={key:2,class:"table-container hidden md:block"},Pr={class:"w-full table-fixed"},Gr={class:"bg-gray-50/80 backdrop-blur-sm dark:bg-gray-700/80"},zr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Wr={key:1,class:"fas fa-sort ml-1 text-gray-400"},Er={key:1,class:"fas fa-sort ml-1 text-gray-400"},Fr={key:1,class:"fas fa-sort ml-1 text-gray-400"},qr={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},Br={class:"px-3 py-4"},Nr={class:"flex items-center"},_r={class:"min-w-0"},Hr={class:"flex items-center gap-2"},Jr=["title"],Yr={key:0,class:"inline-flex items-center rounded-full bg-purple-100 px-2 py-0.5 text-xs font-medium text-purple-800"},Qr={key:1,class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-800"},Xr={key:2,class:"inline-flex items-center rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium text-green-800"},Zr=["title"],eo=["title"],to={class:"px-3 py-4"},so={class:"flex items-center gap-1"},ao={key:0,class:"flex items-center gap-1.5 rounded-lg border border-yellow-200 bg-gradient-to-r from-yellow-100 to-amber-100 px-2.5 py-1"},lo={class:"text-xs font-medium text-yellow-700"},ro={key:1,class:"flex items-center gap-1.5 rounded-lg border border-purple-200 bg-gradient-to-r from-purple-100 to-pink-100 px-2.5 py-1"},oo={key:2,class:"flex items-center gap-1.5 rounded-lg border border-orange-200 bg-gradient-to-r from-orange-100 to-red-100 px-2.5 py-1"},no={key:3,class:"flex items-center gap-1.5 rounded-lg border border-gray-700 bg-gray-100 bg-gradient-to-r from-gray-100 to-gray-100 px-2.5 py-1"},io={class:"text-xs font-medium text-gray-950"},uo={key:4,class:"flex items-center gap-1.5 rounded-lg border border-indigo-200 bg-gradient-to-r from-indigo-100 to-blue-100 px-2.5 py-1"},po={class:"text-xs font-semibold text-indigo-800"},mo={class:"text-xs font-medium text-indigo-700"},co={key:5,class:"flex items-center gap-1.5 rounded-lg border border-gray-200 bg-gradient-to-r from-gray-100 to-gray-200 px-2.5 py-1"},go={class:"whitespace-nowrap px-3 py-4"},xo={class:"flex flex-col gap-1"},yo={key:0,class:"inline-flex items-center rounded-full bg-yellow-100 px-3 py-1 text-xs font-semibold text-yellow-800"},fo={key:0},bo={key:1,class:"inline-flex items-center rounded-full bg-gray-100 px-3 py-1 text-xs font-semibold text-gray-700"},vo=["title"],ko={key:3,class:"text-xs text-gray-500 dark:text-gray-400"},wo={class:"whitespace-nowrap px-3 py-4"},ho={key:0,class:"flex items-center gap-2"},$o={class:"h-2 w-16 rounded-full bg-gray-200"},Co={class:"min-w-[20px] text-xs font-medium text-gray-700 dark:text-gray-200"},To={key:1,class:"text-sm text-gray-400"},Ao={class:"px-3 py-4 text-sm text-gray-600"},Io=["title"],Uo={key:1,class:"text-gray-400"},So={class:"whitespace-nowrap px-3 py-4 text-sm"},Vo={key:0,class:"space-y-1"},Mo={class:"flex items-center gap-2"},Lo={class:"text-sm font-medium text-gray-900 dark:text-gray-100"},Ko={class:"flex items-center gap-2"},jo={class:"text-xs text-gray-600 dark:text-gray-300"},Ro={key:0,class:"text-xs text-gray-500 dark:text-gray-400"},Oo={key:1,class:"text-xs text-gray-400"},Do={class:"whitespace-nowrap px-3 py-4"},Po={key:0,class:"space-y-2"},Go={class:"flex items-center gap-2"},zo={class:"h-2 w-24 rounded-full bg-gray-200"},Wo={class:"min-w-[32px] text-xs font-medium text-gray-700 dark:text-gray-200"},Eo={class:"text-xs text-gray-600 dark:text-gray-300"},Fo={key:0,class:"font-medium text-indigo-600"},qo={key:1,class:"text-sm text-gray-400"},Bo={key:2,class:"text-sm text-gray-400"},No={class:"whitespace-nowrap px-3 py-4 text-sm text-gray-600 dark:text-gray-300"},_o={class:"whitespace-nowrap px-3 py-4 text-sm font-medium"},Ho={class:"flex flex-wrap items-center gap-1"},Jo=["disabled","title","onClick"],Yo=["disabled","title","onClick"],Qo={class:"ml-1"},Xo=["onClick"],Zo=["onClick"],en={key:3,class:"space-y-3 md:hidden"},tn={class:"mb-3 flex items-start justify-between"},sn={class:"flex items-center gap-3"},an={class:"text-sm font-semibold text-gray-900"},ln={class:"mt-0.5 flex items-center gap-2"},rn={class:"text-xs text-gray-500 dark:text-gray-400"},on={class:"text-xs text-gray-500 dark:text-gray-400"},nn={class:"mb-3 grid grid-cols-2 gap-3"},dn={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},un={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},pn={class:"text-sm font-semibold text-gray-900 dark:text-gray-100"},mn={class:"mt-0.5 text-xs text-gray-500 dark:text-gray-400"},cn={class:"mb-3 space-y-2"},gn={key:0,class:"space-y-1.5 rounded-lg bg-gray-50 p-2 dark:bg-gray-700"},xn={class:"flex items-center justify-between text-xs"},yn={class:"font-medium text-gray-700 dark:text-gray-200"},fn={class:"h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-600"},bn={class:"flex items-center justify-between text-xs"},vn={class:"text-gray-500 dark:text-gray-400"},kn={key:0,class:"font-medium text-indigo-600"},wn={key:1,class:"text-gray-500"},hn={class:"flex items-center justify-between text-xs"},$n={class:"text-gray-700 dark:text-gray-200"},Cn={key:1,class:"flex items-center justify-between text-xs"},Tn={class:"text-gray-700 dark:text-gray-200"},An={class:"flex items-center justify-between text-xs"},In={class:"font-medium text-gray-700 dark:text-gray-200"},Un={class:"mt-3 flex gap-2 border-t border-gray-100 pt-3"},Sn=["disabled","onClick"],Vn=["onClick"],Mn=["onClick"],Ln={__name:"AccountsView",setup(B){const{showConfirmModal:J,confirmOptions:m,showConfirm:_,handleConfirm:h,handleCancel:b}=Xe(),f=w([]),K=w(!1),A=w("name"),S=w(""),y=w("asc"),D=w([]),O=w([]),z=w("all"),F=w("all"),Q=w(!1),W=w(!1),u=w(!1),j=w(new Map),X=w([{value:"name",label:"按名称排序",icon:"fa-font"},{value:"dailyTokens",label:"按今日Token排序",icon:"fa-coins"},{value:"dailyRequests",label:"按今日请求数排序",icon:"fa-chart-line"},{value:"totalTokens",label:"按总Token排序",icon:"fa-database"},{value:"lastUsed",label:"按最后使用排序",icon:"fa-clock"}]),ae=w([{value:"all",label:"所有平台",icon:"fa-globe"},{value:"claude",label:"Claude",icon:"fa-brain"},{value:"claude-console",label:"Claude Console",icon:"fa-terminal"},{value:"gemini",label:"Gemini",icon:"fa-google"},{value:"openai",label:"OpenAi",icon:"fa-openai"},{value:"bedrock",label:"Bedrock",icon:"fab fa-aws"}]),s=fe(()=>{const d=[{value:"all",label:"所有账户",icon:"fa-globe"},{value:"ungrouped",label:"未分组账户",icon:"fa-user"}];return O.value.forEach(a=>{d.push({value:a.id,label:`${a.name} (${a.platform==="claude"?"Claude":a.platform==="gemini"?"Gemini":"OpenAI"})`,icon:a.platform==="claude"?"fa-brain":a.platform==="gemini"?"fa-robot":"fa-openai"})}),d}),g=w(!1),L=w(!1),T=w(null),ce=fe(()=>{const d=f.value;return S.value?[...d].sort((V,r)=>{var te,se,Y,o,t,l,G,R,ue,xe,re,Ne;let E=V[S.value],q=r[S.value];return S.value==="dailyTokens"?(E=((se=(te=V.usage)==null?void 0:te.daily)==null?void 0:se.allTokens)||0,q=((o=(Y=r.usage)==null?void 0:Y.daily)==null?void 0:o.allTokens)||0):S.value==="dailyRequests"?(E=((l=(t=V.usage)==null?void 0:t.daily)==null?void 0:l.requests)||0,q=((R=(G=r.usage)==null?void 0:G.daily)==null?void 0:R.requests)||0):S.value==="totalTokens"&&(E=((xe=(ue=V.usage)==null?void 0:ue.total)==null?void 0:xe.allTokens)||0,q=((Ne=(re=r.usage)==null?void 0:re.total)==null?void 0:Ne.allTokens)||0),S.value==="lastUsed"&&(E=V.lastUsedAt?new Date(V.lastUsedAt).getTime():0,q=r.lastUsedAt?new Date(r.lastUsedAt).getTime():0),S.value==="status"&&(E=V.isActive?1:0,q=r.isActive?1:0),Eq?y.value==="asc"?1:-1:0}):d}),Z=async(d=!1)=>{K.value=!0;try{const a={};F.value!=="all"&&(a.platform=F.value),z.value!=="all"&&(a.groupId=z.value);const V=[];if(F.value==="all")V.push(M.get("/admin/claude-accounts",{params:a}),M.get("/admin/claude-console-accounts",{params:a}),M.get("/admin/bedrock-accounts",{params:a}),M.get("/admin/gemini-accounts",{params:a}),M.get("/admin/openai-accounts",{params:a}));else switch(F.value){case"claude":V.push(M.get("/admin/claude-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"claude-console":V.push(Promise.resolve({success:!0,data:[]}),M.get("/admin/claude-console-accounts",{params:a}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}));break;case"bedrock":V.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),M.get("/admin/bedrock-accounts",{params:a}),Promise.resolve({success:!0,data:[]}));break;case"gemini":V.push(Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),Promise.resolve({success:!0,data:[]}),M.get("/admin/gemini-accounts",{params:a}));break}await Promise.all([Ae(d),Ie(d)]),await $e(d);const[r,E,q,te,se]=await Promise.all(V),Y=[];if(r.success){const o=(r.data||[]).map(t=>{const l=D.value.filter(R=>R.claudeAccountId===t.id).length,G=j.value.get(t.id)||null;return{...t,platform:"claude",boundApiKeysCount:l,groupInfo:G}});Y.push(...o)}if(E.success){const o=(E.data||[]).map(t=>{const l=j.value.get(t.id)||null;return{...t,platform:"claude-console",boundApiKeysCount:0,groupInfo:l}});Y.push(...o)}if(q.success){const o=(q.data||[]).map(t=>{const l=j.value.get(t.id)||null;return{...t,platform:"bedrock",boundApiKeysCount:0,groupInfo:l}});Y.push(...o)}if(te.success){const o=(te.data||[]).map(t=>{const l=D.value.filter(R=>R.geminiAccountId===t.id).length,G=j.value.get(t.id)||null;return{...t,platform:"gemini",boundApiKeysCount:l,groupInfo:G}});Y.push(...o)}if(se.success){const o=(se.data||[]).map(t=>{const l=D.value.filter(R=>R.openaiAccountId===t.id).length,G=j.value.get(t.id)||null;return{...t,platform:"openai",boundApiKeysCount:l,groupInfo:G}});Y.push(...o)}f.value=Y}catch{I("加载账户失败","error")}finally{K.value=!1}},ne=d=>{d&&(S.value===d?y.value=y.value==="asc"?"desc":"asc":(S.value=d,y.value="asc"))},ie=d=>{if(d==null)return"0";const a=Number(d);return a>=1e6?Math.floor(a/1e6).toLocaleString()+"M":a.toLocaleString()},he=d=>{if(!d)return"从未使用";const a=new Date(d),r=new Date-a;return r<6e4?"刚刚":r<36e5?`${Math.floor(r/6e4)} 分钟前`:r<864e5?`${Math.floor(r/36e5)} 小时前`:r<6048e5?`${Math.floor(r/864e5)} 天前`:a.toLocaleDateString("zh-CN")},Ae=async(d=!1)=>{if(!(!d&&Q.value))try{const a=await M.get("/admin/api-keys");a.success&&(D.value=a.data||[],Q.value=!0)}catch(a){console.error("Failed to load API keys:",a)}},Ie=async(d=!1)=>{if(!(!d&&W.value))try{const a=await M.get("/admin/account-groups");a.success&&(O.value=a.data||[],W.value=!0)}catch(a){console.error("Failed to load account groups:",a)}},$e=async(d=!1)=>{if(!(!d&&u.value))try{j.value.clear();for(const a of O.value)try{const V=await M.get(`/admin/account-groups/${a.id}/members`);V.success&&(V.data||[]).forEach(E=>{j.value.set(E.id,a)})}catch(V){console.error(`Failed to load members for group ${a.id}:`,V)}u.value=!0}catch(a){console.error("Failed to load group members:",a)}},Ue=()=>{Q.value=!1,W.value=!1,u.value=!1,j.value.clear()},Se=()=>{Z()},pe=()=>{Z()},de=d=>{if(!d||!d.host||!d.port)return null;const a=d.type==="socks5"?"S5":d.type.toUpperCase();let V=d.host;V.length>15&&(V=V.substring(0,12)+"...");let r=`${a}://${V}:${d.port}`;return d.username&&(r=`${a}://***@${V}:${d.port}`),r},ge=(d,a)=>{if(!d||!a)return"--";const V=new Date(d),r=new Date(a),E=V.getHours().toString().padStart(2,"0"),q=V.getMinutes().toString().padStart(2,"0"),te=r.getHours().toString().padStart(2,"0"),se=r.getMinutes().toString().padStart(2,"0");return`${E}:${q} - ${te}:${se}`},c=d=>{if(!d||d<=0)return"已结束";const a=Math.floor(d/60),V=d%60;return a>0?`${a}小时${V}分钟`:`${V}分钟`},p=()=>{g.value=!0},$=d=>{T.value=d,L.value=!0},le=async d=>{const a=D.value.filter(r=>r.claudeAccountId===d.id||r.geminiAccountId===d.id||r.openaiAccountId===d.id).length;if(a>0){I(`无法删除此账号,有 ${a} 个API Key绑定到此账号,请先解绑所有API Key`,"error");return}if(await _("删除账户",`确定要删除账户 "${d.name}" 吗? - -此操作不可恢复。`,"删除","取消"))try{let r;d.platform==="claude"?r=`/admin/claude-accounts/${d.id}`:d.platform==="claude-console"?r=`/admin/claude-console-accounts/${d.id}`:d.platform==="bedrock"?r=`/admin/bedrock-accounts/${d.id}`:d.platform==="openai"?r=`/admin/openai-accounts/${d.id}`:r=`/admin/gemini-accounts/${d.id}`;const E=await M.delete(r);E.success?(I("账户已删除","success"),u.value=!1,Z()):I(E.message||"删除失败","error")}catch{I("删除失败","error")}},Ve=async d=>{if(d.isResetting)return;let a=!1;if(window.showConfirm?a=await window.showConfirm("重置账户状态","确定要重置此账户的所有异常状态吗?这将清除限流状态、401错误计数等所有异常标记。","确定重置","取消"):a=confirm("确定要重置此账户的所有异常状态吗?"),!!a)try{d.isResetting=!0;const V=await M.post(`/admin/claude-accounts/${d.id}/reset-status`);V.success?(I("账户状态已重置","success"),Z()):I(V.message||"状态重置失败","error")}catch{I("状态重置失败","error")}finally{d.isResetting=!1}},Ce=async d=>{if(!d.isTogglingSchedulable)try{d.isTogglingSchedulable=!0;let a;if(d.platform==="claude")a=`/admin/claude-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="claude-console")a=`/admin/claude-console-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="bedrock")a=`/admin/bedrock-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="gemini")a=`/admin/gemini-accounts/${d.id}/toggle-schedulable`;else if(d.platform==="openai")a=`/admin/openai-accounts/${d.id}/toggle-schedulable`;else{I("该账户类型暂不支持调度控制","warning");return}const V=await M.put(a);V.success?(d.schedulable=V.schedulable,I(V.schedulable?"已启用调度":"已禁用调度","success")):I(V.message||"操作失败","error")}catch{I("切换调度状态失败","error")}finally{d.isTogglingSchedulable=!1}},oe=()=>{g.value=!1,I("账户创建成功","success"),Ue(),Z()},Me=()=>{L.value=!1,I("账户更新成功","success"),u.value=!1,Z()},Le=d=>!d.lastRefreshAt||d.lastRefreshAt===""?"Setup":"OAuth",Ke=()=>"OAuth",je=()=>"OAuth",Re=d=>{if(d.subscriptionInfo)try{const a=typeof d.subscriptionInfo=="string"?JSON.parse(d.subscriptionInfo):d.subscriptionInfo;return console.log("Account subscription info:",{accountName:d.name,subscriptionInfo:a,hasClaudeMax:a.hasClaudeMax,hasClaudePro:a.hasClaudePro}),a.hasClaudeMax===!0?"Claude Max":a.hasClaudePro===!0?"Claude Pro":"Claude Free"}catch(a){return console.error("Failed to parse subscription info:",a),"Claude"}return console.log("No subscription info for account:",d.name),"Claude"},Oe=d=>d.status==="blocked"?"已封锁":d.status==="unauthorized"?"异常":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"限流中":d.status==="error"||!d.isActive?"错误":d.schedulable===!1?"已暂停":"正常",De=d=>d.status==="blocked"||d.status==="unauthorized"?"bg-red-100 text-red-800":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"bg-orange-100 text-orange-800":d.status==="error"||!d.isActive?"bg-red-100 text-red-800":d.schedulable===!1?"bg-gray-100 text-gray-800":"bg-green-100 text-green-800",Pe=d=>d.status==="blocked"||d.status==="unauthorized"?"bg-red-500":d.isRateLimited||d.status==="rate_limited"||d.rateLimitStatus&&d.rateLimitStatus.isRateLimited||d.rateLimitStatus==="limited"?"bg-orange-500":d.status==="error"||!d.isActive?"bg-red-500":d.schedulable===!1?"bg-gray-500":"bg-green-500",Ge=d=>he(d);return H(A,d=>{const a={name:"name",dailyTokens:"dailyTokens",dailyRequests:"dailyRequests",totalTokens:"totalTokens",lastUsed:"lastUsed"};a[d]&&ne(a[d])}),Ye(()=>{Z(!0)}),(d,a)=>{const V=tt;return n(),i("div",Tr,[e("div",Ar,[e("div",Ir,[a[19]||(a[19]=e("div",null,[e("h3",{class:"mb-1 text-lg font-bold text-gray-900 dark:text-gray-100 sm:mb-2 sm:text-xl"}," 账户管理 "),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"}," 管理您的 Claude 和 Gemini 账户及代理配置 ")],-1)),e("div",Ur,[e("div",Sr,[e("div",Vr,[a[13]||(a[13]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-indigo-500 to-blue-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),me(Fe,{modelValue:A.value,"onUpdate:modelValue":a[0]||(a[0]=r=>A.value=r),icon:"fa-sort-amount-down","icon-color":"text-indigo-500",options:X.value,placeholder:"选择排序",onChange:a[1]||(a[1]=r=>ne())},null,8,["modelValue","options"])]),e("div",Mr,[a[14]||(a[14]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-blue-500 to-indigo-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),me(Fe,{modelValue:F.value,"onUpdate:modelValue":a[2]||(a[2]=r=>F.value=r),icon:"fa-server","icon-color":"text-blue-500",options:ae.value,placeholder:"选择平台",onChange:Se},null,8,["modelValue","options"])]),e("div",Lr,[a[15]||(a[15]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-purple-500 to-pink-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),me(Fe,{modelValue:z.value,"onUpdate:modelValue":a[3]||(a[3]=r=>z.value=r),icon:"fa-layer-group","icon-color":"text-purple-500",options:s.value,placeholder:"选择分组",onChange:pe},null,8,["modelValue","options"])]),e("div",Kr,[me(V,{content:"刷新数据 (Ctrl/⌘+点击强制刷新所有缓存)",effect:"dark",placement:"bottom"},{default:rt(()=>[e("button",{class:"group relative flex items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm transition-all duration-200 hover:border-gray-300 hover:shadow-md disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:border-gray-500 sm:w-auto",disabled:K.value,onClick:[a[4]||(a[4]=ze(r=>Z(!0),["ctrl","exact"])),a[5]||(a[5]=ze(r=>Z(!1),["exact"])),a[6]||(a[6]=ze(r=>Z(!0),["meta","exact"]))]},[a[16]||(a[16]=e("div",{class:"absolute -inset-0.5 rounded-lg bg-gradient-to-r from-green-500 to-teal-500 opacity-0 blur transition duration-300 group-hover:opacity-20"},null,-1)),e("i",{class:P(["fas relative text-green-500",K.value?"fa-spinner fa-spin":"fa-sync-alt"])},null,2),a[17]||(a[17]=e("span",{class:"relative"},"刷新",-1))],8,jr)]),_:1})])]),e("button",{class:"flex w-full items-center justify-center gap-2 rounded-lg bg-gradient-to-r from-green-500 to-green-600 px-5 py-2.5 text-sm font-medium text-white shadow-md transition-all duration-200 hover:from-green-600 hover:to-green-700 hover:shadow-lg sm:w-auto",onClick:ze(p,["stop"])},a[18]||(a[18]=[e("i",{class:"fas fa-plus"},null,-1),e("span",null,"添加账户",-1)]))])]),K.value?(n(),i("div",Rr,a[20]||(a[20]=[e("div",{class:"loading-spinner mx-auto mb-4"},null,-1),e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载账户...",-1)]))):ce.value.length===0?(n(),i("div",Or,a[21]||(a[21]=[e("div",{class:"mx-auto mb-4 flex h-16 w-16 items-center justify-center rounded-full bg-gray-100 dark:bg-gray-700"},[e("i",{class:"fas fa-user-circle text-xl text-gray-400"})],-1),e("p",{class:"text-lg text-gray-500 dark:text-gray-400"},"暂无账户",-1),e("p",{class:"mt-2 text-sm text-gray-400 dark:text-gray-500"},"点击上方按钮添加您的第一个账户",-1)]))):(n(),i("div",Dr,[e("table",Pr,[e("thead",Gr,[e("tr",null,[e("th",{class:"w-[22%] min-w-[180px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[7]||(a[7]=r=>ne("name"))},[a[22]||(a[22]=C(" 名称 ",-1)),S.value==="name"?(n(),i("i",{key:0,class:P(["fas",y.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",zr))]),e("th",{class:"w-[15%] min-w-[120px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[8]||(a[8]=r=>ne("platform"))},[a[23]||(a[23]=C(" 平台/类型 ",-1)),S.value==="platform"?(n(),i("i",{key:0,class:P(["fas",y.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Wr))]),e("th",{class:"w-[12%] min-w-[100px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[9]||(a[9]=r=>ne("status"))},[a[24]||(a[24]=C(" 状态 ",-1)),S.value==="status"?(n(),i("i",{key:0,class:P(["fas",y.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Er))]),e("th",{class:"w-[8%] min-w-[80px] cursor-pointer px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-600",onClick:a[10]||(a[10]=r=>ne("priority"))},[a[25]||(a[25]=C(" 优先级 ",-1)),S.value==="priority"?(n(),i("i",{key:0,class:P(["fas",y.value==="asc"?"fa-sort-up":"fa-sort-down","ml-1"])},null,2)):(n(),i("i",Fr))]),a[26]||(a[26]=e("th",{class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 代理 ",-1)),a[27]||(a[27]=e("th",{class:"w-[10%] min-w-[90px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 今日使用 ",-1)),a[28]||(a[28]=e("th",{class:"w-[10%] min-w-[100px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 会话窗口 ",-1)),a[29]||(a[29]=e("th",{class:"w-[8%] min-w-[80px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 最后使用 ",-1)),a[30]||(a[30]=e("th",{class:"w-[15%] min-w-[180px] px-3 py-4 text-left text-xs font-bold uppercase tracking-wider text-gray-700 dark:text-gray-300"}," 操作 ",-1))])]),e("tbody",qr,[(n(!0),i(be,null,ve(ce.value,r=>{var E;return n(),i("tr",{key:r.id,class:"table-row"},[e("td",Br,[e("div",Nr,[a[35]||(a[35]=e("div",{class:"mr-2 flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-user-circle text-xs text-white"})],-1)),e("div",_r,[e("div",Hr,[e("div",{class:"truncate text-sm font-semibold text-gray-900 dark:text-gray-100",title:r.name},v(r.name),9,Jr),r.accountType==="dedicated"?(n(),i("span",Yr,a[31]||(a[31]=[e("i",{class:"fas fa-lock mr-1"},null,-1),C("专属 ",-1)]))):r.accountType==="group"?(n(),i("span",Qr,a[32]||(a[32]=[e("i",{class:"fas fa-layer-group mr-1"},null,-1),C("分组调度 ",-1)]))):(n(),i("span",Xr,a[33]||(a[33]=[e("i",{class:"fas fa-share-alt mr-1"},null,-1),C("共享 ",-1)]))),r.groupInfo?(n(),i("span",{key:3,class:"ml-1 inline-flex items-center rounded-full bg-gray-100 px-2 py-0.5 text-xs font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-400",title:`所属分组: ${r.groupInfo.name}`},[a[34]||(a[34]=e("i",{class:"fas fa-folder mr-1"},null,-1)),C(v(r.groupInfo.name),1)],8,Zr)):k("",!0)]),e("div",{class:"truncate text-xs text-gray-500 dark:text-gray-400",title:r.id},v(r.id),9,eo)])])]),e("td",to,[e("div",so,[r.platform==="gemini"?(n(),i("div",ao,[a[36]||(a[36]=e("i",{class:"fas fa-robot text-xs text-yellow-700"},null,-1)),a[37]||(a[37]=e("span",{class:"text-xs font-semibold text-yellow-800"},"Gemini",-1)),a[38]||(a[38]=e("span",{class:"mx-1 h-4 w-px bg-yellow-300"},null,-1)),e("span",lo,v(Ke()),1)])):r.platform==="claude-console"?(n(),i("div",ro,a[39]||(a[39]=[e("i",{class:"fas fa-terminal text-xs text-purple-700"},null,-1),e("span",{class:"text-xs font-semibold text-purple-800"},"Console",-1),e("span",{class:"mx-1 h-4 w-px bg-purple-300"},null,-1),e("span",{class:"text-xs font-medium text-purple-700"},"API Key",-1)]))):r.platform==="bedrock"?(n(),i("div",oo,a[40]||(a[40]=[e("i",{class:"fab fa-aws text-xs text-orange-700"},null,-1),e("span",{class:"text-xs font-semibold text-orange-800"},"Bedrock",-1),e("span",{class:"mx-1 h-4 w-px bg-orange-300"},null,-1),e("span",{class:"text-xs font-medium text-orange-700"},"AWS",-1)]))):r.platform==="openai"?(n(),i("div",no,[a[41]||(a[41]=e("div",{class:"fa-openai"},null,-1)),a[42]||(a[42]=e("span",{class:"text-xs font-semibold text-gray-950"},"OpenAi",-1)),a[43]||(a[43]=e("span",{class:"mx-1 h-4 w-px bg-gray-400"},null,-1)),e("span",io,v(je()),1)])):r.platform==="claude"||r.platform==="claude-oauth"?(n(),i("div",uo,[a[44]||(a[44]=e("i",{class:"fas fa-brain text-xs text-indigo-700"},null,-1)),e("span",po,v(Re(r)),1),a[45]||(a[45]=e("span",{class:"mx-1 h-4 w-px bg-indigo-300"},null,-1)),e("span",mo,v(Le(r)),1)])):(n(),i("div",co,a[46]||(a[46]=[e("i",{class:"fas fa-question text-xs text-gray-700"},null,-1),e("span",{class:"text-xs font-semibold text-gray-800"},"未知",-1)])))])]),e("td",go,[e("div",xo,[e("span",{class:P(["inline-flex items-center rounded-full px-3 py-1 text-xs font-semibold",r.status==="blocked"?"bg-orange-100 text-orange-800":r.status==="unauthorized"?"bg-red-100 text-red-800":r.isActive?"bg-green-100 text-green-800":"bg-red-100 text-red-800"])},[e("div",{class:P(["mr-2 h-2 w-2 rounded-full",r.status==="blocked"?"bg-orange-500":r.status==="unauthorized"?"bg-red-500":r.isActive?"bg-green-500":"bg-red-500"])},null,2),C(" "+v(r.status==="blocked"?"已封锁":r.status==="unauthorized"?"异常":r.isActive?"正常":"异常"),1)],2),r.rateLimitStatus&&r.rateLimitStatus.isRateLimited||r.rateLimitStatus==="limited"?(n(),i("span",yo,[a[47]||(a[47]=e("i",{class:"fas fa-exclamation-triangle mr-1"},null,-1)),a[48]||(a[48]=C(" 限流中 ",-1)),r.rateLimitStatus&&typeof r.rateLimitStatus=="object"&&r.rateLimitStatus.minutesRemaining>0?(n(),i("span",fo,"("+v(r.rateLimitStatus.minutesRemaining)+"分钟)",1)):k("",!0)])):k("",!0),r.schedulable===!1?(n(),i("span",bo,a[49]||(a[49]=[e("i",{class:"fas fa-pause-circle mr-1"},null,-1),C(" 不可调度 ",-1)]))):k("",!0),r.status==="blocked"&&r.errorMessage?(n(),i("span",{key:2,class:"mt-1 max-w-xs truncate text-xs text-gray-500 dark:text-gray-400",title:r.errorMessage},v(r.errorMessage),9,vo)):k("",!0),r.accountType==="dedicated"?(n(),i("span",ko," 绑定: "+v(r.boundApiKeysCount||0)+" 个API Key ",1)):k("",!0)])]),e("td",wo,[r.platform==="claude"||r.platform==="claude-console"||r.platform==="bedrock"||r.platform==="gemini"||r.platform==="openai"?(n(),i("div",ho,[e("div",$o,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-green-500 to-blue-600 transition-all duration-300",style:Ee({width:101-(r.priority||50)+"%"})},null,4)]),e("span",Co,v(r.priority||50),1)])):(n(),i("div",To,a[50]||(a[50]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",Ao,[de(r.proxy)?(n(),i("div",{key:0,class:"break-all rounded bg-blue-50 px-2 py-1 font-mono text-xs",title:de(r.proxy)},v(de(r.proxy)),9,Io)):(n(),i("div",Uo,"无代理"))]),e("td",So,[r.usage&&r.usage.daily?(n(),i("div",Vo,[e("div",Mo,[a[51]||(a[51]=e("div",{class:"h-2 w-2 rounded-full bg-green-500"},null,-1)),e("span",Lo,v(r.usage.daily.requests||0)+" 次",1)]),e("div",Ko,[a[52]||(a[52]=e("div",{class:"h-2 w-2 rounded-full bg-blue-500"},null,-1)),e("span",jo,v(ie(r.usage.daily.allTokens||0))+" tokens",1)]),r.usage.averages&&r.usage.averages.rpm>0?(n(),i("div",Ro," 平均 "+v(r.usage.averages.rpm.toFixed(2))+" RPM ",1)):k("",!0)])):(n(),i("div",Oo,"暂无数据"))]),e("td",Do,[r.platform==="claude"&&r.sessionWindow&&r.sessionWindow.hasActiveWindow?(n(),i("div",Po,[e("div",Go,[e("div",zo,[e("div",{class:"h-2 rounded-full bg-gradient-to-r from-blue-500 to-indigo-600 transition-all duration-300",style:Ee({width:r.sessionWindow.progress+"%"})},null,4)]),e("span",Wo,v(r.sessionWindow.progress)+"% ",1)]),e("div",Eo,[e("div",null,v(ge(r.sessionWindow.windowStart,r.sessionWindow.windowEnd)),1),r.sessionWindow.remainingTime>0?(n(),i("div",Fo," 剩余 "+v(c(r.sessionWindow.remainingTime)),1)):k("",!0)])])):r.platform==="claude"?(n(),i("div",qo,a[53]||(a[53]=[e("i",{class:"fas fa-minus"},null,-1)]))):(n(),i("div",Bo,a[54]||(a[54]=[e("span",{class:"text-xs"},"N/A",-1)])))]),e("td",No,v(he(r.lastUsedAt)),1),e("td",_o,[e("div",Ho,[r.platform==="claude"&&(r.status==="unauthorized"||r.status!=="active"||(E=r.rateLimitStatus)!=null&&E.isRateLimited||r.rateLimitStatus==="limited"||!r.isActive)?(n(),i("button",{key:0,class:P(["rounded px-2.5 py-1 text-xs font-medium transition-colors",r.isResetting?"cursor-not-allowed bg-gray-100 text-gray-400":"bg-yellow-100 text-yellow-700 hover:bg-yellow-200"]),disabled:r.isResetting,title:r.isResetting?"重置中...":"重置所有异常状态",onClick:q=>Ve(r)},[e("i",{class:P(["fas fa-redo",r.isResetting?"animate-spin":""])},null,2),a[55]||(a[55]=e("span",{class:"ml-1"},"重置状态",-1))],10,Jo)):k("",!0),e("button",{class:P(["rounded px-2.5 py-1 text-xs font-medium transition-colors",r.isTogglingSchedulable?"cursor-not-allowed bg-gray-100 text-gray-400":r.schedulable?"bg-green-100 text-green-700 hover:bg-green-200":"bg-gray-100 text-gray-700 hover:bg-gray-200"]),disabled:r.isTogglingSchedulable,title:r.schedulable?"点击禁用调度":"点击启用调度",onClick:q=>Ce(r)},[e("i",{class:P(["fas",r.schedulable?"fa-toggle-on":"fa-toggle-off"])},null,2),e("span",Qo,v(r.schedulable?"调度":"停用"),1)],10,Yo),e("button",{class:"rounded bg-blue-100 px-2.5 py-1 text-xs font-medium text-blue-700 transition-colors hover:bg-blue-200",title:"编辑账户",onClick:q=>$(r)},a[56]||(a[56]=[e("i",{class:"fas fa-edit"},null,-1),e("span",{class:"ml-1"},"编辑",-1)]),8,Xo),e("button",{class:"rounded bg-red-100 px-2.5 py-1 text-xs font-medium text-red-700 transition-colors hover:bg-red-200",title:"删除账户",onClick:q=>le(r)},a[57]||(a[57]=[e("i",{class:"fas fa-trash"},null,-1),e("span",{class:"ml-1"},"删除",-1)]),8,Zo)])])])}),128))])])])),!K.value&&ce.value.length>0?(n(),i("div",en,[(n(!0),i(be,null,ve(ce.value,r=>{var E,q,te,se,Y,o,t,l;return n(),i("div",{key:r.id,class:"card p-4 transition-shadow hover:shadow-lg"},[e("div",tn,[e("div",sn,[e("div",{class:P(["flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-lg",r.platform==="claude"?"bg-gradient-to-br from-purple-500 to-purple-600":r.platform==="bedrock"?"bg-gradient-to-br from-orange-500 to-red-600":"bg-gradient-to-br from-blue-500 to-blue-600"])},[e("i",{class:P(["text-sm text-white",r.platform==="claude"?"fas fa-brain":r.platform==="bedrock"?"fab fa-aws":"fas fa-robot"])},null,2)],2),e("div",null,[e("h4",an,v(r.name||r.email),1),e("div",ln,[e("span",rn,v(r.platform),1),a[58]||(a[58]=e("span",{class:"text-xs text-gray-400"},"|",-1)),e("span",on,v(r.type),1)])])]),e("span",{class:P(["inline-flex items-center rounded-full px-2 py-1 text-xs font-semibold",De(r)])},[e("div",{class:P(["mr-1.5 h-1.5 w-1.5 rounded-full",Pe(r)])},null,2),C(" "+v(Oe(r)),1)],2)]),e("div",nn,[e("div",null,[a[59]||(a[59]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"今日使用",-1)),e("p",dn,v(ie(((q=(E=r.usage)==null?void 0:E.daily)==null?void 0:q.requests)||0))+" 次 ",1),e("p",un,v(ie(((se=(te=r.usage)==null?void 0:te.daily)==null?void 0:se.allTokens)||0))+" tokens ",1)]),e("div",null,[a[60]||(a[60]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"总使用量",-1)),e("p",pn,v(ie(((o=(Y=r.usage)==null?void 0:Y.total)==null?void 0:o.requests)||0))+" 次 ",1),e("p",mn,v(ie(((l=(t=r.usage)==null?void 0:t.total)==null?void 0:l.allTokens)||0))+" tokens ",1)])]),e("div",cn,[r.platform==="claude"&&r.sessionWindow&&r.sessionWindow.hasActiveWindow?(n(),i("div",gn,[e("div",xn,[a[61]||(a[61]=e("span",{class:"font-medium text-gray-600 dark:text-gray-300"},"会话窗口",-1)),e("span",yn,v(r.sessionWindow.progress)+"% ",1)]),e("div",fn,[e("div",{class:"h-full bg-gradient-to-r from-blue-500 to-indigo-600 transition-all duration-300",style:Ee({width:r.sessionWindow.progress+"%"})},null,4)]),e("div",bn,[e("span",vn,v(ge(r.sessionWindow.windowStart,r.sessionWindow.windowEnd)),1),r.sessionWindow.remainingTime>0?(n(),i("span",kn," 剩余 "+v(c(r.sessionWindow.remainingTime)),1)):(n(),i("span",wn," 已结束 "))])])):k("",!0),e("div",hn,[a[62]||(a[62]=e("span",{class:"text-gray-500 dark:text-gray-400"},"最后使用",-1)),e("span",$n,v(r.lastUsedAt?Ge(r.lastUsedAt):"从未使用"),1)]),r.proxyConfig&&r.proxyConfig.type!=="none"?(n(),i("div",Cn,[a[63]||(a[63]=e("span",{class:"text-gray-500 dark:text-gray-400"},"代理",-1)),e("span",Tn,v(r.proxyConfig.type.toUpperCase()),1)])):k("",!0),e("div",An,[a[64]||(a[64]=e("span",{class:"text-gray-500 dark:text-gray-400"},"优先级",-1)),e("span",In,v(r.priority||50),1)])]),e("div",Un,[e("button",{class:P(["flex flex-1 items-center justify-center gap-1 rounded-lg px-3 py-2 text-xs transition-colors",r.schedulable?"bg-gray-50 text-gray-600 hover:bg-gray-100":"bg-green-50 text-green-600 hover:bg-green-100"]),disabled:r.isTogglingSchedulable,onClick:G=>Ce(r)},[e("i",{class:P(["fas",r.schedulable?"fa-pause":"fa-play"])},null,2),C(" "+v(r.schedulable?"暂停":"启用"),1)],10,Sn),e("button",{class:"flex-1 rounded-lg bg-gray-50 px-3 py-2 text-xs text-gray-600 transition-colors hover:bg-gray-100",onClick:G=>$(r)},a[65]||(a[65]=[e("i",{class:"fas fa-edit mr-1"},null,-1),C(" 编辑 ",-1)]),8,Vn),e("button",{class:"rounded-lg bg-red-50 px-3 py-2 text-xs text-red-600 transition-colors hover:bg-red-100",onClick:G=>le(r)},a[66]||(a[66]=[e("i",{class:"fas fa-trash"},null,-1)]),8,Mn)])])}),128))])):k("",!0)]),g.value?(n(),ke(Je,{key:0,onClose:a[11]||(a[11]=r=>g.value=!1),onSuccess:oe})):k("",!0),L.value?(n(),ke(Je,{key:1,account:T.value,onClose:a[12]||(a[12]=r=>L.value=!1),onSuccess:Me},null,8,["account"])):k("",!0),me(et,{"cancel-text":ee(m).cancelText,"confirm-text":ee(m).confirmText,message:ee(m).message,show:ee(J),title:ee(m).title,onCancel:ee(b),onConfirm:ee(h)},null,8,["cancel-text","confirm-text","message","show","title","onCancel","onConfirm"])])}}},Gn=Qe(Ln,[["__scopeId","data-v-4463372c"]]);export{Gn as default}; diff --git a/assets/ApiKeysView-DuWy3uje.js b/web/admin-spa/dist/assets/ApiKeysView-AJLEWrkM.js similarity index 99% rename from assets/ApiKeysView-DuWy3uje.js rename to web/admin-spa/dist/assets/ApiKeysView-AJLEWrkM.js index 46945a0c..eed10df4 100644 --- a/assets/ApiKeysView-DuWy3uje.js +++ b/web/admin-spa/dist/assets/ApiKeysView-AJLEWrkM.js @@ -1,4 +1,4 @@ -import{E as Kt}from"./element-plus-CMedNaYf.js";import{aR as it,r as D,c as N,q as _e,V as Dt,o as he,x as d,y as r,z as e,I as re,C as z,P as m,R as ne,J as Lt,L as v,B as De,K as M,aq as ee,Q as Y,ac as J,T as _t,a5 as be,D as Tt,_ as Te,Y as me,an as ae,O as K,aa as Le,aX as $e,al as ye}from"./vue-vendor-DfnFpxGJ.js";import{s as q}from"./toast-BvwA7Mwb.js";import{b as W,_ as fe}from"./index-BdtiivzQ.js";import{_ as Ue}from"./WindowCountdown-RaAYa1A3.js";import{C as nt}from"./CustomDropdown-D7ci0ZD4.js";import"./vendor-BDiMbLwQ.js";const Ge=it("clients",{state:()=>({supportedClients:[],loading:!1,error:null}),actions:{async loadSupportedClients(){if(this.supportedClients.length>0)return this.supportedClients;this.loading=!0,this.error=null;try{const A=await W.get("/admin/supported-clients");return A.success?this.supportedClients=A.data||[]:(this.error=A.message||"加载支持的客户端失败",console.error("Failed to load supported clients:",this.error)),this.supportedClients}catch(A){return this.error=A.message||"加载支持的客户端失败",console.error("Error loading supported clients:",A),[]}finally{this.loading=!1}}}}),Oe=it("apiKeys",()=>{const A=D([]),Q=D(!1),g=D(null),P=D("all"),G=D(""),L=D("asc"),_=async()=>{Q.value=!0,g.value=null;try{const R=await W.get("/admin/api-keys");if(R.success)A.value=R.data||[];else throw new Error(R.message||"获取API Keys失败")}catch(R){throw g.value=R.message,R}finally{Q.value=!1}};return{apiKeys:A,loading:Q,error:g,statsTimeRange:P,sortBy:G,sortOrder:L,fetchApiKeys:_,createApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.post("/admin/api-keys",R);if(C.success)return await _(),C.data;throw new Error(C.message||"创建API Key失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},updateApiKey:async(R,C)=>{Q.value=!0,g.value=null;try{const f=await W.put(`/admin/api-keys/${R}`,C);if(f.success)return await _(),f;throw new Error(f.message||"更新API Key失败")}catch(f){throw g.value=f.message,f}finally{Q.value=!1}},toggleApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.put(`/admin/api-keys/${R}/toggle`);if(C.success)return await _(),C;throw new Error(C.message||"切换状态失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},renewApiKey:async(R,C)=>{Q.value=!0,g.value=null;try{const f=await W.put(`/admin/api-keys/${R}`,C);if(f.success)return await _(),f;throw new Error(f.message||"续期失败")}catch(f){throw g.value=f.message,f}finally{Q.value=!1}},deleteApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.delete(`/admin/api-keys/${R}`);if(C.success)return await _(),C;throw new Error(C.message||"删除失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},fetchApiKeyStats:async(R,C="all")=>{try{const f=await W.get(`/admin/api-keys/${R}/stats`,{params:{timeRange:C}});if(f.success)return f.stats;throw new Error(f.message||"获取统计失败")}catch(f){return console.error("获取API Key统计失败:",f),null}},fetchTags:async()=>{try{const R=await W.get("/admin/api-keys/tags");if(R.success)return R.data||[];throw new Error(R.message||"获取标签失败")}catch(R){return console.error("获取标签失败:",R),[]}},sortApiKeys:R=>{G.value===R?L.value=L.value==="asc"?"desc":"asc":(G.value=R,L.value="asc")},reset:()=>{A.value=[],Q.value=!1,g.value=null,P.value="all",G.value="",L.value="asc"}}}),Mt={class:"flex-shrink-0 border-b border-gray-200 p-3 dark:border-gray-600"},St={class:"relative"},Rt={class:"custom-scrollbar flex-1 overflow-y-auto"},Vt={class:"text-gray-700 dark:text-gray-300"},Pt={key:0},Et=["onClick"],jt={class:"flex items-center justify-between"},Ut={class:"text-gray-700 dark:text-gray-300"},Gt={class:"text-xs text-gray-500 dark:text-gray-400"},Ot={key:1},qt={class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"},Wt=["onClick"],Bt={class:"flex items-center justify-between"},Ft={class:"text-gray-700 dark:text-gray-300"},zt={class:"text-xs text-gray-400 dark:text-gray-500"},Ht={key:2},Nt=["onClick"],Yt={class:"flex items-center justify-between"},Qt={class:"text-gray-700 dark:text-gray-300"},Jt={class:"text-xs text-gray-400 dark:text-gray-500"},Xt={key:3,class:"px-4 py-8 text-center text-gray-500 dark:text-gray-400"},Zt={__name:"AccountSelector",props:{modelValue:{type:String,default:""},platform:{type:String,required:!0,validator:A=>["claude","gemini"].includes(A)},accounts:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},placeholder:{type:String,default:"请选择账号"},defaultOptionText:{type:String,default:"使用共享账号池"}},emits:["update:modelValue"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=D(""),_=D(null),U=D(null),T=D({}),B=D(null),S=D(""),$=N(()=>{if(!g.modelValue)return g.defaultOptionText;if(g.modelValue.startsWith("group:")){const I=g.modelValue.substring(6),w=g.groups.find(h=>h.id===I);return w?`${w.name} (${w.memberCount||0} 个成员)`:""}if(g.modelValue.startsWith("console:")){const I=g.modelValue.substring(8),w=g.accounts.find(h=>h.id===I&&h.platform==="claude-console");return w?`${w.name} (${E(w)})`:""}const p=g.accounts.find(I=>I.id===g.modelValue);return p?`${p.name} (${E(p)})`:""}),E=p=>{if(!p)return"未知";if(p.isActive===!1)switch(p.status){case"unauthorized":return"未授权";case"error":return"Token错误";case"created":return"待验证";case"rate_limited":return"限流中";default:return"异常"}return"正常"},a=N(()=>[...g.accounts].sort((p,I)=>{const w=new Date(p.createdAt||0);return new Date(I.createdAt||0)-w})),l=N(()=>{if(!L.value)return g.groups;const p=L.value.toLowerCase();return g.groups.filter(I=>I.name.toLowerCase().includes(p))}),X=N(()=>{let p=a.value.filter(I=>I.accountType==="dedicated"&&(g.platform==="claude"?I.platform==="claude-oauth":I.platform!=="claude-console"));if(L.value){const I=L.value.toLowerCase();p=p.filter(w=>w.name.toLowerCase().includes(I))}return p}),R=N(()=>{if(g.platform!=="claude")return[];let p=a.value.filter(I=>I.accountType==="dedicated"&&I.platform==="claude-console");if(L.value){const I=L.value.toLowerCase();p=p.filter(w=>w.name.toLowerCase().includes(I))}return p}),C=N(()=>l.value.length>0||X.value.length>0||R.value.length>0),f=p=>{if(!p)return"";const I=new Date(p),h=(new Date-I)/(1e3*60*60);return h<24?"今天创建":h<48?"昨天创建":h<168?`${Math.floor(h/24)} 天前`:I.toLocaleDateString("zh-CN",{month:"2-digit",day:"2-digit"})},k=()=>{if(!G.value||!U.value||!B.value)return;const p=B.value;if(!p)return;const I=p.getBoundingClientRect(),w=window.innerHeight,h=window.innerWidth,o=w-I.bottom,x=I.top,Z=8,H=o-Z,le=x-Z;let ce=!1,pe=H;S.value==="above"&&le>=150?(ce=!0,pe=le):S.value==="below"&&H>=150?(ce=!1,pe=H):le>H&&H<200&&(ce=!0,pe=le),S.value=ce?"above":"below";let ue=I.left;const te=I.width;ue+te>h-Z&&(ue=h-te-Z),ue{if(!G.value&&B.value){const p=B.value.getBoundingClientRect(),w=window.innerHeight-p.bottom,h=8;T.value={position:"fixed",left:`${p.left}px`,width:`${p.width}px`,maxHeight:`${Math.min(w-h,400)}px`,top:`${p.bottom}px`}}G.value=!G.value,G.value&&Tt(()=>{var p;k(),(p=_.value)==null||p.focus()})},c=p=>{P("update:modelValue",p||""),G.value=!1,L.value=""},b=()=>{},ie=()=>{var p;L.value="",(p=_.value)==null||p.focus()},j=p=>{var I,w;!((I=B.value)!=null&&I.contains(p.target))&&!((w=U.value)!=null&&w.contains(p.target))&&(G.value=!1)},n=()=>{G.value&&k()};return _e(()=>{document.addEventListener("click",j),window.addEventListener("scroll",n,!0),window.addEventListener("resize",k)}),Dt(()=>{document.removeEventListener("click",j),window.removeEventListener("scroll",n,!0),window.removeEventListener("resize",k)}),he(G,p=>{p||(L.value="",S.value="")}),(p,I)=>(r(),d("div",{ref_key:"triggerRef",ref:B,class:"relative"},[e("div",{class:z(["form-input flex w-full cursor-pointer items-center justify-between dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"opacity-50":A.disabled}]),onClick:I[0]||(I[0]=w=>!A.disabled&&u())},[e("span",{class:z(A.modelValue?"text-gray-900 dark:text-gray-200":"text-gray-500 dark:text-gray-400")},m($.value),3),e("i",{class:z(["fas fa-chevron-down text-gray-400 transition-transform duration-200 dark:text-gray-500",{"rotate-180":G.value}])},null,2)],2),(r(),re(be,{to:"body"},[ne(_t,{"enter-active-class":"transition ease-out duration-100","enter-from-class":"transform opacity-0 scale-95","enter-to-class":"transform opacity-100 scale-100","leave-active-class":"transition ease-in duration-75","leave-from-class":"transform opacity-100 scale-100","leave-to-class":"transform opacity-0 scale-95"},{default:Lt(()=>[G.value?(r(),d("div",{key:0,ref_key:"dropdownRef",ref:U,class:"absolute z-50 flex flex-col rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-600 dark:bg-gray-800",style:De(T.value)},[e("div",Mt,[e("div",St,[M(e("input",{ref_key:"searchInput",ref:_,"onUpdate:modelValue":I[1]||(I[1]=w=>L.value=w),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"搜索账号名称...",style:{"padding-left":"40px","padding-right":"36px"},type:"text",onInput:b},null,544),[[ee,L.value]]),I[4]||(I[4]=e("i",{class:"fas fa-search pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm text-gray-400 dark:text-gray-500"},null,-1)),L.value?(r(),d("button",{key:0,class:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:ie},I[3]||(I[3]=[e("i",{class:"fas fa-times text-sm"},null,-1)]))):v("",!0)])]),e("div",Rt,[e("div",{class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":!A.modelValue}]),onClick:I[2]||(I[2]=w=>c(null))},[e("span",Vt,m(A.defaultOptionText),1)],2),l.value.length>0?(r(),d("div",Pt,[I[5]||(I[5]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," 调度分组 ",-1)),(r(!0),d(Y,null,J(l.value,w=>(r(),d("div",{key:`group:${w.id}`,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===`group:${w.id}`}]),onClick:h=>c(`group:${w.id}`)},[e("div",jt,[e("span",Ut,m(w.name),1),e("span",Gt,m(w.memberCount||0)+" 个成员",1)])],10,Et))),128))])):v("",!0),X.value.length>0?(r(),d("div",Ot,[e("div",qt,m(A.platform==="claude"?"Claude OAuth 专属账号":"OAuth 专属账号"),1),(r(!0),d(Y,null,J(X.value,w=>(r(),d("div",{key:w.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===w.id}]),onClick:h=>c(w.id)},[e("div",Bt,[e("div",null,[e("span",Ft,m(w.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",w.isActive?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":w.status==="unauthorized"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},m(E(w)),3)]),e("span",zt,m(f(w.createdAt)),1)])],10,Wt))),128))])):v("",!0),A.platform==="claude"&&R.value.length>0?(r(),d("div",Ht,[I[6]||(I[6]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," Claude Console 专属账号 ",-1)),(r(!0),d(Y,null,J(R.value,w=>(r(),d("div",{key:w.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===`console:${w.id}`}]),onClick:h=>c(`console:${w.id}`)},[e("div",Yt,[e("div",null,[e("span",Qt,m(w.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",w.isActive?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":w.status==="unauthorized"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},m(E(w)),3)]),e("span",Jt,m(f(w.createdAt)),1)])],10,Nt))),128))])):v("",!0),L.value&&!C.value?(r(),d("div",Xt,I[7]||(I[7]=[e("i",{class:"fas fa-search mb-2 text-2xl"},null,-1),e("p",{class:"text-sm"},"没有找到匹配的账号",-1)]))):v("",!0)])],4)):v("",!0)]),_:1})]))],512))}},we=fe(Zt,[["__scopeId","data-v-7e9dcf0d"]]),es={class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},ts={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-4xl flex-col p-4 sm:p-6"},ss={class:"mb-4 flex items-center justify-between"},as={class:"rounded-lg border border-blue-200 bg-gradient-to-r from-blue-50 to-indigo-50 p-3 dark:border-blue-700 dark:from-blue-900/20 dark:to-indigo-900/20 sm:p-4"},ls={class:"flex items-center gap-3 sm:gap-4"},rs={class:"flex cursor-pointer items-center"},os={class:"flex cursor-pointer items-center"},ns={key:0,class:"mt-3"},is={class:"flex items-center gap-4"},ds={class:"flex-1"},us={class:"flex items-center gap-2"},cs={class:"mt-2 flex items-start text-xs text-amber-600 dark:text-amber-400"},gs=["placeholder"],ms={key:0,class:"mt-1 text-xs text-red-500 dark:text-red-400"},ps={class:"space-y-4"},xs={key:0},ys={class:"flex flex-wrap gap-2"},fs=["onClick"],bs={key:1},vs={class:"flex flex-wrap gap-2"},ks=["onClick"],ws={class:"flex gap-2"},hs=["onKeypress"],$s={class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/20"},As={class:"space-y-2"},Cs={class:"grid grid-cols-1 gap-2 lg:grid-cols-3"},Is={class:"space-y-2"},Ks={class:"flex gap-2"},Ds={key:0,class:"mt-3"},Ls=["min"],_s={key:1,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Ts={class:"flex gap-4"},Ms={class:"flex cursor-pointer items-center"},Ss={class:"flex cursor-pointer items-center"},Rs={class:"flex cursor-pointer items-center"},Vs={class:"flex cursor-pointer items-center"},Ps={class:"mb-2 flex items-center justify-between"},Es=["disabled"],js={class:"grid grid-cols-1 gap-3"},Us={class:"mb-2 flex items-center"},Gs={key:0,class:"space-y-3"},Os={class:"mb-3 flex min-h-[32px] flex-wrap gap-2 rounded-lg border border-gray-200 bg-gray-50 p-2"},qs=["onClick"],Ws={key:0,class:"text-sm text-gray-400"},Bs={class:"space-y-3"},Fs={class:"flex flex-wrap gap-2"},zs=["onClick"],Hs={key:0,class:"text-sm italic text-gray-400"},Ns={class:"flex gap-2"},Ys=["onKeydown"],Qs={class:"mb-2 flex items-center"},Js={key:0,class:"rounded-lg border border-green-200 bg-green-50 p-3 dark:border-green-700 dark:bg-green-900/20"},Xs={class:"space-y-1"},Zs=["id","value"],ea=["for"],ta={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},sa={class:"block text-xs text-gray-500 dark:text-gray-400"},aa={class:"flex gap-3 pt-2"},la=["disabled"],ra={key:0,class:"loading-spinner mr-2"},oa={key:1,class:"fas fa-plus mr-2"},na={__name:"CreateApiKeyModal",props:{accounts:{type:Object,default:()=>({claude:[],gemini:[]})}},emits:["close","success","batch-success"],setup(A,{emit:Q}){const g=A,P=Q,G=Ge(),L=Oe(),_=D(!1),U=D(!1),T=D({claude:[],gemini:[],openai:[],bedrock:[],claudeGroups:[],geminiGroups:[],openaiGroups:[]}),B=D({name:""}),S=D(""),$=D([]),E=N(()=>$.value.filter(h=>!l.tags.includes(h))),a=D([]),l=Te({createType:"single",batchCount:10,name:"",description:"",tokenLimit:"",rateLimitWindow:"",rateLimitRequests:"",concurrencyLimit:"",dailyCostLimit:"",expireDuration:"",customExpireDate:"",expiresAt:null,permissions:"all",claudeAccountId:"",geminiAccountId:"",openaiAccountId:"",bedrockAccountId:"",enableModelRestriction:!1,restrictedModels:[],modelInput:"",enableClientRestriction:!1,allowedClients:[],tags:[]});_e(async()=>{a.value=await G.loadSupportedClients(),$.value=await L.fetchTags(),g.accounts&&(T.value={claude:g.accounts.claude||[],gemini:g.accounts.gemini||[],openai:g.accounts.openai||[],bedrock:g.accounts.bedrock||[],claudeGroups:g.accounts.claudeGroups||[],geminiGroups:g.accounts.geminiGroups||[],openaiGroups:g.accounts.openaiGroups||[]})});const X=async()=>{var h,o;U.value=!0;try{const[x,Z,H,le,ce,pe]=await Promise.all([W.get("/admin/claude-accounts"),W.get("/admin/claude-console-accounts"),W.get("/admin/gemini-accounts"),W.get("/admin/openai-accounts"),W.get("/admin/bedrock-accounts"),W.get("/admin/account-groups")]),ue=[];if(x.success&&((h=x.data)==null||h.forEach(te=>{ue.push({...te,platform:"claude-oauth",isDedicated:te.accountType==="dedicated"})})),Z.success&&((o=Z.data)==null||o.forEach(te=>{ue.push({...te,platform:"claude-console",isDedicated:te.accountType==="dedicated"})})),T.value.claude=ue,H.success&&(T.value.gemini=(H.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),le.success&&(T.value.openai=(le.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),ce.success&&(T.value.bedrock=(ce.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),pe.success){const te=pe.data||[];T.value.claudeGroups=te.filter(de=>de.platform==="claude"),T.value.geminiGroups=te.filter(de=>de.platform==="gemini"),T.value.openaiGroups=te.filter(de=>de.platform==="openai")}q("账号列表已刷新","success")}catch{q("刷新账号列表失败","error")}finally{U.value=!1}},R=N(()=>{const h=new Date;return h.setMinutes(h.getMinutes()+1),h.toISOString().slice(0,16)}),C=()=>{if(!l.expireDuration){l.expiresAt=null;return}if(l.expireDuration==="custom")return;const h=new Date,x=l.expireDuration.match(/(\d+)([dhmy])/);if(x){const[,Z,H]=x,le=parseInt(Z);switch(H){case"d":h.setDate(h.getDate()+le);break;case"h":h.setHours(h.getHours()+le);break;case"m":h.setMonth(h.getMonth()+le);break;case"y":h.setFullYear(h.getFullYear()+le);break}l.expiresAt=h.toISOString()}},f=()=>{l.customExpireDate&&(l.expiresAt=new Date(l.customExpireDate).toISOString())},k=h=>new Date(h).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),u=()=>{l.modelInput&&!l.restrictedModels.includes(l.modelInput)&&(l.restrictedModels.push(l.modelInput),l.modelInput="")},c=h=>{l.restrictedModels.splice(h,1)},b=D(["claude-opus-4-20250514","claude-opus-4-1-20250805"]),ie=N(()=>b.value.filter(h=>!l.restrictedModels.includes(h))),j=h=>{l.restrictedModels.includes(h)||l.restrictedModels.push(h)},n=()=>{if(S.value&&S.value.trim()){const h=S.value.trim();l.tags.includes(h)||l.tags.push(h),S.value=""}},p=h=>{l.tags.includes(h)||l.tags.push(h)},I=h=>{l.tags.splice(h,1)},w=async()=>{if(B.value.name="",!l.name||!l.name.trim()){B.value.name="请输入API Key名称";return}if(l.createType==="batch"&&(!l.batchCount||l.batchCount<2||l.batchCount>500)){q("批量创建数量必须在 2-500 之间","error");return}_.value=!0;try{const h={description:l.description||void 0,tokenLimit:l.tokenLimit!==""&&l.tokenLimit!==null?parseInt(l.tokenLimit):null,rateLimitWindow:l.rateLimitWindow!==""&&l.rateLimitWindow!==null?parseInt(l.rateLimitWindow):null,rateLimitRequests:l.rateLimitRequests!==""&&l.rateLimitRequests!==null?parseInt(l.rateLimitRequests):null,concurrencyLimit:l.concurrencyLimit!==""&&l.concurrencyLimit!==null?parseInt(l.concurrencyLimit):0,dailyCostLimit:l.dailyCostLimit!==""&&l.dailyCostLimit!==null?parseFloat(l.dailyCostLimit):0,expiresAt:l.expiresAt||void 0,permissions:l.permissions,tags:l.tags.length>0?l.tags:void 0,enableModelRestriction:l.enableModelRestriction,restrictedModels:l.restrictedModels,enableClientRestriction:l.enableClientRestriction,allowedClients:l.allowedClients};if(l.claudeAccountId&&(l.claudeAccountId.startsWith("console:")?(h.claudeConsoleAccountId=l.claudeAccountId.substring(8),delete h.claudeAccountId):(h.claudeAccountId=l.claudeAccountId,delete h.claudeConsoleAccountId)),l.geminiAccountId&&(h.geminiAccountId=l.geminiAccountId),l.openaiAccountId&&(h.openaiAccountId=l.openaiAccountId),l.bedrockAccountId&&(h.bedrockAccountId=l.bedrockAccountId),l.createType==="single"){const o={...h,name:l.name},x=await W.post("/admin/api-keys",o);x.success?(q("API Key 创建成功","success"),P("success",x.data),P("close")):q(x.message||"创建失败","error")}else{const o={...h,createType:"batch",baseName:l.name,count:l.batchCount},x=await W.post("/admin/api-keys/batch",o);x.success?(q(`成功创建 ${x.data.length} 个 API Key`,"success"),P("batch-success",x.data),P("close")):q(x.message||"批量创建失败","error")}}catch{q("创建失败","error")}finally{_.value=!1}};return(h,o)=>(r(),re(be,{to:"body"},[e("div",es,[e("div",ts,[e("div",ss,[o[33]||(o[33]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-key text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 创建新的 API Key ")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:o[0]||(o[0]=x=>h.$emit("close"))},o[32]||(o[32]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-4",onSubmit:me(w,["prevent"])},[e("div",as,[e("div",{class:z(["flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",l.createType==="batch"?"mb-3":""])},[o[36]||(o[36]=e("label",{class:"flex h-full items-center text-xs font-semibold text-gray-700 dark:text-gray-300 sm:text-sm"},"创建类型",-1)),e("div",ls,[e("label",rs,[M(e("input",{"onUpdate:modelValue":o[1]||(o[1]=x=>l.createType=x),class:"mr-1.5 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 sm:mr-2",type:"radio",value:"single"},null,512),[[ae,l.createType]]),o[34]||(o[34]=e("span",{class:"flex items-center text-xs text-gray-700 dark:text-gray-300 sm:text-sm"},[e("i",{class:"fas fa-key mr-1 text-xs"}),K(" 单个创建 ")],-1))]),e("label",os,[M(e("input",{"onUpdate:modelValue":o[2]||(o[2]=x=>l.createType=x),class:"mr-1.5 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 sm:mr-2",type:"radio",value:"batch"},null,512),[[ae,l.createType]]),o[35]||(o[35]=e("span",{class:"flex items-center text-xs text-gray-700 dark:text-gray-300 sm:text-sm"},[e("i",{class:"fas fa-layer-group mr-1 text-xs"}),K(" 批量创建 ")],-1))])])],2),l.createType==="batch"?(r(),d("div",ns,[e("div",is,[e("div",ds,[o[38]||(o[38]=e("label",{class:"mb-1 block text-xs font-medium text-gray-600 dark:text-gray-400"},"创建数量",-1)),e("div",us,[M(e("input",{"onUpdate:modelValue":o[3]||(o[3]=x=>l.batchCount=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"500",min:"2",placeholder:"输入数量 (2-500)",required:"",type:"number"},null,512),[[ee,l.batchCount,void 0,{number:!0}]]),o[37]||(o[37]=e("div",{class:"whitespace-nowrap text-xs text-gray-500 dark:text-gray-400"}," 最大支持 500 个 ",-1))])])]),e("p",cs,[o[39]||(o[39]=e("i",{class:"fas fa-info-circle mr-1 mt-0.5 flex-shrink-0"},null,-1)),e("span",null,"批量创建时,每个 Key 的名称会自动添加序号后缀,例如:"+m(l.name||"MyKey")+"_1, "+m(l.name||"MyKey")+"_2 ...",1)])])):v("",!0)]),e("div",null,[o[40]||(o[40]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-2 sm:text-sm"},[K("名称 "),e("span",{class:"text-red-500"},"*")],-1)),M(e("input",{"onUpdate:modelValue":o[4]||(o[4]=x=>l.name=x),class:z(["form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":B.value.name}]),placeholder:l.createType==="batch"?"输入基础名称(将自动添加序号)":"为您的 API Key 取一个名称",required:"",type:"text",onInput:o[5]||(o[5]=x=>B.value.name="")},null,42,gs),[[ee,l.name]]),B.value.name?(r(),d("p",ms,m(B.value.name),1)):v("",!0)]),e("div",null,[o[48]||(o[48]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"标签",-1)),e("div",ps,[l.tags.length>0?(r(),d("div",xs,[o[42]||(o[42]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 已选择的标签: ",-1)),e("div",ys,[(r(!0),d(Y,null,J(l.tags,(x,Z)=>(r(),d("span",{key:"selected-"+Z,class:"inline-flex items-center gap-1 rounded-full bg-blue-100 px-3 py-1 text-sm text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},[K(m(x)+" ",1),e("button",{class:"ml-1 hover:text-blue-900 dark:hover:text-blue-300",type:"button",onClick:H=>I(Z)},o[41]||(o[41]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,fs)]))),128))])])):v("",!0),E.value.length>0?(r(),d("div",bs,[o[44]||(o[44]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 点击选择已有标签: ",-1)),e("div",vs,[(r(!0),d(Y,null,J(E.value,x=>(r(),d("button",{key:"available-"+x,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-blue-900/30 dark:hover:text-blue-400",type:"button",onClick:Z=>p(x)},[o[43]||(o[43]=e("i",{class:"fas fa-tag text-xs text-gray-500 dark:text-gray-400"},null,-1)),K(" "+m(x),1)],8,ks))),128))])])):v("",!0),e("div",null,[o[46]||(o[46]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 创建新标签: ",-1)),e("div",ws,[M(e("input",{"onUpdate:modelValue":o[6]||(o[6]=x=>S.value=x),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入新标签名称",type:"text",onKeypress:Le(me(n,["prevent"]),["enter"])},null,40,hs),[[ee,S.value]]),e("button",{class:"rounded-lg bg-green-500 px-4 py-2 text-white transition-colors hover:bg-green-600",type:"button",onClick:n},o[45]||(o[45]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),o[47]||(o[47]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 用于标记不同团队或用途,方便筛选管理 ",-1))])]),e("div",$s,[o[56]||(o[56]=e("div",{class:"mb-2 flex items-center gap-2"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded bg-blue-500"},[e("i",{class:"fas fa-tachometer-alt text-xs text-white"})]),e("h4",{class:"text-sm font-semibold text-gray-800 dark:text-gray-200"}," 速率限制设置 (可选) ")],-1)),e("div",As,[e("div",Cs,[e("div",null,[o[49]||(o[49]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"时间窗口 (分钟)",-1)),M(e("input",{"onUpdate:modelValue":o[7]||(o[7]=x=>l.rateLimitWindow=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,l.rateLimitWindow]]),o[50]||(o[50]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"时间段单位",-1))]),e("div",null,[o[51]||(o[51]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"请求次数限制",-1)),M(e("input",{"onUpdate:modelValue":o[8]||(o[8]=x=>l.rateLimitRequests=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,l.rateLimitRequests]]),o[52]||(o[52]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大请求",-1))]),e("div",null,[o[53]||(o[53]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"Token 限制",-1)),M(e("input",{"onUpdate:modelValue":o[9]||(o[9]=x=>l.tokenLimit=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"无限制",type:"number"},null,512),[[ee,l.tokenLimit]]),o[54]||(o[54]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"}," 窗口内最大Token ",-1))])]),o[55]||(o[55]=e("div",{class:"rounded-lg bg-blue-100 p-2 dark:bg-blue-900/30"},[e("h5",{class:"mb-1 text-xs font-semibold text-blue-800 dark:text-blue-400"}," 💡 使用示例 "),e("div",{class:"space-y-0.5 text-xs text-blue-700 dark:text-blue-300"},[e("div",null,[e("strong",null,"示例1:"),K(" 时间窗口=60,请求次数=1000 → 每60分钟最多1000次请求 ")]),e("div",null,[e("strong",null,"示例2:"),K(" 时间窗口=1,Token=10000 → 每分钟最多10,000个Token ")]),e("div",null,[e("strong",null,"示例3:"),K(" 窗口=30,请求=50,Token=100000 → 每30分钟50次请求且不超10万Token ")])])],-1))])]),e("div",null,[o[58]||(o[58]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日费用限制 (美元)",-1)),e("div",Is,[e("div",Ks,[e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[10]||(o[10]=x=>l.dailyCostLimit="50")}," $50 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[11]||(o[11]=x=>l.dailyCostLimit="100")}," $100 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[12]||(o[12]=x=>l.dailyCostLimit="200")}," $200 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[13]||(o[13]=x=>l.dailyCostLimit="")}," 自定义 ")]),M(e("input",{"onUpdate:modelValue":o[14]||(o[14]=x=>l.dailyCostLimit=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[ee,l.dailyCostLimit]]),o[57]||(o[57]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 每日的费用限制,超过限制将拒绝请求,0 或留空表示无限制 ",-1))])]),e("div",null,[o[59]||(o[59]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"并发限制 (可选)",-1)),M(e("input",{"onUpdate:modelValue":o[15]||(o[15]=x=>l.concurrencyLimit=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",type:"number"},null,512),[[ee,l.concurrencyLimit]]),o[60]||(o[60]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 可同时处理的最大请求数,0 或留空表示无限制 ",-1))]),e("div",null,[o[61]||(o[61]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"备注 (可选)",-1)),M(e("textarea",{"onUpdate:modelValue":o[16]||(o[16]=x=>l.description=x),class:"form-input w-full resize-none text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"描述此 API Key 的用途...",rows:"2"},null,512),[[ee,l.description]])]),e("div",null,[o[63]||(o[63]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"有效期限",-1)),M(e("select",{"onUpdate:modelValue":o[17]||(o[17]=x=>l.expireDuration=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",onChange:C},o[62]||(o[62]=[e("option",{value:""},"永不过期",-1),e("option",{value:"1d"},"1 天",-1),e("option",{value:"7d"},"7 天",-1),e("option",{value:"30d"},"30 天",-1),e("option",{value:"90d"},"90 天",-1),e("option",{value:"180d"},"180 天",-1),e("option",{value:"365d"},"365 天",-1),e("option",{value:"custom"},"自定义日期",-1)]),544),[[$e,l.expireDuration]]),l.expireDuration==="custom"?(r(),d("div",Ds,[M(e("input",{"onUpdate:modelValue":o[18]||(o[18]=x=>l.customExpireDate=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:R.value,type:"datetime-local",onChange:f},null,40,Ls),[[ee,l.customExpireDate]])])):v("",!0),l.expiresAt?(r(),d("p",_s," 将于 "+m(k(l.expiresAt))+" 过期 ",1)):v("",!0)]),e("div",null,[o[68]||(o[68]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"服务权限",-1)),e("div",Ts,[e("label",Ms,[M(e("input",{"onUpdate:modelValue":o[19]||(o[19]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"all"},null,512),[[ae,l.permissions]]),o[64]||(o[64]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"全部服务",-1))]),e("label",Ss,[M(e("input",{"onUpdate:modelValue":o[20]||(o[20]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[ae,l.permissions]]),o[65]||(o[65]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Claude",-1))]),e("label",Rs,[M(e("input",{"onUpdate:modelValue":o[21]||(o[21]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[ae,l.permissions]]),o[66]||(o[66]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Gemini",-1))]),e("label",Vs,[M(e("input",{"onUpdate:modelValue":o[22]||(o[22]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[ae,l.permissions]]),o[67]||(o[67]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 OpenAI",-1))])]),o[69]||(o[69]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 控制此 API Key 可以访问哪些服务 ",-1))]),e("div",null,[e("div",Ps,[o[70]||(o[70]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"专属账号绑定 (可选)",-1)),e("button",{class:"flex items-center gap-1 text-sm text-blue-600 transition-colors hover:text-blue-800 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-400 dark:hover:text-blue-300",disabled:U.value,title:"刷新账号列表",type:"button",onClick:X},[e("i",{class:z(["fas",U.value?"fa-spinner fa-spin":"fa-sync-alt","text-xs"])},null,2),e("span",null,m(U.value?"刷新中...":"刷新账号"),1)],8,Es)]),e("div",js,[e("div",null,[o[71]||(o[71]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Claude 专属账号",-1)),ne(we,{modelValue:l.claudeAccountId,"onUpdate:modelValue":o[23]||(o[23]=x=>l.claudeAccountId=x),accounts:T.value.claude,"default-option-text":"使用共享账号池",disabled:l.permissions==="gemini"||l.permissions==="openai",groups:T.value.claudeGroups,placeholder:"请选择Claude账号",platform:"claude"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[72]||(o[72]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Gemini 专属账号",-1)),ne(we,{modelValue:l.geminiAccountId,"onUpdate:modelValue":o[24]||(o[24]=x=>l.geminiAccountId=x),accounts:T.value.gemini,"default-option-text":"使用共享账号池",disabled:l.permissions==="claude"||l.permissions==="openai",groups:T.value.geminiGroups,placeholder:"请选择Gemini账号",platform:"gemini"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[73]||(o[73]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"OpenAI 专属账号",-1)),ne(we,{modelValue:l.openaiAccountId,"onUpdate:modelValue":o[25]||(o[25]=x=>l.openaiAccountId=x),accounts:T.value.openai,"default-option-text":"使用共享账号池",disabled:l.permissions==="claude"||l.permissions==="gemini",groups:T.value.openaiGroups,placeholder:"请选择OpenAI账号",platform:"openai"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[74]||(o[74]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Bedrock 专属账号",-1)),ne(we,{modelValue:l.bedrockAccountId,"onUpdate:modelValue":o[26]||(o[26]=x=>l.bedrockAccountId=x),accounts:T.value.bedrock,"default-option-text":"使用共享账号池",disabled:l.permissions==="gemini"||l.permissions==="openai",groups:[],placeholder:"请选择Bedrock账号",platform:"bedrock"},null,8,["modelValue","accounts","disabled"])])]),o[75]||(o[75]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 选择专属账号后,此API Key将只使用该账号,不选择则使用共享账号池 ",-1))]),e("div",null,[e("div",Us,[M(e("input",{id:"enableModelRestriction","onUpdate:modelValue":o[27]||(o[27]=x=>l.enableModelRestriction=x),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ye,l.enableModelRestriction]]),o[76]||(o[76]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"enableModelRestriction"}," 启用模型限制 ",-1))]),l.enableModelRestriction?(r(),d("div",Gs,[e("div",null,[o[79]||(o[79]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600"},"限制的模型列表",-1)),e("div",Os,[(r(!0),d(Y,null,J(l.restrictedModels,(x,Z)=>(r(),d("span",{key:Z,class:"inline-flex items-center rounded-full bg-red-100 px-3 py-1 text-sm text-red-800"},[K(m(x)+" ",1),e("button",{class:"ml-2 text-red-600 hover:text-red-800",type:"button",onClick:H=>c(Z)},o[77]||(o[77]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,qs)]))),128)),l.restrictedModels.length===0?(r(),d("span",Ws," 暂无限制的模型 ")):v("",!0)]),e("div",Bs,[e("div",Fs,[(r(!0),d(Y,null,J(ie.value,x=>(r(),d("button",{key:x,class:"flex-shrink-0 rounded-lg bg-gray-100 px-3 py-1 text-xs text-gray-700 transition-colors hover:bg-gray-200 sm:text-sm",type:"button",onClick:Z=>j(x)},m(x),9,zs))),128)),ie.value.length===0?(r(),d("span",Hs," 所有常用模型已在限制列表中 ")):v("",!0)]),e("div",Ns,[M(e("input",{"onUpdate:modelValue":o[28]||(o[28]=x=>l.modelInput=x),class:"form-input flex-1",placeholder:"输入模型名称,按回车添加",type:"text",onKeydown:Le(me(u,["prevent"]),["enter"])},null,40,Ys),[[ee,l.modelInput]]),e("button",{class:"rounded-lg bg-red-500 px-4 py-2 text-white transition-colors hover:bg-red-600",type:"button",onClick:u},o[78]||(o[78]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),o[80]||(o[80]=e("p",{class:"mt-2 text-xs text-gray-500"}," 设置此API Key无法访问的模型,例如:claude-opus-4-20250514 ",-1))])])):v("",!0)]),e("div",null,[e("div",Qs,[M(e("input",{id:"enableClientRestriction","onUpdate:modelValue":o[29]||(o[29]=x=>l.enableClientRestriction=x),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ye,l.enableClientRestriction]]),o[81]||(o[81]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"enableClientRestriction"}," 启用客户端限制 ",-1))]),l.enableClientRestriction?(r(),d("div",Js,[e("div",null,[o[82]||(o[82]=e("label",{class:"mb-2 block text-xs font-medium text-gray-700 dark:text-gray-300"},"允许的客户端",-1)),e("div",Xs,[(r(!0),d(Y,null,J(a.value,x=>(r(),d("div",{key:x.id,class:"flex items-start"},[M(e("input",{id:`client_${x.id}`,"onUpdate:modelValue":o[30]||(o[30]=Z=>l.allowedClients=Z),class:"mt-0.5 h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox",value:x.id},null,8,Zs),[[ye,l.allowedClients]]),e("label",{class:"ml-2 flex-1 cursor-pointer",for:`client_${x.id}`},[e("span",ta,m(x.name),1),e("span",sa,m(x.description),1)],8,ea)]))),128))])])])):v("",!0)]),e("div",aa,[e("button",{class:"flex-1 rounded-lg bg-gray-100 px-4 py-2.5 text-sm font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[31]||(o[31]=x=>h.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-4 py-2.5 text-sm font-semibold",disabled:_.value,type:"submit"},[_.value?(r(),d("div",ra)):(r(),d("i",oa)),K(" "+m(_.value?"创建中...":"创建"),1)],8,la)])],32)])])]))}},ia=fe(na,[["__scopeId","data-v-6d814316"]]),da={class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},ua={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-4xl flex-col p-4 sm:p-6 md:p-8"},ca={class:"mb-4 flex items-center justify-between sm:mb-6"},ga=["value"],ma={class:"space-y-4"},pa={key:0},xa={class:"flex flex-wrap gap-2"},ya=["onClick"],fa={key:1},ba={class:"flex flex-wrap gap-2"},va=["onClick"],ka={class:"flex gap-2"},wa=["onKeypress"],ha={class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/20"},$a={class:"space-y-2"},Aa={class:"grid grid-cols-1 gap-2 lg:grid-cols-3"},Ca={class:"space-y-3"},Ia={class:"flex gap-2"},Ka={class:"mb-3 flex items-center"},Da={class:"flex gap-4"},La={class:"flex cursor-pointer items-center"},_a={class:"flex cursor-pointer items-center"},Ta={class:"flex cursor-pointer items-center"},Ma={class:"flex cursor-pointer items-center"},Sa={class:"mb-3 flex items-center justify-between"},Ra=["disabled"],Va={class:"grid grid-cols-1 gap-3"},Pa={class:"mb-3 flex items-center"},Ea={key:0,class:"space-y-3"},ja={class:"mb-3 flex min-h-[32px] flex-wrap gap-2 rounded-lg border border-gray-200 bg-gray-50 p-2 dark:border-gray-600 dark:bg-gray-700"},Ua=["onClick"],Ga={key:0,class:"text-sm text-gray-400 dark:text-gray-500"},Oa={class:"space-y-3"},qa={class:"flex flex-wrap gap-2"},Wa=["onClick"],Ba={key:0,class:"text-sm italic text-gray-400 dark:text-gray-500"},Fa={class:"flex gap-2"},za=["onKeydown"],Ha={class:"mb-3 flex items-center"},Na={key:0,class:"space-y-3"},Ya={class:"space-y-2"},Qa=["id","value"],Ja=["for"],Xa={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Za={class:"block text-xs text-gray-500 dark:text-gray-400"},el={class:"flex gap-3 pt-4"},tl=["disabled"],sl={key:0,class:"loading-spinner mr-2"},al={key:1,class:"fas fa-save mr-2"},ll={__name:"EditApiKeyModal",props:{apiKey:{type:Object,required:!0},accounts:{type:Object,default:()=>({claude:[],gemini:[]})}},emits:["close","success"],setup(A,{emit:Q}){const g=A,P=Q,G=Ge(),L=Oe(),_=D(!1),U=D(!1),T=D({claude:[],gemini:[],openai:[],bedrock:[],claudeGroups:[],geminiGroups:[],openaiGroups:[]}),B=D([]),S=D(""),$=D([]),E=N(()=>$.value.filter(j=>!a.tags.includes(j))),a=Te({name:"",tokenLimit:"",rateLimitWindow:"",rateLimitRequests:"",concurrencyLimit:"",dailyCostLimit:"",permissions:"all",claudeAccountId:"",geminiAccountId:"",openaiAccountId:"",bedrockAccountId:"",enableModelRestriction:!1,restrictedModels:[],modelInput:"",enableClientRestriction:!1,allowedClients:[],tags:[],isActive:!0}),l=()=>{a.modelInput&&!a.restrictedModels.includes(a.modelInput)&&(a.restrictedModels.push(a.modelInput),a.modelInput="")},X=j=>{a.restrictedModels.splice(j,1)},R=D(["claude-opus-4-20250514","claude-opus-4-1-20250805"]),C=N(()=>R.value.filter(j=>!a.restrictedModels.includes(j))),f=j=>{a.restrictedModels.includes(j)||a.restrictedModels.push(j)},k=()=>{if(S.value&&S.value.trim()){const j=S.value.trim();a.tags.includes(j)||a.tags.push(j),S.value=""}},u=j=>{a.tags.includes(j)||a.tags.push(j)},c=j=>{a.tags.splice(j,1)},b=async()=>{_.value=!0;try{const j={tokenLimit:a.tokenLimit!==""&&a.tokenLimit!==null?parseInt(a.tokenLimit):0,rateLimitWindow:a.rateLimitWindow!==""&&a.rateLimitWindow!==null?parseInt(a.rateLimitWindow):0,rateLimitRequests:a.rateLimitRequests!==""&&a.rateLimitRequests!==null?parseInt(a.rateLimitRequests):0,concurrencyLimit:a.concurrencyLimit!==""&&a.concurrencyLimit!==null?parseInt(a.concurrencyLimit):0,dailyCostLimit:a.dailyCostLimit!==""&&a.dailyCostLimit!==null?parseFloat(a.dailyCostLimit):0,permissions:a.permissions,tags:a.tags};a.claudeAccountId?a.claudeAccountId.startsWith("console:")?(j.claudeConsoleAccountId=a.claudeAccountId.substring(8),j.claudeAccountId=null):(a.claudeAccountId.startsWith("group:"),j.claudeAccountId=a.claudeAccountId,j.claudeConsoleAccountId=null):(j.claudeAccountId=null,j.claudeConsoleAccountId=null),a.geminiAccountId?j.geminiAccountId=a.geminiAccountId:j.geminiAccountId=null,a.openaiAccountId?j.openaiAccountId=a.openaiAccountId:j.openaiAccountId=null,a.bedrockAccountId?j.bedrockAccountId=a.bedrockAccountId:j.bedrockAccountId=null,j.enableModelRestriction=a.enableModelRestriction,j.restrictedModels=a.restrictedModels,j.enableClientRestriction=a.enableClientRestriction,j.allowedClients=a.allowedClients,j.isActive=a.isActive;const n=await W.put(`/admin/api-keys/${g.apiKey.id}`,j);n.success?(P("success"),P("close")):q(n.message||"更新失败","error")}catch{q("更新失败","error")}finally{_.value=!1}},ie=async()=>{var j,n;U.value=!0;try{const[p,I,w,h,o,x]=await Promise.all([W.get("/admin/claude-accounts"),W.get("/admin/claude-console-accounts"),W.get("/admin/gemini-accounts"),W.get("/admin/openai-accounts"),W.get("/admin/bedrock-accounts"),W.get("/admin/account-groups")]),Z=[];if(p.success&&((j=p.data)==null||j.forEach(H=>{Z.push({...H,platform:"claude-oauth",isDedicated:H.accountType==="dedicated"})})),I.success&&((n=I.data)==null||n.forEach(H=>{Z.push({...H,platform:"claude-console",isDedicated:H.accountType==="dedicated"})})),T.value.claude=Z,w.success&&(T.value.gemini=(w.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),h.success&&(T.value.openai=(h.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),o.success&&(T.value.bedrock=(o.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),x.success){const H=x.data||[];T.value.claudeGroups=H.filter(le=>le.platform==="claude"),T.value.geminiGroups=H.filter(le=>le.platform==="gemini"),T.value.openaiGroups=H.filter(le=>le.platform==="openai")}q("账号列表已刷新","success")}catch{q("刷新账号列表失败","error")}finally{U.value=!1}};return _e(async()=>{B.value=await G.loadSupportedClients(),$.value=await L.fetchTags(),g.accounts&&(T.value={claude:g.accounts.claude||[],gemini:g.accounts.gemini||[],openai:g.accounts.openai||[],bedrock:g.accounts.bedrock||[],claudeGroups:g.accounts.claudeGroups||[],geminiGroups:g.accounts.geminiGroups||[],openaiGroups:g.accounts.openaiGroups||[]}),a.name=g.apiKey.name,a.tokenLimit=g.apiKey.tokenLimit||"",a.rateLimitWindow=g.apiKey.rateLimitWindow||"",a.rateLimitRequests=g.apiKey.rateLimitRequests||"",a.concurrencyLimit=g.apiKey.concurrencyLimit||"",a.dailyCostLimit=g.apiKey.dailyCostLimit||"",a.permissions=g.apiKey.permissions||"all",g.apiKey.claudeConsoleAccountId?a.claudeAccountId=`console:${g.apiKey.claudeConsoleAccountId}`:a.claudeAccountId=g.apiKey.claudeAccountId||"",a.geminiAccountId=g.apiKey.geminiAccountId||"",a.openaiAccountId=g.apiKey.openaiAccountId||"",a.bedrockAccountId=g.apiKey.bedrockAccountId||"",a.restrictedModels=g.apiKey.restrictedModels||[],a.allowedClients=g.apiKey.allowedClients||[],a.tags=g.apiKey.tags||[],a.enableModelRestriction=g.apiKey.enableModelRestriction||!1,a.enableClientRestriction=g.apiKey.enableClientRestriction||!1,a.isActive=g.apiKey.isActive!==void 0?g.apiKey.isActive:!0}),(j,n)=>(r(),re(be,{to:"body"},[e("div",da,[e("div",ua,[e("div",ca,[n[26]||(n[26]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-edit text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 编辑 API Key ")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:n[0]||(n[0]=p=>j.$emit("close"))},n[25]||(n[25]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-4 sm:space-y-6",onSubmit:me(b,["prevent"])},[e("div",null,[n[27]||(n[27]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"},"名称",-1)),e("input",{class:"form-input w-full cursor-not-allowed bg-gray-100 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400",disabled:"",type:"text",value:a.name},null,8,ga),n[28]||(n[28]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400 sm:mt-2"},"名称不可修改",-1))]),e("div",null,[n[36]||(n[36]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"},"标签",-1)),e("div",ma,[a.tags.length>0?(r(),d("div",pa,[n[30]||(n[30]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 已选择的标签: ",-1)),e("div",xa,[(r(!0),d(Y,null,J(a.tags,(p,I)=>(r(),d("span",{key:"selected-"+I,class:"inline-flex items-center gap-1 rounded-full bg-blue-100 px-3 py-1 text-sm text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},[K(m(p)+" ",1),e("button",{class:"ml-1 hover:text-blue-900 dark:hover:text-blue-300",type:"button",onClick:w=>c(I)},n[29]||(n[29]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,ya)]))),128))])])):v("",!0),E.value.length>0?(r(),d("div",fa,[n[32]||(n[32]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 点击选择已有标签: ",-1)),e("div",ba,[(r(!0),d(Y,null,J(E.value,p=>(r(),d("button",{key:"available-"+p,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-blue-900/30 dark:hover:text-blue-400",type:"button",onClick:I=>u(p)},[n[31]||(n[31]=e("i",{class:"fas fa-tag text-xs text-gray-500 dark:text-gray-400"},null,-1)),K(" "+m(p),1)],8,va))),128))])])):v("",!0),e("div",null,[n[34]||(n[34]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 创建新标签: ",-1)),e("div",ka,[M(e("input",{"onUpdate:modelValue":n[1]||(n[1]=p=>S.value=p),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入新标签名称",type:"text",onKeypress:Le(me(k,["prevent"]),["enter"])},null,40,wa),[[ee,S.value]]),e("button",{class:"rounded-lg bg-green-500 px-4 py-2 text-white transition-colors hover:bg-green-600",type:"button",onClick:k},n[33]||(n[33]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),n[35]||(n[35]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 用于标记不同团队或用途,方便筛选管理 ",-1))])]),e("div",ha,[n[44]||(n[44]=e("div",{class:"mb-2 flex items-center gap-2"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded bg-blue-500"},[e("i",{class:"fas fa-tachometer-alt text-xs text-white"})]),e("h4",{class:"text-sm font-semibold text-gray-800 dark:text-gray-200"}," 速率限制设置 (可选) ")],-1)),e("div",$a,[e("div",Aa,[e("div",null,[n[37]||(n[37]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"时间窗口 (分钟)",-1)),M(e("input",{"onUpdate:modelValue":n[2]||(n[2]=p=>a.rateLimitWindow=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,a.rateLimitWindow]]),n[38]||(n[38]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"时间段单位",-1))]),e("div",null,[n[39]||(n[39]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"请求次数限制",-1)),M(e("input",{"onUpdate:modelValue":n[3]||(n[3]=p=>a.rateLimitRequests=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,a.rateLimitRequests]]),n[40]||(n[40]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大请求",-1))]),e("div",null,[n[41]||(n[41]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"Token 限制",-1)),M(e("input",{"onUpdate:modelValue":n[4]||(n[4]=p=>a.tokenLimit=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"无限制",type:"number"},null,512),[[ee,a.tokenLimit]]),n[42]||(n[42]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"}," 窗口内最大Token ",-1))])]),n[43]||(n[43]=e("div",{class:"rounded-lg bg-blue-100 p-2 dark:bg-blue-900/30"},[e("h5",{class:"mb-1 text-xs font-semibold text-blue-800 dark:text-blue-400"}," 💡 使用示例 "),e("div",{class:"space-y-0.5 text-xs text-blue-700 dark:text-blue-300"},[e("div",null,[e("strong",null,"示例1:"),K(" 时间窗口=60,请求次数=1000 → 每60分钟最多1000次请求 ")]),e("div",null,[e("strong",null,"示例2:"),K(" 时间窗口=1,Token=10000 → 每分钟最多10,000个Token ")]),e("div",null,[e("strong",null,"示例3:"),K(" 窗口=30,请求=50,Token=100000 → 每30分钟50次请求且不超10万Token ")])])],-1))])]),e("div",null,[n[46]||(n[46]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日费用限制 (美元)",-1)),e("div",Ca,[e("div",Ia,[e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[5]||(n[5]=p=>a.dailyCostLimit="50")}," $50 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[6]||(n[6]=p=>a.dailyCostLimit="100")}," $100 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[7]||(n[7]=p=>a.dailyCostLimit="200")}," $200 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[8]||(n[8]=p=>a.dailyCostLimit="")}," 自定义 ")]),M(e("input",{"onUpdate:modelValue":n[9]||(n[9]=p=>a.dailyCostLimit=p),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[ee,a.dailyCostLimit]]),n[45]||(n[45]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 每日的费用限制,超过限制将拒绝请求,0 或留空表示无限制 ",-1))])]),e("div",null,[n[47]||(n[47]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"并发限制",-1)),M(e("input",{"onUpdate:modelValue":n[10]||(n[10]=p=>a.concurrencyLimit=p),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",type:"number"},null,512),[[ee,a.concurrencyLimit]]),n[48]||(n[48]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 可同时处理的最大请求数 ",-1))]),e("div",null,[e("div",Ka,[M(e("input",{id:"editIsActive","onUpdate:modelValue":n[11]||(n[11]=p=>a.isActive=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.isActive]]),n[49]||(n[49]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editIsActive"}," 激活账号 ",-1))]),n[50]||(n[50]=e("p",{class:"mb-4 text-xs text-gray-500 dark:text-gray-400"}," 取消勾选将禁用此 API Key,暂停所有请求,客户端返回 401 错误 ",-1))]),e("div",null,[n[55]||(n[55]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"服务权限",-1)),e("div",Da,[e("label",La,[M(e("input",{"onUpdate:modelValue":n[12]||(n[12]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"all"},null,512),[[ae,a.permissions]]),n[51]||(n[51]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"全部服务",-1))]),e("label",_a,[M(e("input",{"onUpdate:modelValue":n[13]||(n[13]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[ae,a.permissions]]),n[52]||(n[52]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Claude",-1))]),e("label",Ta,[M(e("input",{"onUpdate:modelValue":n[14]||(n[14]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[ae,a.permissions]]),n[53]||(n[53]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Gemini",-1))]),e("label",Ma,[M(e("input",{"onUpdate:modelValue":n[15]||(n[15]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[ae,a.permissions]]),n[54]||(n[54]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 OpenAI",-1))])]),n[56]||(n[56]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 控制此 API Key 可以访问哪些服务 ",-1))]),e("div",null,[e("div",Sa,[n[57]||(n[57]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"专属账号绑定",-1)),e("button",{class:"flex items-center gap-1 text-sm text-blue-600 transition-colors hover:text-blue-800 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-400 dark:hover:text-blue-300",disabled:U.value,title:"刷新账号列表",type:"button",onClick:ie},[e("i",{class:z(["fas",U.value?"fa-spinner fa-spin":"fa-sync-alt","text-xs"])},null,2),e("span",null,m(U.value?"刷新中...":"刷新账号"),1)],8,Ra)]),e("div",Va,[e("div",null,[n[58]||(n[58]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Claude 专属账号",-1)),ne(we,{modelValue:a.claudeAccountId,"onUpdate:modelValue":n[16]||(n[16]=p=>a.claudeAccountId=p),accounts:T.value.claude,"default-option-text":"使用共享账号池",disabled:a.permissions==="gemini"||a.permissions==="openai",groups:T.value.claudeGroups,placeholder:"请选择Claude账号",platform:"claude"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[59]||(n[59]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Gemini 专属账号",-1)),ne(we,{modelValue:a.geminiAccountId,"onUpdate:modelValue":n[17]||(n[17]=p=>a.geminiAccountId=p),accounts:T.value.gemini,"default-option-text":"使用共享账号池",disabled:a.permissions==="claude"||a.permissions==="openai",groups:T.value.geminiGroups,placeholder:"请选择Gemini账号",platform:"gemini"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[60]||(n[60]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"OpenAI 专属账号",-1)),ne(we,{modelValue:a.openaiAccountId,"onUpdate:modelValue":n[18]||(n[18]=p=>a.openaiAccountId=p),accounts:T.value.openai,"default-option-text":"使用共享账号池",disabled:a.permissions==="claude"||a.permissions==="gemini",groups:T.value.openaiGroups,placeholder:"请选择OpenAI账号",platform:"openai"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[61]||(n[61]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Bedrock 专属账号",-1)),ne(we,{modelValue:a.bedrockAccountId,"onUpdate:modelValue":n[19]||(n[19]=p=>a.bedrockAccountId=p),accounts:T.value.bedrock,"default-option-text":"使用共享账号池",disabled:a.permissions==="gemini"||a.permissions==="openai",groups:[],placeholder:"请选择Bedrock账号",platform:"bedrock"},null,8,["modelValue","accounts","disabled"])])]),n[62]||(n[62]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 修改绑定账号将影响此API Key的请求路由 ",-1))]),e("div",null,[e("div",Pa,[M(e("input",{id:"editEnableModelRestriction","onUpdate:modelValue":n[20]||(n[20]=p=>a.enableModelRestriction=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.enableModelRestriction]]),n[63]||(n[63]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editEnableModelRestriction"}," 启用模型限制 ",-1))]),a.enableModelRestriction?(r(),d("div",Ea,[e("div",null,[n[66]||(n[66]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600 dark:text-gray-400"},"限制的模型列表",-1)),e("div",ja,[(r(!0),d(Y,null,J(a.restrictedModels,(p,I)=>(r(),d("span",{key:I,class:"inline-flex items-center rounded-full bg-red-100 px-3 py-1 text-sm text-red-800 dark:bg-red-900/30 dark:text-red-400"},[K(m(p)+" ",1),e("button",{class:"ml-2 text-red-600 hover:text-red-800 dark:text-red-400 dark:hover:text-red-300",type:"button",onClick:w=>X(I)},n[64]||(n[64]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,Ua)]))),128)),a.restrictedModels.length===0?(r(),d("span",Ga," 暂无限制的模型 ")):v("",!0)]),e("div",Oa,[e("div",qa,[(r(!0),d(Y,null,J(C.value,p=>(r(),d("button",{key:p,class:"flex-shrink-0 rounded-lg bg-gray-100 px-3 py-1 text-xs text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600 sm:text-sm",type:"button",onClick:I=>f(p)},m(p),9,Wa))),128)),C.value.length===0?(r(),d("span",Ba," 所有常用模型已在限制列表中 ")):v("",!0)]),e("div",Fa,[M(e("input",{"onUpdate:modelValue":n[21]||(n[21]=p=>a.modelInput=p),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入模型名称,按回车添加",type:"text",onKeydown:Le(me(l,["prevent"]),["enter"])},null,40,za),[[ee,a.modelInput]]),e("button",{class:"rounded-lg bg-red-500 px-4 py-2 text-white transition-colors hover:bg-red-600",type:"button",onClick:l},n[65]||(n[65]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),n[67]||(n[67]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此API Key无法访问的模型,例如:claude-opus-4-20250514 ",-1))])])):v("",!0)]),e("div",null,[e("div",Ha,[M(e("input",{id:"editEnableClientRestriction","onUpdate:modelValue":n[22]||(n[22]=p=>a.enableClientRestriction=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.enableClientRestriction]]),n[68]||(n[68]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editEnableClientRestriction"}," 启用客户端限制 ",-1))]),a.enableClientRestriction?(r(),d("div",Na,[e("div",null,[n[69]||(n[69]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600 dark:text-gray-400"},"允许的客户端",-1)),n[70]||(n[70]=e("p",{class:"mb-3 text-xs text-gray-500 dark:text-gray-400"}," 勾选允许使用此API Key的客户端 ",-1)),e("div",Ya,[(r(!0),d(Y,null,J(B.value,p=>(r(),d("div",{key:p.id,class:"flex items-start"},[M(e("input",{id:`edit_client_${p.id}`,"onUpdate:modelValue":n[23]||(n[23]=I=>a.allowedClients=I),class:"mt-0.5 h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox",value:p.id},null,8,Qa),[[ye,a.allowedClients]]),e("label",{class:"ml-2 flex-1 cursor-pointer",for:`edit_client_${p.id}`},[e("span",Xa,m(p.name),1),e("span",Za,m(p.description),1)],8,Ja)]))),128))])])])):v("",!0)]),e("div",el,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[24]||(n[24]=p=>j.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:_.value,type:"submit"},[_.value?(r(),d("div",sl)):(r(),d("i",al)),K(" "+m(_.value?"保存中...":"保存修改"),1)],8,tl)])],32)])])]))}},rl=fe(ll,[["__scopeId","data-v-709438db"]]),ol={class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},nl={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-md flex-col p-8"},il={class:"mb-6 flex items-center justify-between"},dl={class:"modal-scroll-content custom-scrollbar flex-1 space-y-6"},ul={class:"rounded-lg border border-blue-200 bg-blue-50 p-4"},cl={class:"flex items-start gap-3"},gl={class:"text-sm text-gray-700"},ml={class:"mt-1 text-xs text-gray-600"},pl={key:0,class:"mt-3"},xl=["min"],yl={key:1,class:"mt-2 text-xs text-gray-500"},fl={class:"flex gap-3 pt-4"},bl=["disabled"],vl={key:0,class:"loading-spinner mr-2"},kl={key:1,class:"fas fa-clock mr-2"},wl={__name:"RenewApiKeyModal",props:{apiKey:{type:Object,required:!0}},emits:["close","success"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=Te({renewDuration:"30d",customExpireDate:"",newExpiresAt:null}),_=N(()=>{const $=new Date;return g.apiKey.expiresAt&&new Date(g.apiKey.expiresAt)>$?new Date(g.apiKey.expiresAt).toISOString().slice(0,16):($.setMinutes($.getMinutes()+1),$.toISOString().slice(0,16))}),U=$=>new Date($).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),T=()=>{if(!L.renewDuration){L.newExpiresAt=null;return}if(L.renewDuration==="permanent"){L.newExpiresAt=null;return}if(L.renewDuration==="custom")return;const $=g.apiKey.expiresAt&&new Date(g.apiKey.expiresAt)>new Date?new Date(g.apiKey.expiresAt):new Date,a=L.renewDuration.match(/(\d+)([dhmy])/);if(a){const[,l,X]=a,R=parseInt(l);switch(X){case"d":$.setDate($.getDate()+R);break;case"h":$.setHours($.getHours()+R);break;case"m":$.setMonth($.getMonth()+R);break;case"y":$.setFullYear($.getFullYear()+R);break}L.newExpiresAt=$.toISOString()}},B=()=>{L.customExpireDate&&(L.newExpiresAt=new Date(L.customExpireDate).toISOString())},S=async()=>{G.value=!0;try{const $={expiresAt:L.renewDuration==="permanent"?null:L.newExpiresAt},E=await W.put(`/admin/api-keys/${g.apiKey.id}`,$);E.success?(q("API Key 续期成功","success"),P("success"),P("close")):q(E.message||"续期失败","error")}catch{q("续期失败","error")}finally{G.value=!1}};return T(),($,E)=>(r(),re(be,{to:"body"},[e("div",ol,[e("div",nl,[e("div",il,[E[5]||(E[5]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-clock text-white"})]),e("h3",{class:"text-xl font-bold text-gray-900"},"续期 API Key")],-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:E[0]||(E[0]=a=>$.$emit("close"))},E[4]||(E[4]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("div",dl,[e("div",ul,[e("div",cl,[E[7]||(E[7]=e("div",{class:"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-info text-sm text-white"})],-1)),e("div",null,[E[6]||(E[6]=e("h4",{class:"mb-1 font-semibold text-gray-800"},"API Key 信息",-1)),e("p",gl,m(A.apiKey.name),1),e("p",ml," 当前过期时间:"+m(A.apiKey.expiresAt?U(A.apiKey.expiresAt):"永不过期"),1)])])]),e("div",null,[E[9]||(E[9]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"续期时长",-1)),M(e("select",{"onUpdate:modelValue":E[1]||(E[1]=a=>L.renewDuration=a),class:"form-input w-full",onChange:T},E[8]||(E[8]=[e("option",{value:"7d"},"延长 7 天",-1),e("option",{value:"30d"},"延长 30 天",-1),e("option",{value:"90d"},"延长 90 天",-1),e("option",{value:"180d"},"延长 180 天",-1),e("option",{value:"365d"},"延长 365 天",-1),e("option",{value:"custom"},"自定义日期",-1),e("option",{value:"permanent"},"设为永不过期",-1)]),544),[[$e,L.renewDuration]]),L.renewDuration==="custom"?(r(),d("div",pl,[M(e("input",{"onUpdate:modelValue":E[2]||(E[2]=a=>L.customExpireDate=a),class:"form-input w-full",min:_.value,type:"datetime-local",onChange:B},null,40,xl),[[ee,L.customExpireDate]])])):v("",!0),L.newExpiresAt?(r(),d("p",yl," 新的过期时间:"+m(U(L.newExpiresAt)),1)):v("",!0)])]),e("div",fl,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200",type:"button",onClick:E[3]||(E[3]=a=>$.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:G.value||!L.renewDuration,type:"button",onClick:S},[G.value?(r(),d("div",vl)):(r(),d("i",kl)),K(" "+m(G.value?"续期中...":"确认续期"),1)],8,bl)])])])]))}},hl=fe(wl,[["__scopeId","data-v-2fba52a3"]]),$l={class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},Al={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-lg overflow-y-auto p-8"},Cl={class:"mb-6 space-y-4"},Il={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-600 dark:bg-gray-800"},Kl={class:"font-medium text-gray-900 dark:text-gray-100"},Dl={key:0},Ll={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-600 dark:bg-gray-800"},_l={class:"text-gray-700 dark:text-gray-300"},Tl={class:"relative"},Ml={class:"flex min-h-[60px] items-center break-all rounded-lg border border-gray-700 bg-gray-900 p-4 pr-14 font-mono text-sm text-white dark:border-gray-600 dark:bg-gray-900"},Sl={class:"absolute right-3 top-3"},Rl=["title"],Vl={__name:"NewApiKeyModal",props:{apiKey:{type:Object,required:!0}},emits:["close"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=()=>{G.value=!G.value},_=()=>{const S=g.apiKey.apiKey||g.apiKey.key||"";return S?G.value||S.length<=12?S:S.substring(0,8)+"●".repeat(Math.max(0,S.length-12))+S.substring(S.length-4):""},U=async()=>{const S=g.apiKey.apiKey||g.apiKey.key||"";if(!S){q("API Key 不存在","error");return}try{await navigator.clipboard.writeText(S),q("API Key 已复制到剪贴板","success")}catch($){console.error("Failed to copy:",$);const E=document.createElement("textarea");E.value=S,document.body.appendChild(E),E.select();try{document.execCommand("copy"),q("API Key 已复制到剪贴板","success")}catch{q("复制失败,请手动复制","error")}finally{document.body.removeChild(E)}}},T=async()=>{window.showConfirm?await window.showConfirm("关闭提醒",`关闭后将无法再次查看完整的API Key,请确保已经妥善保存。 +import{E as Kt}from"./element-plus-Bq6mBxnk.js";import{aR as it,r as D,c as N,q as _e,V as Dt,o as he,x as d,y as r,z as e,I as re,C as z,P as m,R as ne,J as Lt,L as v,B as De,K as M,aq as ee,Q as Y,ac as J,T as _t,a5 as be,D as Tt,_ as Te,Y as me,an as ae,O as K,aa as Le,aW as $e,al as ye}from"./vue-vendor-Ig-GgGwA.js";import{s as q}from"./toast-BvwA7Mwb.js";import{b as W,_ as fe}from"./index-CY9cPBXr.js";import{_ as Ue}from"./WindowCountdown-DSqUCtdk.js";import{C as nt}from"./CustomDropdown-C7e2WJat.js";import"./vendor-BDiMbLwQ.js";const Ge=it("clients",{state:()=>({supportedClients:[],loading:!1,error:null}),actions:{async loadSupportedClients(){if(this.supportedClients.length>0)return this.supportedClients;this.loading=!0,this.error=null;try{const A=await W.get("/admin/supported-clients");return A.success?this.supportedClients=A.data||[]:(this.error=A.message||"加载支持的客户端失败",console.error("Failed to load supported clients:",this.error)),this.supportedClients}catch(A){return this.error=A.message||"加载支持的客户端失败",console.error("Error loading supported clients:",A),[]}finally{this.loading=!1}}}}),Oe=it("apiKeys",()=>{const A=D([]),Q=D(!1),g=D(null),P=D("all"),G=D(""),L=D("asc"),_=async()=>{Q.value=!0,g.value=null;try{const R=await W.get("/admin/api-keys");if(R.success)A.value=R.data||[];else throw new Error(R.message||"获取API Keys失败")}catch(R){throw g.value=R.message,R}finally{Q.value=!1}};return{apiKeys:A,loading:Q,error:g,statsTimeRange:P,sortBy:G,sortOrder:L,fetchApiKeys:_,createApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.post("/admin/api-keys",R);if(C.success)return await _(),C.data;throw new Error(C.message||"创建API Key失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},updateApiKey:async(R,C)=>{Q.value=!0,g.value=null;try{const f=await W.put(`/admin/api-keys/${R}`,C);if(f.success)return await _(),f;throw new Error(f.message||"更新API Key失败")}catch(f){throw g.value=f.message,f}finally{Q.value=!1}},toggleApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.put(`/admin/api-keys/${R}/toggle`);if(C.success)return await _(),C;throw new Error(C.message||"切换状态失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},renewApiKey:async(R,C)=>{Q.value=!0,g.value=null;try{const f=await W.put(`/admin/api-keys/${R}`,C);if(f.success)return await _(),f;throw new Error(f.message||"续期失败")}catch(f){throw g.value=f.message,f}finally{Q.value=!1}},deleteApiKey:async R=>{Q.value=!0,g.value=null;try{const C=await W.delete(`/admin/api-keys/${R}`);if(C.success)return await _(),C;throw new Error(C.message||"删除失败")}catch(C){throw g.value=C.message,C}finally{Q.value=!1}},fetchApiKeyStats:async(R,C="all")=>{try{const f=await W.get(`/admin/api-keys/${R}/stats`,{params:{timeRange:C}});if(f.success)return f.stats;throw new Error(f.message||"获取统计失败")}catch(f){return console.error("获取API Key统计失败:",f),null}},fetchTags:async()=>{try{const R=await W.get("/admin/api-keys/tags");if(R.success)return R.data||[];throw new Error(R.message||"获取标签失败")}catch(R){return console.error("获取标签失败:",R),[]}},sortApiKeys:R=>{G.value===R?L.value=L.value==="asc"?"desc":"asc":(G.value=R,L.value="asc")},reset:()=>{A.value=[],Q.value=!1,g.value=null,P.value="all",G.value="",L.value="asc"}}}),Mt={class:"flex-shrink-0 border-b border-gray-200 p-3 dark:border-gray-600"},St={class:"relative"},Rt={class:"custom-scrollbar flex-1 overflow-y-auto"},Vt={class:"text-gray-700 dark:text-gray-300"},Pt={key:0},Et=["onClick"],jt={class:"flex items-center justify-between"},Ut={class:"text-gray-700 dark:text-gray-300"},Gt={class:"text-xs text-gray-500 dark:text-gray-400"},Ot={key:1},qt={class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"},Wt=["onClick"],Bt={class:"flex items-center justify-between"},Ft={class:"text-gray-700 dark:text-gray-300"},zt={class:"text-xs text-gray-400 dark:text-gray-500"},Ht={key:2},Nt=["onClick"],Yt={class:"flex items-center justify-between"},Qt={class:"text-gray-700 dark:text-gray-300"},Jt={class:"text-xs text-gray-400 dark:text-gray-500"},Xt={key:3,class:"px-4 py-8 text-center text-gray-500 dark:text-gray-400"},Zt={__name:"AccountSelector",props:{modelValue:{type:String,default:""},platform:{type:String,required:!0,validator:A=>["claude","gemini"].includes(A)},accounts:{type:Array,default:()=>[]},groups:{type:Array,default:()=>[]},disabled:{type:Boolean,default:!1},placeholder:{type:String,default:"请选择账号"},defaultOptionText:{type:String,default:"使用共享账号池"}},emits:["update:modelValue"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=D(""),_=D(null),U=D(null),T=D({}),B=D(null),S=D(""),$=N(()=>{if(!g.modelValue)return g.defaultOptionText;if(g.modelValue.startsWith("group:")){const I=g.modelValue.substring(6),w=g.groups.find(h=>h.id===I);return w?`${w.name} (${w.memberCount||0} 个成员)`:""}if(g.modelValue.startsWith("console:")){const I=g.modelValue.substring(8),w=g.accounts.find(h=>h.id===I&&h.platform==="claude-console");return w?`${w.name} (${E(w)})`:""}const p=g.accounts.find(I=>I.id===g.modelValue);return p?`${p.name} (${E(p)})`:""}),E=p=>{if(!p)return"未知";if(p.isActive===!1)switch(p.status){case"unauthorized":return"未授权";case"error":return"Token错误";case"created":return"待验证";case"rate_limited":return"限流中";default:return"异常"}return"正常"},a=N(()=>[...g.accounts].sort((p,I)=>{const w=new Date(p.createdAt||0);return new Date(I.createdAt||0)-w})),l=N(()=>{if(!L.value)return g.groups;const p=L.value.toLowerCase();return g.groups.filter(I=>I.name.toLowerCase().includes(p))}),X=N(()=>{let p=a.value.filter(I=>I.accountType==="dedicated"&&(g.platform==="claude"?I.platform==="claude-oauth":I.platform!=="claude-console"));if(L.value){const I=L.value.toLowerCase();p=p.filter(w=>w.name.toLowerCase().includes(I))}return p}),R=N(()=>{if(g.platform!=="claude")return[];let p=a.value.filter(I=>I.accountType==="dedicated"&&I.platform==="claude-console");if(L.value){const I=L.value.toLowerCase();p=p.filter(w=>w.name.toLowerCase().includes(I))}return p}),C=N(()=>l.value.length>0||X.value.length>0||R.value.length>0),f=p=>{if(!p)return"";const I=new Date(p),h=(new Date-I)/(1e3*60*60);return h<24?"今天创建":h<48?"昨天创建":h<168?`${Math.floor(h/24)} 天前`:I.toLocaleDateString("zh-CN",{month:"2-digit",day:"2-digit"})},k=()=>{if(!G.value||!U.value||!B.value)return;const p=B.value;if(!p)return;const I=p.getBoundingClientRect(),w=window.innerHeight,h=window.innerWidth,o=w-I.bottom,x=I.top,Z=8,H=o-Z,le=x-Z;let ce=!1,pe=H;S.value==="above"&&le>=150?(ce=!0,pe=le):S.value==="below"&&H>=150?(ce=!1,pe=H):le>H&&H<200&&(ce=!0,pe=le),S.value=ce?"above":"below";let ue=I.left;const te=I.width;ue+te>h-Z&&(ue=h-te-Z),ue{if(!G.value&&B.value){const p=B.value.getBoundingClientRect(),w=window.innerHeight-p.bottom,h=8;T.value={position:"fixed",left:`${p.left}px`,width:`${p.width}px`,maxHeight:`${Math.min(w-h,400)}px`,top:`${p.bottom}px`}}G.value=!G.value,G.value&&Tt(()=>{var p;k(),(p=_.value)==null||p.focus()})},c=p=>{P("update:modelValue",p||""),G.value=!1,L.value=""},b=()=>{},ie=()=>{var p;L.value="",(p=_.value)==null||p.focus()},j=p=>{var I,w;!((I=B.value)!=null&&I.contains(p.target))&&!((w=U.value)!=null&&w.contains(p.target))&&(G.value=!1)},n=()=>{G.value&&k()};return _e(()=>{document.addEventListener("click",j),window.addEventListener("scroll",n,!0),window.addEventListener("resize",k)}),Dt(()=>{document.removeEventListener("click",j),window.removeEventListener("scroll",n,!0),window.removeEventListener("resize",k)}),he(G,p=>{p||(L.value="",S.value="")}),(p,I)=>(r(),d("div",{ref_key:"triggerRef",ref:B,class:"relative"},[e("div",{class:z(["form-input flex w-full cursor-pointer items-center justify-between dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",{"opacity-50":A.disabled}]),onClick:I[0]||(I[0]=w=>!A.disabled&&u())},[e("span",{class:z(A.modelValue?"text-gray-900 dark:text-gray-200":"text-gray-500 dark:text-gray-400")},m($.value),3),e("i",{class:z(["fas fa-chevron-down text-gray-400 transition-transform duration-200 dark:text-gray-500",{"rotate-180":G.value}])},null,2)],2),(r(),re(be,{to:"body"},[ne(_t,{"enter-active-class":"transition ease-out duration-100","enter-from-class":"transform opacity-0 scale-95","enter-to-class":"transform opacity-100 scale-100","leave-active-class":"transition ease-in duration-75","leave-from-class":"transform opacity-100 scale-100","leave-to-class":"transform opacity-0 scale-95"},{default:Lt(()=>[G.value?(r(),d("div",{key:0,ref_key:"dropdownRef",ref:U,class:"absolute z-50 flex flex-col rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-600 dark:bg-gray-800",style:De(T.value)},[e("div",Mt,[e("div",St,[M(e("input",{ref_key:"searchInput",ref:_,"onUpdate:modelValue":I[1]||(I[1]=w=>L.value=w),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"搜索账号名称...",style:{"padding-left":"40px","padding-right":"36px"},type:"text",onInput:b},null,544),[[ee,L.value]]),I[4]||(I[4]=e("i",{class:"fas fa-search pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-sm text-gray-400 dark:text-gray-500"},null,-1)),L.value?(r(),d("button",{key:0,class:"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-400",type:"button",onClick:ie},I[3]||(I[3]=[e("i",{class:"fas fa-times text-sm"},null,-1)]))):v("",!0)])]),e("div",Rt,[e("div",{class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":!A.modelValue}]),onClick:I[2]||(I[2]=w=>c(null))},[e("span",Vt,m(A.defaultOptionText),1)],2),l.value.length>0?(r(),d("div",Pt,[I[5]||(I[5]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," 调度分组 ",-1)),(r(!0),d(Y,null,J(l.value,w=>(r(),d("div",{key:`group:${w.id}`,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===`group:${w.id}`}]),onClick:h=>c(`group:${w.id}`)},[e("div",jt,[e("span",Ut,m(w.name),1),e("span",Gt,m(w.memberCount||0)+" 个成员",1)])],10,Et))),128))])):v("",!0),X.value.length>0?(r(),d("div",Ot,[e("div",qt,m(A.platform==="claude"?"Claude OAuth 专属账号":"OAuth 专属账号"),1),(r(!0),d(Y,null,J(X.value,w=>(r(),d("div",{key:w.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===w.id}]),onClick:h=>c(w.id)},[e("div",Bt,[e("div",null,[e("span",Ft,m(w.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",w.isActive?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":w.status==="unauthorized"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},m(E(w)),3)]),e("span",zt,m(f(w.createdAt)),1)])],10,Wt))),128))])):v("",!0),A.platform==="claude"&&R.value.length>0?(r(),d("div",Ht,[I[6]||(I[6]=e("div",{class:"bg-gray-50 px-4 py-2 text-xs font-semibold text-gray-500 dark:bg-gray-700 dark:text-gray-400"}," Claude Console 专属账号 ",-1)),(r(!0),d(Y,null,J(R.value,w=>(r(),d("div",{key:w.id,class:z(["cursor-pointer px-4 py-2 transition-colors hover:bg-gray-50 dark:hover:bg-gray-700",{"bg-blue-50 dark:bg-blue-900/20":A.modelValue===`console:${w.id}`}]),onClick:h=>c(`console:${w.id}`)},[e("div",Yt,[e("div",null,[e("span",Qt,m(w.name),1),e("span",{class:z(["ml-2 rounded-full px-2 py-0.5 text-xs",w.isActive?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":w.status==="unauthorized"?"bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400":"bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400"])},m(E(w)),3)]),e("span",Jt,m(f(w.createdAt)),1)])],10,Nt))),128))])):v("",!0),L.value&&!C.value?(r(),d("div",Xt,I[7]||(I[7]=[e("i",{class:"fas fa-search mb-2 text-2xl"},null,-1),e("p",{class:"text-sm"},"没有找到匹配的账号",-1)]))):v("",!0)])],4)):v("",!0)]),_:1})]))],512))}},we=fe(Zt,[["__scopeId","data-v-7e9dcf0d"]]),es={class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},ts={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-4xl flex-col p-4 sm:p-6"},ss={class:"mb-4 flex items-center justify-between"},as={class:"rounded-lg border border-blue-200 bg-gradient-to-r from-blue-50 to-indigo-50 p-3 dark:border-blue-700 dark:from-blue-900/20 dark:to-indigo-900/20 sm:p-4"},ls={class:"flex items-center gap-3 sm:gap-4"},rs={class:"flex cursor-pointer items-center"},os={class:"flex cursor-pointer items-center"},ns={key:0,class:"mt-3"},is={class:"flex items-center gap-4"},ds={class:"flex-1"},us={class:"flex items-center gap-2"},cs={class:"mt-2 flex items-start text-xs text-amber-600 dark:text-amber-400"},gs=["placeholder"],ms={key:0,class:"mt-1 text-xs text-red-500 dark:text-red-400"},ps={class:"space-y-4"},xs={key:0},ys={class:"flex flex-wrap gap-2"},fs=["onClick"],bs={key:1},vs={class:"flex flex-wrap gap-2"},ks=["onClick"],ws={class:"flex gap-2"},hs=["onKeypress"],$s={class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/20"},As={class:"space-y-2"},Cs={class:"grid grid-cols-1 gap-2 lg:grid-cols-3"},Is={class:"space-y-2"},Ks={class:"flex gap-2"},Ds={key:0,class:"mt-3"},Ls=["min"],_s={key:1,class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},Ts={class:"flex gap-4"},Ms={class:"flex cursor-pointer items-center"},Ss={class:"flex cursor-pointer items-center"},Rs={class:"flex cursor-pointer items-center"},Vs={class:"flex cursor-pointer items-center"},Ps={class:"mb-2 flex items-center justify-between"},Es=["disabled"],js={class:"grid grid-cols-1 gap-3"},Us={class:"mb-2 flex items-center"},Gs={key:0,class:"space-y-3"},Os={class:"mb-3 flex min-h-[32px] flex-wrap gap-2 rounded-lg border border-gray-200 bg-gray-50 p-2"},qs=["onClick"],Ws={key:0,class:"text-sm text-gray-400"},Bs={class:"space-y-3"},Fs={class:"flex flex-wrap gap-2"},zs=["onClick"],Hs={key:0,class:"text-sm italic text-gray-400"},Ns={class:"flex gap-2"},Ys=["onKeydown"],Qs={class:"mb-2 flex items-center"},Js={key:0,class:"rounded-lg border border-green-200 bg-green-50 p-3 dark:border-green-700 dark:bg-green-900/20"},Xs={class:"space-y-1"},Zs=["id","value"],ea=["for"],ta={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},sa={class:"block text-xs text-gray-500 dark:text-gray-400"},aa={class:"flex gap-3 pt-2"},la=["disabled"],ra={key:0,class:"loading-spinner mr-2"},oa={key:1,class:"fas fa-plus mr-2"},na={__name:"CreateApiKeyModal",props:{accounts:{type:Object,default:()=>({claude:[],gemini:[]})}},emits:["close","success","batch-success"],setup(A,{emit:Q}){const g=A,P=Q,G=Ge(),L=Oe(),_=D(!1),U=D(!1),T=D({claude:[],gemini:[],openai:[],bedrock:[],claudeGroups:[],geminiGroups:[],openaiGroups:[]}),B=D({name:""}),S=D(""),$=D([]),E=N(()=>$.value.filter(h=>!l.tags.includes(h))),a=D([]),l=Te({createType:"single",batchCount:10,name:"",description:"",tokenLimit:"",rateLimitWindow:"",rateLimitRequests:"",concurrencyLimit:"",dailyCostLimit:"",expireDuration:"",customExpireDate:"",expiresAt:null,permissions:"all",claudeAccountId:"",geminiAccountId:"",openaiAccountId:"",bedrockAccountId:"",enableModelRestriction:!1,restrictedModels:[],modelInput:"",enableClientRestriction:!1,allowedClients:[],tags:[]});_e(async()=>{a.value=await G.loadSupportedClients(),$.value=await L.fetchTags(),g.accounts&&(T.value={claude:g.accounts.claude||[],gemini:g.accounts.gemini||[],openai:g.accounts.openai||[],bedrock:g.accounts.bedrock||[],claudeGroups:g.accounts.claudeGroups||[],geminiGroups:g.accounts.geminiGroups||[],openaiGroups:g.accounts.openaiGroups||[]})});const X=async()=>{var h,o;U.value=!0;try{const[x,Z,H,le,ce,pe]=await Promise.all([W.get("/admin/claude-accounts"),W.get("/admin/claude-console-accounts"),W.get("/admin/gemini-accounts"),W.get("/admin/openai-accounts"),W.get("/admin/bedrock-accounts"),W.get("/admin/account-groups")]),ue=[];if(x.success&&((h=x.data)==null||h.forEach(te=>{ue.push({...te,platform:"claude-oauth",isDedicated:te.accountType==="dedicated"})})),Z.success&&((o=Z.data)==null||o.forEach(te=>{ue.push({...te,platform:"claude-console",isDedicated:te.accountType==="dedicated"})})),T.value.claude=ue,H.success&&(T.value.gemini=(H.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),le.success&&(T.value.openai=(le.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),ce.success&&(T.value.bedrock=(ce.data||[]).map(te=>({...te,isDedicated:te.accountType==="dedicated"}))),pe.success){const te=pe.data||[];T.value.claudeGroups=te.filter(de=>de.platform==="claude"),T.value.geminiGroups=te.filter(de=>de.platform==="gemini"),T.value.openaiGroups=te.filter(de=>de.platform==="openai")}q("账号列表已刷新","success")}catch{q("刷新账号列表失败","error")}finally{U.value=!1}},R=N(()=>{const h=new Date;return h.setMinutes(h.getMinutes()+1),h.toISOString().slice(0,16)}),C=()=>{if(!l.expireDuration){l.expiresAt=null;return}if(l.expireDuration==="custom")return;const h=new Date,x=l.expireDuration.match(/(\d+)([dhmy])/);if(x){const[,Z,H]=x,le=parseInt(Z);switch(H){case"d":h.setDate(h.getDate()+le);break;case"h":h.setHours(h.getHours()+le);break;case"m":h.setMonth(h.getMonth()+le);break;case"y":h.setFullYear(h.getFullYear()+le);break}l.expiresAt=h.toISOString()}},f=()=>{l.customExpireDate&&(l.expiresAt=new Date(l.customExpireDate).toISOString())},k=h=>new Date(h).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),u=()=>{l.modelInput&&!l.restrictedModels.includes(l.modelInput)&&(l.restrictedModels.push(l.modelInput),l.modelInput="")},c=h=>{l.restrictedModels.splice(h,1)},b=D(["claude-opus-4-20250514","claude-opus-4-1-20250805"]),ie=N(()=>b.value.filter(h=>!l.restrictedModels.includes(h))),j=h=>{l.restrictedModels.includes(h)||l.restrictedModels.push(h)},n=()=>{if(S.value&&S.value.trim()){const h=S.value.trim();l.tags.includes(h)||l.tags.push(h),S.value=""}},p=h=>{l.tags.includes(h)||l.tags.push(h)},I=h=>{l.tags.splice(h,1)},w=async()=>{if(B.value.name="",!l.name||!l.name.trim()){B.value.name="请输入API Key名称";return}if(l.createType==="batch"&&(!l.batchCount||l.batchCount<2||l.batchCount>500)){q("批量创建数量必须在 2-500 之间","error");return}_.value=!0;try{const h={description:l.description||void 0,tokenLimit:l.tokenLimit!==""&&l.tokenLimit!==null?parseInt(l.tokenLimit):null,rateLimitWindow:l.rateLimitWindow!==""&&l.rateLimitWindow!==null?parseInt(l.rateLimitWindow):null,rateLimitRequests:l.rateLimitRequests!==""&&l.rateLimitRequests!==null?parseInt(l.rateLimitRequests):null,concurrencyLimit:l.concurrencyLimit!==""&&l.concurrencyLimit!==null?parseInt(l.concurrencyLimit):0,dailyCostLimit:l.dailyCostLimit!==""&&l.dailyCostLimit!==null?parseFloat(l.dailyCostLimit):0,expiresAt:l.expiresAt||void 0,permissions:l.permissions,tags:l.tags.length>0?l.tags:void 0,enableModelRestriction:l.enableModelRestriction,restrictedModels:l.restrictedModels,enableClientRestriction:l.enableClientRestriction,allowedClients:l.allowedClients};if(l.claudeAccountId&&(l.claudeAccountId.startsWith("console:")?(h.claudeConsoleAccountId=l.claudeAccountId.substring(8),delete h.claudeAccountId):(h.claudeAccountId=l.claudeAccountId,delete h.claudeConsoleAccountId)),l.geminiAccountId&&(h.geminiAccountId=l.geminiAccountId),l.openaiAccountId&&(h.openaiAccountId=l.openaiAccountId),l.bedrockAccountId&&(h.bedrockAccountId=l.bedrockAccountId),l.createType==="single"){const o={...h,name:l.name},x=await W.post("/admin/api-keys",o);x.success?(q("API Key 创建成功","success"),P("success",x.data),P("close")):q(x.message||"创建失败","error")}else{const o={...h,createType:"batch",baseName:l.name,count:l.batchCount},x=await W.post("/admin/api-keys/batch",o);x.success?(q(`成功创建 ${x.data.length} 个 API Key`,"success"),P("batch-success",x.data),P("close")):q(x.message||"批量创建失败","error")}}catch{q("创建失败","error")}finally{_.value=!1}};return(h,o)=>(r(),re(be,{to:"body"},[e("div",es,[e("div",ts,[e("div",ss,[o[33]||(o[33]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-key text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 创建新的 API Key ")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:o[0]||(o[0]=x=>h.$emit("close"))},o[32]||(o[32]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-4",onSubmit:me(w,["prevent"])},[e("div",as,[e("div",{class:z(["flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",l.createType==="batch"?"mb-3":""])},[o[36]||(o[36]=e("label",{class:"flex h-full items-center text-xs font-semibold text-gray-700 dark:text-gray-300 sm:text-sm"},"创建类型",-1)),e("div",ls,[e("label",rs,[M(e("input",{"onUpdate:modelValue":o[1]||(o[1]=x=>l.createType=x),class:"mr-1.5 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 sm:mr-2",type:"radio",value:"single"},null,512),[[ae,l.createType]]),o[34]||(o[34]=e("span",{class:"flex items-center text-xs text-gray-700 dark:text-gray-300 sm:text-sm"},[e("i",{class:"fas fa-key mr-1 text-xs"}),K(" 单个创建 ")],-1))]),e("label",os,[M(e("input",{"onUpdate:modelValue":o[2]||(o[2]=x=>l.createType=x),class:"mr-1.5 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 sm:mr-2",type:"radio",value:"batch"},null,512),[[ae,l.createType]]),o[35]||(o[35]=e("span",{class:"flex items-center text-xs text-gray-700 dark:text-gray-300 sm:text-sm"},[e("i",{class:"fas fa-layer-group mr-1 text-xs"}),K(" 批量创建 ")],-1))])])],2),l.createType==="batch"?(r(),d("div",ns,[e("div",is,[e("div",ds,[o[38]||(o[38]=e("label",{class:"mb-1 block text-xs font-medium text-gray-600 dark:text-gray-400"},"创建数量",-1)),e("div",us,[M(e("input",{"onUpdate:modelValue":o[3]||(o[3]=x=>l.batchCount=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",max:"500",min:"2",placeholder:"输入数量 (2-500)",required:"",type:"number"},null,512),[[ee,l.batchCount,void 0,{number:!0}]]),o[37]||(o[37]=e("div",{class:"whitespace-nowrap text-xs text-gray-500 dark:text-gray-400"}," 最大支持 500 个 ",-1))])])]),e("p",cs,[o[39]||(o[39]=e("i",{class:"fas fa-info-circle mr-1 mt-0.5 flex-shrink-0"},null,-1)),e("span",null,"批量创建时,每个 Key 的名称会自动添加序号后缀,例如:"+m(l.name||"MyKey")+"_1, "+m(l.name||"MyKey")+"_2 ...",1)])])):v("",!0)]),e("div",null,[o[40]||(o[40]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-2 sm:text-sm"},[K("名称 "),e("span",{class:"text-red-500"},"*")],-1)),M(e("input",{"onUpdate:modelValue":o[4]||(o[4]=x=>l.name=x),class:z(["form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",{"border-red-500":B.value.name}]),placeholder:l.createType==="batch"?"输入基础名称(将自动添加序号)":"为您的 API Key 取一个名称",required:"",type:"text",onInput:o[5]||(o[5]=x=>B.value.name="")},null,42,gs),[[ee,l.name]]),B.value.name?(r(),d("p",ms,m(B.value.name),1)):v("",!0)]),e("div",null,[o[48]||(o[48]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"标签",-1)),e("div",ps,[l.tags.length>0?(r(),d("div",xs,[o[42]||(o[42]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 已选择的标签: ",-1)),e("div",ys,[(r(!0),d(Y,null,J(l.tags,(x,Z)=>(r(),d("span",{key:"selected-"+Z,class:"inline-flex items-center gap-1 rounded-full bg-blue-100 px-3 py-1 text-sm text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},[K(m(x)+" ",1),e("button",{class:"ml-1 hover:text-blue-900 dark:hover:text-blue-300",type:"button",onClick:H=>I(Z)},o[41]||(o[41]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,fs)]))),128))])])):v("",!0),E.value.length>0?(r(),d("div",bs,[o[44]||(o[44]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 点击选择已有标签: ",-1)),e("div",vs,[(r(!0),d(Y,null,J(E.value,x=>(r(),d("button",{key:"available-"+x,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-blue-900/30 dark:hover:text-blue-400",type:"button",onClick:Z=>p(x)},[o[43]||(o[43]=e("i",{class:"fas fa-tag text-xs text-gray-500 dark:text-gray-400"},null,-1)),K(" "+m(x),1)],8,ks))),128))])])):v("",!0),e("div",null,[o[46]||(o[46]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 创建新标签: ",-1)),e("div",ws,[M(e("input",{"onUpdate:modelValue":o[6]||(o[6]=x=>S.value=x),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入新标签名称",type:"text",onKeypress:Le(me(n,["prevent"]),["enter"])},null,40,hs),[[ee,S.value]]),e("button",{class:"rounded-lg bg-green-500 px-4 py-2 text-white transition-colors hover:bg-green-600",type:"button",onClick:n},o[45]||(o[45]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),o[47]||(o[47]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 用于标记不同团队或用途,方便筛选管理 ",-1))])]),e("div",$s,[o[56]||(o[56]=e("div",{class:"mb-2 flex items-center gap-2"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded bg-blue-500"},[e("i",{class:"fas fa-tachometer-alt text-xs text-white"})]),e("h4",{class:"text-sm font-semibold text-gray-800 dark:text-gray-200"}," 速率限制设置 (可选) ")],-1)),e("div",As,[e("div",Cs,[e("div",null,[o[49]||(o[49]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"时间窗口 (分钟)",-1)),M(e("input",{"onUpdate:modelValue":o[7]||(o[7]=x=>l.rateLimitWindow=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,l.rateLimitWindow]]),o[50]||(o[50]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"时间段单位",-1))]),e("div",null,[o[51]||(o[51]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"请求次数限制",-1)),M(e("input",{"onUpdate:modelValue":o[8]||(o[8]=x=>l.rateLimitRequests=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,l.rateLimitRequests]]),o[52]||(o[52]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大请求",-1))]),e("div",null,[o[53]||(o[53]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"Token 限制",-1)),M(e("input",{"onUpdate:modelValue":o[9]||(o[9]=x=>l.tokenLimit=x),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"无限制",type:"number"},null,512),[[ee,l.tokenLimit]]),o[54]||(o[54]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"}," 窗口内最大Token ",-1))])]),o[55]||(o[55]=e("div",{class:"rounded-lg bg-blue-100 p-2 dark:bg-blue-900/30"},[e("h5",{class:"mb-1 text-xs font-semibold text-blue-800 dark:text-blue-400"}," 💡 使用示例 "),e("div",{class:"space-y-0.5 text-xs text-blue-700 dark:text-blue-300"},[e("div",null,[e("strong",null,"示例1:"),K(" 时间窗口=60,请求次数=1000 → 每60分钟最多1000次请求 ")]),e("div",null,[e("strong",null,"示例2:"),K(" 时间窗口=1,Token=10000 → 每分钟最多10,000个Token ")]),e("div",null,[e("strong",null,"示例3:"),K(" 窗口=30,请求=50,Token=100000 → 每30分钟50次请求且不超10万Token ")])])],-1))])]),e("div",null,[o[58]||(o[58]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日费用限制 (美元)",-1)),e("div",Is,[e("div",Ks,[e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[10]||(o[10]=x=>l.dailyCostLimit="50")}," $50 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[11]||(o[11]=x=>l.dailyCostLimit="100")}," $100 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[12]||(o[12]=x=>l.dailyCostLimit="200")}," $200 "),e("button",{class:"rounded bg-gray-100 px-2 py-1 text-xs font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[13]||(o[13]=x=>l.dailyCostLimit="")}," 自定义 ")]),M(e("input",{"onUpdate:modelValue":o[14]||(o[14]=x=>l.dailyCostLimit=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[ee,l.dailyCostLimit]]),o[57]||(o[57]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 每日的费用限制,超过限制将拒绝请求,0 或留空表示无限制 ",-1))])]),e("div",null,[o[59]||(o[59]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"并发限制 (可选)",-1)),M(e("input",{"onUpdate:modelValue":o[15]||(o[15]=x=>l.concurrencyLimit=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",type:"number"},null,512),[[ee,l.concurrencyLimit]]),o[60]||(o[60]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 可同时处理的最大请求数,0 或留空表示无限制 ",-1))]),e("div",null,[o[61]||(o[61]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"备注 (可选)",-1)),M(e("textarea",{"onUpdate:modelValue":o[16]||(o[16]=x=>l.description=x),class:"form-input w-full resize-none text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"描述此 API Key 的用途...",rows:"2"},null,512),[[ee,l.description]])]),e("div",null,[o[63]||(o[63]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"有效期限",-1)),M(e("select",{"onUpdate:modelValue":o[17]||(o[17]=x=>l.expireDuration=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",onChange:C},o[62]||(o[62]=[e("option",{value:""},"永不过期",-1),e("option",{value:"1d"},"1 天",-1),e("option",{value:"7d"},"7 天",-1),e("option",{value:"30d"},"30 天",-1),e("option",{value:"90d"},"90 天",-1),e("option",{value:"180d"},"180 天",-1),e("option",{value:"365d"},"365 天",-1),e("option",{value:"custom"},"自定义日期",-1)]),544),[[$e,l.expireDuration]]),l.expireDuration==="custom"?(r(),d("div",Ds,[M(e("input",{"onUpdate:modelValue":o[18]||(o[18]=x=>l.customExpireDate=x),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",min:R.value,type:"datetime-local",onChange:f},null,40,Ls),[[ee,l.customExpireDate]])])):v("",!0),l.expiresAt?(r(),d("p",_s," 将于 "+m(k(l.expiresAt))+" 过期 ",1)):v("",!0)]),e("div",null,[o[68]||(o[68]=e("label",{class:"mb-2 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"服务权限",-1)),e("div",Ts,[e("label",Ms,[M(e("input",{"onUpdate:modelValue":o[19]||(o[19]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"all"},null,512),[[ae,l.permissions]]),o[64]||(o[64]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"全部服务",-1))]),e("label",Ss,[M(e("input",{"onUpdate:modelValue":o[20]||(o[20]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[ae,l.permissions]]),o[65]||(o[65]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Claude",-1))]),e("label",Rs,[M(e("input",{"onUpdate:modelValue":o[21]||(o[21]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[ae,l.permissions]]),o[66]||(o[66]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Gemini",-1))]),e("label",Vs,[M(e("input",{"onUpdate:modelValue":o[22]||(o[22]=x=>l.permissions=x),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[ae,l.permissions]]),o[67]||(o[67]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 OpenAI",-1))])]),o[69]||(o[69]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 控制此 API Key 可以访问哪些服务 ",-1))]),e("div",null,[e("div",Ps,[o[70]||(o[70]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"专属账号绑定 (可选)",-1)),e("button",{class:"flex items-center gap-1 text-sm text-blue-600 transition-colors hover:text-blue-800 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-400 dark:hover:text-blue-300",disabled:U.value,title:"刷新账号列表",type:"button",onClick:X},[e("i",{class:z(["fas",U.value?"fa-spinner fa-spin":"fa-sync-alt","text-xs"])},null,2),e("span",null,m(U.value?"刷新中...":"刷新账号"),1)],8,Es)]),e("div",js,[e("div",null,[o[71]||(o[71]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Claude 专属账号",-1)),ne(we,{modelValue:l.claudeAccountId,"onUpdate:modelValue":o[23]||(o[23]=x=>l.claudeAccountId=x),accounts:T.value.claude,"default-option-text":"使用共享账号池",disabled:l.permissions==="gemini"||l.permissions==="openai",groups:T.value.claudeGroups,placeholder:"请选择Claude账号",platform:"claude"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[72]||(o[72]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Gemini 专属账号",-1)),ne(we,{modelValue:l.geminiAccountId,"onUpdate:modelValue":o[24]||(o[24]=x=>l.geminiAccountId=x),accounts:T.value.gemini,"default-option-text":"使用共享账号池",disabled:l.permissions==="claude"||l.permissions==="openai",groups:T.value.geminiGroups,placeholder:"请选择Gemini账号",platform:"gemini"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[73]||(o[73]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"OpenAI 专属账号",-1)),ne(we,{modelValue:l.openaiAccountId,"onUpdate:modelValue":o[25]||(o[25]=x=>l.openaiAccountId=x),accounts:T.value.openai,"default-option-text":"使用共享账号池",disabled:l.permissions==="claude"||l.permissions==="gemini",groups:T.value.openaiGroups,placeholder:"请选择OpenAI账号",platform:"openai"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[o[74]||(o[74]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Bedrock 专属账号",-1)),ne(we,{modelValue:l.bedrockAccountId,"onUpdate:modelValue":o[26]||(o[26]=x=>l.bedrockAccountId=x),accounts:T.value.bedrock,"default-option-text":"使用共享账号池",disabled:l.permissions==="gemini"||l.permissions==="openai",groups:[],placeholder:"请选择Bedrock账号",platform:"bedrock"},null,8,["modelValue","accounts","disabled"])])]),o[75]||(o[75]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 选择专属账号后,此API Key将只使用该账号,不选择则使用共享账号池 ",-1))]),e("div",null,[e("div",Us,[M(e("input",{id:"enableModelRestriction","onUpdate:modelValue":o[27]||(o[27]=x=>l.enableModelRestriction=x),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ye,l.enableModelRestriction]]),o[76]||(o[76]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"enableModelRestriction"}," 启用模型限制 ",-1))]),l.enableModelRestriction?(r(),d("div",Gs,[e("div",null,[o[79]||(o[79]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600"},"限制的模型列表",-1)),e("div",Os,[(r(!0),d(Y,null,J(l.restrictedModels,(x,Z)=>(r(),d("span",{key:Z,class:"inline-flex items-center rounded-full bg-red-100 px-3 py-1 text-sm text-red-800"},[K(m(x)+" ",1),e("button",{class:"ml-2 text-red-600 hover:text-red-800",type:"button",onClick:H=>c(Z)},o[77]||(o[77]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,qs)]))),128)),l.restrictedModels.length===0?(r(),d("span",Ws," 暂无限制的模型 ")):v("",!0)]),e("div",Bs,[e("div",Fs,[(r(!0),d(Y,null,J(ie.value,x=>(r(),d("button",{key:x,class:"flex-shrink-0 rounded-lg bg-gray-100 px-3 py-1 text-xs text-gray-700 transition-colors hover:bg-gray-200 sm:text-sm",type:"button",onClick:Z=>j(x)},m(x),9,zs))),128)),ie.value.length===0?(r(),d("span",Hs," 所有常用模型已在限制列表中 ")):v("",!0)]),e("div",Ns,[M(e("input",{"onUpdate:modelValue":o[28]||(o[28]=x=>l.modelInput=x),class:"form-input flex-1",placeholder:"输入模型名称,按回车添加",type:"text",onKeydown:Le(me(u,["prevent"]),["enter"])},null,40,Ys),[[ee,l.modelInput]]),e("button",{class:"rounded-lg bg-red-500 px-4 py-2 text-white transition-colors hover:bg-red-600",type:"button",onClick:u},o[78]||(o[78]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),o[80]||(o[80]=e("p",{class:"mt-2 text-xs text-gray-500"}," 设置此API Key无法访问的模型,例如:claude-opus-4-20250514 ",-1))])])):v("",!0)]),e("div",null,[e("div",Qs,[M(e("input",{id:"enableClientRestriction","onUpdate:modelValue":o[29]||(o[29]=x=>l.enableClientRestriction=x),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox"},null,512),[[ye,l.enableClientRestriction]]),o[81]||(o[81]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"enableClientRestriction"}," 启用客户端限制 ",-1))]),l.enableClientRestriction?(r(),d("div",Js,[e("div",null,[o[82]||(o[82]=e("label",{class:"mb-2 block text-xs font-medium text-gray-700 dark:text-gray-300"},"允许的客户端",-1)),e("div",Xs,[(r(!0),d(Y,null,J(a.value,x=>(r(),d("div",{key:x.id,class:"flex items-start"},[M(e("input",{id:`client_${x.id}`,"onUpdate:modelValue":o[30]||(o[30]=Z=>l.allowedClients=Z),class:"mt-0.5 h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox",value:x.id},null,8,Zs),[[ye,l.allowedClients]]),e("label",{class:"ml-2 flex-1 cursor-pointer",for:`client_${x.id}`},[e("span",ta,m(x.name),1),e("span",sa,m(x.description),1)],8,ea)]))),128))])])])):v("",!0)]),e("div",aa,[e("button",{class:"flex-1 rounded-lg bg-gray-100 px-4 py-2.5 text-sm font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:o[31]||(o[31]=x=>h.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-4 py-2.5 text-sm font-semibold",disabled:_.value,type:"submit"},[_.value?(r(),d("div",ra)):(r(),d("i",oa)),K(" "+m(_.value?"创建中...":"创建"),1)],8,la)])],32)])])]))}},ia=fe(na,[["__scopeId","data-v-6d814316"]]),da={class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},ua={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-4xl flex-col p-4 sm:p-6 md:p-8"},ca={class:"mb-4 flex items-center justify-between sm:mb-6"},ga=["value"],ma={class:"space-y-4"},pa={key:0},xa={class:"flex flex-wrap gap-2"},ya=["onClick"],fa={key:1},ba={class:"flex flex-wrap gap-2"},va=["onClick"],ka={class:"flex gap-2"},wa=["onKeypress"],ha={class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-700 dark:bg-blue-900/20"},$a={class:"space-y-2"},Aa={class:"grid grid-cols-1 gap-2 lg:grid-cols-3"},Ca={class:"space-y-3"},Ia={class:"flex gap-2"},Ka={class:"mb-3 flex items-center"},Da={class:"flex gap-4"},La={class:"flex cursor-pointer items-center"},_a={class:"flex cursor-pointer items-center"},Ta={class:"flex cursor-pointer items-center"},Ma={class:"flex cursor-pointer items-center"},Sa={class:"mb-3 flex items-center justify-between"},Ra=["disabled"],Va={class:"grid grid-cols-1 gap-3"},Pa={class:"mb-3 flex items-center"},Ea={key:0,class:"space-y-3"},ja={class:"mb-3 flex min-h-[32px] flex-wrap gap-2 rounded-lg border border-gray-200 bg-gray-50 p-2 dark:border-gray-600 dark:bg-gray-700"},Ua=["onClick"],Ga={key:0,class:"text-sm text-gray-400 dark:text-gray-500"},Oa={class:"space-y-3"},qa={class:"flex flex-wrap gap-2"},Wa=["onClick"],Ba={key:0,class:"text-sm italic text-gray-400 dark:text-gray-500"},Fa={class:"flex gap-2"},za=["onKeydown"],Ha={class:"mb-3 flex items-center"},Na={key:0,class:"space-y-3"},Ya={class:"space-y-2"},Qa=["id","value"],Ja=["for"],Xa={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Za={class:"block text-xs text-gray-500 dark:text-gray-400"},el={class:"flex gap-3 pt-4"},tl=["disabled"],sl={key:0,class:"loading-spinner mr-2"},al={key:1,class:"fas fa-save mr-2"},ll={__name:"EditApiKeyModal",props:{apiKey:{type:Object,required:!0},accounts:{type:Object,default:()=>({claude:[],gemini:[]})}},emits:["close","success"],setup(A,{emit:Q}){const g=A,P=Q,G=Ge(),L=Oe(),_=D(!1),U=D(!1),T=D({claude:[],gemini:[],openai:[],bedrock:[],claudeGroups:[],geminiGroups:[],openaiGroups:[]}),B=D([]),S=D(""),$=D([]),E=N(()=>$.value.filter(j=>!a.tags.includes(j))),a=Te({name:"",tokenLimit:"",rateLimitWindow:"",rateLimitRequests:"",concurrencyLimit:"",dailyCostLimit:"",permissions:"all",claudeAccountId:"",geminiAccountId:"",openaiAccountId:"",bedrockAccountId:"",enableModelRestriction:!1,restrictedModels:[],modelInput:"",enableClientRestriction:!1,allowedClients:[],tags:[],isActive:!0}),l=()=>{a.modelInput&&!a.restrictedModels.includes(a.modelInput)&&(a.restrictedModels.push(a.modelInput),a.modelInput="")},X=j=>{a.restrictedModels.splice(j,1)},R=D(["claude-opus-4-20250514","claude-opus-4-1-20250805"]),C=N(()=>R.value.filter(j=>!a.restrictedModels.includes(j))),f=j=>{a.restrictedModels.includes(j)||a.restrictedModels.push(j)},k=()=>{if(S.value&&S.value.trim()){const j=S.value.trim();a.tags.includes(j)||a.tags.push(j),S.value=""}},u=j=>{a.tags.includes(j)||a.tags.push(j)},c=j=>{a.tags.splice(j,1)},b=async()=>{_.value=!0;try{const j={tokenLimit:a.tokenLimit!==""&&a.tokenLimit!==null?parseInt(a.tokenLimit):0,rateLimitWindow:a.rateLimitWindow!==""&&a.rateLimitWindow!==null?parseInt(a.rateLimitWindow):0,rateLimitRequests:a.rateLimitRequests!==""&&a.rateLimitRequests!==null?parseInt(a.rateLimitRequests):0,concurrencyLimit:a.concurrencyLimit!==""&&a.concurrencyLimit!==null?parseInt(a.concurrencyLimit):0,dailyCostLimit:a.dailyCostLimit!==""&&a.dailyCostLimit!==null?parseFloat(a.dailyCostLimit):0,permissions:a.permissions,tags:a.tags};a.claudeAccountId?a.claudeAccountId.startsWith("console:")?(j.claudeConsoleAccountId=a.claudeAccountId.substring(8),j.claudeAccountId=null):(a.claudeAccountId.startsWith("group:"),j.claudeAccountId=a.claudeAccountId,j.claudeConsoleAccountId=null):(j.claudeAccountId=null,j.claudeConsoleAccountId=null),a.geminiAccountId?j.geminiAccountId=a.geminiAccountId:j.geminiAccountId=null,a.openaiAccountId?j.openaiAccountId=a.openaiAccountId:j.openaiAccountId=null,a.bedrockAccountId?j.bedrockAccountId=a.bedrockAccountId:j.bedrockAccountId=null,j.enableModelRestriction=a.enableModelRestriction,j.restrictedModels=a.restrictedModels,j.enableClientRestriction=a.enableClientRestriction,j.allowedClients=a.allowedClients,j.isActive=a.isActive;const n=await W.put(`/admin/api-keys/${g.apiKey.id}`,j);n.success?(P("success"),P("close")):q(n.message||"更新失败","error")}catch{q("更新失败","error")}finally{_.value=!1}},ie=async()=>{var j,n;U.value=!0;try{const[p,I,w,h,o,x]=await Promise.all([W.get("/admin/claude-accounts"),W.get("/admin/claude-console-accounts"),W.get("/admin/gemini-accounts"),W.get("/admin/openai-accounts"),W.get("/admin/bedrock-accounts"),W.get("/admin/account-groups")]),Z=[];if(p.success&&((j=p.data)==null||j.forEach(H=>{Z.push({...H,platform:"claude-oauth",isDedicated:H.accountType==="dedicated"})})),I.success&&((n=I.data)==null||n.forEach(H=>{Z.push({...H,platform:"claude-console",isDedicated:H.accountType==="dedicated"})})),T.value.claude=Z,w.success&&(T.value.gemini=(w.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),h.success&&(T.value.openai=(h.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),o.success&&(T.value.bedrock=(o.data||[]).map(H=>({...H,isDedicated:H.accountType==="dedicated"}))),x.success){const H=x.data||[];T.value.claudeGroups=H.filter(le=>le.platform==="claude"),T.value.geminiGroups=H.filter(le=>le.platform==="gemini"),T.value.openaiGroups=H.filter(le=>le.platform==="openai")}q("账号列表已刷新","success")}catch{q("刷新账号列表失败","error")}finally{U.value=!1}};return _e(async()=>{B.value=await G.loadSupportedClients(),$.value=await L.fetchTags(),g.accounts&&(T.value={claude:g.accounts.claude||[],gemini:g.accounts.gemini||[],openai:g.accounts.openai||[],bedrock:g.accounts.bedrock||[],claudeGroups:g.accounts.claudeGroups||[],geminiGroups:g.accounts.geminiGroups||[],openaiGroups:g.accounts.openaiGroups||[]}),a.name=g.apiKey.name,a.tokenLimit=g.apiKey.tokenLimit||"",a.rateLimitWindow=g.apiKey.rateLimitWindow||"",a.rateLimitRequests=g.apiKey.rateLimitRequests||"",a.concurrencyLimit=g.apiKey.concurrencyLimit||"",a.dailyCostLimit=g.apiKey.dailyCostLimit||"",a.permissions=g.apiKey.permissions||"all",g.apiKey.claudeConsoleAccountId?a.claudeAccountId=`console:${g.apiKey.claudeConsoleAccountId}`:a.claudeAccountId=g.apiKey.claudeAccountId||"",a.geminiAccountId=g.apiKey.geminiAccountId||"",a.openaiAccountId=g.apiKey.openaiAccountId||"",a.bedrockAccountId=g.apiKey.bedrockAccountId||"",a.restrictedModels=g.apiKey.restrictedModels||[],a.allowedClients=g.apiKey.allowedClients||[],a.tags=g.apiKey.tags||[],a.enableModelRestriction=g.apiKey.enableModelRestriction||!1,a.enableClientRestriction=g.apiKey.enableClientRestriction||!1,a.isActive=g.apiKey.isActive!==void 0?g.apiKey.isActive:!0}),(j,n)=>(r(),re(be,{to:"body"},[e("div",da,[e("div",ua,[e("div",ca,[n[26]||(n[26]=e("div",{class:"flex items-center gap-2 sm:gap-3"},[e("div",{class:"flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 sm:h-10 sm:w-10 sm:rounded-xl"},[e("i",{class:"fas fa-edit text-sm text-white sm:text-base"})]),e("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 编辑 API Key ")],-1)),e("button",{class:"p-1 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300",onClick:n[0]||(n[0]=p=>j.$emit("close"))},n[25]||(n[25]=[e("i",{class:"fas fa-times text-lg sm:text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-4 sm:space-y-6",onSubmit:me(b,["prevent"])},[e("div",null,[n[27]||(n[27]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"},"名称",-1)),e("input",{class:"form-input w-full cursor-not-allowed bg-gray-100 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-gray-400",disabled:"",type:"text",value:a.name},null,8,ga),n[28]||(n[28]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400 sm:mt-2"},"名称不可修改",-1))]),e("div",null,[n[36]||(n[36]=e("label",{class:"mb-1.5 block text-xs font-semibold text-gray-700 dark:text-gray-300 sm:mb-3 sm:text-sm"},"标签",-1)),e("div",ma,[a.tags.length>0?(r(),d("div",pa,[n[30]||(n[30]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 已选择的标签: ",-1)),e("div",xa,[(r(!0),d(Y,null,J(a.tags,(p,I)=>(r(),d("span",{key:"selected-"+I,class:"inline-flex items-center gap-1 rounded-full bg-blue-100 px-3 py-1 text-sm text-blue-800 dark:bg-blue-900/30 dark:text-blue-400"},[K(m(p)+" ",1),e("button",{class:"ml-1 hover:text-blue-900 dark:hover:text-blue-300",type:"button",onClick:w=>c(I)},n[29]||(n[29]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,ya)]))),128))])])):v("",!0),E.value.length>0?(r(),d("div",fa,[n[32]||(n[32]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 点击选择已有标签: ",-1)),e("div",ba,[(r(!0),d(Y,null,J(E.value,p=>(r(),d("button",{key:"available-"+p,class:"inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-blue-100 hover:text-blue-700 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-blue-900/30 dark:hover:text-blue-400",type:"button",onClick:I=>u(p)},[n[31]||(n[31]=e("i",{class:"fas fa-tag text-xs text-gray-500 dark:text-gray-400"},null,-1)),K(" "+m(p),1)],8,va))),128))])])):v("",!0),e("div",null,[n[34]||(n[34]=e("div",{class:"mb-2 text-xs font-medium text-gray-600 dark:text-gray-400"}," 创建新标签: ",-1)),e("div",ka,[M(e("input",{"onUpdate:modelValue":n[1]||(n[1]=p=>S.value=p),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入新标签名称",type:"text",onKeypress:Le(me(k,["prevent"]),["enter"])},null,40,wa),[[ee,S.value]]),e("button",{class:"rounded-lg bg-green-500 px-4 py-2 text-white transition-colors hover:bg-green-600",type:"button",onClick:k},n[33]||(n[33]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),n[35]||(n[35]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 用于标记不同团队或用途,方便筛选管理 ",-1))])]),e("div",ha,[n[44]||(n[44]=e("div",{class:"mb-2 flex items-center gap-2"},[e("div",{class:"flex h-6 w-6 flex-shrink-0 items-center justify-center rounded bg-blue-500"},[e("i",{class:"fas fa-tachometer-alt text-xs text-white"})]),e("h4",{class:"text-sm font-semibold text-gray-800 dark:text-gray-200"}," 速率限制设置 (可选) ")],-1)),e("div",$a,[e("div",Aa,[e("div",null,[n[37]||(n[37]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"时间窗口 (分钟)",-1)),M(e("input",{"onUpdate:modelValue":n[2]||(n[2]=p=>a.rateLimitWindow=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,a.rateLimitWindow]]),n[38]||(n[38]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"时间段单位",-1))]),e("div",null,[n[39]||(n[39]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"请求次数限制",-1)),M(e("input",{"onUpdate:modelValue":n[3]||(n[3]=p=>a.rateLimitRequests=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"1",placeholder:"无限制",type:"number"},null,512),[[ee,a.rateLimitRequests]]),n[40]||(n[40]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"},"窗口内最大请求",-1))]),e("div",null,[n[41]||(n[41]=e("label",{class:"mb-1 block text-xs font-medium text-gray-700 dark:text-gray-300"},"Token 限制",-1)),M(e("input",{"onUpdate:modelValue":n[4]||(n[4]=p=>a.tokenLimit=p),class:"form-input w-full text-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"无限制",type:"number"},null,512),[[ee,a.tokenLimit]]),n[42]||(n[42]=e("p",{class:"ml-2 mt-0.5 text-xs text-gray-500 dark:text-gray-400"}," 窗口内最大Token ",-1))])]),n[43]||(n[43]=e("div",{class:"rounded-lg bg-blue-100 p-2 dark:bg-blue-900/30"},[e("h5",{class:"mb-1 text-xs font-semibold text-blue-800 dark:text-blue-400"}," 💡 使用示例 "),e("div",{class:"space-y-0.5 text-xs text-blue-700 dark:text-blue-300"},[e("div",null,[e("strong",null,"示例1:"),K(" 时间窗口=60,请求次数=1000 → 每60分钟最多1000次请求 ")]),e("div",null,[e("strong",null,"示例2:"),K(" 时间窗口=1,Token=10000 → 每分钟最多10,000个Token ")]),e("div",null,[e("strong",null,"示例3:"),K(" 窗口=30,请求=50,Token=100000 → 每30分钟50次请求且不超10万Token ")])])],-1))])]),e("div",null,[n[46]||(n[46]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"每日费用限制 (美元)",-1)),e("div",Ca,[e("div",Ia,[e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[5]||(n[5]=p=>a.dailyCostLimit="50")}," $50 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[6]||(n[6]=p=>a.dailyCostLimit="100")}," $100 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[7]||(n[7]=p=>a.dailyCostLimit="200")}," $200 "),e("button",{class:"rounded-lg bg-gray-100 px-3 py-1 text-sm font-medium hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[8]||(n[8]=p=>a.dailyCostLimit="")}," 自定义 ")]),M(e("input",{"onUpdate:modelValue":n[9]||(n[9]=p=>a.dailyCostLimit=p),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",step:"0.01",type:"number"},null,512),[[ee,a.dailyCostLimit]]),n[45]||(n[45]=e("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 每日的费用限制,超过限制将拒绝请求,0 或留空表示无限制 ",-1))])]),e("div",null,[n[47]||(n[47]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"并发限制",-1)),M(e("input",{"onUpdate:modelValue":n[10]||(n[10]=p=>a.concurrencyLimit=p),class:"form-input w-full dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",min:"0",placeholder:"0 表示无限制",type:"number"},null,512),[[ee,a.concurrencyLimit]]),n[48]||(n[48]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此 API Key 可同时处理的最大请求数 ",-1))]),e("div",null,[e("div",Ka,[M(e("input",{id:"editIsActive","onUpdate:modelValue":n[11]||(n[11]=p=>a.isActive=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.isActive]]),n[49]||(n[49]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editIsActive"}," 激活账号 ",-1))]),n[50]||(n[50]=e("p",{class:"mb-4 text-xs text-gray-500 dark:text-gray-400"}," 取消勾选将禁用此 API Key,暂停所有请求,客户端返回 401 错误 ",-1))]),e("div",null,[n[55]||(n[55]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"服务权限",-1)),e("div",Da,[e("label",La,[M(e("input",{"onUpdate:modelValue":n[12]||(n[12]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"all"},null,512),[[ae,a.permissions]]),n[51]||(n[51]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"全部服务",-1))]),e("label",_a,[M(e("input",{"onUpdate:modelValue":n[13]||(n[13]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"claude"},null,512),[[ae,a.permissions]]),n[52]||(n[52]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Claude",-1))]),e("label",Ta,[M(e("input",{"onUpdate:modelValue":n[14]||(n[14]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"gemini"},null,512),[[ae,a.permissions]]),n[53]||(n[53]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 Gemini",-1))]),e("label",Ma,[M(e("input",{"onUpdate:modelValue":n[15]||(n[15]=p=>a.permissions=p),class:"mr-2 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"radio",value:"openai"},null,512),[[ae,a.permissions]]),n[54]||(n[54]=e("span",{class:"text-sm text-gray-700 dark:text-gray-300"},"仅 OpenAI",-1))])]),n[56]||(n[56]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 控制此 API Key 可以访问哪些服务 ",-1))]),e("div",null,[e("div",Sa,[n[57]||(n[57]=e("label",{class:"text-sm font-semibold text-gray-700 dark:text-gray-300"},"专属账号绑定",-1)),e("button",{class:"flex items-center gap-1 text-sm text-blue-600 transition-colors hover:text-blue-800 disabled:cursor-not-allowed disabled:opacity-50 dark:text-blue-400 dark:hover:text-blue-300",disabled:U.value,title:"刷新账号列表",type:"button",onClick:ie},[e("i",{class:z(["fas",U.value?"fa-spinner fa-spin":"fa-sync-alt","text-xs"])},null,2),e("span",null,m(U.value?"刷新中...":"刷新账号"),1)],8,Ra)]),e("div",Va,[e("div",null,[n[58]||(n[58]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Claude 专属账号",-1)),ne(we,{modelValue:a.claudeAccountId,"onUpdate:modelValue":n[16]||(n[16]=p=>a.claudeAccountId=p),accounts:T.value.claude,"default-option-text":"使用共享账号池",disabled:a.permissions==="gemini"||a.permissions==="openai",groups:T.value.claudeGroups,placeholder:"请选择Claude账号",platform:"claude"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[59]||(n[59]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Gemini 专属账号",-1)),ne(we,{modelValue:a.geminiAccountId,"onUpdate:modelValue":n[17]||(n[17]=p=>a.geminiAccountId=p),accounts:T.value.gemini,"default-option-text":"使用共享账号池",disabled:a.permissions==="claude"||a.permissions==="openai",groups:T.value.geminiGroups,placeholder:"请选择Gemini账号",platform:"gemini"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[60]||(n[60]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"OpenAI 专属账号",-1)),ne(we,{modelValue:a.openaiAccountId,"onUpdate:modelValue":n[18]||(n[18]=p=>a.openaiAccountId=p),accounts:T.value.openai,"default-option-text":"使用共享账号池",disabled:a.permissions==="claude"||a.permissions==="gemini",groups:T.value.openaiGroups,placeholder:"请选择OpenAI账号",platform:"openai"},null,8,["modelValue","accounts","disabled","groups"])]),e("div",null,[n[61]||(n[61]=e("label",{class:"mb-1 block text-sm font-medium text-gray-600 dark:text-gray-400"},"Bedrock 专属账号",-1)),ne(we,{modelValue:a.bedrockAccountId,"onUpdate:modelValue":n[19]||(n[19]=p=>a.bedrockAccountId=p),accounts:T.value.bedrock,"default-option-text":"使用共享账号池",disabled:a.permissions==="gemini"||a.permissions==="openai",groups:[],placeholder:"请选择Bedrock账号",platform:"bedrock"},null,8,["modelValue","accounts","disabled"])])]),n[62]||(n[62]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 修改绑定账号将影响此API Key的请求路由 ",-1))]),e("div",null,[e("div",Pa,[M(e("input",{id:"editEnableModelRestriction","onUpdate:modelValue":n[20]||(n[20]=p=>a.enableModelRestriction=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.enableModelRestriction]]),n[63]||(n[63]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editEnableModelRestriction"}," 启用模型限制 ",-1))]),a.enableModelRestriction?(r(),d("div",Ea,[e("div",null,[n[66]||(n[66]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600 dark:text-gray-400"},"限制的模型列表",-1)),e("div",ja,[(r(!0),d(Y,null,J(a.restrictedModels,(p,I)=>(r(),d("span",{key:I,class:"inline-flex items-center rounded-full bg-red-100 px-3 py-1 text-sm text-red-800 dark:bg-red-900/30 dark:text-red-400"},[K(m(p)+" ",1),e("button",{class:"ml-2 text-red-600 hover:text-red-800 dark:text-red-400 dark:hover:text-red-300",type:"button",onClick:w=>X(I)},n[64]||(n[64]=[e("i",{class:"fas fa-times text-xs"},null,-1)]),8,Ua)]))),128)),a.restrictedModels.length===0?(r(),d("span",Ga," 暂无限制的模型 ")):v("",!0)]),e("div",Oa,[e("div",qa,[(r(!0),d(Y,null,J(C.value,p=>(r(),d("button",{key:p,class:"flex-shrink-0 rounded-lg bg-gray-100 px-3 py-1 text-xs text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600 sm:text-sm",type:"button",onClick:I=>f(p)},m(p),9,Wa))),128)),C.value.length===0?(r(),d("span",Ba," 所有常用模型已在限制列表中 ")):v("",!0)]),e("div",Fa,[M(e("input",{"onUpdate:modelValue":n[21]||(n[21]=p=>a.modelInput=p),class:"form-input flex-1 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200 dark:placeholder-gray-400",placeholder:"输入模型名称,按回车添加",type:"text",onKeydown:Le(me(l,["prevent"]),["enter"])},null,40,za),[[ee,a.modelInput]]),e("button",{class:"rounded-lg bg-red-500 px-4 py-2 text-white transition-colors hover:bg-red-600",type:"button",onClick:l},n[65]||(n[65]=[e("i",{class:"fas fa-plus"},null,-1)]))])]),n[67]||(n[67]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 设置此API Key无法访问的模型,例如:claude-opus-4-20250514 ",-1))])])):v("",!0)]),e("div",null,[e("div",Ha,[M(e("input",{id:"editEnableClientRestriction","onUpdate:modelValue":n[22]||(n[22]=p=>a.enableClientRestriction=p),class:"h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700",type:"checkbox"},null,512),[[ye,a.enableClientRestriction]]),n[68]||(n[68]=e("label",{class:"ml-2 cursor-pointer text-sm font-semibold text-gray-700 dark:text-gray-300",for:"editEnableClientRestriction"}," 启用客户端限制 ",-1))]),a.enableClientRestriction?(r(),d("div",Na,[e("div",null,[n[69]||(n[69]=e("label",{class:"mb-2 block text-sm font-medium text-gray-600 dark:text-gray-400"},"允许的客户端",-1)),n[70]||(n[70]=e("p",{class:"mb-3 text-xs text-gray-500 dark:text-gray-400"}," 勾选允许使用此API Key的客户端 ",-1)),e("div",Ya,[(r(!0),d(Y,null,J(B.value,p=>(r(),d("div",{key:p.id,class:"flex items-start"},[M(e("input",{id:`edit_client_${p.id}`,"onUpdate:modelValue":n[23]||(n[23]=I=>a.allowedClients=I),class:"mt-0.5 h-4 w-4 rounded border-gray-300 bg-gray-100 text-blue-600 focus:ring-blue-500",type:"checkbox",value:p.id},null,8,Qa),[[ye,a.allowedClients]]),e("label",{class:"ml-2 flex-1 cursor-pointer",for:`edit_client_${p.id}`},[e("span",Xa,m(p.name),1),e("span",Za,m(p.description),1)],8,Ja)]))),128))])])])):v("",!0)]),e("div",el,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:n[24]||(n[24]=p=>j.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:_.value,type:"submit"},[_.value?(r(),d("div",sl)):(r(),d("i",al)),K(" "+m(_.value?"保存中...":"保存修改"),1)],8,tl)])],32)])])]))}},rl=fe(ll,[["__scopeId","data-v-709438db"]]),ol={class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},nl={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-md flex-col p-8"},il={class:"mb-6 flex items-center justify-between"},dl={class:"modal-scroll-content custom-scrollbar flex-1 space-y-6"},ul={class:"rounded-lg border border-blue-200 bg-blue-50 p-4"},cl={class:"flex items-start gap-3"},gl={class:"text-sm text-gray-700"},ml={class:"mt-1 text-xs text-gray-600"},pl={key:0,class:"mt-3"},xl=["min"],yl={key:1,class:"mt-2 text-xs text-gray-500"},fl={class:"flex gap-3 pt-4"},bl=["disabled"],vl={key:0,class:"loading-spinner mr-2"},kl={key:1,class:"fas fa-clock mr-2"},wl={__name:"RenewApiKeyModal",props:{apiKey:{type:Object,required:!0}},emits:["close","success"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=Te({renewDuration:"30d",customExpireDate:"",newExpiresAt:null}),_=N(()=>{const $=new Date;return g.apiKey.expiresAt&&new Date(g.apiKey.expiresAt)>$?new Date(g.apiKey.expiresAt).toISOString().slice(0,16):($.setMinutes($.getMinutes()+1),$.toISOString().slice(0,16))}),U=$=>new Date($).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),T=()=>{if(!L.renewDuration){L.newExpiresAt=null;return}if(L.renewDuration==="permanent"){L.newExpiresAt=null;return}if(L.renewDuration==="custom")return;const $=g.apiKey.expiresAt&&new Date(g.apiKey.expiresAt)>new Date?new Date(g.apiKey.expiresAt):new Date,a=L.renewDuration.match(/(\d+)([dhmy])/);if(a){const[,l,X]=a,R=parseInt(l);switch(X){case"d":$.setDate($.getDate()+R);break;case"h":$.setHours($.getHours()+R);break;case"m":$.setMonth($.getMonth()+R);break;case"y":$.setFullYear($.getFullYear()+R);break}L.newExpiresAt=$.toISOString()}},B=()=>{L.customExpireDate&&(L.newExpiresAt=new Date(L.customExpireDate).toISOString())},S=async()=>{G.value=!0;try{const $={expiresAt:L.renewDuration==="permanent"?null:L.newExpiresAt},E=await W.put(`/admin/api-keys/${g.apiKey.id}`,$);E.success?(q("API Key 续期成功","success"),P("success"),P("close")):q(E.message||"续期失败","error")}catch{q("续期失败","error")}finally{G.value=!1}};return T(),($,E)=>(r(),re(be,{to:"body"},[e("div",ol,[e("div",nl,[e("div",il,[E[5]||(E[5]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-green-500 to-green-600"},[e("i",{class:"fas fa-clock text-white"})]),e("h3",{class:"text-xl font-bold text-gray-900"},"续期 API Key")],-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600",onClick:E[0]||(E[0]=a=>$.$emit("close"))},E[4]||(E[4]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("div",dl,[e("div",ul,[e("div",cl,[E[7]||(E[7]=e("div",{class:"flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg bg-blue-500"},[e("i",{class:"fas fa-info text-sm text-white"})],-1)),e("div",null,[E[6]||(E[6]=e("h4",{class:"mb-1 font-semibold text-gray-800"},"API Key 信息",-1)),e("p",gl,m(A.apiKey.name),1),e("p",ml," 当前过期时间:"+m(A.apiKey.expiresAt?U(A.apiKey.expiresAt):"永不过期"),1)])])]),e("div",null,[E[9]||(E[9]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700"},"续期时长",-1)),M(e("select",{"onUpdate:modelValue":E[1]||(E[1]=a=>L.renewDuration=a),class:"form-input w-full",onChange:T},E[8]||(E[8]=[e("option",{value:"7d"},"延长 7 天",-1),e("option",{value:"30d"},"延长 30 天",-1),e("option",{value:"90d"},"延长 90 天",-1),e("option",{value:"180d"},"延长 180 天",-1),e("option",{value:"365d"},"延长 365 天",-1),e("option",{value:"custom"},"自定义日期",-1),e("option",{value:"permanent"},"设为永不过期",-1)]),544),[[$e,L.renewDuration]]),L.renewDuration==="custom"?(r(),d("div",pl,[M(e("input",{"onUpdate:modelValue":E[2]||(E[2]=a=>L.customExpireDate=a),class:"form-input w-full",min:_.value,type:"datetime-local",onChange:B},null,40,xl),[[ee,L.customExpireDate]])])):v("",!0),L.newExpiresAt?(r(),d("p",yl," 新的过期时间:"+m(U(L.newExpiresAt)),1)):v("",!0)])]),e("div",fl,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200",type:"button",onClick:E[3]||(E[3]=a=>$.$emit("close"))}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:G.value||!L.renewDuration,type:"button",onClick:S},[G.value?(r(),d("div",vl)):(r(),d("i",kl)),K(" "+m(G.value?"续期中...":"确认续期"),1)],8,bl)])])])]))}},hl=fe(wl,[["__scopeId","data-v-2fba52a3"]]),$l={class:"modal fixed inset-0 z-50 flex items-center justify-center p-4"},Al={class:"modal-content custom-scrollbar mx-auto max-h-[90vh] w-full max-w-lg overflow-y-auto p-8"},Cl={class:"mb-6 space-y-4"},Il={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-600 dark:bg-gray-800"},Kl={class:"font-medium text-gray-900 dark:text-gray-100"},Dl={key:0},Ll={class:"rounded-lg border border-gray-200 bg-gray-50 p-3 dark:border-gray-600 dark:bg-gray-800"},_l={class:"text-gray-700 dark:text-gray-300"},Tl={class:"relative"},Ml={class:"flex min-h-[60px] items-center break-all rounded-lg border border-gray-700 bg-gray-900 p-4 pr-14 font-mono text-sm text-white dark:border-gray-600 dark:bg-gray-900"},Sl={class:"absolute right-3 top-3"},Rl=["title"],Vl={__name:"NewApiKeyModal",props:{apiKey:{type:Object,required:!0}},emits:["close"],setup(A,{emit:Q}){const g=A,P=Q,G=D(!1),L=()=>{G.value=!G.value},_=()=>{const S=g.apiKey.apiKey||g.apiKey.key||"";return S?G.value||S.length<=12?S:S.substring(0,8)+"●".repeat(Math.max(0,S.length-12))+S.substring(S.length-4):""},U=async()=>{const S=g.apiKey.apiKey||g.apiKey.key||"";if(!S){q("API Key 不存在","error");return}try{await navigator.clipboard.writeText(S),q("API Key 已复制到剪贴板","success")}catch($){console.error("Failed to copy:",$);const E=document.createElement("textarea");E.value=S,document.body.appendChild(E),E.select();try{document.execCommand("copy"),q("API Key 已复制到剪贴板","success")}catch{q("复制失败,请手动复制","error")}finally{document.body.removeChild(E)}}},T=async()=>{window.showConfirm?await window.showConfirm("关闭提醒",`关闭后将无法再次查看完整的API Key,请确保已经妥善保存。 确定要关闭吗?`,"确定关闭","取消")&&P("close"):confirm(`关闭后将无法再次查看完整的API Key,请确保已经妥善保存。 diff --git a/web/admin-spa/dist/assets/ApiKeysView-BAk5rs4W.css b/web/admin-spa/dist/assets/ApiKeysView-BAk5rs4W.css deleted file mode 100644 index 5108359a..00000000 --- a/web/admin-spa/dist/assets/ApiKeysView-BAk5rs4W.css +++ /dev/null @@ -1 +0,0 @@ -.custom-scrollbar[data-v-7e9dcf0d]{scrollbar-width:thin;scrollbar-color:#cbd5e0 #f7fafc}.custom-scrollbar[data-v-7e9dcf0d]::-webkit-scrollbar{width:6px}.custom-scrollbar[data-v-7e9dcf0d]::-webkit-scrollbar-track{background:#f7fafc}.custom-scrollbar[data-v-7e9dcf0d]::-webkit-scrollbar-thumb{background-color:#cbd5e0;border-radius:3px}.custom-scrollbar[data-v-7e9dcf0d]::-webkit-scrollbar-thumb:hover{background-color:#a0aec0}pre[data-v-aa36c8d5],pre[data-v-b0b904b9]{white-space:pre-wrap;word-wrap:break-word}@keyframes fadeIn-ce7524cf{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn[data-v-ce7524cf]{animation:fadeIn-ce7524cf .2s ease-out}.loading-spinner[data-v-ce7524cf]{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin-ce7524cf .8s linear infinite;display:inline-block}@keyframes spin-ce7524cf{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tab-content[data-v-255559bf]{min-height:calc(100vh - 300px)}.table-container[data-v-255559bf]{overflow-x:auto;border-radius:12px;border:1px solid rgba(0,0,0,.05)}.table-row[data-v-255559bf]{transition:all .2s ease}.table-row[data-v-255559bf]:hover{background-color:#00000005}.loading-spinner[data-v-255559bf]{width:24px;height:24px;border:2px solid #e5e7eb;border-top:2px solid #3b82f6;border-radius:50%;animation:spin-255559bf 1s linear infinite}@keyframes spin-255559bf{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.api-key-date-picker[data-v-255559bf] .el-input__inner{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.api-key-date-picker[data-v-255559bf] .el-input__inner:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1));--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.api-key-date-picker[data-v-255559bf] .el-range-separator{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))} diff --git a/assets/ApiStatsView-DHzUrYlz.js b/web/admin-spa/dist/assets/ApiStatsView-B3sDs7Mx.js similarity index 98% rename from assets/ApiStatsView-DHzUrYlz.js rename to web/admin-spa/dist/assets/ApiStatsView-B3sDs7Mx.js index 361339de..7e9f84f4 100644 --- a/assets/ApiStatsView-DHzUrYlz.js +++ b/web/admin-spa/dist/assets/ApiStatsView-B3sDs7Mx.js @@ -1 +1 @@ -import{aR as Y,r as _,c as V,aW as A,x as n,y as d,z as t,O as f,K as H,aq as Q,u as s,aa as G,f as X,P as l,C,L,B as Z,R as S,Q as W,ac as z,q as tt,aU as et,V as st,o as at,J as rt,av as it}from"./vue-vendor-DfnFpxGJ.js";import{_ as q,a as ot}from"./index-BdtiivzQ.js";import{L as lt}from"./LogoTitle-CipNTyYU.js";import{T as nt}from"./ThemeToggle-DACcdK5F.js";import{b as dt}from"./vendor-BDiMbLwQ.js";import{_ as mt}from"./WindowCountdown-RaAYa1A3.js";import ct from"./TutorialView-CC1KbDlg.js";import"./element-plus-CMedNaYf.js";class xt{constructor(){this.baseURL=window.location.origin,this.isDev=!1}async request(o,a={}){try{this.isDev&&o.startsWith("/admin")&&(o="/webapi"+o);const m=await fetch(`${this.baseURL}${o}`,{headers:{"Content-Type":"application/json",...a.headers},...a}),x=await m.json();if(!m.ok)throw new Error(x.message||`请求失败: ${m.status}`);return x}catch(m){throw console.error("API Stats request error:",m),m}}async getKeyId(o){return this.request("/apiStats/api/get-key-id",{method:"POST",body:JSON.stringify({apiKey:o})})}async getUserStats(o){return this.request("/apiStats/api/user-stats",{method:"POST",body:JSON.stringify({apiId:o})})}async getUserModelStats(o,a="daily"){return this.request("/apiStats/api/user-model-stats",{method:"POST",body:JSON.stringify({apiId:o,period:a})})}async getOemSettings(){try{return await this.request("/admin/oem-settings")}catch(o){return console.error("Failed to load OEM settings:",o),{success:!0,data:{siteName:"Claude Relay Service",siteIcon:"",siteIconData:""}}}}}const P=new xt,K=Y("apistats",()=>{const h=_(""),o=_(null),a=_(!1),m=_(!1),x=_(!0),c=_(""),e=_("daily"),i=_(null),p=_([]),v=_(null),w=_(null),u=_({siteName:"",siteIcon:"",siteIconData:""}),g=V(()=>{const r={requests:0,inputTokens:0,outputTokens:0,cacheCreateTokens:0,cacheReadTokens:0,allTokens:0,cost:0,formattedCost:"$0.000000"};return e.value==="daily"?v.value||r:w.value||r}),U=V(()=>{if(!i.value||!g.value)return{tokenUsage:0,costUsage:0,requestUsage:0};const r=g.value,b=i.value.limits;return{tokenUsage:b.tokenLimit>0?Math.min(r.allTokens/b.tokenLimit*100,100):0,costUsage:b.dailyCostLimit>0?Math.min(r.cost/b.dailyCostLimit*100,100):0,requestUsage:b.rateLimitRequests>0?Math.min(r.requests/b.rateLimitRequests*100,100):0}});async function T(){if(!h.value.trim()){c.value="请输入 API Key";return}a.value=!0,c.value="",i.value=null,p.value=[],o.value=null;try{const r=await P.getKeyId(h.value);if(r.success){o.value=r.data.id;const b=await P.getUserStats(o.value);if(b.success)i.value=b.data,await M(),c.value="",y();else throw new Error(b.message||"查询失败")}else throw new Error(r.message||"获取 API Key ID 失败")}catch(r){console.error("Query stats error:",r),c.value=r.message||"查询统计数据失败,请检查您的 API Key 是否正确",i.value=null,p.value=[],o.value=null}finally{a.value=!1}}async function M(){o.value&&(await Promise.all([I("daily"),I("monthly")]),await R(e.value))}async function I(r){try{const b=await P.getUserModelStats(o.value,r);if(b.success){const J=b.data||[],$={requests:0,inputTokens:0,outputTokens:0,cacheCreateTokens:0,cacheReadTokens:0,allTokens:0,cost:0,formattedCost:"$0.000000"};J.forEach(D=>{var B;$.requests+=D.requests||0,$.inputTokens+=D.inputTokens||0,$.outputTokens+=D.outputTokens||0,$.cacheCreateTokens+=D.cacheCreateTokens||0,$.cacheReadTokens+=D.cacheReadTokens||0,$.allTokens+=D.allTokens||0,$.cost+=((B=D.costs)==null?void 0:B.total)||0}),$.formattedCost=k($.cost),r==="daily"?v.value=$:w.value=$}else console.warn(`Failed to load ${r} stats:`,b.message)}catch(b){console.error(`Load ${r} stats error:`,b)}}async function R(r="daily"){if(o.value){m.value=!0;try{const b=await P.getUserModelStats(o.value,r);if(b.success)p.value=b.data||[];else throw new Error(b.message||"加载模型统计失败")}catch(b){console.error("Load model stats error:",b),p.value=[]}finally{m.value=!1}}}async function N(r){e.value===r||m.value||(e.value=r,(r==="daily"&&!v.value||r==="monthly"&&!w.value)&&await I(r),await R(r))}async function O(){if(o.value){a.value=!0,c.value="",i.value=null,p.value=[];try{const r=await P.getUserStats(o.value);if(r.success)i.value=r.data,await M(),c.value="";else throw new Error(r.message||"查询失败")}catch(r){console.error("Load stats with apiId error:",r),c.value=r.message||"查询统计数据失败",i.value=null,p.value=[]}finally{a.value=!1}}}async function E(){x.value=!0;try{const r=await P.getOemSettings();r&&r.success&&r.data&&(u.value={...u.value,...r.data})}catch(r){console.error("Error loading OEM settings:",r),u.value={siteName:"Claude Relay Service",siteIcon:"",siteIconData:""}}finally{x.value=!1}}function k(r){return typeof r!="number"||r===0?"$0.000000":r>=1?"$"+r.toFixed(2):r>=.01?"$"+r.toFixed(4):"$"+r.toFixed(6)}function y(){if(o.value){const r=new URL(window.location);r.searchParams.set("apiId",o.value),window.history.pushState({},"",r)}}function F(){i.value=null,p.value=[],v.value=null,w.value=null,c.value="",e.value="daily",o.value=null}function j(){h.value="",F()}return{apiKey:h,apiId:o,loading:a,modelStatsLoading:m,oemLoading:x,error:c,statsPeriod:e,statsData:i,modelStats:p,dailyStats:v,monthlyStats:w,oemSettings:u,currentPeriodData:g,usagePercentages:U,queryStats:T,loadAllPeriodStats:M,loadPeriodStats:I,loadModelStats:R,switchPeriod:N,loadStatsWithApiId:O,loadOemSettings:E,clearData:F,reset:j}}),ut={class:"api-input-wide-card mb-8 rounded-3xl p-6 shadow-xl"},gt={class:"mx-auto max-w-4xl"},ft={class:"api-input-grid grid grid-cols-1 lg:grid-cols-4"},yt={class:"lg:col-span-3"},pt=["disabled"],bt={class:"lg:col-span-1"},vt=["disabled"],kt={key:0,class:"fas fa-spinner loading-spinner"},_t={key:1,class:"fas fa-search"},wt={__name:"ApiKeyInput",setup(h){const o=K(),{apiKey:a,loading:m}=A(o),{queryStats:x}=o;return(c,e)=>(d(),n("div",ut,[e[6]||(e[6]=t("div",{class:"wide-card-title mb-6 text-center"},[t("h2",{class:"mb-2 text-2xl font-bold text-gray-900 dark:text-white"},[t("i",{class:"fas fa-chart-line mr-3"}),f(" 使用统计查询 ")]),t("p",{class:"text-base text-gray-600 dark:text-gray-300"},"查询您的 API Key 使用情况和统计数据")],-1)),t("div",gt,[t("div",ft,[t("div",yt,[e[3]||(e[3]=t("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-200"},[t("i",{class:"fas fa-key mr-2"}),f(" 输入您的 API Key ")],-1)),H(t("input",{"onUpdate:modelValue":e[0]||(e[0]=i=>X(a)?a.value=i:null),class:"wide-card-input w-full",disabled:s(m),placeholder:"请输入您的 API Key (cr_...)",type:"password",onKeyup:e[1]||(e[1]=G((...i)=>s(x)&&s(x)(...i),["enter"]))},null,40,pt),[[Q,s(a)]])]),t("div",bt,[e[4]||(e[4]=t("label",{class:"mb-2 hidden text-sm font-medium text-gray-700 dark:text-gray-200 lg:block"},"   ",-1)),t("button",{class:"btn btn-primary btn-query flex h-full w-full items-center justify-center gap-2",disabled:s(m)||!s(a).trim(),onClick:e[2]||(e[2]=(...i)=>s(x)&&s(x)(...i))},[s(m)?(d(),n("i",kt)):(d(),n("i",_t)),f(" "+l(s(m)?"查询中...":"查询统计"),1)],8,vt)])]),e[5]||(e[5]=t("div",{class:"security-notice mt-4"},[t("i",{class:"fas fa-shield-alt mr-2"}),f(" 您的 API Key 仅用于查询自己的统计数据,不会被存储或用于其他用途 ")],-1))])]))}},ht=q(wt,[["__scopeId","data-v-0b1313e4"]]),$t={class:"mb-6 grid grid-cols-1 gap-4 md:mb-8 md:gap-6 lg:grid-cols-2"},St={class:"card p-4 md:p-6"},Tt={class:"space-y-2 md:space-y-3"},Ct={class:"flex items-center justify-between"},Lt={class:"break-all text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},It={class:"flex items-center justify-between"},Dt={class:"flex items-center justify-between"},Pt={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},At={class:"flex items-center justify-between"},qt={class:"break-all text-xs font-medium text-gray-900 dark:text-gray-100 md:text-base"},Kt={class:"flex items-start justify-between"},Mt={key:0,class:"text-right"},Rt={key:0,class:"text-sm font-medium text-red-600 md:text-base"},jt={key:1,class:"break-all text-xs font-medium text-orange-600 md:text-base"},Ut={key:2,class:"break-all text-xs font-medium text-gray-900 dark:text-gray-100 md:text-base"},Et={key:1,class:"text-sm font-medium text-gray-400 dark:text-gray-500 md:text-base"},Ft={class:"card p-4 md:p-6"},Nt={class:"mb-3 flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:mb-4 md:text-xl"},Ot={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},Vt={class:"grid grid-cols-2 gap-3 md:gap-4"},Wt={class:"stat-card text-center"},zt={class:"text-lg font-bold text-green-600 md:text-3xl"},Bt={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Jt={class:"stat-card text-center"},Yt={class:"text-lg font-bold text-blue-600 md:text-3xl"},Ht={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Qt={class:"stat-card text-center"},Gt={class:"text-lg font-bold text-purple-600 md:text-3xl"},Xt={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Zt={class:"stat-card text-center"},te={class:"text-lg font-bold text-yellow-600 md:text-3xl"},ee={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},se={__name:"StatsOverview",setup(h){const o=K(),{statsData:a,statsPeriod:m,currentPeriodData:x}=A(o),c=u=>{if(!u)return"无";try{return dt(u).format("YYYY年MM月DD日 HH:mm")}catch{return"格式错误"}},e=u=>u?new Date(u).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):"",i=u=>u?new Date(u){if(!u)return!1;const T=(new Date(u)-new Date)/(1e3*60*60*24);return T>0&&T<=7},v=u=>(typeof u!="number"&&(u=parseInt(u)||0),u===0?"0":u>=1e6?(u/1e6).toFixed(1)+"M":u>=1e3?(u/1e3).toFixed(1)+"K":u.toLocaleString()),w=u=>({claude:"Claude",gemini:"Gemini",all:"全部模型"})[u]||u||"未知";return(u,g)=>(d(),n("div",$t,[t("div",St,[g[8]||(g[8]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-info-circle mr-2 text-sm text-blue-500 md:mr-3 md:text-base"}),f(" API Key 信息 ")],-1)),t("div",Tt,[t("div",Ct,[g[0]||(g[0]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"名称",-1)),t("span",Lt,l(s(a).name),1)]),t("div",It,[g[1]||(g[1]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"状态",-1)),t("span",{class:C(["text-sm font-medium md:text-base",s(a).isActive?"text-green-600":"text-red-600"])},[t("i",{class:C(["mr-1 text-xs md:text-sm",s(a).isActive?"fas fa-check-circle":"fas fa-times-circle"])},null,2),f(" "+l(s(a).isActive?"活跃":"已停用"),1)],2)]),t("div",Dt,[g[2]||(g[2]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"权限",-1)),t("span",Pt,l(w(s(a).permissions)),1)]),t("div",At,[g[3]||(g[3]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"创建时间",-1)),t("span",qt,l(c(s(a).createdAt)),1)]),t("div",Kt,[g[7]||(g[7]=t("span",{class:"mt-1 flex-shrink-0 text-sm text-gray-600 dark:text-gray-400 md:text-base"},"过期时间",-1)),s(a).expiresAt?(d(),n("div",Mt,[i(s(a).expiresAt)?(d(),n("div",Rt,g[4]||(g[4]=[t("i",{class:"fas fa-exclamation-circle mr-1 text-xs md:text-sm"},null,-1),f(" 已过期 ",-1)]))):p(s(a).expiresAt)?(d(),n("div",jt,[g[5]||(g[5]=t("i",{class:"fas fa-clock mr-1 text-xs md:text-sm"},null,-1)),f(" "+l(e(s(a).expiresAt)),1)])):(d(),n("div",Ut,l(e(s(a).expiresAt)),1))])):(d(),n("div",Et,g[6]||(g[6]=[t("i",{class:"fas fa-infinity mr-1 text-xs md:text-sm"},null,-1),f(" 永不过期 ",-1)])))])])]),t("div",Ft,[t("h3",Nt,[g[9]||(g[9]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-chart-bar mr-2 text-sm text-green-500 md:mr-3 md:text-base"}),f(" 使用统计概览 ")],-1)),t("span",Ot,"("+l(s(m)==="daily"?"今日":"本月")+")",1)]),t("div",Vt,[t("div",Wt,[t("div",zt,l(v(s(x).requests)),1),t("div",Bt,l(s(m)==="daily"?"今日":"本月")+"请求数 ",1)]),t("div",Jt,[t("div",Yt,l(v(s(x).allTokens)),1),t("div",Ht,l(s(m)==="daily"?"今日":"本月")+"Token数 ",1)]),t("div",Qt,[t("div",Gt,l(s(x).formattedCost||"$0.000000"),1),t("div",Xt,l(s(m)==="daily"?"今日":"本月")+"费用 ",1)]),t("div",Zt,[t("div",te,l(v(s(x).inputTokens)),1),t("div",ee,l(s(m)==="daily"?"今日":"本月")+"输入Token ",1)])])])]))}},ae=q(se,[["__scopeId","data-v-f536da49"]]),re={class:"card p-4 md:p-6"},ie={class:"mb-3 flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:mb-4 md:text-xl"},oe={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},le={class:"space-y-2 md:space-y-3"},ne={class:"flex items-center justify-between"},de={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},me={class:"flex items-center justify-between"},ce={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},xe={class:"flex items-center justify-between"},ue={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},ge={class:"flex items-center justify-between"},fe={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},ye={class:"mt-3 border-t border-gray-200 pt-3 dark:border-gray-700 md:mt-4 md:pt-4"},pe={class:"flex items-center justify-between font-bold text-gray-900 dark:text-gray-100"},be={class:"text-sm md:text-base"},ve={class:"text-lg md:text-xl"},ke={__name:"TokenDistribution",setup(h){const o=K(),{statsPeriod:a,currentPeriodData:m}=A(o),x=c=>(typeof c!="number"&&(c=parseInt(c)||0),c===0?"0":c>=1e6?(c/1e6).toFixed(1)+"M":c>=1e3?(c/1e3).toFixed(1)+"K":c.toLocaleString());return(c,e)=>(d(),n("div",re,[t("h3",ie,[e[0]||(e[0]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-coins mr-2 text-sm text-yellow-500 md:mr-3 md:text-base"}),f(" Token 使用分布 ")],-1)),t("span",oe,"("+l(s(a)==="daily"?"今日":"本月")+")",1)]),t("div",le,[t("div",ne,[e[1]||(e[1]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-arrow-right mr-1 text-xs text-green-500 md:mr-2 md:text-sm"}),f(" 输入 Token ")],-1)),t("span",de,l(x(s(m).inputTokens)),1)]),t("div",me,[e[2]||(e[2]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-arrow-left mr-1 text-xs text-blue-500 md:mr-2 md:text-sm"}),f(" 输出 Token ")],-1)),t("span",ce,l(x(s(m).outputTokens)),1)]),t("div",xe,[e[3]||(e[3]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-save mr-1 text-xs text-purple-500 md:mr-2 md:text-sm"}),f(" 缓存创建 Token ")],-1)),t("span",ue,l(x(s(m).cacheCreateTokens)),1)]),t("div",ge,[e[4]||(e[4]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-download mr-1 text-xs text-orange-500 md:mr-2 md:text-sm"}),f(" 缓存读取 Token ")],-1)),t("span",fe,l(x(s(m).cacheReadTokens)),1)])]),t("div",ye,[t("div",pe,[t("span",be,l(s(a)==="daily"?"今日":"本月")+"总计",1),t("span",ve,l(x(s(m).allTokens)),1)])])]))}},_e=q(ke,[["__scopeId","data-v-ecee0a94"]]),we={class:"card p-4 md:p-6"},he={class:"space-y-4 md:space-y-5"},$e={class:"mb-2 flex items-center justify-between"},Se={class:"text-xs text-gray-500 dark:text-gray-400 md:text-sm"},Te={key:0},Ce={key:1,class:"flex items-center gap-1"},Le={key:0,class:"h-2 w-full rounded-full bg-gray-200 dark:bg-gray-700"},Ie={key:1,class:"h-2 w-full rounded-full bg-gray-200"},De={key:0},Pe={class:"space-y-2 border-t border-gray-100 pt-2 dark:border-gray-700"},Ae={class:"flex items-center justify-between"},qe={class:"text-sm font-medium text-gray-900 md:text-base"},Ke={key:0},Me={key:1,class:"flex items-center gap-1"},Re={class:"flex items-center justify-between"},je={class:"text-sm font-medium text-gray-900 md:text-base"},Ue={key:0,class:"text-orange-600"},Ee={key:1,class:"text-green-600"},Fe={class:"flex items-center justify-between"},Ne={class:"text-sm font-medium text-gray-900 md:text-base"},Oe={key:0,class:"text-orange-600"},Ve={key:1,class:"text-green-600"},We={key:0,class:"card mt-4 p-4 md:mt-6 md:p-6"},ze={class:"grid grid-cols-1 gap-4 md:gap-6 lg:grid-cols-2"},Be={key:0,class:"rounded-lg border border-amber-200 bg-amber-50 p-3 dark:border-amber-800 dark:bg-amber-900/20 md:p-4"},Je={class:"space-y-1 md:space-y-2"},Ye={class:"break-all text-gray-800 dark:text-gray-200"},He={key:1,class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-800 dark:bg-blue-900/20 md:p-4"},Qe={class:"space-y-1 md:space-y-2"},Ge={class:"break-all text-gray-800 dark:text-gray-200"},Xe={__name:"LimitConfig",setup(h){const o=K(),{statsData:a}=A(o),m=()=>{if(!a.value.limits.dailyCostLimit||a.value.limits.dailyCostLimit===0)return 0;const c=a.value.limits.currentDailyCost/a.value.limits.dailyCostLimit*100;return Math.min(c,100)},x=()=>{const c=m();return c>=100?"bg-red-500":c>=80?"bg-yellow-500":"bg-green-500"};return(c,e)=>(d(),n("div",null,[t("div",we,[e[12]||(e[12]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-shield-alt mr-2 text-sm text-red-500 md:mr-3 md:text-base"}),f(" 限制配置 ")],-1)),t("div",he,[t("div",null,[t("div",$e,[e[1]||(e[1]=t("span",{class:"text-sm font-medium text-gray-600 dark:text-gray-400 md:text-base"},"每日费用限制",-1)),t("span",Se,[s(a).limits.dailyCostLimit>0?(d(),n("span",Te," $"+l(s(a).limits.currentDailyCost.toFixed(4))+" / $"+l(s(a).limits.dailyCostLimit.toFixed(2)),1)):(d(),n("span",Ce,[f(" $"+l(s(a).limits.currentDailyCost.toFixed(4))+" / ",1),e[0]||(e[0]=t("i",{class:"fas fa-infinity"},null,-1))]))])]),s(a).limits.dailyCostLimit>0?(d(),n("div",Le,[t("div",{class:C(["h-2 rounded-full transition-all duration-300",x()]),style:Z({width:m()+"%"})},null,6)])):(d(),n("div",Ie,e[2]||(e[2]=[t("div",{class:"h-2 rounded-full bg-green-500",style:{width:"0%"}},null,-1)])))]),s(a).limits.rateLimitWindow>0&&(s(a).limits.rateLimitRequests>0||s(a).limits.tokenLimit>0)?(d(),n("div",De,[S(mt,{"current-requests":s(a).limits.currentWindowRequests,"current-tokens":s(a).limits.currentWindowTokens,label:"时间窗口限制","rate-limit-window":s(a).limits.rateLimitWindow,"request-limit":s(a).limits.rateLimitRequests,"show-progress":!0,"show-tooltip":!0,"token-limit":s(a).limits.tokenLimit,"window-end-time":s(a).limits.windowEndTime,"window-remaining-seconds":s(a).limits.windowRemainingSeconds,"window-start-time":s(a).limits.windowStartTime},null,8,["current-requests","current-tokens","rate-limit-window","request-limit","token-limit","window-end-time","window-remaining-seconds","window-start-time"]),e[3]||(e[3]=t("div",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[t("i",{class:"fas fa-info-circle mr-1"}),f(' 请求次数和Token使用量为"或"的关系,任一达到限制即触发限流 ')],-1))])):L("",!0),t("div",Pe,[t("div",Ae,[e[5]||(e[5]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"并发限制",-1)),t("span",qe,[s(a).limits.concurrencyLimit>0?(d(),n("span",Ke,l(s(a).limits.concurrencyLimit),1)):(d(),n("span",Me,e[4]||(e[4]=[t("i",{class:"fas fa-infinity text-gray-400"},null,-1)])))])]),t("div",Re,[e[8]||(e[8]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"模型限制",-1)),t("span",je,[s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0?(d(),n("span",Ue,[e[6]||(e[6]=t("i",{class:"fas fa-exclamation-triangle mr-1 text-xs md:text-sm"},null,-1)),f(" 限制 "+l(s(a).restrictions.restrictedModels.length)+" 个模型 ",1)])):(d(),n("span",Ee,e[7]||(e[7]=[t("i",{class:"fas fa-check-circle mr-1 text-xs md:text-sm"},null,-1),f(" 允许所有模型 ",-1)])))])]),t("div",Fe,[e[11]||(e[11]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"客户端限制",-1)),t("span",Ne,[s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("span",Oe,[e[9]||(e[9]=t("i",{class:"fas fa-exclamation-triangle mr-1 text-xs md:text-sm"},null,-1)),f(" 限制 "+l(s(a).restrictions.allowedClients.length)+" 个客户端 ",1)])):(d(),n("span",Ve,e[10]||(e[10]=[t("i",{class:"fas fa-check-circle mr-1 text-xs md:text-sm"},null,-1),f(" 允许所有客户端 ",-1)])))])])])])]),s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0||s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("div",We,[e[19]||(e[19]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-list-alt mr-2 text-sm text-amber-500 md:mr-3 md:text-base"}),f(" 详细限制信息 ")],-1)),t("div",ze,[s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0?(d(),n("div",Be,[e[14]||(e[14]=t("h4",{class:"mb-2 flex items-center text-sm font-bold text-amber-800 dark:text-amber-300 md:mb-3 md:text-base"},[t("i",{class:"fas fa-robot mr-1 text-xs md:mr-2 md:text-sm"}),f(" 受限模型列表 ")],-1)),t("div",Je,[(d(!0),n(W,null,z(s(a).restrictions.restrictedModels,i=>(d(),n("div",{key:i,class:"rounded border border-amber-200 bg-white px-2 py-1 text-xs dark:border-amber-700 dark:bg-gray-800 md:px-3 md:py-2 md:text-sm"},[e[13]||(e[13]=t("i",{class:"fas fa-ban mr-1 text-xs text-red-500 md:mr-2"},null,-1)),t("span",Ye,l(i),1)]))),128))]),e[15]||(e[15]=t("p",{class:"mt-2 text-xs text-amber-700 dark:text-amber-400 md:mt-3"},[t("i",{class:"fas fa-info-circle mr-1"}),f(" 此 API Key 不能访问以上列出的模型 ")],-1))])):L("",!0),s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("div",He,[e[17]||(e[17]=t("h4",{class:"mb-2 flex items-center text-sm font-bold text-blue-800 dark:text-blue-300 md:mb-3 md:text-base"},[t("i",{class:"fas fa-desktop mr-1 text-xs md:mr-2 md:text-sm"}),f(" 允许的客户端 ")],-1)),t("div",Qe,[(d(!0),n(W,null,z(s(a).restrictions.allowedClients,i=>(d(),n("div",{key:i,class:"rounded border border-blue-200 bg-white px-2 py-1 text-xs dark:border-blue-700 dark:bg-gray-800 md:px-3 md:py-2 md:text-sm"},[e[16]||(e[16]=t("i",{class:"fas fa-check mr-1 text-xs text-green-500 md:mr-2"},null,-1)),t("span",Ge,l(i),1)]))),128))]),e[18]||(e[18]=t("p",{class:"mt-2 text-xs text-blue-700 dark:text-blue-400 md:mt-3"},[t("i",{class:"fas fa-info-circle mr-1"}),f(" 此 API Key 只能被以上列出的客户端使用 ")],-1))])):L("",!0)])])):L("",!0)]))}},Ze=q(Xe,[["__scopeId","data-v-2b2bf3be"]]),ts={class:"card p-4 md:p-6"},es={class:"mb-4 md:mb-6"},ss={class:"flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:text-xl"},as={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},rs={key:0,class:"py-6 text-center md:py-8"},is={key:1,class:"space-y-3 md:space-y-4"},os={class:"mb-2 flex items-start justify-between md:mb-3"},ls={class:"min-w-0 flex-1"},ns={class:"break-all text-base font-bold text-gray-900 dark:text-gray-100 md:text-lg"},ds={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},ms={class:"ml-3 flex-shrink-0 text-right"},cs={class:"text-base font-bold text-green-600 md:text-lg"},xs={class:"grid grid-cols-2 gap-2 text-xs md:grid-cols-4 md:gap-3 md:text-sm"},us={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},gs={class:"font-medium text-gray-900 dark:text-gray-100"},fs={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},ys={class:"font-medium text-gray-900 dark:text-gray-100"},ps={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},bs={class:"font-medium text-gray-900 dark:text-gray-100"},vs={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},ks={class:"font-medium text-gray-900 dark:text-gray-100"},_s={key:2,class:"py-6 text-center text-gray-500 dark:text-gray-400 md:py-8"},ws={class:"text-sm md:text-base"},hs={__name:"ModelUsageStats",setup(h){const o=K(),{statsPeriod:a,modelStats:m,modelStatsLoading:x}=A(o),c=e=>(typeof e!="number"&&(e=parseInt(e)||0),e===0?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toLocaleString());return(e,i)=>(d(),n("div",ts,[t("div",es,[t("h3",ss,[i[0]||(i[0]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-robot mr-2 text-sm text-indigo-500 md:mr-3 md:text-base"}),f(" 模型使用统计 ")],-1)),t("span",as,"("+l(s(a)==="daily"?"今日":"本月")+")",1)])]),s(x)?(d(),n("div",rs,i[1]||(i[1]=[t("i",{class:"fas fa-spinner loading-spinner mb-2 text-xl text-gray-600 dark:text-gray-400 md:text-2xl"},null,-1),t("p",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"加载模型统计数据中...",-1)]))):s(m).length>0?(d(),n("div",is,[(d(!0),n(W,null,z(s(m),(p,v)=>{var w;return d(),n("div",{key:v,class:"model-usage-item"},[t("div",os,[t("div",ls,[t("h4",ns,l(p.model),1),t("p",ds,l(p.requests)+" 次请求 ",1)]),t("div",ms,[t("div",cs,l(((w=p.formatted)==null?void 0:w.total)||"$0.000000"),1),i[2]||(i[2]=t("div",{class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},"总费用",-1))])]),t("div",xs,[t("div",us,[i[3]||(i[3]=t("div",{class:"text-gray-600 dark:text-gray-400"},"输入 Token",-1)),t("div",gs,l(c(p.inputTokens)),1)]),t("div",fs,[i[4]||(i[4]=t("div",{class:"text-gray-600 dark:text-gray-400"},"输出 Token",-1)),t("div",ys,l(c(p.outputTokens)),1)]),t("div",ps,[i[5]||(i[5]=t("div",{class:"text-gray-600 dark:text-gray-400"},"缓存创建",-1)),t("div",bs,l(c(p.cacheCreateTokens)),1)]),t("div",vs,[i[6]||(i[6]=t("div",{class:"text-gray-600 dark:text-gray-400"},"缓存读取",-1)),t("div",ks,l(c(p.cacheReadTokens)),1)])])])}),128))])):(d(),n("div",_s,[i[7]||(i[7]=t("i",{class:"fas fa-chart-pie mb-3 text-2xl md:text-3xl"},null,-1)),t("p",ws," 暂无"+l(s(a)==="daily"?"今日":"本月")+"模型使用数据 ",1)]))]))}},$s=q(hs,[["__scopeId","data-v-b3b8dc5f"]]),Ss={class:"glass-strong mb-6 rounded-3xl p-4 shadow-xl md:mb-8 md:p-6"},Ts={class:"flex flex-col items-center justify-between gap-4 md:flex-row"},Cs={class:"flex items-center gap-2 md:gap-4"},Ls={class:"flex items-center"},Is={class:"mb-6 md:mb-8"},Ds={class:"flex justify-center"},Ps={class:"inline-flex w-full max-w-md rounded-full border border-white/20 bg-white/10 p-1 shadow-lg backdrop-blur-xl md:w-auto"},As={key:0,class:"tab-content"},qs={key:0,class:"mb-6 md:mb-8"},Ks={class:"rounded-xl border border-red-500/30 bg-red-500/20 p-3 text-sm text-red-800 backdrop-blur-sm dark:border-red-500/20 dark:bg-red-500/10 dark:text-red-200 md:p-4 md:text-base"},Ms={key:1,class:"fade-in"},Rs={class:"glass-strong rounded-3xl p-4 shadow-xl md:p-6"},js={class:"mb-4 border-b border-gray-200 pb-4 dark:border-gray-700 md:mb-6 md:pb-6"},Us={class:"flex flex-col items-start justify-between gap-3 md:flex-row md:items-center md:gap-4"},Es={class:"flex w-full gap-2 md:w-auto"},Fs=["disabled"],Ns=["disabled"],Os={class:"mb-6 grid grid-cols-1 gap-4 md:mb-8 md:gap-6 lg:grid-cols-2"},Vs={key:1,class:"tab-content"},Ws={class:"glass-strong rounded-3xl shadow-xl"},zs={__name:"ApiStatsView",setup(h){const o=et(),a=K(),m=ot(),x=_("stats"),c=V(()=>m.isDarkMode),{apiKey:e,apiId:i,loading:p,modelStatsLoading:v,oemLoading:w,error:u,statsPeriod:g,statsData:U,oemSettings:T}=A(a),{queryStats:M,switchPeriod:I,loadStatsWithApiId:R,loadOemSettings:N,reset:O}=a,E=k=>{(k.ctrlKey||k.metaKey)&&k.key==="Enter"&&(!p.value&&e.value.trim()&&M(),k.preventDefault()),k.key==="Escape"&&O()};return tt(()=>{console.log("API Stats Page loaded"),m.initTheme(),N();const k=o.query.apiId,y=o.query.apiKey;k&&k.match(/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i)?(i.value=k,R()):y&&y.length>10&&(e.value=y),document.addEventListener("keydown",E)}),st(()=>{document.removeEventListener("keydown",E)}),at(e,k=>{k||a.clearData()}),(k,y)=>{const F=it("router-link");return d(),n("div",{class:C(["min-h-screen p-4 md:p-6",c.value?"gradient-bg-dark":"gradient-bg"])},[t("div",Ss,[t("div",Ts,[S(lt,{loading:s(w),"logo-src":s(T).siteIconData||s(T).siteIcon,subtitle:x.value==="stats"?"API Key 使用统计":"使用教程",title:s(T).siteName},null,8,["loading","logo-src","subtitle","title"]),t("div",Cs,[t("div",Ls,[S(nt,{mode:"dropdown"})]),y[5]||(y[5]=t("div",{class:"h-8 w-px bg-gradient-to-b from-transparent via-gray-300 to-transparent opacity-50 dark:via-gray-600"},null,-1)),S(F,{class:"admin-button-refined flex items-center gap-2 rounded-2xl px-4 py-2 transition-all duration-300 md:px-5 md:py-2.5",to:"/dashboard"},{default:rt(()=>y[4]||(y[4]=[t("i",{class:"fas fa-shield-alt text-sm md:text-base"},null,-1),t("span",{class:"text-xs font-semibold tracking-wide md:text-sm"},"管理后台",-1)])),_:1,__:[4]})])])]),t("div",Is,[t("div",Ds,[t("div",Ps,[t("button",{class:C(["tab-pill-button",x.value==="stats"?"active":""]),onClick:y[0]||(y[0]=j=>x.value="stats")},y[6]||(y[6]=[t("i",{class:"fas fa-chart-line mr-1 md:mr-2"},null,-1),t("span",{class:"text-sm md:text-base"},"统计查询",-1)]),2),t("button",{class:C(["tab-pill-button",x.value==="tutorial"?"active":""]),onClick:y[1]||(y[1]=j=>x.value="tutorial")},y[7]||(y[7]=[t("i",{class:"fas fa-graduation-cap mr-1 md:mr-2"},null,-1),t("span",{class:"text-sm md:text-base"},"使用教程",-1)]),2)])])]),x.value==="stats"?(d(),n("div",As,[S(ht),s(u)?(d(),n("div",qs,[t("div",Ks,[y[8]||(y[8]=t("i",{class:"fas fa-exclamation-triangle mr-2"},null,-1)),f(" "+l(s(u)),1)])])):L("",!0),s(U)?(d(),n("div",Ms,[t("div",Rs,[t("div",js,[t("div",Us,[y[11]||(y[11]=t("div",{class:"flex items-center gap-2 md:gap-3"},[t("i",{class:"fas fa-clock text-base text-blue-500 md:text-lg"}),t("span",{class:"text-base font-medium text-gray-700 dark:text-gray-200 md:text-lg"},"统计时间范围")],-1)),t("div",Es,[t("button",{class:C(["flex flex-1 items-center justify-center gap-1 px-4 py-2 text-xs font-medium md:flex-none md:gap-2 md:px-6 md:text-sm",["period-btn",{active:s(g)==="daily"}]]),disabled:s(p)||s(v),onClick:y[2]||(y[2]=j=>s(I)("daily"))},y[9]||(y[9]=[t("i",{class:"fas fa-calendar-day text-xs md:text-sm"},null,-1),f(" 今日 ",-1)]),10,Fs),t("button",{class:C(["flex flex-1 items-center justify-center gap-1 px-4 py-2 text-xs font-medium md:flex-none md:gap-2 md:px-6 md:text-sm",["period-btn",{active:s(g)==="monthly"}]]),disabled:s(p)||s(v),onClick:y[3]||(y[3]=j=>s(I)("monthly"))},y[10]||(y[10]=[t("i",{class:"fas fa-calendar-alt text-xs md:text-sm"},null,-1),f(" 本月 ",-1)]),10,Ns)])])]),S(ae),t("div",Os,[S(_e),S(Ze)]),S($s)])])):L("",!0)])):L("",!0),x.value==="tutorial"?(d(),n("div",Vs,[t("div",Ws,[S(ct)])])):L("",!0)],2)}}},ta=q(zs,[["__scopeId","data-v-fa71f87c"]]);export{ta as default}; +import{aR as Y,r as _,c as V,aV as A,x as n,y as d,z as t,O as f,K as H,aq as Q,u as s,aa as G,f as X,P as l,C,L,B as Z,R as S,Q as W,ac as z,q as tt,aU as et,V as st,o as at,J as rt,av as it}from"./vue-vendor-Ig-GgGwA.js";import{_ as q,a as ot}from"./index-CY9cPBXr.js";import{L as lt}from"./LogoTitle-DmOAmnuZ.js";import{T as nt}from"./ThemeToggle-Bb-3yEk7.js";import{b as dt}from"./vendor-BDiMbLwQ.js";import{_ as mt}from"./WindowCountdown-DSqUCtdk.js";import ct from"./TutorialView-N5jhXyjx.js";import"./element-plus-Bq6mBxnk.js";class xt{constructor(){this.baseURL=window.location.origin,this.isDev=!1}async request(o,a={}){try{this.isDev&&o.startsWith("/admin")&&(o="/webapi"+o);const m=await fetch(`${this.baseURL}${o}`,{headers:{"Content-Type":"application/json",...a.headers},...a}),x=await m.json();if(!m.ok)throw new Error(x.message||`请求失败: ${m.status}`);return x}catch(m){throw console.error("API Stats request error:",m),m}}async getKeyId(o){return this.request("/apiStats/api/get-key-id",{method:"POST",body:JSON.stringify({apiKey:o})})}async getUserStats(o){return this.request("/apiStats/api/user-stats",{method:"POST",body:JSON.stringify({apiId:o})})}async getUserModelStats(o,a="daily"){return this.request("/apiStats/api/user-model-stats",{method:"POST",body:JSON.stringify({apiId:o,period:a})})}async getOemSettings(){try{return await this.request("/admin/oem-settings")}catch(o){return console.error("Failed to load OEM settings:",o),{success:!0,data:{siteName:"Claude Relay Service",siteIcon:"",siteIconData:""}}}}}const P=new xt,K=Y("apistats",()=>{const h=_(""),o=_(null),a=_(!1),m=_(!1),x=_(!0),c=_(""),e=_("daily"),i=_(null),p=_([]),v=_(null),w=_(null),u=_({siteName:"",siteIcon:"",siteIconData:""}),g=V(()=>{const r={requests:0,inputTokens:0,outputTokens:0,cacheCreateTokens:0,cacheReadTokens:0,allTokens:0,cost:0,formattedCost:"$0.000000"};return e.value==="daily"?v.value||r:w.value||r}),U=V(()=>{if(!i.value||!g.value)return{tokenUsage:0,costUsage:0,requestUsage:0};const r=g.value,b=i.value.limits;return{tokenUsage:b.tokenLimit>0?Math.min(r.allTokens/b.tokenLimit*100,100):0,costUsage:b.dailyCostLimit>0?Math.min(r.cost/b.dailyCostLimit*100,100):0,requestUsage:b.rateLimitRequests>0?Math.min(r.requests/b.rateLimitRequests*100,100):0}});async function T(){if(!h.value.trim()){c.value="请输入 API Key";return}a.value=!0,c.value="",i.value=null,p.value=[],o.value=null;try{const r=await P.getKeyId(h.value);if(r.success){o.value=r.data.id;const b=await P.getUserStats(o.value);if(b.success)i.value=b.data,await M(),c.value="",y();else throw new Error(b.message||"查询失败")}else throw new Error(r.message||"获取 API Key ID 失败")}catch(r){console.error("Query stats error:",r),c.value=r.message||"查询统计数据失败,请检查您的 API Key 是否正确",i.value=null,p.value=[],o.value=null}finally{a.value=!1}}async function M(){o.value&&(await Promise.all([I("daily"),I("monthly")]),await R(e.value))}async function I(r){try{const b=await P.getUserModelStats(o.value,r);if(b.success){const J=b.data||[],$={requests:0,inputTokens:0,outputTokens:0,cacheCreateTokens:0,cacheReadTokens:0,allTokens:0,cost:0,formattedCost:"$0.000000"};J.forEach(D=>{var B;$.requests+=D.requests||0,$.inputTokens+=D.inputTokens||0,$.outputTokens+=D.outputTokens||0,$.cacheCreateTokens+=D.cacheCreateTokens||0,$.cacheReadTokens+=D.cacheReadTokens||0,$.allTokens+=D.allTokens||0,$.cost+=((B=D.costs)==null?void 0:B.total)||0}),$.formattedCost=k($.cost),r==="daily"?v.value=$:w.value=$}else console.warn(`Failed to load ${r} stats:`,b.message)}catch(b){console.error(`Load ${r} stats error:`,b)}}async function R(r="daily"){if(o.value){m.value=!0;try{const b=await P.getUserModelStats(o.value,r);if(b.success)p.value=b.data||[];else throw new Error(b.message||"加载模型统计失败")}catch(b){console.error("Load model stats error:",b),p.value=[]}finally{m.value=!1}}}async function N(r){e.value===r||m.value||(e.value=r,(r==="daily"&&!v.value||r==="monthly"&&!w.value)&&await I(r),await R(r))}async function O(){if(o.value){a.value=!0,c.value="",i.value=null,p.value=[];try{const r=await P.getUserStats(o.value);if(r.success)i.value=r.data,await M(),c.value="";else throw new Error(r.message||"查询失败")}catch(r){console.error("Load stats with apiId error:",r),c.value=r.message||"查询统计数据失败",i.value=null,p.value=[]}finally{a.value=!1}}}async function E(){x.value=!0;try{const r=await P.getOemSettings();r&&r.success&&r.data&&(u.value={...u.value,...r.data})}catch(r){console.error("Error loading OEM settings:",r),u.value={siteName:"Claude Relay Service",siteIcon:"",siteIconData:""}}finally{x.value=!1}}function k(r){return typeof r!="number"||r===0?"$0.000000":r>=1?"$"+r.toFixed(2):r>=.01?"$"+r.toFixed(4):"$"+r.toFixed(6)}function y(){if(o.value){const r=new URL(window.location);r.searchParams.set("apiId",o.value),window.history.pushState({},"",r)}}function F(){i.value=null,p.value=[],v.value=null,w.value=null,c.value="",e.value="daily",o.value=null}function j(){h.value="",F()}return{apiKey:h,apiId:o,loading:a,modelStatsLoading:m,oemLoading:x,error:c,statsPeriod:e,statsData:i,modelStats:p,dailyStats:v,monthlyStats:w,oemSettings:u,currentPeriodData:g,usagePercentages:U,queryStats:T,loadAllPeriodStats:M,loadPeriodStats:I,loadModelStats:R,switchPeriod:N,loadStatsWithApiId:O,loadOemSettings:E,clearData:F,reset:j}}),ut={class:"api-input-wide-card mb-8 rounded-3xl p-6 shadow-xl"},gt={class:"mx-auto max-w-4xl"},ft={class:"api-input-grid grid grid-cols-1 lg:grid-cols-4"},yt={class:"lg:col-span-3"},pt=["disabled"],bt={class:"lg:col-span-1"},vt=["disabled"],kt={key:0,class:"fas fa-spinner loading-spinner"},_t={key:1,class:"fas fa-search"},wt={__name:"ApiKeyInput",setup(h){const o=K(),{apiKey:a,loading:m}=A(o),{queryStats:x}=o;return(c,e)=>(d(),n("div",ut,[e[6]||(e[6]=t("div",{class:"wide-card-title mb-6 text-center"},[t("h2",{class:"mb-2 text-2xl font-bold text-gray-900 dark:text-white"},[t("i",{class:"fas fa-chart-line mr-3"}),f(" 使用统计查询 ")]),t("p",{class:"text-base text-gray-600 dark:text-gray-300"},"查询您的 API Key 使用情况和统计数据")],-1)),t("div",gt,[t("div",ft,[t("div",yt,[e[3]||(e[3]=t("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-200"},[t("i",{class:"fas fa-key mr-2"}),f(" 输入您的 API Key ")],-1)),H(t("input",{"onUpdate:modelValue":e[0]||(e[0]=i=>X(a)?a.value=i:null),class:"wide-card-input w-full",disabled:s(m),placeholder:"请输入您的 API Key (cr_...)",type:"password",onKeyup:e[1]||(e[1]=G((...i)=>s(x)&&s(x)(...i),["enter"]))},null,40,pt),[[Q,s(a)]])]),t("div",bt,[e[4]||(e[4]=t("label",{class:"mb-2 hidden text-sm font-medium text-gray-700 dark:text-gray-200 lg:block"},"   ",-1)),t("button",{class:"btn btn-primary btn-query flex h-full w-full items-center justify-center gap-2",disabled:s(m)||!s(a).trim(),onClick:e[2]||(e[2]=(...i)=>s(x)&&s(x)(...i))},[s(m)?(d(),n("i",kt)):(d(),n("i",_t)),f(" "+l(s(m)?"查询中...":"查询统计"),1)],8,vt)])]),e[5]||(e[5]=t("div",{class:"security-notice mt-4"},[t("i",{class:"fas fa-shield-alt mr-2"}),f(" 您的 API Key 仅用于查询自己的统计数据,不会被存储或用于其他用途 ")],-1))])]))}},ht=q(wt,[["__scopeId","data-v-0b1313e4"]]),$t={class:"mb-6 grid grid-cols-1 gap-4 md:mb-8 md:gap-6 lg:grid-cols-2"},St={class:"card p-4 md:p-6"},Tt={class:"space-y-2 md:space-y-3"},Ct={class:"flex items-center justify-between"},Lt={class:"break-all text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},It={class:"flex items-center justify-between"},Dt={class:"flex items-center justify-between"},Pt={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},At={class:"flex items-center justify-between"},qt={class:"break-all text-xs font-medium text-gray-900 dark:text-gray-100 md:text-base"},Kt={class:"flex items-start justify-between"},Mt={key:0,class:"text-right"},Rt={key:0,class:"text-sm font-medium text-red-600 md:text-base"},jt={key:1,class:"break-all text-xs font-medium text-orange-600 md:text-base"},Ut={key:2,class:"break-all text-xs font-medium text-gray-900 dark:text-gray-100 md:text-base"},Et={key:1,class:"text-sm font-medium text-gray-400 dark:text-gray-500 md:text-base"},Ft={class:"card p-4 md:p-6"},Nt={class:"mb-3 flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:mb-4 md:text-xl"},Ot={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},Vt={class:"grid grid-cols-2 gap-3 md:gap-4"},Wt={class:"stat-card text-center"},zt={class:"text-lg font-bold text-green-600 md:text-3xl"},Bt={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Jt={class:"stat-card text-center"},Yt={class:"text-lg font-bold text-blue-600 md:text-3xl"},Ht={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Qt={class:"stat-card text-center"},Gt={class:"text-lg font-bold text-purple-600 md:text-3xl"},Xt={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},Zt={class:"stat-card text-center"},te={class:"text-lg font-bold text-yellow-600 md:text-3xl"},ee={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},se={__name:"StatsOverview",setup(h){const o=K(),{statsData:a,statsPeriod:m,currentPeriodData:x}=A(o),c=u=>{if(!u)return"无";try{return dt(u).format("YYYY年MM月DD日 HH:mm")}catch{return"格式错误"}},e=u=>u?new Date(u).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):"",i=u=>u?new Date(u){if(!u)return!1;const T=(new Date(u)-new Date)/(1e3*60*60*24);return T>0&&T<=7},v=u=>(typeof u!="number"&&(u=parseInt(u)||0),u===0?"0":u>=1e6?(u/1e6).toFixed(1)+"M":u>=1e3?(u/1e3).toFixed(1)+"K":u.toLocaleString()),w=u=>({claude:"Claude",gemini:"Gemini",all:"全部模型"})[u]||u||"未知";return(u,g)=>(d(),n("div",$t,[t("div",St,[g[8]||(g[8]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-info-circle mr-2 text-sm text-blue-500 md:mr-3 md:text-base"}),f(" API Key 信息 ")],-1)),t("div",Tt,[t("div",Ct,[g[0]||(g[0]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"名称",-1)),t("span",Lt,l(s(a).name),1)]),t("div",It,[g[1]||(g[1]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"状态",-1)),t("span",{class:C(["text-sm font-medium md:text-base",s(a).isActive?"text-green-600":"text-red-600"])},[t("i",{class:C(["mr-1 text-xs md:text-sm",s(a).isActive?"fas fa-check-circle":"fas fa-times-circle"])},null,2),f(" "+l(s(a).isActive?"活跃":"已停用"),1)],2)]),t("div",Dt,[g[2]||(g[2]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"权限",-1)),t("span",Pt,l(w(s(a).permissions)),1)]),t("div",At,[g[3]||(g[3]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"创建时间",-1)),t("span",qt,l(c(s(a).createdAt)),1)]),t("div",Kt,[g[7]||(g[7]=t("span",{class:"mt-1 flex-shrink-0 text-sm text-gray-600 dark:text-gray-400 md:text-base"},"过期时间",-1)),s(a).expiresAt?(d(),n("div",Mt,[i(s(a).expiresAt)?(d(),n("div",Rt,g[4]||(g[4]=[t("i",{class:"fas fa-exclamation-circle mr-1 text-xs md:text-sm"},null,-1),f(" 已过期 ",-1)]))):p(s(a).expiresAt)?(d(),n("div",jt,[g[5]||(g[5]=t("i",{class:"fas fa-clock mr-1 text-xs md:text-sm"},null,-1)),f(" "+l(e(s(a).expiresAt)),1)])):(d(),n("div",Ut,l(e(s(a).expiresAt)),1))])):(d(),n("div",Et,g[6]||(g[6]=[t("i",{class:"fas fa-infinity mr-1 text-xs md:text-sm"},null,-1),f(" 永不过期 ",-1)])))])])]),t("div",Ft,[t("h3",Nt,[g[9]||(g[9]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-chart-bar mr-2 text-sm text-green-500 md:mr-3 md:text-base"}),f(" 使用统计概览 ")],-1)),t("span",Ot,"("+l(s(m)==="daily"?"今日":"本月")+")",1)]),t("div",Vt,[t("div",Wt,[t("div",zt,l(v(s(x).requests)),1),t("div",Bt,l(s(m)==="daily"?"今日":"本月")+"请求数 ",1)]),t("div",Jt,[t("div",Yt,l(v(s(x).allTokens)),1),t("div",Ht,l(s(m)==="daily"?"今日":"本月")+"Token数 ",1)]),t("div",Qt,[t("div",Gt,l(s(x).formattedCost||"$0.000000"),1),t("div",Xt,l(s(m)==="daily"?"今日":"本月")+"费用 ",1)]),t("div",Zt,[t("div",te,l(v(s(x).inputTokens)),1),t("div",ee,l(s(m)==="daily"?"今日":"本月")+"输入Token ",1)])])])]))}},ae=q(se,[["__scopeId","data-v-f536da49"]]),re={class:"card p-4 md:p-6"},ie={class:"mb-3 flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:mb-4 md:text-xl"},oe={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},le={class:"space-y-2 md:space-y-3"},ne={class:"flex items-center justify-between"},de={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},me={class:"flex items-center justify-between"},ce={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},xe={class:"flex items-center justify-between"},ue={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},ge={class:"flex items-center justify-between"},fe={class:"text-sm font-medium text-gray-900 dark:text-gray-100 md:text-base"},ye={class:"mt-3 border-t border-gray-200 pt-3 dark:border-gray-700 md:mt-4 md:pt-4"},pe={class:"flex items-center justify-between font-bold text-gray-900 dark:text-gray-100"},be={class:"text-sm md:text-base"},ve={class:"text-lg md:text-xl"},ke={__name:"TokenDistribution",setup(h){const o=K(),{statsPeriod:a,currentPeriodData:m}=A(o),x=c=>(typeof c!="number"&&(c=parseInt(c)||0),c===0?"0":c>=1e6?(c/1e6).toFixed(1)+"M":c>=1e3?(c/1e3).toFixed(1)+"K":c.toLocaleString());return(c,e)=>(d(),n("div",re,[t("h3",ie,[e[0]||(e[0]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-coins mr-2 text-sm text-yellow-500 md:mr-3 md:text-base"}),f(" Token 使用分布 ")],-1)),t("span",oe,"("+l(s(a)==="daily"?"今日":"本月")+")",1)]),t("div",le,[t("div",ne,[e[1]||(e[1]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-arrow-right mr-1 text-xs text-green-500 md:mr-2 md:text-sm"}),f(" 输入 Token ")],-1)),t("span",de,l(x(s(m).inputTokens)),1)]),t("div",me,[e[2]||(e[2]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-arrow-left mr-1 text-xs text-blue-500 md:mr-2 md:text-sm"}),f(" 输出 Token ")],-1)),t("span",ce,l(x(s(m).outputTokens)),1)]),t("div",xe,[e[3]||(e[3]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-save mr-1 text-xs text-purple-500 md:mr-2 md:text-sm"}),f(" 缓存创建 Token ")],-1)),t("span",ue,l(x(s(m).cacheCreateTokens)),1)]),t("div",ge,[e[4]||(e[4]=t("span",{class:"flex items-center text-sm text-gray-600 dark:text-gray-400 md:text-base"},[t("i",{class:"fas fa-download mr-1 text-xs text-orange-500 md:mr-2 md:text-sm"}),f(" 缓存读取 Token ")],-1)),t("span",fe,l(x(s(m).cacheReadTokens)),1)])]),t("div",ye,[t("div",pe,[t("span",be,l(s(a)==="daily"?"今日":"本月")+"总计",1),t("span",ve,l(x(s(m).allTokens)),1)])])]))}},_e=q(ke,[["__scopeId","data-v-ecee0a94"]]),we={class:"card p-4 md:p-6"},he={class:"space-y-4 md:space-y-5"},$e={class:"mb-2 flex items-center justify-between"},Se={class:"text-xs text-gray-500 dark:text-gray-400 md:text-sm"},Te={key:0},Ce={key:1,class:"flex items-center gap-1"},Le={key:0,class:"h-2 w-full rounded-full bg-gray-200 dark:bg-gray-700"},Ie={key:1,class:"h-2 w-full rounded-full bg-gray-200"},De={key:0},Pe={class:"space-y-2 border-t border-gray-100 pt-2 dark:border-gray-700"},Ae={class:"flex items-center justify-between"},qe={class:"text-sm font-medium text-gray-900 md:text-base"},Ke={key:0},Me={key:1,class:"flex items-center gap-1"},Re={class:"flex items-center justify-between"},je={class:"text-sm font-medium text-gray-900 md:text-base"},Ue={key:0,class:"text-orange-600"},Ee={key:1,class:"text-green-600"},Fe={class:"flex items-center justify-between"},Ne={class:"text-sm font-medium text-gray-900 md:text-base"},Oe={key:0,class:"text-orange-600"},Ve={key:1,class:"text-green-600"},We={key:0,class:"card mt-4 p-4 md:mt-6 md:p-6"},ze={class:"grid grid-cols-1 gap-4 md:gap-6 lg:grid-cols-2"},Be={key:0,class:"rounded-lg border border-amber-200 bg-amber-50 p-3 dark:border-amber-800 dark:bg-amber-900/20 md:p-4"},Je={class:"space-y-1 md:space-y-2"},Ye={class:"break-all text-gray-800 dark:text-gray-200"},He={key:1,class:"rounded-lg border border-blue-200 bg-blue-50 p-3 dark:border-blue-800 dark:bg-blue-900/20 md:p-4"},Qe={class:"space-y-1 md:space-y-2"},Ge={class:"break-all text-gray-800 dark:text-gray-200"},Xe={__name:"LimitConfig",setup(h){const o=K(),{statsData:a}=A(o),m=()=>{if(!a.value.limits.dailyCostLimit||a.value.limits.dailyCostLimit===0)return 0;const c=a.value.limits.currentDailyCost/a.value.limits.dailyCostLimit*100;return Math.min(c,100)},x=()=>{const c=m();return c>=100?"bg-red-500":c>=80?"bg-yellow-500":"bg-green-500"};return(c,e)=>(d(),n("div",null,[t("div",we,[e[12]||(e[12]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-shield-alt mr-2 text-sm text-red-500 md:mr-3 md:text-base"}),f(" 限制配置 ")],-1)),t("div",he,[t("div",null,[t("div",$e,[e[1]||(e[1]=t("span",{class:"text-sm font-medium text-gray-600 dark:text-gray-400 md:text-base"},"每日费用限制",-1)),t("span",Se,[s(a).limits.dailyCostLimit>0?(d(),n("span",Te," $"+l(s(a).limits.currentDailyCost.toFixed(4))+" / $"+l(s(a).limits.dailyCostLimit.toFixed(2)),1)):(d(),n("span",Ce,[f(" $"+l(s(a).limits.currentDailyCost.toFixed(4))+" / ",1),e[0]||(e[0]=t("i",{class:"fas fa-infinity"},null,-1))]))])]),s(a).limits.dailyCostLimit>0?(d(),n("div",Le,[t("div",{class:C(["h-2 rounded-full transition-all duration-300",x()]),style:Z({width:m()+"%"})},null,6)])):(d(),n("div",Ie,e[2]||(e[2]=[t("div",{class:"h-2 rounded-full bg-green-500",style:{width:"0%"}},null,-1)])))]),s(a).limits.rateLimitWindow>0&&(s(a).limits.rateLimitRequests>0||s(a).limits.tokenLimit>0)?(d(),n("div",De,[S(mt,{"current-requests":s(a).limits.currentWindowRequests,"current-tokens":s(a).limits.currentWindowTokens,label:"时间窗口限制","rate-limit-window":s(a).limits.rateLimitWindow,"request-limit":s(a).limits.rateLimitRequests,"show-progress":!0,"show-tooltip":!0,"token-limit":s(a).limits.tokenLimit,"window-end-time":s(a).limits.windowEndTime,"window-remaining-seconds":s(a).limits.windowRemainingSeconds,"window-start-time":s(a).limits.windowStartTime},null,8,["current-requests","current-tokens","rate-limit-window","request-limit","token-limit","window-end-time","window-remaining-seconds","window-start-time"]),e[3]||(e[3]=t("div",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},[t("i",{class:"fas fa-info-circle mr-1"}),f(' 请求次数和Token使用量为"或"的关系,任一达到限制即触发限流 ')],-1))])):L("",!0),t("div",Pe,[t("div",Ae,[e[5]||(e[5]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"并发限制",-1)),t("span",qe,[s(a).limits.concurrencyLimit>0?(d(),n("span",Ke,l(s(a).limits.concurrencyLimit),1)):(d(),n("span",Me,e[4]||(e[4]=[t("i",{class:"fas fa-infinity text-gray-400"},null,-1)])))])]),t("div",Re,[e[8]||(e[8]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"模型限制",-1)),t("span",je,[s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0?(d(),n("span",Ue,[e[6]||(e[6]=t("i",{class:"fas fa-exclamation-triangle mr-1 text-xs md:text-sm"},null,-1)),f(" 限制 "+l(s(a).restrictions.restrictedModels.length)+" 个模型 ",1)])):(d(),n("span",Ee,e[7]||(e[7]=[t("i",{class:"fas fa-check-circle mr-1 text-xs md:text-sm"},null,-1),f(" 允许所有模型 ",-1)])))])]),t("div",Fe,[e[11]||(e[11]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"客户端限制",-1)),t("span",Ne,[s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("span",Oe,[e[9]||(e[9]=t("i",{class:"fas fa-exclamation-triangle mr-1 text-xs md:text-sm"},null,-1)),f(" 限制 "+l(s(a).restrictions.allowedClients.length)+" 个客户端 ",1)])):(d(),n("span",Ve,e[10]||(e[10]=[t("i",{class:"fas fa-check-circle mr-1 text-xs md:text-sm"},null,-1),f(" 允许所有客户端 ",-1)])))])])])])]),s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0||s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("div",We,[e[19]||(e[19]=t("h3",{class:"mb-3 flex items-center text-lg font-bold text-gray-900 dark:text-gray-100 md:mb-4 md:text-xl"},[t("i",{class:"fas fa-list-alt mr-2 text-sm text-amber-500 md:mr-3 md:text-base"}),f(" 详细限制信息 ")],-1)),t("div",ze,[s(a).restrictions.enableModelRestriction&&s(a).restrictions.restrictedModels.length>0?(d(),n("div",Be,[e[14]||(e[14]=t("h4",{class:"mb-2 flex items-center text-sm font-bold text-amber-800 dark:text-amber-300 md:mb-3 md:text-base"},[t("i",{class:"fas fa-robot mr-1 text-xs md:mr-2 md:text-sm"}),f(" 受限模型列表 ")],-1)),t("div",Je,[(d(!0),n(W,null,z(s(a).restrictions.restrictedModels,i=>(d(),n("div",{key:i,class:"rounded border border-amber-200 bg-white px-2 py-1 text-xs dark:border-amber-700 dark:bg-gray-800 md:px-3 md:py-2 md:text-sm"},[e[13]||(e[13]=t("i",{class:"fas fa-ban mr-1 text-xs text-red-500 md:mr-2"},null,-1)),t("span",Ye,l(i),1)]))),128))]),e[15]||(e[15]=t("p",{class:"mt-2 text-xs text-amber-700 dark:text-amber-400 md:mt-3"},[t("i",{class:"fas fa-info-circle mr-1"}),f(" 此 API Key 不能访问以上列出的模型 ")],-1))])):L("",!0),s(a).restrictions.enableClientRestriction&&s(a).restrictions.allowedClients.length>0?(d(),n("div",He,[e[17]||(e[17]=t("h4",{class:"mb-2 flex items-center text-sm font-bold text-blue-800 dark:text-blue-300 md:mb-3 md:text-base"},[t("i",{class:"fas fa-desktop mr-1 text-xs md:mr-2 md:text-sm"}),f(" 允许的客户端 ")],-1)),t("div",Qe,[(d(!0),n(W,null,z(s(a).restrictions.allowedClients,i=>(d(),n("div",{key:i,class:"rounded border border-blue-200 bg-white px-2 py-1 text-xs dark:border-blue-700 dark:bg-gray-800 md:px-3 md:py-2 md:text-sm"},[e[16]||(e[16]=t("i",{class:"fas fa-check mr-1 text-xs text-green-500 md:mr-2"},null,-1)),t("span",Ge,l(i),1)]))),128))]),e[18]||(e[18]=t("p",{class:"mt-2 text-xs text-blue-700 dark:text-blue-400 md:mt-3"},[t("i",{class:"fas fa-info-circle mr-1"}),f(" 此 API Key 只能被以上列出的客户端使用 ")],-1))])):L("",!0)])])):L("",!0)]))}},Ze=q(Xe,[["__scopeId","data-v-2b2bf3be"]]),ts={class:"card p-4 md:p-6"},es={class:"mb-4 md:mb-6"},ss={class:"flex flex-col text-lg font-bold text-gray-900 dark:text-gray-100 sm:flex-row sm:items-center md:text-xl"},as={class:"text-xs font-normal text-gray-600 dark:text-gray-400 sm:ml-2 md:text-sm"},rs={key:0,class:"py-6 text-center md:py-8"},is={key:1,class:"space-y-3 md:space-y-4"},os={class:"mb-2 flex items-start justify-between md:mb-3"},ls={class:"min-w-0 flex-1"},ns={class:"break-all text-base font-bold text-gray-900 dark:text-gray-100 md:text-lg"},ds={class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},ms={class:"ml-3 flex-shrink-0 text-right"},cs={class:"text-base font-bold text-green-600 md:text-lg"},xs={class:"grid grid-cols-2 gap-2 text-xs md:grid-cols-4 md:gap-3 md:text-sm"},us={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},gs={class:"font-medium text-gray-900 dark:text-gray-100"},fs={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},ys={class:"font-medium text-gray-900 dark:text-gray-100"},ps={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},bs={class:"font-medium text-gray-900 dark:text-gray-100"},vs={class:"rounded bg-gray-50 p-2 dark:bg-gray-700"},ks={class:"font-medium text-gray-900 dark:text-gray-100"},_s={key:2,class:"py-6 text-center text-gray-500 dark:text-gray-400 md:py-8"},ws={class:"text-sm md:text-base"},hs={__name:"ModelUsageStats",setup(h){const o=K(),{statsPeriod:a,modelStats:m,modelStatsLoading:x}=A(o),c=e=>(typeof e!="number"&&(e=parseInt(e)||0),e===0?"0":e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toLocaleString());return(e,i)=>(d(),n("div",ts,[t("div",es,[t("h3",ss,[i[0]||(i[0]=t("span",{class:"flex items-center"},[t("i",{class:"fas fa-robot mr-2 text-sm text-indigo-500 md:mr-3 md:text-base"}),f(" 模型使用统计 ")],-1)),t("span",as,"("+l(s(a)==="daily"?"今日":"本月")+")",1)])]),s(x)?(d(),n("div",rs,i[1]||(i[1]=[t("i",{class:"fas fa-spinner loading-spinner mb-2 text-xl text-gray-600 dark:text-gray-400 md:text-2xl"},null,-1),t("p",{class:"text-sm text-gray-600 dark:text-gray-400 md:text-base"},"加载模型统计数据中...",-1)]))):s(m).length>0?(d(),n("div",is,[(d(!0),n(W,null,z(s(m),(p,v)=>{var w;return d(),n("div",{key:v,class:"model-usage-item"},[t("div",os,[t("div",ls,[t("h4",ns,l(p.model),1),t("p",ds,l(p.requests)+" 次请求 ",1)]),t("div",ms,[t("div",cs,l(((w=p.formatted)==null?void 0:w.total)||"$0.000000"),1),i[2]||(i[2]=t("div",{class:"text-xs text-gray-600 dark:text-gray-400 md:text-sm"},"总费用",-1))])]),t("div",xs,[t("div",us,[i[3]||(i[3]=t("div",{class:"text-gray-600 dark:text-gray-400"},"输入 Token",-1)),t("div",gs,l(c(p.inputTokens)),1)]),t("div",fs,[i[4]||(i[4]=t("div",{class:"text-gray-600 dark:text-gray-400"},"输出 Token",-1)),t("div",ys,l(c(p.outputTokens)),1)]),t("div",ps,[i[5]||(i[5]=t("div",{class:"text-gray-600 dark:text-gray-400"},"缓存创建",-1)),t("div",bs,l(c(p.cacheCreateTokens)),1)]),t("div",vs,[i[6]||(i[6]=t("div",{class:"text-gray-600 dark:text-gray-400"},"缓存读取",-1)),t("div",ks,l(c(p.cacheReadTokens)),1)])])])}),128))])):(d(),n("div",_s,[i[7]||(i[7]=t("i",{class:"fas fa-chart-pie mb-3 text-2xl md:text-3xl"},null,-1)),t("p",ws," 暂无"+l(s(a)==="daily"?"今日":"本月")+"模型使用数据 ",1)]))]))}},$s=q(hs,[["__scopeId","data-v-b3b8dc5f"]]),Ss={class:"glass-strong mb-6 rounded-3xl p-4 shadow-xl md:mb-8 md:p-6"},Ts={class:"flex flex-col items-center justify-between gap-4 md:flex-row"},Cs={class:"flex items-center gap-2 md:gap-4"},Ls={class:"flex items-center"},Is={class:"mb-6 md:mb-8"},Ds={class:"flex justify-center"},Ps={class:"inline-flex w-full max-w-md rounded-full border border-white/20 bg-white/10 p-1 shadow-lg backdrop-blur-xl md:w-auto"},As={key:0,class:"tab-content"},qs={key:0,class:"mb-6 md:mb-8"},Ks={class:"rounded-xl border border-red-500/30 bg-red-500/20 p-3 text-sm text-red-800 backdrop-blur-sm dark:border-red-500/20 dark:bg-red-500/10 dark:text-red-200 md:p-4 md:text-base"},Ms={key:1,class:"fade-in"},Rs={class:"glass-strong rounded-3xl p-4 shadow-xl md:p-6"},js={class:"mb-4 border-b border-gray-200 pb-4 dark:border-gray-700 md:mb-6 md:pb-6"},Us={class:"flex flex-col items-start justify-between gap-3 md:flex-row md:items-center md:gap-4"},Es={class:"flex w-full gap-2 md:w-auto"},Fs=["disabled"],Ns=["disabled"],Os={class:"mb-6 grid grid-cols-1 gap-4 md:mb-8 md:gap-6 lg:grid-cols-2"},Vs={key:1,class:"tab-content"},Ws={class:"glass-strong rounded-3xl shadow-xl"},zs={__name:"ApiStatsView",setup(h){const o=et(),a=K(),m=ot(),x=_("stats"),c=V(()=>m.isDarkMode),{apiKey:e,apiId:i,loading:p,modelStatsLoading:v,oemLoading:w,error:u,statsPeriod:g,statsData:U,oemSettings:T}=A(a),{queryStats:M,switchPeriod:I,loadStatsWithApiId:R,loadOemSettings:N,reset:O}=a,E=k=>{(k.ctrlKey||k.metaKey)&&k.key==="Enter"&&(!p.value&&e.value.trim()&&M(),k.preventDefault()),k.key==="Escape"&&O()};return tt(()=>{console.log("API Stats Page loaded"),m.initTheme(),N();const k=o.query.apiId,y=o.query.apiKey;k&&k.match(/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i)?(i.value=k,R()):y&&y.length>10&&(e.value=y),document.addEventListener("keydown",E)}),st(()=>{document.removeEventListener("keydown",E)}),at(e,k=>{k||a.clearData()}),(k,y)=>{const F=it("router-link");return d(),n("div",{class:C(["min-h-screen p-4 md:p-6",c.value?"gradient-bg-dark":"gradient-bg"])},[t("div",Ss,[t("div",Ts,[S(lt,{loading:s(w),"logo-src":s(T).siteIconData||s(T).siteIcon,subtitle:x.value==="stats"?"API Key 使用统计":"使用教程",title:s(T).siteName},null,8,["loading","logo-src","subtitle","title"]),t("div",Cs,[t("div",Ls,[S(nt,{mode:"dropdown"})]),y[5]||(y[5]=t("div",{class:"h-8 w-px bg-gradient-to-b from-transparent via-gray-300 to-transparent opacity-50 dark:via-gray-600"},null,-1)),S(F,{class:"admin-button-refined flex items-center gap-2 rounded-2xl px-4 py-2 transition-all duration-300 md:px-5 md:py-2.5",to:"/dashboard"},{default:rt(()=>y[4]||(y[4]=[t("i",{class:"fas fa-shield-alt text-sm md:text-base"},null,-1),t("span",{class:"text-xs font-semibold tracking-wide md:text-sm"},"管理后台",-1)])),_:1,__:[4]})])])]),t("div",Is,[t("div",Ds,[t("div",Ps,[t("button",{class:C(["tab-pill-button",x.value==="stats"?"active":""]),onClick:y[0]||(y[0]=j=>x.value="stats")},y[6]||(y[6]=[t("i",{class:"fas fa-chart-line mr-1 md:mr-2"},null,-1),t("span",{class:"text-sm md:text-base"},"统计查询",-1)]),2),t("button",{class:C(["tab-pill-button",x.value==="tutorial"?"active":""]),onClick:y[1]||(y[1]=j=>x.value="tutorial")},y[7]||(y[7]=[t("i",{class:"fas fa-graduation-cap mr-1 md:mr-2"},null,-1),t("span",{class:"text-sm md:text-base"},"使用教程",-1)]),2)])])]),x.value==="stats"?(d(),n("div",As,[S(ht),s(u)?(d(),n("div",qs,[t("div",Ks,[y[8]||(y[8]=t("i",{class:"fas fa-exclamation-triangle mr-2"},null,-1)),f(" "+l(s(u)),1)])])):L("",!0),s(U)?(d(),n("div",Ms,[t("div",Rs,[t("div",js,[t("div",Us,[y[11]||(y[11]=t("div",{class:"flex items-center gap-2 md:gap-3"},[t("i",{class:"fas fa-clock text-base text-blue-500 md:text-lg"}),t("span",{class:"text-base font-medium text-gray-700 dark:text-gray-200 md:text-lg"},"统计时间范围")],-1)),t("div",Es,[t("button",{class:C(["flex flex-1 items-center justify-center gap-1 px-4 py-2 text-xs font-medium md:flex-none md:gap-2 md:px-6 md:text-sm",["period-btn",{active:s(g)==="daily"}]]),disabled:s(p)||s(v),onClick:y[2]||(y[2]=j=>s(I)("daily"))},y[9]||(y[9]=[t("i",{class:"fas fa-calendar-day text-xs md:text-sm"},null,-1),f(" 今日 ",-1)]),10,Fs),t("button",{class:C(["flex flex-1 items-center justify-center gap-1 px-4 py-2 text-xs font-medium md:flex-none md:gap-2 md:px-6 md:text-sm",["period-btn",{active:s(g)==="monthly"}]]),disabled:s(p)||s(v),onClick:y[3]||(y[3]=j=>s(I)("monthly"))},y[10]||(y[10]=[t("i",{class:"fas fa-calendar-alt text-xs md:text-sm"},null,-1),f(" 本月 ",-1)]),10,Ns)])])]),S(ae),t("div",Os,[S(_e),S(Ze)]),S($s)])])):L("",!0)])):L("",!0),x.value==="tutorial"?(d(),n("div",Vs,[t("div",Ws,[S(ct)])])):L("",!0)],2)}}},ta=q(zs,[["__scopeId","data-v-fa71f87c"]]);export{ta as default}; diff --git a/web/admin-spa/dist/assets/ApiStatsView-D_A6K6R6.css b/web/admin-spa/dist/assets/ApiStatsView-D_A6K6R6.css deleted file mode 100644 index 68a7d7d9..00000000 --- a/web/admin-spa/dist/assets/ApiStatsView-D_A6K6R6.css +++ /dev/null @@ -1 +0,0 @@ -.api-input-wide-card[data-v-0b1313e4]{background:var(--surface-color);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);border:1px solid var(--border-color);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d,inset 0 1px #ffffff1a;transition:all .3s cubic-bezier(.4,0,.2,1)}.dark{box-shadow:0 25px 50px -12px #0009,0 0 0 1px #4b556333,inset 0 1px #6b728026}.api-input-wide-card[data-v-0b1313e4]:hover{box-shadow:0 32px 64px -12px #00000059,0 0 0 1px #ffffff14,inset 0 1px #ffffff26;transform:translateY(-1px)}.dark{box-shadow:0 32px 64px -12px #000000b3,0 0 0 1px #4b556340,inset 0 1px #6b72804d!important}.wide-card-title h2[data-v-0b1313e4]{color:#1f2937;text-shadow:0 1px 2px rgba(0,0,0,.1);font-weight:700}.dark{color:#f9fafb;text-shadow:0 1px 2px rgba(0,0,0,.3)}.wide-card-title p[data-v-0b1313e4]{color:#4b5563;text-shadow:0 1px 1px rgba(0,0,0,.05)}.dark{color:#d1d5db;text-shadow:0 1px 1px rgba(0,0,0,.2)}.wide-card-title .fas.fa-chart-line[data-v-0b1313e4]{color:#3b82f6;text-shadow:0 1px 2px rgba(59,130,246,.2)}.api-input-grid[data-v-0b1313e4]{align-items:end;gap:1rem}.wide-card-input[data-v-0b1313e4]{background:var(--input-bg);border:2px solid var(--input-border);border-radius:12px;padding:14px 16px;font-size:16px;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--text-primary);box-shadow:0 4px 6px -1px #0000001a}.dark{box-shadow:0 4px 6px -1px #0006;color:#e5e7eb}.wide-card-input[data-v-0b1313e4]::-moz-placeholder{color:#9ca3af}.wide-card-input[data-v-0b1313e4]::placeholder{color:#9ca3af}.dark{color:#64748b}.wide-card-input[data-v-0b1313e4]:focus{outline:none;border-color:#60a5fa;box-shadow:0 0 0 3px #60a5fa33,0 10px 15px -3px #0000001a;background:#fff;color:#1f2937}.dark{border-color:#60a5fa;box-shadow:0 0 0 3px #60a5fa26,0 10px 15px -3px #0006;background:#1f2937f2;color:#f3f4f6}.btn[data-v-0b1313e4]{font-weight:500;border-radius:12px;border:none;cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden;letter-spacing:.025em}.btn-query[data-v-0b1313e4]{padding:14px 24px;font-size:16px}.btn-primary[data-v-0b1313e4]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 10px 15px -3px #667eea4d,0 4px 6px -2px #667eea0d}.btn-primary[data-v-0b1313e4]:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 20px 25px -5px #667eea4d,0 10px 10px -5px #667eea1a}.btn-primary[data-v-0b1313e4]:disabled{opacity:.6;cursor:not-allowed;transform:none}.security-notice[data-v-0b1313e4]{background:#ffffff80;border:1px solid rgba(255,255,255,.4);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:8px;padding:12px 16px;color:#374151;font-size:.875rem;transition:all .3s ease}.dark{background:#1f2937cc!important;border:1px solid rgba(75,85,99,.5)!important;color:#d1d5db!important}.security-notice[data-v-0b1313e4]:hover{background:#fff9;border-color:#ffffff80;color:#1f2937}.dark{background:#1f2937e6!important;border-color:#4b556399!important;color:#e5e7eb!important}.security-notice .fas.fa-shield-alt[data-v-0b1313e4]{color:#10b981;text-shadow:0 1px 2px rgba(16,185,129,.2)}.loading-spinner[data-v-0b1313e4]{animation:spin-0b1313e4 1s linear infinite;filter:drop-shadow(0 0 4px rgba(255,255,255,.5))}@keyframes spin-0b1313e4{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.api-input-wide-card[data-v-0b1313e4]{padding:1.25rem}.wide-card-title[data-v-0b1313e4]{margin-bottom:1.25rem}.wide-card-title h2[data-v-0b1313e4]{font-size:1.5rem}.wide-card-title p[data-v-0b1313e4]{font-size:.875rem}.api-input-grid[data-v-0b1313e4]{gap:1rem}.wide-card-input[data-v-0b1313e4]{padding:12px 14px;font-size:15px}.btn-query[data-v-0b1313e4]{padding:12px 20px;font-size:15px}.security-notice[data-v-0b1313e4]{padding:10px 14px;font-size:.8rem}}@media (max-width: 480px){.api-input-wide-card[data-v-0b1313e4]{padding:1rem}.wide-card-title h2[data-v-0b1313e4]{font-size:1.25rem}.wide-card-title p[data-v-0b1313e4]{font-size:.8rem}.wide-card-input[data-v-0b1313e4]{padding:10px 12px;font-size:14px}.btn-query[data-v-0b1313e4]{padding:10px 16px;font-size:14px}}.card[data-v-f536da49]{background:var(--surface-color);border-radius:16px;border:1px solid var(--border-color);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.card[data-v-f536da49]:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent)}.card[data-v-f536da49]:hover{transform:translateY(-2px);box-shadow:0 20px 25px -5px #00000026,0 10px 10px -5px #00000014}.stat-card[data-v-f536da49]{background:linear-gradient(135deg,var(--surface-color) 0%,var(--glass-strong-color) 100%);border-radius:16px;border:1px solid var(--border-color);padding:16px;position:relative;overflow:hidden;transition:all .3s ease}@media (min-width: 768px){.stat-card[data-v-f536da49]{border-radius:20px;padding:24px}}.stat-card[data-v-f536da49]:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 70%);opacity:0;transition:opacity .3s ease}.stat-card[data-v-f536da49]:hover{transform:translateY(-4px);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.dark{box-shadow:0 20px 25px -5px #0006,0 10px 10px -5px #00000040}.stat-card[data-v-f536da49]:hover:before{opacity:1}@media (max-width: 768px){.card[data-v-f536da49]{margin-bottom:1rem}}@media (max-width: 480px){.stat-card[data-v-f536da49]{padding:12px}}.card[data-v-ecee0a94]{background:var(--surface-color);border-radius:16px;border:1px solid var(--border-color);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.card[data-v-ecee0a94]:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent)}.card[data-v-ecee0a94]:hover{transform:translateY(-2px);box-shadow:0 20px 25px -5px #00000026,0 10px 10px -5px #00000014}.card[data-v-2b2bf3be]{background:var(--surface-color);border-radius:16px;border:1px solid var(--border-color);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.card[data-v-2b2bf3be]:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent)}.card[data-v-2b2bf3be]:hover{transform:translateY(-2px);box-shadow:0 20px 25px -5px #00000026,0 10px 10px -5px #00000014}.card[data-v-b3b8dc5f]{background:var(--surface-color);border-radius:16px;border:1px solid var(--border-color);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.card[data-v-b3b8dc5f]:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent)}.card[data-v-b3b8dc5f]:hover{transform:translateY(-2px);box-shadow:0 20px 25px -5px #00000026,0 10px 10px -5px #00000014}.dark{box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #00000059}.model-usage-item[data-v-b3b8dc5f]{background:var(--surface-color);border:1px solid var(--border-color);border-radius:12px;padding:12px;transition:all .3s ease;position:relative;overflow:hidden}@media (min-width: 768px){.model-usage-item[data-v-b3b8dc5f]{padding:16px}}.model-usage-item[data-v-b3b8dc5f]:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent)}.model-usage-item[data-v-b3b8dc5f]:hover{transform:translateY(-2px);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;border-color:#ffffff4d}.dark{box-shadow:0 10px 15px -3px #0006,0 4px 6px -2px #00000040;border-color:#4b556399}.loading-spinner[data-v-b3b8dc5f]{animation:spin-b3b8dc5f 1s linear infinite;filter:drop-shadow(0 0 4px rgba(255,255,255,.5))}@keyframes spin-b3b8dc5f{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.model-usage-item .grid[data-v-b3b8dc5f]{grid-template-columns:1fr 1fr}}@media (max-width: 480px){.model-usage-item[data-v-b3b8dc5f]{padding:10px}.model-usage-item .grid[data-v-b3b8dc5f]{grid-template-columns:1fr}}.gradient-bg[data-v-fa71f87c]{background:linear-gradient(135deg,#667eea,#764ba2,#f093fb);background-attachment:fixed;min-height:100vh;position:relative}.gradient-bg-dark[data-v-fa71f87c]{background:linear-gradient(135deg,#1e293b,#334155,#475569);background-attachment:fixed;min-height:100vh;position:relative}.gradient-bg[data-v-fa71f87c]:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 80%,rgba(240,147,251,.2) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(102,126,234,.2) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(118,75,162,.1) 0%,transparent 50%);pointer-events:none;z-index:0}.gradient-bg-dark[data-v-fa71f87c]:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 80%,rgba(100,116,139,.1) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(71,85,105,.1) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(30,41,59,.1) 0%,transparent 50%);pointer-events:none;z-index:0}.glass-strong[data-v-fa71f87c]{background:var(--glass-strong-color);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);border:1px solid var(--border-color);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d,inset 0 1px #ffffff1a;position:relative;z-index:1}.dark{box-shadow:0 25px 50px -12px #000000b3,0 0 0 1px #3741514d,inset 0 1px #4b556333}.header-title[data-v-fa71f87c]{background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;letter-spacing:-.025em}.admin-button-refined[data-v-fa71f87c]{background:linear-gradient(135deg,#667eea,#764ba2);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.3);color:#fff;text-decoration:none;box-shadow:0 4px 12px #667eea40,inset 0 1px 1px #fff3;position:relative;overflow:hidden;font-weight:600}.dark{background:#374151cc;border:1px solid rgba(107,114,128,.4);color:#f3f4f6;box-shadow:0 4px 12px #0000004d,inset 0 1px 1px #ffffff0d}.admin-button-refined[data-v-fa71f87c]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#764ba2,#667eea);opacity:0;transition:opacity .3s ease}.admin-button-refined[data-v-fa71f87c]:hover{transform:translateY(-2px) scale(1.02);background:linear-gradient(135deg,#764ba2,#667eea);box-shadow:0 8px 20px #764ba259,inset 0 1px 1px #ffffff4d;border-color:#fff6;color:#fff}.admin-button-refined[data-v-fa71f87c]:hover:before{opacity:1}.dark{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#9333ea66;box-shadow:0 8px 20px #667eea4d,inset 0 1px 1px #ffffff1a;color:#fff}.admin-button-refined[data-v-fa71f87c]:active{transform:translateY(-1px) scale(1)}.admin-button-refined i[data-v-fa71f87c],.admin-button-refined span[data-v-fa71f87c]{position:relative;z-index:1}.period-btn[data-v-fa71f87c]{position:relative;overflow:hidden;border-radius:12px;font-weight:500;letter-spacing:.025em;transition:all .3s ease;border:none;cursor:pointer}.period-btn.active[data-v-fa71f87c]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 10px 15px -3px #667eea4d,0 4px 6px -2px #667eea0d;transform:translateY(-1px)}.period-btn[data-v-fa71f87c]:not(.active){color:#374151;background:#fff9;border:1px solid rgba(229,231,235,.5)}html.dark{color:#e5e7eb;background:#37415166;border:1px solid rgba(75,85,99,.5)}.period-btn[data-v-fa71f87c]:not(.active):hover{background:#fffc;color:#1f2937;border-color:#d1d5dbcc}html.dark{background:#4b556399;color:#fff;border-color:#6b7280cc}.tab-pill-button[data-v-fa71f87c]{padding:.5rem 1rem;border-radius:9999px;font-weight:500;font-size:.875rem;color:#fffc;background:transparent;border:none;cursor:pointer;transition:all .2s ease;position:relative;display:inline-flex;align-items:center;white-space:nowrap;flex:1;justify-content:center}html.dark{color:#d1d5dbcc}@media (min-width: 768px){.tab-pill-button[data-v-fa71f87c]{padding:.625rem 1.25rem;flex:none}}.tab-pill-button[data-v-fa71f87c]:hover{color:#fff;background:#ffffff1a}html.dark{color:#f3f4f6;background:#64748b33}.tab-pill-button.active[data-v-fa71f87c]{background:#fff;color:#764ba2;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}html.dark{background:#475569e6;color:#f3f4f6;box-shadow:0 4px 6px -1px #0000004d,0 2px 4px -1px #0003}.tab-pill-button i[data-v-fa71f87c]{font-size:.875rem}.tab-content[data-v-fa71f87c]{animation:tabFadeIn-fa71f87c .4s ease-out}@keyframes tabFadeIn-fa71f87c{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.fade-in[data-v-fa71f87c]{animation:fadeIn-fa71f87c .6s ease-out}@keyframes fadeIn-fa71f87c{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}} diff --git a/web/admin-spa/dist/assets/CustomDropdown-D7ci0ZD4.js b/web/admin-spa/dist/assets/CustomDropdown-C7e2WJat.js similarity index 96% rename from web/admin-spa/dist/assets/CustomDropdown-D7ci0ZD4.js rename to web/admin-spa/dist/assets/CustomDropdown-C7e2WJat.js index e9766108..f393fa6c 100644 --- a/web/admin-spa/dist/assets/CustomDropdown-D7ci0ZD4.js +++ b/web/admin-spa/dist/assets/CustomDropdown-C7e2WJat.js @@ -1 +1 @@ -import{r as m,c as D,q as E,Z as R,x as n,y as r,z as d,I as N,L as v,C as c,P as L,R as T,J as W,B as $,Q as O,ac as q,T as A,a5 as H,D as I}from"./vue-vendor-DfnFpxGJ.js";import{_ as P}from"./index-BdtiivzQ.js";const F={class:"relative"},J={class:"select-none whitespace-nowrap text-sm font-medium text-gray-700 dark:text-gray-200"},M={class:"max-h-60 overflow-y-auto py-1"},Q=["onClick"],U={key:1,class:"fas fa-check ml-auto pl-3 text-xs text-blue-600"},Z={__name:"CustomDropdown",props:{modelValue:{type:[String,Number],default:""},options:{type:Array,required:!0},placeholder:{type:String,default:"请选择"},icon:{type:String,default:""},iconColor:{type:String,default:"text-gray-500"}},emits:["update:modelValue","change"],setup(o,{emit:V}){const p=o,y=V,t=m(!1),l=m(null),u=m(null),w=m({}),B=D(()=>{const e=p.options.find(i=>i.value===p.modelValue);return e?e.label:""}),S=async()=>{t.value=!t.value,t.value&&(await I(),h())},f=()=>{t.value=!1},z=e=>{y("update:modelValue",e.value),y("change",e.value),f()},h=()=>{if(!l.value||!t.value)return;const e=l.value.getBoundingClientRect(),i=250,a=window.innerHeight-e.bottom,C=e.top;let g,s;a>=i||a>=C?g=e.bottom+8:g=e.top-i-8,s=e.left;const _=200;s+_>window.innerWidth&&(s=window.innerWidth-_-10),s<10&&(s=10),w.value={top:`${g}px`,left:`${s}px`,minWidth:`${e.width}px`}},x=()=>{t.value&&h()},b=()=>{t.value&&f()},k=e=>{!l.value||!t.value||l.value.contains(e.target)||(u.value&&!u.value.contains(e.target)?f():u.value||f())};return E(()=>{window.addEventListener("scroll",x,!0),window.addEventListener("resize",b),document.addEventListener("click",k)}),R(()=>{window.removeEventListener("scroll",x,!0),window.removeEventListener("resize",b),document.removeEventListener("click",k)}),(e,i)=>(r(),n("div",F,[d("div",{ref_key:"triggerRef",ref:l,class:c(["relative flex cursor-pointer items-center gap-2 rounded-lg border border-gray-200 bg-white px-3 py-2 shadow-sm transition-all duration-200 hover:shadow-md dark:border-gray-600 dark:bg-gray-800",[t.value&&"border-blue-400 shadow-md"]]),onClick:S},[o.icon?(r(),n("i",{key:0,class:c(["fas",o.icon,"text-sm",o.iconColor])},null,2)):v("",!0),d("span",J,L(B.value||o.placeholder),1),d("i",{class:c(["fas fa-chevron-down ml-auto text-xs text-gray-400 transition-transform duration-200 dark:text-gray-500",t.value&&"rotate-180"])},null,2)],2),(r(),N(H,{to:"body"},[T(A,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"transform scale-95 opacity-0","enter-to-class":"transform scale-100 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"transform scale-100 opacity-100","leave-to-class":"transform scale-95 opacity-0"},{default:W(()=>[t.value?(r(),n("div",{key:0,ref_key:"dropdownRef",ref:u,class:"fixed z-[9999] min-w-max overflow-hidden rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-600 dark:bg-gray-800",style:$(w.value)},[d("div",M,[(r(!0),n(O,null,q(o.options,a=>(r(),n("div",{key:a.value,class:c(["flex cursor-pointer items-center gap-2 whitespace-nowrap px-3 py-2 text-sm transition-colors duration-150",[a.value===o.modelValue?"bg-blue-50 font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400":"text-gray-700 hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700"]]),onClick:C=>z(a)},[a.icon?(r(),n("i",{key:0,class:c(["fas",a.icon,"text-xs"])},null,2)):v("",!0),d("span",null,L(a.label),1),a.value===o.modelValue?(r(),n("i",U)):v("",!0)],10,Q))),128))])],4)):v("",!0)]),_:1})]))]))}},K=P(Z,[["__scopeId","data-v-ffee8773"]]);export{K as C}; +import{r as m,c as D,q as E,Z as R,x as n,y as r,z as d,I as N,L as v,C as c,P as L,R as T,J as W,B as $,Q as O,ac as q,T as A,a5 as H,D as I}from"./vue-vendor-Ig-GgGwA.js";import{_ as P}from"./index-CY9cPBXr.js";const F={class:"relative"},J={class:"select-none whitespace-nowrap text-sm font-medium text-gray-700 dark:text-gray-200"},M={class:"max-h-60 overflow-y-auto py-1"},Q=["onClick"],U={key:1,class:"fas fa-check ml-auto pl-3 text-xs text-blue-600"},Z={__name:"CustomDropdown",props:{modelValue:{type:[String,Number],default:""},options:{type:Array,required:!0},placeholder:{type:String,default:"请选择"},icon:{type:String,default:""},iconColor:{type:String,default:"text-gray-500"}},emits:["update:modelValue","change"],setup(o,{emit:V}){const p=o,y=V,t=m(!1),l=m(null),u=m(null),w=m({}),B=D(()=>{const e=p.options.find(i=>i.value===p.modelValue);return e?e.label:""}),S=async()=>{t.value=!t.value,t.value&&(await I(),h())},f=()=>{t.value=!1},z=e=>{y("update:modelValue",e.value),y("change",e.value),f()},h=()=>{if(!l.value||!t.value)return;const e=l.value.getBoundingClientRect(),i=250,a=window.innerHeight-e.bottom,C=e.top;let g,s;a>=i||a>=C?g=e.bottom+8:g=e.top-i-8,s=e.left;const _=200;s+_>window.innerWidth&&(s=window.innerWidth-_-10),s<10&&(s=10),w.value={top:`${g}px`,left:`${s}px`,minWidth:`${e.width}px`}},x=()=>{t.value&&h()},b=()=>{t.value&&f()},k=e=>{!l.value||!t.value||l.value.contains(e.target)||(u.value&&!u.value.contains(e.target)?f():u.value||f())};return E(()=>{window.addEventListener("scroll",x,!0),window.addEventListener("resize",b),document.addEventListener("click",k)}),R(()=>{window.removeEventListener("scroll",x,!0),window.removeEventListener("resize",b),document.removeEventListener("click",k)}),(e,i)=>(r(),n("div",F,[d("div",{ref_key:"triggerRef",ref:l,class:c(["relative flex cursor-pointer items-center gap-2 rounded-lg border border-gray-200 bg-white px-3 py-2 shadow-sm transition-all duration-200 hover:shadow-md dark:border-gray-600 dark:bg-gray-800",[t.value&&"border-blue-400 shadow-md"]]),onClick:S},[o.icon?(r(),n("i",{key:0,class:c(["fas",o.icon,"text-sm",o.iconColor])},null,2)):v("",!0),d("span",J,L(B.value||o.placeholder),1),d("i",{class:c(["fas fa-chevron-down ml-auto text-xs text-gray-400 transition-transform duration-200 dark:text-gray-500",t.value&&"rotate-180"])},null,2)],2),(r(),N(H,{to:"body"},[T(A,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"transform scale-95 opacity-0","enter-to-class":"transform scale-100 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"transform scale-100 opacity-100","leave-to-class":"transform scale-95 opacity-0"},{default:W(()=>[t.value?(r(),n("div",{key:0,ref_key:"dropdownRef",ref:u,class:"fixed z-[9999] min-w-max overflow-hidden rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-600 dark:bg-gray-800",style:$(w.value)},[d("div",M,[(r(!0),n(O,null,q(o.options,a=>(r(),n("div",{key:a.value,class:c(["flex cursor-pointer items-center gap-2 whitespace-nowrap px-3 py-2 text-sm transition-colors duration-150",[a.value===o.modelValue?"bg-blue-50 font-medium text-blue-700 dark:bg-blue-900/30 dark:text-blue-400":"text-gray-700 hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700"]]),onClick:C=>z(a)},[a.icon?(r(),n("i",{key:0,class:c(["fas",a.icon,"text-xs"])},null,2)):v("",!0),d("span",null,L(a.label),1),a.value===o.modelValue?(r(),n("i",U)):v("",!0)],10,Q))),128))])],4)):v("",!0)]),_:1})]))]))}},K=P(Z,[["__scopeId","data-v-ffee8773"]]);export{K as C}; diff --git a/web/admin-spa/dist/assets/CustomDropdown-jjrvIxsf.css b/web/admin-spa/dist/assets/CustomDropdown-jjrvIxsf.css deleted file mode 100644 index 07174a61..00000000 --- a/web/admin-spa/dist/assets/CustomDropdown-jjrvIxsf.css +++ /dev/null @@ -1 +0,0 @@ -.max-h-60[data-v-ffee8773]::-webkit-scrollbar{width:6px}.max-h-60[data-v-ffee8773]::-webkit-scrollbar-track{background:#f3f4f6;border-radius:3px}.max-h-60[data-v-ffee8773]::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.max-h-60[data-v-ffee8773]::-webkit-scrollbar-thumb:hover{background:#9ca3af} diff --git a/web/admin-spa/dist/assets/DashboardView-B8PC7PpI.js b/web/admin-spa/dist/assets/DashboardView-B8PC7PpI.js new file mode 100644 index 00000000..e02db618 --- /dev/null +++ b/web/admin-spa/dist/assets/DashboardView-B8PC7PpI.js @@ -0,0 +1 @@ +import{E as $t}from"./element-plus-Bq6mBxnk.js";import{aR as Rt,r as $,c as wt,aV as Tt,o as st,q as At,D as Z,V as Pt,x as h,z as t,P as y,u as a,L as P,O as B,Q as _t,ac as Ct,C as j,R as Bt,K as It,al as Ut,y as k}from"./vue-vendor-Ig-GgGwA.js";import{b as J,_ as Mt,a as Kt}from"./index-CY9cPBXr.js";import{s as bt}from"./toast-BvwA7Mwb.js";import{C as vt}from"./chart-Cor9iTVD.js";import"./vendor-BDiMbLwQ.js";const Ot=Rt("dashboard",()=>{const ot=$(!1),Y=$({totalApiKeys:0,activeApiKeys:0,totalAccounts:0,normalAccounts:0,abnormalAccounts:0,pausedAccounts:0,activeAccounts:0,rateLimitedAccounts:0,accountsByPlatform:{claude:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},"claude-console":{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},gemini:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},openai:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},azure_openai:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},bedrock:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0}},todayRequests:0,totalRequests:0,todayTokens:0,todayInputTokens:0,todayOutputTokens:0,totalTokens:0,totalInputTokens:0,totalOutputTokens:0,totalCacheCreateTokens:0,totalCacheReadTokens:0,todayCacheCreateTokens:0,todayCacheReadTokens:0,systemRPM:0,systemTPM:0,realtimeRPM:0,realtimeTPM:0,metricsWindow:5,isHistoricalMetrics:!1,systemStatus:"正常",uptime:0,systemTimezone:8}),nt=$({todayCosts:{totalCost:0,formatted:{totalCost:"$0.000000"}},totalCosts:{totalCost:0,formatted:{totalCost:"$0.000000"}}}),G=$([]),o=$([]),X=$([]),z=$({data:[],topApiKeys:[],totalApiKeys:0}),n=$({type:"preset",preset:"7days",customStart:"",customEnd:"",customRange:null,presetOptions:[{value:"today",label:"今日",days:1},{value:"7days",label:"7天",days:7},{value:"30days",label:"30天",days:30}]}),T=$("day"),lt=$("requests"),q=$([new Date(2e3,1,1,0,0,0),new Date(2e3,2,1,23,59,59)]),E=wt(()=>{const c=Y.value.uptime,r=Math.floor(c/86400),i=Math.floor(c%86400/3600),d=Math.floor(c%3600/60);return r>0?`${r}天 ${i}小时`:i>0?`${i}小时 ${d}分钟`:`${d}分钟`});function f(c,r=!0){const i=c.getFullYear(),d=c.getMonth(),l=c.getDate();return r?new Date(Date.UTC(i,d,l-1,16,0,0,0)):new Date(Date.UTC(i,d,l,15,59,59,999))}async function pt(c=null){ot.value=!0;try{let r={today:"today",all:"all"};c&&(r={today:{today:"today",all:"today"},"7days":{today:"7days",all:"7days"},monthly:{today:"monthly",all:"monthly"},all:{today:"today",all:"all"}}[c]||r);const[i,d,l]=await Promise.all([J.get("/admin/dashboard"),J.get(`/admin/usage-costs?period=${r.today}`),J.get(`/admin/usage-costs?period=${r.all}`)]);if(i.success){const s=i.data.overview||{},u=i.data.recentActivity||{},m=i.data.systemAverages||{},_=i.data.realtimeMetrics||{},C=i.data.systemHealth||{};Y.value={totalApiKeys:s.totalApiKeys||0,activeApiKeys:s.activeApiKeys||0,totalAccounts:s.totalAccounts||s.totalClaudeAccounts||0,normalAccounts:s.normalAccounts||0,abnormalAccounts:s.abnormalAccounts||0,pausedAccounts:s.pausedAccounts||0,activeAccounts:s.activeAccounts||s.activeClaudeAccounts||0,rateLimitedAccounts:s.rateLimitedAccounts||s.rateLimitedClaudeAccounts||0,accountsByPlatform:s.accountsByPlatform||{claude:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},"claude-console":{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},gemini:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},openai:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},azure_openai:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},bedrock:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0}},todayRequests:u.requestsToday||0,totalRequests:s.totalRequestsUsed||0,todayTokens:u.tokensToday||0,todayInputTokens:u.inputTokensToday||0,todayOutputTokens:u.outputTokensToday||0,totalTokens:s.totalTokensUsed||0,totalInputTokens:s.totalInputTokensUsed||0,totalOutputTokens:s.totalOutputTokensUsed||0,totalCacheCreateTokens:s.totalCacheCreateTokensUsed||0,totalCacheReadTokens:s.totalCacheReadTokensUsed||0,todayCacheCreateTokens:u.cacheCreateTokensToday||0,todayCacheReadTokens:u.cacheReadTokensToday||0,systemRPM:m.rpm||0,systemTPM:m.tpm||0,realtimeRPM:_.rpm||0,realtimeTPM:_.tpm||0,metricsWindow:_.windowMinutes||5,isHistoricalMetrics:_.isHistorical||!1,systemStatus:C.redisConnected?"正常":"异常",uptime:C.uptime||0,systemTimezone:i.data.systemTimezone||8}}d.success&&l.success&&(nt.value={todayCosts:d.data.totalCosts||{totalCost:0,formatted:{totalCost:"$0.000000"}},totalCosts:l.data.totalCosts||{totalCost:0,formatted:{totalCost:"$0.000000"}}})}catch(r){console.error("加载仪表板数据失败:",r)}finally{ot.value=!1}}async function rt(c=7,r="day"){try{let i="/admin/usage-trend?";if(r==="hour")if(i+="granularity=hour",n.value.customRange&&n.value.customRange.length===2){const l=s=>{const[m,_]=s.split(" "),[C,x,v]=m.split("-").map(Number),[M,K,O]=_.split(":").map(Number);return new Date(Date.UTC(C,x-1,v,M-8,K,O)).toISOString()};i+=`&startDate=${encodeURIComponent(l(n.value.customRange[0]))}`,i+=`&endDate=${encodeURIComponent(l(n.value.customRange[1]))}`}else{const l=new Date;let s,u;if(n.value.type==="preset")switch(n.value.preset){case"last24h":{u=new Date(l),s=new Date(l.getTime()-24*60*60*1e3);break}case"yesterday":{const m=new Date;m.setDate(m.getDate()-1),s=f(m,!0),u=f(m,!1);break}case"dayBefore":{const m=new Date;m.setDate(m.getDate()-2),s=f(m,!0),u=f(m,!1);break}default:s=new Date(l.getTime()-24*60*60*1e3),u=l}else s=new Date(l.getTime()-c*24*60*60*1e3),u=l;i+=`&startDate=${encodeURIComponent(s.toISOString())}`,i+=`&endDate=${encodeURIComponent(u.toISOString())}`}else i+=`granularity=day&days=${c}`;const d=await J.get(i);d.success&&(o.value=d.data)}catch(i){console.error("加载使用趋势失败:",i)}}async function it(c="daily"){try{let r=`/admin/model-stats?period=${c}`;if(n.value.type==="custom"||T.value==="hour"){if(n.value.customRange&&n.value.customRange.length===2){const d=l=>{const[u,m]=l.split(" "),[_,C,x]=u.split("-").map(Number),[v,M,K]=m.split(":").map(Number);return new Date(Date.UTC(_,C-1,x,v-8,M,K)).toISOString()};r+=`&startDate=${encodeURIComponent(d(n.value.customRange[0]))}`,r+=`&endDate=${encodeURIComponent(d(n.value.customRange[1]))}`}else if(T.value==="hour"&&n.value.type==="preset"){const d=new Date;let l,s;switch(n.value.preset){case"last24h":{s=new Date(d),l=new Date(d.getTime()-24*60*60*1e3);break}case"yesterday":{const u=new Date;u.setDate(u.getDate()-1),l=f(u,!0),s=f(u,!1);break}case"dayBefore":{const u=new Date;u.setDate(u.getDate()-2),l=f(u,!0),s=f(u,!1);break}default:l=new Date(d.getTime()-24*60*60*1e3),s=d}r+=`&startDate=${encodeURIComponent(l.toISOString())}`,r+=`&endDate=${encodeURIComponent(s.toISOString())}`}}else if(n.value.type==="preset"&&T.value==="day"){const d=new Date;let l,s;const u=n.value.presetOptions.find(m=>m.value===n.value.preset);if(u){if(n.value.preset==="today")l=f(d,!0),s=f(d,!1);else{const m=new Date;m.setDate(m.getDate()-(u.days-1)),l=f(m,!0),s=f(d,!1)}r+=`&startDate=${encodeURIComponent(l.toISOString())}`,r+=`&endDate=${encodeURIComponent(s.toISOString())}`}}const i=await J.get(r);i.success&&(X.value=i.data)}catch(r){console.error("加载模型统计失败:",r)}}async function dt(c="requests"){try{let r="/admin/api-keys-usage-trend?",i=7;if(T.value==="hour")if(r+="granularity=hour",n.value.customRange&&n.value.customRange.length===2){const l=s=>{const[m,_]=s.split(" "),[C,x,v]=m.split("-").map(Number),[M,K,O]=_.split(":").map(Number);return new Date(Date.UTC(C,x-1,v,M-8,K,O)).toISOString()};r+=`&startDate=${encodeURIComponent(l(n.value.customRange[0]))}`,r+=`&endDate=${encodeURIComponent(l(n.value.customRange[1]))}`}else{const l=new Date;let s,u;if(n.value.type==="preset")switch(n.value.preset){case"last24h":{u=new Date(l),s=new Date(l.getTime()-24*60*60*1e3);break}case"yesterday":{const m=new Date;m.setDate(m.getDate()-1),s=f(m,!0),u=f(m,!1);break}case"dayBefore":{const m=new Date;m.setDate(m.getDate()-2),s=f(m,!0),u=f(m,!1);break}default:s=new Date(l.getTime()-24*60*60*1e3),u=l}else s=new Date(l.getTime()-24*60*60*1e3),u=l;r+=`&startDate=${encodeURIComponent(s.toISOString())}`,r+=`&endDate=${encodeURIComponent(u.toISOString())}`}else i=n.value.type==="preset"?n.value.preset==="today"?1:n.value.preset==="7days"?7:30:Q(n.value.customStart,n.value.customEnd),r+=`granularity=day&days=${i}`;r+=`&metric=${c}`;const d=await J.get(r);d.success&&(z.value={data:d.data||[],topApiKeys:d.topApiKeys||[],totalApiKeys:d.totalApiKeys||0})}catch(r){console.error("加载API Keys趋势失败:",r)}}function N(c){n.value.type="preset",n.value.preset=c;const r=n.value.presetOptions.find(i=>i.value===c);if(r){const i=new Date;let d,l;if(T.value==="hour")switch(c){case"last24h":{l=new Date(i),d=new Date(i.getTime()-24*60*60*1e3);break}case"yesterday":{const s=new Date;s.setDate(s.getDate()-1),d=f(s,!0),l=f(s,!1);break}case"dayBefore":{const s=new Date;s.setDate(s.getDate()-2),d=f(s,!0),l=f(s,!1);break}}else d=new Date(i),l=new Date(i),c==="today"?(d.setHours(0,0,0,0),l.setHours(23,59,59,999)):(d.setDate(i.getDate()-(r.days-1)),d.setHours(0,0,0,0),l.setHours(23,59,59,999));if(n.value.customStart=d.toISOString().split("T")[0],n.value.customEnd=l.toISOString().split("T")[0],T.value==="hour"&&(c==="yesterday"||c==="dayBefore")){const s=new Date;c==="yesterday"?s.setDate(s.getDate()-1):s.setDate(s.getDate()-2);const u=s.getFullYear(),m=String(s.getMonth()+1).padStart(2,"0"),_=String(s.getDate()).padStart(2,"0");n.value.customRange=[`${u}-${m}-${_} 00:00:00`,`${u}-${m}-${_} 23:59:59`]}else{const s=u=>{const C=new Date(u.getTime()+288e5),x=C.getUTCFullYear(),v=String(C.getUTCMonth()+1).padStart(2,"0"),M=String(C.getUTCDate()).padStart(2,"0"),K=String(C.getUTCHours()).padStart(2,"0"),O=String(C.getUTCMinutes()).padStart(2,"0"),L=String(C.getUTCSeconds()).padStart(2,"0");return`${x}-${v}-${M} ${K}:${O}:${L}`};n.value.customRange=[s(d),s(l)]}}W()}function ct(c){if(c&&c.length===2){n.value.type="custom",n.value.preset="",n.value.customRange=c,n.value.customStart=c[0].split(" ")[0],n.value.customEnd=c[1].split(" ")[0];const r=l=>{const[s,u]=l.split(" "),[m,_,C]=s.split("-").map(Number),[x,v,M]=u.split(":").map(Number);return new Date(m,_-1,C,x,v,M)},i=r(c[0]),d=r(c[1]);if(T.value==="hour"){if((d-i)/36e5>24){bt("小时粒度下日期范围不能超过24小时","warning");return}}else if(Math.ceil((d-i)/864e5)+1>31){bt("日期范围不能超过 31 天","warning");return}W()}else c===null&&N(T.value==="hour"?"last24h":"7days")}function gt(c){if(T.value=c,c==="hour"){if(n.value.presetOptions=[{value:"last24h",label:"近24小时",hours:24},{value:"yesterday",label:"昨天",hours:24},{value:"dayBefore",label:"前天",hours:24}],n.value.type==="custom"&&n.value.customRange&&n.value.customRange.length===2){const r=new Date(n.value.customRange[0]);if((new Date(n.value.customRange[1])-r)/(1e3*60*60)>24){bt("小时粒度下日期范围不能超过24小时,已切换到近24小时","warning"),N("last24h");return}}if(["today","7days","30days"].includes(n.value.preset)){N("last24h");return}}else if(n.value.presetOptions=[{value:"today",label:"今日",days:1},{value:"7days",label:"7天",days:7},{value:"30days",label:"30天",days:30}],["last24h","yesterday","dayBefore"].includes(n.value.preset)){N("7days");return}W()}async function W(){let c,r="monthly";if(n.value.type==="preset"){const i=n.value.presetOptions.find(d=>d.value===n.value.preset);T.value==="hour"?(c=1,r="daily"):(c=i?i.days:7,n.value.preset==="today"?r="daily":r="monthly")}else{if(T.value==="hour"){const i=new Date(n.value.customRange[0]),d=new Date(n.value.customRange[1]),l=Math.ceil((d-i)/(1e3*60*60));c=Math.ceil(l/24)||1}else c=Q(n.value.customStart,n.value.customEnd);r="daily"}await Promise.all([rt(c,T.value),it(r),dt(lt.value)])}function Q(c,r){if(!c||!r)return 7;const i=new Date(c),d=new Date(r),l=Math.abs(d-i);return Math.ceil(l/(1e3*60*60*24))||7}function tt(c){return c>new Date}return{loading:ot,dashboardData:Y,costsData:nt,modelStats:G,trendData:o,dashboardModelStats:X,apiKeysTrendData:z,dateFilter:n,trendGranularity:T,apiKeysTrendMetric:lt,defaultTime:q,formattedUptime:E,loadDashboardData:pt,loadUsageTrend:rt,loadModelStats:it,loadApiKeysTrend:dt,setDateFilterPreset:N,onCustomDateRangeChange:ct,setTrendGranularity:gt,refreshChartsData:W,disabledDate:tt}}),Ft={class:"mb-4 grid grid-cols-1 gap-3 sm:mb-6 sm:grid-cols-2 sm:gap-4 md:mb-8 md:gap-6 lg:grid-cols-4"},zt={class:"stat-card"},Lt={class:"flex items-center justify-between"},Ht={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},qt={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Et={class:"stat-card"},Nt={class:"flex items-center justify-between"},Vt={class:"flex-1"},jt={class:"flex flex-wrap items-baseline gap-x-2"},Yt={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},Gt={key:0,class:"flex items-center gap-2"},Wt=["title"],Qt={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},Zt=["title"],Jt={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},Xt=["title"],te={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},ee=["title"],ae={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},se=["title"],oe={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},ne=["title"],le={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},re={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ie={key:0,class:"text-red-600"},de={key:1,class:"text-gray-600 dark:text-gray-400"},ce={key:2,class:"text-yellow-600"},ue={class:"stat-card"},me={class:"flex items-center justify-between"},ye={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},pe={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ge={class:"stat-card"},fe={class:"flex items-center justify-between"},xe={class:"text-2xl font-bold text-green-600 sm:text-3xl"},be={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ve={class:"mb-4 grid grid-cols-1 gap-3 sm:mb-6 sm:grid-cols-2 sm:gap-4 md:mb-8 md:gap-6 lg:grid-cols-4"},he={class:"stat-card"},ke={class:"flex items-center justify-between"},De={class:"mr-8 flex-1"},Te={class:"mb-2 flex flex-wrap items-baseline gap-2"},_e={class:"text-xl font-bold text-blue-600 sm:text-2xl md:text-3xl"},Ce={class:"text-sm font-medium text-green-600"},we={class:"text-xs text-gray-500 dark:text-gray-400"},Se={class:"flex flex-wrap items-center justify-between gap-x-4"},$e={class:"font-medium"},Re={class:"font-medium"},Ae={key:0,class:"text-purple-600"},Pe={class:"font-medium"},Be={key:1,class:"text-purple-600"},Ie={class:"font-medium"},Ue={class:"stat-card"},Me={class:"flex items-center justify-between"},Ke={class:"mr-8 flex-1"},Oe={class:"mb-2 flex flex-wrap items-baseline gap-2"},Fe={class:"text-xl font-bold text-emerald-600 sm:text-2xl md:text-3xl"},ze={class:"text-sm font-medium text-green-600"},Le={class:"text-xs text-gray-500 dark:text-gray-400"},He={class:"flex flex-wrap items-center justify-between gap-x-4"},qe={class:"font-medium"},Ee={class:"font-medium"},Ne={key:0,class:"text-purple-600"},Ve={class:"font-medium"},je={key:1,class:"text-purple-600"},Ye={class:"font-medium"},Ge={class:"stat-card"},We={class:"flex items-center justify-between"},Qe={class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"},Ze={class:"text-xs text-gray-400"},Je={class:"text-2xl font-bold text-orange-600 sm:text-3xl"},Xe={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ta={key:0,class:"text-yellow-600"},ea={class:"stat-card"},aa={class:"flex items-center justify-between"},sa={class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"},oa={class:"text-xs text-gray-400"},na={class:"text-2xl font-bold text-rose-600 sm:text-3xl"},la={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ra={key:0,class:"text-yellow-600"},ia={class:"mb-8"},da={class:"mb-4 flex flex-col gap-4 sm:mb-6"},ca={class:"flex flex-col gap-2 lg:flex-row lg:items-center lg:justify-end"},ua={class:"flex flex-shrink-0 gap-1 overflow-x-auto rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},ma=["onClick"],ya={class:"flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},pa={class:"flex items-center gap-2"},ga={key:0,class:"text-xs text-orange-600"},fa={class:"flex items-center gap-2"},xa={class:"flex items-center rounded-lg bg-gray-100 px-3 py-1 dark:bg-gray-700"},ba={class:"relative inline-flex cursor-pointer items-center"},va={class:"ml-2.5 flex select-none items-center gap-1 text-sm font-medium text-gray-600 dark:text-gray-300"},ha=["disabled"],ka={class:"hidden sm:inline"},Da={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},Ta={class:"card p-4 sm:p-6"},_a={class:"relative",style:{height:"250px"}},Ca={class:"card p-4 sm:p-6"},wa={key:0,class:"py-8 text-center"},Sa={key:1,class:"max-h-[250px] overflow-auto sm:max-h-[300px]"},$a={class:"min-w-full"},Ra={class:"divide-y divide-gray-200 dark:divide-gray-600"},Aa={class:"px-2 py-2 text-xs text-gray-900 dark:text-gray-100 sm:px-4 sm:text-sm"},Pa=["title"],Ba={class:"hidden px-2 py-2 text-right text-xs text-gray-600 dark:text-gray-400 sm:table-cell sm:px-4 sm:text-sm"},Ia={class:"px-2 py-2 text-right text-xs text-gray-600 dark:text-gray-400 sm:px-4 sm:text-sm"},Ua={class:"px-2 py-2 text-right text-xs font-medium text-green-600 sm:px-4 sm:text-sm"},Ma={class:"hidden px-2 py-2 text-right text-xs font-medium sm:table-cell sm:px-4 sm:text-sm"},Ka={class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-1 text-xs font-medium text-blue-800 dark:bg-blue-900/30 dark:text-blue-300"},Oa={class:"mb-4 sm:mb-6 md:mb-8"},Fa={class:"card p-4 sm:p-6"},za={class:"sm:h-[300px]",style:{height:"250px"}},La={class:"mb-4 sm:mb-6 md:mb-8"},Ha={class:"card p-4 sm:p-6"},qa={class:"mb-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},Ea={class:"flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},Na={class:"mb-4 text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},Va={key:0},ja={key:1},Ya={class:"sm:h-[350px]",style:{height:"300px"}},Ga={__name:"DashboardView",setup(ot){const Y=Ot(),nt=Kt(),{isDarkMode:G}=Tt(nt),{dashboardData:o,costsData:X,dashboardModelStats:z,trendData:n,apiKeysTrendData:T,formattedUptime:lt,dateFilter:q,trendGranularity:E,apiKeysTrendMetric:f,defaultTime:pt}=Tt(Y),{loadDashboardData:rt,loadApiKeysTrend:it,setDateFilterPreset:dt,onCustomDateRangeChange:N,setTrendGranularity:ct,refreshChartsData:gt,disabledDate:W}=Y,Q=$(null),tt=$(null),c=$(null);let r=null,i=null,d=null;const l=$(!1),s=$(30),u=$(null),m=$(0),_=$(null),C=$(!1),x=wt(()=>({text:G.value?"#e5e7eb":"#374151",grid:G.value?"rgba(75, 85, 99, 0.3)":"rgba(0, 0, 0, 0.1)",legend:G.value?"#e5e7eb":"#374151"}));function v(D){return D>=1e6?(D/1e6).toFixed(2)+"M":D>=1e3?(D/1e3).toFixed(2)+"K":D.toString()}function M(D,e){if(!e||e.length===0)return 0;const R=e.reduce((g,H)=>g+H.allTokens,0);return R===0?0:(D/R*100).toFixed(1)}function K(){if(!Q.value)return;r&&r.destroy();const D=z.value||[],e={labels:D.map(R=>R.model),datasets:[{data:D.map(R=>R.allTokens),backgroundColor:["#3B82F6","#10B981","#F59E0B","#EF4444","#8B5CF6","#EC4899","#14B8A6","#F97316","#6366F1","#84CC16"],borderWidth:0}]};r=new vt(Q.value,{type:"doughnut",data:e,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{padding:15,usePointStyle:!0,font:{size:12},color:x.value.legend}},tooltip:{callbacks:{label:function(R){const g=R.label||"",H=v(R.parsed),et=M(R.parsed,D);return`${g}: ${H} (${et}%)`}}}}}})}function O(){var A;if(!tt.value)return;i&&i.destroy();const D=n.value||[],e=D.map(p=>p.inputTokens||0),R=D.map(p=>p.outputTokens||0),g=D.map(p=>p.cacheCreateTokens||0),H=D.map(p=>p.cacheReadTokens||0),et=D.map(p=>p.requests||0),ut=D.map(p=>p.cost||0),mt=(A=D[0])!=null&&A.date?"date":"hour",U={labels:D.map(p=>{if(p.label)return p.label;if(mt==="hour"){const b=new Date(p.hour),I=String(b.getMonth()+1).padStart(2,"0"),V=String(b.getDate()).padStart(2,"0"),yt=String(b.getHours()).padStart(2,"0");return`${I}/${V} ${yt}:00`}const S=p.date;if(S&&S.includes("-")){const b=S.split("-");if(b.length>=3)return`${b[1]}/${b[2]}`}return p.date}),datasets:[{label:"输入Token",data:e,borderColor:"rgb(102, 126, 234)",backgroundColor:"rgba(102, 126, 234, 0.1)",tension:.3},{label:"输出Token",data:R,borderColor:"rgb(240, 147, 251)",backgroundColor:"rgba(240, 147, 251, 0.1)",tension:.3},{label:"缓存创建Token",data:g,borderColor:"rgb(59, 130, 246)",backgroundColor:"rgba(59, 130, 246, 0.1)",tension:.3},{label:"缓存读取Token",data:H,borderColor:"rgb(147, 51, 234)",backgroundColor:"rgba(147, 51, 234, 0.1)",tension:.3},{label:"费用 (USD)",data:ut,borderColor:"rgb(34, 197, 94)",backgroundColor:"rgba(34, 197, 94, 0.1)",tension:.3,yAxisID:"y2"},{label:"请求数",data:et,borderColor:"rgb(16, 185, 129)",backgroundColor:"rgba(16, 185, 129, 0.1)",tension:.3,yAxisID:"y1"}]};i=new vt(tt.value,{type:"line",data:U,options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{title:{display:!0,text:"Token使用趋势",font:{size:16,weight:"bold"},color:x.value.text},legend:{position:"top",labels:{color:x.value.legend}},tooltip:{mode:"index",intersect:!1,itemSort:function(p,S){const b=p.dataset.label||"",I=S.dataset.label||"";return b==="费用 (USD)"||I==="费用 (USD)"?b==="费用 (USD)"?-1:1:b==="请求数"||I==="请求数"?b==="请求数"?1:-1:S.parsed.y-p.parsed.y},callbacks:{label:function(p){const S=p.dataset.label||"";let b=p.parsed.y;return S==="费用 (USD)"?b<.01?S+": $"+b.toFixed(6):S+": $"+b.toFixed(4):S==="请求数"?S+": "+b.toLocaleString()+" 次":b>=1e6?S+": "+(b/1e6).toFixed(2)+"M tokens":b>=1e3?S+": "+(b/1e3).toFixed(2)+"K tokens":S+": "+b.toLocaleString()+" tokens"}}}},scales:{x:{type:"category",display:!0,title:{display:!0,text:E==="hour"?"时间":"日期",color:x.value.text},ticks:{color:x.value.text},grid:{color:x.value.grid}},y:{type:"linear",display:!0,position:"left",title:{display:!0,text:"Token数量",color:x.value.text},ticks:{callback:function(p){return v(p)},color:x.value.text},grid:{color:x.value.grid}},y1:{type:"linear",display:!0,position:"right",title:{display:!0,text:"请求数",color:x.value.text},grid:{drawOnChartArea:!1},ticks:{callback:function(p){return p.toLocaleString()},color:x.value.text}},y2:{type:"linear",display:!1,position:"right"}}}})}function L(){var ut,mt;if(!c.value)return;d&&d.destroy();const D=T.value.data||[],e=f.value,R=["#3B82F6","#10B981","#F59E0B","#EF4444","#8B5CF6","#EC4899","#14B8A6","#F97316","#6366F1","#84CC16"],g=((ut=T.value.topApiKeys)==null?void 0:ut.map((w,U)=>{var S,b;const A=T.value.data.map(I=>!I.apiKeys||!I.apiKeys[w]?0:e==="tokens"?I.apiKeys[w].tokens:I.apiKeys[w].requests||0);return{label:((b=(S=T.value.data.find(I=>I.apiKeys&&I.apiKeys[w]))==null?void 0:S.apiKeys[w])==null?void 0:b.name)||`API Key ${w}`,data:A,borderColor:R[U%R.length],backgroundColor:R[U%R.length]+"20",tension:.4,fill:!1}}))||[],H=(mt=D[0])!=null&&mt.date?"date":"hour",et={labels:D.map(w=>{if(w.label)return w.label;if(H==="hour"){const A=new Date(w.hour),p=String(A.getMonth()+1).padStart(2,"0"),S=String(A.getDate()).padStart(2,"0"),b=String(A.getHours()).padStart(2,"0");return`${p}/${S} ${b}:00`}const U=w.date;if(U&&U.includes("-")){const A=U.split("-");if(A.length>=3)return`${A[1]}/${A[2]}`}return w.date}),datasets:g};d=new vt(c.value,{type:"line",data:et,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{padding:20,usePointStyle:!0,font:{size:12},color:x.value.legend}},tooltip:{mode:"index",intersect:!1,itemSort:function(w,U){return U.parsed.y-w.parsed.y},callbacks:{label:function(w){var yt;const U=w.dataset.label||"",A=w.parsed.y,p=w.dataIndex,S=T.value.data[p],I=w.chart.data.datasets.map((F,at)=>({value:F.data[p]||0,index:at})).sort((F,at)=>at.value-F.value).findIndex(F=>F.index===w.datasetIndex)+1;let V="";if(I===1?V="🥇 ":I===2?V="🥈 ":I===3&&(V="🥉 "),f.value==="tokens"){let F="";A>=1e6?F=(A/1e6).toFixed(2)+"M":A>=1e3?F=(A/1e3).toFixed(2)+"K":F=A.toLocaleString();const at=T.value.topApiKeys[w.datasetIndex],xt=(yt=S==null?void 0:S.apiKeys)==null?void 0:yt[at],St=(xt==null?void 0:xt.formattedCost)||"$0.00";return`${V}${U}: ${F} tokens (${St})`}else return`${V}${U}: ${A.toLocaleString()} 次`}}}},scales:{x:{type:"category",display:!0,title:{display:!0,text:E==="hour"?"时间":"日期",color:x.value.text},ticks:{color:x.value.text},grid:{color:x.value.grid}},y:{beginAtZero:!0,title:{display:!0,text:f.value==="tokens"?"Token 数量":"请求次数",color:x.value.text},ticks:{callback:function(w){return v(w)},color:x.value.text},grid:{color:x.value.grid}}}}})}async function ht(){await it(f.value),await Z(),L()}st(z,()=>{Z(()=>K())}),st(n,()=>{Z(()=>O())}),st(T,()=>{Z(()=>L())});async function ft(){if(!C.value){C.value=!0;try{await Promise.all([rt(),gt()])}finally{C.value=!1}}}function kt(){l.value&&(m.value=s.value,_.value&&clearInterval(_.value),u.value&&clearTimeout(u.value),_.value=setInterval(()=>{m.value--,m.value<=0&&clearInterval(_.value)},1e3),u.value=setTimeout(async()=>{await ft(),l.value&&kt()},s.value*1e3))}function Dt(){_.value&&(clearInterval(_.value),_.value=null),u.value&&(clearTimeout(u.value),u.value=null),m.value=0}return st(l,D=>{D?kt():Dt()}),st(G,()=>{Z(()=>{K(),O(),L()})}),At(async()=>{await ft(),await Z(),K(),O(),L()}),Pt(()=>{Dt(),r&&r.destroy(),i&&i.destroy(),d&&d.destroy()}),(D,e)=>{const R=$t;return k(),h("div",null,[t("div",Ft,[t("div",zt,[t("div",Lt,[t("div",null,[e[7]||(e[7]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 总API Keys ",-1)),t("p",Ht,y(a(o).totalApiKeys),1),t("p",qt," 活跃: "+y(a(o).activeApiKeys||0),1)]),e[8]||(e[8]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-blue-500 to-blue-600"},[t("i",{class:"fas fa-key"})],-1))])]),t("div",Et,[t("div",Nt,[t("div",Vt,[e[15]||(e[15]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 服务账户 ",-1)),t("div",jt,[t("p",Yt,y(a(o).totalAccounts),1),a(o).accountsByPlatform?(k(),h("div",Gt,[a(o).accountsByPlatform.claude&&a(o).accountsByPlatform.claude.total>0?(k(),h("div",{key:0,class:"inline-flex items-center gap-0.5",title:`Claude: ${a(o).accountsByPlatform.claude.total} 个 (正常: ${a(o).accountsByPlatform.claude.normal})`},[e[9]||(e[9]=t("i",{class:"fas fa-brain text-xs text-indigo-600"},null,-1)),t("span",Qt,y(a(o).accountsByPlatform.claude.total),1)],8,Wt)):P("",!0),a(o).accountsByPlatform["claude-console"]&&a(o).accountsByPlatform["claude-console"].total>0?(k(),h("div",{key:1,class:"inline-flex items-center gap-0.5",title:`Console: ${a(o).accountsByPlatform["claude-console"].total} 个 (正常: ${a(o).accountsByPlatform["claude-console"].normal})`},[e[10]||(e[10]=t("i",{class:"fas fa-terminal text-xs text-purple-600"},null,-1)),t("span",Jt,y(a(o).accountsByPlatform["claude-console"].total),1)],8,Zt)):P("",!0),a(o).accountsByPlatform.gemini&&a(o).accountsByPlatform.gemini.total>0?(k(),h("div",{key:2,class:"inline-flex items-center gap-0.5",title:`Gemini: ${a(o).accountsByPlatform.gemini.total} 个 (正常: ${a(o).accountsByPlatform.gemini.normal})`},[e[11]||(e[11]=t("i",{class:"fas fa-robot text-xs text-yellow-600"},null,-1)),t("span",te,y(a(o).accountsByPlatform.gemini.total),1)],8,Xt)):P("",!0),a(o).accountsByPlatform.bedrock&&a(o).accountsByPlatform.bedrock.total>0?(k(),h("div",{key:3,class:"inline-flex items-center gap-0.5",title:`Bedrock: ${a(o).accountsByPlatform.bedrock.total} 个 (正常: ${a(o).accountsByPlatform.bedrock.normal})`},[e[12]||(e[12]=t("i",{class:"fab fa-aws text-xs text-orange-600"},null,-1)),t("span",ae,y(a(o).accountsByPlatform.bedrock.total),1)],8,ee)):P("",!0),a(o).accountsByPlatform.openai&&a(o).accountsByPlatform.openai.total>0?(k(),h("div",{key:4,class:"inline-flex items-center gap-0.5",title:`OpenAI: ${a(o).accountsByPlatform.openai.total} 个 (正常: ${a(o).accountsByPlatform.openai.normal})`},[e[13]||(e[13]=t("i",{class:"fas fa-openai text-xs text-gray-100"},null,-1)),t("span",oe,y(a(o).accountsByPlatform.openai.total),1)],8,se)):P("",!0),a(o).accountsByPlatform.azure_openai&&a(o).accountsByPlatform.azure_openai.total>0?(k(),h("div",{key:5,class:"inline-flex items-center gap-0.5",title:`Azure OpenAI: ${a(o).accountsByPlatform.azure_openai.total} 个 (正常: ${a(o).accountsByPlatform.azure_openai.normal})`},[e[14]||(e[14]=t("i",{class:"fab fa-microsoft text-xs text-blue-600"},null,-1)),t("span",le,y(a(o).accountsByPlatform.azure_openai.total),1)],8,ne)):P("",!0)])):P("",!0)]),t("p",re,[B(" 正常: "+y(a(o).normalAccounts||0)+" ",1),a(o).abnormalAccounts>0?(k(),h("span",ie," | 异常: "+y(a(o).abnormalAccounts),1)):P("",!0),a(o).pausedAccounts>0?(k(),h("span",de," | 停止调度: "+y(a(o).pausedAccounts),1)):P("",!0),a(o).rateLimitedAccounts>0?(k(),h("span",ce," | 限流: "+y(a(o).rateLimitedAccounts),1)):P("",!0)])]),e[16]||(e[16]=t("div",{class:"stat-icon ml-2 flex-shrink-0 bg-gradient-to-br from-green-500 to-green-600"},[t("i",{class:"fas fa-user-circle"})],-1))])]),t("div",ue,[t("div",me,[t("div",null,[e[17]||(e[17]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 今日请求 ",-1)),t("p",ye,y(a(o).todayRequests),1),t("p",pe," 总请求: "+y(v(a(o).totalRequests||0)),1)]),e[18]||(e[18]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-purple-500 to-purple-600"},[t("i",{class:"fas fa-chart-line"})],-1))])]),t("div",ge,[t("div",fe,[t("div",null,[e[19]||(e[19]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 系统状态 ",-1)),t("p",xe,y(a(o).systemStatus),1),t("p",be," 运行时间: "+y(a(lt)),1)]),e[20]||(e[20]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-yellow-500 to-orange-500"},[t("i",{class:"fas fa-heartbeat"})],-1))])])]),t("div",ve,[t("div",he,[t("div",ke,[t("div",De,[e[25]||(e[25]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 今日Token ",-1)),t("div",Te,[t("p",_e,y(v((a(o).todayInputTokens||0)+(a(o).todayOutputTokens||0)+(a(o).todayCacheCreateTokens||0)+(a(o).todayCacheReadTokens||0))),1),t("span",Ce,"/ "+y(a(X).todayCosts.formatted.totalCost),1)]),t("div",we,[t("div",Se,[t("span",null,[e[21]||(e[21]=B("输入: ",-1)),t("span",$e,y(v(a(o).todayInputTokens||0)),1)]),t("span",null,[e[22]||(e[22]=B("输出: ",-1)),t("span",Re,y(v(a(o).todayOutputTokens||0)),1)]),(a(o).todayCacheCreateTokens||0)>0?(k(),h("span",Ae,[e[23]||(e[23]=B("缓存创建: ",-1)),t("span",Pe,y(v(a(o).todayCacheCreateTokens||0)),1)])):P("",!0),(a(o).todayCacheReadTokens||0)>0?(k(),h("span",Be,[e[24]||(e[24]=B("缓存读取: ",-1)),t("span",Ie,y(v(a(o).todayCacheReadTokens||0)),1)])):P("",!0)])])]),e[26]||(e[26]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-indigo-500 to-indigo-600"},[t("i",{class:"fas fa-coins"})],-1))])]),t("div",Ue,[t("div",Me,[t("div",Ke,[e[31]||(e[31]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 总Token消耗 ",-1)),t("div",Oe,[t("p",Fe,y(v((a(o).totalInputTokens||0)+(a(o).totalOutputTokens||0)+(a(o).totalCacheCreateTokens||0)+(a(o).totalCacheReadTokens||0))),1),t("span",ze,"/ "+y(a(X).totalCosts.formatted.totalCost),1)]),t("div",Le,[t("div",He,[t("span",null,[e[27]||(e[27]=B("输入: ",-1)),t("span",qe,y(v(a(o).totalInputTokens||0)),1)]),t("span",null,[e[28]||(e[28]=B("输出: ",-1)),t("span",Ee,y(v(a(o).totalOutputTokens||0)),1)]),(a(o).totalCacheCreateTokens||0)>0?(k(),h("span",Ne,[e[29]||(e[29]=B("缓存创建: ",-1)),t("span",Ve,y(v(a(o).totalCacheCreateTokens||0)),1)])):P("",!0),(a(o).totalCacheReadTokens||0)>0?(k(),h("span",je,[e[30]||(e[30]=B("缓存读取: ",-1)),t("span",Ye,y(v(a(o).totalCacheReadTokens||0)),1)])):P("",!0)])])]),e[32]||(e[32]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-emerald-500 to-emerald-600"},[t("i",{class:"fas fa-database"})],-1))])]),t("div",Ge,[t("div",We,[t("div",null,[t("p",Qe,[e[33]||(e[33]=B(" 实时RPM ",-1)),t("span",Ze,"("+y(a(o).metricsWindow)+"分钟)",1)]),t("p",Je,y(a(o).realtimeRPM||0),1),t("p",Xe,[e[35]||(e[35]=B(" 每分钟请求数 ",-1)),a(o).isHistoricalMetrics?(k(),h("span",ta,e[34]||(e[34]=[t("i",{class:"fas fa-exclamation-circle"},null,-1),B(" 历史数据 ",-1)]))):P("",!0)])]),e[36]||(e[36]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-orange-500 to-orange-600"},[t("i",{class:"fas fa-tachometer-alt"})],-1))])]),t("div",ea,[t("div",aa,[t("div",null,[t("p",sa,[e[37]||(e[37]=B(" 实时TPM ",-1)),t("span",oa,"("+y(a(o).metricsWindow)+"分钟)",1)]),t("p",na,y(v(a(o).realtimeTPM||0)),1),t("p",la,[e[39]||(e[39]=B(" 每分钟Token数 ",-1)),a(o).isHistoricalMetrics?(k(),h("span",ra,e[38]||(e[38]=[t("i",{class:"fas fa-exclamation-circle"},null,-1),B(" 历史数据 ",-1)]))):P("",!0)])]),e[40]||(e[40]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-rose-500 to-rose-600"},[t("i",{class:"fas fa-rocket"})],-1))])])]),t("div",ia,[t("div",da,[e[47]||(e[47]=t("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 模型使用分布与Token使用趋势 ",-1)),t("div",ca,[t("div",ua,[(k(!0),h(_t,null,Ct(a(q).presetOptions,g=>(k(),h("button",{key:g.value,class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(q).preset===g.value&&a(q).type==="preset"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:H=>a(dt)(g.value)},y(g.label),11,ma))),128))]),t("div",ya,[t("button",{class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(E)==="day"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[0]||(e[0]=g=>a(ct)("day"))},e[41]||(e[41]=[t("i",{class:"fas fa-calendar-day mr-1"},null,-1),B("按天 ",-1)]),2),t("button",{class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(E)==="hour"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[1]||(e[1]=g=>a(ct)("hour"))},e[42]||(e[42]=[t("i",{class:"fas fa-clock mr-1"},null,-1),B("按小时 ",-1)]),2)]),t("div",pa,[Bt(R,{modelValue:a(q).customRange,"onUpdate:modelValue":e[2]||(e[2]=g=>a(q).customRange=g),class:"custom-date-picker w-full lg:w-auto","default-time":a(pt),"disabled-date":a(W),"end-placeholder":"结束日期",format:"YYYY-MM-DD HH:mm:ss","range-separator":"至",size:"default","start-placeholder":"开始日期",style:{"max-width":"400px"},type:"datetimerange","value-format":"YYYY-MM-DD HH:mm:ss",onChange:a(N)},null,8,["modelValue","default-time","disabled-date","onChange"]),a(E)==="hour"?(k(),h("span",ga,e[43]||(e[43]=[t("i",{class:"fas fa-info-circle"},null,-1),B(" 最多24小时 ",-1)]))):P("",!0)]),t("div",fa,[t("div",xa,[t("label",ba,[It(t("input",{"onUpdate:modelValue":e[3]||(e[3]=g=>l.value=g),class:"peer sr-only",type:"checkbox"},null,512),[[Ut,l.value]]),e[46]||(e[46]=t("div",{class:"peer relative h-5 w-9 rounded-full bg-gray-300 transition-all duration-200 after:absolute after:left-[2px] after:top-0.5 after:h-4 after:w-4 after:rounded-full after:bg-white after:shadow-sm after:transition-transform after:duration-200 after:content-[''] peer-checked:bg-blue-500 peer-checked:after:translate-x-4 peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-blue-300 dark:bg-gray-600 dark:after:bg-gray-300 dark:peer-focus:ring-blue-600"},null,-1)),t("span",va,[e[44]||(e[44]=t("i",{class:"fas fa-redo-alt text-xs text-gray-500 dark:text-gray-400"},null,-1)),e[45]||(e[45]=t("span",null,"自动刷新",-1)),l.value?(k(),h("span",{key:0,class:j(["ml-1 font-mono text-xs text-blue-600 transition-opacity",m.value>0?"opacity-100":"opacity-0"])},y(m.value)+"s ",3)):P("",!0)])])]),t("button",{class:"flex items-center gap-1 rounded-md border border-gray-300 bg-white px-3 py-1 text-sm font-medium text-blue-600 shadow-sm transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:hover:bg-gray-700 sm:gap-2",disabled:C.value,title:"立即刷新数据",onClick:e[4]||(e[4]=g=>ft())},[t("i",{class:j(["fas fa-sync-alt text-xs",{"animate-spin":C.value}])},null,2),t("span",ka,y(C.value?"刷新中":"刷新"),1)],8,ha)])])]),t("div",Da,[t("div",Ta,[e[48]||(e[48]=t("h4",{class:"mb-4 text-base font-semibold text-gray-800 dark:text-gray-200 sm:text-lg"}," Token使用分布 ",-1)),t("div",_a,[t("canvas",{ref_key:"modelUsageChart",ref:Q},null,512)])]),t("div",Ca,[e[51]||(e[51]=t("h4",{class:"mb-4 text-base font-semibold text-gray-800 dark:text-gray-200 sm:text-lg"}," 详细统计数据 ",-1)),a(z).length===0?(k(),h("div",wa,e[49]||(e[49]=[t("p",{class:"text-sm text-gray-500 sm:text-base"},"暂无模型使用数据",-1)]))):(k(),h("div",Sa,[t("table",$a,[e[50]||(e[50]=t("thead",{class:"sticky top-0 bg-gray-50 dark:bg-gray-700"},[t("tr",null,[t("th",{class:"px-2 py-2 text-left text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 模型 "),t("th",{class:"hidden px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:table-cell sm:px-4"}," 请求数 "),t("th",{class:"px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 总Token "),t("th",{class:"px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 费用 "),t("th",{class:"hidden px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:table-cell sm:px-4"}," 占比 ")])],-1)),t("tbody",Ra,[(k(!0),h(_t,null,Ct(a(z),g=>(k(),h("tr",{key:g.model,class:"hover:bg-gray-50 dark:hover:bg-gray-700"},[t("td",Aa,[t("span",{class:"block max-w-[100px] truncate sm:max-w-none",title:g.model},y(g.model),9,Pa)]),t("td",Ba,y(v(g.requests)),1),t("td",Ia,y(v(g.allTokens)),1),t("td",Ua,y(g.formatted?g.formatted.total:"$0.000000"),1),t("td",Ma,[t("span",Ka,y(M(g.allTokens,a(z)))+"% ",1)])]))),128))])])]))])])]),t("div",Oa,[t("div",Fa,[t("div",za,[t("canvas",{ref_key:"usageTrendChart",ref:tt},null,512)])])]),t("div",La,[t("div",Ha,[t("div",qa,[e[54]||(e[54]=t("h3",{class:"text-base font-semibold text-gray-900 dark:text-gray-100 sm:text-lg"}," API Keys 使用趋势 ",-1)),t("div",Ea,[t("button",{class:j(["rounded-md px-2 py-1 text-xs font-medium transition-colors sm:px-3 sm:text-sm",a(f)==="requests"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[5]||(e[5]=g=>(f.value="requests",ht()))},e[52]||(e[52]=[t("i",{class:"fas fa-exchange-alt mr-1"},null,-1),t("span",{class:"hidden sm:inline"},"请求次数",-1),t("span",{class:"sm:hidden"},"请求",-1)]),2),t("button",{class:j(["rounded-md px-2 py-1 text-xs font-medium transition-colors sm:px-3 sm:text-sm",a(f)==="tokens"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[6]||(e[6]=g=>(f.value="tokens",ht()))},e[53]||(e[53]=[t("i",{class:"fas fa-coins mr-1"},null,-1),t("span",{class:"hidden sm:inline"},"Token 数量",-1),t("span",{class:"sm:hidden"},"Token",-1)]),2)])]),t("div",Na,[a(T).totalApiKeys>10?(k(),h("span",Va," 共 "+y(a(T).totalApiKeys)+" 个 API Key,显示使用量前 10 个 ",1)):(k(),h("span",ja," 共 "+y(a(T).totalApiKeys)+" 个 API Key ",1))]),t("div",Ya,[t("canvas",{ref_key:"apiKeysUsageTrendChart",ref:c},null,512)])])])])}}},es=Mt(Ga,[["__scopeId","data-v-e71abcc3"]]);export{es as default}; diff --git a/web/admin-spa/dist/assets/DashboardView-CQUmRYwD.js b/web/admin-spa/dist/assets/DashboardView-CQUmRYwD.js deleted file mode 100644 index ae4ca6ef..00000000 --- a/web/admin-spa/dist/assets/DashboardView-CQUmRYwD.js +++ /dev/null @@ -1 +0,0 @@ -import{E as $t}from"./element-plus-CMedNaYf.js";import{aR as Rt,r as $,c as wt,aW as Tt,o as st,q as At,D as Z,V as Pt,x as k,z as t,P as y,u as a,L as I,O as P,Q as Ct,ac as _t,C as j,R as It,K as Bt,al as Ut,y as D}from"./vue-vendor-DfnFpxGJ.js";import{b as J,_ as Mt,a as Kt}from"./index-BdtiivzQ.js";import{s as bt}from"./toast-BvwA7Mwb.js";import{C as vt}from"./chart-Cor9iTVD.js";import"./vendor-BDiMbLwQ.js";const Ot=Rt("dashboard",()=>{const ot=$(!1),Y=$({totalApiKeys:0,activeApiKeys:0,totalAccounts:0,normalAccounts:0,abnormalAccounts:0,pausedAccounts:0,activeAccounts:0,rateLimitedAccounts:0,accountsByPlatform:{claude:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},"claude-console":{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},gemini:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},bedrock:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0}},todayRequests:0,totalRequests:0,todayTokens:0,todayInputTokens:0,todayOutputTokens:0,totalTokens:0,totalInputTokens:0,totalOutputTokens:0,totalCacheCreateTokens:0,totalCacheReadTokens:0,todayCacheCreateTokens:0,todayCacheReadTokens:0,systemRPM:0,systemTPM:0,realtimeRPM:0,realtimeTPM:0,metricsWindow:5,isHistoricalMetrics:!1,systemStatus:"正常",uptime:0,systemTimezone:8}),nt=$({todayCosts:{totalCost:0,formatted:{totalCost:"$0.000000"}},totalCosts:{totalCost:0,formatted:{totalCost:"$0.000000"}}}),W=$([]),o=$([]),X=$([]),L=$({data:[],topApiKeys:[],totalApiKeys:0}),n=$({type:"preset",preset:"7days",customStart:"",customEnd:"",customRange:null,presetOptions:[{value:"today",label:"今日",days:1},{value:"7days",label:"7天",days:7},{value:"30days",label:"30天",days:30}]}),T=$("day"),lt=$("requests"),q=$([new Date(2e3,1,1,0,0,0),new Date(2e3,2,1,23,59,59)]),E=wt(()=>{const c=Y.value.uptime,r=Math.floor(c/86400),i=Math.floor(c%86400/3600),d=Math.floor(c%3600/60);return r>0?`${r}天 ${i}小时`:i>0?`${i}小时 ${d}分钟`:`${d}分钟`});function f(c,r=!0){const i=c.getFullYear(),d=c.getMonth(),l=c.getDate();return r?new Date(Date.UTC(i,d,l-1,16,0,0,0)):new Date(Date.UTC(i,d,l,15,59,59,999))}async function pt(c=null){ot.value=!0;try{let r={today:"today",all:"all"};c&&(r={today:{today:"today",all:"today"},"7days":{today:"7days",all:"7days"},monthly:{today:"monthly",all:"monthly"},all:{today:"today",all:"all"}}[c]||r);const[i,d,l]=await Promise.all([J.get("/admin/dashboard"),J.get(`/admin/usage-costs?period=${r.today}`),J.get(`/admin/usage-costs?period=${r.all}`)]);if(i.success){const s=i.data.overview||{},u=i.data.recentActivity||{},m=i.data.systemAverages||{},C=i.data.realtimeMetrics||{},_=i.data.systemHealth||{};Y.value={totalApiKeys:s.totalApiKeys||0,activeApiKeys:s.activeApiKeys||0,totalAccounts:s.totalAccounts||s.totalClaudeAccounts||0,normalAccounts:s.normalAccounts||0,abnormalAccounts:s.abnormalAccounts||0,pausedAccounts:s.pausedAccounts||0,activeAccounts:s.activeAccounts||s.activeClaudeAccounts||0,rateLimitedAccounts:s.rateLimitedAccounts||s.rateLimitedClaudeAccounts||0,accountsByPlatform:s.accountsByPlatform||{claude:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},"claude-console":{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},gemini:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0},bedrock:{total:0,normal:0,abnormal:0,paused:0,rateLimited:0}},todayRequests:u.requestsToday||0,totalRequests:s.totalRequestsUsed||0,todayTokens:u.tokensToday||0,todayInputTokens:u.inputTokensToday||0,todayOutputTokens:u.outputTokensToday||0,totalTokens:s.totalTokensUsed||0,totalInputTokens:s.totalInputTokensUsed||0,totalOutputTokens:s.totalOutputTokensUsed||0,totalCacheCreateTokens:s.totalCacheCreateTokensUsed||0,totalCacheReadTokens:s.totalCacheReadTokensUsed||0,todayCacheCreateTokens:u.cacheCreateTokensToday||0,todayCacheReadTokens:u.cacheReadTokensToday||0,systemRPM:m.rpm||0,systemTPM:m.tpm||0,realtimeRPM:C.rpm||0,realtimeTPM:C.tpm||0,metricsWindow:C.windowMinutes||5,isHistoricalMetrics:C.isHistorical||!1,systemStatus:_.redisConnected?"正常":"异常",uptime:_.uptime||0,systemTimezone:i.data.systemTimezone||8}}d.success&&l.success&&(nt.value={todayCosts:d.data.totalCosts||{totalCost:0,formatted:{totalCost:"$0.000000"}},totalCosts:l.data.totalCosts||{totalCost:0,formatted:{totalCost:"$0.000000"}}})}catch(r){console.error("加载仪表板数据失败:",r)}finally{ot.value=!1}}async function rt(c=7,r="day"){try{let i="/admin/usage-trend?";if(r==="hour")if(i+="granularity=hour",n.value.customRange&&n.value.customRange.length===2){const l=s=>{const[m,C]=s.split(" "),[_,x,v]=m.split("-").map(Number),[M,K,O]=C.split(":").map(Number);return new Date(Date.UTC(_,x-1,v,M-8,K,O)).toISOString()};i+=`&startDate=${encodeURIComponent(l(n.value.customRange[0]))}`,i+=`&endDate=${encodeURIComponent(l(n.value.customRange[1]))}`}else{const l=new Date;let s,u;if(n.value.type==="preset")switch(n.value.preset){case"last24h":{u=new Date(l),s=new Date(l.getTime()-24*60*60*1e3);break}case"yesterday":{const m=new Date;m.setDate(m.getDate()-1),s=f(m,!0),u=f(m,!1);break}case"dayBefore":{const m=new Date;m.setDate(m.getDate()-2),s=f(m,!0),u=f(m,!1);break}default:s=new Date(l.getTime()-24*60*60*1e3),u=l}else s=new Date(l.getTime()-c*24*60*60*1e3),u=l;i+=`&startDate=${encodeURIComponent(s.toISOString())}`,i+=`&endDate=${encodeURIComponent(u.toISOString())}`}else i+=`granularity=day&days=${c}`;const d=await J.get(i);d.success&&(o.value=d.data)}catch(i){console.error("加载使用趋势失败:",i)}}async function it(c="daily"){try{let r=`/admin/model-stats?period=${c}`;if(n.value.type==="custom"||T.value==="hour"){if(n.value.customRange&&n.value.customRange.length===2){const d=l=>{const[u,m]=l.split(" "),[C,_,x]=u.split("-").map(Number),[v,M,K]=m.split(":").map(Number);return new Date(Date.UTC(C,_-1,x,v-8,M,K)).toISOString()};r+=`&startDate=${encodeURIComponent(d(n.value.customRange[0]))}`,r+=`&endDate=${encodeURIComponent(d(n.value.customRange[1]))}`}else if(T.value==="hour"&&n.value.type==="preset"){const d=new Date;let l,s;switch(n.value.preset){case"last24h":{s=new Date(d),l=new Date(d.getTime()-24*60*60*1e3);break}case"yesterday":{const u=new Date;u.setDate(u.getDate()-1),l=f(u,!0),s=f(u,!1);break}case"dayBefore":{const u=new Date;u.setDate(u.getDate()-2),l=f(u,!0),s=f(u,!1);break}default:l=new Date(d.getTime()-24*60*60*1e3),s=d}r+=`&startDate=${encodeURIComponent(l.toISOString())}`,r+=`&endDate=${encodeURIComponent(s.toISOString())}`}}else if(n.value.type==="preset"&&T.value==="day"){const d=new Date;let l,s;const u=n.value.presetOptions.find(m=>m.value===n.value.preset);if(u){if(n.value.preset==="today")l=f(d,!0),s=f(d,!1);else{const m=new Date;m.setDate(m.getDate()-(u.days-1)),l=f(m,!0),s=f(d,!1)}r+=`&startDate=${encodeURIComponent(l.toISOString())}`,r+=`&endDate=${encodeURIComponent(s.toISOString())}`}}const i=await J.get(r);i.success&&(X.value=i.data)}catch(r){console.error("加载模型统计失败:",r)}}async function dt(c="requests"){try{let r="/admin/api-keys-usage-trend?",i=7;if(T.value==="hour")if(r+="granularity=hour",n.value.customRange&&n.value.customRange.length===2){const l=s=>{const[m,C]=s.split(" "),[_,x,v]=m.split("-").map(Number),[M,K,O]=C.split(":").map(Number);return new Date(Date.UTC(_,x-1,v,M-8,K,O)).toISOString()};r+=`&startDate=${encodeURIComponent(l(n.value.customRange[0]))}`,r+=`&endDate=${encodeURIComponent(l(n.value.customRange[1]))}`}else{const l=new Date;let s,u;if(n.value.type==="preset")switch(n.value.preset){case"last24h":{u=new Date(l),s=new Date(l.getTime()-24*60*60*1e3);break}case"yesterday":{const m=new Date;m.setDate(m.getDate()-1),s=f(m,!0),u=f(m,!1);break}case"dayBefore":{const m=new Date;m.setDate(m.getDate()-2),s=f(m,!0),u=f(m,!1);break}default:s=new Date(l.getTime()-24*60*60*1e3),u=l}else s=new Date(l.getTime()-24*60*60*1e3),u=l;r+=`&startDate=${encodeURIComponent(s.toISOString())}`,r+=`&endDate=${encodeURIComponent(u.toISOString())}`}else i=n.value.type==="preset"?n.value.preset==="today"?1:n.value.preset==="7days"?7:30:Q(n.value.customStart,n.value.customEnd),r+=`granularity=day&days=${i}`;r+=`&metric=${c}`;const d=await J.get(r);d.success&&(L.value={data:d.data||[],topApiKeys:d.topApiKeys||[],totalApiKeys:d.totalApiKeys||0})}catch(r){console.error("加载API Keys趋势失败:",r)}}function N(c){n.value.type="preset",n.value.preset=c;const r=n.value.presetOptions.find(i=>i.value===c);if(r){const i=new Date;let d,l;if(T.value==="hour")switch(c){case"last24h":{l=new Date(i),d=new Date(i.getTime()-24*60*60*1e3);break}case"yesterday":{const s=new Date;s.setDate(s.getDate()-1),d=f(s,!0),l=f(s,!1);break}case"dayBefore":{const s=new Date;s.setDate(s.getDate()-2),d=f(s,!0),l=f(s,!1);break}}else d=new Date(i),l=new Date(i),c==="today"?(d.setHours(0,0,0,0),l.setHours(23,59,59,999)):(d.setDate(i.getDate()-(r.days-1)),d.setHours(0,0,0,0),l.setHours(23,59,59,999));if(n.value.customStart=d.toISOString().split("T")[0],n.value.customEnd=l.toISOString().split("T")[0],T.value==="hour"&&(c==="yesterday"||c==="dayBefore")){const s=new Date;c==="yesterday"?s.setDate(s.getDate()-1):s.setDate(s.getDate()-2);const u=s.getFullYear(),m=String(s.getMonth()+1).padStart(2,"0"),C=String(s.getDate()).padStart(2,"0");n.value.customRange=[`${u}-${m}-${C} 00:00:00`,`${u}-${m}-${C} 23:59:59`]}else{const s=u=>{const _=new Date(u.getTime()+288e5),x=_.getUTCFullYear(),v=String(_.getUTCMonth()+1).padStart(2,"0"),M=String(_.getUTCDate()).padStart(2,"0"),K=String(_.getUTCHours()).padStart(2,"0"),O=String(_.getUTCMinutes()).padStart(2,"0"),z=String(_.getUTCSeconds()).padStart(2,"0");return`${x}-${v}-${M} ${K}:${O}:${z}`};n.value.customRange=[s(d),s(l)]}}G()}function ct(c){if(c&&c.length===2){n.value.type="custom",n.value.preset="",n.value.customRange=c,n.value.customStart=c[0].split(" ")[0],n.value.customEnd=c[1].split(" ")[0];const r=l=>{const[s,u]=l.split(" "),[m,C,_]=s.split("-").map(Number),[x,v,M]=u.split(":").map(Number);return new Date(m,C-1,_,x,v,M)},i=r(c[0]),d=r(c[1]);if(T.value==="hour"){if((d-i)/36e5>24){bt("小时粒度下日期范围不能超过24小时","warning");return}}else if(Math.ceil((d-i)/864e5)+1>31){bt("日期范围不能超过 31 天","warning");return}G()}else c===null&&N(T.value==="hour"?"last24h":"7days")}function gt(c){if(T.value=c,c==="hour"){if(n.value.presetOptions=[{value:"last24h",label:"近24小时",hours:24},{value:"yesterday",label:"昨天",hours:24},{value:"dayBefore",label:"前天",hours:24}],n.value.type==="custom"&&n.value.customRange&&n.value.customRange.length===2){const r=new Date(n.value.customRange[0]);if((new Date(n.value.customRange[1])-r)/(1e3*60*60)>24){bt("小时粒度下日期范围不能超过24小时,已切换到近24小时","warning"),N("last24h");return}}if(["today","7days","30days"].includes(n.value.preset)){N("last24h");return}}else if(n.value.presetOptions=[{value:"today",label:"今日",days:1},{value:"7days",label:"7天",days:7},{value:"30days",label:"30天",days:30}],["last24h","yesterday","dayBefore"].includes(n.value.preset)){N("7days");return}G()}async function G(){let c,r="monthly";if(n.value.type==="preset"){const i=n.value.presetOptions.find(d=>d.value===n.value.preset);T.value==="hour"?(c=1,r="daily"):(c=i?i.days:7,n.value.preset==="today"?r="daily":r="monthly")}else{if(T.value==="hour"){const i=new Date(n.value.customRange[0]),d=new Date(n.value.customRange[1]),l=Math.ceil((d-i)/(1e3*60*60));c=Math.ceil(l/24)||1}else c=Q(n.value.customStart,n.value.customEnd);r="daily"}await Promise.all([rt(c,T.value),it(r),dt(lt.value)])}function Q(c,r){if(!c||!r)return 7;const i=new Date(c),d=new Date(r),l=Math.abs(d-i);return Math.ceil(l/(1e3*60*60*24))||7}function tt(c){return c>new Date}return{loading:ot,dashboardData:Y,costsData:nt,modelStats:W,trendData:o,dashboardModelStats:X,apiKeysTrendData:L,dateFilter:n,trendGranularity:T,apiKeysTrendMetric:lt,defaultTime:q,formattedUptime:E,loadDashboardData:pt,loadUsageTrend:rt,loadModelStats:it,loadApiKeysTrend:dt,setDateFilterPreset:N,onCustomDateRangeChange:ct,setTrendGranularity:gt,refreshChartsData:G,disabledDate:tt}}),Ft={class:"mb-4 grid grid-cols-1 gap-3 sm:mb-6 sm:grid-cols-2 sm:gap-4 md:mb-8 md:gap-6 lg:grid-cols-4"},Lt={class:"stat-card"},zt={class:"flex items-center justify-between"},Ht={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},qt={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Et={class:"stat-card"},Nt={class:"flex items-center justify-between"},Vt={class:"flex-1"},jt={class:"flex flex-wrap items-baseline gap-x-2"},Yt={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},Wt={key:0,class:"flex items-center gap-2"},Gt=["title"],Qt={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},Zt=["title"],Jt={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},Xt=["title"],te={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},ee=["title"],ae={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},se=["title"],oe={class:"text-xs font-medium text-gray-700 dark:text-gray-300"},ne={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},le={key:0,class:"text-red-600"},re={key:1,class:"text-gray-600 dark:text-gray-400"},ie={key:2,class:"text-yellow-600"},de={class:"stat-card"},ce={class:"flex items-center justify-between"},ue={class:"text-2xl font-bold text-gray-900 dark:text-gray-100 sm:text-3xl"},me={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},ye={class:"stat-card"},pe={class:"flex items-center justify-between"},ge={class:"text-2xl font-bold text-green-600 sm:text-3xl"},fe={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},xe={class:"mb-4 grid grid-cols-1 gap-3 sm:mb-6 sm:grid-cols-2 sm:gap-4 md:mb-8 md:gap-6 lg:grid-cols-4"},be={class:"stat-card"},ve={class:"flex items-center justify-between"},he={class:"mr-8 flex-1"},ke={class:"mb-2 flex flex-wrap items-baseline gap-2"},De={class:"text-xl font-bold text-blue-600 sm:text-2xl md:text-3xl"},Te={class:"text-sm font-medium text-green-600"},Ce={class:"text-xs text-gray-500 dark:text-gray-400"},_e={class:"flex flex-wrap items-center justify-between gap-x-4"},we={class:"font-medium"},Se={class:"font-medium"},$e={key:0,class:"text-purple-600"},Re={class:"font-medium"},Ae={key:1,class:"text-purple-600"},Pe={class:"font-medium"},Ie={class:"stat-card"},Be={class:"flex items-center justify-between"},Ue={class:"mr-8 flex-1"},Me={class:"mb-2 flex flex-wrap items-baseline gap-2"},Ke={class:"text-xl font-bold text-emerald-600 sm:text-2xl md:text-3xl"},Oe={class:"text-sm font-medium text-green-600"},Fe={class:"text-xs text-gray-500 dark:text-gray-400"},Le={class:"flex flex-wrap items-center justify-between gap-x-4"},ze={class:"font-medium"},He={class:"font-medium"},qe={key:0,class:"text-purple-600"},Ee={class:"font-medium"},Ne={key:1,class:"text-purple-600"},Ve={class:"font-medium"},je={class:"stat-card"},Ye={class:"flex items-center justify-between"},We={class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"},Ge={class:"text-xs text-gray-400"},Qe={class:"text-2xl font-bold text-orange-600 sm:text-3xl"},Ze={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},Je={key:0,class:"text-yellow-600"},Xe={class:"stat-card"},ta={class:"flex items-center justify-between"},ea={class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"},aa={class:"text-xs text-gray-400"},sa={class:"text-2xl font-bold text-rose-600 sm:text-3xl"},oa={class:"mt-1 text-xs text-gray-500 dark:text-gray-400"},na={key:0,class:"text-yellow-600"},la={class:"mb-8"},ra={class:"mb-4 flex flex-col gap-4 sm:mb-6"},ia={class:"flex flex-col gap-2 lg:flex-row lg:items-center lg:justify-end"},da={class:"flex flex-shrink-0 gap-1 overflow-x-auto rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},ca=["onClick"],ua={class:"flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},ma={class:"flex items-center gap-2"},ya={key:0,class:"text-xs text-orange-600"},pa={class:"flex items-center gap-2"},ga={class:"flex items-center rounded-lg bg-gray-100 px-3 py-1 dark:bg-gray-700"},fa={class:"relative inline-flex cursor-pointer items-center"},xa={class:"ml-2.5 flex select-none items-center gap-1 text-sm font-medium text-gray-600 dark:text-gray-300"},ba=["disabled"],va={class:"hidden sm:inline"},ha={class:"grid grid-cols-1 gap-6 lg:grid-cols-2"},ka={class:"card p-4 sm:p-6"},Da={class:"relative",style:{height:"250px"}},Ta={class:"card p-4 sm:p-6"},Ca={key:0,class:"py-8 text-center"},_a={key:1,class:"max-h-[250px] overflow-auto sm:max-h-[300px]"},wa={class:"min-w-full"},Sa={class:"divide-y divide-gray-200 dark:divide-gray-600"},$a={class:"px-2 py-2 text-xs text-gray-900 dark:text-gray-100 sm:px-4 sm:text-sm"},Ra=["title"],Aa={class:"hidden px-2 py-2 text-right text-xs text-gray-600 dark:text-gray-400 sm:table-cell sm:px-4 sm:text-sm"},Pa={class:"px-2 py-2 text-right text-xs text-gray-600 dark:text-gray-400 sm:px-4 sm:text-sm"},Ia={class:"px-2 py-2 text-right text-xs font-medium text-green-600 sm:px-4 sm:text-sm"},Ba={class:"hidden px-2 py-2 text-right text-xs font-medium sm:table-cell sm:px-4 sm:text-sm"},Ua={class:"inline-flex items-center rounded-full bg-blue-100 px-2 py-1 text-xs font-medium text-blue-800 dark:bg-blue-900/30 dark:text-blue-300"},Ma={class:"mb-4 sm:mb-6 md:mb-8"},Ka={class:"card p-4 sm:p-6"},Oa={class:"sm:h-[300px]",style:{height:"250px"}},Fa={class:"mb-4 sm:mb-6 md:mb-8"},La={class:"card p-4 sm:p-6"},za={class:"mb-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"},Ha={class:"flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-700"},qa={class:"mb-4 text-xs text-gray-600 dark:text-gray-400 sm:text-sm"},Ea={key:0},Na={key:1},Va={class:"sm:h-[350px]",style:{height:"300px"}},ja={__name:"DashboardView",setup(ot){const Y=Ot(),nt=Kt(),{isDarkMode:W}=Tt(nt),{dashboardData:o,costsData:X,dashboardModelStats:L,trendData:n,apiKeysTrendData:T,formattedUptime:lt,dateFilter:q,trendGranularity:E,apiKeysTrendMetric:f,defaultTime:pt}=Tt(Y),{loadDashboardData:rt,loadApiKeysTrend:it,setDateFilterPreset:dt,onCustomDateRangeChange:N,setTrendGranularity:ct,refreshChartsData:gt,disabledDate:G}=Y,Q=$(null),tt=$(null),c=$(null);let r=null,i=null,d=null;const l=$(!1),s=$(30),u=$(null),m=$(0),C=$(null),_=$(!1),x=wt(()=>({text:W.value?"#e5e7eb":"#374151",grid:W.value?"rgba(75, 85, 99, 0.3)":"rgba(0, 0, 0, 0.1)",legend:W.value?"#e5e7eb":"#374151"}));function v(h){return h>=1e6?(h/1e6).toFixed(2)+"M":h>=1e3?(h/1e3).toFixed(2)+"K":h.toString()}function M(h,e){if(!e||e.length===0)return 0;const R=e.reduce((g,H)=>g+H.allTokens,0);return R===0?0:(h/R*100).toFixed(1)}function K(){if(!Q.value)return;r&&r.destroy();const h=L.value||[],e={labels:h.map(R=>R.model),datasets:[{data:h.map(R=>R.allTokens),backgroundColor:["#3B82F6","#10B981","#F59E0B","#EF4444","#8B5CF6","#EC4899","#14B8A6","#F97316","#6366F1","#84CC16"],borderWidth:0}]};r=new vt(Q.value,{type:"doughnut",data:e,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{padding:15,usePointStyle:!0,font:{size:12},color:x.value.legend}},tooltip:{callbacks:{label:function(R){const g=R.label||"",H=v(R.parsed),et=M(R.parsed,h);return`${g}: ${H} (${et}%)`}}}}}})}function O(){var A;if(!tt.value)return;i&&i.destroy();const h=n.value||[],e=h.map(p=>p.inputTokens||0),R=h.map(p=>p.outputTokens||0),g=h.map(p=>p.cacheCreateTokens||0),H=h.map(p=>p.cacheReadTokens||0),et=h.map(p=>p.requests||0),ut=h.map(p=>p.cost||0),mt=(A=h[0])!=null&&A.date?"date":"hour",U={labels:h.map(p=>{if(p.label)return p.label;if(mt==="hour"){const b=new Date(p.hour),B=String(b.getMonth()+1).padStart(2,"0"),V=String(b.getDate()).padStart(2,"0"),yt=String(b.getHours()).padStart(2,"0");return`${B}/${V} ${yt}:00`}const S=p.date;if(S&&S.includes("-")){const b=S.split("-");if(b.length>=3)return`${b[1]}/${b[2]}`}return p.date}),datasets:[{label:"输入Token",data:e,borderColor:"rgb(102, 126, 234)",backgroundColor:"rgba(102, 126, 234, 0.1)",tension:.3},{label:"输出Token",data:R,borderColor:"rgb(240, 147, 251)",backgroundColor:"rgba(240, 147, 251, 0.1)",tension:.3},{label:"缓存创建Token",data:g,borderColor:"rgb(59, 130, 246)",backgroundColor:"rgba(59, 130, 246, 0.1)",tension:.3},{label:"缓存读取Token",data:H,borderColor:"rgb(147, 51, 234)",backgroundColor:"rgba(147, 51, 234, 0.1)",tension:.3},{label:"费用 (USD)",data:ut,borderColor:"rgb(34, 197, 94)",backgroundColor:"rgba(34, 197, 94, 0.1)",tension:.3,yAxisID:"y2"},{label:"请求数",data:et,borderColor:"rgb(16, 185, 129)",backgroundColor:"rgba(16, 185, 129, 0.1)",tension:.3,yAxisID:"y1"}]};i=new vt(tt.value,{type:"line",data:U,options:{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{title:{display:!0,text:"Token使用趋势",font:{size:16,weight:"bold"},color:x.value.text},legend:{position:"top",labels:{color:x.value.legend}},tooltip:{mode:"index",intersect:!1,itemSort:function(p,S){const b=p.dataset.label||"",B=S.dataset.label||"";return b==="费用 (USD)"||B==="费用 (USD)"?b==="费用 (USD)"?-1:1:b==="请求数"||B==="请求数"?b==="请求数"?1:-1:S.parsed.y-p.parsed.y},callbacks:{label:function(p){const S=p.dataset.label||"";let b=p.parsed.y;return S==="费用 (USD)"?b<.01?S+": $"+b.toFixed(6):S+": $"+b.toFixed(4):S==="请求数"?S+": "+b.toLocaleString()+" 次":b>=1e6?S+": "+(b/1e6).toFixed(2)+"M tokens":b>=1e3?S+": "+(b/1e3).toFixed(2)+"K tokens":S+": "+b.toLocaleString()+" tokens"}}}},scales:{x:{type:"category",display:!0,title:{display:!0,text:E==="hour"?"时间":"日期",color:x.value.text},ticks:{color:x.value.text},grid:{color:x.value.grid}},y:{type:"linear",display:!0,position:"left",title:{display:!0,text:"Token数量",color:x.value.text},ticks:{callback:function(p){return v(p)},color:x.value.text},grid:{color:x.value.grid}},y1:{type:"linear",display:!0,position:"right",title:{display:!0,text:"请求数",color:x.value.text},grid:{drawOnChartArea:!1},ticks:{callback:function(p){return p.toLocaleString()},color:x.value.text}},y2:{type:"linear",display:!1,position:"right"}}}})}function z(){var ut,mt;if(!c.value)return;d&&d.destroy();const h=T.value.data||[],e=f,R=["#3B82F6","#10B981","#F59E0B","#EF4444","#8B5CF6","#EC4899","#14B8A6","#F97316","#6366F1","#84CC16"],g=((ut=T.value.topApiKeys)==null?void 0:ut.map((w,U)=>{var S,b;const A=T.value.data.map(B=>!B.apiKeys||!B.apiKeys[w]?0:e==="tokens"?B.apiKeys[w].tokens:B.apiKeys[w].requests||0);return{label:((b=(S=T.value.data.find(B=>B.apiKeys&&B.apiKeys[w]))==null?void 0:S.apiKeys[w])==null?void 0:b.name)||`API Key ${w}`,data:A,borderColor:R[U%R.length],backgroundColor:R[U%R.length]+"20",tension:.4,fill:!1}}))||[],H=(mt=h[0])!=null&&mt.date?"date":"hour",et={labels:h.map(w=>{if(w.label)return w.label;if(H==="hour"){const A=new Date(w.hour),p=String(A.getMonth()+1).padStart(2,"0"),S=String(A.getDate()).padStart(2,"0"),b=String(A.getHours()).padStart(2,"0");return`${p}/${S} ${b}:00`}const U=w.date;if(U&&U.includes("-")){const A=U.split("-");if(A.length>=3)return`${A[1]}/${A[2]}`}return w.date}),datasets:g};d=new vt(c.value,{type:"line",data:et,options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{padding:20,usePointStyle:!0,font:{size:12},color:x.value.legend}},tooltip:{mode:"index",intersect:!1,itemSort:function(w,U){return U.parsed.y-w.parsed.y},callbacks:{label:function(w){var yt;const U=w.dataset.label||"",A=w.parsed.y,p=w.dataIndex,S=T.value.data[p],B=w.chart.data.datasets.map((F,at)=>({value:F.data[p]||0,index:at})).sort((F,at)=>at.value-F.value).findIndex(F=>F.index===w.datasetIndex)+1;let V="";if(B===1?V="🥇 ":B===2?V="🥈 ":B===3&&(V="🥉 "),f==="tokens"){let F="";A>=1e6?F=(A/1e6).toFixed(2)+"M":A>=1e3?F=(A/1e3).toFixed(2)+"K":F=A.toLocaleString();const at=T.value.topApiKeys[w.datasetIndex],xt=(yt=S==null?void 0:S.apiKeys)==null?void 0:yt[at],St=(xt==null?void 0:xt.formattedCost)||"$0.00";return`${V}${U}: ${F} tokens (${St})`}else return`${V}${U}: ${A.toLocaleString()} 次`}}}},scales:{x:{type:"category",display:!0,title:{display:!0,text:E==="hour"?"时间":"日期",color:x.value.text},ticks:{color:x.value.text},grid:{color:x.value.grid}},y:{beginAtZero:!0,title:{display:!0,text:f==="tokens"?"Token 数量":"请求次数",color:x.value.text},ticks:{callback:function(w){return v(w)},color:x.value.text},grid:{color:x.value.grid}}}}})}async function ht(){await it(f),await Z(),z()}st(L,()=>{Z(()=>K())}),st(n,()=>{Z(()=>O())}),st(T,()=>{Z(()=>z())});async function ft(){if(!_.value){_.value=!0;try{await Promise.all([rt(),gt()])}finally{_.value=!1}}}function kt(){l.value&&(m.value=s.value,C.value&&clearInterval(C.value),u.value&&clearTimeout(u.value),C.value=setInterval(()=>{m.value--,m.value<=0&&clearInterval(C.value)},1e3),u.value=setTimeout(async()=>{await ft(),l.value&&kt()},s.value*1e3))}function Dt(){C.value&&(clearInterval(C.value),C.value=null),u.value&&(clearTimeout(u.value),u.value=null),m.value=0}return st(l,h=>{h?kt():Dt()}),st(W,()=>{Z(()=>{K(),O(),z()})}),At(async()=>{await ft(),await Z(),K(),O(),z()}),Pt(()=>{Dt(),r&&r.destroy(),i&&i.destroy(),d&&d.destroy()}),(h,e)=>{const R=$t;return D(),k("div",null,[t("div",Ft,[t("div",Lt,[t("div",zt,[t("div",null,[e[7]||(e[7]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 总API Keys ",-1)),t("p",Ht,y(a(o).totalApiKeys),1),t("p",qt," 活跃: "+y(a(o).activeApiKeys||0),1)]),e[8]||(e[8]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-blue-500 to-blue-600"},[t("i",{class:"fas fa-key"})],-1))])]),t("div",Et,[t("div",Nt,[t("div",Vt,[e[14]||(e[14]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 服务账户 ",-1)),t("div",jt,[t("p",Yt,y(a(o).totalAccounts),1),a(o).accountsByPlatform?(D(),k("div",Wt,[a(o).accountsByPlatform.claude&&a(o).accountsByPlatform.claude.total>0?(D(),k("div",{key:0,class:"inline-flex items-center gap-0.5",title:`Claude: ${a(o).accountsByPlatform.claude.total} 个 (正常: ${a(o).accountsByPlatform.claude.normal})`},[e[9]||(e[9]=t("i",{class:"fas fa-brain text-xs text-indigo-600"},null,-1)),t("span",Qt,y(a(o).accountsByPlatform.claude.total),1)],8,Gt)):I("",!0),a(o).accountsByPlatform["claude-console"]&&a(o).accountsByPlatform["claude-console"].total>0?(D(),k("div",{key:1,class:"inline-flex items-center gap-0.5",title:`Console: ${a(o).accountsByPlatform["claude-console"].total} 个 (正常: ${a(o).accountsByPlatform["claude-console"].normal})`},[e[10]||(e[10]=t("i",{class:"fas fa-terminal text-xs text-purple-600"},null,-1)),t("span",Jt,y(a(o).accountsByPlatform["claude-console"].total),1)],8,Zt)):I("",!0),a(o).accountsByPlatform.gemini&&a(o).accountsByPlatform.gemini.total>0?(D(),k("div",{key:2,class:"inline-flex items-center gap-0.5",title:`Gemini: ${a(o).accountsByPlatform.gemini.total} 个 (正常: ${a(o).accountsByPlatform.gemini.normal})`},[e[11]||(e[11]=t("i",{class:"fas fa-robot text-xs text-yellow-600"},null,-1)),t("span",te,y(a(o).accountsByPlatform.gemini.total),1)],8,Xt)):I("",!0),a(o).accountsByPlatform.bedrock&&a(o).accountsByPlatform.bedrock.total>0?(D(),k("div",{key:3,class:"inline-flex items-center gap-0.5",title:`Bedrock: ${a(o).accountsByPlatform.bedrock.total} 个 (正常: ${a(o).accountsByPlatform.bedrock.normal})`},[e[12]||(e[12]=t("i",{class:"fab fa-aws text-xs text-orange-600"},null,-1)),t("span",ae,y(a(o).accountsByPlatform.bedrock.total),1)],8,ee)):I("",!0),a(o).accountsByPlatform.openai&&a(o).accountsByPlatform.openai.total>0?(D(),k("div",{key:4,class:"inline-flex items-center gap-0.5",title:`OpenAI: ${a(o).accountsByPlatform.openai.total} 个 (正常: ${a(o).accountsByPlatform.openai.normal})`},[e[13]||(e[13]=t("i",{class:"fas fa-openai text-xs text-gray-100"},null,-1)),t("span",oe,y(a(o).accountsByPlatform.openai.total),1)],8,se)):I("",!0)])):I("",!0)]),t("p",ne,[P(" 正常: "+y(a(o).normalAccounts||0)+" ",1),a(o).abnormalAccounts>0?(D(),k("span",le," | 异常: "+y(a(o).abnormalAccounts),1)):I("",!0),a(o).pausedAccounts>0?(D(),k("span",re," | 停止调度: "+y(a(o).pausedAccounts),1)):I("",!0),a(o).rateLimitedAccounts>0?(D(),k("span",ie," | 限流: "+y(a(o).rateLimitedAccounts),1)):I("",!0)])]),e[15]||(e[15]=t("div",{class:"stat-icon ml-2 flex-shrink-0 bg-gradient-to-br from-green-500 to-green-600"},[t("i",{class:"fas fa-user-circle"})],-1))])]),t("div",de,[t("div",ce,[t("div",null,[e[16]||(e[16]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 今日请求 ",-1)),t("p",ue,y(a(o).todayRequests),1),t("p",me," 总请求: "+y(v(a(o).totalRequests||0)),1)]),e[17]||(e[17]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-purple-500 to-purple-600"},[t("i",{class:"fas fa-chart-line"})],-1))])]),t("div",ye,[t("div",pe,[t("div",null,[e[18]||(e[18]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 系统状态 ",-1)),t("p",ge,y(a(o).systemStatus),1),t("p",fe," 运行时间: "+y(a(lt)),1)]),e[19]||(e[19]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-yellow-500 to-orange-500"},[t("i",{class:"fas fa-heartbeat"})],-1))])])]),t("div",xe,[t("div",be,[t("div",ve,[t("div",he,[e[24]||(e[24]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 今日Token ",-1)),t("div",ke,[t("p",De,y(v((a(o).todayInputTokens||0)+(a(o).todayOutputTokens||0)+(a(o).todayCacheCreateTokens||0)+(a(o).todayCacheReadTokens||0))),1),t("span",Te,"/ "+y(a(X).todayCosts.formatted.totalCost),1)]),t("div",Ce,[t("div",_e,[t("span",null,[e[20]||(e[20]=P("输入: ",-1)),t("span",we,y(v(a(o).todayInputTokens||0)),1)]),t("span",null,[e[21]||(e[21]=P("输出: ",-1)),t("span",Se,y(v(a(o).todayOutputTokens||0)),1)]),(a(o).todayCacheCreateTokens||0)>0?(D(),k("span",$e,[e[22]||(e[22]=P("缓存创建: ",-1)),t("span",Re,y(v(a(o).todayCacheCreateTokens||0)),1)])):I("",!0),(a(o).todayCacheReadTokens||0)>0?(D(),k("span",Ae,[e[23]||(e[23]=P("缓存读取: ",-1)),t("span",Pe,y(v(a(o).todayCacheReadTokens||0)),1)])):I("",!0)])])]),e[25]||(e[25]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-indigo-500 to-indigo-600"},[t("i",{class:"fas fa-coins"})],-1))])]),t("div",Ie,[t("div",Be,[t("div",Ue,[e[30]||(e[30]=t("p",{class:"mb-1 text-xs font-semibold text-gray-600 dark:text-gray-400 sm:text-sm"}," 总Token消耗 ",-1)),t("div",Me,[t("p",Ke,y(v((a(o).totalInputTokens||0)+(a(o).totalOutputTokens||0)+(a(o).totalCacheCreateTokens||0)+(a(o).totalCacheReadTokens||0))),1),t("span",Oe,"/ "+y(a(X).totalCosts.formatted.totalCost),1)]),t("div",Fe,[t("div",Le,[t("span",null,[e[26]||(e[26]=P("输入: ",-1)),t("span",ze,y(v(a(o).totalInputTokens||0)),1)]),t("span",null,[e[27]||(e[27]=P("输出: ",-1)),t("span",He,y(v(a(o).totalOutputTokens||0)),1)]),(a(o).totalCacheCreateTokens||0)>0?(D(),k("span",qe,[e[28]||(e[28]=P("缓存创建: ",-1)),t("span",Ee,y(v(a(o).totalCacheCreateTokens||0)),1)])):I("",!0),(a(o).totalCacheReadTokens||0)>0?(D(),k("span",Ne,[e[29]||(e[29]=P("缓存读取: ",-1)),t("span",Ve,y(v(a(o).totalCacheReadTokens||0)),1)])):I("",!0)])])]),e[31]||(e[31]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-emerald-500 to-emerald-600"},[t("i",{class:"fas fa-database"})],-1))])]),t("div",je,[t("div",Ye,[t("div",null,[t("p",We,[e[32]||(e[32]=P(" 实时RPM ",-1)),t("span",Ge,"("+y(a(o).metricsWindow)+"分钟)",1)]),t("p",Qe,y(a(o).realtimeRPM||0),1),t("p",Ze,[e[34]||(e[34]=P(" 每分钟请求数 ",-1)),a(o).isHistoricalMetrics?(D(),k("span",Je,e[33]||(e[33]=[t("i",{class:"fas fa-exclamation-circle"},null,-1),P(" 历史数据 ",-1)]))):I("",!0)])]),e[35]||(e[35]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-orange-500 to-orange-600"},[t("i",{class:"fas fa-tachometer-alt"})],-1))])]),t("div",Xe,[t("div",ta,[t("div",null,[t("p",ea,[e[36]||(e[36]=P(" 实时TPM ",-1)),t("span",aa,"("+y(a(o).metricsWindow)+"分钟)",1)]),t("p",sa,y(v(a(o).realtimeTPM||0)),1),t("p",oa,[e[38]||(e[38]=P(" 每分钟Token数 ",-1)),a(o).isHistoricalMetrics?(D(),k("span",na,e[37]||(e[37]=[t("i",{class:"fas fa-exclamation-circle"},null,-1),P(" 历史数据 ",-1)]))):I("",!0)])]),e[39]||(e[39]=t("div",{class:"stat-icon flex-shrink-0 bg-gradient-to-br from-rose-500 to-rose-600"},[t("i",{class:"fas fa-rocket"})],-1))])])]),t("div",la,[t("div",ra,[e[46]||(e[46]=t("h3",{class:"text-lg font-bold text-gray-900 dark:text-gray-100 sm:text-xl"}," 模型使用分布与Token使用趋势 ",-1)),t("div",ia,[t("div",da,[(D(!0),k(Ct,null,_t(a(q).presetOptions,g=>(D(),k("button",{key:g.value,class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(q).preset===g.value&&a(q).type==="preset"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:H=>a(dt)(g.value)},y(g.label),11,ca))),128))]),t("div",ua,[t("button",{class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(E)==="day"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[0]||(e[0]=g=>a(ct)("day"))},e[40]||(e[40]=[t("i",{class:"fas fa-calendar-day mr-1"},null,-1),P("按天 ",-1)]),2),t("button",{class:j(["rounded-md px-3 py-1 text-sm font-medium transition-colors",a(E)==="hour"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[1]||(e[1]=g=>a(ct)("hour"))},e[41]||(e[41]=[t("i",{class:"fas fa-clock mr-1"},null,-1),P("按小时 ",-1)]),2)]),t("div",ma,[It(R,{modelValue:a(q).customRange,"onUpdate:modelValue":e[2]||(e[2]=g=>a(q).customRange=g),class:"custom-date-picker w-full lg:w-auto","default-time":a(pt),"disabled-date":a(G),"end-placeholder":"结束日期",format:"YYYY-MM-DD HH:mm:ss","range-separator":"至",size:"default","start-placeholder":"开始日期",style:{"max-width":"400px"},type:"datetimerange","value-format":"YYYY-MM-DD HH:mm:ss",onChange:a(N)},null,8,["modelValue","default-time","disabled-date","onChange"]),a(E)==="hour"?(D(),k("span",ya,e[42]||(e[42]=[t("i",{class:"fas fa-info-circle"},null,-1),P(" 最多24小时 ",-1)]))):I("",!0)]),t("div",pa,[t("div",ga,[t("label",fa,[Bt(t("input",{"onUpdate:modelValue":e[3]||(e[3]=g=>l.value=g),class:"peer sr-only",type:"checkbox"},null,512),[[Ut,l.value]]),e[45]||(e[45]=t("div",{class:"peer relative h-5 w-9 rounded-full bg-gray-300 transition-all duration-200 after:absolute after:left-[2px] after:top-0.5 after:h-4 after:w-4 after:rounded-full after:bg-white after:shadow-sm after:transition-transform after:duration-200 after:content-[''] peer-checked:bg-blue-500 peer-checked:after:translate-x-4 peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-blue-300 dark:bg-gray-600 dark:after:bg-gray-300 dark:peer-focus:ring-blue-600"},null,-1)),t("span",xa,[e[43]||(e[43]=t("i",{class:"fas fa-redo-alt text-xs text-gray-500 dark:text-gray-400"},null,-1)),e[44]||(e[44]=t("span",null,"自动刷新",-1)),l.value?(D(),k("span",{key:0,class:j(["ml-1 font-mono text-xs text-blue-600 transition-opacity",m.value>0?"opacity-100":"opacity-0"])},y(m.value)+"s ",3)):I("",!0)])])]),t("button",{class:"flex items-center gap-1 rounded-md border border-gray-300 bg-white px-3 py-1 text-sm font-medium text-blue-600 shadow-sm transition-colors hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:hover:bg-gray-700 sm:gap-2",disabled:_.value,title:"立即刷新数据",onClick:e[4]||(e[4]=g=>ft())},[t("i",{class:j(["fas fa-sync-alt text-xs",{"animate-spin":_.value}])},null,2),t("span",va,y(_.value?"刷新中":"刷新"),1)],8,ba)])])]),t("div",ha,[t("div",ka,[e[47]||(e[47]=t("h4",{class:"mb-4 text-base font-semibold text-gray-800 dark:text-gray-200 sm:text-lg"}," Token使用分布 ",-1)),t("div",Da,[t("canvas",{ref_key:"modelUsageChart",ref:Q},null,512)])]),t("div",Ta,[e[50]||(e[50]=t("h4",{class:"mb-4 text-base font-semibold text-gray-800 dark:text-gray-200 sm:text-lg"}," 详细统计数据 ",-1)),a(L).length===0?(D(),k("div",Ca,e[48]||(e[48]=[t("p",{class:"text-sm text-gray-500 sm:text-base"},"暂无模型使用数据",-1)]))):(D(),k("div",_a,[t("table",wa,[e[49]||(e[49]=t("thead",{class:"sticky top-0 bg-gray-50 dark:bg-gray-700"},[t("tr",null,[t("th",{class:"px-2 py-2 text-left text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 模型 "),t("th",{class:"hidden px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:table-cell sm:px-4"}," 请求数 "),t("th",{class:"px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 总Token "),t("th",{class:"px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:px-4"}," 费用 "),t("th",{class:"hidden px-2 py-2 text-right text-xs font-medium text-gray-700 dark:text-gray-300 sm:table-cell sm:px-4"}," 占比 ")])],-1)),t("tbody",Sa,[(D(!0),k(Ct,null,_t(a(L),g=>(D(),k("tr",{key:g.model,class:"hover:bg-gray-50 dark:hover:bg-gray-700"},[t("td",$a,[t("span",{class:"block max-w-[100px] truncate sm:max-w-none",title:g.model},y(g.model),9,Ra)]),t("td",Aa,y(v(g.requests)),1),t("td",Pa,y(v(g.allTokens)),1),t("td",Ia,y(g.formatted?g.formatted.total:"$0.000000"),1),t("td",Ba,[t("span",Ua,y(M(g.allTokens,a(L)))+"% ",1)])]))),128))])])]))])])]),t("div",Ma,[t("div",Ka,[t("div",Oa,[t("canvas",{ref_key:"usageTrendChart",ref:tt},null,512)])])]),t("div",Fa,[t("div",La,[t("div",za,[e[53]||(e[53]=t("h3",{class:"text-base font-semibold text-gray-900 dark:text-gray-100 sm:text-lg"}," API Keys 使用趋势 ",-1)),t("div",Ha,[t("button",{class:j(["rounded-md px-2 py-1 text-xs font-medium transition-colors sm:px-3 sm:text-sm",a(f)==="requests"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[5]||(e[5]=g=>(f.value="requests",ht()))},e[51]||(e[51]=[t("i",{class:"fas fa-exchange-alt mr-1"},null,-1),t("span",{class:"hidden sm:inline"},"请求次数",-1),t("span",{class:"sm:hidden"},"请求",-1)]),2),t("button",{class:j(["rounded-md px-2 py-1 text-xs font-medium transition-colors sm:px-3 sm:text-sm",a(f)==="tokens"?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:text-gray-900 dark:text-gray-300 dark:hover:text-gray-100"]),onClick:e[6]||(e[6]=g=>(f.value="tokens",ht()))},e[52]||(e[52]=[t("i",{class:"fas fa-coins mr-1"},null,-1),t("span",{class:"hidden sm:inline"},"Token 数量",-1),t("span",{class:"sm:hidden"},"Token",-1)]),2)])]),t("div",qa,[a(T).totalApiKeys>10?(D(),k("span",Ea," 共 "+y(a(T).totalApiKeys)+" 个 API Key,显示使用量前 10 个 ",1)):(D(),k("span",Na," 共 "+y(a(T).totalApiKeys)+" 个 API Key ",1))]),t("div",Va,[t("canvas",{ref_key:"apiKeysUsageTrendChart",ref:c},null,512)])])])])}}},Xa=Mt(ja,[["__scopeId","data-v-6534b251"]]);export{Xa as default}; diff --git a/web/admin-spa/dist/assets/DashboardView-OFXgpCdk.css b/web/admin-spa/dist/assets/DashboardView-OFXgpCdk.css deleted file mode 100644 index ec299889..00000000 --- a/web/admin-spa/dist/assets/DashboardView-OFXgpCdk.css +++ /dev/null @@ -1 +0,0 @@ -.custom-date-picker[data-v-6534b251]{font-size:13px}@keyframes spin-6534b251{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin[data-v-6534b251]{animation:spin-6534b251 1s linear infinite} diff --git a/web/admin-spa/dist/assets/DashboardView-cbgZleS2.css b/web/admin-spa/dist/assets/DashboardView-cbgZleS2.css new file mode 100644 index 00000000..693f451b --- /dev/null +++ b/web/admin-spa/dist/assets/DashboardView-cbgZleS2.css @@ -0,0 +1 @@ +.custom-date-picker[data-v-e71abcc3]{font-size:13px}@keyframes spin-e71abcc3{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin[data-v-e71abcc3]{animation:spin-e71abcc3 1s linear infinite} diff --git a/web/admin-spa/dist/assets/LoginView-BnBqXii9.js b/web/admin-spa/dist/assets/LoginView-BawsCHOq.js similarity index 94% rename from web/admin-spa/dist/assets/LoginView-BnBqXii9.js rename to web/admin-spa/dist/assets/LoginView-BawsCHOq.js index 60fecc010..29d306e7 100644 --- a/web/admin-spa/dist/assets/LoginView-BnBqXii9.js +++ b/web/admin-spa/dist/assets/LoginView-BawsCHOq.js @@ -1 +1 @@ -import{c as b,r as y,q as f,x as a,z as s,R as h,L as i,Q as _,u as o,P as m,Y as w,K as u,aq as c,O as g,y as r}from"./vue-vendor-DfnFpxGJ.js";import{_ as v,u as k,a as S}from"./index-BdtiivzQ.js";import{T as L}from"./ThemeToggle-DACcdK5F.js";import"./element-plus-CMedNaYf.js";import"./vendor-BDiMbLwQ.js";const V={class:"flex min-h-screen items-center justify-center p-4 sm:p-6"},T={class:"fixed right-4 top-4 z-50"},N={class:"glass-strong w-full max-w-md rounded-xl p-6 shadow-2xl sm:rounded-2xl sm:p-8 md:rounded-3xl md:p-10"},I={class:"mb-6 text-center sm:mb-8"},q={class:"mx-auto mb-4 flex h-16 w-16 items-center justify-center overflow-hidden rounded-xl border border-gray-300/30 bg-gradient-to-br from-blue-500/20 to-purple-500/20 backdrop-blur-sm sm:mb-6 sm:h-20 sm:w-20 sm:rounded-2xl"},D=["src"],E={key:1,class:"fas fa-cloud text-2xl text-gray-700 sm:text-3xl"},j={key:1,class:"h-10 w-10 animate-pulse rounded bg-gray-300/50 sm:h-12 sm:w-12"},B={key:0,class:"header-title mb-2 text-2xl font-bold text-white sm:text-3xl"},M={key:1,class:"mx-auto mb-2 h-8 w-48 animate-pulse rounded bg-gray-300/50 sm:h-9 sm:w-64"},z=["disabled"],F={key:0,class:"fas fa-sign-in-alt mr-2"},O={key:1,class:"loading-spinner mr-2"},U={key:0,class:"mt-4 rounded-lg border border-red-500/30 bg-red-500/20 p-3 text-center text-xs text-red-800 backdrop-blur-sm dark:text-red-400 sm:mt-6 sm:rounded-xl sm:p-4 sm:text-sm"},A={__name:"LoginView",setup(C){const e=k(),p=S(),d=b(()=>e.oemLoading),n=y({username:"",password:""});f(()=>{p.initTheme(),e.loadOemSettings()});const x=async()=>{await e.login(n.value)};return(K,t)=>(r(),a("div",V,[s("div",T,[h(L,{mode:"dropdown"})]),s("div",N,[s("div",I,[s("div",q,[d.value?(r(),a("div",j)):(r(),a(_,{key:0},[o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon?(r(),a("img",{key:0,alt:"Logo",class:"h-10 w-10 object-contain sm:h-12 sm:w-12",src:o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon,onError:t[0]||(t[0]=l=>l.target.style.display="none")},null,40,D)):(r(),a("i",E))],64))]),!d.value&&o(e).oemSettings.siteName?(r(),a("h1",B,m(o(e).oemSettings.siteName),1)):d.value?(r(),a("div",M)):i("",!0),t[3]||(t[3]=s("p",{class:"text-base text-gray-600 dark:text-gray-400 sm:text-lg"},"管理后台",-1))]),s("form",{class:"space-y-4 sm:space-y-6",onSubmit:w(x,["prevent"])},[s("div",null,[t[4]||(t[4]=s("label",{class:"mb-2 block text-sm font-semibold text-gray-900 dark:text-gray-100 sm:mb-3"},"用户名",-1)),u(s("input",{"onUpdate:modelValue":t[1]||(t[1]=l=>n.value.username=l),class:"form-input w-full",placeholder:"请输入用户名",required:"",type:"text"},null,512),[[c,n.value.username]])]),s("div",null,[t[5]||(t[5]=s("label",{class:"mb-2 block text-sm font-semibold text-gray-900 dark:text-gray-100 sm:mb-3"},"密码",-1)),u(s("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>n.value.password=l),class:"form-input w-full",placeholder:"请输入密码",required:"",type:"password"},null,512),[[c,n.value.password]])]),s("button",{class:"btn btn-primary w-full px-4 py-3 text-base font-semibold sm:px-6 sm:py-4 sm:text-lg",disabled:o(e).loginLoading,type:"submit"},[o(e).loginLoading?i("",!0):(r(),a("i",F)),o(e).loginLoading?(r(),a("div",O)):i("",!0),g(" "+m(o(e).loginLoading?"登录中...":"登录"),1)],8,z)],32),o(e).loginError?(r(),a("div",U,[t[6]||(t[6]=s("i",{class:"fas fa-exclamation-triangle mr-2"},null,-1)),g(m(o(e).loginError),1)])):i("",!0)])]))}},H=v(A,[["__scopeId","data-v-4e1eb19c"]]);export{H as default}; +import{c as b,r as y,q as f,x as a,z as s,R as h,L as i,Q as _,u as o,P as m,Y as w,K as u,aq as c,O as g,y as r}from"./vue-vendor-Ig-GgGwA.js";import{_ as v,u as k,a as S}from"./index-CY9cPBXr.js";import{T as L}from"./ThemeToggle-Bb-3yEk7.js";import"./element-plus-Bq6mBxnk.js";import"./vendor-BDiMbLwQ.js";const V={class:"flex min-h-screen items-center justify-center p-4 sm:p-6"},T={class:"fixed right-4 top-4 z-50"},N={class:"glass-strong w-full max-w-md rounded-xl p-6 shadow-2xl sm:rounded-2xl sm:p-8 md:rounded-3xl md:p-10"},I={class:"mb-6 text-center sm:mb-8"},q={class:"mx-auto mb-4 flex h-16 w-16 items-center justify-center overflow-hidden rounded-xl border border-gray-300/30 bg-gradient-to-br from-blue-500/20 to-purple-500/20 backdrop-blur-sm sm:mb-6 sm:h-20 sm:w-20 sm:rounded-2xl"},D=["src"],E={key:1,class:"fas fa-cloud text-2xl text-gray-700 sm:text-3xl"},j={key:1,class:"h-10 w-10 animate-pulse rounded bg-gray-300/50 sm:h-12 sm:w-12"},B={key:0,class:"header-title mb-2 text-2xl font-bold text-white sm:text-3xl"},M={key:1,class:"mx-auto mb-2 h-8 w-48 animate-pulse rounded bg-gray-300/50 sm:h-9 sm:w-64"},z=["disabled"],F={key:0,class:"fas fa-sign-in-alt mr-2"},O={key:1,class:"loading-spinner mr-2"},U={key:0,class:"mt-4 rounded-lg border border-red-500/30 bg-red-500/20 p-3 text-center text-xs text-red-800 backdrop-blur-sm dark:text-red-400 sm:mt-6 sm:rounded-xl sm:p-4 sm:text-sm"},A={__name:"LoginView",setup(C){const e=k(),p=S(),d=b(()=>e.oemLoading),n=y({username:"",password:""});f(()=>{p.initTheme(),e.loadOemSettings()});const x=async()=>{await e.login(n.value)};return(K,t)=>(r(),a("div",V,[s("div",T,[h(L,{mode:"dropdown"})]),s("div",N,[s("div",I,[s("div",q,[d.value?(r(),a("div",j)):(r(),a(_,{key:0},[o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon?(r(),a("img",{key:0,alt:"Logo",class:"h-10 w-10 object-contain sm:h-12 sm:w-12",src:o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon,onError:t[0]||(t[0]=l=>l.target.style.display="none")},null,40,D)):(r(),a("i",E))],64))]),!d.value&&o(e).oemSettings.siteName?(r(),a("h1",B,m(o(e).oemSettings.siteName),1)):d.value?(r(),a("div",M)):i("",!0),t[3]||(t[3]=s("p",{class:"text-base text-gray-600 dark:text-gray-400 sm:text-lg"},"管理后台",-1))]),s("form",{class:"space-y-4 sm:space-y-6",onSubmit:w(x,["prevent"])},[s("div",null,[t[4]||(t[4]=s("label",{class:"mb-2 block text-sm font-semibold text-gray-900 dark:text-gray-100 sm:mb-3"},"用户名",-1)),u(s("input",{"onUpdate:modelValue":t[1]||(t[1]=l=>n.value.username=l),class:"form-input w-full",placeholder:"请输入用户名",required:"",type:"text"},null,512),[[c,n.value.username]])]),s("div",null,[t[5]||(t[5]=s("label",{class:"mb-2 block text-sm font-semibold text-gray-900 dark:text-gray-100 sm:mb-3"},"密码",-1)),u(s("input",{"onUpdate:modelValue":t[2]||(t[2]=l=>n.value.password=l),class:"form-input w-full",placeholder:"请输入密码",required:"",type:"password"},null,512),[[c,n.value.password]])]),s("button",{class:"btn btn-primary w-full px-4 py-3 text-base font-semibold sm:px-6 sm:py-4 sm:text-lg",disabled:o(e).loginLoading,type:"submit"},[o(e).loginLoading?i("",!0):(r(),a("i",F)),o(e).loginLoading?(r(),a("div",O)):i("",!0),g(" "+m(o(e).loginLoading?"登录中...":"登录"),1)],8,z)],32),o(e).loginError?(r(),a("div",U,[t[6]||(t[6]=s("i",{class:"fas fa-exclamation-triangle mr-2"},null,-1)),g(m(o(e).loginError),1)])):i("",!0)])]))}},H=v(A,[["__scopeId","data-v-4e1eb19c"]]);export{H as default}; diff --git a/web/admin-spa/dist/assets/LoginView-tn0RQdqM.css b/web/admin-spa/dist/assets/LoginView-tn0RQdqM.css deleted file mode 100644 index e69de29b..00000000 diff --git a/web/admin-spa/dist/assets/LogoTitle-DXipqypn.css b/web/admin-spa/dist/assets/LogoTitle-DXipqypn.css deleted file mode 100644 index 8604a7ce..00000000 --- a/web/admin-spa/dist/assets/LogoTitle-DXipqypn.css +++ /dev/null @@ -1 +0,0 @@ -@keyframes pulse-15eb26fd{0%{opacity:.7}50%{opacity:.4}to{opacity:.7}}.animate-pulse[data-v-15eb26fd]{animation:pulse-15eb26fd 2s cubic-bezier(.4,0,.6,1) infinite}.header-title[data-v-15eb26fd]{text-shadow:0 1px 2px rgba(0,0,0,.1)} diff --git a/web/admin-spa/dist/assets/LogoTitle-CipNTyYU.js b/web/admin-spa/dist/assets/LogoTitle-DmOAmnuZ.js similarity index 88% rename from web/admin-spa/dist/assets/LogoTitle-CipNTyYU.js rename to web/admin-spa/dist/assets/LogoTitle-DmOAmnuZ.js index c5e28cb4..479cfa9d 100644 --- a/web/admin-spa/dist/assets/LogoTitle-CipNTyYU.js +++ b/web/admin-spa/dist/assets/LogoTitle-DmOAmnuZ.js @@ -1 +1 @@ -import{_ as d}from"./index-BdtiivzQ.js";import{x as t,y as a,z as l,Q as n,L as o,A as c,C as g,P as r}from"./vue-vendor-DfnFpxGJ.js";const u={class:"flex items-center gap-4"},y={class:"flex h-12 w-12 flex-shrink-0 items-center justify-center overflow-hidden rounded-xl border border-gray-300/30 bg-gradient-to-br from-blue-500/20 to-purple-500/20 backdrop-blur-sm dark:border-gray-600/30 dark:from-blue-600/20 dark:to-purple-600/20"},f=["src"],m={key:1,class:"fas fa-cloud text-xl text-gray-700 dark:text-gray-300"},h={key:1,class:"h-8 w-8 animate-pulse rounded bg-gray-300/50 dark:bg-gray-600/50"},x={class:"flex min-h-[48px] flex-col justify-center"},b={class:"flex items-center gap-3"},k={key:1,class:"h-8 w-64 animate-pulse rounded bg-gray-300/50 dark:bg-gray-600/50"},_={key:0,class:"mt-0.5 text-sm leading-tight text-gray-600 dark:text-gray-400"},p={__name:"LogoTitle",props:{loading:{type:Boolean,default:!1},title:{type:String,default:""},subtitle:{type:String,default:""},logoSrc:{type:String,default:""},titleClass:{type:String,default:"text-gray-900"}},setup(e){const i=s=>{s.target.style.display="none"};return(s,S)=>(a(),t("div",u,[l("div",y,[e.loading?(a(),t("div",h)):(a(),t(n,{key:0},[e.logoSrc?(a(),t("img",{key:0,alt:"Logo",class:"h-8 w-8 object-contain",src:e.logoSrc,onError:i},null,40,f)):(a(),t("i",m))],64))]),l("div",x,[l("div",b,[!e.loading&&e.title?(a(),t("h1",{key:0,class:g(["header-title text-2xl font-bold leading-tight",e.titleClass])},r(e.title),3)):e.loading?(a(),t("div",k)):o("",!0),c(s.$slots,"after-title",{},void 0,!0)]),e.subtitle?(a(),t("p",_,r(e.subtitle),1)):o("",!0)])]))}},w=d(p,[["__scopeId","data-v-15eb26fd"]]);export{w as L}; +import{_ as d}from"./index-CY9cPBXr.js";import{x as t,y as a,z as l,Q as n,L as o,A as c,C as g,P as r}from"./vue-vendor-Ig-GgGwA.js";const u={class:"flex items-center gap-4"},y={class:"flex h-12 w-12 flex-shrink-0 items-center justify-center overflow-hidden rounded-xl border border-gray-300/30 bg-gradient-to-br from-blue-500/20 to-purple-500/20 backdrop-blur-sm dark:border-gray-600/30 dark:from-blue-600/20 dark:to-purple-600/20"},f=["src"],m={key:1,class:"fas fa-cloud text-xl text-gray-700 dark:text-gray-300"},h={key:1,class:"h-8 w-8 animate-pulse rounded bg-gray-300/50 dark:bg-gray-600/50"},x={class:"flex min-h-[48px] flex-col justify-center"},b={class:"flex items-center gap-3"},k={key:1,class:"h-8 w-64 animate-pulse rounded bg-gray-300/50 dark:bg-gray-600/50"},_={key:0,class:"mt-0.5 text-sm leading-tight text-gray-600 dark:text-gray-400"},p={__name:"LogoTitle",props:{loading:{type:Boolean,default:!1},title:{type:String,default:""},subtitle:{type:String,default:""},logoSrc:{type:String,default:""},titleClass:{type:String,default:"text-gray-900"}},setup(e){const i=s=>{s.target.style.display="none"};return(s,S)=>(a(),t("div",u,[l("div",y,[e.loading?(a(),t("div",h)):(a(),t(n,{key:0},[e.logoSrc?(a(),t("img",{key:0,alt:"Logo",class:"h-8 w-8 object-contain",src:e.logoSrc,onError:i},null,40,f)):(a(),t("i",m))],64))]),l("div",x,[l("div",b,[!e.loading&&e.title?(a(),t("h1",{key:0,class:g(["header-title text-2xl font-bold leading-tight",e.titleClass])},r(e.title),3)):e.loading?(a(),t("div",k)):o("",!0),c(s.$slots,"after-title",{},void 0,!0)]),e.subtitle?(a(),t("p",_,r(e.subtitle),1)):o("",!0)])]))}},w=d(p,[["__scopeId","data-v-15eb26fd"]]);export{w as L}; diff --git a/web/admin-spa/dist/assets/MainLayout-BgC31_Mb.js b/web/admin-spa/dist/assets/MainLayout-BgC31_Mb.js new file mode 100644 index 00000000..08c80127 --- /dev/null +++ b/web/admin-spa/dist/assets/MainLayout-BgC31_Mb.js @@ -0,0 +1 @@ +import{c as T,r as k,_ as z,q as B,V as E,x as l,y as i,z as e,L as I,R as b,J as S,P as x,C as M,Y as L,O as v,T as R,K as _,aq as U,Q as $,aT as V,ac as j,o as F,av as J,aU as H,D as Q}from"./vue-vendor-Ig-GgGwA.js";import{_ as N,u as Y,b as D}from"./index-CY9cPBXr.js";import{s as y}from"./toast-BvwA7Mwb.js";import{L as G}from"./LogoTitle-DmOAmnuZ.js";import{T as W}from"./ThemeToggle-Bb-3yEk7.js";import"./element-plus-Bq6mBxnk.js";import"./vendor-BDiMbLwQ.js";const X={class:"glass-strong mb-4 rounded-xl p-3 shadow-xl sm:mb-6 sm:rounded-2xl sm:p-4 md:mb-8 md:rounded-3xl md:p-6",style:{"z-index":"10",position:"relative"}},Z={class:"flex flex-col items-center justify-between gap-3 sm:flex-row sm:gap-4"},ee={class:"flex w-full items-center justify-center gap-2 sm:w-auto sm:justify-start sm:gap-3 md:gap-4"},te={class:"flex items-center gap-1 sm:gap-2"},se={class:"font-mono text-xs text-gray-400 dark:text-gray-500 sm:text-sm"},ae=["href"],re={class:"flex items-center gap-2 sm:gap-4"},oe={class:"flex items-center"},ne={class:"user-menu-container relative"},le={class:"hidden sm:inline"},ie={class:"border-b border-gray-100 px-4 py-3 dark:border-gray-700"},de={class:"flex items-center justify-between text-sm"},ue={class:"font-mono text-gray-700 dark:text-gray-300"},ce={key:0,class:"mt-2"},me={class:"mb-2 flex items-center justify-between text-sm"},ge={class:"font-mono text-green-600 dark:text-green-400"},pe=["href"],fe={key:1,class:"mt-2 text-center text-xs text-gray-500 dark:text-gray-400"},xe={key:2,class:"mt-2 text-center"},ve={key:"message",class:"inline-block rounded-lg border border-green-200 bg-green-100 px-3 py-1.5 dark:border-green-800 dark:bg-green-900/30"},ye={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},be={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-md flex-col p-4 sm:p-6 md:p-8"},he=["value"],ke={class:"flex gap-3 pt-4"},we=["disabled"],_e={key:0,class:"loading-spinner mr-2"},Ue={key:1,class:"fas fa-save mr-2"},Ce={__name:"AppHeader",setup(w){const m=V(),p=Y(),d=T(()=>p.user||{username:"Admin"}),r=T(()=>p.oemSettings||{}),h=T(()=>p.oemLoading),s=k({current:"...",latest:"",hasUpdate:!1,checkingUpdate:!1,lastChecked:null,releaseInfo:null,noUpdateMessage:!1}),n=k(!1),u=k(!1),o=k(!1),a=z({currentPassword:"",newPassword:"",confirmPassword:"",newUsername:""}),C=async()=>{if(!s.value.checkingUpdate){s.value.checkingUpdate=!0;try{const g=await D.get("/admin/check-updates");if(g.success){const t=g.data;s.value.current=t.current,s.value.latest=t.latest,s.value.hasUpdate=t.hasUpdate,s.value.releaseInfo=t.releaseInfo,s.value.lastChecked=new Date,localStorage.setItem("versionInfo",JSON.stringify({current:t.current,latest:t.latest,lastChecked:s.value.lastChecked,hasUpdate:t.hasUpdate,releaseInfo:t.releaseInfo})),t.hasUpdate||(s.value.noUpdateMessage=!0,setTimeout(()=>{s.value.noUpdateMessage=!1},3e3))}}catch(g){console.error("Error checking for updates:",g);const t=localStorage.getItem("versionInfo");if(t){const f=JSON.parse(t);s.value.current=f.current||s.value.current,s.value.latest=f.latest,s.value.hasUpdate=f.hasUpdate,s.value.releaseInfo=f.releaseInfo,s.value.lastChecked=new Date(f.lastChecked)}}finally{s.value.checkingUpdate=!1}}},K=()=>{a.currentPassword="",a.newPassword="",a.confirmPassword="",a.newUsername="",u.value=!0,n.value=!1},P=()=>{u.value=!1},O=async()=>{if(a.newPassword!==a.confirmPassword){y("两次输入的密码不一致","error");return}if(a.newPassword.length<8){y("新密码长度至少8位","error");return}o.value=!0;try{const g=await D.post("/web/auth/change-password",{currentPassword:a.currentPassword,newPassword:a.newPassword,newUsername:a.newUsername||void 0});if(g.success){const t=a.newUsername?"账户信息修改成功,请重新登录":"密码修改成功,请重新登录";y(t,"success"),P(),setTimeout(()=>{p.logout(),m.push("/login")},1500)}else y(g.message||"修改失败","error")}catch{y("修改密码失败","error")}finally{o.value=!1}},q=()=>{confirm("确定要退出登录吗?")&&(p.logout(),m.push("/login"),y("已安全退出","success")),n.value=!1},A=g=>{!g.target.closest(".user-menu-container")&&n.value&&(n.value=!1)};return B(()=>{C(),setInterval(()=>{C()},36e5),document.addEventListener("click",A)}),E(()=>{document.removeEventListener("click",A)}),(g,t)=>{var f;return i(),l($,null,[e("div",X,[e("div",Z,[e("div",ee,[b(G,{loading:h.value,"logo-src":r.value.siteIconData||r.value.siteIcon,subtitle:"管理后台",title:r.value.siteName,"title-class":"text-white dark:text-gray-100"},{"after-title":S(()=>{var c;return[e("div",te,[e("span",se,"v"+x(s.value.current||"..."),1),s.value.hasUpdate?(i(),l("a",{key:0,class:"inline-flex animate-pulse items-center gap-1 rounded-full border border-green-600 bg-green-500 px-2 py-0.5 text-xs text-white transition-colors hover:bg-green-600",href:((c=s.value.releaseInfo)==null?void 0:c.htmlUrl)||"#",target:"_blank",title:"有新版本可用"},t[7]||(t[7]=[e("i",{class:"fas fa-arrow-up text-[10px]"},null,-1),e("span",null,"新版本",-1)]),8,ae)):I("",!0)])]}),_:1},8,["loading","logo-src","title"])]),e("div",re,[e("div",oe,[b(W,{mode:"dropdown"})]),t[18]||(t[18]=e("div",{class:"h-8 w-px bg-gradient-to-b from-transparent via-gray-300 to-transparent opacity-50 dark:via-gray-600"},null,-1)),e("div",ne,[e("button",{class:"user-menu-button flex items-center gap-2 rounded-2xl bg-gradient-to-r from-blue-500 to-blue-600 px-3 py-2 text-sm font-semibold text-white shadow-lg transition-all duration-200 hover:scale-105 hover:shadow-xl active:scale-95 sm:px-4 sm:py-2.5",onClick:t[0]||(t[0]=c=>n.value=!n.value)},[t[8]||(t[8]=e("i",{class:"fas fa-user-circle text-sm sm:text-base"},null,-1)),e("span",le,x(d.value.username||"Admin"),1),e("i",{class:M(["fas fa-chevron-down ml-1 text-xs transition-transform duration-200",{"rotate-180":n.value}])},null,2)]),n.value?(i(),l("div",{key:0,class:"user-menu-dropdown absolute right-0 top-full mt-2 w-48 rounded-xl border border-gray-200 bg-white py-2 shadow-xl dark:border-gray-700 dark:bg-gray-800 sm:w-56",style:{"z-index":"999999"},onClick:t[2]||(t[2]=L(()=>{},["stop"]))},[e("div",ie,[e("div",de,[t[9]||(t[9]=e("span",{class:"text-gray-500 dark:text-gray-400"},"当前版本",-1)),e("span",ue,"v"+x(s.value.current||"..."),1)]),s.value.hasUpdate?(i(),l("div",ce,[e("div",me,[t[10]||(t[10]=e("span",{class:"font-medium text-green-600 dark:text-green-400"},[e("i",{class:"fas fa-arrow-up mr-1"}),v("有新版本 ")],-1)),e("span",ge,"v"+x(s.value.latest),1)]),e("a",{class:"block w-full rounded-lg bg-green-500 px-3 py-1.5 text-center text-sm text-white transition-colors hover:bg-green-600",href:((f=s.value.releaseInfo)==null?void 0:f.htmlUrl)||"#",target:"_blank"},t[11]||(t[11]=[e("i",{class:"fas fa-external-link-alt mr-1"},null,-1),v("查看更新 ",-1)]),8,pe)])):s.value.checkingUpdate?(i(),l("div",fe,t[12]||(t[12]=[e("i",{class:"fas fa-spinner fa-spin mr-1"},null,-1),v("检查更新中... ",-1)]))):(i(),l("div",xe,[b(R,{mode:"out-in",name:"fade"},{default:S(()=>[s.value.noUpdateMessage?(i(),l("div",ve,t[13]||(t[13]=[e("p",{class:"text-xs font-medium text-green-700 dark:text-green-400"},[e("i",{class:"fas fa-check-circle mr-1"}),v("当前已是最新版本 ")],-1)]))):(i(),l("button",{key:"button",class:"text-xs text-blue-500 transition-colors hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300",onClick:t[1]||(t[1]=c=>C())},t[14]||(t[14]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),v("检查更新 ",-1)])))]),_:1})]))]),e("button",{class:"flex w-full items-center gap-3 px-4 py-3 text-left text-gray-700 transition-colors hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700",onClick:K},t[15]||(t[15]=[e("i",{class:"fas fa-key text-blue-500"},null,-1),e("span",null,"修改账户信息",-1)])),t[17]||(t[17]=e("hr",{class:"my-2 border-gray-200 dark:border-gray-700"},null,-1)),e("button",{class:"flex w-full items-center gap-3 px-4 py-3 text-left text-gray-700 transition-colors hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700",onClick:q},t[16]||(t[16]=[e("i",{class:"fas fa-sign-out-alt text-red-500"},null,-1),e("span",null,"退出登录",-1)]))])):I("",!0)])])])]),u.value?(i(),l("div",ye,[e("div",be,[e("div",{class:"mb-6 flex items-center justify-between"},[t[20]||(t[20]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-blue-500 to-blue-600"},[e("i",{class:"fas fa-key text-white"})]),e("h3",{class:"text-xl font-bold text-gray-900 dark:text-gray-100"},"修改账户信息")],-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600 dark:hover:text-gray-300",onClick:P},t[19]||(t[19]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-6",onSubmit:L(O,["prevent"])},[e("div",null,[t[21]||(t[21]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"当前用户名",-1)),e("input",{class:"form-input w-full cursor-not-allowed bg-gray-100 dark:bg-gray-700 dark:text-gray-300",disabled:"",type:"text",value:d.value.username||"Admin"},null,8,he),t[22]||(t[22]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 当前用户名,输入新用户名以修改 ",-1))]),e("div",null,[t[23]||(t[23]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新用户名",-1)),_(e("input",{"onUpdate:modelValue":t[3]||(t[3]=c=>a.newUsername=c),class:"form-input w-full",placeholder:"输入新用户名(留空保持不变)",type:"text"},null,512),[[U,a.newUsername]]),t[24]||(t[24]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},"留空表示不修改用户名",-1))]),e("div",null,[t[25]||(t[25]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"当前密码",-1)),_(e("input",{"onUpdate:modelValue":t[4]||(t[4]=c=>a.currentPassword=c),class:"form-input w-full",placeholder:"请输入当前密码",required:"",type:"password"},null,512),[[U,a.currentPassword]])]),e("div",null,[t[26]||(t[26]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新密码",-1)),_(e("input",{"onUpdate:modelValue":t[5]||(t[5]=c=>a.newPassword=c),class:"form-input w-full",placeholder:"请输入新密码",required:"",type:"password"},null,512),[[U,a.newPassword]]),t[27]||(t[27]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},"密码长度至少8位",-1))]),e("div",null,[t[28]||(t[28]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"确认新密码",-1)),_(e("input",{"onUpdate:modelValue":t[6]||(t[6]=c=>a.confirmPassword=c),class:"form-input w-full",placeholder:"请再次输入新密码",required:"",type:"password"},null,512),[[U,a.confirmPassword]])]),e("div",ke,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:P}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:o.value,type:"submit"},[o.value?(i(),l("div",_e)):(i(),l("i",Ue)),v(" "+x(o.value?"保存中...":"保存修改"),1)],8,we)])],32)])])):I("",!0)],64)}}},Pe=N(Ce,[["__scopeId","data-v-1d65ae6c"]]),Te={class:"mb-4 sm:mb-6"},Ie={class:"block rounded-xl bg-white/10 p-2 backdrop-blur-sm dark:bg-gray-800/20 sm:hidden"},Me=["value"],$e=["value"],Ne={class:"hidden flex-wrap gap-2 rounded-2xl bg-white/10 p-2 backdrop-blur-sm dark:bg-gray-800/20 sm:flex"},Ae=["onClick"],Se={class:"hidden md:inline"},Le={class:"md:hidden"},je={__name:"TabBar",props:{activeTab:{type:String,required:!0}},emits:["tab-change"],setup(w){const m=[{key:"dashboard",name:"仪表板",shortName:"仪表板",icon:"fas fa-tachometer-alt"},{key:"apiKeys",name:"API Keys",shortName:"API",icon:"fas fa-key"},{key:"accounts",name:"账户管理",shortName:"账户",icon:"fas fa-user-circle"},{key:"tutorial",name:"使用教程",shortName:"教程",icon:"fas fa-graduation-cap"},{key:"settings",name:"系统设置",shortName:"设置",icon:"fas fa-cogs"}];return(p,d)=>(i(),l("div",Te,[e("div",Ie,[e("select",{class:"focus:ring-primary-color w-full rounded-lg bg-white/90 px-4 py-3 font-semibold text-gray-700 focus:outline-none focus:ring-2 dark:bg-gray-800/90 dark:text-gray-200 dark:focus:ring-indigo-400",value:w.activeTab,onChange:d[0]||(d[0]=r=>p.$emit("tab-change",r.target.value))},[(i(),l($,null,j(m,r=>e("option",{key:r.key,value:r.key},x(r.name),9,$e)),64))],40,Me)]),e("div",Ne,[(i(),l($,null,j(m,r=>e("button",{key:r.key,class:M(["tab-btn flex-1 px-3 py-2 text-xs font-semibold transition-all duration-300 sm:px-4 sm:py-3 sm:text-sm md:px-6",w.activeTab===r.key?"active":"text-gray-700 hover:bg-white/10 hover:text-gray-900 dark:text-gray-300 dark:hover:bg-gray-700/30 dark:hover:text-gray-100"]),onClick:h=>p.$emit("tab-change",r.key)},[e("i",{class:M(r.icon+" mr-1 sm:mr-2")},null,2),e("span",Se,x(r.name),1),e("span",Le,x(r.shortName||r.name),1)],10,Ae)),64))])]))}},De=N(je,[["__scopeId","data-v-5158bf7c"]]),Ve={class:"min-h-screen p-3 sm:p-4 md:p-6"},Ke={class:"glass-strong rounded-xl p-3 shadow-xl sm:rounded-2xl sm:p-4 md:rounded-3xl md:p-6",style:{"z-index":"1","min-height":"calc(100vh - 120px)"}},Oe={class:"tab-content"},qe={__name:"MainLayout",setup(w){const m=H(),p=V(),d=k("dashboard"),r={dashboard:"/dashboard",apiKeys:"/api-keys",accounts:"/accounts",tutorial:"/tutorial",settings:"/settings"},h=()=>{const n=m.path,u=Object.keys(r).find(o=>r[o]===n);if(u)d.value=u;else{const o=m.name,a={Dashboard:"dashboard",ApiKeys:"apiKeys",Accounts:"accounts",Tutorial:"tutorial",Settings:"settings"};o&&a[o]?d.value=a[o]:d.value="dashboard"}};h(),F(()=>m.path,n=>{const u=Object.keys(r).find(o=>r[o]===n);if(u)d.value=u;else{const o=m.name,a={Dashboard:"dashboard",ApiKeys:"apiKeys",Accounts:"accounts",Tutorial:"tutorial",Settings:"settings"};o&&a[o]&&(d.value=a[o])}});const s=async n=>{if(r[n]!==m.path){d.value=n;try{await p.push(r[n]),await Q()}catch(u){u.name!=="NavigationDuplicated"&&(console.error("路由切换失败:",u),h())}}};return(n,u)=>{const o=J("router-view");return i(),l("div",Ve,[b(Pe),e("div",Ke,[b(De,{"active-tab":d.value,onTabChange:s},null,8,["active-tab"]),e("div",Oe,[b(o)])])])}}},Qe=N(qe,[["__scopeId","data-v-55c24776"]]);export{Qe as default}; diff --git a/web/admin-spa/dist/assets/MainLayout-CCQ2LruH.css b/web/admin-spa/dist/assets/MainLayout-CCQ2LruH.css deleted file mode 100644 index 61c20f5f..00000000 --- a/web/admin-spa/dist/assets/MainLayout-CCQ2LruH.css +++ /dev/null @@ -1 +0,0 @@ -.user-menu-button[data-v-1d65ae6c]{position:relative;overflow:hidden;min-height:38px}.user-menu-button[data-v-1d65ae6c]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.user-menu-button[data-v-1d65ae6c]:hover:before{left:100%}.user-menu-dropdown[data-v-1d65ae6c]{margin-top:8px;animation:slideDown-1d65ae6c .3s ease-out}@keyframes slideDown-1d65ae6c{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.fade-enter-active[data-v-1d65ae6c],.fade-leave-active[data-v-1d65ae6c]{transition:opacity .3s}.fade-enter-from[data-v-1d65ae6c],.fade-leave-to[data-v-1d65ae6c]{opacity:0} diff --git a/web/admin-spa/dist/assets/MainLayout-DksoGYYS.js b/web/admin-spa/dist/assets/MainLayout-DksoGYYS.js deleted file mode 100644 index b2f7b44b..00000000 --- a/web/admin-spa/dist/assets/MainLayout-DksoGYYS.js +++ /dev/null @@ -1 +0,0 @@ -import{c as T,r as k,_ as E,q as R,V as F,x as n,y as o,z as e,L as $,R as v,J as C,P as g,C as M,Y as S,O as y,T as q,K as _,aq as U,Q as N,aT as z,ac as A,o as J,av as H,aU as Q,I as j,aV as Y,M as G}from"./vue-vendor-DfnFpxGJ.js";import{_ as V,u as W,b as D}from"./index-BdtiivzQ.js";import{s as b}from"./toast-BvwA7Mwb.js";import{L as X}from"./LogoTitle-CipNTyYU.js";import{T as Z}from"./ThemeToggle-DACcdK5F.js";import"./element-plus-CMedNaYf.js";import"./vendor-BDiMbLwQ.js";const ee={class:"glass-strong mb-4 rounded-xl p-3 shadow-xl sm:mb-6 sm:rounded-2xl sm:p-4 md:mb-8 md:rounded-3xl md:p-6",style:{"z-index":"10",position:"relative"}},te={class:"flex flex-col items-center justify-between gap-3 sm:flex-row sm:gap-4"},se={class:"flex w-full items-center justify-center gap-2 sm:w-auto sm:justify-start sm:gap-3 md:gap-4"},ae={class:"flex items-center gap-1 sm:gap-2"},re={class:"font-mono text-xs text-gray-400 dark:text-gray-500 sm:text-sm"},oe=["href"],ne={class:"flex items-center gap-2 sm:gap-4"},le={class:"flex items-center"},de={class:"user-menu-container relative"},ie={class:"hidden sm:inline"},ue={class:"border-b border-gray-100 px-4 py-3 dark:border-gray-700"},ce={class:"flex items-center justify-between text-sm"},me={class:"font-mono text-gray-700 dark:text-gray-300"},ge={key:0,class:"mt-2"},pe={class:"mb-2 flex items-center justify-between text-sm"},fe={class:"font-mono text-green-600 dark:text-green-400"},xe=["href"],ve={key:1,class:"mt-2 text-center text-xs text-gray-500 dark:text-gray-400"},ye={key:2,class:"mt-2 text-center"},be={key:"message",class:"inline-block rounded-lg border border-green-200 bg-green-100 px-3 py-1.5 dark:border-green-800 dark:bg-green-900/30"},ke={key:0,class:"modal fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4"},he={class:"modal-content mx-auto flex max-h-[90vh] w-full max-w-md flex-col p-4 sm:p-6 md:p-8"},we=["value"],_e={class:"flex gap-3 pt-4"},Ue=["disabled"],Ce={key:0,class:"loading-spinner mr-2"},Pe={key:1,class:"fas fa-save mr-2"},Ie={__name:"AppHeader",setup(h){const p=z(),u=W(),c=T(()=>u.user||{username:"Admin"}),a=T(()=>u.oemSettings||{}),w=T(()=>u.oemLoading),s=k({current:"...",latest:"",hasUpdate:!1,checkingUpdate:!1,lastChecked:null,releaseInfo:null,noUpdateMessage:!1}),l=k(!1),f=k(!1),x=k(!1),r=E({currentPassword:"",newPassword:"",confirmPassword:"",newUsername:""}),P=async()=>{if(!s.value.checkingUpdate){s.value.checkingUpdate=!0;try{const i=await D.get("/admin/check-updates");if(i.success){const t=i.data;s.value.current=t.current,s.value.latest=t.latest,s.value.hasUpdate=t.hasUpdate,s.value.releaseInfo=t.releaseInfo,s.value.lastChecked=new Date,localStorage.setItem("versionInfo",JSON.stringify({current:t.current,latest:t.latest,lastChecked:s.value.lastChecked,hasUpdate:t.hasUpdate,releaseInfo:t.releaseInfo})),t.hasUpdate||(s.value.noUpdateMessage=!0,setTimeout(()=>{s.value.noUpdateMessage=!1},3e3))}}catch(i){console.error("Error checking for updates:",i);const t=localStorage.getItem("versionInfo");if(t){const m=JSON.parse(t);s.value.current=m.current||s.value.current,s.value.latest=m.latest,s.value.hasUpdate=m.hasUpdate,s.value.releaseInfo=m.releaseInfo,s.value.lastChecked=new Date(m.lastChecked)}}finally{s.value.checkingUpdate=!1}}},B=()=>{r.currentPassword="",r.newPassword="",r.confirmPassword="",r.newUsername="",f.value=!0,l.value=!1},I=()=>{f.value=!1},K=async()=>{if(r.newPassword!==r.confirmPassword){b("两次输入的密码不一致","error");return}if(r.newPassword.length<8){b("新密码长度至少8位","error");return}x.value=!0;try{const i=await D.post("/web/auth/change-password",{currentPassword:r.currentPassword,newPassword:r.newPassword,newUsername:r.newUsername||void 0});if(i.success){const t=r.newUsername?"账户信息修改成功,请重新登录":"密码修改成功,请重新登录";b(t,"success"),I(),setTimeout(()=>{u.logout(),p.push("/login")},1500)}else b(i.message||"修改失败","error")}catch{b("修改密码失败","error")}finally{x.value=!1}},O=()=>{confirm("确定要退出登录吗?")&&(u.logout(),p.push("/login"),b("已安全退出","success")),l.value=!1},L=i=>{!i.target.closest(".user-menu-container")&&l.value&&(l.value=!1)};return R(()=>{P(),setInterval(()=>{P()},36e5),document.addEventListener("click",L)}),F(()=>{document.removeEventListener("click",L)}),(i,t)=>{var m;return o(),n(N,null,[e("div",ee,[e("div",te,[e("div",se,[v(X,{loading:w.value,"logo-src":a.value.siteIconData||a.value.siteIcon,subtitle:"管理后台",title:a.value.siteName,"title-class":"text-white dark:text-gray-100"},{"after-title":C(()=>{var d;return[e("div",ae,[e("span",re,"v"+g(s.value.current||"..."),1),s.value.hasUpdate?(o(),n("a",{key:0,class:"inline-flex animate-pulse items-center gap-1 rounded-full border border-green-600 bg-green-500 px-2 py-0.5 text-xs text-white transition-colors hover:bg-green-600",href:((d=s.value.releaseInfo)==null?void 0:d.htmlUrl)||"#",target:"_blank",title:"有新版本可用"},t[7]||(t[7]=[e("i",{class:"fas fa-arrow-up text-[10px]"},null,-1),e("span",null,"新版本",-1)]),8,oe)):$("",!0)])]}),_:1},8,["loading","logo-src","title"])]),e("div",ne,[e("div",le,[v(Z,{mode:"dropdown"})]),t[18]||(t[18]=e("div",{class:"h-8 w-px bg-gradient-to-b from-transparent via-gray-300 to-transparent opacity-50 dark:via-gray-600"},null,-1)),e("div",de,[e("button",{class:"user-menu-button flex items-center gap-2 rounded-2xl bg-gradient-to-r from-blue-500 to-blue-600 px-3 py-2 text-sm font-semibold text-white shadow-lg transition-all duration-200 hover:scale-105 hover:shadow-xl active:scale-95 sm:px-4 sm:py-2.5",onClick:t[0]||(t[0]=d=>l.value=!l.value)},[t[8]||(t[8]=e("i",{class:"fas fa-user-circle text-sm sm:text-base"},null,-1)),e("span",ie,g(c.value.username||"Admin"),1),e("i",{class:M(["fas fa-chevron-down ml-1 text-xs transition-transform duration-200",{"rotate-180":l.value}])},null,2)]),l.value?(o(),n("div",{key:0,class:"user-menu-dropdown absolute right-0 top-full mt-2 w-48 rounded-xl border border-gray-200 bg-white py-2 shadow-xl dark:border-gray-700 dark:bg-gray-800 sm:w-56",style:{"z-index":"999999"},onClick:t[2]||(t[2]=S(()=>{},["stop"]))},[e("div",ue,[e("div",ce,[t[9]||(t[9]=e("span",{class:"text-gray-500 dark:text-gray-400"},"当前版本",-1)),e("span",me,"v"+g(s.value.current||"..."),1)]),s.value.hasUpdate?(o(),n("div",ge,[e("div",pe,[t[10]||(t[10]=e("span",{class:"font-medium text-green-600 dark:text-green-400"},[e("i",{class:"fas fa-arrow-up mr-1"}),y("有新版本 ")],-1)),e("span",fe,"v"+g(s.value.latest),1)]),e("a",{class:"block w-full rounded-lg bg-green-500 px-3 py-1.5 text-center text-sm text-white transition-colors hover:bg-green-600",href:((m=s.value.releaseInfo)==null?void 0:m.htmlUrl)||"#",target:"_blank"},t[11]||(t[11]=[e("i",{class:"fas fa-external-link-alt mr-1"},null,-1),y("查看更新 ",-1)]),8,xe)])):s.value.checkingUpdate?(o(),n("div",ve,t[12]||(t[12]=[e("i",{class:"fas fa-spinner fa-spin mr-1"},null,-1),y("检查更新中... ",-1)]))):(o(),n("div",ye,[v(q,{mode:"out-in",name:"fade"},{default:C(()=>[s.value.noUpdateMessage?(o(),n("div",be,t[13]||(t[13]=[e("p",{class:"text-xs font-medium text-green-700 dark:text-green-400"},[e("i",{class:"fas fa-check-circle mr-1"}),y("当前已是最新版本 ")],-1)]))):(o(),n("button",{key:"button",class:"text-xs text-blue-500 transition-colors hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300",onClick:t[1]||(t[1]=d=>P())},t[14]||(t[14]=[e("i",{class:"fas fa-sync-alt mr-1"},null,-1),y("检查更新 ",-1)])))]),_:1})]))]),e("button",{class:"flex w-full items-center gap-3 px-4 py-3 text-left text-gray-700 transition-colors hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700",onClick:B},t[15]||(t[15]=[e("i",{class:"fas fa-key text-blue-500"},null,-1),e("span",null,"修改账户信息",-1)])),t[17]||(t[17]=e("hr",{class:"my-2 border-gray-200 dark:border-gray-700"},null,-1)),e("button",{class:"flex w-full items-center gap-3 px-4 py-3 text-left text-gray-700 transition-colors hover:bg-gray-50 dark:text-gray-300 dark:hover:bg-gray-700",onClick:O},t[16]||(t[16]=[e("i",{class:"fas fa-sign-out-alt text-red-500"},null,-1),e("span",null,"退出登录",-1)]))])):$("",!0)])])])]),f.value?(o(),n("div",ke,[e("div",he,[e("div",{class:"mb-6 flex items-center justify-between"},[t[20]||(t[20]=e("div",{class:"flex items-center gap-3"},[e("div",{class:"flex h-10 w-10 items-center justify-center rounded-xl bg-gradient-to-br from-blue-500 to-blue-600"},[e("i",{class:"fas fa-key text-white"})]),e("h3",{class:"text-xl font-bold text-gray-900 dark:text-gray-100"},"修改账户信息")],-1)),e("button",{class:"text-gray-400 transition-colors hover:text-gray-600 dark:hover:text-gray-300",onClick:I},t[19]||(t[19]=[e("i",{class:"fas fa-times text-xl"},null,-1)]))]),e("form",{class:"modal-scroll-content custom-scrollbar flex-1 space-y-6",onSubmit:S(K,["prevent"])},[e("div",null,[t[21]||(t[21]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"当前用户名",-1)),e("input",{class:"form-input w-full cursor-not-allowed bg-gray-100 dark:bg-gray-700 dark:text-gray-300",disabled:"",type:"text",value:c.value.username||"Admin"},null,8,we),t[22]||(t[22]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"}," 当前用户名,输入新用户名以修改 ",-1))]),e("div",null,[t[23]||(t[23]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新用户名",-1)),_(e("input",{"onUpdate:modelValue":t[3]||(t[3]=d=>r.newUsername=d),class:"form-input w-full",placeholder:"输入新用户名(留空保持不变)",type:"text"},null,512),[[U,r.newUsername]]),t[24]||(t[24]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},"留空表示不修改用户名",-1))]),e("div",null,[t[25]||(t[25]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"当前密码",-1)),_(e("input",{"onUpdate:modelValue":t[4]||(t[4]=d=>r.currentPassword=d),class:"form-input w-full",placeholder:"请输入当前密码",required:"",type:"password"},null,512),[[U,r.currentPassword]])]),e("div",null,[t[26]||(t[26]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"新密码",-1)),_(e("input",{"onUpdate:modelValue":t[5]||(t[5]=d=>r.newPassword=d),class:"form-input w-full",placeholder:"请输入新密码",required:"",type:"password"},null,512),[[U,r.newPassword]]),t[27]||(t[27]=e("p",{class:"mt-2 text-xs text-gray-500 dark:text-gray-400"},"密码长度至少8位",-1))]),e("div",null,[t[28]||(t[28]=e("label",{class:"mb-3 block text-sm font-semibold text-gray-700 dark:text-gray-300"},"确认新密码",-1)),_(e("input",{"onUpdate:modelValue":t[6]||(t[6]=d=>r.confirmPassword=d),class:"form-input w-full",placeholder:"请再次输入新密码",required:"",type:"password"},null,512),[[U,r.confirmPassword]])]),e("div",_e,[e("button",{class:"flex-1 rounded-xl bg-gray-100 px-6 py-3 font-semibold text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",type:"button",onClick:I}," 取消 "),e("button",{class:"btn btn-primary flex-1 px-6 py-3 font-semibold",disabled:x.value,type:"submit"},[x.value?(o(),n("div",Ce)):(o(),n("i",Pe)),y(" "+g(x.value?"保存中...":"保存修改"),1)],8,Ue)])],32)])])):$("",!0)],64)}}},Te=V(Ie,[["__scopeId","data-v-1d65ae6c"]]),$e={class:"mb-4 sm:mb-6"},Me={class:"block rounded-xl bg-white/10 p-2 backdrop-blur-sm dark:bg-gray-800/20 sm:hidden"},Ne=["value"],Ve=["value"],Le={class:"hidden flex-wrap gap-2 rounded-2xl bg-white/10 p-2 backdrop-blur-sm dark:bg-gray-800/20 sm:flex"},Se=["onClick"],Ae={class:"hidden md:inline"},je={class:"md:hidden"},De={__name:"TabBar",props:{activeTab:{type:String,required:!0}},emits:["tab-change"],setup(h){const p=[{key:"dashboard",name:"仪表板",shortName:"仪表板",icon:"fas fa-tachometer-alt"},{key:"apiKeys",name:"API Keys",shortName:"API",icon:"fas fa-key"},{key:"accounts",name:"账户管理",shortName:"账户",icon:"fas fa-user-circle"},{key:"tutorial",name:"使用教程",shortName:"教程",icon:"fas fa-graduation-cap"},{key:"settings",name:"其他设置",shortName:"设置",icon:"fas fa-cogs"}];return(u,c)=>(o(),n("div",$e,[e("div",Me,[e("select",{class:"focus:ring-primary-color w-full rounded-lg bg-white/90 px-4 py-3 font-semibold text-gray-700 focus:outline-none focus:ring-2 dark:bg-gray-800/90 dark:text-gray-200 dark:focus:ring-indigo-400",value:h.activeTab,onChange:c[0]||(c[0]=a=>u.$emit("tab-change",a.target.value))},[(o(),n(N,null,A(p,a=>e("option",{key:a.key,value:a.key},g(a.name),9,Ve)),64))],40,Ne)]),e("div",Le,[(o(),n(N,null,A(p,a=>e("button",{key:a.key,class:M(["tab-btn flex-1 px-3 py-2 text-xs font-semibold transition-all duration-300 sm:px-4 sm:py-3 sm:text-sm md:px-6",h.activeTab===a.key?"active":"text-gray-700 hover:bg-white/10 hover:text-gray-900 dark:text-gray-300 dark:hover:bg-gray-700/30 dark:hover:text-gray-100"]),onClick:w=>u.$emit("tab-change",a.key)},[e("i",{class:M(a.icon+" mr-1 sm:mr-2")},null,2),e("span",Ae,g(a.name),1),e("span",je,g(a.shortName||a.name),1)],10,Se)),64))])]))}},qe=V(De,[["__scopeId","data-v-2dada84c"]]),ze={class:"min-h-screen p-3 sm:p-4 md:p-6"},Be={class:"glass-strong rounded-xl p-3 shadow-xl sm:rounded-2xl sm:p-4 md:rounded-3xl md:p-6",style:{"z-index":"1","min-height":"calc(100vh - 120px)"}},Ke={class:"tab-content"},Oe={__name:"MainLayout",setup(h){const p=Q(),u=z(),c=k("dashboard"),a={dashboard:"/dashboard",apiKeys:"/api-keys",accounts:"/accounts",tutorial:"/tutorial",settings:"/settings"};J(()=>p.path,s=>{const l=Object.keys(a).find(f=>a[f]===s);l&&(c.value=l)},{immediate:!0});const w=s=>{c.value=s,u.push(a[s])};return(s,l)=>{const f=H("router-view");return o(),n("div",ze,[v(Te),e("div",Be,[v(qe,{"active-tab":c.value,onTabChange:w},null,8,["active-tab"]),e("div",Ke,[v(f,null,{default:C(({Component:x})=>[v(q,{mode:"out-in",name:"slide-up"},{default:C(()=>[(o(),j(Y,{include:["DashboardView","ApiKeysView"]},[(o(),j(G(x)))],1024))]),_:2},1024)]),_:1})])])])}}},Ge=V(Oe,[["__scopeId","data-v-8a08dab6"]]);export{Ge as default}; diff --git a/web/admin-spa/dist/assets/SettingsView-BaUN8Iwk.js b/web/admin-spa/dist/assets/SettingsView-BaUN8Iwk.js deleted file mode 100644 index 23e05d8e..00000000 --- a/web/admin-spa/dist/assets/SettingsView-BaUN8Iwk.js +++ /dev/null @@ -1,3 +0,0 @@ -import{aR as F,r as h,aW as O,q as T,x as d,z as t,L as f,u as s,K as S,aq as D,O as m,C as j,P as k,aY as C,y as c}from"./vue-vendor-DfnFpxGJ.js";import{s as y}from"./toast-BvwA7Mwb.js";import{b as N,_ as E}from"./index-BdtiivzQ.js";import"./element-plus-CMedNaYf.js";import"./vendor-BDiMbLwQ.js";const V=F("settings",()=>{const n=h({siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",updatedAt:null}),g=h(!1),p=h(!1),u=async()=>{g.value=!0;try{const r=await N.get("/admin/oem-settings");return r&&r.success&&(n.value={...n.value,...r.data},x()),r}catch(r){throw console.error("Failed to load OEM settings:",r),r}finally{g.value=!1}},a=async r=>{p.value=!0;try{const o=await N.put("/admin/oem-settings",r);return o&&o.success&&(n.value={...n.value,...o.data},x()),o}catch(o){throw console.error("Failed to save OEM settings:",o),o}finally{p.value=!1}},v=async()=>{const r={siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",updatedAt:null};return n.value={...r},await a(r)},x=()=>{if(n.value.siteName&&(document.title=`${n.value.siteName} - 管理后台`),n.value.siteIconData||n.value.siteIcon){const r=document.querySelector('link[rel="icon"]')||document.createElement("link");r.rel="icon",r.href=n.value.siteIconData||n.value.siteIcon,document.querySelector('link[rel="icon"]')||document.head.appendChild(r)}};return{oemSettings:n,loading:g,saving:p,loadOemSettings:u,saveOemSettings:a,resetOemSettings:v,applyOemSettings:x,formatDateTime:r=>r?new Date(r).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):"",validateIconFile:r=>{const o=[];return r.size>350*1024&&o.push("图标文件大小不能超过 350KB"),["image/x-icon","image/png","image/jpeg","image/jpg","image/svg+xml"].includes(r.type)||o.push("不支持的文件类型,请选择 .ico, .png, .jpg 或 .svg 文件"),{isValid:o.length===0,errors:o}},fileToBase64:r=>new Promise((o,i)=>{const e=new FileReader;e.onload=l=>o(l.target.result),e.onerror=i,e.readAsDataURL(r)})}}),R={class:"settings-container"},B={class:"card p-4 sm:p-6"},A={key:0,class:"py-12 text-center"},M={key:1,class:"table-container hidden sm:block"},U={class:"min-w-full"},$={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},q={class:"table-row"},z={class:"px-6 py-4"},L={class:"table-row"},P={class:"px-6 py-4"},G={class:"space-y-3"},K={key:0,class:"inline-flex items-center gap-3 rounded-lg bg-gray-50 p-3 dark:bg-gray-700"},J=["src"],W={class:"px-6 py-6",colspan:"2"},Y={class:"flex items-center justify-between"},H={class:"flex gap-3"},Q=["disabled"],X={key:0,class:"loading-spinner mr-2"},Z={key:1,class:"fas fa-save mr-2"},tt=["disabled"],et={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},st={key:2,class:"space-y-4 sm:hidden"},at={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-700"},rt={class:"space-y-2"},ot={class:"rounded-lg bg-gray-50 p-4 dark:bg-gray-700"},it={class:"space-y-3"},nt={key:0,class:"inline-flex w-full items-center gap-3 rounded-lg border border-gray-200 bg-white p-3 dark:border-gray-600 dark:bg-gray-800"},lt=["src"],dt={class:"flex flex-col gap-2"},ct={class:"space-y-3 pt-2"},gt=["disabled"],ut={key:0,class:"loading-spinner mr-2"},mt={key:1,class:"fas fa-save mr-2"},yt=["disabled"],pt={key:0,class:"text-center text-xs text-gray-500 dark:text-gray-400"},xt={__name:"SettingsView",setup(n){const g=V(),{loading:p,saving:u,oemSettings:a}=O(g),v=h();T(async()=>{try{await g.loadOemSettings()}catch{y("加载设置失败","error")}});const x=async()=>{try{const i={siteName:a.value.siteName,siteIcon:a.value.siteIcon,siteIconData:a.value.siteIconData},e=await g.saveOemSettings(i);e&&e.success?y("OEM设置保存成功","success"):y((e==null?void 0:e.message)||"保存失败","error")}catch{y("保存OEM设置失败","error")}},w=async()=>{if(confirm(`确定要重置为默认设置吗? - -这将清除所有自定义的网站名称和图标设置。`))try{const i=await g.resetOemSettings();i&&i.success?y("已重置为默认设置","success"):y("重置失败","error")}catch{y("重置失败","error")}},I=async i=>{const e=i.target.files[0];if(!e)return;const l=g.validateIconFile(e);if(!l.isValid){l.errors.forEach(b=>y(b,"error"));return}try{const b=await g.fileToBase64(e);a.value.siteIconData=b}catch{y("文件读取失败","error")}i.target.value=""},_=()=>{a.value.siteIcon="",a.value.siteIconData=""},r=()=>{console.warn("Icon failed to load")},o=g.formatDateTime;return(i,e)=>(c(),d("div",R,[t("div",B,[e[25]||(e[25]=t("div",{class:"mb-4 sm:mb-6"},[t("h3",{class:"mb-1 text-lg font-bold text-gray-900 dark:text-gray-100 sm:mb-2 sm:text-xl"}," 其他设置 "),t("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"},"自定义网站名称和图标")],-1)),s(p)?(c(),d("div",A,e[5]||(e[5]=[t("div",{class:"loading-spinner mx-auto mb-4"},null,-1),t("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载设置...",-1)]))):(c(),d("div",M,[t("table",U,[t("tbody",$,[t("tr",q,[e[7]||(e[7]=t("td",{class:"w-48 whitespace-nowrap px-6 py-4"},[t("div",{class:"flex items-center"},[t("div",{class:"mr-3 flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600"},[t("i",{class:"fas fa-font text-xs text-white"})]),t("div",null,[t("div",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," 网站名称 "),t("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"品牌标识")])])],-1)),t("td",z,[S(t("input",{"onUpdate:modelValue":e[0]||(e[0]=l=>s(a).siteName=l),class:"form-input w-full max-w-md dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",maxlength:"100",placeholder:"Claude Relay Service",type:"text"},null,512),[[D,s(a).siteName]]),e[6]||(e[6]=t("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 将显示在浏览器标题和页面头部 ",-1))])]),t("tr",L,[e[12]||(e[12]=t("td",{class:"w-48 whitespace-nowrap px-6 py-4"},[t("div",{class:"flex items-center"},[t("div",{class:"mr-3 flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600"},[t("i",{class:"fas fa-image text-xs text-white"})]),t("div",null,[t("div",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," 网站图标 "),t("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Favicon")])])],-1)),t("td",P,[t("div",G,[s(a).siteIconData||s(a).siteIcon?(c(),d("div",K,[t("img",{alt:"图标预览",class:"h-8 w-8",src:s(a).siteIconData||s(a).siteIcon,onError:r},null,40,J),e[9]||(e[9]=t("span",{class:"text-sm text-gray-600 dark:text-gray-400"},"当前图标",-1)),t("button",{class:"rounded-lg px-3 py-1 font-medium text-red-600 transition-colors hover:bg-red-50 hover:text-red-900",onClick:_},e[8]||(e[8]=[t("i",{class:"fas fa-trash mr-1"},null,-1),m("删除 ",-1)]))])):f("",!0),t("div",null,[t("input",{ref_key:"iconFileInput",ref:v,accept:".ico,.png,.jpg,.jpeg,.svg",class:"hidden",type:"file",onChange:I},null,544),t("button",{class:"btn btn-success px-4 py-2",onClick:e[1]||(e[1]=l=>i.$refs.iconFileInput.click())},e[10]||(e[10]=[t("i",{class:"fas fa-upload mr-2"},null,-1),m(" 上传图标 ",-1)])),e[11]||(e[11]=t("span",{class:"ml-3 text-xs text-gray-500 dark:text-gray-400"},"支持 .ico, .png, .jpg, .svg 格式,最大 350KB",-1))])])])]),t("tr",null,[t("td",W,[t("div",Y,[t("div",H,[t("button",{class:j(["btn btn-primary px-6 py-3",{"cursor-not-allowed opacity-50":s(u)}]),disabled:s(u),onClick:x},[s(u)?(c(),d("div",X)):(c(),d("i",Z)),m(" "+k(s(u)?"保存中...":"保存设置"),1)],10,Q),t("button",{class:"btn bg-gray-100 px-6 py-3 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:s(u),onClick:w},e[13]||(e[13]=[t("i",{class:"fas fa-undo mr-2"},null,-1),m(" 重置为默认 ",-1)]),8,tt)]),s(a).updatedAt?(c(),d("div",et,[e[14]||(e[14]=t("i",{class:"fas fa-clock mr-1"},null,-1)),m(" 最后更新:"+k(s(o)(s(a).updatedAt)),1)])):f("",!0)])])])])])])),s(p)?f("",!0):(c(),d("div",st,[t("div",at,[e[16]||(e[16]=C('

网站名称

品牌标识

',1)),t("div",rt,[S(t("input",{"onUpdate:modelValue":e[2]||(e[2]=l=>s(a).siteName=l),class:"form-input w-full text-sm dark:border-gray-500 dark:bg-gray-600 dark:text-gray-200",maxlength:"100",placeholder:"Claude Relay Service",type:"text"},null,512),[[D,s(a).siteName]]),e[15]||(e[15]=t("p",{class:"text-xs text-gray-500 dark:text-gray-400"},"将显示在浏览器标题和页面头部",-1))])]),t("div",ot,[e[22]||(e[22]=C('

网站图标

Favicon

',1)),t("div",it,[s(a).siteIconData||s(a).siteIcon?(c(),d("div",nt,[t("img",{alt:"图标预览",class:"h-8 w-8",src:s(a).siteIconData||s(a).siteIcon,onError:r},null,40,lt),e[18]||(e[18]=t("span",{class:"flex-1 text-sm text-gray-600 dark:text-gray-400"},"当前图标",-1)),t("button",{class:"rounded-lg px-3 py-1 text-sm font-medium text-red-600 transition-colors hover:bg-red-50 hover:text-red-900",onClick:_},e[17]||(e[17]=[t("i",{class:"fas fa-trash mr-1"},null,-1),m("删除 ",-1)]))])):f("",!0),t("input",{ref_key:"iconFileInput",ref:v,accept:"image/*",style:{display:"none"},type:"file",onChange:I},null,544),t("div",dt,[t("button",{class:"flex w-full items-center justify-center gap-2 rounded-lg border border-gray-200 bg-white px-4 py-2 text-sm text-gray-700 transition-colors hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",onClick:e[3]||(e[3]=l=>i.$refs.iconFileInput.click())},e[19]||(e[19]=[t("i",{class:"fas fa-upload"},null,-1),m(" 上传图标 ",-1)])),e[20]||(e[20]=t("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"或者输入图标URL:",-1)),S(t("input",{"onUpdate:modelValue":e[4]||(e[4]=l=>s(a).siteIcon=l),class:"form-input w-full text-sm dark:border-gray-500 dark:bg-gray-600 dark:text-gray-200",placeholder:"https://example.com/icon.png",type:"url"},null,512),[[D,s(a).siteIcon]])]),e[21]||(e[21]=t("p",{class:"text-xs text-gray-500 dark:text-gray-400"}," 支持 PNG、JPEG、GIF 格式,建议使用正方形图片 ",-1))])]),t("div",ct,[t("button",{class:"btn btn-primary w-full py-3 text-sm font-semibold",disabled:s(u),onClick:x},[s(u)?(c(),d("div",ut)):(c(),d("i",mt)),m(" "+k(s(u)?"保存中...":"保存设置"),1)],8,gt),t("button",{class:"btn w-full bg-gray-100 py-3 text-sm text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:s(u),onClick:w},e[23]||(e[23]=[t("i",{class:"fas fa-undo mr-2"},null,-1),m(" 重置为默认 ",-1)]),8,yt),s(a).updatedAt?(c(),d("div",pt,[e[24]||(e[24]=t("i",{class:"fas fa-clock mr-1"},null,-1)),m(" 最后更新:"+k(s(o)(s(a).updatedAt)),1)])):f("",!0)])]))])]))}},wt=E(xt,[["__scopeId","data-v-32a92c9b"]]);export{wt as default}; diff --git a/web/admin-spa/dist/assets/SettingsView-DRYQRRYU.js b/web/admin-spa/dist/assets/SettingsView-DRYQRRYU.js new file mode 100644 index 00000000..d44ce066 --- /dev/null +++ b/web/admin-spa/dist/assets/SettingsView-DRYQRRYU.js @@ -0,0 +1,3 @@ +import{aR as ie,r as m,aV as de,o as ue,q as ce,Z as ge,x as i,z as e,L as S,C as W,O as g,u as b,K as x,S as L,aq as A,P as h,al as O,Q as P,ac as B,aW as fe,aX as be,R as me,J as ye,T as ve,Y as xe,y as d}from"./vue-vendor-Ig-GgGwA.js";import{s as l}from"./toast-BvwA7Mwb.js";import{b as C,_ as pe}from"./index-CY9cPBXr.js";import"./element-plus-Bq6mBxnk.js";import"./vendor-BDiMbLwQ.js";const ke=ie("settings",()=>{const v=m({siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",updatedAt:null}),w=m(!1),E=m(!1),T=async()=>{w.value=!0;try{const a=await C.get("/admin/oem-settings");return a&&a.success&&(v.value={...v.value,...a.data},p()),a}catch(a){throw console.error("Failed to load OEM settings:",a),a}finally{w.value=!1}},f=async a=>{E.value=!0;try{const u=await C.put("/admin/oem-settings",a);return u&&u.success&&(v.value={...v.value,...u.data},p()),u}catch(u){throw console.error("Failed to save OEM settings:",u),u}finally{E.value=!1}},R=async()=>{const a={siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",updatedAt:null};return v.value={...a},await f(a)},p=()=>{if(v.value.siteName&&(document.title=`${v.value.siteName} - 管理后台`),v.value.siteIconData||v.value.siteIcon){const a=document.querySelector('link[rel="icon"]')||document.createElement("link");a.rel="icon",a.href=v.value.siteIconData||v.value.siteIcon,document.querySelector('link[rel="icon"]')||document.head.appendChild(a)}};return{oemSettings:v,loading:w,saving:E,loadOemSettings:T,saveOemSettings:f,resetOemSettings:R,applyOemSettings:p,formatDateTime:a=>a?new Date(a).toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}):"",validateIconFile:a=>{const u=[];return a.size>350*1024&&u.push("图标文件大小不能超过 350KB"),["image/x-icon","image/png","image/jpeg","image/jpg","image/svg+xml"].includes(a.type)||u.push("不支持的文件类型,请选择 .ico, .png, .jpg 或 .svg 文件"),{isValid:u.length===0,errors:u}},fileToBase64:a=>new Promise((u,D)=>{const c=new FileReader;c.onload=V=>u(V.target.result),c.onerror=D,c.readAsDataURL(a)})}}),he={class:"settings-container"},we={class:"card p-4 sm:p-6"},_e={class:"mb-6"},Se={class:"flex space-x-8"},Ce={key:0,class:"py-12 text-center"},Ie={key:1},De={class:"table-container hidden sm:block"},Ve={class:"min-w-full"},Te={class:"divide-y divide-gray-200/50 dark:divide-gray-600/50"},We={class:"table-row"},Ae={class:"px-6 py-4"},Ee={class:"table-row"},Ue={class:"px-6 py-4"},je={class:"space-y-3"},Ne={key:0,class:"inline-flex items-center gap-3 rounded-lg bg-gray-50 p-3 dark:bg-gray-700"},Re=["src"],Oe={class:"px-6 py-6",colspan:"2"},Pe={class:"flex items-center justify-between"},Fe={class:"flex gap-3"},$e=["disabled"],Me={key:0,class:"loading-spinner mr-2"},Le={key:1,class:"fas fa-save mr-2"},Be=["disabled"],qe={key:0,class:"text-sm text-gray-500 dark:text-gray-400"},ze={class:"mb-6 rounded-lg bg-white/80 p-6 shadow-lg backdrop-blur-sm dark:bg-gray-800/80"},Ke={class:"flex items-center justify-between"},He={class:"relative inline-flex cursor-pointer items-center"},Je={class:"mb-6 rounded-lg bg-white/80 p-6 shadow-lg backdrop-blur-sm dark:bg-gray-800/80"},Qe={class:"space-y-3"},Xe={class:"font-medium text-gray-700 dark:text-gray-300"},Ye={class:"ml-2 text-sm text-gray-500 dark:text-gray-400"},Ze={class:"relative inline-flex cursor-pointer items-center"},Ge=["onUpdate:modelValue"],et={class:"mb-6 rounded-lg bg-white/80 p-6 shadow-lg backdrop-blur-sm dark:bg-gray-800/80"},tt={class:"mb-4 flex items-center justify-between"},rt={key:0,class:"space-y-4"},st={class:"flex items-start justify-between"},at={class:"flex-1"},ot={class:"flex items-center"},lt={class:"font-semibold text-gray-800 dark:text-gray-200"},nt={class:"text-sm text-gray-500 dark:text-gray-400"},it={class:"mt-3 space-y-1 text-sm"},dt={class:"flex items-center text-gray-600 dark:text-gray-400"},ut={class:"truncate"},ct={key:0,class:"flex items-center text-gray-600 dark:text-gray-400"},gt={class:"ml-4 flex items-center space-x-2"},ft={class:"relative inline-flex cursor-pointer items-center"},bt=["checked","onChange"],mt=["onClick"],yt=["onClick"],vt=["onClick"],xt={key:1,class:"py-8 text-center text-gray-500 dark:text-gray-400"},pt={class:"rounded-lg bg-white/80 p-6 shadow-lg backdrop-blur-sm dark:bg-gray-800/80"},kt={class:"grid grid-cols-1 gap-4 md:grid-cols-3"},ht={class:"dark:to-gray-750 relative border-b border-gray-200 bg-gradient-to-r from-blue-50 to-indigo-50 px-6 py-5 dark:border-gray-700 dark:from-gray-800"},wt={class:"flex items-center justify-between"},_t={class:"flex items-center space-x-3"},St={class:"text-xl font-semibold text-gray-900 dark:text-white"},Ct={class:"mt-0.5 text-sm text-gray-600 dark:text-gray-400"},It={class:"p-6"},Dt={class:"space-y-5"},Vt={class:"relative"},Tt=["disabled"],Wt={key:0,class:"mt-1 text-xs text-amber-600 dark:text-amber-400"},At={class:"relative"},Et={key:0,class:"absolute inset-y-0 right-0 flex items-center pr-3"},Ut={key:1,class:"absolute inset-y-0 right-0 flex items-center pr-3"},jt={key:0,class:"mt-2 flex items-start rounded-lg bg-blue-50 p-3 dark:bg-blue-900/20"},Nt={class:"text-sm text-blue-700 dark:text-blue-300"},Rt={key:0,class:"rounded-xl border border-gray-200 bg-gray-50 p-4 dark:border-gray-700 dark:bg-gray-900/50"},Ot={class:"space-y-4"},Pt={class:"flex items-center justify-between"},Ft={class:"flex cursor-pointer items-center",for:"enableSign"},$t={key:0,class:"rounded-full bg-green-100 px-2 py-1 text-xs font-medium text-green-700 dark:bg-green-900/50 dark:text-green-400"},Mt={key:0},Lt={class:"border-t border-gray-200 bg-gray-50 px-6 py-4 dark:border-gray-700 dark:bg-gray-900/50"},Bt={class:"flex items-center justify-between"},qt={class:"flex space-x-3"},zt=["disabled"],Kt=["disabled"],Ht=Object.assign({name:"SettingsView"},{__name:"SettingsView",setup(v){const w=ke(),{loading:E,saving:T,oemSettings:f}=de(w),R=m(),p=m("branding"),o=m(!0),k=m(new AbortController),I=m(!1),a=m(!1),u=m(!1),D=m(!1),c=m({enabled:!1,platforms:[],notificationTypes:{accountAnomaly:!0,quotaWarning:!0,systemError:!0,securityAlert:!0},retrySettings:{maxRetries:3,retryDelay:1e3,timeout:1e4}}),V=m(!1),_=m(null),n=m({type:"wechat_work",name:"",url:"",enableSign:!1,secret:""}),F=ue(p,async r=>{o.value&&r==="webhook"&&await U()});ce(async()=>{try{await w.loadOemSettings(),p.value==="webhook"&&await U()}catch{l("加载设置失败","error")}}),ge(()=>{o.value=!1,k.value&&k.value.abort(),F&&F(),V.value&&(V.value=!1,_.value=null)});const U=async()=>{if(o.value)try{const r=await C.get("/admin/webhook/config",{signal:k.value.signal});r.success&&o.value&&(c.value=r.config)}catch(r){if(r.name==="AbortError"||!o.value)return;l("获取webhook配置失败","error"),console.error(r)}},j=async()=>{if(o.value)try{(await C.post("/admin/webhook/config",c.value,{signal:k.value.signal})).success&&o.value&&l("配置已保存","success")}catch(r){if(r.name==="AbortError"||!o.value)return;l("保存配置失败","error"),console.error(r)}},q=()=>{const r=n.value.url;if(!r){I.value=!1,a.value=!1;return}try{new URL(r),r.startsWith("http://")||r.startsWith("https://")?(I.value=!1,a.value=!0):(I.value=!0,a.value=!1)}catch{I.value=!0,a.value=!1}},z=async()=>{if(o.value){if(!n.value.url){l("请输入Webhook URL","error");return}if(I.value){l("请输入有效的Webhook URL","error");return}D.value=!0;try{let r;_.value?r=await C.put(`/admin/webhook/platforms/${_.value.id}`,n.value,{signal:k.value.signal}):r=await C.post("/admin/webhook/platforms",n.value,{signal:k.value.signal}),r.success&&o.value&&(l(_.value?"平台已更新":"平台已添加","success"),await U(),N())}catch(r){if(r.name==="AbortError"||!o.value)return;l(r.message||"操作失败","error"),console.error(r)}finally{o.value&&(D.value=!1)}}},K=r=>{_.value=r,n.value={...r},V.value=!0},H=async r=>{if(o.value&&confirm("确定要删除这个平台吗?"))try{(await C.delete(`/admin/webhook/platforms/${r}`,{signal:k.value.signal})).success&&o.value&&(l("平台已删除","success"),await U())}catch(t){if(t.name==="AbortError"||!o.value)return;l("删除失败","error"),console.error(t)}},J=async r=>{if(o.value)try{const t=await C.post(`/admin/webhook/platforms/${r}/toggle`,{},{signal:k.value.signal});t.success&&o.value&&(l(t.message,"success"),await U())}catch(t){if(t.name==="AbortError"||!o.value)return;l("操作失败","error"),console.error(t)}},Q=async r=>{if(o.value)try{(await C.post("/admin/webhook/test",{url:r.url,type:r.type,secret:r.secret,enableSign:r.enableSign},{signal:k.value.signal})).success&&o.value&&l("测试成功,webhook连接正常","success")}catch(t){if(t.name==="AbortError"||!o.value)return;l(t.error||t.message||"测试失败","error"),console.error(t)}},X=async()=>{if(o.value){if(!n.value.url){l("请先输入Webhook URL","error");return}if(I.value){l("请输入有效的Webhook URL","error");return}u.value=!0;try{(await C.post("/admin/webhook/test",n.value,{signal:k.value.signal})).success&&o.value&&l("测试成功,webhook连接正常","success")}catch(r){if(r.name==="AbortError"||!o.value)return;l(r.error||r.message||"测试失败","error"),console.error(r)}finally{o.value&&(u.value=!1)}}},Y=async()=>{if(o.value)try{(await C.post("/admin/webhook/test-notification",{},{signal:k.value.signal})).success&&o.value&&l("测试通知已发送","success")}catch(r){if(r.name==="AbortError"||!o.value)return;l("发送失败","error"),console.error(r)}},N=()=>{o.value&&(V.value=!1,setTimeout(()=>{o.value&&(_.value=null,n.value={type:"wechat_work",name:"",url:"",enableSign:!1,secret:""},I.value=!1,a.value=!1,u.value=!1,D.value=!1)},0))},$=r=>({wechat_work:"企业微信",dingtalk:"钉钉",feishu:"飞书",slack:"Slack",discord:"Discord",custom:"自定义"})[r]||r,Z=r=>({wechat_work:"fab fa-weixin text-green-600",dingtalk:"fas fa-comment-dots text-blue-500",feishu:"fas fa-dove text-blue-600",slack:"fab fa-slack text-purple-600",discord:"fab fa-discord text-indigo-600",custom:"fas fa-webhook text-gray-600"})[r]||"fas fa-bell",M=r=>({wechat_work:"请在企业微信群机器人设置中获取Webhook地址",dingtalk:"请在钉钉群机器人设置中获取Webhook地址",feishu:"请在飞书群机器人设置中获取Webhook地址",slack:"请在Slack应用的Incoming Webhooks中获取地址",discord:"请在Discord服务器的集成设置中创建Webhook",custom:"请输入完整的Webhook接收地址"})[r]||"",G=r=>({accountAnomaly:"账号异常",quotaWarning:"配额警告",systemError:"系统错误",securityAlert:"安全警报"})[r]||r,ee=r=>({accountAnomaly:"账号状态异常、认证失败等",quotaWarning:"API调用配额不足警告",systemError:"系统运行错误和故障",securityAlert:"安全相关的警报通知"})[r]||"",te=async()=>{try{const r={siteName:f.value.siteName,siteIcon:f.value.siteIcon,siteIconData:f.value.siteIconData},t=await w.saveOemSettings(r);t&&t.success?l("OEM设置保存成功","success"):l((t==null?void 0:t.message)||"保存失败","error")}catch{l("保存OEM设置失败","error")}},re=async()=>{if(confirm(`确定要重置为默认设置吗? + +这将清除所有自定义的网站名称和图标设置。`))try{const r=await w.resetOemSettings();r&&r.success?l("已重置为默认设置","success"):l("重置失败","error")}catch{l("重置失败","error")}},se=async r=>{const t=r.target.files[0];if(!t)return;const s=w.validateIconFile(t);if(!s.isValid){s.errors.forEach(y=>l(y,"error"));return}try{const y=await w.fileToBase64(t);f.value.siteIconData=y}catch{l("文件读取失败","error")}r.target.value=""},ae=()=>{f.value.siteIcon="",f.value.siteIconData=""},oe=()=>{console.warn("Icon failed to load")},le=w.formatDateTime;return(r,t)=>(d(),i(P,null,[e("div",he,[e("div",we,[t[45]||(t[45]=e("div",{class:"mb-4 sm:mb-6"},[e("h3",{class:"mb-1 text-lg font-bold text-gray-900 dark:text-gray-100 sm:mb-2 sm:text-xl"}," 系统设置 "),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-base"},"网站定制和通知配置")],-1)),e("div",_e,[e("nav",Se,[e("button",{class:W(["border-b-2 pb-2 text-sm font-medium transition-colors",p.value==="branding"?"border-blue-500 text-blue-600 dark:border-blue-400 dark:text-blue-400":"border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300"]),onClick:t[0]||(t[0]=s=>p.value="branding")},t[15]||(t[15]=[e("i",{class:"fas fa-palette mr-2"},null,-1),g(" 品牌设置 ",-1)]),2),e("button",{class:W(["border-b-2 pb-2 text-sm font-medium transition-colors",p.value==="webhook"?"border-blue-500 text-blue-600 dark:border-blue-400 dark:text-blue-400":"border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300"]),onClick:t[1]||(t[1]=s=>p.value="webhook")},t[16]||(t[16]=[e("i",{class:"fas fa-bell mr-2"},null,-1),g(" 通知设置 ",-1)]),2)])]),b(E)?(d(),i("div",Ce,t[17]||(t[17]=[e("div",{class:"loading-spinner mx-auto mb-4"},[e("p",{class:"text-gray-500 dark:text-gray-400"},"正在加载设置...")],-1)]))):(d(),i("div",Ie,[x(e("div",null,[e("div",De,[e("table",Ve,[e("tbody",Te,[e("tr",We,[t[19]||(t[19]=e("td",{class:"w-48 whitespace-nowrap px-6 py-4"},[e("div",{class:"flex items-center"},[e("div",{class:"mr-3 flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-blue-500 to-blue-600"},[e("i",{class:"fas fa-font text-xs text-white"})]),e("div",null,[e("div",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," 网站名称 "),e("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"品牌标识")])])],-1)),e("td",Ae,[x(e("input",{"onUpdate:modelValue":t[2]||(t[2]=s=>b(f).siteName=s),class:"form-input w-full max-w-md dark:border-gray-600 dark:bg-gray-700 dark:text-gray-200",maxlength:"100",placeholder:"Claude Relay Service",type:"text"},null,512),[[A,b(f).siteName]]),t[18]||(t[18]=e("p",{class:"mt-1 text-xs text-gray-500 dark:text-gray-400"}," 将显示在浏览器标题和页面头部 ",-1))])]),e("tr",Ee,[t[24]||(t[24]=e("td",{class:"w-48 whitespace-nowrap px-6 py-4"},[e("div",{class:"flex items-center"},[e("div",{class:"mr-3 flex h-8 w-8 items-center justify-center rounded-lg bg-gradient-to-br from-purple-500 to-purple-600"},[e("i",{class:"fas fa-image text-xs text-white"})]),e("div",null,[e("div",{class:"text-sm font-semibold text-gray-900 dark:text-gray-100"}," 网站图标 "),e("div",{class:"text-xs text-gray-500 dark:text-gray-400"},"Favicon")])])],-1)),e("td",Ue,[e("div",je,[b(f).siteIconData||b(f).siteIcon?(d(),i("div",Ne,[e("img",{alt:"图标预览",class:"h-8 w-8",src:b(f).siteIconData||b(f).siteIcon,onError:oe},null,40,Re),t[21]||(t[21]=e("span",{class:"text-sm text-gray-600 dark:text-gray-400"},"当前图标",-1)),e("button",{class:"rounded-lg px-3 py-1 font-medium text-red-600 transition-colors hover:bg-red-50 hover:text-red-900",onClick:ae},t[20]||(t[20]=[e("i",{class:"fas fa-trash mr-1"},null,-1),g("删除 ",-1)]))])):S("",!0),e("div",null,[e("input",{ref_key:"iconFileInput",ref:R,accept:".ico,.png,.jpg,.jpeg,.svg",class:"hidden",type:"file",onChange:se},null,544),e("button",{class:"btn btn-success px-4 py-2",onClick:t[3]||(t[3]=s=>r.$refs.iconFileInput.click())},t[22]||(t[22]=[e("i",{class:"fas fa-upload mr-2"},null,-1),g(" 上传图标 ",-1)])),t[23]||(t[23]=e("span",{class:"ml-3 text-xs text-gray-500 dark:text-gray-400"},"支持 .ico, .png, .jpg, .svg 格式,最大 350KB",-1))])])])]),e("tr",null,[e("td",Oe,[e("div",Pe,[e("div",Fe,[e("button",{class:W(["btn btn-primary px-6 py-3",{"cursor-not-allowed opacity-50":b(T)}]),disabled:b(T),onClick:te},[b(T)?(d(),i("div",Me)):(d(),i("i",Le)),g(" "+h(b(T)?"保存中...":"保存设置"),1)],10,$e),e("button",{class:"btn bg-gray-100 px-6 py-3 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:b(T),onClick:re},t[25]||(t[25]=[e("i",{class:"fas fa-undo mr-2"},null,-1),g(" 重置为默认 ",-1)]),8,Be)]),b(f).updatedAt?(d(),i("div",qe,[t[26]||(t[26]=e("i",{class:"fas fa-clock mr-1"},null,-1)),g(" 最后更新:"+h(b(le)(b(f).updatedAt)),1)])):S("",!0)])])])])])]),t[27]||(t[27]=e("div",{class:"space-y-4 sm:hidden"},null,-1))],512),[[L,p.value==="branding"]]),x(e("div",null,[e("div",ze,[e("div",Ke,[t[29]||(t[29]=e("div",null,[e("h2",{class:"text-lg font-semibold text-gray-800 dark:text-gray-200"}," 启用 Webhook 通知 "),e("p",{class:"mt-1 text-sm text-gray-600 dark:text-gray-400"}," 开启后,系统将按配置发送通知到指定平台 ")],-1)),e("label",He,[x(e("input",{"onUpdate:modelValue":t[4]||(t[4]=s=>c.value.enabled=s),class:"peer sr-only",type:"checkbox",onChange:j},null,544),[[O,c.value.enabled]]),t[28]||(t[28]=e("div",{class:"peer h-6 w-11 rounded-full bg-gray-200 after:absolute after:left-[2px] after:top-[2px] after:h-5 after:w-5 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-blue-600 peer-checked:after:translate-x-full peer-checked:after:border-white peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 dark:border-gray-600 dark:bg-gray-700 dark:peer-focus:ring-blue-800"},null,-1))])])]),e("div",Je,[t[31]||(t[31]=e("h2",{class:"mb-4 text-lg font-semibold text-gray-800 dark:text-gray-200"},"通知类型",-1)),e("div",Qe,[(d(!0),i(P,null,B(c.value.notificationTypes,(s,y)=>(d(),i("div",{key:y,class:"flex items-center justify-between"},[e("div",null,[e("span",Xe,h(G(y)),1),e("span",Ye,h(ee(y)),1)]),e("label",Ze,[x(e("input",{"onUpdate:modelValue":ne=>c.value.notificationTypes[y]=ne,class:"peer sr-only",type:"checkbox",onChange:j},null,40,Ge),[[O,c.value.notificationTypes[y]]]),t[30]||(t[30]=e("div",{class:"peer h-5 w-9 rounded-full bg-gray-200 after:absolute after:left-[2px] after:top-[2px] after:h-4 after:w-4 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-green-600 peer-checked:after:translate-x-full peer-checked:after:border-white dark:border-gray-600 dark:bg-gray-700"},null,-1))])]))),128))])]),e("div",et,[e("div",tt,[t[33]||(t[33]=e("h2",{class:"text-lg font-semibold text-gray-800 dark:text-gray-200"},"通知平台",-1)),e("button",{class:"rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700",onClick:t[5]||(t[5]=s=>V.value=!0)},t[32]||(t[32]=[e("i",{class:"fas fa-plus mr-2"},null,-1),g(" 添加平台 ",-1)]))]),c.value.platforms&&c.value.platforms.length>0?(d(),i("div",rt,[(d(!0),i(P,null,B(c.value.platforms,s=>(d(),i("div",{key:s.id,class:"rounded-lg border border-gray-200 p-4 dark:border-gray-700"},[e("div",st,[e("div",at,[e("div",ot,[e("i",{class:W(["mr-3 text-xl",Z(s.type)])},null,2),e("div",null,[e("h3",lt,h(s.name||$(s.type)),1),e("p",nt,h($(s.type)),1)])]),e("div",it,[e("div",dt,[t[34]||(t[34]=e("i",{class:"fas fa-link mr-2"},null,-1)),e("span",ut,h(s.url),1)]),s.enableSign?(d(),i("div",ct,t[35]||(t[35]=[e("i",{class:"fas fa-shield-alt mr-2"},null,-1),e("span",null,"已启用签名验证",-1)]))):S("",!0)])]),e("div",gt,[e("label",ft,[e("input",{checked:s.enabled,class:"peer sr-only",type:"checkbox",onChange:y=>J(s.id)},null,40,bt),t[36]||(t[36]=e("div",{class:"peer h-5 w-9 rounded-full bg-gray-200 after:absolute after:left-[2px] after:top-[2px] after:h-4 after:w-4 after:rounded-full after:border after:border-gray-300 after:bg-white after:transition-all after:content-[''] peer-checked:bg-green-600 peer-checked:after:translate-x-full peer-checked:after:border-white dark:border-gray-600 dark:bg-gray-700"},null,-1))]),e("button",{class:"rounded-lg bg-blue-100 p-2 text-blue-600 transition-colors hover:bg-blue-200 dark:bg-blue-900 dark:text-blue-400 dark:hover:bg-blue-800",title:"测试连接",onClick:y=>Q(s)},t[37]||(t[37]=[e("i",{class:"fas fa-vial"},null,-1)]),8,mt),e("button",{class:"rounded-lg bg-gray-100 p-2 text-gray-600 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-400 dark:hover:bg-gray-600",title:"编辑",onClick:y=>K(s)},t[38]||(t[38]=[e("i",{class:"fas fa-edit"},null,-1)]),8,yt),e("button",{class:"rounded-lg bg-red-100 p-2 text-red-600 transition-colors hover:bg-red-200 dark:bg-red-900 dark:text-red-400 dark:hover:bg-red-800",title:"删除",onClick:y=>H(s.id)},t[39]||(t[39]=[e("i",{class:"fas fa-trash"},null,-1)]),8,vt)])])]))),128))])):(d(),i("div",xt,' 暂无配置的通知平台,请点击"添加平台"按钮添加 '))]),e("div",pt,[t[43]||(t[43]=e("h2",{class:"mb-4 text-lg font-semibold text-gray-800 dark:text-gray-200"},"高级设置",-1)),e("div",kt,[e("div",null,[t[40]||(t[40]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300"}," 最大重试次数 ",-1)),x(e("input",{"onUpdate:modelValue":t[6]||(t[6]=s=>c.value.retrySettings.maxRetries=s),class:"mt-1 block w-full rounded-lg border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white sm:text-sm",max:"10",min:"0",type:"number",onChange:j},null,544),[[A,c.value.retrySettings.maxRetries,void 0,{number:!0}]])]),e("div",null,[t[41]||(t[41]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300"}," 重试延迟 (毫秒) ",-1)),x(e("input",{"onUpdate:modelValue":t[7]||(t[7]=s=>c.value.retrySettings.retryDelay=s),class:"mt-1 block w-full rounded-lg border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white sm:text-sm",max:"10000",min:"100",step:"100",type:"number",onChange:j},null,544),[[A,c.value.retrySettings.retryDelay,void 0,{number:!0}]])]),e("div",null,[t[42]||(t[42]=e("label",{class:"block text-sm font-medium text-gray-700 dark:text-gray-300"}," 超时时间 (毫秒) ",-1)),x(e("input",{"onUpdate:modelValue":t[8]||(t[8]=s=>c.value.retrySettings.timeout=s),class:"mt-1 block w-full rounded-lg border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-700 dark:text-white sm:text-sm",max:"30000",min:"1000",step:"1000",type:"number",onChange:j},null,544),[[A,c.value.retrySettings.timeout,void 0,{number:!0}]])])])]),e("div",{class:"mt-6 text-center"},[e("button",{class:"rounded-lg bg-green-600 px-6 py-3 text-white shadow-lg transition-all hover:bg-green-700 hover:shadow-xl",onClick:Y},t[44]||(t[44]=[e("i",{class:"fas fa-paper-plane mr-2"},null,-1),g(" 发送测试通知 ",-1)]))])],512),[[L,p.value==="webhook"]])]))])]),V.value?(d(),i("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-sm transition-all duration-300 ease-out",onClick:N},[e("div",{class:"relative mx-4 w-full max-w-2xl overflow-hidden rounded-2xl bg-white shadow-2xl transition-all duration-300 ease-out dark:bg-gray-800",onClick:t[14]||(t[14]=xe(()=>{},["stop"]))},[e("div",ht,[e("div",wt,[e("div",_t,[t[46]||(t[46]=e("div",{class:"flex h-10 w-10 items-center justify-center rounded-full bg-gradient-to-br from-blue-500 to-indigo-600 text-white shadow-lg"},[e("i",{class:"fas fa-bell"})],-1)),e("div",null,[e("h3",St,h(_.value?"编辑":"添加")+"通知平台 ",1),e("p",Ct," 配置"+h(_.value?"并更新":"新的")+"Webhook通知渠道 ",1)])]),e("button",{class:"rounded-lg p-2 text-gray-400 transition-colors hover:bg-gray-100 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",onClick:N},t[47]||(t[47]=[e("i",{class:"fas fa-times text-lg"},null,-1)]))])]),e("div",It,[e("div",Dt,[e("div",null,[t[51]||(t[51]=e("label",{class:"mb-2 flex items-center text-sm font-medium text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-layer-group mr-2 text-gray-400"}),g(" 平台类型 ")],-1)),e("div",Vt,[x(e("select",{"onUpdate:modelValue":t[9]||(t[9]=s=>n.value.type=s),class:"w-full appearance-none rounded-xl border border-gray-300 bg-white px-4 py-3 pr-10 text-gray-900 shadow-sm transition-all focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20 dark:border-gray-600 dark:bg-gray-700 dark:text-white",disabled:_.value},t[48]||(t[48]=[be('',6)]),8,Tt),[[fe,n.value.type]]),t[49]||(t[49]=e("div",{class:"pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3"},[e("i",{class:"fas fa-chevron-down text-gray-400"})],-1))]),_.value?(d(),i("p",Wt,t[50]||(t[50]=[e("i",{class:"fas fa-info-circle mr-1"},null,-1),g(" 编辑模式下不能更改平台类型 ",-1)]))):S("",!0)]),e("div",null,[t[52]||(t[52]=e("label",{class:"mb-2 flex items-center text-sm font-medium text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-tag mr-2 text-gray-400"}),g(" 名称 "),e("span",{class:"ml-2 text-xs text-gray-500"},"(可选)")],-1)),x(e("input",{"onUpdate:modelValue":t[10]||(t[10]=s=>n.value.name=s),class:"w-full rounded-xl border border-gray-300 bg-white px-4 py-3 text-gray-900 shadow-sm transition-all placeholder:text-gray-400 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder:text-gray-500",placeholder:"例如:运维群通知、开发测试群",type:"text"},null,512),[[A,n.value.name]])]),e("div",null,[t[56]||(t[56]=e("label",{class:"mb-2 flex items-center text-sm font-medium text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-link mr-2 text-gray-400"}),g(" Webhook URL "),e("span",{class:"ml-1 text-xs text-red-500"},"*")],-1)),e("div",At,[x(e("input",{"onUpdate:modelValue":t[11]||(t[11]=s=>n.value.url=s),class:W(["w-full rounded-xl border border-gray-300 bg-white px-4 py-3 pr-10 font-mono text-sm text-gray-900 shadow-sm transition-all placeholder:text-gray-400 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20 dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder:text-gray-500",{"border-red-500 focus:border-red-500 focus:ring-red-500/20":I.value,"border-green-500 focus:border-green-500 focus:ring-green-500/20":a.value}]),placeholder:"https://...",required:"",type:"url",onInput:q},null,34),[[A,n.value.url]]),a.value?(d(),i("div",Et,t[53]||(t[53]=[e("i",{class:"fas fa-check-circle text-green-500"},null,-1)]))):S("",!0),I.value?(d(),i("div",Ut,t[54]||(t[54]=[e("i",{class:"fas fa-exclamation-circle text-red-500"},null,-1)]))):S("",!0)]),M(n.value.type)?(d(),i("div",jt,[t[55]||(t[55]=e("i",{class:"fas fa-info-circle mr-2 mt-0.5 text-blue-600 dark:text-blue-400"},null,-1)),e("p",Nt,h(M(n.value.type)),1)])):S("",!0)]),n.value.type==="dingtalk"||n.value.type==="feishu"?(d(),i("div",Rt,[e("div",Ot,[e("div",Pt,[e("label",Ft,[x(e("input",{id:"enableSign","onUpdate:modelValue":t[12]||(t[12]=s=>n.value.enableSign=s),class:"h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-2 focus:ring-blue-500 focus:ring-offset-0",type:"checkbox"},null,512),[[O,n.value.enableSign]]),t[57]||(t[57]=e("span",{class:"ml-3 flex items-center text-sm font-medium text-gray-700 dark:text-gray-300"},[e("i",{class:"fas fa-shield-alt mr-2 text-gray-400"}),g(" 启用签名验证 ")],-1))]),n.value.enableSign?(d(),i("span",$t," 已启用 ")):S("",!0)]),me(ve,{"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 -translate-y-2","enter-to-class":"opacity-100 translate-y-0","leave-active-class":"transition-all duration-150 ease-in","leave-from-class":"opacity-100 translate-y-0","leave-to-class":"opacity-0 -translate-y-2"},{default:ye(()=>[n.value.enableSign?(d(),i("div",Mt,[t[58]||(t[58]=e("label",{class:"mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"}," 签名密钥 ",-1)),x(e("input",{"onUpdate:modelValue":t[13]||(t[13]=s=>n.value.secret=s),class:"w-full rounded-xl border border-gray-300 bg-white px-4 py-3 font-mono text-sm text-gray-900 shadow-sm transition-all placeholder:text-gray-400 focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-500/20 dark:border-gray-600 dark:bg-gray-800 dark:text-white dark:placeholder:text-gray-500",placeholder:"SEC...",type:"text"},null,512),[[A,n.value.secret]])])):S("",!0)]),_:1})])])):S("",!0)])]),e("div",Lt,[e("div",Bt,[t[60]||(t[60]=e("div",{class:"text-xs text-gray-500 dark:text-gray-400"},[e("i",{class:"fas fa-asterisk mr-1 text-red-500"}),g(" 必填项 ")],-1)),e("div",qt,[e("button",{class:"group flex items-center rounded-xl border border-gray-300 bg-white px-4 py-2.5 text-sm font-medium text-gray-700 shadow-sm transition-all hover:bg-gray-50 hover:shadow-md dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700",onClick:N},t[59]||(t[59]=[e("i",{class:"fas fa-times mr-2 transition-transform group-hover:scale-110"},null,-1),g(" 取消 ",-1)])),e("button",{class:"group flex items-center rounded-xl border border-blue-200 bg-blue-50 px-4 py-2.5 text-sm font-medium text-blue-700 shadow-sm transition-all hover:bg-blue-100 hover:shadow-md dark:border-blue-800 dark:bg-blue-900/50 dark:text-blue-300 dark:hover:bg-blue-900/70",disabled:u.value,onClick:X},[e("i",{class:W(["mr-2 transition-transform",u.value?"fas fa-spinner fa-spin":"fas fa-vial group-hover:scale-110"])},null,2),g(" "+h(u.value?"测试中...":"测试连接"),1)],8,zt),e("button",{class:"group flex items-center rounded-xl bg-gradient-to-r from-blue-600 to-indigo-600 px-5 py-2.5 text-sm font-medium text-white shadow-md transition-all hover:from-blue-700 hover:to-indigo-700 hover:shadow-lg disabled:cursor-not-allowed disabled:from-gray-400 disabled:to-gray-500",disabled:!n.value.url||D.value,onClick:z},[e("i",{class:W(["mr-2 transition-transform",D.value?"fas fa-spinner fa-spin":"fas fa-save group-hover:scale-110"])},null,2),g(" "+h(D.value?"保存中...":_.value?"保存修改":"添加平台"),1)],8,Kt)])])])])])):S("",!0)],64))}}),Gt=pe(Ht,[["__scopeId","data-v-44082597"]]);export{Gt as default}; diff --git a/web/admin-spa/dist/assets/SettingsView-B6pg4BZM.css b/web/admin-spa/dist/assets/SettingsView-DmJWeqhD.css similarity index 52% rename from web/admin-spa/dist/assets/SettingsView-B6pg4BZM.css rename to web/admin-spa/dist/assets/SettingsView-DmJWeqhD.css index c34a07bf..137d1473 100644 --- a/web/admin-spa/dist/assets/SettingsView-B6pg4BZM.css +++ b/web/admin-spa/dist/assets/SettingsView-DmJWeqhD.css @@ -1 +1 @@ -.settings-container[data-v-32a92c9b]{min-height:calc(100vh - 300px)}.card[data-v-32a92c9b]{background:#fff;border-radius:12px;box-shadow:0 2px 12px #0000001a;border:1px solid #e5e7eb}:root.dark .card[data-v-32a92c9b]{background:#1f2937;border:1px solid #374151;box-shadow:0 2px 12px #0000004d}.table-container[data-v-32a92c9b]{overflow:hidden;border-radius:8px;border:1px solid #f3f4f6}:root.dark .table-container[data-v-32a92c9b]{border:1px solid #4b5563}.table-row[data-v-32a92c9b]{transition:background-color .2s ease}.table-row[data-v-32a92c9b]:hover{background-color:#f9fafb}:root.dark .table-row[data-v-32a92c9b]:hover{background-color:#374151}.form-input[data-v-32a92c9b]{width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));padding:.5rem 1rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.form-input[data-v-32a92c9b]:focus{border-color:transparent;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn[data-v-32a92c9b]{display:inline-flex;align-items:center;justify-content:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn[data-v-32a92c9b]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-offset-width: 2px}.btn-primary[data-v-32a92c9b]{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-primary[data-v-32a92c9b]:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.btn-primary[data-v-32a92c9b]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn-success[data-v-32a92c9b]{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-success[data-v-32a92c9b]:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.btn-success[data-v-32a92c9b]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(34 197 94 / var(--tw-ring-opacity, 1))}.loading-spinner[data-v-32a92c9b]{height:1.25rem;width:1.25rem}@keyframes spin-32a92c9b{to{transform:rotate(360deg)}}.loading-spinner[data-v-32a92c9b]{animation:spin-32a92c9b 1s linear infinite;border-radius:9999px;border-width:2px;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-border-opacity: 1;border-top-color:rgb(37 99 235 / var(--tw-border-opacity, 1))} +.settings-container[data-v-44082597]{min-height:calc(100vh - 300px)}.card[data-v-44082597]{background:#fff;border-radius:12px;box-shadow:0 2px 12px #0000001a;border:1px solid #e5e7eb}:root.dark .card[data-v-44082597]{background:#1f2937;border:1px solid #374151;box-shadow:0 2px 12px #0000004d}.table-container[data-v-44082597]{overflow:hidden;border-radius:8px;border:1px solid #f3f4f6}:root.dark .table-container[data-v-44082597]{border:1px solid #4b5563}.table-row[data-v-44082597]{transition:background-color .2s ease}.table-row[data-v-44082597]:hover{background-color:#f9fafb}:root.dark .table-row[data-v-44082597]:hover{background-color:#374151}.form-input[data-v-44082597]{width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));padding:.5rem 1rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.form-input[data-v-44082597]:focus{border-color:transparent;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn[data-v-44082597]{display:inline-flex;align-items:center;justify-content:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn[data-v-44082597]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-offset-width: 2px}.btn-primary[data-v-44082597]{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-primary[data-v-44082597]:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.btn-primary[data-v-44082597]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn-success[data-v-44082597]{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-success[data-v-44082597]:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.btn-success[data-v-44082597]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(34 197 94 / var(--tw-ring-opacity, 1))}.loading-spinner[data-v-44082597]{height:1.25rem;width:1.25rem}@keyframes spin-44082597{to{transform:rotate(360deg)}}.loading-spinner[data-v-44082597]{animation:spin-44082597 1s linear infinite;border-radius:9999px;border-width:2px;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-border-opacity: 1;border-top-color:rgb(37 99 235 / var(--tw-border-opacity, 1))} diff --git a/web/admin-spa/dist/assets/ThemeToggle-DACcdK5F.js b/web/admin-spa/dist/assets/ThemeToggle-Bb-3yEk7.js similarity index 94% rename from web/admin-spa/dist/assets/ThemeToggle-DACcdK5F.js rename to web/admin-spa/dist/assets/ThemeToggle-Bb-3yEk7.js index 35e19b78..2cd19593 100644 --- a/web/admin-spa/dist/assets/ThemeToggle-DACcdK5F.js +++ b/web/admin-spa/dist/assets/ThemeToggle-Bb-3yEk7.js @@ -1 +1 @@ -import{c as f,x as s,y as t,L as u,R as k,J as v,u as o,T as g,z as e,C as d,Q as p,ac as y,P as b}from"./vue-vendor-DfnFpxGJ.js";import{_ as T,a as w}from"./index-BdtiivzQ.js";const M={class:"theme-toggle-container"},C=["title"],L={key:"sun",class:"fas fa-sun"},x={key:"moon",class:"fas fa-moon"},B={key:"auto",class:"fas fa-circle-half-stroke"},S={key:1,class:"theme-switch-wrapper"},N=["title"],V={class:"switch-handle"},z={class:"handle-icon"},$={key:0,class:"fas fa-sun"},D={key:1,class:"fas fa-moon"},E={key:2,class:"fas fa-circle-half-stroke"},F={key:2,class:"theme-segmented"},I=["title","onClick"],J={key:0,class:"ml-1 hidden sm:inline"},O={__name:"ThemeToggle",props:{mode:{type:String,default:"compact",validator:l=>["compact","dropdown","segmented"].includes(l)},showLabel:{type:Boolean,default:!1}},setup(l){const a=w(),h=[{value:"light",label:"浅色模式",shortLabel:"浅色",icon:"fas fa-sun"},{value:"dark",label:"深色模式",shortLabel:"深色",icon:"fas fa-moon"},{value:"auto",label:"跟随系统",shortLabel:"自动",icon:"fas fa-circle-half-stroke"}],m=f(()=>{const n=h.find(i=>i.value===a.themeMode);return n?`点击切换主题 - ${n.label}`:"切换主题"}),r=()=>{a.cycleThemeMode()},_=n=>{a.setThemeMode(n)};return(n,i)=>(t(),s("div",M,[l.mode==="compact"?(t(),s("button",{key:0,class:"theme-toggle-button",title:m.value,onClick:r},[k(g,{mode:"out-in",name:"fade"},{default:v(()=>[o(a).themeMode==="light"?(t(),s("i",L)):o(a).themeMode==="dark"?(t(),s("i",x)):(t(),s("i",B))]),_:1})],8,C)):l.mode==="dropdown"?(t(),s("div",S,[e("button",{class:d(["theme-switch",{"is-dark":o(a).themeMode==="dark","is-auto":o(a).themeMode==="auto"}]),title:m.value,onClick:r},[i[0]||(i[0]=e("div",{class:"switch-bg"},[e("div",{class:"stars"},[e("span"),e("span"),e("span")]),e("div",{class:"clouds"},[e("span"),e("span")])],-1)),e("div",V,[e("div",z,[o(a).themeMode==="light"?(t(),s("i",$)):o(a).themeMode==="dark"?(t(),s("i",D)):(t(),s("i",E))])])],10,N)])):l.mode==="segmented"?(t(),s("div",F,[(t(),s(p,null,y(h,c=>e("button",{key:c.value,class:d(["theme-segment",{active:o(a).themeMode===c.value}]),title:c.label,onClick:P=>_(c.value)},[e("i",{class:d(c.icon)},null,2),l.showLabel?(t(),s("span",J,b(c.shortLabel),1)):u("",!0)],10,I)),64))])):u("",!0)]))}},j=T(O,[["__scopeId","data-v-58747959"]]);export{j as T}; +import{c as f,x as s,y as t,L as u,R as k,J as v,u as o,T as g,z as e,C as d,Q as p,ac as y,P as b}from"./vue-vendor-Ig-GgGwA.js";import{_ as T,a as w}from"./index-CY9cPBXr.js";const M={class:"theme-toggle-container"},C=["title"],L={key:"sun",class:"fas fa-sun"},x={key:"moon",class:"fas fa-moon"},B={key:"auto",class:"fas fa-circle-half-stroke"},S={key:1,class:"theme-switch-wrapper"},N=["title"],V={class:"switch-handle"},z={class:"handle-icon"},$={key:0,class:"fas fa-sun"},D={key:1,class:"fas fa-moon"},E={key:2,class:"fas fa-circle-half-stroke"},F={key:2,class:"theme-segmented"},I=["title","onClick"],J={key:0,class:"ml-1 hidden sm:inline"},O={__name:"ThemeToggle",props:{mode:{type:String,default:"compact",validator:l=>["compact","dropdown","segmented"].includes(l)},showLabel:{type:Boolean,default:!1}},setup(l){const a=w(),h=[{value:"light",label:"浅色模式",shortLabel:"浅色",icon:"fas fa-sun"},{value:"dark",label:"深色模式",shortLabel:"深色",icon:"fas fa-moon"},{value:"auto",label:"跟随系统",shortLabel:"自动",icon:"fas fa-circle-half-stroke"}],m=f(()=>{const n=h.find(i=>i.value===a.themeMode);return n?`点击切换主题 - ${n.label}`:"切换主题"}),r=()=>{a.cycleThemeMode()},_=n=>{a.setThemeMode(n)};return(n,i)=>(t(),s("div",M,[l.mode==="compact"?(t(),s("button",{key:0,class:"theme-toggle-button",title:m.value,onClick:r},[k(g,{mode:"out-in",name:"fade"},{default:v(()=>[o(a).themeMode==="light"?(t(),s("i",L)):o(a).themeMode==="dark"?(t(),s("i",x)):(t(),s("i",B))]),_:1})],8,C)):l.mode==="dropdown"?(t(),s("div",S,[e("button",{class:d(["theme-switch",{"is-dark":o(a).themeMode==="dark","is-auto":o(a).themeMode==="auto"}]),title:m.value,onClick:r},[i[0]||(i[0]=e("div",{class:"switch-bg"},[e("div",{class:"stars"},[e("span"),e("span"),e("span")]),e("div",{class:"clouds"},[e("span"),e("span")])],-1)),e("div",V,[e("div",z,[o(a).themeMode==="light"?(t(),s("i",$)):o(a).themeMode==="dark"?(t(),s("i",D)):(t(),s("i",E))])])],10,N)])):l.mode==="segmented"?(t(),s("div",F,[(t(),s(p,null,y(h,c=>e("button",{key:c.value,class:d(["theme-segment",{active:o(a).themeMode===c.value}]),title:c.label,onClick:P=>_(c.value)},[e("i",{class:d(c.icon)},null,2),l.showLabel?(t(),s("span",J,b(c.shortLabel),1)):u("",!0)],10,I)),64))])):u("",!0)]))}},j=T(O,[["__scopeId","data-v-58747959"]]);export{j as T}; diff --git a/web/admin-spa/dist/assets/ThemeToggle-BbfeH87u.css b/web/admin-spa/dist/assets/ThemeToggle-BbfeH87u.css deleted file mode 100644 index 759a6923..00000000 --- a/web/admin-spa/dist/assets/ThemeToggle-BbfeH87u.css +++ /dev/null @@ -1 +0,0 @@ -.theme-toggle-container[data-v-58747959]{position:relative;display:inline-flex;align-items:center}.theme-toggle-button[data-v-58747959]{display:flex;align-items:center;justify-content:center;height:2.25rem;width:2.25rem;border-radius:9999px;background-color:#fffc}.theme-toggle-button[data-v-58747959]:is(.dark *){background-color:#1f2937cc}.theme-toggle-button[data-v-58747959]:hover{background-color:#ffffffe6}.theme-toggle-button[data-v-58747959]:hover:is(.dark *){background-color:#374151e6}.theme-toggle-button[data-v-58747959]{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.theme-toggle-button[data-v-58747959]:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.theme-toggle-button[data-v-58747959]{border-width:1px;border-color:#e5e7eb80}.theme-toggle-button[data-v-58747959]:is(.dark *){border-color:#4b556380}.theme-toggle-button[data-v-58747959]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-backdrop-blur: blur(4px);-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)}.theme-toggle-button[data-v-58747959]:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.theme-toggle-button[data-v-58747959]:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.theme-toggle-button[data-v-58747959]{position:relative;overflow:hidden}.theme-toggle-button[data-v-58747959]:before{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;border-radius:inherit;background:conic-gradient(from 180deg at 50% 50%,#3b82f633,#9333ea33,#3b82f633);opacity:0;transition:opacity .3s ease;pointer-events:none;animation:rotate-58747959 3s linear infinite}@keyframes rotate-58747959{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.theme-toggle-button[data-v-58747959]:hover:before{opacity:.6}.theme-toggle-button i[data-v-58747959]{font-size:1rem;line-height:1.5rem;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));transition:all .3s cubic-bezier(.68,-.55,.265,1.55)}.theme-toggle-button:hover i[data-v-58747959]{transform:rotate(180deg) scale(1.1)}.theme-toggle-button i.fa-sun[data-v-58747959]{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.theme-toggle-button i.fa-moon[data-v-58747959]{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.theme-toggle-button i.fa-circle-half-stroke[data-v-58747959]{background:linear-gradient(90deg,#60a5fa,#2563eb);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.theme-switch-wrapper[data-v-58747959]{display:inline-flex;align-items:center}.theme-switch[data-v-58747959]{position:relative;width:76px;height:38px;border-radius:50px;padding:4px;cursor:pointer;transition:all .4s cubic-bezier(.68,-.55,.265,1.55);background:linear-gradient(135deg,#667eea,#764ba2);border:2px solid rgba(255,255,255,.1);box-shadow:0 4px 15px #667eea4d,inset 0 1px 2px #0000001a;overflow:hidden;display:flex;align-items:center}.theme-switch[data-v-58747959]:hover{transform:scale(1.05);box-shadow:0 6px 20px #667eea66,inset 0 1px 2px #0000001a}.theme-switch[data-v-58747959]:active{transform:scale(.98)}.theme-switch.is-dark[data-v-58747959]{background:linear-gradient(135deg,#1e293b,#334155);border-color:#94a3b833;box-shadow:0 4px 15px #00000080,inset 0 1px 2px #ffffff0d}.theme-switch.is-dark[data-v-58747959]:hover{box-shadow:0 6px 20px #0009,inset 0 1px 2px #ffffff0d}.theme-switch.is-auto[data-v-58747959]{background:linear-gradient(135deg,#c4b5fd,#a78bfa 15%,#818cf8 40%,#6366f1 60%,#4f46e5 85%,#4338ca);border-color:#fff3;position:relative;overflow:hidden;background-size:120% 120%;background-position:center;box-shadow:0 4px 15px #8b5cf640,inset 0 1px 3px #0000001a,inset 0 -1px 3px #0000001a}.theme-switch.is-auto[data-v-58747959]:before{content:"";position:absolute;left:50%;top:10%;bottom:10%;width:1px;background:linear-gradient(to bottom,transparent,rgba(255,255,255,.3),transparent);transform:translate(-50%);pointer-events:none}.switch-bg[data-v-58747959]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;overflow:hidden;pointer-events:none}.stars[data-v-58747959]{position:absolute;width:100%;height:100%;opacity:0;transition:opacity .4s ease}.theme-switch.is-dark .stars[data-v-58747959]{opacity:1}.stars span[data-v-58747959]{position:absolute;display:block;width:2px;height:2px;background:#fff;border-radius:50%;box-shadow:0 0 2px #fff;animation:twinkle-58747959 3s infinite}.stars span[data-v-58747959]:nth-child(1){top:25%;left:20%;animation-delay:0s}.stars span[data-v-58747959]:nth-child(2){top:40%;left:40%;animation-delay:1s}.stars span[data-v-58747959]:nth-child(3){top:60%;left:25%;animation-delay:2s}@keyframes twinkle-58747959{0%,to{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1)}}.clouds[data-v-58747959]{position:absolute;width:100%;height:100%;opacity:0;transition:opacity .4s ease}.theme-switch:not(.is-dark):not(.is-auto) .clouds[data-v-58747959]{opacity:1}.clouds span[data-v-58747959]{position:absolute;background:#fff6;border-radius:100px}.clouds span[data-v-58747959]:nth-child(1){width:20px;height:8px;top:40%;left:15%;animation:float-58747959 4s infinite ease-in-out}.clouds span[data-v-58747959]:nth-child(2){width:15px;height:6px;top:60%;left:35%;animation:float-58747959 4s infinite ease-in-out;animation-delay:1s}@keyframes float-58747959{0%,to{transform:translate(0)}50%{transform:translate(5px)}}.switch-handle[data-v-58747959]{position:absolute;width:30px;height:30px;background:#fff;border-radius:50%;transition:all .4s cubic-bezier(.68,-.55,.265,1.55);box-shadow:0 2px 8px #0003,0 0 0 1px #0000000d;display:flex;align-items:center;justify-content:center;top:50%;transform:translateY(-50%) translate(0);left:4px}.theme-switch.is-dark .switch-handle[data-v-58747959]{transform:translateY(-50%) translate(38px);background:linear-gradient(135deg,#1e293b,#475569);box-shadow:0 2px 8px #0006,0 0 0 1px #ffffff1a}.theme-switch.is-auto .switch-handle[data-v-58747959]{transform:translateY(-50%) translate(19px);background:#ffffff26;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.3);box-shadow:0 4px 12px #0000001a,inset 0 0 8px #fff3}.handle-icon[data-v-58747959]{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.handle-icon i[data-v-58747959]{font-size:14px;transition:all .3s ease}.handle-icon .fa-sun[data-v-58747959]{color:#f59e0b;filter:drop-shadow(0 0 3px rgba(245,158,11,.5))}.handle-icon .fa-moon[data-v-58747959]{color:#fbbf24;filter:drop-shadow(0 0 3px rgba(251,191,36,.5))}.handle-icon .fa-circle-half-stroke[data-v-58747959]{color:#ffffffe6;filter:drop-shadow(0 0 4px rgba(167,139,250,.5));font-size:15px}.theme-switch:hover .switch-handle[data-v-58747959]{animation:bounce-58747959 .5s ease}@keyframes bounce-58747959{0%,to{transform:translateY(-50%) translate(var(--handle-x, 0))}50%{transform:translateY(calc(-50% - 3px)) translate(var(--handle-x, 0))}}.theme-switch.is-dark:hover .switch-handle[data-v-58747959]{--handle-x: 38px}.theme-switch.is-auto:hover .switch-handle[data-v-58747959]{--handle-x: 19px}.theme-segmented[data-v-58747959]{display:inline-flex;--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.theme-segmented[data-v-58747959]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.theme-segmented[data-v-58747959]{border-radius:9999px;padding:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.theme-segmented[data-v-58747959]:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.theme-segmented[data-v-58747959]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.theme-segment[data-v-58747959]{padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.theme-segment[data-v-58747959]:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.theme-segment[data-v-58747959]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;border-radius:9999px;display:flex;align-items:center;gap:.25rem;cursor:pointer;position:relative}.theme-segment[data-v-58747959]:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.theme-segment[data-v-58747959]:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.theme-segment[data-v-58747959]:hover{background-color:#ffffff4d}.theme-segment[data-v-58747959]:hover:is(.dark *){background-color:#4b55634d}.theme-segment[data-v-58747959]:hover{transform:scale(1.02)}.theme-segment.active[data-v-58747959]{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.theme-segment.active[data-v-58747959]:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.theme-segment.active[data-v-58747959]{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.theme-segment.active[data-v-58747959]:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.theme-segment.active[data-v-58747959]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.theme-segment i[data-v-58747959]{font-size:.75rem;line-height:1rem;transition:transform .2s ease}.fade-enter-active[data-v-58747959],.fade-leave-active[data-v-58747959]{transition:opacity .3s cubic-bezier(.4,0,.2,1)}.fade-enter-from[data-v-58747959],.fade-leave-to[data-v-58747959]{opacity:0}.dropdown-enter-active[data-v-58747959]{transition:all .3s cubic-bezier(.34,1.56,.64,1)}.dropdown-leave-active[data-v-58747959]{transition:all .2s cubic-bezier(.4,0,1,1)}.dropdown-enter-from[data-v-58747959]{opacity:0;transform:translateY(-10px) scale(.95)}.dropdown-leave-to[data-v-58747959]{opacity:0;transform:translateY(-5px) scale(.98)}@media (max-width: 640px){.theme-dropdown[data-v-58747959]{left:0;right:auto}.theme-segment span[data-v-58747959]{display:none}} diff --git a/web/admin-spa/dist/assets/TutorialView-BVycHwR_.css b/web/admin-spa/dist/assets/TutorialView-BVycHwR_.css deleted file mode 100644 index 5f4b96a9..00000000 --- a/web/admin-spa/dist/assets/TutorialView-BVycHwR_.css +++ /dev/null @@ -1 +0,0 @@ -.tutorial-container[data-v-c6010d69]{min-height:calc(100vh - 300px)}.tutorial-content[data-v-c6010d69]{animation:fadeIn-c6010d69 .3s ease-in-out}@keyframes fadeIn-c6010d69{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}code[data-v-c6010d69]{font-family:Fira Code,Monaco,Menlo,Ubuntu Mono,monospace}.tutorial-content h4[data-v-c6010d69]{scroll-margin-top:100px}.tutorial-content .bg-gradient-to-r[data-v-c6010d69]{transition:all .2s ease}.tutorial-content .bg-gradient-to-r[data-v-c6010d69]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000001a} diff --git a/assets/TutorialView-CC1KbDlg.js b/web/admin-spa/dist/assets/TutorialView-N5jhXyjx.js similarity index 98% rename from assets/TutorialView-CC1KbDlg.js rename to web/admin-spa/dist/assets/TutorialView-N5jhXyjx.js index 3acd8194..415295df 100644 --- a/assets/TutorialView-CC1KbDlg.js +++ b/web/admin-spa/dist/assets/TutorialView-N5jhXyjx.js @@ -1 +1 @@ -import{_ as u}from"./index-BdtiivzQ.js";import{r as w,c as g,x as v,z as e,L as f,O as a,Q as h,ac as C,aY as d,P as s,y as c,C as b}from"./vue-vendor-DfnFpxGJ.js";import"./element-plus-CMedNaYf.js";import"./vendor-BDiMbLwQ.js";const E={class:"card p-3 sm:p-6"},A={class:"mb-4 sm:mb-8"},S={class:"flex flex-wrap gap-1 rounded-xl bg-gray-100 p-1 dark:bg-gray-700 sm:gap-2 sm:p-2"},O=["onClick"],I={key:0,class:"tutorial-content"},P={class:"mb-6 sm:mb-10"},k={class:"mb-4 rounded-xl border border-purple-100 bg-gradient-to-r from-purple-50 to-pink-50 p-4 sm:mb-6 sm:p-6"},N={class:"space-y-4"},T={class:"rounded-lg border border-purple-200 bg-white p-3 dark:border-purple-700 dark:bg-gray-800 sm:p-4"},_={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},L={class:"whitespace-nowrap text-gray-300"},G={class:"rounded-lg border border-purple-200 bg-white p-3 dark:border-purple-700 dark:bg-gray-800 sm:p-4"},U={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},R={class:"whitespace-nowrap text-gray-300"},D={class:"mt-6 rounded-lg border border-blue-200 bg-blue-50 p-3 sm:p-4"},H={class:"mt-3 space-y-2"},K={class:"rounded bg-gray-100 p-2 font-mono text-sm dark:bg-gray-700"},j={class:"mt-8"},B={class:"space-y-4"},z={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},$={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},V={class:"whitespace-nowrap text-gray-300"},q={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Y={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},M={class:"whitespace-nowrap text-gray-300"},W={class:"mt-8"},F={class:"space-y-4"},Q={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},J={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},X={class:"whitespace-nowrap text-gray-300"},Z={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},tt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},et={class:"whitespace-nowrap text-gray-300"},st={key:1,class:"tutorial-content"},at={class:"mb-6 sm:mb-10"},dt={class:"mb-4 rounded-xl border border-orange-100 bg-gradient-to-r from-orange-50 to-yellow-50 p-4 sm:mb-6 sm:p-6"},rt={class:"space-y-4"},ot={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},mt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},lt={class:"whitespace-nowrap text-gray-300"},it={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},xt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},nt={class:"whitespace-nowrap text-gray-300"},vt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ct={class:"whitespace-nowrap text-gray-300"},pt={class:"mt-8"},gt={class:"space-y-4"},bt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},yt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ut={class:"whitespace-nowrap text-gray-300"},wt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},ft={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ht={class:"whitespace-nowrap text-gray-300"},Ct={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Et={class:"whitespace-nowrap text-gray-300"},At={class:"mt-8"},St={class:"space-y-4"},Ot={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},It={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Pt={class:"whitespace-nowrap text-gray-300"},kt={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},Nt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Tt={class:"whitespace-nowrap text-gray-300"},_t={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Lt={class:"whitespace-nowrap text-gray-300"},Gt={key:2,class:"tutorial-content"},Ut={class:"mb-6 sm:mb-10"},Rt={class:"mb-4 rounded-xl border border-orange-100 bg-gradient-to-r from-orange-50 to-yellow-50 p-4 sm:mb-6 sm:p-6"},Dt={class:"space-y-4"},Ht={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},Kt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},jt={class:"whitespace-nowrap text-gray-300"},Bt={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},zt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},$t={class:"whitespace-nowrap text-gray-300"},Vt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},qt={class:"whitespace-nowrap text-gray-300"},Yt={class:"mt-8"},Mt={class:"space-y-4"},Wt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Ft={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Qt={class:"whitespace-nowrap text-gray-300"},Jt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Xt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Zt={class:"whitespace-nowrap text-gray-300"},te={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ee={class:"whitespace-nowrap text-gray-300"},se={class:"mt-8"},ae={class:"space-y-4"},de={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},re={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},oe={class:"whitespace-nowrap text-gray-300"},me={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},le={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ie={class:"whitespace-nowrap text-gray-300"},xe={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ne={class:"whitespace-nowrap text-gray-300"},ve={__name:"TutorialView",setup(ce){const x=w("windows"),y=[{key:"windows",name:"Windows",icon:"fab fa-windows"},{key:"macos",name:"macOS",icon:"fab fa-apple"},{key:"linux",name:"Linux / WSL2",icon:"fab fa-linux"}],p=()=>{let i="";if(window.location.origin)i=window.location.origin;else{const t=window.location.protocol,r=window.location.hostname,n=window.location.port;i=t+"//"+r,n&&(t==="http:"&&n!=="80"||t==="https:"&&n!=="443")&&(i+=":"+n)}if(!i){const t=window.location.href,r=t.indexOf("/",8);if(r!==-1)i=t.substring(0,r);else return console.warn("无法获取完整的 origin,将使用相对路径"),""}return i},o=g(()=>p()+"/api"),m=g(()=>p()+"/gemini"),l=g(()=>p()+"/openai");return(i,t)=>(c(),v("div",E,[t[144]||(t[144]=e("div",{class:"mb-4 sm:mb-8"},[e("h3",{class:"mb-3 flex items-center text-xl font-bold text-gray-900 dark:text-gray-100 sm:mb-4 sm:text-2xl"},[e("i",{class:"fas fa-graduation-cap mr-2 text-blue-600 sm:mr-3"}),a(" Claude Code 使用教程 ")]),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-lg"}," 跟着这个教程,你可以轻松在自己的电脑上安装并使用 Claude Code。 ")],-1)),e("div",A,[e("div",S,[(c(),v(h,null,C(y,r=>e("button",{key:r.key,class:b(["flex flex-1 items-center justify-center gap-1 rounded-lg px-3 py-2 text-xs font-semibold transition-all duration-300 sm:gap-2 sm:px-6 sm:py-3 sm:text-sm",x.value===r.key?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:bg-white/50 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200"]),onClick:n=>x.value=r.key},[e("i",{class:b(r.icon)},null,2),a(" "+s(r.name),1)],10,O)),64))])]),x.value==="windows"?(c(),v("div",I,[t[42]||(t[42]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

Windows 安装方法

方法一:官网下载(推荐)

  1. 打开浏览器访问 https://nodejs.org/
  2. 点击 "LTS" 版本进行下载(推荐长期支持版本)
  3. 下载完成后双击 .msi 文件
  4. 按照安装向导完成安装,保持默认设置即可

方法二:使用包管理器

如果你安装了 Chocolatey 或 Scoop,可以使用命令行安装:

# 使用 Chocolatey
choco install nodejs
# 或使用 Scoop
scoop install nodejs
Windows 注意事项
  • • 建议使用 PowerShell 而不是 CMD
  • • 如果遇到权限问题,尝试以管理员身份运行
  • • 某些杀毒软件可能会误报,需要添加白名单
验证安装是否成功

安装完成后,打开 PowerShell 或 CMD,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开 PowerShell 或 CMD,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

这个命令会从 npm 官方仓库下载并安装最新版本的 Claude Code。

提示
  • • 建议使用 PowerShell 而不是 CMD,功能更强大
  • • 如果遇到权限问题,以管理员身份运行 PowerShell
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",P,[t[41]||(t[41]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-purple-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",k,[t[9]||(t[9]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-purple-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[10]||(t[10]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",N,[e("div",T,[t[1]||(t[1]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:PowerShell 临时设置(当前会话) ",-1)),t[2]||(t[2]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",_,[e("div",L,' $env:ANTHROPIC_BASE_URL = "'+s(o.value)+'" ',1),t[0]||(t[0]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:ANTHROPIC_AUTH_TOKEN = "你的API密钥" ',-1))]),t[3]||(t[3]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",G,[t[6]||(t[6]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:PowerShell 永久设置(用户级) ",-1)),t[7]||(t[7]=e("p",{class:"mb-3 text-sm text-gray-600"}," 在 PowerShell 中运行以下命令设置用户级环境变量: ",-1)),e("div",U,[t[4]||(t[4]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",R,' [System.Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "'+s(o.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[5]||(t[5]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1))]),t[8]||(t[8]=d('

查看已设置的环境变量:

# 查看用户级环境变量
[System.Environment]::GetEnvironmentVariable("ANTHROPIC_BASE_URL", [System.EnvironmentVariableTarget]::User)
[System.Environment]::GetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", [System.EnvironmentVariableTarget]::User)

💡 设置后需要重新打开 PowerShell 窗口才能生效。

',3))])])]),e("div",D,[t[14]||(t[14]=d('
验证环境变量设置

设置完环境变量后,可以通过以下命令验证是否设置成功:

在 PowerShell 中验证:
echo $env:ANTHROPIC_BASE_URL
echo $env:ANTHROPIC_AUTH_TOKEN
在 CMD 中验证:
echo %ANTHROPIC_BASE_URL%
echo %ANTHROPIC_AUTH_TOKEN%
',3)),e("div",H,[t[12]||(t[12]=e("p",{class:"text-sm text-blue-700"},[e("strong",null,"预期输出示例:")],-1)),e("div",K,[e("div",null,s(o.value),1),t[11]||(t[11]=e("div",null,"cr_xxxxxxxxxxxxxxxxxx",-1))]),t[13]||(t[13]=e("p",{class:"text-xs text-blue-700"}," 💡 如果输出为空或显示变量名本身,说明环境变量设置失败,请重新设置。 ",-1))])]),e("div",j,[t[27]||(t[27]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[28]||(t[28]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",B,[e("div",z,[t[17]||(t[17]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 设置方法 ",-1)),t[18]||(t[18]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",$,[e("div",V,' $env:CODE_ASSIST_ENDPOINT = "'+s(m.value)+'" ',1),t[15]||(t[15]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:GOOGLE_CLOUD_ACCESS_TOKEN = "你的API密钥" ',-1)),t[16]||(t[16]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:GOOGLE_GENAI_USE_GCA = "true" ',-1))]),t[19]||(t[19]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",q,[t[23]||(t[23]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 永久设置(用户级) ",-1)),t[24]||(t[24]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",Y,[t[20]||(t[20]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",M,' [System.Environment]::SetEnvironmentVariable("CODE_ASSIST_ENDPOINT", "'+s(m.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[21]||(t[21]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("GOOGLE_CLOUD_ACCESS_TOKEN", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1)),t[22]||(t[22]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("GOOGLE_GENAI_USE_GCA", "true", [System.EnvironmentVariableTarget]::User) ',-1))]),t[25]||(t[25]=e("p",{class:"mt-2 text-xs text-blue-700"}," 💡 设置后需要重新打开 PowerShell 窗口才能生效。 ",-1))]),t[26]||(t[26]=d('
验证 Gemini CLI 环境变量

在 PowerShell 中验证:

echo $env:CODE_ASSIST_ENDPOINT
echo $env:GOOGLE_CLOUD_ACCESS_TOKEN
echo $env:GOOGLE_GENAI_USE_GCA
',1))])]),e("div",W,[t[39]||(t[39]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[40]||(t[40]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",F,[e("div",Q,[t[30]||(t[30]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 设置方法 ",-1)),t[31]||(t[31]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",J,[e("div",X,' $env:OPENAI_BASE_URL = "'+s(l.value)+'" ',1),t[29]||(t[29]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:OPENAI_API_KEY = "你的API密钥" ',-1))]),t[32]||(t[32]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",Z,[t[35]||(t[35]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 永久设置(用户级) ",-1)),t[36]||(t[36]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",tt,[t[33]||(t[33]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",et,' [System.Environment]::SetEnvironmentVariable("OPENAI_BASE_URL", "'+s(l.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[34]||(t[34]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1))]),t[37]||(t[37]=e("p",{class:"mt-2 text-xs text-blue-700"}," 💡 设置后需要重新打开 PowerShell 窗口才能生效。 ",-1))]),t[38]||(t[38]=d('
验证 Codex 环境变量

在 PowerShell 中验证:

echo $env:OPENAI_BASE_URL
echo $env:OPENAI_API_KEY
',1))])])]),t[43]||(t[43]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd C:\\path\\to\\your\\project
# 启动 Claude Code
claude

Windows 常见问题解决

安装时提示 "permission denied" 错误

这通常是权限问题,尝试以下解决方法:

  • 以管理员身份运行 PowerShell
  • 或者配置 npm 使用用户目录:npm config set prefix %APPDATA%\\npm
PowerShell 执行策略错误

如果遇到执行策略限制,运行:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
环境变量设置后不生效

设置永久环境变量后需要:

  • 重新启动 PowerShell 或 CMD
  • 或者注销并重新登录 Windows
  • 验证设置:echo $env:ANTHROPIC_BASE_URL
',2))])):x.value==="macos"?(c(),v("div",st,[t[92]||(t[92]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

macOS 安装方法

方法一:使用 Homebrew(推荐)

如果你已经安装了 Homebrew,使用它安装 Node.js 会更方便:

# 更新 Homebrew
brew update
# 安装 Node.js
brew install node

方法二:官网下载

  1. 访问 https://nodejs.org/
  2. 下载适合 macOS 的 LTS 版本
  3. 打开下载的 .pkg 文件
  4. 按照安装程序指引完成安装
macOS 注意事项
  • • 如果遇到权限问题,可能需要使用 sudo
  • • 首次运行可能需要在系统偏好设置中允许
  • • 建议使用 Terminal 或 iTerm2
验证安装是否成功

安装完成后,打开 Terminal,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开 Terminal,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

如果遇到权限问题,可以使用 sudo:

sudo npm install -g @anthropic-ai/claude-code
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",at,[t[91]||(t[91]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-orange-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",dt,[t[56]||(t[56]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-orange-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[57]||(t[57]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",rt,[e("div",ot,[t[45]||(t[45]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:临时设置(当前会话) ",-1)),t[46]||(t[46]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",mt,[e("div",lt,' export ANTHROPIC_BASE_URL="'+s(o.value)+'" ',1),t[44]||(t[44]=e("div",{class:"whitespace-nowrap text-gray-300"},' export ANTHROPIC_AUTH_TOKEN="你的API密钥" ',-1))]),t[47]||(t[47]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",it,[t[54]||(t[54]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:永久设置 ",-1)),t[55]||(t[55]=e("p",{class:"mb-3 text-sm text-gray-600"}," 编辑你的 shell 配置文件(根据你使用的 shell): ",-1)),e("div",xt,[t[48]||(t[48]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",nt,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.zshrc `,1),t[49]||(t[49]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[50]||(t[50]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",vt,[t[51]||(t[51]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",ct,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.bash_profile `,1),t[52]||(t[52]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.bash_profile `,-1)),t[53]||(t[53]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])])])]),e("div",pt,[t[74]||(t[74]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[75]||(t[75]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",gt,[e("div",bt,[t[60]||(t[60]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," Terminal 设置方法 ",-1)),t[61]||(t[61]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",yt,[e("div",ut,' export CODE_ASSIST_ENDPOINT="'+s(m.value)+'" ',1),t[58]||(t[58]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥" ',-1)),t[59]||(t[59]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_GENAI_USE_GCA="true" ',-1))]),t[62]||(t[62]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",wt,[t[71]||(t[71]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[72]||(t[72]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",ft,[t[63]||(t[63]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",ht,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.zshrc `,1),t[64]||(t[64]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[65]||(t[65]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.zshrc `,-1)),t[66]||(t[66]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",Ct,[t[67]||(t[67]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",Et,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.bash_profile `,1),t[68]||(t[68]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.bash_profile `,-1)),t[69]||(t[69]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.bash_profile `,-1)),t[70]||(t[70]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])]),t[73]||(t[73]=d('
验证 Gemini CLI 环境变量

在 Terminal 中验证:

echo $CODE_ASSIST_ENDPOINT
echo $GOOGLE_CLOUD_ACCESS_TOKEN
echo $GOOGLE_GENAI_USE_GCA
',1))])]),e("div",At,[t[89]||(t[89]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[90]||(t[90]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",St,[e("div",Ot,[t[77]||(t[77]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," Terminal 设置方法 ",-1)),t[78]||(t[78]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",It,[e("div",Pt,' export OPENAI_BASE_URL="'+s(l.value)+'" ',1),t[76]||(t[76]=e("div",{class:"whitespace-nowrap text-gray-300"},' export OPENAI_API_KEY="你的API密钥" ',-1))]),t[79]||(t[79]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",kt,[t[86]||(t[86]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[87]||(t[87]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",Nt,[t[80]||(t[80]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",Tt,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.zshrc `,1),t[81]||(t[81]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.zshrc `,-1)),t[82]||(t[82]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",_t,[t[83]||(t[83]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",Lt,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.bash_profile `,1),t[84]||(t[84]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.bash_profile `,-1)),t[85]||(t[85]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])]),t[88]||(t[88]=d('
验证 Codex 环境变量

在 Terminal 中验证:

echo $OPENAI_BASE_URL
echo $OPENAI_API_KEY
',1))])])]),t[93]||(t[93]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd /path/to/your/project
# 启动 Claude Code
claude

macOS 常见问题解决

安装时提示权限错误

尝试以下解决方法:

  • 使用 sudo 安装:sudo npm install -g @anthropic-ai/claude-code
  • 或者配置 npm 使用用户目录:npm config set prefix ~/.npm-global
macOS 安全设置阻止运行

如果系统阻止运行 Claude Code:

  • 打开"系统偏好设置" → "安全性与隐私"
  • 点击"仍要打开"或"允许"
  • 或者在 Terminal 中运行:sudo spctl --master-disable
环境变量不生效

检查以下几点:

  • 确认修改了正确的配置文件(.zshrc 或 .bash_profile)
  • 重新启动 Terminal
  • 验证设置:echo $ANTHROPIC_BASE_URL
',2))])):x.value==="linux"?(c(),v("div",Gt,[t[142]||(t[142]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

Linux 安装方法

方法一:使用官方仓库(推荐)

# 添加 NodeSource 仓库
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
# 安装 Node.js
sudo apt-get install -y nodejs

方法二:使用系统包管理器

虽然版本可能不是最新的,但对于基本使用已经足够:

# Ubuntu/Debian
sudo apt update
sudo apt install nodejs npm
# CentOS/RHEL/Fedora
sudo dnf install nodejs npm
Linux 注意事项
  • • 某些发行版可能需要安装额外的依赖
  • • 如果遇到权限问题,使用 sudo
  • • 确保你的用户在 npm 的全局目录有写权限
验证安装是否成功

安装完成后,打开终端,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开终端,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

如果遇到权限问题,可以使用 sudo:

sudo npm install -g @anthropic-ai/claude-code
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",Ut,[t[141]||(t[141]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-orange-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",Rt,[t[106]||(t[106]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-orange-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[107]||(t[107]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",Dt,[e("div",Ht,[t[95]||(t[95]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:临时设置(当前会话) ",-1)),t[96]||(t[96]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",Kt,[e("div",jt,' export ANTHROPIC_BASE_URL="'+s(o.value)+'" ',1),t[94]||(t[94]=e("div",{class:"whitespace-nowrap text-gray-300"},' export ANTHROPIC_AUTH_TOKEN="你的API密钥" ',-1))]),t[97]||(t[97]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",Bt,[t[104]||(t[104]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:永久设置 ",-1)),t[105]||(t[105]=e("p",{class:"mb-3 text-sm text-gray-600"},"编辑你的 shell 配置文件:",-1)),e("div",zt,[t[98]||(t[98]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",$t,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.bashrc `,1),t[99]||(t[99]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.bashrc `,-1)),t[100]||(t[100]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",Vt,[t[101]||(t[101]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",qt,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.zshrc `,1),t[102]||(t[102]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[103]||(t[103]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])])])]),e("div",Yt,[t[124]||(t[124]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[125]||(t[125]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",Mt,[e("div",Wt,[t[110]||(t[110]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 终端设置方法 ",-1)),t[111]||(t[111]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",Ft,[e("div",Qt,' export CODE_ASSIST_ENDPOINT="'+s(m.value)+'" ',1),t[108]||(t[108]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥" ',-1)),t[109]||(t[109]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_GENAI_USE_GCA="true" ',-1))]),t[112]||(t[112]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",Jt,[t[121]||(t[121]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[122]||(t[122]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",Xt,[t[113]||(t[113]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",Zt,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.bashrc `,1),t[114]||(t[114]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.bashrc `,-1)),t[115]||(t[115]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.bashrc `,-1)),t[116]||(t[116]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",te,[t[117]||(t[117]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",ee,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.zshrc `,1),t[118]||(t[118]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[119]||(t[119]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.zshrc `,-1)),t[120]||(t[120]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])]),t[123]||(t[123]=d('
验证 Gemini CLI 环境变量

在终端中验证:

echo $CODE_ASSIST_ENDPOINT
echo $GOOGLE_CLOUD_ACCESS_TOKEN
echo $GOOGLE_GENAI_USE_GCA
',1))])]),e("div",se,[t[139]||(t[139]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[140]||(t[140]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",ae,[e("div",de,[t[127]||(t[127]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 终端设置方法 ",-1)),t[128]||(t[128]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",re,[e("div",oe,' export OPENAI_BASE_URL="'+s(l.value)+'" ',1),t[126]||(t[126]=e("div",{class:"whitespace-nowrap text-gray-300"},' export OPENAI_API_KEY="你的API密钥" ',-1))]),t[129]||(t[129]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",me,[t[136]||(t[136]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[137]||(t[137]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",le,[t[130]||(t[130]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",ie,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.bashrc `,1),t[131]||(t[131]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.bashrc `,-1)),t[132]||(t[132]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",xe,[t[133]||(t[133]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",ne,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.zshrc `,1),t[134]||(t[134]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.zshrc `,-1)),t[135]||(t[135]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])]),t[138]||(t[138]=d('
验证 Codex 环境变量

在终端中验证:

echo $OPENAI_BASE_URL
echo $OPENAI_API_KEY
',1))])])]),t[143]||(t[143]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd /path/to/your/project
# 启动 Claude Code
claude

Linux 常见问题解决

安装时提示权限错误

尝试以下解决方法:

  • 使用 sudo 安装:sudo npm install -g @anthropic-ai/claude-code
  • 或者配置 npm 使用用户目录:npm config set prefix ~/.npm-global
  • 然后添加到 PATH:export PATH=~/.npm-global/bin:$PATH
缺少依赖库

某些 Linux 发行版需要安装额外依赖:

# Ubuntu/Debian
sudo apt install build-essential
# CentOS/RHEL
sudo dnf groupinstall "Development Tools"
环境变量不生效

检查以下几点:

  • 确认修改了正确的配置文件(.bashrc 或 .zshrc)
  • 重新启动终端或运行 source ~/.bashrc
  • 验证设置:echo $ANTHROPIC_BASE_URL
',2))])):f("",!0),t[145]||(t[145]=e("div",{class:"rounded-xl bg-gradient-to-r from-blue-500 to-purple-600 p-4 text-center text-white sm:p-6"},[e("h5",{class:"mb-2 text-lg font-semibold sm:text-xl"},"🎉 恭喜你!"),e("p",{class:"mb-3 text-sm text-blue-100 sm:mb-4 sm:text-base"}," 你已经成功安装并配置了 Claude Code,现在可以开始享受 AI 编程助手带来的便利了。 "),e("p",{class:"text-xs text-blue-200 sm:text-sm"}," 如果在使用过程中遇到任何问题,可以查看官方文档或社区讨论获取帮助。 ")],-1))]))}},ue=u(ve,[["__scopeId","data-v-c6010d69"]]);export{ue as default}; +import{_ as u}from"./index-CY9cPBXr.js";import{r as w,c as g,x as v,z as e,L as f,O as a,Q as h,ac as C,aX as d,P as s,y as c,C as b}from"./vue-vendor-Ig-GgGwA.js";import"./element-plus-Bq6mBxnk.js";import"./vendor-BDiMbLwQ.js";const E={class:"card p-3 sm:p-6"},A={class:"mb-4 sm:mb-8"},S={class:"flex flex-wrap gap-1 rounded-xl bg-gray-100 p-1 dark:bg-gray-700 sm:gap-2 sm:p-2"},O=["onClick"],I={key:0,class:"tutorial-content"},P={class:"mb-6 sm:mb-10"},k={class:"mb-4 rounded-xl border border-purple-100 bg-gradient-to-r from-purple-50 to-pink-50 p-4 sm:mb-6 sm:p-6"},N={class:"space-y-4"},T={class:"rounded-lg border border-purple-200 bg-white p-3 dark:border-purple-700 dark:bg-gray-800 sm:p-4"},_={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},L={class:"whitespace-nowrap text-gray-300"},G={class:"rounded-lg border border-purple-200 bg-white p-3 dark:border-purple-700 dark:bg-gray-800 sm:p-4"},U={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},R={class:"whitespace-nowrap text-gray-300"},D={class:"mt-6 rounded-lg border border-blue-200 bg-blue-50 p-3 sm:p-4"},H={class:"mt-3 space-y-2"},K={class:"rounded bg-gray-100 p-2 font-mono text-sm dark:bg-gray-700"},j={class:"mt-8"},B={class:"space-y-4"},z={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},$={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},V={class:"whitespace-nowrap text-gray-300"},q={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Y={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},M={class:"whitespace-nowrap text-gray-300"},W={class:"mt-8"},F={class:"space-y-4"},Q={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},X={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},J={class:"whitespace-nowrap text-gray-300"},Z={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},tt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},et={class:"whitespace-nowrap text-gray-300"},st={key:1,class:"tutorial-content"},at={class:"mb-6 sm:mb-10"},dt={class:"mb-4 rounded-xl border border-orange-100 bg-gradient-to-r from-orange-50 to-yellow-50 p-4 sm:mb-6 sm:p-6"},rt={class:"space-y-4"},ot={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},mt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},lt={class:"whitespace-nowrap text-gray-300"},it={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},xt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},nt={class:"whitespace-nowrap text-gray-300"},vt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ct={class:"whitespace-nowrap text-gray-300"},pt={class:"mt-8"},gt={class:"space-y-4"},bt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},yt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ut={class:"whitespace-nowrap text-gray-300"},wt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},ft={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ht={class:"whitespace-nowrap text-gray-300"},Ct={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Et={class:"whitespace-nowrap text-gray-300"},At={class:"mt-8"},St={class:"space-y-4"},Ot={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},It={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Pt={class:"whitespace-nowrap text-gray-300"},kt={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},Nt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Tt={class:"whitespace-nowrap text-gray-300"},_t={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Lt={class:"whitespace-nowrap text-gray-300"},Gt={key:2,class:"tutorial-content"},Ut={class:"mb-6 sm:mb-10"},Rt={class:"mb-4 rounded-xl border border-orange-100 bg-gradient-to-r from-orange-50 to-yellow-50 p-4 sm:mb-6 sm:p-6"},Dt={class:"space-y-4"},Ht={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},Kt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},jt={class:"whitespace-nowrap text-gray-300"},Bt={class:"rounded-lg border border-orange-200 bg-white p-3 sm:p-4"},zt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},$t={class:"whitespace-nowrap text-gray-300"},Vt={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},qt={class:"whitespace-nowrap text-gray-300"},Yt={class:"mt-8"},Mt={class:"space-y-4"},Wt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Ft={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Qt={class:"whitespace-nowrap text-gray-300"},Xt={class:"rounded-lg border border-green-200 bg-white p-3 sm:p-4"},Jt={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},Zt={class:"whitespace-nowrap text-gray-300"},te={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ee={class:"whitespace-nowrap text-gray-300"},se={class:"mt-8"},ae={class:"space-y-4"},de={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},re={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},oe={class:"whitespace-nowrap text-gray-300"},me={class:"rounded-lg border border-indigo-200 bg-white p-3 sm:p-4"},le={class:"mb-3 overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ie={class:"whitespace-nowrap text-gray-300"},xe={class:"overflow-x-auto rounded bg-gray-900 p-2 font-mono text-xs text-green-400 sm:p-3 sm:text-sm"},ne={class:"whitespace-nowrap text-gray-300"},ve={__name:"TutorialView",setup(ce){const x=w("windows"),y=[{key:"windows",name:"Windows",icon:"fab fa-windows"},{key:"macos",name:"macOS",icon:"fab fa-apple"},{key:"linux",name:"Linux / WSL2",icon:"fab fa-linux"}],p=()=>{let i="";if(window.location.origin)i=window.location.origin;else{const t=window.location.protocol,r=window.location.hostname,n=window.location.port;i=t+"//"+r,n&&(t==="http:"&&n!=="80"||t==="https:"&&n!=="443")&&(i+=":"+n)}if(!i){const t=window.location.href,r=t.indexOf("/",8);if(r!==-1)i=t.substring(0,r);else return console.warn("无法获取完整的 origin,将使用相对路径"),""}return i},o=g(()=>p()+"/api"),m=g(()=>p()+"/gemini"),l=g(()=>p()+"/openai");return(i,t)=>(c(),v("div",E,[t[144]||(t[144]=e("div",{class:"mb-4 sm:mb-8"},[e("h3",{class:"mb-3 flex items-center text-xl font-bold text-gray-900 dark:text-gray-100 sm:mb-4 sm:text-2xl"},[e("i",{class:"fas fa-graduation-cap mr-2 text-blue-600 sm:mr-3"}),a(" Claude Code 使用教程 ")]),e("p",{class:"text-sm text-gray-600 dark:text-gray-400 sm:text-lg"}," 跟着这个教程,你可以轻松在自己的电脑上安装并使用 Claude Code。 ")],-1)),e("div",A,[e("div",S,[(c(),v(h,null,C(y,r=>e("button",{key:r.key,class:b(["flex flex-1 items-center justify-center gap-1 rounded-lg px-3 py-2 text-xs font-semibold transition-all duration-300 sm:gap-2 sm:px-6 sm:py-3 sm:text-sm",x.value===r.key?"bg-white text-blue-600 shadow-sm dark:bg-gray-800":"text-gray-600 hover:bg-white/50 hover:text-gray-900 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-gray-200"]),onClick:n=>x.value=r.key},[e("i",{class:b(r.icon)},null,2),a(" "+s(r.name),1)],10,O)),64))])]),x.value==="windows"?(c(),v("div",I,[t[42]||(t[42]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

Windows 安装方法

方法一:官网下载(推荐)

  1. 打开浏览器访问 https://nodejs.org/
  2. 点击 "LTS" 版本进行下载(推荐长期支持版本)
  3. 下载完成后双击 .msi 文件
  4. 按照安装向导完成安装,保持默认设置即可

方法二:使用包管理器

如果你安装了 Chocolatey 或 Scoop,可以使用命令行安装:

# 使用 Chocolatey
choco install nodejs
# 或使用 Scoop
scoop install nodejs
Windows 注意事项
  • • 建议使用 PowerShell 而不是 CMD
  • • 如果遇到权限问题,尝试以管理员身份运行
  • • 某些杀毒软件可能会误报,需要添加白名单
验证安装是否成功

安装完成后,打开 PowerShell 或 CMD,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开 PowerShell 或 CMD,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

这个命令会从 npm 官方仓库下载并安装最新版本的 Claude Code。

提示
  • • 建议使用 PowerShell 而不是 CMD,功能更强大
  • • 如果遇到权限问题,以管理员身份运行 PowerShell
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",P,[t[41]||(t[41]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-purple-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",k,[t[9]||(t[9]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-purple-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[10]||(t[10]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",N,[e("div",T,[t[1]||(t[1]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:PowerShell 临时设置(当前会话) ",-1)),t[2]||(t[2]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",_,[e("div",L,' $env:ANTHROPIC_BASE_URL = "'+s(o.value)+'" ',1),t[0]||(t[0]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:ANTHROPIC_AUTH_TOKEN = "你的API密钥" ',-1))]),t[3]||(t[3]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",G,[t[6]||(t[6]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:PowerShell 永久设置(用户级) ",-1)),t[7]||(t[7]=e("p",{class:"mb-3 text-sm text-gray-600"}," 在 PowerShell 中运行以下命令设置用户级环境变量: ",-1)),e("div",U,[t[4]||(t[4]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",R,' [System.Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "'+s(o.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[5]||(t[5]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1))]),t[8]||(t[8]=d('

查看已设置的环境变量:

# 查看用户级环境变量
[System.Environment]::GetEnvironmentVariable("ANTHROPIC_BASE_URL", [System.EnvironmentVariableTarget]::User)
[System.Environment]::GetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", [System.EnvironmentVariableTarget]::User)

💡 设置后需要重新打开 PowerShell 窗口才能生效。

',3))])])]),e("div",D,[t[14]||(t[14]=d('
验证环境变量设置

设置完环境变量后,可以通过以下命令验证是否设置成功:

在 PowerShell 中验证:
echo $env:ANTHROPIC_BASE_URL
echo $env:ANTHROPIC_AUTH_TOKEN
在 CMD 中验证:
echo %ANTHROPIC_BASE_URL%
echo %ANTHROPIC_AUTH_TOKEN%
',3)),e("div",H,[t[12]||(t[12]=e("p",{class:"text-sm text-blue-700"},[e("strong",null,"预期输出示例:")],-1)),e("div",K,[e("div",null,s(o.value),1),t[11]||(t[11]=e("div",null,"cr_xxxxxxxxxxxxxxxxxx",-1))]),t[13]||(t[13]=e("p",{class:"text-xs text-blue-700"}," 💡 如果输出为空或显示变量名本身,说明环境变量设置失败,请重新设置。 ",-1))])]),e("div",j,[t[27]||(t[27]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[28]||(t[28]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",B,[e("div",z,[t[17]||(t[17]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 设置方法 ",-1)),t[18]||(t[18]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",$,[e("div",V,' $env:CODE_ASSIST_ENDPOINT = "'+s(m.value)+'" ',1),t[15]||(t[15]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:GOOGLE_CLOUD_ACCESS_TOKEN = "你的API密钥" ',-1)),t[16]||(t[16]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:GOOGLE_GENAI_USE_GCA = "true" ',-1))]),t[19]||(t[19]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",q,[t[23]||(t[23]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 永久设置(用户级) ",-1)),t[24]||(t[24]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",Y,[t[20]||(t[20]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",M,' [System.Environment]::SetEnvironmentVariable("CODE_ASSIST_ENDPOINT", "'+s(m.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[21]||(t[21]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("GOOGLE_CLOUD_ACCESS_TOKEN", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1)),t[22]||(t[22]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("GOOGLE_GENAI_USE_GCA", "true", [System.EnvironmentVariableTarget]::User) ',-1))]),t[25]||(t[25]=e("p",{class:"mt-2 text-xs text-blue-700"}," 💡 设置后需要重新打开 PowerShell 窗口才能生效。 ",-1))]),t[26]||(t[26]=d('
验证 Gemini CLI 环境变量

在 PowerShell 中验证:

echo $env:CODE_ASSIST_ENDPOINT
echo $env:GOOGLE_CLOUD_ACCESS_TOKEN
echo $env:GOOGLE_GENAI_USE_GCA
',1))])]),e("div",W,[t[39]||(t[39]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[40]||(t[40]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",F,[e("div",Q,[t[30]||(t[30]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 设置方法 ",-1)),t[31]||(t[31]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",X,[e("div",J,' $env:OPENAI_BASE_URL = "'+s(l.value)+'" ',1),t[29]||(t[29]=e("div",{class:"whitespace-nowrap text-gray-300"},' $env:OPENAI_API_KEY = "你的API密钥" ',-1))]),t[32]||(t[32]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",Z,[t[35]||(t[35]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," PowerShell 永久设置(用户级) ",-1)),t[36]||(t[36]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 PowerShell 中运行以下命令:",-1)),e("div",tt,[t[33]||(t[33]=e("div",{class:"mb-2"},"# 设置用户级环境变量(永久生效)",-1)),e("div",et,' [System.Environment]::SetEnvironmentVariable("OPENAI_BASE_URL", "'+s(l.value)+'", [System.EnvironmentVariableTarget]::User) ',1),t[34]||(t[34]=e("div",{class:"whitespace-nowrap text-gray-300"},' [System.Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "你的API密钥", [System.EnvironmentVariableTarget]::User) ',-1))]),t[37]||(t[37]=e("p",{class:"mt-2 text-xs text-blue-700"}," 💡 设置后需要重新打开 PowerShell 窗口才能生效。 ",-1))]),t[38]||(t[38]=d('
验证 Codex 环境变量

在 PowerShell 中验证:

echo $env:OPENAI_BASE_URL
echo $env:OPENAI_API_KEY
',1))])])]),t[43]||(t[43]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd C:\\path\\to\\your\\project
# 启动 Claude Code
claude

Windows 常见问题解决

安装时提示 "permission denied" 错误

这通常是权限问题,尝试以下解决方法:

  • 以管理员身份运行 PowerShell
  • 或者配置 npm 使用用户目录:npm config set prefix %APPDATA%\\npm
PowerShell 执行策略错误

如果遇到执行策略限制,运行:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
环境变量设置后不生效

设置永久环境变量后需要:

  • 重新启动 PowerShell 或 CMD
  • 或者注销并重新登录 Windows
  • 验证设置:echo $env:ANTHROPIC_BASE_URL
',2))])):x.value==="macos"?(c(),v("div",st,[t[92]||(t[92]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

macOS 安装方法

方法一:使用 Homebrew(推荐)

如果你已经安装了 Homebrew,使用它安装 Node.js 会更方便:

# 更新 Homebrew
brew update
# 安装 Node.js
brew install node

方法二:官网下载

  1. 访问 https://nodejs.org/
  2. 下载适合 macOS 的 LTS 版本
  3. 打开下载的 .pkg 文件
  4. 按照安装程序指引完成安装
macOS 注意事项
  • • 如果遇到权限问题,可能需要使用 sudo
  • • 首次运行可能需要在系统偏好设置中允许
  • • 建议使用 Terminal 或 iTerm2
验证安装是否成功

安装完成后,打开 Terminal,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开 Terminal,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

如果遇到权限问题,可以使用 sudo:

sudo npm install -g @anthropic-ai/claude-code
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",at,[t[91]||(t[91]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-orange-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",dt,[t[56]||(t[56]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-orange-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[57]||(t[57]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",rt,[e("div",ot,[t[45]||(t[45]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:临时设置(当前会话) ",-1)),t[46]||(t[46]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",mt,[e("div",lt,' export ANTHROPIC_BASE_URL="'+s(o.value)+'" ',1),t[44]||(t[44]=e("div",{class:"whitespace-nowrap text-gray-300"},' export ANTHROPIC_AUTH_TOKEN="你的API密钥" ',-1))]),t[47]||(t[47]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",it,[t[54]||(t[54]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:永久设置 ",-1)),t[55]||(t[55]=e("p",{class:"mb-3 text-sm text-gray-600"}," 编辑你的 shell 配置文件(根据你使用的 shell): ",-1)),e("div",xt,[t[48]||(t[48]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",nt,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.zshrc `,1),t[49]||(t[49]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[50]||(t[50]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",vt,[t[51]||(t[51]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",ct,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.bash_profile `,1),t[52]||(t[52]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.bash_profile `,-1)),t[53]||(t[53]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])])])]),e("div",pt,[t[74]||(t[74]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[75]||(t[75]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",gt,[e("div",bt,[t[60]||(t[60]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," Terminal 设置方法 ",-1)),t[61]||(t[61]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",yt,[e("div",ut,' export CODE_ASSIST_ENDPOINT="'+s(m.value)+'" ',1),t[58]||(t[58]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥" ',-1)),t[59]||(t[59]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_GENAI_USE_GCA="true" ',-1))]),t[62]||(t[62]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",wt,[t[71]||(t[71]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[72]||(t[72]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",ft,[t[63]||(t[63]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",ht,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.zshrc `,1),t[64]||(t[64]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[65]||(t[65]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.zshrc `,-1)),t[66]||(t[66]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",Ct,[t[67]||(t[67]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",Et,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.bash_profile `,1),t[68]||(t[68]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.bash_profile `,-1)),t[69]||(t[69]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.bash_profile `,-1)),t[70]||(t[70]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])]),t[73]||(t[73]=d('
验证 Gemini CLI 环境变量

在 Terminal 中验证:

echo $CODE_ASSIST_ENDPOINT
echo $GOOGLE_CLOUD_ACCESS_TOKEN
echo $GOOGLE_GENAI_USE_GCA
',1))])]),e("div",At,[t[89]||(t[89]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[90]||(t[90]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",St,[e("div",Ot,[t[77]||(t[77]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," Terminal 设置方法 ",-1)),t[78]||(t[78]=e("p",{class:"mb-3 text-sm text-gray-600"},"在 Terminal 中运行以下命令:",-1)),e("div",It,[e("div",Pt,' export OPENAI_BASE_URL="'+s(l.value)+'" ',1),t[76]||(t[76]=e("div",{class:"whitespace-nowrap text-gray-300"},' export OPENAI_API_KEY="你的API密钥" ',-1))]),t[79]||(t[79]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",kt,[t[86]||(t[86]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[87]||(t[87]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",Nt,[t[80]||(t[80]=e("div",{class:"mb-2"},"# 对于 zsh (默认)",-1)),e("div",Tt,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.zshrc `,1),t[81]||(t[81]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.zshrc `,-1)),t[82]||(t[82]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))]),e("div",_t,[t[83]||(t[83]=e("div",{class:"mb-2"},"# 对于 bash",-1)),e("div",Lt,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.bash_profile `,1),t[84]||(t[84]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.bash_profile `,-1)),t[85]||(t[85]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bash_profile",-1))])]),t[88]||(t[88]=d('
验证 Codex 环境变量

在 Terminal 中验证:

echo $OPENAI_BASE_URL
echo $OPENAI_API_KEY
',1))])])]),t[93]||(t[93]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd /path/to/your/project
# 启动 Claude Code
claude

macOS 常见问题解决

安装时提示权限错误

尝试以下解决方法:

  • 使用 sudo 安装:sudo npm install -g @anthropic-ai/claude-code
  • 或者配置 npm 使用用户目录:npm config set prefix ~/.npm-global
macOS 安全设置阻止运行

如果系统阻止运行 Claude Code:

  • 打开"系统偏好设置" → "安全性与隐私"
  • 点击"仍要打开"或"允许"
  • 或者在 Terminal 中运行:sudo spctl --master-disable
环境变量不生效

检查以下几点:

  • 确认修改了正确的配置文件(.zshrc 或 .bash_profile)
  • 重新启动 Terminal
  • 验证设置:echo $ANTHROPIC_BASE_URL
',2))])):x.value==="linux"?(c(),v("div",Gt,[t[142]||(t[142]=d('

1 安装 Node.js 环境

Claude Code 需要 Node.js 环境才能运行。

Linux 安装方法

方法一:使用官方仓库(推荐)

# 添加 NodeSource 仓库
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
# 安装 Node.js
sudo apt-get install -y nodejs

方法二:使用系统包管理器

虽然版本可能不是最新的,但对于基本使用已经足够:

# Ubuntu/Debian
sudo apt update
sudo apt install nodejs npm
# CentOS/RHEL/Fedora
sudo dnf install nodejs npm
Linux 注意事项
  • • 某些发行版可能需要安装额外的依赖
  • • 如果遇到权限问题,使用 sudo
  • • 确保你的用户在 npm 的全局目录有写权限
验证安装是否成功

安装完成后,打开终端,输入以下命令:

node --version
npm --version

如果显示版本号,说明安装成功了!

2 安装 Claude Code

安装 Claude Code

打开终端,运行以下命令:

# 全局安装 Claude Code
npm install -g @anthropic-ai/claude-code

如果遇到权限问题,可以使用 sudo:

sudo npm install -g @anthropic-ai/claude-code
验证 Claude Code 安装

安装完成后,输入以下命令检查是否安装成功:

claude --version

如果显示版本号,恭喜你!Claude Code 已经成功安装了。

',2)),e("div",Ut,[t[141]||(t[141]=e("h4",{class:"mb-3 flex items-center text-lg font-semibold text-gray-800 dark:text-gray-300 sm:mb-4 sm:text-xl"},[e("span",{class:"mr-2 flex h-6 w-6 items-center justify-center rounded-full bg-orange-500 text-xs font-bold text-white sm:mr-3 sm:h-8 sm:w-8 sm:text-sm"},"3"),a(" 设置环境变量 ")],-1)),e("div",Rt,[t[106]||(t[106]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-cog mr-2 text-orange-600"}),a(" 配置 Claude Code 环境变量 ")],-1)),t[107]||(t[107]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 为了让 Claude Code 连接到你的中转服务,需要设置两个环境变量: ",-1)),e("div",Dt,[e("div",Ht,[t[95]||(t[95]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法一:临时设置(当前会话) ",-1)),t[96]||(t[96]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",Kt,[e("div",jt,' export ANTHROPIC_BASE_URL="'+s(o.value)+'" ',1),t[94]||(t[94]=e("div",{class:"whitespace-nowrap text-gray-300"},' export ANTHROPIC_AUTH_TOKEN="你的API密钥" ',-1))]),t[97]||(t[97]=e("p",{class:"mt-2 text-xs text-yellow-700"},' 💡 记得将 "你的API密钥" 替换为在上方 "API Keys" 标签页中创建的实际密钥。 ',-1))]),e("div",Bt,[t[104]||(t[104]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 方法二:永久设置 ",-1)),t[105]||(t[105]=e("p",{class:"mb-3 text-sm text-gray-600"},"编辑你的 shell 配置文件:",-1)),e("div",zt,[t[98]||(t[98]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",$t,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.bashrc `,1),t[99]||(t[99]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.bashrc `,-1)),t[100]||(t[100]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",Vt,[t[101]||(t[101]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",qt,` echo 'export ANTHROPIC_BASE_URL="`+s(o.value)+`"' >> ~/.zshrc `,1),t[102]||(t[102]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export ANTHROPIC_AUTH_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[103]||(t[103]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])])])]),e("div",Yt,[t[124]||(t[124]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-robot mr-2 text-green-600"}),a(" 配置 Gemini CLI 环境变量 ")],-1)),t[125]||(t[125]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用 Gemini CLI,需要设置以下环境变量: ",-1)),e("div",Mt,[e("div",Wt,[t[110]||(t[110]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 终端设置方法 ",-1)),t[111]||(t[111]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",Ft,[e("div",Qt,' export CODE_ASSIST_ENDPOINT="'+s(m.value)+'" ',1),t[108]||(t[108]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥" ',-1)),t[109]||(t[109]=e("div",{class:"whitespace-nowrap text-gray-300"},' export GOOGLE_GENAI_USE_GCA="true" ',-1))]),t[112]||(t[112]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可。 ",-1))]),e("div",Xt,[t[121]||(t[121]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[122]||(t[122]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",Jt,[t[113]||(t[113]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",Zt,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.bashrc `,1),t[114]||(t[114]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.bashrc `,-1)),t[115]||(t[115]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.bashrc `,-1)),t[116]||(t[116]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",te,[t[117]||(t[117]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",ee,` echo 'export CODE_ASSIST_ENDPOINT="`+s(m.value)+`"' >> ~/.zshrc `,1),t[118]||(t[118]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_CLOUD_ACCESS_TOKEN="你的API密钥"' >> ~/.zshrc `,-1)),t[119]||(t[119]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export GOOGLE_GENAI_USE_GCA="true"' >> ~/.zshrc `,-1)),t[120]||(t[120]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])]),t[123]||(t[123]=d('
验证 Gemini CLI 环境变量

在终端中验证:

echo $CODE_ASSIST_ENDPOINT
echo $GOOGLE_CLOUD_ACCESS_TOKEN
echo $GOOGLE_GENAI_USE_GCA
',1))])]),e("div",se,[t[139]||(t[139]=e("h5",{class:"mb-2 flex items-center text-base font-semibold text-gray-800 dark:text-gray-600 sm:mb-3 sm:text-lg"},[e("i",{class:"fas fa-code mr-2 text-indigo-600"}),a(" 配置 Codex 环境变量 ")],-1)),t[140]||(t[140]=e("p",{class:"mb-3 text-sm text-gray-700 dark:text-gray-300 sm:mb-4 sm:text-base"}," 如果你使用支持 OpenAI API 的工具(如 Codex),需要设置以下环境变量: ",-1)),e("div",ae,[e("div",de,[t[127]||(t[127]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 终端设置方法 ",-1)),t[128]||(t[128]=e("p",{class:"mb-3 text-sm text-gray-600"},"在终端中运行以下命令:",-1)),e("div",re,[e("div",oe,' export OPENAI_BASE_URL="'+s(l.value)+'" ',1),t[126]||(t[126]=e("div",{class:"whitespace-nowrap text-gray-300"},' export OPENAI_API_KEY="你的API密钥" ',-1))]),t[129]||(t[129]=e("p",{class:"mt-2 text-xs text-yellow-700"}," 💡 使用与 Claude Code 相同的 API 密钥即可,格式如 cr_xxxxxxxxxx。 ",-1))]),e("div",me,[t[136]||(t[136]=e("h6",{class:"mb-2 text-sm font-medium text-gray-800 dark:text-gray-600 sm:text-base"}," 永久设置方法 ",-1)),t[137]||(t[137]=e("p",{class:"mb-3 text-sm text-gray-600"},"添加到你的 shell 配置文件:",-1)),e("div",le,[t[130]||(t[130]=e("div",{class:"mb-2"},"# 对于 bash (默认)",-1)),e("div",ie,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.bashrc `,1),t[131]||(t[131]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.bashrc `,-1)),t[132]||(t[132]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.bashrc",-1))]),e("div",xe,[t[133]||(t[133]=e("div",{class:"mb-2"},"# 对于 zsh",-1)),e("div",ne,` echo 'export OPENAI_BASE_URL="`+s(l.value)+`"' >> ~/.zshrc `,1),t[134]||(t[134]=e("div",{class:"whitespace-nowrap text-gray-300"},` echo 'export OPENAI_API_KEY="你的API密钥"' >> ~/.zshrc `,-1)),t[135]||(t[135]=e("div",{class:"whitespace-nowrap text-gray-300"},"source ~/.zshrc",-1))])]),t[138]||(t[138]=d('
验证 Codex 环境变量

在终端中验证:

echo $OPENAI_BASE_URL
echo $OPENAI_API_KEY
',1))])])]),t[143]||(t[143]=d('

4 开始使用 Claude Code

现在你可以开始使用 Claude Code 了!

启动 Claude Code
claude
在特定项目中使用
# 进入你的项目目录
cd /path/to/your/project
# 启动 Claude Code
claude

Linux 常见问题解决

安装时提示权限错误

尝试以下解决方法:

  • 使用 sudo 安装:sudo npm install -g @anthropic-ai/claude-code
  • 或者配置 npm 使用用户目录:npm config set prefix ~/.npm-global
  • 然后添加到 PATH:export PATH=~/.npm-global/bin:$PATH
缺少依赖库

某些 Linux 发行版需要安装额外依赖:

# Ubuntu/Debian
sudo apt install build-essential
# CentOS/RHEL
sudo dnf groupinstall "Development Tools"
环境变量不生效

检查以下几点:

  • 确认修改了正确的配置文件(.bashrc 或 .zshrc)
  • 重新启动终端或运行 source ~/.bashrc
  • 验证设置:echo $ANTHROPIC_BASE_URL
',2))])):f("",!0),t[145]||(t[145]=e("div",{class:"rounded-xl bg-gradient-to-r from-blue-500 to-purple-600 p-4 text-center text-white sm:p-6"},[e("h5",{class:"mb-2 text-lg font-semibold sm:text-xl"},"🎉 恭喜你!"),e("p",{class:"mb-3 text-sm text-blue-100 sm:mb-4 sm:text-base"}," 你已经成功安装并配置了 Claude Code,现在可以开始享受 AI 编程助手带来的便利了。 "),e("p",{class:"text-xs text-blue-200 sm:text-sm"}," 如果在使用过程中遇到任何问题,可以查看官方文档或社区讨论获取帮助。 ")],-1))]))}},ue=u(ve,[["__scopeId","data-v-c6010d69"]]);export{ue as default}; diff --git a/web/admin-spa/dist/assets/WindowCountdown-RaAYa1A3.js b/web/admin-spa/dist/assets/WindowCountdown-DSqUCtdk.js similarity index 98% rename from web/admin-spa/dist/assets/WindowCountdown-RaAYa1A3.js rename to web/admin-spa/dist/assets/WindowCountdown-DSqUCtdk.js index c79fded0..98f69ec3 100644 --- a/web/admin-spa/dist/assets/WindowCountdown-RaAYa1A3.js +++ b/web/admin-spa/dist/assets/WindowCountdown-DSqUCtdk.js @@ -1 +1 @@ -import{r as N,c as y,o as x,q as R,V as C,x as i,y as o,z as n,L as f,P as l,O as w,B as k,C as b}from"./vue-vendor-DfnFpxGJ.js";const $={class:"space-y-1"},P={class:"flex items-center justify-between text-xs"},B={class:"text-gray-500"},E={key:0,class:"font-medium text-gray-700"},I={key:1,class:"font-medium text-orange-600"},V={key:2,class:"font-medium text-gray-500"},j={key:3,class:"font-medium text-gray-400"},z={key:0,class:"space-y-0.5"},D={key:0,class:"space-y-0.5"},W={class:"flex items-center justify-between text-xs"},F={class:"text-gray-600"},K={class:"h-1 w-full rounded-full bg-gray-200"},O={key:1,class:"space-y-0.5"},U={class:"flex items-center justify-between text-xs"},A={class:"text-gray-600"},G={class:"h-1 w-full rounded-full bg-gray-200"},H={key:1,class:"text-xs text-gray-500"},J={key:0},Q={key:1},X={key:2},Z={__name:"WindowCountdown",props:{label:{type:String,default:"窗口限制"},rateLimitWindow:{type:Number,required:!0},windowStartTime:{type:Number,default:null},windowEndTime:{type:Number,default:null},windowRemainingSeconds:{type:Number,default:null},currentRequests:{type:Number,default:0},requestLimit:{type:Number,default:0},currentTokens:{type:Number,default:0},tokenLimit:{type:Number,default:0},showProgress:{type:Boolean,default:!0},showTooltip:{type:Boolean,default:!1}},setup(a){const s=a,r=N(s.windowRemainingSeconds);let u=null;const c=y(()=>s.windowStartTime===null?"notStarted":r.value===0?"expired":r.value>0?"active":"unknown"),T=y(()=>s.requestLimit>0),_=y(()=>s.tokenLimit>0),L=e=>{if(e==null)return"--:--";const t=Math.floor(e/3600),d=Math.floor(e%3600/60),p=e%60;return t>0?`${t}h ${d}m`:d>0?`${d}m ${p}s`:`${p}s`},q=e=>{const t=Math.floor(e/3600),d=Math.floor(e%3600/60);return t>0?`${t}小时${d}分钟`:`${d}分钟`},g=e=>e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),v=()=>{if(!s.requestLimit||s.requestLimit===0)return 0;const e=(s.currentRequests||0)/s.requestLimit*100;return Math.min(e,100)},S=()=>{const e=v();return e>=100?"bg-red-500":e>=80?"bg-yellow-500":"bg-blue-500"},h=()=>{if(!s.tokenLimit||s.tokenLimit===0)return 0;const e=(s.currentTokens||0)/s.tokenLimit*100;return Math.min(e,100)},M=()=>{const e=h();return e>=100?"bg-red-500":e>=80?"bg-yellow-500":"bg-purple-500"},m=()=>{if(s.windowEndTime&&r.value>0){const e=Date.now(),t=Math.max(0,Math.floor((s.windowEndTime-e)/1e3));r.value=t,t===0&&u&&(clearInterval(u),u=null)}};return x(()=>s.windowRemainingSeconds,e=>{r.value=e}),x(()=>s.windowEndTime,e=>{e&&(m(),!u&&r.value>0&&(u=setInterval(m,1e3)))}),R(()=>{s.windowEndTime&&r.value>0&&(m(),u=setInterval(m,1e3))}),C(()=>{u&&clearInterval(u)}),(e,t)=>(o(),i("div",$,[n("div",P,[n("span",B,l(a.label),1),c.value==="active"?(o(),i("span",E,[t[0]||(t[0]=n("i",{class:"fas fa-clock mr-1 text-blue-500"},null,-1)),w(" "+l(L(r.value)),1)])):c.value==="expired"?(o(),i("span",I,t[1]||(t[1]=[n("i",{class:"fas fa-sync-alt mr-1"},null,-1),w(" 窗口已过期 ",-1)]))):c.value==="notStarted"?(o(),i("span",V,t[2]||(t[2]=[n("i",{class:"fas fa-pause-circle mr-1"},null,-1),w(" 窗口未激活 ",-1)]))):(o(),i("span",j,l(a.rateLimitWindow)+" 分钟 ",1))]),a.showProgress?(o(),i("div",z,[T.value?(o(),i("div",D,[n("div",W,[t[3]||(t[3]=n("span",{class:"text-gray-400"},"请求",-1)),n("span",F,l(a.currentRequests||0)+"/"+l(a.requestLimit),1)]),n("div",K,[n("div",{class:b(["h-1 rounded-full transition-all duration-300",S()]),style:k({width:v()+"%"})},null,6)])])):f("",!0),_.value?(o(),i("div",O,[n("div",U,[t[4]||(t[4]=n("span",{class:"text-gray-400"},"Token",-1)),n("span",A,l(g(a.currentTokens||0))+"/"+l(g(a.tokenLimit)),1)]),n("div",G,[n("div",{class:b(["h-1 rounded-full transition-all duration-300",M()]),style:k({width:h()+"%"})},null,6)])])):f("",!0)])):f("",!0),c.value==="active"&&a.showTooltip?(o(),i("div",H,[t[5]||(t[5]=n("i",{class:"fas fa-info-circle mr-1"},null,-1)),r.value<60?(o(),i("span",J,"即将重置")):r.value<300?(o(),i("span",Q,l(Math.ceil(r.value/60))+" 分钟后重置",1)):(o(),i("span",X,l(q(r.value))+"后重置",1))])):f("",!0)]))}};export{Z as _}; +import{r as N,c as y,o as x,q as R,V as C,x as i,y as o,z as n,L as f,P as l,O as w,B as k,C as b}from"./vue-vendor-Ig-GgGwA.js";const $={class:"space-y-1"},P={class:"flex items-center justify-between text-xs"},B={class:"text-gray-500"},E={key:0,class:"font-medium text-gray-700"},I={key:1,class:"font-medium text-orange-600"},V={key:2,class:"font-medium text-gray-500"},j={key:3,class:"font-medium text-gray-400"},z={key:0,class:"space-y-0.5"},D={key:0,class:"space-y-0.5"},W={class:"flex items-center justify-between text-xs"},F={class:"text-gray-600"},K={class:"h-1 w-full rounded-full bg-gray-200"},O={key:1,class:"space-y-0.5"},U={class:"flex items-center justify-between text-xs"},A={class:"text-gray-600"},G={class:"h-1 w-full rounded-full bg-gray-200"},H={key:1,class:"text-xs text-gray-500"},J={key:0},Q={key:1},X={key:2},Z={__name:"WindowCountdown",props:{label:{type:String,default:"窗口限制"},rateLimitWindow:{type:Number,required:!0},windowStartTime:{type:Number,default:null},windowEndTime:{type:Number,default:null},windowRemainingSeconds:{type:Number,default:null},currentRequests:{type:Number,default:0},requestLimit:{type:Number,default:0},currentTokens:{type:Number,default:0},tokenLimit:{type:Number,default:0},showProgress:{type:Boolean,default:!0},showTooltip:{type:Boolean,default:!1}},setup(a){const s=a,r=N(s.windowRemainingSeconds);let u=null;const c=y(()=>s.windowStartTime===null?"notStarted":r.value===0?"expired":r.value>0?"active":"unknown"),T=y(()=>s.requestLimit>0),_=y(()=>s.tokenLimit>0),L=e=>{if(e==null)return"--:--";const t=Math.floor(e/3600),d=Math.floor(e%3600/60),p=e%60;return t>0?`${t}h ${d}m`:d>0?`${d}m ${p}s`:`${p}s`},q=e=>{const t=Math.floor(e/3600),d=Math.floor(e%3600/60);return t>0?`${t}小时${d}分钟`:`${d}分钟`},g=e=>e>=1e6?(e/1e6).toFixed(1)+"M":e>=1e3?(e/1e3).toFixed(1)+"K":e.toString(),v=()=>{if(!s.requestLimit||s.requestLimit===0)return 0;const e=(s.currentRequests||0)/s.requestLimit*100;return Math.min(e,100)},S=()=>{const e=v();return e>=100?"bg-red-500":e>=80?"bg-yellow-500":"bg-blue-500"},h=()=>{if(!s.tokenLimit||s.tokenLimit===0)return 0;const e=(s.currentTokens||0)/s.tokenLimit*100;return Math.min(e,100)},M=()=>{const e=h();return e>=100?"bg-red-500":e>=80?"bg-yellow-500":"bg-purple-500"},m=()=>{if(s.windowEndTime&&r.value>0){const e=Date.now(),t=Math.max(0,Math.floor((s.windowEndTime-e)/1e3));r.value=t,t===0&&u&&(clearInterval(u),u=null)}};return x(()=>s.windowRemainingSeconds,e=>{r.value=e}),x(()=>s.windowEndTime,e=>{e&&(m(),!u&&r.value>0&&(u=setInterval(m,1e3)))}),R(()=>{s.windowEndTime&&r.value>0&&(m(),u=setInterval(m,1e3))}),C(()=>{u&&clearInterval(u)}),(e,t)=>(o(),i("div",$,[n("div",P,[n("span",B,l(a.label),1),c.value==="active"?(o(),i("span",E,[t[0]||(t[0]=n("i",{class:"fas fa-clock mr-1 text-blue-500"},null,-1)),w(" "+l(L(r.value)),1)])):c.value==="expired"?(o(),i("span",I,t[1]||(t[1]=[n("i",{class:"fas fa-sync-alt mr-1"},null,-1),w(" 窗口已过期 ",-1)]))):c.value==="notStarted"?(o(),i("span",V,t[2]||(t[2]=[n("i",{class:"fas fa-pause-circle mr-1"},null,-1),w(" 窗口未激活 ",-1)]))):(o(),i("span",j,l(a.rateLimitWindow)+" 分钟 ",1))]),a.showProgress?(o(),i("div",z,[T.value?(o(),i("div",D,[n("div",W,[t[3]||(t[3]=n("span",{class:"text-gray-400"},"请求",-1)),n("span",F,l(a.currentRequests||0)+"/"+l(a.requestLimit),1)]),n("div",K,[n("div",{class:b(["h-1 rounded-full transition-all duration-300",S()]),style:k({width:v()+"%"})},null,6)])])):f("",!0),_.value?(o(),i("div",O,[n("div",U,[t[4]||(t[4]=n("span",{class:"text-gray-400"},"Token",-1)),n("span",A,l(g(a.currentTokens||0))+"/"+l(g(a.tokenLimit)),1)]),n("div",G,[n("div",{class:b(["h-1 rounded-full transition-all duration-300",M()]),style:k({width:h()+"%"})},null,6)])])):f("",!0)])):f("",!0),c.value==="active"&&a.showTooltip?(o(),i("div",H,[t[5]||(t[5]=n("i",{class:"fas fa-info-circle mr-1"},null,-1)),r.value<60?(o(),i("span",J,"即将重置")):r.value<300?(o(),i("span",Q,l(Math.ceil(r.value/60))+" 分钟后重置",1)):(o(),i("span",X,l(q(r.value))+"后重置",1))])):f("",!0)]))}};export{Z as _}; diff --git a/web/admin-spa/dist/assets/chart-Cor9iTVD.js b/web/admin-spa/dist/assets/chart-Cor9iTVD.js deleted file mode 100644 index 3cdebdfe..00000000 --- a/web/admin-spa/dist/assets/chart-Cor9iTVD.js +++ /dev/null @@ -1,13 +0,0 @@ -var Jn=Object.defineProperty;var Qn=(i,t,e)=>t in i?Jn(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var M=(i,t,e)=>Qn(i,typeof t!="symbol"?t+"":t,e);import{C as en}from"./vendor-BDiMbLwQ.js";/*! - * Chart.js v4.5.0 - * https://www.chartjs.org - * (c) 2025 Chart.js Contributors - * Released under the MIT License - */function ct(){}const Zn=(()=>{let i=0;return()=>i++})();function O(i){return i==null}function V(i){if(Array.isArray&&Array.isArray(i))return!0;const t=Object.prototype.toString.call(i);return t.slice(0,7)==="[object"&&t.slice(-6)==="Array]"}function T(i){return i!==null&&Object.prototype.toString.call(i)==="[object Object]"}function N(i){return(typeof i=="number"||i instanceof Number)&&isFinite(+i)}function et(i,t){return N(i)?i:t}function D(i,t){return typeof i>"u"?t:i}const to=(i,t)=>typeof i=="string"&&i.endsWith("%")?parseFloat(i)/100:+i/t,sn=(i,t)=>typeof i=="string"&&i.endsWith("%")?parseFloat(i)/100*t:+i;function z(i,t,e){if(i&&typeof i.call=="function")return i.apply(e,t)}function I(i,t,e,s){let n,o,a;if(V(i))for(o=i.length,n=0;ni,x:i=>i.x,y:i=>i.y};function so(i){const t=i.split("."),e=[];let s="";for(const n of t)s+=n,s.endsWith("\\")?s=s.slice(0,-1)+".":(e.push(s),s="");return e}function no(i){const t=so(i);return e=>{for(const s of t){if(s==="")break;e=e&&e[s]}return e}}function _t(i,t){return(Fi[t]||(Fi[t]=no(t)))(i)}function Si(i){return i.charAt(0).toUpperCase()+i.slice(1)}const re=i=>typeof i<"u",yt=i=>typeof i=="function",Bi=(i,t)=>{if(i.size!==t.size)return!1;for(const e of i)if(!t.has(e))return!1;return!0};function oo(i){return i.type==="mouseup"||i.type==="click"||i.type==="contextmenu"}const R=Math.PI,F=2*R,ao=F+R,Fe=Number.POSITIVE_INFINITY,ro=R/180,j=R/2,St=R/4,Vi=R*2/3,mt=Math.log10,lt=Math.sign;function ie(i,t,e){return Math.abs(i-t)n-o).pop(),t}function co(i){return typeof i=="symbol"||typeof i=="object"&&i!==null&&!(Symbol.toPrimitive in i||"toString"in i||"valueOf"in i)}function Wt(i){return!co(i)&&!isNaN(parseFloat(i))&&isFinite(i)}function ho(i,t){const e=Math.round(i);return e-t<=i&&e+t>=i}function on(i,t,e){let s,n,o;for(s=0,n=i.length;sl&&c=Math.min(t,e)-s&&i<=Math.max(t,e)+s}function Pi(i,t,e){e=e||(a=>i[a]1;)o=n+s>>1,e(o)?n=o:s=o;return{lo:n,hi:s}}const ft=(i,t,e,s)=>Pi(i,e,s?n=>{const o=i[n][t];return oi[n][t]Pi(i,e,s=>i[s][t]>=e);function po(i,t,e){let s=0,n=i.length;for(;ss&&i[n-1]>e;)n--;return s>0||n{const s="_onData"+Si(e),n=i[e];Object.defineProperty(i,e,{configurable:!0,enumerable:!1,value(...o){const a=n.apply(this,o);return i._chartjs.listeners.forEach(r=>{typeof r[s]=="function"&&r[s](...o)}),a}})})}function Hi(i,t){const e=i._chartjs;if(!e)return;const s=e.listeners,n=s.indexOf(t);n!==-1&&s.splice(n,1),!(s.length>0)&&(rn.forEach(o=>{delete i[o]}),delete i._chartjs)}function ln(i){const t=new Set(i);return t.size===i.length?i:Array.from(t)}const cn=function(){return typeof window>"u"?function(i){return i()}:window.requestAnimationFrame}();function hn(i,t){let e=[],s=!1;return function(...n){e=n,s||(s=!0,cn.call(window,()=>{s=!1,i.apply(t,e)}))}}function bo(i,t){let e;return function(...s){return t?(clearTimeout(e),e=setTimeout(i,t,s)):i.apply(this,s),t}}const Di=i=>i==="start"?"left":i==="end"?"right":"center",K=(i,t,e)=>i==="start"?t:i==="end"?e:(t+e)/2,xo=(i,t,e,s)=>i===(s?"left":"right")?e:i==="center"?(t+e)/2:t;function dn(i,t,e){const s=t.length;let n=0,o=s;if(i._sorted){const{iScale:a,vScale:r,_parsed:l}=i,c=i.dataset&&i.dataset.options?i.dataset.options.spanGaps:null,h=a.axis,{min:d,max:u,minDefined:f,maxDefined:g}=a.getUserBounds();if(f){if(n=Math.min(ft(l,h,d).lo,e?s:ft(t,h,a.getPixelForValue(d)).lo),c){const p=l.slice(0,n+1).reverse().findIndex(m=>!O(m[r.axis]));n-=Math.max(0,p)}n=Y(n,0,s-1)}if(g){let p=Math.max(ft(l,a.axis,u,!0).hi+1,e?0:ft(t,h,a.getPixelForValue(u),!0).hi+1);if(c){const m=l.slice(p-1).findIndex(b=>!O(b[r.axis]));p+=Math.max(0,m)}o=Y(p,n,s)-n}else o=s-n}return{start:n,count:o}}function un(i){const{xScale:t,yScale:e,_scaleRanges:s}=i,n={xmin:t.min,xmax:t.max,ymin:e.min,ymax:e.max};if(!s)return i._scaleRanges=n,!0;const o=s.xmin!==t.min||s.xmax!==t.max||s.ymin!==e.min||s.ymax!==e.max;return Object.assign(s,n),o}const pe=i=>i===0||i===1,ji=(i,t,e)=>-(Math.pow(2,10*(i-=1))*Math.sin((i-t)*F/e)),$i=(i,t,e)=>Math.pow(2,-10*i)*Math.sin((i-t)*F/e)+1,se={linear:i=>i,easeInQuad:i=>i*i,easeOutQuad:i=>-i*(i-2),easeInOutQuad:i=>(i/=.5)<1?.5*i*i:-.5*(--i*(i-2)-1),easeInCubic:i=>i*i*i,easeOutCubic:i=>(i-=1)*i*i+1,easeInOutCubic:i=>(i/=.5)<1?.5*i*i*i:.5*((i-=2)*i*i+2),easeInQuart:i=>i*i*i*i,easeOutQuart:i=>-((i-=1)*i*i*i-1),easeInOutQuart:i=>(i/=.5)<1?.5*i*i*i*i:-.5*((i-=2)*i*i*i-2),easeInQuint:i=>i*i*i*i*i,easeOutQuint:i=>(i-=1)*i*i*i*i+1,easeInOutQuint:i=>(i/=.5)<1?.5*i*i*i*i*i:.5*((i-=2)*i*i*i*i+2),easeInSine:i=>-Math.cos(i*j)+1,easeOutSine:i=>Math.sin(i*j),easeInOutSine:i=>-.5*(Math.cos(R*i)-1),easeInExpo:i=>i===0?0:Math.pow(2,10*(i-1)),easeOutExpo:i=>i===1?1:-Math.pow(2,-10*i)+1,easeInOutExpo:i=>pe(i)?i:i<.5?.5*Math.pow(2,10*(i*2-1)):.5*(-Math.pow(2,-10*(i*2-1))+2),easeInCirc:i=>i>=1?i:-(Math.sqrt(1-i*i)-1),easeOutCirc:i=>Math.sqrt(1-(i-=1)*i),easeInOutCirc:i=>(i/=.5)<1?-.5*(Math.sqrt(1-i*i)-1):.5*(Math.sqrt(1-(i-=2)*i)+1),easeInElastic:i=>pe(i)?i:ji(i,.075,.3),easeOutElastic:i=>pe(i)?i:$i(i,.075,.3),easeInOutElastic(i){return pe(i)?i:i<.5?.5*ji(i*2,.1125,.45):.5+.5*$i(i*2-1,.1125,.45)},easeInBack(i){return i*i*((1.70158+1)*i-1.70158)},easeOutBack(i){return(i-=1)*i*((1.70158+1)*i+1.70158)+1},easeInOutBack(i){let t=1.70158;return(i/=.5)<1?.5*(i*i*(((t*=1.525)+1)*i-t)):.5*((i-=2)*i*(((t*=1.525)+1)*i+t)+2)},easeInBounce:i=>1-se.easeOutBounce(1-i),easeOutBounce(i){return i<1/2.75?7.5625*i*i:i<2/2.75?7.5625*(i-=1.5/2.75)*i+.75:i<2.5/2.75?7.5625*(i-=2.25/2.75)*i+.9375:7.5625*(i-=2.625/2.75)*i+.984375},easeInOutBounce:i=>i<.5?se.easeInBounce(i*2)*.5:se.easeOutBounce(i*2-1)*.5+.5};function Ci(i){if(i&&typeof i=="object"){const t=i.toString();return t==="[object CanvasPattern]"||t==="[object CanvasGradient]"}return!1}function Yi(i){return Ci(i)?i:new en(i)}function qe(i){return Ci(i)?i:new en(i).saturate(.5).darken(.1).hexString()}const _o=["x","y","borderWidth","radius","tension"],yo=["color","borderColor","backgroundColor"];function vo(i){i.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),i.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:t=>t!=="onProgress"&&t!=="onComplete"&&t!=="fn"}),i.set("animations",{colors:{type:"color",properties:yo},numbers:{type:"number",properties:_o}}),i.describe("animations",{_fallback:"animation"}),i.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:t=>t|0}}}})}function Mo(i){i.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const Ui=new Map;function ko(i,t){t=t||{};const e=i+JSON.stringify(t);let s=Ui.get(e);return s||(s=new Intl.NumberFormat(i,t),Ui.set(e,s)),s}function fe(i,t,e){return ko(t,e).format(i)}const fn={values(i){return V(i)?i:""+i},numeric(i,t,e){if(i===0)return"0";const s=this.chart.options.locale;let n,o=i;if(e.length>1){const c=Math.max(Math.abs(e[0].value),Math.abs(e[e.length-1].value));(c<1e-4||c>1e15)&&(n="scientific"),o=So(i,e)}const a=mt(Math.abs(o)),r=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:n,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(l,this.options.ticks.format),fe(i,s,l)},logarithmic(i,t,e){if(i===0)return"0";const s=e[t].significand||i/Math.pow(10,Math.floor(mt(i)));return[1,2,3,5,10,15].includes(s)||t>.8*e.length?fn.numeric.call(this,i,t,e):""}};function So(i,t){let e=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;return Math.abs(e)>=1&&i!==Math.floor(i)&&(e=i-Math.floor(i)),e}var je={formatters:fn};function wo(i){i.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(t,e)=>e.lineWidth,tickColor:(t,e)=>e.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:je.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),i.route("scale.ticks","color","","color"),i.route("scale.grid","color","","borderColor"),i.route("scale.border","color","","borderColor"),i.route("scale.title","color","","color"),i.describe("scale",{_fallback:!1,_scriptable:t=>!t.startsWith("before")&&!t.startsWith("after")&&t!=="callback"&&t!=="parser",_indexable:t=>t!=="borderDash"&&t!=="tickBorderDash"&&t!=="dash"}),i.describe("scales",{_fallback:"scale"}),i.describe("scale.ticks",{_scriptable:t=>t!=="backdropPadding"&&t!=="callback",_indexable:t=>t!=="backdropPadding"})}const Rt=Object.create(null),hi=Object.create(null);function ne(i,t){if(!t)return i;const e=t.split(".");for(let s=0,n=e.length;ss.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(s,n)=>qe(n.backgroundColor),this.hoverBorderColor=(s,n)=>qe(n.borderColor),this.hoverColor=(s,n)=>qe(n.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(t),this.apply(e)}set(t,e){return Je(this,t,e)}get(t){return ne(this,t)}describe(t,e){return Je(hi,t,e)}override(t,e){return Je(Rt,t,e)}route(t,e,s,n){const o=ne(this,t),a=ne(this,s),r="_"+e;Object.defineProperties(o,{[r]:{value:o[e],writable:!0},[e]:{enumerable:!0,get(){const l=this[r],c=a[n];return T(l)?Object.assign({},c,l):D(l,c)},set(l){this[r]=l}}})}apply(t){t.forEach(e=>e(this))}}var W=new Po({_scriptable:i=>!i.startsWith("on"),_indexable:i=>i!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[vo,Mo,wo]);function Do(i){return!i||O(i.size)||O(i.family)?null:(i.style?i.style+" ":"")+(i.weight?i.weight+" ":"")+i.size+"px "+i.family}function Be(i,t,e,s,n){let o=t[n];return o||(o=t[n]=i.measureText(n).width,e.push(n)),o>s&&(s=o),s}function Co(i,t,e,s){s=s||{};let n=s.data=s.data||{},o=s.garbageCollect=s.garbageCollect||[];s.font!==t&&(n=s.data={},o=s.garbageCollect=[],s.font=t),i.save(),i.font=t;let a=0;const r=e.length;let l,c,h,d,u;for(l=0;le.length){for(l=0;l0&&i.stroke()}}function gt(i,t,e){return e=e||.5,!t||i&&i.x>t.left-e&&i.xt.top-e&&i.y0&&o.strokeColor!=="";let l,c;for(i.save(),i.font=n.string,To(i,o),l=0;l+i||0;function Ai(i,t){const e={},s=T(t),n=s?Object.keys(t):t,o=T(i)?s?a=>D(i[a],i[t[a]]):a=>i[a]:()=>i;for(const a of n)e[a]=Fo(o(a));return e}function pn(i){return Ai(i,{top:"y",right:"x",bottom:"y",left:"x"})}function Tt(i){return Ai(i,["topLeft","topRight","bottomLeft","bottomRight"])}function J(i){const t=pn(i);return t.width=t.left+t.right,t.height=t.top+t.bottom,t}function $(i,t){i=i||{},t=t||W.font;let e=D(i.size,t.size);typeof e=="string"&&(e=parseInt(e,10));let s=D(i.style,t.style);s&&!(""+s).match(Eo)&&(console.warn('Invalid font style specified: "'+s+'"'),s=void 0);const n={family:D(i.family,t.family),lineHeight:zo(D(i.lineHeight,t.lineHeight),e),size:e,style:s,weight:D(i.weight,t.weight),string:""};return n.string=Do(n),n}function qt(i,t,e,s){let n,o,a;for(n=0,o=i.length;ne&&r===0?0:r+l;return{min:a(s,-Math.abs(o)),max:a(n,o)}}function vt(i,t){return Object.assign(Object.create(i),t)}function Oi(i,t=[""],e,s,n=()=>i[0]){const o=e||i;typeof s>"u"&&(s=_n("_fallback",i));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:i,_rootScopes:o,_fallback:s,_getTarget:n,override:r=>Oi([r,...i],t,o,s)};return new Proxy(a,{deleteProperty(r,l){return delete r[l],delete r._keys,delete i[0][l],!0},get(r,l){return bn(r,l,()=>Uo(l,t,i,r))},getOwnPropertyDescriptor(r,l){return Reflect.getOwnPropertyDescriptor(r._scopes[0],l)},getPrototypeOf(){return Reflect.getPrototypeOf(i[0])},has(r,l){return Gi(r).includes(l)},ownKeys(r){return Gi(r)},set(r,l,c){const h=r._storage||(r._storage=n());return r[l]=h[l]=c,delete r._keys,!0}})}function Nt(i,t,e,s){const n={_cacheable:!1,_proxy:i,_context:t,_subProxy:e,_stack:new Set,_descriptors:mn(i,s),setContext:o=>Nt(i,o,e,s),override:o=>Nt(i.override(o),t,e,s)};return new Proxy(n,{deleteProperty(o,a){return delete o[a],delete i[a],!0},get(o,a,r){return bn(o,a,()=>Wo(o,a,r))},getOwnPropertyDescriptor(o,a){return o._descriptors.allKeys?Reflect.has(i,a)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(i,a)},getPrototypeOf(){return Reflect.getPrototypeOf(i)},has(o,a){return Reflect.has(i,a)},ownKeys(){return Reflect.ownKeys(i)},set(o,a,r){return i[a]=r,delete o[a],!0}})}function mn(i,t={scriptable:!0,indexable:!0}){const{_scriptable:e=t.scriptable,_indexable:s=t.indexable,_allKeys:n=t.allKeys}=i;return{allKeys:n,scriptable:e,indexable:s,isScriptable:yt(e)?e:()=>e,isIndexable:yt(s)?s:()=>s}}const Vo=(i,t)=>i?i+Si(t):t,Ti=(i,t)=>T(t)&&i!=="adapters"&&(Object.getPrototypeOf(t)===null||t.constructor===Object);function bn(i,t,e){if(Object.prototype.hasOwnProperty.call(i,t)||t==="constructor")return i[t];const s=e();return i[t]=s,s}function Wo(i,t,e){const{_proxy:s,_context:n,_subProxy:o,_descriptors:a}=i;let r=s[t];return yt(r)&&a.isScriptable(t)&&(r=No(t,r,i,e)),V(r)&&r.length&&(r=Ho(t,r,i,a.isIndexable)),Ti(t,r)&&(r=Nt(r,n,o&&o[t],a)),r}function No(i,t,e,s){const{_proxy:n,_context:o,_subProxy:a,_stack:r}=e;if(r.has(i))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+i);r.add(i);let l=t(o,a||s);return r.delete(i),Ti(i,l)&&(l=Li(n._scopes,n,i,l)),l}function Ho(i,t,e,s){const{_proxy:n,_context:o,_subProxy:a,_descriptors:r}=e;if(typeof o.index<"u"&&s(i))return t[o.index%t.length];if(T(t[0])){const l=t,c=n._scopes.filter(h=>h!==l);t=[];for(const h of l){const d=Li(c,n,i,h);t.push(Nt(d,o,a&&a[i],r))}}return t}function xn(i,t,e){return yt(i)?i(t,e):i}const jo=(i,t)=>i===!0?t:typeof i=="string"?_t(t,i):void 0;function $o(i,t,e,s,n){for(const o of t){const a=jo(e,o);if(a){i.add(a);const r=xn(a._fallback,e,n);if(typeof r<"u"&&r!==e&&r!==s)return r}else if(a===!1&&typeof s<"u"&&e!==s)return null}return!1}function Li(i,t,e,s){const n=t._rootScopes,o=xn(t._fallback,e,s),a=[...i,...n],r=new Set;r.add(s);let l=Ki(r,a,e,o||e,s);return l===null||typeof o<"u"&&o!==e&&(l=Ki(r,a,o,l,s),l===null)?!1:Oi(Array.from(r),[""],n,o,()=>Yo(t,e,s))}function Ki(i,t,e,s,n){for(;e;)e=$o(i,t,e,s,n);return e}function Yo(i,t,e){const s=i._getTarget();t in s||(s[t]={});const n=s[t];return V(n)&&T(e)?e:n||{}}function Uo(i,t,e,s){let n;for(const o of t)if(n=_n(Vo(o,i),e),typeof n<"u")return Ti(i,n)?Li(e,s,i,n):n}function _n(i,t){for(const e of t){if(!e)continue;const s=e[i];if(typeof s<"u")return s}}function Gi(i){let t=i._keys;return t||(t=i._keys=Xo(i._scopes)),t}function Xo(i){const t=new Set;for(const e of i)for(const s of Object.keys(e).filter(n=>!n.startsWith("_")))t.add(s);return Array.from(t)}function yn(i,t,e,s){const{iScale:n}=i,{key:o="r"}=this._parsing,a=new Array(s);let r,l,c,h;for(r=0,l=s;rti==="x"?"y":"x";function Go(i,t,e,s){const n=i.skip?t:i,o=t,a=e.skip?t:e,r=ci(o,n),l=ci(a,o);let c=r/(r+l),h=l/(r+l);c=isNaN(c)?0:c,h=isNaN(h)?0:h;const d=s*c,u=s*h;return{previous:{x:o.x-d*(a.x-n.x),y:o.y-d*(a.y-n.y)},next:{x:o.x+u*(a.x-n.x),y:o.y+u*(a.y-n.y)}}}function qo(i,t,e){const s=i.length;let n,o,a,r,l,c=Ht(i,0);for(let h=0;h!c.skip)),t.cubicInterpolationMode==="monotone")Qo(i,n);else{let c=s?i[i.length-1]:i[0];for(o=0,a=i.length;oi.ownerDocument.defaultView.getComputedStyle(i,null);function ea(i,t){return Ue(i).getPropertyValue(t)}const ia=["top","right","bottom","left"];function Lt(i,t,e){const s={};e=e?"-"+e:"";for(let n=0;n<4;n++){const o=ia[n];s[o]=parseFloat(i[t+"-"+o+e])||0}return s.width=s.left+s.right,s.height=s.top+s.bottom,s}const sa=(i,t,e)=>(i>0||t>0)&&(!e||!e.shadowRoot);function na(i,t){const e=i.touches,s=e&&e.length?e[0]:i,{offsetX:n,offsetY:o}=s;let a=!1,r,l;if(sa(n,o,i.target))r=n,l=o;else{const c=t.getBoundingClientRect();r=s.clientX-c.left,l=s.clientY-c.top,a=!0}return{x:r,y:l,box:a}}function Ct(i,t){if("native"in i)return i;const{canvas:e,currentDevicePixelRatio:s}=t,n=Ue(e),o=n.boxSizing==="border-box",a=Lt(n,"padding"),r=Lt(n,"border","width"),{x:l,y:c,box:h}=na(i,e),d=a.left+(h&&r.left),u=a.top+(h&&r.top);let{width:f,height:g}=t;return o&&(f-=a.width+r.width,g-=a.height+r.height),{x:Math.round((l-d)/f*e.width/s),y:Math.round((c-u)/g*e.height/s)}}function oa(i,t,e){let s,n;if(t===void 0||e===void 0){const o=i&&Ii(i);if(!o)t=i.clientWidth,e=i.clientHeight;else{const a=o.getBoundingClientRect(),r=Ue(o),l=Lt(r,"border","width"),c=Lt(r,"padding");t=a.width-c.width-l.width,e=a.height-c.height-l.height,s=Ve(r.maxWidth,o,"clientWidth"),n=Ve(r.maxHeight,o,"clientHeight")}}return{width:t,height:e,maxWidth:s||Fe,maxHeight:n||Fe}}const be=i=>Math.round(i*10)/10;function aa(i,t,e,s){const n=Ue(i),o=Lt(n,"margin"),a=Ve(n.maxWidth,i,"clientWidth")||Fe,r=Ve(n.maxHeight,i,"clientHeight")||Fe,l=oa(i,t,e);let{width:c,height:h}=l;if(n.boxSizing==="content-box"){const u=Lt(n,"border","width"),f=Lt(n,"padding");c-=f.width+u.width,h-=f.height+u.height}return c=Math.max(0,c-o.width),h=Math.max(0,s?c/s:h-o.height),c=be(Math.min(c,a,l.maxWidth)),h=be(Math.min(h,r,l.maxHeight)),c&&!h&&(h=be(c/2)),(t!==void 0||e!==void 0)&&s&&l.height&&h>l.height&&(h=l.height,c=be(Math.floor(h*s))),{width:c,height:h}}function qi(i,t,e){const s=t||1,n=Math.floor(i.height*s),o=Math.floor(i.width*s);i.height=Math.floor(i.height),i.width=Math.floor(i.width);const a=i.canvas;return a.style&&(e||!a.style.height&&!a.style.width)&&(a.style.height=`${i.height}px`,a.style.width=`${i.width}px`),i.currentDevicePixelRatio!==s||a.height!==n||a.width!==o?(i.currentDevicePixelRatio=s,a.height=n,a.width=o,i.ctx.setTransform(s,0,0,s,0,0),!0):!1}const ra=function(){let i=!1;try{const t={get passive(){return i=!0,!1}};Ri()&&(window.addEventListener("test",null,t),window.removeEventListener("test",null,t))}catch{}return i}();function Ji(i,t){const e=ea(i,t),s=e&&e.match(/^(\d+)(\.\d+)?px$/);return s?+s[1]:void 0}function At(i,t,e,s){return{x:i.x+e*(t.x-i.x),y:i.y+e*(t.y-i.y)}}function la(i,t,e,s){return{x:i.x+e*(t.x-i.x),y:s==="middle"?e<.5?i.y:t.y:s==="after"?e<1?i.y:t.y:e>0?t.y:i.y}}function ca(i,t,e,s){const n={x:i.cp2x,y:i.cp2y},o={x:t.cp1x,y:t.cp1y},a=At(i,n,e),r=At(n,o,e),l=At(o,t,e),c=At(a,r,e),h=At(r,l,e);return At(c,h,e)}const ha=function(i,t){return{x(e){return i+i+t-e},setWidth(e){t=e},textAlign(e){return e==="center"?e:e==="right"?"left":"right"},xPlus(e,s){return e-s},leftForLtr(e,s){return e-s}}},da=function(){return{x(i){return i},setWidth(i){},textAlign(i){return i},xPlus(i,t){return i+t},leftForLtr(i,t){return i}}};function Vt(i,t,e){return i?ha(t,e):da()}function Mn(i,t){let e,s;(t==="ltr"||t==="rtl")&&(e=i.canvas.style,s=[e.getPropertyValue("direction"),e.getPropertyPriority("direction")],e.setProperty("direction",t,"important"),i.prevTextDirection=s)}function kn(i,t){t!==void 0&&(delete i.prevTextDirection,i.canvas.style.setProperty("direction",t[0],t[1]))}function Sn(i){return i==="angle"?{between:le,compare:uo,normalize:G}:{between:ut,compare:(t,e)=>t-e,normalize:t=>t}}function Qi({start:i,end:t,count:e,loop:s,style:n}){return{start:i%e,end:t%e,loop:s&&(t-i+1)%e===0,style:n}}function ua(i,t,e){const{property:s,start:n,end:o}=e,{between:a,normalize:r}=Sn(s),l=t.length;let{start:c,end:h,loop:d}=i,u,f;if(d){for(c+=l,h+=l,u=0,f=l;ul(n,v,b)&&r(n,v)!==0,_=()=>r(o,b)===0||l(o,v,b),k=()=>p||y(),S=()=>!p||_();for(let w=h,P=h;w<=d;++w)x=t[w%a],!x.skip&&(b=c(x[s]),b!==v&&(p=l(b,n,o),m===null&&k()&&(m=r(b,n)===0?w:P),m!==null&&S()&&(g.push(Qi({start:m,end:w,loop:u,count:a,style:f})),m=null),P=w,v=b));return m!==null&&g.push(Qi({start:m,end:d,loop:u,count:a,style:f})),g}function Pn(i,t){const e=[],s=i.segments;for(let n=0;nn&&i[o%t].skip;)o--;return o%=t,{start:n,end:o}}function ga(i,t,e,s){const n=i.length,o=[];let a=t,r=i[t],l;for(l=t+1;l<=e;++l){const c=i[l%n];c.skip||c.stop?r.skip||(s=!1,o.push({start:t%n,end:(l-1)%n,loop:s}),t=a=c.stop?l:null):(a=l,r.skip&&(t=l)),r=c}return a!==null&&o.push({start:t%n,end:a%n,loop:s}),o}function pa(i,t){const e=i.points,s=i.options.spanGaps,n=e.length;if(!n)return[];const o=!!i._loop,{start:a,end:r}=fa(e,n,o,s);if(s===!0)return Zi(i,[{start:a,end:r,loop:o}],e,t);const l=rr({chart:t,initial:e.initial,numSteps:a,currentStep:Math.min(s-e.start,a)}))}_refresh(){this._request||(this._running=!0,this._request=cn.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(t=Date.now()){let e=0;this._charts.forEach((s,n)=>{if(!s.running||!s.items.length)return;const o=s.items;let a=o.length-1,r=!1,l;for(;a>=0;--a)l=o[a],l._active?(l._total>s.duration&&(s.duration=l._total),l.tick(t),r=!0):(o[a]=o[o.length-1],o.pop());r&&(n.draw(),this._notify(n,s,t,"progress")),o.length||(s.running=!1,this._notify(n,s,t,"complete"),s.initial=!1),e+=o.length}),this._lastDate=t,e===0&&(this._running=!1)}_getAnims(t){const e=this._charts;let s=e.get(t);return s||(s={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},e.set(t,s)),s}listen(t,e,s){this._getAnims(t).listeners[e].push(s)}add(t,e){!e||!e.length||this._getAnims(t).items.push(...e)}has(t){return this._getAnims(t).items.length>0}start(t){const e=this._charts.get(t);e&&(e.running=!0,e.start=Date.now(),e.duration=e.items.reduce((s,n)=>Math.max(s,n._duration),0),this._refresh())}running(t){if(!this._running)return!1;const e=this._charts.get(t);return!(!e||!e.running||!e.items.length)}stop(t){const e=this._charts.get(t);if(!e||!e.items.length)return;const s=e.items;let n=s.length-1;for(;n>=0;--n)s[n].cancel();e.items=[],this._notify(t,e,Date.now(),"complete")}remove(t){return this._charts.delete(t)}}var ht=new _a;const es="transparent",ya={boolean(i,t,e){return e>.5?t:i},color(i,t,e){const s=Yi(i||es),n=s.valid&&Yi(t||es);return n&&n.valid?n.mix(s,e).hexString():t},number(i,t,e){return i+(t-i)*e}};class va{constructor(t,e,s,n){const o=e[s];n=qt([t.to,n,o,t.from]);const a=qt([t.from,o,n]);this._active=!0,this._fn=t.fn||ya[t.type||typeof a],this._easing=se[t.easing]||se.linear,this._start=Math.floor(Date.now()+(t.delay||0)),this._duration=this._total=Math.floor(t.duration),this._loop=!!t.loop,this._target=e,this._prop=s,this._from=a,this._to=n,this._promises=void 0}active(){return this._active}update(t,e,s){if(this._active){this._notify(!1);const n=this._target[this._prop],o=s-this._start,a=this._duration-o;this._start=s,this._duration=Math.floor(Math.max(a,t.duration)),this._total+=o,this._loop=!!t.loop,this._to=qt([t.to,e,n,t.from]),this._from=qt([t.from,n,e])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(t){const e=t-this._start,s=this._duration,n=this._prop,o=this._from,a=this._loop,r=this._to;let l;if(this._active=o!==r&&(a||e1?2-l:l,l=this._easing(Math.min(1,Math.max(0,l))),this._target[n]=this._fn(o,r,l)}wait(){const t=this._promises||(this._promises=[]);return new Promise((e,s)=>{t.push({res:e,rej:s})})}_notify(t){const e=t?"res":"rej",s=this._promises||[];for(let n=0;n{const o=t[n];if(!T(o))return;const a={};for(const r of e)a[r]=o[r];(V(o.properties)&&o.properties||[n]).forEach(r=>{(r===n||!s.has(r))&&s.set(r,a)})})}_animateOptions(t,e){const s=e.options,n=ka(t,s);if(!n)return[];const o=this._createAnimations(n,s);return s.$shared&&Ma(t.options.$animations,s).then(()=>{t.options=s},()=>{}),o}_createAnimations(t,e){const s=this._properties,n=[],o=t.$animations||(t.$animations={}),a=Object.keys(e),r=Date.now();let l;for(l=a.length-1;l>=0;--l){const c=a[l];if(c.charAt(0)==="$")continue;if(c==="options"){n.push(...this._animateOptions(t,e));continue}const h=e[c];let d=o[c];const u=s.get(c);if(d)if(u&&d.active()){d.update(u,h,r);continue}else d.cancel();if(!u||!u.duration){t[c]=h;continue}o[c]=d=new va(u,t,c,h),n.push(d)}return n}update(t,e){if(this._properties.size===0){Object.assign(t,e);return}const s=this._createAnimations(t,e);if(s.length)return ht.add(this._chart,s),!0}}function Ma(i,t){const e=[],s=Object.keys(t);for(let n=0;n0||!e&&o<0)return n.index}return null}function os(i,t){const{chart:e,_cachedMeta:s}=i,n=e._stacks||(e._stacks={}),{iScale:o,vScale:a,index:r}=s,l=o.axis,c=a.axis,h=Da(o,a,s),d=t.length;let u;for(let f=0;fe[s].axis===t).shift()}function Oa(i,t){return vt(i,{active:!1,dataset:void 0,datasetIndex:t,index:t,mode:"default",type:"dataset"})}function Ta(i,t,e){return vt(i,{active:!1,dataIndex:t,parsed:void 0,raw:void 0,element:e,index:t,mode:"default",type:"data"})}function Yt(i,t){const e=i.controller.index,s=i.vScale&&i.vScale.axis;if(s){t=t||i._parsed;for(const n of t){const o=n._stacks;if(!o||o[s]===void 0||o[s][e]===void 0)return;delete o[s][e],o[s]._visualValues!==void 0&&o[s]._visualValues[e]!==void 0&&delete o[s]._visualValues[e]}}}const ti=i=>i==="reset"||i==="none",as=(i,t)=>t?i:Object.assign({},i),La=(i,t,e)=>i&&!t.hidden&&t._stacked&&{keys:An(e,!0),values:null};class nt{constructor(t,e){this.chart=t,this._ctx=t.ctx,this.index=e,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const t=this._cachedMeta;this.configure(),this.linkScales(),t._stacked=Qe(t.vScale,t),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(t){this.index!==t&&Yt(this._cachedMeta),this.index=t}linkScales(){const t=this.chart,e=this._cachedMeta,s=this.getDataset(),n=(d,u,f,g)=>d==="x"?u:d==="r"?g:f,o=e.xAxisID=D(s.xAxisID,Ze(t,"x")),a=e.yAxisID=D(s.yAxisID,Ze(t,"y")),r=e.rAxisID=D(s.rAxisID,Ze(t,"r")),l=e.indexAxis,c=e.iAxisID=n(l,o,a,r),h=e.vAxisID=n(l,a,o,r);e.xScale=this.getScaleForId(o),e.yScale=this.getScaleForId(a),e.rScale=this.getScaleForId(r),e.iScale=this.getScaleForId(c),e.vScale=this.getScaleForId(h)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(t){return this.chart.scales[t]}_getOtherScale(t){const e=this._cachedMeta;return t===e.iScale?e.vScale:e.iScale}reset(){this._update("reset")}_destroy(){const t=this._cachedMeta;this._data&&Hi(this._data,this),t._stacked&&Yt(t)}_dataCheck(){const t=this.getDataset(),e=t.data||(t.data=[]),s=this._data;if(T(e)){const n=this._cachedMeta;this._data=Pa(e,n)}else if(s!==e){if(s){Hi(s,this);const n=this._cachedMeta;Yt(n),n._parsed=[]}e&&Object.isExtensible(e)&&mo(e,this),this._syncList=[],this._data=e}}addElements(){const t=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(t.dataset=new this.datasetElementType)}buildOrUpdateElements(t){const e=this._cachedMeta,s=this.getDataset();let n=!1;this._dataCheck();const o=e._stacked;e._stacked=Qe(e.vScale,e),e.stack!==s.stack&&(n=!0,Yt(e),e.stack=s.stack),this._resyncElements(t),(n||o!==e._stacked)&&(os(this,e._parsed),e._stacked=Qe(e.vScale,e))}configure(){const t=this.chart.config,e=t.datasetScopeKeys(this._type),s=t.getOptionScopes(this.getDataset(),e,!0);this.options=t.createResolver(s,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(t,e){const{_cachedMeta:s,_data:n}=this,{iScale:o,_stacked:a}=s,r=o.axis;let l=t===0&&e===n.length?!0:s._sorted,c=t>0&&s._parsed[t-1],h,d,u;if(this._parsing===!1)s._parsed=n,s._sorted=!0,u=n;else{V(n[t])?u=this.parseArrayData(s,n,t,e):T(n[t])?u=this.parseObjectData(s,n,t,e):u=this.parsePrimitiveData(s,n,t,e);const f=()=>d[r]===null||c&&d[r]p||d=0;--u)if(!g()){this.updateRangeFromParsed(c,t,f,l);break}}return c}getAllParsedValues(t){const e=this._cachedMeta._parsed,s=[];let n,o,a;for(n=0,o=e.length;n=0&&tthis.getContext(s,n,e),p=c.resolveNamedOptions(u,f,g,d);return p.$shared&&(p.$shared=l,o[a]=Object.freeze(as(p,l))),p}_resolveAnimations(t,e,s){const n=this.chart,o=this._cachedDataOpts,a=`animation-${e}`,r=o[a];if(r)return r;let l;if(n.options.animation!==!1){const h=this.chart.config,d=h.datasetAnimationScopeKeys(this._type,e),u=h.getOptionScopes(this.getDataset(),d);l=h.createResolver(u,this.getContext(t,s,e))}const c=new Cn(n,l&&l.animations);return l&&l._cacheable&&(o[a]=Object.freeze(c)),c}getSharedOptions(t){if(t.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},t))}includeOptions(t,e){return!e||ti(t)||this.chart._animationsDisabled}_getSharedOptions(t,e){const s=this.resolveDataElementOptions(t,e),n=this._sharedOptions,o=this.getSharedOptions(s),a=this.includeOptions(e,o)||o!==n;return this.updateSharedOptions(o,e,s),{sharedOptions:o,includeOptions:a}}updateElement(t,e,s,n){ti(n)?Object.assign(t,s):this._resolveAnimations(e,n).update(t,s)}updateSharedOptions(t,e,s){t&&!ti(e)&&this._resolveAnimations(void 0,e).update(t,s)}_setStyle(t,e,s,n){t.active=n;const o=this.getStyle(e,n);this._resolveAnimations(e,s,n).update(t,{options:!n&&this.getSharedOptions(o)||o})}removeHoverStyle(t,e,s){this._setStyle(t,s,"active",!1)}setHoverStyle(t,e,s){this._setStyle(t,s,"active",!0)}_removeDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!1)}_setDatasetHoverStyle(){const t=this._cachedMeta.dataset;t&&this._setStyle(t,void 0,"active",!0)}_resyncElements(t){const e=this._data,s=this._cachedMeta.data;for(const[r,l,c]of this._syncList)this[r](l,c);this._syncList=[];const n=s.length,o=e.length,a=Math.min(o,n);a&&this.parse(0,a),o>n?this._insertElements(n,o-n,t):o{for(c.length+=e,r=c.length-1;r>=a;r--)c[r]=c[r-e]};for(l(o),r=t;rn-o))}return i._cache.$bar}function Ia(i){const t=i.iScale,e=Ra(t,i.type);let s=t._length,n,o,a,r;const l=()=>{a===32767||a===-32768||(re(r)&&(s=Math.min(s,Math.abs(a-r)||s)),r=a)};for(n=0,o=e.length;n0?n[i-1]:null,r=iMath.abs(r)&&(l=r,c=a),t[e.axis]=c,t._custom={barStart:l,barEnd:c,start:n,end:o,min:a,max:r}}function On(i,t,e,s){return V(i)?Fa(i,t,e,s):t[e.axis]=e.parse(i,s),t}function rs(i,t,e,s){const n=i.iScale,o=i.vScale,a=n.getLabels(),r=n===o,l=[];let c,h,d,u;for(c=e,h=e+s;c=e?1:-1)}function Va(i){let t,e,s,n,o;return i.horizontal?(t=i.base>i.x,e="left",s="right"):(t=i.baseh.controller.options.grouped),o=s.options.stacked,a=[],r=this._cachedMeta.controller.getParsed(e),l=r&&r[s.axis],c=h=>{const d=h._parsed.find(f=>f[s.axis]===l),u=d&&d[h.vScale.axis];if(O(u)||isNaN(u))return!0};for(const h of n)if(!(e!==void 0&&c(h))&&((o===!1||a.indexOf(h.stack)===-1||o===void 0&&h.stack===void 0)&&a.push(h.stack),h.index===t))break;return a.length||a.push(void 0),a}_getStackCount(t){return this._getStacks(void 0,t).length}_getAxisCount(){return this._getAxis().length}getFirstScaleIdForIndexAxis(){const t=this.chart.scales,e=this.chart.options.indexAxis;return Object.keys(t).filter(s=>t[s].axis===e).shift()}_getAxis(){const t={},e=this.getFirstScaleIdForIndexAxis();for(const s of this.chart.data.datasets)t[D(this.chart.options.indexAxis==="x"?s.xAxisID:s.yAxisID,e)]=!0;return Object.keys(t)}_getStackIndex(t,e,s){const n=this._getStacks(t,s),o=e!==void 0?n.indexOf(e):-1;return o===-1?n.length-1:o}_getRuler(){const t=this.options,e=this._cachedMeta,s=e.iScale,n=[];let o,a;for(o=0,a=e.data.length;o=0;--s)e=Math.max(e,t[s].size(this.resolveDataElementOptions(s))/2);return e>0&&e}getLabelAndValue(t){const e=this._cachedMeta,s=this.chart.data.labels||[],{xScale:n,yScale:o}=e,a=this.getParsed(t),r=n.getLabelForValue(a.x),l=o.getLabelForValue(a.y),c=a._custom;return{label:s[t]||"",value:"("+r+", "+l+(c?", "+c:"")+")"}}update(t){const e=this._cachedMeta.data;this.updateElements(e,0,e.length,t)}updateElements(t,e,s,n){const o=n==="reset",{iScale:a,vScale:r}=this._cachedMeta,{sharedOptions:l,includeOptions:c}=this._getSharedOptions(e,n),h=a.axis,d=r.axis;for(let u=e;ule(v,r,l,!0)?1:Math.max(y,y*e,_,_*e),g=(v,y,_)=>le(v,r,l,!0)?-1:Math.min(y,y*e,_,_*e),p=f(0,c,d),m=f(j,h,u),b=g(R,c,d),x=g(R+j,h,u);s=(p-b)/2,n=(m-x)/2,o=-(p+b)/2,a=-(m+x)/2}return{ratioX:s,ratioY:n,offsetX:o,offsetY:a}}class Ot extends nt{constructor(t,e){super(t,e),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(t,e){const s=this.getDataset().data,n=this._cachedMeta;if(this._parsing===!1)n._parsed=s;else{let o=l=>+s[l];if(T(s[t])){const{key:l="value"}=this._parsing;o=c=>+_t(s[c],l)}let a,r;for(a=t,r=t+e;a0&&!isNaN(t)?F*(Math.abs(t)/e):0}getLabelAndValue(t){const e=this._cachedMeta,s=this.chart,n=s.data.labels||[],o=fe(e._parsed[t],s.options.locale);return{label:n[t]||"",value:o}}getMaxBorderWidth(t){let e=0;const s=this.chart;let n,o,a,r,l;if(!t){for(n=0,o=s.data.datasets.length;nt!=="spacing",_indexable:t=>t!=="spacing"&&!t.startsWith("borderDash")&&!t.startsWith("hoverBorderDash")}),M(Ot,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:s,color:n}}=t.legend.options;return e.labels.map((o,a)=>{const l=t.getDatasetMeta(0).controller.getStyle(a);return{text:o,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:n,lineWidth:l.borderWidth,pointStyle:s,hidden:!t.getDataVisibility(a),index:a}})}return[]}},onClick(t,e,s){s.chart.toggleDataVisibility(e.index),s.chart.update()}}}});class Ce extends nt{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(t){const e=this._cachedMeta,{dataset:s,data:n=[],_dataset:o}=e,a=this.chart._animationsDisabled;let{start:r,count:l}=dn(e,n,a);this._drawStart=r,this._drawCount=l,un(e)&&(r=0,l=n.length),s._chart=this.chart,s._datasetIndex=this.index,s._decimated=!!o._decimated,s.points=n;const c=this.resolveDatasetElementOptions(t);this.options.showLine||(c.borderWidth=0),c.segment=this.options.segment,this.updateElement(s,void 0,{animated:!a,options:c},t),this.updateElements(n,r,l,t)}updateElements(t,e,s,n){const o=n==="reset",{iScale:a,vScale:r,_stacked:l,_dataset:c}=this._cachedMeta,{sharedOptions:h,includeOptions:d}=this._getSharedOptions(e,n),u=a.axis,f=r.axis,{spanGaps:g,segment:p}=this.options,m=Wt(g)?g:Number.POSITIVE_INFINITY,b=this.chart._animationsDisabled||o||n==="none",x=e+s,v=t.length;let y=e>0&&this.getParsed(e-1);for(let _=0;_=x){S.skip=!0;continue}const w=this.getParsed(_),P=O(w[f]),C=S[u]=a.getPixelForValue(w[u],_),A=S[f]=o||P?r.getBasePixel():r.getPixelForValue(l?this.applyStack(r,w,l):w[f],_);S.skip=isNaN(C)||isNaN(A)||P,S.stop=_>0&&Math.abs(w[u]-y[u])>m,p&&(S.parsed=w,S.raw=c.data[_]),d&&(S.options=h||this.resolveDataElementOptions(_,k.active?"active":n)),b||this.updateElement(k,_,S,n),y=w}}getMaxOverflow(){const t=this._cachedMeta,e=t.dataset,s=e.options&&e.options.borderWidth||0,n=t.data||[];if(!n.length)return s;const o=n[0].size(this.resolveDataElementOptions(0)),a=n[n.length-1].size(this.resolveDataElementOptions(n.length-1));return Math.max(s,o,a)/2}draw(){const t=this._cachedMeta;t.dataset.updateControlPoints(this.chart.chartArea,t.iScale.axis),super.draw()}}M(Ce,"id","line"),M(Ce,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),M(Ce,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});class oe extends nt{constructor(t,e){super(t,e),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(t){const e=this._cachedMeta,s=this.chart,n=s.data.labels||[],o=fe(e._parsed[t].r,s.options.locale);return{label:n[t]||"",value:o}}parseObjectData(t,e,s,n){return yn.bind(this)(t,e,s,n)}update(t){const e=this._cachedMeta.data;this._updateRadius(),this.updateElements(e,0,e.length,t)}getMinMax(){const t=this._cachedMeta,e={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return t.data.forEach((s,n)=>{const o=this.getParsed(n).r;!isNaN(o)&&this.chart.getDataVisibility(n)&&(oe.max&&(e.max=o))}),e}_updateRadius(){const t=this.chart,e=t.chartArea,s=t.options,n=Math.min(e.right-e.left,e.bottom-e.top),o=Math.max(n/2,0),a=Math.max(s.cutoutPercentage?o/100*s.cutoutPercentage:1,0),r=(o-a)/t.getVisibleDatasetCount();this.outerRadius=o-r*this.index,this.innerRadius=this.outerRadius-r}updateElements(t,e,s,n){const o=n==="reset",a=this.chart,l=a.options.animation,c=this._cachedMeta.rScale,h=c.xCenter,d=c.yCenter,u=c.getIndexAngle(0)-.5*R;let f=u,g;const p=360/this.countVisibleElements();for(g=0;g{!isNaN(this.getParsed(n).r)&&this.chart.getDataVisibility(n)&&e++}),e}_computeAngle(t,e,s){return this.chart.getDataVisibility(t)?st(this.resolveDataElementOptions(t,e).angle||s):0}}M(oe,"id","polarArea"),M(oe,"defaults",{dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0}),M(oe,"overrides",{aspectRatio:1,plugins:{legend:{labels:{generateLabels(t){const e=t.data;if(e.labels.length&&e.datasets.length){const{labels:{pointStyle:s,color:n}}=t.legend.options;return e.labels.map((o,a)=>{const l=t.getDatasetMeta(0).controller.getStyle(a);return{text:o,fillStyle:l.backgroundColor,strokeStyle:l.borderColor,fontColor:n,lineWidth:l.borderWidth,pointStyle:s,hidden:!t.getDataVisibility(a),index:a}})}return[]}},onClick(t,e,s){s.chart.toggleDataVisibility(e.index),s.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}});class ui extends Ot{}M(ui,"id","pie"),M(ui,"defaults",{cutout:0,rotation:0,circumference:360,radius:"100%"});class Ae extends nt{getLabelAndValue(t){const e=this._cachedMeta.vScale,s=this.getParsed(t);return{label:e.getLabels()[t],value:""+e.getLabelForValue(s[e.axis])}}parseObjectData(t,e,s,n){return yn.bind(this)(t,e,s,n)}update(t){const e=this._cachedMeta,s=e.dataset,n=e.data||[],o=e.iScale.getLabels();if(s.points=n,t!=="resize"){const a=this.resolveDatasetElementOptions(t);this.options.showLine||(a.borderWidth=0);const r={_loop:!0,_fullLoop:o.length===n.length,options:a};this.updateElement(s,void 0,r,t)}this.updateElements(n,0,n.length,t)}updateElements(t,e,s,n){const o=this._cachedMeta.rScale,a=n==="reset";for(let r=e;r0&&this.getParsed(e-1);for(let y=e;y0&&Math.abs(k[f]-v[f])>b,m&&(S.parsed=k,S.raw=c.data[y]),u&&(S.options=d||this.resolveDataElementOptions(y,_.active?"active":n)),x||this.updateElement(_,y,S,n),v=k}this.updateSharedOptions(d,n,h)}getMaxOverflow(){const t=this._cachedMeta,e=t.data||[];if(!this.options.showLine){let r=0;for(let l=e.length-1;l>=0;--l)r=Math.max(r,e[l].size(this.resolveDataElementOptions(l))/2);return r>0&&r}const s=t.dataset,n=s.options&&s.options.borderWidth||0;if(!e.length)return n;const o=e[0].size(this.resolveDataElementOptions(0)),a=e[e.length-1].size(this.resolveDataElementOptions(e.length-1));return Math.max(n,o,a)/2}}M(Oe,"id","scatter"),M(Oe,"defaults",{datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1}),M(Oe,"overrides",{interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}});var $a=Object.freeze({__proto__:null,BarController:Pe,BubbleController:De,DoughnutController:Ot,LineController:Ce,PieController:ui,PolarAreaController:oe,RadarController:Ae,ScatterController:Oe});function Pt(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Ei{constructor(t){M(this,"options");this.options=t||{}}static override(t){Object.assign(Ei.prototype,t)}init(){}formats(){return Pt()}parse(){return Pt()}format(){return Pt()}add(){return Pt()}diff(){return Pt()}startOf(){return Pt()}endOf(){return Pt()}}var Ya={_date:Ei};function Ua(i,t,e,s){const{controller:n,data:o,_sorted:a}=i,r=n._cachedMeta.iScale,l=i.dataset&&i.dataset.options?i.dataset.options.spanGaps:null;if(r&&t===r.axis&&t!=="r"&&a&&o.length){const c=r._reversePixels?go:ft;if(s){if(n._sharedOptions){const h=o[0],d=typeof h.getRange=="function"&&h.getRange(t);if(d){const u=c(o,t,e-d),f=c(o,t,e+d);return{lo:u.lo,hi:f.hi}}}}else{const h=c(o,t,e);if(l){const{vScale:d}=n._cachedMeta,{_parsed:u}=i,f=u.slice(0,h.lo+1).reverse().findIndex(p=>!O(p[d.axis]));h.lo-=Math.max(0,f);const g=u.slice(h.hi).findIndex(p=>!O(p[d.axis]));h.hi+=Math.max(0,g)}return h}}return{lo:0,hi:o.length-1}}function Xe(i,t,e,s,n){const o=i.getSortedVisibleDatasetMetas(),a=e[t];for(let r=0,l=o.length;r{l[a]&&l[a](t[e],n)&&(o.push({element:l,datasetIndex:c,index:h}),r=r||l.inRange(t.x,t.y,n))}),s&&!r?[]:o}var qa={modes:{index(i,t,e,s){const n=Ct(t,i),o=e.axis||"x",a=e.includeInvisible||!1,r=e.intersect?ii(i,n,o,s,a):si(i,n,o,!1,s,a),l=[];return r.length?(i.getSortedVisibleDatasetMetas().forEach(c=>{const h=r[0].index,d=c.data[h];d&&!d.skip&&l.push({element:d,datasetIndex:c.index,index:h})}),l):[]},dataset(i,t,e,s){const n=Ct(t,i),o=e.axis||"xy",a=e.includeInvisible||!1;let r=e.intersect?ii(i,n,o,s,a):si(i,n,o,!1,s,a);if(r.length>0){const l=r[0].datasetIndex,c=i.getDatasetMeta(l).data;r=[];for(let h=0;he.pos===t)}function ds(i,t){return i.filter(e=>Tn.indexOf(e.pos)===-1&&e.box.axis===t)}function Xt(i,t){return i.sort((e,s)=>{const n=t?s:e,o=t?e:s;return n.weight===o.weight?n.index-o.index:n.weight-o.weight})}function Ja(i){const t=[];let e,s,n,o,a,r;for(e=0,s=(i||[]).length;ec.box.fullSize),!0),s=Xt(Ut(t,"left"),!0),n=Xt(Ut(t,"right")),o=Xt(Ut(t,"top"),!0),a=Xt(Ut(t,"bottom")),r=ds(t,"x"),l=ds(t,"y");return{fullSize:e,leftAndTop:s.concat(o),rightAndBottom:n.concat(l).concat(a).concat(r),chartArea:Ut(t,"chartArea"),vertical:s.concat(n).concat(l),horizontal:o.concat(a).concat(r)}}function us(i,t,e,s){return Math.max(i[e],t[e])+Math.max(i[s],t[s])}function Ln(i,t){i.top=Math.max(i.top,t.top),i.left=Math.max(i.left,t.left),i.bottom=Math.max(i.bottom,t.bottom),i.right=Math.max(i.right,t.right)}function er(i,t,e,s){const{pos:n,box:o}=e,a=i.maxPadding;if(!T(n)){e.size&&(i[n]-=e.size);const d=s[e.stack]||{size:0,count:1};d.size=Math.max(d.size,e.horizontal?o.height:o.width),e.size=d.size/d.count,i[n]+=e.size}o.getPadding&&Ln(a,o.getPadding());const r=Math.max(0,t.outerWidth-us(a,i,"left","right")),l=Math.max(0,t.outerHeight-us(a,i,"top","bottom")),c=r!==i.w,h=l!==i.h;return i.w=r,i.h=l,e.horizontal?{same:c,other:h}:{same:h,other:c}}function ir(i){const t=i.maxPadding;function e(s){const n=Math.max(t[s]-i[s],0);return i[s]+=n,n}i.y+=e("top"),i.x+=e("left"),e("right"),e("bottom")}function sr(i,t){const e=t.maxPadding;function s(n){const o={left:0,top:0,right:0,bottom:0};return n.forEach(a=>{o[a]=Math.max(t[a],e[a])}),o}return s(i?["left","right"]:["top","bottom"])}function Jt(i,t,e,s){const n=[];let o,a,r,l,c,h;for(o=0,a=i.length,c=0;o{typeof p.beforeLayout=="function"&&p.beforeLayout()});const h=l.reduce((p,m)=>m.box.options&&m.box.options.display===!1?p:p+1,0)||1,d=Object.freeze({outerWidth:t,outerHeight:e,padding:n,availableWidth:o,availableHeight:a,vBoxMaxWidth:o/2/h,hBoxMaxHeight:a/2}),u=Object.assign({},n);Ln(u,J(s));const f=Object.assign({maxPadding:u,w:o,h:a,x:n.left,y:n.top},n),g=Za(l.concat(c),d);Jt(r.fullSize,f,d,g),Jt(l,f,d,g),Jt(c,f,d,g)&&Jt(l,f,d,g),ir(f),fs(r.leftAndTop,f,d,g),f.x+=f.w,f.y+=f.h,fs(r.rightAndBottom,f,d,g),i.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},I(r.chartArea,p=>{const m=p.box;Object.assign(m,i.chartArea),m.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})})}};class Rn{acquireContext(t,e){}releaseContext(t){return!1}addEventListener(t,e,s){}removeEventListener(t,e,s){}getDevicePixelRatio(){return 1}getMaximumSize(t,e,s,n){return e=Math.max(0,e||t.width),s=s||t.height,{width:e,height:Math.max(0,n?Math.floor(e/n):s)}}isAttached(t){return!0}updateConfig(t){}}class nr extends Rn{acquireContext(t){return t&&t.getContext&&t.getContext("2d")||null}updateConfig(t){t.options.animation=!1}}const Te="$chartjs",or={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},gs=i=>i===null||i==="";function ar(i,t){const e=i.style,s=i.getAttribute("height"),n=i.getAttribute("width");if(i[Te]={initial:{height:s,width:n,style:{display:e.display,height:e.height,width:e.width}}},e.display=e.display||"block",e.boxSizing=e.boxSizing||"border-box",gs(n)){const o=Ji(i,"width");o!==void 0&&(i.width=o)}if(gs(s))if(i.style.height==="")i.height=i.width/(t||2);else{const o=Ji(i,"height");o!==void 0&&(i.height=o)}return i}const In=ra?{passive:!0}:!1;function rr(i,t,e){i&&i.addEventListener(t,e,In)}function lr(i,t,e){i&&i.canvas&&i.canvas.removeEventListener(t,e,In)}function cr(i,t){const e=or[i.type]||i.type,{x:s,y:n}=Ct(i,t);return{type:e,chart:t,native:i,x:s!==void 0?s:null,y:n!==void 0?n:null}}function We(i,t){for(const e of i)if(e===t||e.contains(t))return!0}function hr(i,t,e){const s=i.canvas,n=new MutationObserver(o=>{let a=!1;for(const r of o)a=a||We(r.addedNodes,s),a=a&&!We(r.removedNodes,s);a&&e()});return n.observe(document,{childList:!0,subtree:!0}),n}function dr(i,t,e){const s=i.canvas,n=new MutationObserver(o=>{let a=!1;for(const r of o)a=a||We(r.removedNodes,s),a=a&&!We(r.addedNodes,s);a&&e()});return n.observe(document,{childList:!0,subtree:!0}),n}const he=new Map;let ps=0;function En(){const i=window.devicePixelRatio;i!==ps&&(ps=i,he.forEach((t,e)=>{e.currentDevicePixelRatio!==i&&t()}))}function ur(i,t){he.size||window.addEventListener("resize",En),he.set(i,t)}function fr(i){he.delete(i),he.size||window.removeEventListener("resize",En)}function gr(i,t,e){const s=i.canvas,n=s&&Ii(s);if(!n)return;const o=hn((r,l)=>{const c=n.clientWidth;e(r,l),c{const l=r[0],c=l.contentRect.width,h=l.contentRect.height;c===0&&h===0||o(c,h)});return a.observe(n),ur(i,o),a}function ni(i,t,e){e&&e.disconnect(),t==="resize"&&fr(i)}function pr(i,t,e){const s=i.canvas,n=hn(o=>{i.ctx!==null&&e(cr(o,i))},i);return rr(s,t,n),n}class mr extends Rn{acquireContext(t,e){const s=t&&t.getContext&&t.getContext("2d");return s&&s.canvas===t?(ar(t,e),s):null}releaseContext(t){const e=t.canvas;if(!e[Te])return!1;const s=e[Te].initial;["height","width"].forEach(o=>{const a=s[o];O(a)?e.removeAttribute(o):e.setAttribute(o,a)});const n=s.style||{};return Object.keys(n).forEach(o=>{e.style[o]=n[o]}),e.width=e.width,delete e[Te],!0}addEventListener(t,e,s){this.removeEventListener(t,e);const n=t.$proxies||(t.$proxies={}),a={attach:hr,detach:dr,resize:gr}[e]||pr;n[e]=a(t,e,s)}removeEventListener(t,e){const s=t.$proxies||(t.$proxies={}),n=s[e];if(!n)return;({attach:ni,detach:ni,resize:ni}[e]||lr)(t,e,n),s[e]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(t,e,s,n){return aa(t,e,s,n)}isAttached(t){const e=t&&Ii(t);return!!(e&&e.isConnected)}}function br(i){return!Ri()||typeof OffscreenCanvas<"u"&&i instanceof OffscreenCanvas?nr:mr}class ot{constructor(){M(this,"x");M(this,"y");M(this,"active",!1);M(this,"options");M(this,"$animations")}tooltipPosition(t){const{x:e,y:s}=this.getProps(["x","y"],t);return{x:e,y:s}}hasValue(){return Wt(this.x)&&Wt(this.y)}getProps(t,e){const s=this.$animations;if(!e||!s)return this;const n={};return t.forEach(o=>{n[o]=s[o]&&s[o].active()?s[o]._to:this[o]}),n}}M(ot,"defaults",{}),M(ot,"defaultRoutes");function xr(i,t){const e=i.options.ticks,s=_r(i),n=Math.min(e.maxTicksLimit||s,s),o=e.major.enabled?vr(t):[],a=o.length,r=o[0],l=o[a-1],c=[];if(a>n)return Mr(t,c,o,a/n),c;const h=yr(o,t,n);if(a>0){let d,u;const f=a>1?Math.round((l-r)/(a-1)):null;for(ye(t,c,h,O(f)?0:r-f,r),d=0,u=a-1;dn)return l}return Math.max(n,1)}function vr(i){const t=[];let e,s;for(e=0,s=i.length;ei==="left"?"right":i==="right"?"left":i,ms=(i,t,e)=>t==="top"||t==="left"?i[t]+e:i[t]-e,bs=(i,t)=>Math.min(t||i,i);function xs(i,t){const e=[],s=i.length/t,n=i.length;let o=0;for(;oa+r)))return l}function Pr(i,t){I(i,e=>{const s=e.gc,n=s.length/2;let o;if(n>t){for(o=0;os?s:e,s=n&&e>s?e:s,{min:et(e,et(s,e)),max:et(s,et(e,s))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels||[]}getLabelItems(t=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(t))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){z(this.options.beforeUpdate,[this])}update(t,e,s){const{beginAtZero:n,grace:o,ticks:a}=this.options,r=a.sampleSize;this.beforeUpdate(),this.maxWidth=t,this.maxHeight=e,this._margins=s=Object.assign({left:0,right:0,top:0,bottom:0},s),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+s.left+s.right:this.height+s.top+s.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=Bo(this,o,n),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const l=r=o||s<=1||!this.isHorizontal()){this.labelRotation=n;return}const h=this._getLabelSizes(),d=h.widest.width,u=h.highest.height,f=Y(this.chart.width-d,0,this.maxWidth);r=t.offset?this.maxWidth/s:f/(s-1),d+6>r&&(r=f/(s-(t.offset?.5:1)),l=this.maxHeight-Kt(t.grid)-e.padding-_s(t.title,this.chart.options.font),c=Math.sqrt(d*d+u*u),a=wi(Math.min(Math.asin(Y((h.highest.height+6)/r,-1,1)),Math.asin(Y(l/c,-1,1))-Math.asin(Y(u/c,-1,1)))),a=Math.max(n,Math.min(o,a))),this.labelRotation=a}afterCalculateLabelRotation(){z(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){z(this.options.beforeFit,[this])}fit(){const t={width:0,height:0},{chart:e,options:{ticks:s,title:n,grid:o}}=this,a=this._isVisible(),r=this.isHorizontal();if(a){const l=_s(n,e.options.font);if(r?(t.width=this.maxWidth,t.height=Kt(o)+l):(t.height=this.maxHeight,t.width=Kt(o)+l),s.display&&this.ticks.length){const{first:c,last:h,widest:d,highest:u}=this._getLabelSizes(),f=s.padding*2,g=st(this.labelRotation),p=Math.cos(g),m=Math.sin(g);if(r){const b=s.mirror?0:m*d.width+p*u.height;t.height=Math.min(this.maxHeight,t.height+b+f)}else{const b=s.mirror?0:p*d.width+m*u.height;t.width=Math.min(this.maxWidth,t.width+b+f)}this._calculatePadding(c,h,m,p)}}this._handleMargins(),r?(this.width=this._length=e.width-this._margins.left-this._margins.right,this.height=t.height):(this.width=t.width,this.height=this._length=e.height-this._margins.top-this._margins.bottom)}_calculatePadding(t,e,s,n){const{ticks:{align:o,padding:a},position:r}=this.options,l=this.labelRotation!==0,c=r!=="top"&&this.axis==="x";if(this.isHorizontal()){const h=this.getPixelForTick(0)-this.left,d=this.right-this.getPixelForTick(this.ticks.length-1);let u=0,f=0;l?c?(u=n*t.width,f=s*e.height):(u=s*t.height,f=n*e.width):o==="start"?f=e.width:o==="end"?u=t.width:o!=="inner"&&(u=t.width/2,f=e.width/2),this.paddingLeft=Math.max((u-h+a)*this.width/(this.width-h),0),this.paddingRight=Math.max((f-d+a)*this.width/(this.width-d),0)}else{let h=e.height/2,d=t.height/2;o==="start"?(h=0,d=t.height):o==="end"&&(h=e.height,d=0),this.paddingTop=h+a,this.paddingBottom=d+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){z(this.options.afterFit,[this])}isHorizontal(){const{axis:t,position:e}=this.options;return e==="top"||e==="bottom"||t==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(t){this.beforeTickToLabelConversion(),this.generateTickLabels(t);let e,s;for(e=0,s=t.length;e({width:a[P]||0,height:r[P]||0});return{first:w(0),last:w(e-1),widest:w(k),highest:w(S),widths:a,heights:r}}getLabelForValue(t){return t}getPixelForValue(t,e){return NaN}getValueForPixel(t){}getPixelForTick(t){const e=this.ticks;return t<0||t>e.length-1?null:this.getPixelForValue(e[t].value)}getPixelForDecimal(t){this._reversePixels&&(t=1-t);const e=this._startPixel+t*this._length;return fo(this._alignToPixels?wt(this.chart,e,0):e)}getDecimalForPixel(t){const e=(t-this._startPixel)/this._length;return this._reversePixels?1-e:e}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:t,max:e}=this;return t<0&&e<0?e:t>0&&e>0?t:0}getContext(t){const e=this.ticks||[];if(t>=0&&tr*n?r/s:l/n:l*n0}_computeGridLineItems(t){const e=this.axis,s=this.chart,n=this.options,{grid:o,position:a,border:r}=n,l=o.offset,c=this.isHorizontal(),d=this.ticks.length+(l?1:0),u=Kt(o),f=[],g=r.setContext(this.getContext()),p=g.display?g.width:0,m=p/2,b=function(B){return wt(s,B,p)};let x,v,y,_,k,S,w,P,C,A,L,U;if(a==="top")x=b(this.bottom),S=this.bottom-u,P=x-m,A=b(t.top)+m,U=t.bottom;else if(a==="bottom")x=b(this.top),A=t.top,U=b(t.bottom)-m,S=x+m,P=this.top+u;else if(a==="left")x=b(this.right),k=this.right-u,w=x-m,C=b(t.left)+m,L=t.right;else if(a==="right")x=b(this.left),C=t.left,L=b(t.right)-m,k=x+m,w=this.left+u;else if(e==="x"){if(a==="center")x=b((t.top+t.bottom)/2+.5);else if(T(a)){const B=Object.keys(a)[0],H=a[B];x=b(this.chart.scales[B].getPixelForValue(H))}A=t.top,U=t.bottom,S=x+m,P=S+u}else if(e==="y"){if(a==="center")x=b((t.left+t.right)/2);else if(T(a)){const B=Object.keys(a)[0],H=a[B];x=b(this.chart.scales[B].getPixelForValue(H))}k=x-m,w=k-u,C=t.left,L=t.right}const tt=D(n.ticks.maxTicksLimit,d),E=Math.max(1,Math.ceil(d/tt));for(v=0;v0&&(kt-=Mt/2);break}ge={left:kt,top:$t,width:Mt+Ft.width,height:jt+Ft.height,color:E.backdropColor}}m.push({label:y,font:P,textOffset:L,options:{rotation:p,color:H,strokeColor:it,strokeWidth:X,textAlign:zt,textBaseline:U,translation:[_,k],backdrop:ge}})}return m}_getXAxisLabelAlignment(){const{position:t,ticks:e}=this.options;if(-st(this.labelRotation))return t==="top"?"left":"right";let n="center";return e.align==="start"?n="left":e.align==="end"?n="right":e.align==="inner"&&(n="inner"),n}_getYAxisLabelAlignment(t){const{position:e,ticks:{crossAlign:s,mirror:n,padding:o}}=this.options,a=this._getLabelSizes(),r=t+o,l=a.widest.width;let c,h;return e==="left"?n?(h=this.right+o,s==="near"?c="left":s==="center"?(c="center",h+=l/2):(c="right",h+=l)):(h=this.right-r,s==="near"?c="right":s==="center"?(c="center",h-=l/2):(c="left",h=this.left)):e==="right"?n?(h=this.left+o,s==="near"?c="right":s==="center"?(c="center",h-=l/2):(c="left",h-=l)):(h=this.left+r,s==="near"?c="left":s==="center"?(c="center",h+=l/2):(c="right",h=this.right)):c="right",{textAlign:c,x:h}}_computeLabelArea(){if(this.options.ticks.mirror)return;const t=this.chart,e=this.options.position;if(e==="left"||e==="right")return{top:0,left:this.left,bottom:t.height,right:this.right};if(e==="top"||e==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:t.width}}drawBackground(){const{ctx:t,options:{backgroundColor:e},left:s,top:n,width:o,height:a}=this;e&&(t.save(),t.fillStyle=e,t.fillRect(s,n,o,a),t.restore())}getLineWidthForValue(t){const e=this.options.grid;if(!this._isVisible()||!e.display)return 0;const n=this.ticks.findIndex(o=>o.value===t);return n>=0?e.setContext(this.getContext(n)).lineWidth:0}drawGrid(t){const e=this.options.grid,s=this.ctx,n=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(t));let o,a;const r=(l,c,h)=>{!h.width||!h.color||(s.save(),s.lineWidth=h.width,s.strokeStyle=h.color,s.setLineDash(h.borderDash||[]),s.lineDashOffset=h.borderDashOffset,s.beginPath(),s.moveTo(l.x,l.y),s.lineTo(c.x,c.y),s.stroke(),s.restore())};if(e.display)for(o=0,a=n.length;o{this.draw(o)}}]:[{z:s,draw:o=>{this.drawBackground(),this.drawGrid(o),this.drawTitle()}},{z:n,draw:()=>{this.drawBorder()}},{z:e,draw:o=>{this.drawLabels(o)}}]}getMatchingVisibleMetas(t){const e=this.chart.getSortedVisibleDatasetMetas(),s=this.axis+"AxisID",n=[];let o,a;for(o=0,a=e.length;o{const s=e.split("."),n=s.pop(),o=[i].concat(s).join("."),a=t[e].split("."),r=a.pop(),l=a.join(".");W.route(o,n,l,r)})}function Rr(i){return"id"in i&&"defaults"in i}class Ir{constructor(){this.controllers=new ve(nt,"datasets",!0),this.elements=new ve(ot,"elements"),this.plugins=new ve(Object,"plugins"),this.scales=new ve(Et,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...t){this._each("register",t)}remove(...t){this._each("unregister",t)}addControllers(...t){this._each("register",t,this.controllers)}addElements(...t){this._each("register",t,this.elements)}addPlugins(...t){this._each("register",t,this.plugins)}addScales(...t){this._each("register",t,this.scales)}getController(t){return this._get(t,this.controllers,"controller")}getElement(t){return this._get(t,this.elements,"element")}getPlugin(t){return this._get(t,this.plugins,"plugin")}getScale(t){return this._get(t,this.scales,"scale")}removeControllers(...t){this._each("unregister",t,this.controllers)}removeElements(...t){this._each("unregister",t,this.elements)}removePlugins(...t){this._each("unregister",t,this.plugins)}removeScales(...t){this._each("unregister",t,this.scales)}_each(t,e,s){[...e].forEach(n=>{const o=s||this._getRegistryForType(n);s||o.isForType(n)||o===this.plugins&&n.id?this._exec(t,o,n):I(n,a=>{const r=s||this._getRegistryForType(a);this._exec(t,r,a)})})}_exec(t,e,s){const n=Si(t);z(s["before"+n],[],s),e[t](s),z(s["after"+n],[],s)}_getRegistryForType(t){for(let e=0;eo.filter(r=>!a.some(l=>r.plugin.id===l.plugin.id));this._notify(n(e,s),t,"stop"),this._notify(n(s,e),t,"start")}}function zr(i){const t={},e=[],s=Object.keys(rt.plugins.items);for(let o=0;o1&&ys(i[0].toLowerCase());if(s)return s}throw new Error(`Cannot determine type of '${i}' axis. Please provide 'axis' or 'position' option.`)}function vs(i,t,e){if(e[t+"AxisID"]===i)return{axis:t}}function jr(i,t){if(t.data&&t.data.datasets){const e=t.data.datasets.filter(s=>s.xAxisID===i||s.yAxisID===i);if(e.length)return vs(i,"x",e[0])||vs(i,"y",e[0])}return{}}function $r(i,t){const e=Rt[i.type]||{scales:{}},s=t.scales||{},n=fi(i.type,t),o=Object.create(null);return Object.keys(s).forEach(a=>{const r=s[a];if(!T(r))return console.error(`Invalid scale configuration for scale: ${a}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${a}`);const l=gi(a,r,jr(a,i),W.scales[r.type]),c=Nr(l,n),h=e.scales||{};o[a]=ee(Object.create(null),[{axis:l},r,h[l],h[c]])}),i.data.datasets.forEach(a=>{const r=a.type||i.type,l=a.indexAxis||fi(r,t),h=(Rt[r]||{}).scales||{};Object.keys(h).forEach(d=>{const u=Wr(d,l),f=a[u+"AxisID"]||u;o[f]=o[f]||Object.create(null),ee(o[f],[{axis:u},s[f],h[d]])})}),Object.keys(o).forEach(a=>{const r=o[a];ee(r,[W.scales[r.type],W.scale])}),o}function zn(i){const t=i.options||(i.options={});t.plugins=D(t.plugins,{}),t.scales=$r(i,t)}function Fn(i){return i=i||{},i.datasets=i.datasets||[],i.labels=i.labels||[],i}function Yr(i){return i=i||{},i.data=Fn(i.data),zn(i),i}const Ms=new Map,Bn=new Set;function Me(i,t){let e=Ms.get(i);return e||(e=t(),Ms.set(i,e),Bn.add(e)),e}const Gt=(i,t,e)=>{const s=_t(t,e);s!==void 0&&i.add(s)};class Ur{constructor(t){this._config=Yr(t),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(t){this._config.type=t}get data(){return this._config.data}set data(t){this._config.data=Fn(t)}get options(){return this._config.options}set options(t){this._config.options=t}get plugins(){return this._config.plugins}update(){const t=this._config;this.clearCache(),zn(t)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(t){return Me(t,()=>[[`datasets.${t}`,""]])}datasetAnimationScopeKeys(t,e){return Me(`${t}.transition.${e}`,()=>[[`datasets.${t}.transitions.${e}`,`transitions.${e}`],[`datasets.${t}`,""]])}datasetElementScopeKeys(t,e){return Me(`${t}-${e}`,()=>[[`datasets.${t}.elements.${e}`,`datasets.${t}`,`elements.${e}`,""]])}pluginScopeKeys(t){const e=t.id,s=this.type;return Me(`${s}-plugin-${e}`,()=>[[`plugins.${e}`,...t.additionalOptionScopes||[]]])}_cachedScopes(t,e){const s=this._scopeCache;let n=s.get(t);return(!n||e)&&(n=new Map,s.set(t,n)),n}getOptionScopes(t,e,s){const{options:n,type:o}=this,a=this._cachedScopes(t,s),r=a.get(e);if(r)return r;const l=new Set;e.forEach(h=>{t&&(l.add(t),h.forEach(d=>Gt(l,t,d))),h.forEach(d=>Gt(l,n,d)),h.forEach(d=>Gt(l,Rt[o]||{},d)),h.forEach(d=>Gt(l,W,d)),h.forEach(d=>Gt(l,hi,d))});const c=Array.from(l);return c.length===0&&c.push(Object.create(null)),Bn.has(e)&&a.set(e,c),c}chartOptionScopes(){const{options:t,type:e}=this;return[t,Rt[e]||{},W.datasets[e]||{},{type:e},W,hi]}resolveNamedOptions(t,e,s,n=[""]){const o={$shared:!0},{resolver:a,subPrefixes:r}=ks(this._resolverCache,t,n);let l=a;if(Kr(a,e)){o.$shared=!1,s=yt(s)?s():s;const c=this.createResolver(t,s,r);l=Nt(a,s,c)}for(const c of e)o[c]=l[c];return o}createResolver(t,e,s=[""],n){const{resolver:o}=ks(this._resolverCache,t,s);return T(e)?Nt(o,e,void 0,n):o}}function ks(i,t,e){let s=i.get(t);s||(s=new Map,i.set(t,s));const n=e.join();let o=s.get(n);return o||(o={resolver:Oi(t,e),subPrefixes:e.filter(r=>!r.toLowerCase().includes("hover"))},s.set(n,o)),o}const Xr=i=>T(i)&&Object.getOwnPropertyNames(i).some(t=>yt(i[t]));function Kr(i,t){const{isScriptable:e,isIndexable:s}=mn(i);for(const n of t){const o=e(n),a=s(n),r=(a||o)&&i[n];if(o&&(yt(r)||Xr(r))||a&&V(r))return!0}return!1}var Gr="4.5.0";const qr=["top","bottom","left","right","chartArea"];function Ss(i,t){return i==="top"||i==="bottom"||qr.indexOf(i)===-1&&t==="x"}function ws(i,t){return function(e,s){return e[i]===s[i]?e[t]-s[t]:e[i]-s[i]}}function Ps(i){const t=i.chart,e=t.options.animation;t.notifyPlugins("afterRender"),z(e&&e.onComplete,[i],t)}function Jr(i){const t=i.chart,e=t.options.animation;z(e&&e.onProgress,[i],t)}function Vn(i){return Ri()&&typeof i=="string"?i=document.getElementById(i):i&&i.length&&(i=i[0]),i&&i.canvas&&(i=i.canvas),i}const Le={},Ds=i=>{const t=Vn(i);return Object.values(Le).filter(e=>e.canvas===t).pop()};function Qr(i,t,e){const s=Object.keys(i);for(const n of s){const o=+n;if(o>=t){const a=i[n];delete i[n],(e>0||o>t)&&(i[o+e]=a)}}}function Zr(i,t,e,s){return!e||i.type==="mouseout"?null:s?t:i}class pt{static register(...t){rt.add(...t),Cs()}static unregister(...t){rt.remove(...t),Cs()}constructor(t,e){const s=this.config=new Ur(e),n=Vn(t),o=Ds(n);if(o)throw new Error("Canvas is already in use. Chart with ID '"+o.id+"' must be destroyed before the canvas with ID '"+o.canvas.id+"' can be reused.");const a=s.createResolver(s.chartOptionScopes(),this.getContext());this.platform=new(s.platform||br(n)),this.platform.updateConfig(s);const r=this.platform.acquireContext(n,a.aspectRatio),l=r&&r.canvas,c=l&&l.height,h=l&&l.width;if(this.id=Zn(),this.ctx=r,this.canvas=l,this.width=h,this.height=c,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Er,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=bo(d=>this.update(d),a.resizeDelay||0),this._dataChanges=[],Le[this.id]=this,!r||!l){console.error("Failed to create chart: can't acquire context from the given item");return}ht.listen(this,"complete",Ps),ht.listen(this,"progress",Jr),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:t,maintainAspectRatio:e},width:s,height:n,_aspectRatio:o}=this;return O(t)?e&&o?o:n?s/n:null:t}get data(){return this.config.data}set data(t){this.config.data=t}get options(){return this._options}set options(t){this.config.options=t}get registry(){return rt}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():qi(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Xi(this.canvas,this.ctx),this}stop(){return ht.stop(this),this}resize(t,e){ht.running(this)?this._resizeBeforeDraw={width:t,height:e}:this._resize(t,e)}_resize(t,e){const s=this.options,n=this.canvas,o=s.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(n,t,e,o),r=s.devicePixelRatio||this.platform.getDevicePixelRatio(),l=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,qi(this,r,!0)&&(this.notifyPlugins("resize",{size:a}),z(s.onResize,[this,a],this),this.attached&&this._doResize(l)&&this.render())}ensureScalesHaveIDs(){const e=this.options.scales||{};I(e,(s,n)=>{s.id=n})}buildOrUpdateScales(){const t=this.options,e=t.scales,s=this.scales,n=Object.keys(s).reduce((a,r)=>(a[r]=!1,a),{});let o=[];e&&(o=o.concat(Object.keys(e).map(a=>{const r=e[a],l=gi(a,r),c=l==="r",h=l==="x";return{options:r,dposition:c?"chartArea":h?"bottom":"left",dtype:c?"radialLinear":h?"category":"linear"}}))),I(o,a=>{const r=a.options,l=r.id,c=gi(l,r),h=D(r.type,a.dtype);(r.position===void 0||Ss(r.position,c)!==Ss(a.dposition))&&(r.position=a.dposition),n[l]=!0;let d=null;if(l in s&&s[l].type===h)d=s[l];else{const u=rt.getScale(h);d=new u({id:l,type:h,ctx:this.ctx,chart:this}),s[d.id]=d}d.init(r,t)}),I(n,(a,r)=>{a||delete s[r]}),I(s,a=>{q.configure(this,a,a.options),q.addBox(this,a)})}_updateMetasets(){const t=this._metasets,e=this.data.datasets.length,s=t.length;if(t.sort((n,o)=>n.index-o.index),s>e){for(let n=e;ne.length&&delete this._stacks,t.forEach((s,n)=>{e.filter(o=>o===s._dataset).length===0&&this._destroyDatasetMeta(n)})}buildOrUpdateControllers(){const t=[],e=this.data.datasets;let s,n;for(this._removeUnreferencedMetasets(),s=0,n=e.length;s{this.getDatasetMeta(e).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(t){const e=this.config;e.update();const s=this._options=e.createResolver(e.chartOptionScopes(),this.getContext()),n=this._animationsDisabled=!s.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:t,cancelable:!0})===!1)return;const o=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let c=0,h=this.data.datasets.length;c{c.reset()}),this._updateDatasets(t),this.notifyPlugins("afterUpdate",{mode:t}),this._layers.sort(ws("z","_idx"));const{_active:r,_lastEvent:l}=this;l?this._eventHandler(l,!0):r.length&&this._updateHoverStyles(r,r,!0),this.render()}_updateScales(){I(this.scales,t=>{q.removeBox(this,t)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const t=this.options,e=new Set(Object.keys(this._listeners)),s=new Set(t.events);(!Bi(e,s)||!!this._responsiveListeners!==t.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:t}=this,e=this._getUniformDataChanges()||[];for(const{method:s,start:n,count:o}of e){const a=s==="_removeElements"?-o:o;Qr(t,n,a)}}_getUniformDataChanges(){const t=this._dataChanges;if(!t||!t.length)return;this._dataChanges=[];const e=this.data.datasets.length,s=o=>new Set(t.filter(a=>a[0]===o).map((a,r)=>r+","+a.splice(1).join(","))),n=s(0);for(let o=1;oo.split(",")).map(o=>({method:o[1],start:+o[2],count:+o[3]}))}_updateLayout(t){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;q.update(this,this.width,this.height,t);const e=this.chartArea,s=e.width<=0||e.height<=0;this._layers=[],I(this.boxes,n=>{s&&n.position==="chartArea"||(n.configure&&n.configure(),this._layers.push(...n._layers()))},this),this._layers.forEach((n,o)=>{n._idx=o}),this.notifyPlugins("afterLayout")}_updateDatasets(t){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:t,cancelable:!0})!==!1){for(let e=0,s=this.data.datasets.length;e=0;--e)this._drawDataset(t[e]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(t){const e=this.ctx,s={meta:t,index:t.index,cancelable:!0},n=Dn(this,t);this.notifyPlugins("beforeDatasetDraw",s)!==!1&&(n&&$e(e,n),t.controller.draw(),n&&Ye(e),s.cancelable=!1,this.notifyPlugins("afterDatasetDraw",s))}isPointInArea(t){return gt(t,this.chartArea,this._minPadding)}getElementsAtEventForMode(t,e,s,n){const o=qa.modes[e];return typeof o=="function"?o(this,t,s,n):[]}getDatasetMeta(t){const e=this.data.datasets[t],s=this._metasets;let n=s.filter(o=>o&&o._dataset===e).pop();return n||(n={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:e&&e.order||0,index:t,_dataset:e,_parsed:[],_sorted:!1},s.push(n)),n}getContext(){return this.$context||(this.$context=vt(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(t){const e=this.data.datasets[t];if(!e)return!1;const s=this.getDatasetMeta(t);return typeof s.hidden=="boolean"?!s.hidden:!e.hidden}setDatasetVisibility(t,e){const s=this.getDatasetMeta(t);s.hidden=!e}toggleDataVisibility(t){this._hiddenIndices[t]=!this._hiddenIndices[t]}getDataVisibility(t){return!this._hiddenIndices[t]}_updateVisibility(t,e,s){const n=s?"show":"hide",o=this.getDatasetMeta(t),a=o.controller._resolveAnimations(void 0,n);re(e)?(o.data[e].hidden=!s,this.update()):(this.setDatasetVisibility(t,s),a.update(o,{visible:s}),this.update(r=>r.datasetIndex===t?n:void 0))}hide(t,e){this._updateVisibility(t,e,!1)}show(t,e){this._updateVisibility(t,e,!0)}_destroyDatasetMeta(t){const e=this._metasets[t];e&&e.controller&&e.controller._destroy(),delete this._metasets[t]}_stop(){let t,e;for(this.stop(),ht.remove(this),t=0,e=this.data.datasets.length;t{e.addEventListener(this,o,a),t[o]=a},n=(o,a,r)=>{o.offsetX=a,o.offsetY=r,this._eventHandler(o)};I(this.options.events,o=>s(o,n))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const t=this._responsiveListeners,e=this.platform,s=(l,c)=>{e.addEventListener(this,l,c),t[l]=c},n=(l,c)=>{t[l]&&(e.removeEventListener(this,l,c),delete t[l])},o=(l,c)=>{this.canvas&&this.resize(l,c)};let a;const r=()=>{n("attach",r),this.attached=!0,this.resize(),s("resize",o),s("detach",a)};a=()=>{this.attached=!1,n("resize",o),this._stop(),this._resize(0,0),s("attach",r)},e.isAttached(this.canvas)?r():a()}unbindEvents(){I(this._listeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._listeners={},I(this._responsiveListeners,(t,e)=>{this.platform.removeEventListener(this,e,t)}),this._responsiveListeners=void 0}updateHoverStyle(t,e,s){const n=s?"set":"remove";let o,a,r,l;for(e==="dataset"&&(o=this.getDatasetMeta(t[0].datasetIndex),o.controller["_"+n+"DatasetHoverStyle"]()),r=0,l=t.length;r{const r=this.getDatasetMeta(o);if(!r)throw new Error("No dataset found at index "+o);return{datasetIndex:o,element:r.data[a],index:a}});!Ee(s,e)&&(this._active=s,this._lastEvent=null,this._updateHoverStyles(s,e))}notifyPlugins(t,e,s){return this._plugins.notify(this,t,e,s)}isPluginEnabled(t){return this._plugins._cache.filter(e=>e.plugin.id===t).length===1}_updateHoverStyles(t,e,s){const n=this.options.hover,o=(l,c)=>l.filter(h=>!c.some(d=>h.datasetIndex===d.datasetIndex&&h.index===d.index)),a=o(e,t),r=s?t:o(t,e);a.length&&this.updateHoverStyle(a,n.mode,!1),r.length&&n.mode&&this.updateHoverStyle(r,n.mode,!0)}_eventHandler(t,e){const s={event:t,replay:e,cancelable:!0,inChartArea:this.isPointInArea(t)},n=a=>(a.options.events||this.options.events).includes(t.native.type);if(this.notifyPlugins("beforeEvent",s,n)===!1)return;const o=this._handleEvent(t,e,s.inChartArea);return s.cancelable=!1,this.notifyPlugins("afterEvent",s,n),(o||s.changed)&&this.render(),this}_handleEvent(t,e,s){const{_active:n=[],options:o}=this,a=e,r=this._getActiveElements(t,n,s,a),l=oo(t),c=Zr(t,this._lastEvent,s,l);s&&(this._lastEvent=null,z(o.onHover,[t,r,this],this),l&&z(o.onClick,[t,r,this],this));const h=!Ee(r,n);return(h||e)&&(this._active=r,this._updateHoverStyles(r,n,e)),this._lastEvent=c,h}_getActiveElements(t,e,s,n){if(t.type==="mouseout")return[];if(!s)return e;const o=this.options.hover;return this.getElementsAtEventForMode(t,o.mode,o,n)}}M(pt,"defaults",W),M(pt,"instances",Le),M(pt,"overrides",Rt),M(pt,"registry",rt),M(pt,"version",Gr),M(pt,"getChart",Ds);function Cs(){return I(pt.instances,i=>i._plugins.invalidate())}function tl(i,t,e){const{startAngle:s,x:n,y:o,outerRadius:a,innerRadius:r,options:l}=t,{borderWidth:c,borderJoinStyle:h}=l,d=Math.min(c/a,G(s-e));if(i.beginPath(),i.arc(n,o,a-c/2,s+d/2,e-d/2),r>0){const u=Math.min(c/r,G(s-e));i.arc(n,o,r+c/2,e-u/2,s+u/2,!0)}else{const u=Math.min(c/2,a*G(s-e));if(h==="round")i.arc(n,o,u,e-R/2,s+R/2,!0);else if(h==="bevel"){const f=2*u*u,g=-f*Math.cos(e+R/2)+n,p=-f*Math.sin(e+R/2)+o,m=f*Math.cos(s+R/2)+n,b=f*Math.sin(s+R/2)+o;i.lineTo(g,p),i.lineTo(m,b)}}i.closePath(),i.moveTo(0,0),i.rect(0,0,i.canvas.width,i.canvas.height),i.clip("evenodd")}function el(i,t,e){const{startAngle:s,pixelMargin:n,x:o,y:a,outerRadius:r,innerRadius:l}=t;let c=n/r;i.beginPath(),i.arc(o,a,r,s-c,e+c),l>n?(c=n/l,i.arc(o,a,l,e+c,s-c,!0)):i.arc(o,a,n,e+j,s-j),i.closePath(),i.clip()}function il(i){return Ai(i,["outerStart","outerEnd","innerStart","innerEnd"])}function sl(i,t,e,s){const n=il(i.options.borderRadius),o=(e-t)/2,a=Math.min(o,s*t/2),r=l=>{const c=(e-Math.min(o,l))*s/2;return Y(l,0,Math.min(o,c))};return{outerStart:r(n.outerStart),outerEnd:r(n.outerEnd),innerStart:Y(n.innerStart,0,a),innerEnd:Y(n.innerEnd,0,a)}}function Bt(i,t,e,s){return{x:e+i*Math.cos(t),y:s+i*Math.sin(t)}}function Ne(i,t,e,s,n,o){const{x:a,y:r,startAngle:l,pixelMargin:c,innerRadius:h}=t,d=Math.max(t.outerRadius+s+e-c,0),u=h>0?h+s+e+c:0;let f=0;const g=n-l;if(s){const E=h>0?h-s:0,B=d>0?d-s:0,H=(E+B)/2,it=H!==0?g*H/(H+s):g;f=(g-it)/2}const p=Math.max(.001,g*d-e/R)/d,m=(g-p)/2,b=l+m+f,x=n-m-f,{outerStart:v,outerEnd:y,innerStart:_,innerEnd:k}=sl(t,u,d,x-b),S=d-v,w=d-y,P=b+v/S,C=x-y/w,A=u+_,L=u+k,U=b+_/A,tt=x-k/L;if(i.beginPath(),o){const E=(P+C)/2;if(i.arc(a,r,d,P,E),i.arc(a,r,d,E,C),y>0){const X=Bt(w,C,a,r);i.arc(X.x,X.y,y,C,x+j)}const B=Bt(L,x,a,r);if(i.lineTo(B.x,B.y),k>0){const X=Bt(L,tt,a,r);i.arc(X.x,X.y,k,x+j,tt+Math.PI)}const H=(x-k/u+(b+_/u))/2;if(i.arc(a,r,u,x-k/u,H,!0),i.arc(a,r,u,H,b+_/u,!0),_>0){const X=Bt(A,U,a,r);i.arc(X.x,X.y,_,U+Math.PI,b-j)}const it=Bt(S,b,a,r);if(i.lineTo(it.x,it.y),v>0){const X=Bt(S,P,a,r);i.arc(X.x,X.y,v,b-j,P)}}else{i.moveTo(a,r);const E=Math.cos(P)*d+a,B=Math.sin(P)*d+r;i.lineTo(E,B);const H=Math.cos(C)*d+a,it=Math.sin(C)*d+r;i.lineTo(H,it)}i.closePath()}function nl(i,t,e,s,n){const{fullCircles:o,startAngle:a,circumference:r}=t;let l=t.endAngle;if(o){Ne(i,t,e,s,l,n);for(let c=0;c=R&&f===0&&h!=="miter"&&tl(i,t,p),o||(Ne(i,t,e,s,p,n),i.stroke())}class Qt extends ot{constructor(e){super();M(this,"circumference");M(this,"endAngle");M(this,"fullCircles");M(this,"innerRadius");M(this,"outerRadius");M(this,"pixelMargin");M(this,"startAngle");this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,s,n){const o=this.getProps(["x","y"],n),{angle:a,distance:r}=an(o,{x:e,y:s}),{startAngle:l,endAngle:c,innerRadius:h,outerRadius:d,circumference:u}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],n),f=(this.options.spacing+this.options.borderWidth)/2,g=D(u,c-l),p=le(a,l,c)&&l!==c,m=g>=F||p,b=ut(r,h+f,d+f);return m&&b}getCenterPoint(e){const{x:s,y:n,startAngle:o,endAngle:a,innerRadius:r,outerRadius:l}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],e),{offset:c,spacing:h}=this.options,d=(o+a)/2,u=(r+l+h+c)/2;return{x:s+Math.cos(d)*u,y:n+Math.sin(d)*u}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){const{options:s,circumference:n}=this,o=(s.offset||0)/4,a=(s.spacing||0)/2,r=s.circular;if(this.pixelMargin=s.borderAlign==="inner"?.33:0,this.fullCircles=n>F?Math.floor(n/F):0,n===0||this.innerRadius<0||this.outerRadius<0)return;e.save();const l=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(l)*o,Math.sin(l)*o);const c=1-Math.sin(Math.min(R,n||0)),h=o*c;e.fillStyle=s.backgroundColor,e.strokeStyle=s.borderColor,nl(e,this,h,a,r),ol(e,this,h,a,r),e.restore()}}M(Qt,"id","arc"),M(Qt,"defaults",{borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0,selfJoin:!1}),M(Qt,"defaultRoutes",{backgroundColor:"backgroundColor"}),M(Qt,"descriptors",{_scriptable:!0,_indexable:e=>e!=="borderDash"});function Wn(i,t,e=t){i.lineCap=D(e.borderCapStyle,t.borderCapStyle),i.setLineDash(D(e.borderDash,t.borderDash)),i.lineDashOffset=D(e.borderDashOffset,t.borderDashOffset),i.lineJoin=D(e.borderJoinStyle,t.borderJoinStyle),i.lineWidth=D(e.borderWidth,t.borderWidth),i.strokeStyle=D(e.borderColor,t.borderColor)}function al(i,t,e){i.lineTo(e.x,e.y)}function rl(i){return i.stepped?Ao:i.tension||i.cubicInterpolationMode==="monotone"?Oo:al}function Nn(i,t,e={}){const s=i.length,{start:n=0,end:o=s-1}=e,{start:a,end:r}=t,l=Math.max(n,a),c=Math.min(o,r),h=nr&&o>r;return{count:s,start:l,loop:t.loop,ilen:c(a+(c?r-y:y))%o,v=()=>{p!==m&&(i.lineTo(h,m),i.lineTo(h,p),i.lineTo(h,b))};for(l&&(f=n[x(0)],i.moveTo(f.x,f.y)),u=0;u<=r;++u){if(f=n[x(u)],f.skip)continue;const y=f.x,_=f.y,k=y|0;k===g?(_m&&(m=_),h=(d*h+y)/++d):(v(),i.lineTo(y,_),g=k,d=0,p=m=_),b=_}v()}function pi(i){const t=i.options,e=t.borderDash&&t.borderDash.length;return!i._decimated&&!i._loop&&!t.tension&&t.cubicInterpolationMode!=="monotone"&&!t.stepped&&!e?cl:ll}function hl(i){return i.stepped?la:i.tension||i.cubicInterpolationMode==="monotone"?ca:At}function dl(i,t,e,s){let n=t._path;n||(n=t._path=new Path2D,t.path(n,e,s)&&n.closePath()),Wn(i,t.options),i.stroke(n)}function ul(i,t,e,s){const{segments:n,options:o}=t,a=pi(t);for(const r of n)Wn(i,o,r.style),i.beginPath(),a(i,t,r,{start:e,end:e+s-1})&&i.closePath(),i.stroke()}const fl=typeof Path2D=="function";function gl(i,t,e,s){fl&&!t.options.segment?dl(i,t,e,s):ul(i,t,e,s)}class bt extends ot{constructor(t){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,t&&Object.assign(this,t)}updateControlPoints(t,e){const s=this.options;if((s.tension||s.cubicInterpolationMode==="monotone")&&!s.stepped&&!this._pointsUpdated){const n=s.spanGaps?this._loop:this._fullLoop;ta(this._points,s,t,n,e),this._pointsUpdated=!0}}set points(t){this._points=t,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=pa(this,this.options.segment))}first(){const t=this.segments,e=this.points;return t.length&&e[t[0].start]}last(){const t=this.segments,e=this.points,s=t.length;return s&&e[t[s-1].end]}interpolate(t,e){const s=this.options,n=t[e],o=this.points,a=Pn(this,{property:e,start:n,end:n});if(!a.length)return;const r=[],l=hl(s);let c,h;for(c=0,h=a.length;ct!=="borderDash"&&t!=="fill"});function As(i,t,e,s){const n=i.options,{[e]:o}=i.getProps([e],s);return Math.abs(t-o)i.replace("rgb(","rgba(").replace(")",", 0.5)"));function jn(i){return mi[i%mi.length]}function $n(i){return Os[i%Os.length]}function vl(i,t){return i.borderColor=jn(t),i.backgroundColor=$n(t),++t}function Ml(i,t){return i.backgroundColor=i.data.map(()=>jn(t++)),t}function kl(i,t){return i.backgroundColor=i.data.map(()=>$n(t++)),t}function Sl(i){let t=0;return(e,s)=>{const n=i.getDatasetMeta(s).controller;n instanceof Ot?t=Ml(e,t):n instanceof oe?t=kl(e,t):n&&(t=vl(e,t))}}function Ts(i){let t;for(t in i)if(i[t].borderColor||i[t].backgroundColor)return!0;return!1}function wl(i){return i&&(i.borderColor||i.backgroundColor)}function Pl(){return W.borderColor!=="rgba(0,0,0,0.1)"||W.backgroundColor!=="rgba(0,0,0,0.1)"}var Dl={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(i,t,e){if(!e.enabled)return;const{data:{datasets:s},options:n}=i.config,{elements:o}=n,a=Ts(s)||wl(n)||o&&Ts(o)||Pl();if(!e.forceOverride&&a)return;const r=Sl(i);s.forEach(r)}};function Cl(i,t,e,s,n){const o=n.samples||s;if(o>=e)return i.slice(t,t+e);const a=[],r=(e-2)/(o-2);let l=0;const c=t+e-1;let h=t,d,u,f,g,p;for(a[l++]=i[h],d=0;df&&(f=g,u=i[x],p=x);a[l++]=u,h=p}return a[l++]=i[c],a}function Al(i,t,e,s){let n=0,o=0,a,r,l,c,h,d,u,f,g,p;const m=[],b=t+e-1,x=i[t].x,y=i[b].x-x;for(a=t;ap&&(p=c,u=a),n=(o*n+r.x)/++o;else{const k=a-1;if(!O(d)&&!O(u)){const S=Math.min(d,u),w=Math.max(d,u);S!==f&&S!==k&&m.push({...i[S],x:n}),w!==f&&w!==k&&m.push({...i[w],x:n})}a>0&&k!==f&&m.push(i[k]),m.push(r),h=_,o=0,g=p=c,d=u=f=a}}return m}function Yn(i){if(i._decimated){const t=i._data;delete i._decimated,delete i._data,Object.defineProperty(i,"data",{configurable:!0,enumerable:!0,writable:!0,value:t})}}function Ls(i){i.data.datasets.forEach(t=>{Yn(t)})}function Ol(i,t){const e=t.length;let s=0,n;const{iScale:o}=i,{min:a,max:r,minDefined:l,maxDefined:c}=o.getUserBounds();return l&&(s=Y(ft(t,o.axis,a).lo,0,e-1)),c?n=Y(ft(t,o.axis,r).hi+1,s,e)-s:n=e-s,{start:s,count:n}}var Tl={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(i,t,e)=>{if(!e.enabled){Ls(i);return}const s=i.width;i.data.datasets.forEach((n,o)=>{const{_data:a,indexAxis:r}=n,l=i.getDatasetMeta(o),c=a||n.data;if(qt([r,i.options.indexAxis])==="y"||!l.controller.supportsDecimation)return;const h=i.scales[l.xAxisID];if(h.type!=="linear"&&h.type!=="time"||i.options.parsing)return;let{start:d,count:u}=Ol(l,c);const f=e.threshold||4*s;if(u<=f){Yn(n);return}O(a)&&(n._data=c,delete n.data,Object.defineProperty(n,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(p){this._data=p}}));let g;switch(e.algorithm){case"lttb":g=Cl(c,d,u,s,e);break;case"min-max":g=Al(c,d,u,s);break;default:throw new Error(`Unsupported decimation algorithm '${e.algorithm}'`)}n._decimated=g})},destroy(i){Ls(i)}};function Ll(i,t,e){const s=i.segments,n=i.points,o=t.points,a=[];for(const r of s){let{start:l,end:c}=r;c=Ke(l,c,n);const h=bi(e,n[l],n[c],r.loop);if(!t.segments){a.push({source:r,target:h,start:n[l],end:n[c]});continue}const d=Pn(t,h);for(const u of d){const f=bi(e,o[u.start],o[u.end],u.loop),g=wn(r,n,f);for(const p of g)a.push({source:p,target:u,start:{[e]:Rs(h,f,"start",Math.max)},end:{[e]:Rs(h,f,"end",Math.min)}})}}return a}function bi(i,t,e,s){if(s)return;let n=t[i],o=e[i];return i==="angle"&&(n=G(n),o=G(o)),{property:i,start:n,end:o}}function Rl(i,t){const{x:e=null,y:s=null}=i||{},n=t.points,o=[];return t.segments.forEach(({start:a,end:r})=>{r=Ke(a,r,n);const l=n[a],c=n[r];s!==null?(o.push({x:l.x,y:s}),o.push({x:c.x,y:s})):e!==null&&(o.push({x:e,y:l.y}),o.push({x:e,y:c.y}))}),o}function Ke(i,t,e){for(;t>i;t--){const s=e[t];if(!isNaN(s.x)&&!isNaN(s.y))break}return t}function Rs(i,t,e,s){return i&&t?s(i[e],t[e]):i?i[e]:t?t[e]:0}function Un(i,t){let e=[],s=!1;return V(i)?(s=!0,e=i):e=Rl(i,t),e.length?new bt({points:e,options:{tension:0},_loop:s,_fullLoop:s}):null}function Is(i){return i&&i.fill!==!1}function Il(i,t,e){let n=i[t].fill;const o=[t];let a;if(!e)return n;for(;n!==!1&&o.indexOf(n)===-1;){if(!N(n))return n;if(a=i[n],!a)return!1;if(a.visible)return n;o.push(n),n=a.fill}return!1}function El(i,t,e){const s=Vl(i);if(T(s))return isNaN(s.value)?!1:s;let n=parseFloat(s);return N(n)&&Math.floor(n)===n?zl(s[0],t,n,e):["origin","start","end","stack","shape"].indexOf(s)>=0&&s}function zl(i,t,e,s){return(i==="-"||i==="+")&&(e=t+e),e===t||e<0||e>=s?!1:e}function Fl(i,t){let e=null;return i==="start"?e=t.bottom:i==="end"?e=t.top:T(i)?e=t.getPixelForValue(i.value):t.getBasePixel&&(e=t.getBasePixel()),e}function Bl(i,t,e){let s;return i==="start"?s=e:i==="end"?s=t.options.reverse?t.min:t.max:T(i)?s=i.value:s=t.getBaseValue(),s}function Vl(i){const t=i.options,e=t.fill;let s=D(e&&e.target,e);return s===void 0&&(s=!!t.backgroundColor),s===!1||s===null?!1:s===!0?"origin":s}function Wl(i){const{scale:t,index:e,line:s}=i,n=[],o=s.segments,a=s.points,r=Nl(t,e);r.push(Un({x:null,y:t.bottom},s));for(let l=0;l=0;--a){const r=n[a].$filler;r&&(r.line.updateControlPoints(o,r.axis),s&&r.fill&&ri(i.ctx,r,o))}},beforeDatasetsDraw(i,t,e){if(e.drawTime!=="beforeDatasetsDraw")return;const s=i.getSortedVisibleDatasetMetas();for(let n=s.length-1;n>=0;--n){const o=s[n].$filler;Is(o)&&ri(i.ctx,o,i.chartArea)}},beforeDatasetDraw(i,t,e){const s=t.meta.$filler;!Is(s)||e.drawTime!=="beforeDatasetDraw"||ri(i.ctx,s,i.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const Bs=(i,t)=>{let{boxHeight:e=t,boxWidth:s=t}=i;return i.usePointStyle&&(e=Math.min(e,t),s=i.pointStyleWidth||Math.min(s,t)),{boxWidth:s,boxHeight:e,itemHeight:Math.max(t,e)}},Ql=(i,t)=>i!==null&&t!==null&&i.datasetIndex===t.datasetIndex&&i.index===t.index;class Vs extends ot{constructor(t){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e,s){this.maxWidth=t,this.maxHeight=e,this._margins=s,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const t=this.options.labels||{};let e=z(t.generateLabels,[this.chart],this)||[];t.filter&&(e=e.filter(s=>t.filter(s,this.chart.data))),t.sort&&(e=e.sort((s,n)=>t.sort(s,n,this.chart.data))),this.options.reverse&&e.reverse(),this.legendItems=e}fit(){const{options:t,ctx:e}=this;if(!t.display){this.width=this.height=0;return}const s=t.labels,n=$(s.font),o=n.size,a=this._computeTitleHeight(),{boxWidth:r,itemHeight:l}=Bs(s,o);let c,h;e.font=n.string,this.isHorizontal()?(c=this.maxWidth,h=this._fitRows(a,o,r,l)+10):(h=this.maxHeight,c=this._fitCols(a,n,r,l)+10),this.width=Math.min(c,t.maxWidth||this.maxWidth),this.height=Math.min(h,t.maxHeight||this.maxHeight)}_fitRows(t,e,s,n){const{ctx:o,maxWidth:a,options:{labels:{padding:r}}}=this,l=this.legendHitBoxes=[],c=this.lineWidths=[0],h=n+r;let d=t;o.textAlign="left",o.textBaseline="middle";let u=-1,f=-h;return this.legendItems.forEach((g,p)=>{const m=s+e/2+o.measureText(g.text).width;(p===0||c[c.length-1]+m+2*r>a)&&(d+=h,c[c.length-(p>0?0:1)]=0,f+=h,u++),l[p]={left:0,top:f,row:u,width:m,height:n},c[c.length-1]+=m+r}),d}_fitCols(t,e,s,n){const{ctx:o,maxHeight:a,options:{labels:{padding:r}}}=this,l=this.legendHitBoxes=[],c=this.columnSizes=[],h=a-t;let d=r,u=0,f=0,g=0,p=0;return this.legendItems.forEach((m,b)=>{const{itemWidth:x,itemHeight:v}=Zl(s,e,o,m,n);b>0&&f+v+2*r>h&&(d+=u+r,c.push({width:u,height:f}),g+=u+r,p++,u=f=0),l[b]={left:g,top:f,col:p,width:x,height:v},u=Math.max(u,x),f+=v+r}),d+=u,c.push({width:u,height:f}),d}adjustHitBoxes(){if(!this.options.display)return;const t=this._computeTitleHeight(),{legendHitBoxes:e,options:{align:s,labels:{padding:n},rtl:o}}=this,a=Vt(o,this.left,this.width);if(this.isHorizontal()){let r=0,l=K(s,this.left+n,this.right-this.lineWidths[r]);for(const c of e)r!==c.row&&(r=c.row,l=K(s,this.left+n,this.right-this.lineWidths[r])),c.top+=this.top+t+n,c.left=a.leftForLtr(a.x(l),c.width),l+=c.width+n}else{let r=0,l=K(s,this.top+t+n,this.bottom-this.columnSizes[r].height);for(const c of e)c.col!==r&&(r=c.col,l=K(s,this.top+t+n,this.bottom-this.columnSizes[r].height)),c.top=l,c.left+=this.left+n,c.left=a.leftForLtr(a.x(c.left),c.width),l+=c.height+n}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const t=this.ctx;$e(t,this),this._draw(),Ye(t)}}_draw(){const{options:t,columnSizes:e,lineWidths:s,ctx:n}=this,{align:o,labels:a}=t,r=W.color,l=Vt(t.rtl,this.left,this.width),c=$(a.font),{padding:h}=a,d=c.size,u=d/2;let f;this.drawTitle(),n.textAlign=l.textAlign("left"),n.textBaseline="middle",n.lineWidth=.5,n.font=c.string;const{boxWidth:g,boxHeight:p,itemHeight:m}=Bs(a,d),b=function(k,S,w){if(isNaN(g)||g<=0||isNaN(p)||p<0)return;n.save();const P=D(w.lineWidth,1);if(n.fillStyle=D(w.fillStyle,r),n.lineCap=D(w.lineCap,"butt"),n.lineDashOffset=D(w.lineDashOffset,0),n.lineJoin=D(w.lineJoin,"miter"),n.lineWidth=P,n.strokeStyle=D(w.strokeStyle,r),n.setLineDash(D(w.lineDash,[])),a.usePointStyle){const C={radius:p*Math.SQRT2/2,pointStyle:w.pointStyle,rotation:w.rotation,borderWidth:P},A=l.xPlus(k,g/2),L=S+u;gn(n,C,A,L,a.pointStyleWidth&&g)}else{const C=S+Math.max((d-p)/2,0),A=l.leftForLtr(k,g),L=Tt(w.borderRadius);n.beginPath(),Object.values(L).some(U=>U!==0)?ce(n,{x:A,y:C,w:g,h:p,radius:L}):n.rect(A,C,g,p),n.fill(),P!==0&&n.stroke()}n.restore()},x=function(k,S,w){It(n,w.text,k,S+m/2,c,{strikethrough:w.hidden,textAlign:l.textAlign(w.textAlign)})},v=this.isHorizontal(),y=this._computeTitleHeight();v?f={x:K(o,this.left+h,this.right-s[0]),y:this.top+h+y,line:0}:f={x:this.left+h,y:K(o,this.top+y+h,this.bottom-e[0].height),line:0},Mn(this.ctx,t.textDirection);const _=m+h;this.legendItems.forEach((k,S)=>{n.strokeStyle=k.fontColor,n.fillStyle=k.fontColor;const w=n.measureText(k.text).width,P=l.textAlign(k.textAlign||(k.textAlign=a.textAlign)),C=g+u+w;let A=f.x,L=f.y;l.setWidth(this.width),v?S>0&&A+C+h>this.right&&(L=f.y+=_,f.line++,A=f.x=K(o,this.left+h,this.right-s[f.line])):S>0&&L+_>this.bottom&&(A=f.x=A+e[f.line].width+h,f.line++,L=f.y=K(o,this.top+y+h,this.bottom-e[f.line].height));const U=l.x(A);if(b(U,L,k),A=xo(P,A+g+u,v?A+C:this.right,t.rtl),x(l.x(A),L,k),v)f.x+=C+h;else if(typeof k.text!="string"){const tt=c.lineHeight;f.y+=Kn(k,tt)+h}else f.y+=_}),kn(this.ctx,t.textDirection)}drawTitle(){const t=this.options,e=t.title,s=$(e.font),n=J(e.padding);if(!e.display)return;const o=Vt(t.rtl,this.left,this.width),a=this.ctx,r=e.position,l=s.size/2,c=n.top+l;let h,d=this.left,u=this.width;if(this.isHorizontal())u=Math.max(...this.lineWidths),h=this.top+c,d=K(t.align,d,this.right-u);else{const g=this.columnSizes.reduce((p,m)=>Math.max(p,m.height),0);h=c+K(t.align,this.top,this.bottom-g-t.labels.padding-this._computeTitleHeight())}const f=K(r,d,d+u);a.textAlign=o.textAlign(Di(r)),a.textBaseline="middle",a.strokeStyle=e.color,a.fillStyle=e.color,a.font=s.string,It(a,e.text,f,h,s)}_computeTitleHeight(){const t=this.options.title,e=$(t.font),s=J(t.padding);return t.display?e.lineHeight+s.height:0}_getLegendItemAt(t,e){let s,n,o;if(ut(t,this.left,this.right)&&ut(e,this.top,this.bottom)){for(o=this.legendHitBoxes,s=0;so.length>a.length?o:a)),t+e.size/2+s.measureText(n).width}function ec(i,t,e){let s=i;return typeof t.text!="string"&&(s=Kn(t,e)),s}function Kn(i,t){const e=i.text?i.text.length:0;return t*e}function ic(i,t){return!!((i==="mousemove"||i==="mouseout")&&(t.onHover||t.onLeave)||t.onClick&&(i==="click"||i==="mouseup"))}var sc={id:"legend",_element:Vs,start(i,t,e){const s=i.legend=new Vs({ctx:i.ctx,options:e,chart:i});q.configure(i,s,e),q.addBox(i,s)},stop(i){q.removeBox(i,i.legend),delete i.legend},beforeUpdate(i,t,e){const s=i.legend;q.configure(i,s,e),s.options=e},afterUpdate(i){const t=i.legend;t.buildLabels(),t.adjustHitBoxes()},afterEvent(i,t){t.replay||i.legend.handleEvent(t.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(i,t,e){const s=t.datasetIndex,n=e.chart;n.isDatasetVisible(s)?(n.hide(s),t.hidden=!0):(n.show(s),t.hidden=!1)},onHover:null,onLeave:null,labels:{color:i=>i.chart.options.color,boxWidth:40,padding:10,generateLabels(i){const t=i.data.datasets,{labels:{usePointStyle:e,pointStyle:s,textAlign:n,color:o,useBorderRadius:a,borderRadius:r}}=i.legend.options;return i._getSortedDatasetMetas().map(l=>{const c=l.controller.getStyle(e?0:void 0),h=J(c.borderWidth);return{text:t[l.index].label,fillStyle:c.backgroundColor,fontColor:o,hidden:!l.visible,lineCap:c.borderCapStyle,lineDash:c.borderDash,lineDashOffset:c.borderDashOffset,lineJoin:c.borderJoinStyle,lineWidth:(h.width+h.height)/4,strokeStyle:c.borderColor,pointStyle:s||c.pointStyle,rotation:c.rotation,textAlign:n||c.textAlign,borderRadius:a&&(r||c.borderRadius),datasetIndex:l.index}},this)}},title:{color:i=>i.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:i=>!i.startsWith("on"),labels:{_scriptable:i=>!["generateLabels","filter","sort"].includes(i)}}};class zi extends ot{constructor(t){super(),this.chart=t.chart,this.options=t.options,this.ctx=t.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(t,e){const s=this.options;if(this.left=0,this.top=0,!s.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=t,this.height=this.bottom=e;const n=V(s.text)?s.text.length:1;this._padding=J(s.padding);const o=n*$(s.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=o:this.width=o}isHorizontal(){const t=this.options.position;return t==="top"||t==="bottom"}_drawArgs(t){const{top:e,left:s,bottom:n,right:o,options:a}=this,r=a.align;let l=0,c,h,d;return this.isHorizontal()?(h=K(r,s,o),d=e+t,c=o-s):(a.position==="left"?(h=s+t,d=K(r,n,e),l=R*-.5):(h=o-t,d=K(r,e,n),l=R*.5),c=n-e),{titleX:h,titleY:d,maxWidth:c,rotation:l}}draw(){const t=this.ctx,e=this.options;if(!e.display)return;const s=$(e.font),o=s.lineHeight/2+this._padding.top,{titleX:a,titleY:r,maxWidth:l,rotation:c}=this._drawArgs(o);It(t,e.text,0,0,s,{color:e.color,maxWidth:l,rotation:c,textAlign:Di(e.align),textBaseline:"middle",translation:[a,r]})}}function nc(i,t){const e=new zi({ctx:i.ctx,options:t,chart:i});q.configure(i,e,t),q.addBox(i,e),i.titleBlock=e}var oc={id:"title",_element:zi,start(i,t,e){nc(i,e)},stop(i){const t=i.titleBlock;q.removeBox(i,t),delete i.titleBlock},beforeUpdate(i,t,e){const s=i.titleBlock;q.configure(i,s,e),s.options=e},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const ke=new WeakMap;var ac={id:"subtitle",start(i,t,e){const s=new zi({ctx:i.ctx,options:e,chart:i});q.configure(i,s,e),q.addBox(i,s),ke.set(i,s)},stop(i){q.removeBox(i,ke.get(i)),ke.delete(i)},beforeUpdate(i,t,e){const s=ke.get(i);q.configure(i,s,e),s.options=e},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Zt={average(i){if(!i.length)return!1;let t,e,s=new Set,n=0,o=0;for(t=0,e=i.length;tr+l)/s.size,y:n/o}},nearest(i,t){if(!i.length)return!1;let e=t.x,s=t.y,n=Number.POSITIVE_INFINITY,o,a,r;for(o=0,a=i.length;o-1?i.split(` -`):i}function rc(i,t){const{element:e,datasetIndex:s,index:n}=t,o=i.getDatasetMeta(s).controller,{label:a,value:r}=o.getLabelAndValue(n);return{chart:i,label:a,parsed:o.getParsed(n),raw:i.data.datasets[s].data[n],formattedValue:r,dataset:o.getDataset(),dataIndex:n,datasetIndex:s,element:e}}function Ws(i,t){const e=i.chart.ctx,{body:s,footer:n,title:o}=i,{boxWidth:a,boxHeight:r}=t,l=$(t.bodyFont),c=$(t.titleFont),h=$(t.footerFont),d=o.length,u=n.length,f=s.length,g=J(t.padding);let p=g.height,m=0,b=s.reduce((y,_)=>y+_.before.length+_.lines.length+_.after.length,0);if(b+=i.beforeBody.length+i.afterBody.length,d&&(p+=d*c.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),b){const y=t.displayColors?Math.max(r,l.lineHeight):l.lineHeight;p+=f*y+(b-f)*l.lineHeight+(b-1)*t.bodySpacing}u&&(p+=t.footerMarginTop+u*h.lineHeight+(u-1)*t.footerSpacing);let x=0;const v=function(y){m=Math.max(m,e.measureText(y).width+x)};return e.save(),e.font=c.string,I(i.title,v),e.font=l.string,I(i.beforeBody.concat(i.afterBody),v),x=t.displayColors?a+2+t.boxPadding:0,I(s,y=>{I(y.before,v),I(y.lines,v),I(y.after,v)}),x=0,e.font=h.string,I(i.footer,v),e.restore(),m+=g.width,{width:m,height:p}}function lc(i,t){const{y:e,height:s}=t;return ei.height-s/2?"bottom":"center"}function cc(i,t,e,s){const{x:n,width:o}=s,a=e.caretSize+e.caretPadding;if(i==="left"&&n+o+a>t.width||i==="right"&&n-o-a<0)return!0}function hc(i,t,e,s){const{x:n,width:o}=e,{width:a,chartArea:{left:r,right:l}}=i;let c="center";return s==="center"?c=n<=(r+l)/2?"left":"right":n<=o/2?c="left":n>=a-o/2&&(c="right"),cc(c,i,t,e)&&(c="center"),c}function Ns(i,t,e){const s=e.yAlign||t.yAlign||lc(i,e);return{xAlign:e.xAlign||t.xAlign||hc(i,t,e,s),yAlign:s}}function dc(i,t){let{x:e,width:s}=i;return t==="right"?e-=s:t==="center"&&(e-=s/2),e}function uc(i,t,e){let{y:s,height:n}=i;return t==="top"?s+=e:t==="bottom"?s-=n+e:s-=n/2,s}function Hs(i,t,e,s){const{caretSize:n,caretPadding:o,cornerRadius:a}=i,{xAlign:r,yAlign:l}=e,c=n+o,{topLeft:h,topRight:d,bottomLeft:u,bottomRight:f}=Tt(a);let g=dc(t,r);const p=uc(t,l,c);return l==="center"?r==="left"?g+=c:r==="right"&&(g-=c):r==="left"?g-=Math.max(h,u)+n:r==="right"&&(g+=Math.max(d,f)+n),{x:Y(g,0,s.width-t.width),y:Y(p,0,s.height-t.height)}}function Se(i,t,e){const s=J(e.padding);return t==="center"?i.x+i.width/2:t==="right"?i.x+i.width-s.right:i.x+s.left}function js(i){return at([],dt(i))}function fc(i,t,e){return vt(i,{tooltip:t,tooltipItems:e,type:"tooltip"})}function $s(i,t){const e=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return e?i.override(e):i}const Gn={beforeTitle:ct,title(i){if(i.length>0){const t=i[0],e=t.chart.data.labels,s=e?e.length:0;if(this&&this.options&&this.options.mode==="dataset")return t.dataset.label||"";if(t.label)return t.label;if(s>0&&t.dataIndex"u"?Gn[t].call(e,s):n}class xi extends ot{constructor(t){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=t.chart,this.options=t.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(t){this.options=t,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const t=this._cachedAnimations;if(t)return t;const e=this.chart,s=this.options.setContext(this.getContext()),n=s.enabled&&e.options.animation&&s.animations,o=new Cn(this.chart,n);return n._cacheable&&(this._cachedAnimations=Object.freeze(o)),o}getContext(){return this.$context||(this.$context=fc(this.chart.getContext(),this,this._tooltipItems))}getTitle(t,e){const{callbacks:s}=e,n=Q(s,"beforeTitle",this,t),o=Q(s,"title",this,t),a=Q(s,"afterTitle",this,t);let r=[];return r=at(r,dt(n)),r=at(r,dt(o)),r=at(r,dt(a)),r}getBeforeBody(t,e){return js(Q(e.callbacks,"beforeBody",this,t))}getBody(t,e){const{callbacks:s}=e,n=[];return I(t,o=>{const a={before:[],lines:[],after:[]},r=$s(s,o);at(a.before,dt(Q(r,"beforeLabel",this,o))),at(a.lines,Q(r,"label",this,o)),at(a.after,dt(Q(r,"afterLabel",this,o))),n.push(a)}),n}getAfterBody(t,e){return js(Q(e.callbacks,"afterBody",this,t))}getFooter(t,e){const{callbacks:s}=e,n=Q(s,"beforeFooter",this,t),o=Q(s,"footer",this,t),a=Q(s,"afterFooter",this,t);let r=[];return r=at(r,dt(n)),r=at(r,dt(o)),r=at(r,dt(a)),r}_createItems(t){const e=this._active,s=this.chart.data,n=[],o=[],a=[];let r=[],l,c;for(l=0,c=e.length;lt.filter(h,d,u,s))),t.itemSort&&(r=r.sort((h,d)=>t.itemSort(h,d,s))),I(r,h=>{const d=$s(t.callbacks,h);n.push(Q(d,"labelColor",this,h)),o.push(Q(d,"labelPointStyle",this,h)),a.push(Q(d,"labelTextColor",this,h))}),this.labelColors=n,this.labelPointStyles=o,this.labelTextColors=a,this.dataPoints=r,r}update(t,e){const s=this.options.setContext(this.getContext()),n=this._active;let o,a=[];if(!n.length)this.opacity!==0&&(o={opacity:0});else{const r=Zt[s.position].call(this,n,this._eventPosition);a=this._createItems(s),this.title=this.getTitle(a,s),this.beforeBody=this.getBeforeBody(a,s),this.body=this.getBody(a,s),this.afterBody=this.getAfterBody(a,s),this.footer=this.getFooter(a,s);const l=this._size=Ws(this,s),c=Object.assign({},r,l),h=Ns(this.chart,s,c),d=Hs(s,c,h,this.chart);this.xAlign=h.xAlign,this.yAlign=h.yAlign,o={opacity:1,x:d.x,y:d.y,width:l.width,height:l.height,caretX:r.x,caretY:r.y}}this._tooltipItems=a,this.$context=void 0,o&&this._resolveAnimations().update(this,o),t&&s.external&&s.external.call(this,{chart:this.chart,tooltip:this,replay:e})}drawCaret(t,e,s,n){const o=this.getCaretPosition(t,s,n);e.lineTo(o.x1,o.y1),e.lineTo(o.x2,o.y2),e.lineTo(o.x3,o.y3)}getCaretPosition(t,e,s){const{xAlign:n,yAlign:o}=this,{caretSize:a,cornerRadius:r}=s,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:d}=Tt(r),{x:u,y:f}=t,{width:g,height:p}=e;let m,b,x,v,y,_;return o==="center"?(y=f+p/2,n==="left"?(m=u,b=m-a,v=y+a,_=y-a):(m=u+g,b=m+a,v=y-a,_=y+a),x=m):(n==="left"?b=u+Math.max(l,h)+a:n==="right"?b=u+g-Math.max(c,d)-a:b=this.caretX,o==="top"?(v=f,y=v-a,m=b-a,x=b+a):(v=f+p,y=v+a,m=b+a,x=b-a),_=v),{x1:m,x2:b,x3:x,y1:v,y2:y,y3:_}}drawTitle(t,e,s){const n=this.title,o=n.length;let a,r,l;if(o){const c=Vt(s.rtl,this.x,this.width);for(t.x=Se(this,s.titleAlign,s),e.textAlign=c.textAlign(s.titleAlign),e.textBaseline="middle",a=$(s.titleFont),r=s.titleSpacing,e.fillStyle=s.titleColor,e.font=a.string,l=0;lx!==0)?(t.beginPath(),t.fillStyle=o.multiKeyBackground,ce(t,{x:p,y:g,w:c,h:l,radius:b}),t.fill(),t.stroke(),t.fillStyle=a.backgroundColor,t.beginPath(),ce(t,{x:m,y:g+1,w:c-2,h:l-2,radius:b}),t.fill()):(t.fillStyle=o.multiKeyBackground,t.fillRect(p,g,c,l),t.strokeRect(p,g,c,l),t.fillStyle=a.backgroundColor,t.fillRect(m,g+1,c-2,l-2))}t.fillStyle=this.labelTextColors[s]}drawBody(t,e,s){const{body:n}=this,{bodySpacing:o,bodyAlign:a,displayColors:r,boxHeight:l,boxWidth:c,boxPadding:h}=s,d=$(s.bodyFont);let u=d.lineHeight,f=0;const g=Vt(s.rtl,this.x,this.width),p=function(w){e.fillText(w,g.x(t.x+f),t.y+u/2),t.y+=u+o},m=g.textAlign(a);let b,x,v,y,_,k,S;for(e.textAlign=a,e.textBaseline="middle",e.font=d.string,t.x=Se(this,m,s),e.fillStyle=s.bodyColor,I(this.beforeBody,p),f=r&&m!=="right"?a==="center"?c/2+h:c+2+h:0,y=0,k=n.length;y0&&e.stroke()}_updateAnimationTarget(t){const e=this.chart,s=this.$animations,n=s&&s.x,o=s&&s.y;if(n||o){const a=Zt[t.position].call(this,this._active,this._eventPosition);if(!a)return;const r=this._size=Ws(this,t),l=Object.assign({},a,this._size),c=Ns(e,t,l),h=Hs(t,l,c,e);(n._to!==h.x||o._to!==h.y)&&(this.xAlign=c.xAlign,this.yAlign=c.yAlign,this.width=r.width,this.height=r.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,h))}}_willRender(){return!!this.opacity}draw(t){const e=this.options.setContext(this.getContext());let s=this.opacity;if(!s)return;this._updateAnimationTarget(e);const n={width:this.width,height:this.height},o={x:this.x,y:this.y};s=Math.abs(s)<.001?0:s;const a=J(e.padding),r=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;e.enabled&&r&&(t.save(),t.globalAlpha=s,this.drawBackground(o,t,n,e),Mn(t,e.textDirection),o.y+=a.top,this.drawTitle(o,t,e),this.drawBody(o,t,e),this.drawFooter(o,t,e),kn(t,e.textDirection),t.restore())}getActiveElements(){return this._active||[]}setActiveElements(t,e){const s=this._active,n=t.map(({datasetIndex:r,index:l})=>{const c=this.chart.getDatasetMeta(r);if(!c)throw new Error("Cannot find a dataset at index "+r);return{datasetIndex:r,element:c.data[l],index:l}}),o=!Ee(s,n),a=this._positionChanged(n,e);(o||a)&&(this._active=n,this._eventPosition=e,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(t,e,s=!0){if(e&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const n=this.options,o=this._active||[],a=this._getActiveElements(t,o,e,s),r=this._positionChanged(a,t),l=e||!Ee(a,o)||r;return l&&(this._active=a,(n.enabled||n.external)&&(this._eventPosition={x:t.x,y:t.y},this.update(!0,e))),l}_getActiveElements(t,e,s,n){const o=this.options;if(t.type==="mouseout")return[];if(!n)return e.filter(r=>this.chart.data.datasets[r.datasetIndex]&&this.chart.getDatasetMeta(r.datasetIndex).controller.getParsed(r.index)!==void 0);const a=this.chart.getElementsAtEventForMode(t,o.mode,o,s);return o.reverse&&a.reverse(),a}_positionChanged(t,e){const{caretX:s,caretY:n,options:o}=this,a=Zt[o.position].call(this,t,e);return a!==!1&&(s!==a.x||n!==a.y)}}M(xi,"positioners",Zt);var gc={id:"tooltip",_element:xi,positioners:Zt,afterInit(i,t,e){e&&(i.tooltip=new xi({chart:i,options:e}))},beforeUpdate(i,t,e){i.tooltip&&i.tooltip.initialize(e)},reset(i,t,e){i.tooltip&&i.tooltip.initialize(e)},afterDraw(i){const t=i.tooltip;if(t&&t._willRender()){const e={tooltip:t};if(i.notifyPlugins("beforeTooltipDraw",{...e,cancelable:!0})===!1)return;t.draw(i.ctx),i.notifyPlugins("afterTooltipDraw",e)}},afterEvent(i,t){if(i.tooltip){const e=t.replay;i.tooltip.handleEvent(t.event,e,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(i,t)=>t.bodyFont.size,boxWidth:(i,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:Gn},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:i=>i!=="filter"&&i!=="itemSort"&&i!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},pc=Object.freeze({__proto__:null,Colors:Dl,Decimation:Tl,Filler:Jl,Legend:sc,SubTitle:ac,Title:oc,Tooltip:gc});const mc=(i,t,e,s)=>(typeof t=="string"?(e=i.push(t)-1,s.unshift({index:e,label:t})):isNaN(t)&&(e=null),e);function bc(i,t,e,s){const n=i.indexOf(t);if(n===-1)return mc(i,t,e,s);const o=i.lastIndexOf(t);return n!==o?e:n}const xc=(i,t)=>i===null?null:Y(Math.round(i),0,t);function Ys(i){const t=this.getLabels();return i>=0&&ie.length-1?null:this.getPixelForValue(e[t].value)}getValueForPixel(t){return Math.round(this._startValue+this.getDecimalForPixel(t)*this._valueRange)}getBasePixel(){return this.bottom}}M(_i,"id","category"),M(_i,"defaults",{ticks:{callback:Ys}});function _c(i,t){const e=[],{bounds:n,step:o,min:a,max:r,precision:l,count:c,maxTicks:h,maxDigits:d,includeBounds:u}=i,f=o||1,g=h-1,{min:p,max:m}=t,b=!O(a),x=!O(r),v=!O(c),y=(m-p)/(d+1);let _=Wi((m-p)/g/f)*f,k,S,w,P;if(_<1e-14&&!b&&!x)return[{value:p},{value:m}];P=Math.ceil(m/_)-Math.floor(p/_),P>g&&(_=Wi(P*_/g/f)*f),O(l)||(k=Math.pow(10,l),_=Math.ceil(_*k)/k),n==="ticks"?(S=Math.floor(p/_)*_,w=Math.ceil(m/_)*_):(S=p,w=m),b&&x&&o&&ho((r-a)/o,_/1e3)?(P=Math.round(Math.min((r-a)/_,h)),_=(r-a)/P,S=a,w=r):v?(S=b?a:S,w=x?r:w,P=c-1,_=(w-S)/P):(P=(w-S)/_,ie(P,Math.round(P),_/1e3)?P=Math.round(P):P=Math.ceil(P));const C=Math.max(Ni(_),Ni(S));k=Math.pow(10,O(l)?C:l),S=Math.round(S*k)/k,w=Math.round(w*k)/k;let A=0;for(b&&(u&&S!==a?(e.push({value:a}),Sr)break;e.push({value:L})}return x&&u&&w!==r?e.length&&ie(e[e.length-1].value,r,Us(r,y,i))?e[e.length-1].value=r:e.push({value:r}):(!x||w===r)&&e.push({value:w}),e}function Us(i,t,{horizontal:e,minRotation:s}){const n=st(s),o=(e?Math.sin(n):Math.cos(n))||.001,a=.75*t*(""+i).length;return Math.min(t/o,a)}class He extends Et{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(t,e){return O(t)||(typeof t=="number"||t instanceof Number)&&!isFinite(+t)?null:+t}handleTickRangeOptions(){const{beginAtZero:t}=this.options,{minDefined:e,maxDefined:s}=this.getUserBounds();let{min:n,max:o}=this;const a=l=>n=e?n:l,r=l=>o=s?o:l;if(t){const l=lt(n),c=lt(o);l<0&&c<0?r(0):l>0&&c>0&&a(0)}if(n===o){let l=o===0?1:Math.abs(o*.05);r(o+l),t||a(n-l)}this.min=n,this.max=o}getTickLimit(){const t=this.options.ticks;let{maxTicksLimit:e,stepSize:s}=t,n;return s?(n=Math.ceil(this.max/s)-Math.floor(this.min/s)+1,n>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${n} ticks. Limiting to 1000.`),n=1e3)):(n=this.computeTickLimit(),e=e||11),e&&(n=Math.min(e,n)),n}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const t=this.options,e=t.ticks;let s=this.getTickLimit();s=Math.max(2,s);const n={maxTicks:s,bounds:t.bounds,min:t.min,max:t.max,precision:e.precision,step:e.stepSize,count:e.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:e.minRotation||0,includeBounds:e.includeBounds!==!1},o=this._range||this,a=_c(n,o);return t.bounds==="ticks"&&on(a,this,"value"),t.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),a}configure(){const t=this.ticks;let e=this.min,s=this.max;if(super.configure(),this.options.offset&&t.length){const n=(s-e)/Math.max(t.length-1,1)/2;e-=n,s+=n}this._startValue=e,this._endValue=s,this._valueRange=s-e}getLabelForValue(t){return fe(t,this.chart.options.locale,this.options.ticks.format)}}class yi extends He{determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=N(t)?t:0,this.max=N(e)?e:1,this.handleTickRangeOptions()}computeTickLimit(){const t=this.isHorizontal(),e=t?this.width:this.height,s=st(this.options.ticks.minRotation),n=(t?Math.sin(s):Math.cos(s))||.001,o=this._resolveTickFontOptions(0);return Math.ceil(e/Math.min(40,o.lineHeight/n))}getPixelForValue(t){return t===null?NaN:this.getPixelForDecimal((t-this._startValue)/this._valueRange)}getValueForPixel(t){return this._startValue+this.getDecimalForPixel(t)*this._valueRange}}M(yi,"id","linear"),M(yi,"defaults",{ticks:{callback:je.formatters.numeric}});const de=i=>Math.floor(mt(i)),Dt=(i,t)=>Math.pow(10,de(i)+t);function Xs(i){return i/Math.pow(10,de(i))===1}function Ks(i,t,e){const s=Math.pow(10,e),n=Math.floor(i/s);return Math.ceil(t/s)-n}function yc(i,t){const e=t-i;let s=de(e);for(;Ks(i,t,s)>10;)s++;for(;Ks(i,t,s)<10;)s--;return Math.min(s,de(i))}function vc(i,{min:t,max:e}){t=et(i.min,t);const s=[],n=de(t);let o=yc(t,e),a=o<0?Math.pow(10,Math.abs(o)):1;const r=Math.pow(10,o),l=n>o?Math.pow(10,n):0,c=Math.round((t-l)*a)/a,h=Math.floor((t-l)/r/10)*r*10;let d=Math.floor((c-h)/Math.pow(10,o)),u=et(i.min,Math.round((l+h+d*Math.pow(10,o))*a)/a);for(;u=10?d=d<15?15:20:d++,d>=20&&(o++,d=2,a=o>=0?1:a),u=Math.round((l+h+d*Math.pow(10,o))*a)/a;const f=et(i.max,u);return s.push({value:f,major:Xs(f),significand:d}),s}class vi extends Et{constructor(t){super(t),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(t,e){const s=He.prototype.parse.apply(this,[t,e]);if(s===0){this._zero=!0;return}return N(s)&&s>0?s:null}determineDataLimits(){const{min:t,max:e}=this.getMinMax(!0);this.min=N(t)?Math.max(0,t):null,this.max=N(e)?Math.max(0,e):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!N(this._userMin)&&(this.min=t===Dt(this.min,0)?Dt(this.min,-1):Dt(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:t,maxDefined:e}=this.getUserBounds();let s=this.min,n=this.max;const o=r=>s=t?s:r,a=r=>n=e?n:r;s===n&&(s<=0?(o(1),a(10)):(o(Dt(s,-1)),a(Dt(n,1)))),s<=0&&o(Dt(n,-1)),n<=0&&a(Dt(s,1)),this.min=s,this.max=n}buildTicks(){const t=this.options,e={min:this._userMin,max:this._userMax},s=vc(e,this);return t.bounds==="ticks"&&on(s,this,"value"),t.reverse?(s.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),s}getLabelForValue(t){return t===void 0?"0":fe(t,this.chart.options.locale,this.options.ticks.format)}configure(){const t=this.min;super.configure(),this._startValue=mt(t),this._valueRange=mt(this.max)-mt(t)}getPixelForValue(t){return(t===void 0||t===0)&&(t=this.min),t===null||isNaN(t)?NaN:this.getPixelForDecimal(t===this.min?0:(mt(t)-this._startValue)/this._valueRange)}getValueForPixel(t){const e=this.getDecimalForPixel(t);return Math.pow(10,this._startValue+e*this._valueRange)}}M(vi,"id","logarithmic"),M(vi,"defaults",{ticks:{callback:je.formatters.logarithmic,major:{enabled:!0}}});function Mi(i){const t=i.ticks;if(t.display&&i.display){const e=J(t.backdropPadding);return D(t.font&&t.font.size,W.font.size)+e.height}return 0}function Mc(i,t,e){return e=V(e)?e:[e],{w:Co(i,t.string,e),h:e.length*t.lineHeight}}function Gs(i,t,e,s,n){return i===s||i===n?{start:t-e/2,end:t+e/2}:in?{start:t-e,end:t}:{start:t,end:t+e}}function kc(i){const t={l:i.left+i._padding.left,r:i.right-i._padding.right,t:i.top+i._padding.top,b:i.bottom-i._padding.bottom},e=Object.assign({},t),s=[],n=[],o=i._pointLabels.length,a=i.options.pointLabels,r=a.centerPointLabels?R/o:0;for(let l=0;lt.r&&(r=(s.end-t.r)/o,i.r=Math.max(i.r,t.r+r)),n.startt.b&&(l=(n.end-t.b)/a,i.b=Math.max(i.b,t.b+l))}function wc(i,t,e){const s=i.drawingArea,{extra:n,additionalAngle:o,padding:a,size:r}=e,l=i.getPointPosition(t,s+n+a,o),c=Math.round(wi(G(l.angle+j))),h=Oc(l.y,r.h,c),d=Cc(c),u=Ac(l.x,r.w,d);return{visible:!0,x:l.x,y:h,textAlign:d,left:u,top:h,right:u+r.w,bottom:h+r.h}}function Pc(i,t){if(!t)return!0;const{left:e,top:s,right:n,bottom:o}=i;return!(gt({x:e,y:s},t)||gt({x:e,y:o},t)||gt({x:n,y:s},t)||gt({x:n,y:o},t))}function Dc(i,t,e){const s=[],n=i._pointLabels.length,o=i.options,{centerPointLabels:a,display:r}=o.pointLabels,l={extra:Mi(o)/2,additionalAngle:a?R/n:0};let c;for(let h=0;h270||e<90)&&(i-=t),i}function Tc(i,t,e){const{left:s,top:n,right:o,bottom:a}=e,{backdropColor:r}=t;if(!O(r)){const l=Tt(t.borderRadius),c=J(t.backdropPadding);i.fillStyle=r;const h=s-c.left,d=n-c.top,u=o-s+c.width,f=a-n+c.height;Object.values(l).some(g=>g!==0)?(i.beginPath(),ce(i,{x:h,y:d,w:u,h:f,radius:l}),i.fill()):i.fillRect(h,d,u,f)}}function Lc(i,t){const{ctx:e,options:{pointLabels:s}}=i;for(let n=t-1;n>=0;n--){const o=i._pointLabelItems[n];if(!o.visible)continue;const a=s.setContext(i.getPointLabelContext(n));Tc(e,a,o);const r=$(a.font),{x:l,y:c,textAlign:h}=o;It(e,i._pointLabels[n],l,c+r.lineHeight/2,r,{color:a.color,textAlign:h,textBaseline:"middle"})}}function qn(i,t,e,s){const{ctx:n}=i;if(e)n.arc(i.xCenter,i.yCenter,t,0,F);else{let o=i.getPointPosition(0,t);n.moveTo(o.x,o.y);for(let a=1;a{const n=z(this.options.pointLabels.callback,[e,s],this);return n||n===0?n:""}).filter((e,s)=>this.chart.getDataVisibility(s))}fit(){const t=this.options;t.display&&t.pointLabels.display?kc(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(t,e,s,n){this.xCenter+=Math.floor((t-e)/2),this.yCenter+=Math.floor((s-n)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(t,e,s,n))}getIndexAngle(t){const e=F/(this._pointLabels.length||1),s=this.options.startAngle||0;return G(t*e+st(s))}getDistanceFromCenterForValue(t){if(O(t))return NaN;const e=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-t)*e:(t-this.min)*e}getValueForDistanceFromCenter(t){if(O(t))return NaN;const e=t/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-e:this.min+e}getPointLabelContext(t){const e=this._pointLabels||[];if(t>=0&&t{if(d!==0||d===0&&this.min<0){l=this.getDistanceFromCenterForValue(h.value);const u=this.getContext(d),f=n.setContext(u),g=o.setContext(u);Rc(this,f,l,a,g)}}),s.display){for(t.save(),r=a-1;r>=0;r--){const h=s.setContext(this.getPointLabelContext(r)),{color:d,lineWidth:u}=h;!u||!d||(t.lineWidth=u,t.strokeStyle=d,t.setLineDash(h.borderDash),t.lineDashOffset=h.borderDashOffset,l=this.getDistanceFromCenterForValue(e.reverse?this.min:this.max),c=this.getPointPosition(r,l),t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(c.x,c.y),t.stroke())}t.restore()}}drawBorder(){}drawLabels(){const t=this.ctx,e=this.options,s=e.ticks;if(!s.display)return;const n=this.getIndexAngle(0);let o,a;t.save(),t.translate(this.xCenter,this.yCenter),t.rotate(n),t.textAlign="center",t.textBaseline="middle",this.ticks.forEach((r,l)=>{if(l===0&&this.min>=0&&!e.reverse)return;const c=s.setContext(this.getContext(l)),h=$(c.font);if(o=this.getDistanceFromCenterForValue(this.ticks[l].value),c.showLabelBackdrop){t.font=h.string,a=t.measureText(r.label).width,t.fillStyle=c.backdropColor;const d=J(c.backdropPadding);t.fillRect(-a/2-d.left,-o-h.size/2-d.top,a+d.width,h.size+d.height)}It(t,r.label,0,-o,h,{color:c.color,strokeColor:c.textStrokeColor,strokeWidth:c.textStrokeWidth})}),t.restore()}drawTitle(){}}M(te,"id","radialLinear"),M(te,"defaults",{display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:je.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(t){return t},padding:5,centerPointLabels:!1}}),M(te,"defaultRoutes",{"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"}),M(te,"descriptors",{angleLines:{_fallback:"grid"}});const Ge={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Z=Object.keys(Ge);function qs(i,t){return i-t}function Js(i,t){if(O(t))return null;const e=i._adapter,{parser:s,round:n,isoWeekday:o}=i._parseOpts;let a=t;return typeof s=="function"&&(a=s(a)),N(a)||(a=typeof s=="string"?e.parse(a,s):e.parse(a)),a===null?null:(n&&(a=n==="week"&&(Wt(o)||o===!0)?e.startOf(a,"isoWeek",o):e.startOf(a,n)),+a)}function Qs(i,t,e,s){const n=Z.length;for(let o=Z.indexOf(i);o=Z.indexOf(e);o--){const a=Z[o];if(Ge[a].common&&i._adapter.diff(n,s,a)>=t-1)return a}return Z[e?Z.indexOf(e):0]}function zc(i){for(let t=Z.indexOf(i)+1,e=Z.length;t=t?e[s]:e[n];i[o]=!0}}function Fc(i,t,e,s){const n=i._adapter,o=+n.startOf(t[0].value,s),a=t[t.length-1].value;let r,l;for(r=o;r<=a;r=+n.add(r,1,s))l=e[r],l>=0&&(t[l].major=!0);return t}function tn(i,t,e){const s=[],n={},o=t.length;let a,r;for(a=0;a+t.value))}initOffsets(t=[]){let e=0,s=0,n,o;this.options.offset&&t.length&&(n=this.getDecimalForValue(t[0]),t.length===1?e=1-n:e=(this.getDecimalForValue(t[1])-n)/2,o=this.getDecimalForValue(t[t.length-1]),t.length===1?s=o:s=(o-this.getDecimalForValue(t[t.length-2]))/2);const a=t.length<3?.5:.25;e=Y(e,0,a),s=Y(s,0,a),this._offsets={start:e,end:s,factor:1/(e+1+s)}}_generate(){const t=this._adapter,e=this.min,s=this.max,n=this.options,o=n.time,a=o.unit||Qs(o.minUnit,e,s,this._getLabelCapacity(e)),r=D(n.ticks.stepSize,1),l=a==="week"?o.isoWeekday:!1,c=Wt(l)||l===!0,h={};let d=e,u,f;if(c&&(d=+t.startOf(d,"isoWeek",l)),d=+t.startOf(d,c?"day":a),t.diff(s,e,a)>1e5*r)throw new Error(e+" and "+s+" are too far apart with stepSize of "+r+" "+a);const g=n.ticks.source==="data"&&this.getDataTimestamps();for(u=d,f=0;u+p)}getLabelForValue(t){const e=this._adapter,s=this.options.time;return s.tooltipFormat?e.format(t,s.tooltipFormat):e.format(t,s.displayFormats.datetime)}format(t,e){const n=this.options.time.displayFormats,o=this._unit,a=e||n[o];return this._adapter.format(t,a)}_tickFormatFunction(t,e,s,n){const o=this.options,a=o.ticks.callback;if(a)return z(a,[t,e,s],this);const r=o.time.displayFormats,l=this._unit,c=this._majorUnit,h=l&&r[l],d=c&&r[c],u=s[e],f=c&&d&&u&&u.major;return this._adapter.format(t,n||(f?d:h))}generateTickLabels(t){let e,s,n;for(e=0,s=t.length;e0?r:1}getDataTimestamps(){let t=this._cache.data||[],e,s;if(t.length)return t;const n=this.getMatchingVisibleMetas();if(this._normalized&&n.length)return this._cache.data=n[0].controller.getAllParsedValues(this);for(e=0,s=n.length;e=i[s].pos&&t<=i[n].pos&&({lo:s,hi:n}=ft(i,"pos",t)),{pos:o,time:r}=i[s],{pos:a,time:l}=i[n]):(t>=i[s].time&&t<=i[n].time&&({lo:s,hi:n}=ft(i,"time",t)),{time:o,pos:r}=i[s],{time:a,pos:l}=i[n]);const c=a-o;return c?r+(l-r)*(t-o)/c:r}class ki extends ue{constructor(t){super(t),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const t=this._getTimestampsForTable(),e=this._table=this.buildLookupTable(t);this._minPos=we(e,this.min),this._tableRange=we(e,this.max)-this._minPos,super.initOffsets(t)}buildLookupTable(t){const{min:e,max:s}=this,n=[],o=[];let a,r,l,c,h;for(a=0,r=t.length;a=e&&c<=s&&n.push(c);if(n.length<2)return[{time:e,pos:0},{time:s,pos:1}];for(a=0,r=n.length;an-o)}_getTimestampsForTable(){let t=this._cache.all||[];if(t.length)return t;const e=this.getDataTimestamps(),s=this.getLabelTimestamps();return e.length&&s.length?t=this.normalize(e.concat(s)):t=e.length?e:s,t=this._cache.all=t,t}getDecimalForValue(t){return(we(this._table,t)-this._minPos)/this._tableRange}getValueForPixel(t){const e=this._offsets,s=this.getDecimalForPixel(t)/e.factor-e.end;return we(this._table,s*this._tableRange+this._minPos,!0)}}M(ki,"id","timeseries"),M(ki,"defaults",ue.defaults);var Bc=Object.freeze({__proto__:null,CategoryScale:_i,LinearScale:yi,LogarithmicScale:vi,RadialLinearScale:te,TimeScale:ue,TimeSeriesScale:ki});const Vc=[$a,yl,pc,Bc];pt.register(...Vc);export{pt as C}; diff --git a/web/admin-spa/dist/assets/element-plus-CMedNaYf.js b/web/admin-spa/dist/assets/element-plus-Bq6mBxnk.js similarity index 99% rename from web/admin-spa/dist/assets/element-plus-CMedNaYf.js rename to web/admin-spa/dist/assets/element-plus-Bq6mBxnk.js index 271353b1..cc4d452c 100644 --- a/web/admin-spa/dist/assets/element-plus-CMedNaYf.js +++ b/web/admin-spa/dist/assets/element-plus-Bq6mBxnk.js @@ -1,4 +1,4 @@ -import{g as lt,i as we,r as I,c as y,u as o,a as ke,b as yt,d as Ve,e as bt,f as gn,h as rn,w as _p,j as Qe,p as rt,k as Ar,l as x,s as Lt,m as Tp,n as nu,o as ie,q as Xe,t as xt,v as bn,x as V,y as _,z as F,A as G,B as _e,C as T,D as Ee,N as Bt,E as et,F as $p,G as Xt,H as wt,I as oe,J as U,K as We,L as J,M as Ge,O as st,P as pe,Q as Oe,R as H,S as mt,T as an,U as Ha,V as cs,W as pl,X as Ft,Y as Le,Z as Nt,_ as kt,$ as Fr,a0 as hl,a1 as Np,a2 as Nc,a3 as jl,a4 as ua,a5 as Ip,a6 as xr,a7 as zr,a8 as Ic,a9 as Mp,aa as Tt,ab as Mn,ac as ut,ad as Mc,ae as wo,af as On,ag as cl,ah as Dt,ai as Re,aj as Oa,ak as Uo,al as Ka,am as nn,an as Rc,ao as Pc,ap as Yo,aq as ds,ar as Rp,as as Pp,at as Op,au as Ul,av as ht,aw as Lp,ax as Oc,ay as $l,az as Bp,aA as Vp,aB as nr,aC as lr,aD as fs,aE as Dp,aF as Lc,aG as Il,aH as Ap,aI as Fp,aJ as Bc,aK as xp,aL as zp,aM as Hp,aN as Kp,aO as Wp}from"./vue-vendor-DfnFpxGJ.js";import{i as qt,g as Yt,f as qo,s as jp,p as An,E as Xl,y as Up,a as Yp,d as Ln,T as vo,b as Ke,l as Vc,t as Hl,c as tn,e as qp,h as Wa,j as ln,u as Ds,k as Hr,m as Gp,n as Xp,w as Zp,o as Jp,q as Qp,r as eh,v as th,x as lu,S as nh,z as Dc,A as lh,B as oh,D as ca,F as Ac,G as Fc,Y as ah,H as xc,I as zc,J as Hc,K as Kc,L as sh,M as rh,N as ih,O as uh}from"./vendor-BDiMbLwQ.js";const ch="2.10.4",ou=Symbol("INSTALLED_KEY"),Wc=Symbol(),Ko="el",dh="is-",Bl=(e,t,n,l,a)=>{let s=`${e}-${t}`;return n&&(s+=`-${n}`),l&&(s+=`__${l}`),a&&(s+=`--${a}`),s},jc=Symbol("namespaceContextKey"),Kr=e=>{const t=e||(lt()?we(jc,I(Ko)):I(Ko));return y(()=>o(t)||Ko)},ue=(e,t)=>{const n=Kr(t);return{namespace:n,b:(p="")=>Bl(n.value,e,p,"",""),e:p=>p?Bl(n.value,e,"",p,""):"",m:p=>p?Bl(n.value,e,"","",p):"",be:(p,g)=>p&&g?Bl(n.value,e,p,g,""):"",em:(p,g)=>p&&g?Bl(n.value,e,"",p,g):"",bm:(p,g)=>p&&g?Bl(n.value,e,p,"",g):"",bem:(p,g,b)=>p&&g&&b?Bl(n.value,e,p,g,b):"",is:(p,...g)=>{const b=g.length>=1?g[0]:!0;return p&&b?`${dh}${p}`:""},cssVar:p=>{const g={};for(const b in p)p[b]&&(g[`--${n.value}-${b}`]=p[b]);return g},cssVarName:p=>`--${n.value}-${p}`,cssVarBlock:p=>{const g={};for(const b in p)p[b]&&(g[`--${n.value}-${e}-${b}`]=p[b]);return g},cssVarBlockName:p=>`--${n.value}-${e}-${p}`}},vt=e=>e===void 0,_t=e=>typeof e=="boolean",Te=e=>typeof e=="number",Pn=e=>!e&&e!==0||ke(e)&&e.length===0||yt(e)&&!Object.keys(e).length,_n=e=>typeof Element>"u"?!1:e instanceof Element,In=e=>qt(e),fh=e=>Ve(e)?!Number.isNaN(Number(e)):!1,vs=e=>e===window;class vh extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function jt(e,t){throw new vh(`[${e}] ${t}`)}const au={current:0},su=I(0),Uc=2e3,ru=Symbol("elZIndexContextKey"),Yc=Symbol("zIndexContextKey"),Mo=e=>{const t=lt()?we(ru,au):au,n=e||(lt()?we(Yc,void 0):void 0),l=y(()=>{const r=o(n);return Te(r)?r:Uc}),a=y(()=>l.value+su.value),s=()=>(t.current++,su.value=t.current,a.value);return!bt&&we(ru),{initialZIndex:l,currentZIndex:a,nextZIndex:s}};var ph={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color.",alphaLabel:"pick alpha value"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},mention:{loading:"Loading"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const hh=e=>(t,n)=>mh(t,n,o(e)),mh=(e,t,n)=>Yt(n,e,e).replace(/\{(\w+)\}/g,(l,a)=>{var s;return`${(s=t==null?void 0:t[a])!=null?s:`{${a}}`}`}),gh=e=>{const t=y(()=>o(e).name),n=gn(e)?e:I(e);return{lang:t,locale:n,t:hh(e)}},qc=Symbol("localeContextKey"),pt=e=>{const t=e||we(qc,I());return gh(y(()=>t.value||ph))},Gc="__epPropKey",Y=e=>e,bh=e=>yt(e)&&!!e[Gc],Un=(e,t)=>{if(!yt(e)||bh(e))return e;const{values:n,required:l,default:a,type:s,validator:r}=e,u={type:s,required:!!l,validator:n||r?c=>{let d=!1,f=[];if(n&&(f=Array.from(n),rn(e,"default")&&f.push(a),d||(d=f.includes(c))),r&&(d||(d=r(c))),!d&&f.length>0){const m=[...new Set(f)].map(v=>JSON.stringify(v)).join(", ");_p(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${m}], got value ${JSON.stringify(c)}.`)}return d}:void 0,[Gc]:!0};return rn(e,"default")&&(u.default=a),u},de=e=>qo(Object.entries(e).map(([t,n])=>[t,Un(n,t)])),tl=["","default","small","large"],Jt=Un({type:String,values:tl,required:!1}),Xc=Symbol("size"),Zc=()=>{const e=we(Xc,{});return y(()=>o(e.size)||"")},Jc=Symbol("emptyValuesContextKey"),yh=["",void 0,null],Ch=void 0,Zl=de({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>Qe(e)?!e():!e}}),da=(e,t)=>{const n=lt()?we(Jc,I({})):I({}),l=y(()=>e.emptyValues||n.value.emptyValues||yh),a=y(()=>Qe(e.valueOnClear)?e.valueOnClear():e.valueOnClear!==void 0?e.valueOnClear:Qe(n.value.valueOnClear)?n.value.valueOnClear():n.value.valueOnClear!==void 0?n.value.valueOnClear:t!==void 0?t:Ch),s=r=>l.value.includes(r);return l.value.includes(a.value),{emptyValues:l,valueOnClear:a,isEmptyValue:s}},ko=e=>Object.keys(e),Qc=e=>Object.entries(e),Wo=(e,t,n)=>({get value(){return Yt(e,t,n)},set value(l){jp(e,t,l)}}),ja=I();function fa(e,t=void 0){const n=lt()?we(Wc,ja):ja;return e?y(()=>{var l,a;return(a=(l=n.value)==null?void 0:l[e])!=null?a:t}):n}function ps(e,t){const n=fa(),l=ue(e,y(()=>{var i;return((i=n.value)==null?void 0:i.namespace)||Ko})),a=pt(y(()=>{var i;return(i=n.value)==null?void 0:i.locale})),s=Mo(y(()=>{var i;return((i=n.value)==null?void 0:i.zIndex)||Uc})),r=y(()=>{var i;return o(t)||((i=n.value)==null?void 0:i.size)||""});return Wr(y(()=>o(n)||{})),{ns:l,locale:a,zIndex:s,size:r}}const Wr=(e,t,n=!1)=>{var l;const a=!!lt(),s=a?fa():void 0,r=(l=t==null?void 0:t.provide)!=null?l:a?rt:void 0;if(!r)return;const i=y(()=>{const u=o(e);return s!=null&&s.value?wh(s.value,u):u});return r(Wc,i),r(qc,y(()=>i.value.locale)),r(jc,y(()=>i.value.namespace)),r(Yc,y(()=>i.value.zIndex)),r(Xc,{size:y(()=>i.value.size||"")}),r(Jc,y(()=>({emptyValues:i.value.emptyValues,valueOnClear:i.value.valueOnClear}))),(n||!ja.value)&&(ja.value=i.value),i},wh=(e,t)=>{const n=[...new Set([...ko(e),...ko(t)])],l={};for(const a of n)l[a]=t[a]!==void 0?t[a]:e[a];return l},kh=(e=[])=>({version:ch,install:(n,l)=>{n[ou]||(n[ou]=!0,e.forEach(a=>n.use(a)),l&&Wr(l,n,!0))}}),De="update:modelValue",nt="change",Zt="input",Sh=de({zIndex:{type:Y([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),Eh={scroll:({scrollTop:e,fixed:t})=>Te(e)&&_t(t),[nt]:e=>_t(e)};var fe=(e,t)=>{const n=e.__vccOpts||e;for(const[l,a]of t)n[l]=a;return n};function _h(e,t,n,l){const a=n-t;return e/=l/2,e<1?a/2*e*e*e+t:a/2*((e-=2)*e*e+2)+t}const Ml=e=>bt?window.requestAnimationFrame(e):setTimeout(e,16),Yl=e=>bt?window.cancelAnimationFrame(e):clearTimeout(e),ed=(e="")=>e.split(" ").filter(t=>!!t.trim()),Nn=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},Fn=(e,t)=>{!e||!t.trim()||e.classList.add(...ed(t))},yn=(e,t)=>{!e||!t.trim()||e.classList.remove(...ed(t))},rl=(e,t)=>{var n;if(!bt||!e||!t)return"";let l=Ar(t);l==="float"&&(l="cssFloat");try{const a=e.style[l];if(a)return a;const s=(n=document.defaultView)==null?void 0:n.getComputedStyle(e,"");return s?s[l]:""}catch{return e.style[l]}},td=(e,t,n)=>{if(!(!e||!t))if(yt(t))Qc(t).forEach(([l,a])=>td(e,l,a));else{const l=Ar(t);e.style[l]=n}};function zt(e,t="px"){if(!e)return"";if(Te(e)||fh(e))return`${e}${t}`;if(Ve(e))return e}const Th=(e,t)=>{if(!bt)return!1;const n={undefined:"overflow",true:"overflow-y",false:"overflow-x"}[String(t)],l=rl(e,n);return["scroll","auto","overlay"].some(a=>l.includes(a))},jr=(e,t)=>{if(!bt)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(Th(n,t))return n;n=n.parentNode}return n};let wa;const nd=e=>{var t;if(!bt)return 0;if(wa!==void 0)return wa;const n=document.createElement("div");n.className=`${e}-scrollbar__wrap`,n.style.visibility="hidden",n.style.width="100px",n.style.position="absolute",n.style.top="-9999px",document.body.appendChild(n);const l=n.offsetWidth;n.style.overflow="scroll";const a=document.createElement("div");a.style.width="100%",n.appendChild(a);const s=a.offsetWidth;return(t=n.parentNode)==null||t.removeChild(n),wa=l-s,wa};function Ur(e,t){if(!bt)return;if(!t){e.scrollTop=0;return}const n=[];let l=t.offsetParent;for(;l!==null&&e!==l&&e.contains(l);)n.push(l),l=l.offsetParent;const a=t.offsetTop+n.reduce((u,c)=>u+c.offsetTop,0),s=a+t.offsetHeight,r=e.scrollTop,i=r+e.clientHeight;ai&&(e.scrollTop=s-e.clientHeight)}function $h(e,t,n,l,a){const s=Date.now();let r;const i=()=>{const c=Date.now()-s,d=_h(c>l?l:c,t,n,l);vs(e)?e.scrollTo(window.pageXOffset,d):e.scrollTop=d,c{r&&Yl(r)}}const iu=(e,t)=>vs(t)?e.ownerDocument.documentElement:t,uu=e=>vs(e)?window.scrollY:e.scrollTop,ld="ElAffix",Nh=x({name:ld}),Ih=x({...Nh,props:Sh,emits:Eh,setup(e,{expose:t,emit:n}){const l=e,a=ue("affix"),s=Lt(),r=Lt(),i=Lt(),{height:u}=Tp(),{height:c,width:d,top:f,bottom:m,update:v}=nu(r,{windowScroll:!1}),h=nu(s),p=I(!1),g=I(0),b=I(0),E=y(()=>({height:p.value?`${c.value}px`:"",width:p.value?`${d.value}px`:""})),C=y(()=>{if(!p.value)return{};const $=l.offset?zt(l.offset):0;return{height:`${c.value}px`,width:`${d.value}px`,top:l.position==="top"?$:"",bottom:l.position==="bottom"?$:"",transform:b.value?`translateY(${b.value}px)`:"",zIndex:l.zIndex}}),w=()=>{if(!i.value)return;g.value=i.value instanceof Window?document.documentElement.scrollTop:i.value.scrollTop||0;const{position:$,target:M,offset:R}=l,N=R+c.value;if($==="top")if(M){const O=h.bottom.value-N;p.value=R>f.value&&h.bottom.value>0,b.value=O<0?O:0}else p.value=R>f.value;else if(M){const O=u.value-h.top.value-N;p.value=u.value-Rh.top.value,b.value=O<0?-O:0}else p.value=u.value-R{if(!p.value){v();return}p.value=!1,await Ee(),v(),p.value=!0},S=async()=>{v(),await Ee(),n("scroll",{scrollTop:g.value,fixed:p.value})};return ie(p,$=>n(nt,$)),Xe(()=>{var $;l.target?(s.value=($=document.querySelector(l.target))!=null?$:void 0,s.value||jt(ld,`Target does not exist: ${l.target}`)):s.value=document.documentElement,i.value=jr(r.value,!0),v()}),xt(i,"scroll",S),bn(w),t({update:w,updateRoot:k}),($,M)=>(_(),V("div",{ref_key:"root",ref:r,class:T(o(a).b()),style:_e(o(E))},[F("div",{class:T({[o(a).m("fixed")]:p.value}),style:_e(o(C))},[G($.$slots,"default")],6)],6))}});var Mh=fe(Ih,[["__file","affix.vue"]]);const He=(e,t)=>{if(e.install=n=>{for(const l of[e,...Object.values(t??{})])n.component(l.name,l)},t)for(const[n,l]of Object.entries(t))e[n]=l;return e},od=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),Rh=(e,t)=>(e.install=n=>{n.directive(t,e)},e),At=e=>(e.install=Bt,e),Ph=He(Mh),Oh=de({size:{type:Y([Number,String])},color:{type:String}}),Lh=x({name:"ElIcon",inheritAttrs:!1}),Bh=x({...Lh,props:Oh,setup(e){const t=e,n=ue("icon"),l=y(()=>{const{size:a,color:s}=t;return!a&&!s?{}:{fontSize:vt(a)?void 0:zt(a),"--color":s}});return(a,s)=>(_(),V("i",et({class:o(n).b(),style:o(l)},a.$attrs),[G(a.$slots,"default")],16))}});var Vh=fe(Bh,[["__file","icon.vue"]]);const Se=He(Vh);function cu(){let e;const t=(l,a)=>{n(),e=window.setTimeout(l,a)},n=()=>window.clearTimeout(e);return $p(()=>n()),{registerTimeout:t,cancelTimeout:n}}const ad=de({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),sd=({showAfter:e,hideAfter:t,autoClose:n,open:l,close:a})=>{const{registerTimeout:s}=cu(),{registerTimeout:r,cancelTimeout:i}=cu();return{onOpen:d=>{s(()=>{l(d);const f=o(n);Te(f)&&f>0&&r(()=>{a(d)},f)},o(e))},onClose:d=>{i(),s(()=>{a(d)},o(t))}}};/*! Element Plus Icons Vue v2.3.1 */var Dh=x({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"})]))}}),nl=Dh,Ah=x({name:"ArrowLeft",__name:"arrow-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"})]))}}),dl=Ah,Fh=x({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),Cn=Fh,xh=x({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),hs=xh,zh=x({name:"Back",__name:"back",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"}),F("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"})]))}}),Hh=zh,Kh=x({name:"Calendar",__name:"calendar",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"})]))}}),Wh=Kh,jh=x({name:"CaretRight",__name:"caret-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 192v640l384-320.064z"})]))}}),rd=jh,Uh=x({name:"CaretTop",__name:"caret-top",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 320 192 704h639.936z"})]))}}),Yh=Uh,qh=x({name:"Check",__name:"check",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"})]))}}),va=qh,Gh=x({name:"CircleCheckFilled",__name:"circle-check-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Xh=Gh,Zh=x({name:"CircleCheck",__name:"circle-check",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"})]))}}),Yr=Zh,Jh=x({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),qr=Jh,Qh=x({name:"CircleClose",__name:"circle-close",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"}),F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),ml=Qh,em=x({name:"Clock",__name:"clock",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"}),F("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"})]))}}),id=em,tm=x({name:"Close",__name:"close",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),zn=tm,nm=x({name:"DArrowLeft",__name:"d-arrow-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z"})]))}}),Rl=nm,lm=x({name:"DArrowRight",__name:"d-arrow-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z"})]))}}),Pl=lm,om=x({name:"Delete",__name:"delete",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),am=om,sm=x({name:"Document",__name:"document",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z"})]))}}),rm=sm,im=x({name:"FullScreen",__name:"full-screen",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z"})]))}}),um=im,cm=x({name:"Hide",__name:"hide",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z"}),F("path",{fill:"currentColor",d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z"})]))}}),dm=cm,fm=x({name:"InfoFilled",__name:"info-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Go=fm,vm=x({name:"Loading",__name:"loading",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"})]))}}),Qn=vm,pm=x({name:"Minus",__name:"minus",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"})]))}}),hm=pm,mm=x({name:"MoreFilled",__name:"more-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"})]))}}),du=mm,gm=x({name:"More",__name:"more",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),bm=gm,ym=x({name:"PictureFilled",__name:"picture-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384"})]))}}),Cm=ym,wm=x({name:"Plus",__name:"plus",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),ud=wm,km=x({name:"QuestionFilled",__name:"question-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"})]))}}),Sm=km,Em=x({name:"RefreshLeft",__name:"refresh-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"})]))}}),_m=Em,Tm=x({name:"RefreshRight",__name:"refresh-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z"})]))}}),$m=Tm,Nm=x({name:"ScaleToOriginal",__name:"scale-to-original",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118M512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412M512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512"})]))}}),Im=Nm,Mm=x({name:"Search",__name:"search",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704"})]))}}),Rm=Mm,Pm=x({name:"SortDown",__name:"sort-down",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0"})]))}}),Om=Pm,Lm=x({name:"SortUp",__name:"sort-up",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248"})]))}}),Bm=Lm,Vm=x({name:"StarFilled",__name:"star-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z"})]))}}),ka=Vm,Dm=x({name:"Star",__name:"star",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"})]))}}),Am=Dm,Fm=x({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),cd=Fm,xm=x({name:"View",__name:"view",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),zm=xm,Hm=x({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),ms=Hm,Km=x({name:"ZoomIn",__name:"zoom-in",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"})]))}}),dd=Km,Wm=x({name:"ZoomOut",__name:"zoom-out",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64"})]))}}),jm=Wm;const $t=Y([String,Object,Function]),fd={Close:zn},Gr={Close:zn,SuccessFilled:cd,InfoFilled:Go,WarningFilled:ms,CircleCloseFilled:qr},Ol={primary:Go,success:cd,warning:ms,error:qr,info:Go},gs={validating:Qn,success:Yr,error:ml},Um=["light","dark"],Ym=de({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:ko(Ol),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:Um,default:"light"},...ad}),qm={open:()=>!0,close:e=>vt(e)||e instanceof Event},Gm=x({name:"ElAlert"}),Xm=x({...Gm,props:Ym,emits:qm,setup(e,{emit:t}){const n=e,{Close:l}=Gr,a=Xt(),s=ue("alert"),r=I(!1),i=y(()=>Ol[n.type]),u=y(()=>!!(n.description||a.default)),c=()=>{r.value=!0,t("open")},d=v=>{r.value=!1,t("close",v)},{onOpen:f,onClose:m}=sd({showAfter:wt(n,"showAfter"),hideAfter:wt(n,"hideAfter"),autoClose:wt(n,"autoClose"),open:c,close:d});return bt&&f(),(v,h)=>(_(),oe(an,{name:o(s).b("fade"),persisted:""},{default:U(()=>[We(F("div",{class:T([o(s).b(),o(s).m(v.type),o(s).is("center",v.center),o(s).is(v.effect)]),role:"alert"},[v.showIcon&&(v.$slots.icon||o(i))?(_(),oe(o(Se),{key:0,class:T([o(s).e("icon"),{[o(s).is("big")]:o(u)}])},{default:U(()=>[G(v.$slots,"icon",{},()=>[(_(),oe(Ge(o(i))))])]),_:3},8,["class"])):J("v-if",!0),F("div",{class:T(o(s).e("content"))},[v.title||v.$slots.title?(_(),V("span",{key:0,class:T([o(s).e("title"),{"with-description":o(u)}])},[G(v.$slots,"title",{},()=>[st(pe(v.title),1)])],2)):J("v-if",!0),o(u)?(_(),V("p",{key:1,class:T(o(s).e("description"))},[G(v.$slots,"default",{},()=>[st(pe(v.description),1)])],2)):J("v-if",!0),v.closable?(_(),V(Oe,{key:2},[v.closeText?(_(),V("div",{key:0,class:T([o(s).e("close-btn"),o(s).is("customed")]),onClick:d},pe(v.closeText),3)):(_(),oe(o(Se),{key:1,class:T(o(s).e("close-btn")),onClick:o(m)},{default:U(()=>[H(o(l))]),_:1},8,["class","onClick"]))],64)):J("v-if",!0)],2)],2),[[mt,r.value]])]),_:3},8,["name"]))}});var Zm=fe(Xm,[["__file","alert.vue"]]);const Jm=He(Zm),Xr=()=>bt&&/firefox/i.test(window.navigator.userAgent);let Tn;const Qm={height:"0",visibility:"hidden",overflow:Xr()?"":"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0"},eg=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function tg(e){const t=window.getComputedStyle(e),n=t.getPropertyValue("box-sizing"),l=Number.parseFloat(t.getPropertyValue("padding-bottom"))+Number.parseFloat(t.getPropertyValue("padding-top")),a=Number.parseFloat(t.getPropertyValue("border-bottom-width"))+Number.parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:eg.map(r=>[r,t.getPropertyValue(r)]),paddingSize:l,borderSize:a,boxSizing:n}}function fu(e,t=1,n){var l;Tn||(Tn=document.createElement("textarea"),document.body.appendChild(Tn));const{paddingSize:a,borderSize:s,boxSizing:r,contextStyle:i}=tg(e);i.forEach(([f,m])=>Tn==null?void 0:Tn.style.setProperty(f,m)),Object.entries(Qm).forEach(([f,m])=>Tn==null?void 0:Tn.style.setProperty(f,m,"important")),Tn.value=e.value||e.placeholder||"";let u=Tn.scrollHeight;const c={};r==="border-box"?u=u+s:r==="content-box"&&(u=u-a),Tn.value="";const d=Tn.scrollHeight-a;if(Te(t)){let f=d*t;r==="border-box"&&(f=f+a+s),u=Math.max(f,u),c.minHeight=`${f}px`}if(Te(n)){let f=d*n;r==="border-box"&&(f=f+a+s),u=Math.min(f,u)}return c.height=`${u}px`,(l=Tn.parentNode)==null||l.removeChild(Tn),Tn=void 0,c}const Vt=e=>e,ng=de({ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical","undefined"]},ariaControls:String}),cn=e=>An(ng,e),pa=de({id:{type:String,default:void 0},size:Jt,disabled:Boolean,modelValue:{type:Y([String,Number,Object]),default:""},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:Y([Boolean,Object]),default:!1},autocomplete:{type:String,default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,showPassword:Boolean,showWordLimit:Boolean,suffixIcon:{type:$t},prefixIcon:{type:$t},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:Y([Object,Array,String]),default:()=>Vt({})},autofocus:Boolean,rows:{type:Number,default:2},...cn(["ariaLabel"]),inputmode:{type:Y(String),default:void 0},name:String}),lg={[De]:e=>Ve(e),input:e=>Ve(e),change:e=>Ve(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},og=["class","style"],ag=/^on[A-Z]/,bs=(e={})=>{const{excludeListeners:t=!1,excludeKeys:n}=e,l=y(()=>((n==null?void 0:n.value)||[]).concat(og)),a=lt();return a?y(()=>{var s;return qo(Object.entries((s=a.proxy)==null?void 0:s.$attrs).filter(([r])=>!l.value.includes(r)&&!(t&&ag.test(r))))}):y(()=>({}))},vu={prefix:Math.floor(Math.random()*1e4),current:0},sg=Symbol("elIdInjection"),Zr=()=>lt()?we(sg,vu):vu,sn=e=>{const t=Zr(),n=Kr();return Ha(()=>o(e)||`${n.value}-id-${t.prefix}-${t.current++}`)},Jl=Symbol("formContextKey"),el=Symbol("formItemContextKey"),dn=()=>{const e=we(Jl,void 0),t=we(el,void 0);return{form:e,formItem:t}},Kn=(e,{formItemContext:t,disableIdGeneration:n,disableIdManagement:l})=>{n||(n=I(!1)),l||(l=I(!1));const a=I();let s;const r=y(()=>{var i;return!!(!(e.label||e.ariaLabel)&&t&&t.inputIds&&((i=t.inputIds)==null?void 0:i.length)<=1)});return Xe(()=>{s=ie([wt(e,"id"),n],([i,u])=>{const c=i??(u?void 0:sn().value);c!==a.value&&(t!=null&&t.removeInputId&&(a.value&&t.removeInputId(a.value),!(l!=null&&l.value)&&!u&&c&&t.addInputId(c)),a.value=c)},{immediate:!0})}),cs(()=>{s&&s(),t!=null&&t.removeInputId&&a.value&&t.removeInputId(a.value)}),{isLabeledByFormItem:r,inputId:a}},vd=e=>{const t=lt();return y(()=>{var n,l;return(l=(n=t==null?void 0:t.proxy)==null?void 0:n.$props)==null?void 0:l[e]})},Gt=(e,t={})=>{const n=I(void 0),l=t.prop?n:vd("size"),a=t.global?n:Zc(),s=t.form?{size:void 0}:we(Jl,void 0),r=t.formItem?{size:void 0}:we(el,void 0);return y(()=>l.value||o(e)||(r==null?void 0:r.size)||(s==null?void 0:s.size)||a.value||"")},fn=e=>{const t=vd("disabled"),n=we(Jl,void 0);return y(()=>t.value||o(e)||(n==null?void 0:n.disabled)||!1)},rg='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',ig=e=>getComputedStyle(e).position==="fixed"?!1:e.offsetParent!==null,pu=e=>Array.from(e.querySelectorAll(rg)).filter(t=>Xo(t)&&ig(t)),Xo=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.tabIndex<0||e.hasAttribute("disabled")||e.getAttribute("aria-disabled")==="true")return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return!(e.type==="hidden"||e.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},La=function(e,t,...n){let l;t.includes("mouse")||t.includes("click")?l="MouseEvents":t.includes("key")?l="KeyboardEvent":l="HTMLEvents";const a=document.createEvent(l);return a.initEvent(t,...n),e.dispatchEvent(a),e},pd=e=>!e.getAttribute("aria-owns"),hd=(e,t,n)=>{const{parentNode:l}=e;if(!l)return null;const a=l.querySelectorAll(n),s=Array.prototype.indexOf.call(a,e);return a[s+t]||null},Ba=e=>{e&&(e.focus(),!pd(e)&&e.click())};function Ll(e,{disabled:t,beforeFocus:n,afterFocus:l,beforeBlur:a,afterBlur:s}={}){const r=lt(),{emit:i}=r,u=Lt(),c=I(!1),d=v=>{const h=Qe(n)?n(v):!1;o(t)||c.value||h||(c.value=!0,i("focus",v),l==null||l())},f=v=>{var h;const p=Qe(a)?a(v):!1;o(t)||v.relatedTarget&&((h=u.value)!=null&&h.contains(v.relatedTarget))||p||(c.value=!1,i("blur",v),s==null||s())},m=v=>{var h,p;o(t)||Xo(v.target)||(h=u.value)!=null&&h.contains(document.activeElement)&&u.value!==document.activeElement||(p=e.value)==null||p.focus()};return ie([u,()=>o(t)],([v,h])=>{v&&(h?v.removeAttribute("tabindex"):v.setAttribute("tabindex","-1"))}),xt(u,"focus",d,!0),xt(u,"blur",f,!0),xt(u,"click",m,!0),{isFocused:c,wrapperRef:u,handleFocus:d,handleBlur:f}}const ug=e=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(e);function ha({afterComposition:e,emit:t}){const n=I(!1),l=i=>{t==null||t("compositionstart",i),n.value=!0},a=i=>{var u;t==null||t("compositionupdate",i);const c=(u=i.target)==null?void 0:u.value,d=c[c.length-1]||"";n.value=!ug(d)},s=i=>{t==null||t("compositionend",i),n.value&&(n.value=!1,Ee(()=>e(i)))};return{isComposing:n,handleComposition:i=>{i.type==="compositionend"?s(i):a(i)},handleCompositionStart:l,handleCompositionUpdate:a,handleCompositionEnd:s}}function cg(e){let t;function n(){if(e.value==null)return;const{selectionStart:a,selectionEnd:s,value:r}=e.value;if(a==null||s==null)return;const i=r.slice(0,Math.max(0,a)),u=r.slice(Math.max(0,s));t={selectionStart:a,selectionEnd:s,value:r,beforeTxt:i,afterTxt:u}}function l(){if(e.value==null||t==null)return;const{value:a}=e.value,{beforeTxt:s,afterTxt:r,selectionStart:i}=t;if(s==null||r==null||i==null)return;let u=a.length;if(a.endsWith(r))u=a.length-r.length;else if(a.startsWith(s))u=s.length;else{const c=s[i-1],d=a.indexOf(c,i-1);d!==-1&&(u=d+1)}e.value.setSelectionRange(u,u)}return[n,l]}const dg="ElInput",fg=x({name:dg,inheritAttrs:!1}),vg=x({...fg,props:pa,emits:lg,setup(e,{expose:t,emit:n}){const l=e,a=pl(),s=bs(),r=Xt(),i=y(()=>[l.type==="textarea"?p.b():h.b(),h.m(m.value),h.is("disabled",v.value),h.is("exceed",Q.value),{[h.b("group")]:r.prepend||r.append,[h.m("prefix")]:r.prefix||l.prefixIcon,[h.m("suffix")]:r.suffix||l.suffixIcon||l.clearable||l.showPassword,[h.bm("suffix","password-clear")]:B.value&&A.value,[h.b("hidden")]:l.type==="hidden"},a.class]),u=y(()=>[h.e("wrapper"),h.is("focus",M.value)]),{form:c,formItem:d}=dn(),{inputId:f}=Kn(l,{formItemContext:d}),m=Gt(),v=fn(),h=ue("input"),p=ue("textarea"),g=Lt(),b=Lt(),E=I(!1),C=I(!1),w=I(),k=Lt(l.inputStyle),S=y(()=>g.value||b.value),{wrapperRef:$,isFocused:M,handleFocus:R,handleBlur:N}=Ll(S,{disabled:v,afterBlur(){var ye;l.validateEvent&&((ye=d==null?void 0:d.validate)==null||ye.call(d,"blur").catch(Ue=>void 0))}}),O=y(()=>{var ye;return(ye=c==null?void 0:c.statusIcon)!=null?ye:!1}),P=y(()=>(d==null?void 0:d.validateState)||""),W=y(()=>P.value&&gs[P.value]),K=y(()=>C.value?zm:dm),D=y(()=>[a.style]),L=y(()=>[l.inputStyle,k.value,{resize:l.resize}]),z=y(()=>qt(l.modelValue)?"":String(l.modelValue)),B=y(()=>l.clearable&&!v.value&&!l.readonly&&!!z.value&&(M.value||E.value)),A=y(()=>l.showPassword&&!v.value&&!!z.value),ne=y(()=>l.showWordLimit&&!!l.maxlength&&(l.type==="text"||l.type==="textarea")&&!v.value&&!l.readonly&&!l.showPassword),j=y(()=>z.value.length),Q=y(()=>!!ne.value&&j.value>Number(l.maxlength)),Z=y(()=>!!r.suffix||!!l.suffixIcon||B.value||l.showPassword||ne.value||!!P.value&&O.value),[ee,ae]=cg(g);Ft(b,ye=>{if(se(),!ne.value||l.resize!=="both")return;const Ue=ye[0],{width:It}=Ue.contentRect;w.value={right:`calc(100% - ${It+15+6}px)`}});const re=()=>{const{type:ye,autosize:Ue}=l;if(!(!bt||ye!=="textarea"||!b.value))if(Ue){const It=yt(Ue)?Ue.minRows:void 0,Ot=yt(Ue)?Ue.maxRows:void 0,Rt=fu(b.value,It,Ot);k.value={overflowY:"hidden",...Rt},Ee(()=>{b.value.offsetHeight,k.value=Rt})}else k.value={minHeight:fu(b.value).minHeight}},se=(ye=>{let Ue=!1;return()=>{var It;if(Ue||!l.autosize)return;((It=b.value)==null?void 0:It.offsetParent)===null||(ye(),Ue=!0)}})(re),ge=()=>{const ye=S.value,Ue=l.formatter?l.formatter(z.value):z.value;!ye||ye.value===Ue||(ye.value=Ue)},Be=async ye=>{ee();let{value:Ue}=ye.target;if(l.formatter&&l.parser&&(Ue=l.parser(Ue)),!ce.value){if(Ue===z.value){ge();return}n(De,Ue),n(Zt,Ue),await Ee(),ge(),ae()}},te=ye=>{let{value:Ue}=ye.target;l.formatter&&l.parser&&(Ue=l.parser(Ue)),n(nt,Ue)},{isComposing:ce,handleCompositionStart:Ie,handleCompositionUpdate:Ae,handleCompositionEnd:xe}=ha({emit:n,afterComposition:Be}),Ye=()=>{ee(),C.value=!C.value,setTimeout(ae)},$e=()=>{var ye;return(ye=S.value)==null?void 0:ye.focus()},Me=()=>{var ye;return(ye=S.value)==null?void 0:ye.blur()},Pe=ye=>{E.value=!1,n("mouseleave",ye)},Ze=ye=>{E.value=!0,n("mouseenter",ye)},ot=ye=>{n("keydown",ye)},at=()=>{var ye;(ye=S.value)==null||ye.select()},ct=()=>{n(De,""),n(nt,""),n("clear"),n(Zt,"")};return ie(()=>l.modelValue,()=>{var ye;Ee(()=>re()),l.validateEvent&&((ye=d==null?void 0:d.validate)==null||ye.call(d,"change").catch(Ue=>void 0))}),ie(z,()=>ge()),ie(()=>l.type,async()=>{await Ee(),ge(),re()}),Xe(()=>{!l.formatter&&l.parser,ge(),Ee(re)}),t({input:g,textarea:b,ref:S,textareaStyle:L,autosize:wt(l,"autosize"),isComposing:ce,focus:$e,blur:Me,select:at,clear:ct,resizeTextarea:re}),(ye,Ue)=>(_(),V("div",{class:T([o(i),{[o(h).bm("group","append")]:ye.$slots.append,[o(h).bm("group","prepend")]:ye.$slots.prepend}]),style:_e(o(D)),onMouseenter:Ze,onMouseleave:Pe},[J(" input "),ye.type!=="textarea"?(_(),V(Oe,{key:0},[J(" prepend slot "),ye.$slots.prepend?(_(),V("div",{key:0,class:T(o(h).be("group","prepend"))},[G(ye.$slots,"prepend")],2)):J("v-if",!0),F("div",{ref_key:"wrapperRef",ref:$,class:T(o(u))},[J(" prefix slot "),ye.$slots.prefix||ye.prefixIcon?(_(),V("span",{key:0,class:T(o(h).e("prefix"))},[F("span",{class:T(o(h).e("prefix-inner"))},[G(ye.$slots,"prefix"),ye.prefixIcon?(_(),oe(o(Se),{key:0,class:T(o(h).e("icon"))},{default:U(()=>[(_(),oe(Ge(ye.prefixIcon)))]),_:1},8,["class"])):J("v-if",!0)],2)],2)):J("v-if",!0),F("input",et({id:o(f),ref_key:"input",ref:g,class:o(h).e("inner")},o(s),{name:ye.name,minlength:ye.minlength,maxlength:ye.maxlength,type:ye.showPassword?C.value?"text":"password":ye.type,disabled:o(v),readonly:ye.readonly,autocomplete:ye.autocomplete,tabindex:ye.tabindex,"aria-label":ye.ariaLabel,placeholder:ye.placeholder,style:ye.inputStyle,form:ye.form,autofocus:ye.autofocus,role:ye.containerRole,inputmode:ye.inputmode,onCompositionstart:o(Ie),onCompositionupdate:o(Ae),onCompositionend:o(xe),onInput:Be,onChange:te,onKeydown:ot}),null,16,["id","name","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus","role","inputmode","onCompositionstart","onCompositionupdate","onCompositionend"]),J(" suffix slot "),o(Z)?(_(),V("span",{key:1,class:T(o(h).e("suffix"))},[F("span",{class:T(o(h).e("suffix-inner"))},[!o(B)||!o(A)||!o(ne)?(_(),V(Oe,{key:0},[G(ye.$slots,"suffix"),ye.suffixIcon?(_(),oe(o(Se),{key:0,class:T(o(h).e("icon"))},{default:U(()=>[(_(),oe(Ge(ye.suffixIcon)))]),_:1},8,["class"])):J("v-if",!0)],64)):J("v-if",!0),o(B)?(_(),oe(o(Se),{key:1,class:T([o(h).e("icon"),o(h).e("clear")]),onMousedown:Le(o(Bt),["prevent"]),onClick:ct},{default:U(()=>[H(o(ml))]),_:1},8,["class","onMousedown"])):J("v-if",!0),o(A)?(_(),oe(o(Se),{key:2,class:T([o(h).e("icon"),o(h).e("password")]),onClick:Ye},{default:U(()=>[(_(),oe(Ge(o(K))))]),_:1},8,["class"])):J("v-if",!0),o(ne)?(_(),V("span",{key:3,class:T(o(h).e("count"))},[F("span",{class:T(o(h).e("count-inner"))},pe(o(j))+" / "+pe(ye.maxlength),3)],2)):J("v-if",!0),o(P)&&o(W)&&o(O)?(_(),oe(o(Se),{key:4,class:T([o(h).e("icon"),o(h).e("validateIcon"),o(h).is("loading",o(P)==="validating")])},{default:U(()=>[(_(),oe(Ge(o(W))))]),_:1},8,["class"])):J("v-if",!0)],2)],2)):J("v-if",!0)],2),J(" append slot "),ye.$slots.append?(_(),V("div",{key:1,class:T(o(h).be("group","append"))},[G(ye.$slots,"append")],2)):J("v-if",!0)],64)):(_(),V(Oe,{key:1},[J(" textarea "),F("textarea",et({id:o(f),ref_key:"textarea",ref:b,class:[o(p).e("inner"),o(h).is("focus",o(M))]},o(s),{minlength:ye.minlength,maxlength:ye.maxlength,tabindex:ye.tabindex,disabled:o(v),readonly:ye.readonly,autocomplete:ye.autocomplete,style:o(L),"aria-label":ye.ariaLabel,placeholder:ye.placeholder,form:ye.form,autofocus:ye.autofocus,rows:ye.rows,role:ye.containerRole,onCompositionstart:o(Ie),onCompositionupdate:o(Ae),onCompositionend:o(xe),onInput:Be,onFocus:o(R),onBlur:o(N),onChange:te,onKeydown:ot}),null,16,["id","minlength","maxlength","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus","rows","role","onCompositionstart","onCompositionupdate","onCompositionend","onFocus","onBlur"]),o(ne)?(_(),V("span",{key:0,style:_e(w.value),class:T(o(h).e("count"))},pe(o(j))+" / "+pe(ye.maxlength),7)):J("v-if",!0)],64))],38))}});var pg=fe(vg,[["__file","input.vue"]]);const hn=He(pg),no=4,md={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},hg=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),Jr=Symbol("scrollbarContextKey"),mg=de({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),gg="Thumb",bg=x({__name:"thumb",props:mg,setup(e){const t=e,n=we(Jr),l=ue("scrollbar");n||jt(gg,"can not inject scrollbar context");const a=I(),s=I(),r=I({}),i=I(!1);let u=!1,c=!1,d=0,f=0,m=bt?document.onselectstart:null;const v=y(()=>md[t.vertical?"vertical":"horizontal"]),h=y(()=>hg({size:t.size,move:t.move,bar:v.value})),p=y(()=>a.value[v.value.offset]**2/n.wrapElement[v.value.scrollSize]/t.ratio/s.value[v.value.offset]),g=M=>{var R;if(M.stopPropagation(),M.ctrlKey||[1,2].includes(M.button))return;(R=window.getSelection())==null||R.removeAllRanges(),E(M);const N=M.currentTarget;N&&(r.value[v.value.axis]=N[v.value.offset]-(M[v.value.client]-N.getBoundingClientRect()[v.value.direction]))},b=M=>{if(!s.value||!a.value||!n.wrapElement)return;const R=Math.abs(M.target.getBoundingClientRect()[v.value.direction]-M[v.value.client]),N=s.value[v.value.offset]/2,O=(R-N)*100*p.value/a.value[v.value.offset];n.wrapElement[v.value.scroll]=O*n.wrapElement[v.value.scrollSize]/100},E=M=>{M.stopImmediatePropagation(),u=!0,d=n.wrapElement.scrollHeight,f=n.wrapElement.scrollWidth,document.addEventListener("mousemove",C),document.addEventListener("mouseup",w),m=document.onselectstart,document.onselectstart=()=>!1},C=M=>{if(!a.value||!s.value||u===!1)return;const R=r.value[v.value.axis];if(!R)return;const N=(a.value.getBoundingClientRect()[v.value.direction]-M[v.value.client])*-1,O=s.value[v.value.offset]-R,P=(N-O)*100*p.value/a.value[v.value.offset];v.value.scroll==="scrollLeft"?n.wrapElement[v.value.scroll]=P*f/100:n.wrapElement[v.value.scroll]=P*d/100},w=()=>{u=!1,r.value[v.value.axis]=0,document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",w),$(),c&&(i.value=!1)},k=()=>{c=!1,i.value=!!t.size},S=()=>{c=!0,i.value=u};Nt(()=>{$(),document.removeEventListener("mouseup",w)});const $=()=>{document.onselectstart!==m&&(document.onselectstart=m)};return xt(wt(n,"scrollbarElement"),"mousemove",k),xt(wt(n,"scrollbarElement"),"mouseleave",S),(M,R)=>(_(),oe(an,{name:o(l).b("fade"),persisted:""},{default:U(()=>[We(F("div",{ref_key:"instance",ref:a,class:T([o(l).e("bar"),o(l).is(o(v).key)]),onMousedown:b,onClick:Le(()=>{},["stop"])},[F("div",{ref_key:"thumb",ref:s,class:T(o(l).e("thumb")),style:_e(o(h)),onMousedown:g},null,38)],42,["onClick"]),[[mt,M.always||i.value]])]),_:1},8,["name"]))}});var hu=fe(bg,[["__file","thumb.vue"]]);const yg=de({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),Cg=x({__name:"bar",props:yg,setup(e,{expose:t}){const n=e,l=we(Jr),a=I(0),s=I(0),r=I(""),i=I(""),u=I(1),c=I(1);return t({handleScroll:m=>{if(m){const v=m.offsetHeight-no,h=m.offsetWidth-no;s.value=m.scrollTop*100/v*u.value,a.value=m.scrollLeft*100/h*c.value}},update:()=>{const m=l==null?void 0:l.wrapElement;if(!m)return;const v=m.offsetHeight-no,h=m.offsetWidth-no,p=v**2/m.scrollHeight,g=h**2/m.scrollWidth,b=Math.max(p,n.minSize),E=Math.max(g,n.minSize);u.value=p/(v-p)/(b/(v-b)),c.value=g/(h-g)/(E/(h-E)),i.value=b+no(_(),V(Oe,null,[H(hu,{move:a.value,ratio:c.value,size:r.value,always:m.always},null,8,["move","ratio","size","always"]),H(hu,{move:s.value,ratio:u.value,size:i.value,vertical:"",always:m.always},null,8,["move","ratio","size","always"])],64))}});var wg=fe(Cg,[["__file","bar.vue"]]);const kg=de({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:Boolean,wrapStyle:{type:Y([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},tabindex:{type:[String,Number],default:void 0},id:String,role:String,...cn(["ariaLabel","ariaOrientation"])}),gd={"end-reached":e=>["left","right","top","bottom"].includes(e),scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(Te)},Sg="ElScrollbar",Eg=x({name:Sg}),_g=x({...Eg,props:kg,emits:gd,setup(e,{expose:t,emit:n}){const l=e,a=ue("scrollbar");let s,r,i=0,u=0,c="";const d=I(),f=I(),m=I(),v=I(),h=y(()=>{const S={};return l.height&&(S.height=zt(l.height)),l.maxHeight&&(S.maxHeight=zt(l.maxHeight)),[l.wrapStyle,S]}),p=y(()=>[l.wrapClass,a.e("wrap"),{[a.em("wrap","hidden-default")]:!l.native}]),g=y(()=>[a.e("view"),l.viewClass]),b=()=>{var S;if(f.value){(S=v.value)==null||S.handleScroll(f.value);const $=i,M=u;i=f.value.scrollTop,u=f.value.scrollLeft;const R={bottom:i+f.value.clientHeight>=f.value.scrollHeight,top:i<=0&&$!==0,right:u+f.value.clientWidth>=f.value.scrollWidth&&M!==u,left:u<=0&&M!==0};$!==i&&(c=i>$?"bottom":"top"),M!==u&&(c=u>M?"right":"left"),n("scroll",{scrollTop:i,scrollLeft:u}),R[c]&&n("end-reached",c)}};function E(S,$){yt(S)?f.value.scrollTo(S):Te(S)&&Te($)&&f.value.scrollTo(S,$)}const C=S=>{Te(S)&&(f.value.scrollTop=S)},w=S=>{Te(S)&&(f.value.scrollLeft=S)},k=()=>{var S;(S=v.value)==null||S.update()};return ie(()=>l.noresize,S=>{S?(s==null||s(),r==null||r()):({stop:s}=Ft(m,k),r=xt("resize",k))},{immediate:!0}),ie(()=>[l.maxHeight,l.height],()=>{l.native||Ee(()=>{var S;k(),f.value&&((S=v.value)==null||S.handleScroll(f.value))})}),rt(Jr,kt({scrollbarElement:d,wrapElement:f})),Fr(()=>{f.value&&(f.value.scrollTop=i,f.value.scrollLeft=u)}),Xe(()=>{l.native||Ee(()=>{k()})}),hl(()=>k()),t({wrapRef:f,update:k,scrollTo:E,setScrollTop:C,setScrollLeft:w,handleScroll:b}),(S,$)=>(_(),V("div",{ref_key:"scrollbarRef",ref:d,class:T(o(a).b())},[F("div",{ref_key:"wrapRef",ref:f,class:T(o(p)),style:_e(o(h)),tabindex:S.tabindex,onScroll:b},[(_(),oe(Ge(S.tag),{id:S.id,ref_key:"resizeRef",ref:m,class:T(o(g)),style:_e(S.viewStyle),role:S.role,"aria-label":S.ariaLabel,"aria-orientation":S.ariaOrientation},{default:U(()=>[G(S.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,["tabindex"]),S.native?J("v-if",!0):(_(),oe(wg,{key:0,ref_key:"barRef",ref:v,always:S.always,"min-size":S.minSize},null,8,["always","min-size"]))],2))}});var Tg=fe(_g,[["__file","scrollbar.vue"]]);const jn=He(Tg),Qr=Symbol("popper"),bd=Symbol("popperContent"),yd=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],Cd=de({role:{type:String,values:yd,default:"tooltip"}}),$g=x({name:"ElPopper",inheritAttrs:!1}),Ng=x({...$g,props:Cd,setup(e,{expose:t}){const n=e,l=I(),a=I(),s=I(),r=I(),i=y(()=>n.role),u={triggerRef:l,popperInstanceRef:a,contentRef:s,referenceRef:r,role:i};return t(u),rt(Qr,u),(c,d)=>G(c.$slots,"default")}});var Ig=fe(Ng,[["__file","popper.vue"]]);const Mg=x({name:"ElPopperArrow",inheritAttrs:!1}),Rg=x({...Mg,setup(e,{expose:t}){const n=ue("popper"),{arrowRef:l,arrowStyle:a}=we(bd,void 0);return Nt(()=>{l.value=void 0}),t({arrowRef:l}),(s,r)=>(_(),V("span",{ref_key:"arrowRef",ref:l,class:T(o(n).e("arrow")),style:_e(o(a)),"data-popper-arrow":""},null,6))}});var Pg=fe(Rg,[["__file","arrow.vue"]]);const wd=de({virtualRef:{type:Y(Object)},virtualTriggering:Boolean,onMouseenter:{type:Y(Function)},onMouseleave:{type:Y(Function)},onClick:{type:Y(Function)},onKeydown:{type:Y(Function)},onFocus:{type:Y(Function)},onBlur:{type:Y(Function)},onContextmenu:{type:Y(Function)},id:String,open:Boolean}),kd=Symbol("elForwardRef"),Og=e=>{rt(kd,{setForwardRef:n=>{e.value=n}})},Lg=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),Bg="ElOnlyChild",Sd=x({name:Bg,setup(e,{slots:t,attrs:n}){var l;const a=we(kd),s=Lg((l=a==null?void 0:a.setForwardRef)!=null?l:Bt);return()=>{var r;const i=(r=t.default)==null?void 0:r.call(t,n);if(!i||i.length>1)return null;const u=Ed(i);return u?We(Np(u,n),[[s]]):null}}});function Ed(e){if(!e)return null;const t=e;for(const n of t){if(yt(n))switch(n.type){case jl:continue;case Nc:case"svg":return mu(n);case Oe:return Ed(n.children);default:return n}return mu(n)}return null}function mu(e){const t=ue("only-child");return H("span",{class:t.e("content")},[e])}const Vg=x({name:"ElPopperTrigger",inheritAttrs:!1}),Dg=x({...Vg,props:wd,setup(e,{expose:t}){const n=e,{role:l,triggerRef:a}=we(Qr,void 0);Og(a);const s=y(()=>i.value?n.id:void 0),r=y(()=>{if(l&&l.value==="tooltip")return n.open&&n.id?n.id:void 0}),i=y(()=>{if(l&&l.value!=="tooltip")return l.value}),u=y(()=>i.value?`${n.open}`:void 0);let c;const d=["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"];return Xe(()=>{ie(()=>n.virtualRef,f=>{f&&(a.value=ua(f))},{immediate:!0}),ie(a,(f,m)=>{c==null||c(),c=void 0,_n(f)&&(d.forEach(v=>{var h;const p=n[v];p&&(f.addEventListener(v.slice(2).toLowerCase(),p),(h=m==null?void 0:m.removeEventListener)==null||h.call(m,v.slice(2).toLowerCase(),p))}),Xo(f)&&(c=ie([s,r,i,u],v=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((h,p)=>{qt(v[p])?f.removeAttribute(h):f.setAttribute(h,v[p])})},{immediate:!0}))),_n(m)&&Xo(m)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(v=>m.removeAttribute(v))},{immediate:!0})}),Nt(()=>{if(c==null||c(),c=void 0,a.value&&_n(a.value)){const f=a.value;d.forEach(m=>{const v=n[m];v&&f.removeEventListener(m.slice(2).toLowerCase(),v)}),a.value=void 0}}),t({triggerRef:a}),(f,m)=>f.virtualTriggering?J("v-if",!0):(_(),oe(o(Sd),et({key:0},f.$attrs,{"aria-controls":o(s),"aria-describedby":o(r),"aria-expanded":o(u),"aria-haspopup":o(i)}),{default:U(()=>[G(f.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var Ag=fe(Dg,[["__file","trigger.vue"]]);const As="focus-trap.focus-after-trapped",Fs="focus-trap.focus-after-released",Fg="focus-trap.focusout-prevented",gu={cancelable:!0,bubbles:!1},xg={cancelable:!0,bubbles:!1},bu="focusAfterTrapped",yu="focusAfterReleased",ei=Symbol("elFocusTrap"),ti=I(),ys=I(0),ni=I(0);let Sa=0;const _d=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:l=>{const a=l.tagName==="INPUT"&&l.type==="hidden";return l.disabled||l.hidden||a?NodeFilter.FILTER_SKIP:l.tabIndex>=0||l===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},Cu=(e,t)=>{for(const n of e)if(!zg(n,t))return n},zg=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},Hg=e=>{const t=_d(e),n=Cu(t,e),l=Cu(t.reverse(),e);return[n,l]},Kg=e=>e instanceof HTMLInputElement&&"select"in e,al=(e,t)=>{if(e&&e.focus){const n=document.activeElement;let l=!1;_n(e)&&!Xo(e)&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","-1"),l=!0),e.focus({preventScroll:!0}),ni.value=window.performance.now(),e!==n&&Kg(e)&&t&&e.select(),_n(e)&&l&&e.removeAttribute("tabindex")}};function wu(e,t){const n=[...e],l=e.indexOf(t);return l!==-1&&n.splice(l,1),n}const Wg=()=>{let e=[];return{push:l=>{const a=e[0];a&&l!==a&&a.pause(),e=wu(e,l),e.unshift(l)},remove:l=>{var a,s;e=wu(e,l),(s=(a=e[0])==null?void 0:a.resume)==null||s.call(a)}}},jg=(e,t=!1)=>{const n=document.activeElement;for(const l of e)if(al(l,t),document.activeElement!==n)return},ku=Wg(),Ug=()=>ys.value>ni.value,Ea=()=>{ti.value="pointer",ys.value=window.performance.now()},Su=()=>{ti.value="keyboard",ys.value=window.performance.now()},Yg=()=>(Xe(()=>{Sa===0&&(document.addEventListener("mousedown",Ea),document.addEventListener("touchstart",Ea),document.addEventListener("keydown",Su)),Sa++}),Nt(()=>{Sa--,Sa<=0&&(document.removeEventListener("mousedown",Ea),document.removeEventListener("touchstart",Ea),document.removeEventListener("keydown",Su))}),{focusReason:ti,lastUserFocusTimestamp:ys,lastAutomatedFocusTimestamp:ni}),_a=e=>new CustomEvent(Fg,{...xg,detail:e}),Ce={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"};let io=[];const Eu=e=>{e.code===Ce.esc&&io.forEach(t=>t(e))},qg=e=>{Xe(()=>{io.length===0&&document.addEventListener("keydown",Eu),bt&&io.push(e)}),Nt(()=>{io=io.filter(t=>t!==e),io.length===0&&bt&&document.removeEventListener("keydown",Eu)})},Gg=x({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[bu,yu,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:t}){const n=I();let l,a;const{focusReason:s}=Yg();qg(h=>{e.trapped&&!r.paused&&t("release-requested",h)});const r={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},i=h=>{if(!e.loop&&!e.trapped||r.paused)return;const{code:p,altKey:g,ctrlKey:b,metaKey:E,currentTarget:C,shiftKey:w}=h,{loop:k}=e,S=p===Ce.tab&&!g&&!b&&!E,$=document.activeElement;if(S&&$){const M=C,[R,N]=Hg(M);if(R&&N){if(!w&&$===N){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||(h.preventDefault(),k&&al(R,!0))}else if(w&&[R,M].includes($)){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||(h.preventDefault(),k&&al(N,!0))}}else if($===M){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||h.preventDefault()}}};rt(ei,{focusTrapRef:n,onKeydown:i}),ie(()=>e.focusTrapEl,h=>{h&&(n.value=h)},{immediate:!0}),ie([n],([h],[p])=>{h&&(h.addEventListener("keydown",i),h.addEventListener("focusin",d),h.addEventListener("focusout",f)),p&&(p.removeEventListener("keydown",i),p.removeEventListener("focusin",d),p.removeEventListener("focusout",f))});const u=h=>{t(bu,h)},c=h=>t(yu,h),d=h=>{const p=o(n);if(!p)return;const g=h.target,b=h.relatedTarget,E=g&&p.contains(g);e.trapped||b&&p.contains(b)||(l=b),E&&t("focusin",h),!r.paused&&e.trapped&&(E?a=g:al(a,!0))},f=h=>{const p=o(n);if(!(r.paused||!p))if(e.trapped){const g=h.relatedTarget;!qt(g)&&!p.contains(g)&&setTimeout(()=>{if(!r.paused&&e.trapped){const b=_a({focusReason:s.value});t("focusout-prevented",b),b.defaultPrevented||al(a,!0)}},0)}else{const g=h.target;g&&p.contains(g)||t("focusout",h)}};async function m(){await Ee();const h=o(n);if(h){ku.push(r);const p=h.contains(document.activeElement)?l:document.activeElement;if(l=p,!h.contains(p)){const b=new Event(As,gu);h.addEventListener(As,u),h.dispatchEvent(b),b.defaultPrevented||Ee(()=>{let E=e.focusStartEl;Ve(E)||(al(E),document.activeElement!==E&&(E="first")),E==="first"&&jg(_d(h),!0),(document.activeElement===p||E==="container")&&al(h)})}}}function v(){const h=o(n);if(h){h.removeEventListener(As,u);const p=new CustomEvent(Fs,{...gu,detail:{focusReason:s.value}});h.addEventListener(Fs,c),h.dispatchEvent(p),!p.defaultPrevented&&(s.value=="keyboard"||!Ug()||h.contains(document.activeElement))&&al(l??document.body),h.removeEventListener(Fs,c),ku.remove(r)}}return Xe(()=>{e.trapped&&m(),ie(()=>e.trapped,h=>{h?m():v()})}),Nt(()=>{e.trapped&&v(),n.value&&(n.value.removeEventListener("keydown",i),n.value.removeEventListener("focusin",d),n.value.removeEventListener("focusout",f),n.value=void 0)}),{onKeydown:i}}});function Xg(e,t,n,l,a,s){return G(e.$slots,"default",{handleKeydown:e.onKeydown})}var Ro=fe(Gg,[["render",Xg],["__file","focus-trap.vue"]]);const Td=de({arrowOffset:{type:Number,default:5}}),Zg=["fixed","absolute"],Jg=de({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:Y(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:Xl,default:"bottom"},popperOptions:{type:Y(Object),default:()=>({})},strategy:{type:String,values:Zg,default:"absolute"}}),$d=de({...Jg,...Td,id:String,style:{type:Y([String,Array,Object])},className:{type:Y([String,Array,Object])},effect:{type:Y(String),default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:Boolean,trapping:Boolean,popperClass:{type:Y([String,Array,Object])},popperStyle:{type:Y([String,Array,Object])},referenceEl:{type:Y(Object)},triggerTargetEl:{type:Y(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...cn(["ariaLabel"])}),Qg={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},eb=(e,t)=>{const n=I(!1),l=I();return{focusStartRef:l,trapped:n,onFocusAfterReleased:c=>{var d;((d=c.detail)==null?void 0:d.focusReason)!=="pointer"&&(l.value="first",t("blur"))},onFocusAfterTrapped:()=>{t("focus")},onFocusInTrap:c=>{e.visible&&!n.value&&(c.target&&(l.value=c.target),n.value=!0)},onFocusoutPrevented:c=>{e.trapping||(c.detail.focusReason==="pointer"&&c.preventDefault(),n.value=!1)},onReleaseRequested:()=>{n.value=!1,t("close")}}},tb=(e,t=[])=>{const{placement:n,strategy:l,popperOptions:a}=e,s={placement:n,strategy:l,...a,modifiers:[...lb(e),...t]};return ob(s,a==null?void 0:a.modifiers),s},nb=e=>{if(bt)return ua(e)};function lb(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:l}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:l}},{name:"computeStyles",options:{gpuAcceleration:n}}]}function ob(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const ab=(e,t,n={})=>{const l={name:"updateState",enabled:!0,phase:"write",fn:({state:u})=>{const c=sb(u);Object.assign(r.value,c)},requires:["computeStyles"]},a=y(()=>{const{onFirstUpdate:u,placement:c,strategy:d,modifiers:f}=o(n);return{onFirstUpdate:u,placement:c||"bottom",strategy:d||"absolute",modifiers:[...f||[],l,{name:"applyStyles",enabled:!1}]}}),s=Lt(),r=I({styles:{popper:{position:o(a).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),i=()=>{s.value&&(s.value.destroy(),s.value=void 0)};return ie(a,u=>{const c=o(s);c&&c.setOptions(u)},{deep:!0}),ie([e,t],([u,c])=>{i(),!(!u||!c)&&(s.value=Up(u,c,o(a)))}),Nt(()=>{i()}),{state:y(()=>{var u;return{...((u=o(s))==null?void 0:u.state)||{}}}),styles:y(()=>o(r).styles),attributes:y(()=>o(r).attributes),update:()=>{var u;return(u=o(s))==null?void 0:u.update()},forceUpdate:()=>{var u;return(u=o(s))==null?void 0:u.forceUpdate()},instanceRef:y(()=>o(s))}};function sb(e){const t=Object.keys(e.elements),n=qo(t.map(a=>[a,e.styles[a]||{}])),l=qo(t.map(a=>[a,e.attributes[a]]));return{styles:n,attributes:l}}const rb=0,ib=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:l,role:a}=we(Qr,void 0),s=I(),r=y(()=>e.arrowOffset),i=y(()=>({name:"eventListeners",enabled:!!e.visible})),u=y(()=>{var b;const E=o(s),C=(b=o(r))!=null?b:rb;return{name:"arrow",enabled:!Yp(E),options:{element:E,padding:C}}}),c=y(()=>({onFirstUpdate:()=>{h()},...tb(e,[o(u),o(i)])})),d=y(()=>nb(e.referenceEl)||o(l)),{attributes:f,state:m,styles:v,update:h,forceUpdate:p,instanceRef:g}=ab(d,n,c);return ie(g,b=>t.value=b,{flush:"sync"}),Xe(()=>{ie(()=>{var b;return(b=o(d))==null?void 0:b.getBoundingClientRect()},()=>{h()})}),{attributes:f,arrowRef:s,contentRef:n,instanceRef:g,state:m,styles:v,role:a,forceUpdate:p,update:h}},ub=(e,{attributes:t,styles:n,role:l})=>{const{nextZIndex:a}=Mo(),s=ue("popper"),r=y(()=>o(t).popper),i=I(Te(e.zIndex)?e.zIndex:a()),u=y(()=>[s.b(),s.is("pure",e.pure),s.is(e.effect),e.popperClass]),c=y(()=>[{zIndex:o(i)},o(n).popper,e.popperStyle||{}]),d=y(()=>l.value==="dialog"?"false":void 0),f=y(()=>o(n).arrow||{});return{ariaModal:d,arrowStyle:f,contentAttrs:r,contentClass:u,contentStyle:c,contentZIndex:i,updateZIndex:()=>{i.value=Te(e.zIndex)?e.zIndex:a()}}},cb=x({name:"ElPopperContent"}),db=x({...cb,props:$d,emits:Qg,setup(e,{expose:t,emit:n}){const l=e,{focusStartRef:a,trapped:s,onFocusAfterReleased:r,onFocusAfterTrapped:i,onFocusInTrap:u,onFocusoutPrevented:c,onReleaseRequested:d}=eb(l,n),{attributes:f,arrowRef:m,contentRef:v,styles:h,instanceRef:p,role:g,update:b}=ib(l),{ariaModal:E,arrowStyle:C,contentAttrs:w,contentClass:k,contentStyle:S,updateZIndex:$}=ub(l,{styles:h,attributes:f,role:g}),M=we(el,void 0);rt(bd,{arrowStyle:C,arrowRef:m}),M&&rt(el,{...M,addInputId:Bt,removeInputId:Bt});let R;const N=(P=!0)=>{b(),P&&$()},O=()=>{N(!1),l.visible&&l.focusOnShow?s.value=!0:l.visible===!1&&(s.value=!1)};return Xe(()=>{ie(()=>l.triggerTargetEl,(P,W)=>{R==null||R(),R=void 0;const K=o(P||v.value),D=o(W||v.value);_n(K)&&(R=ie([g,()=>l.ariaLabel,E,()=>l.id],L=>{["role","aria-label","aria-modal","id"].forEach((z,B)=>{qt(L[B])?K.removeAttribute(z):K.setAttribute(z,L[B])})},{immediate:!0})),D!==K&&_n(D)&&["role","aria-label","aria-modal","id"].forEach(L=>{D.removeAttribute(L)})},{immediate:!0}),ie(()=>l.visible,O,{immediate:!0})}),Nt(()=>{R==null||R(),R=void 0}),t({popperContentRef:v,popperInstanceRef:p,updatePopper:N,contentStyle:S}),(P,W)=>(_(),V("div",et({ref_key:"contentRef",ref:v},o(w),{style:o(S),class:o(k),tabindex:"-1",onMouseenter:K=>P.$emit("mouseenter",K),onMouseleave:K=>P.$emit("mouseleave",K)}),[H(o(Ro),{trapped:o(s),"trap-on-focus-in":!0,"focus-trap-el":o(v),"focus-start-el":o(a),onFocusAfterTrapped:o(i),onFocusAfterReleased:o(r),onFocusin:o(u),onFocusoutPrevented:o(c),onReleaseRequested:o(d)},{default:U(()=>[G(P.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16,["onMouseenter","onMouseleave"]))}});var fb=fe(db,[["__file","content.vue"]]);const Nd=He(Ig),Cs=Symbol("elTooltip"),ws=de({to:{type:Y([String,Object]),required:!0},disabled:Boolean}),Wt=de({...ad,...$d,appendTo:{type:ws.to.type},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:Y(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...cn(["ariaLabel"])}),mo=de({...wd,disabled:Boolean,trigger:{type:Y([String,Array]),default:"hover"},triggerKeys:{type:Y(Array),default:()=>[Ce.enter,Ce.numpadEnter,Ce.space]}}),vb=Un({type:Y(Boolean),default:null}),pb=Un({type:Y(Function)}),hb=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,l=[t],a={[e]:vb,[n]:pb};return{useModelToggle:({indicator:r,toggleReason:i,shouldHideWhenRouteChanges:u,shouldProceed:c,onShow:d,onHide:f})=>{const m=lt(),{emit:v}=m,h=m.props,p=y(()=>Qe(h[n])),g=y(()=>h[e]===null),b=$=>{r.value!==!0&&(r.value=!0,i&&(i.value=$),Qe(d)&&d($))},E=$=>{r.value!==!1&&(r.value=!1,i&&(i.value=$),Qe(f)&&f($))},C=$=>{if(h.disabled===!0||Qe(c)&&!c())return;const M=p.value&&bt;M&&v(t,!0),(g.value||!M)&&b($)},w=$=>{if(h.disabled===!0||!bt)return;const M=p.value&&bt;M&&v(t,!1),(g.value||!M)&&E($)},k=$=>{_t($)&&(h.disabled&&$?p.value&&v(t,!1):r.value!==$&&($?b():E()))},S=()=>{r.value?w():C()};return ie(()=>h[e],k),u&&m.appContext.config.globalProperties.$route!==void 0&&ie(()=>({...m.proxy.$route}),()=>{u.value&&r.value&&w()}),Xe(()=>{k(h[e])}),{hide:w,show:C,toggle:S,hasUpdateHandler:p}},useModelToggleProps:a,useModelToggleEmits:l}},{useModelToggleProps:mb,useModelToggleEmits:gb,useModelToggle:bb}=hb("visible"),yb=de({...Cd,...mb,...Wt,...mo,...Td,showArrow:{type:Boolean,default:!0}}),Cb=[...gb,"before-show","before-hide","show","hide","open","close"],wb=(e,t)=>ke(e)?e.includes(t):e===t,lo=(e,t,n)=>l=>{wb(o(e),t)&&n(l)},Ht=(e,t,{checkForDefaultPrevented:n=!0}={})=>a=>{const s=e==null?void 0:e(a);if(n===!1||!s)return t==null?void 0:t(a)},_u=e=>t=>t.pointerType==="mouse"?e(t):void 0,kb=x({name:"ElTooltipTrigger"}),Sb=x({...kb,props:mo,setup(e,{expose:t}){const n=e,l=ue("tooltip"),{controlled:a,id:s,open:r,onOpen:i,onClose:u,onToggle:c}=we(Cs,void 0),d=I(null),f=()=>{if(o(a)||n.disabled)return!0},m=wt(n,"trigger"),v=Ht(f,lo(m,"hover",i)),h=Ht(f,lo(m,"hover",u)),p=Ht(f,lo(m,"click",w=>{w.button===0&&c(w)})),g=Ht(f,lo(m,"focus",i)),b=Ht(f,lo(m,"focus",u)),E=Ht(f,lo(m,"contextmenu",w=>{w.preventDefault(),c(w)})),C=Ht(f,w=>{const{code:k}=w;n.triggerKeys.includes(k)&&(w.preventDefault(),c(w))});return t({triggerRef:d}),(w,k)=>(_(),oe(o(Ag),{id:o(s),"virtual-ref":w.virtualRef,open:o(r),"virtual-triggering":w.virtualTriggering,class:T(o(l).e("trigger")),onBlur:o(b),onClick:o(p),onContextmenu:o(E),onFocus:o(g),onMouseenter:o(v),onMouseleave:o(h),onKeydown:o(C)},{default:U(()=>[G(w.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var Eb=fe(Sb,[["__file","trigger.vue"]]);const _b=x({__name:"teleport",props:ws,setup(e){return(t,n)=>t.disabled?G(t.$slots,"default",{key:0}):(_(),oe(Ip,{key:1,to:t.to},[G(t.$slots,"default")],8,["to"]))}});var Tb=fe(_b,[["__file","teleport.vue"]]);const Po=He(Tb),Id=()=>{const e=Kr(),t=Zr(),n=y(()=>`${e.value}-popper-container-${t.prefix}`),l=y(()=>`#${n.value}`);return{id:n,selector:l}},$b=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},Nb=()=>{const{id:e,selector:t}=Id();return xr(()=>{bt&&(document.body.querySelector(t.value)||$b(e.value))}),{id:e,selector:t}},Ib=x({name:"ElTooltipContent",inheritAttrs:!1}),Mb=x({...Ib,props:Wt,setup(e,{expose:t}){const n=e,{selector:l}=Id(),a=ue("tooltip"),s=I(),r=Ha(()=>{var B;return(B=s.value)==null?void 0:B.popperContentRef});let i;const{controlled:u,id:c,open:d,trigger:f,onClose:m,onOpen:v,onShow:h,onHide:p,onBeforeShow:g,onBeforeHide:b}=we(Cs,void 0),E=y(()=>n.transition||`${a.namespace.value}-fade-in-linear`),C=y(()=>n.persistent);Nt(()=>{i==null||i()});const w=y(()=>o(C)?!0:o(d)),k=y(()=>n.disabled?!1:o(d)),S=y(()=>n.appendTo||l.value),$=y(()=>{var B;return(B=n.style)!=null?B:{}}),M=I(!0),R=()=>{p(),z()&&al(document.body),M.value=!0},N=()=>{if(o(u))return!0},O=Ht(N,()=>{n.enterable&&o(f)==="hover"&&v()}),P=Ht(N,()=>{o(f)==="hover"&&m()}),W=()=>{var B,A;(A=(B=s.value)==null?void 0:B.updatePopper)==null||A.call(B),g==null||g()},K=()=>{b==null||b()},D=()=>{h()},L=()=>{n.virtualTriggering||m()},z=B=>{var A;const ne=(A=s.value)==null?void 0:A.popperContentRef,j=(B==null?void 0:B.relatedTarget)||document.activeElement;return ne==null?void 0:ne.contains(j)};return ie(()=>o(d),B=>{B?(M.value=!1,i=zr(r,()=>{if(o(u))return;o(f)!=="hover"&&m()})):i==null||i()},{flush:"post"}),ie(()=>n.content,()=>{var B,A;(A=(B=s.value)==null?void 0:B.updatePopper)==null||A.call(B)}),t({contentRef:s,isFocusInsideContent:z}),(B,A)=>(_(),oe(o(Po),{disabled:!B.teleported,to:o(S)},{default:U(()=>[H(an,{name:o(E),onAfterLeave:R,onBeforeEnter:W,onAfterEnter:D,onBeforeLeave:K},{default:U(()=>[o(w)?We((_(),oe(o(fb),et({key:0,id:o(c),ref_key:"contentRef",ref:s},B.$attrs,{"aria-label":B.ariaLabel,"aria-hidden":M.value,"boundaries-padding":B.boundariesPadding,"fallback-placements":B.fallbackPlacements,"gpu-acceleration":B.gpuAcceleration,offset:B.offset,placement:B.placement,"popper-options":B.popperOptions,"arrow-offset":B.arrowOffset,strategy:B.strategy,effect:B.effect,enterable:B.enterable,pure:B.pure,"popper-class":B.popperClass,"popper-style":[B.popperStyle,o($)],"reference-el":B.referenceEl,"trigger-target-el":B.triggerTargetEl,visible:o(k),"z-index":B.zIndex,onMouseenter:o(O),onMouseleave:o(P),onBlur:L,onClose:o(m)}),{default:U(()=>[G(B.$slots,"default")]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","arrow-offset","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"])),[[mt,o(k)]]):J("v-if",!0)]),_:3},8,["name"])]),_:3},8,["disabled","to"]))}});var Rb=fe(Mb,[["__file","content.vue"]]);const Pb=x({name:"ElTooltip"}),Ob=x({...Pb,props:yb,emits:Cb,setup(e,{expose:t,emit:n}){const l=e;Nb();const a=ue("tooltip"),s=sn(),r=I(),i=I(),u=()=>{var C;const w=o(r);w&&((C=w.popperInstanceRef)==null||C.update())},c=I(!1),d=I(),{show:f,hide:m,hasUpdateHandler:v}=bb({indicator:c,toggleReason:d}),{onOpen:h,onClose:p}=sd({showAfter:wt(l,"showAfter"),hideAfter:wt(l,"hideAfter"),autoClose:wt(l,"autoClose"),open:f,close:m}),g=y(()=>_t(l.visible)&&!v.value),b=y(()=>[a.b(),l.popperClass]);rt(Cs,{controlled:g,id:s,open:Ic(c),trigger:wt(l,"trigger"),onOpen:C=>{h(C)},onClose:C=>{p(C)},onToggle:C=>{o(c)?p(C):h(C)},onShow:()=>{n("show",d.value)},onHide:()=>{n("hide",d.value)},onBeforeShow:()=>{n("before-show",d.value)},onBeforeHide:()=>{n("before-hide",d.value)},updatePopper:u}),ie(()=>l.disabled,C=>{C&&c.value&&(c.value=!1)});const E=C=>{var w;return(w=i.value)==null?void 0:w.isFocusInsideContent(C)};return Mp(()=>c.value&&m()),t({popperRef:r,contentRef:i,isFocusInsideContent:E,updatePopper:u,onOpen:h,onClose:p,hide:m}),(C,w)=>(_(),oe(o(Nd),{ref_key:"popperRef",ref:r,role:C.role},{default:U(()=>[H(Eb,{disabled:C.disabled,trigger:C.trigger,"trigger-keys":C.triggerKeys,"virtual-ref":C.virtualRef,"virtual-triggering":C.virtualTriggering},{default:U(()=>[C.$slots.default?G(C.$slots,"default",{key:0}):J("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering"]),H(Rb,{ref_key:"contentRef",ref:i,"aria-label":C.ariaLabel,"boundaries-padding":C.boundariesPadding,content:C.content,disabled:C.disabled,effect:C.effect,enterable:C.enterable,"fallback-placements":C.fallbackPlacements,"hide-after":C.hideAfter,"gpu-acceleration":C.gpuAcceleration,offset:C.offset,persistent:C.persistent,"popper-class":o(b),"popper-style":C.popperStyle,placement:C.placement,"popper-options":C.popperOptions,"arrow-offset":C.arrowOffset,pure:C.pure,"raw-content":C.rawContent,"reference-el":C.referenceEl,"trigger-target-el":C.triggerTargetEl,"show-after":C.showAfter,strategy:C.strategy,teleported:C.teleported,transition:C.transition,"virtual-triggering":C.virtualTriggering,"z-index":C.zIndex,"append-to":C.appendTo},{default:U(()=>[G(C.$slots,"content",{},()=>[C.rawContent?(_(),V("span",{key:0,innerHTML:C.content},null,8,["innerHTML"])):(_(),V("span",{key:1},pe(C.content),1))]),C.showArrow?(_(),oe(o(Pg),{key:0})):J("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","arrow-offset","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"]))}});var Lb=fe(Ob,[["__file","tooltip.vue"]]);const un=He(Lb),Bb=de({...pa,valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:Y(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:Y([Function,Array]),default:Bt},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:Boolean,hideLoading:Boolean,teleported:Wt.teleported,appendTo:Wt.appendTo,highlightFirstItem:Boolean,fitInputWidth:Boolean}),Vb={[De]:e=>Ve(e),[Zt]:e=>Ve(e),[nt]:e=>Ve(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>yt(e)},Md="ElAutocomplete",Db=x({name:Md,inheritAttrs:!1}),Ab=x({...Db,props:Bb,emits:Vb,setup(e,{expose:t,emit:n}){const l=e,a=y(()=>An(l,Object.keys(pa))),s=pl(),r=fn(),i=ue("autocomplete"),u=I(),c=I(),d=I(),f=I();let m=!1,v=!1;const h=I([]),p=I(-1),g=I(""),b=I(!1),E=I(!1),C=I(!1),w=sn(),k=y(()=>s.style),S=y(()=>(h.value.length>0||C.value)&&b.value),$=y(()=>!l.hideLoading&&C.value),M=y(()=>u.value?Array.from(u.value.$el.querySelectorAll("input")):[]),R=()=>{S.value&&(g.value=`${u.value.$el.offsetWidth}px`)},N=()=>{p.value=-1},O=async le=>{if(E.value)return;const se=ge=>{C.value=!1,!E.value&&(ke(ge)?(h.value=ge,p.value=l.highlightFirstItem?0:-1):jt(Md,"autocomplete suggestions must be an array"))};if(C.value=!0,ke(l.fetchSuggestions))se(l.fetchSuggestions);else{const ge=await l.fetchSuggestions(le,se);ke(ge)&&se(ge)}},P=Ln(O,l.debounce),W=le=>{const se=!!le;if(n(Zt,le),n(De,le),E.value=!1,b.value||(b.value=se),!l.triggerOnFocus&&!le){E.value=!0,h.value=[];return}P(le)},K=le=>{var se;r.value||(((se=le.target)==null?void 0:se.tagName)!=="INPUT"||M.value.includes(document.activeElement))&&(b.value=!0)},D=le=>{n(nt,le)},L=le=>{var se;if(v)v=!1;else{b.value=!0,n("focus",le);const ge=(se=l.modelValue)!=null?se:"";l.triggerOnFocus&&!m&&P(String(ge))}},z=le=>{setTimeout(()=>{var se;if((se=d.value)!=null&&se.isFocusInsideContent()){v=!0;return}b.value&&j(),n("blur",le)})},B=()=>{b.value=!1,n(De,""),n("clear")},A=async()=>{S.value&&p.value>=0&&p.value{S.value&&(le.preventDefault(),le.stopPropagation(),j())},j=()=>{b.value=!1},Q=()=>{var le;(le=u.value)==null||le.focus()},Z=()=>{var le;(le=u.value)==null||le.blur()},ee=async le=>{n(Zt,le[l.valueKey]),n(De,le[l.valueKey]),n("select",le),h.value=[],p.value=-1},ae=le=>{if(!S.value||C.value)return;if(le<0){p.value=-1;return}le>=h.value.length&&(le=h.value.length-1);const se=c.value.querySelector(`.${i.be("suggestion","wrap")}`),Be=se.querySelectorAll(`.${i.be("suggestion","list")} li`)[le],te=se.scrollTop,{offsetTop:ce,scrollHeight:Ie}=Be;ce+Ie>te+se.clientHeight&&(se.scrollTop+=Ie),ce{var le;(le=d.value)!=null&&le.isFocusInsideContent()||S.value&&j()});return Nt(()=>{re==null||re()}),Xe(()=>{u.value.ref.setAttribute("role","textbox"),u.value.ref.setAttribute("aria-autocomplete","list"),u.value.ref.setAttribute("aria-controls","id"),u.value.ref.setAttribute("aria-activedescendant",`${w.value}-item-${p.value}`),m=u.value.ref.hasAttribute("readonly")}),t({highlightedIndex:p,activated:b,loading:C,inputRef:u,popperRef:d,suggestions:h,handleSelect:ee,handleKeyEnter:A,focus:Q,blur:Z,close:j,highlight:ae,getData:O}),(le,se)=>(_(),oe(o(un),{ref_key:"popperRef",ref:d,visible:o(S),placement:le.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[o(i).e("popper"),le.popperClass],teleported:le.teleported,"append-to":le.appendTo,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${o(i).namespace.value}-zoom-in-top`,persistent:"",role:"listbox",onBeforeShow:R,onHide:N},{content:U(()=>[F("div",{ref_key:"regionRef",ref:c,class:T([o(i).b("suggestion"),o(i).is("loading",o($))]),style:_e({[le.fitInputWidth?"width":"minWidth"]:g.value,outline:"none"}),role:"region"},[H(o(jn),{id:o(w),tag:"ul","wrap-class":o(i).be("suggestion","wrap"),"view-class":o(i).be("suggestion","list"),role:"listbox"},{default:U(()=>[o($)?(_(),V("li",{key:0},[G(le.$slots,"loading",{},()=>[H(o(Se),{class:T(o(i).is("loading"))},{default:U(()=>[H(o(Qn))]),_:1},8,["class"])])])):(_(!0),V(Oe,{key:1},ut(h.value,(ge,Be)=>(_(),V("li",{id:`${o(w)}-item-${Be}`,key:Be,class:T({highlighted:p.value===Be}),role:"option","aria-selected":p.value===Be,onClick:te=>ee(ge)},[G(le.$slots,"default",{item:ge},()=>[st(pe(ge[le.valueKey]),1)])],10,["id","aria-selected","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class"])],6)]),default:U(()=>[F("div",{ref_key:"listboxRef",ref:f,class:T([o(i).b(),le.$attrs.class]),style:_e(o(k)),role:"combobox","aria-haspopup":"listbox","aria-expanded":o(S),"aria-owns":o(w)},[H(o(hn),et({ref_key:"inputRef",ref:u},et(o(a),le.$attrs),{"model-value":le.modelValue,disabled:o(r),onInput:W,onChange:D,onFocus:L,onBlur:z,onClear:B,onKeydown:[Tt(Le(ge=>ae(p.value-1),["prevent"]),["up"]),Tt(Le(ge=>ae(p.value+1),["prevent"]),["down"]),Tt(A,["enter"]),Tt(j,["tab"]),Tt(ne,["esc"])],onMousedown:K}),Mn({_:2},[le.$slots.prepend?{name:"prepend",fn:U(()=>[G(le.$slots,"prepend")])}:void 0,le.$slots.append?{name:"append",fn:U(()=>[G(le.$slots,"append")])}:void 0,le.$slots.prefix?{name:"prefix",fn:U(()=>[G(le.$slots,"prefix")])}:void 0,le.$slots.suffix?{name:"suffix",fn:U(()=>[G(le.$slots,"suffix")])}:void 0]),1040,["model-value","disabled","onKeydown"])],14,["aria-expanded","aria-owns"])]),_:3},8,["visible","placement","popper-class","teleported","append-to","transition"]))}});var Fb=fe(Ab,[["__file","autocomplete.vue"]]);const xb=He(Fb),zb=de({size:{type:[Number,String],values:tl,default:"",validator:e=>Te(e)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:$t},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:Y(String),default:"cover"}}),Hb={error:e=>e instanceof Event},Kb=x({name:"ElAvatar"}),Wb=x({...Kb,props:zb,emits:Hb,setup(e,{emit:t}){const n=e,l=ue("avatar"),a=I(!1),s=y(()=>{const{size:c,icon:d,shape:f}=n,m=[l.b()];return Ve(c)&&m.push(l.m(c)),d&&m.push(l.m("icon")),f&&m.push(l.m(f)),m}),r=y(()=>{const{size:c}=n;return Te(c)?l.cssVarBlock({size:zt(c)||""}):void 0}),i=y(()=>({objectFit:n.fit}));ie(()=>n.src,()=>a.value=!1);function u(c){a.value=!0,t("error",c)}return(c,d)=>(_(),V("span",{class:T(o(s)),style:_e(o(r))},[(c.src||c.srcSet)&&!a.value?(_(),V("img",{key:0,src:c.src,alt:c.alt,srcset:c.srcSet,style:_e(o(i)),onError:u},null,44,["src","alt","srcset"])):c.icon?(_(),oe(o(Se),{key:1},{default:U(()=>[(_(),oe(Ge(c.icon)))]),_:1})):G(c.$slots,"default",{key:2})],6))}});var jb=fe(Wb,[["__file","avatar.vue"]]);const Ub=He(jb),Yb={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},qb={click:e=>e instanceof MouseEvent},Gb=(e,t,n)=>{const l=Lt(),a=Lt(),s=I(!1),r=()=>{l.value&&(s.value=l.value.scrollTop>=e.visibilityHeight)},i=c=>{var d;(d=l.value)==null||d.scrollTo({top:0,behavior:"smooth"}),t("click",c)},u=Mc(r,300,!0);return xt(a,"scroll",u),Xe(()=>{var c;a.value=document,l.value=document.documentElement,e.target&&(l.value=(c=document.querySelector(e.target))!=null?c:void 0,l.value||jt(n,`target does not exist: ${e.target}`),a.value=l.value),r()}),{visible:s,handleClick:i}},Rd="ElBacktop",Xb=x({name:Rd}),Zb=x({...Xb,props:Yb,emits:qb,setup(e,{emit:t}){const n=e,l=ue("backtop"),{handleClick:a,visible:s}=Gb(n,t,Rd),r=y(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`}));return(i,u)=>(_(),oe(an,{name:`${o(l).namespace.value}-fade-in`},{default:U(()=>[o(s)?(_(),V("div",{key:0,style:_e(o(r)),class:T(o(l).b()),onClick:Le(o(a),["stop"])},[G(i.$slots,"default",{},()=>[H(o(Se),{class:T(o(l).e("icon"))},{default:U(()=>[H(o(Yh))]),_:1},8,["class"])])],14,["onClick"])):J("v-if",!0)]),_:3},8,["name"]))}});var Jb=fe(Zb,[["__file","backtop.vue"]]);const Qb=He(Jb),e0=de({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:Y([String,Object,Array])},offset:{type:Y(Array),default:[0,0]},badgeClass:{type:String}}),t0=x({name:"ElBadge"}),n0=x({...t0,props:e0,setup(e,{expose:t}){const n=e,l=ue("badge"),a=y(()=>n.isDot?"":Te(n.value)&&Te(n.max)?n.max{var r,i,u,c,d;return[{backgroundColor:n.color,marginRight:zt(-((i=(r=n.offset)==null?void 0:r[0])!=null?i:0)),marginTop:zt((c=(u=n.offset)==null?void 0:u[1])!=null?c:0)},(d=n.badgeStyle)!=null?d:{}]});return t({content:a}),(r,i)=>(_(),V("div",{class:T(o(l).b())},[G(r.$slots,"default"),H(an,{name:`${o(l).namespace.value}-zoom-in-center`,persisted:""},{default:U(()=>[We(F("sup",{class:T([o(l).e("content"),o(l).em("content",r.type),o(l).is("fixed",!!r.$slots.default),o(l).is("dot",r.isDot),o(l).is("hide-zero",!r.showZero&&n.value===0),r.badgeClass]),style:_e(o(s))},[G(r.$slots,"content",{value:o(a)},()=>[st(pe(o(a)),1)])],6),[[mt,!r.hidden&&(o(a)||r.isDot||r.$slots.content)]])]),_:3},8,["name"])],2))}});var l0=fe(n0,[["__file","badge.vue"]]);const Pd=He(l0),Od=Symbol("breadcrumbKey"),o0=de({separator:{type:String,default:"/"},separatorIcon:{type:$t}}),a0=x({name:"ElBreadcrumb"}),s0=x({...a0,props:o0,setup(e){const t=e,{t:n}=pt(),l=ue("breadcrumb"),a=I();return rt(Od,t),Xe(()=>{const s=a.value.querySelectorAll(`.${l.e("item")}`);s.length&&s[s.length-1].setAttribute("aria-current","page")}),(s,r)=>(_(),V("div",{ref_key:"breadcrumb",ref:a,class:T(o(l).b()),"aria-label":o(n)("el.breadcrumb.label"),role:"navigation"},[G(s.$slots,"default")],10,["aria-label"]))}});var r0=fe(s0,[["__file","breadcrumb.vue"]]);const i0=de({to:{type:Y([String,Object]),default:""},replace:Boolean}),u0=x({name:"ElBreadcrumbItem"}),c0=x({...u0,props:i0,setup(e){const t=e,n=lt(),l=we(Od,void 0),a=ue("breadcrumb"),s=n.appContext.config.globalProperties.$router,r=I(),i=()=>{!t.to||!s||(t.replace?s.replace(t.to):s.push(t.to))};return(u,c)=>{var d,f;return _(),V("span",{class:T(o(a).e("item"))},[F("span",{ref_key:"link",ref:r,class:T([o(a).e("inner"),o(a).is("link",!!u.to)]),role:"link",onClick:i},[G(u.$slots,"default")],2),(d=o(l))!=null&&d.separatorIcon?(_(),oe(o(Se),{key:0,class:T(o(a).e("separator"))},{default:U(()=>[(_(),oe(Ge(o(l).separatorIcon)))]),_:1},8,["class"])):(_(),V("span",{key:1,class:T(o(a).e("separator")),role:"presentation"},pe((f=o(l))==null?void 0:f.separator),3))],2)}}});var Ld=fe(c0,[["__file","breadcrumb-item.vue"]]);const d0=He(r0,{BreadcrumbItem:Ld}),f0=At(Ld),Bd=Symbol("buttonGroupContextKey"),ul=({from:e,replacement:t,scope:n,version:l,ref:a,type:s="API"},r)=>{ie(()=>o(r),i=>{},{immediate:!0})},v0=(e,t)=>{ul({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},y(()=>e.type==="text"));const n=we(Bd,void 0),l=fa("button"),{form:a}=dn(),s=Gt(y(()=>n==null?void 0:n.size)),r=fn(),i=I(),u=Xt(),c=y(()=>{var g;return e.type||(n==null?void 0:n.type)||((g=l.value)==null?void 0:g.type)||""}),d=y(()=>{var g,b,E;return(E=(b=e.autoInsertSpace)!=null?b:(g=l.value)==null?void 0:g.autoInsertSpace)!=null?E:!1}),f=y(()=>{var g,b,E;return(E=(b=e.plain)!=null?b:(g=l.value)==null?void 0:g.plain)!=null?E:!1}),m=y(()=>{var g,b,E;return(E=(b=e.round)!=null?b:(g=l.value)==null?void 0:g.round)!=null?E:!1}),v=y(()=>e.tag==="button"?{ariaDisabled:r.value||e.loading,disabled:r.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),h=y(()=>{var g;const b=(g=u.default)==null?void 0:g.call(u);if(d.value&&(b==null?void 0:b.length)===1){const E=b[0];if((E==null?void 0:E.type)===Nc){const C=E.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(C.trim())}}return!1});return{_disabled:r,_size:s,_type:c,_ref:i,_props:v,_plain:f,_round:m,shouldAddSpace:h,handleClick:g=>{if(r.value||e.loading){g.stopPropagation();return}e.nativeType==="reset"&&(a==null||a.resetFields()),t("click",g)}}},or=["default","primary","success","warning","info","danger","text",""],p0=["button","submit","reset"],ar=de({size:Jt,disabled:Boolean,type:{type:String,values:or,default:""},icon:{type:$t},nativeType:{type:String,values:p0,default:"button"},loading:Boolean,loadingIcon:{type:$t,default:()=>Qn},plain:{type:Boolean,default:void 0},text:Boolean,link:Boolean,bg:Boolean,autofocus:Boolean,round:{type:Boolean,default:void 0},circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:Y([String,Object]),default:"button"}}),h0={click:e=>e instanceof MouseEvent};function kl(e,t=20){return e.mix("#141414",t).toString()}function m0(e){const t=fn(),n=ue("button");return y(()=>{let l={},a=e.color;if(a){const s=a.match(/var\((.*?)\)/);s&&(a=window.getComputedStyle(window.document.documentElement).getPropertyValue(s[1]));const r=new vo(a),i=e.dark?r.tint(20).toString():kl(r,20);if(e.plain)l=n.cssVarBlock({"bg-color":e.dark?kl(r,90):r.tint(90).toString(),"text-color":a,"border-color":e.dark?kl(r,50):r.tint(50).toString(),"hover-text-color":`var(${n.cssVarName("color-white")})`,"hover-bg-color":a,"hover-border-color":a,"active-bg-color":i,"active-text-color":`var(${n.cssVarName("color-white")})`,"active-border-color":i}),t.value&&(l[n.cssVarBlockName("disabled-bg-color")]=e.dark?kl(r,90):r.tint(90).toString(),l[n.cssVarBlockName("disabled-text-color")]=e.dark?kl(r,50):r.tint(50).toString(),l[n.cssVarBlockName("disabled-border-color")]=e.dark?kl(r,80):r.tint(80).toString());else{const u=e.dark?kl(r,30):r.tint(30).toString(),c=r.isDark()?`var(${n.cssVarName("color-white")})`:`var(${n.cssVarName("color-black")})`;if(l=n.cssVarBlock({"bg-color":a,"text-color":c,"border-color":a,"hover-bg-color":u,"hover-text-color":c,"hover-border-color":u,"active-bg-color":i,"active-border-color":i}),t.value){const d=e.dark?kl(r,50):r.tint(50).toString();l[n.cssVarBlockName("disabled-bg-color")]=d,l[n.cssVarBlockName("disabled-text-color")]=e.dark?"rgba(255, 255, 255, 0.5)":`var(${n.cssVarName("color-white")})`,l[n.cssVarBlockName("disabled-border-color")]=d}}}return l})}const g0=x({name:"ElButton"}),b0=x({...g0,props:ar,emits:h0,setup(e,{expose:t,emit:n}){const l=e,a=m0(l),s=ue("button"),{_ref:r,_size:i,_type:u,_disabled:c,_props:d,_plain:f,_round:m,shouldAddSpace:v,handleClick:h}=v0(l,n),p=y(()=>[s.b(),s.m(u.value),s.m(i.value),s.is("disabled",c.value),s.is("loading",l.loading),s.is("plain",f.value),s.is("round",m.value),s.is("circle",l.circle),s.is("text",l.text),s.is("link",l.link),s.is("has-bg",l.bg)]);return t({ref:r,size:i,type:u,disabled:c,shouldAddSpace:v}),(g,b)=>(_(),oe(Ge(g.tag),et({ref_key:"_ref",ref:r},o(d),{class:o(p),style:o(a),onClick:o(h)}),{default:U(()=>[g.loading?(_(),V(Oe,{key:0},[g.$slots.loading?G(g.$slots,"loading",{key:0}):(_(),oe(o(Se),{key:1,class:T(o(s).is("loading"))},{default:U(()=>[(_(),oe(Ge(g.loadingIcon)))]),_:1},8,["class"]))],64)):g.icon||g.$slots.icon?(_(),oe(o(Se),{key:1},{default:U(()=>[g.icon?(_(),oe(Ge(g.icon),{key:0})):G(g.$slots,"icon",{key:1})]),_:3})):J("v-if",!0),g.$slots.default?(_(),V("span",{key:2,class:T({[o(s).em("text","expand")]:o(v)})},[G(g.$slots,"default")],2)):J("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var y0=fe(b0,[["__file","button.vue"]]);const C0={size:ar.size,type:ar.type},w0=x({name:"ElButtonGroup"}),k0=x({...w0,props:C0,setup(e){const t=e;rt(Bd,kt({size:wt(t,"size"),type:wt(t,"type")}));const n=ue("button");return(l,a)=>(_(),V("div",{class:T(o(n).b("group"))},[G(l.$slots,"default")],2))}});var Vd=fe(k0,[["__file","button-group.vue"]]);const on=He(y0,{ButtonGroup:Vd}),Dd=At(Vd),xs=(e,t)=>[e>0?e-1:void 0,e,eArray.from(Array.from({length:e}).keys()),Ad=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),Fd=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),Tu=function(e,t){const n=wo(e),l=wo(t);return n&&l?e.getTime()===t.getTime():!n&&!l?e===t:!1},$u=function(e,t){const n=ke(e),l=ke(t);return n&&l?e.length!==t.length?!1:e.every((a,s)=>Tu(a,t[s])):!n&&!l?Tu(e,t):!1},Nu=function(e,t,n){const l=Pn(t)||t==="x"?Ke(e).locale(n):Ke(e,t).locale(n);return l.isValid()?l:void 0},Iu=function(e,t,n){return Pn(t)?e:t==="x"?+e:Ke(e).locale(n).format(t)},zs=(e,t)=>{var n;const l=[],a=t==null?void 0:t();for(let s=0;ske(e)?e.map(t=>t.toDate()):e.toDate(),S0=(e,t)=>{const n=e.subtract(1,"month").endOf("month").date();return Nl(t).map((l,a)=>n-(t-a-1))},E0=e=>{const t=e.daysInMonth();return Nl(t).map((n,l)=>l+1)},_0=e=>Nl(e.length/7).map(t=>{const n=t*7;return e.slice(n,n+7)}),T0=de({selectedDay:{type:Y(Object)},range:{type:Y(Array)},date:{type:Y(Object),required:!0},hideHeader:{type:Boolean}}),$0={pick:e=>yt(e)},N0=["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange","yearrange"],Hs=["sun","mon","tue","wed","thu","fri","sat"],I0=(e,t)=>{Ke.extend(Vc);const n=Ke.localeData().firstDayOfWeek(),{t:l,lang:a}=pt(),s=Ke().locale(a.value),r=y(()=>!!e.range&&!!e.range.length),i=y(()=>{let m=[];if(r.value){const[v,h]=e.range,p=Nl(h.date()-v.date()+1).map(E=>({text:v.date()+E,type:"current"}));let g=p.length%7;g=g===0?0:7-g;const b=Nl(g).map((E,C)=>({text:C+1,type:"next"}));m=p.concat(b)}else{const v=e.date.startOf("month").day(),h=S0(e.date,(v-n+7)%7).map(E=>({text:E,type:"prev"})),p=E0(e.date).map(E=>({text:E,type:"current"}));m=[...h,...p];const g=7-(m.length%7||7),b=Nl(g).map((E,C)=>({text:C+1,type:"next"}));m=m.concat(b)}return _0(m)}),u=y(()=>{const m=n;return m===0?Hs.map(v=>l(`el.datepicker.weeks.${v}`)):Hs.slice(m).concat(Hs.slice(0,m)).map(v=>l(`el.datepicker.weeks.${v}`))}),c=(m,v)=>{switch(v){case"prev":return e.date.startOf("month").subtract(1,"month").date(m);case"next":return e.date.startOf("month").add(1,"month").date(m);case"current":return e.date.date(m)}};return{now:s,isInRange:r,rows:i,weekDays:u,getFormattedDate:c,handlePickDay:({text:m,type:v})=>{const h=c(m,v);t("pick",h)},getSlotData:({text:m,type:v})=>{const h=c(m,v);return{isSelected:h.isSame(e.selectedDay),type:`${v}-month`,day:h.format("YYYY-MM-DD"),date:h.toDate()}}}},M0=x({name:"DateTable"}),R0=x({...M0,props:T0,emits:$0,setup(e,{expose:t,emit:n}){const l=e,{isInRange:a,now:s,rows:r,weekDays:i,getFormattedDate:u,handlePickDay:c,getSlotData:d}=I0(l,n),f=ue("calendar-table"),m=ue("calendar-day"),v=({text:h,type:p})=>{const g=[p];if(p==="current"){const b=u(h,p);b.isSame(l.selectedDay,"day")&&g.push(m.is("selected")),b.isSame(s,"day")&&g.push(m.is("today"))}return g};return t({getFormattedDate:u}),(h,p)=>(_(),V("table",{class:T([o(f).b(),o(f).is("range",o(a))]),cellspacing:"0",cellpadding:"0"},[h.hideHeader?J("v-if",!0):(_(),V("thead",{key:0},[F("tr",null,[(_(!0),V(Oe,null,ut(o(i),g=>(_(),V("th",{key:g,scope:"col"},pe(g),1))),128))])])),F("tbody",null,[(_(!0),V(Oe,null,ut(o(r),(g,b)=>(_(),V("tr",{key:b,class:T({[o(f).e("row")]:!0,[o(f).em("row","hide-border")]:b===0&&h.hideHeader})},[(_(!0),V(Oe,null,ut(g,(E,C)=>(_(),V("td",{key:C,class:T(v(E)),onClick:w=>o(c)(E)},[F("div",{class:T(o(m).b())},[G(h.$slots,"date-cell",{data:o(d)(E)},()=>[F("span",null,pe(E.text),1)])],2)],10,["onClick"]))),128))],2))),128))])],2))}});var Mu=fe(R0,[["__file","date-table.vue"]]);const P0=(e,t)=>{const n=e.endOf("month"),l=t.startOf("month"),s=n.isSame(l,"week")?l.add(1,"week"):l;return[[e,n],[s.startOf("week"),t]]},O0=(e,t)=>{const n=e.endOf("month"),l=e.add(1,"month").startOf("month"),a=n.isSame(l,"week")?l.add(1,"week"):l,s=a.endOf("month"),r=t.startOf("month"),i=s.isSame(r,"week")?r.add(1,"week"):r;return[[e,n],[a.startOf("week"),s],[i.startOf("week"),t]]},L0=(e,t,n)=>{const{lang:l}=pt(),a=I(),s=Ke().locale(l.value),r=y({get(){return e.modelValue?u.value:a.value},set(g){if(!g)return;a.value=g;const b=g.toDate();t(Zt,b),t(De,b)}}),i=y(()=>{if(!e.range||!ke(e.range)||e.range.length!==2||e.range.some(C=>!wo(C)))return[];const g=e.range.map(C=>Ke(C).locale(l.value)),[b,E]=g;return b.isAfter(E)?[]:b.isSame(E,"month")?v(b,E):b.add(1,"month").month()!==E.month()?[]:v(b,E)}),u=y(()=>e.modelValue?Ke(e.modelValue).locale(l.value):r.value||(i.value.length?i.value[0][0]:s)),c=y(()=>u.value.subtract(1,"month").date(1)),d=y(()=>u.value.add(1,"month").date(1)),f=y(()=>u.value.subtract(1,"year").date(1)),m=y(()=>u.value.add(1,"year").date(1)),v=(g,b)=>{const E=g.startOf("week"),C=b.endOf("week"),w=E.get("month"),k=C.get("month");return w===k?[[E,C]]:(w+1)%12===k?P0(E,C):w+2===k||(w+1)%11===k?O0(E,C):[]},h=g=>{r.value=g};return{calculateValidatedDateRange:v,date:u,realSelectedDay:r,pickDay:h,selectDate:g=>{const E={"prev-month":c.value,"next-month":d.value,"prev-year":f.value,"next-year":m.value,today:s}[g];E.isSame(u.value,"day")||h(E)},validatedRange:i}},B0=e=>ke(e)&&e.length===2&&e.every(t=>wo(t)),V0=de({modelValue:{type:Date},range:{type:Y(Array),validator:B0}}),D0={[De]:e=>wo(e),[Zt]:e=>wo(e)},A0="ElCalendar",F0=x({name:A0}),x0=x({...F0,props:V0,emits:D0,setup(e,{expose:t,emit:n}){const l=e,a=ue("calendar"),{calculateValidatedDateRange:s,date:r,pickDay:i,realSelectedDay:u,selectDate:c,validatedRange:d}=L0(l,n),{t:f}=pt(),m=y(()=>{const v=`el.datepicker.month${r.value.format("M")}`;return`${r.value.year()} ${f("el.datepicker.year")} ${f(v)}`});return t({selectedDay:u,pickDay:i,selectDate:c,calculateValidatedDateRange:s}),(v,h)=>(_(),V("div",{class:T(o(a).b())},[F("div",{class:T(o(a).e("header"))},[G(v.$slots,"header",{date:o(m)},()=>[F("div",{class:T(o(a).e("title"))},pe(o(m)),3),o(d).length===0?(_(),V("div",{key:0,class:T(o(a).e("button-group"))},[H(o(Dd),null,{default:U(()=>[H(o(on),{size:"small",onClick:p=>o(c)("prev-month")},{default:U(()=>[st(pe(o(f)("el.datepicker.prevMonth")),1)]),_:1},8,["onClick"]),H(o(on),{size:"small",onClick:p=>o(c)("today")},{default:U(()=>[st(pe(o(f)("el.datepicker.today")),1)]),_:1},8,["onClick"]),H(o(on),{size:"small",onClick:p=>o(c)("next-month")},{default:U(()=>[st(pe(o(f)("el.datepicker.nextMonth")),1)]),_:1},8,["onClick"])]),_:1})],2)):J("v-if",!0)])],2),o(d).length===0?(_(),V("div",{key:0,class:T(o(a).e("body"))},[H(Mu,{date:o(r),"selected-day":o(u),onPick:o(i)},Mn({_:2},[v.$slots["date-cell"]?{name:"date-cell",fn:U(p=>[G(v.$slots,"date-cell",On(cl(p)))])}:void 0]),1032,["date","selected-day","onPick"])],2)):(_(),V("div",{key:1,class:T(o(a).e("body"))},[(_(!0),V(Oe,null,ut(o(d),(p,g)=>(_(),oe(Mu,{key:g,date:p[0],"selected-day":o(u),range:p,"hide-header":g!==0,onPick:o(i)},Mn({_:2},[v.$slots["date-cell"]?{name:"date-cell",fn:U(b=>[G(v.$slots,"date-cell",On(cl(b)))])}:void 0]),1032,["date","selected-day","range","hide-header","onPick"]))),128))],2))],2))}});var z0=fe(x0,[["__file","calendar.vue"]]);const H0=He(z0),K0=de({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:Y([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:"always"}}),W0=x({name:"ElCard"}),j0=x({...W0,props:K0,setup(e){const t=ue("card");return(n,l)=>(_(),V("div",{class:T([o(t).b(),o(t).is(`${n.shadow}-shadow`)])},[n.$slots.header||n.header?(_(),V("div",{key:0,class:T([o(t).e("header"),n.headerClass])},[G(n.$slots,"header",{},()=>[st(pe(n.header),1)])],2)):J("v-if",!0),F("div",{class:T([o(t).e("body"),n.bodyClass]),style:_e(n.bodyStyle)},[G(n.$slots,"default")],6),n.$slots.footer||n.footer?(_(),V("div",{key:1,class:T([o(t).e("footer"),n.footerClass])},[G(n.$slots,"footer",{},()=>[st(pe(n.footer),1)])],2)):J("v-if",!0)],2))}});var U0=fe(j0,[["__file","card.vue"]]);const Y0=He(U0),q0=de({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,values:["hover","click"],default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:["","none","outside"],default:""},arrow:{type:String,values:["always","hover","never"],default:"hover"},type:{type:String,values:["","card"],default:""},cardScale:{type:Number,default:.83},loop:{type:Boolean,default:!0},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},pauseOnHover:{type:Boolean,default:!0},motionBlur:Boolean}),G0={change:(e,t)=>[e,t].every(Te)},xd=Symbol("carouselContextKey"),sr="ElCarouselItem";var Vn=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Vn||{});function rr(e){return Dt(e)&&e.type===Oe}function X0(e){return Dt(e)&&e.type===jl}function Z0(e){return Dt(e)&&!rr(e)&&!X0(e)}const J0=e=>{if(!Dt(e))return{};const t=e.props||{},n=(Dt(e.type)?e.type.props:void 0)||{},l={};return Object.keys(n).forEach(a=>{rn(n[a],"default")&&(l[a]=n[a].default)}),Object.keys(t).forEach(a=>{l[Ar(a)]=t[a]}),l},Q0=e=>{if(!ke(e)||e.length>1)throw new Error("expect to receive a single Vue element child");return e[0]},Zn=e=>{const t=ke(e)?e:[e],n=[];return t.forEach(l=>{var a;ke(l)?n.push(...Zn(l)):Dt(l)&&((a=l.component)!=null&&a.subTree)?n.push(l,...Zn(l.component.subTree)):Dt(l)&&ke(l.children)?n.push(...Zn(l.children)):Dt(l)&&l.shapeFlag===2?n.push(...Zn(l.type())):n.push(l)}),n},ey=(e,t,n)=>Zn(e.subTree).filter(s=>{var r;return Dt(s)&&((r=s.type)==null?void 0:r.name)===t&&!!s.component}).map(s=>s.component.uid).map(s=>n[s]).filter(s=>!!s),ks=(e,t)=>{const n=Lt({}),l=Lt([]),a=new WeakMap,s=d=>{n.value[d.uid]=d,Oa(n),Xe(()=>{const f=d.getVnode().el,m=f.parentNode;if(!a.has(m)){a.set(m,[]);const v=m.insertBefore.bind(m);m.insertBefore=(h,p)=>(a.get(m).some(b=>h===b||p===b)&&Oa(n),v(h,p))}a.get(m).push(f)})},r=d=>{delete n.value[d.uid],Oa(n);const f=d.getVnode().el,m=f.parentNode,v=a.get(m),h=v.indexOf(f);v.splice(h,1)},i=()=>{l.value=ey(e,t,n.value)},u=d=>d.render(),c=x({setup(d,{slots:f}){return()=>(i(),f.default?Re(u,{render:f.default}):null)}});return{children:l,addChild:s,removeChild:r,ChildrenSorter:c}},Ru=300,ty=(e,t,n)=>{const{children:l,addChild:a,removeChild:s,ChildrenSorter:r}=ks(lt(),sr),i=Xt(),u=I(-1),c=I(null),d=I(!1),f=I(),m=I(0),v=I(!0),h=y(()=>e.arrow!=="never"&&!o(b)),p=y(()=>l.value.some(ee=>ee.props.label.toString().length>0)),g=y(()=>e.type==="card"),b=y(()=>e.direction==="vertical"),E=y(()=>e.height!=="auto"?{height:e.height}:{height:`${m.value}px`,overflow:"hidden"}),C=Hl(ee=>{R(ee)},Ru,{trailing:!0}),w=Hl(ee=>{z(ee)},Ru),k=ee=>v.value?u.value<=1?ee<=1:ee>1:!0;function S(){c.value&&(clearInterval(c.value),c.value=null)}function $(){e.interval<=0||!e.autoplay||c.value||(c.value=setInterval(()=>M(),e.interval))}const M=()=>{u.valuese.props.name===ee);le.length>0&&(ee=l.value.indexOf(le[0]))}if(ee=Number(ee),Number.isNaN(ee)||ee!==Math.floor(ee))return;const ae=l.value.length,re=u.value;ee<0?u.value=e.loop?ae-1:0:ee>=ae?u.value=e.loop?0:ae-1:u.value=ee,re===u.value&&N(re),ne()}function N(ee){l.value.forEach((ae,re)=>{ae.translateItem(re,u.value,ee)})}function O(ee,ae){var re,le,se,ge;const Be=o(l),te=Be.length;if(te===0||!ee.states.inStage)return!1;const ce=ae+1,Ie=ae-1,Ae=te-1,xe=Be[Ae].states.active,Ye=Be[0].states.active,$e=(le=(re=Be[ce])==null?void 0:re.states)==null?void 0:le.active,Me=(ge=(se=Be[Ie])==null?void 0:se.states)==null?void 0:ge.active;return ae===Ae&&Ye||$e?"left":ae===0&&xe||Me?"right":!1}function P(){d.value=!0,e.pauseOnHover&&S()}function W(){d.value=!1,$()}function K(ee){o(b)||l.value.forEach((ae,re)=>{ee===O(ae,re)&&(ae.states.hover=!0)})}function D(){o(b)||l.value.forEach(ee=>{ee.states.hover=!1})}function L(ee){u.value=ee}function z(ee){e.trigger==="hover"&&ee!==u.value&&(u.value=ee)}function B(){R(u.value-1)}function A(){R(u.value+1)}function ne(){S(),e.pauseOnHover||$()}function j(ee){e.height==="auto"&&(m.value=ee)}function Q(){var ee;const ae=(ee=i.default)==null?void 0:ee.call(i);if(!ae)return null;const le=Zn(ae).filter(se=>Dt(se)&&se.type.name===sr);return(le==null?void 0:le.length)===2&&e.loop&&!g.value?(v.value=!0,le):(v.value=!1,null)}ie(()=>u.value,(ee,ae)=>{N(ae),v.value&&(ee=ee%2,ae=ae%2),ae>-1&&t(nt,ee,ae)}),ie(()=>e.autoplay,ee=>{ee?$():S()}),ie(()=>e.loop,()=>{R(u.value)}),ie(()=>e.interval,()=>{ne()});const Z=Lt();return Xe(()=>{ie(()=>l.value,()=>{l.value.length>0&&R(e.initialIndex)},{immediate:!0}),Z.value=Ft(f.value,()=>{N()}),$()}),Nt(()=>{S(),f.value&&Z.value&&Z.value.stop()}),rt(xd,{root:f,isCardType:g,isVertical:b,items:l,loop:e.loop,cardScale:e.cardScale,addItem:a,removeItem:s,setActiveItem:R,setContainerHeight:j}),{root:f,activeIndex:u,arrowDisplay:h,hasLabel:p,hover:d,isCardType:g,items:l,isVertical:b,containerStyle:E,isItemsTwoLength:v,handleButtonEnter:K,handleButtonLeave:D,handleIndicatorClick:L,handleMouseEnter:P,handleMouseLeave:W,setActiveItem:R,prev:B,next:A,PlaceholderItem:Q,isTwoLengthShow:k,ItemsSorter:r,throttledArrowClick:C,throttledIndicatorHover:w}},ny="ElCarousel",ly=x({name:ny}),oy=x({...ly,props:q0,emits:G0,setup(e,{expose:t,emit:n}){const l=e,{root:a,activeIndex:s,arrowDisplay:r,hasLabel:i,hover:u,isCardType:c,items:d,isVertical:f,containerStyle:m,handleButtonEnter:v,handleButtonLeave:h,handleIndicatorClick:p,handleMouseEnter:g,handleMouseLeave:b,setActiveItem:E,prev:C,next:w,PlaceholderItem:k,isTwoLengthShow:S,ItemsSorter:$,throttledArrowClick:M,throttledIndicatorHover:R}=ty(l,n),N=ue("carousel"),{t:O}=pt(),P=y(()=>{const L=[N.b(),N.m(l.direction)];return o(c)&&L.push(N.m("card")),L}),W=y(()=>{const L=[N.e("indicators"),N.em("indicators",l.direction)];return o(i)&&L.push(N.em("indicators","labels")),l.indicatorPosition==="outside"&&L.push(N.em("indicators","outside")),o(f)&&L.push(N.em("indicators","right")),L});function K(L){if(!l.motionBlur)return;const z=o(f)?`${N.namespace.value}-transitioning-vertical`:`${N.namespace.value}-transitioning`;L.currentTarget.classList.add(z)}function D(L){if(!l.motionBlur)return;const z=o(f)?`${N.namespace.value}-transitioning-vertical`:`${N.namespace.value}-transitioning`;L.currentTarget.classList.remove(z)}return t({activeIndex:s,setActiveItem:E,prev:C,next:w}),(L,z)=>(_(),V("div",{ref_key:"root",ref:a,class:T(o(P)),onMouseenter:Le(o(g),["stop"]),onMouseleave:Le(o(b),["stop"])},[o(r)?(_(),oe(an,{key:0,name:"carousel-arrow-left",persisted:""},{default:U(()=>[We(F("button",{type:"button",class:T([o(N).e("arrow"),o(N).em("arrow","left")]),"aria-label":o(O)("el.carousel.leftArrow"),onMouseenter:B=>o(v)("left"),onMouseleave:o(h),onClick:Le(B=>o(M)(o(s)-1),["stop"])},[H(o(Se),null,{default:U(()=>[H(o(dl))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[mt,(L.arrow==="always"||o(u))&&(l.loop||o(s)>0)]])]),_:1})):J("v-if",!0),o(r)?(_(),oe(an,{key:1,name:"carousel-arrow-right",persisted:""},{default:U(()=>[We(F("button",{type:"button",class:T([o(N).e("arrow"),o(N).em("arrow","right")]),"aria-label":o(O)("el.carousel.rightArrow"),onMouseenter:B=>o(v)("right"),onMouseleave:o(h),onClick:Le(B=>o(M)(o(s)+1),["stop"])},[H(o(Se),null,{default:U(()=>[H(o(Cn))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[mt,(L.arrow==="always"||o(u))&&(l.loop||o(s)[L.indicatorPosition!=="none"?(_(),V("ul",{key:0,class:T(o(W))},[(_(!0),V(Oe,null,ut(o(d),(B,A)=>We((_(),V("li",{key:A,class:T([o(N).e("indicator"),o(N).em("indicator",L.direction),o(N).is("active",A===o(s))]),onMouseenter:ne=>o(R)(A),onClick:Le(ne=>o(p)(A),["stop"])},[F("button",{class:T(o(N).e("button")),"aria-label":o(O)("el.carousel.indicator",{index:A+1})},[o(i)?(_(),V("span",{key:0},pe(B.props.label),1)):J("v-if",!0)],10,["aria-label"])],42,["onMouseenter","onClick"])),[[mt,o(S)(A)]])),128))],2)):J("v-if",!0)]),_:1}),l.motionBlur?(_(),V("svg",{key:2,xmlns:"http://www.w3.org/2000/svg",version:"1.1",style:{display:"none"}},[F("defs",null,[F("filter",{id:"elCarouselHorizontal"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"12,0"})]),F("filter",{id:"elCarouselVertical"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"0,10"})])])])):J("v-if",!0)],42,["onMouseenter","onMouseleave"]))}});var ay=fe(oy,[["__file","carousel.vue"]]);const sy=de({name:{type:String,default:""},label:{type:[String,Number],default:""}}),ry=e=>{const t=we(xd),n=lt(),l=I(),a=I(!1),s=I(0),r=I(1),i=I(!1),u=I(!1),c=I(!1),d=I(!1),{isCardType:f,isVertical:m,cardScale:v}=t;function h(w,k,S){const $=S-1,M=k-1,R=k+1,N=S/2;return k===0&&w===$?-1:k===$&&w===0?S:w=N?S+1:w>R&&w-k>=N?-2:w}function p(w,k){var S,$;const M=o(m)?((S=t.root.value)==null?void 0:S.offsetHeight)||0:(($=t.root.value)==null?void 0:$.offsetWidth)||0;return c.value?M*((2-v)*(w-k)+1)/4:w{var $;const M=o(f),R=($=t.items.value.length)!=null?$:Number.NaN,N=w===k;!M&&!vt(S)&&(d.value=N||w===S),!N&&R>2&&t.loop&&(w=h(w,k,R));const O=o(m);i.value=N,M?(c.value=Math.round(Math.abs(w-k))<=1,s.value=p(w,k),r.value=o(i)?1:v):s.value=g(w,k,O),u.value=!0,N&&l.value&&t.setContainerHeight(l.value.offsetHeight)};function E(){if(t&&o(f)){const w=t.items.value.findIndex(({uid:k})=>k===n.uid);t.setActiveItem(w)}}const C={props:e,states:kt({hover:a,translate:s,scale:r,active:i,ready:u,inStage:c,animating:d}),uid:n.uid,getVnode:()=>n.vnode,translateItem:b};return t.addItem(C),Nt(()=>{t.removeItem(C)}),{carouselItemRef:l,active:i,animating:d,hover:a,inStage:c,isVertical:m,translate:s,isCardType:f,scale:r,ready:u,handleItemClick:E}},iy=x({name:sr}),uy=x({...iy,props:sy,setup(e){const t=e,n=ue("carousel"),{carouselItemRef:l,active:a,animating:s,hover:r,inStage:i,isVertical:u,translate:c,isCardType:d,scale:f,ready:m,handleItemClick:v}=ry(t),h=y(()=>[n.e("item"),n.is("active",a.value),n.is("in-stage",i.value),n.is("hover",r.value),n.is("animating",s.value),{[n.em("item","card")]:d.value,[n.em("item","card-vertical")]:d.value&&u.value}]),p=y(()=>{const b=`${`translate${o(u)?"Y":"X"}`}(${o(c)}px)`,E=`scale(${o(f)})`;return{transform:[b,E].join(" ")}});return(g,b)=>We((_(),V("div",{ref_key:"carouselItemRef",ref:l,class:T(o(h)),style:_e(o(p)),onClick:o(v)},[o(d)?We((_(),V("div",{key:0,class:T(o(n).e("mask"))},null,2)),[[mt,!o(a)]]):J("v-if",!0),G(g.$slots,"default")],14,["onClick"])),[[mt,o(m)]])}});var zd=fe(uy,[["__file","carousel-item.vue"]]);const cy=He(ay,{CarouselItem:zd}),dy=At(zd),Hd={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:Jt,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},...cn(["ariaControls"])},Kd={[De]:e=>Ve(e)||Te(e)||_t(e),change:e=>Ve(e)||Te(e)||_t(e)},Oo=Symbol("checkboxGroupContextKey"),fy=({model:e,isChecked:t})=>{const n=we(Oo,void 0),l=y(()=>{var s,r;const i=(s=n==null?void 0:n.max)==null?void 0:s.value,u=(r=n==null?void 0:n.min)==null?void 0:r.value;return!vt(i)&&e.value.length>=i&&!t.value||!vt(u)&&e.value.length<=u&&t.value});return{isDisabled:fn(y(()=>(n==null?void 0:n.disabled.value)||l.value)),isLimitDisabled:l}},vy=(e,{model:t,isLimitExceeded:n,hasOwnLabel:l,isDisabled:a,isLabeledByFormItem:s})=>{const r=we(Oo,void 0),{formItem:i}=dn(),{emit:u}=lt();function c(h){var p,g,b,E;return[!0,e.trueValue,e.trueLabel].includes(h)?(g=(p=e.trueValue)!=null?p:e.trueLabel)!=null?g:!0:(E=(b=e.falseValue)!=null?b:e.falseLabel)!=null?E:!1}function d(h,p){u(nt,c(h),p)}function f(h){if(n.value)return;const p=h.target;u(nt,c(p.checked),h)}async function m(h){n.value||!l.value&&!a.value&&s.value&&(h.composedPath().some(b=>b.tagName==="LABEL")||(t.value=c([!1,e.falseValue,e.falseLabel].includes(t.value)),await Ee(),d(t.value,h)))}const v=y(()=>(r==null?void 0:r.validateEvent)||e.validateEvent);return ie(()=>e.modelValue,()=>{v.value&&(i==null||i.validate("change").catch(h=>void 0))}),{handleChange:f,onClickRoot:m}},py=e=>{const t=I(!1),{emit:n}=lt(),l=we(Oo,void 0),a=y(()=>vt(l)===!1),s=I(!1),r=y({get(){var i,u;return a.value?(i=l==null?void 0:l.modelValue)==null?void 0:i.value:(u=e.modelValue)!=null?u:t.value},set(i){var u,c;a.value&&ke(i)?(s.value=((u=l==null?void 0:l.max)==null?void 0:u.value)!==void 0&&i.length>(l==null?void 0:l.max.value)&&i.length>r.value.length,s.value===!1&&((c=l==null?void 0:l.changeEvent)==null||c.call(l,i))):(n(De,i),t.value=i)}});return{model:r,isGroup:a,isLimitExceeded:s}},hy=(e,t,{model:n})=>{const l=we(Oo,void 0),a=I(!1),s=y(()=>In(e.value)?e.label:e.value),r=y(()=>{const d=n.value;return _t(d)?d:ke(d)?yt(s.value)?d.map(Uo).some(f=>tn(f,s.value)):d.map(Uo).includes(s.value):d!=null?d===e.trueValue||d===e.trueLabel:!!d}),i=Gt(y(()=>{var d;return(d=l==null?void 0:l.size)==null?void 0:d.value}),{prop:!0}),u=Gt(y(()=>{var d;return(d=l==null?void 0:l.size)==null?void 0:d.value})),c=y(()=>!!t.default||!In(s.value));return{checkboxButtonSize:i,isChecked:r,isFocused:a,checkboxSize:u,hasOwnLabel:c,actualValue:s}},Wd=(e,t)=>{const{formItem:n}=dn(),{model:l,isGroup:a,isLimitExceeded:s}=py(e),{isFocused:r,isChecked:i,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:d,actualValue:f}=hy(e,t,{model:l}),{isDisabled:m}=fy({model:l,isChecked:i}),{inputId:v,isLabeledByFormItem:h}=Kn(e,{formItemContext:n,disableIdGeneration:d,disableIdManagement:a}),{handleChange:p,onClickRoot:g}=vy(e,{model:l,isLimitExceeded:s,hasOwnLabel:d,isDisabled:m,isLabeledByFormItem:h});return(()=>{function E(){var C,w;ke(l.value)&&!l.value.includes(f.value)?l.value.push(f.value):l.value=(w=(C=e.trueValue)!=null?C:e.trueLabel)!=null?w:!0}e.checked&&E()})(),ul({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>a.value&&In(e.value))),ul({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>!!e.trueLabel)),ul({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>!!e.falseLabel)),{inputId:v,isLabeledByFormItem:h,isChecked:i,isDisabled:m,isFocused:r,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:d,model:l,actualValue:f,handleChange:p,onClickRoot:g}},my=x({name:"ElCheckbox"}),gy=x({...my,props:Hd,emits:Kd,setup(e){const t=e,n=Xt(),{inputId:l,isLabeledByFormItem:a,isChecked:s,isDisabled:r,isFocused:i,checkboxSize:u,hasOwnLabel:c,model:d,actualValue:f,handleChange:m,onClickRoot:v}=Wd(t,n),h=ue("checkbox"),p=y(()=>[h.b(),h.m(u.value),h.is("disabled",r.value),h.is("bordered",t.border),h.is("checked",s.value)]),g=y(()=>[h.e("input"),h.is("disabled",r.value),h.is("checked",s.value),h.is("indeterminate",t.indeterminate),h.is("focus",i.value)]);return(b,E)=>(_(),oe(Ge(!o(c)&&o(a)?"span":"label"),{class:T(o(p)),"aria-controls":b.indeterminate?b.ariaControls:null,onClick:o(v)},{default:U(()=>{var C,w,k,S;return[F("span",{class:T(o(g))},[b.trueValue||b.falseValue||b.trueLabel||b.falseLabel?We((_(),V("input",{key:0,id:o(l),"onUpdate:modelValue":$=>gn(d)?d.value=$:null,class:T(o(h).e("original")),type:"checkbox",indeterminate:b.indeterminate,name:b.name,tabindex:b.tabindex,disabled:o(r),"true-value":(w=(C=b.trueValue)!=null?C:b.trueLabel)!=null?w:!0,"false-value":(S=(k=b.falseValue)!=null?k:b.falseLabel)!=null?S:!1,onChange:o(m),onFocus:$=>i.value=!0,onBlur:$=>i.value=!1,onClick:Le(()=>{},["stop"])},null,42,["id","onUpdate:modelValue","indeterminate","name","tabindex","disabled","true-value","false-value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(d)]]):We((_(),V("input",{key:1,id:o(l),"onUpdate:modelValue":$=>gn(d)?d.value=$:null,class:T(o(h).e("original")),type:"checkbox",indeterminate:b.indeterminate,disabled:o(r),value:o(f),name:b.name,tabindex:b.tabindex,onChange:o(m),onFocus:$=>i.value=!0,onBlur:$=>i.value=!1,onClick:Le(()=>{},["stop"])},null,42,["id","onUpdate:modelValue","indeterminate","disabled","value","name","tabindex","onChange","onFocus","onBlur","onClick"])),[[Ka,o(d)]]),F("span",{class:T(o(h).e("inner"))},null,2)],2),o(c)?(_(),V("span",{key:0,class:T(o(h).e("label"))},[G(b.$slots,"default"),b.$slots.default?J("v-if",!0):(_(),V(Oe,{key:0},[st(pe(b.label),1)],64))],2)):J("v-if",!0)]}),_:3},8,["class","aria-controls","onClick"]))}});var by=fe(gy,[["__file","checkbox.vue"]]);const yy=x({name:"ElCheckboxButton"}),Cy=x({...yy,props:Hd,emits:Kd,setup(e){const t=e,n=Xt(),{isFocused:l,isChecked:a,isDisabled:s,checkboxButtonSize:r,model:i,actualValue:u,handleChange:c}=Wd(t,n),d=we(Oo,void 0),f=ue("checkbox"),m=y(()=>{var h,p,g,b;const E=(p=(h=d==null?void 0:d.fill)==null?void 0:h.value)!=null?p:"";return{backgroundColor:E,borderColor:E,color:(b=(g=d==null?void 0:d.textColor)==null?void 0:g.value)!=null?b:"",boxShadow:E?`-1px 0 0 0 ${E}`:void 0}}),v=y(()=>[f.b("button"),f.bm("button",r.value),f.is("disabled",s.value),f.is("checked",a.value),f.is("focus",l.value)]);return(h,p)=>{var g,b,E,C;return _(),V("label",{class:T(o(v))},[h.trueValue||h.falseValue||h.trueLabel||h.falseLabel?We((_(),V("input",{key:0,"onUpdate:modelValue":w=>gn(i)?i.value=w:null,class:T(o(f).be("button","original")),type:"checkbox",name:h.name,tabindex:h.tabindex,disabled:o(s),"true-value":(b=(g=h.trueValue)!=null?g:h.trueLabel)!=null?b:!0,"false-value":(C=(E=h.falseValue)!=null?E:h.falseLabel)!=null?C:!1,onChange:o(c),onFocus:w=>l.value=!0,onBlur:w=>l.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","name","tabindex","disabled","true-value","false-value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(i)]]):We((_(),V("input",{key:1,"onUpdate:modelValue":w=>gn(i)?i.value=w:null,class:T(o(f).be("button","original")),type:"checkbox",name:h.name,tabindex:h.tabindex,disabled:o(s),value:o(u),onChange:o(c),onFocus:w=>l.value=!0,onBlur:w=>l.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","name","tabindex","disabled","value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(i)]]),h.$slots.default||h.label?(_(),V("span",{key:2,class:T(o(f).be("button","inner")),style:_e(o(a)?o(m):void 0)},[G(h.$slots,"default",{},()=>[st(pe(h.label),1)])],6)):J("v-if",!0)],2)}}});var jd=fe(Cy,[["__file","checkbox-button.vue"]]);const wy=de({modelValue:{type:Y(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:Jt,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},...cn(["ariaLabel"])}),ky={[De]:e=>ke(e),change:e=>ke(e)},Sy=x({name:"ElCheckboxGroup"}),Ey=x({...Sy,props:wy,emits:ky,setup(e,{emit:t}){const n=e,l=ue("checkbox"),{formItem:a}=dn(),{inputId:s,isLabeledByFormItem:r}=Kn(n,{formItemContext:a}),i=async c=>{t(De,c),await Ee(),t(nt,c)},u=y({get(){return n.modelValue},set(c){i(c)}});return rt(Oo,{...An(nn(n),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:u,changeEvent:i}),ie(()=>n.modelValue,()=>{n.validateEvent&&(a==null||a.validate("change").catch(c=>void 0))}),(c,d)=>{var f;return _(),oe(Ge(c.tag),{id:o(s),class:T(o(l).b("group")),role:"group","aria-label":o(r)?void 0:c.ariaLabel||"checkbox-group","aria-labelledby":o(r)?(f=o(a))==null?void 0:f.labelId:void 0},{default:U(()=>[G(c.$slots,"default")]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var Ud=fe(Ey,[["__file","checkbox-group.vue"]]);const Hn=He(by,{CheckboxButton:jd,CheckboxGroup:Ud}),_y=At(jd),Yd=At(Ud),qd=de({modelValue:{type:[String,Number,Boolean],default:void 0},size:Jt,disabled:Boolean,label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),Ty=de({...qd,border:Boolean}),Gd={[De]:e=>Ve(e)||Te(e)||_t(e),[nt]:e=>Ve(e)||Te(e)||_t(e)},Xd=Symbol("radioGroupKey"),Zd=(e,t)=>{const n=I(),l=we(Xd,void 0),a=y(()=>!!l),s=y(()=>In(e.value)?e.label:e.value),r=y({get(){return a.value?l.modelValue:e.modelValue},set(f){a.value?l.changeEvent(f):t&&t(De,f),n.value.checked=e.modelValue===s.value}}),i=Gt(y(()=>l==null?void 0:l.size)),u=fn(y(()=>l==null?void 0:l.disabled)),c=I(!1),d=y(()=>u.value||a.value&&r.value!==s.value?-1:0);return ul({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},y(()=>a.value&&In(e.value))),{radioRef:n,isGroup:a,radioGroup:l,focus:c,size:i,disabled:u,tabIndex:d,modelValue:r,actualValue:s}},$y=x({name:"ElRadio"}),Ny=x({...$y,props:Ty,emits:Gd,setup(e,{emit:t}){const n=e,l=ue("radio"),{radioRef:a,radioGroup:s,focus:r,size:i,disabled:u,modelValue:c,actualValue:d}=Zd(n,t);function f(){Ee(()=>t(nt,c.value))}return(m,v)=>{var h;return _(),V("label",{class:T([o(l).b(),o(l).is("disabled",o(u)),o(l).is("focus",o(r)),o(l).is("bordered",m.border),o(l).is("checked",o(c)===o(d)),o(l).m(o(i))])},[F("span",{class:T([o(l).e("input"),o(l).is("disabled",o(u)),o(l).is("checked",o(c)===o(d))])},[We(F("input",{ref_key:"radioRef",ref:a,"onUpdate:modelValue":p=>gn(c)?c.value=p:null,class:T(o(l).e("original")),value:o(d),name:m.name||((h=o(s))==null?void 0:h.name),disabled:o(u),checked:o(c)===o(d),type:"radio",onFocus:p=>r.value=!0,onBlur:p=>r.value=!1,onChange:f,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","checked","onFocus","onBlur","onClick"]),[[Rc,o(c)]]),F("span",{class:T(o(l).e("inner"))},null,2)],2),F("span",{class:T(o(l).e("label")),onKeydown:Le(()=>{},["stop"])},[G(m.$slots,"default",{},()=>[st(pe(m.label),1)])],42,["onKeydown"])],2)}}});var Iy=fe(Ny,[["__file","radio.vue"]]);const My=de({...qd}),Ry=x({name:"ElRadioButton"}),Py=x({...Ry,props:My,setup(e){const t=e,n=ue("radio"),{radioRef:l,focus:a,size:s,disabled:r,modelValue:i,radioGroup:u,actualValue:c}=Zd(t),d=y(()=>({backgroundColor:(u==null?void 0:u.fill)||"",borderColor:(u==null?void 0:u.fill)||"",boxShadow:u!=null&&u.fill?`-1px 0 0 0 ${u.fill}`:"",color:(u==null?void 0:u.textColor)||""}));return(f,m)=>{var v;return _(),V("label",{class:T([o(n).b("button"),o(n).is("active",o(i)===o(c)),o(n).is("disabled",o(r)),o(n).is("focus",o(a)),o(n).bm("button",o(s))])},[We(F("input",{ref_key:"radioRef",ref:l,"onUpdate:modelValue":h=>gn(i)?i.value=h:null,class:T(o(n).be("button","original-radio")),value:o(c),type:"radio",name:f.name||((v=o(u))==null?void 0:v.name),disabled:o(r),onFocus:h=>a.value=!0,onBlur:h=>a.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","onFocus","onBlur","onClick"]),[[Rc,o(i)]]),F("span",{class:T(o(n).be("button","inner")),style:_e(o(i)===o(c)?o(d):{}),onKeydown:Le(()=>{},["stop"])},[G(f.$slots,"default",{},()=>[st(pe(f.label),1)])],46,["onKeydown"])],2)}}});var Jd=fe(Py,[["__file","radio-button.vue"]]);const Oy=de({id:{type:String,default:void 0},size:Jt,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},...cn(["ariaLabel"])}),Ly=Gd,By=x({name:"ElRadioGroup"}),Vy=x({...By,props:Oy,emits:Ly,setup(e,{emit:t}){const n=e,l=ue("radio"),a=sn(),s=I(),{formItem:r}=dn(),{inputId:i,isLabeledByFormItem:u}=Kn(n,{formItemContext:r}),c=f=>{t(De,f),Ee(()=>t(nt,f))};Xe(()=>{const f=s.value.querySelectorAll("[type=radio]"),m=f[0];!Array.from(f).some(v=>v.checked)&&m&&(m.tabIndex=0)});const d=y(()=>n.name||a.value);return rt(Xd,kt({...nn(n),changeEvent:c,name:d})),ie(()=>n.modelValue,()=>{n.validateEvent&&(r==null||r.validate("change").catch(f=>void 0))}),(f,m)=>(_(),V("div",{id:o(i),ref_key:"radioGroupRef",ref:s,class:T(o(l).b("group")),role:"radiogroup","aria-label":o(u)?void 0:f.ariaLabel||"radio-group","aria-labelledby":o(u)?o(r).labelId:void 0},[G(f.$slots,"default")],10,["id","aria-label","aria-labelledby"]))}});var Qd=fe(Vy,[["__file","radio-group.vue"]]);const ef=He(Iy,{RadioButton:Jd,RadioGroup:Qd}),Dy=At(Qd),Ay=At(Jd);function Fy(e){return!!(ke(e)?e.every(({type:t})=>t===jl):(e==null?void 0:e.type)===jl)}var xy=x({name:"NodeContent",props:{node:{type:Object,required:!0},renderLabelFn:Function},setup(e){const t=ue("cascader-node"),{renderLabelFn:n,node:l}=e,{data:a,label:s}=l,r=()=>{const i=n==null?void 0:n({node:l,data:a});return Fy(i)?s:i??s};return()=>H("span",{class:t.e("label")},[r()])}});const li=Symbol(),zy=x({name:"ElCascaderNode"}),Hy=x({...zy,props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(e,{emit:t}){const n=e,l=we(li),a=ue("cascader-node"),s=y(()=>l.isHoverMenu),r=y(()=>l.config.multiple),i=y(()=>l.config.checkStrictly),u=y(()=>{var $;return($=l.checkedNodes[0])==null?void 0:$.uid}),c=y(()=>n.node.isDisabled),d=y(()=>n.node.isLeaf),f=y(()=>i.value&&!d.value||!c.value),m=y(()=>h(l.expandingNode)),v=y(()=>i.value&&l.checkedNodes.some(h)),h=$=>{var M;const{level:R,uid:N}=n.node;return((M=$==null?void 0:$.pathNodes[R-1])==null?void 0:M.uid)===N},p=()=>{m.value||l.expandNode(n.node)},g=$=>{const{node:M}=n;$!==M.checked&&l.handleCheckChange(M,$)},b=()=>{l.lazyLoad(n.node,()=>{d.value||p()})},E=$=>{s.value&&(C(),!d.value&&t("expand",$))},C=()=>{const{node:$}=n;!f.value||$.loading||($.loaded?p():b())},w=()=>{s.value&&!d.value||(d.value&&!c.value&&!i.value&&!r.value?S(!0):C())},k=$=>{i.value?(g($),n.node.loaded&&p()):S($)},S=$=>{n.node.loaded?(g($),!i.value&&p()):b()};return($,M)=>(_(),V("li",{id:`${e.menuId}-${e.node.uid}`,role:"menuitem","aria-haspopup":!o(d),"aria-owns":o(d)?void 0:e.menuId,"aria-expanded":o(m),tabindex:o(f)?-1:void 0,class:T([o(a).b(),o(a).is("selectable",o(i)),o(a).is("active",e.node.checked),o(a).is("disabled",!o(f)),o(m)&&"in-active-path",o(v)&&"in-checked-path"]),onMouseenter:E,onFocus:E,onClick:w},[J(" prefix "),o(r)?(_(),oe(o(Hn),{key:0,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:o(c),onClick:Le(()=>{},["stop"]),"onUpdate:modelValue":k},null,8,["model-value","indeterminate","disabled","onClick"])):o(i)?(_(),oe(o(ef),{key:1,"model-value":o(u),label:e.node.uid,disabled:o(c),"onUpdate:modelValue":k,onClick:Le(()=>{},["stop"])},{default:U(()=>[J(` +import{g as lt,i as we,r as I,c as y,u as o,a as ke,b as yt,d as Ve,e as bt,f as gn,h as rn,w as _p,j as Qe,p as rt,k as Ar,l as x,s as Lt,m as Tp,n as nu,o as ie,q as Xe,t as xt,v as bn,x as V,y as _,z as F,A as G,B as _e,C as T,D as Ee,N as Bt,E as et,F as $p,G as Xt,H as wt,I as oe,J as U,K as We,L as J,M as Ge,O as st,P as pe,Q as Oe,R as H,S as mt,T as an,U as Ha,V as cs,W as pl,X as Ft,Y as Le,Z as Nt,_ as kt,$ as Fr,a0 as hl,a1 as Np,a2 as Nc,a3 as jl,a4 as ua,a5 as Ip,a6 as xr,a7 as zr,a8 as Ic,a9 as Mp,aa as Tt,ab as Mn,ac as ut,ad as Mc,ae as wo,af as On,ag as cl,ah as Dt,ai as Re,aj as Oa,ak as Uo,al as Ka,am as nn,an as Rc,ao as Pc,ap as Yo,aq as ds,ar as Rp,as as Pp,at as Op,au as Ul,av as ht,aw as Lp,ax as Oc,ay as $l,az as Bp,aA as Vp,aB as nr,aC as lr,aD as fs,aE as Dp,aF as Lc,aG as Il,aH as Ap,aI as Fp,aJ as Bc,aK as xp,aL as zp,aM as Hp,aN as Kp,aO as Wp}from"./vue-vendor-Ig-GgGwA.js";import{i as qt,g as Yt,f as qo,s as jp,p as An,E as Xl,y as Up,a as Yp,d as Ln,T as vo,b as Ke,l as Vc,t as Hl,c as tn,e as qp,h as Wa,j as ln,u as Ds,k as Hr,m as Gp,n as Xp,w as Zp,o as Jp,q as Qp,r as eh,v as th,x as lu,S as nh,z as Dc,A as lh,B as oh,D as ca,F as Ac,G as Fc,Y as ah,H as xc,I as zc,J as Hc,K as Kc,L as sh,M as rh,N as ih,O as uh}from"./vendor-BDiMbLwQ.js";const ch="2.10.4",ou=Symbol("INSTALLED_KEY"),Wc=Symbol(),Ko="el",dh="is-",Bl=(e,t,n,l,a)=>{let s=`${e}-${t}`;return n&&(s+=`-${n}`),l&&(s+=`__${l}`),a&&(s+=`--${a}`),s},jc=Symbol("namespaceContextKey"),Kr=e=>{const t=e||(lt()?we(jc,I(Ko)):I(Ko));return y(()=>o(t)||Ko)},ue=(e,t)=>{const n=Kr(t);return{namespace:n,b:(p="")=>Bl(n.value,e,p,"",""),e:p=>p?Bl(n.value,e,"",p,""):"",m:p=>p?Bl(n.value,e,"","",p):"",be:(p,g)=>p&&g?Bl(n.value,e,p,g,""):"",em:(p,g)=>p&&g?Bl(n.value,e,"",p,g):"",bm:(p,g)=>p&&g?Bl(n.value,e,p,"",g):"",bem:(p,g,b)=>p&&g&&b?Bl(n.value,e,p,g,b):"",is:(p,...g)=>{const b=g.length>=1?g[0]:!0;return p&&b?`${dh}${p}`:""},cssVar:p=>{const g={};for(const b in p)p[b]&&(g[`--${n.value}-${b}`]=p[b]);return g},cssVarName:p=>`--${n.value}-${p}`,cssVarBlock:p=>{const g={};for(const b in p)p[b]&&(g[`--${n.value}-${e}-${b}`]=p[b]);return g},cssVarBlockName:p=>`--${n.value}-${e}-${p}`}},vt=e=>e===void 0,_t=e=>typeof e=="boolean",Te=e=>typeof e=="number",Pn=e=>!e&&e!==0||ke(e)&&e.length===0||yt(e)&&!Object.keys(e).length,_n=e=>typeof Element>"u"?!1:e instanceof Element,In=e=>qt(e),fh=e=>Ve(e)?!Number.isNaN(Number(e)):!1,vs=e=>e===window;class vh extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function jt(e,t){throw new vh(`[${e}] ${t}`)}const au={current:0},su=I(0),Uc=2e3,ru=Symbol("elZIndexContextKey"),Yc=Symbol("zIndexContextKey"),Mo=e=>{const t=lt()?we(ru,au):au,n=e||(lt()?we(Yc,void 0):void 0),l=y(()=>{const r=o(n);return Te(r)?r:Uc}),a=y(()=>l.value+su.value),s=()=>(t.current++,su.value=t.current,a.value);return!bt&&we(ru),{initialZIndex:l,currentZIndex:a,nextZIndex:s}};var ph={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color.",alphaLabel:"pick alpha value"},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},mention:{loading:"Loading"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const hh=e=>(t,n)=>mh(t,n,o(e)),mh=(e,t,n)=>Yt(n,e,e).replace(/\{(\w+)\}/g,(l,a)=>{var s;return`${(s=t==null?void 0:t[a])!=null?s:`{${a}}`}`}),gh=e=>{const t=y(()=>o(e).name),n=gn(e)?e:I(e);return{lang:t,locale:n,t:hh(e)}},qc=Symbol("localeContextKey"),pt=e=>{const t=e||we(qc,I());return gh(y(()=>t.value||ph))},Gc="__epPropKey",Y=e=>e,bh=e=>yt(e)&&!!e[Gc],Un=(e,t)=>{if(!yt(e)||bh(e))return e;const{values:n,required:l,default:a,type:s,validator:r}=e,u={type:s,required:!!l,validator:n||r?c=>{let d=!1,f=[];if(n&&(f=Array.from(n),rn(e,"default")&&f.push(a),d||(d=f.includes(c))),r&&(d||(d=r(c))),!d&&f.length>0){const m=[...new Set(f)].map(v=>JSON.stringify(v)).join(", ");_p(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${m}], got value ${JSON.stringify(c)}.`)}return d}:void 0,[Gc]:!0};return rn(e,"default")&&(u.default=a),u},de=e=>qo(Object.entries(e).map(([t,n])=>[t,Un(n,t)])),tl=["","default","small","large"],Jt=Un({type:String,values:tl,required:!1}),Xc=Symbol("size"),Zc=()=>{const e=we(Xc,{});return y(()=>o(e.size)||"")},Jc=Symbol("emptyValuesContextKey"),yh=["",void 0,null],Ch=void 0,Zl=de({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>Qe(e)?!e():!e}}),da=(e,t)=>{const n=lt()?we(Jc,I({})):I({}),l=y(()=>e.emptyValues||n.value.emptyValues||yh),a=y(()=>Qe(e.valueOnClear)?e.valueOnClear():e.valueOnClear!==void 0?e.valueOnClear:Qe(n.value.valueOnClear)?n.value.valueOnClear():n.value.valueOnClear!==void 0?n.value.valueOnClear:t!==void 0?t:Ch),s=r=>l.value.includes(r);return l.value.includes(a.value),{emptyValues:l,valueOnClear:a,isEmptyValue:s}},ko=e=>Object.keys(e),Qc=e=>Object.entries(e),Wo=(e,t,n)=>({get value(){return Yt(e,t,n)},set value(l){jp(e,t,l)}}),ja=I();function fa(e,t=void 0){const n=lt()?we(Wc,ja):ja;return e?y(()=>{var l,a;return(a=(l=n.value)==null?void 0:l[e])!=null?a:t}):n}function ps(e,t){const n=fa(),l=ue(e,y(()=>{var i;return((i=n.value)==null?void 0:i.namespace)||Ko})),a=pt(y(()=>{var i;return(i=n.value)==null?void 0:i.locale})),s=Mo(y(()=>{var i;return((i=n.value)==null?void 0:i.zIndex)||Uc})),r=y(()=>{var i;return o(t)||((i=n.value)==null?void 0:i.size)||""});return Wr(y(()=>o(n)||{})),{ns:l,locale:a,zIndex:s,size:r}}const Wr=(e,t,n=!1)=>{var l;const a=!!lt(),s=a?fa():void 0,r=(l=t==null?void 0:t.provide)!=null?l:a?rt:void 0;if(!r)return;const i=y(()=>{const u=o(e);return s!=null&&s.value?wh(s.value,u):u});return r(Wc,i),r(qc,y(()=>i.value.locale)),r(jc,y(()=>i.value.namespace)),r(Yc,y(()=>i.value.zIndex)),r(Xc,{size:y(()=>i.value.size||"")}),r(Jc,y(()=>({emptyValues:i.value.emptyValues,valueOnClear:i.value.valueOnClear}))),(n||!ja.value)&&(ja.value=i.value),i},wh=(e,t)=>{const n=[...new Set([...ko(e),...ko(t)])],l={};for(const a of n)l[a]=t[a]!==void 0?t[a]:e[a];return l},kh=(e=[])=>({version:ch,install:(n,l)=>{n[ou]||(n[ou]=!0,e.forEach(a=>n.use(a)),l&&Wr(l,n,!0))}}),De="update:modelValue",nt="change",Zt="input",Sh=de({zIndex:{type:Y([Number,String]),default:100},target:{type:String,default:""},offset:{type:Number,default:0},position:{type:String,values:["top","bottom"],default:"top"}}),Eh={scroll:({scrollTop:e,fixed:t})=>Te(e)&&_t(t),[nt]:e=>_t(e)};var fe=(e,t)=>{const n=e.__vccOpts||e;for(const[l,a]of t)n[l]=a;return n};function _h(e,t,n,l){const a=n-t;return e/=l/2,e<1?a/2*e*e*e+t:a/2*((e-=2)*e*e+2)+t}const Ml=e=>bt?window.requestAnimationFrame(e):setTimeout(e,16),Yl=e=>bt?window.cancelAnimationFrame(e):clearTimeout(e),ed=(e="")=>e.split(" ").filter(t=>!!t.trim()),Nn=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},Fn=(e,t)=>{!e||!t.trim()||e.classList.add(...ed(t))},yn=(e,t)=>{!e||!t.trim()||e.classList.remove(...ed(t))},rl=(e,t)=>{var n;if(!bt||!e||!t)return"";let l=Ar(t);l==="float"&&(l="cssFloat");try{const a=e.style[l];if(a)return a;const s=(n=document.defaultView)==null?void 0:n.getComputedStyle(e,"");return s?s[l]:""}catch{return e.style[l]}},td=(e,t,n)=>{if(!(!e||!t))if(yt(t))Qc(t).forEach(([l,a])=>td(e,l,a));else{const l=Ar(t);e.style[l]=n}};function zt(e,t="px"){if(!e)return"";if(Te(e)||fh(e))return`${e}${t}`;if(Ve(e))return e}const Th=(e,t)=>{if(!bt)return!1;const n={undefined:"overflow",true:"overflow-y",false:"overflow-x"}[String(t)],l=rl(e,n);return["scroll","auto","overlay"].some(a=>l.includes(a))},jr=(e,t)=>{if(!bt)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(Th(n,t))return n;n=n.parentNode}return n};let wa;const nd=e=>{var t;if(!bt)return 0;if(wa!==void 0)return wa;const n=document.createElement("div");n.className=`${e}-scrollbar__wrap`,n.style.visibility="hidden",n.style.width="100px",n.style.position="absolute",n.style.top="-9999px",document.body.appendChild(n);const l=n.offsetWidth;n.style.overflow="scroll";const a=document.createElement("div");a.style.width="100%",n.appendChild(a);const s=a.offsetWidth;return(t=n.parentNode)==null||t.removeChild(n),wa=l-s,wa};function Ur(e,t){if(!bt)return;if(!t){e.scrollTop=0;return}const n=[];let l=t.offsetParent;for(;l!==null&&e!==l&&e.contains(l);)n.push(l),l=l.offsetParent;const a=t.offsetTop+n.reduce((u,c)=>u+c.offsetTop,0),s=a+t.offsetHeight,r=e.scrollTop,i=r+e.clientHeight;ai&&(e.scrollTop=s-e.clientHeight)}function $h(e,t,n,l,a){const s=Date.now();let r;const i=()=>{const c=Date.now()-s,d=_h(c>l?l:c,t,n,l);vs(e)?e.scrollTo(window.pageXOffset,d):e.scrollTop=d,c{r&&Yl(r)}}const iu=(e,t)=>vs(t)?e.ownerDocument.documentElement:t,uu=e=>vs(e)?window.scrollY:e.scrollTop,ld="ElAffix",Nh=x({name:ld}),Ih=x({...Nh,props:Sh,emits:Eh,setup(e,{expose:t,emit:n}){const l=e,a=ue("affix"),s=Lt(),r=Lt(),i=Lt(),{height:u}=Tp(),{height:c,width:d,top:f,bottom:m,update:v}=nu(r,{windowScroll:!1}),h=nu(s),p=I(!1),g=I(0),b=I(0),E=y(()=>({height:p.value?`${c.value}px`:"",width:p.value?`${d.value}px`:""})),C=y(()=>{if(!p.value)return{};const $=l.offset?zt(l.offset):0;return{height:`${c.value}px`,width:`${d.value}px`,top:l.position==="top"?$:"",bottom:l.position==="bottom"?$:"",transform:b.value?`translateY(${b.value}px)`:"",zIndex:l.zIndex}}),w=()=>{if(!i.value)return;g.value=i.value instanceof Window?document.documentElement.scrollTop:i.value.scrollTop||0;const{position:$,target:M,offset:R}=l,N=R+c.value;if($==="top")if(M){const O=h.bottom.value-N;p.value=R>f.value&&h.bottom.value>0,b.value=O<0?O:0}else p.value=R>f.value;else if(M){const O=u.value-h.top.value-N;p.value=u.value-Rh.top.value,b.value=O<0?-O:0}else p.value=u.value-R{if(!p.value){v();return}p.value=!1,await Ee(),v(),p.value=!0},S=async()=>{v(),await Ee(),n("scroll",{scrollTop:g.value,fixed:p.value})};return ie(p,$=>n(nt,$)),Xe(()=>{var $;l.target?(s.value=($=document.querySelector(l.target))!=null?$:void 0,s.value||jt(ld,`Target does not exist: ${l.target}`)):s.value=document.documentElement,i.value=jr(r.value,!0),v()}),xt(i,"scroll",S),bn(w),t({update:w,updateRoot:k}),($,M)=>(_(),V("div",{ref_key:"root",ref:r,class:T(o(a).b()),style:_e(o(E))},[F("div",{class:T({[o(a).m("fixed")]:p.value}),style:_e(o(C))},[G($.$slots,"default")],6)],6))}});var Mh=fe(Ih,[["__file","affix.vue"]]);const He=(e,t)=>{if(e.install=n=>{for(const l of[e,...Object.values(t??{})])n.component(l.name,l)},t)for(const[n,l]of Object.entries(t))e[n]=l;return e},od=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),Rh=(e,t)=>(e.install=n=>{n.directive(t,e)},e),At=e=>(e.install=Bt,e),Ph=He(Mh),Oh=de({size:{type:Y([Number,String])},color:{type:String}}),Lh=x({name:"ElIcon",inheritAttrs:!1}),Bh=x({...Lh,props:Oh,setup(e){const t=e,n=ue("icon"),l=y(()=>{const{size:a,color:s}=t;return!a&&!s?{}:{fontSize:vt(a)?void 0:zt(a),"--color":s}});return(a,s)=>(_(),V("i",et({class:o(n).b(),style:o(l)},a.$attrs),[G(a.$slots,"default")],16))}});var Vh=fe(Bh,[["__file","icon.vue"]]);const Se=He(Vh);function cu(){let e;const t=(l,a)=>{n(),e=window.setTimeout(l,a)},n=()=>window.clearTimeout(e);return $p(()=>n()),{registerTimeout:t,cancelTimeout:n}}const ad=de({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),sd=({showAfter:e,hideAfter:t,autoClose:n,open:l,close:a})=>{const{registerTimeout:s}=cu(),{registerTimeout:r,cancelTimeout:i}=cu();return{onOpen:d=>{s(()=>{l(d);const f=o(n);Te(f)&&f>0&&r(()=>{a(d)},f)},o(e))},onClose:d=>{i(),s(()=>{a(d)},o(t))}}};/*! Element Plus Icons Vue v2.3.1 */var Dh=x({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"})]))}}),nl=Dh,Ah=x({name:"ArrowLeft",__name:"arrow-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z"})]))}}),dl=Ah,Fh=x({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),Cn=Fh,xh=x({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),hs=xh,zh=x({name:"Back",__name:"back",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"}),F("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"})]))}}),Hh=zh,Kh=x({name:"Calendar",__name:"calendar",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64"})]))}}),Wh=Kh,jh=x({name:"CaretRight",__name:"caret-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 192v640l384-320.064z"})]))}}),rd=jh,Uh=x({name:"CaretTop",__name:"caret-top",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 320 192 704h639.936z"})]))}}),Yh=Uh,qh=x({name:"Check",__name:"check",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z"})]))}}),va=qh,Gh=x({name:"CircleCheckFilled",__name:"circle-check-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Xh=Gh,Zh=x({name:"CircleCheck",__name:"circle-check",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"})]))}}),Yr=Zh,Jh=x({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),qr=Jh,Qh=x({name:"CircleClose",__name:"circle-close",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"}),F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"})]))}}),ml=Qh,em=x({name:"Clock",__name:"clock",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"}),F("path",{fill:"currentColor",d:"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32"}),F("path",{fill:"currentColor",d:"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32"})]))}}),id=em,tm=x({name:"Close",__name:"close",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),zn=tm,nm=x({name:"DArrowLeft",__name:"d-arrow-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z"})]))}}),Rl=nm,lm=x({name:"DArrowRight",__name:"d-arrow-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z"})]))}}),Pl=lm,om=x({name:"Delete",__name:"delete",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32"})]))}}),am=om,sm=x({name:"Document",__name:"document",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z"})]))}}),rm=sm,im=x({name:"FullScreen",__name:"full-screen",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z"})]))}}),um=im,cm=x({name:"Hide",__name:"hide",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z"}),F("path",{fill:"currentColor",d:"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z"})]))}}),dm=cm,fm=x({name:"InfoFilled",__name:"info-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Go=fm,vm=x({name:"Loading",__name:"loading",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"})]))}}),Qn=vm,pm=x({name:"Minus",__name:"minus",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"})]))}}),hm=pm,mm=x({name:"MoreFilled",__name:"more-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224"})]))}}),du=mm,gm=x({name:"More",__name:"more",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),bm=gm,ym=x({name:"PictureFilled",__name:"picture-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384"})]))}}),Cm=ym,wm=x({name:"Plus",__name:"plus",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"})]))}}),ud=wm,km=x({name:"QuestionFilled",__name:"question-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"})]))}}),Sm=km,Em=x({name:"RefreshLeft",__name:"refresh-left",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z"})]))}}),_m=Em,Tm=x({name:"RefreshRight",__name:"refresh-right",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z"})]))}}),$m=Tm,Nm=x({name:"ScaleToOriginal",__name:"scale-to-original",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118M512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412M512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512"})]))}}),Im=Nm,Mm=x({name:"Search",__name:"search",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704"})]))}}),Rm=Mm,Pm=x({name:"SortDown",__name:"sort-down",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0"})]))}}),Om=Pm,Lm=x({name:"SortUp",__name:"sort-up",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248"})]))}}),Bm=Lm,Vm=x({name:"StarFilled",__name:"star-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z"})]))}}),ka=Vm,Dm=x({name:"Star",__name:"star",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z"})]))}}),Am=Dm,Fm=x({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),cd=Fm,xm=x({name:"View",__name:"view",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"})]))}}),zm=xm,Hm=x({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),ms=Hm,Km=x({name:"ZoomIn",__name:"zoom-in",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z"})]))}}),dd=Km,Wm=x({name:"ZoomOut",__name:"zoom-out",setup(e){return(t,n)=>(_(),V("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[F("path",{fill:"currentColor",d:"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64"})]))}}),jm=Wm;const $t=Y([String,Object,Function]),fd={Close:zn},Gr={Close:zn,SuccessFilled:cd,InfoFilled:Go,WarningFilled:ms,CircleCloseFilled:qr},Ol={primary:Go,success:cd,warning:ms,error:qr,info:Go},gs={validating:Qn,success:Yr,error:ml},Um=["light","dark"],Ym=de({title:{type:String,default:""},description:{type:String,default:""},type:{type:String,values:ko(Ol),default:"info"},closable:{type:Boolean,default:!0},closeText:{type:String,default:""},showIcon:Boolean,center:Boolean,effect:{type:String,values:Um,default:"light"},...ad}),qm={open:()=>!0,close:e=>vt(e)||e instanceof Event},Gm=x({name:"ElAlert"}),Xm=x({...Gm,props:Ym,emits:qm,setup(e,{emit:t}){const n=e,{Close:l}=Gr,a=Xt(),s=ue("alert"),r=I(!1),i=y(()=>Ol[n.type]),u=y(()=>!!(n.description||a.default)),c=()=>{r.value=!0,t("open")},d=v=>{r.value=!1,t("close",v)},{onOpen:f,onClose:m}=sd({showAfter:wt(n,"showAfter"),hideAfter:wt(n,"hideAfter"),autoClose:wt(n,"autoClose"),open:c,close:d});return bt&&f(),(v,h)=>(_(),oe(an,{name:o(s).b("fade"),persisted:""},{default:U(()=>[We(F("div",{class:T([o(s).b(),o(s).m(v.type),o(s).is("center",v.center),o(s).is(v.effect)]),role:"alert"},[v.showIcon&&(v.$slots.icon||o(i))?(_(),oe(o(Se),{key:0,class:T([o(s).e("icon"),{[o(s).is("big")]:o(u)}])},{default:U(()=>[G(v.$slots,"icon",{},()=>[(_(),oe(Ge(o(i))))])]),_:3},8,["class"])):J("v-if",!0),F("div",{class:T(o(s).e("content"))},[v.title||v.$slots.title?(_(),V("span",{key:0,class:T([o(s).e("title"),{"with-description":o(u)}])},[G(v.$slots,"title",{},()=>[st(pe(v.title),1)])],2)):J("v-if",!0),o(u)?(_(),V("p",{key:1,class:T(o(s).e("description"))},[G(v.$slots,"default",{},()=>[st(pe(v.description),1)])],2)):J("v-if",!0),v.closable?(_(),V(Oe,{key:2},[v.closeText?(_(),V("div",{key:0,class:T([o(s).e("close-btn"),o(s).is("customed")]),onClick:d},pe(v.closeText),3)):(_(),oe(o(Se),{key:1,class:T(o(s).e("close-btn")),onClick:o(m)},{default:U(()=>[H(o(l))]),_:1},8,["class","onClick"]))],64)):J("v-if",!0)],2)],2),[[mt,r.value]])]),_:3},8,["name"]))}});var Zm=fe(Xm,[["__file","alert.vue"]]);const Jm=He(Zm),Xr=()=>bt&&/firefox/i.test(window.navigator.userAgent);let Tn;const Qm={height:"0",visibility:"hidden",overflow:Xr()?"":"hidden",position:"absolute","z-index":"-1000",top:"0",right:"0"},eg=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"];function tg(e){const t=window.getComputedStyle(e),n=t.getPropertyValue("box-sizing"),l=Number.parseFloat(t.getPropertyValue("padding-bottom"))+Number.parseFloat(t.getPropertyValue("padding-top")),a=Number.parseFloat(t.getPropertyValue("border-bottom-width"))+Number.parseFloat(t.getPropertyValue("border-top-width"));return{contextStyle:eg.map(r=>[r,t.getPropertyValue(r)]),paddingSize:l,borderSize:a,boxSizing:n}}function fu(e,t=1,n){var l;Tn||(Tn=document.createElement("textarea"),document.body.appendChild(Tn));const{paddingSize:a,borderSize:s,boxSizing:r,contextStyle:i}=tg(e);i.forEach(([f,m])=>Tn==null?void 0:Tn.style.setProperty(f,m)),Object.entries(Qm).forEach(([f,m])=>Tn==null?void 0:Tn.style.setProperty(f,m,"important")),Tn.value=e.value||e.placeholder||"";let u=Tn.scrollHeight;const c={};r==="border-box"?u=u+s:r==="content-box"&&(u=u-a),Tn.value="";const d=Tn.scrollHeight-a;if(Te(t)){let f=d*t;r==="border-box"&&(f=f+a+s),u=Math.max(f,u),c.minHeight=`${f}px`}if(Te(n)){let f=d*n;r==="border-box"&&(f=f+a+s),u=Math.min(f,u)}return c.height=`${u}px`,(l=Tn.parentNode)==null||l.removeChild(Tn),Tn=void 0,c}const Vt=e=>e,ng=de({ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical","undefined"]},ariaControls:String}),cn=e=>An(ng,e),pa=de({id:{type:String,default:void 0},size:Jt,disabled:Boolean,modelValue:{type:Y([String,Number,Object]),default:""},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:String,default:"text"},resize:{type:String,values:["none","both","horizontal","vertical"]},autosize:{type:Y([Boolean,Object]),default:!1},autocomplete:{type:String,default:"off"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,showPassword:Boolean,showWordLimit:Boolean,suffixIcon:{type:$t},prefixIcon:{type:$t},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:Y([Object,Array,String]),default:()=>Vt({})},autofocus:Boolean,rows:{type:Number,default:2},...cn(["ariaLabel"]),inputmode:{type:Y(String),default:void 0},name:String}),lg={[De]:e=>Ve(e),input:e=>Ve(e),change:e=>Ve(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},og=["class","style"],ag=/^on[A-Z]/,bs=(e={})=>{const{excludeListeners:t=!1,excludeKeys:n}=e,l=y(()=>((n==null?void 0:n.value)||[]).concat(og)),a=lt();return a?y(()=>{var s;return qo(Object.entries((s=a.proxy)==null?void 0:s.$attrs).filter(([r])=>!l.value.includes(r)&&!(t&&ag.test(r))))}):y(()=>({}))},vu={prefix:Math.floor(Math.random()*1e4),current:0},sg=Symbol("elIdInjection"),Zr=()=>lt()?we(sg,vu):vu,sn=e=>{const t=Zr(),n=Kr();return Ha(()=>o(e)||`${n.value}-id-${t.prefix}-${t.current++}`)},Jl=Symbol("formContextKey"),el=Symbol("formItemContextKey"),dn=()=>{const e=we(Jl,void 0),t=we(el,void 0);return{form:e,formItem:t}},Kn=(e,{formItemContext:t,disableIdGeneration:n,disableIdManagement:l})=>{n||(n=I(!1)),l||(l=I(!1));const a=I();let s;const r=y(()=>{var i;return!!(!(e.label||e.ariaLabel)&&t&&t.inputIds&&((i=t.inputIds)==null?void 0:i.length)<=1)});return Xe(()=>{s=ie([wt(e,"id"),n],([i,u])=>{const c=i??(u?void 0:sn().value);c!==a.value&&(t!=null&&t.removeInputId&&(a.value&&t.removeInputId(a.value),!(l!=null&&l.value)&&!u&&c&&t.addInputId(c)),a.value=c)},{immediate:!0})}),cs(()=>{s&&s(),t!=null&&t.removeInputId&&a.value&&t.removeInputId(a.value)}),{isLabeledByFormItem:r,inputId:a}},vd=e=>{const t=lt();return y(()=>{var n,l;return(l=(n=t==null?void 0:t.proxy)==null?void 0:n.$props)==null?void 0:l[e]})},Gt=(e,t={})=>{const n=I(void 0),l=t.prop?n:vd("size"),a=t.global?n:Zc(),s=t.form?{size:void 0}:we(Jl,void 0),r=t.formItem?{size:void 0}:we(el,void 0);return y(()=>l.value||o(e)||(r==null?void 0:r.size)||(s==null?void 0:s.size)||a.value||"")},fn=e=>{const t=vd("disabled"),n=we(Jl,void 0);return y(()=>t.value||o(e)||(n==null?void 0:n.disabled)||!1)},rg='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex="-1"]),input:not([disabled]),input:not([type="hidden"]),select:not([disabled]),textarea:not([disabled])',ig=e=>getComputedStyle(e).position==="fixed"?!1:e.offsetParent!==null,pu=e=>Array.from(e.querySelectorAll(rg)).filter(t=>Xo(t)&&ig(t)),Xo=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute("tabIndex")!==null)return!0;if(e.tabIndex<0||e.hasAttribute("disabled")||e.getAttribute("aria-disabled")==="true")return!1;switch(e.nodeName){case"A":return!!e.href&&e.rel!=="ignore";case"INPUT":return!(e.type==="hidden"||e.type==="file");case"BUTTON":case"SELECT":case"TEXTAREA":return!0;default:return!1}},La=function(e,t,...n){let l;t.includes("mouse")||t.includes("click")?l="MouseEvents":t.includes("key")?l="KeyboardEvent":l="HTMLEvents";const a=document.createEvent(l);return a.initEvent(t,...n),e.dispatchEvent(a),e},pd=e=>!e.getAttribute("aria-owns"),hd=(e,t,n)=>{const{parentNode:l}=e;if(!l)return null;const a=l.querySelectorAll(n),s=Array.prototype.indexOf.call(a,e);return a[s+t]||null},Ba=e=>{e&&(e.focus(),!pd(e)&&e.click())};function Ll(e,{disabled:t,beforeFocus:n,afterFocus:l,beforeBlur:a,afterBlur:s}={}){const r=lt(),{emit:i}=r,u=Lt(),c=I(!1),d=v=>{const h=Qe(n)?n(v):!1;o(t)||c.value||h||(c.value=!0,i("focus",v),l==null||l())},f=v=>{var h;const p=Qe(a)?a(v):!1;o(t)||v.relatedTarget&&((h=u.value)!=null&&h.contains(v.relatedTarget))||p||(c.value=!1,i("blur",v),s==null||s())},m=v=>{var h,p;o(t)||Xo(v.target)||(h=u.value)!=null&&h.contains(document.activeElement)&&u.value!==document.activeElement||(p=e.value)==null||p.focus()};return ie([u,()=>o(t)],([v,h])=>{v&&(h?v.removeAttribute("tabindex"):v.setAttribute("tabindex","-1"))}),xt(u,"focus",d,!0),xt(u,"blur",f,!0),xt(u,"click",m,!0),{isFocused:c,wrapperRef:u,handleFocus:d,handleBlur:f}}const ug=e=>/([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(e);function ha({afterComposition:e,emit:t}){const n=I(!1),l=i=>{t==null||t("compositionstart",i),n.value=!0},a=i=>{var u;t==null||t("compositionupdate",i);const c=(u=i.target)==null?void 0:u.value,d=c[c.length-1]||"";n.value=!ug(d)},s=i=>{t==null||t("compositionend",i),n.value&&(n.value=!1,Ee(()=>e(i)))};return{isComposing:n,handleComposition:i=>{i.type==="compositionend"?s(i):a(i)},handleCompositionStart:l,handleCompositionUpdate:a,handleCompositionEnd:s}}function cg(e){let t;function n(){if(e.value==null)return;const{selectionStart:a,selectionEnd:s,value:r}=e.value;if(a==null||s==null)return;const i=r.slice(0,Math.max(0,a)),u=r.slice(Math.max(0,s));t={selectionStart:a,selectionEnd:s,value:r,beforeTxt:i,afterTxt:u}}function l(){if(e.value==null||t==null)return;const{value:a}=e.value,{beforeTxt:s,afterTxt:r,selectionStart:i}=t;if(s==null||r==null||i==null)return;let u=a.length;if(a.endsWith(r))u=a.length-r.length;else if(a.startsWith(s))u=s.length;else{const c=s[i-1],d=a.indexOf(c,i-1);d!==-1&&(u=d+1)}e.value.setSelectionRange(u,u)}return[n,l]}const dg="ElInput",fg=x({name:dg,inheritAttrs:!1}),vg=x({...fg,props:pa,emits:lg,setup(e,{expose:t,emit:n}){const l=e,a=pl(),s=bs(),r=Xt(),i=y(()=>[l.type==="textarea"?p.b():h.b(),h.m(m.value),h.is("disabled",v.value),h.is("exceed",Q.value),{[h.b("group")]:r.prepend||r.append,[h.m("prefix")]:r.prefix||l.prefixIcon,[h.m("suffix")]:r.suffix||l.suffixIcon||l.clearable||l.showPassword,[h.bm("suffix","password-clear")]:B.value&&A.value,[h.b("hidden")]:l.type==="hidden"},a.class]),u=y(()=>[h.e("wrapper"),h.is("focus",M.value)]),{form:c,formItem:d}=dn(),{inputId:f}=Kn(l,{formItemContext:d}),m=Gt(),v=fn(),h=ue("input"),p=ue("textarea"),g=Lt(),b=Lt(),E=I(!1),C=I(!1),w=I(),k=Lt(l.inputStyle),S=y(()=>g.value||b.value),{wrapperRef:$,isFocused:M,handleFocus:R,handleBlur:N}=Ll(S,{disabled:v,afterBlur(){var ye;l.validateEvent&&((ye=d==null?void 0:d.validate)==null||ye.call(d,"blur").catch(Ue=>void 0))}}),O=y(()=>{var ye;return(ye=c==null?void 0:c.statusIcon)!=null?ye:!1}),P=y(()=>(d==null?void 0:d.validateState)||""),W=y(()=>P.value&&gs[P.value]),K=y(()=>C.value?zm:dm),D=y(()=>[a.style]),L=y(()=>[l.inputStyle,k.value,{resize:l.resize}]),z=y(()=>qt(l.modelValue)?"":String(l.modelValue)),B=y(()=>l.clearable&&!v.value&&!l.readonly&&!!z.value&&(M.value||E.value)),A=y(()=>l.showPassword&&!v.value&&!!z.value),ne=y(()=>l.showWordLimit&&!!l.maxlength&&(l.type==="text"||l.type==="textarea")&&!v.value&&!l.readonly&&!l.showPassword),j=y(()=>z.value.length),Q=y(()=>!!ne.value&&j.value>Number(l.maxlength)),Z=y(()=>!!r.suffix||!!l.suffixIcon||B.value||l.showPassword||ne.value||!!P.value&&O.value),[ee,ae]=cg(g);Ft(b,ye=>{if(se(),!ne.value||l.resize!=="both")return;const Ue=ye[0],{width:It}=Ue.contentRect;w.value={right:`calc(100% - ${It+15+6}px)`}});const re=()=>{const{type:ye,autosize:Ue}=l;if(!(!bt||ye!=="textarea"||!b.value))if(Ue){const It=yt(Ue)?Ue.minRows:void 0,Ot=yt(Ue)?Ue.maxRows:void 0,Rt=fu(b.value,It,Ot);k.value={overflowY:"hidden",...Rt},Ee(()=>{b.value.offsetHeight,k.value=Rt})}else k.value={minHeight:fu(b.value).minHeight}},se=(ye=>{let Ue=!1;return()=>{var It;if(Ue||!l.autosize)return;((It=b.value)==null?void 0:It.offsetParent)===null||(ye(),Ue=!0)}})(re),ge=()=>{const ye=S.value,Ue=l.formatter?l.formatter(z.value):z.value;!ye||ye.value===Ue||(ye.value=Ue)},Be=async ye=>{ee();let{value:Ue}=ye.target;if(l.formatter&&l.parser&&(Ue=l.parser(Ue)),!ce.value){if(Ue===z.value){ge();return}n(De,Ue),n(Zt,Ue),await Ee(),ge(),ae()}},te=ye=>{let{value:Ue}=ye.target;l.formatter&&l.parser&&(Ue=l.parser(Ue)),n(nt,Ue)},{isComposing:ce,handleCompositionStart:Ie,handleCompositionUpdate:Ae,handleCompositionEnd:xe}=ha({emit:n,afterComposition:Be}),Ye=()=>{ee(),C.value=!C.value,setTimeout(ae)},$e=()=>{var ye;return(ye=S.value)==null?void 0:ye.focus()},Me=()=>{var ye;return(ye=S.value)==null?void 0:ye.blur()},Pe=ye=>{E.value=!1,n("mouseleave",ye)},Ze=ye=>{E.value=!0,n("mouseenter",ye)},ot=ye=>{n("keydown",ye)},at=()=>{var ye;(ye=S.value)==null||ye.select()},ct=()=>{n(De,""),n(nt,""),n("clear"),n(Zt,"")};return ie(()=>l.modelValue,()=>{var ye;Ee(()=>re()),l.validateEvent&&((ye=d==null?void 0:d.validate)==null||ye.call(d,"change").catch(Ue=>void 0))}),ie(z,()=>ge()),ie(()=>l.type,async()=>{await Ee(),ge(),re()}),Xe(()=>{!l.formatter&&l.parser,ge(),Ee(re)}),t({input:g,textarea:b,ref:S,textareaStyle:L,autosize:wt(l,"autosize"),isComposing:ce,focus:$e,blur:Me,select:at,clear:ct,resizeTextarea:re}),(ye,Ue)=>(_(),V("div",{class:T([o(i),{[o(h).bm("group","append")]:ye.$slots.append,[o(h).bm("group","prepend")]:ye.$slots.prepend}]),style:_e(o(D)),onMouseenter:Ze,onMouseleave:Pe},[J(" input "),ye.type!=="textarea"?(_(),V(Oe,{key:0},[J(" prepend slot "),ye.$slots.prepend?(_(),V("div",{key:0,class:T(o(h).be("group","prepend"))},[G(ye.$slots,"prepend")],2)):J("v-if",!0),F("div",{ref_key:"wrapperRef",ref:$,class:T(o(u))},[J(" prefix slot "),ye.$slots.prefix||ye.prefixIcon?(_(),V("span",{key:0,class:T(o(h).e("prefix"))},[F("span",{class:T(o(h).e("prefix-inner"))},[G(ye.$slots,"prefix"),ye.prefixIcon?(_(),oe(o(Se),{key:0,class:T(o(h).e("icon"))},{default:U(()=>[(_(),oe(Ge(ye.prefixIcon)))]),_:1},8,["class"])):J("v-if",!0)],2)],2)):J("v-if",!0),F("input",et({id:o(f),ref_key:"input",ref:g,class:o(h).e("inner")},o(s),{name:ye.name,minlength:ye.minlength,maxlength:ye.maxlength,type:ye.showPassword?C.value?"text":"password":ye.type,disabled:o(v),readonly:ye.readonly,autocomplete:ye.autocomplete,tabindex:ye.tabindex,"aria-label":ye.ariaLabel,placeholder:ye.placeholder,style:ye.inputStyle,form:ye.form,autofocus:ye.autofocus,role:ye.containerRole,inputmode:ye.inputmode,onCompositionstart:o(Ie),onCompositionupdate:o(Ae),onCompositionend:o(xe),onInput:Be,onChange:te,onKeydown:ot}),null,16,["id","name","minlength","maxlength","type","disabled","readonly","autocomplete","tabindex","aria-label","placeholder","form","autofocus","role","inputmode","onCompositionstart","onCompositionupdate","onCompositionend"]),J(" suffix slot "),o(Z)?(_(),V("span",{key:1,class:T(o(h).e("suffix"))},[F("span",{class:T(o(h).e("suffix-inner"))},[!o(B)||!o(A)||!o(ne)?(_(),V(Oe,{key:0},[G(ye.$slots,"suffix"),ye.suffixIcon?(_(),oe(o(Se),{key:0,class:T(o(h).e("icon"))},{default:U(()=>[(_(),oe(Ge(ye.suffixIcon)))]),_:1},8,["class"])):J("v-if",!0)],64)):J("v-if",!0),o(B)?(_(),oe(o(Se),{key:1,class:T([o(h).e("icon"),o(h).e("clear")]),onMousedown:Le(o(Bt),["prevent"]),onClick:ct},{default:U(()=>[H(o(ml))]),_:1},8,["class","onMousedown"])):J("v-if",!0),o(A)?(_(),oe(o(Se),{key:2,class:T([o(h).e("icon"),o(h).e("password")]),onClick:Ye},{default:U(()=>[(_(),oe(Ge(o(K))))]),_:1},8,["class"])):J("v-if",!0),o(ne)?(_(),V("span",{key:3,class:T(o(h).e("count"))},[F("span",{class:T(o(h).e("count-inner"))},pe(o(j))+" / "+pe(ye.maxlength),3)],2)):J("v-if",!0),o(P)&&o(W)&&o(O)?(_(),oe(o(Se),{key:4,class:T([o(h).e("icon"),o(h).e("validateIcon"),o(h).is("loading",o(P)==="validating")])},{default:U(()=>[(_(),oe(Ge(o(W))))]),_:1},8,["class"])):J("v-if",!0)],2)],2)):J("v-if",!0)],2),J(" append slot "),ye.$slots.append?(_(),V("div",{key:1,class:T(o(h).be("group","append"))},[G(ye.$slots,"append")],2)):J("v-if",!0)],64)):(_(),V(Oe,{key:1},[J(" textarea "),F("textarea",et({id:o(f),ref_key:"textarea",ref:b,class:[o(p).e("inner"),o(h).is("focus",o(M))]},o(s),{minlength:ye.minlength,maxlength:ye.maxlength,tabindex:ye.tabindex,disabled:o(v),readonly:ye.readonly,autocomplete:ye.autocomplete,style:o(L),"aria-label":ye.ariaLabel,placeholder:ye.placeholder,form:ye.form,autofocus:ye.autofocus,rows:ye.rows,role:ye.containerRole,onCompositionstart:o(Ie),onCompositionupdate:o(Ae),onCompositionend:o(xe),onInput:Be,onFocus:o(R),onBlur:o(N),onChange:te,onKeydown:ot}),null,16,["id","minlength","maxlength","tabindex","disabled","readonly","autocomplete","aria-label","placeholder","form","autofocus","rows","role","onCompositionstart","onCompositionupdate","onCompositionend","onFocus","onBlur"]),o(ne)?(_(),V("span",{key:0,style:_e(w.value),class:T(o(h).e("count"))},pe(o(j))+" / "+pe(ye.maxlength),7)):J("v-if",!0)],64))],38))}});var pg=fe(vg,[["__file","input.vue"]]);const hn=He(pg),no=4,md={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},hg=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),Jr=Symbol("scrollbarContextKey"),mg=de({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),gg="Thumb",bg=x({__name:"thumb",props:mg,setup(e){const t=e,n=we(Jr),l=ue("scrollbar");n||jt(gg,"can not inject scrollbar context");const a=I(),s=I(),r=I({}),i=I(!1);let u=!1,c=!1,d=0,f=0,m=bt?document.onselectstart:null;const v=y(()=>md[t.vertical?"vertical":"horizontal"]),h=y(()=>hg({size:t.size,move:t.move,bar:v.value})),p=y(()=>a.value[v.value.offset]**2/n.wrapElement[v.value.scrollSize]/t.ratio/s.value[v.value.offset]),g=M=>{var R;if(M.stopPropagation(),M.ctrlKey||[1,2].includes(M.button))return;(R=window.getSelection())==null||R.removeAllRanges(),E(M);const N=M.currentTarget;N&&(r.value[v.value.axis]=N[v.value.offset]-(M[v.value.client]-N.getBoundingClientRect()[v.value.direction]))},b=M=>{if(!s.value||!a.value||!n.wrapElement)return;const R=Math.abs(M.target.getBoundingClientRect()[v.value.direction]-M[v.value.client]),N=s.value[v.value.offset]/2,O=(R-N)*100*p.value/a.value[v.value.offset];n.wrapElement[v.value.scroll]=O*n.wrapElement[v.value.scrollSize]/100},E=M=>{M.stopImmediatePropagation(),u=!0,d=n.wrapElement.scrollHeight,f=n.wrapElement.scrollWidth,document.addEventListener("mousemove",C),document.addEventListener("mouseup",w),m=document.onselectstart,document.onselectstart=()=>!1},C=M=>{if(!a.value||!s.value||u===!1)return;const R=r.value[v.value.axis];if(!R)return;const N=(a.value.getBoundingClientRect()[v.value.direction]-M[v.value.client])*-1,O=s.value[v.value.offset]-R,P=(N-O)*100*p.value/a.value[v.value.offset];v.value.scroll==="scrollLeft"?n.wrapElement[v.value.scroll]=P*f/100:n.wrapElement[v.value.scroll]=P*d/100},w=()=>{u=!1,r.value[v.value.axis]=0,document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",w),$(),c&&(i.value=!1)},k=()=>{c=!1,i.value=!!t.size},S=()=>{c=!0,i.value=u};Nt(()=>{$(),document.removeEventListener("mouseup",w)});const $=()=>{document.onselectstart!==m&&(document.onselectstart=m)};return xt(wt(n,"scrollbarElement"),"mousemove",k),xt(wt(n,"scrollbarElement"),"mouseleave",S),(M,R)=>(_(),oe(an,{name:o(l).b("fade"),persisted:""},{default:U(()=>[We(F("div",{ref_key:"instance",ref:a,class:T([o(l).e("bar"),o(l).is(o(v).key)]),onMousedown:b,onClick:Le(()=>{},["stop"])},[F("div",{ref_key:"thumb",ref:s,class:T(o(l).e("thumb")),style:_e(o(h)),onMousedown:g},null,38)],42,["onClick"]),[[mt,M.always||i.value]])]),_:1},8,["name"]))}});var hu=fe(bg,[["__file","thumb.vue"]]);const yg=de({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),Cg=x({__name:"bar",props:yg,setup(e,{expose:t}){const n=e,l=we(Jr),a=I(0),s=I(0),r=I(""),i=I(""),u=I(1),c=I(1);return t({handleScroll:m=>{if(m){const v=m.offsetHeight-no,h=m.offsetWidth-no;s.value=m.scrollTop*100/v*u.value,a.value=m.scrollLeft*100/h*c.value}},update:()=>{const m=l==null?void 0:l.wrapElement;if(!m)return;const v=m.offsetHeight-no,h=m.offsetWidth-no,p=v**2/m.scrollHeight,g=h**2/m.scrollWidth,b=Math.max(p,n.minSize),E=Math.max(g,n.minSize);u.value=p/(v-p)/(b/(v-b)),c.value=g/(h-g)/(E/(h-E)),i.value=b+no(_(),V(Oe,null,[H(hu,{move:a.value,ratio:c.value,size:r.value,always:m.always},null,8,["move","ratio","size","always"]),H(hu,{move:s.value,ratio:u.value,size:i.value,vertical:"",always:m.always},null,8,["move","ratio","size","always"])],64))}});var wg=fe(Cg,[["__file","bar.vue"]]);const kg=de({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:Boolean,wrapStyle:{type:Y([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},tabindex:{type:[String,Number],default:void 0},id:String,role:String,...cn(["ariaLabel","ariaOrientation"])}),gd={"end-reached":e=>["left","right","top","bottom"].includes(e),scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(Te)},Sg="ElScrollbar",Eg=x({name:Sg}),_g=x({...Eg,props:kg,emits:gd,setup(e,{expose:t,emit:n}){const l=e,a=ue("scrollbar");let s,r,i=0,u=0,c="";const d=I(),f=I(),m=I(),v=I(),h=y(()=>{const S={};return l.height&&(S.height=zt(l.height)),l.maxHeight&&(S.maxHeight=zt(l.maxHeight)),[l.wrapStyle,S]}),p=y(()=>[l.wrapClass,a.e("wrap"),{[a.em("wrap","hidden-default")]:!l.native}]),g=y(()=>[a.e("view"),l.viewClass]),b=()=>{var S;if(f.value){(S=v.value)==null||S.handleScroll(f.value);const $=i,M=u;i=f.value.scrollTop,u=f.value.scrollLeft;const R={bottom:i+f.value.clientHeight>=f.value.scrollHeight,top:i<=0&&$!==0,right:u+f.value.clientWidth>=f.value.scrollWidth&&M!==u,left:u<=0&&M!==0};$!==i&&(c=i>$?"bottom":"top"),M!==u&&(c=u>M?"right":"left"),n("scroll",{scrollTop:i,scrollLeft:u}),R[c]&&n("end-reached",c)}};function E(S,$){yt(S)?f.value.scrollTo(S):Te(S)&&Te($)&&f.value.scrollTo(S,$)}const C=S=>{Te(S)&&(f.value.scrollTop=S)},w=S=>{Te(S)&&(f.value.scrollLeft=S)},k=()=>{var S;(S=v.value)==null||S.update()};return ie(()=>l.noresize,S=>{S?(s==null||s(),r==null||r()):({stop:s}=Ft(m,k),r=xt("resize",k))},{immediate:!0}),ie(()=>[l.maxHeight,l.height],()=>{l.native||Ee(()=>{var S;k(),f.value&&((S=v.value)==null||S.handleScroll(f.value))})}),rt(Jr,kt({scrollbarElement:d,wrapElement:f})),Fr(()=>{f.value&&(f.value.scrollTop=i,f.value.scrollLeft=u)}),Xe(()=>{l.native||Ee(()=>{k()})}),hl(()=>k()),t({wrapRef:f,update:k,scrollTo:E,setScrollTop:C,setScrollLeft:w,handleScroll:b}),(S,$)=>(_(),V("div",{ref_key:"scrollbarRef",ref:d,class:T(o(a).b())},[F("div",{ref_key:"wrapRef",ref:f,class:T(o(p)),style:_e(o(h)),tabindex:S.tabindex,onScroll:b},[(_(),oe(Ge(S.tag),{id:S.id,ref_key:"resizeRef",ref:m,class:T(o(g)),style:_e(S.viewStyle),role:S.role,"aria-label":S.ariaLabel,"aria-orientation":S.ariaOrientation},{default:U(()=>[G(S.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],46,["tabindex"]),S.native?J("v-if",!0):(_(),oe(wg,{key:0,ref_key:"barRef",ref:v,always:S.always,"min-size":S.minSize},null,8,["always","min-size"]))],2))}});var Tg=fe(_g,[["__file","scrollbar.vue"]]);const jn=He(Tg),Qr=Symbol("popper"),bd=Symbol("popperContent"),yd=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],Cd=de({role:{type:String,values:yd,default:"tooltip"}}),$g=x({name:"ElPopper",inheritAttrs:!1}),Ng=x({...$g,props:Cd,setup(e,{expose:t}){const n=e,l=I(),a=I(),s=I(),r=I(),i=y(()=>n.role),u={triggerRef:l,popperInstanceRef:a,contentRef:s,referenceRef:r,role:i};return t(u),rt(Qr,u),(c,d)=>G(c.$slots,"default")}});var Ig=fe(Ng,[["__file","popper.vue"]]);const Mg=x({name:"ElPopperArrow",inheritAttrs:!1}),Rg=x({...Mg,setup(e,{expose:t}){const n=ue("popper"),{arrowRef:l,arrowStyle:a}=we(bd,void 0);return Nt(()=>{l.value=void 0}),t({arrowRef:l}),(s,r)=>(_(),V("span",{ref_key:"arrowRef",ref:l,class:T(o(n).e("arrow")),style:_e(o(a)),"data-popper-arrow":""},null,6))}});var Pg=fe(Rg,[["__file","arrow.vue"]]);const wd=de({virtualRef:{type:Y(Object)},virtualTriggering:Boolean,onMouseenter:{type:Y(Function)},onMouseleave:{type:Y(Function)},onClick:{type:Y(Function)},onKeydown:{type:Y(Function)},onFocus:{type:Y(Function)},onBlur:{type:Y(Function)},onContextmenu:{type:Y(Function)},id:String,open:Boolean}),kd=Symbol("elForwardRef"),Og=e=>{rt(kd,{setForwardRef:n=>{e.value=n}})},Lg=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),Bg="ElOnlyChild",Sd=x({name:Bg,setup(e,{slots:t,attrs:n}){var l;const a=we(kd),s=Lg((l=a==null?void 0:a.setForwardRef)!=null?l:Bt);return()=>{var r;const i=(r=t.default)==null?void 0:r.call(t,n);if(!i||i.length>1)return null;const u=Ed(i);return u?We(Np(u,n),[[s]]):null}}});function Ed(e){if(!e)return null;const t=e;for(const n of t){if(yt(n))switch(n.type){case jl:continue;case Nc:case"svg":return mu(n);case Oe:return Ed(n.children);default:return n}return mu(n)}return null}function mu(e){const t=ue("only-child");return H("span",{class:t.e("content")},[e])}const Vg=x({name:"ElPopperTrigger",inheritAttrs:!1}),Dg=x({...Vg,props:wd,setup(e,{expose:t}){const n=e,{role:l,triggerRef:a}=we(Qr,void 0);Og(a);const s=y(()=>i.value?n.id:void 0),r=y(()=>{if(l&&l.value==="tooltip")return n.open&&n.id?n.id:void 0}),i=y(()=>{if(l&&l.value!=="tooltip")return l.value}),u=y(()=>i.value?`${n.open}`:void 0);let c;const d=["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"];return Xe(()=>{ie(()=>n.virtualRef,f=>{f&&(a.value=ua(f))},{immediate:!0}),ie(a,(f,m)=>{c==null||c(),c=void 0,_n(f)&&(d.forEach(v=>{var h;const p=n[v];p&&(f.addEventListener(v.slice(2).toLowerCase(),p),(h=m==null?void 0:m.removeEventListener)==null||h.call(m,v.slice(2).toLowerCase(),p))}),Xo(f)&&(c=ie([s,r,i,u],v=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((h,p)=>{qt(v[p])?f.removeAttribute(h):f.setAttribute(h,v[p])})},{immediate:!0}))),_n(m)&&Xo(m)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(v=>m.removeAttribute(v))},{immediate:!0})}),Nt(()=>{if(c==null||c(),c=void 0,a.value&&_n(a.value)){const f=a.value;d.forEach(m=>{const v=n[m];v&&f.removeEventListener(m.slice(2).toLowerCase(),v)}),a.value=void 0}}),t({triggerRef:a}),(f,m)=>f.virtualTriggering?J("v-if",!0):(_(),oe(o(Sd),et({key:0},f.$attrs,{"aria-controls":o(s),"aria-describedby":o(r),"aria-expanded":o(u),"aria-haspopup":o(i)}),{default:U(()=>[G(f.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var Ag=fe(Dg,[["__file","trigger.vue"]]);const As="focus-trap.focus-after-trapped",Fs="focus-trap.focus-after-released",Fg="focus-trap.focusout-prevented",gu={cancelable:!0,bubbles:!1},xg={cancelable:!0,bubbles:!1},bu="focusAfterTrapped",yu="focusAfterReleased",ei=Symbol("elFocusTrap"),ti=I(),ys=I(0),ni=I(0);let Sa=0;const _d=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:l=>{const a=l.tagName==="INPUT"&&l.type==="hidden";return l.disabled||l.hidden||a?NodeFilter.FILTER_SKIP:l.tabIndex>=0||l===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},Cu=(e,t)=>{for(const n of e)if(!zg(n,t))return n},zg=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},Hg=e=>{const t=_d(e),n=Cu(t,e),l=Cu(t.reverse(),e);return[n,l]},Kg=e=>e instanceof HTMLInputElement&&"select"in e,al=(e,t)=>{if(e&&e.focus){const n=document.activeElement;let l=!1;_n(e)&&!Xo(e)&&!e.getAttribute("tabindex")&&(e.setAttribute("tabindex","-1"),l=!0),e.focus({preventScroll:!0}),ni.value=window.performance.now(),e!==n&&Kg(e)&&t&&e.select(),_n(e)&&l&&e.removeAttribute("tabindex")}};function wu(e,t){const n=[...e],l=e.indexOf(t);return l!==-1&&n.splice(l,1),n}const Wg=()=>{let e=[];return{push:l=>{const a=e[0];a&&l!==a&&a.pause(),e=wu(e,l),e.unshift(l)},remove:l=>{var a,s;e=wu(e,l),(s=(a=e[0])==null?void 0:a.resume)==null||s.call(a)}}},jg=(e,t=!1)=>{const n=document.activeElement;for(const l of e)if(al(l,t),document.activeElement!==n)return},ku=Wg(),Ug=()=>ys.value>ni.value,Ea=()=>{ti.value="pointer",ys.value=window.performance.now()},Su=()=>{ti.value="keyboard",ys.value=window.performance.now()},Yg=()=>(Xe(()=>{Sa===0&&(document.addEventListener("mousedown",Ea),document.addEventListener("touchstart",Ea),document.addEventListener("keydown",Su)),Sa++}),Nt(()=>{Sa--,Sa<=0&&(document.removeEventListener("mousedown",Ea),document.removeEventListener("touchstart",Ea),document.removeEventListener("keydown",Su))}),{focusReason:ti,lastUserFocusTimestamp:ys,lastAutomatedFocusTimestamp:ni}),_a=e=>new CustomEvent(Fg,{...xg,detail:e}),Ce={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"};let io=[];const Eu=e=>{e.code===Ce.esc&&io.forEach(t=>t(e))},qg=e=>{Xe(()=>{io.length===0&&document.addEventListener("keydown",Eu),bt&&io.push(e)}),Nt(()=>{io=io.filter(t=>t!==e),io.length===0&&bt&&document.removeEventListener("keydown",Eu)})},Gg=x({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[bu,yu,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:t}){const n=I();let l,a;const{focusReason:s}=Yg();qg(h=>{e.trapped&&!r.paused&&t("release-requested",h)});const r={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},i=h=>{if(!e.loop&&!e.trapped||r.paused)return;const{code:p,altKey:g,ctrlKey:b,metaKey:E,currentTarget:C,shiftKey:w}=h,{loop:k}=e,S=p===Ce.tab&&!g&&!b&&!E,$=document.activeElement;if(S&&$){const M=C,[R,N]=Hg(M);if(R&&N){if(!w&&$===N){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||(h.preventDefault(),k&&al(R,!0))}else if(w&&[R,M].includes($)){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||(h.preventDefault(),k&&al(N,!0))}}else if($===M){const P=_a({focusReason:s.value});t("focusout-prevented",P),P.defaultPrevented||h.preventDefault()}}};rt(ei,{focusTrapRef:n,onKeydown:i}),ie(()=>e.focusTrapEl,h=>{h&&(n.value=h)},{immediate:!0}),ie([n],([h],[p])=>{h&&(h.addEventListener("keydown",i),h.addEventListener("focusin",d),h.addEventListener("focusout",f)),p&&(p.removeEventListener("keydown",i),p.removeEventListener("focusin",d),p.removeEventListener("focusout",f))});const u=h=>{t(bu,h)},c=h=>t(yu,h),d=h=>{const p=o(n);if(!p)return;const g=h.target,b=h.relatedTarget,E=g&&p.contains(g);e.trapped||b&&p.contains(b)||(l=b),E&&t("focusin",h),!r.paused&&e.trapped&&(E?a=g:al(a,!0))},f=h=>{const p=o(n);if(!(r.paused||!p))if(e.trapped){const g=h.relatedTarget;!qt(g)&&!p.contains(g)&&setTimeout(()=>{if(!r.paused&&e.trapped){const b=_a({focusReason:s.value});t("focusout-prevented",b),b.defaultPrevented||al(a,!0)}},0)}else{const g=h.target;g&&p.contains(g)||t("focusout",h)}};async function m(){await Ee();const h=o(n);if(h){ku.push(r);const p=h.contains(document.activeElement)?l:document.activeElement;if(l=p,!h.contains(p)){const b=new Event(As,gu);h.addEventListener(As,u),h.dispatchEvent(b),b.defaultPrevented||Ee(()=>{let E=e.focusStartEl;Ve(E)||(al(E),document.activeElement!==E&&(E="first")),E==="first"&&jg(_d(h),!0),(document.activeElement===p||E==="container")&&al(h)})}}}function v(){const h=o(n);if(h){h.removeEventListener(As,u);const p=new CustomEvent(Fs,{...gu,detail:{focusReason:s.value}});h.addEventListener(Fs,c),h.dispatchEvent(p),!p.defaultPrevented&&(s.value=="keyboard"||!Ug()||h.contains(document.activeElement))&&al(l??document.body),h.removeEventListener(Fs,c),ku.remove(r)}}return Xe(()=>{e.trapped&&m(),ie(()=>e.trapped,h=>{h?m():v()})}),Nt(()=>{e.trapped&&v(),n.value&&(n.value.removeEventListener("keydown",i),n.value.removeEventListener("focusin",d),n.value.removeEventListener("focusout",f),n.value=void 0)}),{onKeydown:i}}});function Xg(e,t,n,l,a,s){return G(e.$slots,"default",{handleKeydown:e.onKeydown})}var Ro=fe(Gg,[["render",Xg],["__file","focus-trap.vue"]]);const Td=de({arrowOffset:{type:Number,default:5}}),Zg=["fixed","absolute"],Jg=de({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:Y(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:Xl,default:"bottom"},popperOptions:{type:Y(Object),default:()=>({})},strategy:{type:String,values:Zg,default:"absolute"}}),$d=de({...Jg,...Td,id:String,style:{type:Y([String,Array,Object])},className:{type:Y([String,Array,Object])},effect:{type:Y(String),default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:Boolean,trapping:Boolean,popperClass:{type:Y([String,Array,Object])},popperStyle:{type:Y([String,Array,Object])},referenceEl:{type:Y(Object)},triggerTargetEl:{type:Y(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...cn(["ariaLabel"])}),Qg={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},eb=(e,t)=>{const n=I(!1),l=I();return{focusStartRef:l,trapped:n,onFocusAfterReleased:c=>{var d;((d=c.detail)==null?void 0:d.focusReason)!=="pointer"&&(l.value="first",t("blur"))},onFocusAfterTrapped:()=>{t("focus")},onFocusInTrap:c=>{e.visible&&!n.value&&(c.target&&(l.value=c.target),n.value=!0)},onFocusoutPrevented:c=>{e.trapping||(c.detail.focusReason==="pointer"&&c.preventDefault(),n.value=!1)},onReleaseRequested:()=>{n.value=!1,t("close")}}},tb=(e,t=[])=>{const{placement:n,strategy:l,popperOptions:a}=e,s={placement:n,strategy:l,...a,modifiers:[...lb(e),...t]};return ob(s,a==null?void 0:a.modifiers),s},nb=e=>{if(bt)return ua(e)};function lb(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:l}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:l}},{name:"computeStyles",options:{gpuAcceleration:n}}]}function ob(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const ab=(e,t,n={})=>{const l={name:"updateState",enabled:!0,phase:"write",fn:({state:u})=>{const c=sb(u);Object.assign(r.value,c)},requires:["computeStyles"]},a=y(()=>{const{onFirstUpdate:u,placement:c,strategy:d,modifiers:f}=o(n);return{onFirstUpdate:u,placement:c||"bottom",strategy:d||"absolute",modifiers:[...f||[],l,{name:"applyStyles",enabled:!1}]}}),s=Lt(),r=I({styles:{popper:{position:o(a).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),i=()=>{s.value&&(s.value.destroy(),s.value=void 0)};return ie(a,u=>{const c=o(s);c&&c.setOptions(u)},{deep:!0}),ie([e,t],([u,c])=>{i(),!(!u||!c)&&(s.value=Up(u,c,o(a)))}),Nt(()=>{i()}),{state:y(()=>{var u;return{...((u=o(s))==null?void 0:u.state)||{}}}),styles:y(()=>o(r).styles),attributes:y(()=>o(r).attributes),update:()=>{var u;return(u=o(s))==null?void 0:u.update()},forceUpdate:()=>{var u;return(u=o(s))==null?void 0:u.forceUpdate()},instanceRef:y(()=>o(s))}};function sb(e){const t=Object.keys(e.elements),n=qo(t.map(a=>[a,e.styles[a]||{}])),l=qo(t.map(a=>[a,e.attributes[a]]));return{styles:n,attributes:l}}const rb=0,ib=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:l,role:a}=we(Qr,void 0),s=I(),r=y(()=>e.arrowOffset),i=y(()=>({name:"eventListeners",enabled:!!e.visible})),u=y(()=>{var b;const E=o(s),C=(b=o(r))!=null?b:rb;return{name:"arrow",enabled:!Yp(E),options:{element:E,padding:C}}}),c=y(()=>({onFirstUpdate:()=>{h()},...tb(e,[o(u),o(i)])})),d=y(()=>nb(e.referenceEl)||o(l)),{attributes:f,state:m,styles:v,update:h,forceUpdate:p,instanceRef:g}=ab(d,n,c);return ie(g,b=>t.value=b,{flush:"sync"}),Xe(()=>{ie(()=>{var b;return(b=o(d))==null?void 0:b.getBoundingClientRect()},()=>{h()})}),{attributes:f,arrowRef:s,contentRef:n,instanceRef:g,state:m,styles:v,role:a,forceUpdate:p,update:h}},ub=(e,{attributes:t,styles:n,role:l})=>{const{nextZIndex:a}=Mo(),s=ue("popper"),r=y(()=>o(t).popper),i=I(Te(e.zIndex)?e.zIndex:a()),u=y(()=>[s.b(),s.is("pure",e.pure),s.is(e.effect),e.popperClass]),c=y(()=>[{zIndex:o(i)},o(n).popper,e.popperStyle||{}]),d=y(()=>l.value==="dialog"?"false":void 0),f=y(()=>o(n).arrow||{});return{ariaModal:d,arrowStyle:f,contentAttrs:r,contentClass:u,contentStyle:c,contentZIndex:i,updateZIndex:()=>{i.value=Te(e.zIndex)?e.zIndex:a()}}},cb=x({name:"ElPopperContent"}),db=x({...cb,props:$d,emits:Qg,setup(e,{expose:t,emit:n}){const l=e,{focusStartRef:a,trapped:s,onFocusAfterReleased:r,onFocusAfterTrapped:i,onFocusInTrap:u,onFocusoutPrevented:c,onReleaseRequested:d}=eb(l,n),{attributes:f,arrowRef:m,contentRef:v,styles:h,instanceRef:p,role:g,update:b}=ib(l),{ariaModal:E,arrowStyle:C,contentAttrs:w,contentClass:k,contentStyle:S,updateZIndex:$}=ub(l,{styles:h,attributes:f,role:g}),M=we(el,void 0);rt(bd,{arrowStyle:C,arrowRef:m}),M&&rt(el,{...M,addInputId:Bt,removeInputId:Bt});let R;const N=(P=!0)=>{b(),P&&$()},O=()=>{N(!1),l.visible&&l.focusOnShow?s.value=!0:l.visible===!1&&(s.value=!1)};return Xe(()=>{ie(()=>l.triggerTargetEl,(P,W)=>{R==null||R(),R=void 0;const K=o(P||v.value),D=o(W||v.value);_n(K)&&(R=ie([g,()=>l.ariaLabel,E,()=>l.id],L=>{["role","aria-label","aria-modal","id"].forEach((z,B)=>{qt(L[B])?K.removeAttribute(z):K.setAttribute(z,L[B])})},{immediate:!0})),D!==K&&_n(D)&&["role","aria-label","aria-modal","id"].forEach(L=>{D.removeAttribute(L)})},{immediate:!0}),ie(()=>l.visible,O,{immediate:!0})}),Nt(()=>{R==null||R(),R=void 0}),t({popperContentRef:v,popperInstanceRef:p,updatePopper:N,contentStyle:S}),(P,W)=>(_(),V("div",et({ref_key:"contentRef",ref:v},o(w),{style:o(S),class:o(k),tabindex:"-1",onMouseenter:K=>P.$emit("mouseenter",K),onMouseleave:K=>P.$emit("mouseleave",K)}),[H(o(Ro),{trapped:o(s),"trap-on-focus-in":!0,"focus-trap-el":o(v),"focus-start-el":o(a),onFocusAfterTrapped:o(i),onFocusAfterReleased:o(r),onFocusin:o(u),onFocusoutPrevented:o(c),onReleaseRequested:o(d)},{default:U(()=>[G(P.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16,["onMouseenter","onMouseleave"]))}});var fb=fe(db,[["__file","content.vue"]]);const Nd=He(Ig),Cs=Symbol("elTooltip"),ws=de({to:{type:Y([String,Object]),required:!0},disabled:Boolean}),Wt=de({...ad,...$d,appendTo:{type:ws.to.type},content:{type:String,default:""},rawContent:Boolean,persistent:Boolean,visible:{type:Y(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...cn(["ariaLabel"])}),mo=de({...wd,disabled:Boolean,trigger:{type:Y([String,Array]),default:"hover"},triggerKeys:{type:Y(Array),default:()=>[Ce.enter,Ce.numpadEnter,Ce.space]}}),vb=Un({type:Y(Boolean),default:null}),pb=Un({type:Y(Function)}),hb=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,l=[t],a={[e]:vb,[n]:pb};return{useModelToggle:({indicator:r,toggleReason:i,shouldHideWhenRouteChanges:u,shouldProceed:c,onShow:d,onHide:f})=>{const m=lt(),{emit:v}=m,h=m.props,p=y(()=>Qe(h[n])),g=y(()=>h[e]===null),b=$=>{r.value!==!0&&(r.value=!0,i&&(i.value=$),Qe(d)&&d($))},E=$=>{r.value!==!1&&(r.value=!1,i&&(i.value=$),Qe(f)&&f($))},C=$=>{if(h.disabled===!0||Qe(c)&&!c())return;const M=p.value&&bt;M&&v(t,!0),(g.value||!M)&&b($)},w=$=>{if(h.disabled===!0||!bt)return;const M=p.value&&bt;M&&v(t,!1),(g.value||!M)&&E($)},k=$=>{_t($)&&(h.disabled&&$?p.value&&v(t,!1):r.value!==$&&($?b():E()))},S=()=>{r.value?w():C()};return ie(()=>h[e],k),u&&m.appContext.config.globalProperties.$route!==void 0&&ie(()=>({...m.proxy.$route}),()=>{u.value&&r.value&&w()}),Xe(()=>{k(h[e])}),{hide:w,show:C,toggle:S,hasUpdateHandler:p}},useModelToggleProps:a,useModelToggleEmits:l}},{useModelToggleProps:mb,useModelToggleEmits:gb,useModelToggle:bb}=hb("visible"),yb=de({...Cd,...mb,...Wt,...mo,...Td,showArrow:{type:Boolean,default:!0}}),Cb=[...gb,"before-show","before-hide","show","hide","open","close"],wb=(e,t)=>ke(e)?e.includes(t):e===t,lo=(e,t,n)=>l=>{wb(o(e),t)&&n(l)},Ht=(e,t,{checkForDefaultPrevented:n=!0}={})=>a=>{const s=e==null?void 0:e(a);if(n===!1||!s)return t==null?void 0:t(a)},_u=e=>t=>t.pointerType==="mouse"?e(t):void 0,kb=x({name:"ElTooltipTrigger"}),Sb=x({...kb,props:mo,setup(e,{expose:t}){const n=e,l=ue("tooltip"),{controlled:a,id:s,open:r,onOpen:i,onClose:u,onToggle:c}=we(Cs,void 0),d=I(null),f=()=>{if(o(a)||n.disabled)return!0},m=wt(n,"trigger"),v=Ht(f,lo(m,"hover",i)),h=Ht(f,lo(m,"hover",u)),p=Ht(f,lo(m,"click",w=>{w.button===0&&c(w)})),g=Ht(f,lo(m,"focus",i)),b=Ht(f,lo(m,"focus",u)),E=Ht(f,lo(m,"contextmenu",w=>{w.preventDefault(),c(w)})),C=Ht(f,w=>{const{code:k}=w;n.triggerKeys.includes(k)&&(w.preventDefault(),c(w))});return t({triggerRef:d}),(w,k)=>(_(),oe(o(Ag),{id:o(s),"virtual-ref":w.virtualRef,open:o(r),"virtual-triggering":w.virtualTriggering,class:T(o(l).e("trigger")),onBlur:o(b),onClick:o(p),onContextmenu:o(E),onFocus:o(g),onMouseenter:o(v),onMouseleave:o(h),onKeydown:o(C)},{default:U(()=>[G(w.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var Eb=fe(Sb,[["__file","trigger.vue"]]);const _b=x({__name:"teleport",props:ws,setup(e){return(t,n)=>t.disabled?G(t.$slots,"default",{key:0}):(_(),oe(Ip,{key:1,to:t.to},[G(t.$slots,"default")],8,["to"]))}});var Tb=fe(_b,[["__file","teleport.vue"]]);const Po=He(Tb),Id=()=>{const e=Kr(),t=Zr(),n=y(()=>`${e.value}-popper-container-${t.prefix}`),l=y(()=>`#${n.value}`);return{id:n,selector:l}},$b=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},Nb=()=>{const{id:e,selector:t}=Id();return xr(()=>{bt&&(document.body.querySelector(t.value)||$b(e.value))}),{id:e,selector:t}},Ib=x({name:"ElTooltipContent",inheritAttrs:!1}),Mb=x({...Ib,props:Wt,setup(e,{expose:t}){const n=e,{selector:l}=Id(),a=ue("tooltip"),s=I(),r=Ha(()=>{var B;return(B=s.value)==null?void 0:B.popperContentRef});let i;const{controlled:u,id:c,open:d,trigger:f,onClose:m,onOpen:v,onShow:h,onHide:p,onBeforeShow:g,onBeforeHide:b}=we(Cs,void 0),E=y(()=>n.transition||`${a.namespace.value}-fade-in-linear`),C=y(()=>n.persistent);Nt(()=>{i==null||i()});const w=y(()=>o(C)?!0:o(d)),k=y(()=>n.disabled?!1:o(d)),S=y(()=>n.appendTo||l.value),$=y(()=>{var B;return(B=n.style)!=null?B:{}}),M=I(!0),R=()=>{p(),z()&&al(document.body),M.value=!0},N=()=>{if(o(u))return!0},O=Ht(N,()=>{n.enterable&&o(f)==="hover"&&v()}),P=Ht(N,()=>{o(f)==="hover"&&m()}),W=()=>{var B,A;(A=(B=s.value)==null?void 0:B.updatePopper)==null||A.call(B),g==null||g()},K=()=>{b==null||b()},D=()=>{h()},L=()=>{n.virtualTriggering||m()},z=B=>{var A;const ne=(A=s.value)==null?void 0:A.popperContentRef,j=(B==null?void 0:B.relatedTarget)||document.activeElement;return ne==null?void 0:ne.contains(j)};return ie(()=>o(d),B=>{B?(M.value=!1,i=zr(r,()=>{if(o(u))return;o(f)!=="hover"&&m()})):i==null||i()},{flush:"post"}),ie(()=>n.content,()=>{var B,A;(A=(B=s.value)==null?void 0:B.updatePopper)==null||A.call(B)}),t({contentRef:s,isFocusInsideContent:z}),(B,A)=>(_(),oe(o(Po),{disabled:!B.teleported,to:o(S)},{default:U(()=>[H(an,{name:o(E),onAfterLeave:R,onBeforeEnter:W,onAfterEnter:D,onBeforeLeave:K},{default:U(()=>[o(w)?We((_(),oe(o(fb),et({key:0,id:o(c),ref_key:"contentRef",ref:s},B.$attrs,{"aria-label":B.ariaLabel,"aria-hidden":M.value,"boundaries-padding":B.boundariesPadding,"fallback-placements":B.fallbackPlacements,"gpu-acceleration":B.gpuAcceleration,offset:B.offset,placement:B.placement,"popper-options":B.popperOptions,"arrow-offset":B.arrowOffset,strategy:B.strategy,effect:B.effect,enterable:B.enterable,pure:B.pure,"popper-class":B.popperClass,"popper-style":[B.popperStyle,o($)],"reference-el":B.referenceEl,"trigger-target-el":B.triggerTargetEl,visible:o(k),"z-index":B.zIndex,onMouseenter:o(O),onMouseleave:o(P),onBlur:L,onClose:o(m)}),{default:U(()=>[G(B.$slots,"default")]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","arrow-offset","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"])),[[mt,o(k)]]):J("v-if",!0)]),_:3},8,["name"])]),_:3},8,["disabled","to"]))}});var Rb=fe(Mb,[["__file","content.vue"]]);const Pb=x({name:"ElTooltip"}),Ob=x({...Pb,props:yb,emits:Cb,setup(e,{expose:t,emit:n}){const l=e;Nb();const a=ue("tooltip"),s=sn(),r=I(),i=I(),u=()=>{var C;const w=o(r);w&&((C=w.popperInstanceRef)==null||C.update())},c=I(!1),d=I(),{show:f,hide:m,hasUpdateHandler:v}=bb({indicator:c,toggleReason:d}),{onOpen:h,onClose:p}=sd({showAfter:wt(l,"showAfter"),hideAfter:wt(l,"hideAfter"),autoClose:wt(l,"autoClose"),open:f,close:m}),g=y(()=>_t(l.visible)&&!v.value),b=y(()=>[a.b(),l.popperClass]);rt(Cs,{controlled:g,id:s,open:Ic(c),trigger:wt(l,"trigger"),onOpen:C=>{h(C)},onClose:C=>{p(C)},onToggle:C=>{o(c)?p(C):h(C)},onShow:()=>{n("show",d.value)},onHide:()=>{n("hide",d.value)},onBeforeShow:()=>{n("before-show",d.value)},onBeforeHide:()=>{n("before-hide",d.value)},updatePopper:u}),ie(()=>l.disabled,C=>{C&&c.value&&(c.value=!1)});const E=C=>{var w;return(w=i.value)==null?void 0:w.isFocusInsideContent(C)};return Mp(()=>c.value&&m()),t({popperRef:r,contentRef:i,isFocusInsideContent:E,updatePopper:u,onOpen:h,onClose:p,hide:m}),(C,w)=>(_(),oe(o(Nd),{ref_key:"popperRef",ref:r,role:C.role},{default:U(()=>[H(Eb,{disabled:C.disabled,trigger:C.trigger,"trigger-keys":C.triggerKeys,"virtual-ref":C.virtualRef,"virtual-triggering":C.virtualTriggering},{default:U(()=>[C.$slots.default?G(C.$slots,"default",{key:0}):J("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering"]),H(Rb,{ref_key:"contentRef",ref:i,"aria-label":C.ariaLabel,"boundaries-padding":C.boundariesPadding,content:C.content,disabled:C.disabled,effect:C.effect,enterable:C.enterable,"fallback-placements":C.fallbackPlacements,"hide-after":C.hideAfter,"gpu-acceleration":C.gpuAcceleration,offset:C.offset,persistent:C.persistent,"popper-class":o(b),"popper-style":C.popperStyle,placement:C.placement,"popper-options":C.popperOptions,"arrow-offset":C.arrowOffset,pure:C.pure,"raw-content":C.rawContent,"reference-el":C.referenceEl,"trigger-target-el":C.triggerTargetEl,"show-after":C.showAfter,strategy:C.strategy,teleported:C.teleported,transition:C.transition,"virtual-triggering":C.virtualTriggering,"z-index":C.zIndex,"append-to":C.appendTo},{default:U(()=>[G(C.$slots,"content",{},()=>[C.rawContent?(_(),V("span",{key:0,innerHTML:C.content},null,8,["innerHTML"])):(_(),V("span",{key:1},pe(C.content),1))]),C.showArrow?(_(),oe(o(Pg),{key:0})):J("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","arrow-offset","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"]))}});var Lb=fe(Ob,[["__file","tooltip.vue"]]);const un=He(Lb),Bb=de({...pa,valueKey:{type:String,default:"value"},modelValue:{type:[String,Number],default:""},debounce:{type:Number,default:300},placement:{type:Y(String),values:["top","top-start","top-end","bottom","bottom-start","bottom-end"],default:"bottom-start"},fetchSuggestions:{type:Y([Function,Array]),default:Bt},popperClass:{type:String,default:""},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:Boolean,hideLoading:Boolean,teleported:Wt.teleported,appendTo:Wt.appendTo,highlightFirstItem:Boolean,fitInputWidth:Boolean}),Vb={[De]:e=>Ve(e),[Zt]:e=>Ve(e),[nt]:e=>Ve(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>yt(e)},Md="ElAutocomplete",Db=x({name:Md,inheritAttrs:!1}),Ab=x({...Db,props:Bb,emits:Vb,setup(e,{expose:t,emit:n}){const l=e,a=y(()=>An(l,Object.keys(pa))),s=pl(),r=fn(),i=ue("autocomplete"),u=I(),c=I(),d=I(),f=I();let m=!1,v=!1;const h=I([]),p=I(-1),g=I(""),b=I(!1),E=I(!1),C=I(!1),w=sn(),k=y(()=>s.style),S=y(()=>(h.value.length>0||C.value)&&b.value),$=y(()=>!l.hideLoading&&C.value),M=y(()=>u.value?Array.from(u.value.$el.querySelectorAll("input")):[]),R=()=>{S.value&&(g.value=`${u.value.$el.offsetWidth}px`)},N=()=>{p.value=-1},O=async le=>{if(E.value)return;const se=ge=>{C.value=!1,!E.value&&(ke(ge)?(h.value=ge,p.value=l.highlightFirstItem?0:-1):jt(Md,"autocomplete suggestions must be an array"))};if(C.value=!0,ke(l.fetchSuggestions))se(l.fetchSuggestions);else{const ge=await l.fetchSuggestions(le,se);ke(ge)&&se(ge)}},P=Ln(O,l.debounce),W=le=>{const se=!!le;if(n(Zt,le),n(De,le),E.value=!1,b.value||(b.value=se),!l.triggerOnFocus&&!le){E.value=!0,h.value=[];return}P(le)},K=le=>{var se;r.value||(((se=le.target)==null?void 0:se.tagName)!=="INPUT"||M.value.includes(document.activeElement))&&(b.value=!0)},D=le=>{n(nt,le)},L=le=>{var se;if(v)v=!1;else{b.value=!0,n("focus",le);const ge=(se=l.modelValue)!=null?se:"";l.triggerOnFocus&&!m&&P(String(ge))}},z=le=>{setTimeout(()=>{var se;if((se=d.value)!=null&&se.isFocusInsideContent()){v=!0;return}b.value&&j(),n("blur",le)})},B=()=>{b.value=!1,n(De,""),n("clear")},A=async()=>{S.value&&p.value>=0&&p.value{S.value&&(le.preventDefault(),le.stopPropagation(),j())},j=()=>{b.value=!1},Q=()=>{var le;(le=u.value)==null||le.focus()},Z=()=>{var le;(le=u.value)==null||le.blur()},ee=async le=>{n(Zt,le[l.valueKey]),n(De,le[l.valueKey]),n("select",le),h.value=[],p.value=-1},ae=le=>{if(!S.value||C.value)return;if(le<0){p.value=-1;return}le>=h.value.length&&(le=h.value.length-1);const se=c.value.querySelector(`.${i.be("suggestion","wrap")}`),Be=se.querySelectorAll(`.${i.be("suggestion","list")} li`)[le],te=se.scrollTop,{offsetTop:ce,scrollHeight:Ie}=Be;ce+Ie>te+se.clientHeight&&(se.scrollTop+=Ie),ce{var le;(le=d.value)!=null&&le.isFocusInsideContent()||S.value&&j()});return Nt(()=>{re==null||re()}),Xe(()=>{u.value.ref.setAttribute("role","textbox"),u.value.ref.setAttribute("aria-autocomplete","list"),u.value.ref.setAttribute("aria-controls","id"),u.value.ref.setAttribute("aria-activedescendant",`${w.value}-item-${p.value}`),m=u.value.ref.hasAttribute("readonly")}),t({highlightedIndex:p,activated:b,loading:C,inputRef:u,popperRef:d,suggestions:h,handleSelect:ee,handleKeyEnter:A,focus:Q,blur:Z,close:j,highlight:ae,getData:O}),(le,se)=>(_(),oe(o(un),{ref_key:"popperRef",ref:d,visible:o(S),placement:le.placement,"fallback-placements":["bottom-start","top-start"],"popper-class":[o(i).e("popper"),le.popperClass],teleported:le.teleported,"append-to":le.appendTo,"gpu-acceleration":!1,pure:"","manual-mode":"",effect:"light",trigger:"click",transition:`${o(i).namespace.value}-zoom-in-top`,persistent:"",role:"listbox",onBeforeShow:R,onHide:N},{content:U(()=>[F("div",{ref_key:"regionRef",ref:c,class:T([o(i).b("suggestion"),o(i).is("loading",o($))]),style:_e({[le.fitInputWidth?"width":"minWidth"]:g.value,outline:"none"}),role:"region"},[H(o(jn),{id:o(w),tag:"ul","wrap-class":o(i).be("suggestion","wrap"),"view-class":o(i).be("suggestion","list"),role:"listbox"},{default:U(()=>[o($)?(_(),V("li",{key:0},[G(le.$slots,"loading",{},()=>[H(o(Se),{class:T(o(i).is("loading"))},{default:U(()=>[H(o(Qn))]),_:1},8,["class"])])])):(_(!0),V(Oe,{key:1},ut(h.value,(ge,Be)=>(_(),V("li",{id:`${o(w)}-item-${Be}`,key:Be,class:T({highlighted:p.value===Be}),role:"option","aria-selected":p.value===Be,onClick:te=>ee(ge)},[G(le.$slots,"default",{item:ge},()=>[st(pe(ge[le.valueKey]),1)])],10,["id","aria-selected","onClick"]))),128))]),_:3},8,["id","wrap-class","view-class"])],6)]),default:U(()=>[F("div",{ref_key:"listboxRef",ref:f,class:T([o(i).b(),le.$attrs.class]),style:_e(o(k)),role:"combobox","aria-haspopup":"listbox","aria-expanded":o(S),"aria-owns":o(w)},[H(o(hn),et({ref_key:"inputRef",ref:u},et(o(a),le.$attrs),{"model-value":le.modelValue,disabled:o(r),onInput:W,onChange:D,onFocus:L,onBlur:z,onClear:B,onKeydown:[Tt(Le(ge=>ae(p.value-1),["prevent"]),["up"]),Tt(Le(ge=>ae(p.value+1),["prevent"]),["down"]),Tt(A,["enter"]),Tt(j,["tab"]),Tt(ne,["esc"])],onMousedown:K}),Mn({_:2},[le.$slots.prepend?{name:"prepend",fn:U(()=>[G(le.$slots,"prepend")])}:void 0,le.$slots.append?{name:"append",fn:U(()=>[G(le.$slots,"append")])}:void 0,le.$slots.prefix?{name:"prefix",fn:U(()=>[G(le.$slots,"prefix")])}:void 0,le.$slots.suffix?{name:"suffix",fn:U(()=>[G(le.$slots,"suffix")])}:void 0]),1040,["model-value","disabled","onKeydown"])],14,["aria-expanded","aria-owns"])]),_:3},8,["visible","placement","popper-class","teleported","append-to","transition"]))}});var Fb=fe(Ab,[["__file","autocomplete.vue"]]);const xb=He(Fb),zb=de({size:{type:[Number,String],values:tl,default:"",validator:e=>Te(e)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:$t},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:Y(String),default:"cover"}}),Hb={error:e=>e instanceof Event},Kb=x({name:"ElAvatar"}),Wb=x({...Kb,props:zb,emits:Hb,setup(e,{emit:t}){const n=e,l=ue("avatar"),a=I(!1),s=y(()=>{const{size:c,icon:d,shape:f}=n,m=[l.b()];return Ve(c)&&m.push(l.m(c)),d&&m.push(l.m("icon")),f&&m.push(l.m(f)),m}),r=y(()=>{const{size:c}=n;return Te(c)?l.cssVarBlock({size:zt(c)||""}):void 0}),i=y(()=>({objectFit:n.fit}));ie(()=>n.src,()=>a.value=!1);function u(c){a.value=!0,t("error",c)}return(c,d)=>(_(),V("span",{class:T(o(s)),style:_e(o(r))},[(c.src||c.srcSet)&&!a.value?(_(),V("img",{key:0,src:c.src,alt:c.alt,srcset:c.srcSet,style:_e(o(i)),onError:u},null,44,["src","alt","srcset"])):c.icon?(_(),oe(o(Se),{key:1},{default:U(()=>[(_(),oe(Ge(c.icon)))]),_:1})):G(c.$slots,"default",{key:2})],6))}});var jb=fe(Wb,[["__file","avatar.vue"]]);const Ub=He(jb),Yb={visibilityHeight:{type:Number,default:200},target:{type:String,default:""},right:{type:Number,default:40},bottom:{type:Number,default:40}},qb={click:e=>e instanceof MouseEvent},Gb=(e,t,n)=>{const l=Lt(),a=Lt(),s=I(!1),r=()=>{l.value&&(s.value=l.value.scrollTop>=e.visibilityHeight)},i=c=>{var d;(d=l.value)==null||d.scrollTo({top:0,behavior:"smooth"}),t("click",c)},u=Mc(r,300,!0);return xt(a,"scroll",u),Xe(()=>{var c;a.value=document,l.value=document.documentElement,e.target&&(l.value=(c=document.querySelector(e.target))!=null?c:void 0,l.value||jt(n,`target does not exist: ${e.target}`),a.value=l.value),r()}),{visible:s,handleClick:i}},Rd="ElBacktop",Xb=x({name:Rd}),Zb=x({...Xb,props:Yb,emits:qb,setup(e,{emit:t}){const n=e,l=ue("backtop"),{handleClick:a,visible:s}=Gb(n,t,Rd),r=y(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`}));return(i,u)=>(_(),oe(an,{name:`${o(l).namespace.value}-fade-in`},{default:U(()=>[o(s)?(_(),V("div",{key:0,style:_e(o(r)),class:T(o(l).b()),onClick:Le(o(a),["stop"])},[G(i.$slots,"default",{},()=>[H(o(Se),{class:T(o(l).e("icon"))},{default:U(()=>[H(o(Yh))]),_:1},8,["class"])])],14,["onClick"])):J("v-if",!0)]),_:3},8,["name"]))}});var Jb=fe(Zb,[["__file","backtop.vue"]]);const Qb=He(Jb),e0=de({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:Y([String,Object,Array])},offset:{type:Y(Array),default:[0,0]},badgeClass:{type:String}}),t0=x({name:"ElBadge"}),n0=x({...t0,props:e0,setup(e,{expose:t}){const n=e,l=ue("badge"),a=y(()=>n.isDot?"":Te(n.value)&&Te(n.max)?n.max{var r,i,u,c,d;return[{backgroundColor:n.color,marginRight:zt(-((i=(r=n.offset)==null?void 0:r[0])!=null?i:0)),marginTop:zt((c=(u=n.offset)==null?void 0:u[1])!=null?c:0)},(d=n.badgeStyle)!=null?d:{}]});return t({content:a}),(r,i)=>(_(),V("div",{class:T(o(l).b())},[G(r.$slots,"default"),H(an,{name:`${o(l).namespace.value}-zoom-in-center`,persisted:""},{default:U(()=>[We(F("sup",{class:T([o(l).e("content"),o(l).em("content",r.type),o(l).is("fixed",!!r.$slots.default),o(l).is("dot",r.isDot),o(l).is("hide-zero",!r.showZero&&n.value===0),r.badgeClass]),style:_e(o(s))},[G(r.$slots,"content",{value:o(a)},()=>[st(pe(o(a)),1)])],6),[[mt,!r.hidden&&(o(a)||r.isDot||r.$slots.content)]])]),_:3},8,["name"])],2))}});var l0=fe(n0,[["__file","badge.vue"]]);const Pd=He(l0),Od=Symbol("breadcrumbKey"),o0=de({separator:{type:String,default:"/"},separatorIcon:{type:$t}}),a0=x({name:"ElBreadcrumb"}),s0=x({...a0,props:o0,setup(e){const t=e,{t:n}=pt(),l=ue("breadcrumb"),a=I();return rt(Od,t),Xe(()=>{const s=a.value.querySelectorAll(`.${l.e("item")}`);s.length&&s[s.length-1].setAttribute("aria-current","page")}),(s,r)=>(_(),V("div",{ref_key:"breadcrumb",ref:a,class:T(o(l).b()),"aria-label":o(n)("el.breadcrumb.label"),role:"navigation"},[G(s.$slots,"default")],10,["aria-label"]))}});var r0=fe(s0,[["__file","breadcrumb.vue"]]);const i0=de({to:{type:Y([String,Object]),default:""},replace:Boolean}),u0=x({name:"ElBreadcrumbItem"}),c0=x({...u0,props:i0,setup(e){const t=e,n=lt(),l=we(Od,void 0),a=ue("breadcrumb"),s=n.appContext.config.globalProperties.$router,r=I(),i=()=>{!t.to||!s||(t.replace?s.replace(t.to):s.push(t.to))};return(u,c)=>{var d,f;return _(),V("span",{class:T(o(a).e("item"))},[F("span",{ref_key:"link",ref:r,class:T([o(a).e("inner"),o(a).is("link",!!u.to)]),role:"link",onClick:i},[G(u.$slots,"default")],2),(d=o(l))!=null&&d.separatorIcon?(_(),oe(o(Se),{key:0,class:T(o(a).e("separator"))},{default:U(()=>[(_(),oe(Ge(o(l).separatorIcon)))]),_:1},8,["class"])):(_(),V("span",{key:1,class:T(o(a).e("separator")),role:"presentation"},pe((f=o(l))==null?void 0:f.separator),3))],2)}}});var Ld=fe(c0,[["__file","breadcrumb-item.vue"]]);const d0=He(r0,{BreadcrumbItem:Ld}),f0=At(Ld),Bd=Symbol("buttonGroupContextKey"),ul=({from:e,replacement:t,scope:n,version:l,ref:a,type:s="API"},r)=>{ie(()=>o(r),i=>{},{immediate:!0})},v0=(e,t)=>{ul({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},y(()=>e.type==="text"));const n=we(Bd,void 0),l=fa("button"),{form:a}=dn(),s=Gt(y(()=>n==null?void 0:n.size)),r=fn(),i=I(),u=Xt(),c=y(()=>{var g;return e.type||(n==null?void 0:n.type)||((g=l.value)==null?void 0:g.type)||""}),d=y(()=>{var g,b,E;return(E=(b=e.autoInsertSpace)!=null?b:(g=l.value)==null?void 0:g.autoInsertSpace)!=null?E:!1}),f=y(()=>{var g,b,E;return(E=(b=e.plain)!=null?b:(g=l.value)==null?void 0:g.plain)!=null?E:!1}),m=y(()=>{var g,b,E;return(E=(b=e.round)!=null?b:(g=l.value)==null?void 0:g.round)!=null?E:!1}),v=y(()=>e.tag==="button"?{ariaDisabled:r.value||e.loading,disabled:r.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),h=y(()=>{var g;const b=(g=u.default)==null?void 0:g.call(u);if(d.value&&(b==null?void 0:b.length)===1){const E=b[0];if((E==null?void 0:E.type)===Nc){const C=E.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(C.trim())}}return!1});return{_disabled:r,_size:s,_type:c,_ref:i,_props:v,_plain:f,_round:m,shouldAddSpace:h,handleClick:g=>{if(r.value||e.loading){g.stopPropagation();return}e.nativeType==="reset"&&(a==null||a.resetFields()),t("click",g)}}},or=["default","primary","success","warning","info","danger","text",""],p0=["button","submit","reset"],ar=de({size:Jt,disabled:Boolean,type:{type:String,values:or,default:""},icon:{type:$t},nativeType:{type:String,values:p0,default:"button"},loading:Boolean,loadingIcon:{type:$t,default:()=>Qn},plain:{type:Boolean,default:void 0},text:Boolean,link:Boolean,bg:Boolean,autofocus:Boolean,round:{type:Boolean,default:void 0},circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:Y([String,Object]),default:"button"}}),h0={click:e=>e instanceof MouseEvent};function kl(e,t=20){return e.mix("#141414",t).toString()}function m0(e){const t=fn(),n=ue("button");return y(()=>{let l={},a=e.color;if(a){const s=a.match(/var\((.*?)\)/);s&&(a=window.getComputedStyle(window.document.documentElement).getPropertyValue(s[1]));const r=new vo(a),i=e.dark?r.tint(20).toString():kl(r,20);if(e.plain)l=n.cssVarBlock({"bg-color":e.dark?kl(r,90):r.tint(90).toString(),"text-color":a,"border-color":e.dark?kl(r,50):r.tint(50).toString(),"hover-text-color":`var(${n.cssVarName("color-white")})`,"hover-bg-color":a,"hover-border-color":a,"active-bg-color":i,"active-text-color":`var(${n.cssVarName("color-white")})`,"active-border-color":i}),t.value&&(l[n.cssVarBlockName("disabled-bg-color")]=e.dark?kl(r,90):r.tint(90).toString(),l[n.cssVarBlockName("disabled-text-color")]=e.dark?kl(r,50):r.tint(50).toString(),l[n.cssVarBlockName("disabled-border-color")]=e.dark?kl(r,80):r.tint(80).toString());else{const u=e.dark?kl(r,30):r.tint(30).toString(),c=r.isDark()?`var(${n.cssVarName("color-white")})`:`var(${n.cssVarName("color-black")})`;if(l=n.cssVarBlock({"bg-color":a,"text-color":c,"border-color":a,"hover-bg-color":u,"hover-text-color":c,"hover-border-color":u,"active-bg-color":i,"active-border-color":i}),t.value){const d=e.dark?kl(r,50):r.tint(50).toString();l[n.cssVarBlockName("disabled-bg-color")]=d,l[n.cssVarBlockName("disabled-text-color")]=e.dark?"rgba(255, 255, 255, 0.5)":`var(${n.cssVarName("color-white")})`,l[n.cssVarBlockName("disabled-border-color")]=d}}}return l})}const g0=x({name:"ElButton"}),b0=x({...g0,props:ar,emits:h0,setup(e,{expose:t,emit:n}){const l=e,a=m0(l),s=ue("button"),{_ref:r,_size:i,_type:u,_disabled:c,_props:d,_plain:f,_round:m,shouldAddSpace:v,handleClick:h}=v0(l,n),p=y(()=>[s.b(),s.m(u.value),s.m(i.value),s.is("disabled",c.value),s.is("loading",l.loading),s.is("plain",f.value),s.is("round",m.value),s.is("circle",l.circle),s.is("text",l.text),s.is("link",l.link),s.is("has-bg",l.bg)]);return t({ref:r,size:i,type:u,disabled:c,shouldAddSpace:v}),(g,b)=>(_(),oe(Ge(g.tag),et({ref_key:"_ref",ref:r},o(d),{class:o(p),style:o(a),onClick:o(h)}),{default:U(()=>[g.loading?(_(),V(Oe,{key:0},[g.$slots.loading?G(g.$slots,"loading",{key:0}):(_(),oe(o(Se),{key:1,class:T(o(s).is("loading"))},{default:U(()=>[(_(),oe(Ge(g.loadingIcon)))]),_:1},8,["class"]))],64)):g.icon||g.$slots.icon?(_(),oe(o(Se),{key:1},{default:U(()=>[g.icon?(_(),oe(Ge(g.icon),{key:0})):G(g.$slots,"icon",{key:1})]),_:3})):J("v-if",!0),g.$slots.default?(_(),V("span",{key:2,class:T({[o(s).em("text","expand")]:o(v)})},[G(g.$slots,"default")],2)):J("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var y0=fe(b0,[["__file","button.vue"]]);const C0={size:ar.size,type:ar.type},w0=x({name:"ElButtonGroup"}),k0=x({...w0,props:C0,setup(e){const t=e;rt(Bd,kt({size:wt(t,"size"),type:wt(t,"type")}));const n=ue("button");return(l,a)=>(_(),V("div",{class:T(o(n).b("group"))},[G(l.$slots,"default")],2))}});var Vd=fe(k0,[["__file","button-group.vue"]]);const on=He(y0,{ButtonGroup:Vd}),Dd=At(Vd),xs=(e,t)=>[e>0?e-1:void 0,e,eArray.from(Array.from({length:e}).keys()),Ad=e=>e.replace(/\W?m{1,2}|\W?ZZ/g,"").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi,"").trim(),Fd=e=>e.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g,"").trim(),Tu=function(e,t){const n=wo(e),l=wo(t);return n&&l?e.getTime()===t.getTime():!n&&!l?e===t:!1},$u=function(e,t){const n=ke(e),l=ke(t);return n&&l?e.length!==t.length?!1:e.every((a,s)=>Tu(a,t[s])):!n&&!l?Tu(e,t):!1},Nu=function(e,t,n){const l=Pn(t)||t==="x"?Ke(e).locale(n):Ke(e,t).locale(n);return l.isValid()?l:void 0},Iu=function(e,t,n){return Pn(t)?e:t==="x"?+e:Ke(e).locale(n).format(t)},zs=(e,t)=>{var n;const l=[],a=t==null?void 0:t();for(let s=0;ske(e)?e.map(t=>t.toDate()):e.toDate(),S0=(e,t)=>{const n=e.subtract(1,"month").endOf("month").date();return Nl(t).map((l,a)=>n-(t-a-1))},E0=e=>{const t=e.daysInMonth();return Nl(t).map((n,l)=>l+1)},_0=e=>Nl(e.length/7).map(t=>{const n=t*7;return e.slice(n,n+7)}),T0=de({selectedDay:{type:Y(Object)},range:{type:Y(Array)},date:{type:Y(Object),required:!0},hideHeader:{type:Boolean}}),$0={pick:e=>yt(e)},N0=["year","years","month","months","date","dates","week","datetime","datetimerange","daterange","monthrange","yearrange"],Hs=["sun","mon","tue","wed","thu","fri","sat"],I0=(e,t)=>{Ke.extend(Vc);const n=Ke.localeData().firstDayOfWeek(),{t:l,lang:a}=pt(),s=Ke().locale(a.value),r=y(()=>!!e.range&&!!e.range.length),i=y(()=>{let m=[];if(r.value){const[v,h]=e.range,p=Nl(h.date()-v.date()+1).map(E=>({text:v.date()+E,type:"current"}));let g=p.length%7;g=g===0?0:7-g;const b=Nl(g).map((E,C)=>({text:C+1,type:"next"}));m=p.concat(b)}else{const v=e.date.startOf("month").day(),h=S0(e.date,(v-n+7)%7).map(E=>({text:E,type:"prev"})),p=E0(e.date).map(E=>({text:E,type:"current"}));m=[...h,...p];const g=7-(m.length%7||7),b=Nl(g).map((E,C)=>({text:C+1,type:"next"}));m=m.concat(b)}return _0(m)}),u=y(()=>{const m=n;return m===0?Hs.map(v=>l(`el.datepicker.weeks.${v}`)):Hs.slice(m).concat(Hs.slice(0,m)).map(v=>l(`el.datepicker.weeks.${v}`))}),c=(m,v)=>{switch(v){case"prev":return e.date.startOf("month").subtract(1,"month").date(m);case"next":return e.date.startOf("month").add(1,"month").date(m);case"current":return e.date.date(m)}};return{now:s,isInRange:r,rows:i,weekDays:u,getFormattedDate:c,handlePickDay:({text:m,type:v})=>{const h=c(m,v);t("pick",h)},getSlotData:({text:m,type:v})=>{const h=c(m,v);return{isSelected:h.isSame(e.selectedDay),type:`${v}-month`,day:h.format("YYYY-MM-DD"),date:h.toDate()}}}},M0=x({name:"DateTable"}),R0=x({...M0,props:T0,emits:$0,setup(e,{expose:t,emit:n}){const l=e,{isInRange:a,now:s,rows:r,weekDays:i,getFormattedDate:u,handlePickDay:c,getSlotData:d}=I0(l,n),f=ue("calendar-table"),m=ue("calendar-day"),v=({text:h,type:p})=>{const g=[p];if(p==="current"){const b=u(h,p);b.isSame(l.selectedDay,"day")&&g.push(m.is("selected")),b.isSame(s,"day")&&g.push(m.is("today"))}return g};return t({getFormattedDate:u}),(h,p)=>(_(),V("table",{class:T([o(f).b(),o(f).is("range",o(a))]),cellspacing:"0",cellpadding:"0"},[h.hideHeader?J("v-if",!0):(_(),V("thead",{key:0},[F("tr",null,[(_(!0),V(Oe,null,ut(o(i),g=>(_(),V("th",{key:g,scope:"col"},pe(g),1))),128))])])),F("tbody",null,[(_(!0),V(Oe,null,ut(o(r),(g,b)=>(_(),V("tr",{key:b,class:T({[o(f).e("row")]:!0,[o(f).em("row","hide-border")]:b===0&&h.hideHeader})},[(_(!0),V(Oe,null,ut(g,(E,C)=>(_(),V("td",{key:C,class:T(v(E)),onClick:w=>o(c)(E)},[F("div",{class:T(o(m).b())},[G(h.$slots,"date-cell",{data:o(d)(E)},()=>[F("span",null,pe(E.text),1)])],2)],10,["onClick"]))),128))],2))),128))])],2))}});var Mu=fe(R0,[["__file","date-table.vue"]]);const P0=(e,t)=>{const n=e.endOf("month"),l=t.startOf("month"),s=n.isSame(l,"week")?l.add(1,"week"):l;return[[e,n],[s.startOf("week"),t]]},O0=(e,t)=>{const n=e.endOf("month"),l=e.add(1,"month").startOf("month"),a=n.isSame(l,"week")?l.add(1,"week"):l,s=a.endOf("month"),r=t.startOf("month"),i=s.isSame(r,"week")?r.add(1,"week"):r;return[[e,n],[a.startOf("week"),s],[i.startOf("week"),t]]},L0=(e,t,n)=>{const{lang:l}=pt(),a=I(),s=Ke().locale(l.value),r=y({get(){return e.modelValue?u.value:a.value},set(g){if(!g)return;a.value=g;const b=g.toDate();t(Zt,b),t(De,b)}}),i=y(()=>{if(!e.range||!ke(e.range)||e.range.length!==2||e.range.some(C=>!wo(C)))return[];const g=e.range.map(C=>Ke(C).locale(l.value)),[b,E]=g;return b.isAfter(E)?[]:b.isSame(E,"month")?v(b,E):b.add(1,"month").month()!==E.month()?[]:v(b,E)}),u=y(()=>e.modelValue?Ke(e.modelValue).locale(l.value):r.value||(i.value.length?i.value[0][0]:s)),c=y(()=>u.value.subtract(1,"month").date(1)),d=y(()=>u.value.add(1,"month").date(1)),f=y(()=>u.value.subtract(1,"year").date(1)),m=y(()=>u.value.add(1,"year").date(1)),v=(g,b)=>{const E=g.startOf("week"),C=b.endOf("week"),w=E.get("month"),k=C.get("month");return w===k?[[E,C]]:(w+1)%12===k?P0(E,C):w+2===k||(w+1)%11===k?O0(E,C):[]},h=g=>{r.value=g};return{calculateValidatedDateRange:v,date:u,realSelectedDay:r,pickDay:h,selectDate:g=>{const E={"prev-month":c.value,"next-month":d.value,"prev-year":f.value,"next-year":m.value,today:s}[g];E.isSame(u.value,"day")||h(E)},validatedRange:i}},B0=e=>ke(e)&&e.length===2&&e.every(t=>wo(t)),V0=de({modelValue:{type:Date},range:{type:Y(Array),validator:B0}}),D0={[De]:e=>wo(e),[Zt]:e=>wo(e)},A0="ElCalendar",F0=x({name:A0}),x0=x({...F0,props:V0,emits:D0,setup(e,{expose:t,emit:n}){const l=e,a=ue("calendar"),{calculateValidatedDateRange:s,date:r,pickDay:i,realSelectedDay:u,selectDate:c,validatedRange:d}=L0(l,n),{t:f}=pt(),m=y(()=>{const v=`el.datepicker.month${r.value.format("M")}`;return`${r.value.year()} ${f("el.datepicker.year")} ${f(v)}`});return t({selectedDay:u,pickDay:i,selectDate:c,calculateValidatedDateRange:s}),(v,h)=>(_(),V("div",{class:T(o(a).b())},[F("div",{class:T(o(a).e("header"))},[G(v.$slots,"header",{date:o(m)},()=>[F("div",{class:T(o(a).e("title"))},pe(o(m)),3),o(d).length===0?(_(),V("div",{key:0,class:T(o(a).e("button-group"))},[H(o(Dd),null,{default:U(()=>[H(o(on),{size:"small",onClick:p=>o(c)("prev-month")},{default:U(()=>[st(pe(o(f)("el.datepicker.prevMonth")),1)]),_:1},8,["onClick"]),H(o(on),{size:"small",onClick:p=>o(c)("today")},{default:U(()=>[st(pe(o(f)("el.datepicker.today")),1)]),_:1},8,["onClick"]),H(o(on),{size:"small",onClick:p=>o(c)("next-month")},{default:U(()=>[st(pe(o(f)("el.datepicker.nextMonth")),1)]),_:1},8,["onClick"])]),_:1})],2)):J("v-if",!0)])],2),o(d).length===0?(_(),V("div",{key:0,class:T(o(a).e("body"))},[H(Mu,{date:o(r),"selected-day":o(u),onPick:o(i)},Mn({_:2},[v.$slots["date-cell"]?{name:"date-cell",fn:U(p=>[G(v.$slots,"date-cell",On(cl(p)))])}:void 0]),1032,["date","selected-day","onPick"])],2)):(_(),V("div",{key:1,class:T(o(a).e("body"))},[(_(!0),V(Oe,null,ut(o(d),(p,g)=>(_(),oe(Mu,{key:g,date:p[0],"selected-day":o(u),range:p,"hide-header":g!==0,onPick:o(i)},Mn({_:2},[v.$slots["date-cell"]?{name:"date-cell",fn:U(b=>[G(v.$slots,"date-cell",On(cl(b)))])}:void 0]),1032,["date","selected-day","range","hide-header","onPick"]))),128))],2))],2))}});var z0=fe(x0,[["__file","calendar.vue"]]);const H0=He(z0),K0=de({header:{type:String,default:""},footer:{type:String,default:""},bodyStyle:{type:Y([String,Object,Array]),default:""},headerClass:String,bodyClass:String,footerClass:String,shadow:{type:String,values:["always","hover","never"],default:"always"}}),W0=x({name:"ElCard"}),j0=x({...W0,props:K0,setup(e){const t=ue("card");return(n,l)=>(_(),V("div",{class:T([o(t).b(),o(t).is(`${n.shadow}-shadow`)])},[n.$slots.header||n.header?(_(),V("div",{key:0,class:T([o(t).e("header"),n.headerClass])},[G(n.$slots,"header",{},()=>[st(pe(n.header),1)])],2)):J("v-if",!0),F("div",{class:T([o(t).e("body"),n.bodyClass]),style:_e(n.bodyStyle)},[G(n.$slots,"default")],6),n.$slots.footer||n.footer?(_(),V("div",{key:1,class:T([o(t).e("footer"),n.footerClass])},[G(n.$slots,"footer",{},()=>[st(pe(n.footer),1)])],2)):J("v-if",!0)],2))}});var U0=fe(j0,[["__file","card.vue"]]);const Y0=He(U0),q0=de({initialIndex:{type:Number,default:0},height:{type:String,default:""},trigger:{type:String,values:["hover","click"],default:"hover"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:["","none","outside"],default:""},arrow:{type:String,values:["always","hover","never"],default:"hover"},type:{type:String,values:["","card"],default:""},cardScale:{type:Number,default:.83},loop:{type:Boolean,default:!0},direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},pauseOnHover:{type:Boolean,default:!0},motionBlur:Boolean}),G0={change:(e,t)=>[e,t].every(Te)},xd=Symbol("carouselContextKey"),sr="ElCarouselItem";var Vn=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Vn||{});function rr(e){return Dt(e)&&e.type===Oe}function X0(e){return Dt(e)&&e.type===jl}function Z0(e){return Dt(e)&&!rr(e)&&!X0(e)}const J0=e=>{if(!Dt(e))return{};const t=e.props||{},n=(Dt(e.type)?e.type.props:void 0)||{},l={};return Object.keys(n).forEach(a=>{rn(n[a],"default")&&(l[a]=n[a].default)}),Object.keys(t).forEach(a=>{l[Ar(a)]=t[a]}),l},Q0=e=>{if(!ke(e)||e.length>1)throw new Error("expect to receive a single Vue element child");return e[0]},Zn=e=>{const t=ke(e)?e:[e],n=[];return t.forEach(l=>{var a;ke(l)?n.push(...Zn(l)):Dt(l)&&((a=l.component)!=null&&a.subTree)?n.push(l,...Zn(l.component.subTree)):Dt(l)&&ke(l.children)?n.push(...Zn(l.children)):Dt(l)&&l.shapeFlag===2?n.push(...Zn(l.type())):n.push(l)}),n},ey=(e,t,n)=>Zn(e.subTree).filter(s=>{var r;return Dt(s)&&((r=s.type)==null?void 0:r.name)===t&&!!s.component}).map(s=>s.component.uid).map(s=>n[s]).filter(s=>!!s),ks=(e,t)=>{const n=Lt({}),l=Lt([]),a=new WeakMap,s=d=>{n.value[d.uid]=d,Oa(n),Xe(()=>{const f=d.getVnode().el,m=f.parentNode;if(!a.has(m)){a.set(m,[]);const v=m.insertBefore.bind(m);m.insertBefore=(h,p)=>(a.get(m).some(b=>h===b||p===b)&&Oa(n),v(h,p))}a.get(m).push(f)})},r=d=>{delete n.value[d.uid],Oa(n);const f=d.getVnode().el,m=f.parentNode,v=a.get(m),h=v.indexOf(f);v.splice(h,1)},i=()=>{l.value=ey(e,t,n.value)},u=d=>d.render(),c=x({setup(d,{slots:f}){return()=>(i(),f.default?Re(u,{render:f.default}):null)}});return{children:l,addChild:s,removeChild:r,ChildrenSorter:c}},Ru=300,ty=(e,t,n)=>{const{children:l,addChild:a,removeChild:s,ChildrenSorter:r}=ks(lt(),sr),i=Xt(),u=I(-1),c=I(null),d=I(!1),f=I(),m=I(0),v=I(!0),h=y(()=>e.arrow!=="never"&&!o(b)),p=y(()=>l.value.some(ee=>ee.props.label.toString().length>0)),g=y(()=>e.type==="card"),b=y(()=>e.direction==="vertical"),E=y(()=>e.height!=="auto"?{height:e.height}:{height:`${m.value}px`,overflow:"hidden"}),C=Hl(ee=>{R(ee)},Ru,{trailing:!0}),w=Hl(ee=>{z(ee)},Ru),k=ee=>v.value?u.value<=1?ee<=1:ee>1:!0;function S(){c.value&&(clearInterval(c.value),c.value=null)}function $(){e.interval<=0||!e.autoplay||c.value||(c.value=setInterval(()=>M(),e.interval))}const M=()=>{u.valuese.props.name===ee);le.length>0&&(ee=l.value.indexOf(le[0]))}if(ee=Number(ee),Number.isNaN(ee)||ee!==Math.floor(ee))return;const ae=l.value.length,re=u.value;ee<0?u.value=e.loop?ae-1:0:ee>=ae?u.value=e.loop?0:ae-1:u.value=ee,re===u.value&&N(re),ne()}function N(ee){l.value.forEach((ae,re)=>{ae.translateItem(re,u.value,ee)})}function O(ee,ae){var re,le,se,ge;const Be=o(l),te=Be.length;if(te===0||!ee.states.inStage)return!1;const ce=ae+1,Ie=ae-1,Ae=te-1,xe=Be[Ae].states.active,Ye=Be[0].states.active,$e=(le=(re=Be[ce])==null?void 0:re.states)==null?void 0:le.active,Me=(ge=(se=Be[Ie])==null?void 0:se.states)==null?void 0:ge.active;return ae===Ae&&Ye||$e?"left":ae===0&&xe||Me?"right":!1}function P(){d.value=!0,e.pauseOnHover&&S()}function W(){d.value=!1,$()}function K(ee){o(b)||l.value.forEach((ae,re)=>{ee===O(ae,re)&&(ae.states.hover=!0)})}function D(){o(b)||l.value.forEach(ee=>{ee.states.hover=!1})}function L(ee){u.value=ee}function z(ee){e.trigger==="hover"&&ee!==u.value&&(u.value=ee)}function B(){R(u.value-1)}function A(){R(u.value+1)}function ne(){S(),e.pauseOnHover||$()}function j(ee){e.height==="auto"&&(m.value=ee)}function Q(){var ee;const ae=(ee=i.default)==null?void 0:ee.call(i);if(!ae)return null;const le=Zn(ae).filter(se=>Dt(se)&&se.type.name===sr);return(le==null?void 0:le.length)===2&&e.loop&&!g.value?(v.value=!0,le):(v.value=!1,null)}ie(()=>u.value,(ee,ae)=>{N(ae),v.value&&(ee=ee%2,ae=ae%2),ae>-1&&t(nt,ee,ae)}),ie(()=>e.autoplay,ee=>{ee?$():S()}),ie(()=>e.loop,()=>{R(u.value)}),ie(()=>e.interval,()=>{ne()});const Z=Lt();return Xe(()=>{ie(()=>l.value,()=>{l.value.length>0&&R(e.initialIndex)},{immediate:!0}),Z.value=Ft(f.value,()=>{N()}),$()}),Nt(()=>{S(),f.value&&Z.value&&Z.value.stop()}),rt(xd,{root:f,isCardType:g,isVertical:b,items:l,loop:e.loop,cardScale:e.cardScale,addItem:a,removeItem:s,setActiveItem:R,setContainerHeight:j}),{root:f,activeIndex:u,arrowDisplay:h,hasLabel:p,hover:d,isCardType:g,items:l,isVertical:b,containerStyle:E,isItemsTwoLength:v,handleButtonEnter:K,handleButtonLeave:D,handleIndicatorClick:L,handleMouseEnter:P,handleMouseLeave:W,setActiveItem:R,prev:B,next:A,PlaceholderItem:Q,isTwoLengthShow:k,ItemsSorter:r,throttledArrowClick:C,throttledIndicatorHover:w}},ny="ElCarousel",ly=x({name:ny}),oy=x({...ly,props:q0,emits:G0,setup(e,{expose:t,emit:n}){const l=e,{root:a,activeIndex:s,arrowDisplay:r,hasLabel:i,hover:u,isCardType:c,items:d,isVertical:f,containerStyle:m,handleButtonEnter:v,handleButtonLeave:h,handleIndicatorClick:p,handleMouseEnter:g,handleMouseLeave:b,setActiveItem:E,prev:C,next:w,PlaceholderItem:k,isTwoLengthShow:S,ItemsSorter:$,throttledArrowClick:M,throttledIndicatorHover:R}=ty(l,n),N=ue("carousel"),{t:O}=pt(),P=y(()=>{const L=[N.b(),N.m(l.direction)];return o(c)&&L.push(N.m("card")),L}),W=y(()=>{const L=[N.e("indicators"),N.em("indicators",l.direction)];return o(i)&&L.push(N.em("indicators","labels")),l.indicatorPosition==="outside"&&L.push(N.em("indicators","outside")),o(f)&&L.push(N.em("indicators","right")),L});function K(L){if(!l.motionBlur)return;const z=o(f)?`${N.namespace.value}-transitioning-vertical`:`${N.namespace.value}-transitioning`;L.currentTarget.classList.add(z)}function D(L){if(!l.motionBlur)return;const z=o(f)?`${N.namespace.value}-transitioning-vertical`:`${N.namespace.value}-transitioning`;L.currentTarget.classList.remove(z)}return t({activeIndex:s,setActiveItem:E,prev:C,next:w}),(L,z)=>(_(),V("div",{ref_key:"root",ref:a,class:T(o(P)),onMouseenter:Le(o(g),["stop"]),onMouseleave:Le(o(b),["stop"])},[o(r)?(_(),oe(an,{key:0,name:"carousel-arrow-left",persisted:""},{default:U(()=>[We(F("button",{type:"button",class:T([o(N).e("arrow"),o(N).em("arrow","left")]),"aria-label":o(O)("el.carousel.leftArrow"),onMouseenter:B=>o(v)("left"),onMouseleave:o(h),onClick:Le(B=>o(M)(o(s)-1),["stop"])},[H(o(Se),null,{default:U(()=>[H(o(dl))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[mt,(L.arrow==="always"||o(u))&&(l.loop||o(s)>0)]])]),_:1})):J("v-if",!0),o(r)?(_(),oe(an,{key:1,name:"carousel-arrow-right",persisted:""},{default:U(()=>[We(F("button",{type:"button",class:T([o(N).e("arrow"),o(N).em("arrow","right")]),"aria-label":o(O)("el.carousel.rightArrow"),onMouseenter:B=>o(v)("right"),onMouseleave:o(h),onClick:Le(B=>o(M)(o(s)+1),["stop"])},[H(o(Se),null,{default:U(()=>[H(o(Cn))]),_:1})],42,["aria-label","onMouseenter","onMouseleave","onClick"]),[[mt,(L.arrow==="always"||o(u))&&(l.loop||o(s)[L.indicatorPosition!=="none"?(_(),V("ul",{key:0,class:T(o(W))},[(_(!0),V(Oe,null,ut(o(d),(B,A)=>We((_(),V("li",{key:A,class:T([o(N).e("indicator"),o(N).em("indicator",L.direction),o(N).is("active",A===o(s))]),onMouseenter:ne=>o(R)(A),onClick:Le(ne=>o(p)(A),["stop"])},[F("button",{class:T(o(N).e("button")),"aria-label":o(O)("el.carousel.indicator",{index:A+1})},[o(i)?(_(),V("span",{key:0},pe(B.props.label),1)):J("v-if",!0)],10,["aria-label"])],42,["onMouseenter","onClick"])),[[mt,o(S)(A)]])),128))],2)):J("v-if",!0)]),_:1}),l.motionBlur?(_(),V("svg",{key:2,xmlns:"http://www.w3.org/2000/svg",version:"1.1",style:{display:"none"}},[F("defs",null,[F("filter",{id:"elCarouselHorizontal"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"12,0"})]),F("filter",{id:"elCarouselVertical"},[F("feGaussianBlur",{in:"SourceGraphic",stdDeviation:"0,10"})])])])):J("v-if",!0)],42,["onMouseenter","onMouseleave"]))}});var ay=fe(oy,[["__file","carousel.vue"]]);const sy=de({name:{type:String,default:""},label:{type:[String,Number],default:""}}),ry=e=>{const t=we(xd),n=lt(),l=I(),a=I(!1),s=I(0),r=I(1),i=I(!1),u=I(!1),c=I(!1),d=I(!1),{isCardType:f,isVertical:m,cardScale:v}=t;function h(w,k,S){const $=S-1,M=k-1,R=k+1,N=S/2;return k===0&&w===$?-1:k===$&&w===0?S:w=N?S+1:w>R&&w-k>=N?-2:w}function p(w,k){var S,$;const M=o(m)?((S=t.root.value)==null?void 0:S.offsetHeight)||0:(($=t.root.value)==null?void 0:$.offsetWidth)||0;return c.value?M*((2-v)*(w-k)+1)/4:w{var $;const M=o(f),R=($=t.items.value.length)!=null?$:Number.NaN,N=w===k;!M&&!vt(S)&&(d.value=N||w===S),!N&&R>2&&t.loop&&(w=h(w,k,R));const O=o(m);i.value=N,M?(c.value=Math.round(Math.abs(w-k))<=1,s.value=p(w,k),r.value=o(i)?1:v):s.value=g(w,k,O),u.value=!0,N&&l.value&&t.setContainerHeight(l.value.offsetHeight)};function E(){if(t&&o(f)){const w=t.items.value.findIndex(({uid:k})=>k===n.uid);t.setActiveItem(w)}}const C={props:e,states:kt({hover:a,translate:s,scale:r,active:i,ready:u,inStage:c,animating:d}),uid:n.uid,getVnode:()=>n.vnode,translateItem:b};return t.addItem(C),Nt(()=>{t.removeItem(C)}),{carouselItemRef:l,active:i,animating:d,hover:a,inStage:c,isVertical:m,translate:s,isCardType:f,scale:r,ready:u,handleItemClick:E}},iy=x({name:sr}),uy=x({...iy,props:sy,setup(e){const t=e,n=ue("carousel"),{carouselItemRef:l,active:a,animating:s,hover:r,inStage:i,isVertical:u,translate:c,isCardType:d,scale:f,ready:m,handleItemClick:v}=ry(t),h=y(()=>[n.e("item"),n.is("active",a.value),n.is("in-stage",i.value),n.is("hover",r.value),n.is("animating",s.value),{[n.em("item","card")]:d.value,[n.em("item","card-vertical")]:d.value&&u.value}]),p=y(()=>{const b=`${`translate${o(u)?"Y":"X"}`}(${o(c)}px)`,E=`scale(${o(f)})`;return{transform:[b,E].join(" ")}});return(g,b)=>We((_(),V("div",{ref_key:"carouselItemRef",ref:l,class:T(o(h)),style:_e(o(p)),onClick:o(v)},[o(d)?We((_(),V("div",{key:0,class:T(o(n).e("mask"))},null,2)),[[mt,!o(a)]]):J("v-if",!0),G(g.$slots,"default")],14,["onClick"])),[[mt,o(m)]])}});var zd=fe(uy,[["__file","carousel-item.vue"]]);const cy=He(ay,{CarouselItem:zd}),dy=At(zd),Hd={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:Jt,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},...cn(["ariaControls"])},Kd={[De]:e=>Ve(e)||Te(e)||_t(e),change:e=>Ve(e)||Te(e)||_t(e)},Oo=Symbol("checkboxGroupContextKey"),fy=({model:e,isChecked:t})=>{const n=we(Oo,void 0),l=y(()=>{var s,r;const i=(s=n==null?void 0:n.max)==null?void 0:s.value,u=(r=n==null?void 0:n.min)==null?void 0:r.value;return!vt(i)&&e.value.length>=i&&!t.value||!vt(u)&&e.value.length<=u&&t.value});return{isDisabled:fn(y(()=>(n==null?void 0:n.disabled.value)||l.value)),isLimitDisabled:l}},vy=(e,{model:t,isLimitExceeded:n,hasOwnLabel:l,isDisabled:a,isLabeledByFormItem:s})=>{const r=we(Oo,void 0),{formItem:i}=dn(),{emit:u}=lt();function c(h){var p,g,b,E;return[!0,e.trueValue,e.trueLabel].includes(h)?(g=(p=e.trueValue)!=null?p:e.trueLabel)!=null?g:!0:(E=(b=e.falseValue)!=null?b:e.falseLabel)!=null?E:!1}function d(h,p){u(nt,c(h),p)}function f(h){if(n.value)return;const p=h.target;u(nt,c(p.checked),h)}async function m(h){n.value||!l.value&&!a.value&&s.value&&(h.composedPath().some(b=>b.tagName==="LABEL")||(t.value=c([!1,e.falseValue,e.falseLabel].includes(t.value)),await Ee(),d(t.value,h)))}const v=y(()=>(r==null?void 0:r.validateEvent)||e.validateEvent);return ie(()=>e.modelValue,()=>{v.value&&(i==null||i.validate("change").catch(h=>void 0))}),{handleChange:f,onClickRoot:m}},py=e=>{const t=I(!1),{emit:n}=lt(),l=we(Oo,void 0),a=y(()=>vt(l)===!1),s=I(!1),r=y({get(){var i,u;return a.value?(i=l==null?void 0:l.modelValue)==null?void 0:i.value:(u=e.modelValue)!=null?u:t.value},set(i){var u,c;a.value&&ke(i)?(s.value=((u=l==null?void 0:l.max)==null?void 0:u.value)!==void 0&&i.length>(l==null?void 0:l.max.value)&&i.length>r.value.length,s.value===!1&&((c=l==null?void 0:l.changeEvent)==null||c.call(l,i))):(n(De,i),t.value=i)}});return{model:r,isGroup:a,isLimitExceeded:s}},hy=(e,t,{model:n})=>{const l=we(Oo,void 0),a=I(!1),s=y(()=>In(e.value)?e.label:e.value),r=y(()=>{const d=n.value;return _t(d)?d:ke(d)?yt(s.value)?d.map(Uo).some(f=>tn(f,s.value)):d.map(Uo).includes(s.value):d!=null?d===e.trueValue||d===e.trueLabel:!!d}),i=Gt(y(()=>{var d;return(d=l==null?void 0:l.size)==null?void 0:d.value}),{prop:!0}),u=Gt(y(()=>{var d;return(d=l==null?void 0:l.size)==null?void 0:d.value})),c=y(()=>!!t.default||!In(s.value));return{checkboxButtonSize:i,isChecked:r,isFocused:a,checkboxSize:u,hasOwnLabel:c,actualValue:s}},Wd=(e,t)=>{const{formItem:n}=dn(),{model:l,isGroup:a,isLimitExceeded:s}=py(e),{isFocused:r,isChecked:i,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:d,actualValue:f}=hy(e,t,{model:l}),{isDisabled:m}=fy({model:l,isChecked:i}),{inputId:v,isLabeledByFormItem:h}=Kn(e,{formItemContext:n,disableIdGeneration:d,disableIdManagement:a}),{handleChange:p,onClickRoot:g}=vy(e,{model:l,isLimitExceeded:s,hasOwnLabel:d,isDisabled:m,isLabeledByFormItem:h});return(()=>{function E(){var C,w;ke(l.value)&&!l.value.includes(f.value)?l.value.push(f.value):l.value=(w=(C=e.trueValue)!=null?C:e.trueLabel)!=null?w:!0}e.checked&&E()})(),ul({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>a.value&&In(e.value))),ul({from:"true-label",replacement:"true-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>!!e.trueLabel)),ul({from:"false-label",replacement:"false-value",version:"3.0.0",scope:"el-checkbox",ref:"https://element-plus.org/en-US/component/checkbox.html"},y(()=>!!e.falseLabel)),{inputId:v,isLabeledByFormItem:h,isChecked:i,isDisabled:m,isFocused:r,checkboxButtonSize:u,checkboxSize:c,hasOwnLabel:d,model:l,actualValue:f,handleChange:p,onClickRoot:g}},my=x({name:"ElCheckbox"}),gy=x({...my,props:Hd,emits:Kd,setup(e){const t=e,n=Xt(),{inputId:l,isLabeledByFormItem:a,isChecked:s,isDisabled:r,isFocused:i,checkboxSize:u,hasOwnLabel:c,model:d,actualValue:f,handleChange:m,onClickRoot:v}=Wd(t,n),h=ue("checkbox"),p=y(()=>[h.b(),h.m(u.value),h.is("disabled",r.value),h.is("bordered",t.border),h.is("checked",s.value)]),g=y(()=>[h.e("input"),h.is("disabled",r.value),h.is("checked",s.value),h.is("indeterminate",t.indeterminate),h.is("focus",i.value)]);return(b,E)=>(_(),oe(Ge(!o(c)&&o(a)?"span":"label"),{class:T(o(p)),"aria-controls":b.indeterminate?b.ariaControls:null,onClick:o(v)},{default:U(()=>{var C,w,k,S;return[F("span",{class:T(o(g))},[b.trueValue||b.falseValue||b.trueLabel||b.falseLabel?We((_(),V("input",{key:0,id:o(l),"onUpdate:modelValue":$=>gn(d)?d.value=$:null,class:T(o(h).e("original")),type:"checkbox",indeterminate:b.indeterminate,name:b.name,tabindex:b.tabindex,disabled:o(r),"true-value":(w=(C=b.trueValue)!=null?C:b.trueLabel)!=null?w:!0,"false-value":(S=(k=b.falseValue)!=null?k:b.falseLabel)!=null?S:!1,onChange:o(m),onFocus:$=>i.value=!0,onBlur:$=>i.value=!1,onClick:Le(()=>{},["stop"])},null,42,["id","onUpdate:modelValue","indeterminate","name","tabindex","disabled","true-value","false-value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(d)]]):We((_(),V("input",{key:1,id:o(l),"onUpdate:modelValue":$=>gn(d)?d.value=$:null,class:T(o(h).e("original")),type:"checkbox",indeterminate:b.indeterminate,disabled:o(r),value:o(f),name:b.name,tabindex:b.tabindex,onChange:o(m),onFocus:$=>i.value=!0,onBlur:$=>i.value=!1,onClick:Le(()=>{},["stop"])},null,42,["id","onUpdate:modelValue","indeterminate","disabled","value","name","tabindex","onChange","onFocus","onBlur","onClick"])),[[Ka,o(d)]]),F("span",{class:T(o(h).e("inner"))},null,2)],2),o(c)?(_(),V("span",{key:0,class:T(o(h).e("label"))},[G(b.$slots,"default"),b.$slots.default?J("v-if",!0):(_(),V(Oe,{key:0},[st(pe(b.label),1)],64))],2)):J("v-if",!0)]}),_:3},8,["class","aria-controls","onClick"]))}});var by=fe(gy,[["__file","checkbox.vue"]]);const yy=x({name:"ElCheckboxButton"}),Cy=x({...yy,props:Hd,emits:Kd,setup(e){const t=e,n=Xt(),{isFocused:l,isChecked:a,isDisabled:s,checkboxButtonSize:r,model:i,actualValue:u,handleChange:c}=Wd(t,n),d=we(Oo,void 0),f=ue("checkbox"),m=y(()=>{var h,p,g,b;const E=(p=(h=d==null?void 0:d.fill)==null?void 0:h.value)!=null?p:"";return{backgroundColor:E,borderColor:E,color:(b=(g=d==null?void 0:d.textColor)==null?void 0:g.value)!=null?b:"",boxShadow:E?`-1px 0 0 0 ${E}`:void 0}}),v=y(()=>[f.b("button"),f.bm("button",r.value),f.is("disabled",s.value),f.is("checked",a.value),f.is("focus",l.value)]);return(h,p)=>{var g,b,E,C;return _(),V("label",{class:T(o(v))},[h.trueValue||h.falseValue||h.trueLabel||h.falseLabel?We((_(),V("input",{key:0,"onUpdate:modelValue":w=>gn(i)?i.value=w:null,class:T(o(f).be("button","original")),type:"checkbox",name:h.name,tabindex:h.tabindex,disabled:o(s),"true-value":(b=(g=h.trueValue)!=null?g:h.trueLabel)!=null?b:!0,"false-value":(C=(E=h.falseValue)!=null?E:h.falseLabel)!=null?C:!1,onChange:o(c),onFocus:w=>l.value=!0,onBlur:w=>l.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","name","tabindex","disabled","true-value","false-value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(i)]]):We((_(),V("input",{key:1,"onUpdate:modelValue":w=>gn(i)?i.value=w:null,class:T(o(f).be("button","original")),type:"checkbox",name:h.name,tabindex:h.tabindex,disabled:o(s),value:o(u),onChange:o(c),onFocus:w=>l.value=!0,onBlur:w=>l.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","name","tabindex","disabled","value","onChange","onFocus","onBlur","onClick"])),[[Ka,o(i)]]),h.$slots.default||h.label?(_(),V("span",{key:2,class:T(o(f).be("button","inner")),style:_e(o(a)?o(m):void 0)},[G(h.$slots,"default",{},()=>[st(pe(h.label),1)])],6)):J("v-if",!0)],2)}}});var jd=fe(Cy,[["__file","checkbox-button.vue"]]);const wy=de({modelValue:{type:Y(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:Jt,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0},...cn(["ariaLabel"])}),ky={[De]:e=>ke(e),change:e=>ke(e)},Sy=x({name:"ElCheckboxGroup"}),Ey=x({...Sy,props:wy,emits:ky,setup(e,{emit:t}){const n=e,l=ue("checkbox"),{formItem:a}=dn(),{inputId:s,isLabeledByFormItem:r}=Kn(n,{formItemContext:a}),i=async c=>{t(De,c),await Ee(),t(nt,c)},u=y({get(){return n.modelValue},set(c){i(c)}});return rt(Oo,{...An(nn(n),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:u,changeEvent:i}),ie(()=>n.modelValue,()=>{n.validateEvent&&(a==null||a.validate("change").catch(c=>void 0))}),(c,d)=>{var f;return _(),oe(Ge(c.tag),{id:o(s),class:T(o(l).b("group")),role:"group","aria-label":o(r)?void 0:c.ariaLabel||"checkbox-group","aria-labelledby":o(r)?(f=o(a))==null?void 0:f.labelId:void 0},{default:U(()=>[G(c.$slots,"default")]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var Ud=fe(Ey,[["__file","checkbox-group.vue"]]);const Hn=He(by,{CheckboxButton:jd,CheckboxGroup:Ud}),_y=At(jd),Yd=At(Ud),qd=de({modelValue:{type:[String,Number,Boolean],default:void 0},size:Jt,disabled:Boolean,label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),Ty=de({...qd,border:Boolean}),Gd={[De]:e=>Ve(e)||Te(e)||_t(e),[nt]:e=>Ve(e)||Te(e)||_t(e)},Xd=Symbol("radioGroupKey"),Zd=(e,t)=>{const n=I(),l=we(Xd,void 0),a=y(()=>!!l),s=y(()=>In(e.value)?e.label:e.value),r=y({get(){return a.value?l.modelValue:e.modelValue},set(f){a.value?l.changeEvent(f):t&&t(De,f),n.value.checked=e.modelValue===s.value}}),i=Gt(y(()=>l==null?void 0:l.size)),u=fn(y(()=>l==null?void 0:l.disabled)),c=I(!1),d=y(()=>u.value||a.value&&r.value!==s.value?-1:0);return ul({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},y(()=>a.value&&In(e.value))),{radioRef:n,isGroup:a,radioGroup:l,focus:c,size:i,disabled:u,tabIndex:d,modelValue:r,actualValue:s}},$y=x({name:"ElRadio"}),Ny=x({...$y,props:Ty,emits:Gd,setup(e,{emit:t}){const n=e,l=ue("radio"),{radioRef:a,radioGroup:s,focus:r,size:i,disabled:u,modelValue:c,actualValue:d}=Zd(n,t);function f(){Ee(()=>t(nt,c.value))}return(m,v)=>{var h;return _(),V("label",{class:T([o(l).b(),o(l).is("disabled",o(u)),o(l).is("focus",o(r)),o(l).is("bordered",m.border),o(l).is("checked",o(c)===o(d)),o(l).m(o(i))])},[F("span",{class:T([o(l).e("input"),o(l).is("disabled",o(u)),o(l).is("checked",o(c)===o(d))])},[We(F("input",{ref_key:"radioRef",ref:a,"onUpdate:modelValue":p=>gn(c)?c.value=p:null,class:T(o(l).e("original")),value:o(d),name:m.name||((h=o(s))==null?void 0:h.name),disabled:o(u),checked:o(c)===o(d),type:"radio",onFocus:p=>r.value=!0,onBlur:p=>r.value=!1,onChange:f,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","checked","onFocus","onBlur","onClick"]),[[Rc,o(c)]]),F("span",{class:T(o(l).e("inner"))},null,2)],2),F("span",{class:T(o(l).e("label")),onKeydown:Le(()=>{},["stop"])},[G(m.$slots,"default",{},()=>[st(pe(m.label),1)])],42,["onKeydown"])],2)}}});var Iy=fe(Ny,[["__file","radio.vue"]]);const My=de({...qd}),Ry=x({name:"ElRadioButton"}),Py=x({...Ry,props:My,setup(e){const t=e,n=ue("radio"),{radioRef:l,focus:a,size:s,disabled:r,modelValue:i,radioGroup:u,actualValue:c}=Zd(t),d=y(()=>({backgroundColor:(u==null?void 0:u.fill)||"",borderColor:(u==null?void 0:u.fill)||"",boxShadow:u!=null&&u.fill?`-1px 0 0 0 ${u.fill}`:"",color:(u==null?void 0:u.textColor)||""}));return(f,m)=>{var v;return _(),V("label",{class:T([o(n).b("button"),o(n).is("active",o(i)===o(c)),o(n).is("disabled",o(r)),o(n).is("focus",o(a)),o(n).bm("button",o(s))])},[We(F("input",{ref_key:"radioRef",ref:l,"onUpdate:modelValue":h=>gn(i)?i.value=h:null,class:T(o(n).be("button","original-radio")),value:o(c),type:"radio",name:f.name||((v=o(u))==null?void 0:v.name),disabled:o(r),onFocus:h=>a.value=!0,onBlur:h=>a.value=!1,onClick:Le(()=>{},["stop"])},null,42,["onUpdate:modelValue","value","name","disabled","onFocus","onBlur","onClick"]),[[Rc,o(i)]]),F("span",{class:T(o(n).be("button","inner")),style:_e(o(i)===o(c)?o(d):{}),onKeydown:Le(()=>{},["stop"])},[G(f.$slots,"default",{},()=>[st(pe(f.label),1)])],46,["onKeydown"])],2)}}});var Jd=fe(Py,[["__file","radio-button.vue"]]);const Oy=de({id:{type:String,default:void 0},size:Jt,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},...cn(["ariaLabel"])}),Ly=Gd,By=x({name:"ElRadioGroup"}),Vy=x({...By,props:Oy,emits:Ly,setup(e,{emit:t}){const n=e,l=ue("radio"),a=sn(),s=I(),{formItem:r}=dn(),{inputId:i,isLabeledByFormItem:u}=Kn(n,{formItemContext:r}),c=f=>{t(De,f),Ee(()=>t(nt,f))};Xe(()=>{const f=s.value.querySelectorAll("[type=radio]"),m=f[0];!Array.from(f).some(v=>v.checked)&&m&&(m.tabIndex=0)});const d=y(()=>n.name||a.value);return rt(Xd,kt({...nn(n),changeEvent:c,name:d})),ie(()=>n.modelValue,()=>{n.validateEvent&&(r==null||r.validate("change").catch(f=>void 0))}),(f,m)=>(_(),V("div",{id:o(i),ref_key:"radioGroupRef",ref:s,class:T(o(l).b("group")),role:"radiogroup","aria-label":o(u)?void 0:f.ariaLabel||"radio-group","aria-labelledby":o(u)?o(r).labelId:void 0},[G(f.$slots,"default")],10,["id","aria-label","aria-labelledby"]))}});var Qd=fe(Vy,[["__file","radio-group.vue"]]);const ef=He(Iy,{RadioButton:Jd,RadioGroup:Qd}),Dy=At(Qd),Ay=At(Jd);function Fy(e){return!!(ke(e)?e.every(({type:t})=>t===jl):(e==null?void 0:e.type)===jl)}var xy=x({name:"NodeContent",props:{node:{type:Object,required:!0},renderLabelFn:Function},setup(e){const t=ue("cascader-node"),{renderLabelFn:n,node:l}=e,{data:a,label:s}=l,r=()=>{const i=n==null?void 0:n({node:l,data:a});return Fy(i)?s:i??s};return()=>H("span",{class:t.e("label")},[r()])}});const li=Symbol(),zy=x({name:"ElCascaderNode"}),Hy=x({...zy,props:{node:{type:Object,required:!0},menuId:String},emits:["expand"],setup(e,{emit:t}){const n=e,l=we(li),a=ue("cascader-node"),s=y(()=>l.isHoverMenu),r=y(()=>l.config.multiple),i=y(()=>l.config.checkStrictly),u=y(()=>{var $;return($=l.checkedNodes[0])==null?void 0:$.uid}),c=y(()=>n.node.isDisabled),d=y(()=>n.node.isLeaf),f=y(()=>i.value&&!d.value||!c.value),m=y(()=>h(l.expandingNode)),v=y(()=>i.value&&l.checkedNodes.some(h)),h=$=>{var M;const{level:R,uid:N}=n.node;return((M=$==null?void 0:$.pathNodes[R-1])==null?void 0:M.uid)===N},p=()=>{m.value||l.expandNode(n.node)},g=$=>{const{node:M}=n;$!==M.checked&&l.handleCheckChange(M,$)},b=()=>{l.lazyLoad(n.node,()=>{d.value||p()})},E=$=>{s.value&&(C(),!d.value&&t("expand",$))},C=()=>{const{node:$}=n;!f.value||$.loading||($.loaded?p():b())},w=()=>{s.value&&!d.value||(d.value&&!c.value&&!i.value&&!r.value?S(!0):C())},k=$=>{i.value?(g($),n.node.loaded&&p()):S($)},S=$=>{n.node.loaded?(g($),!i.value&&p()):b()};return($,M)=>(_(),V("li",{id:`${e.menuId}-${e.node.uid}`,role:"menuitem","aria-haspopup":!o(d),"aria-owns":o(d)?void 0:e.menuId,"aria-expanded":o(m),tabindex:o(f)?-1:void 0,class:T([o(a).b(),o(a).is("selectable",o(i)),o(a).is("active",e.node.checked),o(a).is("disabled",!o(f)),o(m)&&"in-active-path",o(v)&&"in-checked-path"]),onMouseenter:E,onFocus:E,onClick:w},[J(" prefix "),o(r)?(_(),oe(o(Hn),{key:0,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:o(c),onClick:Le(()=>{},["stop"]),"onUpdate:modelValue":k},null,8,["model-value","indeterminate","disabled","onClick"])):o(i)?(_(),oe(o(ef),{key:1,"model-value":o(u),label:e.node.uid,disabled:o(c),"onUpdate:modelValue":k,onClick:Le(()=>{},["stop"])},{default:U(()=>[J(` Add an empty element to avoid render label, do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485 `),F("span")]),_:1},8,["model-value","label","disabled","onClick"])):o(d)&&e.node.checked?(_(),oe(o(Se),{key:2,class:T(o(a).e("prefix"))},{default:U(()=>[H(o(va))]),_:1},8,["class"])):J("v-if",!0),H(o(xy),{"render-label-fn":o(l).renderLabelFn,node:e.node},null,8,["render-label-fn","node"]),J(" postfix "),o(d)?J("v-if",!0):(_(),V(Oe,{key:3},[e.node.loading?(_(),oe(o(Se),{key:0,class:T([o(a).is("loading"),o(a).e("postfix")])},{default:U(()=>[H(o(Qn))]),_:1},8,["class"])):(_(),oe(o(Se),{key:1,class:T(["arrow-right",o(a).e("postfix")])},{default:U(()=>[H(o(Cn))]),_:1},8,["class"]))],64))],42,["id","aria-haspopup","aria-owns","aria-expanded","tabindex"]))}});var Ky=fe(Hy,[["__file","node.vue"]]);const Wy=x({name:"ElCascaderMenu"}),jy=x({...Wy,props:{nodes:{type:Array,required:!0},index:{type:Number,required:!0}},setup(e){const t=e,n=lt(),l=ue("cascader-menu"),{t:a}=pt(),s=sn();let r,i;const u=we(li),c=I(),d=y(()=>!t.nodes.length),f=y(()=>!u.initialLoaded),m=y(()=>`${s.value}-${t.index}`),v=b=>{r=b.target},h=b=>{if(!(!u.isHoverMenu||!r||!c.value))if(r.contains(b.target)){p();const E=n.vnode.el,{left:C}=E.getBoundingClientRect(),{offsetWidth:w,offsetHeight:k}=E,S=b.clientX-C,$=r.offsetTop,M=$+r.offsetHeight;c.value.innerHTML=` diff --git a/web/admin-spa/dist/assets/element-plus-nq7etrhL.css b/web/admin-spa/dist/assets/element-plus-nq7etrhL.css deleted file mode 100644 index b646ee7f..00000000 --- a/web/admin-spa/dist/assets/element-plus-nq7etrhL.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--primary{--el-alert-bg-color:var(--el-color-primary-light-9)}.el-alert--primary.is-light{background-color:var(--el-alert-bg-color)}.el-alert--primary.is-light,.el-alert--primary.is-light .el-alert__description{color:var(--el-color-primary)}.el-alert--primary.is-dark{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{box-sizing:border-box;flex-shrink:0;overflow:auto;width:var(--el-aside-width,300px)}.el-autocomplete{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;position:relative;width:var(--el-input-width)}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper,.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);line-height:34px;list-style:none;margin:0;overflow:hidden;padding:0 20px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{color:var(--el-text-color-secondary);font-size:20px;height:100px;line-height:100px;text-align:center}.el-autocomplete-suggestion.is-loading li:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size-small:24px;--el-avatar-size:40px;align-items:center;background:var(--el-avatar-bg-color);box-sizing:border-box;color:var(--el-avatar-text-color);display:inline-flex;font-size:var(--el-avatar-text-size);height:var(--el-avatar-size);justify-content:center;outline:none;overflow:hidden;text-align:center;width:var(--el-avatar-size)}.el-avatar>img{display:block;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);align-items:center;background-color:var(--el-backtop-bg-color);border-radius:50%;box-shadow:var(--el-box-shadow-lighter);color:var(--el-backtop-text-color);cursor:pointer;display:flex;font-size:20px;height:40px;justify-content:center;position:fixed;width:40px;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{content:"";display:table}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.el-button-group>.el-button:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-bottom-left-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0}.el-button-group .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-calendar{--el-calendar-border:var(--el-table-border,1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{border-bottom:var(--el-calendar-header-border-bottom);display:flex;justify-content:space-between;padding:12px 20px}.el-calendar__title{align-self:center;color:var(--el-text-color)}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{color:var(--el-text-color-regular);font-weight:400;padding:12px 0}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);transition:background-color var(--el-transition-duration-fast) ease;vertical-align:top}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;height:var(--el-calendar-cell-width);padding:8px}.el-calendar-table .el-calendar-day:hover{background-color:var(--el-calendar-selected-bg-color);cursor:pointer}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-carousel__item{display:inline-block;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.el-carousel__item,.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__item--card-vertical{height:50%;width:100%}.el-carousel__mask{background-color:var(--el-color-white);height:100%;left:0;opacity:.24;position:absolute;top:0;transition:var(--el-transition-duration-fast);width:100%}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:rgba(31,45,61,.11);--el-carousel-arrow-hover-background:rgba(31,45,61,.23);--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal,.el-carousel--vertical{overflow:hidden}.el-carousel__container{height:300px;position:relative}.el-carousel__arrow{align-items:center;background-color:var(--el-carousel-arrow-background);border:none;border-radius:50%;color:#fff;cursor:pointer;display:inline-flex;font-size:var(--el-carousel-arrow-font-size);height:var(--el-carousel-arrow-size);justify-content:center;margin:0;outline:none;padding:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);transition:var(--el-transition-duration);width:var(--el-carousel-arrow-size);z-index:10}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{list-style:none;margin:0;padding:0;position:absolute;z-index:calc(var(--el-index-normal) + 1)}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:calc(var(--el-carousel-indicator-height) + var(--el-carousel-indicator-padding-vertical)*2);position:static;text-align:center;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--right{right:0}.el-carousel__indicators--labels{left:0;right:0;text-align:center;transform:none}.el-carousel__indicators--labels .el-carousel__button{color:#000;font-size:12px;height:auto;padding:2px 18px;width:auto}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal)}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{height:calc(var(--el-carousel-indicator-width)/2);width:var(--el-carousel-indicator-height)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{background-color:#fff;border:none;cursor:pointer;display:block;height:var(--el-carousel-indicator-height);margin:0;opacity:.48;outline:none;padding:0;transition:var(--el-transition-duration);width:var(--el-carousel-indicator-width)}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{opacity:0;transform:translateY(-50%) translate(-10px)}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{opacity:0;transform:translateY(-50%) translate(10px)}.el-transitioning{filter:url(#elCarouselHorizontal)}.el-transitioning-vertical{filter:url(#elCarouselVertical)}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);display:flex;font-size:var(--el-cascader-menu-font-size)}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{border-right:var(--el-cascader-menu-border);box-sizing:border-box;color:var(--el-cascader-menu-text-color);min-width:180px}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{box-sizing:border-box;list-style:none;margin:0;min-height:100%;padding:6px 0;position:relative}.el-cascader-menu__hover-zone{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.el-cascader-menu__empty-text{align-items:center;color:var(--el-cascader-color-empty);display:flex;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{align-items:center;display:flex;height:34px;line-height:34px;outline:none;padding:0 30px 0 20px;position:relative}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{left:10px;position:absolute}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;overflow:hidden;padding:0 8px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-cascader-node>.el-checkbox,.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);display:inline-block;font-size:var(--el-font-size-base);line-height:32px;outline:none;position:relative;vertical-align:middle}.el-cascader:not(.is-disabled):hover .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset;cursor:pointer}.el-cascader .el-input{cursor:pointer;display:flex}.el-cascader .el-input .el-input__inner{cursor:pointer;text-overflow:ellipsis}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{font-size:14px;transition:transform var(--el-transition-duration)}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--large .el-cascader__tags{gap:6px;padding:8px}.el-cascader--large .el-cascader__search-input{height:24px;margin-left:7px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader--small .el-cascader__tags{gap:4px;padding:2px}.el-cascader--small .el-cascader__search-input{height:20px;margin-left:5px}.el-cascader.is-disabled .el-cascader__label{color:var(--el-disabled-text-color);z-index:calc(var(--el-index-normal) + 1)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);font-size:var(--el-cascader-menu-font-size)}.el-cascader__dropdown.el-popper{background:var(--el-cascader-menu-fill)}.el-cascader__dropdown.el-popper,.el-cascader__dropdown.el-popper .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__tags{box-sizing:border-box;display:flex;flex-wrap:wrap;gap:6px;left:0;line-height:normal;padding:4px;position:absolute;right:30px;text-align:left;top:50%;transform:translateY(-50%)}.el-cascader__tags .el-tag{align-items:center;background:var(--el-cascader-tag-background);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__tags .el-tag.el-tag--dark,.el-cascader__tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__tags .el-tag>span{flex:1;line-height:normal;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__tags .el-tag+input{margin-left:0}.el-cascader__tags.is-validate{right:55px}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal)}.el-cascader__collapse-tags .el-tag{align-items:center;background:var(--el-fill-color);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag.el-tag--dark,.el-cascader__collapse-tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__collapse-tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__collapse-tags .el-tag>span{flex:1;line-height:normal;overflow:hidden;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__collapse-tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags .el-tag+input{margin-left:0}.el-cascader__collapse-tags .el-tag{margin:2px 0}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{color:var(--el-cascader-menu-text-color);font-size:var(--el-font-size-base);margin:0;max-height:204px;padding:6px 0;text-align:center}.el-cascader__suggestion-item{align-items:center;cursor:pointer;display:flex;height:34px;justify-content:space-between;outline:none;padding:0 15px;text-align:left}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{color:var(--el-cascader-color-empty);margin:10px 0}.el-cascader__search-input{background:transparent;border:none;box-sizing:border-box;color:var(--el-cascader-menu-text-color);flex:1;height:24px;margin-left:7px;min-width:60px;outline:none;padding:0}.el-cascader__search-input::placeholder{color:transparent}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:700;line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all)}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled,.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled,.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled,.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled,.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled,.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary);display:inline-block;position:relative}.el-checkbox-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left-color:transparent;border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);line-height:1;margin:0;outline:none;padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{margin:0;opacity:0;outline:none;position:absolute;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7);color:var(--el-checkbox-button-checked-text-color)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button:first-child .el-checkbox-button__inner{border-bottom-left-radius:var(--el-border-radius-base);border-left:var(--el-border);border-top-left-radius:var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-bottom-right-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-checkbox-button--large .el-checkbox-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-checkbox-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);height:var(--el-checkbox-height,32px);margin-right:30px;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{border-radius:var(--el-checkbox-border-radius);outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px}.el-checkbox__input{cursor:pointer;display:inline-flex;outline:none;position:relative;white-space:nowrap}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-icon-color);cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:translate(-45%,-60%) rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-checked-icon-color);content:"";display:block;height:2px;left:0;position:absolute;right:0;top:5px;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{background-color:var(--el-checkbox-bg-color);border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;display:inline-block;height:var(--el-checkbox-input-height);position:relative;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46);width:var(--el-checkbox-input-width);z-index:var(--el-index-normal)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{border:1px solid transparent;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:50%;position:absolute;top:50%;transform:translate(-45%,-60%) rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.el-checkbox__original{height:0;margin:0;opacity:0;outline:none;position:absolute;width:0;z-index:-1}.el-checkbox__label{display:inline-block;font-size:var(--el-checkbox-font-size);line-height:1;padding-left:8px}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0{flex:0 0 0%;max-width:0}.el-col-0,.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{left:0;position:relative}.el-col-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-1,.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{left:4.1666666667%;position:relative}.el-col-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-2,.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{left:8.3333333333%;position:relative}.el-col-3{flex:0 0 12.5%;max-width:12.5%}.el-col-3,.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{left:12.5%;position:relative}.el-col-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-4,.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{left:16.6666666667%;position:relative}.el-col-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-5,.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{left:20.8333333333%;position:relative}.el-col-6{flex:0 0 25%;max-width:25%}.el-col-6,.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{left:25%;position:relative}.el-col-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-7,.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{left:29.1666666667%;position:relative}.el-col-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-8,.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{left:33.3333333333%;position:relative}.el-col-9{flex:0 0 37.5%;max-width:37.5%}.el-col-9,.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{left:37.5%;position:relative}.el-col-10{flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-10,.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{left:41.6666666667%;position:relative}.el-col-11{flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-11,.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{left:45.8333333333%;position:relative}.el-col-12{flex:0 0 50%;max-width:50%}.el-col-12,.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%;position:relative}.el-col-13{flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-13,.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{left:54.1666666667%;position:relative}.el-col-14{flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-14,.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{left:58.3333333333%;position:relative}.el-col-15{flex:0 0 62.5%;max-width:62.5%}.el-col-15,.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{left:62.5%;position:relative}.el-col-16{flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-16,.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{left:66.6666666667%;position:relative}.el-col-17{flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-17,.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{left:70.8333333333%;position:relative}.el-col-18{flex:0 0 75%;max-width:75%}.el-col-18,.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{left:75%;position:relative}.el-col-19{flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-19,.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{left:79.1666666667%;position:relative}.el-col-20{flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-20,.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{left:83.3333333333%;position:relative}.el-col-21{flex:0 0 87.5%;max-width:87.5%}.el-col-21,.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{left:87.5%;position:relative}.el-col-22{flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-22,.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{left:91.6666666667%;position:relative}.el-col-23{flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-23,.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{left:95.8333333333%;position:relative}.el-col-24{flex:0 0 100%;max-width:100%}.el-col-24,.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{left:100%;position:relative}@media only screen and (max-width:767px){.el-col-xs-0{display:none;flex:0 0 0%;max-width:0}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{left:0;position:relative}.el-col-xs-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xs-1,.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{left:4.1666666667%;position:relative}.el-col-xs-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xs-2,.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{left:8.3333333333%;position:relative}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xs-3,.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{left:12.5%;position:relative}.el-col-xs-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xs-4,.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{left:16.6666666667%;position:relative}.el-col-xs-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xs-5,.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{left:20.8333333333%;position:relative}.el-col-xs-6{flex:0 0 25%;max-width:25%}.el-col-xs-6,.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{left:25%;position:relative}.el-col-xs-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xs-7,.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{left:29.1666666667%;position:relative}.el-col-xs-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xs-8,.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{left:33.3333333333%;position:relative}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xs-9,.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{left:37.5%;position:relative}.el-col-xs-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{left:41.6666666667%;position:relative}.el-col-xs-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{left:45.8333333333%;position:relative}.el-col-xs-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{left:50%;position:relative}.el-col-xs-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{left:54.1666666667%;position:relative}.el-col-xs-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{left:58.3333333333%;position:relative}.el-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{left:62.5%;position:relative}.el-col-xs-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{left:66.6666666667%;position:relative}.el-col-xs-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{left:70.8333333333%;position:relative}.el-col-xs-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{left:75%;position:relative}.el-col-xs-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{left:79.1666666667%;position:relative}.el-col-xs-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{left:83.3333333333%;position:relative}.el-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{left:87.5%;position:relative}.el-col-xs-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{left:91.6666666667%;position:relative}.el-col-xs-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{left:95.8333333333%;position:relative}.el-col-xs-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{left:100%;position:relative}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;flex:0 0 0%;max-width:0}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{left:0;position:relative}.el-col-sm-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-sm-1,.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{left:4.1666666667%;position:relative}.el-col-sm-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-sm-2,.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{left:8.3333333333%;position:relative}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%}.el-col-sm-3,.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{left:12.5%;position:relative}.el-col-sm-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-sm-4,.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{left:16.6666666667%;position:relative}.el-col-sm-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-sm-5,.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{left:20.8333333333%;position:relative}.el-col-sm-6{flex:0 0 25%;max-width:25%}.el-col-sm-6,.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{left:25%;position:relative}.el-col-sm-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-sm-7,.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{left:29.1666666667%;position:relative}.el-col-sm-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-sm-8,.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{left:33.3333333333%;position:relative}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%}.el-col-sm-9,.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{left:37.5%;position:relative}.el-col-sm-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{left:41.6666666667%;position:relative}.el-col-sm-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{left:45.8333333333%;position:relative}.el-col-sm-12{display:block;flex:0 0 50%;max-width:50%}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{left:50%;position:relative}.el-col-sm-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{left:54.1666666667%;position:relative}.el-col-sm-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{left:58.3333333333%;position:relative}.el-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{left:62.5%;position:relative}.el-col-sm-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{left:66.6666666667%;position:relative}.el-col-sm-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{left:70.8333333333%;position:relative}.el-col-sm-18{display:block;flex:0 0 75%;max-width:75%}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{left:75%;position:relative}.el-col-sm-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{left:79.1666666667%;position:relative}.el-col-sm-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{left:83.3333333333%;position:relative}.el-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{left:87.5%;position:relative}.el-col-sm-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{left:91.6666666667%;position:relative}.el-col-sm-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{left:95.8333333333%;position:relative}.el-col-sm-24{display:block;flex:0 0 100%;max-width:100%}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{left:100%;position:relative}}@media only screen and (min-width:992px){.el-col-md-0{display:none;flex:0 0 0%;max-width:0}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{left:0;position:relative}.el-col-md-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-md-1,.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{left:4.1666666667%;position:relative}.el-col-md-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-md-2,.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{left:8.3333333333%;position:relative}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%}.el-col-md-3,.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{left:12.5%;position:relative}.el-col-md-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-md-4,.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{left:16.6666666667%;position:relative}.el-col-md-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-md-5,.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{left:20.8333333333%;position:relative}.el-col-md-6{flex:0 0 25%;max-width:25%}.el-col-md-6,.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{left:25%;position:relative}.el-col-md-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-md-7,.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{left:29.1666666667%;position:relative}.el-col-md-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-md-8,.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{left:33.3333333333%;position:relative}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%}.el-col-md-9,.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{left:37.5%;position:relative}.el-col-md-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{left:41.6666666667%;position:relative}.el-col-md-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{left:45.8333333333%;position:relative}.el-col-md-12{display:block;flex:0 0 50%;max-width:50%}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{left:50%;position:relative}.el-col-md-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{left:54.1666666667%;position:relative}.el-col-md-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{left:58.3333333333%;position:relative}.el-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{left:62.5%;position:relative}.el-col-md-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{left:66.6666666667%;position:relative}.el-col-md-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{left:70.8333333333%;position:relative}.el-col-md-18{display:block;flex:0 0 75%;max-width:75%}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{left:75%;position:relative}.el-col-md-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{left:79.1666666667%;position:relative}.el-col-md-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{left:83.3333333333%;position:relative}.el-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{left:87.5%;position:relative}.el-col-md-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{left:91.6666666667%;position:relative}.el-col-md-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{left:95.8333333333%;position:relative}.el-col-md-24{display:block;flex:0 0 100%;max-width:100%}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{left:100%;position:relative}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;flex:0 0 0%;max-width:0}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{left:0;position:relative}.el-col-lg-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-lg-1,.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{left:4.1666666667%;position:relative}.el-col-lg-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-lg-2,.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{left:8.3333333333%;position:relative}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%}.el-col-lg-3,.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{left:12.5%;position:relative}.el-col-lg-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-lg-4,.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{left:16.6666666667%;position:relative}.el-col-lg-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-lg-5,.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{left:20.8333333333%;position:relative}.el-col-lg-6{flex:0 0 25%;max-width:25%}.el-col-lg-6,.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{left:25%;position:relative}.el-col-lg-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-lg-7,.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{left:29.1666666667%;position:relative}.el-col-lg-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-lg-8,.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{left:33.3333333333%;position:relative}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%}.el-col-lg-9,.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{left:37.5%;position:relative}.el-col-lg-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{left:41.6666666667%;position:relative}.el-col-lg-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{left:45.8333333333%;position:relative}.el-col-lg-12{display:block;flex:0 0 50%;max-width:50%}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{left:50%;position:relative}.el-col-lg-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{left:54.1666666667%;position:relative}.el-col-lg-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{left:58.3333333333%;position:relative}.el-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{left:62.5%;position:relative}.el-col-lg-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{left:66.6666666667%;position:relative}.el-col-lg-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{left:70.8333333333%;position:relative}.el-col-lg-18{display:block;flex:0 0 75%;max-width:75%}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{left:75%;position:relative}.el-col-lg-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{left:79.1666666667%;position:relative}.el-col-lg-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{left:83.3333333333%;position:relative}.el-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{left:87.5%;position:relative}.el-col-lg-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{left:91.6666666667%;position:relative}.el-col-lg-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{left:95.8333333333%;position:relative}.el-col-lg-24{display:block;flex:0 0 100%;max-width:100%}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{left:100%;position:relative}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;flex:0 0 0%;max-width:0}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{left:0;position:relative}.el-col-xl-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xl-1,.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{left:4.1666666667%;position:relative}.el-col-xl-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xl-2,.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{left:8.3333333333%;position:relative}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xl-3,.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{left:12.5%;position:relative}.el-col-xl-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xl-4,.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{left:16.6666666667%;position:relative}.el-col-xl-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xl-5,.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{left:20.8333333333%;position:relative}.el-col-xl-6{flex:0 0 25%;max-width:25%}.el-col-xl-6,.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{left:25%;position:relative}.el-col-xl-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xl-7,.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{left:29.1666666667%;position:relative}.el-col-xl-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xl-8,.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{left:33.3333333333%;position:relative}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xl-9,.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{left:37.5%;position:relative}.el-col-xl-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{left:41.6666666667%;position:relative}.el-col-xl-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{left:45.8333333333%;position:relative}.el-col-xl-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{left:50%;position:relative}.el-col-xl-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{left:54.1666666667%;position:relative}.el-col-xl-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{left:58.3333333333%;position:relative}.el-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{left:62.5%;position:relative}.el-col-xl-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{left:66.6666666667%;position:relative}.el-col-xl-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{left:70.8333333333%;position:relative}.el-col-xl-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{left:75%;position:relative}.el-col-xl-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{left:79.1666666667%;position:relative}.el-col-xl-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{left:83.3333333333%;position:relative}.el-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{left:87.5%;position:relative}.el-col-xl-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{left:91.6666666667%;position:relative}.el-col-xl-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{left:95.8333333333%;position:relative}.el-col-xl-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{left:100%;position:relative}}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-bottom:1px solid var(--el-collapse-border-color);border-top:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{align-items:center;background-color:var(--el-collapse-header-bg-color);border:none;border-bottom:1px solid var(--el-collapse-border-color);color:var(--el-collapse-header-text-color);cursor:pointer;display:flex;font-size:var(--el-collapse-header-font-size);font-weight:500;height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);outline:none;padding:0;transition:border-bottom-color var(--el-transition-duration);width:100%}.el-collapse-item__arrow{font-weight:300;transition:transform var(--el-transition-duration)}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__title{flex:auto;text-align:left}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{background-color:var(--el-collapse-content-bg-color);border-bottom:1px solid var(--el-collapse-border-color);box-sizing:border-box;overflow:hidden;will-change:height}.el-collapse-item__content{color:var(--el-collapse-content-text-color);font-size:var(--el-collapse-content-font-size);line-height:1.7692307692;padding-bottom:25px}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-icon-position-left .el-collapse-item__header{gap:8px}.el-collapse-icon-position-left .el-collapse-item__title{order:1}.el-collapse-icon-position-right .el-collapse-item__header{padding-right:8px}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{border-radius:4px;cursor:pointer;height:20px;margin:0 0 8px 8px;width:20px}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector>div{border-radius:3px;display:flex;height:100%}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{background-color:red;box-sizing:border-box;float:right;height:12px;padding:0 2px;position:relative;width:280px}.el-color-hue-slider__bar{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red);height:100%;position:relative}.el-color-hue-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-hue-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-hue-slider.is-vertical{height:180px;padding:2px 0;width:12px}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-svpanel{height:180px;position:relative;width:280px}.el-color-svpanel__black,.el-color-svpanel__white{bottom:0;left:0;position:absolute;right:0;top:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,#fff0)}.el-color-svpanel__black{background:linear-gradient(0deg,#000,#0000)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{border-radius:50%;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;cursor:head;height:4px;transform:translate(-2px,-2px);width:4px}.el-color-alpha-slider{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px;box-sizing:border-box;height:12px;position:relative;width:280px}.el-color-alpha-slider__bar{background:linear-gradient(to right,rgba(255,255,255,0) 0,var(--el-bg-color) 100%);height:100%;position:relative}.el-color-alpha-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-alpha-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-alpha-slider.is-vertical{height:180px;width:20px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,#fff0 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{clear:both;content:"";display:table}.el-color-dropdown__btns{margin-top:12px;text-align:right}.el-color-dropdown__value{color:#000;float:left;font-size:12px;line-height:26px;width:160px}.el-color-picker{display:inline-block;height:32px;line-height:normal;outline:none;position:relative;width:32px}.el-color-picker:hover:not(.is-disabled,.is-focused) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:focus-visible:not(.is-disabled) .el-color-picker__trigger{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-picker.is-focused .el-color-picker__trigger{border-color:var(--el-color-primary)}.el-color-picker.is-disabled .el-color-picker__trigger{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-color-picker.is-disabled .el-color-picker__color{opacity:.3}.el-color-picker--large{height:40px;width:40px}.el-color-picker--small{height:24px;width:24px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__trigger{align-items:center;border:1px solid var(--el-border-color);border-radius:4px;cursor:pointer;display:inline-flex;font-size:0;justify-content:center;padding:4px}.el-color-picker__color,.el-color-picker__trigger{box-sizing:border-box;height:100%;position:relative;width:100%}.el-color-picker__color{border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);display:block;text-align:center}.el-color-picker__color.is-alpha{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px}.el-color-picker__color-inner{align-items:center;display:inline-flex;height:100%;justify-content:center;width:100%}.el-color-picker .el-color-picker__empty{color:var(--el-text-color-secondary);font-size:12px}.el-color-picker .el-color-picker__icon{align-items:center;color:#fff;display:inline-flex;font-size:12px;justify-content:center}.el-color-picker__panel{background-color:#fff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);box-sizing:content-box;padding:6px;position:absolute;z-index:10}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-color-picker,.el-color-picker__panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker,.dark .el-color-picker__panel{--el-color-picker-alpha-bg-a:#333333}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;border-radius:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:var(--el-text-color-primary);display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);line-height:1;position:relative;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper,.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:0}.el-dropdown .el-dropdown__caret-button{align-items:center;border-left:none;display:inline-flex;justify-content:center;padding-left:0;padding-right:0;width:32px}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{background:var(--el-overlay-color-lighter);bottom:-1px;content:"";display:block;left:0;position:absolute;top:-1px;width:1px}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;left:0;list-style:none;margin:0;padding:5px 0;position:relative;top:0;z-index:var(--el-dropdown-menu-index)}.el-dropdown-menu__item{align-items:center;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:var(--el-font-size-base);line-height:22px;list-style:none;margin:0;outline:none;padding:5px 16px;white-space:nowrap}.el-dropdown-menu__item:not(.is-disabled):focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{font-size:14px;line-height:22px;padding:7px 20px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{font-size:12px;line-height:20px;padding:2px 12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-empty-padding);text-align:center}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;vertical-align:top;width:100%}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:100%;vertical-align:top;width:100%}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);margin:0}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start;text-align:left}.el-form-item--label-right .el-form-item__label{justify-content:flex-end;text-align:right}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:block;height:auto;line-height:22px;margin-bottom:8px;text-align:left}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:"*";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:"*";margin-left:4px}.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input-tag__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-input__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-select__wrapper,.el-form-item.is-error .el-form-item__content .el-select__wrapper.is-focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:focus,.el-form-item.is-error .el-form-item__content .el-select__wrapper:hover,.el-form-item.is-error .el-form-item__content .el-textarea__inner,.el-form-item.is-error .el-form-item__content .el-textarea__inner.is-focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:focus,.el-form-item.is-error .el-form-item__content .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-form-item__content .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-form-item__content .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-form-item__content .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translate(-50%)}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;gap:22px;height:100%;justify-content:space-around;padding:0 6px;width:100%}.el-image-viewer__actions__divider{margin:0 -6px}.el-image-viewer__progress{bottom:90px;color:#fff;cursor:default;left:50%;transform:translate(-50%)}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-input-tag{--el-input-tag-border-color-hover:var(--el-border-color-hover);--el-input-tag-placeholder-color:var(--el-text-color-placeholder);--el-input-tag-disabled-color:var(--el-disabled-text-color);--el-input-tag-disabled-border:var(--el-disabled-border-color);--el-input-tag-font-size:var(--el-font-size-base);--el-input-tag-close-hover-color:var(--el-text-color-secondary);--el-input-tag-text-color:var(--el-text-color-regular);--el-input-tag-input-focus-border-color:var(--el-color-primary);--el-input-tag-width:100%;--el-input-tag-mini-height:var(--el-component-size);--el-input-tag-gap:6px;--el-input-tag-padding:4px;--el-input-tag-inner-padding:8px;--el-input-tag-line-height:24px;align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--el-input-tag-font-size);line-height:var(--el-input-tag-line-height);min-height:var(--el-input-tag-mini-height);padding:var(--el-input-tag-padding);transform:translateZ(0);transition:var(--el-transition-duration);width:var(--el-input-tag-width)}.el-input-tag.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-tag.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-input-tag.is-disabled{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-input-tag.is-disabled,.el-input-tag.is-disabled:hover{box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-tag.is-disabled .el-input-tag__inner .el-input-tag__input,.el-input-tag.is-disabled .el-input-tag__inner .el-tag{cursor:not-allowed}.el-input-tag__prefix,.el-input-tag__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;padding:0 var(--el-input-tag-inner-padding)}.el-input-tag__suffix{gap:8px}.el-input-tag__inner{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:var(--el-input-tag-gap);max-width:100%;min-width:0;position:relative}.el-input-tag__inner.is-left-space{margin-left:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-right-space{margin-right:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-draggable .el-tag{cursor:move;-webkit-user-select:none;user-select:none}.el-input-tag__drop-indicator{background-color:var(--el-color-primary);height:var(--el-input-tag-line-height);position:absolute;top:0;width:1px}.el-input-tag__inner .el-tag{border-color:transparent;cursor:pointer;max-width:100%}.el-input-tag__inner .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__inner .el-tag .el-tag__content{line-height:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-input-tag__input-wrapper{flex:1}.el-input-tag__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-input-tag-text-color);font-family:inherit;font-size:inherit;line-height:inherit;outline:none;padding:0;width:100%}.el-input-tag__input::placeholder{color:var(--el-input-tag-placeholder-color)}.el-input-tag__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-input-tag--large{--el-input-tag-gap:6px;--el-input-tag-padding:8px;--el-input-tag-padding-left:8px;--el-input-tag-font-size:14px}.el-input-tag--small{--el-input-tag-gap:4px;--el-input-tag-padding:2px;--el-input-tag-padding-left:6px;--el-input-tag-font-size:12px;--el-input-tag-line-height:20px;--el-input-tag-mini-height:var(--el-component-size-small)}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder);align-items:center;color:var(--el-link-text-color);cursor:pointer;display:inline-flex;flex-direction:row;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);justify-content:center;outline:none;padding:0;position:relative;text-decoration:none;vertical-align:middle}.el-link.is-hover-underline:hover:after{border-bottom:1px solid var(--el-link-hover-text-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.el-link.is-underline:after{border-bottom:1px solid var(--el-link-text-color);bottom:0;content:"";height:0;left:0;position:absolute;right:0}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link:hover:after{border-color:var(--el-link-hover-text-color)}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link__inner{align-items:center;display:inline-flex;justify-content:center}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link.is-disabled:after{border-color:var(--el-link-disabled-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{background-color:var(--el-mask-color);bottom:0;left:0;margin:0;position:absolute;right:0;top:0;transition:opacity var(--el-transition-duration);z-index:2000}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size))/2);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-main{--el-main-padding:20px;box-sizing:border-box;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{background-color:var(--el-menu-bg-color);border-right:1px solid var(--el-menu-border-color);box-sizing:border-box;list-style:none;margin:0;padding-left:0;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level)*var(--el-menu-level-padding));white-space:nowrap}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{border-right:none;display:flex;flex-wrap:nowrap;height:var(--el-menu-horizontal-height)}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:1px solid var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{align-items:center;border-bottom:2px solid transparent;color:var(--el-menu-text-color);display:inline-flex;height:100%;justify-content:center;margin:0}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{border-bottom:2px solid transparent;color:var(--el-menu-text-color);height:100%}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{align-items:center;background-color:var(--el-menu-bg-color);color:var(--el-menu-text-color);display:flex;height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);padding:0 10px}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{background-color:var(--el-menu-hover-bg-color);color:var(--el-menu-active-color,var(--el-menu-hover-text-color));outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding)*2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{display:inline-block;height:0;overflow:hidden;visibility:hidden;width:0}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{border:none;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light);min-width:200px;padding:5px 0;z-index:100}.el-menu .el-icon{flex-shrink:0}.el-menu-item{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-menu-item [class^=el-icon]{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{align-items:center;box-sizing:border-box;display:inline-flex;height:100%;left:0;padding:0 var(--el-menu-base-level-padding);position:absolute;top:0;width:100%}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:none}.el-sub-menu__title.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu .el-icon{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{font-size:12px;margin-right:0;margin-top:-6px;position:absolute;right:var(--el-menu-base-level-padding);top:50%;transition:transform var(--el-transition-duration);width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{color:var(--el-text-color-secondary);font-size:12px;line-height:normal;padding:7px 0 7px var(--el-menu-base-level-padding)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{opacity:0;transition:var(--el-transition-duration-fast)}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);backface-visibility:hidden;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);box-shadow:var(--el-messagebox-box-shadow);box-sizing:border-box;display:inline-block;font-size:var(--el-messagebox-font-size);max-width:var(--el-messagebox-width);overflow:hidden;overflow-wrap:break-word;padding:var(--el-messagebox-padding-primary);position:relative;text-align:left;vertical-align:middle;width:100%}.el-message-box:focus{outline:none!important}.el-overlay.is-message-box .el-overlay-message-box{bottom:0;left:0;overflow:auto;padding:16px;position:fixed;right:0;text-align:center;top:0}.el-overlay.is-message-box .el-overlay-message-box:after{content:"";display:inline-block;height:100%;vertical-align:middle;width:0}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size, 16px))}.el-message-box__title{color:var(--el-messagebox-title-color);font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;display:flex;gap:12px}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--primary{--el-messagebox-color:var(--el-color-primary);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0;min-width:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:var(--el-messagebox-padding-primary)}.el-message-box--center .el-message-box__title{align-items:center;display:flex;gap:6px;justify-content:center}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;left:50%;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;top:20px;transform:translate(-50%);transition:opacity var(--el-transition-duration),transform .4s,top .4s;width:fit-content}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--primary{--el-message-bg-color:var(--el-color-primary-light-9);--el-message-border-color:var(--el-color-primary-light-8);--el-message-text-color:var(--el-color-primary)}.el-message--primary .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--primary{color:var(--el-message-text-color)}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size,16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular);background-color:var(--el-bg-color-overlay);border:1px solid var(--el-notification-border-color);border-radius:var(--el-notification-radius);box-shadow:var(--el-notification-shadow);box-sizing:border-box;display:flex;overflow:hidden;overflow-wrap:break-word;padding:var(--el-notification-padding);position:fixed;transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);width:var(--el-notification-width);z-index:9999}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{flex:1;margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right);min-width:0}.el-notification__title{color:var(--el-notification-title-color);font-size:var(--el-notification-title-font-size);font-weight:700;line-height:var(--el-notification-icon-size);margin:0}.el-notification__content{color:var(--el-notification-content-color);font-size:var(--el-notification-content-font-size);line-height:24px;margin:6px 0 0}.el-notification__content p{margin:0}.el-notification .el-notification__icon{flex-shrink:0;font-size:var(--el-notification-icon-size);height:var(--el-notification-icon-size);width:var(--el-notification-icon-size)}.el-notification .el-notification__closeBtn{color:var(--el-notification-close-color);cursor:pointer;font-size:var(--el-notification-close-font-size);position:absolute;right:15px;top:18px}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--primary{--el-notification-icon-color:var(--el-color-primary);color:var(--el-notification-icon-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{background-color:var(--el-overlay-color-lighter);bottom:0;height:100%;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2000}.el-overlay .el-overlay-root{height:0}.el-page-header.is-contentful .el-page-header__main{border-top:1px solid var(--el-border-color-light);margin-top:16px}.el-page-header__header{align-items:center;display:flex;justify-content:space-between;line-height:24px}.el-page-header__left{align-items:center;display:flex;margin-right:40px;position:relative}.el-page-header__back{align-items:center;cursor:pointer;display:flex}.el-page-header__left .el-divider--vertical{margin:0 16px}.el-page-header__icon{align-items:center;display:flex;font-size:16px;margin-right:10px}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{color:var(--el-text-color-primary);font-size:18px}.el-page-header__breadcrumb{margin-bottom:16px}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination button{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination button *{pointer-events:none}.el-pagination button:focus{outline:none}.el-pagination button.is-active,.el-pagination button:hover{color:var(--el-pagination-hover-color)}.el-pagination button.is-active{cursor:default;font-weight:700}.el-pagination button.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination button.is-disabled,.el-pagination button:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination button:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-popconfirm__main{align-items:center;display:flex}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{margin-top:8px;text-align:right}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light)}.el-radio-button,.el-radio-button__inner{display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left:0;border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;padding:8px 15px;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary);align-items:center;display:inline-flex;height:32px}.el-rate:active,.el-rate:focus{outline:none}.el-rate__item{color:var(--el-rate-void-color);cursor:pointer;display:inline-block;font-size:0;line-height:normal;position:relative;vertical-align:middle}.el-rate .el-rate__icon{display:inline-block;font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);position:relative;transition:var(--el-transition-duration)}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{left:0;position:absolute;top:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{color:var(--el-rate-fill-color);display:inline-block;overflow:hidden}.el-rate__decimal,.el-rate__decimal--box{left:0;position:absolute;top:0}.el-rate__text{color:var(--el-rate-text-color);font-size:var(--el-rate-font-size);vertical-align:middle}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate--small .el-rate__icon{font-size:14px}.el-rate.is-disabled .el-rate__item{color:var(--el-rate-disabled-void-color);cursor:auto}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-result-padding);text-align:center}.el-result__icon svg{height:var(--el-result-icon-font-size);width:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{color:var(--el-text-color-primary);font-size:var(--el-result-title-font-size);line-height:1.3;margin:0}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1.3;margin:0}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-row{box-sizing:border-box;display:flex;flex-wrap:wrap;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-select-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty,.el-select-dropdown__loading{color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0;text-align:center}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:6px 0}.el-select-dropdown__list.el-vl__window{margin:6px 0;padding:0}.el-select-dropdown__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__item{box-sizing:border-box;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);height:34px;line-height:34px;overflow:hidden;padding:0 32px 0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-select-dropdown__item.is-hovering{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.is-selected{color:var(--el-color-primary);font-weight:700}.el-select-dropdown__item.is-disabled{background-color:unset;color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:"";height:12px;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-disabled:after{background-color:var(--el-text-color-placeholder)}.el-select-group{margin:0;padding:0}.el-select-group__wrap{list-style:none;margin:0;padding:0;position:relative}.el-select-group__title{box-sizing:border-box;color:var(--el-color-info);font-size:12px;line-height:34px;overflow:hidden;padding:0 20px;text-overflow:ellipsis;white-space:nowrap}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-color:var(--el-disabled-text-color);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px;--el-select-width:100%;display:inline-block;position:relative;vertical-align:middle;width:var(--el-select-width)}.el-select__wrapper{align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:14px;gap:6px;line-height:24px;min-height:32px;padding:4px 12px;position:relative;text-align:left;transform:translateZ(0);transition:var(--el-transition-duration)}.el-select__wrapper.is-filterable{cursor:text}.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-select__wrapper.is-disabled{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select__wrapper.is-disabled,.el-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-select__wrapper.is-disabled .el-select__selected-item{color:var(--el-select-disabled-color)}.el-select__wrapper.is-disabled .el-select__caret,.el-select__wrapper.is-disabled .el-tag,.el-select__wrapper.is-disabled input{cursor:not-allowed}.el-select__prefix,.el-select__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;gap:6px}.el-select__caret{color:var(--el-select-input-color);cursor:pointer;font-size:var(--el-select-input-font-size);transform:rotate(0);transition:var(--el-transition-duration)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__clear{cursor:pointer}.el-select__clear:hover{color:var(--el-select-close-hover-color)}.el-select__selection{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:6px;min-width:0;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{border-color:transparent;cursor:pointer}.el-select__selection .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-select__selection .el-tag .el-tag__content{min-width:0}.el-select__selected-item{display:flex;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.el-select__tags-text{line-height:normal}.el-select__placeholder,.el-select__tags-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-select__placeholder{color:var(--el-input-text-color,var(--el-text-color-regular));position:absolute;top:50%;transform:translateY(-50%);width:100%;z-index:-1}.el-select__placeholder.is-transparent{color:var(--el-text-color-placeholder);-webkit-user-select:none;user-select:none}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper,.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select__input-wrapper{flex:1}.el-select__input-wrapper.is-hidden{opacity:0;position:absolute;z-index:-1}.el-select__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-select-multiple-input-color);font-family:inherit;font-size:inherit;height:24px;outline:none;padding:0;width:100%}.el-select__input.is-disabled{cursor:not-allowed}.el-select__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-select--large .el-select__wrapper{font-size:14px;gap:6px;line-height:24px;min-height:40px;padding:8px 16px}.el-select--large .el-select__selection{gap:6px}.el-select--large .el-select__selection.is-near{margin-left:-8px}.el-select--large .el-select__prefix,.el-select--large .el-select__suffix{gap:6px}.el-select--large .el-select__input{height:24px}.el-select--small .el-select__wrapper{font-size:12px;gap:4px;line-height:20px;min-height:24px;padding:2px 8px}.el-select--small .el-select__selection{gap:4px}.el-select--small .el-select__selection.is-near{margin-left:-6px}.el-select--small .el-select__prefix,.el-select--small .el-select__suffix{gap:4px}.el-select--small .el-select__input{height:20px}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);border-radius:var(--el-border-radius-base);display:inline-block;height:16px;width:100%}.el-skeleton__circle{border-radius:50%;height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size);width:var(--el-skeleton-circle-size)}.el-skeleton__button{border-radius:4px;height:40px;width:64px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{height:var(--el-font-size-small);width:100%}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{align-items:center;border-radius:0;display:flex;justify-content:center;width:unset}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:22%;width:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{background:var(--el-skeleton-color);height:16px;margin-top:16px}.el-skeleton.is-animated .el-skeleton__item{animation:el-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1);cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translate(-50%);-webkit-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translate(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translate(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{display:inline-flex;vertical-align:top}.el-space__item{display:flex;flex-wrap:wrap}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{white-space:nowrap;width:100%}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;height:50px;width:50px}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-step{flex-shrink:1;position:relative}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-grow:0;flex-shrink:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{border-color:var(--el-text-color-primary);color:var(--el-text-color-primary)}.el-step__head.is-wait{border-color:var(--el-text-color-placeholder);color:var(--el-text-color-placeholder)}.el-step__head.is-success{border-color:var(--el-color-success);color:var(--el-color-success)}.el-step__head.is-error{border-color:var(--el-color-danger);color:var(--el-color-danger)}.el-step__head.is-finish{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-step__icon{align-items:center;background:var(--el-bg-color);box-sizing:border-box;display:inline-flex;font-size:14px;height:24px;justify-content:center;position:relative;transition:.15s ease-out;width:24px;z-index:1}.el-step__icon.is-text{border:2px solid;border-radius:50%}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{color:inherit;display:inline-block;font-weight:700;line-height:1;text-align:center;-webkit-user-select:none;user-select:none}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{background-color:var(--el-text-color-placeholder);border-color:currentColor;position:absolute}.el-step__line-inner{border:1px solid;box-sizing:border-box;display:block;height:0;transition:.15s ease-out;width:0}.el-step__main{text-align:left;white-space:normal}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{color:var(--el-text-color-primary);font-weight:700}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{font-size:12px;font-weight:400;line-height:20px;margin-top:-5px;padding-right:10%}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;left:0;right:0;top:11px}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{flex-grow:1;padding-left:10px}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{bottom:0;left:11px;top:0;width:2px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{align-items:center;display:flex}.el-step.is-simple .el-step__head{font-size:0;padding-right:10px;width:auto}.el-step.is-simple .el-step__icon{background:transparent;font-size:12px;height:16px;width:16px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{align-items:stretch;display:flex;flex-grow:1;position:relative}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;overflow-wrap:break-word}.el-step.is-simple .el-step__arrow{align-items:center;display:flex;flex-grow:1;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{background:var(--el-text-color-placeholder);content:"";display:inline-block;height:15px;position:absolute;width:1px}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{display:flex}.el-steps--simple{background:var(--el-fill-color-light);border-radius:4px;padding:13px 8%}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{flex-flow:column;height:100%}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);align-items:center;display:inline-flex;font-size:14px;height:32px;line-height:20px;position:relative;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{color:var(--el-text-color-primary);cursor:pointer;display:inline-block;font-size:14px;font-weight:500;height:20px;transition:var(--el-transition-duration-fast);vertical-align:middle}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{display:inline-block;font-size:14px;line-height:1}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{height:0;margin:0;opacity:0;position:absolute;width:0}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{align-items:center;background:var(--el-switch-off-color);border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));border-radius:10px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:20px;min-width:40px;outline:none;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration)}.el-switch__core .el-switch__inner{align-items:center;display:flex;height:16px;justify-content:center;overflow:hidden;padding:0 4px 0 18px;transition:all var(--el-transition-duration);width:100%}.el-switch__core .el-switch__inner .is-icon,.el-switch__core .el-switch__inner .is-text{color:var(--el-color-white);font-size:12px;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-switch__core .el-switch__action{align-items:center;background-color:var(--el-color-white);border-radius:var(--el-border-radius-circle);color:var(--el-switch-off-color);display:flex;height:16px;justify-content:center;left:1px;position:absolute;transition:all var(--el-transition-duration);width:16px}.el-switch.is-checked .el-switch__core{background-color:var(--el-switch-on-color);border-color:var(--el-switch-border-color,var(--el-switch-on-color))}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;height:40px;line-height:24px}.el-switch--large .el-switch__label{font-size:14px;height:24px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;height:24px;min-width:50px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{height:20px;width:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{font-size:12px;height:24px;line-height:16px}.el-switch--small .el-switch__label{font-size:12px;height:16px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;height:16px;min-width:30px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{height:12px;width:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#fff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;padding:0 10px}.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{background:transparent;border:none;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button:focus{outline:none}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:var(--el-font-size-base);height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;user-select:none}.el-table__expand-icon{color:var(--el-text-color-regular);cursor:pointer;font-size:12px;height:20px;position:relative;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:"";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:"";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:-1px;box-shadow:none;content:"";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{align-items:center;cursor:pointer;display:inline-flex;flex-direction:column;height:14px;overflow:initial;position:relative;vertical-align:middle;width:24px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{cursor:pointer;display:inline-block}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;height:12px;line-height:12px;margin-right:8px;text-align:center;width:12px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-v2{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);font-size:var(--el-font-size-base)}.el-table-v2 *{box-sizing:border-box}.el-table-v2__root{position:relative}.el-table-v2__root:hover .el-table-v2__main .el-virtual-scrollbar{opacity:1}.el-table-v2__main{background-color:var(--el-bg-color);display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__main .el-vl__horizontal,.el-table-v2__main .el-vl__vertical{z-index:2}.el-table-v2__left{background-color:var(--el-bg-color);box-shadow:2px 0 4px #0000000f;display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__left .el-virtual-scrollbar{opacity:0}.el-table-v2__left .el-vl__horizontal,.el-table-v2__left .el-vl__vertical{z-index:-1}.el-table-v2__right{background-color:var(--el-bg-color);box-shadow:-2px 0 4px #0000000f;display:flex;flex-direction:column-reverse;overflow:hidden;position:absolute;right:0;top:0}.el-table-v2__right .el-virtual-scrollbar{opacity:0}.el-table-v2__right .el-vl__horizontal,.el-table-v2__right .el-vl__vertical{z-index:-1}.el-table-v2__header-row,.el-table-v2__row{padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__header-wrapper{overflow:hidden}.el-table-v2__header{overflow:hidden;position:relative}.el-table-v2__header .el-checkbox{z-index:0}.el-table-v2__footer{bottom:0;overflow:hidden;right:0}.el-table-v2__empty,.el-table-v2__footer,.el-table-v2__overlay{left:0;position:absolute}.el-table-v2__overlay{bottom:0;right:0;top:0;z-index:9999}.el-table-v2__header-row{border-bottom:var(--el-table-border);display:flex}.el-table-v2__header-cell{align-items:center;background-color:var(--el-table-header-bg-color);color:var(--el-table-header-text-color);display:flex;font-weight:700;height:100%;overflow:hidden;padding:0 8px;-webkit-user-select:none;user-select:none}.el-table-v2__header-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__header-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__header-cell.is-sortable{cursor:pointer}.el-table-v2__header-cell:hover .el-icon{display:block}.el-table-v2__sort-icon{display:none;opacity:.6;transition:opacity,display var(--el-transition-duration)}.el-table-v2__sort-icon.is-sorting{display:block;opacity:1}.el-table-v2__row{align-items:center;border-bottom:var(--el-table-border);display:flex;transition:background-color var(--el-transition-duration)}.el-table-v2__row.is-hovered,.el-table-v2__row:hover{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row-cell{align-items:center;display:flex;height:100%;overflow:hidden;padding:0 8px}.el-table-v2__row-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__row-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__expand-icon{cursor:pointer;margin:0 4px;-webkit-user-select:none;user-select:none}.el-table-v2__expand-icon svg{transition:transform var(--el-transition-duration)}.el-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.el-table-v2:not(.is-dynamic) .el-table-v2__cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-table-v2.is-dynamic .el-table-v2__row{align-items:stretch;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row .el-table-v2__row-cell{overflow-wrap:break-word}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;flex-shrink:0;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:"";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--bottom .el-tabs__nav,.el-tabs--top .el-tabs__nav{height:var(--el-tabs-header-height)}.el-tabs--left{flex-direction:row}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--left>.el-tabs__content+.el-tabs__header{order:-1}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--top{flex-direction:column}.el-tabs--top>.el-tabs__content+.el-tabs__header{order:-1}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translate(100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translate(-100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(-100%);transform-origin:0 0}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;align-items:center;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);border-radius:var(--el-tag-border-radius);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--el-tag-text-color);display:inline-flex;font-size:var(--el-tag-font-size);height:24px;justify-content:center;line-height:1;padding:0 9px;vertical-align:middle;white-space:nowrap;--el-icon-size:14px}.el-tag,.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{background-color:var(--el-tag-hover-color);color:var(--el-color-white)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{margin-left:6px}.el-tag--dark{--el-tag-text-color:var(--el-color-white)}.el-tag--dark,.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info,.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{height:32px;padding:0 11px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{height:20px;padding:0 7px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);align-self:center;color:var(--el-text-color);font-size:var(--el-text-font-size);margin:0;overflow-wrap:break-word;padding:0}.el-text.is-truncated{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{margin:0;max-height:200px}.time-select-item{font-size:14px;line-height:20px;padding:8px 10px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);cursor:pointer;font-weight:700}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{padding-bottom:20px;position:relative}.el-timeline-item__wrapper{padding-left:28px;position:relative;top:-3px}.el-timeline-item__tail{border-left:2px solid var(--el-timeline-node-color);height:100%;left:4px;position:absolute}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{align-items:center;background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;position:absolute}.el-timeline-item__node--normal{height:var(--el-timeline-node-size-normal);left:-1px;width:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{height:var(--el-timeline-node-size-large);left:-2px;width:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{align-items:center;display:flex;justify-content:center;position:absolute}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);font-size:var(--el-font-size-small);line-height:1}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light);font-size:var(--el-font-size-base);list-style:none;margin:0}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{align-items:center;display:flex}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{display:block;height:calc(50% - 10px)}.el-tooltip-v2__content{--el-tooltip-v2-padding:5px 10px;--el-tooltip-v2-border-radius:4px;--el-tooltip-v2-border-color:var(--el-border-color);background-color:var(--el-color-white);border:1px solid var(--el-border-color);border-radius:var(--el-tooltip-v2-border-radius);color:var(--el-color-black);padding:var(--el-tooltip-v2-padding)}.el-tooltip-v2__arrow{color:var(--el-color-white);height:var(--el-tooltip-v2-arrow-height);left:var(--el-tooltip-v2-arrow-x);pointer-events:none;position:absolute;top:var(--el-tooltip-v2-arrow-y);width:var(--el-tooltip-v2-arrow-width)}.el-tooltip-v2__arrow:after,.el-tooltip-v2__arrow:before{border:var(--el-tooltip-v2-arrow-border-width) solid transparent;content:"";height:0;position:absolute;width:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow{bottom:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:before{border-bottom:0;border-top-color:var(--el-color-white);border-top-width:var(--el-tooltip-v2-arrow-border-width);top:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:after{border-bottom:0;border-top-color:var(--el-border-color);border-top-width:var(--el-tooltip-v2-arrow-border-width);top:100%;z-index:-1}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow{top:0}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:before{border-bottom-color:var(--el-color-white);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:after{border-bottom-color:var(--el-border-color);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:100%;z-index:-1}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow{right:0}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:before{border-left-color:var(--el-color-white);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:after{border-left-color:var(--el-border-color);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:100%;z-index:-1}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow{left:0}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:before{border-left:0;border-right-color:var(--el-color-white);border-right-width:var(--el-tooltip-v2-arrow-border-width);right:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:after{border-left:0;border-right-color:var(--el-border-color);border-right-width:var(--el-tooltip-v2-arrow-border-width);right:100%;z-index:-1}.el-tooltip-v2__content.is-dark{--el-tooltip-v2-border-color:transparent;color:var(--el-color-white)}.el-tooltip-v2__content.is-dark,.el-tooltip-v2__content.is-dark .el-tooltip-v2__arrow{background-color:var(--el-color-black);border-color:transparent}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px;font-size:var(--el-font-size-base)}.el-transfer__buttons{display:inline-block;padding:0 30px;vertical-align:middle}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{background:var(--el-bg-color-overlay);box-sizing:border-box;display:inline-block;max-height:100%;overflow:hidden;position:relative;text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width)}.el-transfer-panel__body{border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);height:var(--el-transfer-panel-body-height);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.el-transfer-panel__list{box-sizing:border-box;height:var(--el-transfer-panel-body-height);list-style:none;margin:0;overflow:auto;padding:6px 0}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{display:block!important;height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular)}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{box-sizing:border-box;display:block;line-height:var(--el-transfer-item-height);overflow:hidden;padding-left:22px;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{box-sizing:border-box;padding:15px;text-align:center}.el-transfer-panel__filter .el-input__inner{box-sizing:border-box;display:inline-block;font-size:12px;height:var(--el-transfer-filter-height);width:100%}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{align-items:center;background:var(--el-transfer-panel-header-bg-color);border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black);display:flex;height:var(--el-transfer-panel-header-height);margin:0;padding-left:15px}.el-transfer-panel .el-transfer-panel__header .el-checkbox{align-items:center;display:flex;position:relative;width:100%}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{color:var(--el-text-color-primary);font-size:16px;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{color:var(--el-text-color-secondary);font-size:12px;font-weight:400;position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0)}.el-transfer-panel .el-transfer-panel__footer{background:var(--el-bg-color-overlay);border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);height:var(--el-transfer-panel-footer-height);margin:0;padding:0}.el-transfer-panel .el-transfer-panel__footer:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{color:var(--el-text-color-regular);padding-left:20px}.el-transfer-panel .el-transfer-panel__empty{color:var(--el-text-color-secondary);height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);margin:0;padding:6px 15px 0;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{border-radius:3px;height:14px;width:14px}.el-transfer-panel .el-checkbox__inner:after{height:6px;left:4px;width:3px}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);background:var(--el-fill-color-blank);color:var(--el-tree-text-color);cursor:default;font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{height:100%;min-height:60px;position:relative;text-align:center;width:100%}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;left:0;position:absolute;right:0}.el-tree-node{outline:none;white-space:nowrap}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);align-items:center;cursor:pointer;display:flex;height:var(--el-tree-node-content-height)}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{color:var(--el-tree-expand-icon-color);cursor:pointer;font-size:12px;transform:rotate(0);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{color:var(--el-tree-expand-icon-color);font-size:var(--el-font-size-base);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:transparent;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__list>.el-select-dropdown__item{padding-left:32px}.el-tree-select__popper .el-select-dropdown__item{background:transparent!important;flex:1;height:20px;line-height:20px;padding-left:0}.el-upload{--el-upload-dragger-padding-horizontal:40px;--el-upload-dragger-padding-vertical:10px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{--el-upload-picture-card-size:148px;align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-horizontal) var(--el-upload-dragger-padding-vertical);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-horizontal) - 1px) calc(var(--el-upload-dragger-padding-vertical) - 1px)}.el-upload-list{list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{--el-upload-list-picture-card-size:148px;display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-vl__wrapper{position:relative}.el-vl__wrapper.always-on .el-virtual-scrollbar,.el-vl__wrapper:hover .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-virtual-scrollbar.always-on{opacity:1}.el-vg__wrapper{position:relative}.el-statistic{--el-statistic-title-font-weight:400;--el-statistic-title-font-size:var(--el-font-size-extra-small);--el-statistic-title-color:var(--el-text-color-regular);--el-statistic-content-font-weight:400;--el-statistic-content-font-size:var(--el-font-size-extra-large);--el-statistic-content-color:var(--el-text-color-primary)}.el-statistic__head{color:var(--el-statistic-title-color);font-size:var(--el-statistic-title-font-size);font-weight:var(--el-statistic-title-font-weight);line-height:20px;margin-bottom:4px}.el-statistic__content{color:var(--el-statistic-content-color);font-size:var(--el-statistic-content-font-size);font-weight:var(--el-statistic-content-font-weight)}.el-statistic__value{display:inline-block}.el-statistic__prefix{display:inline-block;margin-right:4px}.el-statistic__suffix{display:inline-block;margin-left:4px}.el-tour{--el-tour-width:520px;--el-tour-padding-primary:12px;--el-tour-font-line-height:var(--el-font-line-height-primary);--el-tour-title-font-size:16px;--el-tour-title-text-color:var(--el-text-color-primary);--el-tour-title-font-weight:400;--el-tour-close-color:var(--el-color-info);--el-tour-font-size:14px;--el-tour-color:var(--el-text-color-primary);--el-tour-bg-color:var(--el-bg-color);--el-tour-border-radius:4px}.el-tour__hollow{transition:all var(--el-transition-duration) ease}.el-tour__content{border-radius:var(--el-tour-border-radius);box-shadow:var(--el-box-shadow-light);outline:none;overflow-wrap:break-word;padding:var(--el-tour-padding-primary);width:var(--el-tour-width)}.el-tour__arrow,.el-tour__content{background:var(--el-tour-bg-color);box-sizing:border-box}.el-tour__arrow{height:10px;pointer-events:none;position:absolute;transform:rotate(45deg);width:10px}.el-tour__content[data-side^=top] .el-tour__arrow{border-left-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=bottom] .el-tour__arrow{border-bottom-color:transparent;border-right-color:transparent}.el-tour__content[data-side^=left] .el-tour__arrow{border-bottom-color:transparent;border-left-color:transparent}.el-tour__content[data-side^=right] .el-tour__arrow{border-right-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=top] .el-tour__arrow{bottom:-5px}.el-tour__content[data-side^=bottom] .el-tour__arrow{top:-5px}.el-tour__content[data-side^=left] .el-tour__arrow{right:-5px}.el-tour__content[data-side^=right] .el-tour__arrow{left:-5px}.el-tour__closebtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-tour__closebtn .el-tour__close{color:var(--el-tour-close-color);font-size:inherit}.el-tour__closebtn:focus .el-tour__close,.el-tour__closebtn:hover .el-tour__close{color:var(--el-color-primary)}.el-tour__header{padding-bottom:var(--el-tour-padding-primary)}.el-tour__header.show-close{padding-right:calc(var(--el-tour-padding-primary) + var(--el-message-close-size, 16px))}.el-tour__title{color:var(--el-tour-title-text-color);font-size:var(--el-tour-title-font-size);font-weight:var(--el-tour-title-font-weight);line-height:var(--el-tour-font-line-height)}.el-tour__body{color:var(--el-tour-text-color);font-size:var(--el-tour-font-size)}.el-tour__body img,.el-tour__body video{max-width:100%}.el-tour__footer{box-sizing:border-box;display:flex;justify-content:space-between;padding-top:var(--el-tour-padding-primary)}.el-tour__content .el-tour-indicators{display:inline-block;flex:1}.el-tour__content .el-tour-indicator{background:var(--el-color-info-light-9);border-radius:50%;display:inline-block;height:6px;margin-right:6px;width:6px}.el-tour__content .el-tour-indicator.is-active{background:var(--el-color-primary)}.el-tour.el-tour--primary{--el-tour-title-text-color:#fff;--el-tour-text-color:#fff;--el-tour-bg-color:var(--el-color-primary);--el-tour-close-color:#fff}.el-tour.el-tour--primary .el-tour__closebtn:focus .el-tour__close,.el-tour.el-tour--primary .el-tour__closebtn:hover .el-tour__close{color:var(--el-tour-title-text-color)}.el-tour.el-tour--primary .el-button--default{background:#fff;border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-tour.el-tour--primary .el-button--primary{border-color:#fff}.el-tour.el-tour--primary .el-tour-indicator{background:#ffffff26}.el-tour.el-tour--primary .el-tour-indicator.is-active{background:#fff}.el-tour-parent--hidden{overflow:hidden}.el-anchor{--el-anchor-bg-color:var(--el-bg-color);--el-anchor-padding-indent:14px;--el-anchor-line-height:22px;--el-anchor-font-size:12px;--el-anchor-color:var(--el-text-color-secondary);--el-anchor-active-color:var(--el-color-primary);--el-anchor-marker-bg-color:var(--el-color-primary);background-color:var(--el-anchor-bg-color);position:relative}.el-anchor__marker{background-color:var(--el-anchor-marker-bg-color);border-radius:4px;opacity:0;position:absolute;z-index:0}.el-anchor.el-anchor--vertical .el-anchor__marker{height:14px;left:0;top:8px;transition:top .25s ease-in-out,opacity .25s;width:4px}.el-anchor.el-anchor--vertical .el-anchor__list{padding-left:var(--el-anchor-padding-indent)}.el-anchor.el-anchor--vertical.el-anchor--underline:before{background-color:#0505050f;content:"";height:100%;left:0;position:absolute;width:2px}.el-anchor.el-anchor--vertical.el-anchor--underline .el-anchor__marker{border-radius:unset;width:2px}.el-anchor.el-anchor--horizontal .el-anchor__marker{bottom:0;height:2px;transition:left .25s ease-in-out,opacity .25s,width .25s;width:20px}.el-anchor.el-anchor--horizontal .el-anchor__list{display:flex;padding-bottom:4px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item{padding-left:16px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item:first-child{padding-left:0}.el-anchor.el-anchor--horizontal.el-anchor--underline:before{background-color:#0505050f;bottom:0;content:"";height:2px;position:absolute;width:100%}.el-anchor.el-anchor--horizontal.el-anchor--underline .el-anchor__marker{border-radius:unset;height:2px}.el-anchor__item{display:flex;flex-direction:column;overflow:hidden}.el-anchor__link{cursor:pointer;font-size:var(--el-anchor-font-size);line-height:var(--el-anchor-line-height);max-width:100%;outline:none;overflow:hidden;padding:4px 0;text-decoration:none;text-overflow:ellipsis;transition:color var(--el-transition-duration);white-space:nowrap}.el-anchor__link,.el-anchor__link:focus,.el-anchor__link:hover{color:var(--el-anchor-color)}.el-anchor__link.is-active{color:var(--el-anchor-active-color)}.el-anchor .el-anchor__list .el-anchor__item a{display:inline-block}.el-segmented--vertical{flex-direction:column}.el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented{--el-segmented-color:var(--el-text-color-regular);--el-segmented-bg-color:var(--el-fill-color-light);--el-segmented-padding:2px;--el-segmented-item-selected-color:var(--el-color-white);--el-segmented-item-selected-bg-color:var(--el-color-primary);--el-segmented-item-selected-disabled-bg-color:var(--el-color-primary-light-5);--el-segmented-item-hover-color:var(--el-text-color-primary);--el-segmented-item-hover-bg-color:var(--el-fill-color-dark);--el-segmented-item-active-bg-color:var(--el-fill-color-darker);--el-segmented-item-disabled-color:var(--el-text-color-placeholder);align-items:stretch;background:var(--el-segmented-bg-color);border-radius:var(--el-border-radius-base);box-sizing:border-box;color:var(--el-segmented-color);display:inline-flex;font-size:14px;min-height:32px;padding:var(--el-segmented-padding)}.el-segmented__group{align-items:stretch;display:flex;position:relative;width:100%}.el-segmented__item-selected{background:var(--el-segmented-item-selected-bg-color);border-radius:calc(var(--el-border-radius-base) - 2px);height:100%;left:0;pointer-events:none;position:absolute;top:0;transition:all .3s;width:10px}.el-segmented__item-selected.is-disabled{background:var(--el-segmented-item-selected-disabled-bg-color)}.el-segmented__item-selected.is-focus-visible:before{border-radius:inherit;content:"";top:0;right:0;bottom:0;left:0;outline:2px solid var(--el-segmented-item-selected-bg-color);outline-offset:1px;position:absolute}.el-segmented__item{align-items:center;border-radius:calc(var(--el-border-radius-base) - 2px);cursor:pointer;display:flex;flex:1;padding:0 11px}.el-segmented__item:not(.is-disabled):not(.is-selected):hover{background:var(--el-segmented-item-hover-bg-color);color:var(--el-segmented-item-hover-color)}.el-segmented__item:not(.is-disabled):not(.is-selected):active{background:var(--el-segmented-item-active-bg-color)}.el-segmented__item.is-selected,.el-segmented__item.is-selected.is-disabled{color:var(--el-segmented-item-selected-color)}.el-segmented__item.is-disabled{color:var(--el-segmented-item-disabled-color);cursor:not-allowed}.el-segmented__item-input{height:0;margin:0;opacity:0;pointer-events:none;position:absolute;width:0}.el-segmented__item-label{flex:1;line-height:normal;overflow:hidden;text-align:center;text-overflow:ellipsis;transition:color .3s;white-space:nowrap;z-index:1}.el-segmented.is-block{display:flex}.el-segmented.is-block .el-segmented__item{min-width:0}.el-segmented--large{border-radius:var(--el-border-radius-base);font-size:16px;min-height:40px}.el-segmented--large .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 2px)}.el-segmented--large .el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented--large .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 2px);padding:0 11px}.el-segmented--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:14px;min-height:24px}.el-segmented--small .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 3px)}.el-segmented--small .el-segmented--vertical .el-segmented__item{padding:7px}.el-segmented--small .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 3px);padding:0 7px}.el-mention{position:relative;width:100%}.el-mention__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-mention__popper.el-popper,.el-mention__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-mention__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-mention-dropdown{--el-mention-font-size:var(--el-font-size-base);--el-mention-bg-color:var(--el-bg-color-overlay);--el-mention-shadow:var(--el-box-shadow-light);--el-mention-border:1px solid var(--el-border-color-light);--el-mention-option-color:var(--el-text-color-regular);--el-mention-option-height:34px;--el-mention-option-min-width:100px;--el-mention-option-hover-background:var(--el-fill-color-light);--el-mention-option-selected-color:var(--el-color-primary);--el-mention-option-disabled-color:var(--el-text-color-placeholder);--el-mention-option-loading-color:var(--el-text-color-secondary);--el-mention-option-loading-padding:10px 0;--el-mention-max-height:174px;--el-mention-padding:6px 0;--el-mention-header-padding:10px;--el-mention-footer-padding:10px}.el-mention-dropdown__item{box-sizing:border-box;color:var(--el-mention-option-color);cursor:pointer;font-size:var(--el-mention-font-size);height:var(--el-mention-option-height);line-height:var(--el-mention-option-height);min-width:var(--el-mention-option-min-width);overflow:hidden;padding:0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-mention-dropdown__item.is-hovering{background-color:var(--el-mention-option-hover-background)}.el-mention-dropdown__item.is-selected{color:var(--el-mention-option-selected-color);font-weight:700}.el-mention-dropdown__item.is-disabled{background-color:unset;color:var(--el-mention-option-disabled-color);cursor:not-allowed}.el-mention-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-mention-dropdown__loading{color:var(--el-mention-option-loading-color);font-size:12px;margin:0;min-width:var(--el-mention-option-min-width);padding:10px 0;text-align:center}.el-mention-dropdown__wrap{max-height:var(--el-mention-max-height)}.el-mention-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:var(--el-mention-padding)}.el-mention-dropdown__header{border-bottom:var(--el-mention-border);padding:var(--el-mention-header-padding)}.el-mention-dropdown__footer{border-top:var(--el-mention-border);padding:var(--el-mention-footer-padding)}.el-splitter{display:flex;height:100%;margin:0;padding:0;position:relative;width:100%}.el-splitter__mask{top:0;right:0;bottom:0;left:0;position:absolute;z-index:999}.el-splitter__mask-horizontal{cursor:col-resize}.el-splitter__mask-vertical{cursor:row-resize}.el-splitter__horizontal{flex-direction:row}.el-splitter__vertical{flex-direction:column}.el-splitter-bar{flex:none;position:relative;-webkit-user-select:none;user-select:none}.el-splitter-bar__disable{cursor:auto!important}.el-splitter-bar__disable:before{background-color:var(--el-border-color-light)!important}.el-splitter-bar__dragger{background:transparent;z-index:1}.el-splitter-bar__dragger,.el-splitter-bar__dragger:before{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-splitter-bar__dragger:before{background-color:var(--el-border-color-light);content:""}.el-splitter-bar__dragger:hover:before{background-color:var(--el-color-primary-light-5)}.el-splitter-bar__dragger-horizontal:before{height:100%;width:2px}.el-splitter-bar__dragger-vertical:before{height:2px;width:100%}.el-splitter-bar__dragger-active:before{background-color:var(--el-color-primary-light-3)}.el-splitter-bar:hover .el-splitter-bar__collapse-icon{opacity:1}.el-splitter-bar__collapse-icon{align-items:center;background:var(--el-border-color-light);border-radius:2px;cursor:pointer;display:flex;justify-content:center;opacity:0;position:absolute;z-index:9}.el-splitter-bar__collapse-icon:hover{background-color:var(--el-color-primary-light-5);opacity:1}.el-splitter-bar__horizontal-collapse-icon-start{height:24px;left:-12px;top:50%;transform:translate(-50%,-50%);width:16px}.el-splitter-bar__horizontal-collapse-icon-end{height:24px;left:12px;top:50%;transform:translate(-50%,-50%);width:16px}.el-splitter-bar__vertical-collapse-icon-start{height:16px;right:50%;top:-12px;transform:translate(50%,-50%);width:24px}.el-splitter-bar__vertical-collapse-icon-end{height:16px;right:50%;top:12px;transform:translate(50%,-50%);width:24px}.el-splitter-panel{box-sizing:border-box;flex-grow:0;overflow:auto;scrollbar-width:thin}html.dark{color-scheme:dark;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(51,117,185);--el-color-primary-light-5:rgb(42,89,138);--el-color-primary-light-7:rgb(33,61,91);--el-color-primary-light-8:rgb(29,48,67);--el-color-primary-light-9:rgb(24,34,43);--el-color-primary-dark-2:rgb(102,177,255);--el-color-success:#67c23a;--el-color-success-light-3:rgb(78,142,47);--el-color-success-light-5:rgb(62,107,39);--el-color-success-light-7:rgb(45,72,31);--el-color-success-light-8:rgb(37,55,28);--el-color-success-light-9:rgb(28,37,24);--el-color-success-dark-2:rgb(133,206,97);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(167,119,48);--el-color-warning-light-5:rgb(125,91,40);--el-color-warning-light-7:rgb(83,63,32);--el-color-warning-light-8:rgb(62,48,28);--el-color-warning-light-9:rgb(41,34,24);--el-color-warning-dark-2:rgb(235,181,99);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(178,82,82);--el-color-danger-light-5:rgb(133,64,64);--el-color-danger-light-7:rgb(88,46,46);--el-color-danger-light-8:rgb(65,38,38);--el-color-danger-light-9:rgb(42,29,29);--el-color-danger-dark-2:rgb(247,137,137);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(178,82,82);--el-color-error-light-5:rgb(133,64,64);--el-color-error-light-7:rgb(88,46,46);--el-color-error-light-8:rgb(65,38,38);--el-color-error-light-9:rgb(42,29,29);--el-color-error-dark-2:rgb(247,137,137);--el-color-info:#909399;--el-color-info-light-3:rgb(107,109,113);--el-color-info-light-5:rgb(82,84,87);--el-color-info-light-7:rgb(57,58,60);--el-color-info-light-8:rgb(45,45,47);--el-color-info-light-9:rgb(32,33,33);--el-color-info-dark-2:rgb(166,169,173);--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.36),0px 8px 20px rgba(0,0,0,.72);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.72);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.72);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.72),0px 12px 32px #000000,0px 8px 16px -8px #000000;--el-bg-color-page:#0a0a0a;--el-bg-color:#141414;--el-bg-color-overlay:#1d1e1f;--el-text-color-primary:#E5EAF3;--el-text-color-regular:#CFD3DC;--el-text-color-secondary:#A3A6AD;--el-text-color-placeholder:#8D9095;--el-text-color-disabled:#6C6E72;--el-border-color-darker:#636466;--el-border-color-dark:#58585B;--el-border-color:#4C4D4F;--el-border-color-light:#414243;--el-border-color-lighter:#363637;--el-border-color-extra-light:#2B2B2C;--el-fill-color-darker:#424243;--el-fill-color-dark:#39393A;--el-fill-color:#303030;--el-fill-color-light:#262727;--el-fill-color-lighter:#1D1D1D;--el-fill-color-extra-light:#191919;--el-fill-color-blank:transparent;--el-mask-color:rgba(0,0,0,.8);--el-mask-color-extra-light:rgba(0,0,0,.3)}html.dark .el-button{--el-button-disabled-text-color:rgba(255,255,255,.5)}html.dark .el-card{--el-card-bg-color:var(--el-bg-color-overlay)}html.dark .el-empty{--el-empty-fill-color-0:var(--el-color-black);--el-empty-fill-color-1:#4b4b52;--el-empty-fill-color-2:#36383d;--el-empty-fill-color-3:#1e1e20;--el-empty-fill-color-4:#262629;--el-empty-fill-color-5:#202124;--el-empty-fill-color-6:#212224;--el-empty-fill-color-7:#1b1c1f;--el-empty-fill-color-8:#1c1d1f;--el-empty-fill-color-9:#18181a}:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121,187,255);--el-color-primary-light-5:rgb(160,207,255);--el-color-primary-light-7:rgb(198,226,255);--el-color-primary-light-8:rgb(217,236,255);--el-color-primary-light-9:rgb(236,245,255);--el-color-primary-dark-2:rgb(51,126,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(149,212,117);--el-color-success-light-5:rgb(179,225,157);--el-color-success-light-7:rgb(209,237,196);--el-color-success-light-8:rgb(225,243,216);--el-color-success-light-9:rgb(240,249,235);--el-color-success-dark-2:rgb(82,155,46);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(238,190,119);--el-color-warning-light-5:rgb(243,209,158);--el-color-warning-light-7:rgb(248,227,197);--el-color-warning-light-8:rgb(250,236,216);--el-color-warning-light-9:rgb(253,246,236);--el-color-warning-dark-2:rgb(184,130,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152,152);--el-color-danger-light-5:rgb(250,182,182);--el-color-danger-light-7:rgb(252,211,211);--el-color-danger-light-8:rgb(253,226,226);--el-color-danger-light-9:rgb(254,240,240);--el-color-danger-dark-2:rgb(196,86,86);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152,152);--el-color-error-light-5:rgb(250,182,182);--el-color-error-light-7:rgb(252,211,211);--el-color-error-light-8:rgb(253,226,226);--el-color-error-light-9:rgb(254,240,240);--el-color-error-dark-2:rgb(196,86,86);--el-color-info:#909399;--el-color-info-light-3:rgb(177,179,184);--el-color-info-light-5:rgb(200,201,204);--el-color-info-light-7:rgb(222,223,224);--el-color-info-light-8:rgb(233,233,235);--el-color-info-light-9:rgb(244,244,245);--el-color-info-dark-2:rgb(115,118,122);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-date-table{font-size:12px;-webkit-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;cursor:pointer;height:30px;padding:4px 0;position:relative;text-align:center;width:32px}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;display:block;height:24px;left:50%;line-height:24px;margin:0 auto;position:absolute;transform:translate(-50%);width:24px}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed;opacity:1}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);border-radius:15px;color:#fff}.el-date-table td.week{color:var(--el-datepicker-off-text-color);cursor:default;font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{border-bottom:1px solid var(--el-border-color-lighter);color:var(--el-datepicker-header-text-color);font-weight:400;padding:5px}.el-date-table th.el-date-table__week-header{padding:0;width:24px}.el-month-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-month-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-month-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .el-date-table-cell__text,.el-month-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-month-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-month-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-month-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:54px}.el-month-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date .el-date-table-cell,.el-month-table td.start-date .el-date-table-cell{color:#fff}.el-month-table td.end-date .el-date-table-cell__text,.el-month-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px;margin-left:3px}.el-month-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-year-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-year-table td.today.end-date .el-date-table-cell__text,.el-year-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-year-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-year-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-year-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:60px}.el-year-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-year-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-year-table td.end-date .el-date-table-cell,.el-year-table td.start-date .el-date-table-cell{color:#fff}.el-year-table td.end-date .el-date-table-cell__text,.el-year-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px}.el-year-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px}.el-year-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{display:inline-block;max-height:192px;overflow:auto;position:relative;vertical-align:top;width:50%}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;overflow:hidden;text-align:center}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;width:100%;z-index:var(--el-index-normal)}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{list-style:none;margin:0}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;height:80px;width:100%}.el-time-spinner__item{color:var(--el-text-color-regular);font-size:12px;height:32px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper,.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;position:relative;text-align:left;vertical-align:middle}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{height:var(--el-input-height,var(--el-component-size));width:var(--el-date-editor-width)}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .clear-icon,.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__icon{color:var(--el-text-color-placeholder);float:left;font-size:14px;height:inherit}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-text-color-regular);display:inline-block;font-size:var(--el-font-size-base);height:30px;line-height:30px;margin:0;outline:none;padding:0;text-align:center;width:39%}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{align-items:center;color:var(--el-text-color-primary);display:inline-flex;flex:1;font-size:14px;height:100%;justify-content:center;margin:0;overflow-wrap:break-word;padding:0 5px}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);cursor:pointer;font-size:14px;height:inherit;width:unset}.el-date-editor .el-range__close-icon:hover{color:var(--el-input-clear-hover-color)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{align-items:center;display:inline-flex;padding:0 10px;vertical-align:middle}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{font-size:14px;height:38px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{font-size:12px;height:22px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled,.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{background:var(--el-bg-color-overlay);border-radius:var(--el-popper-border-radius,var(--el-border-radius-base));color:var(--el-text-color-regular);line-height:30px}.el-picker-panel .el-time-panel{background-color:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{clear:both;content:"";display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{background-color:var(--el-bg-color-overlay);border-top:1px solid var(--el-datepicker-inner-border-color);font-size:0;padding:4px 12px;position:relative;text-align:right}.el-picker-panel__shortcut{background-color:transparent;border:0;color:var(--el-datepicker-text-color);cursor:pointer;display:block;font-size:14px;line-height:28px;outline:none;padding-left:12px;text-align:left;width:100%}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{background-color:transparent;border:1px solid var(--el-fill-color-darker);border-radius:2px;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:24px;outline:none;padding:0 20px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{background:transparent;border:0;color:var(--el-datepicker-icon-color);cursor:pointer;font-size:12px;margin-top:8px;outline:none}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{border-right:1px solid var(--el-datepicker-inner-border-color);bottom:0;box-sizing:border-box;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-picker__header{padding:12px 12px 0;text-align:center}.el-date-picker__header--bordered{border-bottom:1px solid var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{cursor:pointer;float:left;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{height:28px;position:relative;text-align:center}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-range-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-range-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-range-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-range-picker__content{box-sizing:border-box;float:left;margin:0;padding:16px;width:50%}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-range-picker__time-header>.el-icon-arrow-right{color:var(--el-datepicker-icon-color);display:table-cell;font-size:20px;vertical-align:middle}.el-date-range-picker__time-picker-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{background:#fff;position:absolute;right:0;top:13px;z-index:1}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{overflow:visible;width:354px}.el-time-range-picker__content{padding:10px;position:relative;text-align:center;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;display:inline-block;margin:0;padding:4px 7px 7px;width:50%}.el-time-range-picker__header{font-size:14px;margin-bottom:5px;text-align:center}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{border-radius:2px;box-sizing:content-box;left:0;position:relative;-webkit-user-select:none;user-select:none;width:180px;z-index:var(--el-index-top)}.el-time-panel__content{font-size:0;overflow:hidden;position:relative}.el-time-panel__content:after,.el-time-panel__content:before{box-sizing:border-box;content:"";height:32px;left:0;margin-top:-16px;padding-top:6px;position:absolute;right:0;text-align:left;top:50%;z-index:-1}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{border-bottom:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));box-sizing:border-box;height:36px;line-height:25px;padding:4px;text-align:right}.el-time-panel__btn{background-color:transparent;border:none;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:28px;margin:0 5px;outline:none;padding:0 5px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;font-size:var(--el-font-size-base);position:relative;vertical-align:bottom;width:100%}.el-textarea__inner{-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;font-family:inherit;font-size:inherit;line-height:1.5;padding:5px 11px;position:relative;resize:vertical;transition:var(--el-transition-box-shadow);width:100%}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea .el-input__count{background:var(--el-fill-color-blank);bottom:5px;color:var(--el-color-info);font-size:12px;line-height:14px;position:absolute;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);box-sizing:border-box;display:inline-flex;font-size:var(--el-font-size-base);line-height:var(--el-input-height);position:relative;vertical-align:middle;width:var(--el-input-width)}.el-input::-webkit-scrollbar{width:6px;z-index:11}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{align-items:center;color:var(--el-color-info);display:inline-flex;font-size:12px;height:100%}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);display:inline-block;line-height:normal;padding-left:8px}.el-input__wrapper{align-items:center;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;cursor:text;display:inline-flex;flex-grow:1;justify-content:center;padding:1px 11px;transform:translateZ(0);transition:var(--el-transition-box-shadow)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px)}.el-input__inner{-webkit-appearance:none;background:none;border:none;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:none;padding:0;width:100%}.el-input__inner:focus{outline:none}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__prefix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;line-height:var(--el-input-inner-height);pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__suffix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{align-items:center;display:flex;height:inherit;justify-content:center;line-height:inherit;margin-left:8px;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;cursor:not-allowed}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;display:inline-flex;width:100%}.el-input-group__append,.el-input-group__prepend{align-items:center;background-color:var(--el-fill-color-light);border-radius:var(--el-input-border-radius);color:var(--el-color-info);display:inline-flex;justify-content:center;min-height:100%;padding:0 20px;position:relative;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{background-color:transparent;border-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper,.el-input-group__append{border-bottom-left-radius:0;border-top-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--append>.el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-hidden{display:none!important}.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;overflow:hidden;position:relative}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));border-radius:inherit;cursor:pointer;display:block;height:0;opacity:var(--el-scrollbar-opacity,.3);position:relative;transition:var(--el-transition-duration) background-color;width:0}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{border-radius:4px;bottom:2px;position:absolute;right:2px;z-index:1}.el-scrollbar__bar.is-vertical{top:2px;width:6px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);border-radius:var(--el-popper-border-radius);font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;padding:5px 11px;position:absolute;visibility:visible;word-break:break-all;z-index:2000}.el-popper.is-dark{color:var(--el-bg-color)}.el-popper.is-dark,.el-popper.is-dark>.el-popper__arrow:before{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{right:0}.el-popper.is-light,.el-popper.is-light>.el-popper__arrow:before{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{right:0}.el-popper.is-pure{padding:0}.el-popper__arrow,.el-popper__arrow:before{height:10px;position:absolute;width:10px;z-index:-1}.el-popper__arrow:before{background:var(--el-text-color-primary);box-sizing:border-box;content:" ";transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-left-color:transparent!important;border-top-color:transparent!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255,255,255,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;bottom:-1px;content:"";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):active,.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)} diff --git a/web/admin-spa/dist/assets/fa-brands-400-D1LuMI3I.ttf b/web/admin-spa/dist/assets/fa-brands-400-D1LuMI3I.ttf deleted file mode 100644 index 0f82a836..00000000 Binary files a/web/admin-spa/dist/assets/fa-brands-400-D1LuMI3I.ttf and /dev/null differ diff --git a/web/admin-spa/dist/assets/fa-brands-400-D_cYUPeE.woff2 b/web/admin-spa/dist/assets/fa-brands-400-D_cYUPeE.woff2 deleted file mode 100644 index 3c5cf97e..00000000 Binary files a/web/admin-spa/dist/assets/fa-brands-400-D_cYUPeE.woff2 and /dev/null differ diff --git a/web/admin-spa/dist/assets/fa-regular-400-BjRzuEpd.woff2 b/web/admin-spa/dist/assets/fa-regular-400-BjRzuEpd.woff2 deleted file mode 100644 index 57d91796..00000000 Binary files a/web/admin-spa/dist/assets/fa-regular-400-BjRzuEpd.woff2 and /dev/null differ diff --git a/web/admin-spa/dist/assets/fa-regular-400-DZaxPHgR.ttf b/web/admin-spa/dist/assets/fa-regular-400-DZaxPHgR.ttf deleted file mode 100644 index 9ee1919d..00000000 Binary files a/web/admin-spa/dist/assets/fa-regular-400-DZaxPHgR.ttf and /dev/null differ diff --git a/web/admin-spa/dist/assets/fa-solid-900-CTAAxXor.woff2 b/web/admin-spa/dist/assets/fa-solid-900-CTAAxXor.woff2 deleted file mode 100644 index 16721020..00000000 Binary files a/web/admin-spa/dist/assets/fa-solid-900-CTAAxXor.woff2 and /dev/null differ diff --git a/web/admin-spa/dist/assets/fa-solid-900-D0aA9rwL.ttf b/web/admin-spa/dist/assets/fa-solid-900-D0aA9rwL.ttf deleted file mode 100644 index 1c10972e..00000000 Binary files a/web/admin-spa/dist/assets/fa-solid-900-D0aA9rwL.ttf and /dev/null differ diff --git a/web/admin-spa/dist/assets/fa-v4compatibility-C9RhG_FT.woff2 b/web/admin-spa/dist/assets/fa-v4compatibility-C9RhG_FT.woff2 deleted file mode 100644 index fbafb222..00000000 Binary files a/web/admin-spa/dist/assets/fa-v4compatibility-C9RhG_FT.woff2 and /dev/null differ diff --git a/web/admin-spa/dist/assets/fa-v4compatibility-CCth-dXg.ttf b/web/admin-spa/dist/assets/fa-v4compatibility-CCth-dXg.ttf deleted file mode 100644 index 3bcb67ff..00000000 Binary files a/web/admin-spa/dist/assets/fa-v4compatibility-CCth-dXg.ttf and /dev/null differ diff --git a/web/admin-spa/dist/assets/index-BdtiivzQ.js b/web/admin-spa/dist/assets/index-CY9cPBXr.js similarity index 88% rename from web/admin-spa/dist/assets/index-BdtiivzQ.js rename to web/admin-spa/dist/assets/index-CY9cPBXr.js index 3265bab9..380ef08a 100644 --- a/web/admin-spa/dist/assets/index-BdtiivzQ.js +++ b/web/admin-spa/dist/assets/index-CY9cPBXr.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-BnBqXii9.js","assets/vue-vendor-DfnFpxGJ.js","assets/ThemeToggle-DACcdK5F.js","assets/ThemeToggle-BbfeH87u.css","assets/element-plus-CMedNaYf.js","assets/vendor-BDiMbLwQ.js","assets/element-plus-nq7etrhL.css","assets/LoginView-tn0RQdqM.css","assets/MainLayout-DksoGYYS.js","assets/toast-BvwA7Mwb.js","assets/LogoTitle-CipNTyYU.js","assets/LogoTitle-DXipqypn.css","assets/MainLayout-CCQ2LruH.css","assets/DashboardView-CQUmRYwD.js","assets/chart-Cor9iTVD.js","assets/DashboardView-OFXgpCdk.css","assets/ApiKeysView-DuWy3uje.js","assets/WindowCountdown-RaAYa1A3.js","assets/CustomDropdown-D7ci0ZD4.js","assets/CustomDropdown-jjrvIxsf.css","assets/ApiKeysView-BAk5rs4W.css","assets/AccountsView-DBRgMVT7.js","assets/AccountsView-B3Ip8fto.css","assets/TutorialView-CC1KbDlg.js","assets/TutorialView-BVycHwR_.css","assets/SettingsView-BaUN8Iwk.js","assets/SettingsView-B6pg4BZM.css","assets/ApiStatsView-DHzUrYlz.js","assets/ApiStatsView-D_A6K6R6.css"])))=>i.map(i=>d[i]); -import{aP as H,aQ as W,aR as N,r as g,c as E,o as $,q as D,V as q,I as M,z as p,x as b,ac as F,Q as J,a5 as K,y as w,C as R,L,P as A,Y as j,B as Q,R as I,J as X,T as Y,O as Z,av as ee,aM as te,aS as se}from"./vue-vendor-DfnFpxGJ.js";import{i as oe,z as ne}from"./element-plus-CMedNaYf.js";import"./vendor-BDiMbLwQ.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function e(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=e(r);fetch(r.href,i)}})();const ae="modulepreload",re=function(o){return"/admin-next/"+o},U={},T=function(t,e,n){let r=Promise.resolve();if(e&&e.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));r=Promise.allSettled(e.map(l=>{if(l=re(l),l in U)return;U[l]=!0;const d=l.endsWith(".css"),m=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${m}`))return;const s=document.createElement("link");if(s.rel=d?"stylesheet":ae,d||(s.as="script"),s.crossOrigin="",s.href=l,c&&s.setAttribute("nonce",c),document.head.appendChild(s),d)return new Promise((u,h)=>{s.addEventListener("load",u),s.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${l}`)))})}))}function i(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return r.then(a=>{for(const c of a||[])c.status==="rejected"&&i(c.reason);return t().catch(i)})},C={basePath:"/admin-next/",apiPrefix:""};function ie(o=""){return o&&!o.startsWith("/")&&(o="/"+o),C.basePath+(o.startsWith("#")?o:"#"+o)}function ce(){return ie("/login")}const le=()=>T(()=>import("./LoginView-BnBqXii9.js"),__vite__mapDeps([0,1,2,3,4,5,6,7])),k=()=>T(()=>import("./MainLayout-DksoGYYS.js"),__vite__mapDeps([8,1,9,10,11,2,3,4,5,6,12])),ue=()=>T(()=>import("./DashboardView-CQUmRYwD.js"),__vite__mapDeps([13,4,1,5,6,9,14,15])),de=()=>T(()=>import("./ApiKeysView-DuWy3uje.js"),__vite__mapDeps([16,4,1,5,6,9,17,18,19,20])),he=()=>T(()=>import("./AccountsView-DBRgMVT7.js"),__vite__mapDeps([21,4,1,5,6,9,18,19,22])),fe=()=>T(()=>import("./TutorialView-CC1KbDlg.js"),__vite__mapDeps([23,1,4,5,6,24])),me=()=>T(()=>import("./SettingsView-BaUN8Iwk.js"),__vite__mapDeps([25,1,9,4,5,6,26])),pe=()=>T(()=>import("./ApiStatsView-DHzUrYlz.js"),__vite__mapDeps([27,1,10,11,2,3,5,17,23,4,6,24,28])),ge=[{path:"/",redirect:()=>{const o=window.location.pathname,t=C.basePath.replace(/\/$/,"");return o===t||o===t+"/","/api-stats"}},{path:"/login",name:"Login",component:le,meta:{requiresAuth:!1}},{path:"/api-stats",name:"ApiStats",component:pe,meta:{requiresAuth:!1}},{path:"/dashboard",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Dashboard",component:ue}]},{path:"/api-keys",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"ApiKeys",component:de}]},{path:"/accounts",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Accounts",component:he}]},{path:"/tutorial",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Tutorial",component:fe}]},{path:"/settings",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Settings",component:me}]},{path:"/:pathMatch(.*)*",redirect:"/api-stats"}],S=H({history:W(C.basePath),routes:ge});S.beforeEach((o,t,e)=>{const n=B();if(console.log("路由导航:",{to:o.path,from:t.path,fullPath:o.fullPath,requiresAuth:o.meta.requiresAuth,isAuthenticated:n.isAuthenticated}),o.path===t.path&&o.fullPath===t.fullPath)return e();o.path==="/api-stats"||o.path.startsWith("/api-stats")?e():o.meta.requiresAuth&&!n.isAuthenticated?e("/login"):o.path==="/login"&&n.isAuthenticated?e("/dashboard"):e()});const z=C.apiPrefix;function P(o){return o.startsWith("/")||(o="/"+o),z+o}class ve{constructor(){this.baseURL=z}getAuthToken(){return localStorage.getItem("authToken")||null}buildConfig(t={}){const e={headers:{"Content-Type":"application/json",...t.headers},...t},n=this.getAuthToken();return n&&(e.headers.Authorization=`Bearer ${n}`),e}async handleResponse(t){if(t.status===401){const n=window.location.pathname+window.location.hash;throw n.includes("/login")||n.endsWith("/")||(localStorage.removeItem("authToken"),window.location.href=ce()),new Error("Unauthorized")}const e=t.headers.get("content-type");if(e&&e.includes("application/json")){const n=await t.json();if(!t.ok)throw new Error(n.message||`HTTP ${t.status}`);return n}if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);return t}async get(t,e={}){const n=P(t),r=this.buildConfig({...e,method:"GET"});try{const i=await fetch(n,r);return await this.handleResponse(i)}catch(i){throw console.error("API GET Error:",i),i}}async post(t,e=null,n={}){const r=P(t),i=this.buildConfig({...n,method:"POST",body:e?JSON.stringify(e):void 0});try{const a=await fetch(r,i);return await this.handleResponse(a)}catch(a){throw console.error("API POST Error:",a),a}}async put(t,e=null,n={}){const r=P(t),i=this.buildConfig({...n,method:"PUT",body:e?JSON.stringify(e):void 0});try{const a=await fetch(r,i);return await this.handleResponse(a)}catch(a){throw console.error("API PUT Error:",a),a}}async delete(t,e={}){const n=P(t),{data:r,...i}=e,a=this.buildConfig({...i,method:"DELETE",body:r?JSON.stringify(r):void 0});try{const c=await fetch(n,a);return await this.handleResponse(c)}catch(c){throw console.error("API DELETE Error:",c),c}}}const x=new ve,B=N("auth",()=>{const o=g(!1),t=g(localStorage.getItem("authToken")||""),e=g(""),n=g(""),r=g(!1),i=g({siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",faviconData:""}),a=g(!0),c=E(()=>!!t.value&&o.value),l=E(()=>t.value),d=E(()=>({username:e.value}));async function m(f){r.value=!0,n.value="";try{const v=await x.post("/web/auth/login",f);v.success?(t.value=v.token,e.value=v.username||f.username,o.value=!0,localStorage.setItem("authToken",v.token),await S.push("/dashboard")):n.value=v.message||"登录失败"}catch(v){n.value=v.message||"登录失败,请检查用户名和密码"}finally{r.value=!1}}function s(){o.value=!1,t.value="",e.value="",localStorage.removeItem("authToken"),S.push("/login")}function u(){t.value&&(o.value=!0,h())}async function h(){try{const f=await x.get("/web/auth/user");f.success&&f.user&&(e.value=f.user.username),(await x.get("/admin/dashboard")).success||s()}catch{s()}}async function y(){a.value=!0;try{const f=await x.get("/admin/oem-settings");if(f.success&&f.data){if(i.value={...i.value,...f.data},f.data.siteIconData||f.data.siteIcon){const v=document.querySelector("link[rel*='icon']")||document.createElement("link");v.type="image/x-icon",v.rel="shortcut icon",v.href=f.data.siteIconData||f.data.siteIcon,document.getElementsByTagName("head")[0].appendChild(v)}f.data.siteName&&(document.title=`${f.data.siteName} - 管理后台`)}}catch(f){console.error("加载OEM设置失败:",f)}finally{a.value=!1}}return{isLoggedIn:o,authToken:t,username:e,loginError:n,loginLoading:r,oemSettings:i,oemLoading:a,isAuthenticated:c,token:l,user:d,login:m,logout:s,checkAuth:u,loadOemSettings:y}}),_={LIGHT:"light",DARK:"dark",AUTO:"auto"},_e=N("theme",()=>{const o=g(_.AUTO),t=g(!1),e=E(()=>o.value===_.DARK?!0:o.value===_.LIGHT?!1:t.value),n=E(()=>e.value?_.DARK:_.LIGHT),r=()=>{const s=window.matchMedia("(prefers-color-scheme: dark)");t.value=s.matches;const u=localStorage.getItem("themeMode");u&&Object.values(_).includes(u)?o.value=u:o.value=_.AUTO,i(),l()},i=()=>{const s=document.documentElement;e.value?s.classList.add("dark"):s.classList.remove("dark")},a=s=>{Object.values(_).includes(s)&&(o.value=s)},c=()=>{const s=[_.LIGHT,_.DARK,_.AUTO],h=(s.indexOf(o.value)+1)%s.length;o.value=s[h]};$(o,s=>{localStorage.setItem("themeMode",s),i()}),$(t,()=>{o.value===_.AUTO&&i()});const l=()=>{const s=window.matchMedia("(prefers-color-scheme: dark)"),u=h=>{t.value=h.matches};return t.value=s.matches,s.addEventListener("change",u),()=>{s.removeEventListener("change",u)}};return{themeMode:o,isDarkMode:e,currentTheme:n,systemPrefersDark:t,ThemeMode:_,initTheme:r,setThemeMode:a,cycleThemeMode:c,watchSystemTheme:l,toggleTheme:()=>{c()},setTheme:s=>{s==="dark"?a(_.DARK):s==="light"&&a(_.LIGHT)}}}),V=(o,t)=>{const e=o.__vccOpts||o;for(const[n,r]of t)e[n]=r;return e},ye={class:"toast-container"},we=["onClick"],Te={class:"toast-content"},be={class:"toast-icon"},Ae={class:"toast-body"},ke={key:0,class:"toast-title"},Ee={class:"toast-message"},Pe=["onClick"],xe={__name:"ToastNotification",setup(o,{expose:t}){const e=g([]);let n=0;const r=d=>{const m={success:"fas fa-check-circle",error:"fas fa-exclamation-circle",warning:"fas fa-exclamation-triangle",info:"fas fa-info-circle"};return m[d]||m.info},i=(d,m="info",s=null,u=5e3)=>{const h=++n,y={id:h,message:d,type:m,title:s,duration:u,isVisible:!1};return e.value.push(y),setTimeout(()=>{y.isVisible=!0},10),u>0&&setTimeout(()=>{a(h)},u),h},a=d=>{const m=e.value.findIndex(s=>s.id===d);if(m>-1){const s=e.value[m];s.isVisible=!1,setTimeout(()=>{const u=e.value.findIndex(h=>h.id===d);u>-1&&e.value.splice(u,1)},300)}},c=()=>{e.value.forEach(d=>{d.isVisible=!1}),setTimeout(()=>{e.value.length=0},300)},l=(d,m="info",s=null,u=5e3)=>i(d,m,s,u);return D(()=>{window.showToast=l}),q(()=>{window.showToast===l&&delete window.showToast}),t({showToast:l,removeToast:a,clearAllToasts:c}),(d,m)=>(w(),M(K,{to:"body"},[p("div",ye,[(w(!0),b(J,null,F(e.value,s=>(w(),b("div",{key:s.id,class:R(["toast",`toast-${s.type}`,s.isVisible?"toast-show":"toast-hide"]),onClick:u=>a(s.id)},[p("div",Te,[p("div",be,[p("i",{class:R(r(s.type))},null,2)]),p("div",Ae,[s.title?(w(),b("div",ke,A(s.title),1)):L("",!0),p("div",Ee,A(s.message),1)]),p("button",{class:"toast-close",onClick:j(u=>a(s.id),["stop"])},m[0]||(m[0]=[p("i",{class:"fas fa-times"},null,-1)]),8,Pe)]),s.duration>0?(w(),b("div",{key:0,class:"toast-progress",style:Q({animationDuration:`${s.duration}ms`})},null,4)):L("",!0)],10,we))),128))])]))}},Ie=V(xe,[["__scopeId","data-v-c8b24ff5"]]),Le={class:"modal-content mx-auto w-full max-w-md p-6"},Se={class:"mb-6 flex items-start gap-4"},Ce={class:"flex-1"},Oe={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Re={class:"whitespace-pre-line leading-relaxed text-gray-700 dark:text-gray-400"},De={class:"flex items-center justify-end gap-3"},Ve=["disabled"],$e=["disabled"],Ue={key:0,class:"loading-spinner mr-2"},Ne={__name:"ConfirmDialog",setup(o,{expose:t}){const e=g(!1),n=g(!1),r=g(""),i=g(""),a=g("确认"),c=g("取消");let l=null;const d=(h,y,f="确认",v="取消")=>new Promise(G=>{r.value=h,i.value=y,a.value=f,c.value=v,e.value=!0,n.value=!1,l=G}),m=()=>{n.value||(n.value=!0,setTimeout(()=>{e.value=!1,n.value=!1,l&&(l(!0),l=null)},200))},s=()=>{n.value||(e.value=!1,l&&(l(!1),l=null))},u=h=>{e.value&&(h.key==="Escape"?s():h.key==="Enter"&&!h.shiftKey&&!h.ctrlKey&&!h.altKey&&m())};return D(()=>{window.showConfirm=d,document.addEventListener("keydown",u)}),q(()=>{window.showConfirm===d&&delete window.showConfirm,document.removeEventListener("keydown",u)}),t({showConfirm:d}),(h,y)=>(w(),M(K,{to:"body"},[I(Y,{appear:"",name:"modal"},{default:X(()=>[e.value?(w(),b("div",{key:0,class:"modal fixed inset-0 z-[100] flex items-center justify-center p-4",onClick:j(s,["self"])},[p("div",Le,[p("div",Se,[y[0]||(y[0]=p("div",{class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl bg-gradient-to-br from-amber-500 to-amber-600"},[p("i",{class:"fas fa-exclamation-triangle text-lg text-white"})],-1)),p("div",Ce,[p("h3",Oe,A(r.value),1),p("div",Re,A(i.value),1)])]),p("div",De,[p("button",{class:"btn bg-gray-100 px-6 py-3 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:n.value,onClick:s},A(c.value),9,Ve),p("button",{class:R(["btn btn-warning px-6 py-3",{"cursor-not-allowed opacity-50":n.value}]),disabled:n.value,onClick:m},[n.value?(w(),b("div",Ue)):L("",!0),Z(" "+A(a.value),1)],10,$e)])])])):L("",!0)]),_:1})]))}},qe=V(Ne,[["__scopeId","data-v-6b3390a6"]]),Me={id:"app"},Ke={__name:"App",setup(o){const t=B(),e=_e(),n=g(),r=g();return D(()=>{e.initTheme(),e.watchSystemTheme(),t.checkAuth(),t.loadOemSettings()}),(i,a)=>{const c=ee("router-view");return w(),b("div",Me,[I(c),I(Ie,{ref_key:"toastRef",ref:n},null,512),I(qe,{ref_key:"confirmRef",ref:r},null,512)])}}},je=V(Ke,[["__scopeId","data-v-dab04b7e"]]),O=te(je),ze=se();O.use(ze);O.use(S);O.use(oe,{locale:ne});O.mount("#app");export{V as _,_e as a,x as b,B as u}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-BawsCHOq.js","assets/vue-vendor-Ig-GgGwA.js","assets/ThemeToggle-Bb-3yEk7.js","assets/ThemeToggle-BbfeH87u.css","assets/element-plus-Bq6mBxnk.js","assets/vendor-BDiMbLwQ.js","assets/element-plus-nq7etrhL.css","assets/LoginView-tn0RQdqM.css","assets/MainLayout-BgC31_Mb.js","assets/toast-BvwA7Mwb.js","assets/LogoTitle-DmOAmnuZ.js","assets/LogoTitle-DXipqypn.css","assets/MainLayout-CCQ2LruH.css","assets/DashboardView-B8PC7PpI.js","assets/chart-Cor9iTVD.js","assets/DashboardView-cbgZleS2.css","assets/ApiKeysView-AJLEWrkM.js","assets/WindowCountdown-DSqUCtdk.js","assets/CustomDropdown-C7e2WJat.js","assets/CustomDropdown-jjrvIxsf.css","assets/ApiKeysView-BAk5rs4W.css","assets/AccountsView-CxtkDnoV.js","assets/AccountsView-BtGq4rQp.css","assets/TutorialView-N5jhXyjx.js","assets/TutorialView-BVycHwR_.css","assets/SettingsView-DRYQRRYU.js","assets/SettingsView-DmJWeqhD.css","assets/ApiStatsView-B3sDs7Mx.js","assets/ApiStatsView-D_A6K6R6.css"])))=>i.map(i=>d[i]); +import{aP as H,aQ as W,aR as N,r as g,c as E,o as $,q as D,V as q,I as M,z as p,x as b,ac as F,Q as J,a5 as K,y as w,C as R,L,P as A,Y as j,B as Q,R as I,J as X,T as Y,O as Z,av as ee,aM as te,aS as se}from"./vue-vendor-Ig-GgGwA.js";import{i as oe,z as ne}from"./element-plus-Bq6mBxnk.js";import"./vendor-BDiMbLwQ.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function e(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function n(r){if(r.ep)return;r.ep=!0;const i=e(r);fetch(r.href,i)}})();const ae="modulepreload",re=function(o){return"/admin-next/"+o},U={},T=function(t,e,n){let r=Promise.resolve();if(e&&e.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));r=Promise.allSettled(e.map(l=>{if(l=re(l),l in U)return;U[l]=!0;const d=l.endsWith(".css"),m=d?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${m}`))return;const s=document.createElement("link");if(s.rel=d?"stylesheet":ae,d||(s.as="script"),s.crossOrigin="",s.href=l,c&&s.setAttribute("nonce",c),document.head.appendChild(s),d)return new Promise((u,h)=>{s.addEventListener("load",u),s.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${l}`)))})}))}function i(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return r.then(a=>{for(const c of a||[])c.status==="rejected"&&i(c.reason);return t().catch(i)})},C={basePath:"/admin-next/",apiPrefix:""};function ie(o=""){return o&&!o.startsWith("/")&&(o="/"+o),C.basePath+(o.startsWith("#")?o:"#"+o)}function ce(){return ie("/login")}const le=()=>T(()=>import("./LoginView-BawsCHOq.js"),__vite__mapDeps([0,1,2,3,4,5,6,7])),k=()=>T(()=>import("./MainLayout-BgC31_Mb.js"),__vite__mapDeps([8,1,9,10,11,2,3,4,5,6,12])),ue=()=>T(()=>import("./DashboardView-B8PC7PpI.js"),__vite__mapDeps([13,4,1,5,6,9,14,15])),de=()=>T(()=>import("./ApiKeysView-AJLEWrkM.js"),__vite__mapDeps([16,4,1,5,6,9,17,18,19,20])),he=()=>T(()=>import("./AccountsView-CxtkDnoV.js"),__vite__mapDeps([21,4,1,5,6,9,18,19,22])),fe=()=>T(()=>import("./TutorialView-N5jhXyjx.js"),__vite__mapDeps([23,1,4,5,6,24])),me=()=>T(()=>import("./SettingsView-DRYQRRYU.js"),__vite__mapDeps([25,1,9,4,5,6,26])),pe=()=>T(()=>import("./ApiStatsView-B3sDs7Mx.js"),__vite__mapDeps([27,1,10,11,2,3,5,17,23,4,6,24,28])),ge=[{path:"/",redirect:()=>{const o=window.location.pathname,t=C.basePath.replace(/\/$/,"");return o===t||o===t+"/","/api-stats"}},{path:"/login",name:"Login",component:le,meta:{requiresAuth:!1}},{path:"/api-stats",name:"ApiStats",component:pe,meta:{requiresAuth:!1}},{path:"/dashboard",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Dashboard",component:ue}]},{path:"/api-keys",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"ApiKeys",component:de}]},{path:"/accounts",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Accounts",component:he}]},{path:"/tutorial",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Tutorial",component:fe}]},{path:"/settings",component:k,meta:{requiresAuth:!0},children:[{path:"",name:"Settings",component:me}]},{path:"/:pathMatch(.*)*",redirect:"/api-stats"}],S=H({history:W(C.basePath),routes:ge});S.beforeEach((o,t,e)=>{const n=B();if(console.log("路由导航:",{to:o.path,from:t.path,fullPath:o.fullPath,requiresAuth:o.meta.requiresAuth,isAuthenticated:n.isAuthenticated}),o.path===t.path&&o.fullPath===t.fullPath)return e();o.path==="/api-stats"||o.path.startsWith("/api-stats")?e():o.meta.requiresAuth&&!n.isAuthenticated?e("/login"):o.path==="/login"&&n.isAuthenticated?e("/dashboard"):e()});const z=C.apiPrefix;function P(o){return o.startsWith("/")||(o="/"+o),z+o}class ve{constructor(){this.baseURL=z}getAuthToken(){return localStorage.getItem("authToken")||null}buildConfig(t={}){const e={headers:{"Content-Type":"application/json",...t.headers},...t},n=this.getAuthToken();return n&&(e.headers.Authorization=`Bearer ${n}`),e}async handleResponse(t){if(t.status===401){const n=window.location.pathname+window.location.hash;throw n.includes("/login")||n.endsWith("/")||(localStorage.removeItem("authToken"),window.location.href=ce()),new Error("Unauthorized")}const e=t.headers.get("content-type");if(e&&e.includes("application/json")){const n=await t.json();if(!t.ok)throw new Error(n.message||`HTTP ${t.status}`);return n}if(!t.ok)throw new Error(`HTTP ${t.status}: ${t.statusText}`);return t}async get(t,e={}){const n=P(t),r=this.buildConfig({...e,method:"GET"});try{const i=await fetch(n,r);return await this.handleResponse(i)}catch(i){throw console.error("API GET Error:",i),i}}async post(t,e=null,n={}){const r=P(t),i=this.buildConfig({...n,method:"POST",body:e?JSON.stringify(e):void 0});try{const a=await fetch(r,i);return await this.handleResponse(a)}catch(a){throw console.error("API POST Error:",a),a}}async put(t,e=null,n={}){const r=P(t),i=this.buildConfig({...n,method:"PUT",body:e?JSON.stringify(e):void 0});try{const a=await fetch(r,i);return await this.handleResponse(a)}catch(a){throw console.error("API PUT Error:",a),a}}async delete(t,e={}){const n=P(t),{data:r,...i}=e,a=this.buildConfig({...i,method:"DELETE",body:r?JSON.stringify(r):void 0});try{const c=await fetch(n,a);return await this.handleResponse(c)}catch(c){throw console.error("API DELETE Error:",c),c}}}const x=new ve,B=N("auth",()=>{const o=g(!1),t=g(localStorage.getItem("authToken")||""),e=g(""),n=g(""),r=g(!1),i=g({siteName:"Claude Relay Service",siteIcon:"",siteIconData:"",faviconData:""}),a=g(!0),c=E(()=>!!t.value&&o.value),l=E(()=>t.value),d=E(()=>({username:e.value}));async function m(f){r.value=!0,n.value="";try{const v=await x.post("/web/auth/login",f);v.success?(t.value=v.token,e.value=v.username||f.username,o.value=!0,localStorage.setItem("authToken",v.token),await S.push("/dashboard")):n.value=v.message||"登录失败"}catch(v){n.value=v.message||"登录失败,请检查用户名和密码"}finally{r.value=!1}}function s(){o.value=!1,t.value="",e.value="",localStorage.removeItem("authToken"),S.push("/login")}function u(){t.value&&(o.value=!0,h())}async function h(){try{const f=await x.get("/web/auth/user");f.success&&f.user&&(e.value=f.user.username),(await x.get("/admin/dashboard")).success||s()}catch{s()}}async function y(){a.value=!0;try{const f=await x.get("/admin/oem-settings");if(f.success&&f.data){if(i.value={...i.value,...f.data},f.data.siteIconData||f.data.siteIcon){const v=document.querySelector("link[rel*='icon']")||document.createElement("link");v.type="image/x-icon",v.rel="shortcut icon",v.href=f.data.siteIconData||f.data.siteIcon,document.getElementsByTagName("head")[0].appendChild(v)}f.data.siteName&&(document.title=`${f.data.siteName} - 管理后台`)}}catch(f){console.error("加载OEM设置失败:",f)}finally{a.value=!1}}return{isLoggedIn:o,authToken:t,username:e,loginError:n,loginLoading:r,oemSettings:i,oemLoading:a,isAuthenticated:c,token:l,user:d,login:m,logout:s,checkAuth:u,loadOemSettings:y}}),_={LIGHT:"light",DARK:"dark",AUTO:"auto"},_e=N("theme",()=>{const o=g(_.AUTO),t=g(!1),e=E(()=>o.value===_.DARK?!0:o.value===_.LIGHT?!1:t.value),n=E(()=>e.value?_.DARK:_.LIGHT),r=()=>{const s=window.matchMedia("(prefers-color-scheme: dark)");t.value=s.matches;const u=localStorage.getItem("themeMode");u&&Object.values(_).includes(u)?o.value=u:o.value=_.AUTO,i(),l()},i=()=>{const s=document.documentElement;e.value?s.classList.add("dark"):s.classList.remove("dark")},a=s=>{Object.values(_).includes(s)&&(o.value=s)},c=()=>{const s=[_.LIGHT,_.DARK,_.AUTO],h=(s.indexOf(o.value)+1)%s.length;o.value=s[h]};$(o,s=>{localStorage.setItem("themeMode",s),i()}),$(t,()=>{o.value===_.AUTO&&i()});const l=()=>{const s=window.matchMedia("(prefers-color-scheme: dark)"),u=h=>{t.value=h.matches};return t.value=s.matches,s.addEventListener("change",u),()=>{s.removeEventListener("change",u)}};return{themeMode:o,isDarkMode:e,currentTheme:n,systemPrefersDark:t,ThemeMode:_,initTheme:r,setThemeMode:a,cycleThemeMode:c,watchSystemTheme:l,toggleTheme:()=>{c()},setTheme:s=>{s==="dark"?a(_.DARK):s==="light"&&a(_.LIGHT)}}}),V=(o,t)=>{const e=o.__vccOpts||o;for(const[n,r]of t)e[n]=r;return e},ye={class:"toast-container"},we=["onClick"],Te={class:"toast-content"},be={class:"toast-icon"},Ae={class:"toast-body"},ke={key:0,class:"toast-title"},Ee={class:"toast-message"},Pe=["onClick"],xe={__name:"ToastNotification",setup(o,{expose:t}){const e=g([]);let n=0;const r=d=>{const m={success:"fas fa-check-circle",error:"fas fa-exclamation-circle",warning:"fas fa-exclamation-triangle",info:"fas fa-info-circle"};return m[d]||m.info},i=(d,m="info",s=null,u=5e3)=>{const h=++n,y={id:h,message:d,type:m,title:s,duration:u,isVisible:!1};return e.value.push(y),setTimeout(()=>{y.isVisible=!0},10),u>0&&setTimeout(()=>{a(h)},u),h},a=d=>{const m=e.value.findIndex(s=>s.id===d);if(m>-1){const s=e.value[m];s.isVisible=!1,setTimeout(()=>{const u=e.value.findIndex(h=>h.id===d);u>-1&&e.value.splice(u,1)},300)}},c=()=>{e.value.forEach(d=>{d.isVisible=!1}),setTimeout(()=>{e.value.length=0},300)},l=(d,m="info",s=null,u=5e3)=>i(d,m,s,u);return D(()=>{window.showToast=l}),q(()=>{window.showToast===l&&delete window.showToast}),t({showToast:l,removeToast:a,clearAllToasts:c}),(d,m)=>(w(),M(K,{to:"body"},[p("div",ye,[(w(!0),b(J,null,F(e.value,s=>(w(),b("div",{key:s.id,class:R(["toast",`toast-${s.type}`,s.isVisible?"toast-show":"toast-hide"]),onClick:u=>a(s.id)},[p("div",Te,[p("div",be,[p("i",{class:R(r(s.type))},null,2)]),p("div",Ae,[s.title?(w(),b("div",ke,A(s.title),1)):L("",!0),p("div",Ee,A(s.message),1)]),p("button",{class:"toast-close",onClick:j(u=>a(s.id),["stop"])},m[0]||(m[0]=[p("i",{class:"fas fa-times"},null,-1)]),8,Pe)]),s.duration>0?(w(),b("div",{key:0,class:"toast-progress",style:Q({animationDuration:`${s.duration}ms`})},null,4)):L("",!0)],10,we))),128))])]))}},Ie=V(xe,[["__scopeId","data-v-c8b24ff5"]]),Le={class:"modal-content mx-auto w-full max-w-md p-6"},Se={class:"mb-6 flex items-start gap-4"},Ce={class:"flex-1"},Oe={class:"mb-2 text-lg font-semibold text-gray-900 dark:text-white"},Re={class:"whitespace-pre-line leading-relaxed text-gray-700 dark:text-gray-400"},De={class:"flex items-center justify-end gap-3"},Ve=["disabled"],$e=["disabled"],Ue={key:0,class:"loading-spinner mr-2"},Ne={__name:"ConfirmDialog",setup(o,{expose:t}){const e=g(!1),n=g(!1),r=g(""),i=g(""),a=g("确认"),c=g("取消");let l=null;const d=(h,y,f="确认",v="取消")=>new Promise(G=>{r.value=h,i.value=y,a.value=f,c.value=v,e.value=!0,n.value=!1,l=G}),m=()=>{n.value||(n.value=!0,setTimeout(()=>{e.value=!1,n.value=!1,l&&(l(!0),l=null)},200))},s=()=>{n.value||(e.value=!1,l&&(l(!1),l=null))},u=h=>{e.value&&(h.key==="Escape"?s():h.key==="Enter"&&!h.shiftKey&&!h.ctrlKey&&!h.altKey&&m())};return D(()=>{window.showConfirm=d,document.addEventListener("keydown",u)}),q(()=>{window.showConfirm===d&&delete window.showConfirm,document.removeEventListener("keydown",u)}),t({showConfirm:d}),(h,y)=>(w(),M(K,{to:"body"},[I(Y,{appear:"",name:"modal"},{default:X(()=>[e.value?(w(),b("div",{key:0,class:"modal fixed inset-0 z-[100] flex items-center justify-center p-4",onClick:j(s,["self"])},[p("div",Le,[p("div",Se,[y[0]||(y[0]=p("div",{class:"flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-xl bg-gradient-to-br from-amber-500 to-amber-600"},[p("i",{class:"fas fa-exclamation-triangle text-lg text-white"})],-1)),p("div",Ce,[p("h3",Oe,A(r.value),1),p("div",Re,A(i.value),1)])]),p("div",De,[p("button",{class:"btn bg-gray-100 px-6 py-3 text-gray-700 hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600",disabled:n.value,onClick:s},A(c.value),9,Ve),p("button",{class:R(["btn btn-warning px-6 py-3",{"cursor-not-allowed opacity-50":n.value}]),disabled:n.value,onClick:m},[n.value?(w(),b("div",Ue)):L("",!0),Z(" "+A(a.value),1)],10,$e)])])])):L("",!0)]),_:1})]))}},qe=V(Ne,[["__scopeId","data-v-6b3390a6"]]),Me={id:"app"},Ke={__name:"App",setup(o){const t=B(),e=_e(),n=g(),r=g();return D(()=>{e.initTheme(),e.watchSystemTheme(),t.checkAuth(),t.loadOemSettings()}),(i,a)=>{const c=ee("router-view");return w(),b("div",Me,[I(c),I(Ie,{ref_key:"toastRef",ref:n},null,512),I(qe,{ref_key:"confirmRef",ref:r},null,512)])}}},je=V(Ke,[["__scopeId","data-v-dab04b7e"]]),O=te(je),ze=se();O.use(ze);O.use(S);O.use(oe,{locale:ne});O.mount("#app");export{V as _,_e as a,x as b,B as u}; diff --git a/web/admin-spa/dist/assets/index-CtIRgL_b.css b/web/admin-spa/dist/assets/index-CpSw-PRl.css similarity index 50% rename from web/admin-spa/dist/assets/index-CtIRgL_b.css rename to web/admin-spa/dist/assets/index-CpSw-PRl.css index 950e80ad..44f5b816 100644 --- a/web/admin-spa/dist/assets/index-CtIRgL_b.css +++ b/web/admin-spa/dist/assets/index-CpSw-PRl.css @@ -1,5 +1,5 @@ -.toast-container[data-v-c8b24ff5]{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:12px;pointer-events:none}.toast[data-v-c8b24ff5]{min-width:320px;max-width:500px;background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000001f;border:1px solid #e5e7eb;overflow:hidden;position:relative;pointer-events:auto;cursor:pointer;transform:translate(100%);opacity:0;transition:all .3s cubic-bezier(.4,0,.2,1)}.dark{background:#1f2937;border:1px solid #374151;box-shadow:0 8px 32px #0000004d}.toast-show[data-v-c8b24ff5]{transform:translate(0);opacity:1}.toast-hide[data-v-c8b24ff5]{transform:translate(100%);opacity:0}.toast-content[data-v-c8b24ff5]{display:flex;align-items:flex-start;padding:16px;gap:12px}.toast-icon[data-v-c8b24ff5]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:14px}.toast-body[data-v-c8b24ff5]{flex:1}.toast-title[data-v-c8b24ff5]{font-weight:600;font-size:14px;line-height:1.4;margin-bottom:4px}.toast-message[data-v-c8b24ff5]{font-size:14px;line-height:1.5;word-wrap:break-word}.toast-close[data-v-c8b24ff5]{flex-shrink:0;width:24px;height:24px;border:none;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;color:#9ca3af;transition:all .2s ease}.toast-close[data-v-c8b24ff5]:hover{background:#f3f4f6;color:#6b7280}.dark{background:#374151;color:#9ca3af}.toast-progress[data-v-c8b24ff5]{position:absolute;bottom:0;left:0;height:3px;background:currentColor;opacity:.3;animation:toast-progress-c8b24ff5 linear forwards}@keyframes toast-progress-c8b24ff5{0%{width:100%}to{width:0%}}.toast-success[data-v-c8b24ff5]{border-left:4px solid #10b981}.toast-success .toast-icon[data-v-c8b24ff5]{color:#10b981;background:#d1fae5}.dark{background:#064e3b}.toast-success .toast-title[data-v-c8b24ff5]{color:#065f46}.dark{color:#10b981}.toast-success .toast-message[data-v-c8b24ff5]{color:#047857}.dark{color:#34d399}.toast-success .toast-progress[data-v-c8b24ff5]{background:#10b981}.toast-error[data-v-c8b24ff5]{border-left:4px solid #ef4444}.toast-error .toast-icon[data-v-c8b24ff5]{color:#ef4444;background:#fee2e2}.dark{background:#7f1d1d}.toast-error .toast-title[data-v-c8b24ff5]{color:#991b1b}.dark{color:#ef4444}.toast-error .toast-message[data-v-c8b24ff5]{color:#dc2626}.dark{color:#f87171}.toast-error .toast-progress[data-v-c8b24ff5]{background:#ef4444}.toast-warning[data-v-c8b24ff5]{border-left:4px solid #f59e0b}.toast-warning .toast-icon[data-v-c8b24ff5]{color:#f59e0b;background:#fef3c7}.dark{background:#78350f}.toast-warning .toast-title[data-v-c8b24ff5]{color:#92400e}.dark{color:#f59e0b}.toast-warning .toast-message[data-v-c8b24ff5]{color:#d97706}.dark{color:#fbbf24}.toast-warning .toast-progress[data-v-c8b24ff5]{background:#f59e0b}.toast-info[data-v-c8b24ff5]{border-left:4px solid #3b82f6}.toast-info .toast-icon[data-v-c8b24ff5]{color:#3b82f6;background:#dbeafe}.dark{background:#1e3a8a}.toast-info .toast-title[data-v-c8b24ff5]{color:#1e40af}.dark{color:#3b82f6}.toast-info .toast-message[data-v-c8b24ff5]{color:#2563eb}.dark{color:#60a5fa}.toast-info .toast-progress[data-v-c8b24ff5]{background:#3b82f6}@media (max-width: 640px){.toast-container[data-v-c8b24ff5]{top:10px;right:10px;left:10px}.toast[data-v-c8b24ff5]{min-width:auto;max-width:none}}.toast-list-enter-active[data-v-c8b24ff5],.toast-list-leave-active[data-v-c8b24ff5]{transition:all .3s ease}.toast-list-enter-from[data-v-c8b24ff5],.toast-list-leave-to[data-v-c8b24ff5]{opacity:0;transform:translate(100%)}.toast-list-move[data-v-c8b24ff5]{transition:transform .3s ease}.modal[data-v-6b3390a6]{background:#00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dark{background:#000000b3}.modal-content[data-v-6b3390a6]{background:#fff;border-radius:16px;box-shadow:0 20px 64px #00000026;border:1px solid #e5e7eb;max-height:90vh;overflow-y:auto}.dark{background:#1f2937;border:1px solid #374151;box-shadow:0 20px 64px #000c}.btn[data-v-6b3390a6]{display:inline-flex;align-items:center;justify-content:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn[data-v-6b3390a6]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-offset-width: 2px}.btn-danger[data-v-6b3390a6]{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-danger[data-v-6b3390a6]:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.btn-danger[data-v-6b3390a6]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.btn-warning[data-v-6b3390a6]{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-warning[data-v-6b3390a6]:hover{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity, 1))}.btn-warning[data-v-6b3390a6]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(245 158 11 / var(--tw-ring-opacity, 1))}.loading-spinner[data-v-6b3390a6]{height:1rem;width:1rem}@keyframes spin-6b3390a6{to{transform:rotate(360deg)}}.loading-spinner[data-v-6b3390a6]{animation:spin-6b3390a6 1s linear infinite;border-radius:9999px;border-width:2px;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-border-opacity: 1;border-top-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.modal-enter-active[data-v-6b3390a6],.modal-leave-active[data-v-6b3390a6]{transition:all .3s ease}.modal-enter-from[data-v-6b3390a6],.modal-leave-to[data-v-6b3390a6]{opacity:0}.modal-enter-active .modal-content[data-v-6b3390a6],.modal-leave-active .modal-content[data-v-6b3390a6]{transition:transform .3s ease}.modal-enter-from .modal-content[data-v-6b3390a6],.modal-leave-to .modal-content[data-v-6b3390a6]{transform:scale(.9) translateY(-20px)}.modal-content[data-v-6b3390a6]::-webkit-scrollbar{width:6px}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px}.dark{background:#374151}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.dark{background:#4b5563}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-thumb:hover{background:#94a3b8}.dark{background:#6b7280}#app[data-v-dab04b7e]{min-height:100vh}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-0\.5{top:-.125rem;right:-.125rem;bottom:-.125rem;left:-.125rem}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.-right-2{right:-.5rem}.-top-2{top:-.5rem}.left-0{left:0}.left-3{left:.75rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-3{top:.75rem}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[9999\]{z-index:9999}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-8{margin-right:2rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-row{display:table-row}.grid{display:grid}.hidden{display:none}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-\[250px\]{max-height:250px}.max-h-\[90vh\]{max-height:90vh}.min-h-\[32px\]{min-height:32px}.min-h-\[48px\]{min-height:48px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[10\%\]{width:10%}.w-\[12\%\]{width:12%}.w-\[15\%\]{width:15%}.w-\[17\%\]{width:17%}.w-\[20\%\]{width:20%}.w-\[22\%\]{width:22%}.w-\[25\%\]{width:25%}.w-\[50px\]{width:50px}.w-\[8\%\]{width:8%}.w-\[95\%\]{width:95%}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[20px\]{min-width:20px}.min-w-\[32px\]{min-width:32px}.min-w-\[70px\]{min-width:70px}.min-w-\[80px\]{min-width:80px}.min-w-\[90px\]{min-width:90px}.min-w-full{min-width:100%}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[100px\]{max-width:100px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.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))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.divide-gray-200\/50>:not([hidden])~:not([hidden]){border-color:#e5e7eb80}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-amber-400{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1))}.border-blue-100{--tw-border-opacity: 1;border-color:rgb(219 234 254 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-300{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-200\/50{border-color:#e5e7eb80}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-300\/30{border-color:#d1d5db4d}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-green-100{--tw-border-opacity: 1;border-color:rgb(220 252 231 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-indigo-100{--tw-border-opacity: 1;border-color:rgb(224 231 255 / var(--tw-border-opacity, 1))}.border-indigo-200{--tw-border-opacity: 1;border-color:rgb(199 210 254 / var(--tw-border-opacity, 1))}.border-orange-100{--tw-border-opacity: 1;border-color:rgb(255 237 213 / var(--tw-border-opacity, 1))}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-300{--tw-border-opacity: 1;border-color:rgb(253 186 116 / var(--tw-border-opacity, 1))}.border-purple-100{--tw-border-opacity: 1;border-color:rgb(243 232 255 / var(--tw-border-opacity, 1))}.border-purple-200{--tw-border-opacity: 1;border-color:rgb(233 213 255 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/30{border-color:#ef44444d}.border-white\/20{border-color:#fff3}.border-yellow-100{--tw-border-opacity: 1;border-color:rgb(254 249 195 / var(--tw-border-opacity, 1))}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-300{--tw-border-opacity: 1;border-color:rgb(253 224 71 / var(--tw-border-opacity, 1))}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-300\/50{background-color:#d1d5db80}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-50\/80{background-color:#f9fafbcc}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-indigo-300{--tw-bg-opacity: 1;background-color:rgb(165 180 252 / var(--tw-bg-opacity, 1))}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-orange-200{--tw-bg-opacity: 1;background-color:rgb(254 215 170 / var(--tw-bg-opacity, 1))}.bg-orange-300{--tw-bg-opacity: 1;background-color:rgb(253 186 116 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-300{--tw-bg-opacity: 1;background-color:rgb(216 180 254 / var(--tw-bg-opacity, 1))}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/20{background-color:#ef444433}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/30{background-color:#ffffff4d}.bg-white\/80{background-color:#fffc}.bg-white\/90{background-color:#ffffffe6}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-300{--tw-bg-opacity: 1;background-color:rgb(253 224 71 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-opacity-20{--tw-bg-opacity: .2}.bg-opacity-50{--tw-bg-opacity: .5}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from: #f59e0b var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from: #eff6ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 246 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500\/20{--tw-gradient-from: rgb(59 130 246 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500{--tw-gradient-from: #06b6d4 var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500{--tw-gradient-from: #10b981 var(--tw-gradient-from-position);--tw-gradient-to: rgb(16 185 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-100{--tw-gradient-from: #f3f4f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(243 244 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-50{--tw-gradient-from: #f9fafb var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 250 251 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-50{--tw-gradient-from: #f0fdf4 var(--tw-gradient-from-position);--tw-gradient-to: rgb(240 253 244 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-100{--tw-gradient-from: #e0e7ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(224 231 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-50{--tw-gradient-from: #eef2ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(238 242 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-100{--tw-gradient-from: #ffedd5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 237 213 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-50{--tw-gradient-from: #fff7ed var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 247 237 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-100{--tw-gradient-from: #f3e8ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(243 232 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-50{--tw-gradient-from: #faf5ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(250 245 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-rose-500{--tw-gradient-from: #f43f5e var(--tw-gradient-from-position);--tw-gradient-to: rgb(244 63 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from: transparent var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-100{--tw-gradient-from: #fef9c3 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 249 195 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-400{--tw-gradient-from: #facc15 var(--tw-gradient-from-position);--tw-gradient-to: rgb(250 204 21 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-50{--tw-gradient-from: #fefce8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 252 232 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-500{--tw-gradient-from: #eab308 var(--tw-gradient-from-position);--tw-gradient-to: rgb(234 179 8 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-gray-300{--tw-gradient-to: rgb(209 213 219 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #d1d5db var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-amber-100{--tw-gradient-to: #fef3c7 var(--tw-gradient-to-position)}.to-amber-50{--tw-gradient-to: #fffbeb var(--tw-gradient-to-position)}.to-amber-600{--tw-gradient-to: #d97706 var(--tw-gradient-to-position)}.to-blue-100{--tw-gradient-to: #dbeafe var(--tw-gradient-to-position)}.to-blue-500{--tw-gradient-to: #3b82f6 var(--tw-gradient-to-position)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-emerald-50{--tw-gradient-to: #ecfdf5 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-emerald-600{--tw-gradient-to: #059669 var(--tw-gradient-to-position)}.to-gray-100{--tw-gradient-to: #f3f4f6 var(--tw-gradient-to-position)}.to-gray-200{--tw-gradient-to: #e5e7eb var(--tw-gradient-to-position)}.to-gray-50{--tw-gradient-to: #f9fafb var(--tw-gradient-to-position)}.to-green-100{--tw-gradient-to: #dcfce7 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-indigo-50{--tw-gradient-to: #eef2ff var(--tw-gradient-to-position)}.to-indigo-500{--tw-gradient-to: #6366f1 var(--tw-gradient-to-position)}.to-indigo-600{--tw-gradient-to: #4f46e5 var(--tw-gradient-to-position)}.to-orange-100{--tw-gradient-to: #ffedd5 var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.to-pink-100{--tw-gradient-to: #fce7f3 var(--tw-gradient-to-position)}.to-pink-50{--tw-gradient-to: #fdf2f8 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-purple-100{--tw-gradient-to: #f3e8ff var(--tw-gradient-to-position)}.to-purple-50{--tw-gradient-to: #faf5ff var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-purple-500\/20{--tw-gradient-to: rgb(168 85 247 / .2) var(--tw-gradient-to-position)}.to-purple-600{--tw-gradient-to: #9333ea var(--tw-gradient-to-position)}.to-red-100{--tw-gradient-to: #fee2e2 var(--tw-gradient-to-position)}.to-red-50{--tw-gradient-to: #fef2f2 var(--tw-gradient-to-position)}.to-red-600{--tw-gradient-to: #dc2626 var(--tw-gradient-to-position)}.to-rose-600{--tw-gradient-to: #e11d48 var(--tw-gradient-to-position)}.to-slate-50{--tw-gradient-to: #f8fafc var(--tw-gradient-to-position)}.to-teal-500{--tw-gradient-to: #14b8a6 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.to-yellow-100{--tw-gradient-to: #fef9c3 var(--tw-gradient-to-position)}.to-yellow-50{--tw-gradient-to: #fefce8 var(--tw-gradient-to-position)}.to-yellow-500{--tw-gradient-to: #eab308 var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-3{padding-left:.75rem}.pl-9{padding-left:2.25rem}.pr-10{padding-right:2.5rem}.pr-14{padding-right:3.5rem}.pr-3{padding-right:.75rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10px\]{font-size:10px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-100{--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.text-blue-200{--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-cyan-500{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-gray-950{--tw-text-opacity: 1;color:rgb(3 7 18 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-green-900{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-indigo-800{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-purple-800{--tw-text-opacity: 1;color:rgb(107 33 168 / var(--tw-text-opacity, 1))}.text-purple-900{--tw-text-opacity: 1;color:rgb(88 28 135 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-rose-600{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/70{color:#ffffffb3}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-90{opacity:.9}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.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)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));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-sm{--tw-backdrop-blur: blur(4px);-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(24px);-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{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--primary-color: #667eea;--secondary-color: #764ba2;--accent-color: #f093fb;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(255, 255, 255, .95);--glass-color: rgba(255, 255, 255, .1);--text-primary: #1f2937;--text-secondary: #6b7280;--border-color: rgba(255, 255, 255, .2)}.glass{background:var(--glass-color);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-color);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,inset 0 1px #ffffff1a}.glass-strong{background:var(--surface-color);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);border:1px solid rgba(255,255,255,.3);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d,inset 0 1px #ffffff1a}.card{background:var(--surface-color);border-radius:16px;border:1px solid rgba(255,255,255,.2);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative}.stat-card{background:linear-gradient(135deg,#fffffff2,#fffc);border-radius:20px;border:1px solid rgba(255,255,255,.3);padding:24px;position:relative;overflow:hidden;transition:all .3s ease}.btn-secondary{background:linear-gradient(135deg,#6b7280,#4b5563);color:#fff;box-shadow:0 10px 15px -3px #6b72804d,0 4px 6px -2px #6b72800d}.btn-secondary:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #6b72804d,0 10px 10px -5px #6b72801a}.form-input{background:#ffffffe6;border:2px solid rgba(255,255,255,.3);border-radius:12px;padding:8px 12px;font-size:14px;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.form-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #667eea1a,0 10px 15px -3px #0000001a;background:#fffffff2}.table-container{background:#fffffff2;border-radius:16px;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.table-row{transition:all .2s ease}.table-row:hover{background:#667eea0d;transform:scale(1.005)}.modal{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0006}.modal-content{background:#fffffff2;border-radius:24px;border:1px solid rgba(255,255,255,.3);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}@media (max-width: 640px){.glass,.glass-strong{margin:12px;border-radius:16px;padding:16px}.stat-card{padding:12px;border-radius:12px}.stat-icon{width:40px;height:40px;font-size:16px}.tab-btn{font-size:12px;padding:10px 6px}.modal-content{margin:8px;max-width:calc(100vw - 24px);padding:16px}.modal-scroll-content{max-height:calc(90vh - 100px)}.card{border-radius:12px}.form-input,.form-select,.form-textarea{font-size:14px;padding:8px 12px}.btn{font-size:14px;padding:8px 16px}.table-container table{font-size:12px}.table-container th,.table-container td{padding:8px 12px}.toast{min-width:280px;max-width:calc(100vw - 40px);right:12px;top:60px}.loading-spinner{width:16px;height:16px}}.fa-openai{width:16px;height:16px;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNjQwIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIHY3LjAuMCBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIENvcHlyaWdodCAyMDI1IEZvbnRpY29ucywgSW5jLi0tPjxwYXRoIGQ9Ik0yNjAuNCAyNDkuOHYtNDguNmMwLTQuMSAxLjUtNy4yIDUuMS05LjJsOTcuOC01Ni4zYzEzLjMtNy43IDI5LjItMTEuMyA0NS42LTExLjMgNjEuNCAwIDEwMC40IDQ3LjYgMTAwLjQgOTguMyAwIDMuNiAwIDcuNy0uNSAxMS44bC0xMDEuNS01OS40Yy02LjEtMy42LTEyLjMtMy42LTE4LjQgMGwtMTI4LjUgNzQuN3ptMjI4LjMgMTg5LjRWMzIzYzAtNy4yLTMuMS0xMi4zLTkuMi0xNS45TDM1MSAyMzIuNGw0Mi0yNC4xYzMuNi0yIDYuNy0yIDEwLjIgMGw5Ny44IDU2LjRjMjguMiAxNi40IDQ3LjEgNTEuMiA0Ny4xIDg1IDAgMzguOS0yMyA3NC44LTU5LjQgODkuNnpNMjMwLjIgMzM2LjhsLTQyLTI0LjZjLTMuNi0yLTUuMS01LjEtNS4xLTkuMlYxOTAuNGMwLTU0LjggNDItOTYuMyA5OC44LTk2LjMgMjEuNSAwIDQxLjUgNy4yIDU4LjQgMjBsLTEwMC45IDU4LjRjLTYuMSAzLjYtOS4yIDguNy05LjIgMTUuOXYxNDguNXptOTAuNCA1Mi4ybC02MC4yLTMzLjh2LTcxLjdsNjAuMi0zMy44IDYwLjIgMzMuOHY3MS43TDMyMC42IDM4OXptMzguNyAxNTUuN2MtMjEuNSAwLTQxLjUtNy4yLTU4LjQtMjBsMTAwLjktNTguNGM2LjEtMy42IDkuMi04LjcgOS4yLTE1LjlWMzAxLjlsNDIuNSAyNC42YzMuNiAyIDUuMSA1LjEgNS4xIDkuMnYxMTIuNmMwIDU0LjgtNDIuNSA5Ni4zLTk5LjMgOTYuM3pNMjM3LjggNDMwLjVsLTk3LjctNTYuM0MxMTEuOSAzNTcuOCA5MyAzMjMgOTMgMjg5LjJjMC0zOS40IDIzLjYtNzQuOCA1OS45LTg5LjZ2MTE2LjdjMCA3LjIgMy4xIDEyLjMgOS4yIDE1LjlsMTI4IDc0LjItNDIgMjQuMWMtMy42IDItNi43IDItMTAuMiAwem0tNS42IDg0Yy01Ny45IDAtMTAwLjQtNDMuNS0xMDAuNC05Ny4zIDAtNC4xLjUtOC4yIDEtMTIuM2wxMDAuOSA1OC40YzYuMSAzLjYgMTIuMyAzLjYgMTguNCAwbDEyOC41LTc0LjJ2NDguNmMwIDQuMS0xLjUgNy4yLTUuMSA5LjJsLTk3LjggNTYuM2MtMTMuMyA3LjctMjkuMiAxMS4zLTQ1LjYgMTEuM3ptMTI3IDYwLjljNjIgMCAxMTMuNy00NCAxMjUuNC0xMDIuNCA1Ny4zLTE0LjkgOTQuMi02OC42IDk0LjItMTIzLjQgMC0zNS44LTE1LjQtNzAuNy00My05NS43IDIuNi0xMC44IDQuMS0yMS41IDQuMS0zMi4zIDAtNzMuMi01OS40LTEyOC0xMjgtMTI4LTEzLjggMC0yNy4xIDItNDAuNCA2LjctMjMtMjIuNS01NC44LTM2LjktODkuNi0zNi45LTYyIDAtMTEzLjcgNDQtMTI1LjQgMTAyLjQtNTcuMyAxNC44LTk0LjIgNjguNi05NC4yIDEyMy40IDAgMzUuOCAxNS40IDcwLjcgNDMgOTUuNy0yLjYgMTAuOC00LjEgMjEuNS00LjEgMzIuMyAwIDczLjIgNTkuNCAxMjggMTI4IDEyOCAxMy44IDAgMjcuMS0yIDQwLjQtNi43IDIzIDIyLjUgNTQuOCAzNi45IDg5LjYgMzYuOXoiLz48L3N2Zz4=) no-repeat center/100%}/*! +.toast-container[data-v-c8b24ff5]{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:12px;pointer-events:none}.toast[data-v-c8b24ff5]{min-width:320px;max-width:500px;background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000001f;border:1px solid #e5e7eb;overflow:hidden;position:relative;pointer-events:auto;cursor:pointer;transform:translate(100%);opacity:0;transition:all .3s cubic-bezier(.4,0,.2,1)}.dark{background:#1f2937;border:1px solid #374151;box-shadow:0 8px 32px #0000004d}.toast-show[data-v-c8b24ff5]{transform:translate(0);opacity:1}.toast-hide[data-v-c8b24ff5]{transform:translate(100%);opacity:0}.toast-content[data-v-c8b24ff5]{display:flex;align-items:flex-start;padding:16px;gap:12px}.toast-icon[data-v-c8b24ff5]{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:14px}.toast-body[data-v-c8b24ff5]{flex:1}.toast-title[data-v-c8b24ff5]{font-weight:600;font-size:14px;line-height:1.4;margin-bottom:4px}.toast-message[data-v-c8b24ff5]{font-size:14px;line-height:1.5;word-wrap:break-word}.toast-close[data-v-c8b24ff5]{flex-shrink:0;width:24px;height:24px;border:none;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;color:#9ca3af;transition:all .2s ease}.toast-close[data-v-c8b24ff5]:hover{background:#f3f4f6;color:#6b7280}.dark{background:#374151;color:#9ca3af}.toast-progress[data-v-c8b24ff5]{position:absolute;bottom:0;left:0;height:3px;background:currentColor;opacity:.3;animation:toast-progress-c8b24ff5 linear forwards}@keyframes toast-progress-c8b24ff5{0%{width:100%}to{width:0%}}.toast-success[data-v-c8b24ff5]{border-left:4px solid #10b981}.toast-success .toast-icon[data-v-c8b24ff5]{color:#10b981;background:#d1fae5}.dark{background:#064e3b}.toast-success .toast-title[data-v-c8b24ff5]{color:#065f46}.dark{color:#10b981}.toast-success .toast-message[data-v-c8b24ff5]{color:#047857}.dark{color:#34d399}.toast-success .toast-progress[data-v-c8b24ff5]{background:#10b981}.toast-error[data-v-c8b24ff5]{border-left:4px solid #ef4444}.toast-error .toast-icon[data-v-c8b24ff5]{color:#ef4444;background:#fee2e2}.dark{background:#7f1d1d}.toast-error .toast-title[data-v-c8b24ff5]{color:#991b1b}.dark{color:#ef4444}.toast-error .toast-message[data-v-c8b24ff5]{color:#dc2626}.dark{color:#f87171}.toast-error .toast-progress[data-v-c8b24ff5]{background:#ef4444}.toast-warning[data-v-c8b24ff5]{border-left:4px solid #f59e0b}.toast-warning .toast-icon[data-v-c8b24ff5]{color:#f59e0b;background:#fef3c7}.dark{background:#78350f}.toast-warning .toast-title[data-v-c8b24ff5]{color:#92400e}.dark{color:#f59e0b}.toast-warning .toast-message[data-v-c8b24ff5]{color:#d97706}.dark{color:#fbbf24}.toast-warning .toast-progress[data-v-c8b24ff5]{background:#f59e0b}.toast-info[data-v-c8b24ff5]{border-left:4px solid #3b82f6}.toast-info .toast-icon[data-v-c8b24ff5]{color:#3b82f6;background:#dbeafe}.dark{background:#1e3a8a}.toast-info .toast-title[data-v-c8b24ff5]{color:#1e40af}.dark{color:#3b82f6}.toast-info .toast-message[data-v-c8b24ff5]{color:#2563eb}.dark{color:#60a5fa}.toast-info .toast-progress[data-v-c8b24ff5]{background:#3b82f6}@media (max-width: 640px){.toast-container[data-v-c8b24ff5]{top:10px;right:10px;left:10px}.toast[data-v-c8b24ff5]{min-width:auto;max-width:none}}.toast-list-enter-active[data-v-c8b24ff5],.toast-list-leave-active[data-v-c8b24ff5]{transition:all .3s ease}.toast-list-enter-from[data-v-c8b24ff5],.toast-list-leave-to[data-v-c8b24ff5]{opacity:0;transform:translate(100%)}.toast-list-move[data-v-c8b24ff5]{transition:transform .3s ease}.modal[data-v-6b3390a6]{background:#00000080;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dark{background:#000000b3}.modal-content[data-v-6b3390a6]{background:#fff;border-radius:16px;box-shadow:0 20px 64px #00000026;border:1px solid #e5e7eb;max-height:90vh;overflow-y:auto}.dark{background:#1f2937;border:1px solid #374151;box-shadow:0 20px 64px #000c}.btn[data-v-6b3390a6]{display:inline-flex;align-items:center;justify-content:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn[data-v-6b3390a6]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-offset-width: 2px}.btn-danger[data-v-6b3390a6]{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-danger[data-v-6b3390a6]:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.btn-danger[data-v-6b3390a6]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.btn-warning[data-v-6b3390a6]{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-warning[data-v-6b3390a6]:hover{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity, 1))}.btn-warning[data-v-6b3390a6]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(245 158 11 / var(--tw-ring-opacity, 1))}.loading-spinner[data-v-6b3390a6]{height:1rem;width:1rem}@keyframes spin-6b3390a6{to{transform:rotate(360deg)}}.loading-spinner[data-v-6b3390a6]{animation:spin-6b3390a6 1s linear infinite;border-radius:9999px;border-width:2px;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-border-opacity: 1;border-top-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.modal-enter-active[data-v-6b3390a6],.modal-leave-active[data-v-6b3390a6]{transition:all .3s ease}.modal-enter-from[data-v-6b3390a6],.modal-leave-to[data-v-6b3390a6]{opacity:0}.modal-enter-active .modal-content[data-v-6b3390a6],.modal-leave-active .modal-content[data-v-6b3390a6]{transition:transform .3s ease}.modal-enter-from .modal-content[data-v-6b3390a6],.modal-leave-to .modal-content[data-v-6b3390a6]{transform:scale(.9) translateY(-20px)}.modal-content[data-v-6b3390a6]::-webkit-scrollbar{width:6px}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px}.dark{background:#374151}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.dark{background:#4b5563}.modal-content[data-v-6b3390a6]::-webkit-scrollbar-thumb:hover{background:#94a3b8}.dark{background:#6b7280}#app[data-v-dab04b7e]{min-height:100vh}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-0\.5{top:-.125rem;right:-.125rem;bottom:-.125rem;left:-.125rem}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.-right-2{right:-.5rem}.-top-2{top:-.5rem}.left-0{left:0}.left-3{left:.75rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-3{top:.75rem}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[9999\]{z-index:9999}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-2\.5{margin-left:.625rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-8{margin-right:2rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-row{display:table-row}.grid{display:grid}.hidden{display:none}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-\[250px\]{max-height:250px}.max-h-\[90vh\]{max-height:90vh}.min-h-\[32px\]{min-height:32px}.min-h-\[48px\]{min-height:48px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[10\%\]{width:10%}.w-\[12\%\]{width:12%}.w-\[15\%\]{width:15%}.w-\[17\%\]{width:17%}.w-\[20\%\]{width:20%}.w-\[22\%\]{width:22%}.w-\[25\%\]{width:25%}.w-\[50px\]{width:50px}.w-\[8\%\]{width:8%}.w-\[95\%\]{width:95%}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[140px\]{min-width:140px}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.min-w-\[200px\]{min-width:200px}.min-w-\[20px\]{min-width:20px}.min-w-\[32px\]{min-width:32px}.min-w-\[70px\]{min-width:70px}.min-w-\[80px\]{min-width:80px}.min-w-\[90px\]{min-width:90px}.min-w-full{min-width:100%}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[100px\]{max-width:100px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-2{--tw-translate-y: -.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance: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))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.divide-gray-200\/50>:not([hidden])~:not([hidden]){border-color:#e5e7eb80}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-amber-400{--tw-border-opacity: 1;border-color:rgb(251 191 36 / var(--tw-border-opacity, 1))}.border-blue-100{--tw-border-opacity: 1;border-color:rgb(219 234 254 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-300{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-200\/50{border-color:#e5e7eb80}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-gray-300\/30{border-color:#d1d5db4d}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.border-green-100{--tw-border-opacity: 1;border-color:rgb(220 252 231 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-indigo-100{--tw-border-opacity: 1;border-color:rgb(224 231 255 / var(--tw-border-opacity, 1))}.border-indigo-200{--tw-border-opacity: 1;border-color:rgb(199 210 254 / var(--tw-border-opacity, 1))}.border-orange-100{--tw-border-opacity: 1;border-color:rgb(255 237 213 / var(--tw-border-opacity, 1))}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-300{--tw-border-opacity: 1;border-color:rgb(253 186 116 / var(--tw-border-opacity, 1))}.border-purple-100{--tw-border-opacity: 1;border-color:rgb(243 232 255 / var(--tw-border-opacity, 1))}.border-purple-200{--tw-border-opacity: 1;border-color:rgb(233 213 255 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/30{border-color:#ef44444d}.border-transparent{border-color:transparent}.border-white\/20{border-color:#fff3}.border-yellow-100{--tw-border-opacity: 1;border-color:rgb(254 249 195 / var(--tw-border-opacity, 1))}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-300{--tw-border-opacity: 1;border-color:rgb(253 224 71 / var(--tw-border-opacity, 1))}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity, 1))}.bg-black\/60{background-color:#0009}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-300{--tw-bg-opacity: 1;background-color:rgb(147 197 253 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-300\/50{background-color:#d1d5db80}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-gray-50\/80{background-color:#f9fafbcc}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-indigo-300{--tw-bg-opacity: 1;background-color:rgb(165 180 252 / var(--tw-bg-opacity, 1))}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.bg-orange-100{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.bg-orange-200{--tw-bg-opacity: 1;background-color:rgb(254 215 170 / var(--tw-bg-opacity, 1))}.bg-orange-300{--tw-bg-opacity: 1;background-color:rgb(253 186 116 / var(--tw-bg-opacity, 1))}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-300{--tw-bg-opacity: 1;background-color:rgb(216 180 254 / var(--tw-bg-opacity, 1))}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/20{background-color:#ef444433}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/30{background-color:#ffffff4d}.bg-white\/80{background-color:#fffc}.bg-white\/90{background-color:#ffffffe6}.bg-yellow-100{--tw-bg-opacity: 1;background-color:rgb(254 249 195 / var(--tw-bg-opacity, 1))}.bg-yellow-300{--tw-bg-opacity: 1;background-color:rgb(253 224 71 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity, 1))}.bg-opacity-20{--tw-bg-opacity: .2}.bg-opacity-50{--tw-bg-opacity: .5}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-amber-500{--tw-gradient-from: #f59e0b var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-100{--tw-gradient-from: #dbeafe var(--tw-gradient-from-position);--tw-gradient-to: rgb(219 234 254 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from: #eff6ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 246 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500\/20{--tw-gradient-from: rgb(59 130 246 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-600{--tw-gradient-from: #2563eb var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500{--tw-gradient-from: #06b6d4 var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-500{--tw-gradient-from: #10b981 var(--tw-gradient-from-position);--tw-gradient-to: rgb(16 185 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-100{--tw-gradient-from: #f3f4f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(243 244 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-50{--tw-gradient-from: #f9fafb var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 250 251 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-600{--tw-gradient-from: #4b5563 var(--tw-gradient-from-position);--tw-gradient-to: rgb(75 85 99 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-50{--tw-gradient-from: #f0fdf4 var(--tw-gradient-from-position);--tw-gradient-to: rgb(240 253 244 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-100{--tw-gradient-from: #e0e7ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(224 231 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-50{--tw-gradient-from: #eef2ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(238 242 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-100{--tw-gradient-from: #ffedd5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 237 213 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-50{--tw-gradient-from: #fff7ed var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 247 237 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-100{--tw-gradient-from: #f3e8ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(243 232 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-50{--tw-gradient-from: #faf5ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(250 245 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-rose-500{--tw-gradient-from: #f43f5e var(--tw-gradient-from-position);--tw-gradient-to: rgb(244 63 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from: transparent var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-100{--tw-gradient-from: #fef9c3 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 249 195 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-400{--tw-gradient-from: #facc15 var(--tw-gradient-from-position);--tw-gradient-to: rgb(250 204 21 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-50{--tw-gradient-from: #fefce8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 252 232 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-yellow-500{--tw-gradient-from: #eab308 var(--tw-gradient-from-position);--tw-gradient-to: rgb(234 179 8 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-gray-300{--tw-gradient-to: rgb(209 213 219 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #d1d5db var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-amber-100{--tw-gradient-to: #fef3c7 var(--tw-gradient-to-position)}.to-amber-50{--tw-gradient-to: #fffbeb var(--tw-gradient-to-position)}.to-amber-600{--tw-gradient-to: #d97706 var(--tw-gradient-to-position)}.to-blue-100{--tw-gradient-to: #dbeafe var(--tw-gradient-to-position)}.to-blue-500{--tw-gradient-to: #3b82f6 var(--tw-gradient-to-position)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-100{--tw-gradient-to: #cffafe var(--tw-gradient-to-position)}.to-cyan-600{--tw-gradient-to: #0891b2 var(--tw-gradient-to-position)}.to-emerald-50{--tw-gradient-to: #ecfdf5 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-emerald-600{--tw-gradient-to: #059669 var(--tw-gradient-to-position)}.to-gray-100{--tw-gradient-to: #f3f4f6 var(--tw-gradient-to-position)}.to-gray-200{--tw-gradient-to: #e5e7eb var(--tw-gradient-to-position)}.to-gray-50{--tw-gradient-to: #f9fafb var(--tw-gradient-to-position)}.to-gray-700{--tw-gradient-to: #374151 var(--tw-gradient-to-position)}.to-green-100{--tw-gradient-to: #dcfce7 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-indigo-50{--tw-gradient-to: #eef2ff var(--tw-gradient-to-position)}.to-indigo-500{--tw-gradient-to: #6366f1 var(--tw-gradient-to-position)}.to-indigo-600{--tw-gradient-to: #4f46e5 var(--tw-gradient-to-position)}.to-orange-100{--tw-gradient-to: #ffedd5 var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.to-pink-100{--tw-gradient-to: #fce7f3 var(--tw-gradient-to-position)}.to-pink-50{--tw-gradient-to: #fdf2f8 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-purple-100{--tw-gradient-to: #f3e8ff var(--tw-gradient-to-position)}.to-purple-50{--tw-gradient-to: #faf5ff var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-purple-500\/20{--tw-gradient-to: rgb(168 85 247 / .2) var(--tw-gradient-to-position)}.to-purple-600{--tw-gradient-to: #9333ea var(--tw-gradient-to-position)}.to-red-100{--tw-gradient-to: #fee2e2 var(--tw-gradient-to-position)}.to-red-50{--tw-gradient-to: #fef2f2 var(--tw-gradient-to-position)}.to-red-600{--tw-gradient-to: #dc2626 var(--tw-gradient-to-position)}.to-rose-600{--tw-gradient-to: #e11d48 var(--tw-gradient-to-position)}.to-slate-50{--tw-gradient-to: #f8fafc var(--tw-gradient-to-position)}.to-teal-500{--tw-gradient-to: #14b8a6 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.to-yellow-100{--tw-gradient-to: #fef9c3 var(--tw-gradient-to-position)}.to-yellow-50{--tw-gradient-to: #fefce8 var(--tw-gradient-to-position)}.to-yellow-500{--tw-gradient-to: #eab308 var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-3{padding-left:.75rem}.pl-9{padding-left:2.25rem}.pr-10{padding-right:2.5rem}.pr-14{padding-right:3.5rem}.pr-3{padding-right:.75rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10px\]{font-size:10px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-800{--tw-text-opacity: 1;color:rgb(146 64 14 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-100{--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.text-blue-200{--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-cyan-500{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-gray-950{--tw-text-opacity: 1;color:rgb(3 7 18 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-green-800{--tw-text-opacity: 1;color:rgb(22 101 52 / var(--tw-text-opacity, 1))}.text-green-900{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-indigo-800{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-700{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-purple-800{--tw-text-opacity: 1;color:rgb(107 33 168 / var(--tw-text-opacity, 1))}.text-purple-900{--tw-text-opacity: 1;color:rgb(88 28 135 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-800{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.text-rose-600{--tw-text-opacity: 1;color:rgb(225 29 72 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/70{color:#ffffffb3}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-90{opacity:.9}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-green-500\/20{--tw-ring-color: rgb(34 197 94 / .2)}.ring-red-500\/20{--tw-ring-color: rgb(239 68 68 / .2)}.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)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));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-sm{--tw-backdrop-blur: blur(4px);-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(24px);-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{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}:root{--primary-color: #667eea;--secondary-color: #764ba2;--accent-color: #f093fb;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(255, 255, 255, .95);--glass-color: rgba(255, 255, 255, .1);--text-primary: #1f2937;--text-secondary: #6b7280;--border-color: rgba(255, 255, 255, .2)}.glass{background:var(--glass-color);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border-color);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,inset 0 1px #ffffff1a}.glass-strong{background:var(--surface-color);-webkit-backdrop-filter:blur(25px);backdrop-filter:blur(25px);border:1px solid rgba(255,255,255,.3);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d,inset 0 1px #ffffff1a}.card{background:var(--surface-color);border-radius:16px;border:1px solid rgba(255,255,255,.2);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative}.stat-card{background:linear-gradient(135deg,#fffffff2,#fffc);border-radius:20px;border:1px solid rgba(255,255,255,.3);padding:24px;position:relative;overflow:hidden;transition:all .3s ease}.btn-secondary{background:linear-gradient(135deg,#6b7280,#4b5563);color:#fff;box-shadow:0 10px 15px -3px #6b72804d,0 4px 6px -2px #6b72800d}.btn-secondary:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #6b72804d,0 10px 10px -5px #6b72801a}.form-input{background:#ffffffe6;border:2px solid rgba(255,255,255,.3);border-radius:12px;padding:8px 12px;font-size:14px;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.form-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #667eea1a,0 10px 15px -3px #0000001a;background:#fffffff2}.table-container{background:#fffffff2;border-radius:16px;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.table-row{transition:all .2s ease}.table-row:hover{background:#667eea0d;transform:scale(1.005)}.modal{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0006}.modal-content{background:#fffffff2;border-radius:24px;border:1px solid rgba(255,255,255,.3);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}@media (max-width: 640px){.glass,.glass-strong{margin:12px;border-radius:16px;padding:16px}.stat-card{padding:12px;border-radius:12px}.stat-icon{width:40px;height:40px;font-size:16px}.tab-btn{font-size:12px;padding:10px 6px}.modal-content{margin:8px;max-width:calc(100vw - 24px);padding:16px}.modal-scroll-content{max-height:calc(90vh - 100px)}.card{border-radius:12px}.form-input,.form-select,.form-textarea{font-size:14px;padding:8px 12px}.btn{font-size:14px;padding:8px 16px}.table-container table{font-size:12px}.table-container th,.table-container td{padding:8px 12px}.toast{min-width:280px;max-width:calc(100vw - 40px);right:12px;top:60px}.loading-spinner{width:16px;height:16px}}.fa-openai{width:16px;height:16px;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NDAgNjQwIj48IS0tIUZvbnQgQXdlc29tZSBGcmVlIHY3LjAuMCBieSBAZm9udGF3ZXNvbWUgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbSBMaWNlbnNlIC0gaHR0cHM6Ly9mb250YXdlc29tZS5jb20vbGljZW5zZS9mcmVlIENvcHlyaWdodCAyMDI1IEZvbnRpY29ucywgSW5jLi0tPjxwYXRoIGQ9Ik0yNjAuNCAyNDkuOHYtNDguNmMwLTQuMSAxLjUtNy4yIDUuMS05LjJsOTcuOC01Ni4zYzEzLjMtNy43IDI5LjItMTEuMyA0NS42LTExLjMgNjEuNCAwIDEwMC40IDQ3LjYgMTAwLjQgOTguMyAwIDMuNiAwIDcuNy0uNSAxMS44bC0xMDEuNS01OS40Yy02LjEtMy42LTEyLjMtMy42LTE4LjQgMGwtMTI4LjUgNzQuN3ptMjI4LjMgMTg5LjRWMzIzYzAtNy4yLTMuMS0xMi4zLTkuMi0xNS45TDM1MSAyMzIuNGw0Mi0yNC4xYzMuNi0yIDYuNy0yIDEwLjIgMGw5Ny44IDU2LjRjMjguMiAxNi40IDQ3LjEgNTEuMiA0Ny4xIDg1IDAgMzguOS0yMyA3NC44LTU5LjQgODkuNnpNMjMwLjIgMzM2LjhsLTQyLTI0LjZjLTMuNi0yLTUuMS01LjEtNS4xLTkuMlYxOTAuNGMwLTU0LjggNDItOTYuMyA5OC44LTk2LjMgMjEuNSAwIDQxLjUgNy4yIDU4LjQgMjBsLTEwMC45IDU4LjRjLTYuMSAzLjYtOS4yIDguNy05LjIgMTUuOXYxNDguNXptOTAuNCA1Mi4ybC02MC4yLTMzLjh2LTcxLjdsNjAuMi0zMy44IDYwLjIgMzMuOHY3MS43TDMyMC42IDM4OXptMzguNyAxNTUuN2MtMjEuNSAwLTQxLjUtNy4yLTU4LjQtMjBsMTAwLjktNTguNGM2LjEtMy42IDkuMi04LjcgOS4yLTE1LjlWMzAxLjlsNDIuNSAyNC42YzMuNiAyIDUuMSA1LjEgNS4xIDkuMnYxMTIuNmMwIDU0LjgtNDIuNSA5Ni4zLTk5LjMgOTYuM3pNMjM3LjggNDMwLjVsLTk3LjctNTYuM0MxMTEuOSAzNTcuOCA5MyAzMjMgOTMgMjg5LjJjMC0zOS40IDIzLjYtNzQuOCA1OS45LTg5LjZ2MTE2LjdjMCA3LjIgMy4xIDEyLjMgOS4yIDE1LjlsMTI4IDc0LjItNDIgMjQuMWMtMy42IDItNi43IDItMTAuMiAwem0tNS42IDg0Yy01Ny45IDAtMTAwLjQtNDMuNS0xMDAuNC05Ny4zIDAtNC4xLjUtOC4yIDEtMTIuM2wxMDAuOSA1OC40YzYuMSAzLjYgMTIuMyAzLjYgMTguNCAwbDEyOC41LTc0LjJ2NDguNmMwIDQuMS0xLjUgNy4yLTUuMSA5LjJsLTk3LjggNTYuM2MtMTMuMyA3LjctMjkuMiAxMS4zLTQ1LjYgMTEuM3ptMTI3IDYwLjljNjIgMCAxMTMuNy00NCAxMjUuNC0xMDIuNCA1Ny4zLTE0LjkgOTQuMi02OC42IDk0LjItMTIzLjQgMC0zNS44LTE1LjQtNzAuNy00My05NS43IDIuNi0xMC44IDQuMS0yMS41IDQuMS0zMi4zIDAtNzMuMi01OS40LTEyOC0xMjgtMTI4LTEzLjggMC0yNy4xIDItNDAuNCA2LjctMjMtMjIuNS01NC44LTM2LjktODkuNi0zNi45LTYyIDAtMTEzLjcgNDQtMTI1LjQgMTAyLjQtNTcuMyAxNC44LTk0LjIgNjguNi05NC4yIDEyMy40IDAgMzUuOCAxNS40IDcwLjcgNDMgOTUuNy0yLjYgMTAuOC00LjEgMjEuNS00LjEgMzIuMyAwIDczLjIgNTkuNCAxMjggMTI4IDEyOCAxMy44IDAgMjcuMS0yIDQwLjQtNi43IDIzIDIyLjUgNTQuOCAzNi45IDg5LjYgMzYuOXoiLz48L3N2Zz4=) no-repeat center/100%}/*! * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2024 Fonticons, Inc. - */.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas:before,.far:before,.fab:before,.fa-solid:before,.fa-regular:before,.fa-brands:before,.fa:before{content:var(--fa)}.fa-classic,.fas,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(-1 * var(--fa-li-width, 2em));position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, .1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, .08em);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.28, .84, .42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 2s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0)}}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle, 0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0{--fa: "0"}.fa-1{--fa: "1"}.fa-2{--fa: "2"}.fa-3{--fa: "3"}.fa-4{--fa: "4"}.fa-5{--fa: "5"}.fa-6{--fa: "6"}.fa-7{--fa: "7"}.fa-8{--fa: "8"}.fa-9{--fa: "9"}.fa-fill-drip{--fa: ""}.fa-arrows-to-circle{--fa: ""}.fa-circle-chevron-right,.fa-chevron-circle-right{--fa: ""}.fa-at{--fa: "@"}.fa-trash-can,.fa-trash-alt{--fa: ""}.fa-text-height{--fa: ""}.fa-user-xmark,.fa-user-times{--fa: ""}.fa-stethoscope{--fa: ""}.fa-message,.fa-comment-alt{--fa: ""}.fa-info{--fa: ""}.fa-down-left-and-up-right-to-center,.fa-compress-alt{--fa: ""}.fa-explosion{--fa: ""}.fa-file-lines,.fa-file-alt,.fa-file-text{--fa: ""}.fa-wave-square{--fa: ""}.fa-ring{--fa: ""}.fa-building-un{--fa: ""}.fa-dice-three{--fa: ""}.fa-calendar-days,.fa-calendar-alt{--fa: ""}.fa-anchor-circle-check{--fa: ""}.fa-building-circle-arrow-right{--fa: ""}.fa-volleyball,.fa-volleyball-ball{--fa: ""}.fa-arrows-up-to-line{--fa: ""}.fa-sort-down,.fa-sort-desc{--fa: ""}.fa-circle-minus,.fa-minus-circle{--fa: ""}.fa-door-open{--fa: ""}.fa-right-from-bracket,.fa-sign-out-alt{--fa: ""}.fa-atom{--fa: ""}.fa-soap{--fa: ""}.fa-icons,.fa-heart-music-camera-bolt{--fa: ""}.fa-microphone-lines-slash,.fa-microphone-alt-slash{--fa: ""}.fa-bridge-circle-check{--fa: ""}.fa-pump-medical{--fa: ""}.fa-fingerprint{--fa: ""}.fa-hand-point-right{--fa: ""}.fa-magnifying-glass-location,.fa-search-location{--fa: ""}.fa-forward-step,.fa-step-forward{--fa: ""}.fa-face-smile-beam,.fa-smile-beam{--fa: ""}.fa-flag-checkered{--fa: ""}.fa-football,.fa-football-ball{--fa: ""}.fa-school-circle-exclamation{--fa: ""}.fa-crop{--fa: ""}.fa-angles-down,.fa-angle-double-down{--fa: ""}.fa-users-rectangle{--fa: ""}.fa-people-roof{--fa: ""}.fa-people-line{--fa: ""}.fa-beer-mug-empty,.fa-beer{--fa: ""}.fa-diagram-predecessor{--fa: ""}.fa-arrow-up-long,.fa-long-arrow-up{--fa: ""}.fa-fire-flame-simple,.fa-burn{--fa: ""}.fa-person,.fa-male{--fa: ""}.fa-laptop{--fa: ""}.fa-file-csv{--fa: ""}.fa-menorah{--fa: ""}.fa-truck-plane{--fa: ""}.fa-record-vinyl{--fa: ""}.fa-face-grin-stars,.fa-grin-stars{--fa: ""}.fa-bong{--fa: ""}.fa-spaghetti-monster-flying,.fa-pastafarianism{--fa: ""}.fa-arrow-down-up-across-line{--fa: ""}.fa-spoon,.fa-utensil-spoon{--fa: ""}.fa-jar-wheat{--fa: ""}.fa-envelopes-bulk,.fa-mail-bulk{--fa: ""}.fa-file-circle-exclamation{--fa: ""}.fa-circle-h,.fa-hospital-symbol{--fa: ""}.fa-pager{--fa: ""}.fa-address-book,.fa-contact-book{--fa: ""}.fa-strikethrough{--fa: ""}.fa-k{--fa: "K"}.fa-landmark-flag{--fa: ""}.fa-pencil,.fa-pencil-alt{--fa: ""}.fa-backward{--fa: ""}.fa-caret-right{--fa: ""}.fa-comments{--fa: ""}.fa-paste,.fa-file-clipboard{--fa: ""}.fa-code-pull-request{--fa: ""}.fa-clipboard-list{--fa: ""}.fa-truck-ramp-box,.fa-truck-loading{--fa: ""}.fa-user-check{--fa: ""}.fa-vial-virus{--fa: ""}.fa-sheet-plastic{--fa: ""}.fa-blog{--fa: ""}.fa-user-ninja{--fa: ""}.fa-person-arrow-up-from-line{--fa: ""}.fa-scroll-torah,.fa-torah{--fa: ""}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa: ""}.fa-toggle-off{--fa: ""}.fa-box-archive,.fa-archive{--fa: ""}.fa-person-drowning{--fa: ""}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa: ""}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa: ""}.fa-spray-can{--fa: ""}.fa-truck-monster{--fa: ""}.fa-w{--fa: "W"}.fa-earth-africa,.fa-globe-africa{--fa: ""}.fa-rainbow{--fa: ""}.fa-circle-notch{--fa: ""}.fa-tablet-screen-button,.fa-tablet-alt{--fa: ""}.fa-paw{--fa: ""}.fa-cloud{--fa: ""}.fa-trowel-bricks{--fa: ""}.fa-face-flushed,.fa-flushed{--fa: ""}.fa-hospital-user{--fa: ""}.fa-tent-arrow-left-right{--fa: ""}.fa-gavel,.fa-legal{--fa: ""}.fa-binoculars{--fa: ""}.fa-microphone-slash{--fa: ""}.fa-box-tissue{--fa: ""}.fa-motorcycle{--fa: ""}.fa-bell-concierge,.fa-concierge-bell{--fa: ""}.fa-pen-ruler,.fa-pencil-ruler{--fa: ""}.fa-people-arrows,.fa-people-arrows-left-right{--fa: ""}.fa-mars-and-venus-burst{--fa: ""}.fa-square-caret-right,.fa-caret-square-right{--fa: ""}.fa-scissors,.fa-cut{--fa: ""}.fa-sun-plant-wilt{--fa: ""}.fa-toilets-portable{--fa: ""}.fa-hockey-puck{--fa: ""}.fa-table{--fa: ""}.fa-magnifying-glass-arrow-right{--fa: ""}.fa-tachograph-digital,.fa-digital-tachograph{--fa: ""}.fa-users-slash{--fa: ""}.fa-clover{--fa: ""}.fa-reply,.fa-mail-reply{--fa: ""}.fa-star-and-crescent{--fa: ""}.fa-house-fire{--fa: ""}.fa-square-minus,.fa-minus-square{--fa: ""}.fa-helicopter{--fa: ""}.fa-compass{--fa: ""}.fa-square-caret-down,.fa-caret-square-down{--fa: ""}.fa-file-circle-question{--fa: ""}.fa-laptop-code{--fa: ""}.fa-swatchbook{--fa: ""}.fa-prescription-bottle{--fa: ""}.fa-bars,.fa-navicon{--fa: ""}.fa-people-group{--fa: ""}.fa-hourglass-end,.fa-hourglass-3{--fa: ""}.fa-heart-crack,.fa-heart-broken{--fa: ""}.fa-square-up-right,.fa-external-link-square-alt{--fa: ""}.fa-face-kiss-beam,.fa-kiss-beam{--fa: ""}.fa-film{--fa: ""}.fa-ruler-horizontal{--fa: ""}.fa-people-robbery{--fa: ""}.fa-lightbulb{--fa: ""}.fa-caret-left{--fa: ""}.fa-circle-exclamation,.fa-exclamation-circle{--fa: ""}.fa-school-circle-xmark{--fa: ""}.fa-arrow-right-from-bracket,.fa-sign-out{--fa: ""}.fa-circle-chevron-down,.fa-chevron-circle-down{--fa: ""}.fa-unlock-keyhole,.fa-unlock-alt{--fa: ""}.fa-cloud-showers-heavy{--fa: ""}.fa-headphones-simple,.fa-headphones-alt{--fa: ""}.fa-sitemap{--fa: ""}.fa-circle-dollar-to-slot,.fa-donate{--fa: ""}.fa-memory{--fa: ""}.fa-road-spikes{--fa: ""}.fa-fire-burner{--fa: ""}.fa-flag{--fa: ""}.fa-hanukiah{--fa: ""}.fa-feather{--fa: ""}.fa-volume-low,.fa-volume-down{--fa: ""}.fa-comment-slash{--fa: ""}.fa-cloud-sun-rain{--fa: ""}.fa-compress{--fa: ""}.fa-wheat-awn,.fa-wheat-alt{--fa: ""}.fa-ankh{--fa: ""}.fa-hands-holding-child{--fa: ""}.fa-asterisk{--fa: "*"}.fa-square-check,.fa-check-square{--fa: ""}.fa-peseta-sign{--fa: ""}.fa-heading,.fa-header{--fa: ""}.fa-ghost{--fa: ""}.fa-list,.fa-list-squares{--fa: ""}.fa-square-phone-flip,.fa-phone-square-alt{--fa: ""}.fa-cart-plus{--fa: ""}.fa-gamepad{--fa: ""}.fa-circle-dot,.fa-dot-circle{--fa: ""}.fa-face-dizzy,.fa-dizzy{--fa: ""}.fa-egg{--fa: ""}.fa-house-medical-circle-xmark{--fa: ""}.fa-campground{--fa: ""}.fa-folder-plus{--fa: ""}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa: ""}.fa-paintbrush,.fa-paint-brush{--fa: ""}.fa-lock{--fa: ""}.fa-gas-pump{--fa: ""}.fa-hot-tub-person,.fa-hot-tub{--fa: ""}.fa-map-location,.fa-map-marked{--fa: ""}.fa-house-flood-water{--fa: ""}.fa-tree{--fa: ""}.fa-bridge-lock{--fa: ""}.fa-sack-dollar{--fa: ""}.fa-pen-to-square,.fa-edit{--fa: ""}.fa-car-side{--fa: ""}.fa-share-nodes,.fa-share-alt{--fa: ""}.fa-heart-circle-minus{--fa: ""}.fa-hourglass-half,.fa-hourglass-2{--fa: ""}.fa-microscope{--fa: ""}.fa-sink{--fa: ""}.fa-bag-shopping,.fa-shopping-bag{--fa: ""}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa: ""}.fa-mitten{--fa: ""}.fa-person-rays{--fa: ""}.fa-users{--fa: ""}.fa-eye-slash{--fa: ""}.fa-flask-vial{--fa: ""}.fa-hand,.fa-hand-paper{--fa: ""}.fa-om{--fa: ""}.fa-worm{--fa: ""}.fa-house-circle-xmark{--fa: ""}.fa-plug{--fa: ""}.fa-chevron-up{--fa: ""}.fa-hand-spock{--fa: ""}.fa-stopwatch{--fa: ""}.fa-face-kiss,.fa-kiss{--fa: ""}.fa-bridge-circle-xmark{--fa: ""}.fa-face-grin-tongue,.fa-grin-tongue{--fa: ""}.fa-chess-bishop{--fa: ""}.fa-face-grin-wink,.fa-grin-wink{--fa: ""}.fa-ear-deaf,.fa-deaf,.fa-deafness,.fa-hard-of-hearing{--fa: ""}.fa-road-circle-check{--fa: ""}.fa-dice-five{--fa: ""}.fa-square-rss,.fa-rss-square{--fa: ""}.fa-land-mine-on{--fa: ""}.fa-i-cursor{--fa: ""}.fa-stamp{--fa: ""}.fa-stairs{--fa: ""}.fa-i{--fa: "I"}.fa-hryvnia-sign,.fa-hryvnia{--fa: ""}.fa-pills{--fa: ""}.fa-face-grin-wide,.fa-grin-alt{--fa: ""}.fa-tooth{--fa: ""}.fa-v{--fa: "V"}.fa-bangladeshi-taka-sign{--fa: ""}.fa-bicycle{--fa: ""}.fa-staff-snake,.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius{--fa: ""}.fa-head-side-cough-slash{--fa: ""}.fa-truck-medical,.fa-ambulance{--fa: ""}.fa-wheat-awn-circle-exclamation{--fa: ""}.fa-snowman{--fa: ""}.fa-mortar-pestle{--fa: ""}.fa-road-barrier{--fa: ""}.fa-school{--fa: ""}.fa-igloo{--fa: ""}.fa-joint{--fa: ""}.fa-angle-right{--fa: ""}.fa-horse{--fa: ""}.fa-q{--fa: "Q"}.fa-g{--fa: "G"}.fa-notes-medical{--fa: ""}.fa-temperature-half,.fa-temperature-2,.fa-thermometer-2,.fa-thermometer-half{--fa: ""}.fa-dong-sign{--fa: ""}.fa-capsules{--fa: ""}.fa-poo-storm,.fa-poo-bolt{--fa: ""}.fa-face-frown-open,.fa-frown-open{--fa: ""}.fa-hand-point-up{--fa: ""}.fa-money-bill{--fa: ""}.fa-bookmark{--fa: ""}.fa-align-justify{--fa: ""}.fa-umbrella-beach{--fa: ""}.fa-helmet-un{--fa: ""}.fa-bullseye{--fa: ""}.fa-bacon{--fa: ""}.fa-hand-point-down{--fa: ""}.fa-arrow-up-from-bracket{--fa: ""}.fa-folder,.fa-folder-blank{--fa: ""}.fa-file-waveform,.fa-file-medical-alt{--fa: ""}.fa-radiation{--fa: ""}.fa-chart-simple{--fa: ""}.fa-mars-stroke{--fa: ""}.fa-vial{--fa: ""}.fa-gauge,.fa-dashboard,.fa-gauge-med,.fa-tachometer-alt-average{--fa: ""}.fa-wand-magic-sparkles,.fa-magic-wand-sparkles{--fa: ""}.fa-e{--fa: "E"}.fa-pen-clip,.fa-pen-alt{--fa: ""}.fa-bridge-circle-exclamation{--fa: ""}.fa-user{--fa: ""}.fa-school-circle-check{--fa: ""}.fa-dumpster{--fa: ""}.fa-van-shuttle,.fa-shuttle-van{--fa: ""}.fa-building-user{--fa: ""}.fa-square-caret-left,.fa-caret-square-left{--fa: ""}.fa-highlighter{--fa: ""}.fa-key{--fa: ""}.fa-bullhorn{--fa: ""}.fa-globe{--fa: ""}.fa-synagogue{--fa: ""}.fa-person-half-dress{--fa: ""}.fa-road-bridge{--fa: ""}.fa-location-arrow{--fa: ""}.fa-c{--fa: "C"}.fa-tablet-button{--fa: ""}.fa-building-lock{--fa: ""}.fa-pizza-slice{--fa: ""}.fa-money-bill-wave{--fa: ""}.fa-chart-area,.fa-area-chart{--fa: ""}.fa-house-flag{--fa: ""}.fa-person-circle-minus{--fa: ""}.fa-ban,.fa-cancel{--fa: ""}.fa-camera-rotate{--fa: ""}.fa-spray-can-sparkles,.fa-air-freshener{--fa: ""}.fa-star{--fa: ""}.fa-repeat{--fa: ""}.fa-cross{--fa: ""}.fa-box{--fa: ""}.fa-venus-mars{--fa: ""}.fa-arrow-pointer,.fa-mouse-pointer{--fa: ""}.fa-maximize,.fa-expand-arrows-alt{--fa: ""}.fa-charging-station{--fa: ""}.fa-shapes,.fa-triangle-circle-square{--fa: ""}.fa-shuffle,.fa-random{--fa: ""}.fa-person-running,.fa-running{--fa: ""}.fa-mobile-retro{--fa: ""}.fa-grip-lines-vertical{--fa: ""}.fa-spider{--fa: ""}.fa-hands-bound{--fa: ""}.fa-file-invoice-dollar{--fa: ""}.fa-plane-circle-exclamation{--fa: ""}.fa-x-ray{--fa: ""}.fa-spell-check{--fa: ""}.fa-slash{--fa: ""}.fa-computer-mouse,.fa-mouse{--fa: ""}.fa-arrow-right-to-bracket,.fa-sign-in{--fa: ""}.fa-shop-slash,.fa-store-alt-slash{--fa: ""}.fa-server{--fa: ""}.fa-virus-covid-slash{--fa: ""}.fa-shop-lock{--fa: ""}.fa-hourglass-start,.fa-hourglass-1{--fa: ""}.fa-blender-phone{--fa: ""}.fa-building-wheat{--fa: ""}.fa-person-breastfeeding{--fa: ""}.fa-right-to-bracket,.fa-sign-in-alt{--fa: ""}.fa-venus{--fa: ""}.fa-passport{--fa: ""}.fa-thumbtack-slash,.fa-thumb-tack-slash{--fa: ""}.fa-heart-pulse,.fa-heartbeat{--fa: ""}.fa-people-carry-box,.fa-people-carry{--fa: ""}.fa-temperature-high{--fa: ""}.fa-microchip{--fa: ""}.fa-crown{--fa: ""}.fa-weight-hanging{--fa: ""}.fa-xmarks-lines{--fa: ""}.fa-file-prescription{--fa: ""}.fa-weight-scale,.fa-weight{--fa: ""}.fa-user-group,.fa-user-friends{--fa: ""}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa: ""}.fa-chess-knight{--fa: ""}.fa-face-laugh-squint,.fa-laugh-squint{--fa: ""}.fa-wheelchair{--fa: ""}.fa-circle-arrow-up,.fa-arrow-circle-up{--fa: ""}.fa-toggle-on{--fa: ""}.fa-person-walking,.fa-walking{--fa: ""}.fa-l{--fa: "L"}.fa-fire{--fa: ""}.fa-bed-pulse,.fa-procedures{--fa: ""}.fa-shuttle-space,.fa-space-shuttle{--fa: ""}.fa-face-laugh,.fa-laugh{--fa: ""}.fa-folder-open{--fa: ""}.fa-heart-circle-plus{--fa: ""}.fa-code-fork{--fa: ""}.fa-city{--fa: ""}.fa-microphone-lines,.fa-microphone-alt{--fa: ""}.fa-pepper-hot{--fa: ""}.fa-unlock{--fa: ""}.fa-colon-sign{--fa: ""}.fa-headset{--fa: ""}.fa-store-slash{--fa: ""}.fa-road-circle-xmark{--fa: ""}.fa-user-minus{--fa: ""}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa: ""}.fa-champagne-glasses,.fa-glass-cheers{--fa: ""}.fa-clipboard{--fa: ""}.fa-house-circle-exclamation{--fa: ""}.fa-file-arrow-up,.fa-file-upload{--fa: ""}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa: ""}.fa-bath,.fa-bathtub{--fa: ""}.fa-underline{--fa: ""}.fa-user-pen,.fa-user-edit{--fa: ""}.fa-signature{--fa: ""}.fa-stroopwafel{--fa: ""}.fa-bold{--fa: ""}.fa-anchor-lock{--fa: ""}.fa-building-ngo{--fa: ""}.fa-manat-sign{--fa: ""}.fa-not-equal{--fa: ""}.fa-border-top-left,.fa-border-style{--fa: ""}.fa-map-location-dot,.fa-map-marked-alt{--fa: ""}.fa-jedi{--fa: ""}.fa-square-poll-vertical,.fa-poll{--fa: ""}.fa-mug-hot{--fa: ""}.fa-car-battery,.fa-battery-car{--fa: ""}.fa-gift{--fa: ""}.fa-dice-two{--fa: ""}.fa-chess-queen{--fa: ""}.fa-glasses{--fa: ""}.fa-chess-board{--fa: ""}.fa-building-circle-check{--fa: ""}.fa-person-chalkboard{--fa: ""}.fa-mars-stroke-right,.fa-mars-stroke-h{--fa: ""}.fa-hand-back-fist,.fa-hand-rock{--fa: ""}.fa-square-caret-up,.fa-caret-square-up{--fa: ""}.fa-cloud-showers-water{--fa: ""}.fa-chart-bar,.fa-bar-chart{--fa: ""}.fa-hands-bubbles,.fa-hands-wash{--fa: ""}.fa-less-than-equal{--fa: ""}.fa-train{--fa: ""}.fa-eye-low-vision,.fa-low-vision{--fa: ""}.fa-crow{--fa: ""}.fa-sailboat{--fa: ""}.fa-window-restore{--fa: ""}.fa-square-plus,.fa-plus-square{--fa: ""}.fa-torii-gate{--fa: ""}.fa-frog{--fa: ""}.fa-bucket{--fa: ""}.fa-image{--fa: ""}.fa-microphone{--fa: ""}.fa-cow{--fa: ""}.fa-caret-up{--fa: ""}.fa-screwdriver{--fa: ""}.fa-folder-closed{--fa: ""}.fa-house-tsunami{--fa: ""}.fa-square-nfi{--fa: ""}.fa-arrow-up-from-ground-water{--fa: ""}.fa-martini-glass,.fa-glass-martini-alt{--fa: ""}.fa-square-binary{--fa: ""}.fa-rotate-left,.fa-rotate-back,.fa-rotate-backward,.fa-undo-alt{--fa: ""}.fa-table-columns,.fa-columns{--fa: ""}.fa-lemon{--fa: ""}.fa-head-side-mask{--fa: ""}.fa-handshake{--fa: ""}.fa-gem{--fa: ""}.fa-dolly,.fa-dolly-box{--fa: ""}.fa-smoking{--fa: ""}.fa-minimize,.fa-compress-arrows-alt{--fa: ""}.fa-monument{--fa: ""}.fa-snowplow{--fa: ""}.fa-angles-right,.fa-angle-double-right{--fa: ""}.fa-cannabis{--fa: ""}.fa-circle-play,.fa-play-circle{--fa: ""}.fa-tablets{--fa: ""}.fa-ethernet{--fa: ""}.fa-euro-sign,.fa-eur,.fa-euro{--fa: ""}.fa-chair{--fa: ""}.fa-circle-check,.fa-check-circle{--fa: ""}.fa-circle-stop,.fa-stop-circle{--fa: ""}.fa-compass-drafting,.fa-drafting-compass{--fa: ""}.fa-plate-wheat{--fa: ""}.fa-icicles{--fa: ""}.fa-person-shelter{--fa: ""}.fa-neuter{--fa: ""}.fa-id-badge{--fa: ""}.fa-marker{--fa: ""}.fa-face-laugh-beam,.fa-laugh-beam{--fa: ""}.fa-helicopter-symbol{--fa: ""}.fa-universal-access{--fa: ""}.fa-circle-chevron-up,.fa-chevron-circle-up{--fa: ""}.fa-lari-sign{--fa: ""}.fa-volcano{--fa: ""}.fa-person-walking-dashed-line-arrow-right{--fa: ""}.fa-sterling-sign,.fa-gbp,.fa-pound-sign{--fa: ""}.fa-viruses{--fa: ""}.fa-square-person-confined{--fa: ""}.fa-user-tie{--fa: ""}.fa-arrow-down-long,.fa-long-arrow-down{--fa: ""}.fa-tent-arrow-down-to-line{--fa: ""}.fa-certificate{--fa: ""}.fa-reply-all,.fa-mail-reply-all{--fa: ""}.fa-suitcase{--fa: ""}.fa-person-skating,.fa-skating{--fa: ""}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa: ""}.fa-camera-retro{--fa: ""}.fa-circle-arrow-down,.fa-arrow-circle-down{--fa: ""}.fa-file-import,.fa-arrow-right-to-file{--fa: ""}.fa-square-arrow-up-right,.fa-external-link-square{--fa: ""}.fa-box-open{--fa: ""}.fa-scroll{--fa: ""}.fa-spa{--fa: ""}.fa-location-pin-lock{--fa: ""}.fa-pause{--fa: ""}.fa-hill-avalanche{--fa: ""}.fa-temperature-empty,.fa-temperature-0,.fa-thermometer-0,.fa-thermometer-empty{--fa: ""}.fa-bomb{--fa: ""}.fa-registered{--fa: ""}.fa-address-card,.fa-contact-card,.fa-vcard{--fa: ""}.fa-scale-unbalanced-flip,.fa-balance-scale-right{--fa: ""}.fa-subscript{--fa: ""}.fa-diamond-turn-right,.fa-directions{--fa: ""}.fa-burst{--fa: ""}.fa-house-laptop,.fa-laptop-house{--fa: ""}.fa-face-tired,.fa-tired{--fa: ""}.fa-money-bills{--fa: ""}.fa-smog{--fa: ""}.fa-crutch{--fa: ""}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa: ""}.fa-palette{--fa: ""}.fa-arrows-turn-right{--fa: ""}.fa-vest{--fa: ""}.fa-ferry{--fa: ""}.fa-arrows-down-to-people{--fa: ""}.fa-seedling,.fa-sprout{--fa: ""}.fa-left-right,.fa-arrows-alt-h{--fa: ""}.fa-boxes-packing{--fa: ""}.fa-circle-arrow-left,.fa-arrow-circle-left{--fa: ""}.fa-group-arrows-rotate{--fa: ""}.fa-bowl-food{--fa: ""}.fa-candy-cane{--fa: ""}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa: ""}.fa-cloud-bolt,.fa-thunderstorm{--fa: ""}.fa-text-slash,.fa-remove-format{--fa: ""}.fa-face-smile-wink,.fa-smile-wink{--fa: ""}.fa-file-word{--fa: ""}.fa-file-powerpoint{--fa: ""}.fa-arrows-left-right,.fa-arrows-h{--fa: ""}.fa-house-lock{--fa: ""}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa: ""}.fa-children{--fa: ""}.fa-chalkboard,.fa-blackboard{--fa: ""}.fa-user-large-slash,.fa-user-alt-slash{--fa: ""}.fa-envelope-open{--fa: ""}.fa-handshake-simple-slash,.fa-handshake-alt-slash{--fa: ""}.fa-mattress-pillow{--fa: ""}.fa-guarani-sign{--fa: ""}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa: ""}.fa-fire-extinguisher{--fa: ""}.fa-cruzeiro-sign{--fa: ""}.fa-greater-than-equal{--fa: ""}.fa-shield-halved,.fa-shield-alt{--fa: ""}.fa-book-atlas,.fa-atlas{--fa: ""}.fa-virus{--fa: ""}.fa-envelope-circle-check{--fa: ""}.fa-layer-group{--fa: ""}.fa-arrows-to-dot{--fa: ""}.fa-archway{--fa: ""}.fa-heart-circle-check{--fa: ""}.fa-house-chimney-crack,.fa-house-damage{--fa: ""}.fa-file-zipper,.fa-file-archive{--fa: ""}.fa-square{--fa: ""}.fa-martini-glass-empty,.fa-glass-martini{--fa: ""}.fa-couch{--fa: ""}.fa-cedi-sign{--fa: ""}.fa-italic{--fa: ""}.fa-table-cells-column-lock{--fa: ""}.fa-church{--fa: ""}.fa-comments-dollar{--fa: ""}.fa-democrat{--fa: ""}.fa-z{--fa: "Z"}.fa-person-skiing,.fa-skiing{--fa: ""}.fa-road-lock{--fa: ""}.fa-a{--fa: "A"}.fa-temperature-arrow-down,.fa-temperature-down{--fa: ""}.fa-feather-pointed,.fa-feather-alt{--fa: ""}.fa-p{--fa: "P"}.fa-snowflake{--fa: ""}.fa-newspaper{--fa: ""}.fa-rectangle-ad,.fa-ad{--fa: ""}.fa-circle-arrow-right,.fa-arrow-circle-right{--fa: ""}.fa-filter-circle-xmark{--fa: ""}.fa-locust{--fa: ""}.fa-sort,.fa-unsorted{--fa: ""}.fa-list-ol,.fa-list-1-2,.fa-list-numeric{--fa: ""}.fa-person-dress-burst{--fa: ""}.fa-money-check-dollar,.fa-money-check-alt{--fa: ""}.fa-vector-square{--fa: ""}.fa-bread-slice{--fa: ""}.fa-language{--fa: ""}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa: ""}.fa-filter{--fa: ""}.fa-question{--fa: "?"}.fa-file-signature{--fa: ""}.fa-up-down-left-right,.fa-arrows-alt{--fa: ""}.fa-house-chimney-user{--fa: ""}.fa-hand-holding-heart{--fa: ""}.fa-puzzle-piece{--fa: ""}.fa-money-check{--fa: ""}.fa-star-half-stroke,.fa-star-half-alt{--fa: ""}.fa-code{--fa: ""}.fa-whiskey-glass,.fa-glass-whiskey{--fa: ""}.fa-building-circle-exclamation{--fa: ""}.fa-magnifying-glass-chart{--fa: ""}.fa-arrow-up-right-from-square,.fa-external-link{--fa: ""}.fa-cubes-stacked{--fa: ""}.fa-won-sign,.fa-krw,.fa-won{--fa: ""}.fa-virus-covid{--fa: ""}.fa-austral-sign{--fa: ""}.fa-f{--fa: "F"}.fa-leaf{--fa: ""}.fa-road{--fa: ""}.fa-taxi,.fa-cab{--fa: ""}.fa-person-circle-plus{--fa: ""}.fa-chart-pie,.fa-pie-chart{--fa: ""}.fa-bolt-lightning{--fa: ""}.fa-sack-xmark{--fa: ""}.fa-file-excel{--fa: ""}.fa-file-contract{--fa: ""}.fa-fish-fins{--fa: ""}.fa-building-flag{--fa: ""}.fa-face-grin-beam,.fa-grin-beam{--fa: ""}.fa-object-ungroup{--fa: ""}.fa-poop{--fa: ""}.fa-location-pin,.fa-map-marker{--fa: ""}.fa-kaaba{--fa: ""}.fa-toilet-paper{--fa: ""}.fa-helmet-safety,.fa-hard-hat,.fa-hat-hard{--fa: ""}.fa-eject{--fa: ""}.fa-circle-right,.fa-arrow-alt-circle-right{--fa: ""}.fa-plane-circle-check{--fa: ""}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa: ""}.fa-object-group{--fa: ""}.fa-chart-line,.fa-line-chart{--fa: ""}.fa-mask-ventilator{--fa: ""}.fa-arrow-right{--fa: ""}.fa-signs-post,.fa-map-signs{--fa: ""}.fa-cash-register{--fa: ""}.fa-person-circle-question{--fa: ""}.fa-h{--fa: "H"}.fa-tarp{--fa: ""}.fa-screwdriver-wrench,.fa-tools{--fa: ""}.fa-arrows-to-eye{--fa: ""}.fa-plug-circle-bolt{--fa: ""}.fa-heart{--fa: ""}.fa-mars-and-venus{--fa: ""}.fa-house-user,.fa-home-user{--fa: ""}.fa-dumpster-fire{--fa: ""}.fa-house-crack{--fa: ""}.fa-martini-glass-citrus,.fa-cocktail{--fa: ""}.fa-face-surprise,.fa-surprise{--fa: ""}.fa-bottle-water{--fa: ""}.fa-circle-pause,.fa-pause-circle{--fa: ""}.fa-toilet-paper-slash{--fa: ""}.fa-apple-whole,.fa-apple-alt{--fa: ""}.fa-kitchen-set{--fa: ""}.fa-r{--fa: "R"}.fa-temperature-quarter,.fa-temperature-1,.fa-thermometer-1,.fa-thermometer-quarter{--fa: ""}.fa-cube{--fa: ""}.fa-bitcoin-sign{--fa: ""}.fa-shield-dog{--fa: ""}.fa-solar-panel{--fa: ""}.fa-lock-open{--fa: ""}.fa-elevator{--fa: ""}.fa-money-bill-transfer{--fa: ""}.fa-money-bill-trend-up{--fa: ""}.fa-house-flood-water-circle-arrow-right{--fa: ""}.fa-square-poll-horizontal,.fa-poll-h{--fa: ""}.fa-circle{--fa: ""}.fa-backward-fast,.fa-fast-backward{--fa: ""}.fa-recycle{--fa: ""}.fa-user-astronaut{--fa: ""}.fa-plane-slash{--fa: ""}.fa-trademark{--fa: ""}.fa-basketball,.fa-basketball-ball{--fa: ""}.fa-satellite-dish{--fa: ""}.fa-circle-up,.fa-arrow-alt-circle-up{--fa: ""}.fa-mobile-screen-button,.fa-mobile-alt{--fa: ""}.fa-volume-high,.fa-volume-up{--fa: ""}.fa-users-rays{--fa: ""}.fa-wallet{--fa: ""}.fa-clipboard-check{--fa: ""}.fa-file-audio{--fa: ""}.fa-burger,.fa-hamburger{--fa: ""}.fa-wrench{--fa: ""}.fa-bugs{--fa: ""}.fa-rupee-sign,.fa-rupee{--fa: ""}.fa-file-image{--fa: ""}.fa-circle-question,.fa-question-circle{--fa: ""}.fa-plane-departure{--fa: ""}.fa-handshake-slash{--fa: ""}.fa-book-bookmark{--fa: ""}.fa-code-branch{--fa: ""}.fa-hat-cowboy{--fa: ""}.fa-bridge{--fa: ""}.fa-phone-flip,.fa-phone-alt{--fa: ""}.fa-truck-front{--fa: ""}.fa-cat{--fa: ""}.fa-anchor-circle-exclamation{--fa: ""}.fa-truck-field{--fa: ""}.fa-route{--fa: ""}.fa-clipboard-question{--fa: ""}.fa-panorama{--fa: ""}.fa-comment-medical{--fa: ""}.fa-teeth-open{--fa: ""}.fa-file-circle-minus{--fa: ""}.fa-tags{--fa: ""}.fa-wine-glass{--fa: ""}.fa-forward-fast,.fa-fast-forward{--fa: ""}.fa-face-meh-blank,.fa-meh-blank{--fa: ""}.fa-square-parking,.fa-parking{--fa: ""}.fa-house-signal{--fa: ""}.fa-bars-progress,.fa-tasks-alt{--fa: ""}.fa-faucet-drip{--fa: ""}.fa-cart-flatbed,.fa-dolly-flatbed{--fa: ""}.fa-ban-smoking,.fa-smoking-ban{--fa: ""}.fa-terminal{--fa: ""}.fa-mobile-button{--fa: ""}.fa-house-medical-flag{--fa: ""}.fa-basket-shopping,.fa-shopping-basket{--fa: ""}.fa-tape{--fa: ""}.fa-bus-simple,.fa-bus-alt{--fa: ""}.fa-eye{--fa: ""}.fa-face-sad-cry,.fa-sad-cry{--fa: ""}.fa-audio-description{--fa: ""}.fa-person-military-to-person{--fa: ""}.fa-file-shield{--fa: ""}.fa-user-slash{--fa: ""}.fa-pen{--fa: ""}.fa-tower-observation{--fa: ""}.fa-file-code{--fa: ""}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa: ""}.fa-bus{--fa: ""}.fa-heart-circle-xmark{--fa: ""}.fa-house-chimney,.fa-home-lg{--fa: ""}.fa-window-maximize{--fa: ""}.fa-face-frown,.fa-frown{--fa: ""}.fa-prescription{--fa: ""}.fa-shop,.fa-store-alt{--fa: ""}.fa-floppy-disk,.fa-save{--fa: ""}.fa-vihara{--fa: ""}.fa-scale-unbalanced,.fa-balance-scale-left{--fa: ""}.fa-sort-up,.fa-sort-asc{--fa: ""}.fa-comment-dots,.fa-commenting{--fa: ""}.fa-plant-wilt{--fa: ""}.fa-diamond{--fa: ""}.fa-face-grin-squint,.fa-grin-squint{--fa: ""}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa: ""}.fa-chart-diagram{--fa: ""}.fa-bacterium{--fa: ""}.fa-hand-pointer{--fa: ""}.fa-drum-steelpan{--fa: ""}.fa-hand-scissors{--fa: ""}.fa-hands-praying,.fa-praying-hands{--fa: ""}.fa-arrow-rotate-right,.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-redo{--fa: ""}.fa-biohazard{--fa: ""}.fa-location-crosshairs,.fa-location{--fa: ""}.fa-mars-double{--fa: ""}.fa-child-dress{--fa: ""}.fa-users-between-lines{--fa: ""}.fa-lungs-virus{--fa: ""}.fa-face-grin-tears,.fa-grin-tears{--fa: ""}.fa-phone{--fa: ""}.fa-calendar-xmark,.fa-calendar-times{--fa: ""}.fa-child-reaching{--fa: ""}.fa-head-side-virus{--fa: ""}.fa-user-gear,.fa-user-cog{--fa: ""}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa: ""}.fa-door-closed{--fa: ""}.fa-shield-virus{--fa: ""}.fa-dice-six{--fa: ""}.fa-mosquito-net{--fa: ""}.fa-file-fragment{--fa: ""}.fa-bridge-water{--fa: ""}.fa-person-booth{--fa: ""}.fa-text-width{--fa: ""}.fa-hat-wizard{--fa: ""}.fa-pen-fancy{--fa: ""}.fa-person-digging,.fa-digging{--fa: ""}.fa-trash{--fa: ""}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa: ""}.fa-book-medical{--fa: ""}.fa-poo{--fa: ""}.fa-quote-right,.fa-quote-right-alt{--fa: ""}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa: ""}.fa-cubes{--fa: ""}.fa-divide{--fa: ""}.fa-tenge-sign,.fa-tenge{--fa: ""}.fa-headphones{--fa: ""}.fa-hands-holding{--fa: ""}.fa-hands-clapping{--fa: ""}.fa-republican{--fa: ""}.fa-arrow-left{--fa: ""}.fa-person-circle-xmark{--fa: ""}.fa-ruler{--fa: ""}.fa-align-left{--fa: ""}.fa-dice-d6{--fa: ""}.fa-restroom{--fa: ""}.fa-j{--fa: "J"}.fa-users-viewfinder{--fa: ""}.fa-file-video{--fa: ""}.fa-up-right-from-square,.fa-external-link-alt{--fa: ""}.fa-table-cells,.fa-th{--fa: ""}.fa-file-pdf{--fa: ""}.fa-book-bible,.fa-bible{--fa: ""}.fa-o{--fa: "O"}.fa-suitcase-medical,.fa-medkit{--fa: ""}.fa-user-secret{--fa: ""}.fa-otter{--fa: ""}.fa-person-dress,.fa-female{--fa: ""}.fa-comment-dollar{--fa: ""}.fa-business-time,.fa-briefcase-clock{--fa: ""}.fa-table-cells-large,.fa-th-large{--fa: ""}.fa-book-tanakh,.fa-tanakh{--fa: ""}.fa-phone-volume,.fa-volume-control-phone{--fa: ""}.fa-hat-cowboy-side{--fa: ""}.fa-clipboard-user{--fa: ""}.fa-child{--fa: ""}.fa-lira-sign{--fa: ""}.fa-satellite{--fa: ""}.fa-plane-lock{--fa: ""}.fa-tag{--fa: ""}.fa-comment{--fa: ""}.fa-cake-candles,.fa-birthday-cake,.fa-cake{--fa: ""}.fa-envelope{--fa: ""}.fa-angles-up,.fa-angle-double-up{--fa: ""}.fa-paperclip{--fa: ""}.fa-arrow-right-to-city{--fa: ""}.fa-ribbon{--fa: ""}.fa-lungs{--fa: ""}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa: ""}.fa-litecoin-sign{--fa: ""}.fa-border-none{--fa: ""}.fa-circle-nodes{--fa: ""}.fa-parachute-box{--fa: ""}.fa-indent{--fa: ""}.fa-truck-field-un{--fa: ""}.fa-hourglass,.fa-hourglass-empty{--fa: ""}.fa-mountain{--fa: ""}.fa-user-doctor,.fa-user-md{--fa: ""}.fa-circle-info,.fa-info-circle{--fa: ""}.fa-cloud-meatball{--fa: ""}.fa-camera,.fa-camera-alt{--fa: ""}.fa-square-virus{--fa: ""}.fa-meteor{--fa: ""}.fa-car-on{--fa: ""}.fa-sleigh{--fa: ""}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa: ""}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa: ""}.fa-water{--fa: ""}.fa-calendar-check{--fa: ""}.fa-braille{--fa: ""}.fa-prescription-bottle-medical,.fa-prescription-bottle-alt{--fa: ""}.fa-landmark{--fa: ""}.fa-truck{--fa: ""}.fa-crosshairs{--fa: ""}.fa-person-cane{--fa: ""}.fa-tent{--fa: ""}.fa-vest-patches{--fa: ""}.fa-check-double{--fa: ""}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa: ""}.fa-money-bill-wheat{--fa: ""}.fa-cookie{--fa: ""}.fa-arrow-rotate-left,.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-undo{--fa: ""}.fa-hard-drive,.fa-hdd{--fa: ""}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa: ""}.fa-dumbbell{--fa: ""}.fa-rectangle-list,.fa-list-alt{--fa: ""}.fa-tarp-droplet{--fa: ""}.fa-house-medical-circle-check{--fa: ""}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa: ""}.fa-calendar-plus{--fa: ""}.fa-plane-arrival{--fa: ""}.fa-circle-left,.fa-arrow-alt-circle-left{--fa: ""}.fa-train-subway,.fa-subway{--fa: ""}.fa-chart-gantt{--fa: ""}.fa-indian-rupee-sign,.fa-indian-rupee,.fa-inr{--fa: ""}.fa-crop-simple,.fa-crop-alt{--fa: ""}.fa-money-bill-1,.fa-money-bill-alt{--fa: ""}.fa-left-long,.fa-long-arrow-alt-left{--fa: ""}.fa-dna{--fa: ""}.fa-virus-slash{--fa: ""}.fa-minus,.fa-subtract{--fa: ""}.fa-chess{--fa: ""}.fa-arrow-left-long,.fa-long-arrow-left{--fa: ""}.fa-plug-circle-check{--fa: ""}.fa-street-view{--fa: ""}.fa-franc-sign{--fa: ""}.fa-volume-off{--fa: ""}.fa-hands-asl-interpreting,.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting{--fa: ""}.fa-gear,.fa-cog{--fa: ""}.fa-droplet-slash,.fa-tint-slash{--fa: ""}.fa-mosque{--fa: ""}.fa-mosquito{--fa: ""}.fa-star-of-david{--fa: ""}.fa-person-military-rifle{--fa: ""}.fa-cart-shopping,.fa-shopping-cart{--fa: ""}.fa-vials{--fa: ""}.fa-plug-circle-plus{--fa: ""}.fa-place-of-worship{--fa: ""}.fa-grip-vertical{--fa: ""}.fa-hexagon-nodes{--fa: ""}.fa-arrow-turn-up,.fa-level-up{--fa: ""}.fa-u{--fa: "U"}.fa-square-root-variable,.fa-square-root-alt{--fa: ""}.fa-clock,.fa-clock-four{--fa: ""}.fa-backward-step,.fa-step-backward{--fa: ""}.fa-pallet{--fa: ""}.fa-faucet{--fa: ""}.fa-baseball-bat-ball{--fa: ""}.fa-s{--fa: "S"}.fa-timeline{--fa: ""}.fa-keyboard{--fa: ""}.fa-caret-down{--fa: ""}.fa-house-chimney-medical,.fa-clinic-medical{--fa: ""}.fa-temperature-three-quarters,.fa-temperature-3,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa: ""}.fa-mobile-screen,.fa-mobile-android-alt{--fa: ""}.fa-plane-up{--fa: ""}.fa-piggy-bank{--fa: ""}.fa-battery-half,.fa-battery-3{--fa: ""}.fa-mountain-city{--fa: ""}.fa-coins{--fa: ""}.fa-khanda{--fa: ""}.fa-sliders,.fa-sliders-h{--fa: ""}.fa-folder-tree{--fa: ""}.fa-network-wired{--fa: ""}.fa-map-pin{--fa: ""}.fa-hamsa{--fa: ""}.fa-cent-sign{--fa: ""}.fa-flask{--fa: ""}.fa-person-pregnant{--fa: ""}.fa-wand-sparkles{--fa: ""}.fa-ellipsis-vertical,.fa-ellipsis-v{--fa: ""}.fa-ticket{--fa: ""}.fa-power-off{--fa: ""}.fa-right-long,.fa-long-arrow-alt-right{--fa: ""}.fa-flag-usa{--fa: ""}.fa-laptop-file{--fa: ""}.fa-tty,.fa-teletype{--fa: ""}.fa-diagram-next{--fa: ""}.fa-person-rifle{--fa: ""}.fa-house-medical-circle-exclamation{--fa: ""}.fa-closed-captioning{--fa: ""}.fa-person-hiking,.fa-hiking{--fa: ""}.fa-venus-double{--fa: ""}.fa-images{--fa: ""}.fa-calculator{--fa: ""}.fa-people-pulling{--fa: ""}.fa-n{--fa: "N"}.fa-cable-car,.fa-tram{--fa: ""}.fa-cloud-rain{--fa: ""}.fa-building-circle-xmark{--fa: ""}.fa-ship{--fa: ""}.fa-arrows-down-to-line{--fa: ""}.fa-download{--fa: ""}.fa-face-grin,.fa-grin{--fa: ""}.fa-delete-left,.fa-backspace{--fa: ""}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa: ""}.fa-file-circle-check{--fa: ""}.fa-forward{--fa: ""}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa: ""}.fa-face-meh,.fa-meh{--fa: ""}.fa-align-center{--fa: ""}.fa-book-skull,.fa-book-dead{--fa: ""}.fa-id-card,.fa-drivers-license{--fa: ""}.fa-outdent,.fa-dedent{--fa: ""}.fa-heart-circle-exclamation{--fa: ""}.fa-house,.fa-home,.fa-home-alt,.fa-home-lg-alt{--fa: ""}.fa-calendar-week{--fa: ""}.fa-laptop-medical{--fa: ""}.fa-b{--fa: "B"}.fa-file-medical{--fa: ""}.fa-dice-one{--fa: ""}.fa-kiwi-bird{--fa: ""}.fa-arrow-right-arrow-left,.fa-exchange{--fa: ""}.fa-rotate-right,.fa-redo-alt,.fa-rotate-forward{--fa: ""}.fa-utensils,.fa-cutlery{--fa: ""}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa: ""}.fa-mill-sign{--fa: ""}.fa-bowl-rice{--fa: ""}.fa-skull{--fa: ""}.fa-tower-broadcast,.fa-broadcast-tower{--fa: ""}.fa-truck-pickup{--fa: ""}.fa-up-long,.fa-long-arrow-alt-up{--fa: ""}.fa-stop{--fa: ""}.fa-code-merge{--fa: ""}.fa-upload{--fa: ""}.fa-hurricane{--fa: ""}.fa-mound{--fa: ""}.fa-toilet-portable{--fa: ""}.fa-compact-disc{--fa: ""}.fa-file-arrow-down,.fa-file-download{--fa: ""}.fa-caravan{--fa: ""}.fa-shield-cat{--fa: ""}.fa-bolt,.fa-zap{--fa: ""}.fa-glass-water{--fa: ""}.fa-oil-well{--fa: ""}.fa-vault{--fa: ""}.fa-mars{--fa: ""}.fa-toilet{--fa: ""}.fa-plane-circle-xmark{--fa: ""}.fa-yen-sign,.fa-cny,.fa-jpy,.fa-rmb,.fa-yen{--fa: ""}.fa-ruble-sign,.fa-rouble,.fa-rub,.fa-ruble{--fa: ""}.fa-sun{--fa: ""}.fa-guitar{--fa: ""}.fa-face-laugh-wink,.fa-laugh-wink{--fa: ""}.fa-horse-head{--fa: ""}.fa-bore-hole{--fa: ""}.fa-industry{--fa: ""}.fa-circle-down,.fa-arrow-alt-circle-down{--fa: ""}.fa-arrows-turn-to-dots{--fa: ""}.fa-florin-sign{--fa: ""}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa: ""}.fa-less-than{--fa: "<"}.fa-angle-down{--fa: ""}.fa-car-tunnel{--fa: ""}.fa-head-side-cough{--fa: ""}.fa-grip-lines{--fa: ""}.fa-thumbs-down{--fa: ""}.fa-user-lock{--fa: ""}.fa-arrow-right-long,.fa-long-arrow-right{--fa: ""}.fa-anchor-circle-xmark{--fa: ""}.fa-ellipsis,.fa-ellipsis-h{--fa: ""}.fa-chess-pawn{--fa: ""}.fa-kit-medical,.fa-first-aid{--fa: ""}.fa-person-through-window{--fa: ""}.fa-toolbox{--fa: ""}.fa-hands-holding-circle{--fa: ""}.fa-bug{--fa: ""}.fa-credit-card,.fa-credit-card-alt{--fa: ""}.fa-car,.fa-automobile{--fa: ""}.fa-hand-holding-hand{--fa: ""}.fa-book-open-reader,.fa-book-reader{--fa: ""}.fa-mountain-sun{--fa: ""}.fa-arrows-left-right-to-line{--fa: ""}.fa-dice-d20{--fa: ""}.fa-truck-droplet{--fa: ""}.fa-file-circle-xmark{--fa: ""}.fa-temperature-arrow-up,.fa-temperature-up{--fa: ""}.fa-medal{--fa: ""}.fa-bed{--fa: ""}.fa-square-h,.fa-h-square{--fa: ""}.fa-podcast{--fa: ""}.fa-temperature-full,.fa-temperature-4,.fa-thermometer-4,.fa-thermometer-full{--fa: ""}.fa-bell{--fa: ""}.fa-superscript{--fa: ""}.fa-plug-circle-xmark{--fa: ""}.fa-star-of-life{--fa: ""}.fa-phone-slash{--fa: ""}.fa-paint-roller{--fa: ""}.fa-handshake-angle,.fa-hands-helping{--fa: ""}.fa-location-dot,.fa-map-marker-alt{--fa: ""}.fa-file{--fa: ""}.fa-greater-than{--fa: ">"}.fa-person-swimming,.fa-swimmer{--fa: ""}.fa-arrow-down{--fa: ""}.fa-droplet,.fa-tint{--fa: ""}.fa-eraser{--fa: ""}.fa-earth-americas,.fa-earth,.fa-earth-america,.fa-globe-americas{--fa: ""}.fa-person-burst{--fa: ""}.fa-dove{--fa: ""}.fa-battery-empty,.fa-battery-0{--fa: ""}.fa-socks{--fa: ""}.fa-inbox{--fa: ""}.fa-section{--fa: ""}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa: ""}.fa-envelope-open-text{--fa: ""}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa: ""}.fa-wine-bottle{--fa: ""}.fa-chess-rook{--fa: ""}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa: ""}.fa-dharmachakra{--fa: ""}.fa-hotdog{--fa: ""}.fa-person-walking-with-cane,.fa-blind{--fa: ""}.fa-drum{--fa: ""}.fa-ice-cream{--fa: ""}.fa-heart-circle-bolt{--fa: ""}.fa-fax{--fa: ""}.fa-paragraph{--fa: ""}.fa-check-to-slot,.fa-vote-yea{--fa: ""}.fa-star-half{--fa: ""}.fa-boxes-stacked,.fa-boxes,.fa-boxes-alt{--fa: ""}.fa-link,.fa-chain{--fa: ""}.fa-ear-listen,.fa-assistive-listening-systems{--fa: ""}.fa-tree-city{--fa: ""}.fa-play{--fa: ""}.fa-font{--fa: ""}.fa-table-cells-row-lock{--fa: ""}.fa-rupiah-sign{--fa: ""}.fa-magnifying-glass,.fa-search{--fa: ""}.fa-table-tennis-paddle-ball,.fa-ping-pong-paddle-ball,.fa-table-tennis{--fa: ""}.fa-person-dots-from-line,.fa-diagnoses{--fa: ""}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa: ""}.fa-naira-sign{--fa: ""}.fa-cart-arrow-down{--fa: ""}.fa-walkie-talkie{--fa: ""}.fa-file-pen,.fa-file-edit{--fa: ""}.fa-receipt{--fa: ""}.fa-square-pen,.fa-pen-square,.fa-pencil-square{--fa: ""}.fa-suitcase-rolling{--fa: ""}.fa-person-circle-exclamation{--fa: ""}.fa-chevron-down{--fa: ""}.fa-battery-full,.fa-battery,.fa-battery-5{--fa: ""}.fa-skull-crossbones{--fa: ""}.fa-code-compare{--fa: ""}.fa-list-ul,.fa-list-dots{--fa: ""}.fa-school-lock{--fa: ""}.fa-tower-cell{--fa: ""}.fa-down-long,.fa-long-arrow-alt-down{--fa: ""}.fa-ranking-star{--fa: ""}.fa-chess-king{--fa: ""}.fa-person-harassing{--fa: ""}.fa-brazilian-real-sign{--fa: ""}.fa-landmark-dome,.fa-landmark-alt{--fa: ""}.fa-arrow-up{--fa: ""}.fa-tv,.fa-television,.fa-tv-alt{--fa: ""}.fa-shrimp{--fa: ""}.fa-list-check,.fa-tasks{--fa: ""}.fa-jug-detergent{--fa: ""}.fa-circle-user,.fa-user-circle{--fa: ""}.fa-user-shield{--fa: ""}.fa-wind{--fa: ""}.fa-car-burst,.fa-car-crash{--fa: ""}.fa-y{--fa: "Y"}.fa-person-snowboarding,.fa-snowboarding{--fa: ""}.fa-truck-fast,.fa-shipping-fast{--fa: ""}.fa-fish{--fa: ""}.fa-user-graduate{--fa: ""}.fa-circle-half-stroke,.fa-adjust{--fa: ""}.fa-clapperboard{--fa: ""}.fa-circle-radiation,.fa-radiation-alt{--fa: ""}.fa-baseball,.fa-baseball-ball{--fa: ""}.fa-jet-fighter-up{--fa: ""}.fa-diagram-project,.fa-project-diagram{--fa: ""}.fa-copy{--fa: ""}.fa-volume-xmark,.fa-volume-mute,.fa-volume-times{--fa: ""}.fa-hand-sparkles{--fa: ""}.fa-grip,.fa-grip-horizontal{--fa: ""}.fa-share-from-square,.fa-share-square{--fa: ""}.fa-child-combatant,.fa-child-rifle{--fa: ""}.fa-gun{--fa: ""}.fa-square-phone,.fa-phone-square{--fa: ""}.fa-plus,.fa-add{--fa: "+"}.fa-expand{--fa: ""}.fa-computer{--fa: ""}.fa-xmark,.fa-close,.fa-multiply,.fa-remove,.fa-times{--fa: ""}.fa-arrows-up-down-left-right,.fa-arrows{--fa: ""}.fa-chalkboard-user,.fa-chalkboard-teacher{--fa: ""}.fa-peso-sign{--fa: ""}.fa-building-shield{--fa: ""}.fa-baby{--fa: ""}.fa-users-line{--fa: ""}.fa-quote-left,.fa-quote-left-alt{--fa: ""}.fa-tractor{--fa: ""}.fa-trash-arrow-up,.fa-trash-restore{--fa: ""}.fa-arrow-down-up-lock{--fa: ""}.fa-lines-leaning{--fa: ""}.fa-ruler-combined{--fa: ""}.fa-copyright{--fa: ""}.fa-equals{--fa: "="}.fa-blender{--fa: ""}.fa-teeth{--fa: ""}.fa-shekel-sign,.fa-ils,.fa-shekel,.fa-sheqel,.fa-sheqel-sign{--fa: ""}.fa-map{--fa: ""}.fa-rocket{--fa: ""}.fa-photo-film,.fa-photo-video{--fa: ""}.fa-folder-minus{--fa: ""}.fa-hexagon-nodes-bolt{--fa: ""}.fa-store{--fa: ""}.fa-arrow-trend-up{--fa: ""}.fa-plug-circle-minus{--fa: ""}.fa-sign-hanging,.fa-sign{--fa: ""}.fa-bezier-curve{--fa: ""}.fa-bell-slash{--fa: ""}.fa-tablet,.fa-tablet-android{--fa: ""}.fa-school-flag{--fa: ""}.fa-fill{--fa: ""}.fa-angle-up{--fa: ""}.fa-drumstick-bite{--fa: ""}.fa-holly-berry{--fa: ""}.fa-chevron-left{--fa: ""}.fa-bacteria{--fa: ""}.fa-hand-lizard{--fa: ""}.fa-notdef{--fa: ""}.fa-disease{--fa: ""}.fa-briefcase-medical{--fa: ""}.fa-genderless{--fa: ""}.fa-chevron-right{--fa: ""}.fa-retweet{--fa: ""}.fa-car-rear,.fa-car-alt{--fa: ""}.fa-pump-soap{--fa: ""}.fa-video-slash{--fa: ""}.fa-battery-quarter,.fa-battery-2{--fa: ""}.fa-radio{--fa: ""}.fa-baby-carriage,.fa-carriage-baby{--fa: ""}.fa-traffic-light{--fa: ""}.fa-thermometer{--fa: ""}.fa-vr-cardboard{--fa: ""}.fa-hand-middle-finger{--fa: ""}.fa-percent,.fa-percentage{--fa: "%"}.fa-truck-moving{--fa: ""}.fa-glass-water-droplet{--fa: ""}.fa-display{--fa: ""}.fa-face-smile,.fa-smile{--fa: ""}.fa-thumbtack,.fa-thumb-tack{--fa: ""}.fa-trophy{--fa: ""}.fa-person-praying,.fa-pray{--fa: ""}.fa-hammer{--fa: ""}.fa-hand-peace{--fa: ""}.fa-rotate,.fa-sync-alt{--fa: ""}.fa-spinner{--fa: ""}.fa-robot{--fa: ""}.fa-peace{--fa: ""}.fa-gears,.fa-cogs{--fa: ""}.fa-warehouse{--fa: ""}.fa-arrow-up-right-dots{--fa: ""}.fa-splotch{--fa: ""}.fa-face-grin-hearts,.fa-grin-hearts{--fa: ""}.fa-dice-four{--fa: ""}.fa-sim-card{--fa: ""}.fa-transgender,.fa-transgender-alt{--fa: ""}.fa-mercury{--fa: ""}.fa-arrow-turn-down,.fa-level-down{--fa: ""}.fa-person-falling-burst{--fa: ""}.fa-award{--fa: ""}.fa-ticket-simple,.fa-ticket-alt{--fa: ""}.fa-building{--fa: ""}.fa-angles-left,.fa-angle-double-left{--fa: ""}.fa-qrcode{--fa: ""}.fa-clock-rotate-left,.fa-history{--fa: ""}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa: ""}.fa-file-export,.fa-arrow-right-from-file{--fa: ""}.fa-shield,.fa-shield-blank{--fa: ""}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa: ""}.fa-comment-nodes{--fa: ""}.fa-house-medical{--fa: ""}.fa-golf-ball-tee,.fa-golf-ball{--fa: ""}.fa-circle-chevron-left,.fa-chevron-circle-left{--fa: ""}.fa-house-chimney-window{--fa: ""}.fa-pen-nib{--fa: ""}.fa-tent-arrow-turn-left{--fa: ""}.fa-tents{--fa: ""}.fa-wand-magic,.fa-magic{--fa: ""}.fa-dog{--fa: ""}.fa-carrot{--fa: ""}.fa-moon{--fa: ""}.fa-wine-glass-empty,.fa-wine-glass-alt{--fa: ""}.fa-cheese{--fa: ""}.fa-yin-yang{--fa: ""}.fa-music{--fa: ""}.fa-code-commit{--fa: ""}.fa-temperature-low{--fa: ""}.fa-person-biking,.fa-biking{--fa: ""}.fa-broom{--fa: ""}.fa-shield-heart{--fa: ""}.fa-gopuram{--fa: ""}.fa-earth-oceania,.fa-globe-oceania{--fa: ""}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa: ""}.fa-hashtag{--fa: "#"}.fa-up-right-and-down-left-from-center,.fa-expand-alt{--fa: ""}.fa-oil-can{--fa: ""}.fa-t{--fa: "T"}.fa-hippo{--fa: ""}.fa-chart-column{--fa: ""}.fa-infinity{--fa: ""}.fa-vial-circle-check{--fa: ""}.fa-person-arrow-down-to-line{--fa: ""}.fa-voicemail{--fa: ""}.fa-fan{--fa: ""}.fa-person-walking-luggage{--fa: ""}.fa-up-down,.fa-arrows-alt-v{--fa: ""}.fa-cloud-moon-rain{--fa: ""}.fa-calendar{--fa: ""}.fa-trailer{--fa: ""}.fa-bahai,.fa-haykal{--fa: ""}.fa-sd-card{--fa: ""}.fa-dragon{--fa: ""}.fa-shoe-prints{--fa: ""}.fa-circle-plus,.fa-plus-circle{--fa: ""}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa: ""}.fa-hand-holding{--fa: ""}.fa-plug-circle-exclamation{--fa: ""}.fa-link-slash,.fa-chain-broken,.fa-chain-slash,.fa-unlink{--fa: ""}.fa-clone{--fa: ""}.fa-person-walking-arrow-loop-left{--fa: ""}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa: ""}.fa-fire-flame-curved,.fa-fire-alt{--fa: ""}.fa-tornado{--fa: ""}.fa-file-circle-plus{--fa: ""}.fa-book-quran,.fa-quran{--fa: ""}.fa-anchor{--fa: ""}.fa-border-all{--fa: ""}.fa-face-angry,.fa-angry{--fa: ""}.fa-cookie-bite{--fa: ""}.fa-arrow-trend-down{--fa: ""}.fa-rss,.fa-feed{--fa: ""}.fa-draw-polygon{--fa: ""}.fa-scale-balanced,.fa-balance-scale{--fa: ""}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa: ""}.fa-shower{--fa: ""}.fa-desktop,.fa-desktop-alt{--fa: ""}.fa-m{--fa: "M"}.fa-table-list,.fa-th-list{--fa: ""}.fa-comment-sms,.fa-sms{--fa: ""}.fa-book{--fa: ""}.fa-user-plus{--fa: ""}.fa-check{--fa: ""}.fa-battery-three-quarters,.fa-battery-4{--fa: ""}.fa-house-circle-check{--fa: ""}.fa-angle-left{--fa: ""}.fa-diagram-successor{--fa: ""}.fa-truck-arrow-right{--fa: ""}.fa-arrows-split-up-and-left{--fa: ""}.fa-hand-fist,.fa-fist-raised{--fa: ""}.fa-cloud-moon{--fa: ""}.fa-briefcase{--fa: ""}.fa-person-falling{--fa: ""}.fa-image-portrait,.fa-portrait{--fa: ""}.fa-user-tag{--fa: ""}.fa-rug{--fa: ""}.fa-earth-europe,.fa-globe-europe{--fa: ""}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa: ""}.fa-rectangle-xmark,.fa-rectangle-times,.fa-times-rectangle,.fa-window-close{--fa: ""}.fa-baht-sign{--fa: ""}.fa-book-open{--fa: ""}.fa-book-journal-whills,.fa-journal-whills{--fa: ""}.fa-handcuffs{--fa: ""}.fa-triangle-exclamation,.fa-exclamation-triangle,.fa-warning{--fa: ""}.fa-database{--fa: ""}.fa-share,.fa-mail-forward{--fa: ""}.fa-bottle-droplet{--fa: ""}.fa-mask-face{--fa: ""}.fa-hill-rockslide{--fa: ""}.fa-right-left,.fa-exchange-alt{--fa: ""}.fa-paper-plane{--fa: ""}.fa-road-circle-exclamation{--fa: ""}.fa-dungeon{--fa: ""}.fa-align-right{--fa: ""}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa: ""}.fa-life-ring{--fa: ""}.fa-hands,.fa-sign-language,.fa-signing{--fa: ""}.fa-calendar-day{--fa: ""}.fa-water-ladder,.fa-ladder-water,.fa-swimming-pool{--fa: ""}.fa-arrows-up-down,.fa-arrows-v{--fa: ""}.fa-face-grimace,.fa-grimace{--fa: ""}.fa-wheelchair-move,.fa-wheelchair-alt{--fa: ""}.fa-turn-down,.fa-level-down-alt{--fa: ""}.fa-person-walking-arrow-right{--fa: ""}.fa-square-envelope,.fa-envelope-square{--fa: ""}.fa-dice{--fa: ""}.fa-bowling-ball{--fa: ""}.fa-brain{--fa: ""}.fa-bandage,.fa-band-aid{--fa: ""}.fa-calendar-minus{--fa: ""}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa: ""}.fa-gifts{--fa: ""}.fa-hotel{--fa: ""}.fa-earth-asia,.fa-globe-asia{--fa: ""}.fa-id-card-clip,.fa-id-card-alt{--fa: ""}.fa-magnifying-glass-plus,.fa-search-plus{--fa: ""}.fa-thumbs-up{--fa: ""}.fa-user-clock{--fa: ""}.fa-hand-dots,.fa-allergies{--fa: ""}.fa-file-invoice{--fa: ""}.fa-window-minimize{--fa: ""}.fa-mug-saucer,.fa-coffee{--fa: ""}.fa-brush{--fa: ""}.fa-file-half-dashed{--fa: ""}.fa-mask{--fa: ""}.fa-magnifying-glass-minus,.fa-search-minus{--fa: ""}.fa-ruler-vertical{--fa: ""}.fa-user-large,.fa-user-alt{--fa: ""}.fa-train-tram{--fa: ""}.fa-user-nurse{--fa: ""}.fa-syringe{--fa: ""}.fa-cloud-sun{--fa: ""}.fa-stopwatch-20{--fa: ""}.fa-square-full{--fa: ""}.fa-magnet{--fa: ""}.fa-jar{--fa: ""}.fa-note-sticky,.fa-sticky-note{--fa: ""}.fa-bug-slash{--fa: ""}.fa-arrow-up-from-water-pump{--fa: ""}.fa-bone{--fa: ""}.fa-table-cells-row-unlock{--fa: ""}.fa-user-injured{--fa: ""}.fa-face-sad-tear,.fa-sad-tear{--fa: ""}.fa-plane{--fa: ""}.fa-tent-arrows-down{--fa: ""}.fa-exclamation{--fa: "!"}.fa-arrows-spin{--fa: ""}.fa-print{--fa: ""}.fa-turkish-lira-sign,.fa-try,.fa-turkish-lira{--fa: ""}.fa-dollar-sign,.fa-dollar,.fa-usd{--fa: "$"}.fa-x{--fa: "X"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa: ""}.fa-users-gear,.fa-users-cog{--fa: ""}.fa-person-military-pointing{--fa: ""}.fa-building-columns,.fa-bank,.fa-institution,.fa-museum,.fa-university{--fa: ""}.fa-umbrella{--fa: ""}.fa-trowel{--fa: ""}.fa-d{--fa: "D"}.fa-stapler{--fa: ""}.fa-masks-theater,.fa-theater-masks{--fa: ""}.fa-kip-sign{--fa: ""}.fa-hand-point-left{--fa: ""}.fa-handshake-simple,.fa-handshake-alt{--fa: ""}.fa-jet-fighter,.fa-fighter-jet{--fa: ""}.fa-square-share-nodes,.fa-share-alt-square{--fa: ""}.fa-barcode{--fa: ""}.fa-plus-minus{--fa: ""}.fa-video,.fa-video-camera{--fa: ""}.fa-graduation-cap,.fa-mortar-board{--fa: ""}.fa-hand-holding-medical{--fa: ""}.fa-person-circle-check{--fa: ""}.fa-turn-up,.fa-level-up-alt{--fa: ""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:root,:host{--fa-style-family-brands: "Font Awesome 6 Brands";--fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}.fab,.fa-brands{font-weight:400}.fa-monero{--fa: ""}.fa-hooli{--fa: ""}.fa-yelp{--fa: ""}.fa-cc-visa{--fa: ""}.fa-lastfm{--fa: ""}.fa-shopware{--fa: ""}.fa-creative-commons-nc{--fa: ""}.fa-aws{--fa: ""}.fa-redhat{--fa: ""}.fa-yoast{--fa: ""}.fa-cloudflare{--fa: ""}.fa-ups{--fa: ""}.fa-pixiv{--fa: ""}.fa-wpexplorer{--fa: ""}.fa-dyalog{--fa: ""}.fa-bity{--fa: ""}.fa-stackpath{--fa: ""}.fa-buysellads{--fa: ""}.fa-first-order{--fa: ""}.fa-modx{--fa: ""}.fa-guilded{--fa: ""}.fa-vnv{--fa: ""}.fa-square-js,.fa-js-square{--fa: ""}.fa-microsoft{--fa: ""}.fa-qq{--fa: ""}.fa-orcid{--fa: ""}.fa-java{--fa: ""}.fa-invision{--fa: ""}.fa-creative-commons-pd-alt{--fa: ""}.fa-centercode{--fa: ""}.fa-glide-g{--fa: ""}.fa-drupal{--fa: ""}.fa-jxl{--fa: ""}.fa-dart-lang{--fa: ""}.fa-hire-a-helper{--fa: ""}.fa-creative-commons-by{--fa: ""}.fa-unity{--fa: ""}.fa-whmcs{--fa: ""}.fa-rocketchat{--fa: ""}.fa-vk{--fa: ""}.fa-untappd{--fa: ""}.fa-mailchimp{--fa: ""}.fa-css3-alt{--fa: ""}.fa-square-reddit,.fa-reddit-square{--fa: ""}.fa-vimeo-v{--fa: ""}.fa-contao{--fa: ""}.fa-square-font-awesome{--fa: ""}.fa-deskpro{--fa: ""}.fa-brave{--fa: ""}.fa-sistrix{--fa: ""}.fa-square-instagram,.fa-instagram-square{--fa: ""}.fa-battle-net{--fa: ""}.fa-the-red-yeti{--fa: ""}.fa-square-hacker-news,.fa-hacker-news-square{--fa: ""}.fa-edge{--fa: ""}.fa-threads{--fa: ""}.fa-napster{--fa: ""}.fa-square-snapchat,.fa-snapchat-square{--fa: ""}.fa-google-plus-g{--fa: ""}.fa-artstation{--fa: ""}.fa-markdown{--fa: ""}.fa-sourcetree{--fa: ""}.fa-google-plus{--fa: ""}.fa-diaspora{--fa: ""}.fa-foursquare{--fa: ""}.fa-stack-overflow{--fa: ""}.fa-github-alt{--fa: ""}.fa-phoenix-squadron{--fa: ""}.fa-pagelines{--fa: ""}.fa-algolia{--fa: ""}.fa-red-river{--fa: ""}.fa-creative-commons-sa{--fa: ""}.fa-safari{--fa: ""}.fa-google{--fa: ""}.fa-square-font-awesome-stroke,.fa-font-awesome-alt{--fa: ""}.fa-atlassian{--fa: ""}.fa-linkedin-in{--fa: ""}.fa-digital-ocean{--fa: ""}.fa-nimblr{--fa: ""}.fa-chromecast{--fa: ""}.fa-evernote{--fa: ""}.fa-hacker-news{--fa: ""}.fa-creative-commons-sampling{--fa: ""}.fa-adversal{--fa: ""}.fa-creative-commons{--fa: ""}.fa-watchman-monitoring{--fa: ""}.fa-fonticons{--fa: ""}.fa-weixin{--fa: ""}.fa-shirtsinbulk{--fa: ""}.fa-codepen{--fa: ""}.fa-git-alt{--fa: ""}.fa-lyft{--fa: ""}.fa-rev{--fa: ""}.fa-windows{--fa: ""}.fa-wizards-of-the-coast{--fa: ""}.fa-square-viadeo,.fa-viadeo-square{--fa: ""}.fa-meetup{--fa: ""}.fa-centos{--fa: ""}.fa-adn{--fa: ""}.fa-cloudsmith{--fa: ""}.fa-opensuse{--fa: ""}.fa-pied-piper-alt{--fa: ""}.fa-square-dribbble,.fa-dribbble-square{--fa: ""}.fa-codiepie{--fa: ""}.fa-node{--fa: ""}.fa-mix{--fa: ""}.fa-steam{--fa: ""}.fa-cc-apple-pay{--fa: ""}.fa-scribd{--fa: ""}.fa-debian{--fa: ""}.fa-openid{--fa: ""}.fa-instalod{--fa: ""}.fa-files-pinwheel{--fa: ""}.fa-expeditedssl{--fa: ""}.fa-sellcast{--fa: ""}.fa-square-twitter,.fa-twitter-square{--fa: ""}.fa-r-project{--fa: ""}.fa-delicious{--fa: ""}.fa-freebsd{--fa: ""}.fa-vuejs{--fa: ""}.fa-accusoft{--fa: ""}.fa-ioxhost{--fa: ""}.fa-fonticons-fi{--fa: ""}.fa-app-store{--fa: ""}.fa-cc-mastercard{--fa: ""}.fa-itunes-note{--fa: ""}.fa-golang{--fa: ""}.fa-kickstarter,.fa-square-kickstarter{--fa: ""}.fa-grav{--fa: ""}.fa-weibo{--fa: ""}.fa-uncharted{--fa: ""}.fa-firstdraft{--fa: ""}.fa-square-youtube,.fa-youtube-square{--fa: ""}.fa-wikipedia-w{--fa: ""}.fa-wpressr,.fa-rendact{--fa: ""}.fa-angellist{--fa: ""}.fa-galactic-republic{--fa: ""}.fa-nfc-directional{--fa: ""}.fa-skype{--fa: ""}.fa-joget{--fa: ""}.fa-fedora{--fa: ""}.fa-stripe-s{--fa: ""}.fa-meta{--fa: ""}.fa-laravel{--fa: ""}.fa-hotjar{--fa: ""}.fa-bluetooth-b{--fa: ""}.fa-square-letterboxd{--fa: ""}.fa-sticker-mule{--fa: ""}.fa-creative-commons-zero{--fa: ""}.fa-hips{--fa: ""}.fa-css{--fa: ""}.fa-behance{--fa: ""}.fa-reddit{--fa: ""}.fa-discord{--fa: ""}.fa-chrome{--fa: ""}.fa-app-store-ios{--fa: ""}.fa-cc-discover{--fa: ""}.fa-wpbeginner{--fa: ""}.fa-confluence{--fa: ""}.fa-shoelace{--fa: ""}.fa-mdb{--fa: ""}.fa-dochub{--fa: ""}.fa-accessible-icon{--fa: ""}.fa-ebay{--fa: ""}.fa-amazon{--fa: ""}.fa-unsplash{--fa: ""}.fa-yarn{--fa: ""}.fa-square-steam,.fa-steam-square{--fa: ""}.fa-500px{--fa: ""}.fa-square-vimeo,.fa-vimeo-square{--fa: ""}.fa-asymmetrik{--fa: ""}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa: ""}.fa-gratipay{--fa: ""}.fa-apple{--fa: ""}.fa-hive{--fa: ""}.fa-gitkraken{--fa: ""}.fa-keybase{--fa: ""}.fa-apple-pay{--fa: ""}.fa-padlet{--fa: ""}.fa-amazon-pay{--fa: ""}.fa-square-github,.fa-github-square{--fa: ""}.fa-stumbleupon{--fa: ""}.fa-fedex{--fa: ""}.fa-phoenix-framework{--fa: ""}.fa-shopify{--fa: ""}.fa-neos{--fa: ""}.fa-square-threads{--fa: ""}.fa-hackerrank{--fa: ""}.fa-researchgate{--fa: ""}.fa-swift{--fa: ""}.fa-angular{--fa: ""}.fa-speakap{--fa: ""}.fa-angrycreative{--fa: ""}.fa-y-combinator{--fa: ""}.fa-empire{--fa: ""}.fa-envira{--fa: ""}.fa-google-scholar{--fa: ""}.fa-square-gitlab,.fa-gitlab-square{--fa: ""}.fa-studiovinari{--fa: ""}.fa-pied-piper{--fa: ""}.fa-wordpress{--fa: ""}.fa-product-hunt{--fa: ""}.fa-firefox{--fa: ""}.fa-linode{--fa: ""}.fa-goodreads{--fa: ""}.fa-square-odnoklassniki,.fa-odnoklassniki-square{--fa: ""}.fa-jsfiddle{--fa: ""}.fa-sith{--fa: ""}.fa-themeisle{--fa: ""}.fa-page4{--fa: ""}.fa-hashnode{--fa: ""}.fa-react{--fa: ""}.fa-cc-paypal{--fa: ""}.fa-squarespace{--fa: ""}.fa-cc-stripe{--fa: ""}.fa-creative-commons-share{--fa: ""}.fa-bitcoin{--fa: ""}.fa-keycdn{--fa: ""}.fa-opera{--fa: ""}.fa-itch-io{--fa: ""}.fa-umbraco{--fa: ""}.fa-galactic-senate{--fa: ""}.fa-ubuntu{--fa: ""}.fa-draft2digital{--fa: ""}.fa-stripe{--fa: ""}.fa-houzz{--fa: ""}.fa-gg{--fa: ""}.fa-dhl{--fa: ""}.fa-square-pinterest,.fa-pinterest-square{--fa: ""}.fa-xing{--fa: ""}.fa-blackberry{--fa: ""}.fa-creative-commons-pd{--fa: ""}.fa-playstation{--fa: ""}.fa-quinscape{--fa: ""}.fa-less{--fa: ""}.fa-blogger-b{--fa: ""}.fa-opencart{--fa: ""}.fa-vine{--fa: ""}.fa-signal-messenger{--fa: ""}.fa-paypal{--fa: ""}.fa-gitlab{--fa: ""}.fa-typo3{--fa: ""}.fa-reddit-alien{--fa: ""}.fa-yahoo{--fa: ""}.fa-dailymotion{--fa: ""}.fa-affiliatetheme{--fa: ""}.fa-pied-piper-pp{--fa: ""}.fa-bootstrap{--fa: ""}.fa-odnoklassniki{--fa: ""}.fa-nfc-symbol{--fa: ""}.fa-mintbit{--fa: ""}.fa-ethereum{--fa: ""}.fa-speaker-deck{--fa: ""}.fa-creative-commons-nc-eu{--fa: ""}.fa-patreon{--fa: ""}.fa-avianex{--fa: ""}.fa-ello{--fa: ""}.fa-gofore{--fa: ""}.fa-bimobject{--fa: ""}.fa-brave-reverse{--fa: ""}.fa-facebook-f{--fa: ""}.fa-square-google-plus,.fa-google-plus-square{--fa: ""}.fa-web-awesome{--fa: ""}.fa-mandalorian{--fa: ""}.fa-first-order-alt{--fa: ""}.fa-osi{--fa: ""}.fa-google-wallet{--fa: ""}.fa-d-and-d-beyond{--fa: ""}.fa-periscope{--fa: ""}.fa-fulcrum{--fa: ""}.fa-cloudscale{--fa: ""}.fa-forumbee{--fa: ""}.fa-mizuni{--fa: ""}.fa-schlix{--fa: ""}.fa-square-xing,.fa-xing-square{--fa: ""}.fa-bandcamp{--fa: ""}.fa-wpforms{--fa: ""}.fa-cloudversify{--fa: ""}.fa-usps{--fa: ""}.fa-megaport{--fa: ""}.fa-magento{--fa: ""}.fa-spotify{--fa: ""}.fa-optin-monster{--fa: ""}.fa-fly{--fa: ""}.fa-square-bluesky{--fa: ""}.fa-aviato{--fa: ""}.fa-itunes{--fa: ""}.fa-cuttlefish{--fa: ""}.fa-blogger{--fa: ""}.fa-flickr{--fa: ""}.fa-viber{--fa: ""}.fa-soundcloud{--fa: ""}.fa-digg{--fa: ""}.fa-tencent-weibo{--fa: ""}.fa-letterboxd{--fa: ""}.fa-symfony{--fa: ""}.fa-maxcdn{--fa: ""}.fa-etsy{--fa: ""}.fa-facebook-messenger{--fa: ""}.fa-audible{--fa: ""}.fa-think-peaks{--fa: ""}.fa-bilibili{--fa: ""}.fa-erlang{--fa: ""}.fa-x-twitter{--fa: ""}.fa-cotton-bureau{--fa: ""}.fa-dashcube{--fa: ""}.fa-42-group,.fa-innosoft{--fa: ""}.fa-stack-exchange{--fa: ""}.fa-elementor{--fa: ""}.fa-square-pied-piper,.fa-pied-piper-square{--fa: ""}.fa-creative-commons-nd{--fa: ""}.fa-palfed{--fa: ""}.fa-superpowers{--fa: ""}.fa-resolving{--fa: ""}.fa-xbox{--fa: ""}.fa-square-web-awesome-stroke{--fa: ""}.fa-searchengin{--fa: ""}.fa-tiktok{--fa: ""}.fa-square-facebook,.fa-facebook-square{--fa: ""}.fa-renren{--fa: ""}.fa-linux{--fa: ""}.fa-glide{--fa: ""}.fa-linkedin{--fa: ""}.fa-hubspot{--fa: ""}.fa-deploydog{--fa: ""}.fa-twitch{--fa: ""}.fa-flutter{--fa: ""}.fa-ravelry{--fa: ""}.fa-mixer{--fa: ""}.fa-square-lastfm,.fa-lastfm-square{--fa: ""}.fa-vimeo{--fa: ""}.fa-mendeley{--fa: ""}.fa-uniregistry{--fa: ""}.fa-figma{--fa: ""}.fa-creative-commons-remix{--fa: ""}.fa-cc-amazon-pay{--fa: ""}.fa-dropbox{--fa: ""}.fa-instagram{--fa: ""}.fa-cmplid{--fa: ""}.fa-upwork{--fa: ""}.fa-facebook{--fa: ""}.fa-gripfire{--fa: ""}.fa-jedi-order{--fa: ""}.fa-uikit{--fa: ""}.fa-fort-awesome-alt{--fa: ""}.fa-phabricator{--fa: ""}.fa-ussunnah{--fa: ""}.fa-earlybirds{--fa: ""}.fa-trade-federation{--fa: ""}.fa-autoprefixer{--fa: ""}.fa-whatsapp{--fa: ""}.fa-square-upwork{--fa: ""}.fa-slideshare{--fa: ""}.fa-google-play{--fa: ""}.fa-viadeo{--fa: ""}.fa-line{--fa: ""}.fa-google-drive{--fa: ""}.fa-servicestack{--fa: ""}.fa-simplybuilt{--fa: ""}.fa-bitbucket{--fa: ""}.fa-imdb{--fa: ""}.fa-deezer{--fa: ""}.fa-raspberry-pi{--fa: ""}.fa-jira{--fa: ""}.fa-docker{--fa: ""}.fa-screenpal{--fa: ""}.fa-bluetooth{--fa: ""}.fa-gitter{--fa: ""}.fa-d-and-d{--fa: ""}.fa-microblog{--fa: ""}.fa-cc-diners-club{--fa: ""}.fa-gg-circle{--fa: ""}.fa-pied-piper-hat{--fa: ""}.fa-kickstarter-k{--fa: ""}.fa-yandex{--fa: ""}.fa-readme{--fa: ""}.fa-html5{--fa: ""}.fa-sellsy{--fa: ""}.fa-square-web-awesome{--fa: ""}.fa-sass{--fa: ""}.fa-wirsindhandwerk,.fa-wsh{--fa: ""}.fa-buromobelexperte{--fa: ""}.fa-salesforce{--fa: ""}.fa-octopus-deploy{--fa: ""}.fa-medapps{--fa: ""}.fa-ns8{--fa: ""}.fa-pinterest-p{--fa: ""}.fa-apper{--fa: ""}.fa-fort-awesome{--fa: ""}.fa-waze{--fa: ""}.fa-bluesky{--fa: ""}.fa-cc-jcb{--fa: ""}.fa-snapchat,.fa-snapchat-ghost{--fa: ""}.fa-fantasy-flight-games{--fa: ""}.fa-rust{--fa: ""}.fa-wix{--fa: ""}.fa-square-behance,.fa-behance-square{--fa: ""}.fa-supple{--fa: ""}.fa-webflow{--fa: ""}.fa-rebel{--fa: ""}.fa-css3{--fa: ""}.fa-staylinked{--fa: ""}.fa-kaggle{--fa: ""}.fa-space-awesome{--fa: ""}.fa-deviantart{--fa: ""}.fa-cpanel{--fa: ""}.fa-goodreads-g{--fa: ""}.fa-square-git,.fa-git-square{--fa: ""}.fa-square-tumblr,.fa-tumblr-square{--fa: ""}.fa-trello{--fa: ""}.fa-creative-commons-nc-jp{--fa: ""}.fa-get-pocket{--fa: ""}.fa-perbyte{--fa: ""}.fa-grunt{--fa: ""}.fa-weebly{--fa: ""}.fa-connectdevelop{--fa: ""}.fa-leanpub{--fa: ""}.fa-black-tie{--fa: ""}.fa-themeco{--fa: ""}.fa-python{--fa: ""}.fa-android{--fa: ""}.fa-bots{--fa: ""}.fa-free-code-camp{--fa: ""}.fa-hornbill{--fa: ""}.fa-js{--fa: ""}.fa-ideal{--fa: ""}.fa-git{--fa: ""}.fa-dev{--fa: ""}.fa-sketch{--fa: ""}.fa-yandex-international{--fa: ""}.fa-cc-amex{--fa: ""}.fa-uber{--fa: ""}.fa-github{--fa: ""}.fa-php{--fa: ""}.fa-alipay{--fa: ""}.fa-youtube{--fa: ""}.fa-skyatlas{--fa: ""}.fa-firefox-browser{--fa: ""}.fa-replyd{--fa: ""}.fa-suse{--fa: ""}.fa-jenkins{--fa: ""}.fa-twitter{--fa: ""}.fa-rockrms{--fa: ""}.fa-pinterest{--fa: ""}.fa-buffer{--fa: ""}.fa-npm{--fa: ""}.fa-yammer{--fa: ""}.fa-btc{--fa: ""}.fa-dribbble{--fa: ""}.fa-stumbleupon-circle{--fa: ""}.fa-internet-explorer{--fa: ""}.fa-stubber{--fa: ""}.fa-telegram,.fa-telegram-plane{--fa: ""}.fa-old-republic{--fa: ""}.fa-odysee{--fa: ""}.fa-square-whatsapp,.fa-whatsapp-square{--fa: ""}.fa-node-js{--fa: ""}.fa-edge-legacy{--fa: ""}.fa-slack,.fa-slack-hash{--fa: ""}.fa-medrt{--fa: ""}.fa-usb{--fa: ""}.fa-tumblr{--fa: ""}.fa-vaadin{--fa: ""}.fa-quora{--fa: ""}.fa-square-x-twitter{--fa: ""}.fa-reacteurope{--fa: ""}.fa-medium,.fa-medium-m{--fa: ""}.fa-amilia{--fa: ""}.fa-mixcloud{--fa: ""}.fa-flipboard{--fa: ""}.fa-viacoin{--fa: ""}.fa-critical-role{--fa: ""}.fa-sitrox{--fa: ""}.fa-discourse{--fa: ""}.fa-joomla{--fa: ""}.fa-mastodon{--fa: ""}.fa-airbnb{--fa: ""}.fa-wolf-pack-battalion{--fa: ""}.fa-buy-n-large{--fa: ""}.fa-gulp{--fa: ""}.fa-creative-commons-sampling-plus{--fa: ""}.fa-strava{--fa: ""}.fa-ember{--fa: ""}.fa-canadian-maple-leaf{--fa: ""}.fa-teamspeak{--fa: ""}.fa-pushed{--fa: ""}.fa-wordpress-simple{--fa: ""}.fa-nutritionix{--fa: ""}.fa-wodu{--fa: ""}.fa-google-pay{--fa: ""}.fa-intercom{--fa: ""}.fa-zhihu{--fa: ""}.fa-korvue{--fa: ""}.fa-pix{--fa: ""}.fa-steam-symbol{--fa: ""}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype")}.far,.fa-regular{font-weight:400}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}.fas,.fa-solid{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype");unicode-range:U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-v4compatibility-C9RhG_FT.woff2) format("woff2"),url(/admin-next/assets/fa-v4compatibility-CCth-dXg.ttf) format("truetype");unicode-range:U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 50%,var(--accent-color) 100%);background-attachment:fixed;min-height:100vh;margin:0;overflow-x:hidden}body,div,button,input,select,textarea,table,tr,td,th,span,p,h1,h2,h3,h4,h5,h6{transition:all .3s cubic-bezier(.4,0,.2,1)}.el-button--primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);border-color:transparent}.el-button--primary:hover,.el-button--primary:focus{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);opacity:.9}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[2px\]:after{content:var(--tw-content);left:2px}.after\:top-0\.5:after{content:var(--tw-content);top:.125rem}.after\:h-4:after{content:var(--tw-content);height:1rem}.after\:w-4:after{content:var(--tw-content);width:1rem}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.after\:shadow-sm:after{content:var(--tw-content);--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.after\:transition-transform:after{content:var(--tw-content);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:duration-200:after{content:var(--tw-content);transition-duration:.2s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-300:hover{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.hover\:border-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.hover\:border-indigo-300:hover{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity, 1))}.hover\:border-red-300:hover{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.hover\:bg-amber-700:hover{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-200:hover{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-50:hover{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.hover\:bg-green-100:hover{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.hover\:bg-green-200:hover{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.hover\:bg-green-50:hover{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.hover\:bg-green-600:hover{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-50:hover{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-100:hover{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 215 170 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-50:hover{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-200:hover{--tw-bg-opacity: 1;background-color:rgb(233 213 255 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-50:hover{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-red-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/50:hover{background-color:#ffffff80}.hover\:bg-white\/90:hover{background-color:#ffffffe6}.hover\:bg-yellow-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.hover\:from-blue-600:hover{--tw-gradient-from: #2563eb var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-green-600:hover{--tw-gradient-from: #16a34a var(--tw-gradient-from-position);--tw-gradient-to: rgb(22 163 74 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-yellow-600:hover{--tw-gradient-from: #ca8a04 var(--tw-gradient-from-position);--tw-gradient-to: rgb(202 138 4 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:to-blue-700:hover{--tw-gradient-to: #1d4ed8 var(--tw-gradient-to-position)}.hover\:to-green-700:hover{--tw-gradient-to: #15803d var(--tw-gradient-to-position)}.hover\:to-orange-600:hover{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.hover\:text-blue-700:hover{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.hover\:text-blue-900:hover{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-green-900:hover{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.hover\:text-indigo-900:hover{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-orange-900:hover{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.hover\:text-purple-900:hover{--tw-text-opacity: 1;color:rgb(88 28 135 / var(--tw-text-opacity, 1))}.hover\:text-red-800:hover{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.hover\:text-red-900:hover{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.focus\:border-cyan-500:focus{--tw-border-opacity: 1;border-color:rgb(6 182 212 / var(--tw-border-opacity, 1))}.focus\:border-transparent:focus{border-color:transparent}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(191 219 254 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus\:ring-cyan-500\/20:focus{--tw-ring-color: rgb(6 182 212 / .2)}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-20{opacity:.2}.peer:checked~.peer-checked\:bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.peer:checked~.peer-checked\:after\:translate-x-4:after{content:var(--tw-content);--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}.peer:focus~.peer-focus\:ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.peer:focus~.peer-focus\:ring-blue-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity, 1))}.dark\:divide-gray-600:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(75 85 99 / var(--tw-divide-opacity, 1))}.dark\:divide-gray-600\/50:is(.dark *)>:not([hidden])~:not([hidden]){border-color:#4b556380}.dark\:border-amber-500:is(.dark *){--tw-border-opacity: 1;border-color:rgb(245 158 11 / var(--tw-border-opacity, 1))}.dark\:border-amber-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(180 83 9 / var(--tw-border-opacity, 1))}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.dark\:border-blue-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-500:is(.dark *){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity, 1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.dark\:border-gray-600\/30:is(.dark *){border-color:#4b55634d}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-green-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.dark\:border-green-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-indigo-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(67 56 202 / var(--tw-border-opacity, 1))}.dark\:border-orange-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.dark\:border-orange-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(194 65 12 / var(--tw-border-opacity, 1))}.dark\:border-purple-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(126 34 206 / var(--tw-border-opacity, 1))}.dark\:border-red-500\/20:is(.dark *){border-color:#ef444433}.dark\:border-yellow-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(161 98 7 / var(--tw-border-opacity, 1))}.dark\:bg-amber-500:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.dark\:bg-amber-900\/20:is(.dark *){background-color:#78350f33}.dark\:bg-amber-900\/30:is(.dark *){background-color:#78350f4d}.dark\:bg-blue-900\/20:is(.dark *){background-color:#1e3a8a33}.dark\:bg-blue-900\/30:is(.dark *){background-color:#1e3a8a4d}.dark\:bg-blue-900\/50:is(.dark *){background-color:#1e3a8a80}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-600\/50:is(.dark *){background-color:#4b556380}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700\/50:is(.dark *){background-color:#37415180}.dark\:bg-gray-700\/80:is(.dark *){background-color:#374151cc}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/20:is(.dark *){background-color:#1f293733}.dark\:bg-gray-800\/80:is(.dark *){background-color:#1f2937cc}.dark\:bg-gray-800\/90:is(.dark *){background-color:#1f2937e6}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-green-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/20:is(.dark *){background-color:#14532d33}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-orange-900\/30:is(.dark *){background-color:#7c2d124d}.dark\:bg-purple-900\/30:is(.dark *){background-color:#581c874d}.dark\:bg-red-500\/10:is(.dark *){background-color:#ef44441a}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-yellow-900\/30:is(.dark *){background-color:#713f124d}.dark\:from-blue-600\/20:is(.dark *){--tw-gradient-from: rgb(37 99 235 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-blue-900\/20:is(.dark *){--tw-gradient-from: rgb(30 58 138 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 58 138 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-gray-700:is(.dark *){--tw-gradient-from: #374151 var(--tw-gradient-from-position);--tw-gradient-to: rgb(55 65 81 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-gray-800:is(.dark *){--tw-gradient-from: #1f2937 var(--tw-gradient-from-position);--tw-gradient-to: rgb(31 41 55 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-green-900\/20:is(.dark *){--tw-gradient-from: rgb(20 83 45 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(20 83 45 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-indigo-900\/20:is(.dark *){--tw-gradient-from: rgb(49 46 129 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(49 46 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-purple-900\/20:is(.dark *){--tw-gradient-from: rgb(88 28 135 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(88 28 135 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-yellow-900\/20:is(.dark *){--tw-gradient-from: rgb(113 63 18 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(113 63 18 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:via-gray-600:is(.dark *){--tw-gradient-to: rgb(75 85 99 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #4b5563 var(--tw-gradient-via-position), var(--tw-gradient-to)}.dark\:to-blue-800\/20:is(.dark *){--tw-gradient-to: rgb(30 64 175 / .2) var(--tw-gradient-to-position)}.dark\:to-gray-700:is(.dark *){--tw-gradient-to: #374151 var(--tw-gradient-to-position)}.dark\:to-gray-800:is(.dark *){--tw-gradient-to: #1f2937 var(--tw-gradient-to-position)}.dark\:to-green-800\/20:is(.dark *){--tw-gradient-to: rgb(22 101 52 / .2) var(--tw-gradient-to-position)}.dark\:to-indigo-900\/20:is(.dark *){--tw-gradient-to: rgb(49 46 129 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-600\/20:is(.dark *){--tw-gradient-to: rgb(147 51 234 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-800\/20:is(.dark *){--tw-gradient-to: rgb(107 33 168 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-900\/20:is(.dark *){--tw-gradient-to: rgb(88 28 135 / .2) var(--tw-gradient-to-position)}.dark\:to-yellow-800\/20:is(.dark *){--tw-gradient-to: rgb(133 77 14 / .2) var(--tw-gradient-to-position)}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-200:is(.dark *){--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 186 116 / var(--tw-text-opacity, 1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-purple-400:is(.dark *){--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.dark\:text-red-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:placeholder-gray-400:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-400:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-500:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-500:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.dark\:after\:bg-gray-300:is(.dark *):after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.dark\:hover\:border-gray-500:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity, 1))}.dark\:hover\:border-indigo-500:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.dark\:hover\:bg-blue-900\/20:hover:is(.dark *){background-color:#1e3a8a33}.dark\:hover\:bg-blue-900\/30:hover:is(.dark *){background-color:#1e3a8a4d}.dark\:hover\:bg-blue-900\/50:hover:is(.dark *){background-color:#1e3a8a80}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700\/30:hover:is(.dark *){background-color:#3741514d}.dark\:hover\:bg-green-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-green-900\/50:hover:is(.dark *){background-color:#14532d80}.dark\:hover\:bg-orange-900\/50:hover:is(.dark *){background-color:#7c2d1280}.dark\:hover\:bg-purple-900\/50:hover:is(.dark *){background-color:#581c8780}.dark\:hover\:bg-red-900\/20:hover:is(.dark *){background-color:#7f1d1d33}.dark\:hover\:text-blue-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:hover\:text-blue-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:hover\:text-red-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:focus\:ring-indigo-400:focus:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(129 140 248 / var(--tw-ring-opacity, 1))}.peer:focus~.dark\:peer-focus\:ring-blue-600:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity, 1))}@media (min-width: 640px){.sm\:mb-10{margin-bottom:2.5rem}.sm\:mb-2{margin-bottom:.5rem}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:mb-8{margin-bottom:2rem}.sm\:ml-2{margin-left:.5rem}.sm\:ml-4{margin-left:1rem}.sm\:mr-2{margin-right:.5rem}.sm\:mr-3{margin-right:.75rem}.sm\:mt-2{margin-top:.5rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-20{height:5rem}.sm\:h-8{height:2rem}.sm\:h-9{height:2.25rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[350px\]{height:350px}.sm\:max-h-\[300px\]{max-height:300px}.sm\:w-10{width:2.5rem}.sm\:w-12{width:3rem}.sm\:w-20{width:5rem}.sm\:w-56{width:14rem}.sm\:w-64{width:16rem}.sm\:w-8{width:2rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-none{max-width:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:rounded-2xl{border-radius:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-2{padding:.5rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.sm\:py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.sm\:py-3{padding-top:.75rem;padding-bottom:.75rem}.sm\:py-4{padding-top:1rem;padding-bottom:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width: 768px){.md\:mb-3{margin-bottom:.75rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mr-2{margin-right:.5rem}.md\:mr-3{margin-right:.75rem}.md\:mt-3{margin-top:.75rem}.md\:mt-4{margin-top:1rem}.md\:mt-6{margin-top:1.5rem}.md\:block{display:block}.md\:inline{display:inline}.md\:hidden{display:none}.md\:w-auto{width:auto}.md\:flex-none{flex:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.md\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.md\:rounded-3xl{border-radius:1.5rem}.md\:p-10{padding:2.5rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:px-5{padding-left:1.25rem;padding-right:1.25rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-2{padding-top:.5rem;padding-bottom:.5rem}.md\:py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.md\:py-8{padding-top:2rem;padding-bottom:2rem}.md\:pb-6{padding-bottom:1.5rem}.md\:pt-4{padding-top:1rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:block{display:block}.lg\:w-auto{width:auto}.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\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-end{justify-content:flex-end}}@media (min-width: 1280px){.xl\:inline{display:inline}}:root{--primary-color: #667eea;--secondary-color: #764ba2;--accent-color: #f093fb;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(255, 255, 255, .95);--glass-color: rgba(255, 255, 255, .1);--glass-strong-color: rgba(255, 255, 255, .95);--text-primary: #1f2937;--text-secondary: #6b7280;--border-color: rgba(255, 255, 255, .2);--bg-gradient-start: #667eea;--bg-gradient-mid: #764ba2;--bg-gradient-end: #f093fb;--input-bg: rgba(255, 255, 255, .9);--input-border: rgba(255, 255, 255, .3);--modal-bg: rgba(0, 0, 0, .4);--table-bg: rgba(255, 255, 255, .95);--table-hover: rgba(102, 126, 234, .05)}.dark{--primary-color: #818cf8;--secondary-color: #a78bfa;--accent-color: #c084fc;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(31, 41, 55, .95);--glass-color: rgba(0, 0, 0, .2);--glass-strong-color: rgba(31, 41, 55, .95);--text-primary: #f3f4f6;--text-secondary: #9ca3af;--border-color: rgba(75, 85, 99, .3);--bg-gradient-start: #1f2937;--bg-gradient-mid: #374151;--bg-gradient-end: #4b5563;--input-bg: rgba(31, 41, 55, .9);--input-border: rgba(75, 85, 99, .5);--modal-bg: rgba(0, 0, 0, .6);--table-bg: rgba(31, 41, 55, .95);--table-hover: rgba(129, 140, 248, .1)}button,input,select,textarea{transition:background-color .3s ease,border-color .3s ease,box-shadow .3s ease,transform .2s ease}.transition-colors{transition:color .3s ease,background-color .3s ease,border-color .3s ease}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,var(--bg-gradient-start) 0%,var(--bg-gradient-mid) 50%,var(--bg-gradient-end) 100%);background-attachment:fixed;min-height:100vh;margin:0;overflow-x:hidden;color:var(--text-primary);transition:background .3s ease,color .3s ease}body:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 80%,rgba(240,147,251,.2) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(102,126,234,.2) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(118,75,162,.1) 0%,transparent 50%);pointer-events:none;z-index:-1}.glass{background:var(--glass-color);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-color);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,inset 0 1px #ffffff1a;transition:background-color .3s ease,border-color .3s ease}.dark .glass{box-shadow:0 20px 25px -5px #00000040,0 10px 10px -5px #0000001a,inset 0 1px #ffffff0d}.glass-strong{background:var(--glass-strong-color);backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px);border:1px solid var(--border-color);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d,inset 0 1px #ffffff1a;transition:background-color .3s ease,border-color .3s ease}.dark .glass-strong{box-shadow:0 25px 50px -12px #0006,0 0 0 1px #ffffff05,inset 0 1px #ffffff0d}.tab-btn{position:relative;overflow:hidden;border-radius:12px;font-weight:500;letter-spacing:.025em}.tab-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.tab-btn:hover:before{left:100%}.tab-btn.active{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);color:#fff;box-shadow:0 10px 15px -3px #667eea4d,0 4px 6px -2px #667eea0d;transform:translateY(-1px)}.card{background:var(--surface-color);border-radius:16px;border:1px solid var(--border-color);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative;transition:background-color .3s ease,border-color .3s ease}.dark .card{box-shadow:0 10px 15px -3px #00000040,0 4px 6px -2px #0000001a}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent)}.stat-card{background:linear-gradient(135deg,var(--surface-color) 0%,var(--glass-strong-color) 100%);border-radius:20px;border:1px solid var(--border-color);padding:24px;position:relative;overflow:hidden;transition:transform .3s ease,box-shadow .3s ease}.dark .stat-card{background:linear-gradient(135deg,#1f2937f2,#111827cc)}.stat-card:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 70%);opacity:0;transition:opacity .3s ease}.stat-card:hover{transform:translateY(-4px);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.stat-card:hover:before{opacity:1}.stat-icon{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.btn{font-weight:500;border-radius:12px;border:none;cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden;letter-spacing:.025em}.btn:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:#fff3;border-radius:50%;transform:translate(-50%,-50%);transition:width .3s ease,height .3s ease}.btn:active:before{width:300px;height:300px}.btn-primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);color:#fff;box-shadow:0 10px 15px -3px #667eea4d,0 4px 6px -2px #667eea0d}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #667eea4d,0 10px 10px -5px #667eea1a}.btn-success{background:linear-gradient(135deg,var(--success-color) 0%,#059669 100%);color:#fff;box-shadow:0 10px 15px -3px #10b9814d,0 4px 6px -2px #10b9810d}.btn-success:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #10b9814d,0 10px 10px -5px #10b9811a}.btn-danger{background:linear-gradient(135deg,var(--error-color) 0%,#dc2626 100%);color:#fff;box-shadow:0 10px 15px -3px #ef44444d,0 4px 6px -2px #ef44440d}.btn-danger:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #ef44444d,0 10px 10px -5px #ef44441a}.form-input{background:var(--input-bg);border:2px solid var(--input-border);border-radius:12px;padding:16px;font-size:16px;color:var(--text-primary);transition:background-color .3s ease,border-color .3s ease,box-shadow .3s ease;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.form-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #667eea1a,0 10px 15px -3px #0000001a;background:#fffffff2;color:#1f2937}.dark .form-input:focus{box-shadow:0 0 0 3px #818cf833,0 10px 15px -3px #0003;background:#111827f2;color:#f3f4f6}.table-container{background:var(--table-bg);border-radius:16px;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;transition:background-color .3s ease}.dark .table-container{box-shadow:0 10px 15px -3px #00000040,0 4px 6px -2px #0000001a}.table-row{transition:background-color .2s ease,transform .2s ease}.table-row:hover{background:var(--table-hover);transform:scale(1.005)}.modal{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:var(--modal-bg);transition:background-color .3s ease}.modal-content{background:#fff;border-radius:24px;border:1px solid rgba(229,231,235,.8);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:background-color .3s ease,border-color .3s ease}.dark .modal-content{background:#1f2937;border:1px solid rgba(75,85,99,.5);box-shadow:0 25px 50px -12px #0009,0 0 0 1px #ffffff05}.header-title{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;letter-spacing:-.025em}.loading-spinner{display:inline-block;width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top:2px solid white;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fade-enter-active,.fade-leave-active{transition:opacity .3s ease}.fade-enter-from,.fade-leave-to{opacity:0}.slide-up-enter-active,.slide-up-leave-active{transition:all .3s ease}.slide-up-enter-from{opacity:0;transform:translateY(30px)}.slide-up-leave-to{opacity:0;transform:translateY(-30px)}.toast{position:fixed;top:80px;right:20px;z-index:1000;min-width:320px;max-width:500px;transform:translate(100%);transition:transform .3s ease-in-out}.toast.show{transform:translate(0)}.toast-success{background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:1px solid rgba(16,185,129,.3)}.toast-error{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border:1px solid rgba(239,68,68,.3)}.toast-info{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:1px solid rgba(59,130,246,.3)}.toast-warning{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;border:1px solid rgba(245,158,11,.3)}[v-cloak]{display:none}.custom-scrollbar{scrollbar-width:thin;scrollbar-color:rgba(102,126,234,.3) rgba(102,126,234,.05)}.dark .custom-scrollbar{scrollbar-color:rgba(129,140,248,.3) rgba(129,140,248,.05)}.custom-scrollbar::-webkit-scrollbar{width:8px;height:8px}.custom-scrollbar::-webkit-scrollbar-track{background:#667eea0d;border-radius:10px}.dark .custom-scrollbar::-webkit-scrollbar-track{background:#818cf80d}.custom-scrollbar::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#667eea66,#764ba266);border-radius:10px;-webkit-transition:background .3s ease;transition:background .3s ease}.dark .custom-scrollbar::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#818cf866,#a78bfa66)}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#667eea99,#764ba299)}.dark .custom-scrollbar::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#818cf899,#a78bfa99)}.custom-scrollbar::-webkit-scrollbar-thumb:active{background:linear-gradient(135deg,#667eeacc,#764ba2cc)}.dark .custom-scrollbar::-webkit-scrollbar-thumb:active{background:linear-gradient(135deg,#818cf8cc,#a78bfacc)}.modal-scroll-content{max-height:calc(90vh - 160px);overflow-y:auto;padding-right:8px}@media (max-width: 768px){.glass,.glass-strong{margin:16px;border-radius:20px}.stat-card{padding:16px}.tab-btn{font-size:14px;padding:12px 8px}.modal-scroll-content{max-height:calc(85vh - 120px)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}to{transform:scale(1);opacity:1}}.animate-pulse{animation:pulse 2s infinite}.user-menu-dropdown{min-width:240px;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.tab-content{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}} + */.fa{font-family:var(--fa-style-family, "Font Awesome 6 Free");font-weight:var(--fa-style, 900)}.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display, inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fas:before,.far:before,.fab:before,.fa-solid:before,.fa-regular:before,.fa-brands:before,.fa:before{content:var(--fa)}.fa-classic,.fas,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin, 2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(-1 * var(--fa-li-width, 2em));position:absolute;text-align:center;width:var(--fa-li-width, 2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color, #eee);border-radius:var(--fa-border-radius, .1em);border-style:var(--fa-border-style, solid);border-width:var(--fa-border-width, .08em);padding:var(--fa-border-padding, .2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin, .3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin, .3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.28, .84, .42, 1))}.fa-fade{animation-name:fa-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-beat-fade{animation-name:fa-beat-fade;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, cubic-bezier(.4, 0, .6, 1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, ease-in-out)}.fa-shake{animation-name:fa-shake;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin{animation-name:fa-spin;animation-delay:var(--fa-animation-delay, 0s);animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 2s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, linear)}.fa-spin-reverse{--fa-animation-direction: reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction, normal);animation-duration:var(--fa-animation-duration, 1s);animation-iteration-count:var(--fa-animation-iteration-count, infinite);animation-timing-function:var(--fa-animation-timing, steps(8))}@media (prefers-reduced-motion: reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale, 1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x, 1.1),var(--fa-bounce-start-scale-y, .9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x, .9),var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x, 1.05),var(--fa-bounce-land-scale-y, .95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound, -.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity, .4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity, .4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale, 1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x, 0),var(--fa-flip-y, 1),var(--fa-flip-z, 0),var(--fa-flip-angle, -180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0)}}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle, 0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index, auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse, #fff)}.fa-0{--fa: "0"}.fa-1{--fa: "1"}.fa-2{--fa: "2"}.fa-3{--fa: "3"}.fa-4{--fa: "4"}.fa-5{--fa: "5"}.fa-6{--fa: "6"}.fa-7{--fa: "7"}.fa-8{--fa: "8"}.fa-9{--fa: "9"}.fa-fill-drip{--fa: ""}.fa-arrows-to-circle{--fa: ""}.fa-circle-chevron-right,.fa-chevron-circle-right{--fa: ""}.fa-at{--fa: "@"}.fa-trash-can,.fa-trash-alt{--fa: ""}.fa-text-height{--fa: ""}.fa-user-xmark,.fa-user-times{--fa: ""}.fa-stethoscope{--fa: ""}.fa-message,.fa-comment-alt{--fa: ""}.fa-info{--fa: ""}.fa-down-left-and-up-right-to-center,.fa-compress-alt{--fa: ""}.fa-explosion{--fa: ""}.fa-file-lines,.fa-file-alt,.fa-file-text{--fa: ""}.fa-wave-square{--fa: ""}.fa-ring{--fa: ""}.fa-building-un{--fa: ""}.fa-dice-three{--fa: ""}.fa-calendar-days,.fa-calendar-alt{--fa: ""}.fa-anchor-circle-check{--fa: ""}.fa-building-circle-arrow-right{--fa: ""}.fa-volleyball,.fa-volleyball-ball{--fa: ""}.fa-arrows-up-to-line{--fa: ""}.fa-sort-down,.fa-sort-desc{--fa: ""}.fa-circle-minus,.fa-minus-circle{--fa: ""}.fa-door-open{--fa: ""}.fa-right-from-bracket,.fa-sign-out-alt{--fa: ""}.fa-atom{--fa: ""}.fa-soap{--fa: ""}.fa-icons,.fa-heart-music-camera-bolt{--fa: ""}.fa-microphone-lines-slash,.fa-microphone-alt-slash{--fa: ""}.fa-bridge-circle-check{--fa: ""}.fa-pump-medical{--fa: ""}.fa-fingerprint{--fa: ""}.fa-hand-point-right{--fa: ""}.fa-magnifying-glass-location,.fa-search-location{--fa: ""}.fa-forward-step,.fa-step-forward{--fa: ""}.fa-face-smile-beam,.fa-smile-beam{--fa: ""}.fa-flag-checkered{--fa: ""}.fa-football,.fa-football-ball{--fa: ""}.fa-school-circle-exclamation{--fa: ""}.fa-crop{--fa: ""}.fa-angles-down,.fa-angle-double-down{--fa: ""}.fa-users-rectangle{--fa: ""}.fa-people-roof{--fa: ""}.fa-people-line{--fa: ""}.fa-beer-mug-empty,.fa-beer{--fa: ""}.fa-diagram-predecessor{--fa: ""}.fa-arrow-up-long,.fa-long-arrow-up{--fa: ""}.fa-fire-flame-simple,.fa-burn{--fa: ""}.fa-person,.fa-male{--fa: ""}.fa-laptop{--fa: ""}.fa-file-csv{--fa: ""}.fa-menorah{--fa: ""}.fa-truck-plane{--fa: ""}.fa-record-vinyl{--fa: ""}.fa-face-grin-stars,.fa-grin-stars{--fa: ""}.fa-bong{--fa: ""}.fa-spaghetti-monster-flying,.fa-pastafarianism{--fa: ""}.fa-arrow-down-up-across-line{--fa: ""}.fa-spoon,.fa-utensil-spoon{--fa: ""}.fa-jar-wheat{--fa: ""}.fa-envelopes-bulk,.fa-mail-bulk{--fa: ""}.fa-file-circle-exclamation{--fa: ""}.fa-circle-h,.fa-hospital-symbol{--fa: ""}.fa-pager{--fa: ""}.fa-address-book,.fa-contact-book{--fa: ""}.fa-strikethrough{--fa: ""}.fa-k{--fa: "K"}.fa-landmark-flag{--fa: ""}.fa-pencil,.fa-pencil-alt{--fa: ""}.fa-backward{--fa: ""}.fa-caret-right{--fa: ""}.fa-comments{--fa: ""}.fa-paste,.fa-file-clipboard{--fa: ""}.fa-code-pull-request{--fa: ""}.fa-clipboard-list{--fa: ""}.fa-truck-ramp-box,.fa-truck-loading{--fa: ""}.fa-user-check{--fa: ""}.fa-vial-virus{--fa: ""}.fa-sheet-plastic{--fa: ""}.fa-blog{--fa: ""}.fa-user-ninja{--fa: ""}.fa-person-arrow-up-from-line{--fa: ""}.fa-scroll-torah,.fa-torah{--fa: ""}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa: ""}.fa-toggle-off{--fa: ""}.fa-box-archive,.fa-archive{--fa: ""}.fa-person-drowning{--fa: ""}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa: ""}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa: ""}.fa-spray-can{--fa: ""}.fa-truck-monster{--fa: ""}.fa-w{--fa: "W"}.fa-earth-africa,.fa-globe-africa{--fa: ""}.fa-rainbow{--fa: ""}.fa-circle-notch{--fa: ""}.fa-tablet-screen-button,.fa-tablet-alt{--fa: ""}.fa-paw{--fa: ""}.fa-cloud{--fa: ""}.fa-trowel-bricks{--fa: ""}.fa-face-flushed,.fa-flushed{--fa: ""}.fa-hospital-user{--fa: ""}.fa-tent-arrow-left-right{--fa: ""}.fa-gavel,.fa-legal{--fa: ""}.fa-binoculars{--fa: ""}.fa-microphone-slash{--fa: ""}.fa-box-tissue{--fa: ""}.fa-motorcycle{--fa: ""}.fa-bell-concierge,.fa-concierge-bell{--fa: ""}.fa-pen-ruler,.fa-pencil-ruler{--fa: ""}.fa-people-arrows,.fa-people-arrows-left-right{--fa: ""}.fa-mars-and-venus-burst{--fa: ""}.fa-square-caret-right,.fa-caret-square-right{--fa: ""}.fa-scissors,.fa-cut{--fa: ""}.fa-sun-plant-wilt{--fa: ""}.fa-toilets-portable{--fa: ""}.fa-hockey-puck{--fa: ""}.fa-table{--fa: ""}.fa-magnifying-glass-arrow-right{--fa: ""}.fa-tachograph-digital,.fa-digital-tachograph{--fa: ""}.fa-users-slash{--fa: ""}.fa-clover{--fa: ""}.fa-reply,.fa-mail-reply{--fa: ""}.fa-star-and-crescent{--fa: ""}.fa-house-fire{--fa: ""}.fa-square-minus,.fa-minus-square{--fa: ""}.fa-helicopter{--fa: ""}.fa-compass{--fa: ""}.fa-square-caret-down,.fa-caret-square-down{--fa: ""}.fa-file-circle-question{--fa: ""}.fa-laptop-code{--fa: ""}.fa-swatchbook{--fa: ""}.fa-prescription-bottle{--fa: ""}.fa-bars,.fa-navicon{--fa: ""}.fa-people-group{--fa: ""}.fa-hourglass-end,.fa-hourglass-3{--fa: ""}.fa-heart-crack,.fa-heart-broken{--fa: ""}.fa-square-up-right,.fa-external-link-square-alt{--fa: ""}.fa-face-kiss-beam,.fa-kiss-beam{--fa: ""}.fa-film{--fa: ""}.fa-ruler-horizontal{--fa: ""}.fa-people-robbery{--fa: ""}.fa-lightbulb{--fa: ""}.fa-caret-left{--fa: ""}.fa-circle-exclamation,.fa-exclamation-circle{--fa: ""}.fa-school-circle-xmark{--fa: ""}.fa-arrow-right-from-bracket,.fa-sign-out{--fa: ""}.fa-circle-chevron-down,.fa-chevron-circle-down{--fa: ""}.fa-unlock-keyhole,.fa-unlock-alt{--fa: ""}.fa-cloud-showers-heavy{--fa: ""}.fa-headphones-simple,.fa-headphones-alt{--fa: ""}.fa-sitemap{--fa: ""}.fa-circle-dollar-to-slot,.fa-donate{--fa: ""}.fa-memory{--fa: ""}.fa-road-spikes{--fa: ""}.fa-fire-burner{--fa: ""}.fa-flag{--fa: ""}.fa-hanukiah{--fa: ""}.fa-feather{--fa: ""}.fa-volume-low,.fa-volume-down{--fa: ""}.fa-comment-slash{--fa: ""}.fa-cloud-sun-rain{--fa: ""}.fa-compress{--fa: ""}.fa-wheat-awn,.fa-wheat-alt{--fa: ""}.fa-ankh{--fa: ""}.fa-hands-holding-child{--fa: ""}.fa-asterisk{--fa: "*"}.fa-square-check,.fa-check-square{--fa: ""}.fa-peseta-sign{--fa: ""}.fa-heading,.fa-header{--fa: ""}.fa-ghost{--fa: ""}.fa-list,.fa-list-squares{--fa: ""}.fa-square-phone-flip,.fa-phone-square-alt{--fa: ""}.fa-cart-plus{--fa: ""}.fa-gamepad{--fa: ""}.fa-circle-dot,.fa-dot-circle{--fa: ""}.fa-face-dizzy,.fa-dizzy{--fa: ""}.fa-egg{--fa: ""}.fa-house-medical-circle-xmark{--fa: ""}.fa-campground{--fa: ""}.fa-folder-plus{--fa: ""}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa: ""}.fa-paintbrush,.fa-paint-brush{--fa: ""}.fa-lock{--fa: ""}.fa-gas-pump{--fa: ""}.fa-hot-tub-person,.fa-hot-tub{--fa: ""}.fa-map-location,.fa-map-marked{--fa: ""}.fa-house-flood-water{--fa: ""}.fa-tree{--fa: ""}.fa-bridge-lock{--fa: ""}.fa-sack-dollar{--fa: ""}.fa-pen-to-square,.fa-edit{--fa: ""}.fa-car-side{--fa: ""}.fa-share-nodes,.fa-share-alt{--fa: ""}.fa-heart-circle-minus{--fa: ""}.fa-hourglass-half,.fa-hourglass-2{--fa: ""}.fa-microscope{--fa: ""}.fa-sink{--fa: ""}.fa-bag-shopping,.fa-shopping-bag{--fa: ""}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa: ""}.fa-mitten{--fa: ""}.fa-person-rays{--fa: ""}.fa-users{--fa: ""}.fa-eye-slash{--fa: ""}.fa-flask-vial{--fa: ""}.fa-hand,.fa-hand-paper{--fa: ""}.fa-om{--fa: ""}.fa-worm{--fa: ""}.fa-house-circle-xmark{--fa: ""}.fa-plug{--fa: ""}.fa-chevron-up{--fa: ""}.fa-hand-spock{--fa: ""}.fa-stopwatch{--fa: ""}.fa-face-kiss,.fa-kiss{--fa: ""}.fa-bridge-circle-xmark{--fa: ""}.fa-face-grin-tongue,.fa-grin-tongue{--fa: ""}.fa-chess-bishop{--fa: ""}.fa-face-grin-wink,.fa-grin-wink{--fa: ""}.fa-ear-deaf,.fa-deaf,.fa-deafness,.fa-hard-of-hearing{--fa: ""}.fa-road-circle-check{--fa: ""}.fa-dice-five{--fa: ""}.fa-square-rss,.fa-rss-square{--fa: ""}.fa-land-mine-on{--fa: ""}.fa-i-cursor{--fa: ""}.fa-stamp{--fa: ""}.fa-stairs{--fa: ""}.fa-i{--fa: "I"}.fa-hryvnia-sign,.fa-hryvnia{--fa: ""}.fa-pills{--fa: ""}.fa-face-grin-wide,.fa-grin-alt{--fa: ""}.fa-tooth{--fa: ""}.fa-v{--fa: "V"}.fa-bangladeshi-taka-sign{--fa: ""}.fa-bicycle{--fa: ""}.fa-staff-snake,.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius{--fa: ""}.fa-head-side-cough-slash{--fa: ""}.fa-truck-medical,.fa-ambulance{--fa: ""}.fa-wheat-awn-circle-exclamation{--fa: ""}.fa-snowman{--fa: ""}.fa-mortar-pestle{--fa: ""}.fa-road-barrier{--fa: ""}.fa-school{--fa: ""}.fa-igloo{--fa: ""}.fa-joint{--fa: ""}.fa-angle-right{--fa: ""}.fa-horse{--fa: ""}.fa-q{--fa: "Q"}.fa-g{--fa: "G"}.fa-notes-medical{--fa: ""}.fa-temperature-half,.fa-temperature-2,.fa-thermometer-2,.fa-thermometer-half{--fa: ""}.fa-dong-sign{--fa: ""}.fa-capsules{--fa: ""}.fa-poo-storm,.fa-poo-bolt{--fa: ""}.fa-face-frown-open,.fa-frown-open{--fa: ""}.fa-hand-point-up{--fa: ""}.fa-money-bill{--fa: ""}.fa-bookmark{--fa: ""}.fa-align-justify{--fa: ""}.fa-umbrella-beach{--fa: ""}.fa-helmet-un{--fa: ""}.fa-bullseye{--fa: ""}.fa-bacon{--fa: ""}.fa-hand-point-down{--fa: ""}.fa-arrow-up-from-bracket{--fa: ""}.fa-folder,.fa-folder-blank{--fa: ""}.fa-file-waveform,.fa-file-medical-alt{--fa: ""}.fa-radiation{--fa: ""}.fa-chart-simple{--fa: ""}.fa-mars-stroke{--fa: ""}.fa-vial{--fa: ""}.fa-gauge,.fa-dashboard,.fa-gauge-med,.fa-tachometer-alt-average{--fa: ""}.fa-wand-magic-sparkles,.fa-magic-wand-sparkles{--fa: ""}.fa-e{--fa: "E"}.fa-pen-clip,.fa-pen-alt{--fa: ""}.fa-bridge-circle-exclamation{--fa: ""}.fa-user{--fa: ""}.fa-school-circle-check{--fa: ""}.fa-dumpster{--fa: ""}.fa-van-shuttle,.fa-shuttle-van{--fa: ""}.fa-building-user{--fa: ""}.fa-square-caret-left,.fa-caret-square-left{--fa: ""}.fa-highlighter{--fa: ""}.fa-key{--fa: ""}.fa-bullhorn{--fa: ""}.fa-globe{--fa: ""}.fa-synagogue{--fa: ""}.fa-person-half-dress{--fa: ""}.fa-road-bridge{--fa: ""}.fa-location-arrow{--fa: ""}.fa-c{--fa: "C"}.fa-tablet-button{--fa: ""}.fa-building-lock{--fa: ""}.fa-pizza-slice{--fa: ""}.fa-money-bill-wave{--fa: ""}.fa-chart-area,.fa-area-chart{--fa: ""}.fa-house-flag{--fa: ""}.fa-person-circle-minus{--fa: ""}.fa-ban,.fa-cancel{--fa: ""}.fa-camera-rotate{--fa: ""}.fa-spray-can-sparkles,.fa-air-freshener{--fa: ""}.fa-star{--fa: ""}.fa-repeat{--fa: ""}.fa-cross{--fa: ""}.fa-box{--fa: ""}.fa-venus-mars{--fa: ""}.fa-arrow-pointer,.fa-mouse-pointer{--fa: ""}.fa-maximize,.fa-expand-arrows-alt{--fa: ""}.fa-charging-station{--fa: ""}.fa-shapes,.fa-triangle-circle-square{--fa: ""}.fa-shuffle,.fa-random{--fa: ""}.fa-person-running,.fa-running{--fa: ""}.fa-mobile-retro{--fa: ""}.fa-grip-lines-vertical{--fa: ""}.fa-spider{--fa: ""}.fa-hands-bound{--fa: ""}.fa-file-invoice-dollar{--fa: ""}.fa-plane-circle-exclamation{--fa: ""}.fa-x-ray{--fa: ""}.fa-spell-check{--fa: ""}.fa-slash{--fa: ""}.fa-computer-mouse,.fa-mouse{--fa: ""}.fa-arrow-right-to-bracket,.fa-sign-in{--fa: ""}.fa-shop-slash,.fa-store-alt-slash{--fa: ""}.fa-server{--fa: ""}.fa-virus-covid-slash{--fa: ""}.fa-shop-lock{--fa: ""}.fa-hourglass-start,.fa-hourglass-1{--fa: ""}.fa-blender-phone{--fa: ""}.fa-building-wheat{--fa: ""}.fa-person-breastfeeding{--fa: ""}.fa-right-to-bracket,.fa-sign-in-alt{--fa: ""}.fa-venus{--fa: ""}.fa-passport{--fa: ""}.fa-thumbtack-slash,.fa-thumb-tack-slash{--fa: ""}.fa-heart-pulse,.fa-heartbeat{--fa: ""}.fa-people-carry-box,.fa-people-carry{--fa: ""}.fa-temperature-high{--fa: ""}.fa-microchip{--fa: ""}.fa-crown{--fa: ""}.fa-weight-hanging{--fa: ""}.fa-xmarks-lines{--fa: ""}.fa-file-prescription{--fa: ""}.fa-weight-scale,.fa-weight{--fa: ""}.fa-user-group,.fa-user-friends{--fa: ""}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa: ""}.fa-chess-knight{--fa: ""}.fa-face-laugh-squint,.fa-laugh-squint{--fa: ""}.fa-wheelchair{--fa: ""}.fa-circle-arrow-up,.fa-arrow-circle-up{--fa: ""}.fa-toggle-on{--fa: ""}.fa-person-walking,.fa-walking{--fa: ""}.fa-l{--fa: "L"}.fa-fire{--fa: ""}.fa-bed-pulse,.fa-procedures{--fa: ""}.fa-shuttle-space,.fa-space-shuttle{--fa: ""}.fa-face-laugh,.fa-laugh{--fa: ""}.fa-folder-open{--fa: ""}.fa-heart-circle-plus{--fa: ""}.fa-code-fork{--fa: ""}.fa-city{--fa: ""}.fa-microphone-lines,.fa-microphone-alt{--fa: ""}.fa-pepper-hot{--fa: ""}.fa-unlock{--fa: ""}.fa-colon-sign{--fa: ""}.fa-headset{--fa: ""}.fa-store-slash{--fa: ""}.fa-road-circle-xmark{--fa: ""}.fa-user-minus{--fa: ""}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa: ""}.fa-champagne-glasses,.fa-glass-cheers{--fa: ""}.fa-clipboard{--fa: ""}.fa-house-circle-exclamation{--fa: ""}.fa-file-arrow-up,.fa-file-upload{--fa: ""}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa: ""}.fa-bath,.fa-bathtub{--fa: ""}.fa-underline{--fa: ""}.fa-user-pen,.fa-user-edit{--fa: ""}.fa-signature{--fa: ""}.fa-stroopwafel{--fa: ""}.fa-bold{--fa: ""}.fa-anchor-lock{--fa: ""}.fa-building-ngo{--fa: ""}.fa-manat-sign{--fa: ""}.fa-not-equal{--fa: ""}.fa-border-top-left,.fa-border-style{--fa: ""}.fa-map-location-dot,.fa-map-marked-alt{--fa: ""}.fa-jedi{--fa: ""}.fa-square-poll-vertical,.fa-poll{--fa: ""}.fa-mug-hot{--fa: ""}.fa-car-battery,.fa-battery-car{--fa: ""}.fa-gift{--fa: ""}.fa-dice-two{--fa: ""}.fa-chess-queen{--fa: ""}.fa-glasses{--fa: ""}.fa-chess-board{--fa: ""}.fa-building-circle-check{--fa: ""}.fa-person-chalkboard{--fa: ""}.fa-mars-stroke-right,.fa-mars-stroke-h{--fa: ""}.fa-hand-back-fist,.fa-hand-rock{--fa: ""}.fa-square-caret-up,.fa-caret-square-up{--fa: ""}.fa-cloud-showers-water{--fa: ""}.fa-chart-bar,.fa-bar-chart{--fa: ""}.fa-hands-bubbles,.fa-hands-wash{--fa: ""}.fa-less-than-equal{--fa: ""}.fa-train{--fa: ""}.fa-eye-low-vision,.fa-low-vision{--fa: ""}.fa-crow{--fa: ""}.fa-sailboat{--fa: ""}.fa-window-restore{--fa: ""}.fa-square-plus,.fa-plus-square{--fa: ""}.fa-torii-gate{--fa: ""}.fa-frog{--fa: ""}.fa-bucket{--fa: ""}.fa-image{--fa: ""}.fa-microphone{--fa: ""}.fa-cow{--fa: ""}.fa-caret-up{--fa: ""}.fa-screwdriver{--fa: ""}.fa-folder-closed{--fa: ""}.fa-house-tsunami{--fa: ""}.fa-square-nfi{--fa: ""}.fa-arrow-up-from-ground-water{--fa: ""}.fa-martini-glass,.fa-glass-martini-alt{--fa: ""}.fa-square-binary{--fa: ""}.fa-rotate-left,.fa-rotate-back,.fa-rotate-backward,.fa-undo-alt{--fa: ""}.fa-table-columns,.fa-columns{--fa: ""}.fa-lemon{--fa: ""}.fa-head-side-mask{--fa: ""}.fa-handshake{--fa: ""}.fa-gem{--fa: ""}.fa-dolly,.fa-dolly-box{--fa: ""}.fa-smoking{--fa: ""}.fa-minimize,.fa-compress-arrows-alt{--fa: ""}.fa-monument{--fa: ""}.fa-snowplow{--fa: ""}.fa-angles-right,.fa-angle-double-right{--fa: ""}.fa-cannabis{--fa: ""}.fa-circle-play,.fa-play-circle{--fa: ""}.fa-tablets{--fa: ""}.fa-ethernet{--fa: ""}.fa-euro-sign,.fa-eur,.fa-euro{--fa: ""}.fa-chair{--fa: ""}.fa-circle-check,.fa-check-circle{--fa: ""}.fa-circle-stop,.fa-stop-circle{--fa: ""}.fa-compass-drafting,.fa-drafting-compass{--fa: ""}.fa-plate-wheat{--fa: ""}.fa-icicles{--fa: ""}.fa-person-shelter{--fa: ""}.fa-neuter{--fa: ""}.fa-id-badge{--fa: ""}.fa-marker{--fa: ""}.fa-face-laugh-beam,.fa-laugh-beam{--fa: ""}.fa-helicopter-symbol{--fa: ""}.fa-universal-access{--fa: ""}.fa-circle-chevron-up,.fa-chevron-circle-up{--fa: ""}.fa-lari-sign{--fa: ""}.fa-volcano{--fa: ""}.fa-person-walking-dashed-line-arrow-right{--fa: ""}.fa-sterling-sign,.fa-gbp,.fa-pound-sign{--fa: ""}.fa-viruses{--fa: ""}.fa-square-person-confined{--fa: ""}.fa-user-tie{--fa: ""}.fa-arrow-down-long,.fa-long-arrow-down{--fa: ""}.fa-tent-arrow-down-to-line{--fa: ""}.fa-certificate{--fa: ""}.fa-reply-all,.fa-mail-reply-all{--fa: ""}.fa-suitcase{--fa: ""}.fa-person-skating,.fa-skating{--fa: ""}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa: ""}.fa-camera-retro{--fa: ""}.fa-circle-arrow-down,.fa-arrow-circle-down{--fa: ""}.fa-file-import,.fa-arrow-right-to-file{--fa: ""}.fa-square-arrow-up-right,.fa-external-link-square{--fa: ""}.fa-box-open{--fa: ""}.fa-scroll{--fa: ""}.fa-spa{--fa: ""}.fa-location-pin-lock{--fa: ""}.fa-pause{--fa: ""}.fa-hill-avalanche{--fa: ""}.fa-temperature-empty,.fa-temperature-0,.fa-thermometer-0,.fa-thermometer-empty{--fa: ""}.fa-bomb{--fa: ""}.fa-registered{--fa: ""}.fa-address-card,.fa-contact-card,.fa-vcard{--fa: ""}.fa-scale-unbalanced-flip,.fa-balance-scale-right{--fa: ""}.fa-subscript{--fa: ""}.fa-diamond-turn-right,.fa-directions{--fa: ""}.fa-burst{--fa: ""}.fa-house-laptop,.fa-laptop-house{--fa: ""}.fa-face-tired,.fa-tired{--fa: ""}.fa-money-bills{--fa: ""}.fa-smog{--fa: ""}.fa-crutch{--fa: ""}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa: ""}.fa-palette{--fa: ""}.fa-arrows-turn-right{--fa: ""}.fa-vest{--fa: ""}.fa-ferry{--fa: ""}.fa-arrows-down-to-people{--fa: ""}.fa-seedling,.fa-sprout{--fa: ""}.fa-left-right,.fa-arrows-alt-h{--fa: ""}.fa-boxes-packing{--fa: ""}.fa-circle-arrow-left,.fa-arrow-circle-left{--fa: ""}.fa-group-arrows-rotate{--fa: ""}.fa-bowl-food{--fa: ""}.fa-candy-cane{--fa: ""}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa: ""}.fa-cloud-bolt,.fa-thunderstorm{--fa: ""}.fa-text-slash,.fa-remove-format{--fa: ""}.fa-face-smile-wink,.fa-smile-wink{--fa: ""}.fa-file-word{--fa: ""}.fa-file-powerpoint{--fa: ""}.fa-arrows-left-right,.fa-arrows-h{--fa: ""}.fa-house-lock{--fa: ""}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa: ""}.fa-children{--fa: ""}.fa-chalkboard,.fa-blackboard{--fa: ""}.fa-user-large-slash,.fa-user-alt-slash{--fa: ""}.fa-envelope-open{--fa: ""}.fa-handshake-simple-slash,.fa-handshake-alt-slash{--fa: ""}.fa-mattress-pillow{--fa: ""}.fa-guarani-sign{--fa: ""}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa: ""}.fa-fire-extinguisher{--fa: ""}.fa-cruzeiro-sign{--fa: ""}.fa-greater-than-equal{--fa: ""}.fa-shield-halved,.fa-shield-alt{--fa: ""}.fa-book-atlas,.fa-atlas{--fa: ""}.fa-virus{--fa: ""}.fa-envelope-circle-check{--fa: ""}.fa-layer-group{--fa: ""}.fa-arrows-to-dot{--fa: ""}.fa-archway{--fa: ""}.fa-heart-circle-check{--fa: ""}.fa-house-chimney-crack,.fa-house-damage{--fa: ""}.fa-file-zipper,.fa-file-archive{--fa: ""}.fa-square{--fa: ""}.fa-martini-glass-empty,.fa-glass-martini{--fa: ""}.fa-couch{--fa: ""}.fa-cedi-sign{--fa: ""}.fa-italic{--fa: ""}.fa-table-cells-column-lock{--fa: ""}.fa-church{--fa: ""}.fa-comments-dollar{--fa: ""}.fa-democrat{--fa: ""}.fa-z{--fa: "Z"}.fa-person-skiing,.fa-skiing{--fa: ""}.fa-road-lock{--fa: ""}.fa-a{--fa: "A"}.fa-temperature-arrow-down,.fa-temperature-down{--fa: ""}.fa-feather-pointed,.fa-feather-alt{--fa: ""}.fa-p{--fa: "P"}.fa-snowflake{--fa: ""}.fa-newspaper{--fa: ""}.fa-rectangle-ad,.fa-ad{--fa: ""}.fa-circle-arrow-right,.fa-arrow-circle-right{--fa: ""}.fa-filter-circle-xmark{--fa: ""}.fa-locust{--fa: ""}.fa-sort,.fa-unsorted{--fa: ""}.fa-list-ol,.fa-list-1-2,.fa-list-numeric{--fa: ""}.fa-person-dress-burst{--fa: ""}.fa-money-check-dollar,.fa-money-check-alt{--fa: ""}.fa-vector-square{--fa: ""}.fa-bread-slice{--fa: ""}.fa-language{--fa: ""}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa: ""}.fa-filter{--fa: ""}.fa-question{--fa: "?"}.fa-file-signature{--fa: ""}.fa-up-down-left-right,.fa-arrows-alt{--fa: ""}.fa-house-chimney-user{--fa: ""}.fa-hand-holding-heart{--fa: ""}.fa-puzzle-piece{--fa: ""}.fa-money-check{--fa: ""}.fa-star-half-stroke,.fa-star-half-alt{--fa: ""}.fa-code{--fa: ""}.fa-whiskey-glass,.fa-glass-whiskey{--fa: ""}.fa-building-circle-exclamation{--fa: ""}.fa-magnifying-glass-chart{--fa: ""}.fa-arrow-up-right-from-square,.fa-external-link{--fa: ""}.fa-cubes-stacked{--fa: ""}.fa-won-sign,.fa-krw,.fa-won{--fa: ""}.fa-virus-covid{--fa: ""}.fa-austral-sign{--fa: ""}.fa-f{--fa: "F"}.fa-leaf{--fa: ""}.fa-road{--fa: ""}.fa-taxi,.fa-cab{--fa: ""}.fa-person-circle-plus{--fa: ""}.fa-chart-pie,.fa-pie-chart{--fa: ""}.fa-bolt-lightning{--fa: ""}.fa-sack-xmark{--fa: ""}.fa-file-excel{--fa: ""}.fa-file-contract{--fa: ""}.fa-fish-fins{--fa: ""}.fa-building-flag{--fa: ""}.fa-face-grin-beam,.fa-grin-beam{--fa: ""}.fa-object-ungroup{--fa: ""}.fa-poop{--fa: ""}.fa-location-pin,.fa-map-marker{--fa: ""}.fa-kaaba{--fa: ""}.fa-toilet-paper{--fa: ""}.fa-helmet-safety,.fa-hard-hat,.fa-hat-hard{--fa: ""}.fa-eject{--fa: ""}.fa-circle-right,.fa-arrow-alt-circle-right{--fa: ""}.fa-plane-circle-check{--fa: ""}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa: ""}.fa-object-group{--fa: ""}.fa-chart-line,.fa-line-chart{--fa: ""}.fa-mask-ventilator{--fa: ""}.fa-arrow-right{--fa: ""}.fa-signs-post,.fa-map-signs{--fa: ""}.fa-cash-register{--fa: ""}.fa-person-circle-question{--fa: ""}.fa-h{--fa: "H"}.fa-tarp{--fa: ""}.fa-screwdriver-wrench,.fa-tools{--fa: ""}.fa-arrows-to-eye{--fa: ""}.fa-plug-circle-bolt{--fa: ""}.fa-heart{--fa: ""}.fa-mars-and-venus{--fa: ""}.fa-house-user,.fa-home-user{--fa: ""}.fa-dumpster-fire{--fa: ""}.fa-house-crack{--fa: ""}.fa-martini-glass-citrus,.fa-cocktail{--fa: ""}.fa-face-surprise,.fa-surprise{--fa: ""}.fa-bottle-water{--fa: ""}.fa-circle-pause,.fa-pause-circle{--fa: ""}.fa-toilet-paper-slash{--fa: ""}.fa-apple-whole,.fa-apple-alt{--fa: ""}.fa-kitchen-set{--fa: ""}.fa-r{--fa: "R"}.fa-temperature-quarter,.fa-temperature-1,.fa-thermometer-1,.fa-thermometer-quarter{--fa: ""}.fa-cube{--fa: ""}.fa-bitcoin-sign{--fa: ""}.fa-shield-dog{--fa: ""}.fa-solar-panel{--fa: ""}.fa-lock-open{--fa: ""}.fa-elevator{--fa: ""}.fa-money-bill-transfer{--fa: ""}.fa-money-bill-trend-up{--fa: ""}.fa-house-flood-water-circle-arrow-right{--fa: ""}.fa-square-poll-horizontal,.fa-poll-h{--fa: ""}.fa-circle{--fa: ""}.fa-backward-fast,.fa-fast-backward{--fa: ""}.fa-recycle{--fa: ""}.fa-user-astronaut{--fa: ""}.fa-plane-slash{--fa: ""}.fa-trademark{--fa: ""}.fa-basketball,.fa-basketball-ball{--fa: ""}.fa-satellite-dish{--fa: ""}.fa-circle-up,.fa-arrow-alt-circle-up{--fa: ""}.fa-mobile-screen-button,.fa-mobile-alt{--fa: ""}.fa-volume-high,.fa-volume-up{--fa: ""}.fa-users-rays{--fa: ""}.fa-wallet{--fa: ""}.fa-clipboard-check{--fa: ""}.fa-file-audio{--fa: ""}.fa-burger,.fa-hamburger{--fa: ""}.fa-wrench{--fa: ""}.fa-bugs{--fa: ""}.fa-rupee-sign,.fa-rupee{--fa: ""}.fa-file-image{--fa: ""}.fa-circle-question,.fa-question-circle{--fa: ""}.fa-plane-departure{--fa: ""}.fa-handshake-slash{--fa: ""}.fa-book-bookmark{--fa: ""}.fa-code-branch{--fa: ""}.fa-hat-cowboy{--fa: ""}.fa-bridge{--fa: ""}.fa-phone-flip,.fa-phone-alt{--fa: ""}.fa-truck-front{--fa: ""}.fa-cat{--fa: ""}.fa-anchor-circle-exclamation{--fa: ""}.fa-truck-field{--fa: ""}.fa-route{--fa: ""}.fa-clipboard-question{--fa: ""}.fa-panorama{--fa: ""}.fa-comment-medical{--fa: ""}.fa-teeth-open{--fa: ""}.fa-file-circle-minus{--fa: ""}.fa-tags{--fa: ""}.fa-wine-glass{--fa: ""}.fa-forward-fast,.fa-fast-forward{--fa: ""}.fa-face-meh-blank,.fa-meh-blank{--fa: ""}.fa-square-parking,.fa-parking{--fa: ""}.fa-house-signal{--fa: ""}.fa-bars-progress,.fa-tasks-alt{--fa: ""}.fa-faucet-drip{--fa: ""}.fa-cart-flatbed,.fa-dolly-flatbed{--fa: ""}.fa-ban-smoking,.fa-smoking-ban{--fa: ""}.fa-terminal{--fa: ""}.fa-mobile-button{--fa: ""}.fa-house-medical-flag{--fa: ""}.fa-basket-shopping,.fa-shopping-basket{--fa: ""}.fa-tape{--fa: ""}.fa-bus-simple,.fa-bus-alt{--fa: ""}.fa-eye{--fa: ""}.fa-face-sad-cry,.fa-sad-cry{--fa: ""}.fa-audio-description{--fa: ""}.fa-person-military-to-person{--fa: ""}.fa-file-shield{--fa: ""}.fa-user-slash{--fa: ""}.fa-pen{--fa: ""}.fa-tower-observation{--fa: ""}.fa-file-code{--fa: ""}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa: ""}.fa-bus{--fa: ""}.fa-heart-circle-xmark{--fa: ""}.fa-house-chimney,.fa-home-lg{--fa: ""}.fa-window-maximize{--fa: ""}.fa-face-frown,.fa-frown{--fa: ""}.fa-prescription{--fa: ""}.fa-shop,.fa-store-alt{--fa: ""}.fa-floppy-disk,.fa-save{--fa: ""}.fa-vihara{--fa: ""}.fa-scale-unbalanced,.fa-balance-scale-left{--fa: ""}.fa-sort-up,.fa-sort-asc{--fa: ""}.fa-comment-dots,.fa-commenting{--fa: ""}.fa-plant-wilt{--fa: ""}.fa-diamond{--fa: ""}.fa-face-grin-squint,.fa-grin-squint{--fa: ""}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa: ""}.fa-chart-diagram{--fa: ""}.fa-bacterium{--fa: ""}.fa-hand-pointer{--fa: ""}.fa-drum-steelpan{--fa: ""}.fa-hand-scissors{--fa: ""}.fa-hands-praying,.fa-praying-hands{--fa: ""}.fa-arrow-rotate-right,.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-redo{--fa: ""}.fa-biohazard{--fa: ""}.fa-location-crosshairs,.fa-location{--fa: ""}.fa-mars-double{--fa: ""}.fa-child-dress{--fa: ""}.fa-users-between-lines{--fa: ""}.fa-lungs-virus{--fa: ""}.fa-face-grin-tears,.fa-grin-tears{--fa: ""}.fa-phone{--fa: ""}.fa-calendar-xmark,.fa-calendar-times{--fa: ""}.fa-child-reaching{--fa: ""}.fa-head-side-virus{--fa: ""}.fa-user-gear,.fa-user-cog{--fa: ""}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa: ""}.fa-door-closed{--fa: ""}.fa-shield-virus{--fa: ""}.fa-dice-six{--fa: ""}.fa-mosquito-net{--fa: ""}.fa-file-fragment{--fa: ""}.fa-bridge-water{--fa: ""}.fa-person-booth{--fa: ""}.fa-text-width{--fa: ""}.fa-hat-wizard{--fa: ""}.fa-pen-fancy{--fa: ""}.fa-person-digging,.fa-digging{--fa: ""}.fa-trash{--fa: ""}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa: ""}.fa-book-medical{--fa: ""}.fa-poo{--fa: ""}.fa-quote-right,.fa-quote-right-alt{--fa: ""}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa: ""}.fa-cubes{--fa: ""}.fa-divide{--fa: ""}.fa-tenge-sign,.fa-tenge{--fa: ""}.fa-headphones{--fa: ""}.fa-hands-holding{--fa: ""}.fa-hands-clapping{--fa: ""}.fa-republican{--fa: ""}.fa-arrow-left{--fa: ""}.fa-person-circle-xmark{--fa: ""}.fa-ruler{--fa: ""}.fa-align-left{--fa: ""}.fa-dice-d6{--fa: ""}.fa-restroom{--fa: ""}.fa-j{--fa: "J"}.fa-users-viewfinder{--fa: ""}.fa-file-video{--fa: ""}.fa-up-right-from-square,.fa-external-link-alt{--fa: ""}.fa-table-cells,.fa-th{--fa: ""}.fa-file-pdf{--fa: ""}.fa-book-bible,.fa-bible{--fa: ""}.fa-o{--fa: "O"}.fa-suitcase-medical,.fa-medkit{--fa: ""}.fa-user-secret{--fa: ""}.fa-otter{--fa: ""}.fa-person-dress,.fa-female{--fa: ""}.fa-comment-dollar{--fa: ""}.fa-business-time,.fa-briefcase-clock{--fa: ""}.fa-table-cells-large,.fa-th-large{--fa: ""}.fa-book-tanakh,.fa-tanakh{--fa: ""}.fa-phone-volume,.fa-volume-control-phone{--fa: ""}.fa-hat-cowboy-side{--fa: ""}.fa-clipboard-user{--fa: ""}.fa-child{--fa: ""}.fa-lira-sign{--fa: ""}.fa-satellite{--fa: ""}.fa-plane-lock{--fa: ""}.fa-tag{--fa: ""}.fa-comment{--fa: ""}.fa-cake-candles,.fa-birthday-cake,.fa-cake{--fa: ""}.fa-envelope{--fa: ""}.fa-angles-up,.fa-angle-double-up{--fa: ""}.fa-paperclip{--fa: ""}.fa-arrow-right-to-city{--fa: ""}.fa-ribbon{--fa: ""}.fa-lungs{--fa: ""}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa: ""}.fa-litecoin-sign{--fa: ""}.fa-border-none{--fa: ""}.fa-circle-nodes{--fa: ""}.fa-parachute-box{--fa: ""}.fa-indent{--fa: ""}.fa-truck-field-un{--fa: ""}.fa-hourglass,.fa-hourglass-empty{--fa: ""}.fa-mountain{--fa: ""}.fa-user-doctor,.fa-user-md{--fa: ""}.fa-circle-info,.fa-info-circle{--fa: ""}.fa-cloud-meatball{--fa: ""}.fa-camera,.fa-camera-alt{--fa: ""}.fa-square-virus{--fa: ""}.fa-meteor{--fa: ""}.fa-car-on{--fa: ""}.fa-sleigh{--fa: ""}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa: ""}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa: ""}.fa-water{--fa: ""}.fa-calendar-check{--fa: ""}.fa-braille{--fa: ""}.fa-prescription-bottle-medical,.fa-prescription-bottle-alt{--fa: ""}.fa-landmark{--fa: ""}.fa-truck{--fa: ""}.fa-crosshairs{--fa: ""}.fa-person-cane{--fa: ""}.fa-tent{--fa: ""}.fa-vest-patches{--fa: ""}.fa-check-double{--fa: ""}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa: ""}.fa-money-bill-wheat{--fa: ""}.fa-cookie{--fa: ""}.fa-arrow-rotate-left,.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-undo{--fa: ""}.fa-hard-drive,.fa-hdd{--fa: ""}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa: ""}.fa-dumbbell{--fa: ""}.fa-rectangle-list,.fa-list-alt{--fa: ""}.fa-tarp-droplet{--fa: ""}.fa-house-medical-circle-check{--fa: ""}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa: ""}.fa-calendar-plus{--fa: ""}.fa-plane-arrival{--fa: ""}.fa-circle-left,.fa-arrow-alt-circle-left{--fa: ""}.fa-train-subway,.fa-subway{--fa: ""}.fa-chart-gantt{--fa: ""}.fa-indian-rupee-sign,.fa-indian-rupee,.fa-inr{--fa: ""}.fa-crop-simple,.fa-crop-alt{--fa: ""}.fa-money-bill-1,.fa-money-bill-alt{--fa: ""}.fa-left-long,.fa-long-arrow-alt-left{--fa: ""}.fa-dna{--fa: ""}.fa-virus-slash{--fa: ""}.fa-minus,.fa-subtract{--fa: ""}.fa-chess{--fa: ""}.fa-arrow-left-long,.fa-long-arrow-left{--fa: ""}.fa-plug-circle-check{--fa: ""}.fa-street-view{--fa: ""}.fa-franc-sign{--fa: ""}.fa-volume-off{--fa: ""}.fa-hands-asl-interpreting,.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting{--fa: ""}.fa-gear,.fa-cog{--fa: ""}.fa-droplet-slash,.fa-tint-slash{--fa: ""}.fa-mosque{--fa: ""}.fa-mosquito{--fa: ""}.fa-star-of-david{--fa: ""}.fa-person-military-rifle{--fa: ""}.fa-cart-shopping,.fa-shopping-cart{--fa: ""}.fa-vials{--fa: ""}.fa-plug-circle-plus{--fa: ""}.fa-place-of-worship{--fa: ""}.fa-grip-vertical{--fa: ""}.fa-hexagon-nodes{--fa: ""}.fa-arrow-turn-up,.fa-level-up{--fa: ""}.fa-u{--fa: "U"}.fa-square-root-variable,.fa-square-root-alt{--fa: ""}.fa-clock,.fa-clock-four{--fa: ""}.fa-backward-step,.fa-step-backward{--fa: ""}.fa-pallet{--fa: ""}.fa-faucet{--fa: ""}.fa-baseball-bat-ball{--fa: ""}.fa-s{--fa: "S"}.fa-timeline{--fa: ""}.fa-keyboard{--fa: ""}.fa-caret-down{--fa: ""}.fa-house-chimney-medical,.fa-clinic-medical{--fa: ""}.fa-temperature-three-quarters,.fa-temperature-3,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa: ""}.fa-mobile-screen,.fa-mobile-android-alt{--fa: ""}.fa-plane-up{--fa: ""}.fa-piggy-bank{--fa: ""}.fa-battery-half,.fa-battery-3{--fa: ""}.fa-mountain-city{--fa: ""}.fa-coins{--fa: ""}.fa-khanda{--fa: ""}.fa-sliders,.fa-sliders-h{--fa: ""}.fa-folder-tree{--fa: ""}.fa-network-wired{--fa: ""}.fa-map-pin{--fa: ""}.fa-hamsa{--fa: ""}.fa-cent-sign{--fa: ""}.fa-flask{--fa: ""}.fa-person-pregnant{--fa: ""}.fa-wand-sparkles{--fa: ""}.fa-ellipsis-vertical,.fa-ellipsis-v{--fa: ""}.fa-ticket{--fa: ""}.fa-power-off{--fa: ""}.fa-right-long,.fa-long-arrow-alt-right{--fa: ""}.fa-flag-usa{--fa: ""}.fa-laptop-file{--fa: ""}.fa-tty,.fa-teletype{--fa: ""}.fa-diagram-next{--fa: ""}.fa-person-rifle{--fa: ""}.fa-house-medical-circle-exclamation{--fa: ""}.fa-closed-captioning{--fa: ""}.fa-person-hiking,.fa-hiking{--fa: ""}.fa-venus-double{--fa: ""}.fa-images{--fa: ""}.fa-calculator{--fa: ""}.fa-people-pulling{--fa: ""}.fa-n{--fa: "N"}.fa-cable-car,.fa-tram{--fa: ""}.fa-cloud-rain{--fa: ""}.fa-building-circle-xmark{--fa: ""}.fa-ship{--fa: ""}.fa-arrows-down-to-line{--fa: ""}.fa-download{--fa: ""}.fa-face-grin,.fa-grin{--fa: ""}.fa-delete-left,.fa-backspace{--fa: ""}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa: ""}.fa-file-circle-check{--fa: ""}.fa-forward{--fa: ""}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa: ""}.fa-face-meh,.fa-meh{--fa: ""}.fa-align-center{--fa: ""}.fa-book-skull,.fa-book-dead{--fa: ""}.fa-id-card,.fa-drivers-license{--fa: ""}.fa-outdent,.fa-dedent{--fa: ""}.fa-heart-circle-exclamation{--fa: ""}.fa-house,.fa-home,.fa-home-alt,.fa-home-lg-alt{--fa: ""}.fa-calendar-week{--fa: ""}.fa-laptop-medical{--fa: ""}.fa-b{--fa: "B"}.fa-file-medical{--fa: ""}.fa-dice-one{--fa: ""}.fa-kiwi-bird{--fa: ""}.fa-arrow-right-arrow-left,.fa-exchange{--fa: ""}.fa-rotate-right,.fa-redo-alt,.fa-rotate-forward{--fa: ""}.fa-utensils,.fa-cutlery{--fa: ""}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa: ""}.fa-mill-sign{--fa: ""}.fa-bowl-rice{--fa: ""}.fa-skull{--fa: ""}.fa-tower-broadcast,.fa-broadcast-tower{--fa: ""}.fa-truck-pickup{--fa: ""}.fa-up-long,.fa-long-arrow-alt-up{--fa: ""}.fa-stop{--fa: ""}.fa-code-merge{--fa: ""}.fa-upload{--fa: ""}.fa-hurricane{--fa: ""}.fa-mound{--fa: ""}.fa-toilet-portable{--fa: ""}.fa-compact-disc{--fa: ""}.fa-file-arrow-down,.fa-file-download{--fa: ""}.fa-caravan{--fa: ""}.fa-shield-cat{--fa: ""}.fa-bolt,.fa-zap{--fa: ""}.fa-glass-water{--fa: ""}.fa-oil-well{--fa: ""}.fa-vault{--fa: ""}.fa-mars{--fa: ""}.fa-toilet{--fa: ""}.fa-plane-circle-xmark{--fa: ""}.fa-yen-sign,.fa-cny,.fa-jpy,.fa-rmb,.fa-yen{--fa: ""}.fa-ruble-sign,.fa-rouble,.fa-rub,.fa-ruble{--fa: ""}.fa-sun{--fa: ""}.fa-guitar{--fa: ""}.fa-face-laugh-wink,.fa-laugh-wink{--fa: ""}.fa-horse-head{--fa: ""}.fa-bore-hole{--fa: ""}.fa-industry{--fa: ""}.fa-circle-down,.fa-arrow-alt-circle-down{--fa: ""}.fa-arrows-turn-to-dots{--fa: ""}.fa-florin-sign{--fa: ""}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa: ""}.fa-less-than{--fa: "<"}.fa-angle-down{--fa: ""}.fa-car-tunnel{--fa: ""}.fa-head-side-cough{--fa: ""}.fa-grip-lines{--fa: ""}.fa-thumbs-down{--fa: ""}.fa-user-lock{--fa: ""}.fa-arrow-right-long,.fa-long-arrow-right{--fa: ""}.fa-anchor-circle-xmark{--fa: ""}.fa-ellipsis,.fa-ellipsis-h{--fa: ""}.fa-chess-pawn{--fa: ""}.fa-kit-medical,.fa-first-aid{--fa: ""}.fa-person-through-window{--fa: ""}.fa-toolbox{--fa: ""}.fa-hands-holding-circle{--fa: ""}.fa-bug{--fa: ""}.fa-credit-card,.fa-credit-card-alt{--fa: ""}.fa-car,.fa-automobile{--fa: ""}.fa-hand-holding-hand{--fa: ""}.fa-book-open-reader,.fa-book-reader{--fa: ""}.fa-mountain-sun{--fa: ""}.fa-arrows-left-right-to-line{--fa: ""}.fa-dice-d20{--fa: ""}.fa-truck-droplet{--fa: ""}.fa-file-circle-xmark{--fa: ""}.fa-temperature-arrow-up,.fa-temperature-up{--fa: ""}.fa-medal{--fa: ""}.fa-bed{--fa: ""}.fa-square-h,.fa-h-square{--fa: ""}.fa-podcast{--fa: ""}.fa-temperature-full,.fa-temperature-4,.fa-thermometer-4,.fa-thermometer-full{--fa: ""}.fa-bell{--fa: ""}.fa-superscript{--fa: ""}.fa-plug-circle-xmark{--fa: ""}.fa-star-of-life{--fa: ""}.fa-phone-slash{--fa: ""}.fa-paint-roller{--fa: ""}.fa-handshake-angle,.fa-hands-helping{--fa: ""}.fa-location-dot,.fa-map-marker-alt{--fa: ""}.fa-file{--fa: ""}.fa-greater-than{--fa: ">"}.fa-person-swimming,.fa-swimmer{--fa: ""}.fa-arrow-down{--fa: ""}.fa-droplet,.fa-tint{--fa: ""}.fa-eraser{--fa: ""}.fa-earth-americas,.fa-earth,.fa-earth-america,.fa-globe-americas{--fa: ""}.fa-person-burst{--fa: ""}.fa-dove{--fa: ""}.fa-battery-empty,.fa-battery-0{--fa: ""}.fa-socks{--fa: ""}.fa-inbox{--fa: ""}.fa-section{--fa: ""}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa: ""}.fa-envelope-open-text{--fa: ""}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa: ""}.fa-wine-bottle{--fa: ""}.fa-chess-rook{--fa: ""}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa: ""}.fa-dharmachakra{--fa: ""}.fa-hotdog{--fa: ""}.fa-person-walking-with-cane,.fa-blind{--fa: ""}.fa-drum{--fa: ""}.fa-ice-cream{--fa: ""}.fa-heart-circle-bolt{--fa: ""}.fa-fax{--fa: ""}.fa-paragraph{--fa: ""}.fa-check-to-slot,.fa-vote-yea{--fa: ""}.fa-star-half{--fa: ""}.fa-boxes-stacked,.fa-boxes,.fa-boxes-alt{--fa: ""}.fa-link,.fa-chain{--fa: ""}.fa-ear-listen,.fa-assistive-listening-systems{--fa: ""}.fa-tree-city{--fa: ""}.fa-play{--fa: ""}.fa-font{--fa: ""}.fa-table-cells-row-lock{--fa: ""}.fa-rupiah-sign{--fa: ""}.fa-magnifying-glass,.fa-search{--fa: ""}.fa-table-tennis-paddle-ball,.fa-ping-pong-paddle-ball,.fa-table-tennis{--fa: ""}.fa-person-dots-from-line,.fa-diagnoses{--fa: ""}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa: ""}.fa-naira-sign{--fa: ""}.fa-cart-arrow-down{--fa: ""}.fa-walkie-talkie{--fa: ""}.fa-file-pen,.fa-file-edit{--fa: ""}.fa-receipt{--fa: ""}.fa-square-pen,.fa-pen-square,.fa-pencil-square{--fa: ""}.fa-suitcase-rolling{--fa: ""}.fa-person-circle-exclamation{--fa: ""}.fa-chevron-down{--fa: ""}.fa-battery-full,.fa-battery,.fa-battery-5{--fa: ""}.fa-skull-crossbones{--fa: ""}.fa-code-compare{--fa: ""}.fa-list-ul,.fa-list-dots{--fa: ""}.fa-school-lock{--fa: ""}.fa-tower-cell{--fa: ""}.fa-down-long,.fa-long-arrow-alt-down{--fa: ""}.fa-ranking-star{--fa: ""}.fa-chess-king{--fa: ""}.fa-person-harassing{--fa: ""}.fa-brazilian-real-sign{--fa: ""}.fa-landmark-dome,.fa-landmark-alt{--fa: ""}.fa-arrow-up{--fa: ""}.fa-tv,.fa-television,.fa-tv-alt{--fa: ""}.fa-shrimp{--fa: ""}.fa-list-check,.fa-tasks{--fa: ""}.fa-jug-detergent{--fa: ""}.fa-circle-user,.fa-user-circle{--fa: ""}.fa-user-shield{--fa: ""}.fa-wind{--fa: ""}.fa-car-burst,.fa-car-crash{--fa: ""}.fa-y{--fa: "Y"}.fa-person-snowboarding,.fa-snowboarding{--fa: ""}.fa-truck-fast,.fa-shipping-fast{--fa: ""}.fa-fish{--fa: ""}.fa-user-graduate{--fa: ""}.fa-circle-half-stroke,.fa-adjust{--fa: ""}.fa-clapperboard{--fa: ""}.fa-circle-radiation,.fa-radiation-alt{--fa: ""}.fa-baseball,.fa-baseball-ball{--fa: ""}.fa-jet-fighter-up{--fa: ""}.fa-diagram-project,.fa-project-diagram{--fa: ""}.fa-copy{--fa: ""}.fa-volume-xmark,.fa-volume-mute,.fa-volume-times{--fa: ""}.fa-hand-sparkles{--fa: ""}.fa-grip,.fa-grip-horizontal{--fa: ""}.fa-share-from-square,.fa-share-square{--fa: ""}.fa-child-combatant,.fa-child-rifle{--fa: ""}.fa-gun{--fa: ""}.fa-square-phone,.fa-phone-square{--fa: ""}.fa-plus,.fa-add{--fa: "+"}.fa-expand{--fa: ""}.fa-computer{--fa: ""}.fa-xmark,.fa-close,.fa-multiply,.fa-remove,.fa-times{--fa: ""}.fa-arrows-up-down-left-right,.fa-arrows{--fa: ""}.fa-chalkboard-user,.fa-chalkboard-teacher{--fa: ""}.fa-peso-sign{--fa: ""}.fa-building-shield{--fa: ""}.fa-baby{--fa: ""}.fa-users-line{--fa: ""}.fa-quote-left,.fa-quote-left-alt{--fa: ""}.fa-tractor{--fa: ""}.fa-trash-arrow-up,.fa-trash-restore{--fa: ""}.fa-arrow-down-up-lock{--fa: ""}.fa-lines-leaning{--fa: ""}.fa-ruler-combined{--fa: ""}.fa-copyright{--fa: ""}.fa-equals{--fa: "="}.fa-blender{--fa: ""}.fa-teeth{--fa: ""}.fa-shekel-sign,.fa-ils,.fa-shekel,.fa-sheqel,.fa-sheqel-sign{--fa: ""}.fa-map{--fa: ""}.fa-rocket{--fa: ""}.fa-photo-film,.fa-photo-video{--fa: ""}.fa-folder-minus{--fa: ""}.fa-hexagon-nodes-bolt{--fa: ""}.fa-store{--fa: ""}.fa-arrow-trend-up{--fa: ""}.fa-plug-circle-minus{--fa: ""}.fa-sign-hanging,.fa-sign{--fa: ""}.fa-bezier-curve{--fa: ""}.fa-bell-slash{--fa: ""}.fa-tablet,.fa-tablet-android{--fa: ""}.fa-school-flag{--fa: ""}.fa-fill{--fa: ""}.fa-angle-up{--fa: ""}.fa-drumstick-bite{--fa: ""}.fa-holly-berry{--fa: ""}.fa-chevron-left{--fa: ""}.fa-bacteria{--fa: ""}.fa-hand-lizard{--fa: ""}.fa-notdef{--fa: ""}.fa-disease{--fa: ""}.fa-briefcase-medical{--fa: ""}.fa-genderless{--fa: ""}.fa-chevron-right{--fa: ""}.fa-retweet{--fa: ""}.fa-car-rear,.fa-car-alt{--fa: ""}.fa-pump-soap{--fa: ""}.fa-video-slash{--fa: ""}.fa-battery-quarter,.fa-battery-2{--fa: ""}.fa-radio{--fa: ""}.fa-baby-carriage,.fa-carriage-baby{--fa: ""}.fa-traffic-light{--fa: ""}.fa-thermometer{--fa: ""}.fa-vr-cardboard{--fa: ""}.fa-hand-middle-finger{--fa: ""}.fa-percent,.fa-percentage{--fa: "%"}.fa-truck-moving{--fa: ""}.fa-glass-water-droplet{--fa: ""}.fa-display{--fa: ""}.fa-face-smile,.fa-smile{--fa: ""}.fa-thumbtack,.fa-thumb-tack{--fa: ""}.fa-trophy{--fa: ""}.fa-person-praying,.fa-pray{--fa: ""}.fa-hammer{--fa: ""}.fa-hand-peace{--fa: ""}.fa-rotate,.fa-sync-alt{--fa: ""}.fa-spinner{--fa: ""}.fa-robot{--fa: ""}.fa-peace{--fa: ""}.fa-gears,.fa-cogs{--fa: ""}.fa-warehouse{--fa: ""}.fa-arrow-up-right-dots{--fa: ""}.fa-splotch{--fa: ""}.fa-face-grin-hearts,.fa-grin-hearts{--fa: ""}.fa-dice-four{--fa: ""}.fa-sim-card{--fa: ""}.fa-transgender,.fa-transgender-alt{--fa: ""}.fa-mercury{--fa: ""}.fa-arrow-turn-down,.fa-level-down{--fa: ""}.fa-person-falling-burst{--fa: ""}.fa-award{--fa: ""}.fa-ticket-simple,.fa-ticket-alt{--fa: ""}.fa-building{--fa: ""}.fa-angles-left,.fa-angle-double-left{--fa: ""}.fa-qrcode{--fa: ""}.fa-clock-rotate-left,.fa-history{--fa: ""}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa: ""}.fa-file-export,.fa-arrow-right-from-file{--fa: ""}.fa-shield,.fa-shield-blank{--fa: ""}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa: ""}.fa-comment-nodes{--fa: ""}.fa-house-medical{--fa: ""}.fa-golf-ball-tee,.fa-golf-ball{--fa: ""}.fa-circle-chevron-left,.fa-chevron-circle-left{--fa: ""}.fa-house-chimney-window{--fa: ""}.fa-pen-nib{--fa: ""}.fa-tent-arrow-turn-left{--fa: ""}.fa-tents{--fa: ""}.fa-wand-magic,.fa-magic{--fa: ""}.fa-dog{--fa: ""}.fa-carrot{--fa: ""}.fa-moon{--fa: ""}.fa-wine-glass-empty,.fa-wine-glass-alt{--fa: ""}.fa-cheese{--fa: ""}.fa-yin-yang{--fa: ""}.fa-music{--fa: ""}.fa-code-commit{--fa: ""}.fa-temperature-low{--fa: ""}.fa-person-biking,.fa-biking{--fa: ""}.fa-broom{--fa: ""}.fa-shield-heart{--fa: ""}.fa-gopuram{--fa: ""}.fa-earth-oceania,.fa-globe-oceania{--fa: ""}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa: ""}.fa-hashtag{--fa: "#"}.fa-up-right-and-down-left-from-center,.fa-expand-alt{--fa: ""}.fa-oil-can{--fa: ""}.fa-t{--fa: "T"}.fa-hippo{--fa: ""}.fa-chart-column{--fa: ""}.fa-infinity{--fa: ""}.fa-vial-circle-check{--fa: ""}.fa-person-arrow-down-to-line{--fa: ""}.fa-voicemail{--fa: ""}.fa-fan{--fa: ""}.fa-person-walking-luggage{--fa: ""}.fa-up-down,.fa-arrows-alt-v{--fa: ""}.fa-cloud-moon-rain{--fa: ""}.fa-calendar{--fa: ""}.fa-trailer{--fa: ""}.fa-bahai,.fa-haykal{--fa: ""}.fa-sd-card{--fa: ""}.fa-dragon{--fa: ""}.fa-shoe-prints{--fa: ""}.fa-circle-plus,.fa-plus-circle{--fa: ""}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa: ""}.fa-hand-holding{--fa: ""}.fa-plug-circle-exclamation{--fa: ""}.fa-link-slash,.fa-chain-broken,.fa-chain-slash,.fa-unlink{--fa: ""}.fa-clone{--fa: ""}.fa-person-walking-arrow-loop-left{--fa: ""}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa: ""}.fa-fire-flame-curved,.fa-fire-alt{--fa: ""}.fa-tornado{--fa: ""}.fa-file-circle-plus{--fa: ""}.fa-book-quran,.fa-quran{--fa: ""}.fa-anchor{--fa: ""}.fa-border-all{--fa: ""}.fa-face-angry,.fa-angry{--fa: ""}.fa-cookie-bite{--fa: ""}.fa-arrow-trend-down{--fa: ""}.fa-rss,.fa-feed{--fa: ""}.fa-draw-polygon{--fa: ""}.fa-scale-balanced,.fa-balance-scale{--fa: ""}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa: ""}.fa-shower{--fa: ""}.fa-desktop,.fa-desktop-alt{--fa: ""}.fa-m{--fa: "M"}.fa-table-list,.fa-th-list{--fa: ""}.fa-comment-sms,.fa-sms{--fa: ""}.fa-book{--fa: ""}.fa-user-plus{--fa: ""}.fa-check{--fa: ""}.fa-battery-three-quarters,.fa-battery-4{--fa: ""}.fa-house-circle-check{--fa: ""}.fa-angle-left{--fa: ""}.fa-diagram-successor{--fa: ""}.fa-truck-arrow-right{--fa: ""}.fa-arrows-split-up-and-left{--fa: ""}.fa-hand-fist,.fa-fist-raised{--fa: ""}.fa-cloud-moon{--fa: ""}.fa-briefcase{--fa: ""}.fa-person-falling{--fa: ""}.fa-image-portrait,.fa-portrait{--fa: ""}.fa-user-tag{--fa: ""}.fa-rug{--fa: ""}.fa-earth-europe,.fa-globe-europe{--fa: ""}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa: ""}.fa-rectangle-xmark,.fa-rectangle-times,.fa-times-rectangle,.fa-window-close{--fa: ""}.fa-baht-sign{--fa: ""}.fa-book-open{--fa: ""}.fa-book-journal-whills,.fa-journal-whills{--fa: ""}.fa-handcuffs{--fa: ""}.fa-triangle-exclamation,.fa-exclamation-triangle,.fa-warning{--fa: ""}.fa-database{--fa: ""}.fa-share,.fa-mail-forward{--fa: ""}.fa-bottle-droplet{--fa: ""}.fa-mask-face{--fa: ""}.fa-hill-rockslide{--fa: ""}.fa-right-left,.fa-exchange-alt{--fa: ""}.fa-paper-plane{--fa: ""}.fa-road-circle-exclamation{--fa: ""}.fa-dungeon{--fa: ""}.fa-align-right{--fa: ""}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa: ""}.fa-life-ring{--fa: ""}.fa-hands,.fa-sign-language,.fa-signing{--fa: ""}.fa-calendar-day{--fa: ""}.fa-water-ladder,.fa-ladder-water,.fa-swimming-pool{--fa: ""}.fa-arrows-up-down,.fa-arrows-v{--fa: ""}.fa-face-grimace,.fa-grimace{--fa: ""}.fa-wheelchair-move,.fa-wheelchair-alt{--fa: ""}.fa-turn-down,.fa-level-down-alt{--fa: ""}.fa-person-walking-arrow-right{--fa: ""}.fa-square-envelope,.fa-envelope-square{--fa: ""}.fa-dice{--fa: ""}.fa-bowling-ball{--fa: ""}.fa-brain{--fa: ""}.fa-bandage,.fa-band-aid{--fa: ""}.fa-calendar-minus{--fa: ""}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa: ""}.fa-gifts{--fa: ""}.fa-hotel{--fa: ""}.fa-earth-asia,.fa-globe-asia{--fa: ""}.fa-id-card-clip,.fa-id-card-alt{--fa: ""}.fa-magnifying-glass-plus,.fa-search-plus{--fa: ""}.fa-thumbs-up{--fa: ""}.fa-user-clock{--fa: ""}.fa-hand-dots,.fa-allergies{--fa: ""}.fa-file-invoice{--fa: ""}.fa-window-minimize{--fa: ""}.fa-mug-saucer,.fa-coffee{--fa: ""}.fa-brush{--fa: ""}.fa-file-half-dashed{--fa: ""}.fa-mask{--fa: ""}.fa-magnifying-glass-minus,.fa-search-minus{--fa: ""}.fa-ruler-vertical{--fa: ""}.fa-user-large,.fa-user-alt{--fa: ""}.fa-train-tram{--fa: ""}.fa-user-nurse{--fa: ""}.fa-syringe{--fa: ""}.fa-cloud-sun{--fa: ""}.fa-stopwatch-20{--fa: ""}.fa-square-full{--fa: ""}.fa-magnet{--fa: ""}.fa-jar{--fa: ""}.fa-note-sticky,.fa-sticky-note{--fa: ""}.fa-bug-slash{--fa: ""}.fa-arrow-up-from-water-pump{--fa: ""}.fa-bone{--fa: ""}.fa-table-cells-row-unlock{--fa: ""}.fa-user-injured{--fa: ""}.fa-face-sad-tear,.fa-sad-tear{--fa: ""}.fa-plane{--fa: ""}.fa-tent-arrows-down{--fa: ""}.fa-exclamation{--fa: "!"}.fa-arrows-spin{--fa: ""}.fa-print{--fa: ""}.fa-turkish-lira-sign,.fa-try,.fa-turkish-lira{--fa: ""}.fa-dollar-sign,.fa-dollar,.fa-usd{--fa: "$"}.fa-x{--fa: "X"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa: ""}.fa-users-gear,.fa-users-cog{--fa: ""}.fa-person-military-pointing{--fa: ""}.fa-building-columns,.fa-bank,.fa-institution,.fa-museum,.fa-university{--fa: ""}.fa-umbrella{--fa: ""}.fa-trowel{--fa: ""}.fa-d{--fa: "D"}.fa-stapler{--fa: ""}.fa-masks-theater,.fa-theater-masks{--fa: ""}.fa-kip-sign{--fa: ""}.fa-hand-point-left{--fa: ""}.fa-handshake-simple,.fa-handshake-alt{--fa: ""}.fa-jet-fighter,.fa-fighter-jet{--fa: ""}.fa-square-share-nodes,.fa-share-alt-square{--fa: ""}.fa-barcode{--fa: ""}.fa-plus-minus{--fa: ""}.fa-video,.fa-video-camera{--fa: ""}.fa-graduation-cap,.fa-mortar-board{--fa: ""}.fa-hand-holding-medical{--fa: ""}.fa-person-circle-check{--fa: ""}.fa-turn-up,.fa-level-up-alt{--fa: ""}.sr-only,.fa-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sr-only-focusable:not(:focus),.fa-sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:root,:host{--fa-style-family-brands: "Font Awesome 6 Brands";--fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}.fab,.fa-brands{font-weight:400}.fa-monero{--fa: ""}.fa-hooli{--fa: ""}.fa-yelp{--fa: ""}.fa-cc-visa{--fa: ""}.fa-lastfm{--fa: ""}.fa-shopware{--fa: ""}.fa-creative-commons-nc{--fa: ""}.fa-aws{--fa: ""}.fa-redhat{--fa: ""}.fa-yoast{--fa: ""}.fa-cloudflare{--fa: ""}.fa-ups{--fa: ""}.fa-pixiv{--fa: ""}.fa-wpexplorer{--fa: ""}.fa-dyalog{--fa: ""}.fa-bity{--fa: ""}.fa-stackpath{--fa: ""}.fa-buysellads{--fa: ""}.fa-first-order{--fa: ""}.fa-modx{--fa: ""}.fa-guilded{--fa: ""}.fa-vnv{--fa: ""}.fa-square-js,.fa-js-square{--fa: ""}.fa-microsoft{--fa: ""}.fa-qq{--fa: ""}.fa-orcid{--fa: ""}.fa-java{--fa: ""}.fa-invision{--fa: ""}.fa-creative-commons-pd-alt{--fa: ""}.fa-centercode{--fa: ""}.fa-glide-g{--fa: ""}.fa-drupal{--fa: ""}.fa-jxl{--fa: ""}.fa-dart-lang{--fa: ""}.fa-hire-a-helper{--fa: ""}.fa-creative-commons-by{--fa: ""}.fa-unity{--fa: ""}.fa-whmcs{--fa: ""}.fa-rocketchat{--fa: ""}.fa-vk{--fa: ""}.fa-untappd{--fa: ""}.fa-mailchimp{--fa: ""}.fa-css3-alt{--fa: ""}.fa-square-reddit,.fa-reddit-square{--fa: ""}.fa-vimeo-v{--fa: ""}.fa-contao{--fa: ""}.fa-square-font-awesome{--fa: ""}.fa-deskpro{--fa: ""}.fa-brave{--fa: ""}.fa-sistrix{--fa: ""}.fa-square-instagram,.fa-instagram-square{--fa: ""}.fa-battle-net{--fa: ""}.fa-the-red-yeti{--fa: ""}.fa-square-hacker-news,.fa-hacker-news-square{--fa: ""}.fa-edge{--fa: ""}.fa-threads{--fa: ""}.fa-napster{--fa: ""}.fa-square-snapchat,.fa-snapchat-square{--fa: ""}.fa-google-plus-g{--fa: ""}.fa-artstation{--fa: ""}.fa-markdown{--fa: ""}.fa-sourcetree{--fa: ""}.fa-google-plus{--fa: ""}.fa-diaspora{--fa: ""}.fa-foursquare{--fa: ""}.fa-stack-overflow{--fa: ""}.fa-github-alt{--fa: ""}.fa-phoenix-squadron{--fa: ""}.fa-pagelines{--fa: ""}.fa-algolia{--fa: ""}.fa-red-river{--fa: ""}.fa-creative-commons-sa{--fa: ""}.fa-safari{--fa: ""}.fa-google{--fa: ""}.fa-square-font-awesome-stroke,.fa-font-awesome-alt{--fa: ""}.fa-atlassian{--fa: ""}.fa-linkedin-in{--fa: ""}.fa-digital-ocean{--fa: ""}.fa-nimblr{--fa: ""}.fa-chromecast{--fa: ""}.fa-evernote{--fa: ""}.fa-hacker-news{--fa: ""}.fa-creative-commons-sampling{--fa: ""}.fa-adversal{--fa: ""}.fa-creative-commons{--fa: ""}.fa-watchman-monitoring{--fa: ""}.fa-fonticons{--fa: ""}.fa-weixin{--fa: ""}.fa-shirtsinbulk{--fa: ""}.fa-codepen{--fa: ""}.fa-git-alt{--fa: ""}.fa-lyft{--fa: ""}.fa-rev{--fa: ""}.fa-windows{--fa: ""}.fa-wizards-of-the-coast{--fa: ""}.fa-square-viadeo,.fa-viadeo-square{--fa: ""}.fa-meetup{--fa: ""}.fa-centos{--fa: ""}.fa-adn{--fa: ""}.fa-cloudsmith{--fa: ""}.fa-opensuse{--fa: ""}.fa-pied-piper-alt{--fa: ""}.fa-square-dribbble,.fa-dribbble-square{--fa: ""}.fa-codiepie{--fa: ""}.fa-node{--fa: ""}.fa-mix{--fa: ""}.fa-steam{--fa: ""}.fa-cc-apple-pay{--fa: ""}.fa-scribd{--fa: ""}.fa-debian{--fa: ""}.fa-openid{--fa: ""}.fa-instalod{--fa: ""}.fa-files-pinwheel{--fa: ""}.fa-expeditedssl{--fa: ""}.fa-sellcast{--fa: ""}.fa-square-twitter,.fa-twitter-square{--fa: ""}.fa-r-project{--fa: ""}.fa-delicious{--fa: ""}.fa-freebsd{--fa: ""}.fa-vuejs{--fa: ""}.fa-accusoft{--fa: ""}.fa-ioxhost{--fa: ""}.fa-fonticons-fi{--fa: ""}.fa-app-store{--fa: ""}.fa-cc-mastercard{--fa: ""}.fa-itunes-note{--fa: ""}.fa-golang{--fa: ""}.fa-kickstarter,.fa-square-kickstarter{--fa: ""}.fa-grav{--fa: ""}.fa-weibo{--fa: ""}.fa-uncharted{--fa: ""}.fa-firstdraft{--fa: ""}.fa-square-youtube,.fa-youtube-square{--fa: ""}.fa-wikipedia-w{--fa: ""}.fa-wpressr,.fa-rendact{--fa: ""}.fa-angellist{--fa: ""}.fa-galactic-republic{--fa: ""}.fa-nfc-directional{--fa: ""}.fa-skype{--fa: ""}.fa-joget{--fa: ""}.fa-fedora{--fa: ""}.fa-stripe-s{--fa: ""}.fa-meta{--fa: ""}.fa-laravel{--fa: ""}.fa-hotjar{--fa: ""}.fa-bluetooth-b{--fa: ""}.fa-square-letterboxd{--fa: ""}.fa-sticker-mule{--fa: ""}.fa-creative-commons-zero{--fa: ""}.fa-hips{--fa: ""}.fa-css{--fa: ""}.fa-behance{--fa: ""}.fa-reddit{--fa: ""}.fa-discord{--fa: ""}.fa-chrome{--fa: ""}.fa-app-store-ios{--fa: ""}.fa-cc-discover{--fa: ""}.fa-wpbeginner{--fa: ""}.fa-confluence{--fa: ""}.fa-shoelace{--fa: ""}.fa-mdb{--fa: ""}.fa-dochub{--fa: ""}.fa-accessible-icon{--fa: ""}.fa-ebay{--fa: ""}.fa-amazon{--fa: ""}.fa-unsplash{--fa: ""}.fa-yarn{--fa: ""}.fa-square-steam,.fa-steam-square{--fa: ""}.fa-500px{--fa: ""}.fa-square-vimeo,.fa-vimeo-square{--fa: ""}.fa-asymmetrik{--fa: ""}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa: ""}.fa-gratipay{--fa: ""}.fa-apple{--fa: ""}.fa-hive{--fa: ""}.fa-gitkraken{--fa: ""}.fa-keybase{--fa: ""}.fa-apple-pay{--fa: ""}.fa-padlet{--fa: ""}.fa-amazon-pay{--fa: ""}.fa-square-github,.fa-github-square{--fa: ""}.fa-stumbleupon{--fa: ""}.fa-fedex{--fa: ""}.fa-phoenix-framework{--fa: ""}.fa-shopify{--fa: ""}.fa-neos{--fa: ""}.fa-square-threads{--fa: ""}.fa-hackerrank{--fa: ""}.fa-researchgate{--fa: ""}.fa-swift{--fa: ""}.fa-angular{--fa: ""}.fa-speakap{--fa: ""}.fa-angrycreative{--fa: ""}.fa-y-combinator{--fa: ""}.fa-empire{--fa: ""}.fa-envira{--fa: ""}.fa-google-scholar{--fa: ""}.fa-square-gitlab,.fa-gitlab-square{--fa: ""}.fa-studiovinari{--fa: ""}.fa-pied-piper{--fa: ""}.fa-wordpress{--fa: ""}.fa-product-hunt{--fa: ""}.fa-firefox{--fa: ""}.fa-linode{--fa: ""}.fa-goodreads{--fa: ""}.fa-square-odnoklassniki,.fa-odnoklassniki-square{--fa: ""}.fa-jsfiddle{--fa: ""}.fa-sith{--fa: ""}.fa-themeisle{--fa: ""}.fa-page4{--fa: ""}.fa-hashnode{--fa: ""}.fa-react{--fa: ""}.fa-cc-paypal{--fa: ""}.fa-squarespace{--fa: ""}.fa-cc-stripe{--fa: ""}.fa-creative-commons-share{--fa: ""}.fa-bitcoin{--fa: ""}.fa-keycdn{--fa: ""}.fa-opera{--fa: ""}.fa-itch-io{--fa: ""}.fa-umbraco{--fa: ""}.fa-galactic-senate{--fa: ""}.fa-ubuntu{--fa: ""}.fa-draft2digital{--fa: ""}.fa-stripe{--fa: ""}.fa-houzz{--fa: ""}.fa-gg{--fa: ""}.fa-dhl{--fa: ""}.fa-square-pinterest,.fa-pinterest-square{--fa: ""}.fa-xing{--fa: ""}.fa-blackberry{--fa: ""}.fa-creative-commons-pd{--fa: ""}.fa-playstation{--fa: ""}.fa-quinscape{--fa: ""}.fa-less{--fa: ""}.fa-blogger-b{--fa: ""}.fa-opencart{--fa: ""}.fa-vine{--fa: ""}.fa-signal-messenger{--fa: ""}.fa-paypal{--fa: ""}.fa-gitlab{--fa: ""}.fa-typo3{--fa: ""}.fa-reddit-alien{--fa: ""}.fa-yahoo{--fa: ""}.fa-dailymotion{--fa: ""}.fa-affiliatetheme{--fa: ""}.fa-pied-piper-pp{--fa: ""}.fa-bootstrap{--fa: ""}.fa-odnoklassniki{--fa: ""}.fa-nfc-symbol{--fa: ""}.fa-mintbit{--fa: ""}.fa-ethereum{--fa: ""}.fa-speaker-deck{--fa: ""}.fa-creative-commons-nc-eu{--fa: ""}.fa-patreon{--fa: ""}.fa-avianex{--fa: ""}.fa-ello{--fa: ""}.fa-gofore{--fa: ""}.fa-bimobject{--fa: ""}.fa-brave-reverse{--fa: ""}.fa-facebook-f{--fa: ""}.fa-square-google-plus,.fa-google-plus-square{--fa: ""}.fa-web-awesome{--fa: ""}.fa-mandalorian{--fa: ""}.fa-first-order-alt{--fa: ""}.fa-osi{--fa: ""}.fa-google-wallet{--fa: ""}.fa-d-and-d-beyond{--fa: ""}.fa-periscope{--fa: ""}.fa-fulcrum{--fa: ""}.fa-cloudscale{--fa: ""}.fa-forumbee{--fa: ""}.fa-mizuni{--fa: ""}.fa-schlix{--fa: ""}.fa-square-xing,.fa-xing-square{--fa: ""}.fa-bandcamp{--fa: ""}.fa-wpforms{--fa: ""}.fa-cloudversify{--fa: ""}.fa-usps{--fa: ""}.fa-megaport{--fa: ""}.fa-magento{--fa: ""}.fa-spotify{--fa: ""}.fa-optin-monster{--fa: ""}.fa-fly{--fa: ""}.fa-square-bluesky{--fa: ""}.fa-aviato{--fa: ""}.fa-itunes{--fa: ""}.fa-cuttlefish{--fa: ""}.fa-blogger{--fa: ""}.fa-flickr{--fa: ""}.fa-viber{--fa: ""}.fa-soundcloud{--fa: ""}.fa-digg{--fa: ""}.fa-tencent-weibo{--fa: ""}.fa-letterboxd{--fa: ""}.fa-symfony{--fa: ""}.fa-maxcdn{--fa: ""}.fa-etsy{--fa: ""}.fa-facebook-messenger{--fa: ""}.fa-audible{--fa: ""}.fa-think-peaks{--fa: ""}.fa-bilibili{--fa: ""}.fa-erlang{--fa: ""}.fa-x-twitter{--fa: ""}.fa-cotton-bureau{--fa: ""}.fa-dashcube{--fa: ""}.fa-42-group,.fa-innosoft{--fa: ""}.fa-stack-exchange{--fa: ""}.fa-elementor{--fa: ""}.fa-square-pied-piper,.fa-pied-piper-square{--fa: ""}.fa-creative-commons-nd{--fa: ""}.fa-palfed{--fa: ""}.fa-superpowers{--fa: ""}.fa-resolving{--fa: ""}.fa-xbox{--fa: ""}.fa-square-web-awesome-stroke{--fa: ""}.fa-searchengin{--fa: ""}.fa-tiktok{--fa: ""}.fa-square-facebook,.fa-facebook-square{--fa: ""}.fa-renren{--fa: ""}.fa-linux{--fa: ""}.fa-glide{--fa: ""}.fa-linkedin{--fa: ""}.fa-hubspot{--fa: ""}.fa-deploydog{--fa: ""}.fa-twitch{--fa: ""}.fa-flutter{--fa: ""}.fa-ravelry{--fa: ""}.fa-mixer{--fa: ""}.fa-square-lastfm,.fa-lastfm-square{--fa: ""}.fa-vimeo{--fa: ""}.fa-mendeley{--fa: ""}.fa-uniregistry{--fa: ""}.fa-figma{--fa: ""}.fa-creative-commons-remix{--fa: ""}.fa-cc-amazon-pay{--fa: ""}.fa-dropbox{--fa: ""}.fa-instagram{--fa: ""}.fa-cmplid{--fa: ""}.fa-upwork{--fa: ""}.fa-facebook{--fa: ""}.fa-gripfire{--fa: ""}.fa-jedi-order{--fa: ""}.fa-uikit{--fa: ""}.fa-fort-awesome-alt{--fa: ""}.fa-phabricator{--fa: ""}.fa-ussunnah{--fa: ""}.fa-earlybirds{--fa: ""}.fa-trade-federation{--fa: ""}.fa-autoprefixer{--fa: ""}.fa-whatsapp{--fa: ""}.fa-square-upwork{--fa: ""}.fa-slideshare{--fa: ""}.fa-google-play{--fa: ""}.fa-viadeo{--fa: ""}.fa-line{--fa: ""}.fa-google-drive{--fa: ""}.fa-servicestack{--fa: ""}.fa-simplybuilt{--fa: ""}.fa-bitbucket{--fa: ""}.fa-imdb{--fa: ""}.fa-deezer{--fa: ""}.fa-raspberry-pi{--fa: ""}.fa-jira{--fa: ""}.fa-docker{--fa: ""}.fa-screenpal{--fa: ""}.fa-bluetooth{--fa: ""}.fa-gitter{--fa: ""}.fa-d-and-d{--fa: ""}.fa-microblog{--fa: ""}.fa-cc-diners-club{--fa: ""}.fa-gg-circle{--fa: ""}.fa-pied-piper-hat{--fa: ""}.fa-kickstarter-k{--fa: ""}.fa-yandex{--fa: ""}.fa-readme{--fa: ""}.fa-html5{--fa: ""}.fa-sellsy{--fa: ""}.fa-square-web-awesome{--fa: ""}.fa-sass{--fa: ""}.fa-wirsindhandwerk,.fa-wsh{--fa: ""}.fa-buromobelexperte{--fa: ""}.fa-salesforce{--fa: ""}.fa-octopus-deploy{--fa: ""}.fa-medapps{--fa: ""}.fa-ns8{--fa: ""}.fa-pinterest-p{--fa: ""}.fa-apper{--fa: ""}.fa-fort-awesome{--fa: ""}.fa-waze{--fa: ""}.fa-bluesky{--fa: ""}.fa-cc-jcb{--fa: ""}.fa-snapchat,.fa-snapchat-ghost{--fa: ""}.fa-fantasy-flight-games{--fa: ""}.fa-rust{--fa: ""}.fa-wix{--fa: ""}.fa-square-behance,.fa-behance-square{--fa: ""}.fa-supple{--fa: ""}.fa-webflow{--fa: ""}.fa-rebel{--fa: ""}.fa-css3{--fa: ""}.fa-staylinked{--fa: ""}.fa-kaggle{--fa: ""}.fa-space-awesome{--fa: ""}.fa-deviantart{--fa: ""}.fa-cpanel{--fa: ""}.fa-goodreads-g{--fa: ""}.fa-square-git,.fa-git-square{--fa: ""}.fa-square-tumblr,.fa-tumblr-square{--fa: ""}.fa-trello{--fa: ""}.fa-creative-commons-nc-jp{--fa: ""}.fa-get-pocket{--fa: ""}.fa-perbyte{--fa: ""}.fa-grunt{--fa: ""}.fa-weebly{--fa: ""}.fa-connectdevelop{--fa: ""}.fa-leanpub{--fa: ""}.fa-black-tie{--fa: ""}.fa-themeco{--fa: ""}.fa-python{--fa: ""}.fa-android{--fa: ""}.fa-bots{--fa: ""}.fa-free-code-camp{--fa: ""}.fa-hornbill{--fa: ""}.fa-js{--fa: ""}.fa-ideal{--fa: ""}.fa-git{--fa: ""}.fa-dev{--fa: ""}.fa-sketch{--fa: ""}.fa-yandex-international{--fa: ""}.fa-cc-amex{--fa: ""}.fa-uber{--fa: ""}.fa-github{--fa: ""}.fa-php{--fa: ""}.fa-alipay{--fa: ""}.fa-youtube{--fa: ""}.fa-skyatlas{--fa: ""}.fa-firefox-browser{--fa: ""}.fa-replyd{--fa: ""}.fa-suse{--fa: ""}.fa-jenkins{--fa: ""}.fa-twitter{--fa: ""}.fa-rockrms{--fa: ""}.fa-pinterest{--fa: ""}.fa-buffer{--fa: ""}.fa-npm{--fa: ""}.fa-yammer{--fa: ""}.fa-btc{--fa: ""}.fa-dribbble{--fa: ""}.fa-stumbleupon-circle{--fa: ""}.fa-internet-explorer{--fa: ""}.fa-stubber{--fa: ""}.fa-telegram,.fa-telegram-plane{--fa: ""}.fa-old-republic{--fa: ""}.fa-odysee{--fa: ""}.fa-square-whatsapp,.fa-whatsapp-square{--fa: ""}.fa-node-js{--fa: ""}.fa-edge-legacy{--fa: ""}.fa-slack,.fa-slack-hash{--fa: ""}.fa-medrt{--fa: ""}.fa-usb{--fa: ""}.fa-tumblr{--fa: ""}.fa-vaadin{--fa: ""}.fa-quora{--fa: ""}.fa-square-x-twitter{--fa: ""}.fa-reacteurope{--fa: ""}.fa-medium,.fa-medium-m{--fa: ""}.fa-amilia{--fa: ""}.fa-mixcloud{--fa: ""}.fa-flipboard{--fa: ""}.fa-viacoin{--fa: ""}.fa-critical-role{--fa: ""}.fa-sitrox{--fa: ""}.fa-discourse{--fa: ""}.fa-joomla{--fa: ""}.fa-mastodon{--fa: ""}.fa-airbnb{--fa: ""}.fa-wolf-pack-battalion{--fa: ""}.fa-buy-n-large{--fa: ""}.fa-gulp{--fa: ""}.fa-creative-commons-sampling-plus{--fa: ""}.fa-strava{--fa: ""}.fa-ember{--fa: ""}.fa-canadian-maple-leaf{--fa: ""}.fa-teamspeak{--fa: ""}.fa-pushed{--fa: ""}.fa-wordpress-simple{--fa: ""}.fa-nutritionix{--fa: ""}.fa-wodu{--fa: ""}.fa-google-pay{--fa: ""}.fa-intercom{--fa: ""}.fa-zhihu{--fa: ""}.fa-korvue{--fa: ""}.fa-pix{--fa: ""}.fa-steam-symbol{--fa: ""}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype")}.far,.fa-regular{font-weight:400}:root,:host{--fa-style-family-classic: "Font Awesome 6 Free";--fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}.fas,.fa-solid{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-solid-900-CTAAxXor.woff2) format("woff2"),url(/admin-next/assets/fa-solid-900-D0aA9rwL.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-brands-400-D_cYUPeE.woff2) format("woff2"),url(/admin-next/assets/fa-brands-400-D1LuMI3I.ttf) format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-regular-400-BjRzuEpd.woff2) format("woff2"),url(/admin-next/assets/fa-regular-400-DZaxPHgR.ttf) format("truetype");unicode-range:U+F003,U+F006,U+F014,U+F016-F017,U+F01A-F01B,U+F01D,U+F022,U+F03E,U+F044,U+F046,U+F05C-F05D,U+F06E,U+F070,U+F087-F088,U+F08A,U+F094,U+F096-F097,U+F09D,U+F0A0,U+F0A2,U+F0A4-F0A7,U+F0C5,U+F0C7,U+F0E5-F0E6,U+F0EB,U+F0F6-F0F8,U+F10C,U+F114-F115,U+F118-F11A,U+F11C-F11D,U+F133,U+F147,U+F14E,U+F150-F152,U+F185-F186,U+F18E,U+F190-F192,U+F196,U+F1C1-F1C9,U+F1D9,U+F1DB,U+F1E3,U+F1EA,U+F1F7,U+F1F9,U+F20A,U+F247-F248,U+F24A,U+F24D,U+F255-F25B,U+F25D,U+F271-F274,U+F278,U+F27B,U+F28C,U+F28E,U+F29C,U+F2B5,U+F2B7,U+F2BA,U+F2BC,U+F2BE,U+F2C0-F2C1,U+F2C3,U+F2D0,U+F2D2,U+F2D4,U+F2DC}@font-face{font-family:FontAwesome;font-display:block;src:url(/admin-next/assets/fa-v4compatibility-C9RhG_FT.woff2) format("woff2"),url(/admin-next/assets/fa-v4compatibility-CCth-dXg.ttf) format("truetype");unicode-range:U+F041,U+F047,U+F065-F066,U+F07D-F07E,U+F080,U+F08B,U+F08E,U+F090,U+F09A,U+F0AC,U+F0AE,U+F0B2,U+F0D0,U+F0D6,U+F0E4,U+F0EC,U+F10A-F10B,U+F123,U+F13E,U+F148-F149,U+F14C,U+F156,U+F15E,U+F160-F161,U+F163,U+F175-F178,U+F195,U+F1F8,U+F219,U+F27A}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 50%,var(--accent-color) 100%);background-attachment:fixed;min-height:100vh;margin:0;overflow-x:hidden}body,div,button,input,select,textarea,table,tr,td,th,span,p,h1,h2,h3,h4,h5,h6{transition:all .3s cubic-bezier(.4,0,.2,1)}.el-button--primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);border-color:transparent}.el-button--primary:hover,.el-button--primary:focus{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);opacity:.9}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[2px\]:after{content:var(--tw-content);left:2px}.after\:top-0\.5:after{content:var(--tw-content);top:.125rem}.after\:top-\[2px\]:after{content:var(--tw-content);top:2px}.after\:h-4:after{content:var(--tw-content);height:1rem}.after\:h-5:after{content:var(--tw-content);height:1.25rem}.after\:w-4:after{content:var(--tw-content);width:1rem}.after\:w-5:after{content:var(--tw-content);width:1.25rem}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:border:after{content:var(--tw-content);border-width:1px}.after\:border-gray-300:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.after\:shadow-sm:after{content:var(--tw-content);--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:transition-transform:after{content:var(--tw-content);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:duration-200:after{content:var(--tw-content);transition-duration:.2s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-300:hover{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.hover\:border-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity, 1))}.hover\:border-indigo-300:hover{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity, 1))}.hover\:border-red-300:hover{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.hover\:bg-amber-700:hover{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-200:hover{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-50:hover{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-300:hover{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.hover\:bg-green-100:hover{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.hover\:bg-green-200:hover{--tw-bg-opacity: 1;background-color:rgb(187 247 208 / var(--tw-bg-opacity, 1))}.hover\:bg-green-50:hover{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.hover\:bg-green-600:hover{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-indigo-50:hover{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-100:hover{--tw-bg-opacity: 1;background-color:rgb(255 237 213 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 215 170 / var(--tw-bg-opacity, 1))}.hover\:bg-orange-50:hover{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-200:hover{--tw-bg-opacity: 1;background-color:rgb(233 213 255 / var(--tw-bg-opacity, 1))}.hover\:bg-purple-50:hover{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.hover\:bg-red-100:hover{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.hover\:bg-red-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity, 1))}.hover\:bg-red-50:hover{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/50:hover{background-color:#ffffff80}.hover\:bg-white\/90:hover{background-color:#ffffffe6}.hover\:bg-yellow-200:hover{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.hover\:from-blue-600:hover{--tw-gradient-from: #2563eb var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-blue-700:hover{--tw-gradient-from: #1d4ed8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(29 78 216 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-green-600:hover{--tw-gradient-from: #16a34a var(--tw-gradient-from-position);--tw-gradient-to: rgb(22 163 74 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-yellow-600:hover{--tw-gradient-from: #ca8a04 var(--tw-gradient-from-position);--tw-gradient-to: rgb(202 138 4 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:to-blue-700:hover{--tw-gradient-to: #1d4ed8 var(--tw-gradient-to-position)}.hover\:to-green-700:hover{--tw-gradient-to: #15803d var(--tw-gradient-to-position)}.hover\:to-indigo-700:hover{--tw-gradient-to: #4338ca var(--tw-gradient-to-position)}.hover\:to-orange-600:hover{--tw-gradient-to: #ea580c var(--tw-gradient-to-position)}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.hover\:text-blue-700:hover{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.hover\:text-blue-900:hover{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-green-900:hover{--tw-text-opacity: 1;color:rgb(20 83 45 / var(--tw-text-opacity, 1))}.hover\:text-indigo-900:hover{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-orange-900:hover{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.hover\:text-purple-900:hover{--tw-text-opacity: 1;color:rgb(88 28 135 / var(--tw-text-opacity, 1))}.hover\:text-red-800:hover{--tw-text-opacity: 1;color:rgb(153 27 27 / var(--tw-text-opacity, 1))}.hover\:text-red-900:hover{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.focus\:border-cyan-500:focus{--tw-border-opacity: 1;border-color:rgb(6 182 212 / var(--tw-border-opacity, 1))}.focus\:border-green-500:focus{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.focus\:border-transparent:focus{border-color:transparent}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(191 219 254 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-500\/20:focus{--tw-ring-color: rgb(59 130 246 / .2)}.focus\:ring-cyan-500\/20:focus{--tw-ring-color: rgb(6 182 212 / .2)}.focus\:ring-green-500\/20:focus{--tw-ring-color: rgb(34 197 94 / .2)}.focus\:ring-red-500\/20:focus{--tw-ring-color: rgb(239 68 68 / .2)}.focus\:ring-offset-0:focus{--tw-ring-offset-width: 0px}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:from-gray-400:disabled{--tw-gradient-from: #9ca3af var(--tw-gradient-from-position);--tw-gradient-to: rgb(156 163 175 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.disabled\:to-gray-500:disabled{--tw-gradient-to: #6b7280 var(--tw-gradient-to-position)}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-20{opacity:.2}.peer:checked~.peer-checked\:bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.peer:checked~.peer-checked\:bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.peer:checked~.peer-checked\:bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.peer:checked~.peer-checked\:after\:translate-x-4:after{content:var(--tw-content);--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:after\:translate-x-full:after{content:var(--tw-content);--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:checked~.peer-checked\:after\:border-white:after{content:var(--tw-content);--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}.peer:focus~.peer-focus\:ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.peer:focus~.peer-focus\:ring-4{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.peer:focus~.peer-focus\:ring-blue-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(147 197 253 / var(--tw-ring-opacity, 1))}.dark\:divide-gray-600:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(75 85 99 / var(--tw-divide-opacity, 1))}.dark\:divide-gray-600\/50:is(.dark *)>:not([hidden])~:not([hidden]){border-color:#4b556380}.dark\:border-amber-500:is(.dark *){--tw-border-opacity: 1;border-color:rgb(245 158 11 / var(--tw-border-opacity, 1))}.dark\:border-amber-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(180 83 9 / var(--tw-border-opacity, 1))}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-400:is(.dark *){--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.dark\:border-blue-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.dark\:border-blue-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.dark\:border-gray-600\/30:is(.dark *){border-color:#4b55634d}.dark\:border-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.dark\:border-green-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.dark\:border-green-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-indigo-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(67 56 202 / var(--tw-border-opacity, 1))}.dark\:border-orange-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.dark\:border-orange-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(194 65 12 / var(--tw-border-opacity, 1))}.dark\:border-purple-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(126 34 206 / var(--tw-border-opacity, 1))}.dark\:border-red-500\/20:is(.dark *){border-color:#ef444433}.dark\:border-yellow-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(161 98 7 / var(--tw-border-opacity, 1))}.dark\:bg-amber-500:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.dark\:bg-amber-900\/20:is(.dark *){background-color:#78350f33}.dark\:bg-amber-900\/30:is(.dark *){background-color:#78350f4d}.dark\:bg-blue-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-900\/20:is(.dark *){background-color:#1e3a8a33}.dark\:bg-blue-900\/30:is(.dark *){background-color:#1e3a8a4d}.dark\:bg-blue-900\/50:is(.dark *){background-color:#1e3a8a80}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-600\/50:is(.dark *){background-color:#4b556380}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700\/50:is(.dark *){background-color:#37415180}.dark\:bg-gray-700\/80:is(.dark *){background-color:#374151cc}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/20:is(.dark *){background-color:#1f293733}.dark\:bg-gray-800\/80:is(.dark *){background-color:#1f2937cc}.dark\:bg-gray-800\/90:is(.dark *){background-color:#1f2937e6}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-900\/50:is(.dark *){background-color:#11182780}.dark\:bg-green-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/20:is(.dark *){background-color:#14532d33}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-900\/50:is(.dark *){background-color:#14532d80}.dark\:bg-orange-900\/30:is(.dark *){background-color:#7c2d124d}.dark\:bg-purple-900\/30:is(.dark *){background-color:#581c874d}.dark\:bg-red-500\/10:is(.dark *){background-color:#ef44441a}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-yellow-900\/30:is(.dark *){background-color:#713f124d}.dark\:from-blue-600\/20:is(.dark *){--tw-gradient-from: rgb(37 99 235 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-blue-900\/20:is(.dark *){--tw-gradient-from: rgb(30 58 138 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 58 138 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-gray-700:is(.dark *){--tw-gradient-from: #374151 var(--tw-gradient-from-position);--tw-gradient-to: rgb(55 65 81 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-gray-800:is(.dark *){--tw-gradient-from: #1f2937 var(--tw-gradient-from-position);--tw-gradient-to: rgb(31 41 55 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-green-900\/20:is(.dark *){--tw-gradient-from: rgb(20 83 45 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(20 83 45 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-indigo-900\/20:is(.dark *){--tw-gradient-from: rgb(49 46 129 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(49 46 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-purple-900\/20:is(.dark *){--tw-gradient-from: rgb(88 28 135 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(88 28 135 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-yellow-900\/20:is(.dark *){--tw-gradient-from: rgb(113 63 18 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(113 63 18 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:via-gray-600:is(.dark *){--tw-gradient-to: rgb(75 85 99 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #4b5563 var(--tw-gradient-via-position), var(--tw-gradient-to)}.dark\:to-blue-800\/20:is(.dark *){--tw-gradient-to: rgb(30 64 175 / .2) var(--tw-gradient-to-position)}.dark\:to-cyan-900\/20:is(.dark *){--tw-gradient-to: rgb(22 78 99 / .2) var(--tw-gradient-to-position)}.dark\:to-gray-700:is(.dark *){--tw-gradient-to: #374151 var(--tw-gradient-to-position)}.dark\:to-gray-800:is(.dark *){--tw-gradient-to: #1f2937 var(--tw-gradient-to-position)}.dark\:to-green-800\/20:is(.dark *){--tw-gradient-to: rgb(22 101 52 / .2) var(--tw-gradient-to-position)}.dark\:to-indigo-900\/20:is(.dark *){--tw-gradient-to: rgb(49 46 129 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-600\/20:is(.dark *){--tw-gradient-to: rgb(147 51 234 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-800\/20:is(.dark *){--tw-gradient-to: rgb(107 33 168 / .2) var(--tw-gradient-to-position)}.dark\:to-purple-900\/20:is(.dark *){--tw-gradient-to: rgb(88 28 135 / .2) var(--tw-gradient-to-position)}.dark\:to-yellow-800\/20:is(.dark *){--tw-gradient-to: rgb(133 77 14 / .2) var(--tw-gradient-to-position)}.dark\:text-amber-300:is(.dark *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-200:is(.dark *){--tw-text-opacity: 1;color:rgb(187 247 208 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 186 116 / var(--tw-text-opacity, 1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.dark\:text-purple-400:is(.dark *){--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.dark\:text-red-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:placeholder-gray-400:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-400:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-500:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-gray-500:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(107 114 128 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder\:text-gray-500:is(.dark *)::-moz-placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:placeholder\:text-gray-500:is(.dark *)::placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:after\:bg-gray-300:is(.dark *):after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.dark\:hover\:border-gray-500:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity, 1))}.dark\:hover\:border-indigo-500:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity, 1))}.dark\:hover\:bg-blue-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 64 175 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-blue-900\/20:hover:is(.dark *){background-color:#1e3a8a33}.dark\:hover\:bg-blue-900\/30:hover:is(.dark *){background-color:#1e3a8a4d}.dark\:hover\:bg-blue-900\/50:hover:is(.dark *){background-color:#1e3a8a80}.dark\:hover\:bg-blue-900\/70:hover:is(.dark *){background-color:#1e3a8ab3}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700\/30:hover:is(.dark *){background-color:#3741514d}.dark\:hover\:bg-green-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-green-900\/50:hover:is(.dark *){background-color:#14532d80}.dark\:hover\:bg-orange-900\/50:hover:is(.dark *){background-color:#7c2d1280}.dark\:hover\:bg-purple-900\/50:hover:is(.dark *){background-color:#581c8780}.dark\:hover\:bg-red-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(153 27 27 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-red-900\/20:hover:is(.dark *){background-color:#7f1d1d33}.dark\:hover\:text-blue-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:hover\:text-blue-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:hover\:text-gray-400:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:hover\:text-red-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:focus\:ring-indigo-400:focus:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(129 140 248 / var(--tw-ring-opacity, 1))}.peer:focus~.dark\:peer-focus\:ring-blue-600:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity, 1))}.peer:focus~.dark\:peer-focus\:ring-blue-800:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(30 64 175 / var(--tw-ring-opacity, 1))}@media (min-width: 640px){.sm\:mb-10{margin-bottom:2.5rem}.sm\:mb-2{margin-bottom:.5rem}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:mb-8{margin-bottom:2rem}.sm\:ml-2{margin-left:.5rem}.sm\:ml-4{margin-left:1rem}.sm\:mr-2{margin-right:.5rem}.sm\:mr-3{margin-right:.75rem}.sm\:mt-2{margin-top:.5rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-20{height:5rem}.sm\:h-8{height:2rem}.sm\:h-9{height:2.25rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[350px\]{height:350px}.sm\:max-h-\[300px\]{max-height:300px}.sm\:w-10{width:2.5rem}.sm\:w-12{width:3rem}.sm\:w-20{width:5rem}.sm\:w-56{width:14rem}.sm\:w-64{width:16rem}.sm\:w-8{width:2rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-none{max-width:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:rounded-2xl{border-radius:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-2{padding:.5rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.sm\:py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.sm\:py-3{padding-top:.75rem;padding-bottom:.75rem}.sm\:py-4{padding-top:1rem;padding-bottom:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width: 768px){.md\:mb-3{margin-bottom:.75rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mr-2{margin-right:.5rem}.md\:mr-3{margin-right:.75rem}.md\:mt-3{margin-top:.75rem}.md\:mt-4{margin-top:1rem}.md\:mt-6{margin-top:1.5rem}.md\:block{display:block}.md\:inline{display:inline}.md\:hidden{display:none}.md\:w-auto{width:auto}.md\:flex-none{flex:none}.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-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.md\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.md\:rounded-3xl{border-radius:1.5rem}.md\:p-10{padding:2.5rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:px-3{padding-left:.75rem;padding-right:.75rem}.md\:px-5{padding-left:1.25rem;padding-right:1.25rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-2{padding-top:.5rem;padding-bottom:.5rem}.md\:py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.md\:py-8{padding-top:2rem;padding-bottom:2rem}.md\:pb-6{padding-bottom:1.5rem}.md\:pt-4{padding-top:1rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1024px){.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:block{display:block}.lg\:w-auto{width:auto}.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\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-end{justify-content:flex-end}}@media (min-width: 1280px){.xl\:inline{display:inline}}:root{--primary-color: #667eea;--secondary-color: #764ba2;--accent-color: #f093fb;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(255, 255, 255, .95);--glass-color: rgba(255, 255, 255, .1);--glass-strong-color: rgba(255, 255, 255, .95);--text-primary: #1f2937;--text-secondary: #6b7280;--border-color: rgba(255, 255, 255, .2);--bg-gradient-start: #667eea;--bg-gradient-mid: #764ba2;--bg-gradient-end: #f093fb;--input-bg: rgba(255, 255, 255, .9);--input-border: rgba(255, 255, 255, .3);--modal-bg: rgba(0, 0, 0, .4);--table-bg: rgba(255, 255, 255, .95);--table-hover: rgba(102, 126, 234, .05)}.dark{--primary-color: #818cf8;--secondary-color: #a78bfa;--accent-color: #c084fc;--success-color: #10b981;--warning-color: #f59e0b;--error-color: #ef4444;--surface-color: rgba(31, 41, 55, .95);--glass-color: rgba(0, 0, 0, .2);--glass-strong-color: rgba(31, 41, 55, .95);--text-primary: #f3f4f6;--text-secondary: #9ca3af;--border-color: rgba(75, 85, 99, .3);--bg-gradient-start: #1f2937;--bg-gradient-mid: #374151;--bg-gradient-end: #4b5563;--input-bg: rgba(31, 41, 55, .9);--input-border: rgba(75, 85, 99, .5);--modal-bg: rgba(0, 0, 0, .6);--table-bg: rgba(31, 41, 55, .95);--table-hover: rgba(129, 140, 248, .1)}button,input,select,textarea{transition:background-color .3s ease,border-color .3s ease,box-shadow .3s ease,transform .2s ease}.transition-colors{transition:color .3s ease,background-color .3s ease,border-color .3s ease}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,var(--bg-gradient-start) 0%,var(--bg-gradient-mid) 50%,var(--bg-gradient-end) 100%);background-attachment:fixed;min-height:100vh;margin:0;overflow-x:hidden;color:var(--text-primary);transition:background .3s ease,color .3s ease}body:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 80%,rgba(240,147,251,.2) 0%,transparent 50%),radial-gradient(circle at 80% 20%,rgba(102,126,234,.2) 0%,transparent 50%),radial-gradient(circle at 40% 40%,rgba(118,75,162,.1) 0%,transparent 50%);pointer-events:none;z-index:-1}.glass{background:var(--glass-color);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-color);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,inset 0 1px #ffffff1a;transition:background-color .3s ease,border-color .3s ease}.dark .glass{box-shadow:0 20px 25px -5px #00000040,0 10px 10px -5px #0000001a,inset 0 1px #ffffff0d}.glass-strong{background:var(--glass-strong-color);backdrop-filter:blur(25px);-webkit-backdrop-filter:blur(25px);border:1px solid var(--border-color);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d,inset 0 1px #ffffff1a;transition:background-color .3s ease,border-color .3s ease}.dark .glass-strong{box-shadow:0 25px 50px -12px #0006,0 0 0 1px #ffffff05,inset 0 1px #ffffff0d}.tab-btn{position:relative;overflow:hidden;border-radius:12px;font-weight:500;letter-spacing:.025em}.tab-btn:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);transition:left .5s}.tab-btn:hover:before{left:100%}.tab-btn.active{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);color:#fff;box-shadow:0 10px 15px -3px #667eea4d,0 4px 6px -2px #667eea0d;transform:translateY(-1px)}.card{background:var(--surface-color);border-radius:16px;border:1px solid var(--border-color);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;overflow:hidden;position:relative;transition:background-color .3s ease,border-color .3s ease}.dark .card{box-shadow:0 10px 15px -3px #00000040,0 4px 6px -2px #0000001a}.card:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.5),transparent)}.stat-card{background:linear-gradient(135deg,var(--surface-color) 0%,var(--glass-strong-color) 100%);border-radius:20px;border:1px solid var(--border-color);padding:24px;position:relative;overflow:hidden;transition:transform .3s ease,box-shadow .3s ease}.dark .stat-card{background:linear-gradient(135deg,#1f2937f2,#111827cc)}.stat-card:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,255,255,.1) 0%,transparent 70%);opacity:0;transition:opacity .3s ease}.stat-card:hover{transform:translateY(-4px);box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.stat-card:hover:before{opacity:1}.stat-icon{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:24px;color:#fff;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.btn{font-weight:500;border-radius:12px;border:none;cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden;letter-spacing:.025em}.btn:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:#fff3;border-radius:50%;transform:translate(-50%,-50%);transition:width .3s ease,height .3s ease}.btn:active:before{width:300px;height:300px}.btn-primary{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);color:#fff;box-shadow:0 10px 15px -3px #667eea4d,0 4px 6px -2px #667eea0d}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #667eea4d,0 10px 10px -5px #667eea1a}.btn-success{background:linear-gradient(135deg,var(--success-color) 0%,#059669 100%);color:#fff;box-shadow:0 10px 15px -3px #10b9814d,0 4px 6px -2px #10b9810d}.btn-success:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #10b9814d,0 10px 10px -5px #10b9811a}.btn-danger{background:linear-gradient(135deg,var(--error-color) 0%,#dc2626 100%);color:#fff;box-shadow:0 10px 15px -3px #ef44444d,0 4px 6px -2px #ef44440d}.btn-danger:hover{transform:translateY(-1px);box-shadow:0 20px 25px -5px #ef44444d,0 10px 10px -5px #ef44441a}.form-input{background:var(--input-bg);border:2px solid var(--input-border);border-radius:12px;padding:16px;font-size:16px;color:var(--text-primary);transition:background-color .3s ease,border-color .3s ease,box-shadow .3s ease;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.form-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #667eea1a,0 10px 15px -3px #0000001a;background:#fffffff2;color:#1f2937}.dark .form-input:focus{box-shadow:0 0 0 3px #818cf833,0 10px 15px -3px #0003;background:#111827f2;color:#f3f4f6}.table-container{background:var(--table-bg);border-radius:16px;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;transition:background-color .3s ease}.dark .table-container{box-shadow:0 10px 15px -3px #00000040,0 4px 6px -2px #0000001a}.table-row{transition:background-color .2s ease,transform .2s ease}.table-row:hover{background:var(--table-hover);transform:scale(1.005)}.modal{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:var(--modal-bg);transition:background-color .3s ease}.modal-content{background:#fff;border-radius:24px;border:1px solid rgba(229,231,235,.8);box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff0d;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:background-color .3s ease,border-color .3s ease}.dark .modal-content{background:#1f2937;border:1px solid rgba(75,85,99,.5);box-shadow:0 25px 50px -12px #0009,0 0 0 1px #ffffff05}.header-title{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;letter-spacing:-.025em}.loading-spinner{display:inline-block;width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top:2px solid white;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fade-enter-active,.fade-leave-active{transition:opacity .3s ease}.fade-enter-from,.fade-leave-to{opacity:0}.slide-up-enter-active,.slide-up-leave-active{transition:all .3s ease}.slide-up-enter-from{opacity:0;transform:translateY(30px)}.slide-up-leave-to{opacity:0;transform:translateY(-30px)}.toast{position:fixed;top:80px;right:20px;z-index:1000;min-width:320px;max-width:500px;transform:translate(100%);transition:transform .3s ease-in-out}.toast.show{transform:translate(0)}.toast-success{background:linear-gradient(135deg,#10b981,#059669);color:#fff;border:1px solid rgba(16,185,129,.3)}.toast-error{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff;border:1px solid rgba(239,68,68,.3)}.toast-info{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:1px solid rgba(59,130,246,.3)}.toast-warning{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;border:1px solid rgba(245,158,11,.3)}[v-cloak]{display:none}.custom-scrollbar{scrollbar-width:thin;scrollbar-color:rgba(102,126,234,.3) rgba(102,126,234,.05)}.dark .custom-scrollbar{scrollbar-color:rgba(129,140,248,.3) rgba(129,140,248,.05)}.custom-scrollbar::-webkit-scrollbar{width:8px;height:8px}.custom-scrollbar::-webkit-scrollbar-track{background:#667eea0d;border-radius:10px}.dark .custom-scrollbar::-webkit-scrollbar-track{background:#818cf80d}.custom-scrollbar::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#667eea66,#764ba266);border-radius:10px;-webkit-transition:background .3s ease;transition:background .3s ease}.dark .custom-scrollbar::-webkit-scrollbar-thumb{background:linear-gradient(135deg,#818cf866,#a78bfa66)}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#667eea99,#764ba299)}.dark .custom-scrollbar::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,#818cf899,#a78bfa99)}.custom-scrollbar::-webkit-scrollbar-thumb:active{background:linear-gradient(135deg,#667eeacc,#764ba2cc)}.dark .custom-scrollbar::-webkit-scrollbar-thumb:active{background:linear-gradient(135deg,#818cf8cc,#a78bfacc)}.modal-scroll-content{max-height:calc(90vh - 160px);overflow-y:auto;padding-right:8px}@media (max-width: 768px){.glass,.glass-strong{margin:16px;border-radius:20px}.stat-card{padding:16px}.tab-btn{font-size:14px;padding:12px 8px}.modal-scroll-content{max-height:calc(85vh - 120px)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.1);opacity:.8}to{transform:scale(1);opacity:1}}.animate-pulse{animation:pulse 2s infinite}.user-menu-dropdown{min-width:240px;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.tab-content{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}} diff --git a/web/admin-spa/dist/assets/toast-BvwA7Mwb.js b/web/admin-spa/dist/assets/toast-BvwA7Mwb.js deleted file mode 100644 index cded130b..00000000 --- a/web/admin-spa/dist/assets/toast-BvwA7Mwb.js +++ /dev/null @@ -1,22 +0,0 @@ -let e=null,r=0;function c(n,s="info",a="",i=3e3){e||(e=document.createElement("div"),e.id="toast-container",e.style.cssText="position: fixed; top: 20px; right: 20px; z-index: 10000;",document.body.appendChild(e));const o=++r,t=document.createElement("div");t.className=`toast rounded-2xl p-4 shadow-2xl backdrop-blur-sm toast-${s}`,t.style.cssText=` - position: relative; - min-width: 320px; - max-width: 500px; - margin-bottom: 16px; - transform: translateX(100%); - transition: transform 0.3s ease-in-out; - `;const l={success:"fas fa-check-circle",error:"fas fa-times-circle",warning:"fas fa-exclamation-triangle",info:"fas fa-info-circle"};return t.innerHTML=` -
-
- -
-
- ${a?`

${a}

`:""} -

${n}

-
- -
- `,e.appendChild(t),setTimeout(()=>{t.style.transform="translateX(0)"},10),i>0&&setTimeout(()=>{t.style.transform="translateX(100%)",setTimeout(()=>{t.remove()},300)},i),o}export{c as s}; diff --git a/web/admin-spa/dist/assets/vendor-BDiMbLwQ.js b/web/admin-spa/dist/assets/vendor-BDiMbLwQ.js deleted file mode 100644 index 7605e95a..00000000 --- a/web/admin-spa/dist/assets/vendor-BDiMbLwQ.js +++ /dev/null @@ -1,30 +0,0 @@ -var oa=typeof global=="object"&&global&&global.Object===Object&&global,Ro=typeof self=="object"&&self&&self.Object===Object&&self,bt=oa||Ro||Function("return this")(),ut=bt.Symbol,sa=Object.prototype,Lo=sa.hasOwnProperty,Co=sa.toString,Oe=ut?ut.toStringTag:void 0;function jo(t){var e=Lo.call(t,Oe),n=t[Oe];try{t[Oe]=void 0;var r=!0}catch{}var i=Co.call(t);return r&&(e?t[Oe]=n:delete t[Oe]),i}var No=Object.prototype,Io=No.toString;function Ho(t){return Io.call(t)}var Yo="[object Null]",ko="[object Undefined]",Kr=ut?ut.toStringTag:void 0;function zt(t){return t==null?t===void 0?ko:Yo:Kr&&Kr in Object(t)?jo(t):Ho(t)}function At(t){return t!=null&&typeof t=="object"}var qo="[object Symbol]";function vn(t){return typeof t=="symbol"||At(t)&&zt(t)==qo}function lr(t,e){for(var n=-1,r=t==null?0:t.length,i=Array(r);++n0){if(++e>=ms)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}function ws(t){return function(){return t}}var ln=function(){try{var t=Kt(Object,"defineProperty");return t({},"",{}),t}catch{}}(),xs=ln?function(t,e){return ln(t,"toString",{configurable:!0,enumerable:!1,value:ws(e),writable:!0})}:dr,ca=bs(xs);function Os(t,e){for(var n=-1,r=t==null?0:t.length;++n-1}var Ts=9007199254740991,_s=/^(?:0|[1-9]\d*)$/;function yn(t,e){var n=typeof t;return e=e??Ts,!!e&&(n=="number"||n!="symbol"&&_s.test(t))&&t>-1&&t%1==0&&t-1&&t%1==0&&t<=Ps}function me(t){return t!=null&&mr(t.length)&&!hr(t)}function Ds(t,e,n){if(!K(n))return!1;var r=typeof e;return(r=="number"?me(n)&&yn(e,n.length):r=="string"&&e in n)?He(n[e],t):!1}function Rs(t){return ha(function(e,n){var r=-1,i=n.length,a=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(a=t.length>3&&typeof a=="function"?(i--,a):void 0,o&&Ds(n[0],n[1],o)&&(a=i<3?void 0:a,i=1),e=Object(e);++r-1}function Wf(t,e){var n=this.__data__,r=bn(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this}function Ft(t){var e=-1,n=t==null?0:t.length;for(this.clear();++e0&&n(s)?e>1?qe(s,e-1,n,r,i):Or(i,s):r||(i[i.length]=s)}return i}function ou(t){var e=t==null?0:t.length;return e?qe(t,1):[]}function ba(t){return ca(da(t,void 0,ou),t+"")}var Ar=ya(Object.getPrototypeOf,Object),su="[object Object]",fu=Function.prototype,uu=Object.prototype,wa=fu.toString,cu=uu.hasOwnProperty,lu=wa.call(Object);function xa(t){if(!At(t)||zt(t)!=su)return!1;var e=Ar(t);if(e===null)return!0;var n=cu.call(e,"constructor")&&e.constructor;return typeof n=="function"&&n instanceof n&&wa.call(n)==lu}function du(t,e,n){var r=-1,i=t.length;e<0&&(e=-e>i?0:i+e),n=n>i?i:n,n<0&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var a=Array(i);++rs))return!1;var u=a.get(t),l=a.get(e);if(u&&l)return u==e&&l==t;var c=-1,p=!0,m=n&Vc?new Le:void 0;for(a.set(t,e),a.set(e,t);++c=e||E<0||c&&P>=a}function d(){var S=Dn();if(h(S))return w(S);s=setTimeout(d,g(S))}function w(S){return s=void 0,p&&r?m(S):(r=i=void 0,o)}function v(){s!==void 0&&clearTimeout(s),u=0,r=f=i=s=void 0}function x(){return s===void 0?o:w(Dn())}function A(){var S=Dn(),E=h(S);if(r=arguments,i=this,f=S,E){if(s===void 0)return y(f);if(c)return clearTimeout(s),s=setTimeout(d,e),m(f)}return s===void 0&&(s=setTimeout(d,e)),o}return A.cancel=v,A.flush=x,A}function Bn(t,e,n){(n!==void 0&&!He(t[e],n)||n===void 0&&!(e in t))&&pr(t,e,n)}function Ya(t){return At(t)&&me(t)}function Wn(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}function Nl(t){return ge(t,ke(t))}function Il(t,e,n,r,i,a,o){var s=Wn(t,n),f=Wn(e,n),u=o.get(f);if(u){Bn(t,n,u);return}var l=a?a(s,f,n+"",t,e,o):void 0,c=l===void 0;if(c){var p=Z(f),m=!p&&Pe(f),y=!p&&!m&&br(f);l=f,p||m||y?Z(s)?l=s:Ya(s)?l=ua(s):m?(c=!1,l=Aa(f,!0)):y?(c=!1,l=_a(f,!0)):l=[]:xa(f)||Fe(f)?(l=s,Fe(s)?l=Nl(s):(!K(s)||hr(s))&&(l=Ea(f))):c=!1}c&&(o.set(f,l),i(l,f,r,a,o),o.delete(f)),Bn(t,n,l)}function ka(t,e,n,r,i){t!==e&&Ha(e,function(a,o){if(i||(i=new mt),K(a))Il(t,e,o,n,ka,r,i);else{var s=r?r(Wn(t,o),a,o+"",t,e,i):void 0;s===void 0&&(s=a),Bn(t,o,s)}},ke)}function Hl(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}function Og(t,e,n){var r=t==null?0:t.length;if(!r)return-1;var i=r-1;return la(t,Ia(e),i,!0)}function Yl(t,e){var n=-1,r=me(t)?Array(t.length):[];return Dl(t,function(i,a,o){r[++n]=e(i,a,o)}),r}function kl(t,e){var n=Z(t)?lr:Yl;return n(t,Ia(e))}function Ag(t,e){return qe(kl(t,e),1)}var ql=1/0;function $g(t){var e=t==null?0:t.length;return e?qe(t,ql):[]}function Sg(t){for(var e=-1,n=t==null?0:t.length,r={};++e1),a}),ge(t,Ta(t),n),r&&(n=ae(n,Gl|Vl|Xl,Ul));for(var i=e.length;i--;)Wl(n,e[i]);return n});function qa(t,e,n,r){if(!K(t))return t;e=ve(e,t);for(var i=-1,a=e.length,o=a-1,s=t;s!=null&&++i=td){var u=Ql(t);if(u)return Mr(u);o=!1,i=Ra,f=new Le}else f=s;t:for(;++r"u")return!1;var e=wt(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function pd(t){var e=t.state;Object.keys(e.elements).forEach(function(n){var r=e.styles[n]||{},i=e.attributes[n]||{},a=e.elements[n];!ft(a)||!$t(a)||(Object.assign(a.style,r),Object.keys(i).forEach(function(o){var s=i[o];s===!1?a.removeAttribute(o):a.setAttribute(o,s===!0?"":s)}))})}function gd(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(r){var i=e.elements[r],a=e.attributes[r]||{},o=Object.keys(e.styles.hasOwnProperty(r)?e.styles[r]:n[r]),s=o.reduce(function(f,u){return f[u]="",f},{});!ft(i)||!$t(i)||(Object.assign(i.style,s),Object.keys(a).forEach(function(f){i.removeAttribute(f)}))})}}var Ua={name:"applyStyles",enabled:!0,phase:"write",fn:pd,effect:gd,requires:["computeStyles"]};function xt(t){return t.split("-")[0]}var Wt=Math.max,hn=Math.min,ce=Math.round;function le(t,e){e===void 0&&(e=!1);var n=t.getBoundingClientRect(),r=1,i=1;if(ft(t)&&e){var a=t.offsetHeight,o=t.offsetWidth;o>0&&(r=ce(n.width)/o||1),a>0&&(i=ce(n.height)/a||1)}return{width:n.width/r,height:n.height/i,top:n.top/i,right:n.right/r,bottom:n.bottom/i,left:n.left/r,x:n.left/r,y:n.top/i}}function Er(t){var e=le(t),n=t.offsetWidth,r=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-r)<=1&&(r=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:r}}function Ga(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&_r(n)){var r=e;do{if(r&&t.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Et(t){return wt(t).getComputedStyle(t)}function md(t){return["table","td","th"].indexOf($t(t))>=0}function Yt(t){return((ue(t)?t.ownerDocument:t.document)||window.document).documentElement}function An(t){return $t(t)==="html"?t:t.assignedSlot||t.parentNode||(_r(t)?t.host:null)||Yt(t)}function _i(t){return!ft(t)||Et(t).position==="fixed"?null:t.offsetParent}function vd(t){var e=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&ft(t)){var r=Et(t);if(r.position==="fixed")return null}var i=An(t);for(_r(i)&&(i=i.host);ft(i)&&["html","body"].indexOf($t(i))<0;){var a=Et(i);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||e&&a.willChange==="filter"||e&&a.filter&&a.filter!=="none")return i;i=i.parentNode}return null}function We(t){for(var e=wt(t),n=_i(t);n&&md(n)&&Et(n).position==="static";)n=_i(n);return n&&($t(n)==="html"||$t(n)==="body"&&Et(n).position==="static")?e:n||vd(t)||e}function Fr(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Te(t,e,n){return Wt(t,hn(e,n))}function yd(t,e,n){var r=Te(t,e,n);return r>n?n:r}function Va(){return{top:0,right:0,bottom:0,left:0}}function Xa(t){return Object.assign({},Va(),t)}function za(t,e){return e.reduce(function(n,r){return n[r]=t,n},{})}var bd=function(t,e){return t=typeof t=="function"?t(Object.assign({},e.rects,{placement:e.placement})):t,Xa(typeof t!="number"?t:za(t,Be))};function wd(t){var e,n=t.state,r=t.name,i=t.options,a=n.elements.arrow,o=n.modifiersData.popperOffsets,s=xt(n.placement),f=Fr(s),u=[et,lt].indexOf(s)>=0,l=u?"height":"width";if(!(!a||!o)){var c=bd(i.padding,n),p=Er(a),m=f==="y"?tt:et,y=f==="y"?ct:lt,g=n.rects.reference[l]+n.rects.reference[f]-o[f]-n.rects.popper[l],h=o[f]-n.rects.reference[f],d=We(a),w=d?f==="y"?d.clientHeight||0:d.clientWidth||0:0,v=g/2-h/2,x=c[m],A=w-p[l]-c[y],S=w/2-p[l]/2+v,E=Te(x,S,A),P=f;n.modifiersData[r]=(e={},e[P]=E,e.centerOffset=E-S,e)}}function xd(t){var e=t.state,n=t.options,r=n.element,i=r===void 0?"[data-popper-arrow]":r;i!=null&&(typeof i=="string"&&(i=e.elements.popper.querySelector(i),!i)||!Ga(e.elements.popper,i)||(e.elements.arrow=i))}var Od={name:"arrow",enabled:!0,phase:"main",fn:wd,effect:xd,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function de(t){return t.split("-")[1]}var Ad={top:"auto",right:"auto",bottom:"auto",left:"auto"};function $d(t){var e=t.x,n=t.y,r=window,i=r.devicePixelRatio||1;return{x:ce(e*i)/i||0,y:ce(n*i)/i||0}}function Ei(t){var e,n=t.popper,r=t.popperRect,i=t.placement,a=t.variation,o=t.offsets,s=t.position,f=t.gpuAcceleration,u=t.adaptive,l=t.roundOffsets,c=t.isFixed,p=o.x,m=p===void 0?0:p,y=o.y,g=y===void 0?0:y,h=typeof l=="function"?l({x:m,y:g}):{x:m,y:g};m=h.x,g=h.y;var d=o.hasOwnProperty("x"),w=o.hasOwnProperty("y"),v=et,x=tt,A=window;if(u){var S=We(n),E="clientHeight",P="clientWidth";if(S===wt(n)&&(S=Yt(n),Et(S).position!=="static"&&s==="absolute"&&(E="scrollHeight",P="scrollWidth")),S=S,i===tt||(i===et||i===lt)&&a===Ce){x=ct;var L=c&&S===A&&A.visualViewport?A.visualViewport.height:S[E];g-=L-r.height,g*=f?1:-1}if(i===et||(i===tt||i===ct)&&a===Ce){v=lt;var D=c&&S===A&&A.visualViewport?A.visualViewport.width:S[P];m-=D-r.width,m*=f?1:-1}}var F=Object.assign({position:s},u&&Ad),C=l===!0?$d({x:m,y:g}):{x:m,y:g};if(m=C.x,g=C.y,f){var j;return Object.assign({},F,(j={},j[x]=w?"0":"",j[v]=d?"0":"",j.transform=(A.devicePixelRatio||1)<=1?"translate("+m+"px, "+g+"px)":"translate3d("+m+"px, "+g+"px, 0)",j))}return Object.assign({},F,(e={},e[x]=w?g+"px":"",e[v]=d?m+"px":"",e.transform="",e))}function Sd(t){var e=t.state,n=t.options,r=n.gpuAcceleration,i=r===void 0?!0:r,a=n.adaptive,o=a===void 0?!0:a,s=n.roundOffsets,f=s===void 0?!0:s,u={placement:xt(e.placement),variation:de(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:i,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,Ei(Object.assign({},u,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:f})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,Ei(Object.assign({},u,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}var Za={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Sd,data:{}},Ke={passive:!0};function Md(t){var e=t.state,n=t.instance,r=t.options,i=r.scroll,a=i===void 0?!0:i,o=r.resize,s=o===void 0?!0:o,f=wt(e.elements.popper),u=[].concat(e.scrollParents.reference,e.scrollParents.popper);return a&&u.forEach(function(l){l.addEventListener("scroll",n.update,Ke)}),s&&f.addEventListener("resize",n.update,Ke),function(){a&&u.forEach(function(l){l.removeEventListener("scroll",n.update,Ke)}),s&&f.removeEventListener("resize",n.update,Ke)}}var Ka={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Md,data:{}},Td={left:"right",right:"left",bottom:"top",top:"bottom"};function on(t){return t.replace(/left|right|bottom|top/g,function(e){return Td[e]})}var _d={start:"end",end:"start"};function Fi(t){return t.replace(/start|end/g,function(e){return _d[e]})}function Pr(t){var e=wt(t),n=e.pageXOffset,r=e.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Dr(t){return le(Yt(t)).left+Pr(t).scrollLeft}function Ed(t){var e=wt(t),n=Yt(t),r=e.visualViewport,i=n.clientWidth,a=n.clientHeight,o=0,s=0;return r&&(i=r.width,a=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(o=r.offsetLeft,s=r.offsetTop)),{width:i,height:a,x:o+Dr(t),y:s}}function Fd(t){var e,n=Yt(t),r=Pr(t),i=(e=t.ownerDocument)==null?void 0:e.body,a=Wt(n.scrollWidth,n.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),o=Wt(n.scrollHeight,n.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-r.scrollLeft+Dr(t),f=-r.scrollTop;return Et(i||n).direction==="rtl"&&(s+=Wt(n.clientWidth,i?i.clientWidth:0)-a),{width:a,height:o,x:s,y:f}}function Rr(t){var e=Et(t),n=e.overflow,r=e.overflowX,i=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+i+r)}function Ja(t){return["html","body","#document"].indexOf($t(t))>=0?t.ownerDocument.body:ft(t)&&Rr(t)?t:Ja(An(t))}function _e(t,e){var n;e===void 0&&(e=[]);var r=Ja(t),i=r===((n=t.ownerDocument)==null?void 0:n.body),a=wt(r),o=i?[a].concat(a.visualViewport||[],Rr(r)?r:[]):r,s=e.concat(o);return i?s:s.concat(_e(An(o)))}function Un(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Pd(t){var e=le(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}function Pi(t,e){return e===Ba?Un(Ed(t)):ue(e)?Pd(e):Un(Fd(Yt(t)))}function Dd(t){var e=_e(An(t)),n=["absolute","fixed"].indexOf(Et(t).position)>=0,r=n&&ft(t)?We(t):t;return ue(r)?e.filter(function(i){return ue(i)&&Ga(i,r)&&$t(i)!=="body"}):[]}function Rd(t,e,n){var r=e==="clippingParents"?Dd(t):[].concat(e),i=[].concat(r,[n]),a=i[0],o=i.reduce(function(s,f){var u=Pi(t,f);return s.top=Wt(u.top,s.top),s.right=hn(u.right,s.right),s.bottom=hn(u.bottom,s.bottom),s.left=Wt(u.left,s.left),s},Pi(t,a));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function Qa(t){var e=t.reference,n=t.element,r=t.placement,i=r?xt(r):null,a=r?de(r):null,o=e.x+e.width/2-n.width/2,s=e.y+e.height/2-n.height/2,f;switch(i){case tt:f={x:o,y:e.y-n.height};break;case ct:f={x:o,y:e.y+e.height};break;case lt:f={x:e.x+e.width,y:s};break;case et:f={x:e.x-n.width,y:s};break;default:f={x:e.x,y:e.y}}var u=i?Fr(i):null;if(u!=null){var l=u==="y"?"height":"width";switch(a){case fe:f[u]=f[u]-(e[l]/2-n[l]/2);break;case Ce:f[u]=f[u]+(e[l]/2-n[l]/2);break}}return f}function je(t,e){e===void 0&&(e={});var n=e,r=n.placement,i=r===void 0?t.placement:r,a=n.boundary,o=a===void 0?nd:a,s=n.rootBoundary,f=s===void 0?Ba:s,u=n.elementContext,l=u===void 0?Ae:u,c=n.altBoundary,p=c===void 0?!1:c,m=n.padding,y=m===void 0?0:m,g=Xa(typeof y!="number"?y:za(y,Be)),h=l===Ae?rd:Ae,d=t.rects.popper,w=t.elements[p?h:l],v=Rd(ue(w)?w:w.contextElement||Yt(t.elements.popper),o,f),x=le(t.elements.reference),A=Qa({reference:x,element:d,placement:i}),S=Un(Object.assign({},d,A)),E=l===Ae?S:x,P={top:v.top-E.top+g.top,bottom:E.bottom-v.bottom+g.bottom,left:v.left-E.left+g.left,right:E.right-v.right+g.right},L=t.modifiersData.offset;if(l===Ae&&L){var D=L[i];Object.keys(P).forEach(function(F){var C=[lt,ct].indexOf(F)>=0?1:-1,j=[tt,ct].indexOf(F)>=0?"y":"x";P[F]+=D[j]*C})}return P}function Ld(t,e){e===void 0&&(e={});var n=e,r=n.placement,i=n.boundary,a=n.rootBoundary,o=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,u=f===void 0?Wa:f,l=de(r),c=l?s?Ti:Ti.filter(function(y){return de(y)===l}):Be,p=c.filter(function(y){return u.indexOf(y)>=0});p.length===0&&(p=c);var m=p.reduce(function(y,g){return y[g]=je(t,{placement:g,boundary:i,rootBoundary:a,padding:o})[xt(g)],y},{});return Object.keys(m).sort(function(y,g){return m[y]-m[g]})}function Cd(t){if(xt(t)===Tr)return[];var e=on(t);return[Fi(t),e,Fi(e)]}function jd(t){var e=t.state,n=t.options,r=t.name;if(!e.modifiersData[r]._skip){for(var i=n.mainAxis,a=i===void 0?!0:i,o=n.altAxis,s=o===void 0?!0:o,f=n.fallbackPlacements,u=n.padding,l=n.boundary,c=n.rootBoundary,p=n.altBoundary,m=n.flipVariations,y=m===void 0?!0:m,g=n.allowedAutoPlacements,h=e.options.placement,d=xt(h),w=d===h,v=f||(w||!y?[on(h)]:Cd(h)),x=[h].concat(v).reduce(function(k,W){return k.concat(xt(W)===Tr?Ld(e,{placement:W,boundary:l,rootBoundary:c,padding:u,flipVariations:y,allowedAutoPlacements:g}):W)},[]),A=e.rects.reference,S=e.rects.popper,E=new Map,P=!0,L=x[0],D=0;D=0,$=T?"width":"height",b=je(e,{placement:F,boundary:l,rootBoundary:c,altBoundary:p,padding:u}),M=T?j?lt:et:j?ct:tt;A[$]>S[$]&&(M=on(M));var O=on(M),_=[];if(a&&_.push(b[C]<=0),s&&_.push(b[M]<=0,b[O]<=0),_.every(function(k){return k})){L=F,P=!1;break}E.set(F,_)}if(P)for(var R=y?3:1,N=function(k){var W=x.find(function(nt){var z=E.get(nt);if(z)return z.slice(0,k).every(function(J){return J})});if(W)return L=W,"break"},H=R;H>0;H--){var Y=N(H);if(Y==="break")break}e.placement!==L&&(e.modifiersData[r]._skip=!0,e.placement=L,e.reset=!0)}}var Nd={name:"flip",enabled:!0,phase:"main",fn:jd,requiresIfExists:["offset"],data:{_skip:!1}};function Di(t,e,n){return n===void 0&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function Ri(t){return[tt,lt,ct,et].some(function(e){return t[e]>=0})}function Id(t){var e=t.state,n=t.name,r=e.rects.reference,i=e.rects.popper,a=e.modifiersData.preventOverflow,o=je(e,{elementContext:"reference"}),s=je(e,{altBoundary:!0}),f=Di(o,r),u=Di(s,i,a),l=Ri(f),c=Ri(u);e.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:u,isReferenceHidden:l,hasPopperEscaped:c},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":l,"data-popper-escaped":c})}var Hd={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Id};function Yd(t,e,n){var r=xt(t),i=[et,tt].indexOf(r)>=0?-1:1,a=typeof n=="function"?n(Object.assign({},e,{placement:t})):n,o=a[0],s=a[1];return o=o||0,s=(s||0)*i,[et,lt].indexOf(r)>=0?{x:s,y:o}:{x:o,y:s}}function kd(t){var e=t.state,n=t.options,r=t.name,i=n.offset,a=i===void 0?[0,0]:i,o=Wa.reduce(function(l,c){return l[c]=Yd(c,e.rects,a),l},{}),s=o[e.placement],f=s.x,u=s.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=f,e.modifiersData.popperOffsets.y+=u),e.modifiersData[r]=o}var qd={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:kd};function Bd(t){var e=t.state,n=t.name;e.modifiersData[n]=Qa({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})}var to={name:"popperOffsets",enabled:!0,phase:"read",fn:Bd,data:{}};function Wd(t){return t==="x"?"y":"x"}function Ud(t){var e=t.state,n=t.options,r=t.name,i=n.mainAxis,a=i===void 0?!0:i,o=n.altAxis,s=o===void 0?!1:o,f=n.boundary,u=n.rootBoundary,l=n.altBoundary,c=n.padding,p=n.tether,m=p===void 0?!0:p,y=n.tetherOffset,g=y===void 0?0:y,h=je(e,{boundary:f,rootBoundary:u,padding:c,altBoundary:l}),d=xt(e.placement),w=de(e.placement),v=!w,x=Fr(d),A=Wd(x),S=e.modifiersData.popperOffsets,E=e.rects.reference,P=e.rects.popper,L=typeof g=="function"?g(Object.assign({},e.rects,{placement:e.placement})):g,D=typeof L=="number"?{mainAxis:L,altAxis:L}:Object.assign({mainAxis:0,altAxis:0},L),F=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,C={x:0,y:0};if(S){if(a){var j,T=x==="y"?tt:et,$=x==="y"?ct:lt,b=x==="y"?"height":"width",M=S[x],O=M+h[T],_=M-h[$],R=m?-P[b]/2:0,N=w===fe?E[b]:P[b],H=w===fe?-P[b]:-E[b],Y=e.elements.arrow,k=m&&Y?Er(Y):{width:0,height:0},W=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:Va(),nt=W[T],z=W[$],J=Te(0,E[b],k[b]),ot=v?E[b]/2-R-J-nt-D.mainAxis:N-J-nt-D.mainAxis,U=v?-E[b]/2+R+J+z+D.mainAxis:H+J+z+D.mainAxis,X=e.elements.arrow&&We(e.elements.arrow),dt=X?x==="y"?X.clientTop||0:X.clientLeft||0:0,ht=(j=F==null?void 0:F[x])!=null?j:0,Jt=M+ot-ht-dt,Qt=M+U-ht,te=Te(m?hn(O,Jt):O,M,m?Wt(_,Qt):_);S[x]=te,C[x]=te-M}if(s){var ee,we=x==="x"?tt:et,xe=x==="x"?ct:lt,Lt=S[A],ze=A==="y"?"height":"width",Ur=Lt+h[we],Gr=Lt-h[xe],_n=[tt,et].indexOf(d)!==-1,Vr=(ee=F==null?void 0:F[A])!=null?ee:0,Xr=_n?Ur:Lt-E[ze]-P[ze]-Vr+D.altAxis,zr=_n?Lt+E[ze]+P[ze]-Vr-D.altAxis:Gr,Zr=m&&_n?yd(Xr,Lt,zr):Te(m?Xr:Ur,Lt,m?zr:Gr);S[A]=Zr,C[A]=Zr-Lt}e.modifiersData[r]=C}}var Gd={name:"preventOverflow",enabled:!0,phase:"main",fn:Ud,requiresIfExists:["offset"]};function Vd(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function Xd(t){return t===wt(t)||!ft(t)?Pr(t):Vd(t)}function zd(t){var e=t.getBoundingClientRect(),n=ce(e.width)/t.offsetWidth||1,r=ce(e.height)/t.offsetHeight||1;return n!==1||r!==1}function Zd(t,e,n){n===void 0&&(n=!1);var r=ft(e),i=ft(e)&&zd(e),a=Yt(e),o=le(t,i),s={scrollLeft:0,scrollTop:0},f={x:0,y:0};return(r||!r&&!n)&&(($t(e)!=="body"||Rr(a))&&(s=Xd(e)),ft(e)?(f=le(e,!0),f.x+=e.clientLeft,f.y+=e.clientTop):a&&(f.x=Dr(a))),{x:o.left+s.scrollLeft-f.x,y:o.top+s.scrollTop-f.y,width:o.width,height:o.height}}function Kd(t){var e=new Map,n=new Set,r=[];t.forEach(function(a){e.set(a.name,a)});function i(a){n.add(a.name);var o=[].concat(a.requires||[],a.requiresIfExists||[]);o.forEach(function(s){if(!n.has(s)){var f=e.get(s);f&&i(f)}}),r.push(a)}return t.forEach(function(a){n.has(a.name)||i(a)}),r}function Jd(t){var e=Kd(t);return hd.reduce(function(n,r){return n.concat(e.filter(function(i){return i.phase===r}))},[])}function Qd(t){var e;return function(){return e||(e=new Promise(function(n){Promise.resolve().then(function(){e=void 0,n(t())})})),e}}function th(t){var e=t.reduce(function(n,r){var i=n[r.name];return n[r.name]=i?Object.assign({},i,r,{options:Object.assign({},i.options,r.options),data:Object.assign({},i.data,r.data)}):r,n},{});return Object.keys(e).map(function(n){return e[n]})}var Li={placement:"bottom",modifiers:[],strategy:"absolute"};function Ci(){for(var t=arguments.length,e=new Array(t),n=0;n1)&&(t=1),t}function Qe(t){return t<=1?"".concat(Number(t)*100,"%"):t}function qt(t){return t.length===1?"0"+t:String(t)}function ah(t,e,n){return{r:V(t,255)*255,g:V(e,255)*255,b:V(n,255)*255}}function ji(t,e,n){t=V(t,255),e=V(e,255),n=V(n,255);var r=Math.max(t,e,n),i=Math.min(t,e,n),a=0,o=0,s=(r+i)/2;if(r===i)o=0,a=0;else{var f=r-i;switch(o=s>.5?f/(2-r-i):f/(r+i),r){case t:a=(e-n)/f+(e1&&(n-=1),n<1/6?t+(e-t)*(6*n):n<1/2?e:n<2/3?t+(e-t)*(2/3-n)*6:t}function oh(t,e,n){var r,i,a;if(t=V(t,360),e=V(e,100),n=V(n,100),e===0)i=n,a=n,r=n;else{var o=n<.5?n*(1+e):n+e-n*e,s=2*n-o;r=Rn(s,o,t+1/3),i=Rn(s,o,t),a=Rn(s,o,t-1/3)}return{r:r*255,g:i*255,b:a*255}}function Ni(t,e,n){t=V(t,255),e=V(e,255),n=V(n,255);var r=Math.max(t,e,n),i=Math.min(t,e,n),a=0,o=r,s=r-i,f=r===0?0:s/r;if(r===i)a=0;else{switch(r){case t:a=(e-n)/s+(e>16,g:(t&65280)>>8,b:t&255}}var Gn={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function lh(t){var e={r:0,g:0,b:0},n=1,r=null,i=null,a=null,o=!1,s=!1;return typeof t=="string"&&(t=ph(t)),typeof t=="object"&&(Tt(t.r)&&Tt(t.g)&&Tt(t.b)?(e=ah(t.r,t.g,t.b),o=!0,s=String(t.r).substr(-1)==="%"?"prgb":"rgb"):Tt(t.h)&&Tt(t.s)&&Tt(t.v)?(r=Qe(t.s),i=Qe(t.v),e=sh(t.h,r,i),o=!0,s="hsv"):Tt(t.h)&&Tt(t.s)&&Tt(t.l)&&(r=Qe(t.s),a=Qe(t.l),e=oh(t.h,r,a),o=!0,s="hsl"),Object.prototype.hasOwnProperty.call(t,"a")&&(n=t.a)),n=eo(n),{ok:o,format:t.format||s,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:n}}var dh="[-\\+]?\\d+%?",hh="[-\\+]?\\d*\\.\\d+%?",Ct="(?:".concat(hh,")|(?:").concat(dh,")"),Ln="[\\s|\\(]+(".concat(Ct,")[,|\\s]+(").concat(Ct,")[,|\\s]+(").concat(Ct,")\\s*\\)?"),Cn="[\\s|\\(]+(".concat(Ct,")[,|\\s]+(").concat(Ct,")[,|\\s]+(").concat(Ct,")[,|\\s]+(").concat(Ct,")\\s*\\)?"),pt={CSS_UNIT:new RegExp(Ct),rgb:new RegExp("rgb"+Ln),rgba:new RegExp("rgba"+Cn),hsl:new RegExp("hsl"+Ln),hsla:new RegExp("hsla"+Cn),hsv:new RegExp("hsv"+Ln),hsva:new RegExp("hsva"+Cn),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function ph(t){if(t=t.trim().toLowerCase(),t.length===0)return!1;var e=!1;if(Gn[t])t=Gn[t],e=!0;else if(t==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var n=pt.rgb.exec(t);return n?{r:n[1],g:n[2],b:n[3]}:(n=pt.rgba.exec(t),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=pt.hsl.exec(t),n?{h:n[1],s:n[2],l:n[3]}:(n=pt.hsla.exec(t),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=pt.hsv.exec(t),n?{h:n[1],s:n[2],v:n[3]}:(n=pt.hsva.exec(t),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=pt.hex8.exec(t),n?{r:rt(n[1]),g:rt(n[2]),b:rt(n[3]),a:Hi(n[4]),format:e?"name":"hex8"}:(n=pt.hex6.exec(t),n?{r:rt(n[1]),g:rt(n[2]),b:rt(n[3]),format:e?"name":"hex"}:(n=pt.hex4.exec(t),n?{r:rt(n[1]+n[1]),g:rt(n[2]+n[2]),b:rt(n[3]+n[3]),a:Hi(n[4]+n[4]),format:e?"name":"hex8"}:(n=pt.hex3.exec(t),n?{r:rt(n[1]+n[1]),g:rt(n[2]+n[2]),b:rt(n[3]+n[3]),format:e?"name":"hex"}:!1)))))))))}function Tt(t){return!!pt.CSS_UNIT.exec(String(t))}var Ng=function(){function t(e,n){e===void 0&&(e=""),n===void 0&&(n={});var r;if(e instanceof t)return e;typeof e=="number"&&(e=ch(e)),this.originalInput=e;var i=lh(e);this.originalInput=e,this.r=i.r,this.g=i.g,this.b=i.b,this.a=i.a,this.roundA=Math.round(100*this.a)/100,this.format=(r=n.format)!==null&&r!==void 0?r:i.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=i.ok}return t.prototype.isDark=function(){return this.getBrightness()<128},t.prototype.isLight=function(){return!this.isDark()},t.prototype.getBrightness=function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},t.prototype.getLuminance=function(){var e=this.toRgb(),n,r,i,a=e.r/255,o=e.g/255,s=e.b/255;return a<=.03928?n=a/12.92:n=Math.pow((a+.055)/1.055,2.4),o<=.03928?r=o/12.92:r=Math.pow((o+.055)/1.055,2.4),s<=.03928?i=s/12.92:i=Math.pow((s+.055)/1.055,2.4),.2126*n+.7152*r+.0722*i},t.prototype.getAlpha=function(){return this.a},t.prototype.setAlpha=function(e){return this.a=eo(e),this.roundA=Math.round(100*this.a)/100,this},t.prototype.isMonochrome=function(){var e=this.toHsl().s;return e===0},t.prototype.toHsv=function(){var e=Ni(this.r,this.g,this.b);return{h:e.h*360,s:e.s,v:e.v,a:this.a}},t.prototype.toHsvString=function(){var e=Ni(this.r,this.g,this.b),n=Math.round(e.h*360),r=Math.round(e.s*100),i=Math.round(e.v*100);return this.a===1?"hsv(".concat(n,", ").concat(r,"%, ").concat(i,"%)"):"hsva(".concat(n,", ").concat(r,"%, ").concat(i,"%, ").concat(this.roundA,")")},t.prototype.toHsl=function(){var e=ji(this.r,this.g,this.b);return{h:e.h*360,s:e.s,l:e.l,a:this.a}},t.prototype.toHslString=function(){var e=ji(this.r,this.g,this.b),n=Math.round(e.h*360),r=Math.round(e.s*100),i=Math.round(e.l*100);return this.a===1?"hsl(".concat(n,", ").concat(r,"%, ").concat(i,"%)"):"hsla(".concat(n,", ").concat(r,"%, ").concat(i,"%, ").concat(this.roundA,")")},t.prototype.toHex=function(e){return e===void 0&&(e=!1),Ii(this.r,this.g,this.b,e)},t.prototype.toHexString=function(e){return e===void 0&&(e=!1),"#"+this.toHex(e)},t.prototype.toHex8=function(e){return e===void 0&&(e=!1),fh(this.r,this.g,this.b,this.a,e)},t.prototype.toHex8String=function(e){return e===void 0&&(e=!1),"#"+this.toHex8(e)},t.prototype.toHexShortString=function(e){return e===void 0&&(e=!1),this.a===1?this.toHexString(e):this.toHex8String(e)},t.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},t.prototype.toRgbString=function(){var e=Math.round(this.r),n=Math.round(this.g),r=Math.round(this.b);return this.a===1?"rgb(".concat(e,", ").concat(n,", ").concat(r,")"):"rgba(".concat(e,", ").concat(n,", ").concat(r,", ").concat(this.roundA,")")},t.prototype.toPercentageRgb=function(){var e=function(n){return"".concat(Math.round(V(n,255)*100),"%")};return{r:e(this.r),g:e(this.g),b:e(this.b),a:this.a}},t.prototype.toPercentageRgbString=function(){var e=function(n){return Math.round(V(n,255)*100)};return this.a===1?"rgb(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%)"):"rgba(".concat(e(this.r),"%, ").concat(e(this.g),"%, ").concat(e(this.b),"%, ").concat(this.roundA,")")},t.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var e="#"+Ii(this.r,this.g,this.b,!1),n=0,r=Object.entries(Gn);n=0,a=!n&&i&&(e.startsWith("hex")||e==="name");return a?e==="name"&&this.a===0?this.toName():this.toRgbString():(e==="rgb"&&(r=this.toRgbString()),e==="prgb"&&(r=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(r=this.toHexString()),e==="hex3"&&(r=this.toHexString(!0)),e==="hex4"&&(r=this.toHex8String(!0)),e==="hex8"&&(r=this.toHex8String()),e==="name"&&(r=this.toName()),e==="hsl"&&(r=this.toHslString()),e==="hsv"&&(r=this.toHsvString()),r||this.toHexString())},t.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},t.prototype.clone=function(){return new t(this.toString())},t.prototype.lighten=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.l+=e/100,n.l=Je(n.l),new t(n)},t.prototype.brighten=function(e){e===void 0&&(e=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(e/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(e/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(e/100)))),new t(n)},t.prototype.darken=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.l-=e/100,n.l=Je(n.l),new t(n)},t.prototype.tint=function(e){return e===void 0&&(e=10),this.mix("white",e)},t.prototype.shade=function(e){return e===void 0&&(e=10),this.mix("black",e)},t.prototype.desaturate=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.s-=e/100,n.s=Je(n.s),new t(n)},t.prototype.saturate=function(e){e===void 0&&(e=10);var n=this.toHsl();return n.s+=e/100,n.s=Je(n.s),new t(n)},t.prototype.greyscale=function(){return this.desaturate(100)},t.prototype.spin=function(e){var n=this.toHsl(),r=(n.h+e)%360;return n.h=r<0?360+r:r,new t(n)},t.prototype.mix=function(e,n){n===void 0&&(n=50);var r=this.toRgb(),i=new t(e).toRgb(),a=n/100,o={r:(i.r-r.r)*a+r.r,g:(i.g-r.g)*a+r.g,b:(i.b-r.b)*a+r.b,a:(i.a-r.a)*a+r.a};return new t(o)},t.prototype.analogous=function(e,n){e===void 0&&(e=6),n===void 0&&(n=30);var r=this.toHsl(),i=360/n,a=[this];for(r.h=(r.h-(i*e>>1)+720)%360;--e;)r.h=(r.h+i)%360,a.push(new t(r));return a},t.prototype.complement=function(){var e=this.toHsl();return e.h=(e.h+180)%360,new t(e)},t.prototype.monochromatic=function(e){e===void 0&&(e=6);for(var n=this.toHsv(),r=n.h,i=n.s,a=n.v,o=[],s=1/e;e--;)o.push(new t({h:r,s:i,v:a})),a=(a+s)%1;return o},t.prototype.splitcomplement=function(){var e=this.toHsl(),n=e.h;return[this,new t({h:(n+72)%360,s:e.s,l:e.l}),new t({h:(n+216)%360,s:e.s,l:e.l})]},t.prototype.onBackground=function(e){var n=this.toRgb(),r=new t(e).toRgb(),i=n.a+r.a*(1-n.a);return new t({r:(n.r*n.a+r.r*r.a*(1-n.a))/i,g:(n.g*n.a+r.g*r.a*(1-n.a))/i,b:(n.b*n.a+r.b*r.a*(1-n.a))/i,a:i})},t.prototype.triad=function(){return this.polyad(3)},t.prototype.tetrad=function(){return this.polyad(4)},t.prototype.polyad=function(e){for(var n=this.toHsl(),r=n.h,i=[this],a=360/e,o=1;o=$?T:""+Array($+1-M.length).join(b)+T},x={s:v,z:function(T){var $=-T.utcOffset(),b=Math.abs($),M=Math.floor(b/60),O=b%60;return($<=0?"+":"-")+v(M,2,"0")+":"+v(O,2,"0")},m:function T($,b){if($.date()1)return T(R[0])}else{var N=$.name;S[N]=$,O=N}return!M&&O&&(A=O),O||!M&&A},D=function(T,$){if(P(T))return T.clone();var b=typeof $=="object"?$:{};return b.date=T,b.args=arguments,new C(b)},F=x;F.l=L,F.i=P,F.w=function(T,$){return D(T,{locale:$.$L,utc:$.$u,x:$.$x,$offset:$.$offset})};var C=function(){function T(b){this.$L=L(b.locale,null,!0),this.parse(b),this.$x=this.$x||b.x||{},this[E]=!0}var $=T.prototype;return $.parse=function(b){this.$d=function(M){var O=M.date,_=M.utc;if(O===null)return new Date(NaN);if(F.u(O))return new Date;if(O instanceof Date)return new Date(O);if(typeof O=="string"&&!/Z$/i.test(O)){var R=O.match(h);if(R){var N=R[2]-1||0,H=(R[7]||"0").substring(0,3);return _?new Date(Date.UTC(R[1],N,R[3]||1,R[4]||0,R[5]||0,R[6]||0,H)):new Date(R[1],N,R[3]||1,R[4]||0,R[5]||0,R[6]||0,H)}}return new Date(O)}(b),this.init()},$.init=function(){var b=this.$d;this.$y=b.getFullYear(),this.$M=b.getMonth(),this.$D=b.getDate(),this.$W=b.getDay(),this.$H=b.getHours(),this.$m=b.getMinutes(),this.$s=b.getSeconds(),this.$ms=b.getMilliseconds()},$.$utils=function(){return F},$.isValid=function(){return this.$d.toString()!==g},$.isSame=function(b,M){var O=D(b);return this.startOf(M)<=O&&O<=this.endOf(M)},$.isAfter=function(b,M){return D(b)68?1900:2e3)},l=function(h){return function(d){this[h]=+d}},c=[/[+-]\d\d:?(\d\d)?|Z/,function(h){(this.zone||(this.zone={})).offset=function(d){if(!d||d==="Z")return 0;var w=d.match(/([+-]|\d\d)/g),v=60*w[1]+(+w[2]||0);return v===0?0:w[0]==="+"?-v:v}(h)}],p=function(h){var d=f[h];return d&&(d.indexOf?d:d.s.concat(d.f))},m=function(h,d){var w,v=f.meridiem;if(v){for(var x=1;x<=24;x+=1)if(h.indexOf(v(x,0,d))>-1){w=x>12;break}}else w=h===(d?"pm":"PM");return w},y={A:[s,function(h){this.afternoon=m(h,!1)}],a:[s,function(h){this.afternoon=m(h,!0)}],Q:[i,function(h){this.month=3*(h-1)+1}],S:[i,function(h){this.milliseconds=100*+h}],SS:[a,function(h){this.milliseconds=10*+h}],SSS:[/\d{3}/,function(h){this.milliseconds=+h}],s:[o,l("seconds")],ss:[o,l("seconds")],m:[o,l("minutes")],mm:[o,l("minutes")],H:[o,l("hours")],h:[o,l("hours")],HH:[o,l("hours")],hh:[o,l("hours")],D:[o,l("day")],DD:[a,l("day")],Do:[s,function(h){var d=f.ordinal,w=h.match(/\d+/);if(this.day=w[0],d)for(var v=1;v<=31;v+=1)d(v).replace(/\[|\]/g,"")===h&&(this.day=v)}],w:[o,l("week")],ww:[a,l("week")],M:[o,l("month")],MM:[a,l("month")],MMM:[s,function(h){var d=p("months"),w=(p("monthsShort")||d.map(function(v){return v.slice(0,3)})).indexOf(h)+1;if(w<1)throw new Error;this.month=w%12||w}],MMMM:[s,function(h){var d=p("months").indexOf(h)+1;if(d<1)throw new Error;this.month=d%12||d}],Y:[/[+-]?\d+/,l("year")],YY:[a,function(h){this.year=u(h)}],YYYY:[/\d{4}/,l("year")],Z:c,ZZ:c};function g(h){var d,w;d=h,w=f&&f.formats;for(var v=(h=d.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(D,F,C){var j=C&&C.toUpperCase();return F||w[C]||n[C]||w[j].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(T,$,b){return $||b.slice(1)})})).match(r),x=v.length,A=0;A-1)return new Date((O==="X"?1e3:1)*M);var N=g(O)(M),H=N.year,Y=N.month,k=N.day,W=N.hours,nt=N.minutes,z=N.seconds,J=N.milliseconds,ot=N.zone,U=N.week,X=new Date,dt=k||(H||Y?1:X.getDate()),ht=H||X.getFullYear(),Jt=0;H&&!Y||(Jt=Y>0?Y-1:X.getMonth());var Qt,te=W||0,ee=nt||0,we=z||0,xe=J||0;return ot?new Date(Date.UTC(ht,Jt,dt,te,ee,we,xe+60*ot.offset*1e3)):_?new Date(Date.UTC(ht,Jt,dt,te,ee,we,xe)):(Qt=new Date(ht,Jt,dt,te,ee,we,xe),U&&(Qt=R(Qt).week(U).toDate()),Qt)}catch{return new Date("")}}(S,L,E,w),this.init(),j&&j!==!0&&(this.$L=this.locale(j).$L),C&&S!=this.format(L)&&(this.$d=new Date("")),f={}}else if(L instanceof Array)for(var T=L.length,$=1;$<=T;$+=1){P[1]=L[$-1];var b=w.apply(this,P);if(b.isValid()){this.$d=b.$d,this.$L=b.$L,this.init();break}$===T&&(this.$d=new Date(""))}else x.call(this,A)}}})})(io);var vh=io.exports;const Yg=Rt(vh);var ao={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(Dt,function(){return function(n,r){var i=r.prototype,a=i.format;i.format=function(o){var s=this,f=this.$locale();if(!this.isValid())return a.bind(this)(o);var u=this.$utils(),l=(o||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(c){switch(c){case"Q":return Math.ceil((s.$M+1)/3);case"Do":return f.ordinal(s.$D);case"gggg":return s.weekYear();case"GGGG":return s.isoWeekYear();case"wo":return f.ordinal(s.week(),"W");case"w":case"ww":return u.s(s.week(),c==="w"?1:2,"0");case"W":case"WW":return u.s(s.isoWeek(),c==="W"?1:2,"0");case"k":case"kk":return u.s(String(s.$H===0?24:s.$H),c==="k"?1:2,"0");case"X":return Math.floor(s.$d.getTime()/1e3);case"x":return s.$d.getTime();case"z":return"["+s.offsetName()+"]";case"zzz":return"["+s.offsetName("long")+"]";default:return c}});return a.bind(this)(l)}}})})(ao);var yh=ao.exports;const kg=Rt(yh);var oo={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(Dt,function(){var n="week",r="year";return function(i,a,o){var s=a.prototype;s.week=function(f){if(f===void 0&&(f=null),f!==null)return this.add(7*(f-this.week()),"day");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var l=o(this).startOf(r).add(1,r).date(u),c=o(this).endOf(n);if(l.isBefore(c))return 1}var p=o(this).startOf(r).date(u).startOf(n).subtract(1,"millisecond"),m=this.diff(p,n,!0);return m<0?o(this).startOf("week").week():Math.ceil(m)},s.weeks=function(f){return f===void 0&&(f=null),this.week(f)}}})})(oo);var bh=oo.exports;const qg=Rt(bh);var so={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(Dt,function(){return function(n,r){r.prototype.weekYear=function(){var i=this.month(),a=this.week(),o=this.year();return a===1&&i===11?o+1:i===0&&a>=52?o-1:o}}})})(so);var wh=so.exports;const Bg=Rt(wh);var fo={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(Dt,function(){return function(n,r,i){r.prototype.dayOfYear=function(a){var o=Math.round((i(this).startOf("day")-i(this).startOf("year"))/864e5)+1;return a==null?o:this.add(a-o,"day")}}})})(fo);var xh=fo.exports;const Wg=Rt(xh);var uo={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(Dt,function(){return function(n,r){r.prototype.isSameOrAfter=function(i,a){return this.isSame(i,a)||this.isAfter(i,a)}}})})(uo);var Oh=uo.exports;const Ug=Rt(Oh);var co={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(Dt,function(){return function(n,r){r.prototype.isSameOrBefore=function(i,a){return this.isSame(i,a)||this.isBefore(i,a)}}})})(co);var Ah=co.exports;const Gg=Rt(Ah);function Bt(){return Bt=Object.assign?Object.assign.bind():function(t){for(var e=1;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function sn(t,e,n){return Sh()?sn=Reflect.construct.bind():sn=function(i,a,o){var s=[null];s.push.apply(s,a);var f=Function.bind.apply(i,s),u=new f;return o&&Ne(u,o.prototype),u},sn.apply(null,arguments)}function Mh(t){return Function.toString.call(t).indexOf("[native code]")!==-1}function Xn(t){var e=typeof Map=="function"?new Map:void 0;return Xn=function(r){if(r===null||!Mh(r))return r;if(typeof r!="function")throw new TypeError("Super expression must either be null or a function");if(typeof e<"u"){if(e.has(r))return e.get(r);e.set(r,i)}function i(){return sn(r,arguments,Vn(this).constructor)}return i.prototype=Object.create(r.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),Ne(i,r)},Xn(t)}var Th=/%[sdj%]/g,_h=function(){};function zn(t){if(!t||!t.length)return null;var e={};return t.forEach(function(n){var r=n.field;e[r]=e[r]||[],e[r].push(n)}),e}function it(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r=a)return s;switch(s){case"%s":return String(n[i++]);case"%d":return Number(n[i++]);case"%j":try{return JSON.stringify(n[i++])}catch{return"[Circular]"}break;default:return s}});return o}return t}function Eh(t){return t==="string"||t==="url"||t==="hex"||t==="email"||t==="date"||t==="pattern"}function G(t,e){return!!(t==null||e==="array"&&Array.isArray(t)&&!t.length||Eh(e)&&typeof t=="string"&&!t)}function Fh(t,e,n){var r=[],i=0,a=t.length;function o(s){r.push.apply(r,s||[]),i++,i===a&&n(r)}t.forEach(function(s){e(s,o)})}function Yi(t,e,n){var r=0,i=t.length;function a(o){if(o&&o.length){n(o);return}var s=r;r=r+1,s()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},$e={integer:function(e){return $e.number(e)&&parseInt(e,10)===e},float:function(e){return $e.number(e)&&!$e.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch{return!1}},date:function(e){return typeof e.getTime=="function"&&typeof e.getMonth=="function"&&typeof e.getYear=="function"&&!isNaN(e.getTime())},number:function(e){return isNaN(e)?!1:typeof e=="number"},object:function(e){return typeof e=="object"&&!$e.array(e)},method:function(e){return typeof e=="function"},email:function(e){return typeof e=="string"&&e.length<=320&&!!e.match(Wi.email)},url:function(e){return typeof e=="string"&&e.length<=2048&&!!e.match(jh())},hex:function(e){return typeof e=="string"&&!!e.match(Wi.hex)}},Nh=function(e,n,r,i,a){if(e.required&&n===void 0){lo(e,n,r,i,a);return}var o=["integer","float","array","regexp","object","method","email","number","date","url","hex"],s=e.type;o.indexOf(s)>-1?$e[s](n)||i.push(it(a.messages.types[s],e.fullField,e.type)):s&&typeof n!==e.type&&i.push(it(a.messages.types[s],e.fullField,e.type))},Ih=function(e,n,r,i,a){var o=typeof e.len=="number",s=typeof e.min=="number",f=typeof e.max=="number",u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=n,c=null,p=typeof n=="number",m=typeof n=="string",y=Array.isArray(n);if(p?c="number":m?c="string":y&&(c="array"),!c)return!1;y&&(l=n.length),m&&(l=n.replace(u,"_").length),o?l!==e.len&&i.push(it(a.messages[c].len,e.fullField,e.len)):s&&!f&&le.max?i.push(it(a.messages[c].max,e.fullField,e.max)):s&&f&&(le.max)&&i.push(it(a.messages[c].range,e.fullField,e.min,e.max))},ne="enum",Hh=function(e,n,r,i,a){e[ne]=Array.isArray(e[ne])?e[ne]:[],e[ne].indexOf(n)===-1&&i.push(it(a.messages[ne],e.fullField,e[ne].join(", ")))},Yh=function(e,n,r,i,a){if(e.pattern){if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(n)||i.push(it(a.messages.pattern.mismatch,e.fullField,n,e.pattern));else if(typeof e.pattern=="string"){var o=new RegExp(e.pattern);o.test(n)||i.push(it(a.messages.pattern.mismatch,e.fullField,n,e.pattern))}}},I={required:lo,whitespace:Ch,type:Nh,range:Ih,enum:Hh,pattern:Yh},kh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(G(n,"string")&&!e.required)return r();I.required(e,n,i,o,a,"string"),G(n,"string")||(I.type(e,n,i,o,a),I.range(e,n,i,o,a),I.pattern(e,n,i,o,a),e.whitespace===!0&&I.whitespace(e,n,i,o,a))}r(o)},qh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(G(n)&&!e.required)return r();I.required(e,n,i,o,a),n!==void 0&&I.type(e,n,i,o,a)}r(o)},Bh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(n===""&&(n=void 0),G(n)&&!e.required)return r();I.required(e,n,i,o,a),n!==void 0&&(I.type(e,n,i,o,a),I.range(e,n,i,o,a))}r(o)},Wh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(G(n)&&!e.required)return r();I.required(e,n,i,o,a),n!==void 0&&I.type(e,n,i,o,a)}r(o)},Uh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(G(n)&&!e.required)return r();I.required(e,n,i,o,a),G(n)||I.type(e,n,i,o,a)}r(o)},Gh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(G(n)&&!e.required)return r();I.required(e,n,i,o,a),n!==void 0&&(I.type(e,n,i,o,a),I.range(e,n,i,o,a))}r(o)},Vh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(G(n)&&!e.required)return r();I.required(e,n,i,o,a),n!==void 0&&(I.type(e,n,i,o,a),I.range(e,n,i,o,a))}r(o)},Xh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(n==null&&!e.required)return r();I.required(e,n,i,o,a,"array"),n!=null&&(I.type(e,n,i,o,a),I.range(e,n,i,o,a))}r(o)},zh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(G(n)&&!e.required)return r();I.required(e,n,i,o,a),n!==void 0&&I.type(e,n,i,o,a)}r(o)},Zh="enum",Kh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(G(n)&&!e.required)return r();I.required(e,n,i,o,a),n!==void 0&&I[Zh](e,n,i,o,a)}r(o)},Jh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(G(n,"string")&&!e.required)return r();I.required(e,n,i,o,a),G(n,"string")||I.pattern(e,n,i,o,a)}r(o)},Qh=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(G(n,"date")&&!e.required)return r();if(I.required(e,n,i,o,a),!G(n,"date")){var f;n instanceof Date?f=n:f=new Date(n),I.type(e,f,i,o,a),f&&I.range(e,f.getTime(),i,o,a)}}r(o)},tp=function(e,n,r,i,a){var o=[],s=Array.isArray(n)?"array":typeof n;I.required(e,n,i,o,a,s),r(o)},jn=function(e,n,r,i,a){var o=e.type,s=[],f=e.required||!e.required&&i.hasOwnProperty(e.field);if(f){if(G(n,o)&&!e.required)return r();I.required(e,n,i,s,a,o),G(n,o)||I.type(e,n,i,s,a)}r(s)},ep=function(e,n,r,i,a){var o=[],s=e.required||!e.required&&i.hasOwnProperty(e.field);if(s){if(G(n)&&!e.required)return r();I.required(e,n,i,o,a)}r(o)},Ee={string:kh,method:qh,number:Bh,boolean:Wh,regexp:Uh,integer:Gh,float:Vh,array:Xh,object:zh,enum:Kh,pattern:Jh,date:Qh,url:jn,hex:jn,email:jn,required:tp,any:ep};function Zn(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}var Kn=Zn(),$n=function(){function t(n){this.rules=null,this._messages=Kn,this.define(n)}var e=t.prototype;return e.define=function(r){var i=this;if(!r)throw new Error("Cannot configure a schema with no rules");if(typeof r!="object"||Array.isArray(r))throw new Error("Rules must be an object");this.rules={},Object.keys(r).forEach(function(a){var o=r[a];i.rules[a]=Array.isArray(o)?o:[o]})},e.messages=function(r){return r&&(this._messages=Bi(Zn(),r)),this._messages},e.validate=function(r,i,a){var o=this;i===void 0&&(i={}),a===void 0&&(a=function(){});var s=r,f=i,u=a;if(typeof f=="function"&&(u=f,f={}),!this.rules||Object.keys(this.rules).length===0)return u&&u(null,s),Promise.resolve(s);function l(g){var h=[],d={};function w(x){if(Array.isArray(x)){var A;h=(A=h).concat.apply(A,x)}else h.push(x)}for(var v=0;vkt},ie64:function(){return ar.ie()&&po},firefox:function(){return Q()||Jn},opera:function(){return Q()||Qn},webkit:function(){return Q()||fn},safari:function(){return ar.webkit()},chrome:function(){return Q()||un},windows:function(){return Q()||tr},osx:function(){return Q()||cn},linux:function(){return Q()||er},iphone:function(){return Q()||rr},mobile:function(){return Q()||rr||ir||nr||mo},nativeApp:function(){return Q()||go},android:function(){return Q()||nr},ipad:function(){return Q()||ir}},ip=ar,ap=!!(typeof window<"u"&&window.document&&window.document.createElement),op={canUseDOM:ap},vo=op,yo;vo.canUseDOM&&(yo=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function sp(t,e){if(!vo.canUseDOM||e&&!("addEventListener"in document))return!1;var n="on"+t,r=n in document;if(!r){var i=document.createElement("div");i.setAttribute(n,"return;"),r=typeof i[n]=="function"}return!r&&yo&&t==="wheel"&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var fp=sp,Vi=10,Xi=40,zi=800;function bo(t){var e=0,n=0,r=0,i=0;return"detail"in t&&(n=t.detail),"wheelDelta"in t&&(n=-t.wheelDelta/120),"wheelDeltaY"in t&&(n=-t.wheelDeltaY/120),"wheelDeltaX"in t&&(e=-t.wheelDeltaX/120),"axis"in t&&t.axis===t.HORIZONTAL_AXIS&&(e=n,n=0),r=e*Vi,i=n*Vi,"deltaY"in t&&(i=t.deltaY),"deltaX"in t&&(r=t.deltaX),(r||i)&&t.deltaMode&&(t.deltaMode==1?(r*=Xi,i*=Xi):(r*=zi,i*=zi)),r&&!e&&(e=r<1?-1:1),i&&!n&&(n=i<1?-1:1),{spinX:e,spinY:n,pixelX:r,pixelY:i}}bo.getEventType=function(){return ip.firefox()?"DOMMouseScroll":fp("wheel")?"wheel":"mousewheel"};var Xg=bo;/** -* Checks if an event is supported in the current execution environment. -* -* NOTE: This will not work correctly for non-generic events such as `change`, -* `reset`, `load`, `error`, and `select`. -* -* Borrows from Modernizr. -* -* @param {string} eventNameSuffix Event name, e.g. "click". -* @param {?boolean} capture Check if the capture phase is supported. -* @return {boolean} True if the event is supported. -* @internal -* @license Modernizr 3.0.0pre (Custom Build) | MIT -*/const he=Math.min,Ut=Math.max,pn=Math.round,en=Math.floor,Ot=t=>({x:t,y:t}),up={left:"right",right:"left",bottom:"top",top:"bottom"},cp={start:"end",end:"start"};function or(t,e,n){return Ut(t,he(e,n))}function Ue(t,e){return typeof t=="function"?t(e):t}function Vt(t){return t.split("-")[0]}function Ge(t){return t.split("-")[1]}function wo(t){return t==="x"?"y":"x"}function Cr(t){return t==="y"?"height":"width"}const lp=new Set(["top","bottom"]);function jt(t){return lp.has(Vt(t))?"y":"x"}function jr(t){return wo(jt(t))}function dp(t,e,n){n===void 0&&(n=!1);const r=Ge(t),i=jr(t),a=Cr(i);let o=i==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return e.reference[a]>e.floating[a]&&(o=gn(o)),[o,gn(o)]}function hp(t){const e=gn(t);return[sr(t),e,sr(e)]}function sr(t){return t.replace(/start|end/g,e=>cp[e])}const Zi=["left","right"],Ki=["right","left"],pp=["top","bottom"],gp=["bottom","top"];function mp(t,e,n){switch(t){case"top":case"bottom":return n?e?Ki:Zi:e?Zi:Ki;case"left":case"right":return e?pp:gp;default:return[]}}function vp(t,e,n,r){const i=Ge(t);let a=mp(Vt(t),n==="start",r);return i&&(a=a.map(o=>o+"-"+i),e&&(a=a.concat(a.map(sr)))),a}function gn(t){return t.replace(/left|right|bottom|top/g,e=>up[e])}function yp(t){return{top:0,right:0,bottom:0,left:0,...t}}function xo(t){return typeof t!="number"?yp(t):{top:t,right:t,bottom:t,left:t}}function mn(t){const{x:e,y:n,width:r,height:i}=t;return{width:r,height:i,top:n,left:e,right:e+r,bottom:n+i,x:e,y:n}}function Ji(t,e,n){let{reference:r,floating:i}=t;const a=jt(e),o=jr(e),s=Cr(o),f=Vt(e),u=a==="y",l=r.x+r.width/2-i.width/2,c=r.y+r.height/2-i.height/2,p=r[s]/2-i[s]/2;let m;switch(f){case"top":m={x:l,y:r.y-i.height};break;case"bottom":m={x:l,y:r.y+r.height};break;case"right":m={x:r.x+r.width,y:c};break;case"left":m={x:r.x-i.width,y:c};break;default:m={x:r.x,y:r.y}}switch(Ge(e)){case"start":m[o]-=p*(n&&u?-1:1);break;case"end":m[o]+=p*(n&&u?-1:1);break}return m}const bp=async(t,e,n)=>{const{placement:r="bottom",strategy:i="absolute",middleware:a=[],platform:o}=n,s=a.filter(Boolean),f=await(o.isRTL==null?void 0:o.isRTL(e));let u=await o.getElementRects({reference:t,floating:e,strategy:i}),{x:l,y:c}=Ji(u,r,f),p=r,m={},y=0;for(let g=0;g({name:"arrow",options:t,async fn(e){const{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:f}=e,{element:u,padding:l=0}=Ue(t,e)||{};if(u==null)return{};const c=xo(l),p={x:n,y:r},m=jr(i),y=Cr(m),g=await o.getDimensions(u),h=m==="y",d=h?"top":"left",w=h?"bottom":"right",v=h?"clientHeight":"clientWidth",x=a.reference[y]+a.reference[m]-p[m]-a.floating[y],A=p[m]-a.reference[m],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(u));let E=S?S[v]:0;(!E||!await(o.isElement==null?void 0:o.isElement(S)))&&(E=s.floating[v]||a.floating[y]);const P=x/2-A/2,L=E/2-g[y]/2-1,D=he(c[d],L),F=he(c[w],L),C=D,j=E-g[y]-F,T=E/2-g[y]/2+P,$=or(C,T,j),b=!f.arrow&&Ge(i)!=null&&T!==$&&a.reference[y]/2-(TT<=0)){var F,C;const T=(((F=a.flip)==null?void 0:F.index)||0)+1,$=E[T];if($&&(!(c==="alignment"?w!==jt($):!1)||D.every(O=>O.overflows[0]>0&&jt(O.placement)===w)))return{data:{index:T,overflows:D},reset:{placement:$}};let b=(C=D.filter(M=>M.overflows[0]<=0).sort((M,O)=>M.overflows[1]-O.overflows[1])[0])==null?void 0:C.placement;if(!b)switch(m){case"bestFit":{var j;const M=(j=D.filter(O=>{if(S){const _=jt(O.placement);return _===w||_==="y"}return!0}).map(O=>[O.placement,O.overflows.filter(_=>_>0).reduce((_,R)=>_+R,0)]).sort((O,_)=>O[1]-_[1])[0])==null?void 0:j[0];M&&(b=M);break}case"initialPlacement":b=s;break}if(i!==b)return{reset:{placement:b}}}return{}}}},Op=new Set(["left","top"]);async function Ap(t,e){const{placement:n,platform:r,elements:i}=t,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=Vt(n),s=Ge(n),f=jt(n)==="y",u=Op.has(o)?-1:1,l=a&&f?-1:1,c=Ue(e,t);let{mainAxis:p,crossAxis:m,alignmentAxis:y}=typeof c=="number"?{mainAxis:c,crossAxis:0,alignmentAxis:null}:{mainAxis:c.mainAxis||0,crossAxis:c.crossAxis||0,alignmentAxis:c.alignmentAxis};return s&&typeof y=="number"&&(m=s==="end"?y*-1:y),f?{x:m*l,y:p*u}:{x:p*u,y:m*l}}const $p=function(t){return t===void 0&&(t=0),{name:"offset",options:t,async fn(e){var n,r;const{x:i,y:a,placement:o,middlewareData:s}=e,f=await Ap(e,t);return o===((n=s.offset)==null?void 0:n.placement)&&(r=s.arrow)!=null&&r.alignmentOffset?{}:{x:i+f.x,y:a+f.y,data:{...f,placement:o}}}}},Sp=function(t){return t===void 0&&(t={}),{name:"shift",options:t,async fn(e){const{x:n,y:r,placement:i}=e,{mainAxis:a=!0,crossAxis:o=!1,limiter:s={fn:h=>{let{x:d,y:w}=h;return{x:d,y:w}}},...f}=Ue(t,e),u={x:n,y:r},l=await Nr(e,f),c=jt(Vt(i)),p=wo(c);let m=u[p],y=u[c];if(a){const h=p==="y"?"top":"left",d=p==="y"?"bottom":"right",w=m+l[h],v=m-l[d];m=or(w,m,v)}if(o){const h=c==="y"?"top":"left",d=c==="y"?"bottom":"right",w=y+l[h],v=y-l[d];y=or(w,y,v)}const g=s.fn({...e,[p]:m,[c]:y});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:a,[c]:o}}}}}};function Sn(){return typeof window<"u"}function be(t){return Oo(t)?(t.nodeName||"").toLowerCase():"#document"}function at(t){var e;return(t==null||(e=t.ownerDocument)==null?void 0:e.defaultView)||window}function Mt(t){var e;return(e=(Oo(t)?t.ownerDocument:t.document)||window.document)==null?void 0:e.documentElement}function Oo(t){return Sn()?t instanceof Node||t instanceof at(t).Node:!1}function vt(t){return Sn()?t instanceof Element||t instanceof at(t).Element:!1}function St(t){return Sn()?t instanceof HTMLElement||t instanceof at(t).HTMLElement:!1}function Qi(t){return!Sn()||typeof ShadowRoot>"u"?!1:t instanceof ShadowRoot||t instanceof at(t).ShadowRoot}const Mp=new Set(["inline","contents"]);function Ve(t){const{overflow:e,overflowX:n,overflowY:r,display:i}=yt(t);return/auto|scroll|overlay|hidden|clip/.test(e+r+n)&&!Mp.has(i)}const Tp=new Set(["table","td","th"]);function _p(t){return Tp.has(be(t))}const Ep=[":popover-open",":modal"];function Mn(t){return Ep.some(e=>{try{return t.matches(e)}catch{return!1}})}const Fp=["transform","translate","scale","rotate","perspective"],Pp=["transform","translate","scale","rotate","perspective","filter"],Dp=["paint","layout","strict","content"];function Ir(t){const e=Hr(),n=vt(t)?yt(t):t;return Fp.some(r=>n[r]?n[r]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!e&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!e&&(n.filter?n.filter!=="none":!1)||Pp.some(r=>(n.willChange||"").includes(r))||Dp.some(r=>(n.contain||"").includes(r))}function Rp(t){let e=Ht(t);for(;St(e)&&!pe(e);){if(Ir(e))return e;if(Mn(e))return null;e=Ht(e)}return null}function Hr(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const Lp=new Set(["html","body","#document"]);function pe(t){return Lp.has(be(t))}function yt(t){return at(t).getComputedStyle(t)}function Tn(t){return vt(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function Ht(t){if(be(t)==="html")return t;const e=t.assignedSlot||t.parentNode||Qi(t)&&t.host||Mt(t);return Qi(e)?e.host:e}function Ao(t){const e=Ht(t);return pe(e)?t.ownerDocument?t.ownerDocument.body:t.body:St(e)&&Ve(e)?e:Ao(e)}function Ie(t,e,n){var r;e===void 0&&(e=[]),n===void 0&&(n=!0);const i=Ao(t),a=i===((r=t.ownerDocument)==null?void 0:r.body),o=at(i);if(a){const s=fr(o);return e.concat(o,o.visualViewport||[],Ve(i)?i:[],s&&n?Ie(s):[])}return e.concat(i,Ie(i,[],n))}function fr(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function $o(t){const e=yt(t);let n=parseFloat(e.width)||0,r=parseFloat(e.height)||0;const i=St(t),a=i?t.offsetWidth:n,o=i?t.offsetHeight:r,s=pn(n)!==a||pn(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Yr(t){return vt(t)?t:t.contextElement}function oe(t){const e=Yr(t);if(!St(e))return Ot(1);const n=e.getBoundingClientRect(),{width:r,height:i,$:a}=$o(e);let o=(a?pn(n.width):n.width)/r,s=(a?pn(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}const Cp=Ot(0);function So(t){const e=at(t);return!Hr()||!e.visualViewport?Cp:{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}}function jp(t,e,n){return e===void 0&&(e=!1),!n||e&&n!==at(t)?!1:e}function Xt(t,e,n,r){e===void 0&&(e=!1),n===void 0&&(n=!1);const i=t.getBoundingClientRect(),a=Yr(t);let o=Ot(1);e&&(r?vt(r)&&(o=oe(r)):o=oe(t));const s=jp(a,n,r)?So(a):Ot(0);let f=(i.left+s.x)/o.x,u=(i.top+s.y)/o.y,l=i.width/o.x,c=i.height/o.y;if(a){const p=at(a),m=r&&vt(r)?at(r):r;let y=p,g=fr(y);for(;g&&r&&m!==y;){const h=oe(g),d=g.getBoundingClientRect(),w=yt(g),v=d.left+(g.clientLeft+parseFloat(w.paddingLeft))*h.x,x=d.top+(g.clientTop+parseFloat(w.paddingTop))*h.y;f*=h.x,u*=h.y,l*=h.x,c*=h.y,f+=v,u+=x,y=at(g),g=fr(y)}}return mn({width:l,height:c,x:f,y:u})}function kr(t,e){const n=Tn(t).scrollLeft;return e?e.left+n:Xt(Mt(t)).left+n}function Mo(t,e,n){n===void 0&&(n=!1);const r=t.getBoundingClientRect(),i=r.left+e.scrollLeft-(n?0:kr(t,r)),a=r.top+e.scrollTop;return{x:i,y:a}}function Np(t){let{elements:e,rect:n,offsetParent:r,strategy:i}=t;const a=i==="fixed",o=Mt(r),s=e?Mn(e.floating):!1;if(r===o||s&&a)return n;let f={scrollLeft:0,scrollTop:0},u=Ot(1);const l=Ot(0),c=St(r);if((c||!c&&!a)&&((be(r)!=="body"||Ve(o))&&(f=Tn(r)),St(r))){const m=Xt(r);u=oe(r),l.x=m.x+r.clientLeft,l.y=m.y+r.clientTop}const p=o&&!c&&!a?Mo(o,f,!0):Ot(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-f.scrollLeft*u.x+l.x+p.x,y:n.y*u.y-f.scrollTop*u.y+l.y+p.y}}function Ip(t){return Array.from(t.getClientRects())}function Hp(t){const e=Mt(t),n=Tn(t),r=t.ownerDocument.body,i=Ut(e.scrollWidth,e.clientWidth,r.scrollWidth,r.clientWidth),a=Ut(e.scrollHeight,e.clientHeight,r.scrollHeight,r.clientHeight);let o=-n.scrollLeft+kr(t);const s=-n.scrollTop;return yt(r).direction==="rtl"&&(o+=Ut(e.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}function Yp(t,e){const n=at(t),r=Mt(t),i=n.visualViewport;let a=r.clientWidth,o=r.clientHeight,s=0,f=0;if(i){a=i.width,o=i.height;const u=Hr();(!u||u&&e==="fixed")&&(s=i.offsetLeft,f=i.offsetTop)}return{width:a,height:o,x:s,y:f}}const kp=new Set(["absolute","fixed"]);function qp(t,e){const n=Xt(t,!0,e==="fixed"),r=n.top+t.clientTop,i=n.left+t.clientLeft,a=St(t)?oe(t):Ot(1),o=t.clientWidth*a.x,s=t.clientHeight*a.y,f=i*a.x,u=r*a.y;return{width:o,height:s,x:f,y:u}}function ta(t,e,n){let r;if(e==="viewport")r=Yp(t,n);else if(e==="document")r=Hp(Mt(t));else if(vt(e))r=qp(e,n);else{const i=So(t);r={x:e.x-i.x,y:e.y-i.y,width:e.width,height:e.height}}return mn(r)}function To(t,e){const n=Ht(t);return n===e||!vt(n)||pe(n)?!1:yt(n).position==="fixed"||To(n,e)}function Bp(t,e){const n=e.get(t);if(n)return n;let r=Ie(t,[],!1).filter(s=>vt(s)&&be(s)!=="body"),i=null;const a=yt(t).position==="fixed";let o=a?Ht(t):t;for(;vt(o)&&!pe(o);){const s=yt(o),f=Ir(o);!f&&s.position==="fixed"&&(i=null),(a?!f&&!i:!f&&s.position==="static"&&!!i&&kp.has(i.position)||Ve(o)&&!f&&To(t,o))?r=r.filter(l=>l!==o):i=s,o=Ht(o)}return e.set(t,r),r}function Wp(t){let{element:e,boundary:n,rootBoundary:r,strategy:i}=t;const o=[...n==="clippingAncestors"?Mn(e)?[]:Bp(e,this._c):[].concat(n),r],s=o[0],f=o.reduce((u,l)=>{const c=ta(e,l,i);return u.top=Ut(c.top,u.top),u.right=he(c.right,u.right),u.bottom=he(c.bottom,u.bottom),u.left=Ut(c.left,u.left),u},ta(e,s,i));return{width:f.right-f.left,height:f.bottom-f.top,x:f.left,y:f.top}}function Up(t){const{width:e,height:n}=$o(t);return{width:e,height:n}}function Gp(t,e,n){const r=St(e),i=Mt(e),a=n==="fixed",o=Xt(t,!0,a,e);let s={scrollLeft:0,scrollTop:0};const f=Ot(0);function u(){f.x=kr(i)}if(r||!r&&!a)if((be(e)!=="body"||Ve(i))&&(s=Tn(e)),r){const m=Xt(e,!0,a,e);f.x=m.x+e.clientLeft,f.y=m.y+e.clientTop}else i&&u();a&&!r&&i&&u();const l=i&&!r&&!a?Mo(i,s):Ot(0),c=o.left+s.scrollLeft-f.x-l.x,p=o.top+s.scrollTop-f.y-l.y;return{x:c,y:p,width:o.width,height:o.height}}function Nn(t){return yt(t).position==="static"}function ea(t,e){if(!St(t)||yt(t).position==="fixed")return null;if(e)return e(t);let n=t.offsetParent;return Mt(t)===n&&(n=n.ownerDocument.body),n}function _o(t,e){const n=at(t);if(Mn(t))return n;if(!St(t)){let i=Ht(t);for(;i&&!pe(i);){if(vt(i)&&!Nn(i))return i;i=Ht(i)}return n}let r=ea(t,e);for(;r&&_p(r)&&Nn(r);)r=ea(r,e);return r&&pe(r)&&Nn(r)&&!Ir(r)?n:r||Rp(t)||n}const Vp=async function(t){const e=this.getOffsetParent||_o,n=this.getDimensions,r=await n(t.floating);return{reference:Gp(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Xp(t){return yt(t).direction==="rtl"}const zp={convertOffsetParentRelativeRectToViewportRelativeRect:Np,getDocumentElement:Mt,getClippingRect:Wp,getOffsetParent:_o,getElementRects:Vp,getClientRects:Ip,getDimensions:Up,getScale:oe,isElement:vt,isRTL:Xp};function Eo(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}function Zp(t,e){let n=null,r;const i=Mt(t);function a(){var s;clearTimeout(r),(s=n)==null||s.disconnect(),n=null}function o(s,f){s===void 0&&(s=!1),f===void 0&&(f=1),a();const u=t.getBoundingClientRect(),{left:l,top:c,width:p,height:m}=u;if(s||e(),!p||!m)return;const y=en(c),g=en(i.clientWidth-(l+p)),h=en(i.clientHeight-(c+m)),d=en(l),v={rootMargin:-y+"px "+-g+"px "+-h+"px "+-d+"px",threshold:Ut(0,he(1,f))||1};let x=!0;function A(S){const E=S[0].intersectionRatio;if(E!==f){if(!x)return o();E?o(!1,E):r=setTimeout(()=>{o(!1,1e-7)},1e3)}E===1&&!Eo(u,t.getBoundingClientRect())&&o(),x=!1}try{n=new IntersectionObserver(A,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(A,v)}n.observe(t)}return o(!0),a}function zg(t,e,n,r){r===void 0&&(r={});const{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:s=typeof IntersectionObserver=="function",animationFrame:f=!1}=r,u=Yr(t),l=i||a?[...u?Ie(u):[],...Ie(e)]:[];l.forEach(d=>{i&&d.addEventListener("scroll",n,{passive:!0}),a&&d.addEventListener("resize",n)});const c=u&&s?Zp(u,n):null;let p=-1,m=null;o&&(m=new ResizeObserver(d=>{let[w]=d;w&&w.target===u&&m&&(m.unobserve(e),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var v;(v=m)==null||v.observe(e)})),n()}),u&&!f&&m.observe(u),m.observe(e));let y,g=f?Xt(t):null;f&&h();function h(){const d=Xt(t);g&&!Eo(g,d)&&n(),g=d,y=requestAnimationFrame(h)}return n(),()=>{var d;l.forEach(w=>{i&&w.removeEventListener("scroll",n),a&&w.removeEventListener("resize",n)}),c==null||c(),(d=m)==null||d.disconnect(),m=null,f&&cancelAnimationFrame(y)}}const Zg=Nr,Kg=$p,Jg=Sp,Qg=xp,t0=wp,e0=(t,e,n)=>{const r=new Map,i={platform:zp,...n},a={...i.platform,_c:r};return bp(t,e,{...i,platform:a})};/*! - * @kurkle/color v0.3.4 - * https://github.com/kurkle/color#readme - * (c) 2024 Jukka Kurkela - * Released under the MIT License - */function Xe(t){return t+.5|0}const Nt=(t,e,n)=>Math.max(Math.min(t,n),e);function Se(t){return Nt(Xe(t*2.55),0,255)}function It(t){return Nt(Xe(t*255),0,255)}function _t(t){return Nt(Xe(t/2.55)/100,0,1)}function na(t){return Nt(Xe(t*100),0,100)}const st={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},ur=[..."0123456789ABCDEF"],Kp=t=>ur[t&15],Jp=t=>ur[(t&240)>>4]+ur[t&15],nn=t=>(t&240)>>4===(t&15),Qp=t=>nn(t.r)&&nn(t.g)&&nn(t.b)&&nn(t.a);function tg(t){var e=t.length,n;return t[0]==="#"&&(e===4||e===5?n={r:255&st[t[1]]*17,g:255&st[t[2]]*17,b:255&st[t[3]]*17,a:e===5?st[t[4]]*17:255}:(e===7||e===9)&&(n={r:st[t[1]]<<4|st[t[2]],g:st[t[3]]<<4|st[t[4]],b:st[t[5]]<<4|st[t[6]],a:e===9?st[t[7]]<<4|st[t[8]]:255})),n}const eg=(t,e)=>t<255?e(t):"";function ng(t){var e=Qp(t)?Kp:Jp;return t?"#"+e(t.r)+e(t.g)+e(t.b)+eg(t.a,e):void 0}const rg=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function Fo(t,e,n){const r=e*Math.min(n,1-n),i=(a,o=(a+t/30)%12)=>n-r*Math.max(Math.min(o-3,9-o,1),-1);return[i(0),i(8),i(4)]}function ig(t,e,n){const r=(i,a=(i+t/60)%6)=>n-n*e*Math.max(Math.min(a,4-a,1),0);return[r(5),r(3),r(1)]}function ag(t,e,n){const r=Fo(t,1,.5);let i;for(e+n>1&&(i=1/(e+n),e*=i,n*=i),i=0;i<3;i++)r[i]*=1-e-n,r[i]+=e;return r}function og(t,e,n,r,i){return t===i?(e-n)/r+(e.5?l/(2-a-o):l/(a+o),f=og(n,r,i,l,a),f=f*60+.5),[f|0,u||0,s]}function Br(t,e,n,r){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,n,r)).map(It)}function Wr(t,e,n){return Br(Fo,t,e,n)}function sg(t,e,n){return Br(ag,t,e,n)}function fg(t,e,n){return Br(ig,t,e,n)}function Po(t){return(t%360+360)%360}function ug(t){const e=rg.exec(t);let n=255,r;if(!e)return;e[5]!==r&&(n=e[6]?Se(+e[5]):It(+e[5]));const i=Po(+e[2]),a=+e[3]/100,o=+e[4]/100;return e[1]==="hwb"?r=sg(i,a,o):e[1]==="hsv"?r=fg(i,a,o):r=Wr(i,a,o),{r:r[0],g:r[1],b:r[2],a:n}}function cg(t,e){var n=qr(t);n[0]=Po(n[0]+e),n=Wr(n),t.r=n[0],t.g=n[1],t.b=n[2]}function lg(t){if(!t)return;const e=qr(t),n=e[0],r=na(e[1]),i=na(e[2]);return t.a<255?`hsla(${n}, ${r}%, ${i}%, ${_t(t.a)})`:`hsl(${n}, ${r}%, ${i}%)`}const ra={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},ia={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function dg(){const t={},e=Object.keys(ia),n=Object.keys(ra);let r,i,a,o,s;for(r=0;r>16&255,a>>8&255,a&255]}return t}let rn;function hg(t){rn||(rn=dg(),rn.transparent=[0,0,0,0]);const e=rn[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:e.length===4?e[3]:255}}const pg=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function gg(t){const e=pg.exec(t);let n=255,r,i,a;if(e){if(e[7]!==r){const o=+e[7];n=e[8]?Se(o):Nt(o*255,0,255)}return r=+e[1],i=+e[3],a=+e[5],r=255&(e[2]?Se(r):Nt(r,0,255)),i=255&(e[4]?Se(i):Nt(i,0,255)),a=255&(e[6]?Se(a):Nt(a,0,255)),{r,g:i,b:a,a:n}}}function mg(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${_t(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}const In=t=>t<=.0031308?t*12.92:Math.pow(t,1/2.4)*1.055-.055,re=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function vg(t,e,n){const r=re(_t(t.r)),i=re(_t(t.g)),a=re(_t(t.b));return{r:It(In(r+n*(re(_t(e.r))-r))),g:It(In(i+n*(re(_t(e.g))-i))),b:It(In(a+n*(re(_t(e.b))-a))),a:t.a+n*(e.a-t.a)}}function an(t,e,n){if(t){let r=qr(t);r[e]=Math.max(0,Math.min(r[e]+r[e]*n,e===0?360:1)),r=Wr(r),t.r=r[0],t.g=r[1],t.b=r[2]}}function Do(t,e){return t&&Object.assign(e||{},t)}function aa(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=It(t[3]))):(e=Do(t,{r:0,g:0,b:0,a:1}),e.a=It(e.a)),e}function yg(t){return t.charAt(0)==="r"?gg(t):ug(t)}class cr{constructor(e){if(e instanceof cr)return e;const n=typeof e;let r;n==="object"?r=aa(e):n==="string"&&(r=tg(e)||hg(e)||yg(e)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=Do(this._rgb);return e&&(e.a=_t(e.a)),e}set rgb(e){this._rgb=aa(e)}rgbString(){return this._valid?mg(this._rgb):void 0}hexString(){return this._valid?ng(this._rgb):void 0}hslString(){return this._valid?lg(this._rgb):void 0}mix(e,n){if(e){const r=this.rgb,i=e.rgb;let a;const o=n===a?.5:n,s=2*o-1,f=r.a-i.a,u=((s*f===-1?s:(s+f)/(1+s*f))+1)/2;a=1-u,r.r=255&u*r.r+a*i.r+.5,r.g=255&u*r.g+a*i.g+.5,r.b=255&u*r.b+a*i.b+.5,r.a=o*r.a+(1-o)*i.a,this.rgb=r}return this}interpolate(e,n){return e&&(this._rgb=vg(this._rgb,e._rgb,n)),this}clone(){return new cr(this.rgb)}alpha(e){return this._rgb.a=It(e),this}clearer(e){const n=this._rgb;return n.a*=1-e,this}greyscale(){const e=this._rgb,n=Xe(e.r*.3+e.g*.59+e.b*.11);return e.r=e.g=e.b=n,this}opaquer(e){const n=this._rgb;return n.a*=1+e,this}negate(){const e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return an(this._rgb,2,e),this}darken(e){return an(this._rgb,2,-e),this}saturate(e){return an(this._rgb,1,e),this}desaturate(e){return an(this._rgb,1,-e),this}rotate(e){return cg(this._rgb,e),this}}export{xr as A,Vg as B,cr as C,_g as D,Wa as E,Fg as F,Ag as G,Pg as H,t0 as I,e0 as J,Kg as K,Qg as L,Jg as M,zg as N,Zg as O,$n as S,Ng as T,Xg as Y,Eg as a,Ig as b,Mg as c,jl as d,$g as e,Sg as f,iu as g,xg as h,Tg as i,bg as j,Yg as k,Hg as l,ou as m,kg as n,Bg as o,Dg as p,Wg as q,Ug as r,Rg as s,Lg as t,Cg as u,Gg as v,qg as w,wg as x,jg as y,Og as z}; diff --git a/web/admin-spa/dist/assets/vue-vendor-DfnFpxGJ.js b/web/admin-spa/dist/assets/vue-vendor-DfnFpxGJ.js deleted file mode 100644 index 7e720979..00000000 --- a/web/admin-spa/dist/assets/vue-vendor-DfnFpxGJ.js +++ /dev/null @@ -1,25 +0,0 @@ -/** -* @vue/shared v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function cr(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ie={},Wt=[],Be=()=>{},ql=()=>!1,os=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ur=e=>e.startsWith("onUpdate:"),pe=Object.assign,ar=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},zl=Object.prototype.hasOwnProperty,te=(e,t)=>zl.call(e,t),V=Array.isArray,Gt=e=>nn(e)==="[object Map]",tn=e=>nn(e)==="[object Set]",Vr=e=>nn(e)==="[object Date]",Ql=e=>nn(e)==="[object RegExp]",q=e=>typeof e=="function",ae=e=>typeof e=="string",Ue=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",si=e=>(se(e)||q(e))&&q(e.then)&&q(e.catch),ri=Object.prototype.toString,nn=e=>ri.call(e),Jl=e=>nn(e).slice(8,-1),oi=e=>nn(e)==="[object Object]",fr=e=>ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,fn=cr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),is=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Yl=/-(\w)/g,ke=is(e=>e.replace(Yl,(t,n)=>n?n.toUpperCase():"")),Xl=/\B([A-Z])/g,Ot=is(e=>e.replace(Xl,"-$1").toLowerCase()),ls=is(e=>e.charAt(0).toUpperCase()+e.slice(1)),kn=is(e=>e?`on${ls(e)}`:""),Et=(e,t)=>!Object.is(e,t),qt=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},qn=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Zl=e=>{const t=ae(e)?Number(e):NaN;return isNaN(t)?e:t};let Hr;const cs=()=>Hr||(Hr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function us(e){if(V(e)){const t={};for(let n=0;n{if(n){const s=n.split(tc);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function as(e){let t="";if(ae(e))t=e;else if(V(e))for(let n=0;njt(n,t))}const li=e=>!!(e&&e.__v_isRef===!0),lc=e=>ae(e)?e:e==null?"":V(e)||se(e)&&(e.toString===ri||!q(e.toString))?li(e)?lc(e.value):JSON.stringify(e,ci,2):String(e),ci=(e,t)=>li(t)?ci(e,t.value):Gt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[Rs(s,o)+" =>"]=r,n),{})}:tn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Rs(n))}:Ue(t)?Rs(t):se(t)&&!V(t)&&!oi(t)?String(t):t,Rs=(e,t="")=>{var n;return Ue(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let _e;class ui{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=_e,!t&&_e&&(this.index=(_e.scopes||(_e.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(_e=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(hn){let t=hn;for(hn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;dn;){let t=dn;for(dn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function gi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function mi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),mr(s),cc(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Bs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(vi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function vi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Sn)||(e.globalVersion=Sn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Bs(e))))return;e.flags|=2;const t=e.dep,n=ce,s=Ke;ce=e,Ke=!0;try{gi(e);const r=e.fn(e._value);(t.version===0||Et(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ce=n,Ke=s,mi(e),e.flags&=-3}}function mr(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)mr(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function cc(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ke=!0;const yi=[];function ct(){yi.push(Ke),Ke=!1}function ut(){const e=yi.pop();Ke=e===void 0?!0:e}function kr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ce;ce=void 0;try{t()}finally{ce=n}}}let Sn=0;class uc{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class fs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ce||!Ke||ce===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ce)n=this.activeLink=new uc(ce,this),ce.deps?(n.prevDep=ce.depsTail,ce.depsTail.nextDep=n,ce.depsTail=n):ce.deps=ce.depsTail=n,_i(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ce.depsTail,n.nextDep=void 0,ce.depsTail.nextDep=n,ce.depsTail=n,ce.deps===n&&(ce.deps=s)}return n}trigger(t){this.version++,Sn++,this.notify(t)}notify(t){pr();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{gr()}}}function _i(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)_i(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const zn=new WeakMap,Ft=Symbol(""),Ks=Symbol(""),wn=Symbol("");function be(e,t,n){if(Ke&&ce){let s=zn.get(e);s||zn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new fs),r.map=s,r.key=n),r.track()}}function rt(e,t,n,s,r,o){const i=zn.get(e);if(!i){Sn++;return}const l=c=>{c&&c.trigger()};if(pr(),t==="clear")i.forEach(l);else{const c=V(e),a=c&&fr(n);if(c&&n==="length"){const u=Number(s);i.forEach((f,h)=>{(h==="length"||h===wn||!Ue(h)&&h>=u)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),a&&l(i.get(wn)),t){case"add":c?a&&l(i.get("length")):(l(i.get(Ft)),Gt(e)&&l(i.get(Ks)));break;case"delete":c||(l(i.get(Ft)),Gt(e)&&l(i.get(Ks)));break;case"set":Gt(e)&&l(i.get(Ft));break}}gr()}function ac(e,t){const n=zn.get(e);return n&&n.get(t)}function kt(e){const t=J(e);return t===e?t:(be(t,"iterate",wn),De(e)?t:t.map(ge))}function ds(e){return be(e=J(e),"iterate",wn),e}const fc={__proto__:null,[Symbol.iterator](){return Os(this,Symbol.iterator,ge)},concat(...e){return kt(this).concat(...e.map(t=>V(t)?kt(t):t))},entries(){return Os(this,"entries",e=>(e[1]=ge(e[1]),e))},every(e,t){return tt(this,"every",e,t,void 0,arguments)},filter(e,t){return tt(this,"filter",e,t,n=>n.map(ge),arguments)},find(e,t){return tt(this,"find",e,t,ge,arguments)},findIndex(e,t){return tt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return tt(this,"findLast",e,t,ge,arguments)},findLastIndex(e,t){return tt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return tt(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ps(this,"includes",e)},indexOf(...e){return Ps(this,"indexOf",e)},join(e){return kt(this).join(e)},lastIndexOf(...e){return Ps(this,"lastIndexOf",e)},map(e,t){return tt(this,"map",e,t,void 0,arguments)},pop(){return rn(this,"pop")},push(...e){return rn(this,"push",e)},reduce(e,...t){return Br(this,"reduce",e,t)},reduceRight(e,...t){return Br(this,"reduceRight",e,t)},shift(){return rn(this,"shift")},some(e,t){return tt(this,"some",e,t,void 0,arguments)},splice(...e){return rn(this,"splice",e)},toReversed(){return kt(this).toReversed()},toSorted(e){return kt(this).toSorted(e)},toSpliced(...e){return kt(this).toSpliced(...e)},unshift(...e){return rn(this,"unshift",e)},values(){return Os(this,"values",ge)}};function Os(e,t,n){const s=ds(e),r=s[t]();return s!==e&&!De(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.value&&(o.value=n(o.value)),o}),r}const dc=Array.prototype;function tt(e,t,n,s,r,o){const i=ds(e),l=i!==e&&!De(e),c=i[t];if(c!==dc[t]){const f=c.apply(e,o);return l?ge(f):f}let a=n;i!==e&&(l?a=function(f,h){return n.call(this,ge(f),h,e)}:n.length>2&&(a=function(f,h){return n.call(this,f,h,e)}));const u=c.call(i,a,s);return l&&r?r(u):u}function Br(e,t,n,s){const r=ds(e);let o=n;return r!==e&&(De(e)?n.length>3&&(o=function(i,l,c){return n.call(this,i,l,c,e)}):o=function(i,l,c){return n.call(this,i,ge(l),c,e)}),r[t](o,...s)}function Ps(e,t,n){const s=J(e);be(s,"iterate",wn);const r=s[t](...n);return(r===-1||r===!1)&&_r(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function rn(e,t,n=[]){ct(),pr();const s=J(e)[t].apply(e,n);return gr(),ut(),s}const hc=cr("__proto__,__v_isRef,__isVue"),bi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ue));function pc(e){Ue(e)||(e=String(e));const t=J(this);return be(t,"has",e),t.hasOwnProperty(e)}class Si{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?xc:Ci:o?xi:Ei).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=V(t);if(!r){let c;if(i&&(c=fc[n]))return c;if(n==="hasOwnProperty")return pc}const l=Reflect.get(t,n,fe(t)?t:s);return(Ue(n)?bi.has(n):hc(n))||(r||be(t,"get",n),o)?l:fe(l)?i&&fr(n)?l:l.value:se(l)?r?hs(l):Pn(l):l}}class wi extends Si{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(!this._isShallow){const c=xt(o);if(!De(s)&&!xt(s)&&(o=J(o),s=J(s)),!V(t)&&fe(o)&&!fe(s))return c?!1:(o.value=s,!0)}const i=V(t)&&fr(n)?Number(n)e,Fn=e=>Reflect.getPrototypeOf(e);function _c(e,t,n){return function(...s){const r=this.__v_raw,o=J(r),i=Gt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=r[e](...s),u=n?Us:t?Qn:ge;return!t&&be(o,"iterate",c?Ks:Ft),{next(){const{value:f,done:h}=a.next();return h?{value:f,done:h}:{value:l?[u(f[0]),u(f[1])]:u(f),done:h}},[Symbol.iterator](){return this}}}}function Ln(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function bc(e,t){const n={get(r){const o=this.__v_raw,i=J(o),l=J(r);e||(Et(r,l)&&be(i,"get",r),be(i,"get",l));const{has:c}=Fn(i),a=t?Us:e?Qn:ge;if(c.call(i,r))return a(o.get(r));if(c.call(i,l))return a(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&be(J(r),"iterate",Ft),Reflect.get(r,"size",r)},has(r){const o=this.__v_raw,i=J(o),l=J(r);return e||(Et(r,l)&&be(i,"has",r),be(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,c=J(l),a=t?Us:e?Qn:ge;return!e&&be(c,"iterate",Ft),l.forEach((u,f)=>r.call(o,a(u),a(f),i))}};return pe(n,e?{add:Ln("add"),set:Ln("set"),delete:Ln("delete"),clear:Ln("clear")}:{add(r){!t&&!De(r)&&!xt(r)&&(r=J(r));const o=J(this);return Fn(o).has.call(o,r)||(o.add(r),rt(o,"add",r,r)),this},set(r,o){!t&&!De(o)&&!xt(o)&&(o=J(o));const i=J(this),{has:l,get:c}=Fn(i);let a=l.call(i,r);a||(r=J(r),a=l.call(i,r));const u=c.call(i,r);return i.set(r,o),a?Et(o,u)&&rt(i,"set",r,o):rt(i,"add",r,o),this},delete(r){const o=J(this),{has:i,get:l}=Fn(o);let c=i.call(o,r);c||(r=J(r),c=i.call(o,r)),l&&l.call(o,r);const a=o.delete(r);return c&&rt(o,"delete",r,void 0),a},clear(){const r=J(this),o=r.size!==0,i=r.clear();return o&&rt(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=_c(r,e,t)}),n}function vr(e,t){const n=bc(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(te(n,r)&&r in s?n:s,r,o)}const Sc={get:vr(!1,!1)},wc={get:vr(!1,!0)},Ec={get:vr(!0,!1)};const Ei=new WeakMap,xi=new WeakMap,Ci=new WeakMap,xc=new WeakMap;function Cc(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Rc(e){return e.__v_skip||!Object.isExtensible(e)?0:Cc(Jl(e))}function Pn(e){return xt(e)?e:yr(e,!1,mc,Sc,Ei)}function Ri(e){return yr(e,!1,yc,wc,xi)}function hs(e){return yr(e,!0,vc,Ec,Ci)}function yr(e,t,n,s,r){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=Rc(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function lt(e){return xt(e)?lt(e.__v_raw):!!(e&&e.__v_isReactive)}function xt(e){return!!(e&&e.__v_isReadonly)}function De(e){return!!(e&&e.__v_isShallow)}function _r(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function br(e){return!te(e,"__v_skip")&&Object.isExtensible(e)&&ks(e,"__v_skip",!0),e}const ge=e=>se(e)?Pn(e):e,Qn=e=>se(e)?hs(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function ue(e){return Oi(e,!1)}function Ti(e){return Oi(e,!0)}function Oi(e,t){return fe(e)?e:new Tc(e,t)}class Tc{constructor(t,n){this.dep=new fs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:ge(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||De(t)||xt(t);t=s?t:J(t),Et(t,n)&&(this._rawValue=t,this._value=s?t:ge(t),this.dep.trigger())}}function fd(e){e.dep&&e.dep.trigger()}function Lt(e){return fe(e)?e.value:e}const Oc={get:(e,t,n)=>t==="__v_raw"?e:Lt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Pi(e){return lt(e)?e:new Proxy(e,Oc)}class Pc{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new fs,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Ac(e){return new Pc(e)}function Ic(e){const t=V(e)?new Array(e.length):{};for(const n in e)t[n]=Ai(e,n);return t}class Mc{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return ac(J(this._object),this._key)}}class Nc{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Fc(e,t,n){return fe(e)?e:q(e)?new Nc(e):se(e)&&arguments.length>1?Ai(e,t,n):ue(e)}function Ai(e,t,n){const s=e[t];return fe(s)?s:new Mc(e,t,n)}class Lc{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new fs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Sn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ce!==this)return pi(this,!0),!0}get value(){const t=this.dep.track();return vi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function $c(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Lc(s,r,n)}const $n={},Jn=new WeakMap;let Nt;function Dc(e,t=!1,n=Nt){if(n){let s=Jn.get(n);s||Jn.set(n,s=[]),s.push(e)}}function jc(e,t,n=ie){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:c}=n,a=E=>r?E:De(E)||r===!1||r===0?ot(E,1):ot(E);let u,f,h,g,v=!1,x=!1;if(fe(e)?(f=()=>e.value,v=De(e)):lt(e)?(f=()=>a(e),v=!0):V(e)?(x=!0,v=e.some(E=>lt(E)||De(E)),f=()=>e.map(E=>{if(fe(E))return E.value;if(lt(E))return a(E);if(q(E))return c?c(E,2):E()})):q(e)?t?f=c?()=>c(e,2):e:f=()=>{if(h){ct();try{h()}finally{ut()}}const E=Nt;Nt=u;try{return c?c(e,3,[g]):e(g)}finally{Nt=E}}:f=Be,t&&r){const E=f,D=r===!0?1/0:r;f=()=>ot(E(),D)}const F=hr(),A=()=>{u.stop(),F&&F.active&&ar(F.effects,u)};if(o&&t){const E=t;t=(...D)=>{E(...D),A()}}let S=x?new Array(e.length).fill($n):$n;const C=E=>{if(!(!(u.flags&1)||!u.dirty&&!E))if(t){const D=u.run();if(r||v||(x?D.some((W,U)=>Et(W,S[U])):Et(D,S))){h&&h();const W=Nt;Nt=u;try{const U=[D,S===$n?void 0:x&&S[0]===$n?[]:S,g];S=D,c?c(t,3,U):t(...U)}finally{Nt=W}}}else u.run()};return l&&l(C),u=new di(f),u.scheduler=i?()=>i(C,!1):C,g=E=>Dc(E,!1,u),h=u.onStop=()=>{const E=Jn.get(u);if(E){if(c)c(E,4);else for(const D of E)D();Jn.delete(u)}},t?s?C(!0):S=u.run():i?i(C.bind(null,!0),!0):u.run(),A.pause=u.pause.bind(u),A.resume=u.resume.bind(u),A.stop=A,A}function ot(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))ot(e.value,t,n);else if(V(e))for(let s=0;s{ot(s,t,n)});else if(oi(e)){for(const s in e)ot(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&ot(e[s],t,n)}return e}/** -* @vue/runtime-core v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function An(e,t,n,s){try{return s?e(...s):e()}catch(r){ps(r,t,n)}}function We(e,t,n,s){if(q(e)){const r=An(e,t,n,s);return r&&si(r)&&r.catch(o=>{ps(o,t,n)}),r}if(V(e)){const r=[];for(let o=0;o>>1,r=Re[s],o=En(r);o=En(n)?Re.push(e):Re.splice(Hc(t),0,e),e.flags|=1,Mi()}}function Mi(){Yn||(Yn=Ii.then(Fi))}function kc(e){V(e)?zt.push(...e):yt&&e.id===-1?yt.splice(Kt+1,0,e):e.flags&1||(zt.push(e),e.flags|=1),Mi()}function Kr(e,t,n=Xe+1){for(;nEn(n)-En(s));if(zt.length=0,yt){yt.push(...t);return}for(yt=t,Kt=0;Kte.id==null?e.flags&2?-1:1/0:e.id;function Fi(e){try{for(Xe=0;Xe{s._d&&no(-1);const o=Xn(t);let i;try{i=e(...r)}finally{Xn(o),s._d&&no(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function dd(e,t){if(ve===null)return e;const n=bs(ve),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,pn=e=>e&&(e.disabled||e.disabled===""),Ur=e=>e&&(e.defer||e.defer===""),Wr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Gr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ws=(e,t)=>{const n=e&&e.to;return ae(n)?t?t(n):null:n},ji={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,o,i,l,c,a){const{mc:u,pc:f,pbc:h,o:{insert:g,querySelector:v,createText:x,createComment:F}}=a,A=pn(t.props);let{shapeFlag:S,children:C,dynamicChildren:E}=t;if(e==null){const D=t.el=x(""),W=t.anchor=x("");g(D,n,s),g(W,n,s);const U=(T,k)=>{S&16&&(r&&r.isCE&&(r.ce._teleportTarget=T),u(C,T,k,r,o,i,l,c))},H=()=>{const T=t.target=Ws(t.props,v),k=Vi(T,t,x,g);T&&(i!=="svg"&&Wr(T)?i="svg":i!=="mathml"&&Gr(T)&&(i="mathml"),A||(U(T,k),Bn(t,!1)))};A&&(U(n,W),Bn(t,!0)),Ur(t.props)?(t.el.__isMounted=!1,he(()=>{H(),delete t.el.__isMounted},o)):H()}else{if(Ur(t.props)&&e.el.__isMounted===!1){he(()=>{ji.process(e,t,n,s,r,o,i,l,c,a)},o);return}t.el=e.el,t.targetStart=e.targetStart;const D=t.anchor=e.anchor,W=t.target=e.target,U=t.targetAnchor=e.targetAnchor,H=pn(e.props),T=H?n:W,k=H?D:U;if(i==="svg"||Wr(W)?i="svg":(i==="mathml"||Gr(W))&&(i="mathml"),E?(h(e.dynamicChildren,E,T,r,o,i,l),Pr(e,t,!0)):c||f(e,t,T,k,r,o,i,l,!1),A)H?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Dn(t,n,D,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const Q=t.target=Ws(t.props,v);Q&&Dn(t,Q,null,a,0)}else H&&Dn(t,W,U,a,1);Bn(t,A)}},remove(e,t,n,{um:s,o:{remove:r}},o){const{shapeFlag:i,children:l,anchor:c,targetStart:a,targetAnchor:u,target:f,props:h}=e;if(f&&(r(a),r(u)),o&&r(c),i&16){const g=o||!pn(h);for(let v=0;v{e.isMounted=!0}),xr(()=>{e.isUnmounting=!0}),e}const Le=[Function,Array],ki={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Le,onEnter:Le,onAfterEnter:Le,onEnterCancelled:Le,onBeforeLeave:Le,onLeave:Le,onAfterLeave:Le,onLeaveCancelled:Le,onBeforeAppear:Le,onAppear:Le,onAfterAppear:Le,onAppearCancelled:Le},Bi=e=>{const t=e.subTree;return t.component?Bi(t.component):t},Uc={name:"BaseTransition",props:ki,setup(e,{slots:t}){const n=Pt(),s=Hi();return()=>{const r=t.default&&wr(t.default(),!0);if(!r||!r.length)return;const o=Ki(r),i=J(e),{mode:l}=i;if(s.isLeaving)return As(o);const c=qr(o);if(!c)return As(o);let a=xn(c,i,s,n,f=>a=f);c.type!==me&&Ct(c,a);let u=n.subTree&&qr(n.subTree);if(u&&u.type!==me&&!wt(c,u)&&Bi(n).type!==me){let f=xn(u,i,s,n);if(Ct(u,f),l==="out-in"&&c.type!==me)return s.isLeaving=!0,f.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,u=void 0},As(o);l==="in-out"&&c.type!==me?f.delayLeave=(h,g,v)=>{const x=Ui(s,u);x[String(u.key)]=u,h[_t]=()=>{g(),h[_t]=void 0,delete a.delayedLeave,u=void 0},a.delayedLeave=()=>{v(),delete a.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return o}}};function Ki(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==me){t=n;break}}return t}const Wc=Uc;function Ui(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function xn(e,t,n,s,r){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:a,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:h,onLeave:g,onAfterLeave:v,onLeaveCancelled:x,onBeforeAppear:F,onAppear:A,onAfterAppear:S,onAppearCancelled:C}=t,E=String(e.key),D=Ui(n,e),W=(T,k)=>{T&&We(T,s,9,k)},U=(T,k)=>{const Q=k[1];W(T,k),V(T)?T.every(L=>L.length<=1)&&Q():T.length<=1&&Q()},H={mode:i,persisted:l,beforeEnter(T){let k=c;if(!n.isMounted)if(o)k=F||c;else return;T[_t]&&T[_t](!0);const Q=D[E];Q&&wt(e,Q)&&Q.el[_t]&&Q.el[_t](),W(k,[T])},enter(T){let k=a,Q=u,L=f;if(!n.isMounted)if(o)k=A||a,Q=S||u,L=C||f;else return;let Y=!1;const de=T[jn]=xe=>{Y||(Y=!0,xe?W(L,[T]):W(Q,[T]),H.delayedLeave&&H.delayedLeave(),T[jn]=void 0)};k?U(k,[T,de]):de()},leave(T,k){const Q=String(e.key);if(T[jn]&&T[jn](!0),n.isUnmounting)return k();W(h,[T]);let L=!1;const Y=T[_t]=de=>{L||(L=!0,k(),de?W(x,[T]):W(v,[T]),T[_t]=void 0,D[Q]===e&&delete D[Q])};D[Q]=e,g?U(g,[T,Y]):Y()},clone(T){const k=xn(T,t,n,s,r);return r&&r(k),k}};return H}function As(e){if(gs(e))return e=at(e),e.children=null,e}function qr(e){if(!gs(e))return Di(e.type)&&e.children?Ki(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Ct(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Ct(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function wr(e,t=!1,n){let s=[],r=0;for(let o=0;o1)for(let o=0;ogn(v,t&&(V(t)?t[x]:t),n,s,r));return}if($t(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&gn(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?bs(s.component):s.el,i=r?null:o,{i:l,r:c}=e,a=t&&t.r,u=l.refs===ie?l.refs={}:l.refs,f=l.setupState,h=J(f),g=f===ie?()=>!1:v=>te(h,v);if(a!=null&&a!==c&&(ae(a)?(u[a]=null,g(a)&&(f[a]=null)):fe(a)&&(a.value=null)),q(c))An(c,l,12,[i,u]);else{const v=ae(c),x=fe(c);if(v||x){const F=()=>{if(e.f){const A=v?g(c)?f[c]:u[c]:c.value;r?V(A)&&ar(A,o):V(A)?A.includes(o)||A.push(o):v?(u[c]=[o],g(c)&&(f[c]=u[c])):(c.value=[o],e.k&&(u[e.k]=c.value))}else v?(u[c]=i,g(c)&&(f[c]=i)):x&&(c.value=i,e.k&&(u[e.k]=i))};i?(F.id=-1,he(F,n)):F()}}}cs().requestIdleCallback;cs().cancelIdleCallback;const $t=e=>!!e.type.__asyncLoader,gs=e=>e.type.__isKeepAlive,Gc={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=Pt(),s=n.ctx;if(!s.renderer)return()=>{const S=t.default&&t.default();return S&&S.length===1?S[0]:S};const r=new Map,o=new Set;let i=null;const l=n.suspense,{renderer:{p:c,m:a,um:u,o:{createElement:f}}}=s,h=f("div");s.activate=(S,C,E,D,W)=>{const U=S.component;a(S,C,E,0,l),c(U.vnode,S,C,E,U,l,D,S.slotScopeIds,W),he(()=>{U.isDeactivated=!1,U.a&&qt(U.a);const H=S.props&&S.props.onVnodeMounted;H&&$e(H,U.parent,S)},l)},s.deactivate=S=>{const C=S.component;es(C.m),es(C.a),a(S,h,null,1,l),he(()=>{C.da&&qt(C.da);const E=S.props&&S.props.onVnodeUnmounted;E&&$e(E,C.parent,S),C.isDeactivated=!0},l)};function g(S){Is(S),u(S,n,l,!0)}function v(S){r.forEach((C,E)=>{const D=Zs(C.type);D&&!S(D)&&x(E)})}function x(S){const C=r.get(S);C&&(!i||!wt(C,i))?g(C):i&&Is(i),r.delete(S),o.delete(S)}ye(()=>[e.include,e.exclude],([S,C])=>{S&&v(E=>un(S,E)),C&&v(E=>!un(C,E))},{flush:"post",deep:!0});let F=null;const A=()=>{F!=null&&(ts(n.subTree.type)?he(()=>{r.set(F,Vn(n.subTree))},n.subTree.suspense):r.set(F,Vn(n.subTree)))};return vs(A),Er(A),xr(()=>{r.forEach(S=>{const{subTree:C,suspense:E}=n,D=Vn(C);if(S.type===D.type&&S.key===D.key){Is(D);const W=D.component.da;W&&he(W,E);return}g(S)})}),()=>{if(F=null,!t.default)return i=null;const S=t.default(),C=S[0];if(S.length>1)return i=null,S;if(!Qt(C)||!(C.shapeFlag&4)&&!(C.shapeFlag&128))return i=null,C;let E=Vn(C);if(E.type===me)return i=null,E;const D=E.type,W=Zs($t(E)?E.type.__asyncResolved||{}:D),{include:U,exclude:H,max:T}=e;if(U&&(!W||!un(U,W))||H&&W&&un(H,W))return E.shapeFlag&=-257,i=E,C;const k=E.key==null?D:E.key,Q=r.get(k);return E.el&&(E=at(E),C.shapeFlag&128&&(C.ssContent=E)),F=k,Q?(E.el=Q.el,E.component=Q.component,E.transition&&Ct(E,E.transition),E.shapeFlag|=512,o.delete(k),o.add(k)):(o.add(k),T&&o.size>parseInt(T,10)&&x(o.values().next().value)),E.shapeFlag|=256,i=E,ts(C.type)?C:E}}},pd=Gc;function un(e,t){return V(e)?e.some(n=>un(n,t)):ae(e)?e.split(",").includes(t):Ql(e)?(e.lastIndex=0,e.test(t)):!1}function qc(e,t){qi(e,"a",t)}function zc(e,t){qi(e,"da",t)}function qi(e,t,n=Se){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(ms(t,s,n),n){let r=n.parent;for(;r&&r.parent;)gs(r.parent.vnode)&&Qc(s,t,n,r),r=r.parent}}function Qc(e,t,n,s){const r=ms(t,e,s,!0);zi(()=>{ar(s[t],r)},n)}function Is(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function Vn(e){return e.shapeFlag&128?e.ssContent:e}function ms(e,t,n=Se,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{ct();const l=Mn(n),c=We(t,n,e,i);return l(),ut(),c});return s?r.unshift(o):r.push(o),o}}const ft=e=>(t,n=Se)=>{(!Rn||e==="sp")&&ms(e,(...s)=>t(...s),n)},Jc=ft("bm"),vs=ft("m"),Yc=ft("bu"),Er=ft("u"),xr=ft("bum"),zi=ft("um"),Xc=ft("sp"),Zc=ft("rtg"),eu=ft("rtc");function tu(e,t=Se){ms("ec",e,t)}const Cr="components",nu="directives";function gd(e,t){return Rr(Cr,e,!0,t)||e}const Qi=Symbol.for("v-ndc");function md(e){return ae(e)?Rr(Cr,e,!1)||e:e||Qi}function vd(e){return Rr(nu,e)}function Rr(e,t,n=!0,s=!1){const r=ve||Se;if(r){const o=r.type;if(e===Cr){const l=Zs(o,!1);if(l&&(l===t||l===ke(t)||l===ls(ke(t))))return o}const i=zr(r[e]||o[e],t)||zr(r.appContext[e],t);return!i&&s?o:i}}function zr(e,t){return e&&(e[t]||e[ke(t)]||e[ls(ke(t))])}function yd(e,t,n,s){let r;const o=n,i=V(e);if(i||ae(e)){const l=i&<(e);let c=!1,a=!1;l&&(c=!De(e),a=xt(e),e=ds(e)),r=new Array(e.length);for(let u=0,f=e.length;ut(l,c,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,a=l.length;c{const o=s.fn(...r);return o&&(o.key=s.key),o}:s.fn)}return e}function bd(e,t,n={},s,r){if(ve.ce||ve.parent&&$t(ve.parent)&&ve.parent.ce)return t!=="default"&&(n.name=t),Js(),Ys(Ae,null,[Ee("slot",n,s&&s())],64);let o=e[t];o&&o._c&&(o._d=!1),Js();const i=o&&Ji(o(n)),l=n.key||i&&i.key,c=Ys(Ae,{key:(l&&!Ue(l)?l:`_${t}`)+(!i&&s?"_fb":"")},i||(s?s():[]),i&&e._===1?64:-2);return!r&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),o&&o._c&&(o._d=!0),c}function Ji(e){return e.some(t=>Qt(t)?!(t.type===me||t.type===Ae&&!Ji(t.children)):!0)?e:null}function Sd(e,t){const n={};for(const s in e)n[kn(s)]=e[s];return n}const Gs=e=>e?gl(e)?bs(e):Gs(e.parent):null,mn=pe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Gs(e.parent),$root:e=>Gs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Zi(e),$forceUpdate:e=>e.f||(e.f=()=>{Sr(e.update)}),$nextTick:e=>e.n||(e.n=In.bind(e.proxy)),$watch:e=>Cu.bind(e)}),Ms=(e,t)=>e!==ie&&!e.__isScriptSetup&&te(e,t),su={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(Ms(s,t))return i[t]=1,s[t];if(r!==ie&&te(r,t))return i[t]=2,r[t];if((a=e.propsOptions[0])&&te(a,t))return i[t]=3,o[t];if(n!==ie&&te(n,t))return i[t]=4,n[t];qs&&(i[t]=0)}}const u=mn[t];let f,h;if(u)return t==="$attrs"&&be(e.attrs,"get",""),u(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==ie&&te(n,t))return i[t]=4,n[t];if(h=c.config.globalProperties,te(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return Ms(r,t)?(r[t]=n,!0):s!==ie&&te(s,t)?(s[t]=n,!0):te(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==ie&&te(e,i)||Ms(t,i)||(l=o[0])&&te(l,i)||te(s,i)||te(mn,i)||te(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:te(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function wd(){return Yi().slots}function Ed(){return Yi().attrs}function Yi(e){const t=Pt();return t.setupContext||(t.setupContext=vl(t))}function Qr(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let qs=!0;function ru(e){const t=Zi(e),n=e.proxy,s=e.ctx;qs=!1,t.beforeCreate&&Jr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:a,created:u,beforeMount:f,mounted:h,beforeUpdate:g,updated:v,activated:x,deactivated:F,beforeDestroy:A,beforeUnmount:S,destroyed:C,unmounted:E,render:D,renderTracked:W,renderTriggered:U,errorCaptured:H,serverPrefetch:T,expose:k,inheritAttrs:Q,components:L,directives:Y,filters:de}=t;if(a&&ou(a,s,null),i)for(const z in i){const Z=i[z];q(Z)&&(s[z]=Z.bind(n))}if(r){const z=r.call(n,n);se(z)&&(e.data=Pn(z))}if(qs=!0,o)for(const z in o){const Z=o[z],et=q(Z)?Z.bind(n,n):q(Z.get)?Z.get.bind(n,n):Be,ht=!q(Z)&&q(Z.set)?Z.set.bind(n):Be,qe=we({get:et,set:ht});Object.defineProperty(s,z,{enumerable:!0,configurable:!0,get:()=>qe.value,set:Te=>qe.value=Te})}if(l)for(const z in l)Xi(l[z],s,n,z);if(c){const z=q(c)?c.call(n):c;Reflect.ownKeys(z).forEach(Z=>{Kn(Z,z[Z])})}u&&Jr(u,e,"c");function re(z,Z){V(Z)?Z.forEach(et=>z(et.bind(n))):Z&&z(Z.bind(n))}if(re(Jc,f),re(vs,h),re(Yc,g),re(Er,v),re(qc,x),re(zc,F),re(tu,H),re(eu,W),re(Zc,U),re(xr,S),re(zi,E),re(Xc,T),V(k))if(k.length){const z=e.exposed||(e.exposed={});k.forEach(Z=>{Object.defineProperty(z,Z,{get:()=>n[Z],set:et=>n[Z]=et,enumerable:!0})})}else e.exposed||(e.exposed={});D&&e.render===Be&&(e.render=D),Q!=null&&(e.inheritAttrs=Q),L&&(e.components=L),Y&&(e.directives=Y),T&&Gi(e)}function ou(e,t,n=Be){V(e)&&(e=zs(e));for(const s in e){const r=e[s];let o;se(r)?"default"in r?o=je(r.from||s,r.default,!0):o=je(r.from||s):o=je(r),fe(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function Jr(e,t,n){We(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Xi(e,t,n,s){let r=s.includes(".")?al(n,s):()=>n[s];if(ae(e)){const o=t[e];q(o)&&ye(r,o)}else if(q(e))ye(r,e.bind(n));else if(se(e))if(V(e))e.forEach(o=>Xi(o,t,n,s));else{const o=q(e.handler)?e.handler.bind(n):t[e.handler];q(o)&&ye(r,o,e)}}function Zi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>Zn(c,a,i,!0)),Zn(c,t,i)),se(t)&&o.set(t,c),c}function Zn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Zn(e,o,n,!0),r&&r.forEach(i=>Zn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=iu[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const iu={data:Yr,props:Xr,emits:Xr,methods:an,computed:an,beforeCreate:Ce,created:Ce,beforeMount:Ce,mounted:Ce,beforeUpdate:Ce,updated:Ce,beforeDestroy:Ce,beforeUnmount:Ce,destroyed:Ce,unmounted:Ce,activated:Ce,deactivated:Ce,errorCaptured:Ce,serverPrefetch:Ce,components:an,directives:an,watch:cu,provide:Yr,inject:lu};function Yr(e,t){return t?e?function(){return pe(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function lu(e,t){return an(zs(e),zs(t))}function zs(e){if(V(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}function fu(){return!!(Pt()||Dt)}const tl={},nl=()=>Object.create(tl),sl=e=>Object.getPrototypeOf(e)===tl;function du(e,t,n,s=!1){const r={},o=nl();e.propsDefaults=Object.create(null),rl(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:Ri(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function hu(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=J(r),[c]=e.propsOptions;let a=!1;if((s||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let f=0;f{c=!0;const[h,g]=ol(f,t,!0);pe(i,h),g&&l.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!c)return se(e)&&s.set(e,Wt),Wt;if(V(o))for(let u=0;ue==="_"||e==="__"||e==="_ctx"||e==="$stable",Or=e=>V(e)?e.map(Ze):[Ze(e)],gu=(e,t,n)=>{if(t._n)return t;const s=Bc((...r)=>Or(t(...r)),n);return s._c=!1,s},il=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Tr(r))continue;const o=e[r];if(q(o))t[r]=gu(r,o,s);else if(o!=null){const i=Or(o);t[r]=()=>i}}},ll=(e,t)=>{const n=Or(t);e.slots.default=()=>n},cl=(e,t,n)=>{for(const s in t)(n||!Tr(s))&&(e[s]=t[s])},mu=(e,t,n)=>{const s=e.slots=nl();if(e.vnode.shapeFlag&32){const r=t.__;r&&ks(s,"__",r,!0);const o=t._;o?(cl(s,t,n),n&&ks(s,"_",o,!0)):il(t,s)}else t&&ll(e,t)},vu=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ie;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:cl(r,t,n):(o=!t.$stable,il(t,r)),i=t}else t&&(ll(e,t),i={default:1});if(o)for(const l in r)!Tr(l)&&i[l]==null&&delete r[l]},he=Mu;function yu(e){return _u(e)}function _u(e,t){const n=cs();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:u,parentNode:f,nextSibling:h,setScopeId:g=Be,insertStaticContent:v}=e,x=(d,p,m,y=null,w=null,b=null,I=void 0,P=null,O=!!p.dynamicChildren)=>{if(d===p)return;d&&!wt(d,p)&&(y=_(d),Te(d,w,b,!0),d=null),p.patchFlag===-2&&(O=!1,p.dynamicChildren=null);const{type:R,ref:K,shapeFlag:N}=p;switch(R){case _s:F(d,p,m,y);break;case me:A(d,p,m,y);break;case Un:d==null&&S(p,m,y,I);break;case Ae:L(d,p,m,y,w,b,I,P,O);break;default:N&1?D(d,p,m,y,w,b,I,P,O):N&6?Y(d,p,m,y,w,b,I,P,O):(N&64||N&128)&&R.process(d,p,m,y,w,b,I,P,O,j)}K!=null&&w?gn(K,d&&d.ref,b,p||d,!p):K==null&&d&&d.ref!=null&&gn(d.ref,null,b,d,!0)},F=(d,p,m,y)=>{if(d==null)s(p.el=l(p.children),m,y);else{const w=p.el=d.el;p.children!==d.children&&a(w,p.children)}},A=(d,p,m,y)=>{d==null?s(p.el=c(p.children||""),m,y):p.el=d.el},S=(d,p,m,y)=>{[d.el,d.anchor]=v(d.children,p,m,y,d.el,d.anchor)},C=({el:d,anchor:p},m,y)=>{let w;for(;d&&d!==p;)w=h(d),s(d,m,y),d=w;s(p,m,y)},E=({el:d,anchor:p})=>{let m;for(;d&&d!==p;)m=h(d),r(d),d=m;r(p)},D=(d,p,m,y,w,b,I,P,O)=>{p.type==="svg"?I="svg":p.type==="math"&&(I="mathml"),d==null?W(p,m,y,w,b,I,P,O):T(d,p,w,b,I,P,O)},W=(d,p,m,y,w,b,I,P)=>{let O,R;const{props:K,shapeFlag:N,transition:B,dirs:G}=d;if(O=d.el=i(d.type,b,K&&K.is,K),N&8?u(O,d.children):N&16&&H(d.children,O,null,y,w,Ns(d,b),I,P),G&&At(d,null,y,"created"),U(O,d,d.scopeId,I,y),K){for(const le in K)le!=="value"&&!fn(le)&&o(O,le,null,K[le],b,y);"value"in K&&o(O,"value",null,K.value,b),(R=K.onVnodeBeforeMount)&&$e(R,y,d)}G&&At(d,null,y,"beforeMount");const X=bu(w,B);X&&B.beforeEnter(O),s(O,p,m),((R=K&&K.onVnodeMounted)||X||G)&&he(()=>{R&&$e(R,y,d),X&&B.enter(O),G&&At(d,null,y,"mounted")},w)},U=(d,p,m,y,w)=>{if(m&&g(d,m),y)for(let b=0;b{for(let R=O;R{const P=p.el=d.el;let{patchFlag:O,dynamicChildren:R,dirs:K}=p;O|=d.patchFlag&16;const N=d.props||ie,B=p.props||ie;let G;if(m&&It(m,!1),(G=B.onVnodeBeforeUpdate)&&$e(G,m,p,d),K&&At(p,d,m,"beforeUpdate"),m&&It(m,!0),(N.innerHTML&&B.innerHTML==null||N.textContent&&B.textContent==null)&&u(P,""),R?k(d.dynamicChildren,R,P,m,y,Ns(p,w),b):I||Z(d,p,P,null,m,y,Ns(p,w),b,!1),O>0){if(O&16)Q(P,N,B,m,w);else if(O&2&&N.class!==B.class&&o(P,"class",null,B.class,w),O&4&&o(P,"style",N.style,B.style,w),O&8){const X=p.dynamicProps;for(let le=0;le{G&&$e(G,m,p,d),K&&At(p,d,m,"updated")},y)},k=(d,p,m,y,w,b,I)=>{for(let P=0;P{if(p!==m){if(p!==ie)for(const b in p)!fn(b)&&!(b in m)&&o(d,b,p[b],null,w,y);for(const b in m){if(fn(b))continue;const I=m[b],P=p[b];I!==P&&b!=="value"&&o(d,b,P,I,w,y)}"value"in m&&o(d,"value",p.value,m.value,w)}},L=(d,p,m,y,w,b,I,P,O)=>{const R=p.el=d?d.el:l(""),K=p.anchor=d?d.anchor:l("");let{patchFlag:N,dynamicChildren:B,slotScopeIds:G}=p;G&&(P=P?P.concat(G):G),d==null?(s(R,m,y),s(K,m,y),H(p.children||[],m,K,w,b,I,P,O)):N>0&&N&64&&B&&d.dynamicChildren?(k(d.dynamicChildren,B,m,w,b,I,P),(p.key!=null||w&&p===w.subTree)&&Pr(d,p,!0)):Z(d,p,m,K,w,b,I,P,O)},Y=(d,p,m,y,w,b,I,P,O)=>{p.slotScopeIds=P,d==null?p.shapeFlag&512?w.ctx.activate(p,m,y,I,O):de(p,m,y,w,b,I,O):xe(d,p,O)},de=(d,p,m,y,w,b,I)=>{const P=d.component=Hu(d,y,w);if(gs(d)&&(P.ctx.renderer=j),ku(P,!1,I),P.asyncDep){if(w&&w.registerDep(P,re,I),!d.el){const O=P.subTree=Ee(me);A(null,O,p,m),d.placeholder=O.el}}else re(P,d,p,m,w,b,I)},xe=(d,p,m)=>{const y=p.component=d.component;if(Au(d,p,m))if(y.asyncDep&&!y.asyncResolved){z(y,p,m);return}else y.next=p,y.update();else p.el=d.el,y.vnode=p},re=(d,p,m,y,w,b,I)=>{const P=()=>{if(d.isMounted){let{next:N,bu:B,u:G,parent:X,vnode:le}=d;{const Qe=ul(d);if(Qe){N&&(N.el=le.el,z(d,N,I)),Qe.asyncDep.then(()=>{d.isUnmounted||P()});return}}let ne=N,Oe;It(d,!1),N?(N.el=le.el,z(d,N,I)):N=le,B&&qt(B),(Oe=N.props&&N.props.onVnodeBeforeUpdate)&&$e(Oe,X,N,le),It(d,!0);const Pe=eo(d),ze=d.subTree;d.subTree=Pe,x(ze,Pe,f(ze.el),_(ze),d,w,b),N.el=Pe.el,ne===null&&Iu(d,Pe.el),G&&he(G,w),(Oe=N.props&&N.props.onVnodeUpdated)&&he(()=>$e(Oe,X,N,le),w)}else{let N;const{el:B,props:G}=p,{bm:X,m:le,parent:ne,root:Oe,type:Pe}=d,ze=$t(p);It(d,!1),X&&qt(X),!ze&&(N=G&&G.onVnodeBeforeMount)&&$e(N,ne,p),It(d,!0);{Oe.ce&&Oe.ce._def.shadowRoot!==!1&&Oe.ce._injectChildStyle(Pe);const Qe=d.subTree=eo(d);x(null,Qe,m,y,d,w,b),p.el=Qe.el}if(le&&he(le,w),!ze&&(N=G&&G.onVnodeMounted)){const Qe=p;he(()=>$e(N,ne,Qe),w)}(p.shapeFlag&256||ne&&$t(ne.vnode)&&ne.vnode.shapeFlag&256)&&d.a&&he(d.a,w),d.isMounted=!0,p=m=y=null}};d.scope.on();const O=d.effect=new di(P);d.scope.off();const R=d.update=O.run.bind(O),K=d.job=O.runIfDirty.bind(O);K.i=d,K.id=d.uid,O.scheduler=()=>Sr(K),It(d,!0),R()},z=(d,p,m)=>{p.component=d;const y=d.vnode.props;d.vnode=p,d.next=null,hu(d,p.props,y,m),vu(d,p.children,m),ct(),Kr(d),ut()},Z=(d,p,m,y,w,b,I,P,O=!1)=>{const R=d&&d.children,K=d?d.shapeFlag:0,N=p.children,{patchFlag:B,shapeFlag:G}=p;if(B>0){if(B&128){ht(R,N,m,y,w,b,I,P,O);return}else if(B&256){et(R,N,m,y,w,b,I,P,O);return}}G&8?(K&16&&Fe(R,w,b),N!==R&&u(m,N)):K&16?G&16?ht(R,N,m,y,w,b,I,P,O):Fe(R,w,b,!0):(K&8&&u(m,""),G&16&&H(N,m,y,w,b,I,P,O))},et=(d,p,m,y,w,b,I,P,O)=>{d=d||Wt,p=p||Wt;const R=d.length,K=p.length,N=Math.min(R,K);let B;for(B=0;BK?Fe(d,w,b,!0,!1,N):H(p,m,y,w,b,I,P,O,N)},ht=(d,p,m,y,w,b,I,P,O)=>{let R=0;const K=p.length;let N=d.length-1,B=K-1;for(;R<=N&&R<=B;){const G=d[R],X=p[R]=O?bt(p[R]):Ze(p[R]);if(wt(G,X))x(G,X,m,null,w,b,I,P,O);else break;R++}for(;R<=N&&R<=B;){const G=d[N],X=p[B]=O?bt(p[B]):Ze(p[B]);if(wt(G,X))x(G,X,m,null,w,b,I,P,O);else break;N--,B--}if(R>N){if(R<=B){const G=B+1,X=GB)for(;R<=N;)Te(d[R],w,b,!0),R++;else{const G=R,X=R,le=new Map;for(R=X;R<=B;R++){const Ie=p[R]=O?bt(p[R]):Ze(p[R]);Ie.key!=null&&le.set(Ie.key,R)}let ne,Oe=0;const Pe=B-X+1;let ze=!1,Qe=0;const sn=new Array(Pe);for(R=0;R=Pe){Te(Ie,w,b,!0);continue}let Je;if(Ie.key!=null)Je=le.get(Ie.key);else for(ne=X;ne<=B;ne++)if(sn[ne-X]===0&&wt(Ie,p[ne])){Je=ne;break}Je===void 0?Te(Ie,w,b,!0):(sn[Je-X]=R+1,Je>=Qe?Qe=Je:ze=!0,x(Ie,p[Je],m,null,w,b,I,P,O),Oe++)}const $r=ze?Su(sn):Wt;for(ne=$r.length-1,R=Pe-1;R>=0;R--){const Ie=X+R,Je=p[Ie],Dr=p[Ie+1],jr=Ie+1{const{el:b,type:I,transition:P,children:O,shapeFlag:R}=d;if(R&6){qe(d.component.subTree,p,m,y);return}if(R&128){d.suspense.move(p,m,y);return}if(R&64){I.move(d,p,m,j);return}if(I===Ae){s(b,p,m);for(let N=0;NP.enter(b),w);else{const{leave:N,delayLeave:B,afterLeave:G}=P,X=()=>{d.ctx.isUnmounted?r(b):s(b,p,m)},le=()=>{N(b,()=>{X(),G&&G()})};B?B(b,X,le):le()}else s(b,p,m)},Te=(d,p,m,y=!1,w=!1)=>{const{type:b,props:I,ref:P,children:O,dynamicChildren:R,shapeFlag:K,patchFlag:N,dirs:B,cacheIndex:G}=d;if(N===-2&&(w=!1),P!=null&&(ct(),gn(P,null,m,d,!0),ut()),G!=null&&(p.renderCache[G]=void 0),K&256){p.ctx.deactivate(d);return}const X=K&1&&B,le=!$t(d);let ne;if(le&&(ne=I&&I.onVnodeBeforeUnmount)&&$e(ne,p,d),K&6)Nn(d.component,m,y);else{if(K&128){d.suspense.unmount(m,y);return}X&&At(d,null,p,"beforeUnmount"),K&64?d.type.remove(d,p,m,j,y):R&&!R.hasOnce&&(b!==Ae||N>0&&N&64)?Fe(R,p,m,!1,!0):(b===Ae&&N&384||!w&&K&16)&&Fe(O,p,m),y&&Vt(d)}(le&&(ne=I&&I.onVnodeUnmounted)||X)&&he(()=>{ne&&$e(ne,p,d),X&&At(d,null,p,"unmounted")},m)},Vt=d=>{const{type:p,el:m,anchor:y,transition:w}=d;if(p===Ae){Ht(m,y);return}if(p===Un){E(d);return}const b=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(d.shapeFlag&1&&w&&!w.persisted){const{leave:I,delayLeave:P}=w,O=()=>I(m,b);P?P(d.el,b,O):O()}else b()},Ht=(d,p)=>{let m;for(;d!==p;)m=h(d),r(d),d=m;r(p)},Nn=(d,p,m)=>{const{bum:y,scope:w,job:b,subTree:I,um:P,m:O,a:R,parent:K,slots:{__:N}}=d;es(O),es(R),y&&qt(y),K&&V(N)&&N.forEach(B=>{K.renderCache[B]=void 0}),w.stop(),b&&(b.flags|=8,Te(I,d,p,m)),P&&he(P,p),he(()=>{d.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&d.asyncDep&&!d.asyncResolved&&d.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},Fe=(d,p,m,y=!1,w=!1,b=0)=>{for(let I=b;I{if(d.shapeFlag&6)return _(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const p=h(d.anchor||d.el),m=p&&p[$i];return m?h(m):p};let $=!1;const M=(d,p,m)=>{d==null?p._vnode&&Te(p._vnode,null,null,!0):x(p._vnode||null,d,p,null,null,null,m),p._vnode=d,$||($=!0,Kr(),Ni(),$=!1)},j={p:x,um:Te,m:qe,r:Vt,mt:de,mc:H,pc:Z,pbc:k,n:_,o:e};return{render:M,hydrate:void 0,createApp:au(M)}}function Ns({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function It({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function bu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Pr(e,t,n=!1){const s=e.children,r=t.children;if(V(s)&&V(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function ul(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ul(t)}function es(e){if(e)for(let t=0;tje(wu);function xu(e,t){return Ar(e,null,t)}function ye(e,t,n){return Ar(e,t,n)}function Ar(e,t,n=ie){const{immediate:s,deep:r,flush:o,once:i}=n,l=pe({},n),c=t&&s||!t&&o!=="post";let a;if(Rn){if(o==="sync"){const g=Eu();a=g.__watcherHandles||(g.__watcherHandles=[])}else if(!c){const g=()=>{};return g.stop=Be,g.resume=Be,g.pause=Be,g}}const u=Se;l.call=(g,v,x)=>We(g,u,v,x);let f=!1;o==="post"?l.scheduler=g=>{he(g,u&&u.suspense)}:o!=="sync"&&(f=!0,l.scheduler=(g,v)=>{v?g():Sr(g)}),l.augmentJob=g=>{t&&(g.flags|=4),f&&(g.flags|=2,u&&(g.id=u.uid,g.i=u))};const h=jc(e,t,l);return Rn&&(a?a.push(h):c&&h()),h}function Cu(e,t,n){const s=this.proxy,r=ae(e)?e.includes(".")?al(s,e):()=>s[e]:e.bind(s,s);let o;q(t)?o=t:(o=t.handler,n=t);const i=Mn(this),l=Ar(r,o.bind(s),n);return i(),l}function al(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ke(t)}Modifiers`]||e[`${Ot(t)}Modifiers`];function Tu(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ie;let r=n;const o=t.startsWith("update:"),i=o&&Ru(s,t.slice(7));i&&(i.trim&&(r=n.map(u=>ae(u)?u.trim():u)),i.number&&(r=n.map(qn)));let l,c=s[l=kn(t)]||s[l=kn(ke(t))];!c&&o&&(c=s[l=kn(Ot(t))]),c&&We(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,We(a,e,6,r)}}function fl(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!q(e)){const c=a=>{const u=fl(a,t,!0);u&&(l=!0,pe(i,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(se(e)&&s.set(e,null),null):(V(o)?o.forEach(c=>i[c]=null):pe(i,o),se(e)&&s.set(e,i),i)}function ys(e,t){return!e||!os(t)?!1:(t=t.slice(2).replace(/Once$/,""),te(e,t[0].toLowerCase()+t.slice(1))||te(e,Ot(t))||te(e,t))}function eo(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:a,renderCache:u,props:f,data:h,setupState:g,ctx:v,inheritAttrs:x}=e,F=Xn(e);let A,S;try{if(n.shapeFlag&4){const E=r||s,D=E;A=Ze(a.call(D,E,u,f,g,h,v)),S=l}else{const E=t;A=Ze(E.length>1?E(f,{attrs:l,slots:i,emit:c}):E(f,null)),S=t.props?l:Ou(l)}}catch(E){vn.length=0,ps(E,e,1),A=Ee(me)}let C=A;if(S&&x!==!1){const E=Object.keys(S),{shapeFlag:D}=C;E.length&&D&7&&(o&&E.some(ur)&&(S=Pu(S,o)),C=at(C,S,!1,!0))}return n.dirs&&(C=at(C,null,!1,!0),C.dirs=C.dirs?C.dirs.concat(n.dirs):n.dirs),n.transition&&Ct(C,n.transition),A=C,Xn(F),A}const Ou=e=>{let t;for(const n in e)(n==="class"||n==="style"||os(n))&&((t||(t={}))[n]=e[n]);return t},Pu=(e,t)=>{const n={};for(const s in e)(!ur(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Au(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?to(s,i,a):!!i;if(c&8){const u=t.dynamicProps;for(let f=0;fe.__isSuspense;function Mu(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):kc(e)}const Ae=Symbol.for("v-fgt"),_s=Symbol.for("v-txt"),me=Symbol.for("v-cmt"),Un=Symbol.for("v-stc"),vn=[];let Me=null;function Js(e=!1){vn.push(Me=e?null:[])}function Nu(){vn.pop(),Me=vn[vn.length-1]||null}let Cn=1;function no(e,t=!1){Cn+=e,e<0&&Me&&t&&(Me.hasOnce=!0)}function dl(e){return e.dynamicChildren=Cn>0?Me||Wt:null,Nu(),Cn>0&&Me&&Me.push(e),e}function xd(e,t,n,s,r,o){return dl(pl(e,t,n,s,r,o,!0))}function Ys(e,t,n,s,r){return dl(Ee(e,t,n,s,r,!0))}function Qt(e){return e?e.__v_isVNode===!0:!1}function wt(e,t){return e.type===t.type&&e.key===t.key}const hl=({key:e})=>e??null,Wn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ae(e)||fe(e)||q(e)?{i:ve,r:e,k:t,f:!!n}:e:null);function pl(e,t=null,n=null,s=0,r=null,o=e===Ae?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&hl(t),ref:t&&Wn(t),scopeId:Li,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ve};return l?(Ir(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ae(n)?8:16),Cn>0&&!i&&Me&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Me.push(c),c}const Ee=Fu;function Fu(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Qi)&&(e=me),Qt(e)){const l=at(e,t,!0);return n&&Ir(l,n),Cn>0&&!o&&Me&&(l.shapeFlag&6?Me[Me.indexOf(e)]=l:Me.push(l)),l.patchFlag=-2,l}if(Uu(e)&&(e=e.__vccOpts),t){t=Lu(t);let{class:l,style:c}=t;l&&!ae(l)&&(t.class=as(l)),se(c)&&(_r(c)&&!V(c)&&(c=pe({},c)),t.style=us(c))}const i=ae(e)?1:ts(e)?128:Di(e)?64:se(e)?4:q(e)?2:0;return pl(e,t,n,s,r,i,o,!0)}function Lu(e){return e?_r(e)||sl(e)?pe({},e):e:null}function at(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,a=t?Du(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&hl(a),ref:t&&t.ref?n&&o?V(o)?o.concat(Wn(t)):[o,Wn(t)]:Wn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ae?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&at(e.ssContent),ssFallback:e.ssFallback&&at(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Ct(u,c.clone(u)),u}function $u(e=" ",t=0){return Ee(_s,null,e,t)}function Cd(e,t){const n=Ee(Un,null,e);return n.staticCount=t,n}function Rd(e="",t=!1){return t?(Js(),Ys(me,null,e)):Ee(me,null,e)}function Ze(e){return e==null||typeof e=="boolean"?Ee(me):V(e)?Ee(Ae,null,e.slice()):Qt(e)?bt(e):Ee(_s,null,String(e))}function bt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:at(e)}function Ir(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(V(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ir(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!sl(t)?t._ctx=ve:r===3&&ve&&(ve.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:ve},n=32):(t=String(t),s&64?(n=16,t=[$u(t)]):n=8);e.children=t,e.shapeFlag|=n}function Du(...e){const t={};for(let n=0;nSe||ve;let ns,Xs;{const e=cs(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};ns=t("__VUE_INSTANCE_SETTERS__",n=>Se=n),Xs=t("__VUE_SSR_SETTERS__",n=>Rn=n)}const Mn=e=>{const t=Se;return ns(e),e.scope.on(),()=>{e.scope.off(),ns(t)}},so=()=>{Se&&Se.scope.off(),ns(null)};function gl(e){return e.vnode.shapeFlag&4}let Rn=!1;function ku(e,t=!1,n=!1){t&&Xs(t);const{props:s,children:r}=e.vnode,o=gl(e);du(e,s,o,t),mu(e,r,n||t);const i=o?Bu(e,t):void 0;return t&&Xs(!1),i}function Bu(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,su);const{setup:s}=n;if(s){ct();const r=e.setupContext=s.length>1?vl(e):null,o=Mn(e),i=An(s,e,0,[e.props,r]),l=si(i);if(ut(),o(),(l||e.sp)&&!$t(e)&&Gi(e),l){if(i.then(so,so),t)return i.then(c=>{ro(e,c)}).catch(c=>{ps(c,e,0)});e.asyncDep=i}else ro(e,i)}else ml(e)}function ro(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=Pi(t)),ml(e)}function ml(e,t,n){const s=e.type;e.render||(e.render=s.render||Be);{const r=Mn(e);ct();try{ru(e)}finally{ut(),r()}}}const Ku={get(e,t){return be(e,"get",""),e[t]}};function vl(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Ku),slots:e.slots,emit:e.emit,expose:t}}function bs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Pi(br(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in mn)return mn[n](e)},has(t,n){return n in t||n in mn}})):e.proxy}function Zs(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Uu(e){return q(e)&&"__vccOpts"in e}const we=(e,t)=>$c(e,t,Rn);function Mr(e,t,n){const s=arguments.length;return s===2?se(t)&&!V(t)?Qt(t)?Ee(e,null,[t]):Ee(e,t):Ee(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Qt(n)&&(n=[n]),Ee(e,t,n))}const Wu="3.5.18",Td=Be;/** -* @vue/runtime-dom v3.5.18 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let er;const oo=typeof window<"u"&&window.trustedTypes;if(oo)try{er=oo.createPolicy("vue",{createHTML:e=>e})}catch{}const yl=er?e=>er.createHTML(e):e=>e,Gu="http://www.w3.org/2000/svg",qu="http://www.w3.org/1998/Math/MathML",st=typeof document<"u"?document:null,io=st&&st.createElement("template"),zu={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?st.createElementNS(Gu,e):t==="mathml"?st.createElementNS(qu,e):n?st.createElement(e,{is:n}):st.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{io.innerHTML=yl(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=io.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},pt="transition",on="animation",Jt=Symbol("_vtc"),_l={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},bl=pe({},ki,_l),Qu=e=>(e.displayName="Transition",e.props=bl,e),Od=Qu((e,{slots:t})=>Mr(Wc,Sl(e),t)),Mt=(e,t=[])=>{V(e)?e.forEach(n=>n(...t)):e&&e(...t)},lo=e=>e?V(e)?e.some(t=>t.length>1):e.length>1:!1;function Sl(e){const t={};for(const L in e)L in _l||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:u=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,v=Ju(r),x=v&&v[0],F=v&&v[1],{onBeforeEnter:A,onEnter:S,onEnterCancelled:C,onLeave:E,onLeaveCancelled:D,onBeforeAppear:W=A,onAppear:U=S,onAppearCancelled:H=C}=t,T=(L,Y,de,xe)=>{L._enterCancelled=xe,mt(L,Y?u:l),mt(L,Y?a:i),de&&de()},k=(L,Y)=>{L._isLeaving=!1,mt(L,f),mt(L,g),mt(L,h),Y&&Y()},Q=L=>(Y,de)=>{const xe=L?U:S,re=()=>T(Y,L,de);Mt(xe,[Y,re]),co(()=>{mt(Y,L?c:o),Ye(Y,L?u:l),lo(xe)||uo(Y,s,x,re)})};return pe(t,{onBeforeEnter(L){Mt(A,[L]),Ye(L,o),Ye(L,i)},onBeforeAppear(L){Mt(W,[L]),Ye(L,c),Ye(L,a)},onEnter:Q(!1),onAppear:Q(!0),onLeave(L,Y){L._isLeaving=!0;const de=()=>k(L,Y);Ye(L,f),L._enterCancelled?(Ye(L,h),tr()):(tr(),Ye(L,h)),co(()=>{L._isLeaving&&(mt(L,f),Ye(L,g),lo(E)||uo(L,s,F,de))}),Mt(E,[L,de])},onEnterCancelled(L){T(L,!1,void 0,!0),Mt(C,[L])},onAppearCancelled(L){T(L,!0,void 0,!0),Mt(H,[L])},onLeaveCancelled(L){k(L),Mt(D,[L])}})}function Ju(e){if(e==null)return null;if(se(e))return[Fs(e.enter),Fs(e.leave)];{const t=Fs(e);return[t,t]}}function Fs(e){return Zl(e)}function Ye(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Jt]||(e[Jt]=new Set)).add(t)}function mt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Jt];n&&(n.delete(t),n.size||(e[Jt]=void 0))}function co(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Yu=0;function uo(e,t,n,s){const r=e._endId=++Yu,o=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=wl(e,t);if(!i)return s();const a=i+"end";let u=0;const f=()=>{e.removeEventListener(a,h),o()},h=g=>{g.target===e&&++u>=c&&f()};setTimeout(()=>{u(n[v]||"").split(", "),r=s(`${pt}Delay`),o=s(`${pt}Duration`),i=ao(r,o),l=s(`${on}Delay`),c=s(`${on}Duration`),a=ao(l,c);let u=null,f=0,h=0;t===pt?i>0&&(u=pt,f=i,h=o.length):t===on?a>0&&(u=on,f=a,h=c.length):(f=Math.max(i,a),u=f>0?i>a?pt:on:null,h=u?u===pt?o.length:c.length:0);const g=u===pt&&/\b(transform|all)(,|$)/.test(s(`${pt}Property`).toString());return{type:u,timeout:f,propCount:h,hasTransform:g}}function ao(e,t){for(;e.lengthfo(n)+fo(e[s])))}function fo(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function tr(){return document.body.offsetHeight}function Xu(e,t,n){const s=e[Jt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const ss=Symbol("_vod"),El=Symbol("_vsh"),Pd={beforeMount(e,{value:t},{transition:n}){e[ss]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):ln(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),ln(e,!0),s.enter(e)):s.leave(e,()=>{ln(e,!1)}):ln(e,t))},beforeUnmount(e,{value:t}){ln(e,t)}};function ln(e,t){e.style.display=t?e[ss]:"none",e[El]=!t}const Zu=Symbol(""),ea=/(^|;)\s*display\s*:/;function ta(e,t,n){const s=e.style,r=ae(n);let o=!1;if(n&&!r){if(t)if(ae(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Gn(s,l,"")}else for(const i in t)n[i]==null&&Gn(s,i,"");for(const i in n)i==="display"&&(o=!0),Gn(s,i,n[i])}else if(r){if(t!==n){const i=s[Zu];i&&(n+=";"+i),s.cssText=n,o=ea.test(n)}}else t&&e.removeAttribute("style");ss in e&&(e[ss]=o?s.display:"",e[El]&&(s.display="none"))}const ho=/\s*!important$/;function Gn(e,t,n){if(V(n))n.forEach(s=>Gn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=na(e,t);ho.test(n)?e.setProperty(Ot(s),n.replace(ho,""),"important"):e[s]=n}}const po=["Webkit","Moz","ms"],Ls={};function na(e,t){const n=Ls[t];if(n)return n;let s=ke(t);if(s!=="filter"&&s in e)return Ls[t]=s;s=ls(s);for(let r=0;r$s||(ia.then(()=>$s=0),$s=Date.now());function ca(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;We(ua(s,n.value),t,5,[s])};return n.value=e,n.attached=la(),n}function ua(e,t){if(V(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const bo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,aa=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?Xu(e,s,i):t==="style"?ta(e,n,s):os(t)?ur(t)||ra(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):fa(e,t,s,i))?(vo(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&mo(e,t,s,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ae(s))?vo(e,ke(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),mo(e,t,s,i))};function fa(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&bo(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return bo(t)&&ae(n)?!1:t in e}const xl=new WeakMap,Cl=new WeakMap,rs=Symbol("_moveCb"),So=Symbol("_enterCb"),da=e=>(delete e.props.mode,e),ha=da({name:"TransitionGroup",props:pe({},bl,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Pt(),s=Hi();let r,o;return Er(()=>{if(!r.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!va(r[0].el,n.vnode.el,i)){r=[];return}r.forEach(pa),r.forEach(ga);const l=r.filter(ma);tr(),l.forEach(c=>{const a=c.el,u=a.style;Ye(a,i),u.transform=u.webkitTransform=u.transitionDuration="";const f=a[rs]=h=>{h&&h.target!==a||(!h||/transform$/.test(h.propertyName))&&(a.removeEventListener("transitionend",f),a[rs]=null,mt(a,i))};a.addEventListener("transitionend",f)}),r=[]}),()=>{const i=J(e),l=Sl(i);let c=i.tag||Ae;if(r=[],o)for(let a=0;a{l.split(/\s+/).forEach(c=>c&&s.classList.remove(c))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(s);const{hasTransform:i}=wl(s);return o.removeChild(s),i}const Rt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?n=>qt(t,n):t};function ya(e){e.target.composing=!0}function wo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ve=Symbol("_assign"),Eo={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Ve]=Rt(r);const o=s||r.props&&r.props.type==="number";it(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=qn(l)),e[Ve](l)}),n&&it(e,"change",()=>{e.value=e.value.trim()}),t||(it(e,"compositionstart",ya),it(e,"compositionend",wo),it(e,"change",wo))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[Ve]=Rt(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?qn(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},_a={deep:!0,created(e,t,n){e[Ve]=Rt(n),it(e,"change",()=>{const s=e._modelValue,r=Yt(e),o=e.checked,i=e[Ve];if(V(s)){const l=dr(s,r),c=l!==-1;if(o&&!c)i(s.concat(r));else if(!o&&c){const a=[...s];a.splice(l,1),i(a)}}else if(tn(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(Rl(e,o))})},mounted:xo,beforeUpdate(e,t,n){e[Ve]=Rt(n),xo(e,t,n)}};function xo(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(V(t))r=dr(t,s.props.value)>-1;else if(tn(t))r=t.has(s.props.value);else{if(t===n)return;r=jt(t,Rl(e,!0))}e.checked!==r&&(e.checked=r)}const ba={created(e,{value:t},n){e.checked=jt(t,n.props.value),e[Ve]=Rt(n),it(e,"change",()=>{e[Ve](Yt(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[Ve]=Rt(s),t!==n&&(e.checked=jt(t,s.props.value))}},Sa={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=tn(t);it(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?qn(Yt(i)):Yt(i));e[Ve](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,In(()=>{e._assigning=!1})}),e[Ve]=Rt(s)},mounted(e,{value:t}){Co(e,t)},beforeUpdate(e,t,n){e[Ve]=Rt(n)},updated(e,{value:t}){e._assigning||Co(e,t)}};function Co(e,t){const n=e.multiple,s=V(t);if(!(n&&!s&&!tn(t))){for(let r=0,o=e.options.length;rString(a)===String(l)):i.selected=dr(t,l)>-1}else i.selected=t.has(l);else if(jt(Yt(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Yt(e){return"_value"in e?e._value:e.value}function Rl(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Id={created(e,t,n){Hn(e,t,n,null,"created")},mounted(e,t,n){Hn(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){Hn(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){Hn(e,t,n,s,"updated")}};function wa(e,t){switch(e){case"SELECT":return Sa;case"TEXTAREA":return Eo;default:switch(t){case"checkbox":return _a;case"radio":return ba;default:return Eo}}}function Hn(e,t,n,s,r){const i=wa(e.tagName,n.props&&n.props.type)[r];i&&i(e,t,n,s)}const Ea=["ctrl","shift","alt","meta"],xa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ea.some(n=>e[`${n}Key`]&&!t.includes(n))},Md=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const o=Ot(r.key);if(t.some(i=>i===o||Ca[i]===o))return e(r)})},Ra=pe({patchProp:aa},zu);let Ro;function Tl(){return Ro||(Ro=yu(Ra))}const Fd=(...e)=>{Tl().render(...e)},Ld=(...e)=>{const t=Tl().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Oa(s);if(!r)return;const o=t._component;!q(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,Ta(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function Ta(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Oa(e){return ae(e)?document.querySelector(e):e}/*! - * pinia v2.3.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */let Ol;const Ss=e=>Ol=e,Pl=Symbol();function nr(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var yn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(yn||(yn={}));function $d(){const e=ai(!0),t=e.run(()=>ue({}));let n=[],s=[];const r=br({install(o){Ss(r),r._a=o,o.provide(Pl,r),o.config.globalProperties.$pinia=r,s.forEach(i=>n.push(i)),s=[]},use(o){return this._a?n.push(o):s.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const Al=()=>{};function To(e,t,n,s=Al){e.push(t);const r=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),s())};return!n&&hr()&&fi(r),r}function Bt(e,...t){e.slice().forEach(n=>{n(...t)})}const Pa=e=>e(),Oo=Symbol(),Ds=Symbol();function sr(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],r=e[n];nr(r)&&nr(s)&&e.hasOwnProperty(n)&&!fe(s)&&!lt(s)?e[n]=sr(r,s):e[n]=s}return e}const Aa=Symbol();function Ia(e){return!nr(e)||!e.hasOwnProperty(Aa)}const{assign:vt}=Object;function Ma(e){return!!(fe(e)&&e.effect)}function Na(e,t,n,s){const{state:r,actions:o,getters:i}=t,l=n.state.value[e];let c;function a(){l||(n.state.value[e]=r?r():{});const u=Ic(n.state.value[e]);return vt(u,o,Object.keys(i||{}).reduce((f,h)=>(f[h]=br(we(()=>{Ss(n);const g=n._s.get(e);return i[h].call(g,g)})),f),{}))}return c=Il(e,a,t,n,s,!0),c}function Il(e,t,n={},s,r,o){let i;const l=vt({actions:{}},n),c={deep:!0};let a,u,f=[],h=[],g;const v=s.state.value[e];!o&&!v&&(s.state.value[e]={}),ue({});let x;function F(H){let T;a=u=!1,typeof H=="function"?(H(s.state.value[e]),T={type:yn.patchFunction,storeId:e,events:g}):(sr(s.state.value[e],H),T={type:yn.patchObject,payload:H,storeId:e,events:g});const k=x=Symbol();In().then(()=>{x===k&&(a=!0)}),u=!0,Bt(f,T,s.state.value[e])}const A=o?function(){const{state:T}=n,k=T?T():{};this.$patch(Q=>{vt(Q,k)})}:Al;function S(){i.stop(),f=[],h=[],s._s.delete(e)}const C=(H,T="")=>{if(Oo in H)return H[Ds]=T,H;const k=function(){Ss(s);const Q=Array.from(arguments),L=[],Y=[];function de(z){L.push(z)}function xe(z){Y.push(z)}Bt(h,{args:Q,name:k[Ds],store:D,after:de,onError:xe});let re;try{re=H.apply(this&&this.$id===e?this:D,Q)}catch(z){throw Bt(Y,z),z}return re instanceof Promise?re.then(z=>(Bt(L,z),z)).catch(z=>(Bt(Y,z),Promise.reject(z))):(Bt(L,re),re)};return k[Oo]=!0,k[Ds]=T,k},E={_p:s,$id:e,$onAction:To.bind(null,h),$patch:F,$reset:A,$subscribe(H,T={}){const k=To(f,H,T.detached,()=>Q()),Q=i.run(()=>ye(()=>s.state.value[e],L=>{(T.flush==="sync"?u:a)&&H({storeId:e,type:yn.direct,events:g},L)},vt({},c,T)));return k},$dispose:S},D=Pn(E);s._s.set(e,D);const U=(s._a&&s._a.runWithContext||Pa)(()=>s._e.run(()=>(i=ai()).run(()=>t({action:C}))));for(const H in U){const T=U[H];if(fe(T)&&!Ma(T)||lt(T))o||(v&&Ia(T)&&(fe(T)?T.value=v[H]:sr(T,v[H])),s.state.value[e][H]=T);else if(typeof T=="function"){const k=C(T,H);U[H]=k,l.actions[H]=T}}return vt(D,U),vt(J(D),U),Object.defineProperty(D,"$state",{get:()=>s.state.value[e],set:H=>{F(T=>{vt(T,H)})}}),s._p.forEach(H=>{vt(D,i.run(()=>H({store:D,app:s._a,pinia:s,options:l})))}),v&&o&&n.hydrate&&n.hydrate(D.$state,v),a=!0,u=!0,D}/*! #__NO_SIDE_EFFECTS__ */function Dd(e,t,n){let s,r;const o=typeof t=="function";typeof e=="string"?(s=e,r=o?n:t):(r=e,s=e.id);function i(l,c){const a=fu();return l=l||(a?je(Pl,null):null),l&&Ss(l),l=Ol,l._s.has(s)||(o?Il(s,t,r,l):Na(s,r,l)),l._s.get(s)}return i.$id=s,i}function jd(e){{const t=J(e),n={};for(const s in t){const r=t[s];r.effect?n[s]=we({get:()=>e[s],set(o){e[s]=o}}):(fe(r)||lt(r))&&(n[s]=Fc(e,s))}return n}}var Fa=Object.defineProperty,La=Object.defineProperties,$a=Object.getOwnPropertyDescriptors,Po=Object.getOwnPropertySymbols,Da=Object.prototype.hasOwnProperty,ja=Object.prototype.propertyIsEnumerable,Ao=(e,t,n)=>t in e?Fa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Va=(e,t)=>{for(var n in t||(t={}))Da.call(t,n)&&Ao(e,n,t[n]);if(Po)for(var n of Po(t))ja.call(t,n)&&Ao(e,n,t[n]);return e},Ha=(e,t)=>La(e,$a(t));function Vd(e,t){var n;const s=Ti();return xu(()=>{s.value=e()},Ha(Va({},t),{flush:(n=void 0)!=null?n:"sync"})),hs(s)}var Io;const ws=typeof window<"u",ka=e=>typeof e<"u",rr=e=>typeof e=="function",Ba=e=>typeof e=="string",Xt=()=>{},Ka=ws&&((Io=window==null?void 0:window.navigator)==null?void 0:Io.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Tt(e){return typeof e=="function"?e():Lt(e)}function Ml(e,t){function n(...s){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(o)})}return n}function Ua(e,t={}){let n,s,r=Xt;const o=l=>{clearTimeout(l),r(),r=Xt};return l=>{const c=Tt(e),a=Tt(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(s&&(o(s),s=null),Promise.resolve(l())):new Promise((u,f)=>{r=t.rejectOnCancel?f:u,a&&!s&&(s=setTimeout(()=>{n&&o(n),s=null,u(l())},a)),n=setTimeout(()=>{s&&o(s),s=null,u(l())},c)})}}function Wa(e,t=!0,n=!0,s=!1){let r=0,o,i=!0,l=Xt,c;const a=()=>{o&&(clearTimeout(o),o=void 0,l(),l=Xt)};return f=>{const h=Tt(e),g=Date.now()-r,v=()=>c=f();return a(),h<=0?(r=Date.now(),v()):(g>h&&(n||!i)?(r=Date.now(),v()):t&&(c=new Promise((x,F)=>{l=s?F:x,o=setTimeout(()=>{r=Date.now(),i=!0,x(v()),a()},Math.max(0,h-g))})),!n&&!o&&(o=setTimeout(()=>i=!0,h)),i=!1,c)}}function Ga(e){return e}function qa(e,t){let n,s,r;const o=ue(!0),i=()=>{o.value=!0,r()};ye(e,i,{flush:"sync"});const l=rr(t)?t:t.get,c=rr(t)?void 0:t.set,a=Ac((u,f)=>(s=u,r=f,{get(){return o.value&&(n=l(),o.value=!1),s(),n},set(h){c==null||c(h)}}));return Object.isExtensible(a)&&(a.trigger=i),a}function Es(e){return hr()?(fi(e),!0):!1}function za(e,t=200,n={}){return Ml(Ua(t,n),e)}function Hd(e,t=200,n={}){const s=ue(e.value),r=za(()=>{s.value=e.value},t,n);return ye(e,()=>r()),s}function kd(e,t=200,n=!1,s=!0,r=!1){return Ml(Wa(t,n,s,r),e)}function Nr(e,t=!0){Pt()?vs(e):t?e():In(e)}function Bd(e,t,n={}){const{immediate:s=!0}=n,r=ue(!1);let o=null;function i(){o&&(clearTimeout(o),o=null)}function l(){r.value=!1,i()}function c(...a){i(),r.value=!0,o=setTimeout(()=>{r.value=!1,o=null,e(...a)},Tt(t))}return s&&(r.value=!0,ws&&c()),Es(l),{isPending:hs(r),start:c,stop:l}}function Ne(e){var t;const n=Tt(e);return(t=n==null?void 0:n.$el)!=null?t:n}const dt=ws?window:void 0,Qa=ws?window.document:void 0;function He(...e){let t,n,s,r;if(Ba(e[0])||Array.isArray(e[0])?([n,s,r]=e,t=dt):[t,n,s,r]=e,!t)return Xt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const o=[],i=()=>{o.forEach(u=>u()),o.length=0},l=(u,f,h,g)=>(u.addEventListener(f,h,g),()=>u.removeEventListener(f,h,g)),c=ye(()=>[Ne(t),Tt(r)],([u,f])=>{i(),u&&o.push(...n.flatMap(h=>s.map(g=>l(u,h,g,f))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return Es(a),a}let Mo=!1;function Kd(e,t,n={}){const{window:s=dt,ignore:r=[],capture:o=!0,detectIframe:i=!1}=n;if(!s)return;Ka&&!Mo&&(Mo=!0,Array.from(s.document.body.children).forEach(h=>h.addEventListener("click",Xt)));let l=!0;const c=h=>r.some(g=>{if(typeof g=="string")return Array.from(s.document.querySelectorAll(g)).some(v=>v===h.target||h.composedPath().includes(v));{const v=Ne(g);return v&&(h.target===v||h.composedPath().includes(v))}}),u=[He(s,"click",h=>{const g=Ne(e);if(!(!g||g===h.target||h.composedPath().includes(g))){if(h.detail===0&&(l=!c(h)),!l){l=!0;return}t(h)}},{passive:!0,capture:o}),He(s,"pointerdown",h=>{const g=Ne(e);g&&(l=!h.composedPath().includes(g)&&!c(h))},{passive:!0}),i&&He(s,"blur",h=>{var g;const v=Ne(e);((g=s.document.activeElement)==null?void 0:g.tagName)==="IFRAME"&&!(v!=null&&v.contains(s.document.activeElement))&&t(h)})].filter(Boolean);return()=>u.forEach(h=>h())}function Ud(e={}){var t;const{window:n=dt}=e,s=(t=e.document)!=null?t:n==null?void 0:n.document,r=qa(()=>null,()=>s==null?void 0:s.activeElement);return n&&(He(n,"blur",o=>{o.relatedTarget===null&&r.trigger()},!0),He(n,"focus",r.trigger,!0)),r}function Nl(e,t=!1){const n=ue(),s=()=>n.value=!!e();return s(),Nr(s,t),n}function Ja(e){return JSON.parse(JSON.stringify(e))}const No=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Fo="__vueuse_ssr_handlers__";No[Fo]=No[Fo]||{};function Wd(e,t,{window:n=dt,initialValue:s=""}={}){const r=ue(s),o=we(()=>{var i;return Ne(t)||((i=n==null?void 0:n.document)==null?void 0:i.documentElement)});return ye([o,()=>Tt(e)],([i,l])=>{var c;if(i&&n){const a=(c=n.getComputedStyle(i).getPropertyValue(l))==null?void 0:c.trim();r.value=a||s}},{immediate:!0}),ye(r,i=>{var l;(l=o.value)!=null&&l.style&&o.value.style.setProperty(Tt(e),i)}),r}function Gd({document:e=Qa}={}){if(!e)return ue("visible");const t=ue(e.visibilityState);return He(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}var Lo=Object.getOwnPropertySymbols,Ya=Object.prototype.hasOwnProperty,Xa=Object.prototype.propertyIsEnumerable,Za=(e,t)=>{var n={};for(var s in e)Ya.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&Lo)for(var s of Lo(e))t.indexOf(s)<0&&Xa.call(e,s)&&(n[s]=e[s]);return n};function Fl(e,t,n={}){const s=n,{window:r=dt}=s,o=Za(s,["window"]);let i;const l=Nl(()=>r&&"ResizeObserver"in r),c=()=>{i&&(i.disconnect(),i=void 0)},a=ye(()=>Ne(e),f=>{c(),l.value&&r&&f&&(i=new ResizeObserver(t),i.observe(f,o))},{immediate:!0,flush:"post"}),u=()=>{c(),a()};return Es(u),{isSupported:l,stop:u}}function qd(e,t={}){const{reset:n=!0,windowResize:s=!0,windowScroll:r=!0,immediate:o=!0}=t,i=ue(0),l=ue(0),c=ue(0),a=ue(0),u=ue(0),f=ue(0),h=ue(0),g=ue(0);function v(){const x=Ne(e);if(!x){n&&(i.value=0,l.value=0,c.value=0,a.value=0,u.value=0,f.value=0,h.value=0,g.value=0);return}const F=x.getBoundingClientRect();i.value=F.height,l.value=F.bottom,c.value=F.left,a.value=F.right,u.value=F.top,f.value=F.width,h.value=F.x,g.value=F.y}return Fl(e,v),ye(()=>Ne(e),x=>!x&&v()),r&&He("scroll",v,{capture:!0,passive:!0}),s&&He("resize",v,{passive:!0}),Nr(()=>{o&&v()}),{height:i,bottom:l,left:c,right:a,top:u,width:f,x:h,y:g,update:v}}function zd(e,t={width:0,height:0},n={}){const{window:s=dt,box:r="content-box"}=n,o=we(()=>{var c,a;return(a=(c=Ne(e))==null?void 0:c.namespaceURI)==null?void 0:a.includes("svg")}),i=ue(t.width),l=ue(t.height);return Fl(e,([c])=>{const a=r==="border-box"?c.borderBoxSize:r==="content-box"?c.contentBoxSize:c.devicePixelContentBoxSize;if(s&&o.value){const u=Ne(e);if(u){const f=s.getComputedStyle(u);i.value=parseFloat(f.width),l.value=parseFloat(f.height)}}else if(a){const u=Array.isArray(a)?a:[a];i.value=u.reduce((f,{inlineSize:h})=>f+h,0),l.value=u.reduce((f,{blockSize:h})=>f+h,0)}else i.value=c.contentRect.width,l.value=c.contentRect.height},n),ye(()=>Ne(e),c=>{i.value=c?t.width:0,l.value=c?t.height:0}),{width:i,height:l}}var $o=Object.getOwnPropertySymbols,ef=Object.prototype.hasOwnProperty,tf=Object.prototype.propertyIsEnumerable,nf=(e,t)=>{var n={};for(var s in e)ef.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&$o)for(var s of $o(e))t.indexOf(s)<0&&tf.call(e,s)&&(n[s]=e[s]);return n};function Qd(e,t,n={}){const s=n,{window:r=dt}=s,o=nf(s,["window"]);let i;const l=Nl(()=>r&&"MutationObserver"in r),c=()=>{i&&(i.disconnect(),i=void 0)},a=ye(()=>Ne(e),f=>{c(),l.value&&r&&f&&(i=new MutationObserver(t),i.observe(f,o))},{immediate:!0}),u=()=>{c(),a()};return Es(u),{isSupported:l,stop:u}}var Do;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(Do||(Do={}));var sf=Object.defineProperty,jo=Object.getOwnPropertySymbols,rf=Object.prototype.hasOwnProperty,of=Object.prototype.propertyIsEnumerable,Vo=(e,t,n)=>t in e?sf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lf=(e,t)=>{for(var n in t||(t={}))rf.call(t,n)&&Vo(e,n,t[n]);if(jo)for(var n of jo(t))of.call(t,n)&&Vo(e,n,t[n]);return e};const cf={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};lf({linear:Ga},cf);function Jd(e,t,n,s={}){var r,o,i;const{clone:l=!1,passive:c=!1,eventName:a,deep:u=!1,defaultValue:f}=s,h=Pt(),g=n||(h==null?void 0:h.emit)||((r=h==null?void 0:h.$emit)==null?void 0:r.bind(h))||((i=(o=h==null?void 0:h.proxy)==null?void 0:o.$emit)==null?void 0:i.bind(h==null?void 0:h.proxy));let v=a;t||(t="modelValue"),v=a||v||`update:${t.toString()}`;const x=A=>l?rr(l)?l(A):Ja(A):A,F=()=>ka(e[t])?x(e[t]):f;if(c){const A=F(),S=ue(A);return ye(()=>e[t],C=>S.value=x(C)),ye(S,C=>{(C!==e[t]||u)&&g(v,C)},{deep:u}),S}else return we({get(){return F()},set(A){g(v,A)}})}function Yd({window:e=dt}={}){if(!e)return ue(!1);const t=ue(e.document.hasFocus());return He(e,"blur",()=>{t.value=!1}),He(e,"focus",()=>{t.value=!0}),t}function Xd(e={}){const{window:t=dt,initialWidth:n=1/0,initialHeight:s=1/0,listenOrientation:r=!0,includeScrollbar:o=!0}=e,i=ue(n),l=ue(s),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};return c(),Nr(c),He("resize",c,{passive:!0}),r&&He("orientationchange",c,{passive:!0}),{width:i,height:l}}/*! - * vue-router v4.5.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */const Ut=typeof document<"u";function Ll(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function uf(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Ll(e.default)}const ee=Object.assign;function js(e,t){const n={};for(const s in t){const r=t[s];n[s]=Ge(r)?r.map(e):e(r)}return n}const _n=()=>{},Ge=Array.isArray,$l=/#/g,af=/&/g,ff=/\//g,df=/=/g,hf=/\?/g,Dl=/\+/g,pf=/%5B/g,gf=/%5D/g,jl=/%5E/g,mf=/%60/g,Vl=/%7B/g,vf=/%7C/g,Hl=/%7D/g,yf=/%20/g;function Fr(e){return encodeURI(""+e).replace(vf,"|").replace(pf,"[").replace(gf,"]")}function _f(e){return Fr(e).replace(Vl,"{").replace(Hl,"}").replace(jl,"^")}function or(e){return Fr(e).replace(Dl,"%2B").replace(yf,"+").replace($l,"%23").replace(af,"%26").replace(mf,"`").replace(Vl,"{").replace(Hl,"}").replace(jl,"^")}function bf(e){return or(e).replace(df,"%3D")}function Sf(e){return Fr(e).replace($l,"%23").replace(hf,"%3F")}function wf(e){return e==null?"":Sf(e).replace(ff,"%2F")}function Tn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const Ef=/\/$/,xf=e=>e.replace(Ef,"");function Vs(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let c=t.indexOf("?");return l=0&&(c=-1),c>-1&&(s=t.slice(0,c),o=t.slice(c+1,l>-1?l:t.length),r=e(o)),l>-1&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=Of(s??t,n),{fullPath:s+(o&&"?")+o+i,path:s,query:r,hash:Tn(i)}}function Cf(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Ho(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Rf(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Zt(t.matched[s],n.matched[r])&&kl(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Zt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function kl(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Tf(e[n],t[n]))return!1;return!0}function Tf(e,t){return Ge(e)?ko(e,t):Ge(t)?ko(t,e):e===t}function ko(e,t){return Ge(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Of(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const gt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var On;(function(e){e.pop="pop",e.push="push"})(On||(On={}));var bn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(bn||(bn={}));function Pf(e){if(!e)if(Ut){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),xf(e)}const Af=/^[^#]+#/;function If(e,t){return e.replace(Af,"#")+t}function Mf(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const xs=()=>({left:window.scrollX,top:window.scrollY});function Nf(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Mf(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Bo(e,t){return(history.state?history.state.position-t:-1)+e}const ir=new Map;function Ff(e,t){ir.set(e,t)}function Lf(e){const t=ir.get(e);return ir.delete(e),t}let $f=()=>location.protocol+"//"+location.host;function Bl(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let l=r.includes(e.slice(o))?e.slice(o).length:1,c=r.slice(l);return c[0]!=="/"&&(c="/"+c),Ho(c,"")}return Ho(n,e)+s+r}function Df(e,t,n,s){let r=[],o=[],i=null;const l=({state:h})=>{const g=Bl(e,location),v=n.value,x=t.value;let F=0;if(h){if(n.value=g,t.value=h,i&&i===v){i=null;return}F=x?h.position-x.position:0}else s(g);r.forEach(A=>{A(n.value,v,{delta:F,type:On.pop,direction:F?F>0?bn.forward:bn.back:bn.unknown})})};function c(){i=n.value}function a(h){r.push(h);const g=()=>{const v=r.indexOf(h);v>-1&&r.splice(v,1)};return o.push(g),g}function u(){const{history:h}=window;h.state&&h.replaceState(ee({},h.state,{scroll:xs()}),"")}function f(){for(const h of o)h();o=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:c,listen:a,destroy:f}}function Ko(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?xs():null}}function jf(e){const{history:t,location:n}=window,s={value:Bl(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,a,u){const f=e.indexOf("#"),h=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+c:$f()+e+c;try{t[u?"replaceState":"pushState"](a,"",h),r.value=a}catch(g){console.error(g),n[u?"replace":"assign"](h)}}function i(c,a){const u=ee({},t.state,Ko(r.value.back,c,r.value.forward,!0),a,{position:r.value.position});o(c,u,!0),s.value=c}function l(c,a){const u=ee({},r.value,t.state,{forward:c,scroll:xs()});o(u.current,u,!0);const f=ee({},Ko(s.value,c,null),{position:u.position+1},a);o(c,f,!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function Zd(e){e=Pf(e);const t=jf(e),n=Df(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=ee({location:"",base:e,go:s,createHref:If.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function Vf(e){return typeof e=="string"||e&&typeof e=="object"}function Kl(e){return typeof e=="string"||typeof e=="symbol"}const Ul=Symbol("");var Uo;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Uo||(Uo={}));function en(e,t){return ee(new Error,{type:e,[Ul]:!0},t)}function nt(e,t){return e instanceof Error&&Ul in e&&(t==null||!!(e.type&t))}const Wo="[^/]+?",Hf={sensitive:!1,strict:!1,start:!0,end:!0},kf=/[.+*?^${}()[\]/\\]/g;function Bf(e,t){const n=ee({},Hf,t),s=[];let r=n.start?"^":"";const o=[];for(const a of e){const u=a.length?[]:[90];n.strict&&!a.length&&(r+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function Wl(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Uf={type:0,value:""},Wf=/[a-zA-Z0-9_]/;function Gf(e){if(!e)return[[]];if(e==="/")return[[Uf]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${a}": ${g}`)}let n=0,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,a="",u="";function f(){a&&(n===0?o.push({type:0,value:a}):n===1||n===2||n===3?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:a,regexp:u,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function h(){a+=c}for(;l{i(C)}:_n}function i(f){if(Kl(f)){const h=s.get(f);h&&(s.delete(f),n.splice(n.indexOf(h),1),h.children.forEach(i),h.alias.forEach(i))}else{const h=n.indexOf(f);h>-1&&(n.splice(h,1),f.record.name&&s.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function l(){return n}function c(f){const h=Yf(f,n);n.splice(h,0,f),f.record.name&&!Qo(f)&&s.set(f.record.name,f)}function a(f,h){let g,v={},x,F;if("name"in f&&f.name){if(g=s.get(f.name),!g)throw en(1,{location:f});F=g.record.name,v=ee(qo(h.params,g.keys.filter(C=>!C.optional).concat(g.parent?g.parent.keys.filter(C=>C.optional):[]).map(C=>C.name)),f.params&&qo(f.params,g.keys.map(C=>C.name))),x=g.stringify(v)}else if(f.path!=null)x=f.path,g=n.find(C=>C.re.test(x)),g&&(v=g.parse(x),F=g.record.name);else{if(g=h.name?s.get(h.name):n.find(C=>C.re.test(h.path)),!g)throw en(1,{location:f,currentLocation:h});F=g.record.name,v=ee({},h.params,f.params),x=g.stringify(v)}const A=[];let S=g;for(;S;)A.unshift(S.record),S=S.parent;return{name:F,path:x,params:v,matched:A,meta:Jf(A)}}e.forEach(f=>o(f));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:a,removeRoute:i,clearRoutes:u,getRoutes:l,getRecordMatcher:r}}function qo(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function zo(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Qf(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Qf(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Qo(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Jf(e){return e.reduce((t,n)=>ee(t,n.meta),{})}function Jo(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function Yf(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;Wl(e,t[o])<0?s=o:n=o+1}const r=Xf(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function Xf(e){let t=e;for(;t=t.parent;)if(Gl(t)&&Wl(e,t)===0)return t}function Gl({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Zf(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ro&&or(o)):[s&&or(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function ed(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Ge(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const td=Symbol(""),Xo=Symbol(""),Cs=Symbol(""),Lr=Symbol(""),lr=Symbol("");function cn(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function St(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const a=h=>{h===!1?c(en(4,{from:n,to:t})):h instanceof Error?c(h):Vf(h)?c(en(2,{from:t,to:h})):(i&&s.enterCallbacks[r]===i&&typeof h=="function"&&i.push(h),l())},u=o(()=>e.call(s&&s.instances[r],t,n,a));let f=Promise.resolve(u);e.length<3&&(f=f.then(a)),f.catch(h=>c(h))})}function Hs(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let c=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(Ll(c)){const u=(c.__vccOpts||c)[t];u&&o.push(St(u,n,s,i,l,r))}else{let a=c();o.push(()=>a.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const f=uf(u)?u.default:u;i.mods[l]=u,i.components[l]=f;const g=(f.__vccOpts||f)[t];return g&&St(g,n,s,i,l,r)()}))}}return o}function Zo(e){const t=je(Cs),n=je(Lr),s=we(()=>{const c=Lt(e.to);return t.resolve(c)}),r=we(()=>{const{matched:c}=s.value,{length:a}=c,u=c[a-1],f=n.matched;if(!u||!f.length)return-1;const h=f.findIndex(Zt.bind(null,u));if(h>-1)return h;const g=ei(c[a-2]);return a>1&&ei(u)===g&&f[f.length-1].path!==g?f.findIndex(Zt.bind(null,c[a-2])):h}),o=we(()=>r.value>-1&&id(n.params,s.value.params)),i=we(()=>r.value>-1&&r.value===n.matched.length-1&&kl(n.params,s.value.params));function l(c={}){if(od(c)){const a=t[Lt(e.replace)?"replace":"push"](Lt(e.to)).catch(_n);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:s,href:we(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function nd(e){return e.length===1?e[0]:e}const sd=Wi({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Zo,setup(e,{slots:t}){const n=Pn(Zo(e)),{options:s}=je(Cs),r=we(()=>({[ti(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[ti(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&nd(t.default(n));return e.custom?o:Mr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),rd=sd;function od(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function id(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Ge(r)||r.length!==s.length||s.some((o,i)=>o!==r[i]))return!1}return!0}function ei(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const ti=(e,t,n)=>e??t??n,ld=Wi({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=je(lr),r=we(()=>e.route||s.value),o=je(Xo,0),i=we(()=>{let a=Lt(o);const{matched:u}=r.value;let f;for(;(f=u[a])&&!f.components;)a++;return a}),l=we(()=>r.value.matched[i.value]);Kn(Xo,we(()=>i.value+1)),Kn(td,l),Kn(lr,r);const c=ue();return ye(()=>[c.value,l.value,e.name],([a,u,f],[h,g,v])=>{u&&(u.instances[f]=a,g&&g!==u&&a&&a===h&&(u.leaveGuards.size||(u.leaveGuards=g.leaveGuards),u.updateGuards.size||(u.updateGuards=g.updateGuards))),a&&u&&(!g||!Zt(u,g)||!h)&&(u.enterCallbacks[f]||[]).forEach(x=>x(a))},{flush:"post"}),()=>{const a=r.value,u=e.name,f=l.value,h=f&&f.components[u];if(!h)return ni(n.default,{Component:h,route:a});const g=f.props[u],v=g?g===!0?a.params:typeof g=="function"?g(a):g:null,F=Mr(h,ee({},v,t,{onVnodeUnmounted:A=>{A.component.isUnmounted&&(f.instances[u]=null)},ref:c}));return ni(n.default,{Component:F,route:a})||F}}});function ni(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const cd=ld;function eh(e){const t=zf(e.routes,e),n=e.parseQuery||Zf,s=e.stringifyQuery||Yo,r=e.history,o=cn(),i=cn(),l=cn(),c=Ti(gt);let a=gt;Ut&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=js.bind(null,_=>""+_),f=js.bind(null,wf),h=js.bind(null,Tn);function g(_,$){let M,j;return Kl(_)?(M=t.getRecordMatcher(_),j=$):j=_,t.addRoute(j,M)}function v(_){const $=t.getRecordMatcher(_);$&&t.removeRoute($)}function x(){return t.getRoutes().map(_=>_.record)}function F(_){return!!t.getRecordMatcher(_)}function A(_,$){if($=ee({},$||c.value),typeof _=="string"){const m=Vs(n,_,$.path),y=t.resolve({path:m.path},$),w=r.createHref(m.fullPath);return ee(m,y,{params:h(y.params),hash:Tn(m.hash),redirectedFrom:void 0,href:w})}let M;if(_.path!=null)M=ee({},_,{path:Vs(n,_.path,$.path).path});else{const m=ee({},_.params);for(const y in m)m[y]==null&&delete m[y];M=ee({},_,{params:f(m)}),$.params=f($.params)}const j=t.resolve(M,$),oe=_.hash||"";j.params=u(h(j.params));const d=Cf(s,ee({},_,{hash:_f(oe),path:j.path})),p=r.createHref(d);return ee({fullPath:d,hash:oe,query:s===Yo?ed(_.query):_.query||{}},j,{redirectedFrom:void 0,href:p})}function S(_){return typeof _=="string"?Vs(n,_,c.value.path):ee({},_)}function C(_,$){if(a!==_)return en(8,{from:$,to:_})}function E(_){return U(_)}function D(_){return E(ee(S(_),{replace:!0}))}function W(_){const $=_.matched[_.matched.length-1];if($&&$.redirect){const{redirect:M}=$;let j=typeof M=="function"?M(_):M;return typeof j=="string"&&(j=j.includes("?")||j.includes("#")?j=S(j):{path:j},j.params={}),ee({query:_.query,hash:_.hash,params:j.path!=null?{}:_.params},j)}}function U(_,$){const M=a=A(_),j=c.value,oe=_.state,d=_.force,p=_.replace===!0,m=W(M);if(m)return U(ee(S(m),{state:typeof m=="object"?ee({},oe,m.state):oe,force:d,replace:p}),$||M);const y=M;y.redirectedFrom=$;let w;return!d&&Rf(s,j,M)&&(w=en(16,{to:y,from:j}),qe(j,j,!0,!1)),(w?Promise.resolve(w):k(y,j)).catch(b=>nt(b)?nt(b,2)?b:ht(b):Z(b,y,j)).then(b=>{if(b){if(nt(b,2))return U(ee({replace:p},S(b.to),{state:typeof b.to=="object"?ee({},oe,b.to.state):oe,force:d}),$||y)}else b=L(y,j,!0,p,oe);return Q(y,j,b),b})}function H(_,$){const M=C(_,$);return M?Promise.reject(M):Promise.resolve()}function T(_){const $=Ht.values().next().value;return $&&typeof $.runWithContext=="function"?$.runWithContext(_):_()}function k(_,$){let M;const[j,oe,d]=ud(_,$);M=Hs(j.reverse(),"beforeRouteLeave",_,$);for(const m of j)m.leaveGuards.forEach(y=>{M.push(St(y,_,$))});const p=H.bind(null,_,$);return M.push(p),Fe(M).then(()=>{M=[];for(const m of o.list())M.push(St(m,_,$));return M.push(p),Fe(M)}).then(()=>{M=Hs(oe,"beforeRouteUpdate",_,$);for(const m of oe)m.updateGuards.forEach(y=>{M.push(St(y,_,$))});return M.push(p),Fe(M)}).then(()=>{M=[];for(const m of d)if(m.beforeEnter)if(Ge(m.beforeEnter))for(const y of m.beforeEnter)M.push(St(y,_,$));else M.push(St(m.beforeEnter,_,$));return M.push(p),Fe(M)}).then(()=>(_.matched.forEach(m=>m.enterCallbacks={}),M=Hs(d,"beforeRouteEnter",_,$,T),M.push(p),Fe(M))).then(()=>{M=[];for(const m of i.list())M.push(St(m,_,$));return M.push(p),Fe(M)}).catch(m=>nt(m,8)?m:Promise.reject(m))}function Q(_,$,M){l.list().forEach(j=>T(()=>j(_,$,M)))}function L(_,$,M,j,oe){const d=C(_,$);if(d)return d;const p=$===gt,m=Ut?history.state:{};M&&(j||p?r.replace(_.fullPath,ee({scroll:p&&m&&m.scroll},oe)):r.push(_.fullPath,oe)),c.value=_,qe(_,$,M,p),ht()}let Y;function de(){Y||(Y=r.listen((_,$,M)=>{if(!Nn.listening)return;const j=A(_),oe=W(j);if(oe){U(ee(oe,{replace:!0,force:!0}),j).catch(_n);return}a=j;const d=c.value;Ut&&Ff(Bo(d.fullPath,M.delta),xs()),k(j,d).catch(p=>nt(p,12)?p:nt(p,2)?(U(ee(S(p.to),{force:!0}),j).then(m=>{nt(m,20)&&!M.delta&&M.type===On.pop&&r.go(-1,!1)}).catch(_n),Promise.reject()):(M.delta&&r.go(-M.delta,!1),Z(p,j,d))).then(p=>{p=p||L(j,d,!1),p&&(M.delta&&!nt(p,8)?r.go(-M.delta,!1):M.type===On.pop&&nt(p,20)&&r.go(-1,!1)),Q(j,d,p)}).catch(_n)}))}let xe=cn(),re=cn(),z;function Z(_,$,M){ht(_);const j=re.list();return j.length?j.forEach(oe=>oe(_,$,M)):console.error(_),Promise.reject(_)}function et(){return z&&c.value!==gt?Promise.resolve():new Promise((_,$)=>{xe.add([_,$])})}function ht(_){return z||(z=!_,de(),xe.list().forEach(([$,M])=>_?M(_):$()),xe.reset()),_}function qe(_,$,M,j){const{scrollBehavior:oe}=e;if(!Ut||!oe)return Promise.resolve();const d=!M&&Lf(Bo(_.fullPath,0))||(j||!M)&&history.state&&history.state.scroll||null;return In().then(()=>oe(_,$,d)).then(p=>p&&Nf(p)).catch(p=>Z(p,_,$))}const Te=_=>r.go(_);let Vt;const Ht=new Set,Nn={currentRoute:c,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:F,getRoutes:x,resolve:A,options:e,push:E,replace:D,go:Te,back:()=>Te(-1),forward:()=>Te(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:re.add,isReady:et,install(_){const $=this;_.component("RouterLink",rd),_.component("RouterView",cd),_.config.globalProperties.$router=$,Object.defineProperty(_.config.globalProperties,"$route",{enumerable:!0,get:()=>Lt(c)}),Ut&&!Vt&&c.value===gt&&(Vt=!0,E(r.location).catch(oe=>{}));const M={};for(const oe in gt)Object.defineProperty(M,oe,{get:()=>c.value[oe],enumerable:!0});_.provide(Cs,$),_.provide(Lr,Ri(M)),_.provide(lr,c);const j=_.unmount;Ht.add(_),_.unmount=function(){Ht.delete(_),Ht.size<1&&(a=gt,Y&&Y(),Y=null,c.value=gt,Vt=!1,z=!1),j()}}};function Fe(_){return _.reduce(($,M)=>$.then(()=>T(M)),Promise.resolve())}return Nn}function ud(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iZt(a,l))?s.push(l):n.push(l));const c=e.matched[i];c&&(t.matched.find(a=>Zt(a,c))||r.push(c))}return[n,s,r]}function th(){return je(Cs)}function nh(e){return je(Lr)}export{qc as $,bd as A,us as B,as as C,In as D,Du as E,Es as F,wd as G,Fc as H,Ys as I,Bc as J,dd as K,Rd as L,md as M,Be as N,$u as O,lc as P,Ae as Q,Ee as R,Pd as S,Od as T,Vd as U,zi as V,Ed as W,Fl as X,Md as Y,xr as Z,Pn as _,V as a,Er as a0,at as a1,_s as a2,me as a3,Ne as a4,hd as a5,Jc as a6,Kd as a7,hs as a8,zc as a9,ls as aA,Ka as aB,oi as aC,vd as aD,kn as aE,Qd as aF,Fd as aG,Gd as aH,Yd as aI,Jd as aJ,Ud as aK,zd as aL,Ld as aM,Ot as aN,Ri as aO,eh as aP,Zd as aQ,Dd as aR,$d as aS,th as aT,nh as aU,pd as aV,jd as aW,Sa as aX,Cd as aY,Id as aZ,Nd as aa,_d as ab,yd as ac,kd as ad,Vr as ae,ad as af,Lu as ag,Qt as ah,Mr as ai,fd as aj,J as ak,_a as al,Ic as am,ba as an,Yc as ao,si as ap,Eo as aq,Wd as ar,Sd as as,fi as at,Bd as au,gd as av,Hd as aw,Ad as ax,br as ay,ai as az,se as b,we as c,ae as d,ws as e,fe as f,Pt as g,te as h,je as i,q as j,ke as k,Wi as l,Xd as m,qd as n,ye as o,Kn as p,vs as q,ue as r,Ti as s,He as t,Lt as u,xu as v,Td as w,xd as x,Js as y,pl as z}; diff --git a/web/admin-spa/dist/assets/vue-vendor-Ig-GgGwA.js b/web/admin-spa/dist/assets/vue-vendor-Ig-GgGwA.js new file mode 100644 index 00000000..9a3a49ac --- /dev/null +++ b/web/admin-spa/dist/assets/vue-vendor-Ig-GgGwA.js @@ -0,0 +1,25 @@ +/** +* @vue/shared v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function tr(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ie={},Ut=[],ke=()=>{},Kl=()=>!1,ts=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),nr=e=>e.startsWith("onUpdate:"),he=Object.assign,sr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ul=Object.prototype.hasOwnProperty,te=(e,t)=>Ul.call(e,t),j=Array.isArray,Wt=e=>Rn(e)==="[object Map]",Zt=e=>Rn(e)==="[object Set]",Ir=e=>Rn(e)==="[object Date]",W=e=>typeof e=="function",ae=e=>typeof e=="string",Ke=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",Jo=e=>(se(e)||W(e))&&W(e.then)&&W(e.catch),Yo=Object.prototype.toString,Rn=e=>Yo.call(e),Wl=e=>Rn(e).slice(8,-1),Xo=e=>Rn(e)==="[object Object]",rr=e=>ae(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ln=tr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ns=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Gl=/-(\w)/g,Ve=ns(e=>e.replace(Gl,(t,n)=>n?n.toUpperCase():"")),ql=/\B([A-Z])/g,Rt=ns(e=>e.replace(ql,"-$1").toLowerCase()),ss=ns(e=>e.charAt(0).toUpperCase()+e.slice(1)),jn=ns(e=>e?`on${ss(e)}`:""),wt=(e,t)=>!Object.is(e,t),Hn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Wn=e=>{const t=parseFloat(e);return isNaN(t)?e:t},zl=e=>{const t=ae(e)?Number(e):NaN;return isNaN(t)?e:t};let Mr;const rs=()=>Mr||(Mr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function os(e){if(j(e)){const t={};for(let n=0;n{if(n){const s=n.split(Jl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function is(e){let t="";if(ae(e))t=e;else if(j(e))for(let n=0;nFt(n,t))}const ei=e=>!!(e&&e.__v_isRef===!0),nc=e=>ae(e)?e:e==null?"":j(e)||se(e)&&(e.toString===Yo||!W(e.toString))?ei(e)?nc(e.value):JSON.stringify(e,ti,2):String(e),ti=(e,t)=>ei(t)?ti(e,t.value):Wt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[ws(s,o)+" =>"]=r,n),{})}:Zt(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ws(n))}:Ke(t)?ws(t):se(t)&&!j(t)&&!Xo(t)?String(t):t,ws=(e,t="")=>{var n;return Ke(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let me;class ni{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=me,!t&&me&&(this.index=(me.scopes||(me.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(me=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(un){let t=un;for(un=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;cn;){let t=cn;for(cn=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function ci(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function ui(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),ur(s),sc(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function $s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ai(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ai(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===vn)||(e.globalVersion=vn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!$s(e))))return;e.flags|=2;const t=e.dep,n=ce,s=Be;ce=e,Be=!0;try{ci(e);const r=e.fn(e._value);(t.version===0||wt(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ce=n,Be=s,ui(e),e.flags&=-3}}function ur(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)ur(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function sc(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Be=!0;const fi=[];function ct(){fi.push(Be),Be=!1}function ut(){const e=fi.pop();Be=e===void 0?!0:e}function Nr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ce;ce=void 0;try{t()}finally{ce=n}}}let vn=0;class rc{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ls{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ce||!Be||ce===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ce)n=this.activeLink=new rc(ce,this),ce.deps?(n.prevDep=ce.depsTail,ce.depsTail.nextDep=n,ce.depsTail=n):ce.deps=ce.depsTail=n,di(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ce.depsTail,n.nextDep=void 0,ce.depsTail.nextDep=n,ce.depsTail=n,ce.deps===n&&(ce.deps=s)}return n}trigger(t){this.version++,vn++,this.notify(t)}notify(t){lr();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{cr()}}}function di(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)di(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Gn=new WeakMap,Mt=Symbol(""),Ds=Symbol(""),yn=Symbol("");function ve(e,t,n){if(Be&&ce){let s=Gn.get(e);s||Gn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new ls),r.map=s,r.key=n),r.track()}}function rt(e,t,n,s,r,o){const i=Gn.get(e);if(!i){vn++;return}const l=c=>{c&&c.trigger()};if(lr(),t==="clear")i.forEach(l);else{const c=j(e),a=c&&rr(n);if(c&&n==="length"){const u=Number(s);i.forEach((f,h)=>{(h==="length"||h===yn||!Ke(h)&&h>=u)&&l(f)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),a&&l(i.get(yn)),t){case"add":c?a&&l(i.get("length")):(l(i.get(Mt)),Wt(e)&&l(i.get(Ds)));break;case"delete":c||(l(i.get(Mt)),Wt(e)&&l(i.get(Ds)));break;case"set":Wt(e)&&l(i.get(Mt));break}}cr()}function oc(e,t){const n=Gn.get(e);return n&&n.get(t)}function Vt(e){const t=J(e);return t===e?t:(ve(t,"iterate",yn),$e(e)?t:t.map(pe))}function cs(e){return ve(e=J(e),"iterate",yn),e}const ic={__proto__:null,[Symbol.iterator](){return Es(this,Symbol.iterator,pe)},concat(...e){return Vt(this).concat(...e.map(t=>j(t)?Vt(t):t))},entries(){return Es(this,"entries",e=>(e[1]=pe(e[1]),e))},every(e,t){return tt(this,"every",e,t,void 0,arguments)},filter(e,t){return tt(this,"filter",e,t,n=>n.map(pe),arguments)},find(e,t){return tt(this,"find",e,t,pe,arguments)},findIndex(e,t){return tt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return tt(this,"findLast",e,t,pe,arguments)},findLastIndex(e,t){return tt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return tt(this,"forEach",e,t,void 0,arguments)},includes(...e){return xs(this,"includes",e)},indexOf(...e){return xs(this,"indexOf",e)},join(e){return Vt(this).join(e)},lastIndexOf(...e){return xs(this,"lastIndexOf",e)},map(e,t){return tt(this,"map",e,t,void 0,arguments)},pop(){return tn(this,"pop")},push(...e){return tn(this,"push",e)},reduce(e,...t){return Lr(this,"reduce",e,t)},reduceRight(e,...t){return Lr(this,"reduceRight",e,t)},shift(){return tn(this,"shift")},some(e,t){return tt(this,"some",e,t,void 0,arguments)},splice(...e){return tn(this,"splice",e)},toReversed(){return Vt(this).toReversed()},toSorted(e){return Vt(this).toSorted(e)},toSpliced(...e){return Vt(this).toSpliced(...e)},unshift(...e){return tn(this,"unshift",e)},values(){return Es(this,"values",pe)}};function Es(e,t,n){const s=cs(e),r=s[t]();return s!==e&&!$e(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.value&&(o.value=n(o.value)),o}),r}const lc=Array.prototype;function tt(e,t,n,s,r,o){const i=cs(e),l=i!==e&&!$e(e),c=i[t];if(c!==lc[t]){const f=c.apply(e,o);return l?pe(f):f}let a=n;i!==e&&(l?a=function(f,h){return n.call(this,pe(f),h,e)}:n.length>2&&(a=function(f,h){return n.call(this,f,h,e)}));const u=c.call(i,a,s);return l&&r?r(u):u}function Lr(e,t,n,s){const r=cs(e);let o=n;return r!==e&&($e(e)?n.length>3&&(o=function(i,l,c){return n.call(this,i,l,c,e)}):o=function(i,l,c){return n.call(this,i,pe(l),c,e)}),r[t](o,...s)}function xs(e,t,n){const s=J(e);ve(s,"iterate",yn);const r=s[t](...n);return(r===-1||r===!1)&&dr(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function tn(e,t,n=[]){ct(),lr();const s=J(e)[t].apply(e,n);return cr(),ut(),s}const cc=tr("__proto__,__v_isRef,__isVue"),hi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ke));function uc(e){Ke(e)||(e=String(e));const t=J(this);return ve(t,"has",e),t.hasOwnProperty(e)}class pi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?_c:yi:o?vi:mi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const i=j(t);if(!r){let c;if(i&&(c=ic[n]))return c;if(n==="hasOwnProperty")return uc}const l=Reflect.get(t,n,fe(t)?t:s);return(Ke(n)?hi.has(n):cc(n))||(r||ve(t,"get",n),o)?l:fe(l)?i&&rr(n)?l:l.value:se(l)?r?us(l):On(l):l}}class gi extends pi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(!this._isShallow){const c=St(o);if(!$e(s)&&!St(s)&&(o=J(o),s=J(s)),!j(t)&&fe(o)&&!fe(s))return c?!1:(o.value=s,!0)}const i=j(t)&&rr(n)?Number(n)e,Mn=e=>Reflect.getPrototypeOf(e);function pc(e,t,n){return function(...s){const r=this.__v_raw,o=J(r),i=Wt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=r[e](...s),u=n?js:t?qn:pe;return!t&&ve(o,"iterate",c?Ds:Mt),{next(){const{value:f,done:h}=a.next();return h?{value:f,done:h}:{value:l?[u(f[0]),u(f[1])]:u(f),done:h}},[Symbol.iterator](){return this}}}}function Nn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function gc(e,t){const n={get(r){const o=this.__v_raw,i=J(o),l=J(r);e||(wt(r,l)&&ve(i,"get",r),ve(i,"get",l));const{has:c}=Mn(i),a=t?js:e?qn:pe;if(c.call(i,r))return a(o.get(r));if(c.call(i,l))return a(o.get(l));o!==i&&o.get(r)},get size(){const r=this.__v_raw;return!e&&ve(J(r),"iterate",Mt),Reflect.get(r,"size",r)},has(r){const o=this.__v_raw,i=J(o),l=J(r);return e||(wt(r,l)&&ve(i,"has",r),ve(i,"has",l)),r===l?o.has(r):o.has(r)||o.has(l)},forEach(r,o){const i=this,l=i.__v_raw,c=J(l),a=t?js:e?qn:pe;return!e&&ve(c,"iterate",Mt),l.forEach((u,f)=>r.call(o,a(u),a(f),i))}};return he(n,e?{add:Nn("add"),set:Nn("set"),delete:Nn("delete"),clear:Nn("clear")}:{add(r){!t&&!$e(r)&&!St(r)&&(r=J(r));const o=J(this);return Mn(o).has.call(o,r)||(o.add(r),rt(o,"add",r,r)),this},set(r,o){!t&&!$e(o)&&!St(o)&&(o=J(o));const i=J(this),{has:l,get:c}=Mn(i);let a=l.call(i,r);a||(r=J(r),a=l.call(i,r));const u=c.call(i,r);return i.set(r,o),a?wt(o,u)&&rt(i,"set",r,o):rt(i,"add",r,o),this},delete(r){const o=J(this),{has:i,get:l}=Mn(o);let c=i.call(o,r);c||(r=J(r),c=i.call(o,r)),l&&l.call(o,r);const a=o.delete(r);return c&&rt(o,"delete",r,void 0),a},clear(){const r=J(this),o=r.size!==0,i=r.clear();return o&&rt(r,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=pc(r,e,t)}),n}function ar(e,t){const n=gc(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(te(n,r)&&r in s?n:s,r,o)}const mc={get:ar(!1,!1)},vc={get:ar(!1,!0)},yc={get:ar(!0,!1)};const mi=new WeakMap,vi=new WeakMap,yi=new WeakMap,_c=new WeakMap;function bc(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function wc(e){return e.__v_skip||!Object.isExtensible(e)?0:bc(Wl(e))}function On(e){return St(e)?e:fr(e,!1,fc,mc,mi)}function _i(e){return fr(e,!1,hc,vc,vi)}function us(e){return fr(e,!0,dc,yc,yi)}function fr(e,t,n,s,r){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=wc(e);if(o===0)return e;const i=r.get(e);if(i)return i;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function lt(e){return St(e)?lt(e.__v_raw):!!(e&&e.__v_isReactive)}function St(e){return!!(e&&e.__v_isReadonly)}function $e(e){return!!(e&&e.__v_isShallow)}function dr(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function hr(e){return!te(e,"__v_skip")&&Object.isExtensible(e)&&Fs(e,"__v_skip",!0),e}const pe=e=>se(e)?On(e):e,qn=e=>se(e)?us(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function ue(e){return wi(e,!1)}function bi(e){return wi(e,!0)}function wi(e,t){return fe(e)?e:new Sc(e,t)}class Sc{constructor(t,n){this.dep=new ls,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:pe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||$e(t)||St(t);t=s?t:J(t),wt(t,n)&&(this._rawValue=t,this._value=s?t:pe(t),this.dep.trigger())}}function id(e){e.dep&&e.dep.trigger()}function Nt(e){return fe(e)?e.value:e}const Ec={get:(e,t,n)=>t==="__v_raw"?e:Nt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Si(e){return lt(e)?e:new Proxy(e,Ec)}class xc{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new ls,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Cc(e){return new xc(e)}function Rc(e){const t=j(e)?new Array(e.length):{};for(const n in e)t[n]=Ei(e,n);return t}class Oc{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return oc(J(this._object),this._key)}}class Pc{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Tc(e,t,n){return fe(e)?e:W(e)?new Pc(e):se(e)&&arguments.length>1?Ei(e,t,n):ue(e)}function Ei(e,t,n){const s=e[t];return fe(s)?s:new Oc(e,t,n)}class Ac{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new ls(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=vn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ce!==this)return li(this,!0),!0}get value(){const t=this.dep.track();return ai(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Ic(e,t,n=!1){let s,r;return W(e)?s=e:(s=e.get,r=e.set),new Ac(s,r,n)}const Ln={},zn=new WeakMap;let At;function Mc(e,t=!1,n=At){if(n){let s=zn.get(n);s||zn.set(n,s=[]),s.push(e)}}function Nc(e,t,n=ie){const{immediate:s,deep:r,once:o,scheduler:i,augmentJob:l,call:c}=n,a=N=>r?N:$e(N)||r===!1||r===0?ot(N,1):ot(N);let u,f,h,g,v=!1,S=!1;if(fe(e)?(f=()=>e.value,v=$e(e)):lt(e)?(f=()=>a(e),v=!0):j(e)?(S=!0,v=e.some(N=>lt(N)||$e(N)),f=()=>e.map(N=>{if(fe(N))return N.value;if(lt(N))return a(N);if(W(N))return c?c(N,2):N()})):W(e)?t?f=c?()=>c(e,2):e:f=()=>{if(h){ct();try{h()}finally{ut()}}const N=At;At=u;try{return c?c(e,3,[g]):e(g)}finally{At=N}}:f=ke,t&&r){const N=f,k=r===!0?1/0:r;f=()=>ot(N(),k)}const $=ir(),A=()=>{u.stop(),$&&$.active&&sr($.effects,u)};if(o&&t){const N=t;t=(...k)=>{N(...k),A()}}let I=S?new Array(e.length).fill(Ln):Ln;const F=N=>{if(!(!(u.flags&1)||!u.dirty&&!N))if(t){const k=u.run();if(r||v||(S?k.some((z,q)=>wt(z,I[q])):wt(k,I))){h&&h();const z=At;At=u;try{const q=[k,I===Ln?void 0:S&&I[0]===Ln?[]:I,g];I=k,c?c(t,3,q):t(...q)}finally{At=z}}}else u.run()};return l&&l(F),u=new oi(f),u.scheduler=i?()=>i(F,!1):F,g=N=>Mc(N,!1,u),h=u.onStop=()=>{const N=zn.get(u);if(N){if(c)c(N,4);else for(const k of N)k();zn.delete(u)}},t?s?F(!0):I=u.run():i?i(F.bind(null,!0),!0):u.run(),A.pause=u.pause.bind(u),A.resume=u.resume.bind(u),A.stop=A,A}function ot(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))ot(e.value,t,n);else if(j(e))for(let s=0;s{ot(s,t,n)});else if(Xo(e)){for(const s in e)ot(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&ot(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Pn(e,t,n,s){try{return s?e(...s):e()}catch(r){as(r,t,n)}}function Ue(e,t,n,s){if(W(e)){const r=Pn(e,t,n,s);return r&&Jo(r)&&r.catch(o=>{as(o,t,n)}),r}if(j(e)){const r=[];for(let o=0;o>>1,r=Re[s],o=_n(r);o=_n(n)?Re.push(e):Re.splice(Fc(t),0,e),e.flags|=1,Ci()}}function Ci(){Qn||(Qn=xi.then(Oi))}function $c(e){j(e)?Gt.push(...e):vt&&e.id===-1?vt.splice(Bt+1,0,e):e.flags&1||(Gt.push(e),e.flags|=1),Ci()}function Fr(e,t,n=Xe+1){for(;n_n(n)-_n(s));if(Gt.length=0,vt){vt.push(...t);return}for(vt=t,Bt=0;Bte.id==null?e.flags&2?-1:1/0:e.id;function Oi(e){try{for(Xe=0;Xe{s._d&&Qr(-1);const o=Jn(t);let i;try{i=e(...r)}finally{Jn(o),s._d&&Qr(1)}return i};return s._n=!0,s._c=!0,s._d=!0,s}function ld(e,t){if(ge===null)return e;const n=gs(ge),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,an=e=>e&&(e.disabled||e.disabled===""),$r=e=>e&&(e.defer||e.defer===""),Dr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,jr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Hs=(e,t)=>{const n=e&&e.to;return ae(n)?t?t(n):null:n},Ii={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,o,i,l,c,a){const{mc:u,pc:f,pbc:h,o:{insert:g,querySelector:v,createText:S,createComment:$}}=a,A=an(t.props);let{shapeFlag:I,children:F,dynamicChildren:N}=t;if(e==null){const k=t.el=S(""),z=t.anchor=S("");g(k,n,s),g(z,n,s);const q=(x,K)=>{I&16&&(r&&r.isCE&&(r.ce._teleportTarget=x),u(F,x,K,r,o,i,l,c))},B=()=>{const x=t.target=Hs(t.props,v),K=Mi(x,t,S,g);x&&(i!=="svg"&&Dr(x)?i="svg":i!=="mathml"&&jr(x)&&(i="mathml"),A||(q(x,K),Vn(t,!1)))};A&&(q(n,z),Vn(t,!0)),$r(t.props)?(t.el.__isMounted=!1,Ce(()=>{B(),delete t.el.__isMounted},o)):B()}else{if($r(t.props)&&e.el.__isMounted===!1){Ce(()=>{Ii.process(e,t,n,s,r,o,i,l,c,a)},o);return}t.el=e.el,t.targetStart=e.targetStart;const k=t.anchor=e.anchor,z=t.target=e.target,q=t.targetAnchor=e.targetAnchor,B=an(e.props),x=B?n:z,K=B?k:q;if(i==="svg"||Dr(z)?i="svg":(i==="mathml"||jr(z))&&(i="mathml"),N?(h(e.dynamicChildren,N,x,r,o,i,l),wr(e,t,!0)):c||f(e,t,x,K,r,o,i,l,!1),A)B?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Fn(t,n,k,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const Q=t.target=Hs(t.props,v);Q&&Fn(t,Q,null,a,0)}else B&&Fn(t,z,q,a,1);Vn(t,A)}},remove(e,t,n,{um:s,o:{remove:r}},o){const{shapeFlag:i,children:l,anchor:c,targetStart:a,targetAnchor:u,target:f,props:h}=e;if(f&&(r(a),r(u)),o&&r(c),i&16){const g=o||!an(h);for(let v=0;v{e.isMounted=!0}),Bi(()=>{e.isUnmounting=!0}),e}const Fe=[Function,Array],Li={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Fe,onEnter:Fe,onAfterEnter:Fe,onEnterCancelled:Fe,onBeforeLeave:Fe,onLeave:Fe,onAfterLeave:Fe,onLeaveCancelled:Fe,onBeforeAppear:Fe,onAppear:Fe,onAfterAppear:Fe,onAppearCancelled:Fe},Fi=e=>{const t=e.subTree;return t.component?Fi(t.component):t},Hc={name:"BaseTransition",props:Li,setup(e,{slots:t}){const n=Dt(),s=Ni();return()=>{const r=t.default&&gr(t.default(),!0);if(!r||!r.length)return;const o=$i(r),i=J(e),{mode:l}=i;if(s.isLeaving)return Cs(o);const c=Hr(o);if(!c)return Cs(o);let a=bn(c,i,s,n,f=>a=f);c.type!==ye&&$t(c,a);let u=n.subTree&&Hr(n.subTree);if(u&&u.type!==ye&&!It(c,u)&&Fi(n).type!==ye){let f=bn(u,i,s,n);if($t(u,f),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,f.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete f.afterLeave,u=void 0},Cs(o);l==="in-out"&&c.type!==ye?f.delayLeave=(h,g,v)=>{const S=Di(s,u);S[String(u.key)]=u,h[yt]=()=>{g(),h[yt]=void 0,delete a.delayedLeave,u=void 0},a.delayedLeave=()=>{v(),delete a.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return o}}};function $i(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ye){t=n;break}}return t}const Vc=Hc;function Di(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function bn(e,t,n,s,r){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:c,onEnter:a,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:h,onLeave:g,onAfterLeave:v,onLeaveCancelled:S,onBeforeAppear:$,onAppear:A,onAfterAppear:I,onAppearCancelled:F}=t,N=String(e.key),k=Di(n,e),z=(x,K)=>{x&&Ue(x,s,9,K)},q=(x,K)=>{const Q=K[1];z(x,K),j(x)?x.every(M=>M.length<=1)&&Q():x.length<=1&&Q()},B={mode:i,persisted:l,beforeEnter(x){let K=c;if(!n.isMounted)if(o)K=$||c;else return;x[yt]&&x[yt](!0);const Q=k[N];Q&&It(e,Q)&&Q.el[yt]&&Q.el[yt](),z(K,[x])},enter(x){let K=a,Q=u,M=f;if(!n.isMounted)if(o)K=A||a,Q=I||u,M=F||f;else return;let Y=!1;const de=x[$n]=Ee=>{Y||(Y=!0,Ee?z(M,[x]):z(Q,[x]),B.delayedLeave&&B.delayedLeave(),x[$n]=void 0)};K?q(K,[x,de]):de()},leave(x,K){const Q=String(e.key);if(x[$n]&&x[$n](!0),n.isUnmounting)return K();z(h,[x]);let M=!1;const Y=x[yt]=de=>{M||(M=!0,K(),de?z(S,[x]):z(v,[x]),x[yt]=void 0,k[Q]===e&&delete k[Q])};k[Q]=e,g?q(g,[x,Y]):Y()},clone(x){const K=bn(x,t,n,s,r);return r&&r(K),K}};return B}function Cs(e){if(fs(e))return e=Et(e),e.children=null,e}function Hr(e){if(!fs(e))return Ai(e.type)&&e.children?$i(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&W(n.default))return n.default()}}function $t(e,t){e.shapeFlag&6&&e.component?(e.transition=t,$t(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function gr(e,t=!1,n){let s=[],r=0;for(let o=0;o1)for(let o=0;ofn(v,t&&(j(t)?t[S]:t),n,s,r));return}if(qt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&fn(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?gs(s.component):s.el,i=r?null:o,{i:l,r:c}=e,a=t&&t.r,u=l.refs===ie?l.refs={}:l.refs,f=l.setupState,h=J(f),g=f===ie?()=>!1:v=>te(h,v);if(a!=null&&a!==c&&(ae(a)?(u[a]=null,g(a)&&(f[a]=null)):fe(a)&&(a.value=null)),W(c))Pn(c,l,12,[i,u]);else{const v=ae(c),S=fe(c);if(v||S){const $=()=>{if(e.f){const A=v?g(c)?f[c]:u[c]:c.value;r?j(A)&&sr(A,o):j(A)?A.includes(o)||A.push(o):v?(u[c]=[o],g(c)&&(f[c]=u[c])):(c.value=[o],e.k&&(u[e.k]=c.value))}else v?(u[c]=i,g(c)&&(f[c]=i)):S&&(c.value=i,e.k&&(u[e.k]=i))};i?($.id=-1,Ce($,n)):$()}}}rs().requestIdleCallback;rs().cancelIdleCallback;const qt=e=>!!e.type.__asyncLoader,fs=e=>e.type.__isKeepAlive;function kc(e,t){Vi(e,"a",t)}function Bc(e,t){Vi(e,"da",t)}function Vi(e,t,n=_e){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(ds(t,s,n),n){let r=n.parent;for(;r&&r.parent;)fs(r.parent.vnode)&&Kc(s,t,n,r),r=r.parent}}function Kc(e,t,n,s){const r=ds(t,e,s,!0);Ki(()=>{sr(s[t],r)},n)}function ds(e,t,n=_e,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{ct();const l=An(n),c=Ue(t,n,e,i);return l(),ut(),c});return s?r.unshift(o):r.push(o),o}}const at=e=>(t,n=_e)=>{(!En||e==="sp")&&ds(e,(...s)=>t(...s),n)},Uc=at("bm"),mr=at("m"),Wc=at("bu"),ki=at("u"),Bi=at("bum"),Ki=at("um"),Gc=at("sp"),qc=at("rtg"),zc=at("rtc");function Qc(e,t=_e){ds("ec",e,t)}const vr="components",Jc="directives";function ud(e,t){return yr(vr,e,!0,t)||e}const Ui=Symbol.for("v-ndc");function ad(e){return ae(e)?yr(vr,e,!1)||e:e||Ui}function fd(e){return yr(Jc,e)}function yr(e,t,n=!0,s=!1){const r=ge||_e;if(r){const o=r.type;if(e===vr){const l=ju(o,!1);if(l&&(l===t||l===Ve(t)||l===ss(Ve(t))))return o}const i=Vr(r[e]||o[e],t)||Vr(r.appContext[e],t);return!i&&s?o:i}}function Vr(e,t){return e&&(e[t]||e[Ve(t)]||e[ss(Ve(t))])}function dd(e,t,n,s){let r;const o=n,i=j(e);if(i||ae(e)){const l=i&<(e);let c=!1,a=!1;l&&(c=!$e(e),a=St(e),e=cs(e)),r=new Array(e.length);for(let u=0,f=e.length;ut(l,c,void 0,o));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,a=l.length;c{const o=s.fn(...r);return o&&(o.key=s.key),o}:s.fn)}return e}function pd(e,t,n={},s,r){if(ge.ce||ge.parent&&qt(ge.parent)&&ge.parent.ce)return t!=="default"&&(n.name=t),Us(),Ws(Ae,null,[we("slot",n,s&&s())],64);let o=e[t];o&&o._c&&(o._d=!1),Us();const i=o&&Wi(o(n)),l=n.key||i&&i.key,c=Ws(Ae,{key:(l&&!Ke(l)?l:`_${t}`)+(!i&&s?"_fb":"")},i||(s?s():[]),i&&e._===1?64:-2);return!r&&c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),o&&o._c&&(o._d=!0),c}function Wi(e){return e.some(t=>Sn(t)?!(t.type===ye||t.type===Ae&&!Wi(t.children)):!0)?e:null}function gd(e,t){const n={};for(const s in e)n[jn(s)]=e[s];return n}const Vs=e=>e?fl(e)?gs(e):Vs(e.parent):null,dn=he(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Vs(e.parent),$root:e=>Vs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>zi(e),$forceUpdate:e=>e.f||(e.f=()=>{pr(e.update)}),$nextTick:e=>e.n||(e.n=Tn.bind(e.proxy)),$watch:e=>_u.bind(e)}),Rs=(e,t)=>e!==ie&&!e.__isScriptSetup&&te(e,t),Yc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(Rs(s,t))return i[t]=1,s[t];if(r!==ie&&te(r,t))return i[t]=2,r[t];if((a=e.propsOptions[0])&&te(a,t))return i[t]=3,o[t];if(n!==ie&&te(n,t))return i[t]=4,n[t];ks&&(i[t]=0)}}const u=dn[t];let f,h;if(u)return t==="$attrs"&&ve(e.attrs,"get",""),u(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==ie&&te(n,t))return i[t]=4,n[t];if(h=c.config.globalProperties,te(h,t))return h[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return Rs(r,t)?(r[t]=n,!0):s!==ie&&te(s,t)?(s[t]=n,!0):te(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o}},i){let l;return!!n[i]||e!==ie&&te(e,i)||Rs(t,i)||(l=o[0])&&te(l,i)||te(s,i)||te(dn,i)||te(r.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:te(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function md(){return Gi().slots}function vd(){return Gi().attrs}function Gi(e){const t=Dt();return t.setupContext||(t.setupContext=hl(t))}function kr(e){return j(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ks=!0;function Xc(e){const t=zi(e),n=e.proxy,s=e.ctx;ks=!1,t.beforeCreate&&Br(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:i,watch:l,provide:c,inject:a,created:u,beforeMount:f,mounted:h,beforeUpdate:g,updated:v,activated:S,deactivated:$,beforeDestroy:A,beforeUnmount:I,destroyed:F,unmounted:N,render:k,renderTracked:z,renderTriggered:q,errorCaptured:B,serverPrefetch:x,expose:K,inheritAttrs:Q,components:M,directives:Y,filters:de}=t;if(a&&Zc(a,s,null),i)for(const G in i){const Z=i[G];W(Z)&&(s[G]=Z.bind(n))}if(r){const G=r.call(n,n);se(G)&&(e.data=On(G))}if(ks=!0,o)for(const G in o){const Z=o[G],et=W(Z)?Z.bind(n,n):W(Z.get)?Z.get.bind(n,n):ke,dt=!W(Z)&&W(Z.set)?Z.set.bind(n):ke,Ge=be({get:et,set:dt});Object.defineProperty(s,G,{enumerable:!0,configurable:!0,get:()=>Ge.value,set:Oe=>Ge.value=Oe})}if(l)for(const G in l)qi(l[G],s,n,G);if(c){const G=W(c)?c.call(n):c;Reflect.ownKeys(G).forEach(Z=>{kn(Z,G[Z])})}u&&Br(u,e,"c");function re(G,Z){j(Z)?Z.forEach(et=>G(et.bind(n))):Z&&G(Z.bind(n))}if(re(Uc,f),re(mr,h),re(Wc,g),re(ki,v),re(kc,S),re(Bc,$),re(Qc,B),re(zc,z),re(qc,q),re(Bi,I),re(Ki,N),re(Gc,x),j(K))if(K.length){const G=e.exposed||(e.exposed={});K.forEach(Z=>{Object.defineProperty(G,Z,{get:()=>n[Z],set:et=>n[Z]=et,enumerable:!0})})}else e.exposed||(e.exposed={});k&&e.render===ke&&(e.render=k),Q!=null&&(e.inheritAttrs=Q),M&&(e.components=M),Y&&(e.directives=Y),x&&Hi(e)}function Zc(e,t,n=ke){j(e)&&(e=Bs(e));for(const s in e){const r=e[s];let o;se(r)?"default"in r?o=De(r.from||s,r.default,!0):o=De(r.from||s):o=De(r),fe(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[s]=o}}function Br(e,t,n){Ue(j(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function qi(e,t,n,s){let r=s.includes(".")?ol(n,s):()=>n[s];if(ae(e)){const o=t[e];W(o)&&Se(r,o)}else if(W(e))Se(r,e.bind(n));else if(se(e))if(j(e))e.forEach(o=>qi(o,t,n,s));else{const o=W(e.handler)?e.handler.bind(n):t[e.handler];W(o)&&Se(r,o,e)}}function zi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(a=>Yn(c,a,i,!0)),Yn(c,t,i)),se(t)&&o.set(t,c),c}function Yn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Yn(e,o,n,!0),r&&r.forEach(i=>Yn(e,i,n,!0));for(const i in t)if(!(s&&i==="expose")){const l=eu[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const eu={data:Kr,props:Ur,emits:Ur,methods:on,computed:on,beforeCreate:xe,created:xe,beforeMount:xe,mounted:xe,beforeUpdate:xe,updated:xe,beforeDestroy:xe,beforeUnmount:xe,destroyed:xe,unmounted:xe,activated:xe,deactivated:xe,errorCaptured:xe,serverPrefetch:xe,components:on,directives:on,watch:nu,provide:Kr,inject:tu};function Kr(e,t){return t?e?function(){return he(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function tu(e,t){return on(Bs(e),Bs(t))}function Bs(e){if(j(e)){const t={};for(let n=0;n1)return n&&W(t)?t.call(s&&s.proxy):t}}function ou(){return!!(Dt()||Lt)}const Ji={},Yi=()=>Object.create(Ji),Xi=e=>Object.getPrototypeOf(e)===Ji;function iu(e,t,n,s=!1){const r={},o=Yi();e.propsDefaults=Object.create(null),Zi(e,t,r,o);for(const i in e.propsOptions[0])i in r||(r[i]=void 0);n?e.props=s?r:_i(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function lu(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:i}}=e,l=J(r),[c]=e.propsOptions;let a=!1;if((s||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let f=0;f{c=!0;const[h,g]=el(f,t,!0);he(i,h),g&&l.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!c)return se(e)&&s.set(e,Ut),Ut;if(j(o))for(let u=0;ue==="_"||e==="__"||e==="_ctx"||e==="$stable",br=e=>j(e)?e.map(Ze):[Ze(e)],uu=(e,t,n)=>{if(t._n)return t;const s=Dc((...r)=>br(t(...r)),n);return s._c=!1,s},tl=(e,t,n)=>{const s=e._ctx;for(const r in e){if(_r(r))continue;const o=e[r];if(W(o))t[r]=uu(r,o,s);else if(o!=null){const i=br(o);t[r]=()=>i}}},nl=(e,t)=>{const n=br(t);e.slots.default=()=>n},sl=(e,t,n)=>{for(const s in t)(n||!_r(s))&&(e[s]=t[s])},au=(e,t,n)=>{const s=e.slots=Yi();if(e.vnode.shapeFlag&32){const r=t.__;r&&Fs(s,"__",r,!0);const o=t._;o?(sl(s,t,n),n&&Fs(s,"_",o,!0)):tl(t,s)}else t&&nl(e,t)},fu=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,i=ie;if(s.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:sl(r,t,n):(o=!t.$stable,tl(t,r)),i=t}else t&&(nl(e,t),i={default:1});if(o)for(const l in r)!_r(l)&&i[l]==null&&delete r[l]},Ce=Ru;function du(e){return hu(e)}function hu(e,t){const n=rs();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:u,parentNode:f,nextSibling:h,setScopeId:g=ke,insertStaticContent:v}=e,S=(d,p,m,y=null,w=null,b=null,O=void 0,R=null,C=!!p.dynamicChildren)=>{if(d===p)return;d&&!It(d,p)&&(y=_(d),Oe(d,w,b,!0),d=null),p.patchFlag===-2&&(C=!1,p.dynamicChildren=null);const{type:E,ref:V,shapeFlag:T}=p;switch(E){case ps:$(d,p,m,y);break;case ye:A(d,p,m,y);break;case Bn:d==null&&I(p,m,y,O);break;case Ae:M(d,p,m,y,w,b,O,R,C);break;default:T&1?k(d,p,m,y,w,b,O,R,C):T&6?Y(d,p,m,y,w,b,O,R,C):(T&64||T&128)&&E.process(d,p,m,y,w,b,O,R,C,D)}V!=null&&w?fn(V,d&&d.ref,b,p||d,!p):V==null&&d&&d.ref!=null&&fn(d.ref,null,b,d,!0)},$=(d,p,m,y)=>{if(d==null)s(p.el=l(p.children),m,y);else{const w=p.el=d.el;p.children!==d.children&&a(w,p.children)}},A=(d,p,m,y)=>{d==null?s(p.el=c(p.children||""),m,y):p.el=d.el},I=(d,p,m,y)=>{[d.el,d.anchor]=v(d.children,p,m,y,d.el,d.anchor)},F=({el:d,anchor:p},m,y)=>{let w;for(;d&&d!==p;)w=h(d),s(d,m,y),d=w;s(p,m,y)},N=({el:d,anchor:p})=>{let m;for(;d&&d!==p;)m=h(d),r(d),d=m;r(p)},k=(d,p,m,y,w,b,O,R,C)=>{p.type==="svg"?O="svg":p.type==="math"&&(O="mathml"),d==null?z(p,m,y,w,b,O,R,C):x(d,p,w,b,O,R,C)},z=(d,p,m,y,w,b,O,R)=>{let C,E;const{props:V,shapeFlag:T,transition:H,dirs:U}=d;if(C=d.el=i(d.type,b,V&&V.is,V),T&8?u(C,d.children):T&16&&B(d.children,C,null,y,w,Os(d,b),O,R),U&&Ot(d,null,y,"created"),q(C,d,d.scopeId,O,y),V){for(const le in V)le!=="value"&&!ln(le)&&o(C,le,null,V[le],b,y);"value"in V&&o(C,"value",null,V.value,b),(E=V.onVnodeBeforeMount)&&Je(E,y,d)}U&&Ot(d,null,y,"beforeMount");const X=pu(w,H);X&&H.beforeEnter(C),s(C,p,m),((E=V&&V.onVnodeMounted)||X||U)&&Ce(()=>{E&&Je(E,y,d),X&&H.enter(C),U&&Ot(d,null,y,"mounted")},w)},q=(d,p,m,y,w)=>{if(m&&g(d,m),y)for(let b=0;b{for(let E=C;E{const R=p.el=d.el;let{patchFlag:C,dynamicChildren:E,dirs:V}=p;C|=d.patchFlag&16;const T=d.props||ie,H=p.props||ie;let U;if(m&&Pt(m,!1),(U=H.onVnodeBeforeUpdate)&&Je(U,m,p,d),V&&Ot(p,d,m,"beforeUpdate"),m&&Pt(m,!0),(T.innerHTML&&H.innerHTML==null||T.textContent&&H.textContent==null)&&u(R,""),E?K(d.dynamicChildren,E,R,m,y,Os(p,w),b):O||Z(d,p,R,null,m,y,Os(p,w),b,!1),C>0){if(C&16)Q(R,T,H,m,w);else if(C&2&&T.class!==H.class&&o(R,"class",null,H.class,w),C&4&&o(R,"style",T.style,H.style,w),C&8){const X=p.dynamicProps;for(let le=0;le{U&&Je(U,m,p,d),V&&Ot(p,d,m,"updated")},y)},K=(d,p,m,y,w,b,O)=>{for(let R=0;R{if(p!==m){if(p!==ie)for(const b in p)!ln(b)&&!(b in m)&&o(d,b,p[b],null,w,y);for(const b in m){if(ln(b))continue;const O=m[b],R=p[b];O!==R&&b!=="value"&&o(d,b,R,O,w,y)}"value"in m&&o(d,"value",p.value,m.value,w)}},M=(d,p,m,y,w,b,O,R,C)=>{const E=p.el=d?d.el:l(""),V=p.anchor=d?d.anchor:l("");let{patchFlag:T,dynamicChildren:H,slotScopeIds:U}=p;U&&(R=R?R.concat(U):U),d==null?(s(E,m,y),s(V,m,y),B(p.children||[],m,V,w,b,O,R,C)):T>0&&T&64&&H&&d.dynamicChildren?(K(d.dynamicChildren,H,m,w,b,O,R),(p.key!=null||w&&p===w.subTree)&&wr(d,p,!0)):Z(d,p,m,V,w,b,O,R,C)},Y=(d,p,m,y,w,b,O,R,C)=>{p.slotScopeIds=R,d==null?p.shapeFlag&512?w.ctx.activate(p,m,y,O,C):de(p,m,y,w,b,O,C):Ee(d,p,C)},de=(d,p,m,y,w,b,O)=>{const R=d.component=Lu(d,y,w);if(fs(d)&&(R.ctx.renderer=D),Fu(R,!1,O),R.asyncDep){if(w&&w.registerDep(R,re,O),!d.el){const C=R.subTree=we(ye);A(null,C,p,m),d.placeholder=C.el}}else re(R,d,p,m,w,b,O)},Ee=(d,p,m)=>{const y=p.component=d.component;if(xu(d,p,m))if(y.asyncDep&&!y.asyncResolved){G(y,p,m);return}else y.next=p,y.update();else p.el=d.el,y.vnode=p},re=(d,p,m,y,w,b,O)=>{const R=()=>{if(d.isMounted){let{next:T,bu:H,u:U,parent:X,vnode:le}=d;{const ze=rl(d);if(ze){T&&(T.el=le.el,G(d,T,O)),ze.asyncDep.then(()=>{d.isUnmounted||R()});return}}let ne=T,Pe;Pt(d,!1),T?(T.el=le.el,G(d,T,O)):T=le,H&&Hn(H),(Pe=T.props&&T.props.onVnodeBeforeUpdate)&&Je(Pe,X,T,le),Pt(d,!0);const Te=qr(d),qe=d.subTree;d.subTree=Te,S(qe,Te,f(qe.el),_(qe),d,w,b),T.el=Te.el,ne===null&&Cu(d,Te.el),U&&Ce(U,w),(Pe=T.props&&T.props.onVnodeUpdated)&&Ce(()=>Je(Pe,X,T,le),w)}else{let T;const{el:H,props:U}=p,{bm:X,m:le,parent:ne,root:Pe,type:Te}=d,qe=qt(p);Pt(d,!1),X&&Hn(X),!qe&&(T=U&&U.onVnodeBeforeMount)&&Je(T,ne,p),Pt(d,!0);{Pe.ce&&Pe.ce._def.shadowRoot!==!1&&Pe.ce._injectChildStyle(Te);const ze=d.subTree=qr(d);S(null,ze,m,y,d,w,b),p.el=ze.el}if(le&&Ce(le,w),!qe&&(T=U&&U.onVnodeMounted)){const ze=p;Ce(()=>Je(T,ne,ze),w)}(p.shapeFlag&256||ne&&qt(ne.vnode)&&ne.vnode.shapeFlag&256)&&d.a&&Ce(d.a,w),d.isMounted=!0,p=m=y=null}};d.scope.on();const C=d.effect=new oi(R);d.scope.off();const E=d.update=C.run.bind(C),V=d.job=C.runIfDirty.bind(C);V.i=d,V.id=d.uid,C.scheduler=()=>pr(V),Pt(d,!0),E()},G=(d,p,m)=>{p.component=d;const y=d.vnode.props;d.vnode=p,d.next=null,lu(d,p.props,y,m),fu(d,p.children,m),ct(),Fr(d),ut()},Z=(d,p,m,y,w,b,O,R,C=!1)=>{const E=d&&d.children,V=d?d.shapeFlag:0,T=p.children,{patchFlag:H,shapeFlag:U}=p;if(H>0){if(H&128){dt(E,T,m,y,w,b,O,R,C);return}else if(H&256){et(E,T,m,y,w,b,O,R,C);return}}U&8?(V&16&&Le(E,w,b),T!==E&&u(m,T)):V&16?U&16?dt(E,T,m,y,w,b,O,R,C):Le(E,w,b,!0):(V&8&&u(m,""),U&16&&B(T,m,y,w,b,O,R,C))},et=(d,p,m,y,w,b,O,R,C)=>{d=d||Ut,p=p||Ut;const E=d.length,V=p.length,T=Math.min(E,V);let H;for(H=0;HV?Le(d,w,b,!0,!1,T):B(p,m,y,w,b,O,R,C,T)},dt=(d,p,m,y,w,b,O,R,C)=>{let E=0;const V=p.length;let T=d.length-1,H=V-1;for(;E<=T&&E<=H;){const U=d[E],X=p[E]=C?_t(p[E]):Ze(p[E]);if(It(U,X))S(U,X,m,null,w,b,O,R,C);else break;E++}for(;E<=T&&E<=H;){const U=d[T],X=p[H]=C?_t(p[H]):Ze(p[H]);if(It(U,X))S(U,X,m,null,w,b,O,R,C);else break;T--,H--}if(E>T){if(E<=H){const U=H+1,X=UH)for(;E<=T;)Oe(d[E],w,b,!0),E++;else{const U=E,X=E,le=new Map;for(E=X;E<=H;E++){const Ie=p[E]=C?_t(p[E]):Ze(p[E]);Ie.key!=null&&le.set(Ie.key,E)}let ne,Pe=0;const Te=H-X+1;let qe=!1,ze=0;const en=new Array(Te);for(E=0;E=Te){Oe(Ie,w,b,!0);continue}let Qe;if(Ie.key!=null)Qe=le.get(Ie.key);else for(ne=X;ne<=H;ne++)if(en[ne-X]===0&&It(Ie,p[ne])){Qe=ne;break}Qe===void 0?Oe(Ie,w,b,!0):(en[Qe-X]=E+1,Qe>=ze?ze=Qe:qe=!0,S(Ie,p[Qe],m,null,w,b,O,R,C),Pe++)}const Pr=qe?gu(en):Ut;for(ne=Pr.length-1,E=Te-1;E>=0;E--){const Ie=X+E,Qe=p[Ie],Tr=p[Ie+1],Ar=Ie+1{const{el:b,type:O,transition:R,children:C,shapeFlag:E}=d;if(E&6){Ge(d.component.subTree,p,m,y);return}if(E&128){d.suspense.move(p,m,y);return}if(E&64){O.move(d,p,m,D);return}if(O===Ae){s(b,p,m);for(let T=0;TR.enter(b),w);else{const{leave:T,delayLeave:H,afterLeave:U}=R,X=()=>{d.ctx.isUnmounted?r(b):s(b,p,m)},le=()=>{T(b,()=>{X(),U&&U()})};H?H(b,X,le):le()}else s(b,p,m)},Oe=(d,p,m,y=!1,w=!1)=>{const{type:b,props:O,ref:R,children:C,dynamicChildren:E,shapeFlag:V,patchFlag:T,dirs:H,cacheIndex:U}=d;if(T===-2&&(w=!1),R!=null&&(ct(),fn(R,null,m,d,!0),ut()),U!=null&&(p.renderCache[U]=void 0),V&256){p.ctx.deactivate(d);return}const X=V&1&&H,le=!qt(d);let ne;if(le&&(ne=O&&O.onVnodeBeforeUnmount)&&Je(ne,p,d),V&6)In(d.component,m,y);else{if(V&128){d.suspense.unmount(m,y);return}X&&Ot(d,null,p,"beforeUnmount"),V&64?d.type.remove(d,p,m,D,y):E&&!E.hasOnce&&(b!==Ae||T>0&&T&64)?Le(E,p,m,!1,!0):(b===Ae&&T&384||!w&&V&16)&&Le(C,p,m),y&&jt(d)}(le&&(ne=O&&O.onVnodeUnmounted)||X)&&Ce(()=>{ne&&Je(ne,p,d),X&&Ot(d,null,p,"unmounted")},m)},jt=d=>{const{type:p,el:m,anchor:y,transition:w}=d;if(p===Ae){Ht(m,y);return}if(p===Bn){N(d);return}const b=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(d.shapeFlag&1&&w&&!w.persisted){const{leave:O,delayLeave:R}=w,C=()=>O(m,b);R?R(d.el,b,C):C()}else b()},Ht=(d,p)=>{let m;for(;d!==p;)m=h(d),r(d),d=m;r(p)},In=(d,p,m)=>{const{bum:y,scope:w,job:b,subTree:O,um:R,m:C,a:E,parent:V,slots:{__:T}}=d;Gr(C),Gr(E),y&&Hn(y),V&&j(T)&&T.forEach(H=>{V.renderCache[H]=void 0}),w.stop(),b&&(b.flags|=8,Oe(O,d,p,m)),R&&Ce(R,p),Ce(()=>{d.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&d.asyncDep&&!d.asyncResolved&&d.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},Le=(d,p,m,y=!1,w=!1,b=0)=>{for(let O=b;O{if(d.shapeFlag&6)return _(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const p=h(d.anchor||d.el),m=p&&p[Ti];return m?h(m):p};let L=!1;const P=(d,p,m)=>{d==null?p._vnode&&Oe(p._vnode,null,null,!0):S(p._vnode||null,d,p,null,null,null,m),p._vnode=d,L||(L=!0,Fr(),Ri(),L=!1)},D={p:S,um:Oe,m:Ge,r:jt,mt:de,mc:B,pc:Z,pbc:K,n:_,o:e};return{render:P,hydrate:void 0,createApp:ru(P)}}function Os({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Pt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function pu(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function wr(e,t,n=!1){const s=e.children,r=t.children;if(j(s)&&j(r))for(let o=0;o>1,e[n[l]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function rl(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:rl(t)}function Gr(e){if(e)for(let t=0;tDe(mu);function yu(e,t){return Sr(e,null,t)}function Se(e,t,n){return Sr(e,t,n)}function Sr(e,t,n=ie){const{immediate:s,deep:r,flush:o,once:i}=n,l=he({},n),c=t&&s||!t&&o!=="post";let a;if(En){if(o==="sync"){const g=vu();a=g.__watcherHandles||(g.__watcherHandles=[])}else if(!c){const g=()=>{};return g.stop=ke,g.resume=ke,g.pause=ke,g}}const u=_e;l.call=(g,v,S)=>Ue(g,u,v,S);let f=!1;o==="post"?l.scheduler=g=>{Ce(g,u&&u.suspense)}:o!=="sync"&&(f=!0,l.scheduler=(g,v)=>{v?g():pr(g)}),l.augmentJob=g=>{t&&(g.flags|=4),f&&(g.flags|=2,u&&(g.id=u.uid,g.i=u))};const h=Nc(e,t,l);return En&&(a?a.push(h):c&&h()),h}function _u(e,t,n){const s=this.proxy,r=ae(e)?e.includes(".")?ol(s,e):()=>s[e]:e.bind(s,s);let o;W(t)?o=t:(o=t.handler,n=t);const i=An(this),l=Sr(r,o.bind(s),n);return i(),l}function ol(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Ve(t)}Modifiers`]||e[`${Rt(t)}Modifiers`];function wu(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ie;let r=n;const o=t.startsWith("update:"),i=o&&bu(s,t.slice(7));i&&(i.trim&&(r=n.map(u=>ae(u)?u.trim():u)),i.number&&(r=n.map(Wn)));let l,c=s[l=jn(t)]||s[l=jn(Ve(t))];!c&&o&&(c=s[l=jn(Rt(t))]),c&&Ue(c,e,6,r);const a=s[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ue(a,e,6,r)}}function il(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let i={},l=!1;if(!W(e)){const c=a=>{const u=il(a,t,!0);u&&(l=!0,he(i,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(se(e)&&s.set(e,null),null):(j(o)?o.forEach(c=>i[c]=null):he(i,o),se(e)&&s.set(e,i),i)}function hs(e,t){return!e||!ts(t)?!1:(t=t.slice(2).replace(/Once$/,""),te(e,t[0].toLowerCase()+t.slice(1))||te(e,Rt(t))||te(e,t))}function qr(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:i,attrs:l,emit:c,render:a,renderCache:u,props:f,data:h,setupState:g,ctx:v,inheritAttrs:S}=e,$=Jn(e);let A,I;try{if(n.shapeFlag&4){const N=r||s,k=N;A=Ze(a.call(k,N,u,f,g,h,v)),I=l}else{const N=t;A=Ze(N.length>1?N(f,{attrs:l,slots:i,emit:c}):N(f,null)),I=t.props?l:Su(l)}}catch(N){hn.length=0,as(N,e,1),A=we(ye)}let F=A;if(I&&S!==!1){const N=Object.keys(I),{shapeFlag:k}=F;N.length&&k&7&&(o&&N.some(nr)&&(I=Eu(I,o)),F=Et(F,I,!1,!0))}return n.dirs&&(F=Et(F,null,!1,!0),F.dirs=F.dirs?F.dirs.concat(n.dirs):n.dirs),n.transition&&$t(F,n.transition),A=F,Jn($),A}const Su=e=>{let t;for(const n in e)(n==="class"||n==="style"||ts(n))&&((t||(t={}))[n]=e[n]);return t},Eu=(e,t)=>{const n={};for(const s in e)(!nr(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function xu(e,t,n){const{props:s,children:r,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?zr(s,i,a):!!i;if(c&8){const u=t.dynamicProps;for(let f=0;fe.__isSuspense;function Ru(e,t){t&&t.pendingBranch?j(e)?t.effects.push(...e):t.effects.push(e):$c(e)}const Ae=Symbol.for("v-fgt"),ps=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Bn=Symbol.for("v-stc"),hn=[];let Me=null;function Us(e=!1){hn.push(Me=e?null:[])}function Ou(){hn.pop(),Me=hn[hn.length-1]||null}let wn=1;function Qr(e,t=!1){wn+=e,e<0&&Me&&t&&(Me.hasOnce=!0)}function cl(e){return e.dynamicChildren=wn>0?Me||Ut:null,Ou(),wn>0&&Me&&Me.push(e),e}function yd(e,t,n,s,r,o){return cl(al(e,t,n,s,r,o,!0))}function Ws(e,t,n,s,r){return cl(we(e,t,n,s,r,!0))}function Sn(e){return e?e.__v_isVNode===!0:!1}function It(e,t){return e.type===t.type&&e.key===t.key}const ul=({key:e})=>e??null,Kn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ae(e)||fe(e)||W(e)?{i:ge,r:e,k:t,f:!!n}:e:null);function al(e,t=null,n=null,s=0,r=null,o=e===Ae?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ul(t),ref:t&&Kn(t),scopeId:Pi,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ge};return l?(Er(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=ae(n)?8:16),wn>0&&!i&&Me&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Me.push(c),c}const we=Pu;function Pu(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===Ui)&&(e=ye),Sn(e)){const l=Et(e,t,!0);return n&&Er(l,n),wn>0&&!o&&Me&&(l.shapeFlag&6?Me[Me.indexOf(e)]=l:Me.push(l)),l.patchFlag=-2,l}if(Hu(e)&&(e=e.__vccOpts),t){t=Tu(t);let{class:l,style:c}=t;l&&!ae(l)&&(t.class=is(l)),se(c)&&(dr(c)&&!j(c)&&(c=he({},c)),t.style=os(c))}const i=ae(e)?1:ll(e)?128:Ai(e)?64:se(e)?4:W(e)?2:0;return al(e,t,n,s,r,i,o,!0)}function Tu(e){return e?dr(e)||Xi(e)?he({},e):e:null}function Et(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:i,children:l,transition:c}=e,a=t?Iu(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:a,key:a&&ul(a),ref:t&&t.ref?n&&o?j(o)?o.concat(Kn(t)):[o,Kn(t)]:Kn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Ae?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Et(e.ssContent),ssFallback:e.ssFallback&&Et(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&$t(u,c.clone(u)),u}function Au(e=" ",t=0){return we(ps,null,e,t)}function _d(e,t){const n=we(Bn,null,e);return n.staticCount=t,n}function bd(e="",t=!1){return t?(Us(),Ws(ye,null,e)):we(ye,null,e)}function Ze(e){return e==null||typeof e=="boolean"?we(ye):j(e)?we(Ae,null,e.slice()):Sn(e)?_t(e):we(ps,null,String(e))}function _t(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Et(e)}function Er(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(j(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Er(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Xi(t)?t._ctx=ge:r===3&&ge&&(ge.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:ge},n=32):(t=String(t),s&64?(n=16,t=[Au(t)]):n=8);e.children=t,e.shapeFlag|=n}function Iu(...e){const t={};for(let n=0;n_e||ge;let Xn,Gs;{const e=rs(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(i=>i(o)):r[0](o)}};Xn=t("__VUE_INSTANCE_SETTERS__",n=>_e=n),Gs=t("__VUE_SSR_SETTERS__",n=>En=n)}const An=e=>{const t=_e;return Xn(e),e.scope.on(),()=>{e.scope.off(),Xn(t)}},Jr=()=>{_e&&_e.scope.off(),Xn(null)};function fl(e){return e.vnode.shapeFlag&4}let En=!1;function Fu(e,t=!1,n=!1){t&&Gs(t);const{props:s,children:r}=e.vnode,o=fl(e);iu(e,s,o,t),au(e,r,n||t);const i=o?$u(e,t):void 0;return t&&Gs(!1),i}function $u(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Yc);const{setup:s}=n;if(s){ct();const r=e.setupContext=s.length>1?hl(e):null,o=An(e),i=Pn(s,e,0,[e.props,r]),l=Jo(i);if(ut(),o(),(l||e.sp)&&!qt(e)&&Hi(e),l){if(i.then(Jr,Jr),t)return i.then(c=>{Yr(e,c)}).catch(c=>{as(c,e,0)});e.asyncDep=i}else Yr(e,i)}else dl(e)}function Yr(e,t,n){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=Si(t)),dl(e)}function dl(e,t,n){const s=e.type;e.render||(e.render=s.render||ke);{const r=An(e);ct();try{Xc(e)}finally{ut(),r()}}}const Du={get(e,t){return ve(e,"get",""),e[t]}};function hl(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Du),slots:e.slots,emit:e.emit,expose:t}}function gs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Si(hr(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in dn)return dn[n](e)},has(t,n){return n in t||n in dn}})):e.proxy}function ju(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function Hu(e){return W(e)&&"__vccOpts"in e}const be=(e,t)=>Ic(e,t,En);function xr(e,t,n){const s=arguments.length;return s===2?se(t)&&!j(t)?Sn(t)?we(e,null,[t]):we(e,t):we(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Sn(n)&&(n=[n]),we(e,t,n))}const Vu="3.5.18",wd=ke;/** +* @vue/runtime-dom v3.5.18 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let qs;const Xr=typeof window<"u"&&window.trustedTypes;if(Xr)try{qs=Xr.createPolicy("vue",{createHTML:e=>e})}catch{}const pl=qs?e=>qs.createHTML(e):e=>e,ku="http://www.w3.org/2000/svg",Bu="http://www.w3.org/1998/Math/MathML",st=typeof document<"u"?document:null,Zr=st&&st.createElement("template"),Ku={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?st.createElementNS(ku,e):t==="mathml"?st.createElementNS(Bu,e):n?st.createElement(e,{is:n}):st.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const i=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{Zr.innerHTML=pl(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Zr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ht="transition",nn="animation",zt=Symbol("_vtc"),gl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ml=he({},Li,gl),Uu=e=>(e.displayName="Transition",e.props=ml,e),Sd=Uu((e,{slots:t})=>xr(Vc,vl(e),t)),Tt=(e,t=[])=>{j(e)?e.forEach(n=>n(...t)):e&&e(...t)},eo=e=>e?j(e)?e.some(t=>t.length>1):e.length>1:!1;function vl(e){const t={};for(const M in e)M in gl||(t[M]=e[M]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:u=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,v=Wu(r),S=v&&v[0],$=v&&v[1],{onBeforeEnter:A,onEnter:I,onEnterCancelled:F,onLeave:N,onLeaveCancelled:k,onBeforeAppear:z=A,onAppear:q=I,onAppearCancelled:B=F}=t,x=(M,Y,de,Ee)=>{M._enterCancelled=Ee,gt(M,Y?u:l),gt(M,Y?a:i),de&&de()},K=(M,Y)=>{M._isLeaving=!1,gt(M,f),gt(M,g),gt(M,h),Y&&Y()},Q=M=>(Y,de)=>{const Ee=M?q:I,re=()=>x(Y,M,de);Tt(Ee,[Y,re]),to(()=>{gt(Y,M?c:o),Ye(Y,M?u:l),eo(Ee)||no(Y,s,S,re)})};return he(t,{onBeforeEnter(M){Tt(A,[M]),Ye(M,o),Ye(M,i)},onBeforeAppear(M){Tt(z,[M]),Ye(M,c),Ye(M,a)},onEnter:Q(!1),onAppear:Q(!0),onLeave(M,Y){M._isLeaving=!0;const de=()=>K(M,Y);Ye(M,f),M._enterCancelled?(Ye(M,h),zs()):(zs(),Ye(M,h)),to(()=>{M._isLeaving&&(gt(M,f),Ye(M,g),eo(N)||no(M,s,$,de))}),Tt(N,[M,de])},onEnterCancelled(M){x(M,!1,void 0,!0),Tt(F,[M])},onAppearCancelled(M){x(M,!0,void 0,!0),Tt(B,[M])},onLeaveCancelled(M){K(M),Tt(k,[M])}})}function Wu(e){if(e==null)return null;if(se(e))return[Ps(e.enter),Ps(e.leave)];{const t=Ps(e);return[t,t]}}function Ps(e){return zl(e)}function Ye(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[zt]||(e[zt]=new Set)).add(t)}function gt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[zt];n&&(n.delete(t),n.size||(e[zt]=void 0))}function to(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Gu=0;function no(e,t,n,s){const r=e._endId=++Gu,o=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=yl(e,t);if(!i)return s();const a=i+"end";let u=0;const f=()=>{e.removeEventListener(a,h),o()},h=g=>{g.target===e&&++u>=c&&f()};setTimeout(()=>{u(n[v]||"").split(", "),r=s(`${ht}Delay`),o=s(`${ht}Duration`),i=so(r,o),l=s(`${nn}Delay`),c=s(`${nn}Duration`),a=so(l,c);let u=null,f=0,h=0;t===ht?i>0&&(u=ht,f=i,h=o.length):t===nn?a>0&&(u=nn,f=a,h=c.length):(f=Math.max(i,a),u=f>0?i>a?ht:nn:null,h=u?u===ht?o.length:c.length:0);const g=u===ht&&/\b(transform|all)(,|$)/.test(s(`${ht}Property`).toString());return{type:u,timeout:f,propCount:h,hasTransform:g}}function so(e,t){for(;e.lengthro(n)+ro(e[s])))}function ro(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function zs(){return document.body.offsetHeight}function qu(e,t,n){const s=e[zt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Zn=Symbol("_vod"),_l=Symbol("_vsh"),Ed={beforeMount(e,{value:t},{transition:n}){e[Zn]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):sn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),sn(e,!0),s.enter(e)):s.leave(e,()=>{sn(e,!1)}):sn(e,t))},beforeUnmount(e,{value:t}){sn(e,t)}};function sn(e,t){e.style.display=t?e[Zn]:"none",e[_l]=!t}const zu=Symbol(""),Qu=/(^|;)\s*display\s*:/;function Ju(e,t,n){const s=e.style,r=ae(n);let o=!1;if(n&&!r){if(t)if(ae(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Un(s,l,"")}else for(const i in t)n[i]==null&&Un(s,i,"");for(const i in n)i==="display"&&(o=!0),Un(s,i,n[i])}else if(r){if(t!==n){const i=s[zu];i&&(n+=";"+i),s.cssText=n,o=Qu.test(n)}}else t&&e.removeAttribute("style");Zn in e&&(e[Zn]=o?s.display:"",e[_l]&&(s.display="none"))}const oo=/\s*!important$/;function Un(e,t,n){if(j(n))n.forEach(s=>Un(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Yu(e,t);oo.test(n)?e.setProperty(Rt(s),n.replace(oo,""),"important"):e[s]=n}}const io=["Webkit","Moz","ms"],Ts={};function Yu(e,t){const n=Ts[t];if(n)return n;let s=Ve(t);if(s!=="filter"&&s in e)return Ts[t]=s;s=ss(s);for(let r=0;rAs||(ta.then(()=>As=0),As=Date.now());function sa(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ue(ra(s,n.value),t,5,[s])};return n.value=e,n.attached=na(),n}function ra(e,t){if(j(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const ho=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,oa=(e,t,n,s,r,o)=>{const i=r==="svg";t==="class"?qu(e,s,i):t==="style"?Ju(e,n,s):ts(t)?nr(t)||Zu(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ia(e,t,s,i))?(uo(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&co(e,t,s,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ae(s))?uo(e,Ve(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),co(e,t,s,i))};function ia(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&ho(t)&&W(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return ho(t)&&ae(n)?!1:t in e}const bl=new WeakMap,wl=new WeakMap,es=Symbol("_moveCb"),po=Symbol("_enterCb"),la=e=>(delete e.props.mode,e),ca=la({name:"TransitionGroup",props:he({},ml,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=Dt(),s=Ni();let r,o;return ki(()=>{if(!r.length)return;const i=e.moveClass||`${e.name||"v"}-move`;if(!da(r[0].el,n.vnode.el,i)){r=[];return}r.forEach(ua),r.forEach(aa);const l=r.filter(fa);zs(),l.forEach(c=>{const a=c.el,u=a.style;Ye(a,i),u.transform=u.webkitTransform=u.transitionDuration="";const f=a[es]=h=>{h&&h.target!==a||(!h||/transform$/.test(h.propertyName))&&(a.removeEventListener("transitionend",f),a[es]=null,gt(a,i))};a.addEventListener("transitionend",f)}),r=[]}),()=>{const i=J(e),l=vl(i);let c=i.tag||Ae;if(r=[],o)for(let a=0;a{l.split(/\s+/).forEach(c=>c&&s.classList.remove(c))}),n.split(/\s+/).forEach(l=>l&&s.classList.add(l)),s.style.display="none";const o=t.nodeType===1?t:t.parentNode;o.appendChild(s);const{hasTransform:i}=yl(s);return o.removeChild(s),i}const xt=e=>{const t=e.props["onUpdate:modelValue"]||!1;return j(t)?n=>Hn(t,n):t};function ha(e){e.target.composing=!0}function go(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const je=Symbol("_assign"),mo={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[je]=xt(r);const o=s||r.props&&r.props.type==="number";it(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=Wn(l)),e[je](l)}),n&&it(e,"change",()=>{e.value=e.value.trim()}),t||(it(e,"compositionstart",ha),it(e,"compositionend",go),it(e,"change",go))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},i){if(e[je]=xt(i),e.composing)return;const l=(o||e.type==="number")&&!/^0\d/.test(e.value)?Wn(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},pa={deep:!0,created(e,t,n){e[je]=xt(n),it(e,"change",()=>{const s=e._modelValue,r=Qt(e),o=e.checked,i=e[je];if(j(s)){const l=or(s,r),c=l!==-1;if(o&&!c)i(s.concat(r));else if(!o&&c){const a=[...s];a.splice(l,1),i(a)}}else if(Zt(s)){const l=new Set(s);o?l.add(r):l.delete(r),i(l)}else i(Sl(e,o))})},mounted:vo,beforeUpdate(e,t,n){e[je]=xt(n),vo(e,t,n)}};function vo(e,{value:t,oldValue:n},s){e._modelValue=t;let r;if(j(t))r=or(t,s.props.value)>-1;else if(Zt(t))r=t.has(s.props.value);else{if(t===n)return;r=Ft(t,Sl(e,!0))}e.checked!==r&&(e.checked=r)}const ga={created(e,{value:t},n){e.checked=Ft(t,n.props.value),e[je]=xt(n),it(e,"change",()=>{e[je](Qt(e))})},beforeUpdate(e,{value:t,oldValue:n},s){e[je]=xt(s),t!==n&&(e.checked=Ft(t,s.props.value))}},ma={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=Zt(t);it(e,"change",()=>{const o=Array.prototype.filter.call(e.options,i=>i.selected).map(i=>n?Wn(Qt(i)):Qt(i));e[je](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,Tn(()=>{e._assigning=!1})}),e[je]=xt(s)},mounted(e,{value:t}){yo(e,t)},beforeUpdate(e,t,n){e[je]=xt(n)},updated(e,{value:t}){e._assigning||yo(e,t)}};function yo(e,t){const n=e.multiple,s=j(t);if(!(n&&!s&&!Zt(t))){for(let r=0,o=e.options.length;rString(a)===String(l)):i.selected=or(t,l)>-1}else i.selected=t.has(l);else if(Ft(Qt(i),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Qt(e){return"_value"in e?e._value:e.value}function Sl(e,t){const n=t?"_trueValue":"_falseValue";return n in e?e[n]:t}const Cd={created(e,t,n){Dn(e,t,n,null,"created")},mounted(e,t,n){Dn(e,t,n,null,"mounted")},beforeUpdate(e,t,n,s){Dn(e,t,n,s,"beforeUpdate")},updated(e,t,n,s){Dn(e,t,n,s,"updated")}};function va(e,t){switch(e){case"SELECT":return ma;case"TEXTAREA":return mo;default:switch(t){case"checkbox":return pa;case"radio":return ga;default:return mo}}}function Dn(e,t,n,s,r){const i=va(e.tagName,n.props&&n.props.type)[r];i&&i(e,t,n,s)}const ya=["ctrl","shift","alt","meta"],_a={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ya.some(n=>e[`${n}Key`]&&!t.includes(n))},Rd=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const o=Rt(r.key);if(t.some(i=>i===o||ba[i]===o))return e(r)})},wa=he({patchProp:oa},Ku);let _o;function El(){return _o||(_o=du(wa))}const Pd=(...e)=>{El().render(...e)},Td=(...e)=>{const t=El().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ea(s);if(!r)return;const o=t._component;!W(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const i=n(r,!1,Sa(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),i},t};function Sa(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ea(e){return ae(e)?document.querySelector(e):e}/*! + * pinia v2.3.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */let xl;const ms=e=>xl=e,Cl=Symbol();function Qs(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var pn;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(pn||(pn={}));function Ad(){const e=si(!0),t=e.run(()=>ue({}));let n=[],s=[];const r=hr({install(o){ms(r),r._a=o,o.provide(Cl,r),o.config.globalProperties.$pinia=r,s.forEach(i=>n.push(i)),s=[]},use(o){return this._a?n.push(o):s.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return r}const Rl=()=>{};function bo(e,t,n,s=Rl){e.push(t);const r=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),s())};return!n&&ir()&&ri(r),r}function kt(e,...t){e.slice().forEach(n=>{n(...t)})}const xa=e=>e(),wo=Symbol(),Is=Symbol();function Js(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,s)=>e.set(s,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const s=t[n],r=e[n];Qs(r)&&Qs(s)&&e.hasOwnProperty(n)&&!fe(s)&&!lt(s)?e[n]=Js(r,s):e[n]=s}return e}const Ca=Symbol();function Ra(e){return!Qs(e)||!e.hasOwnProperty(Ca)}const{assign:mt}=Object;function Oa(e){return!!(fe(e)&&e.effect)}function Pa(e,t,n,s){const{state:r,actions:o,getters:i}=t,l=n.state.value[e];let c;function a(){l||(n.state.value[e]=r?r():{});const u=Rc(n.state.value[e]);return mt(u,o,Object.keys(i||{}).reduce((f,h)=>(f[h]=hr(be(()=>{ms(n);const g=n._s.get(e);return i[h].call(g,g)})),f),{}))}return c=Ol(e,a,t,n,s,!0),c}function Ol(e,t,n={},s,r,o){let i;const l=mt({actions:{}},n),c={deep:!0};let a,u,f=[],h=[],g;const v=s.state.value[e];!o&&!v&&(s.state.value[e]={}),ue({});let S;function $(B){let x;a=u=!1,typeof B=="function"?(B(s.state.value[e]),x={type:pn.patchFunction,storeId:e,events:g}):(Js(s.state.value[e],B),x={type:pn.patchObject,payload:B,storeId:e,events:g});const K=S=Symbol();Tn().then(()=>{S===K&&(a=!0)}),u=!0,kt(f,x,s.state.value[e])}const A=o?function(){const{state:x}=n,K=x?x():{};this.$patch(Q=>{mt(Q,K)})}:Rl;function I(){i.stop(),f=[],h=[],s._s.delete(e)}const F=(B,x="")=>{if(wo in B)return B[Is]=x,B;const K=function(){ms(s);const Q=Array.from(arguments),M=[],Y=[];function de(G){M.push(G)}function Ee(G){Y.push(G)}kt(h,{args:Q,name:K[Is],store:k,after:de,onError:Ee});let re;try{re=B.apply(this&&this.$id===e?this:k,Q)}catch(G){throw kt(Y,G),G}return re instanceof Promise?re.then(G=>(kt(M,G),G)).catch(G=>(kt(Y,G),Promise.reject(G))):(kt(M,re),re)};return K[wo]=!0,K[Is]=x,K},N={_p:s,$id:e,$onAction:bo.bind(null,h),$patch:$,$reset:A,$subscribe(B,x={}){const K=bo(f,B,x.detached,()=>Q()),Q=i.run(()=>Se(()=>s.state.value[e],M=>{(x.flush==="sync"?u:a)&&B({storeId:e,type:pn.direct,events:g},M)},mt({},c,x)));return K},$dispose:I},k=On(N);s._s.set(e,k);const q=(s._a&&s._a.runWithContext||xa)(()=>s._e.run(()=>(i=si()).run(()=>t({action:F}))));for(const B in q){const x=q[B];if(fe(x)&&!Oa(x)||lt(x))o||(v&&Ra(x)&&(fe(x)?x.value=v[B]:Js(x,v[B])),s.state.value[e][B]=x);else if(typeof x=="function"){const K=F(x,B);q[B]=K,l.actions[B]=x}}return mt(k,q),mt(J(k),q),Object.defineProperty(k,"$state",{get:()=>s.state.value[e],set:B=>{$(x=>{mt(x,B)})}}),s._p.forEach(B=>{mt(k,i.run(()=>B({store:k,app:s._a,pinia:s,options:l})))}),v&&o&&n.hydrate&&n.hydrate(k.$state,v),a=!0,u=!0,k}/*! #__NO_SIDE_EFFECTS__ */function Id(e,t,n){let s,r;const o=typeof t=="function";typeof e=="string"?(s=e,r=o?n:t):(r=e,s=e.id);function i(l,c){const a=ou();return l=l||(a?De(Cl,null):null),l&&ms(l),l=xl,l._s.has(s)||(o?Ol(s,t,r,l):Pa(s,r,l)),l._s.get(s)}return i.$id=s,i}function Md(e){{const t=J(e),n={};for(const s in t){const r=t[s];r.effect?n[s]=be({get:()=>e[s],set(o){e[s]=o}}):(fe(r)||lt(r))&&(n[s]=Tc(e,s))}return n}}var Ta=Object.defineProperty,Aa=Object.defineProperties,Ia=Object.getOwnPropertyDescriptors,So=Object.getOwnPropertySymbols,Ma=Object.prototype.hasOwnProperty,Na=Object.prototype.propertyIsEnumerable,Eo=(e,t,n)=>t in e?Ta(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,La=(e,t)=>{for(var n in t||(t={}))Ma.call(t,n)&&Eo(e,n,t[n]);if(So)for(var n of So(t))Na.call(t,n)&&Eo(e,n,t[n]);return e},Fa=(e,t)=>Aa(e,Ia(t));function Nd(e,t){var n;const s=bi();return yu(()=>{s.value=e()},Fa(La({},t),{flush:(n=void 0)!=null?n:"sync"})),us(s)}var xo;const vs=typeof window<"u",$a=e=>typeof e<"u",Ys=e=>typeof e=="function",Da=e=>typeof e=="string",Jt=()=>{},ja=vs&&((xo=window==null?void 0:window.navigator)==null?void 0:xo.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Ct(e){return typeof e=="function"?e():Nt(e)}function Pl(e,t){function n(...s){return new Promise((r,o)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(o)})}return n}function Ha(e,t={}){let n,s,r=Jt;const o=l=>{clearTimeout(l),r(),r=Jt};return l=>{const c=Ct(e),a=Ct(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(s&&(o(s),s=null),Promise.resolve(l())):new Promise((u,f)=>{r=t.rejectOnCancel?f:u,a&&!s&&(s=setTimeout(()=>{n&&o(n),s=null,u(l())},a)),n=setTimeout(()=>{s&&o(s),s=null,u(l())},c)})}}function Va(e,t=!0,n=!0,s=!1){let r=0,o,i=!0,l=Jt,c;const a=()=>{o&&(clearTimeout(o),o=void 0,l(),l=Jt)};return f=>{const h=Ct(e),g=Date.now()-r,v=()=>c=f();return a(),h<=0?(r=Date.now(),v()):(g>h&&(n||!i)?(r=Date.now(),v()):t&&(c=new Promise((S,$)=>{l=s?$:S,o=setTimeout(()=>{r=Date.now(),i=!0,S(v()),a()},Math.max(0,h-g))})),!n&&!o&&(o=setTimeout(()=>i=!0,h)),i=!1,c)}}function ka(e){return e}function Ba(e,t){let n,s,r;const o=ue(!0),i=()=>{o.value=!0,r()};Se(e,i,{flush:"sync"});const l=Ys(t)?t:t.get,c=Ys(t)?void 0:t.set,a=Cc((u,f)=>(s=u,r=f,{get(){return o.value&&(n=l(),o.value=!1),s(),n},set(h){c==null||c(h)}}));return Object.isExtensible(a)&&(a.trigger=i),a}function ys(e){return ir()?(ri(e),!0):!1}function Ka(e,t=200,n={}){return Pl(Ha(t,n),e)}function Ld(e,t=200,n={}){const s=ue(e.value),r=Ka(()=>{s.value=e.value},t,n);return Se(e,()=>r()),s}function Fd(e,t=200,n=!1,s=!0,r=!1){return Pl(Va(t,n,s,r),e)}function Cr(e,t=!0){Dt()?mr(e):t?e():Tn(e)}function $d(e,t,n={}){const{immediate:s=!0}=n,r=ue(!1);let o=null;function i(){o&&(clearTimeout(o),o=null)}function l(){r.value=!1,i()}function c(...a){i(),r.value=!0,o=setTimeout(()=>{r.value=!1,o=null,e(...a)},Ct(t))}return s&&(r.value=!0,vs&&c()),ys(l),{isPending:us(r),start:c,stop:l}}function Ne(e){var t;const n=Ct(e);return(t=n==null?void 0:n.$el)!=null?t:n}const ft=vs?window:void 0,Ua=vs?window.document:void 0;function He(...e){let t,n,s,r;if(Da(e[0])||Array.isArray(e[0])?([n,s,r]=e,t=ft):[t,n,s,r]=e,!t)return Jt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const o=[],i=()=>{o.forEach(u=>u()),o.length=0},l=(u,f,h,g)=>(u.addEventListener(f,h,g),()=>u.removeEventListener(f,h,g)),c=Se(()=>[Ne(t),Ct(r)],([u,f])=>{i(),u&&o.push(...n.flatMap(h=>s.map(g=>l(u,h,g,f))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return ys(a),a}let Co=!1;function Dd(e,t,n={}){const{window:s=ft,ignore:r=[],capture:o=!0,detectIframe:i=!1}=n;if(!s)return;ja&&!Co&&(Co=!0,Array.from(s.document.body.children).forEach(h=>h.addEventListener("click",Jt)));let l=!0;const c=h=>r.some(g=>{if(typeof g=="string")return Array.from(s.document.querySelectorAll(g)).some(v=>v===h.target||h.composedPath().includes(v));{const v=Ne(g);return v&&(h.target===v||h.composedPath().includes(v))}}),u=[He(s,"click",h=>{const g=Ne(e);if(!(!g||g===h.target||h.composedPath().includes(g))){if(h.detail===0&&(l=!c(h)),!l){l=!0;return}t(h)}},{passive:!0,capture:o}),He(s,"pointerdown",h=>{const g=Ne(e);g&&(l=!h.composedPath().includes(g)&&!c(h))},{passive:!0}),i&&He(s,"blur",h=>{var g;const v=Ne(e);((g=s.document.activeElement)==null?void 0:g.tagName)==="IFRAME"&&!(v!=null&&v.contains(s.document.activeElement))&&t(h)})].filter(Boolean);return()=>u.forEach(h=>h())}function jd(e={}){var t;const{window:n=ft}=e,s=(t=e.document)!=null?t:n==null?void 0:n.document,r=Ba(()=>null,()=>s==null?void 0:s.activeElement);return n&&(He(n,"blur",o=>{o.relatedTarget===null&&r.trigger()},!0),He(n,"focus",r.trigger,!0)),r}function Tl(e,t=!1){const n=ue(),s=()=>n.value=!!e();return s(),Cr(s,t),n}function Wa(e){return JSON.parse(JSON.stringify(e))}const Ro=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Oo="__vueuse_ssr_handlers__";Ro[Oo]=Ro[Oo]||{};function Hd(e,t,{window:n=ft,initialValue:s=""}={}){const r=ue(s),o=be(()=>{var i;return Ne(t)||((i=n==null?void 0:n.document)==null?void 0:i.documentElement)});return Se([o,()=>Ct(e)],([i,l])=>{var c;if(i&&n){const a=(c=n.getComputedStyle(i).getPropertyValue(l))==null?void 0:c.trim();r.value=a||s}},{immediate:!0}),Se(r,i=>{var l;(l=o.value)!=null&&l.style&&o.value.style.setProperty(Ct(e),i)}),r}function Vd({document:e=Ua}={}){if(!e)return ue("visible");const t=ue(e.visibilityState);return He(e,"visibilitychange",()=>{t.value=e.visibilityState}),t}var Po=Object.getOwnPropertySymbols,Ga=Object.prototype.hasOwnProperty,qa=Object.prototype.propertyIsEnumerable,za=(e,t)=>{var n={};for(var s in e)Ga.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&Po)for(var s of Po(e))t.indexOf(s)<0&&qa.call(e,s)&&(n[s]=e[s]);return n};function Al(e,t,n={}){const s=n,{window:r=ft}=s,o=za(s,["window"]);let i;const l=Tl(()=>r&&"ResizeObserver"in r),c=()=>{i&&(i.disconnect(),i=void 0)},a=Se(()=>Ne(e),f=>{c(),l.value&&r&&f&&(i=new ResizeObserver(t),i.observe(f,o))},{immediate:!0,flush:"post"}),u=()=>{c(),a()};return ys(u),{isSupported:l,stop:u}}function kd(e,t={}){const{reset:n=!0,windowResize:s=!0,windowScroll:r=!0,immediate:o=!0}=t,i=ue(0),l=ue(0),c=ue(0),a=ue(0),u=ue(0),f=ue(0),h=ue(0),g=ue(0);function v(){const S=Ne(e);if(!S){n&&(i.value=0,l.value=0,c.value=0,a.value=0,u.value=0,f.value=0,h.value=0,g.value=0);return}const $=S.getBoundingClientRect();i.value=$.height,l.value=$.bottom,c.value=$.left,a.value=$.right,u.value=$.top,f.value=$.width,h.value=$.x,g.value=$.y}return Al(e,v),Se(()=>Ne(e),S=>!S&&v()),r&&He("scroll",v,{capture:!0,passive:!0}),s&&He("resize",v,{passive:!0}),Cr(()=>{o&&v()}),{height:i,bottom:l,left:c,right:a,top:u,width:f,x:h,y:g,update:v}}function Bd(e,t={width:0,height:0},n={}){const{window:s=ft,box:r="content-box"}=n,o=be(()=>{var c,a;return(a=(c=Ne(e))==null?void 0:c.namespaceURI)==null?void 0:a.includes("svg")}),i=ue(t.width),l=ue(t.height);return Al(e,([c])=>{const a=r==="border-box"?c.borderBoxSize:r==="content-box"?c.contentBoxSize:c.devicePixelContentBoxSize;if(s&&o.value){const u=Ne(e);if(u){const f=s.getComputedStyle(u);i.value=parseFloat(f.width),l.value=parseFloat(f.height)}}else if(a){const u=Array.isArray(a)?a:[a];i.value=u.reduce((f,{inlineSize:h})=>f+h,0),l.value=u.reduce((f,{blockSize:h})=>f+h,0)}else i.value=c.contentRect.width,l.value=c.contentRect.height},n),Se(()=>Ne(e),c=>{i.value=c?t.width:0,l.value=c?t.height:0}),{width:i,height:l}}var To=Object.getOwnPropertySymbols,Qa=Object.prototype.hasOwnProperty,Ja=Object.prototype.propertyIsEnumerable,Ya=(e,t)=>{var n={};for(var s in e)Qa.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(e!=null&&To)for(var s of To(e))t.indexOf(s)<0&&Ja.call(e,s)&&(n[s]=e[s]);return n};function Kd(e,t,n={}){const s=n,{window:r=ft}=s,o=Ya(s,["window"]);let i;const l=Tl(()=>r&&"MutationObserver"in r),c=()=>{i&&(i.disconnect(),i=void 0)},a=Se(()=>Ne(e),f=>{c(),l.value&&r&&f&&(i=new MutationObserver(t),i.observe(f,o))},{immediate:!0}),u=()=>{c(),a()};return ys(u),{isSupported:l,stop:u}}var Ao;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(Ao||(Ao={}));var Xa=Object.defineProperty,Io=Object.getOwnPropertySymbols,Za=Object.prototype.hasOwnProperty,ef=Object.prototype.propertyIsEnumerable,Mo=(e,t,n)=>t in e?Xa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,tf=(e,t)=>{for(var n in t||(t={}))Za.call(t,n)&&Mo(e,n,t[n]);if(Io)for(var n of Io(t))ef.call(t,n)&&Mo(e,n,t[n]);return e};const nf={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};tf({linear:ka},nf);function Ud(e,t,n,s={}){var r,o,i;const{clone:l=!1,passive:c=!1,eventName:a,deep:u=!1,defaultValue:f}=s,h=Dt(),g=n||(h==null?void 0:h.emit)||((r=h==null?void 0:h.$emit)==null?void 0:r.bind(h))||((i=(o=h==null?void 0:h.proxy)==null?void 0:o.$emit)==null?void 0:i.bind(h==null?void 0:h.proxy));let v=a;t||(t="modelValue"),v=a||v||`update:${t.toString()}`;const S=A=>l?Ys(l)?l(A):Wa(A):A,$=()=>$a(e[t])?S(e[t]):f;if(c){const A=$(),I=ue(A);return Se(()=>e[t],F=>I.value=S(F)),Se(I,F=>{(F!==e[t]||u)&&g(v,F)},{deep:u}),I}else return be({get(){return $()},set(A){g(v,A)}})}function Wd({window:e=ft}={}){if(!e)return ue(!1);const t=ue(e.document.hasFocus());return He(e,"blur",()=>{t.value=!1}),He(e,"focus",()=>{t.value=!0}),t}function Gd(e={}){const{window:t=ft,initialWidth:n=1/0,initialHeight:s=1/0,listenOrientation:r=!0,includeScrollbar:o=!0}=e,i=ue(n),l=ue(s),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};return c(),Cr(c),He("resize",c,{passive:!0}),r&&He("orientationchange",c,{passive:!0}),{width:i,height:l}}/*! + * vue-router v4.5.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const Kt=typeof document<"u";function Il(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function sf(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Il(e.default)}const ee=Object.assign;function Ms(e,t){const n={};for(const s in t){const r=t[s];n[s]=We(r)?r.map(e):e(r)}return n}const gn=()=>{},We=Array.isArray,Ml=/#/g,rf=/&/g,of=/\//g,lf=/=/g,cf=/\?/g,Nl=/\+/g,uf=/%5B/g,af=/%5D/g,Ll=/%5E/g,ff=/%60/g,Fl=/%7B/g,df=/%7C/g,$l=/%7D/g,hf=/%20/g;function Rr(e){return encodeURI(""+e).replace(df,"|").replace(uf,"[").replace(af,"]")}function pf(e){return Rr(e).replace(Fl,"{").replace($l,"}").replace(Ll,"^")}function Xs(e){return Rr(e).replace(Nl,"%2B").replace(hf,"+").replace(Ml,"%23").replace(rf,"%26").replace(ff,"`").replace(Fl,"{").replace($l,"}").replace(Ll,"^")}function gf(e){return Xs(e).replace(lf,"%3D")}function mf(e){return Rr(e).replace(Ml,"%23").replace(cf,"%3F")}function vf(e){return e==null?"":mf(e).replace(of,"%2F")}function xn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const yf=/\/$/,_f=e=>e.replace(yf,"");function Ns(e,t,n="/"){let s,r={},o="",i="";const l=t.indexOf("#");let c=t.indexOf("?");return l=0&&(c=-1),c>-1&&(s=t.slice(0,c),o=t.slice(c+1,l>-1?l:t.length),r=e(o)),l>-1&&(s=s||t.slice(0,l),i=t.slice(l,t.length)),s=Ef(s??t,n),{fullPath:s+(o&&"?")+o+i,path:s,query:r,hash:xn(i)}}function bf(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function No(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function wf(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Yt(t.matched[s],n.matched[r])&&Dl(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Yt(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function Dl(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Sf(e[n],t[n]))return!1;return!0}function Sf(e,t){return We(e)?Lo(e,t):We(t)?Lo(t,e):e===t}function Lo(e,t){return We(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function Ef(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,i,l;for(i=0;i1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(i).join("/")}const pt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var Cn;(function(e){e.pop="pop",e.push="push"})(Cn||(Cn={}));var mn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(mn||(mn={}));function xf(e){if(!e)if(Kt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),_f(e)}const Cf=/^[^#]+#/;function Rf(e,t){return e.replace(Cf,"#")+t}function Of(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const _s=()=>({left:window.scrollX,top:window.scrollY});function Pf(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=Of(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Fo(e,t){return(history.state?history.state.position-t:-1)+e}const Zs=new Map;function Tf(e,t){Zs.set(e,t)}function Af(e){const t=Zs.get(e);return Zs.delete(e),t}let If=()=>location.protocol+"//"+location.host;function jl(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let l=r.includes(e.slice(o))?e.slice(o).length:1,c=r.slice(l);return c[0]!=="/"&&(c="/"+c),No(c,"")}return No(n,e)+s+r}function Mf(e,t,n,s){let r=[],o=[],i=null;const l=({state:h})=>{const g=jl(e,location),v=n.value,S=t.value;let $=0;if(h){if(n.value=g,t.value=h,i&&i===v){i=null;return}$=S?h.position-S.position:0}else s(g);r.forEach(A=>{A(n.value,v,{delta:$,type:Cn.pop,direction:$?$>0?mn.forward:mn.back:mn.unknown})})};function c(){i=n.value}function a(h){r.push(h);const g=()=>{const v=r.indexOf(h);v>-1&&r.splice(v,1)};return o.push(g),g}function u(){const{history:h}=window;h.state&&h.replaceState(ee({},h.state,{scroll:_s()}),"")}function f(){for(const h of o)h();o=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:c,listen:a,destroy:f}}function $o(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?_s():null}}function Nf(e){const{history:t,location:n}=window,s={value:jl(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,a,u){const f=e.indexOf("#"),h=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+c:If()+e+c;try{t[u?"replaceState":"pushState"](a,"",h),r.value=a}catch(g){console.error(g),n[u?"replace":"assign"](h)}}function i(c,a){const u=ee({},t.state,$o(r.value.back,c,r.value.forward,!0),a,{position:r.value.position});o(c,u,!0),s.value=c}function l(c,a){const u=ee({},r.value,t.state,{forward:c,scroll:_s()});o(u.current,u,!0);const f=ee({},$o(s.value,c,null),{position:u.position+1},a);o(c,f,!1),s.value=c}return{location:s,state:r,push:l,replace:i}}function qd(e){e=xf(e);const t=Nf(e),n=Mf(e,t.state,t.location,t.replace);function s(o,i=!0){i||n.pauseListeners(),history.go(o)}const r=ee({location:"",base:e,go:s,createHref:Rf.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function Lf(e){return typeof e=="string"||e&&typeof e=="object"}function Hl(e){return typeof e=="string"||typeof e=="symbol"}const Vl=Symbol("");var Do;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Do||(Do={}));function Xt(e,t){return ee(new Error,{type:e,[Vl]:!0},t)}function nt(e,t){return e instanceof Error&&Vl in e&&(t==null||!!(e.type&t))}const jo="[^/]+?",Ff={sensitive:!1,strict:!1,start:!0,end:!0},$f=/[.+*?^${}()[\]/\\]/g;function Df(e,t){const n=ee({},Ff,t),s=[];let r=n.start?"^":"";const o=[];for(const a of e){const u=a.length?[]:[90];n.strict&&!a.length&&(r+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function kl(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Hf={type:0,value:""},Vf=/[a-zA-Z0-9_]/;function kf(e){if(!e)return[[]];if(e==="/")return[[Hf]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${a}": ${g}`)}let n=0,s=n;const r=[];let o;function i(){o&&r.push(o),o=[]}let l=0,c,a="",u="";function f(){a&&(n===0?o.push({type:0,value:a}):n===1||n===2||n===3?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${a}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:a,regexp:u,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),a="")}function h(){a+=c}for(;l{i(F)}:gn}function i(f){if(Hl(f)){const h=s.get(f);h&&(s.delete(f),n.splice(n.indexOf(h),1),h.children.forEach(i),h.alias.forEach(i))}else{const h=n.indexOf(f);h>-1&&(n.splice(h,1),f.record.name&&s.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function l(){return n}function c(f){const h=Gf(f,n);n.splice(h,0,f),f.record.name&&!Bo(f)&&s.set(f.record.name,f)}function a(f,h){let g,v={},S,$;if("name"in f&&f.name){if(g=s.get(f.name),!g)throw Xt(1,{location:f});$=g.record.name,v=ee(Vo(h.params,g.keys.filter(F=>!F.optional).concat(g.parent?g.parent.keys.filter(F=>F.optional):[]).map(F=>F.name)),f.params&&Vo(f.params,g.keys.map(F=>F.name))),S=g.stringify(v)}else if(f.path!=null)S=f.path,g=n.find(F=>F.re.test(S)),g&&(v=g.parse(S),$=g.record.name);else{if(g=h.name?s.get(h.name):n.find(F=>F.re.test(h.path)),!g)throw Xt(1,{location:f,currentLocation:h});$=g.record.name,v=ee({},h.params,f.params),S=g.stringify(v)}const A=[];let I=g;for(;I;)A.unshift(I.record),I=I.parent;return{name:$,path:S,params:v,matched:A,meta:Wf(A)}}e.forEach(f=>o(f));function u(){n.length=0,s.clear()}return{addRoute:o,resolve:a,removeRoute:i,clearRoutes:u,getRoutes:l,getRecordMatcher:r}}function Vo(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function ko(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Uf(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Uf(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Bo(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Wf(e){return e.reduce((t,n)=>ee(t,n.meta),{})}function Ko(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function Gf(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;kl(e,t[o])<0?s=o:n=o+1}const r=qf(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function qf(e){let t=e;for(;t=t.parent;)if(Bl(t)&&kl(e,t)===0)return t}function Bl({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function zf(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ro&&Xs(o)):[s&&Xs(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function Qf(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=We(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Jf=Symbol(""),Wo=Symbol(""),bs=Symbol(""),Or=Symbol(""),er=Symbol("");function rn(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function bt(e,t,n,s,r,o=i=>i()){const i=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((l,c)=>{const a=h=>{h===!1?c(Xt(4,{from:n,to:t})):h instanceof Error?c(h):Lf(h)?c(Xt(2,{from:t,to:h})):(i&&s.enterCallbacks[r]===i&&typeof h=="function"&&i.push(h),l())},u=o(()=>e.call(s&&s.instances[r],t,n,a));let f=Promise.resolve(u);e.length<3&&(f=f.then(a)),f.catch(h=>c(h))})}function Ls(e,t,n,s,r=o=>o()){const o=[];for(const i of e)for(const l in i.components){let c=i.components[l];if(!(t!=="beforeRouteEnter"&&!i.instances[l]))if(Il(c)){const u=(c.__vccOpts||c)[t];u&&o.push(bt(u,n,s,i,l,r))}else{let a=c();o.push(()=>a.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${l}" at "${i.path}"`);const f=sf(u)?u.default:u;i.mods[l]=u,i.components[l]=f;const g=(f.__vccOpts||f)[t];return g&&bt(g,n,s,i,l,r)()}))}}return o}function Go(e){const t=De(bs),n=De(Or),s=be(()=>{const c=Nt(e.to);return t.resolve(c)}),r=be(()=>{const{matched:c}=s.value,{length:a}=c,u=c[a-1],f=n.matched;if(!u||!f.length)return-1;const h=f.findIndex(Yt.bind(null,u));if(h>-1)return h;const g=qo(c[a-2]);return a>1&&qo(u)===g&&f[f.length-1].path!==g?f.findIndex(Yt.bind(null,c[a-2])):h}),o=be(()=>r.value>-1&&td(n.params,s.value.params)),i=be(()=>r.value>-1&&r.value===n.matched.length-1&&Dl(n.params,s.value.params));function l(c={}){if(ed(c)){const a=t[Nt(e.replace)?"replace":"push"](Nt(e.to)).catch(gn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>a),a}return Promise.resolve()}return{route:s,href:be(()=>s.value.href),isActive:o,isExactActive:i,navigate:l}}function Yf(e){return e.length===1?e[0]:e}const Xf=ji({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Go,setup(e,{slots:t}){const n=On(Go(e)),{options:s}=De(bs),r=be(()=>({[zo(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[zo(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Yf(t.default(n));return e.custom?o:xr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Zf=Xf;function ed(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function td(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!We(r)||r.length!==s.length||s.some((o,i)=>o!==r[i]))return!1}return!0}function qo(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const zo=(e,t,n)=>e??t??n,nd=ji({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=De(er),r=be(()=>e.route||s.value),o=De(Wo,0),i=be(()=>{let a=Nt(o);const{matched:u}=r.value;let f;for(;(f=u[a])&&!f.components;)a++;return a}),l=be(()=>r.value.matched[i.value]);kn(Wo,be(()=>i.value+1)),kn(Jf,l),kn(er,r);const c=ue();return Se(()=>[c.value,l.value,e.name],([a,u,f],[h,g,v])=>{u&&(u.instances[f]=a,g&&g!==u&&a&&a===h&&(u.leaveGuards.size||(u.leaveGuards=g.leaveGuards),u.updateGuards.size||(u.updateGuards=g.updateGuards))),a&&u&&(!g||!Yt(u,g)||!h)&&(u.enterCallbacks[f]||[]).forEach(S=>S(a))},{flush:"post"}),()=>{const a=r.value,u=e.name,f=l.value,h=f&&f.components[u];if(!h)return Qo(n.default,{Component:h,route:a});const g=f.props[u],v=g?g===!0?a.params:typeof g=="function"?g(a):g:null,$=xr(h,ee({},v,t,{onVnodeUnmounted:A=>{A.component.isUnmounted&&(f.instances[u]=null)},ref:c}));return Qo(n.default,{Component:$,route:a})||$}}});function Qo(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const sd=nd;function zd(e){const t=Kf(e.routes,e),n=e.parseQuery||zf,s=e.stringifyQuery||Uo,r=e.history,o=rn(),i=rn(),l=rn(),c=bi(pt);let a=pt;Kt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=Ms.bind(null,_=>""+_),f=Ms.bind(null,vf),h=Ms.bind(null,xn);function g(_,L){let P,D;return Hl(_)?(P=t.getRecordMatcher(_),D=L):D=_,t.addRoute(D,P)}function v(_){const L=t.getRecordMatcher(_);L&&t.removeRoute(L)}function S(){return t.getRoutes().map(_=>_.record)}function $(_){return!!t.getRecordMatcher(_)}function A(_,L){if(L=ee({},L||c.value),typeof _=="string"){const m=Ns(n,_,L.path),y=t.resolve({path:m.path},L),w=r.createHref(m.fullPath);return ee(m,y,{params:h(y.params),hash:xn(m.hash),redirectedFrom:void 0,href:w})}let P;if(_.path!=null)P=ee({},_,{path:Ns(n,_.path,L.path).path});else{const m=ee({},_.params);for(const y in m)m[y]==null&&delete m[y];P=ee({},_,{params:f(m)}),L.params=f(L.params)}const D=t.resolve(P,L),oe=_.hash||"";D.params=u(h(D.params));const d=bf(s,ee({},_,{hash:pf(oe),path:D.path})),p=r.createHref(d);return ee({fullPath:d,hash:oe,query:s===Uo?Qf(_.query):_.query||{}},D,{redirectedFrom:void 0,href:p})}function I(_){return typeof _=="string"?Ns(n,_,c.value.path):ee({},_)}function F(_,L){if(a!==_)return Xt(8,{from:L,to:_})}function N(_){return q(_)}function k(_){return N(ee(I(_),{replace:!0}))}function z(_){const L=_.matched[_.matched.length-1];if(L&&L.redirect){const{redirect:P}=L;let D=typeof P=="function"?P(_):P;return typeof D=="string"&&(D=D.includes("?")||D.includes("#")?D=I(D):{path:D},D.params={}),ee({query:_.query,hash:_.hash,params:D.path!=null?{}:_.params},D)}}function q(_,L){const P=a=A(_),D=c.value,oe=_.state,d=_.force,p=_.replace===!0,m=z(P);if(m)return q(ee(I(m),{state:typeof m=="object"?ee({},oe,m.state):oe,force:d,replace:p}),L||P);const y=P;y.redirectedFrom=L;let w;return!d&&wf(s,D,P)&&(w=Xt(16,{to:y,from:D}),Ge(D,D,!0,!1)),(w?Promise.resolve(w):K(y,D)).catch(b=>nt(b)?nt(b,2)?b:dt(b):Z(b,y,D)).then(b=>{if(b){if(nt(b,2))return q(ee({replace:p},I(b.to),{state:typeof b.to=="object"?ee({},oe,b.to.state):oe,force:d}),L||y)}else b=M(y,D,!0,p,oe);return Q(y,D,b),b})}function B(_,L){const P=F(_,L);return P?Promise.reject(P):Promise.resolve()}function x(_){const L=Ht.values().next().value;return L&&typeof L.runWithContext=="function"?L.runWithContext(_):_()}function K(_,L){let P;const[D,oe,d]=rd(_,L);P=Ls(D.reverse(),"beforeRouteLeave",_,L);for(const m of D)m.leaveGuards.forEach(y=>{P.push(bt(y,_,L))});const p=B.bind(null,_,L);return P.push(p),Le(P).then(()=>{P=[];for(const m of o.list())P.push(bt(m,_,L));return P.push(p),Le(P)}).then(()=>{P=Ls(oe,"beforeRouteUpdate",_,L);for(const m of oe)m.updateGuards.forEach(y=>{P.push(bt(y,_,L))});return P.push(p),Le(P)}).then(()=>{P=[];for(const m of d)if(m.beforeEnter)if(We(m.beforeEnter))for(const y of m.beforeEnter)P.push(bt(y,_,L));else P.push(bt(m.beforeEnter,_,L));return P.push(p),Le(P)}).then(()=>(_.matched.forEach(m=>m.enterCallbacks={}),P=Ls(d,"beforeRouteEnter",_,L,x),P.push(p),Le(P))).then(()=>{P=[];for(const m of i.list())P.push(bt(m,_,L));return P.push(p),Le(P)}).catch(m=>nt(m,8)?m:Promise.reject(m))}function Q(_,L,P){l.list().forEach(D=>x(()=>D(_,L,P)))}function M(_,L,P,D,oe){const d=F(_,L);if(d)return d;const p=L===pt,m=Kt?history.state:{};P&&(D||p?r.replace(_.fullPath,ee({scroll:p&&m&&m.scroll},oe)):r.push(_.fullPath,oe)),c.value=_,Ge(_,L,P,p),dt()}let Y;function de(){Y||(Y=r.listen((_,L,P)=>{if(!In.listening)return;const D=A(_),oe=z(D);if(oe){q(ee(oe,{replace:!0,force:!0}),D).catch(gn);return}a=D;const d=c.value;Kt&&Tf(Fo(d.fullPath,P.delta),_s()),K(D,d).catch(p=>nt(p,12)?p:nt(p,2)?(q(ee(I(p.to),{force:!0}),D).then(m=>{nt(m,20)&&!P.delta&&P.type===Cn.pop&&r.go(-1,!1)}).catch(gn),Promise.reject()):(P.delta&&r.go(-P.delta,!1),Z(p,D,d))).then(p=>{p=p||M(D,d,!1),p&&(P.delta&&!nt(p,8)?r.go(-P.delta,!1):P.type===Cn.pop&&nt(p,20)&&r.go(-1,!1)),Q(D,d,p)}).catch(gn)}))}let Ee=rn(),re=rn(),G;function Z(_,L,P){dt(_);const D=re.list();return D.length?D.forEach(oe=>oe(_,L,P)):console.error(_),Promise.reject(_)}function et(){return G&&c.value!==pt?Promise.resolve():new Promise((_,L)=>{Ee.add([_,L])})}function dt(_){return G||(G=!_,de(),Ee.list().forEach(([L,P])=>_?P(_):L()),Ee.reset()),_}function Ge(_,L,P,D){const{scrollBehavior:oe}=e;if(!Kt||!oe)return Promise.resolve();const d=!P&&Af(Fo(_.fullPath,0))||(D||!P)&&history.state&&history.state.scroll||null;return Tn().then(()=>oe(_,L,d)).then(p=>p&&Pf(p)).catch(p=>Z(p,_,L))}const Oe=_=>r.go(_);let jt;const Ht=new Set,In={currentRoute:c,listening:!0,addRoute:g,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:$,getRoutes:S,resolve:A,options:e,push:N,replace:k,go:Oe,back:()=>Oe(-1),forward:()=>Oe(1),beforeEach:o.add,beforeResolve:i.add,afterEach:l.add,onError:re.add,isReady:et,install(_){const L=this;_.component("RouterLink",Zf),_.component("RouterView",sd),_.config.globalProperties.$router=L,Object.defineProperty(_.config.globalProperties,"$route",{enumerable:!0,get:()=>Nt(c)}),Kt&&!jt&&c.value===pt&&(jt=!0,N(r.location).catch(oe=>{}));const P={};for(const oe in pt)Object.defineProperty(P,oe,{get:()=>c.value[oe],enumerable:!0});_.provide(bs,L),_.provide(Or,_i(P)),_.provide(er,c);const D=_.unmount;Ht.add(_),_.unmount=function(){Ht.delete(_),Ht.size<1&&(a=pt,Y&&Y(),Y=null,c.value=pt,jt=!1,G=!1),D()}}};function Le(_){return _.reduce((L,P)=>L.then(()=>x(P)),Promise.resolve())}return In}function rd(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let i=0;iYt(a,l))?s.push(l):n.push(l));const c=e.matched[i];c&&(t.matched.find(a=>Yt(a,c))||r.push(c))}return[n,s,r]}function Qd(){return De(bs)}function Jd(e){return De(Or)}export{kc as $,pd as A,os as B,is as C,Tn as D,Iu as E,ys as F,md as G,Tc as H,Ws as I,Dc as J,ld as K,bd as L,ad as M,ke as N,Au as O,nc as P,Ae as Q,we as R,Ed as S,Sd as T,Nd as U,Ki as V,vd as W,Al as X,Rd as Y,Bi as Z,On as _,j as a,ki as a0,Et as a1,ps as a2,ye as a3,Ne as a4,cd as a5,Uc as a6,Dd as a7,us as a8,Bc as a9,ss as aA,ja as aB,Xo as aC,fd as aD,jn as aE,Kd as aF,Pd as aG,Vd as aH,Wd as aI,Ud as aJ,jd as aK,Bd as aL,Td as aM,Rt as aN,_i as aO,zd as aP,qd as aQ,Id as aR,Ad as aS,Qd as aT,Jd as aU,Md as aV,ma as aW,_d as aX,Cd as aY,Od as aa,hd as ab,dd as ac,Fd as ad,Ir as ae,od as af,Tu as ag,Sn as ah,xr as ai,id as aj,J as ak,pa as al,Rc as am,ga as an,Wc as ao,Jo as ap,mo as aq,Hd as ar,gd as as,ri as at,$d as au,ud as av,Ld as aw,xd as ax,hr as ay,si as az,se as b,be as c,ae as d,vs as e,fe as f,Dt as g,te as h,De as i,W as j,Ve as k,ji as l,Gd as m,kd as n,Se as o,kn as p,mr as q,ue as r,bi as s,He as t,Nt as u,yu as v,wd as w,yd as x,Us as y,al as z}; diff --git a/web/admin-spa/dist/index.html b/web/admin-spa/dist/index.html deleted file mode 100644 index 01fc03b2..00000000 --- a/web/admin-spa/dist/index.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - Claude Relay Service - 管理后台 - - - - - - - - - - - - - - - - - - - - - - - -
- - - \ No newline at end of file