diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..94ccb71c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "bizyair_frontend"] + path = bizyair_frontend + url = https://github.com/siliconflow/bizyair_frontend.git diff --git a/bizyair_frontend b/bizyair_frontend new file mode 160000 index 00000000..83459603 --- /dev/null +++ b/bizyair_frontend @@ -0,0 +1 @@ +Subproject commit 83459603843597dbacf7ea41bb8a9c304d00e196 diff --git a/docs/docs/bznews.json b/docs/docs/bznews.json index 9ae9b0b2..9e67e97c 100644 --- a/docs/docs/bznews.json +++ b/docs/docs/bznews.json @@ -1,4 +1,5 @@ { + "12/05 更新自定义模型上传和分享方式,原有上传方法不再支持,请尽快升级 BizyAir": "#", "09/19 更新模型上传功能,显示上传进度条,上传模型大小不受 ComfyUI 限制": "https://siliconflow.github.io/BizyAir/model-host/introduce.html", "09/06 发布 v0.2.0,支持使用自定义 LoRA,欢迎升级使用": "https://siliconflow.github.io/BizyAir/model-host/introduce.html" } diff --git a/js/apis.js b/js/apis.js index d147c5ca..af3ea156 100644 --- a/js/apis.js +++ b/js/apis.js @@ -11,7 +11,7 @@ function customFetch(url, options = {}) { } } fetchCache.set(url, now); - const host = `${window.location.origin}${window.location.pathname == '/' ? '' : window.location.pathname}` + const host = `${window.location.origin}${window.location.pathname === '/' ? '' : window.location.pathname}` return window.fetch(`${host}${url}`, options) .then(response => { if (response.status === 404) { @@ -79,8 +79,15 @@ export function set_api_key ( data ) { }) } -export function models_files ( data ) { - return customFetch(`/bizyair/modelhost/models/files?type=${data.type}&public=${data.public}`, {method: 'GET'}) +export function models_files ( params, data ) { + let actualParams = '' + for (const i in params) { + actualParams += `${i}=${params[i]}&` + } + return customFetch(`/bizyair/community/models/query?${actualParams}`, { + method: 'POST', + body: JSON.stringify(data) + }) } export function change_public ( data ) { @@ -88,7 +95,7 @@ export function change_public ( data ) { } export function model_types () { - return customFetch('/bizyair/modelhost/model_types', {method: 'GET'}) + return customFetch('/bizyair/community/model_types', {method: 'GET'}) } export function check_folder (url) { @@ -96,7 +103,7 @@ export function check_folder (url) { } export function submit_upload (data) { - return customFetch(`/bizyair/modelhost/submit_upload?clientId=${sessionStorage.getItem('clientId')}`, { + return customFetch(`/bizyair/community/submit_upload?clientId=${sessionStorage.getItem('clientId')}`, { method: 'POST', body: JSON.stringify(data) }) @@ -135,3 +142,12 @@ export function putDescription (data) { body: JSON.stringify(data) }) } + +export function uploadImage (file) { + const formData = new FormData(); + formData.append('file', file); + return customFetch('/bizyair/community/files/upload', { + method: 'POST', + body: formData + }) +} diff --git a/js/bizyair_frontend.js b/js/bizyair_frontend.js new file mode 100644 index 00000000..cff7f9b4 --- /dev/null +++ b/js/bizyair_frontend.js @@ -0,0 +1,653 @@ +(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(`.shadcn-root *,.shadcn-root :before,.shadcn-root :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-scroll-snap-strictness: proximity;--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}.shadcn-root ::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-scroll-snap-strictness: proximity;--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}.shadcn-root *,.shadcn-root :before,.shadcn-root :after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}.shadcn-root :before,.shadcn-root :after{--tw-content: ""}.shadcn-root html,.shadcn-root :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}.shadcn-root body{margin:0;line-height:inherit}.shadcn-root hr{height:0;color:inherit;border-top-width:1px}.shadcn-root abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.shadcn-root h1,.shadcn-root h2,.shadcn-root h3,.shadcn-root h4,.shadcn-root h5,.shadcn-root h6{font-size:inherit;font-weight:inherit}.shadcn-root a{color:inherit;text-decoration:inherit}.shadcn-root b,.shadcn-root strong{font-weight:bolder}.shadcn-root code,.shadcn-root kbd,.shadcn-root samp,.shadcn-root 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}.shadcn-root small{font-size:80%}.shadcn-root sub,.shadcn-root sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.shadcn-root sub{bottom:-.25em}.shadcn-root sup{top:-.5em}.shadcn-root table{text-indent:0;border-color:inherit;border-collapse:collapse}.shadcn-root button,.shadcn-root input,.shadcn-root optgroup,.shadcn-root select,.shadcn-root 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}.shadcn-root button[role=switch]{margin:0;padding:0}.shadcn-root button,.shadcn-root input:where([type=button]),.shadcn-root input:where([type=reset]),.shadcn-root input:where([type=submit]){-webkit-appearance:button;background-image:none}h3.shadcn-root button{background-color:transparent}.shadcn-root :-moz-focusring{outline:auto}.shadcn-root :-moz-ui-invalid{box-shadow:none}.shadcn-root progress{vertical-align:baseline}.shadcn-root ::-webkit-inner-spin-button,.shadcn-root ::-webkit-outer-spin-button{height:auto}.shadcn-root [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.shadcn-root ::-webkit-search-decoration{-webkit-appearance:none}.shadcn-root ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.shadcn-root summary{display:list-item}.shadcn-root blockquote,.shadcn-root dl,.shadcn-root dd,.shadcn-root h1,.shadcn-root h2,.shadcn-root h3,.shadcn-root h4,.shadcn-root h5,.shadcn-root h6,.shadcn-root hr,.shadcn-root figure,.shadcn-root p,.shadcn-root pre{margin:0}.shadcn-root fieldset{margin:0;padding:0}.shadcn-root legend{padding:0}.shadcn-root ol,.shadcn-root ul,.shadcn-root menu{list-style:none;margin:0;padding:0}.shadcn-root dialog{padding:0}.shadcn-root textarea{resize:vertical}.shadcn-root input::-moz-placeholder,.shadcn-root textarea::-moz-placeholder{opacity:1;color:#9ca3af}.shadcn-root input::placeholder,.shadcn-root textarea::placeholder{opacity:1;color:#9ca3af}.shadcn-root button,.shadcn-root [role=button]{cursor:pointer}.shadcn-root :disabled{cursor:default}.shadcn-root img,.shadcn-root svg,.shadcn-root video,.shadcn-root canvas,.shadcn-root audio,.shadcn-root iframe,.shadcn-root embed,.shadcn-root object{display:block;vertical-align:middle}.shadcn-root img,.shadcn-root video{max-width:100%;height:auto}.shadcn-root [hidden]:where(:not([hidden=until-found])){display:none}.shadcn-root :root{--background: 224 71% 4%;--foreground: 213 31% 91%;--muted: 223 47% 11%;--muted-foreground: 215.4 16.3% 56.9%;--accent: 216 34% 17%;--accent-foreground: 210 40% 98%;--popover: 224 71% 4%;--popover-foreground: 215 20.2% 65.1%;--border: 224 71% 4%;--input: 216 34% 17%;--card: 224 71% 4%;--card-foreground: 213 31% 91%;--primary: 262.1 83.3% 57.8%;--primary-foreground: 210 20% 98%;--secondary: 222.2 47.4% 11.2%;--secondary-foreground: 210 40% 98%;--destructive: 0 63% 31%;--destructive-foreground: 210 40% 98%;--ring: 216 34% 17%;--radius: .5rem}.shadcn-root *{border-color:hsl(var(--border))}*,: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: }:root{--background: 224 71% 4%;--foreground: 213 31% 91%;--muted: 223 47% 11%;--muted-foreground: 215.4 16.3% 56.9%;--accent: 216 34% 17%;--accent-foreground: 210 40% 98%;--popover: 224 71% 4%;--popover-foreground: 215 20.2% 65.1%;--border: 224 71% 4%;--input: 216 34% 17%;--card: 224 71% 4%;--card-foreground: 213 31% 91%;--primary: 262.1 83.3% 57.8%;--primary-foreground: 210 20% 98%;--secondary: 222.2 47.4% 11.2%;--secondary-foreground: 210 40% 98%;--destructive: 0 63% 31%;--destructive-foreground: 210 40% 98%;--ring: 216 34% 17%;--radius: .5rem}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media (min-width: 1400px){.container{max-width:1400px}}.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}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:.25rem}.left-1\\/2{left:50%}.left-2{left:.5rem}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.start-0{inset-inline-start:0px}.top-0{top:0}.top-1\\/2{top:50%}.top-2{top:.5rem}.top-3{top:.75rem}.top-4{top:1rem}.z-12000{z-index:12000}.z-15000{z-index:15000}.z-50{z-index:50}.z-8000{z-index:8000}.z-9000{z-index:9000}.z-\\[100\\]{z-index:100}.z-\\[5100\\]{z-index:5100}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-mt-4{margin-top:-1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-3{margin-top:.75rem}.mt-3\\.5{margin-top:.875rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.box-border{box-sizing:border-box}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\\.5{height:.625rem}.h-28{height:7rem}.h-3{height:.75rem}.h-3\\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\\[--radix-select-trigger-height\\]{height:var(--radix-select-trigger-height)}.h-\\[100vh\\]{height:100vh}.h-\\[400px\\]{height:400px}.h-\\[44px\\]{height:44px}.h-\\[80vh\\]{height:80vh}.h-\\[97px\\]{height:97px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-96{max-height:24rem}.max-h-\\[100vh-120px\\]{max-height:100vh-120px}.max-h-\\[300px\\]{max-height:300px}.max-h-\\[78vh\\]{max-height:78vh}.max-h-\\[80vh\\]{max-height:80vh}.max-h-screen{max-height:100vh}.min-h-14{min-height:3.5rem}.min-h-20{min-height:5rem}.min-h-\\[650px\\]{min-height:650px}.min-h-\\[80vh\\]{min-height:80vh}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-3{width:.75rem}.w-3\\.5{width:.875rem}.w-3\\/4{width:75%}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\\[100px\\]{width:100px}.w-\\[100vw\\]{width:100vw}.w-\\[124px\\]{width:124px}.w-\\[15\\%\\]{width:15%}.w-\\[150px\\]{width:150px}.w-\\[170px\\]{width:170px}.w-\\[200px\\]{width:200px}.w-\\[40\\%\\]{width:40%}.w-\\[44px\\]{width:44px}.w-\\[55\\%\\]{width:55%}.w-\\[65\\%\\]{width:65%}.w-auto{width:auto}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-32{min-width:8rem}.min-w-48{min-width:12rem}.min-w-\\[--radix-select-trigger-width\\]{min-width:var(--radix-select-trigger-width)}.min-w-\\[1000px\\]{min-width:1000px}.min-w-\\[200px\\]{min-width:200px}.min-w-\\[40px\\]{min-width:40px}.min-w-\\[560px\\]{min-width:560px}.min-w-\\[620px\\]{min-width:620px}.max-w-\\[200px\\]{max-width:200px}.max-w-\\[500px\\]{max-width:500px}.max-w-\\[600px\\]{max-width:600px}.max-w-\\[680px\\]{max-width:680px}.max-w-\\[70\\%\\]{max-width:70%}.max-w-\\[900px\\]{max-width:900px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.-translate-x-1\\/2{--tw-translate-x: -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-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))}.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))}.animate-\\[pulse_1\\.2s_ease-in-out_0\\.2s_infinite\\]{animation:pulse 1.2s ease-in-out .2s infinite}.animate-\\[pulse_1\\.2s_ease-in-out_0\\.4s_infinite\\]{animation:pulse 1.2s ease-in-out .4s infinite}.animate-\\[pulse_1\\.2s_ease-in-out_0\\.6s_infinite\\]{animation:pulse 1.2s ease-in-out .6s infinite}.animate-\\[pulse_1\\.2s_ease-in-out_0\\.8s_infinite\\]{animation:pulse 1.2s ease-in-out .8s infinite}@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-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\\[10px\\]{gap:10px}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-y-1\\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.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-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)))}.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))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded-\\[6px\\]{border-radius:6px}.rounded-\\[9999px\\]{border-radius:9999px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-t-\\[10px\\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-tl-lg{border-top-left-radius:var(--radius)}.rounded-tr-lg{border-top-right-radius:var(--radius)}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t,.border-t-\\[1px\\]{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-\\[\\#4e4e4e\\]{--tw-border-opacity: 1;border-color:rgb(78 78 78 / var(--tw-border-opacity))}.border-\\[\\#6b7280\\]{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-\\[\\#9CA3AF\\]{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.border-\\[\\#F9FAFB\\]\\/60{border-color:#f9fafb99}.border-\\[hsl\\(var\\(--primary\\)\\)\\]{border-color:hsl(var(--primary))}.border-\\[rgba\\(78\\,78\\,78\\,0\\.50\\)\\]{border-color:#4e4e4e80}.border-border{border-color:hsl(var(--border))}.border-destructive{border-color:hsl(var(--destructive))}.border-green-500\\/30{border-color:#22c55e4d}.border-input{border-color:hsl(var(--input))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.border-red-500\\/30{border-color:#ef44444d}.border-transparent{border-color:transparent}.border-yellow-500\\/30{border-color:#eab3084d}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.\\!bg-\\[\\#6D28D9\\]{--tw-bg-opacity: 1 !important;background-color:rgb(109 40 217 / var(--tw-bg-opacity))!important}.bg-\\[\\#222\\]{--tw-bg-opacity: 1;background-color:rgb(34 34 34 / var(--tw-bg-opacity))}.bg-\\[\\#353535\\]{--tw-bg-opacity: 1;background-color:rgb(53 53 53 / var(--tw-bg-opacity))}.bg-\\[\\#3D3D3D\\]{--tw-bg-opacity: 1;background-color:rgb(61 61 61 / var(--tw-bg-opacity))}.bg-\\[\\#424242\\]{--tw-bg-opacity: 1;background-color:rgb(66 66 66 / var(--tw-bg-opacity))}.bg-\\[\\#4E4E4E80\\]{background-color:#4e4e4e80}.bg-\\[\\#4E4E4E\\],.bg-\\[\\#4e4e4e\\]{--tw-bg-opacity: 1;background-color:rgb(78 78 78 / var(--tw-bg-opacity))}.bg-\\[\\#6D28D933\\]{background-color:#6d28d933}.bg-\\[\\#6D28D9\\]{--tw-bg-opacity: 1;background-color:rgb(109 40 217 / var(--tw-bg-opacity))}.bg-\\[\\#9CA3AF\\]{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}.bg-\\[\\#F43F5E\\]{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity))}.bg-background{background-color:hsl(var(--background))}.bg-black\\/80{background-color:#000c}.bg-border{background-color:hsl(var(--border))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-green-500\\/30{background-color:#22c55e4d}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\\/50{background-color:hsl(var(--muted) / .5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-red-500\\/30{background-color:#ef44444d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-yellow-500\\/30{background-color:#eab3084d}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\\.5{padding:.125rem}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-px{padding:1px}.px-0{padding-left:0;padding-right:0}.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-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\\[10px\\]{padding-left:10px;padding-right:10px}.px-\\[8px\\]{padding-left:8px;padding-right:8px}.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-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.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-\\[2px\\]{padding-top:2px;padding-bottom:2px}.pb-0{padding-bottom:0}.pb-12{padding-bottom:3rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-1\\.5{padding-left:.375rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-8{padding-left:2rem}.pr-1\\.5{padding-right:.375rem}.pr-2{padding-right:.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.text-left{text-align:left}.text-center{text-align:center}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-\\[\\'Inter\\'\\]{font-family:Inter}.font-\\[\\'Inter-Regular\\'\\,_sans-serif\\]{font-family:Inter-Regular,sans-serif}.font-\\[\\'Inter-SemiBold\\'\\,_sans-serif\\]{font-family:Inter-SemiBold,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-5xl{font-size:3rem;line-height:1}.text-\\[18px\\]{font-size:18px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.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}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-8{line-height:2rem}.leading-\\[18px\\]{line-height:18px}.leading-none{line-height:1}.tracking-\\[-0\\.45px\\]{letter-spacing:-.45px}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.\\!text-\\[\\#F9FAFB\\]{--tw-text-opacity: 1 !important;color:rgb(249 250 251 / var(--tw-text-opacity))!important}.text-\\[\\#F9FAFB\\]{--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px 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-\\[0px_20px_40px_0px_rgba\\(0\\,0\\,0\\,0\\.25\\)\\]{--tw-shadow: 0px 20px 40px 0px rgba(0,0,0,.25);--tw-shadow-colored: 0px 20px 40px 0px 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)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--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(0px + 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)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-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-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.fade-in-0{--tw-enter-opacity: 0}.zoom-in-95{--tw-enter-scale: .95}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.custom-scrollbar{scrollbar-width:thin;scrollbar-color:#222 #000}.custom-scrollbar::-webkit-scrollbar{width:8px;border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb{background-color:#222;border-radius:4px}.custom-scrollbar::-webkit-scrollbar-track{background-color:#000;border-radius:4px;margin:10px 0}.file\\:border-0::file-selector-button{border-width:0px}.file\\:bg-transparent::file-selector-button{background-color:transparent}.file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:font-medium::file-selector-button{font-weight:500}.placeholder\\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\\:cursor-pointer:hover{cursor:pointer}.hover\\:border-2:hover{border-width:2px}.hover\\:border-\\[hsl\\(var\\(--primary\\)\\)\\]:hover{border-color:hsl(var(--primary))}.hover\\:border-white:hover{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.hover\\:\\!bg-\\[\\#4E4E4E\\]:hover{--tw-bg-opacity: 1 !important;background-color:rgb(78 78 78 / var(--tw-bg-opacity))!important}.hover\\:\\!bg-\\[\\#6D28D9\\]:hover{--tw-bg-opacity: 1 !important;background-color:rgb(109 40 217 / var(--tw-bg-opacity))!important}.hover\\:\\!bg-inherit:hover{background-color:inherit!important}.hover\\:bg-\\[\\#222222\\]:hover{--tw-bg-opacity: 1;background-color:rgb(34 34 34 / var(--tw-bg-opacity))}.hover\\:bg-\\[\\#4A238E\\]:hover{--tw-bg-opacity: 1;background-color:rgb(74 35 142 / var(--tw-bg-opacity))}.hover\\:bg-\\[\\#4E4E4E\\]:hover{--tw-bg-opacity: 1;background-color:rgb(78 78 78 / var(--tw-bg-opacity))}.hover\\:bg-\\[\\#F43F5E\\]\\/90:hover{background-color:#f43f5ee6}.hover\\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\\:bg-destructive\\/80:hover{background-color:hsl(var(--destructive) / .8)}.hover\\:bg-destructive\\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\\:bg-muted\\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\\:bg-primary\\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\\:bg-primary\\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\\:bg-secondary\\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\\:bg-transparent:hover{background-color:transparent}.hover\\:text-\\[\\#F9FAFB\\]:hover{--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}.hover\\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\\:text-foreground:hover{color:hsl(var(--foreground))}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-100:hover{opacity:1}.hover\\:opacity-80:hover{opacity:.8}.hover\\:brightness-150:hover{--tw-brightness: brightness(1.5);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\\:opacity-100:focus{opacity:1}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:ring-1:focus-visible{--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(1px + 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-visible\\:ring-2:focus-visible{--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-visible\\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\\:visible{visibility:visible}.group:hover .group-hover\\:opacity-100{opacity:1}.group.destructive .group-\\[\\.destructive\\]\\:border-muted\\/40{border-color:hsl(var(--muted) / .4)}.group.toaster .group-\\[\\.toaster\\]\\:border-border{border-color:hsl(var(--border))}.group.toast .group-\\[\\.toast\\]\\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\\[\\.toast\\]\\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\\[\\.toaster\\]\\:bg-background{background-color:hsl(var(--background))}.group.destructive .group-\\[\\.destructive\\]\\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity))}.group.toast .group-\\[\\.toast\\]\\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\\[\\.toast\\]\\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\\[\\.toaster\\]\\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\\[\\.toaster\\]\\: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)}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:border-destructive\\/30:hover{border-color:hsl(var(--destructive) / .3)}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:bg-destructive:hover{background-color:hsl(var(--destructive))}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:text-destructive-foreground:hover{color:hsl(var(--destructive-foreground))}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity))}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-destructive:focus{--tw-ring-color: hsl(var(--destructive))}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity))}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\\:opacity-70{opacity:.7}.data-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;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))}.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;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))}.data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;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))}.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;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))}.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked]{--tw-translate-x: 1.25rem;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))}.data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 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))}.data-\\[swipe\\=end\\]\\:translate-x-\\[--radix-toast-swipe-end-x\\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);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))}.data-\\[swipe\\=move\\]\\:translate-x-\\[--radix-toast-swipe-move-x\\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);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 accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\\[highlighted\\]\\:bg-accent[data-highlighted]{background-color:hsl(var(--accent))}.data-\\[state\\=active\\]\\:bg-\\[\\#7C3AED\\][data-state=active]{--tw-bg-opacity: 1;background-color:rgb(124 58 237 / var(--tw-bg-opacity))}.data-\\[state\\=active\\]\\:bg-\\[\\#9CA3AF\\][data-state=active]{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}.data-\\[state\\=active\\]\\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\\[state\\=checked\\]\\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\\[state\\=open\\]\\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\\[state\\=selected\\]\\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\\[state\\=unchecked\\]\\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\\[highlighted\\]\\:text-accent-foreground[data-highlighted]{color:hsl(var(--accent-foreground))}.data-\\[state\\=active\\]\\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\\[state\\=open\\]\\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:shadow-sm[data-state=active]{--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)}.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=move]{transition-property:none}.data-\\[state\\=closed\\]\\:duration-300[data-state=closed]{transition-duration:.3s}.data-\\[state\\=open\\]\\:duration-500[data-state=open]{transition-duration:.5s}.data-\\[state\\=open\\]\\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\\[state\\=closed\\]\\:animate-out[data-state=closed],.data-\\[swipe\\=end\\]\\:animate-out[data-swipe=end]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\\[state\\=closed\\]\\:fade-out-80[data-state=closed]{--tw-exit-opacity: .8}.data-\\[state\\=open\\]\\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\\[state\\=closed\\]\\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y: 100%}.data-\\[state\\=closed\\]\\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x: -100%}.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x: -50%}.data-\\[state\\=closed\\]\\:slide-out-to-right[data-state=closed],.data-\\[state\\=closed\\]\\:slide-out-to-right-full[data-state=closed]{--tw-exit-translate-x: 100%}.data-\\[state\\=closed\\]\\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y: -100%}.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y: -48%}.data-\\[state\\=open\\]\\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y: 100%}.data-\\[state\\=open\\]\\:slide-in-from-left[data-state=open]{--tw-enter-translate-x: -100%}.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x: -50%}.data-\\[state\\=open\\]\\:slide-in-from-right[data-state=open]{--tw-enter-translate-x: 100%}.data-\\[state\\=open\\]\\:slide-in-from-top[data-state=open]{--tw-enter-translate-y: -100%}.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y: -48%}.data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y: -100%}.data-\\[state\\=closed\\]\\:duration-300[data-state=closed]{animation-duration:.3s}.data-\\[state\\=open\\]\\:duration-500[data-state=open]{animation-duration:.5s}@media (min-width: 640px){.sm\\:bottom-0{bottom:0}.sm\\:right-0{right:0}.sm\\:top-auto{top:auto}.sm\\:mt-0{margin-top:0}.sm\\:max-w-sm{max-width:24rem}.sm\\:flex-row{flex-direction:row}.sm\\:flex-col{flex-direction:column}.sm\\:justify-end{justify-content:flex-end}.sm\\:gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.sm\\:rounded-lg{border-radius:var(--radius)}.sm\\:text-left{text-align:left}.data-\\[state\\=open\\]\\:sm\\:slide-in-from-bottom-full[data-state=open]{--tw-enter-translate-y: 100%}}@media (min-width: 768px){.md\\:w-full{width:100%}.md\\:max-w-\\[420px\\]{max-width:420px}}.\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=checkbox]){padding-right:0}.\\[\\&\\:hover\\]\\:\\!bg-\\[\\#6D28D9\\]:hover{--tw-bg-opacity: 1 !important;background-color:rgb(109 40 217 / var(--tw-bg-opacity))!important}.\\[\\&\\:hover\\]\\:\\!text-\\[\\#F9FAFB\\]:hover{--tw-text-opacity: 1 !important;color:rgb(249 250 251 / var(--tw-text-opacity))!important}.\\[\\&\\>span\\]\\:truncate>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\\[\\&\\>svg\\]\\:size-4>svg{width:1rem;height:1rem}.\\[\\&\\>svg\\]\\:shrink-0>svg{flex-shrink:0}.\\[\\&\\>tr\\]\\:last\\:border-b-0:last-child>tr{border-bottom-width:0px}.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg{--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))}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading]{font-weight:500}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input]{height:3rem}.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 [cmdk-item] svg{height:1.25rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 [cmdk-item] svg{width:1.25rem}.\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:size-4 svg{width:1rem;height:1rem}.\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child{border-width:0px}.\\[\\&_tr\\]\\:border-b tr{border-bottom-width:1px}@keyframes pulse-2877a399{0%,to{opacity:1}50%{opacity:0}}.file-box:hover p[data-v-34c51f7f]{color:hsl(var(--primary))}.file-box:hover svg path[data-v-34c51f7f]{stroke:hsl(var(--primary))}.md-editor .md-editor-preview{--md-theme-color: var(--md-color);--md-theme-color-reverse: #eee;--md-theme-color-hover: #eee;--md-theme-color-hover-inset: #ddd;--md-theme-link-color: #2d8cf0;--md-theme-link-hover-color: #73d13d;--md-theme-border-color: #e6e6e6;--md-theme-border-color-reverse: #bebebe;--md-theme-border-color-inset: #d6d6d6;--md-theme-bg-color: #fff;--md-theme-bg-color-inset: #ececec;--md-theme-bg-color-scrollbar-track: #e2e2e2;--md-theme-bg-color-scrollbar-thumb: rgba(0, 0, 0, .3019607843);--md-theme-bg-color-scrollbar-thumb-hover: rgba(0, 0, 0, .3490196078);--md-theme-bg-color-scrollbar-thumb-active: rgba(0, 0, 0, .3803921569);--md-theme-code-copy-tips-color: inherit;--md-theme-code-copy-tips-bg-color: #fff;--md-theme-code-active-color: #61aeee}.md-editor-dark .md-editor-preview{--md-theme-color: var(--md-color);--md-theme-color-reverse: #222;--md-theme-color-hover: #191919;--md-theme-color-hover-inset: #444;--md-theme-link-color: #2d8cf0;--md-theme-link-hover-color: #73d13d;--md-theme-border-color: #2d2d2d;--md-theme-border-color-reverse: #e6e6e6;--md-theme-border-color-inset: #5a5a5a;--md-theme-bg-color: #000;--md-theme-bg-color-inset: #111;--md-theme-bg-color-scrollbar-track: #0f0f0f;--md-theme-bg-color-scrollbar-thumb: #2d2d2d;--md-theme-bg-color-scrollbar-thumb-hover: #3a3a3a;--md-theme-bg-color-scrollbar-thumb-active: #3a3a3a;--md-theme-code-copy-tips-color: inherit;--md-theme-code-copy-tips-bg-color: #3a3a3a;--md-theme-code-active-color: #e6c07b}.md-editor .md-editor-admonition-note{--md-admonition-color: #448aff;--md-admonition-bg-color: #d5e2f9}.md-editor .md-editor-admonition-abstract{--md-admonition-color: #02b1ff;--md-admonition-bg-color: #d1eefb}.md-editor .md-editor-admonition-info{--md-admonition-color: #333;--md-admonition-bg-color: #e3e3e3}.md-editor .md-editor-admonition-tip{--md-admonition-color: #666;--md-admonition-bg-color: #e6e6e6}.md-editor .md-editor-admonition-success{--md-admonition-color: #00c852;--md-admonition-bg-color: #c1f1d5}.md-editor .md-editor-admonition-question{--md-admonition-color: #f0b400;--md-admonition-bg-color: #fff1dd}.md-editor .md-editor-admonition-warning{--md-admonition-color: #ff9104;--md-admonition-bg-color: #ffe9cc}.md-editor .md-editor-admonition-failure{--md-admonition-color: #c2185b;--md-admonition-bg-color: #ffd9d9}.md-editor .md-editor-admonition-danger{--md-admonition-color: #ff5252;--md-admonition-bg-color: #ffe4e4}.md-editor .md-editor-admonition-bug{--md-admonition-color: #f60357;--md-admonition-bg-color: #ffd3e2}.md-editor .md-editor-admonition-example{--md-admonition-color: #7c4dff;--md-admonition-bg-color: #e3d8ff}.md-editor .md-editor-admonition-quote{--md-admonition-color: #9e9e9e;--md-admonition-bg-color: #f0f0f0}.md-editor .md-editor-admonition-hint{--md-admonition-color: #009688;--md-admonition-bg-color: #cdf4f0}.md-editor .md-editor-admonition-caution{--md-admonition-color: #ffa726;--md-admonition-bg-color: #ffe7c4}.md-editor .md-editor-admonition-error{--md-admonition-color: #d32f2f;--md-admonition-bg-color: #ffd8d8}.md-editor .md-editor-admonition-attention{--md-admonition-color: #455a64;--md-admonition-bg-color: #cbefff}.md-editor-dark .md-editor-admonition-note{--md-admonition-color: #1262e7;--md-admonition-bg-color: #021d4c}.md-editor-dark .md-editor-admonition-abstract{--md-admonition-color: #058dc9;--md-admonition-bg-color: #002433}.md-editor-dark .md-editor-admonition-info{--md-admonition-color: #999;--md-admonition-bg-color: #212121}.md-editor-dark .md-editor-admonition-tip{--md-admonition-color: #888;--md-admonition-bg-color: #191818}.md-editor-dark .md-editor-admonition-success{--md-admonition-color: #00c551;--md-admonition-bg-color: #003014}.md-editor-dark .md-editor-admonition-question{--md-admonition-color: #cd9a00;--md-admonition-bg-color: #311d00}.md-editor-dark .md-editor-admonition-warning{--md-admonition-color: #ed8500;--md-admonition-bg-color: #3c2200}.md-editor-dark .md-editor-admonition-failure{--md-admonition-color: #d5125f;--md-admonition-bg-color: #3f0000}.md-editor-dark .md-editor-admonition-danger{--md-admonition-color: #d80505;--md-admonition-bg-color: #390000}.md-editor-dark .md-editor-admonition-bug{--md-admonition-color: #da0d54;--md-admonition-bg-color: #390013}.md-editor-dark .md-editor-admonition-example{--md-admonition-color: #7443ff;--md-admonition-bg-color: #140045}.md-editor-dark .md-editor-admonition-quote{--md-admonition-color: #9e9e9e;--md-admonition-bg-color: #2b2b2b}.md-editor-dark .md-editor-admonition-hint{--md-admonition-color: #00ae9e;--md-admonition-bg-color: #00423b}.md-editor-dark .md-editor-admonition-caution{--md-admonition-color: #db8609;--md-admonition-bg-color: #573300}.md-editor-dark .md-editor-admonition-error{--md-admonition-color: #df1a1a;--md-admonition-bg-color: #440000}.md-editor-dark .md-editor-admonition-attention{--md-admonition-color: #0f8bc7;--md-admonition-bg-color: #00354d}.md-editor-preview .md-editor-admonition{background-color:var(--md-admonition-bg-color);border:1px solid var(--md-admonition-color);border-radius:.5rem;color:var(--md-admonition-color);display:flow-root;font-size:14px;font-weight:400;margin:1rem 0;padding:1em 1em .5em;page-break-inside:avoid}.md-editor-preview .md-editor-admonition-title{border-top-left-radius:.5rem;border-top-right-radius:.5rem;margin:0;padding:0;position:relative;font-weight:700}.md-editor-preview .md-editor-admonition p{margin:.5em 0;padding:0}.md-editor-preview .md-editor-admonition p:first-of-type{margin-top:0}.md-editor-preview .md-editor-admonition+p:empty,.md-editor-preview .md-editor-admonition+p:empty+p:empty{display:none}.md-editor-preview .md-editor-mermaid{overflow:hidden;display:none;line-height:normal}.md-editor-preview [class=md-editor-mermaid][data-processed]{display:flex;justify-content:center;align-items:center;cursor:grab}.md-editor-preview [class=md-editor-mermaid][data-processed]:active{cursor:grabbing}.md-editor-preview [class=md-editor-mermaid][data-processed] svg{transform-origin:top left}.prefix-katex-block{text-align:center;margin:20px}.prefix-katex-inline,.prefix-katex-block{display:none}.prefix-katex-inline[data-processed]{display:initial}.prefix-katex-block[data-processed]{display:block}.md-editor .md-editor-preview{--md-theme-code-inline-color: #3594f7;--md-theme-code-inline-bg-color: rgba(59, 170, 250, .1);--md-theme-code-inline-radius: 2px;--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #282c34;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 5px}.md-editor-dark .md-editor-preview{--md-theme-code-inline-color: #3594f7;--md-theme-code-inline-bg-color: rgba(59, 170, 250, .1);--md-theme-code-inline-radius: 2px;--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 5px}.md-editor-preview code{color:var(--md-theme-code-inline-color);background-color:var(--md-theme-code-inline-bg-color);border-radius:var(--md-theme-code-inline-radius);padding:0 4px;line-height:22px}.md-editor-preview .md-editor-code{color:var(--md-theme-code-block-color);font-size:12px;line-height:1;margin:20px 0;position:relative}.md-editor-preview .md-editor-code input[type=radio],.md-editor-preview .md-editor-code input[type=radio]+pre,.md-editor-preview .md-editor-code input[type=radio]+span.md-editor-code-lang{display:none}.md-editor-preview .md-editor-code input:checked+pre,.md-editor-preview .md-editor-code input:checked+span.md-editor-code-lang{display:block}.md-editor-preview .md-editor-code input:checked+label{border-bottom:1px solid;color:var(--md-theme-code-active-color)}.md-editor-preview .md-editor-code .md-editor-code-head{display:grid;grid-template:"1rf 1rf";justify-content:space-between;height:32px;width:100%;font-size:12px;background-color:var(--md-theme-code-before-bg-color);margin-bottom:0;border-top-left-radius:var(--md-theme-code-block-radius);border-top-right-radius:var(--md-theme-code-block-radius);-webkit-tap-highlight-color:rgba(0,0,0,0);list-style:none}.md-editor-preview .md-editor-code .md-editor-code-head::-webkit-details-marker{display:none}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag{margin-left:12px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span{display:inline-block;width:10px;height:10px;border-radius:50%;margin-top:11px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(1){background-color:#ec6a5e}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(2){background-color:#f4bf4f}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(3){background-color:#61c554}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span+span{margin-left:4px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label{box-sizing:border-box;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:var(--md-theme-code-block-bg-color);margin-top:8px;padding:0}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li{line-height:1;list-style:none;display:inline-block;position:relative;vertical-align:super;margin:0}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;display:inline-block;font-size:14px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li+li{margin-left:12px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-action{display:flex;align-items:center}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-action>*{margin-right:10px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-lang{line-height:32px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button:not(data-is-icon){cursor:pointer;line-height:32px;position:initial}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button:not(data-is-icon) .md-editor-icon{width:15px;height:15px;display:inline-block;vertical-align:sub}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]{cursor:pointer;line-height:1;position:relative}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon] .md-editor-icon{width:15px;height:15px;display:inline-block;vertical-align:sub}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:before{content:attr(data-tips);color:var(--md-theme-code-copy-tips-color);background-color:var(--md-theme-code-copy-tips-bg-color);position:absolute;font-size:12px;font-family:sans-serif;width:-moz-max-content;width:max-content;text-align:center;padding:4px;border-radius:2px;box-shadow:0 0 2px #0003;left:-10px;top:50%;transform:translate(-100%,-50%)}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:after{content:"";color:var(--md-theme-code-copy-tips-bg-color);position:absolute;width:0;height:0;border:5px solid rgba(0,0,0,0);border-right-width:0;border-left-color:currentColor;left:-10px;top:50%;transform:translateY(-50%);filter:drop-shadow(4px 0 2px rgba(0,0,0,.2))}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:before,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:after{visibility:hidden;transition:.3s}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:hover:before,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:hover:after{visibility:visible}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips{margin-right:12px}.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips .md-editor-icon,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips .md-editor-iconfont{width:16px;height:16px;font-size:16px;display:inline-block;vertical-align:sub;transform:rotate(0);transition:transform .1s}.md-editor-preview .md-editor-code pre{position:relative;margin:0}.md-editor-preview .md-editor-code pre code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace;font-size:14px;color:var(--md-theme-code-block-color);background-color:var(--md-theme-code-before-bg-color);display:block;line-height:1.6;overflow:auto;padding:1em;position:relative;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:var(--md-theme-code-block-radius);border-bottom-right-radius:var(--md-theme-code-block-radius)}.md-editor-preview .md-editor-code pre code .md-editor-code-block{display:inline-block;width:100%;overflow:auto;vertical-align:bottom;color:var(--md-theme-code-block-color)}.md-editor-preview details.md-editor-code .md-editor-code-head{cursor:pointer}.md-editor-preview details.md-editor-code:not(open) .md-editor-code-head{border-bottom-left-radius:var(--md-theme-code-block-radius);border-bottom-right-radius:var(--md-theme-code-block-radius)}.md-editor-preview details.md-editor-code[open] .md-editor-code-head{border-bottom-left-radius:0;border-bottom-right-radius:0}.md-editor-preview details.md-editor-code[open] .md-editor-code-head .md-editor-collapse-tips .md-editor-icon,.md-editor-preview details.md-editor-code[open] .md-editor-code-head .md-editor-collapse-tips .md-editor-iconfont{transform:rotate(-90deg)}.md-editor-scrn span[rn-wrapper]{position:absolute;pointer-events:none;top:1em;font-size:100%;left:0;width:3em;letter-spacing:-1px;-webkit-user-select:none;-moz-user-select:none;user-select:none;counter-reset:linenumber}.md-editor-scrn span[rn-wrapper]>span{display:block;pointer-events:none;counter-increment:linenumber}.md-editor-scrn span[rn-wrapper]>span:before{color:#999;display:block;padding-right:.5em;text-align:right;content:counter(linenumber)}.md-editor-scrn pre code{padding-left:3.5em!important}.md-editor-preview figure{margin:0 0 1em;display:inline-flex;flex-direction:column;text-align:center}.md-editor-preview figure figcaption{color:var(--md-theme-color);font-size:.875em;margin-top:5px}.md-editor .md-editor-preview,.md-editor-dark .md-editor-preview{--md-theme-heading-color: var(--md-theme-color);--md-theme-heading-border: none;--md-theme-heading-1-color: var(--md-theme-heading-color);--md-theme-heading-1-border: var(--md-theme-heading-border);--md-theme-heading-2-color: var(--md-theme-heading-color);--md-theme-heading-2-border: var(--md-theme-heading-border);--md-theme-heading-3-color: var(--md-theme-heading-color);--md-theme-heading-3-border: var(--md-theme-heading-border);--md-theme-heading-4-color: var(--md-theme-heading-color);--md-theme-heading-4-border: var(--md-theme-heading-border);--md-theme-heading-5-color: var(--md-theme-heading-color);--md-theme-heading-5-border: var(--md-theme-heading-border);--md-theme-heading-6-color: var(--md-theme-heading-color);--md-theme-heading-6-border: var(--md-theme-heading-border)}.md-editor-preview h1,.md-editor-preview h2,.md-editor-preview h3,.md-editor-preview h4,.md-editor-preview h5,.md-editor-preview h6{position:relative;word-break:break-all;margin:1.4em 0 .8em;font-weight:700}.md-editor-preview h1 a,.md-editor-preview h2 a,.md-editor-preview h3 a,.md-editor-preview h4 a,.md-editor-preview h5 a,.md-editor-preview h6 a,.md-editor-preview h1 a:hover,.md-editor-preview h2 a:hover,.md-editor-preview h3 a:hover,.md-editor-preview h4 a:hover,.md-editor-preview h5 a:hover,.md-editor-preview h6 a:hover{color:inherit}.md-editor-preview h1{color:var(--md-theme-heading-1-color);border-bottom:var(--md-theme-heading-1-border)}.md-editor-preview h2{color:var(--md-theme-heading-2-color);border-bottom:var(--md-theme-heading-2-border)}.md-editor-preview h3{color:var(--md-theme-heading-3-color);border-bottom:var(--md-theme-heading-3-border)}.md-editor-preview h4{color:var(--md-theme-heading-4-color);border-bottom:var(--md-theme-heading-4-border)}.md-editor-preview h5{color:var(--md-theme-heading-5-color);border-bottom:var(--md-theme-heading-5-border)}.md-editor-preview h6{color:var(--md-theme-heading-6-color);border-bottom:var(--md-theme-heading-6-border)}.md-editor-preview h1{font-size:2em}.md-editor-preview h2{font-size:1.5em}.md-editor-preview h3{font-size:1.25em}.md-editor-preview h4{font-size:1em}.md-editor-preview h5{font-size:.875em}.md-editor-preview h6{font-size:.85em}.md-editor-preview hr{height:1px;margin:10px 0;border:none;border-top:1px solid var(--md-theme-border-color)}.md-editor-preview a{color:var(--md-theme-link-color);text-decoration:none;transition:color .3s}.md-editor-preview a:hover{color:var(--md-theme-link-hover-color)}.md-editor-preview a:empty:before{content:attr(href)}.md-editor-preview ol,.md-editor-preview ul{padding-left:2.35em}.md-editor-preview ol .task-list-item,.md-editor-preview ul .task-list-item{list-style-type:none}.md-editor-preview ol .task-list-item input,.md-editor-preview ul .task-list-item input{margin-left:-1.5em;margin-right:.1em}.md-editor-preview img{max-width:100%}.md-editor-preview p:empty{display:none}.md-editor .md-editor-preview{--md-theme-quote-color: var(--md-theme-color);--md-theme-quote-border: none;--md-theme-quote-bg-color: inherit}.md-editor-preview blockquote{padding:0 1em;color:var(--md-theme-quote-color);border-left:var(--md-theme-quote-border);background-color:var(--md-theme-quote-bg-color)}.md-editor .md-editor-preview{--md-theme-table-stripe-color: #fafafa;--md-theme-table-tr-bg-color: inherit;--md-theme-table-td-border-color: var(--md-theme-border-color)}.md-editor-dark .md-editor-preview{--md-theme-table-stripe-color: #0c0c0c;--md-theme-table-tr-bg-color: inherit;--md-theme-table-td-border-color: var(--md-theme-border-color)}.md-editor-preview table tr{background-color:var(--md-theme-table-tr-bg-color)}.md-editor-preview table tr th,.md-editor-preview table tr td{border:1px solid var(--md-theme-table-td-border-color)}.md-editor-preview table tr:nth-child(2n){background-color:var(--md-theme-table-stripe-color)}.md-editor-preview{color:var(--md-theme-color)}.md-editor-preview ::-webkit-scrollbar{width:6px;height:6px}.md-editor-preview ::-webkit-scrollbar-corner,.md-editor-preview ::-webkit-scrollbar-track{background-color:var(--md-theme-bg-color-scrollbar-track);border-radius:2px}.md-editor-preview ::-webkit-scrollbar-thumb{border-radius:2px;background-color:var(--md-theme-bg-color-scrollbar-thumb)}.md-editor-preview ::-webkit-scrollbar-button:vertical{display:none}.md-editor-preview ::-webkit-scrollbar-thumb:vertical:hover{background-color:var(--md-theme-bg-color-scrollbar-thumb-hover)}.md-editor-preview ::-webkit-scrollbar-thumb:vertical:active{background-color:var(--md-theme-bg-color-scrollbar-thumb-active)}.md-editor div.default-theme{--md-theme-code-copy-tips-color: #141414}.md-editor-dark div.default-theme{--md-theme-code-copy-tips-color: inherit}div.default-theme .md-editor-code pre code{box-shadow:#0005 0 2px 2px}div.default-theme img{margin:0 auto;box-sizing:border-box;padding:5px;border:1px solid var(--md-theme-border-color);border-radius:3px}div.default-theme blockquote img{border-color:var(--md-theme-border-color-inset)}div.default-theme ol,div.default-theme ul{margin:.6em 0}div.default-theme ol li,div.default-theme ul li{line-height:1.6;margin:.5em 0}div.default-theme p{line-height:1.6;margin:.5rem 0}.md-editor div.default-theme{--md-theme-quote-border: 5px solid #35b378;--md-theme-quote-bg-color: var(--md-theme-bg-color-inset)}div.default-theme blockquote{margin:20px 0;padding:0 1.2em;line-height:2em;display:block;overflow:auto}.md-editor default-theme{--md-theme-table-stripe-color: #fafafa}.md-editor-dark default-theme{--md-theme-table-stripe-color: #0c0c0c}div.default-theme table{overflow:auto;border-spacing:0;border-collapse:collapse;margin-bottom:1em;margin-top:1em}div.default-theme table tr th,div.default-theme table tr td{word-wrap:break-word;padding:8px 14px}div.default-theme table tbody tr:hover{background-color:var(--md-theme-color-hover)}div.default-theme blockquote table{line-height:initial}div.default-theme blockquote table tr th,div.default-theme blockquote table tr td{border-color:var(--md-theme-border-color-inset)}div.default-theme blockquote table tbody tr:nth-child(n){background-color:inherit}div.default-theme blockquote table tbody tr:hover{background-color:var(--md-theme-color-hover-inset)}.md-editor div.vuepress-theme{--md-theme-code-inline-color: #d63200;--md-theme-code-inline-bg-color: #f8f8f8;--md-theme-code-block-color: #747384;--md-theme-code-block-bg-color: #f8f8f8;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 2px}.md-editor-dark div.vuepress-theme{--md-theme-code-inline-color: #e06c75;--md-theme-code-inline-bg-color: #1a1a1a;--md-theme-code-block-color: #999;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 2px}div.vuepress-theme code{padding:3px 5px;margin:0 2px}div.vuepress-theme .md-editor-code pre{font-size:.875em;margin:0 0 1em}div.vuepress-theme .md-editor-code pre code{white-space:pre;padding:22px 1em;margin:0}div.vuepress-theme .md-editor-code pre code span[rn-wrapper]{top:22px}.md-editor div.vuepress-theme{--md-theme-heading-color: #273849;--md-theme-heading-2-border: 1px solid var(--md-theme-border-color)}.md-editor-dark div.vuepress-theme{--md-theme-heading-color: #999;--md-theme-heading-2-border: 1px solid var(--md-theme-border-color)}div.vuepress-theme h1,div.vuepress-theme h2,div.vuepress-theme h3,div.vuepress-theme h4,div.vuepress-theme h5,div.vuepress-theme h6{font-weight:600;line-height:1.45;position:relative;margin-top:1em}div.vuepress-theme h1{font-size:2.2em;margin:1em 0}div.vuepress-theme h2{font-size:1.65em;padding-bottom:.3em}div.vuepress-theme h3{line-height:1.35em}.md-editor div.vuepress-theme{--md-theme-link-color: #42b983}div.vuepress-theme a{font-weight:600}.vuepress-theme ul,.vuepress-theme ol{position:relative;line-height:1.4em;margin:1.2em 0;z-index:1}.vuepress-theme ul li,.vuepress-theme ol li{margin:1.2em 0}.vuepress-theme p{word-spacing:.05em;line-height:1.6em;margin:1.2em 0;position:relative}.md-editor div.vuepress-theme{--md-theme-quote-border: 4px solid #42b983}div.vuepress-theme blockquote{margin:2em 0;padding-left:20px}div.vuepress-theme blockquote p{margin-left:0;margin-top:1.2em;margin-bottom:0;padding:0}.md-editor div.vuepress-theme{--md-theme-table-td-border-color: #dfe2e5;--md-theme-table-stripe-color: #f6f8fa}.md-editor-dark div.vuepress-theme{--md-theme-table-td-border-color: #2d2d2d;--md-theme-table-stripe-color: #0c0c0c}div.vuepress-theme table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}div.vuepress-theme table tr th,div.vuepress-theme table tr td{padding:.6em 1em}.md-editor .vuepress-theme{--md-theme-color: #304455}.md-editor-dark .vuepress-theme{--md-theme-color: #999}div.vuepress-theme{font-size:16px;color:var(--md-theme-color)}div.vuepress-theme em{color:#4f5959;padding:0 6px 0 4px}.md-editor div.github-theme{--md-theme-code-inline-color: inherit;--md-theme-code-inline-bg-color: #eff1f2;--md-theme-code-inline-radius: 6px;--md-theme-code-block-color: inherit;--md-theme-code-block-bg-color: #f6f8fa;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 6px}.md-editor-dark div.github-theme{--md-theme-code-inline-color: #c9d1d9;--md-theme-code-inline-bg-color: #2d3339;--md-theme-code-inline-radius: 6px;--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #161b22;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 6px}div.github-theme code{padding:.2em .4em;margin:0}div.github-theme pre code{padding:22px 1em;margin-bottom:0;word-break:normal;letter-spacing:1px}.md-editor div.github-theme{--md-theme-heading-color: inherit;--md-theme-heading-6-color: #2d3339;--md-theme-heading-1-border: 1px solid #d9dee4;--md-theme-heading-2-border: 1px solid #d9dee4}.md-editor-dark div.github-theme{--md-theme-heading-color: #c9d1d9;--md-theme-heading-6-color: #768390;--md-theme-heading-1-border: 1px solid #373e47;--md-theme-heading-2-border: 1px solid #373e47}div.github-theme h1,div.github-theme h2,div.github-theme h3,div.github-theme h4,div.github-theme h5,div.github-theme h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}div.github-theme h1{padding-bottom:.3em;font-size:2em}div.github-theme h2{padding-bottom:.3em;font-size:1.5em}div.github-theme h3{font-size:1.25em}div.github-theme h4{font-size:1em}div.github-theme h5{font-size:.875em}div.github-theme h6{font-size:.85em}.md-editor div.github-theme{--md-theme-heading-bg-color: #fff}.md-editor-dark div.github-theme{--md-theme-heading-bg-color: #22272e}div.github-theme img{background-color:var(--md-theme-heading-bg-color)}.md-editor div.github-theme{--md-theme-link-color: #539bf5;--md-theme-link-hover-color: #539bf5}div.github-theme a:hover{text-decoration:underline}.github-theme ol li+li,.github-theme ul li+li{margin-top:.25em}.md-editor div.github-theme{--md-theme-quote-color: #57606a;--md-theme-quote-border: .25em solid #d0d7de}.md-editor-dark div.github-theme{--md-theme-quote-color: #8b949e;--md-theme-quote-border: .25em solid #444c56}div.github-theme blockquote{padding:0 1em}.md-editor div.github-theme{--md-theme-table-stripe-color: #f7f8fa;--md-theme-table-tr-bg-color: #fff;--md-theme-table-td-border-color: #d0d7de}.md-editor-dark div.github-theme{--md-theme-table-stripe-color: #161b22;--md-theme-table-tr-bg-color: transparent;--md-theme-table-td-border-color: #30363d}div.github-theme table{display:block;max-width:100%;overflow:auto;border-spacing:0;border-collapse:collapse}div.github-theme table tr th,div.github-theme table tr td{padding:6px 13px}.md-editor div.github-theme{--md-theme-color: #222}.md-editor-dark div.github-theme{--md-theme-color: #c9d1d9}div.github-theme{line-height:1.5;color:var(--md-theme-color)}div.github-theme p,div.github-theme blockquote,div.github-theme ul,div.github-theme ol,div.github-theme dl,div.github-theme table,div.github-theme pre,div.github-theme details{margin-top:0;margin-bottom:16px}.md-editor div.cyanosis-theme,.md-editor-dark div.cyanosis-theme{--md-theme-code-inline-color: var(--md-theme-code-color);--md-theme-code-inline-bg-color: var(--md-theme-code-bg-color);--md-theme-code-block-color: var(--md-theme-base-color);--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}div.cyanosis-theme code{padding:.065em .4em;font-family:Menlo,Monaco,Consolas,Courier New,monospace;overflow-x:auto}div.cyanosis-theme code::-moz-selection{background-color:var(--md-theme-slct-codebg-color)}div.cyanosis-theme code::selection{background-color:var(--md-theme-slct-codebg-color)}div.cyanosis-theme .md-editor-code pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}div.cyanosis-theme .md-editor-code pre code{padding:11px 12px 22px;margin:0;word-break:normal;line-height:1.75}div.cyanosis-theme .md-editor-code pre code::-moz-selection{background-color:var(--md-theme-slct-prebg-color)}div.cyanosis-theme .md-editor-code pre code::selection{background-color:var(--md-theme-slct-prebg-color)}div.cyanosis-theme .md-editor-code pre code::-webkit-scrollbar{width:4px;height:4px}div.cyanosis-theme .md-editor-code pre code::-webkit-scrollbar-track{background-color:var(--md-theme-border-color)}div.cyanosis-theme .md-editor-code pre code::-webkit-scrollbar-thumb{background-color:var(--md-theme-strong-color);border-radius:10px}div.cyanosis-theme .md-editor-code pre code span[rn-wrapper]{top:11px}.md-editor div.cyanosis-theme{--md-theme-heading-color: var(--md-theme-title-color)}div.cyanosis-theme h1{padding-bottom:4px;margin-top:36px;margin-bottom:10px;font-size:30px;line-height:1.5;transition:color .35s}div.cyanosis-theme h2{position:relative;padding-left:10px;padding-right:10px;padding-bottom:10px;margin-top:36px;margin-bottom:10px;font-size:24px;line-height:1.5;border-bottom:1px solid var(--md-theme-border-color-2);transition:color .35s}div.cyanosis-theme h2:before{content:"「";position:absolute;top:-6px;left:-14px}div.cyanosis-theme h2:after{content:"」";position:relative;top:6px;right:auto}div.cyanosis-theme h3{position:relative;padding-bottom:0;margin-top:30px;margin-bottom:10px;font-size:20px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h3:before{content:"»";padding-right:6px;color:var(--md-theme-strong-color)}div.cyanosis-theme h4{padding-bottom:0;margin-top:24px;margin-bottom:10px;font-size:16px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h5{padding-bottom:0;margin-top:18px;margin-bottom:10px;font-size:14px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h6{padding-bottom:0;margin-top:12px;margin-bottom:10px;font-size:12px;line-height:1.5;padding-left:6px;transition:color .35s}div.cyanosis-theme h1::-moz-selection,div.cyanosis-theme h2::-moz-selection,div.cyanosis-theme h3::-moz-selection,div.cyanosis-theme h4::-moz-selection,div.cyanosis-theme h5::-moz-selection,div.cyanosis-theme h6::-moz-selection{color:var(--md-theme-slct-title-color);background-color:var(--md-theme-slct-titlebg-color)}div.cyanosis-theme h1::selection,div.cyanosis-theme h2::selection,div.cyanosis-theme h3::selection,div.cyanosis-theme h4::selection,div.cyanosis-theme h5::selection,div.cyanosis-theme h6::selection{color:var(--md-theme-slct-title-color);background-color:var(--md-theme-slct-titlebg-color)}@media (max-width: 720px){div.cyanosis-theme h1{font-size:24px}div.cyanosis-theme h2{font-size:20px}div.cyanosis-theme h3{font-size:18px}}.md-editor div.cyanosis-theme{--md-theme-link-color: var(--md-theme-link-color);--md-theme-link-hover-color: var(--md-theme-linkh-color)}div.cyanosis-theme a{position:relative;display:inline-block;text-decoration:none;border-bottom:1px solid var(--md-theme-border-color)}div.cyanosis-theme a:hover{border-bottom-color:var(--md-theme-linkh-color)}div.cyanosis-theme a:active{color:var(--md-theme-linkh-color)}div.cyanosis-theme a:after{position:absolute;content:"";top:100%;left:0;width:100%;opacity:0;border-bottom:1px solid var(--md-theme-border-color);transition:top .3s,opacity .3s;transform:translateZ(0)}div.cyanosis-theme a:hover:after{top:0;opacity:1;border-bottom-color:var(--md-theme-linkh-color)}.cyanosis-theme ol,.cyanosis-theme ul{margin:0}.cyanosis-theme ol li,.cyanosis-theme ul li{margin-bottom:0;list-style:inherit}.cyanosis-theme ol li .task-list-item,.cyanosis-theme ul li .task-list-item{list-style:none}.cyanosis-theme ol li .task-list-item ul,.cyanosis-theme ol li .task-list-item ol,.cyanosis-theme ul li .task-list-item ul,.cyanosis-theme ul li .task-list-item ol{margin-top:0}.cyanosis-theme ol ul,.cyanosis-theme ol ol,.cyanosis-theme ul ul,.cyanosis-theme ul ol{margin-top:4px}.cyanosis-theme ol li{padding-left:6px}.cyanosis-theme ol li::-moz-selection,.cyanosis-theme ul li::-moz-selection{color:var(--md-theme-slct-text-color);background-color:var(--md-theme-slct-bg-color)}.cyanosis-theme ol li::selection,.cyanosis-theme ul li::selection{color:var(--md-theme-slct-text-color);background-color:var(--md-theme-slct-bg-color)}.cyanosis-theme .task-list-item-checkbox{position:relative}.cyanosis-theme .contains-task-list input[type=checkbox]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;width:inherit;height:inherit;background:#f0f8ff;border:1px solid #add6ff;border-radius:2px;box-sizing:border-box;z-index:1}.cyanosis-theme .contains-task-list input[type=checkbox][checked]:after{content:"✓";position:absolute;top:-12px;left:0;right:0;bottom:0;width:0;height:0;color:#f55;font-size:20px;font-weight:700;z-index:2}.cyanosis-theme p{line-height:inherit;margin-top:16px;margin-bottom:16px}.cyanosis-theme p::-moz-selection{color:var(--md-theme-slct-text-color);background-color:var(--md-theme-slct-bg-color)}.cyanosis-theme p::selection{color:var(--md-theme-slct-text-color);background-color:var(--md-theme-slct-bg-color)}.md-editor div.cyanosis-theme{--md-theme-quote-color: var(--md-theme-blockquote-color);--md-theme-quote-border: 4px solid var(--md-theme-strong-color);--md-theme-quote-bg-color: var(--md-theme-blockquote-bg-color)}div.cyanosis-theme blockquote{padding:1px 20px;margin:22px 0;transition:color .35s}div.cyanosis-theme blockquote:after{display:block;content:""}div.cyanosis-theme blockquote>p{margin:10px 0}div.cyanosis-theme blockquote>b,div.cyanosis-theme blockquote>strong{color:var(--md-theme-strong-color)}.cyanosis-theme table{display:inline-block!important;width:auto;max-width:100%;overflow:auto;border:1px solid var(--md-theme-table-border-color);border-spacing:0;border-collapse:collapse}.cyanosis-theme table thead{color:#000;text-align:left;background:#f6f6f6}.cyanosis-theme table tr:nth-child(2n){background-color:var(--md-theme-table-tr-nc-color)}.cyanosis-theme table tr:hover{background-color:var(--md-theme-table-trh-color)}.cyanosis-theme table th,.cyanosis-theme table td{padding:12px 8px;line-height:24px;border:1px solid var(--md-theme-table-border-color)}.cyanosis-theme table th{color:var(--md-theme-table-tht-color);background-color:var(--md-theme-table-th-color)}.cyanosis-theme table td{min-width:120px}.cyanosis-theme table thead th::-moz-selection{background-color:#0000}.cyanosis-theme table thead th::selection{background-color:#0000}.cyanosis-theme table tbody td::-moz-selection{background-color:var(--md-theme-slct-bg-color)}.cyanosis-theme table tbody td::selection{background-color:var(--md-theme-slct-bg-color)}.md-editor div.cyanosis-theme{--md-theme-base-color:#353535;--md-theme-title-color:#005bb7;--md-theme-strong-color:#2196f3;--md-theme-em-color:#4fc3f7;--md-theme-del-color:#ccc;--md-theme-link-color:#3da8f5;--md-theme-linkh-color:#007fff;--md-theme-border-color:#bedcff;--md-theme-border-color-2:#ececec;--md-theme-bg-color:#fff;--md-theme-blockquote-color:#8c8c8c;--md-theme-blockquote-bg-color:#f0fdff;--md-theme-code-color:#c2185b;--md-theme-code-bg-color:#fff4f4;--md-theme-code-block-bg-color:#f8f8f8;--md-theme-table-border-color:#c3e0fd;--md-theme-table-th-color:#dff0ff;--md-theme-table-tht-color:#005bb7;--md-theme-table-tr-nc-color:#f7fbff;--md-theme-table-trh-color:#e0edf7;--md-theme-slct-title-color:#005bb7;--md-theme-slct-titlebg-color:rgba(175,207,247,.25);--md-theme-slct-text-color:#c80000;--md-theme-slct-bg-color:rgba(175,207,247,.25);--md-theme-slct-del-color:#999;--md-theme-slct-elbg-color:#e8ebec;--md-theme-slct-codebg-color:#ffeaeb;--md-theme-slct-prebg-color:rgba(160,200,255,.25)}.md-editor-dark div.cyanosis-theme{--md-theme-base-color:#cacaca;--md-theme-title-color:#ddd;--md-theme-strong-color:#fe9900;--md-theme-em-color:#ffd28e;--md-theme-del-color:#ccc;--md-theme-link-color:#ffb648;--md-theme-linkh-color:#fe9900;--md-theme-border-color:#ffe3ba;--md-theme-border-color-2:#ffcb7b;--md-theme-bg-color:#2f2f2f;--md-theme-blockquote-color:#c7c7c7;--md-theme-blockquote-bg-color:rgba(255,199,116,.1);--md-theme-code-color:#000;--md-theme-code-bg-color:#ffcb7b;--md-theme-code-block-bg-color:rgba(30,25,18,.5);--md-theme-table-border-color:#fe9900;--md-theme-table-th-color:#ffb648;--md-theme-table-tht-color:#000;--md-theme-table-tr-nc-color:#6d5736;--md-theme-table-trh-color:#947443;--md-theme-slct-title-color:#000;--md-theme-slct-titlebg-color:#fe9900;--md-theme-slct-text-color:#00c888;--md-theme-slct-bg-color:rgba(175,207,247,.25);--md-theme-slct-del-color:#999;--md-theme-slct-elbg-color:#000;--md-theme-slct-codebg-color:#ffcb7b;--md-theme-slct-prebg-color:rgba(160,200,255,.25)}div.cyanosis-theme{word-break:break-word;line-height:1.75;font-weight:400;overflow-x:hidden;color:var(--md-theme-base-color);transition:color .35s}div.cyanosis-theme hr{position:relative;width:98%;height:1px;margin-top:32px;margin-bottom:32px;background-image:linear-gradient(90deg,var(--md-theme-link-color),rgba(255,0,0,.3),rgba(37,163,65,.3),rgba(255,0,0,.3),var(--md-theme-link-color));border-width:0;overflow:visible}div.cyanosis-theme b,div.cyanosis-theme strong{color:var(--md-theme-strong-color)}div.cyanosis-theme i,div.cyanosis-theme em{color:var(--md-theme-em-color)}div.cyanosis-theme del{color:var(--md-theme-del-color)}div.cyanosis-theme details>summary{outline:none;color:var(--md-theme-title-color);font-size:20px;font-weight:bolder;border-bottom:1px solid var(--md-theme-border-color);cursor:pointer}div.cyanosis-theme details>p{padding:10px 20px;margin:10px 0 0;color:#666;background-color:var(--md-theme-blockquote-bg-color);border:2px dashed var(--md-theme-strong-color)}div.cyanosis-theme a::-moz-selection,div.cyanosis-theme b::-moz-selection,div.cyanosis-theme strong::-moz-selection,div.cyanosis-theme i::-moz-selection,div.cyanosis-theme em::-moz-selection{background-color:var(--md-theme-slct-elbg-color)}div.cyanosis-theme a::selection,div.cyanosis-theme b::selection,div.cyanosis-theme strong::selection,div.cyanosis-theme i::selection,div.cyanosis-theme em::selection{background-color:var(--md-theme-slct-elbg-color)}div.cyanosis-theme del::-moz-selection{color:var(--md-theme-slct-del-color);background-color:var(--md-theme-slct-elbg-color)}div.cyanosis-theme del::selection{color:var(--md-theme-slct-del-color);background-color:var(--md-theme-slct-elbg-color)}.md-editor div.mk-cute-theme,.md-editor-dark div.mk-cute-theme{--md-theme-code-inline-color: #4ec9b0;--md-theme-code-inline-bg-color: #282c34;--md-theme-code-block-color: #4ec9b0;--md-theme-code-block-bg-color: #282c34;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 10px}div.mk-cute-theme code{font-family:Menlo,Monaco,Consolas,Courier New,monospace;overflow-x:auto;padding:.14em .46em;margin:0 4px}div.mk-cute-theme .md-editor-code pre code{font-family:Menlo,Monaco,Consolas,Courier New,monospace;padding:22px;margin:0;word-break:normal;line-height:1.75}div.mk-cute-theme .md-editor-code pre code span[rn-wrapper]{top:22px}.md-editor div.mk-cute-theme{--md-theme-heading-color: $theme-color}div.mk-cute-theme h1:before,div.mk-cute-theme h2:before,div.mk-cute-theme h3:before,div.mk-cute-theme h4:before,div.mk-cute-theme h5:before,div.mk-cute-theme h6:before{content:"";display:block;position:absolute;left:0;top:0;bottom:0;margin:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAF8UlEQVRIS71Wa2wUVRT+7r0zu9t2t/RBaSioPCpYbIUfaEIQUogSAwZDAlUSGwgg/CBATExMCJH1D2hIfOEjFEUEhViCgBgIUCH44OkjPAMGBVqhpUCfW3Zn5z7MuQOE0hYxMdxJdmd25s53vnO+851leMCLPWA8/CfA2TsvL8n7q+nTFfNLG+4VqInHOeJLDQMzdz/3r4DGGDb9lxu+aPcE7U61JHDMDePcuv0O21ShugOefqDdtBie3Dk6K/O+Ab+qOjJiz7Ahv6c8hbDDwRiQlgYGDOcaWyEcjg8On+j71IpJndjGt9XO+jM7+pkywNvbazIfercieSdoJ4bE5sWjyZqMpDdeaQNXMNC34ME3LV8B56+1w3AOgk+EXe/Ub6uiLB6XdH/G/mYjeBCcFwnt3zQqWt4t4NjjnhzQ1CGkBhwOCMFAB71U0qsYgRlwBtQ1tiEJAy44OBdQUmFK3aWS06NLT+ukZAQoKCCjsfbDmk6p78RwX3ncWffmIj8U4kh6GpEwh+9rGy23LDU4GBrrm9DsuDYIGMAYIC/EUNQ7Cq1hn+WM2TI8f+jEyCmvjfn1FssuojHx6tDkyZOaCzr8TNpASzDAk8amlRIrEylcSGsYrcGIstIYWhgDDIM2BiGH3ywFkGAC1U9n38bpVqWGdk6r4HMWrZZaG1D5KLn0qYyBEAKnG1otAxLR8L7Z9nfP13CJHQ/ST4vK8sVHe8JsU0U6uO5hlexo8PI7vNDQomwoBRAwpSmtgJAAztS3QLsOsmBQlBtFJMQhlbbPUBBUR7o2hqHVddLbRsfCPQJ+u3TPw8uGl1yklAlHIJZKo3//XEhlLCtifPFyM7xwCI/lZ8IKTTBbS7pPLIggZZsSQ+zXbT4UYSsnet3UMM5HPT5LGbrDGYQroClyT2Jwnyj9aN949e8mDCwuRFoqKxRHUJ21BSDRELuQYGhvbMVV32Dp2RuxcfHSRBfAYTsbU9nJdFj5EiLkglHkRInC1xoxKbH9hQJIaTDvxxTCUddWl4wg0dCCtqSPDmoVx4Eitpxh64ZtsT6b5ie6pPRkfF90TllxOzEwmipMKRRgHODGgCuJkqIcvDdC2BZ5Y+tlHHMzkAKghbAxcQqQDiKrFBxhqg5MHTivS1tQ+sdsvaQl5Yd6yfdRXNQLsQwXnq/AQFLXEIIjzBSuNaaR0SuEtkQKl9IKjAsbJaWfzo1USDsM6zceDJfeVGgnhhN2N7YOyo5kJz1pa2AbgfrO1gRwXW6vSRQNtddR+EhvKGmseskgTtY2Q7kucYWWgToPHzyUyXry0iXfnBtfl5f/PaWPvPNW/zkOAQegJHltFE5dSaCskHqPVEnqpMAMEgkPtR1pKxyh/N0/vTToubtH1G3RmLjhM8ubKXfWB2mRa9ySOaWS2uT8lTZ0cI6I52Ngv7zAbW9mQVm1cpytu441P38XeXTlQu+e46nyh+bjLkMZRU0MCYTCJWZSG1y7cBWNURpxBlxqFBfEwGnGGhaYPSNwhpSv4DK+/vPynBk9MqRIiOWs8a2WJTm9a+cgh6SaMIMz9W1WjYHHMtv0wSmZdWB9gdsya/rcYVg7JoffCdqlD6ceTpiY59tM0PhJp5WNvra+BQkejCMyBarr8KKYDcZi8sDaCDKYFIGRk+FnSVXzyTO9JxBwF8DLc1dlLn65ooNEYN0fBsu21fTvL6PXnhxXlnLIqqhYYBian4lQ2Lk9ogiALsimiLC1QYfhlV1Hnxh7JfcMqxrpd7U2GFa5t9nOd7Kr+kg4uWvnCpromlJeXlq3Os3ZLOlrZBmNQf1ybVqpxhbA7mRIOCy1+esDOWhIyDv/+3Q7LRbsqH+rKRJ+nba+/+WW7II1s9vvVBuNr7KNF1WUM1bSt5f1Vq01jUVkKfnx8uoti3Or5rbd9782M61azJz/rFywYU/OyKqK1p5G2MS1Z18tGFDwTkvIxcK9RwaMP3a9/tbc62lPj/Nw5B9ey9Ehy/MY4oEqelgNleuyCgdXJlmc3fO5Ll56r5f+n/f+AWFf9jvBgaHpAAAAAElFTkSuQmCC);animation:spin 2s linear 0s infinite}div.mk-cute-theme h1{position:relative;font-size:30px;padding:12px 38px;margin:30px 0}div.mk-cute-theme h1:before{width:30px;height:30px;background-size:30px 30px}div.mk-cute-theme h2{position:relative;font-size:24px;padding:12px 36px;margin:28px 0}div.mk-cute-theme h2:before{width:28px;height:28px;background-size:28px 28px}div.mk-cute-theme h3{position:relative;font-size:18px;padding:4px 32px;margin:26px 0}div.mk-cute-theme h3:before{width:24px;height:24px;background-size:24px 24px}div.mk-cute-theme h4{position:relative;padding:4px 28px;font-size:16px;margin:22px 0}div.mk-cute-theme h4:before{width:20px;height:20px;background-size:20px 20px}div.mk-cute-theme h5{position:relative;padding:4px 26px;font-size:15px;margin:20px 0}div.mk-cute-theme h5:before{width:18px;height:18px;background-size:18px 18px}div.mk-cute-theme h6{position:relative;padding:4px 22px;font-size:14px;margin:16px 0}div.mk-cute-theme h6:before{width:16px;height:16px;background-size:16px 16px}@media (max-width: 720px){div.mk-cute-theme h1{font-size:24px}div.mk-cute-theme h2{font-size:20px}div.mk-cute-theme h3{font-size:18px}}.md-editor div.mk-cute-theme{--md-theme-link-color: $link-color;--md-theme-link-hover-color: $link-active-color}div.mk-cute-theme a{display:inline-block;border-bottom:1px solid #409eff}div.mk-cute-theme a:hover,div.mk-cute-theme a:active{border-bottom:1px solid #007bff}.mk-cute-theme ol li,.mk-cute-theme ul li{margin-bottom:0;list-style:inherit}.mk-cute-theme ol li .task-list-item,.mk-cute-theme ul li .task-list-item{list-style:none}.mk-cute-theme ol li .task-list-item ul,.mk-cute-theme ol li .task-list-item ol,.mk-cute-theme ul li .task-list-item ul,.mk-cute-theme ul li .task-list-item ol{margin-top:0}.mk-cute-theme ol ul,.mk-cute-theme ol ol,.mk-cute-theme ul ul,.mk-cute-theme ul ol{margin-top:3px}.mk-cute-theme ol li{padding-left:6px}.mk-cute-theme p{line-height:inherit;margin-top:22px;margin-bottom:22px}.md-editor div.mk-cute-theme{--md-theme-quote-color: #fff;--md-theme-quote-border: 4px solid #409eff;--md-theme-quote-bg-color: rgba(54, 172, 225, .75)}.md-editor-dark div.mk-cute-theme{--md-theme-quote-color: inherit;--md-theme-quote-border: 4px solid #265d97;--md-theme-quote-bg-color: rgba(18, 80, 108, .75)}div.mk-cute-theme blockquote{position:relative;padding:8px 26px;margin:16px 0;border-radius:5px}div.mk-cute-theme blockquote:before{content:"❝";top:10px;left:8px;color:#409eff;font-size:20px;line-height:1;font-weight:700;position:absolute;opacity:.7}div.mk-cute-theme blockquote:after{content:"❞";font-size:20px;position:absolute;right:8px;bottom:0;color:#409eff;opacity:.7}div.mk-cute-theme blockquote>p,div.mk-cute-theme blockquote ul li,div.mk-cute-theme blockquote ol li{color:var(--md-theme-quote-color)}.md-editor div.mk-cute-theme{--md-theme-table-color: #000;--md-theme-table-border-color: #f6f6f6;--md-theme-table-thead-bg-color: #f6f6f6;--md-theme-table-stripe-color: #fcfcfc}.md-editor-dark div.mk-cute-theme{--md-theme-table-color: inherit;--md-theme-table-border-color: #1c1c1c;--md-theme-table-thead-bg-color: rgba(28, 28, 28, .631372549);--md-theme-table-stripe-color: rgba(28, 28, 28, .631372549)}div.mk-cute-theme table{display:inline-block;width:auto;max-width:100%;overflow:auto;border:solid 1px var(--md-theme-table-border-color)}div.mk-cute-theme table thead{background-color:var(--md-theme-table-thead-bg-color);color:var(--md-theme-table-color);text-align:left}div.mk-cute-theme table tr th,div.mk-cute-theme table tr td{padding:12px 7px;line-height:24px;border:none}div.mk-cute-theme table tr td{min-width:120px}div.mk-cute-theme blockquote table tbody{color:var(--md-theme-color)}div.mk-cute-theme blockquote table tr{background-color:var(--md-theme-table-stripe-color)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.md-editor div.mk-cute-theme{--md-theme-color: #36ace1;background-image:linear-gradient(90deg,#323a4240 3%,#0000 3%),linear-gradient(360deg,#323a4240 3%,#0000 3%)}.md-editor-dark div.mk-cute-theme{background-image:linear-gradient(90deg,#d9eafb40 3%,#0000 3%),linear-gradient(360deg,#d9eafb40 3%,#0000 3%);--md-theme-bg-color-scrollbar-thumb: #4d4d4d}div.mk-cute-theme{word-break:break-word;line-height:1.75;font-weight:400;overflow-x:hidden;background-size:20px 20px;background-position:center center}div.mk-cute-theme hr{position:relative;width:98%;height:1px;border:none;margin-top:32px;margin-bottom:32px;background-image:linear-gradient(to right,#36ace1,#dff0fe,#36ace1);overflow:visible}div.mk-cute-theme del{color:#36ace1}.md-editor div.smart-blue-theme{--md-theme-code-inline-color: #d63200;--md-theme-code-inline-bg-color: #fff5f5;--md-theme-code-block-color: #333;--md-theme-code-block-bg-color: #f8f8f8;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}.md-editor-dark div.smart-blue-theme{--md-theme-code-inline-color: #e06c75;--md-theme-code-inline-bg-color: #1a1a1a;--md-theme-code-block-color: #999;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}div.smart-blue-theme code{overflow-x:auto;padding:.065em .4em}div.smart-blue-theme .md-editor-code pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}div.smart-blue-theme .md-editor-code pre code{padding:22px 12px;margin:0;word-break:normal}div.smart-blue-theme .md-editor-code pre code span[rn-wrapper]{top:22px}.md-editor div.smart-blue-theme{--md-theme-heading-color: #135ce0}div.smart-blue-theme h1,div.smart-blue-theme h2,div.smart-blue-theme h3,div.smart-blue-theme h4,div.smart-blue-theme h5,div.smart-blue-theme h6{padding:30px 0;margin:0}div.smart-blue-theme h1 a,div.smart-blue-theme h2 a,div.smart-blue-theme h3 a,div.smart-blue-theme h4 a,div.smart-blue-theme h5 a,div.smart-blue-theme h6 a{border:none}div.smart-blue-theme h1{position:relative;text-align:center;font-size:22px;margin:50px 0}div.smart-blue-theme h2{position:relative;font-size:20px;border-left:4px solid;padding:0 0 0 10px;margin:30px 0}div.smart-blue-theme h3{font-size:16px}.smart-blue-theme img{margin:0 auto}.md-editor div.smart-blue-theme{--md-theme-link-color: #036aca}.md-editor-dark div.smart-blue-theme{--md-theme-link-color: #2d7dc7}div.smart-blue-theme a{font-weight:400}.smart-blue-theme ul,.smart-blue-theme ol{margin-top:1em}.smart-blue-theme li{line-height:2;margin-bottom:0;list-style:inherit}.smart-blue-theme p{line-height:2;font-weight:400}.smart-blue-theme *+p{margin-top:16px}.md-editor div.smart-blue-theme{--md-theme-quote-color: #666;--md-theme-quote-bg-color: #fff9f9;--md-theme-quote-border-color: #b2aec5}.md-editor-dark div.smart-blue-theme{--md-theme-quote-color: #999;--md-theme-quote-bg-color: #2a2a2a;--md-theme-quote-border-color: #0063bb}div.smart-blue-theme blockquote{background-color:var(--md-theme-quote-bg-color);margin:2em 0;padding:2px 20px;border-left:4px solid var(--md-theme-quote-border-color)}div.smart-blue-theme blockquote p{color:var(--md-theme-quote-color);line-height:2}.md-editor div.smart-blue-theme{--md-theme-table-td-border-color: #dfe2e5;--md-theme-table-stripe-color: #f6f8fa}.md-editor-dark div.smart-blue-theme{--md-theme-table-td-border-color: #2d2d2d;--md-theme-table-stripe-color: #0c0c0c}div.smart-blue-theme table{border-collapse:collapse;margin:1rem 0;overflow-x:auto}div.smart-blue-theme table tr th,div.smart-blue-theme table tr td{padding:.6em 1em}div.smart-blue-theme blockquote table{line-height:initial}div.smart-blue-theme blockquote table tr th,div.smart-blue-theme blockquote table tr td{border-color:var(--md-theme-border-color-inset)}div.smart-blue-theme blockquote table tbody tr:nth-child(n){background-color:inherit}.md-editor .smart-blue-theme{--md-theme-color: #595959;background-image:linear-gradient(90deg,#3c0a1e0a 3%,#0000 3%),linear-gradient(360deg,#3c0a1e0a 3%,#0000 3%)}.md-editor-dark .smart-blue-theme{--md-theme-color: #999;background-image:linear-gradient(90deg,#cfcfcf0a 3%,#fff0 3%),linear-gradient(360deg,#cfcfcf0a 3%,#fff0 3%)}div.smart-blue-theme{color:var(--md-theme-color);font-family:-apple-system,system-ui,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;background-size:20px 20px;background-position:center center}div.smart-blue-theme strong,div.smart-blue-theme em strong{color:#036aca}div.smart-blue-theme hr{border-top:1px solid #135ce0}.md-editor-checkbox{cursor:pointer;width:12px;height:12px;border:1px solid var(--md-border-color);background-color:var(--md-bk-color-outstand);border-radius:2px;line-height:1;text-align:center}.md-editor-checkbox:after{content:"";font-weight:700}.md-editor-checkbox-checked:after{content:"✓"}.md-editor-divider{position:relative;display:inline-block;width:1px;top:.1em;height:.9em;margin:0 8px;background-color:var(--md-border-color)}.md-editor-dropdown{overflow:hidden;box-sizing:border-box;position:absolute;transition:all .3s;opacity:1;z-index:10000;background-color:var(--md-bk-color)}.md-editor-dropdown-hidden{opacity:0;z-index:-10000}.md-editor-dropdown-overlay{margin-top:6px}.md-editor-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20000;height:100%;background-color:var(--md-modal-mask)}.md-editor-modal{display:block;background-color:var(--md-bk-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;border-radius:3px;border:1px solid var(--md-border-color);position:fixed;z-index:20001;box-shadow:var(--md-modal-shadow)}.md-editor-modal-header{cursor:grab;display:flex;justify-content:space-between;padding:10px 24px;color:var(--md-color);font-weight:600;font-size:16px;line-height:22px;word-wrap:break-word;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-bottom:1px solid var(--md-border-color);position:relative}.md-editor-modal-body{padding:20px;font-size:14px;word-wrap:break-word;height:calc(100% - 43px);box-sizing:border-box}.md-editor-modal .md-editor-modal-func{position:absolute;top:10px;right:10px}.md-editor-modal .md-editor-modal-func .md-editor-modal-adjust,.md-editor-modal .md-editor-modal-func .md-editor-modal-close{cursor:pointer;width:24px;height:24px;line-height:24px;text-align:center;display:inline-block}.md-editor-modal .md-editor-modal-func .md-editor-modal-adjust{padding-right:10px}.animation{animation-duration:.15s;animation-fill-mode:forwards}@keyframes zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoom-in{animation-name:zoomIn;animation-duration:.15s;animation-fill-mode:forwards}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}.zoom-out{animation-name:zoomOut;animation-duration:.15s;animation-fill-mode:forwards}.md-editor-content{position:relative;display:flex;flex:1;height:0;flex-shrink:0}.md-editor-resize-operate{position:absolute;width:2px;height:100%;background-color:var(--md-bk-color);z-index:1;cursor:col-resize}.md-editor-input-wrapper{box-sizing:border-box}.md-editor-html{font-size:16px;word-break:break-all}.md-editor-footer{height:24px;flex-shrink:0;font-size:12px;color:var(--md-color);border-top:1px solid var(--md-border-color);display:flex;justify-content:space-between}.md-editor-footer-item{display:inline-flex;align-items:center;height:100%;padding:0 10px}.md-editor-footer-item+.md-editor-footer-item{padding-left:0}.md-editor-footer-label{padding-right:5px;line-height:1}.md-editor-clip{position:relative;display:flex;height:calc(100% - 52px)}.md-editor-clip-main,.md-editor-clip-preview{width:50%;height:100%;border:1px solid var(--md-border-color)}.md-editor-clip-main{margin-right:1em}.md-editor-clip-main .md-editor-clip-cropper{position:relative;width:100%;height:100%}.md-editor-clip-main .md-editor-clip-cropper .md-editor-clip-delete{position:absolute;top:0;right:0;font-size:0;background-color:var(--md-bk-color-outstand);border-bottom-left-radius:4px;color:var(--md-color);cursor:pointer}.md-editor-clip-main .md-editor-clip-upload{display:flex;align-items:center;justify-content:center;width:100%;height:100%;cursor:pointer}.md-editor-clip-main .md-editor-clip-upload .md-editor-icon,.md-editor-clip-main .md-editor-clip-upload .md-editor-iconfont{width:auto;height:40px;font-size:40px}.md-editor-clip-preview-target{width:100%;height:100%;overflow:hidden}.md-editor-form-item{margin-bottom:20px;text-align:center}.md-editor-form-item:last-of-type{margin-bottom:0}.md-editor-label{font-size:14px;color:var(--md-color);width:80px;text-align:center;display:inline-block}.md-editor-input{border-radius:4px;padding:4px 11px;color:var(--md-color);font-size:14px;line-height:1.5715;background-color:var(--md-bk-color);background-image:none;border:1px solid var(--md-border-color);transition:all .2s}.md-editor-input:focus,.md-editor-input:hover{border-color:var(--md-border-hover-color);outline:0}.md-editor-input:focus{border-color:var(--md-border-active-color)}.md-editor-btn{font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;border:1px solid var(--md-border-color);white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;height:32px;padding:0 15px;font-size:14px;border-radius:4px;transition:all .2s linear;color:var(--md-color);background-color:var(--md-bk-color);border-color:var(--md-border-color);margin-left:10px}.md-editor-btn:first-of-type{margin-left:0}.md-editor-btn:hover{color:var(--md-hover-color);background-color:var(--md-bk-color);border-color:var(--md-border-hover-color)}.md-editor-btn-row{width:100%}@media (max-width: 688px){.md-editor-modal-clip .md-editor-modal{max-width:calc(100% - 20px);max-height:calc(100% - 20px);margin:10px;left:0!important}.md-editor-modal-clip .md-editor-clip{flex-direction:column}.md-editor-modal-clip .md-editor-clip-main,.md-editor-modal-clip .md-editor-clip-preview{width:100%;height:0;flex:1}.md-editor-modal-clip .md-editor-clip-main{margin-bottom:1em}}.md-editor-menu{margin:0;padding:0;border-radius:3px;border:1px solid var(--md-border-color);background-color:inherit}.md-editor-menu-item{list-style:none;font-size:12px;color:var(--md-color);padding:4px 10px;cursor:pointer;line-height:16px}.md-editor-menu-item:first-of-type{padding-top:8px}.md-editor-menu-item:last-of-type{padding-bottom:8px}.md-editor-menu-item:hover{background-color:var(--md-bk-hover-color)}.md-editor-table-shape{padding:4px;border-radius:3px;border:1px solid var(--md-border-color);display:flex;flex-direction:column}.md-editor-table-shape-row{display:flex}.md-editor-table-shape-col{padding:2px;cursor:pointer}.md-editor-table-shape-col-default{width:16px;height:16px;background-color:#e0e0e0;border-radius:3px;transition:all .2s}.md-editor-table-shape-col-include{background-color:#aaa}.md-editor-toolbar-wrapper{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;flex-shrink:0;padding:4px;border-bottom:1px solid var(--md-border-color)}.md-editor-toolbar-wrapper::-webkit-scrollbar{height:0!important}.md-editor-toolbar-wrapper .md-editor-toolbar{display:flex;justify-content:space-between;align-items:center;box-sizing:content-box}.md-editor-toolbar-wrapper .md-editor-toolbar-item{display:flex;flex-direction:column;align-items:center;margin:0 2px;padding:0 2px;transition:all .3s;border-radius:3px;cursor:pointer;list-style:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:center}.md-editor-toolbar-wrapper .md-editor-toolbar-item-name{font-size:12px;word-break:keep-all;white-space:nowrap}.md-editor-toolbar-wrapper .md-editor-toolbar-item:hover,.md-editor-toolbar-wrapper .md-editor-toolbar-active{background-color:var(--md-bk-color-outstand)}.md-editor-toolbar-wrapper .md-editor-toolbar-left,.md-editor-toolbar-wrapper .md-editor-toolbar-right{padding:1px 0;display:flex;align-items:center}.md-editor-toolbar-wrapper .md-editor-stn .md-editor-toolbar-item{padding:0 6px}.md-editor-dark .md-editor-table-shape-col-default{background-color:#222}.md-editor-dark .md-editor-table-shape-col-include{background-color:#555}.md-editor .cm-editor{font-size:14px;height:100%}.md-editor .cm-editor.cm-focused{outline:none}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete{border-radius:3px}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul{border-radius:3px;min-width:-moz-fit-content;min-width:fit-content;max-width:-moz-fit-content;max-width:fit-content}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul li{background-color:var(--md-bk-color);color:var(--md-color);padding:4px 10px;line-height:16px}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul li .cm-completionIcon{width:auto}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete>ul li[aria-selected]{background-color:var(--md-bk-hover-color)}.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete .cm-completionInfo{margin-top:-2px;margin-left:3px;padding:4px 9px;border-radius:3px;overflow:hidden;background-color:var(--md-bk-hover-color);color:var(--md-color)}.md-editor .has-preview .cm-scroller{overflow-y:scroll}.md-editor .cm-scroller .cm-content[contenteditable=true]{margin:10px;min-height:calc(100% - 20px)}.md-editor .cm-scroller .cm-gutters+.cm-content[contenteditable=true]{margin:0;min-height:100%}.md-editor .cm-scroller .cm-line{line-height:inherit}.md-editor .ͼ1 .cm-scroller{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace;line-height:20px}.md-editor .cm-search .cm-textfield{border-radius:4px;padding:4px 11px;color:var(--md-color);font-size:10px;background-image:none;border:1px solid var(--md-border-color);transition:all .2s}.md-editor .cm-search .cm-textfield:focus,.md-editor .cm-search .cm-textfield:hover{border-color:var(--md-border-hover-color);outline:0}.md-editor .cm-search .cm-textfield:focus{border-color:var(--md-border-active-color)}.md-editor .cm-search .cm-button{font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;border:1px solid var(--md-border-color);white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;height:20px;padding:0 15px;font-size:10px;border-radius:4px;transition:all .2s linear;color:var(--md-color);background-color:inherit;background-image:none;border-color:var(--md-border-color)}.md-editor .cm-search .cm-button:first-of-type{margin-left:0}.md-editor .cm-search .cm-button:hover{color:var(--md-hover-color);background-color:inherit;border-color:var(--md-border-hover-color)}.md-editor .cm-search input[type=checkbox]{vertical-align:sub}.md-editor .cm-search input[type=checkbox]:after{display:block;content:"";font-weight:700;cursor:pointer;width:12px;height:12px;border:1px solid var(--md-border-color);background-color:var(--md-bk-color-outstand);border-radius:2px;line-height:1;text-align:center}.md-editor .cm-search input[type=checkbox]:checked:after{content:"✓";color:var(--md-color)}.md-editor .cm-search button[name=close]{color:inherit;cursor:pointer;right:6px}.md-editor-catalog-editor{--md-color: #3f4a54;--md-hover-color: #000;--md-bk-color: #fff;--md-bk-color-outstand: #f2f2f2;--md-bk-hover-color: #f5f7fa;--md-border-color: #e6e6e6;--md-border-hover-color: #b9b9b9;--md-border-active-color: #999;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000019;--md-scrollbar-bg-color: #e2e2e2;--md-scrollbar-thumb-color: #0000004d;--md-scrollbar-thumb-hover-color: #00000059;--md-scrollbar-thumb-active-color: #00000061;position:absolute;overflow:auto;top:0;right:0;height:100%;background-color:var(--md-bk-color-outstand);border-left:1px solid var(--md-border-color);width:200px;box-sizing:border-box;margin:0;padding:5px 10px;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";z-index:2}.md-editor-catalog-indicator{height:18px;width:4px;background-color:#73d13d;position:absolute;border-radius:4px;transition:top .3s}.md-editor-catalog>.md-editor-catalog-link{padding:5px 8px}.md-editor-catalog-link{padding:5px 0 5px 1em;display:flex;flex-direction:column}.md-editor-catalog-link span{display:inline-block;width:100%;position:relative;overflow:hidden;color:var(--md-color);white-space:nowrap;text-overflow:ellipsis;transition:color .3s;cursor:pointer;line-height:18px}.md-editor-catalog-link span:hover{color:#73d13d}.md-editor-catalog-wrapper>.md-editor-catalog-link{padding-top:5px;padding-bottom:5px}.md-editor-catalog-wrapper>.md-editor-catalog-link:first-of-type{padding-top:10px}.md-editor-catalog-wrapper>.md-editor-catalog-link:last-of-type{padding-bottom:0}.md-editor-catalog-active>span{color:#73d13d}.md-editor-catalog-dark{--md-color: #999;--md-hover-color: #bbb;--md-bk-color: #000;--md-bk-color-outstand: #333;--md-bk-hover-color: #1b1a1a;--md-border-color: #2d2d2d;--md-border-hover-color: #636262;--md-border-active-color: #777;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000066;--md-scrollbar-bg-color: #0f0f0f;--md-scrollbar-thumb-color: #2d2d2d;--md-scrollbar-thumb-hover-color: #3a3a3a;--md-scrollbar-thumb-active-color: #3a3a3a}.md-editor{--md-color: #3f4a54;--md-hover-color: #000;--md-bk-color: #fff;--md-bk-color-outstand: #f2f2f2;--md-bk-hover-color: #f5f7fa;--md-border-color: #e6e6e6;--md-border-hover-color: #b9b9b9;--md-border-active-color: #999;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000019;--md-scrollbar-bg-color: #e2e2e2;--md-scrollbar-thumb-color: #0000004d;--md-scrollbar-thumb-hover-color: #00000059;--md-scrollbar-thumb-active-color: #00000061;color:var(--md-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI Variable,Segoe UI,system-ui,ui-sans-serif,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";width:100%;height:500px;position:relative;box-sizing:border-box;border:1px solid var(--md-border-color);display:flex;flex-direction:column;overflow:hidden;background-color:var(--md-bk-color)}.md-editor ::-webkit-scrollbar{width:6px;height:6px}.md-editor ::-webkit-scrollbar-corner,.md-editor ::-webkit-scrollbar-track{background-color:var(--md-scrollbar-bg-color)}.md-editor ::-webkit-scrollbar-thumb{border-radius:2px;background-color:var(--md-scrollbar-thumb-color)}.md-editor ::-webkit-scrollbar-button:vertical{display:none}.md-editor ::-webkit-scrollbar-thumb:vertical:hover{background-color:var(--md-scrollbar-thumb-hover-color)}.md-editor ::-webkit-scrollbar-thumb:vertical:active{background-color:var(--md-scrollbar-thumb-active-color)}.md-editor .md-editor-fullscreen{position:fixed!important;top:0;right:0;bottom:0;left:0;width:auto!important;height:auto!important;z-index:10000}svg.md-editor-icon{width:16px;height:16px;padding:4px;fill:none;overflow:hidden;display:block}.md-editor .lucide-list-icon,.md-editor .lucide-list-ordered-icon,.md-editor .lucide-list-todo-icon{width:18px;height:18px;padding:3px}.md-editor-preview-wrapper{position:relative;flex:1;box-sizing:border-box;overflow:auto;padding:10px 20px}.md-editor-preview{font-size:16px;word-break:break-all;overflow:hidden}.md-editor-modal-container{--md-color: #3f4a54;--md-hover-color: #000;--md-bk-color: #fff;--md-bk-color-outstand: #f2f2f2;--md-bk-hover-color: #f5f7fa;--md-border-color: #e6e6e6;--md-border-hover-color: #b9b9b9;--md-border-active-color: #999;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000019;--md-scrollbar-bg-color: #e2e2e2;--md-scrollbar-thumb-color: #0000004d;--md-scrollbar-thumb-hover-color: #00000059;--md-scrollbar-thumb-active-color: #00000061;color:var(--md-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI Variable,Segoe UI,system-ui,ui-sans-serif,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"}.md-editor-modal-container ::-webkit-scrollbar{width:6px;height:6px}.md-editor-modal-container ::-webkit-scrollbar-corner,.md-editor-modal-container ::-webkit-scrollbar-track{background-color:var(--md-scrollbar-bg-color)}.md-editor-modal-container ::-webkit-scrollbar-thumb{border-radius:2px;background-color:var(--md-scrollbar-thumb-color)}.md-editor-modal-container ::-webkit-scrollbar-button:vertical{display:none}.md-editor-modal-container ::-webkit-scrollbar-thumb:vertical:hover{background-color:var(--md-scrollbar-thumb-hover-color)}.md-editor-modal-container ::-webkit-scrollbar-thumb:vertical:active{background-color:var(--md-scrollbar-thumb-active-color)}.md-editor-modal-container .lucide-xicon{width:20px;height:20px;padding:2px}.md-editor-previewOnly{border:none;height:auto}.md-editor-previewOnly .md-editor-content{height:100%}.md-editor-previewOnly .md-editor-preview{padding:0}.md-editor-dark,.md-editor-modal-container[data-theme=dark]{--md-color: #999;--md-hover-color: #bbb;--md-bk-color: #000;--md-bk-color-outstand: #333;--md-bk-hover-color: #1b1a1a;--md-border-color: #2d2d2d;--md-border-hover-color: #636262;--md-border-active-color: #777;--md-modal-mask: #00000073;--md-modal-shadow: 0px 6px 24px 2px #00000066;--md-scrollbar-bg-color: #0f0f0f;--md-scrollbar-thumb-color: #2d2d2d;--md-scrollbar-thumb-hover-color: #3a3a3a;--md-scrollbar-thumb-active-color: #3a3a3a}.medium-zoom-overlay,.medium-zoom-image--opened{z-index:100001}.md-editor-fullscreen{position:fixed!important;top:0;right:0;bottom:0;left:0;width:auto!important;height:auto!important;z-index:10000}[data-v-071fa62a] .md-editor-toolbar-item svg.md-editor-icon{height:1.5rem;width:1.5rem}.button-disabled[data-v-654ff384]{opacity:.5;cursor:not-allowed}.pagination-button[data-v-654ff384]{--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}.pagination-button[data-v-654ff384]:hover{--tw-bg-opacity: 1;background-color:rgb(78 78 78 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}.page-button[data-v-654ff384]{height:2.5rem;width:2.5rem;padding:0}.md-editor-dark[data-v-1848d10c]{font-size:.875rem;line-height:1.25rem;--tw-bg-opacity: 1;background-color:rgb(53 53 53 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}[data-v-1848d10c] .md-editor-preview-wrapper,[data-v-1848d10c] .md-editor-preview,[data-v-1848d10c] .md-editor-preview p,[data-v-1848d10c] .md-editor-preview li,[data-v-1848d10c] .md-editor-preview table,[data-v-1848d10c] .md-editor-preview h1,[data-v-1848d10c] .md-editor-preview h2,[data-v-1848d10c] .md-editor-preview h3,[data-v-1848d10c] .md-editor-preview h4,[data-v-1848d10c] .md-editor-preview h5,[data-v-1848d10c] .md-editor-preview h6{--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}[data-v-1848d10c] .md-editor-preview code{--tw-bg-opacity: 1;background-color:rgb(66 66 66 / var(--tw-bg-opacity))}[data-v-1848d10c] .md-editor-preview code{--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}[data-v-1848d10c] .md-editor-preview blockquote{border-left-width:4px}[data-v-1848d10c] .md-editor-preview blockquote{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}[data-v-1848d10c] .md-editor-preview blockquote{--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}[data-v-1848d10c] [role=tablist]{display:inline-flex;min-width:-moz-min-content;min-width:min-content}[data-v-1848d10c] [data-radix-scroll-area-viewport]{width:100%}.Checkpoint[data-v-1848d10c]{background:#6d28d966}.LoRA[data-v-1848d10c]{background:#f43f5e66}.Controlnet[data-v-1848d10c]{background:#fff6}.VAE[data-v-1848d10c]{background:#eab30866}.Upscaler[data-v-1848d10c]{background:#45f43f66}.Embeddings[data-v-1848d10c]{background:#001aff66}.Workflow[data-v-1848d10c]{background:#00b2ff66}`)),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})(); +(function(Vt,sn){typeof exports=="object"&&typeof module<"u"?sn(exports):typeof define=="function"&&define.amd?define(["exports"],sn):(Vt=typeof globalThis<"u"?globalThis:Vt||self,sn(Vt.bizyAirLib={}))})(this,function(Vt){"use strict";var D8e=Object.defineProperty;var _H=Vt=>{throw TypeError(Vt)};var N8e=(Vt,sn,mn)=>sn in Vt?D8e(Vt,sn,{enumerable:!0,configurable:!0,writable:!0,value:mn}):Vt[sn]=mn;var jt=(Vt,sn,mn)=>N8e(Vt,typeof sn!="symbol"?sn+"":sn,mn),qC=(Vt,sn,mn)=>sn.has(Vt)||_H("Cannot "+mn);var he=(Vt,sn,mn)=>(qC(Vt,sn,"read from private field"),mn?mn.call(Vt):sn.get(Vt)),on=(Vt,sn,mn)=>sn.has(Vt)?_H("Cannot add the same private member more than once"):sn instanceof WeakSet?sn.add(Vt):sn.set(Vt,mn),Et=(Vt,sn,mn,Yt)=>(qC(Vt,sn,"write to private field"),Yt?Yt.call(Vt,mn):sn.set(Vt,mn),mn),it=(Vt,sn,mn)=>(qC(Vt,sn,"access private method"),mn);var hS=(Vt,sn,mn,Yt)=>({set _($l){Et(Vt,sn,$l,mn)},get _(){return he(Vt,sn,Yt)}});var lH,bs,ff,cH,uH,To,da,wo,xo,pf,hf,yr,$o,fr,Cn,Ct,yi,Oa,si,Ar,Po,Ir,Ro,Qo,fa,ko,Cc,vi,Ze,GC,ld,El,km,pa,bH,cd,mf,Cm,Ic,Dc,ZC,mS,gS,An,HC,Dm,Nc,KC;var sn={};/** +* @vue/shared v3.5.12 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function mn(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Yt=sn.NODE_ENV!=="production"?Object.freeze({}):{},$l=sn.NODE_ENV!=="production"?Object.freeze([]):[],pr=()=>{},EH=()=>!1,Sf=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Nm=e=>e.startsWith("onUpdate:"),Bn=Object.assign,_S=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},TH=Object.prototype.hasOwnProperty,Jt=(e,t)=>TH.call(e,t),ut=Array.isArray,Mc=e=>Ef(e)==="[object Map]",Mm=e=>Ef(e)==="[object Set]",eA=e=>Ef(e)==="[object Date]",vt=e=>typeof e=="function",Tn=e=>typeof e=="string",Za=e=>typeof e=="symbol",en=e=>e!==null&&typeof e=="object",bS=e=>(en(e)||vt(e))&&vt(e.then)&&vt(e.catch),tA=Object.prototype.toString,Ef=e=>tA.call(e),yS=e=>Ef(e).slice(8,-1),nA=e=>Ef(e)==="[object Object]",vS=e=>Tn(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Tf=mn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),wH=mn("bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"),Lm=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},xH=/-(\w)/g,Dr=Lm(e=>e.replace(xH,(t,n)=>n?n.toUpperCase():"")),$H=/\B([A-Z])/g,Ss=Lm(e=>e.replace($H,"-$1").toLowerCase()),Lc=Lm(e=>e.charAt(0).toUpperCase()+e.slice(1)),Es=Lm(e=>e?`on${Lc(e)}`:""),Pl=(e,t)=>!Object.is(e,t),Od=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Xm=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let rA;const wf=()=>rA||(rA=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ei(e){if(ut(e)){const t={};for(let n=0;n{if(n){const r=n.split(RH);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function xt(e){let t="";if(Tn(e))t=e;else if(ut(e))for(let n=0;nzm(n,t))}const aA=e=>!!(e&&e.__v_isRef===!0),Ot=e=>Tn(e)?e:e==null?"":ut(e)||en(e)&&(e.toString===tA||!vt(e.toString))?aA(e)?Ot(e.value):JSON.stringify(e,oA,2):String(e),oA=(e,t)=>aA(t)?oA(e,t.value):Mc(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,i],a)=>(n[SS(r,a)+" =>"]=i,n),{})}:Mm(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>SS(n))}:Za(t)?SS(t):en(t)&&!ut(t)&&!nA(t)?String(t):t,SS=(e,t="")=>{var n;return Za(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};var On={};function _a(e,...t){console.warn(`[Vue warn] ${e}`,...t)}let li;class sA{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=li,!t&&li&&(this.index=(li.scopes||(li.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)return;if($f){let t=$f;for($f=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;xf;){let t=xf;for(xf=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function dA(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function OA(e){let t,n=e.depsTail,r=n;for(;r;){const i=r.prevDep;r.version===-1?(r===n&&(n=i),PS(r),zH(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=i}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&&(fA(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function fA(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Pf))return;e.globalVersion=Pf;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!$S(e)){e.flags&=-3;return}const n=fn,r=Ha;fn=e,Ha=!0;try{dA(e);const i=e.fn(e._value);(t.version===0||Pl(i,e._value))&&(e._value=i,t.version++)}catch(i){throw t.version++,i}finally{fn=n,Ha=r,OA(e),e.flags&=-3}}function PS(e,t=!1){const{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),On.NODE_ENV!=="production"&&n.subsHead===e&&(n.subsHead=i),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let a=n.computed.deps;a;a=a.nextDep)PS(a,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function zH(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ha=!0;const pA=[];function Ts(){pA.push(Ha),Ha=!1}function ws(){const e=pA.pop();Ha=e===void 0?!0:e}function hA(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=fn;fn=void 0;try{t()}finally{fn=n}}}let Pf=0,BH=class{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 Wm{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,On.NODE_ENV!=="production"&&(this.subsHead=void 0)}track(t){if(!fn||!Ha||fn===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==fn)n=this.activeLink=new BH(fn,this),fn.deps?(n.prevDep=fn.depsTail,fn.depsTail.nextDep=n,fn.depsTail=n):fn.deps=fn.depsTail=n,mA(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=fn.depsTail,n.nextDep=void 0,fn.depsTail.nextDep=n,fn.depsTail=n,fn.deps===n&&(fn.deps=r)}return On.NODE_ENV!=="production"&&fn.onTrack&&fn.onTrack(Bn({effect:fn},t)),n}trigger(t){this.version++,Pf++,this.notify(t)}notify(t){wS();try{if(On.NODE_ENV!=="production")for(let n=this.subsHead;n;n=n.nextSub)n.sub.onTrigger&&!(n.sub.flags&8)&&n.sub.onTrigger(Bn({effect:n.sub},t));for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{xS()}}}function mA(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)mA(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),On.NODE_ENV!=="production"&&e.dep.subsHead===void 0&&(e.dep.subsHead=e),e.dep.subs=e}}const Vm=new WeakMap,Uc=Symbol(On.NODE_ENV!=="production"?"Object iterate":""),RS=Symbol(On.NODE_ENV!=="production"?"Map keys iterate":""),Rf=Symbol(On.NODE_ENV!=="production"?"Array iterate":"");function hr(e,t,n){if(Ha&&fn){let r=Vm.get(e);r||Vm.set(e,r=new Map);let i=r.get(n);i||(r.set(n,i=new Wm),i.map=r,i.key=n),On.NODE_ENV!=="production"?i.track({target:e,type:t,key:n}):i.track()}}function Ao(e,t,n,r,i,a){const o=Vm.get(e);if(!o){Pf++;return}const s=l=>{l&&(On.NODE_ENV!=="production"?l.trigger({target:e,type:t,key:n,newValue:r,oldValue:i,oldTarget:a}):l.trigger())};if(wS(),t==="clear")o.forEach(s);else{const l=ut(e),c=l&&vS(n);if(l&&n==="length"){const u=Number(r);o.forEach((d,O)=>{(O==="length"||O===Rf||!Za(O)&&O>=u)&&s(d)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),c&&s(o.get(Rf)),t){case"add":l?c&&s(o.get("length")):(s(o.get(Uc)),Mc(e)&&s(o.get(RS)));break;case"delete":l||(s(o.get(Uc)),Mc(e)&&s(o.get(RS)));break;case"set":Mc(e)&&s(o.get(Uc));break}}xS()}function FH(e,t){const n=Vm.get(e);return n&&n.get(t)}function fd(e){const t=Qt(e);return t===e?t:(hr(t,"iterate",Rf),ci(e)?t:t.map(jr))}function Ym(e){return hr(e=Qt(e),"iterate",Rf),e}const WH={__proto__:null,[Symbol.iterator](){return QS(this,Symbol.iterator,jr)},concat(...e){return fd(this).concat(...e.map(t=>ut(t)?fd(t):t))},entries(){return QS(this,"entries",e=>(e[1]=jr(e[1]),e))},every(e,t){return xs(this,"every",e,t,void 0,arguments)},filter(e,t){return xs(this,"filter",e,t,n=>n.map(jr),arguments)},find(e,t){return xs(this,"find",e,t,jr,arguments)},findIndex(e,t){return xs(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return xs(this,"findLast",e,t,jr,arguments)},findLastIndex(e,t){return xs(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return xs(this,"forEach",e,t,void 0,arguments)},includes(...e){return kS(this,"includes",e)},indexOf(...e){return kS(this,"indexOf",e)},join(e){return fd(this).join(e)},lastIndexOf(...e){return kS(this,"lastIndexOf",e)},map(e,t){return xs(this,"map",e,t,void 0,arguments)},pop(){return Qf(this,"pop")},push(...e){return Qf(this,"push",e)},reduce(e,...t){return gA(this,"reduce",e,t)},reduceRight(e,...t){return gA(this,"reduceRight",e,t)},shift(){return Qf(this,"shift")},some(e,t){return xs(this,"some",e,t,void 0,arguments)},splice(...e){return Qf(this,"splice",e)},toReversed(){return fd(this).toReversed()},toSorted(e){return fd(this).toSorted(e)},toSpliced(...e){return fd(this).toSpliced(...e)},unshift(...e){return Qf(this,"unshift",e)},values(){return QS(this,"values",jr)}};function QS(e,t,n){const r=Ym(e),i=r[t]();return r!==e&&!ci(e)&&(i._next=i.next,i.next=()=>{const a=i._next();return a.value&&(a.value=n(a.value)),a}),i}const VH=Array.prototype;function xs(e,t,n,r,i,a){const o=Ym(e),s=o!==e&&!ci(e),l=o[t];if(l!==VH[t]){const d=l.apply(e,a);return s?jr(d):d}let c=n;o!==e&&(s?c=function(d,O){return n.call(this,jr(d),O,e)}:n.length>2&&(c=function(d,O){return n.call(this,d,O,e)}));const u=l.call(o,c,r);return s&&i?i(u):u}function gA(e,t,n,r){const i=Ym(e);let a=n;return i!==e&&(ci(e)?n.length>3&&(a=function(o,s,l){return n.call(this,o,s,l,e)}):a=function(o,s,l){return n.call(this,o,jr(s),l,e)}),i[t](a,...r)}function kS(e,t,n){const r=Qt(e);hr(r,"iterate",Rf);const i=r[t](...n);return(i===-1||i===!1)&&kf(n[0])?(n[0]=Qt(n[0]),r[t](...n)):i}function Qf(e,t,n=[]){Ts(),wS();const r=Qt(e)[t].apply(e,n);return xS(),ws(),r}const YH=mn("__proto__,__v_isRef,__isVue"),_A=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Za));function jH(e){Za(e)||(e=String(e));const t=Qt(this);return hr(t,"has",e),t.hasOwnProperty(e)}class bA{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const i=this._isReadonly,a=this._isShallow;if(n==="__v_isReactive")return!i;if(n==="__v_isReadonly")return i;if(n==="__v_isShallow")return a;if(n==="__v_raw")return r===(i?a?xA:wA:a?TA:EA).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const o=ut(t);if(!i){let l;if(o&&(l=WH[n]))return l;if(n==="hasOwnProperty")return jH}const s=Reflect.get(t,n,ln(t)?t:r);return(Za(n)?_A.has(n):YH(n))||(i||hr(t,"get",n),a)?s:ln(s)?o&&vS(n)?s:s.value:en(s)?i?Zm(s):Hn(s):s}}class yA extends bA{constructor(t=!1){super(!1,t)}set(t,n,r,i){let a=t[n];if(!this._isShallow){const l=$s(a);if(!ci(r)&&!$s(r)&&(a=Qt(a),r=Qt(r)),!ut(t)&&ln(a)&&!ln(r))return l?!1:(a.value=r,!0)}const o=ut(t)&&vS(n)?Number(n)e,jm=e=>Reflect.getPrototypeOf(e);function KH(e,t,n){return function(...r){const i=this.__v_raw,a=Qt(i),o=Mc(a),s=e==="entries"||e===Symbol.iterator&&o,l=e==="keys"&&o,c=i[e](...r),u=n?CS:t?AS:jr;return!t&&hr(a,"iterate",l?RS:Uc),{next(){const{value:d,done:O}=c.next();return O?{value:d,done:O}:{value:s?[u(d[0]),u(d[1])]:u(d),done:O}},[Symbol.iterator](){return this}}}}function qm(e){return function(...t){if(On.NODE_ENV!=="production"){const n=t[0]?`on key "${t[0]}" `:"";_a(`${Lc(e)} operation ${n}failed: target is readonly.`,Qt(this))}return e==="delete"?!1:e==="clear"?void 0:this}}function JH(e,t){const n={get(i){const a=this.__v_raw,o=Qt(a),s=Qt(i);e||(Pl(i,s)&&hr(o,"get",i),hr(o,"get",s));const{has:l}=jm(o),c=t?CS:e?AS:jr;if(l.call(o,i))return c(a.get(i));if(l.call(o,s))return c(a.get(s));a!==o&&a.get(i)},get size(){const i=this.__v_raw;return!e&&hr(Qt(i),"iterate",Uc),Reflect.get(i,"size",i)},has(i){const a=this.__v_raw,o=Qt(a),s=Qt(i);return e||(Pl(i,s)&&hr(o,"has",i),hr(o,"has",s)),i===s?a.has(i):a.has(i)||a.has(s)},forEach(i,a){const o=this,s=o.__v_raw,l=Qt(s),c=t?CS:e?AS:jr;return!e&&hr(l,"iterate",Uc),s.forEach((u,d)=>i.call(a,c(u),c(d),o))}};return Bn(n,e?{add:qm("add"),set:qm("set"),delete:qm("delete"),clear:qm("clear")}:{add(i){!t&&!ci(i)&&!$s(i)&&(i=Qt(i));const a=Qt(this);return jm(a).has.call(a,i)||(a.add(i),Ao(a,"add",i,i)),this},set(i,a){!t&&!ci(a)&&!$s(a)&&(a=Qt(a));const o=Qt(this),{has:s,get:l}=jm(o);let c=s.call(o,i);c?On.NODE_ENV!=="production"&&SA(o,s,i):(i=Qt(i),c=s.call(o,i));const u=l.call(o,i);return o.set(i,a),c?Pl(a,u)&&Ao(o,"set",i,a,u):Ao(o,"add",i,a),this},delete(i){const a=Qt(this),{has:o,get:s}=jm(a);let l=o.call(a,i);l?On.NODE_ENV!=="production"&&SA(a,o,i):(i=Qt(i),l=o.call(a,i));const c=s?s.call(a,i):void 0,u=a.delete(i);return l&&Ao(a,"delete",i,void 0,c),u},clear(){const i=Qt(this),a=i.size!==0,o=On.NODE_ENV!=="production"?Mc(i)?new Map(i):new Set(i):void 0,s=i.clear();return a&&Ao(i,"clear",void 0,void 0,o),s}}),["keys","values","entries",Symbol.iterator].forEach(i=>{n[i]=KH(i,e,t)}),n}function Gm(e,t){const n=JH(e,t);return(r,i,a)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?r:Reflect.get(Jt(n,i)&&i in r?n:r,i,a)}const eK={get:Gm(!1,!1)},tK={get:Gm(!1,!0)},nK={get:Gm(!0,!1)},rK={get:Gm(!0,!0)};function SA(e,t,n){const r=Qt(n);if(r!==n&&t.call(e,r)){const i=yS(e);_a(`Reactive ${i} contains both the raw and reactive versions of the same object${i==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}const EA=new WeakMap,TA=new WeakMap,wA=new WeakMap,xA=new WeakMap;function iK(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function aK(e){return e.__v_skip||!Object.isExtensible(e)?0:iK(yS(e))}function Hn(e){return $s(e)?e:Hm(e,!1,qH,eK,EA)}function oK(e){return Hm(e,!1,ZH,tK,TA)}function Zm(e){return Hm(e,!0,GH,nK,wA)}function Yr(e){return Hm(e,!0,HH,rK,xA)}function Hm(e,t,n,r,i){if(!en(e))return On.NODE_ENV!=="production"&&_a(`value cannot be made ${t?"readonly":"reactive"}: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=i.get(e);if(a)return a;const o=aK(e);if(o===0)return e;const s=new Proxy(e,o===2?r:n);return i.set(e,s),s}function Io(e){return $s(e)?Io(e.__v_raw):!!(e&&e.__v_isReactive)}function $s(e){return!!(e&&e.__v_isReadonly)}function ci(e){return!!(e&&e.__v_isShallow)}function kf(e){return e?!!e.__v_raw:!1}function Qt(e){const t=e&&e.__v_raw;return t?Qt(t):e}function Ps(e){return!Jt(e,"__v_skip")&&Object.isExtensible(e)&&Um(e,"__v_skip",!0),e}const jr=e=>en(e)?Hn(e):e,AS=e=>en(e)?Zm(e):e;function ln(e){return e?e.__v_isRef===!0:!1}function xe(e){return $A(e,!1)}function Rs(e){return $A(e,!0)}function $A(e,t){return ln(e)?e:new sK(e,t)}class sK{constructor(t,n){this.dep=new Wm,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Qt(t),this._value=n?t:jr(t),this.__v_isShallow=n}get value(){return On.NODE_ENV!=="production"?this.dep.track({target:this,type:"get",key:"value"}):this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||ci(t)||$s(t);t=r?t:Qt(t),Pl(t,n)&&(this._rawValue=t,this._value=r?t:jr(t),On.NODE_ENV!=="production"?this.dep.trigger({target:this,type:"set",key:"value",newValue:t,oldValue:n}):this.dep.trigger())}}function D(e){return ln(e)?e.value:e}const lK={get:(e,t,n)=>t==="__v_raw"?e:D(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const i=e[t];return ln(i)&&!ln(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function PA(e){return Io(e)?e:new Proxy(e,lK)}class cK{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Wm,{get:r,set:i}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=i}get value(){return this._value=this._get()}set value(t){this._set(t)}}function uK(e){return new cK(e)}function $n(e){On.NODE_ENV!=="production"&&!kf(e)&&_a("toRefs() expects a reactive object but received a plain one.");const t=ut(e)?new Array(e.length):{};for(const n in e)t[n]=RA(e,n);return t}class dK{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,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 FH(Qt(this._object),this._key)}}class OK{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 ui(e,t,n){return ln(e)?e:vt(e)?new OK(e):en(e)&&arguments.length>1?RA(e,t,n):xe(e)}function RA(e,t,n){const r=e[t];return ln(r)?r:new dK(e,t,n)}class fK{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Wm(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Pf-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&fn!==this)return uA(this,!0),!0}get value(){const t=On.NODE_ENV!=="production"?this.dep.track({target:this,type:"get",key:"value"}):this.dep.track();return fA(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter?this.setter(t):On.NODE_ENV!=="production"&&_a("Write operation failed: computed value is readonly")}}function pK(e,t,n=!1){let r,i;vt(e)?r=e:(r=e.get,i=e.set);const a=new fK(r,i,n);return On.NODE_ENV!=="production"&&t&&!n&&(a.onTrack=t.onTrack,a.onTrigger=t.onTrigger),a}const Km={},Jm=new WeakMap;let Xc;function hK(e,t=!1,n=Xc){if(n){let r=Jm.get(n);r||Jm.set(n,r=[]),r.push(e)}else On.NODE_ENV!=="production"&&!t&&_a("onWatcherCleanup() was called when there was no active watcher to associate with.")}function mK(e,t,n=Yt){const{immediate:r,deep:i,once:a,scheduler:o,augmentJob:s,call:l}=n,c=v=>{(n.onWarn||_a)("Invalid watch source: ",v,"A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.")},u=v=>i?v:ci(v)||i===!1||i===0?Qs(v,1):Qs(v);let d,O,f,p,h=!1,m=!1;if(ln(e)?(O=()=>e.value,h=ci(e)):Io(e)?(O=()=>u(e),h=!0):ut(e)?(m=!0,h=e.some(v=>Io(v)||ci(v)),O=()=>e.map(v=>{if(ln(v))return v.value;if(Io(v))return u(v);if(vt(v))return l?l(v,2):v();On.NODE_ENV!=="production"&&c(v)})):vt(e)?t?O=l?()=>l(e,2):e:O=()=>{if(f){Ts();try{f()}finally{ws()}}const v=Xc;Xc=d;try{return l?l(e,3,[p]):e(p)}finally{Xc=v}}:(O=pr,On.NODE_ENV!=="production"&&c(e)),t&&i){const v=O,E=i===!0?1/0:i;O=()=>Qs(v(),E)}const g=Fm(),_=()=>{d.stop(),g&&_S(g.effects,d)};if(a&&t){const v=t;t=(...E)=>{v(...E),_()}}let b=m?new Array(e.length).fill(Km):Km;const y=v=>{if(!(!(d.flags&1)||!d.dirty&&!v))if(t){const E=d.run();if(i||h||(m?E.some((w,T)=>Pl(w,b[T])):Pl(E,b))){f&&f();const w=Xc;Xc=d;try{const T=[E,b===Km?void 0:m&&b[0]===Km?[]:b,p];l?l(t,3,T):t(...T),b=E}finally{Xc=w}}}else d.run()};return s&&s(y),d=new lA(O),d.scheduler=o?()=>o(y,!1):y,p=v=>hK(v,!1,d),f=d.onStop=()=>{const v=Jm.get(d);if(v){if(l)l(v,4);else for(const E of v)E();Jm.delete(d)}},On.NODE_ENV!=="production"&&(d.onTrack=n.onTrack,d.onTrigger=n.onTrigger),t?r?y(!0):b=d.run():o?o(y.bind(null,!0),!0):d.run(),_.pause=d.pause.bind(d),_.resume=d.resume.bind(d),_.stop=_,_}function Qs(e,t=1/0,n){if(t<=0||!en(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ln(e))Qs(e.value,t,n);else if(ut(e))for(let r=0;r{Qs(r,t,n)});else if(nA(e)){for(const r in e)Qs(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Qs(e[r],t,n)}return e}var ke={};const zc=[];function eg(e){zc.push(e)}function tg(){zc.pop()}let IS=!1;function ze(e,...t){if(IS)return;IS=!0,Ts();const n=zc.length?zc[zc.length-1].component:null,r=n&&n.appContext.config.warnHandler,i=gK();if(r)pd(r,n,11,[e+t.map(a=>{var o,s;return(s=(o=a.toString)==null?void 0:o.call(a))!=null?s:JSON.stringify(a)}).join(""),n&&n.proxy,i.map(({vnode:a})=>`at <${bg(n,a.type)}>`).join(` +`),i]);else{const a=[`[Vue warn]: ${e}`,...t];i.length&&a.push(` +`,..._K(i)),console.warn(...a)}ws(),IS=!1}function gK(){let e=zc[zc.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const r=e.component&&e.component.parent;e=r&&r.vnode}return t}function _K(e){const t=[];return e.forEach((n,r)=>{t.push(...r===0?[]:[` +`],...bK(n))}),t}function bK({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",r=e.component?e.component.parent==null:!1,i=` at <${bg(e.component,e.type,r)}`,a=">"+n;return e.props?[i,...yK(e.props),a]:[i+a]}function yK(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(r=>{t.push(...QA(r,e[r]))}),n.length>3&&t.push(" ..."),t}function QA(e,t,n){return Tn(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:ln(t)?(t=QA(e,Qt(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):vt(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=Qt(t),n?t:[`${e}=`,t])}const DS={sp:"serverPrefetch hook",bc:"beforeCreate hook",c:"created hook",bm:"beforeMount hook",m:"mounted hook",bu:"beforeUpdate hook",u:"updated",bum:"beforeUnmount hook",um:"unmounted hook",a:"activated hook",da:"deactivated hook",ec:"errorCaptured hook",rtc:"renderTracked hook",rtg:"renderTriggered hook",0:"setup function",1:"render function",2:"watcher getter",3:"watcher callback",4:"watcher cleanup function",5:"native event handler",6:"component event handler",7:"vnode hook",8:"directive hook",9:"transition hook",10:"app errorHandler",11:"app warnHandler",12:"ref function",13:"async component loader",14:"scheduler flush",15:"component update",16:"app unmount cleanup function"};function pd(e,t,n,r){try{return r?e(...r):e()}catch(i){Cf(i,t,n)}}function Do(e,t,n,r){if(vt(e)){const i=pd(e,t,n,r);return i&&bS(i)&&i.catch(a=>{Cf(a,t,n)}),i}if(ut(e)){const i=[];for(let a=0;a>>1,i=di[r],a=Af(i);a=Af(n)?di.push(e):di.splice(EK(t),0,e),e.flags|=1,CA()}}function CA(){ng||(ng=kA.then(NA))}function AA(e){ut(e)?hd.push(...e):Rl&&e.id===-1?Rl.splice(md+1,0,e):e.flags&1||(hd.push(e),e.flags|=1),CA()}function IA(e,t,n=No+1){for(ke.NODE_ENV!=="production"&&(t=t||new Map);nAf(n)-Af(r));if(hd.length=0,Rl){Rl.push(...t);return}for(Rl=t,ke.NODE_ENV!=="production"&&(e=e||new Map),md=0;mde.id==null?e.flags&2?-1:1/0:e.id;function NA(e){ke.NODE_ENV!=="production"&&(e=e||new Map);const t=ke.NODE_ENV!=="production"?n=>NS(e,n):pr;try{for(No=0;NoSK){const r=t.i,i=r&&uE(r.type);return Cf(`Maximum recursive updates exceeded${i?` in component <${i}>`:""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`,null,10),!0}return e.set(t,n+1),!1}let Ka=!1;const ig=new Map;ke.NODE_ENV!=="production"&&(wf().__VUE_HMR_RUNTIME__={createRecord:MS(MA),rerender:MS(xK),reload:MS($K)});const Bc=new Map;function TK(e){const t=e.type.__hmrId;let n=Bc.get(t);n||(MA(t,e.type),n=Bc.get(t)),n.instances.add(e)}function wK(e){Bc.get(e.type.__hmrId).instances.delete(e)}function MA(e,t){return Bc.has(e)?!1:(Bc.set(e,{initialDef:ag(t),instances:new Set}),!0)}function ag(e){return BI(e)?e.__vccOpts:e}function xK(e,t){const n=Bc.get(e);n&&(n.initialDef.render=t,[...n.instances].forEach(r=>{t&&(r.render=t,ag(r.type).render=t),r.renderCache=[],Ka=!0,r.update(),Ka=!1}))}function $K(e,t){const n=Bc.get(e);if(!n)return;t=ag(t),LA(n.initialDef,t);const r=[...n.instances];for(let i=0;i{Ka=!0,a.parent.update(),Ka=!1,s.delete(a)}):a.appContext.reload?a.appContext.reload():typeof window<"u"?window.location.reload():console.warn("[HMR] Root or manually mounted instance modified. Full reload required."),a.root.ce&&a!==a.root&&a.root.ce._removeChildStyle(o)}AA(()=>{ig.clear()})}function LA(e,t){Bn(e,t);for(const n in e)n!=="__file"&&!(n in t)&&delete e[n]}function MS(e){return(t,n)=>{try{return e(t,n)}catch(r){console.error(r),console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required.")}}}let Mo,If=[],LS=!1;function Df(e,...t){Mo?Mo.emit(e,...t):LS||If.push({event:e,args:t})}function UA(e,t){var n,r;Mo=e,Mo?(Mo.enabled=!0,If.forEach(({event:i,args:a})=>Mo.emit(i,...a)),If=[]):typeof window<"u"&&window.HTMLElement&&!((r=(n=window.navigator)==null?void 0:n.userAgent)!=null&&r.includes("jsdom"))?((t.__VUE_DEVTOOLS_HOOK_REPLAY__=t.__VUE_DEVTOOLS_HOOK_REPLAY__||[]).push(a=>{UA(a,t)}),setTimeout(()=>{Mo||(t.__VUE_DEVTOOLS_HOOK_REPLAY__=null,LS=!0,If=[])},3e3)):(LS=!0,If=[])}function PK(e,t){Df("app:init",e,t,{Fragment:Pt,Text:Uf,Comment:qr,Static:Xf})}function RK(e){Df("app:unmount",e)}const QK=US("component:added"),XA=US("component:updated"),kK=US("component:removed"),CK=e=>{Mo&&typeof Mo.cleanupBuffer=="function"&&!Mo.cleanupBuffer(e)&&kK(e)};/*! #__NO_SIDE_EFFECTS__ */function US(e){return t=>{Df(e,t.appContext.app,t.uid,t.parent?t.parent.uid:void 0,t)}}const AK=zA("perf:start"),IK=zA("perf:end");function zA(e){return(t,n,r)=>{Df(e,t.appContext.app,t.uid,t,n,r)}}function DK(e,t,n){Df("component:emit",e.appContext.app,e,t,n)}let Kn=null,BA=null;function og(e){const t=Kn;return Kn=e,BA=e&&e.type.__scopeId||null,t}function ce(e,t=Kn,n){if(!t||e._n)return e;const r=(...i)=>{r._d&&kI(-1);const a=og(t);let o;try{o=e(...i)}finally{og(a),r._d&&kI(1)}return ke.NODE_ENV!=="production"&&XA(t),o};return r._n=!0,r._c=!0,r._d=!0,r}function FA(e){wH(e)&&ze("Do not use built-in directive ids as custom directive id: "+e)}function Ja(e,t){if(Kn===null)return ke.NODE_ENV!=="production"&&ze("withDirectives can only be used inside render functions."),e;const n=_g(Kn),r=e.dirs||(e.dirs=[]);for(let i=0;ie.__isTeleport,Wc=e=>e&&(e.disabled||e.disabled===""),MK=e=>e&&(e.defer||e.defer===""),VA=e=>typeof SVGElement<"u"&&e instanceof SVGElement,YA=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,XS=(e,t)=>{const n=e&&e.to;if(Tn(n))if(t){const r=t(n);return ke.NODE_ENV!=="production"&&!r&&!Wc(e)&&ze(`Failed to locate Teleport target with selector "${n}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.`),r}else return ke.NODE_ENV!=="production"&&ze("Current renderer does not support string target for Teleports. (missing querySelector renderer option)"),null;else return ke.NODE_ENV!=="production"&&!n&&!Wc(e)&&ze(`Invalid Teleport target: ${n}`),n},LK={name:"Teleport",__isTeleport:!0,process(e,t,n,r,i,a,o,s,l,c){const{mc:u,pc:d,pbc:O,o:{insert:f,querySelector:p,createText:h,createComment:m}}=c,g=Wc(t.props);let{shapeFlag:_,children:b,dynamicChildren:y}=t;if(ke.NODE_ENV!=="production"&&Ka&&(l=!1,y=null),e==null){const v=t.el=ke.NODE_ENV!=="production"?m("teleport start"):h(""),E=t.anchor=ke.NODE_ENV!=="production"?m("teleport end"):h("");f(v,n,r),f(E,n,r);const w=(S,x)=>{_&16&&(i&&i.isCE&&(i.ce._teleportTarget=S),u(b,S,x,i,a,o,s,l))},T=()=>{const S=t.target=XS(t.props,p),x=jA(S,t,h,f);S?(o!=="svg"&&VA(S)?o="svg":o!=="mathml"&&YA(S)&&(o="mathml"),g||(w(S,x),lg(t,!1))):ke.NODE_ENV!=="production"&&!g&&ze("Invalid Teleport target on mount:",S,`(${typeof S})`)};g&&(w(n,E),lg(t,!0)),MK(t.props)?Ti(T,a):T()}else{t.el=e.el,t.targetStart=e.targetStart;const v=t.anchor=e.anchor,E=t.target=e.target,w=t.targetAnchor=e.targetAnchor,T=Wc(e.props),S=T?n:E,x=T?v:w;if(o==="svg"||VA(E)?o="svg":(o==="mathml"||YA(E))&&(o="mathml"),y?(O(e.dynamicChildren,y,S,i,a,o,s),Lf(e,t,!0)):l||d(e,t,S,x,i,a,o,s,!1),g)T?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):sg(t,n,v,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const $=t.target=XS(t.props,p);$?sg(t,$,null,c,0):ke.NODE_ENV!=="production"&&ze("Invalid Teleport target on update:",E,`(${typeof E})`)}else T&&sg(t,E,w,c,1);lg(t,g)}},remove(e,t,n,{um:r,o:{remove:i}},a){const{shapeFlag:o,children:s,anchor:l,targetStart:c,targetAnchor:u,target:d,props:O}=e;if(d&&(i(c),i(u)),a&&i(l),o&16){const f=a||!Wc(O);for(let p=0;pFS(p,t&&(ut(t)?t[h]:t),n,r,i));return}if(_d(r)&&!i)return;const a=r.shapeFlag&4?_g(r.component):r.el,o=i?null:a,{i:s,r:l}=e;if(ke.NODE_ENV!=="production"&&!s){ze("Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.");return}const c=t&&t.r,u=s.refs===Yt?s.refs={}:s.refs,d=s.setupState,O=Qt(d),f=d===Yt?()=>!1:p=>ke.NODE_ENV!=="production"&&(Jt(O,p)&&!ln(O[p])&&ze(`Template ref "${p}" used on a non-ref value. It will not work in the production build.`),XK.has(O[p]))?!1:Jt(O,p);if(c!=null&&c!==l&&(Tn(c)?(u[c]=null,f(c)&&(d[c]=null)):ln(c)&&(c.value=null)),vt(l))pd(l,s,12,[o,u]);else{const p=Tn(l),h=ln(l);if(p||h){const m=()=>{if(e.f){const g=p?f(l)?d[l]:u[l]:l.value;i?ut(g)&&_S(g,a):ut(g)?g.includes(a)||g.push(a):p?(u[l]=[a],f(l)&&(d[l]=u[l])):(l.value=[a],e.k&&(u[e.k]=l.value))}else p?(u[l]=o,f(l)&&(d[l]=o)):h?(l.value=o,e.k&&(u[e.k]=o)):ke.NODE_ENV!=="production"&&ze("Invalid template ref type:",l,`(${typeof l})`)};o?(m.id=-1,Ti(m,n)):m()}else ke.NODE_ENV!=="production"&&ze("Invalid template ref type:",l,`(${typeof l})`)}}wf().requestIdleCallback,wf().cancelIdleCallback;const _d=e=>!!e.type.__asyncLoader,WS=e=>e.type.__isKeepAlive;function zK(e,t){GA(e,"a",t)}function BK(e,t){GA(e,"da",t)}function GA(e,t,n=rr){const r=e.__wdc||(e.__wdc=()=>{let i=n;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(cg(t,r,n),n){let i=n.parent;for(;i&&i.parent;)WS(i.parent.vnode)&&FK(r,t,n,i),i=i.parent}}function FK(e,t,n,r){const i=cg(t,e,r,!0);zi(()=>{_S(r[t],i)},n)}function cg(e,t,n=rr,r=!1){if(n){const i=n[e]||(n[e]=[]),a=t.__weh||(t.__weh=(...o)=>{Ts();const s=Wf(n),l=Do(t,n,e,o);return s(),ws(),l});return r?i.unshift(a):i.push(a),a}else if(ke.NODE_ENV!=="production"){const i=Es(DS[e].replace(/ hook$/,""));ze(`${i} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup(). If you are using async setup(), make sure to register lifecycle hooks before the first await statement.`)}}const ks=e=>(t,n=rr)=>{(!Vf||e==="sp")&&cg(e,(...r)=>t(...r),n)},ZA=ks("bm"),ht=ks("m"),HA=ks("bu"),KA=ks("u"),Lo=ks("bum"),zi=ks("um"),WK=ks("sp"),VK=ks("rtg"),YK=ks("rtc");function jK(e,t=rr){cg("ec",e,t)}const VS="components",qK="directives",JA=Symbol.for("v-ndc");function bd(e){return Tn(e)?eI(VS,e,!1)||e:e||JA}function GK(e){return eI(qK,e)}function eI(e,t,n=!0,r=!1){const i=Kn||rr;if(i){const a=i.type;if(e===VS){const s=uE(a,!1);if(s&&(s===t||s===Dr(t)||s===Lc(Dr(t))))return a}const o=tI(i[e]||a[e],t)||tI(i.appContext[e],t);if(!o&&r)return a;if(ke.NODE_ENV!=="production"&&n&&!o){const s=e===VS?` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`:"";ze(`Failed to resolve ${e.slice(0,-1)}: ${t}${s}`)}return o}else ke.NODE_ENV!=="production"&&ze(`resolve${Lc(e.slice(0,-1))} can only be used in render() or setup().`)}function tI(e,t){return e&&(e[t]||e[Dr(t)]||e[Lc(Dr(t))])}function Oi(e,t,n,r){let i;const a=n,o=ut(e);if(o||Tn(e)){const s=o&&Io(e);let l=!1;s&&(l=!ci(e),e=Ym(e)),i=new Array(e.length);for(let c=0,u=e.length;ct(s,l,void 0,a));else{const s=Object.keys(e);i=new Array(s.length);for(let l=0,c=s.length;l{const a=r.fn(...i);return a&&(a.key=r.key),a}:r.fn)}return e}function we(e,t,n={},r,i){if(Kn.ce||Kn.parent&&_d(Kn.parent)&&Kn.parent.ce)return t!=="default"&&(n.name=t),fe(),Se(Pt,null,[te("slot",n,r&&r())],64);let a=e[t];ke.NODE_ENV!=="production"&&a&&a.length>1&&(ze("SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template."),a=()=>[]),a&&a._c&&(a._d=!1),fe();const o=a&&nI(a(n)),s=n.key||o&&o.key,l=Se(Pt,{key:(s&&!Za(s)?s:`_${t}`)+(!o&&r?"_fb":"")},o||(r?r():[]),o&&e._===1?64:-2);return l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),a&&a._c&&(a._d=!0),l}function nI(e){return e.some(t=>kl(t)?!(t.type===qr||t.type===Pt&&!nI(t.children)):!0)?e:null}function HK(e,t){const n={};if(ke.NODE_ENV!=="production"&&!en(e))return ze("v-on with no argument expects an object value."),n;for(const r in e)n[Es(r)]=e[r];return n}const YS=e=>e?MI(e)?_g(e):YS(e.parent):null,Vc=Bn(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>ke.NODE_ENV!=="production"?Yr(e.props):e.props,$attrs:e=>ke.NODE_ENV!=="production"?Yr(e.attrs):e.attrs,$slots:e=>ke.NODE_ENV!=="production"?Yr(e.slots):e.slots,$refs:e=>ke.NODE_ENV!=="production"?Yr(e.refs):e.refs,$parent:e=>YS(e.parent),$root:e=>YS(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>HS(e),$forceUpdate:e=>e.f||(e.f=()=>{rg(e.update)}),$nextTick:e=>e.n||(e.n=bt.bind(e.proxy)),$watch:e=>CJ.bind(e)}),jS=e=>e==="_"||e==="$",qS=(e,t)=>e!==Yt&&!e.__isScriptSetup&&Jt(e,t),rI={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:i,props:a,accessCache:o,type:s,appContext:l}=e;if(ke.NODE_ENV!=="production"&&t==="__isVue")return!0;let c;if(t[0]!=="$"){const f=o[t];if(f!==void 0)switch(f){case 1:return r[t];case 2:return i[t];case 4:return n[t];case 3:return a[t]}else{if(qS(r,t))return o[t]=1,r[t];if(i!==Yt&&Jt(i,t))return o[t]=2,i[t];if((c=e.propsOptions[0])&&Jt(c,t))return o[t]=3,a[t];if(n!==Yt&&Jt(n,t))return o[t]=4,n[t];ZS&&(o[t]=0)}}const u=Vc[t];let d,O;if(u)return t==="$attrs"?(hr(e.attrs,"get",""),ke.NODE_ENV!=="production"&&pg()):ke.NODE_ENV!=="production"&&t==="$slots"&&hr(e,"get",t),u(e);if((d=s.__cssModules)&&(d=d[t]))return d;if(n!==Yt&&Jt(n,t))return o[t]=4,n[t];if(O=l.config.globalProperties,Jt(O,t))return O[t];ke.NODE_ENV!=="production"&&Kn&&(!Tn(t)||t.indexOf("__v")!==0)&&(i!==Yt&&jS(t[0])&&Jt(i,t)?ze(`Property ${JSON.stringify(t)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`):e===Kn&&ze(`Property ${JSON.stringify(t)} was accessed during render but is not defined on instance.`))},set({_:e},t,n){const{data:r,setupState:i,ctx:a}=e;return qS(i,t)?(i[t]=n,!0):ke.NODE_ENV!=="production"&&i.__isScriptSetup&&Jt(i,t)?(ze(`Cannot mutate - - diff --git a/src/bizy_server/templates/upload_model.html b/src/bizy_server/templates/upload_model.html deleted file mode 100644 index c993ac90..00000000 --- a/src/bizy_server/templates/upload_model.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - Upload Model - - - -

BizyAir Model List

-
-
Lora
-
Checkpoints
-
-
- - - - diff --git a/src/bizy_server/upload_manager.py b/src/bizy_server/upload_manager.py deleted file mode 100644 index a5c9617c..00000000 --- a/src/bizy_server/upload_manager.py +++ /dev/null @@ -1,201 +0,0 @@ -import asyncio -import base64 -import hashlib -import os -import threading -import time - -import aiofiles -import crcmod -import oss2 - -from .errno import FILE_NOT_EXISTS_ERR, UPLOAD_ERR -from .error_handler import ErrorHandler -from .oss import AliOssStorageClient -from .utils import is_string_valid - - -class UploadManager: - def __init__(self, server): - self.error_handler = ErrorHandler() - self.upload_progresses_updated_at = dict() - self.server = server - - async def calculate_hash(self, file_path): - do_crc64 = crcmod.mkCrcFun( - 0x142F0E1EBA9EA3693, initCrc=0, xorOut=0xFFFFFFFFFFFFFFFF, rev=True - ) - crc64_signature = 0 - buf_size = 65536 * 16 - - async with aiofiles.open(file_path, "rb") as f: - while chunk := await f.read(buf_size): - crc64_signature = do_crc64(chunk, crc64_signature) - - md5_hash = hashlib.md5() - async with aiofiles.open(file_path, "rb") as file: - while chunk := await file.read(buf_size): - md5_hash.update(chunk) - md5_str = base64.b64encode(md5_hash.digest()).decode("utf-8") - - hasher = hashlib.sha256() - hasher.update(f"{md5_str}{crc64_signature}".encode("utf-8")) - hash_string = hasher.hexdigest() - - return hash_string - - async def do_upload(self, item): - sid = item["sid"] - upload_id = item["upload_id"] - self.server.send_sync( - event="status", - data={ - "status": "starting", - "upload_id": upload_id, - "message": f"start uploading", - }, - sid=sid, - ) - - root_dir = item["root"] - model_files = [] - for file in item["files"]: - filename = file["path"] - filepath = os.path.abspath(os.path.join(root_dir, filename)) - if not os.path.exists(filepath): - self.server.send_sync_error(err=FILE_NOT_EXISTS_ERR, sid=sid) - return - - sha256sum = await self.calculate_hash(filepath) - - sign_data, err = await self.server.api_client.sign(sha256sum) - file_record = sign_data.get("file") - if err is not None: - self.server.send_sync_error(err=err, sid=sid) - return - - if not is_string_valid(file_record.get("id")): - print(f"\033[94m[BizyAir]\033[0m Start uploading file: {filename}") - file_storage = sign_data.get("storage") - try: - self.upload_progresses_updated_at[upload_id] = 0 - - def updateProgress(consume_bytes, total_bytes): - current_time = time.time() - if ( - current_time - self.upload_progresses_updated_at[upload_id] - >= 1 - ): - self.upload_progresses_updated_at[upload_id] = current_time - - progress = ( - f"{consume_bytes / total_bytes * 100:.0f}%" - if consume_bytes / total_bytes * 100 - == int(consume_bytes / total_bytes * 100) - else "{:.2f}%".format(consume_bytes / total_bytes * 100) - ) - self.server.send_sync( - event="progress", - data={ - "upload_id": upload_id, - "path": filename, - "progress": progress, - }, - sid=sid, - ) - - oss_client = AliOssStorageClient( - endpoint=file_storage.get("endpoint"), - bucket_name=file_storage.get("bucket"), - access_key=file_record.get("access_key_id"), - secret_key=file_record.get("access_key_secret"), - security_token=file_record.get("security_token"), - onUploading=updateProgress, - ) - await oss_client.upload_file( - filepath, file_record.get("object_key") - ) - except oss2.exceptions.OssError as e: - print(f"\033[31m[BizyAir]\033[0m OSS err:{str(e)}") - self.server.send_sync_error(UPLOAD_ERR, sid) - return - - commit_data, err = await self.server.api_client.commit_file( - signature=sha256sum, object_key=file_record.get("object_key") - ) - if err is not None: - self.server.send_sync_error(err) - return - - print(f"\033[32m[BizyAir]\033[0m {filename} Already Uploaded") - self.server.send_sync( - event="progress", - data={"upload_id": upload_id, "path": filename, "progress": "100%"}, - sid=sid, - ) - - model_files.append({"sign": sha256sum, "path": filename}) - - commit_ret, err = await self.server.api_client.commit_model( - model_files=model_files, - model_name=item["name"], - model_type=item["type"], - overwrite=True, - ) - if err is not None: - self.server.send_sync_error(err, sid) - return - - print("\033[32m[BizyAir]\033[0m Uploaded successfully") - - self.server.send_sync( - event="status", - data={ - "status": "finish", - "upload_id": upload_id, - "message": f"uploading finished", - }, - sid=sid, - ) - - def check_sync_status(): - while True: - future = asyncio.run_coroutine_threadsafe( - self.server.api_client.get_models( - {"type": item["type"], "available": True} - ), - self.server.loop, - ) - - models, err = future.result(timeout=2) - - if err is not None: - self.server.send_sync( - event="error", - data={ - "message": err.message, - "code": err.code, - "data": err.data, - }, - sid=sid, - ) - return - # 遍历models, 看当前name的model是否存在 - for model in models: - if model["name"] == item["name"]: - self.server.send_sync( - event="synced", - data={ - "model_type": item["type"], - "model_name": item["name"], - }, - sid=sid, - ) - return - - time.sleep(5) - - threading.Thread( - target=check_sync_status, - daemon=True, - ).start() diff --git a/src/bizy_server/utils.py b/src/bizy_server/utils.py index 2f7441fe..c2f6bc2b 100644 --- a/src/bizy_server/utils.py +++ b/src/bizy_server/utils.py @@ -1,15 +1,36 @@ import os from pathlib import Path -from .errno import INVALID_TYPE +from .errno import errnos from .resp import ErrResponse TYPE_OPTIONS = { - "lora": "bizyair/lora", - "controlnet": "bizyair/controlnet", - # "other": "other", + "LoRA": "LoRA", + "Controlnet": "Controlnet", } + +BASE_MODEL_TYPE_OPTIONS = { + "Flux.1 D": "Flux.1 D", + "SDXL": "SDXL", + "SD 1.5": "SD 1.5", + "SD 3.5": "SD 3.5", + "Pony": "Pony", + "Kolors": "Kolors", + "Hunyuan 1": "Hunyuan 1", + "Other": "Other", +} + ALLOW_TYPES = list(TYPE_OPTIONS.values()) +ALLOW_BASE_MODEL_TYPES = list(BASE_MODEL_TYPE_OPTIONS.values()) +ALLOW_UPLOADABLE_EXT_NAMES = [ + ".safetensors", + ".pth", + ".bin", + ".pt", + ".ckpt", + ".gguf", + ".sft", +] current_path = os.path.abspath(os.path.dirname(__file__)) @@ -43,14 +64,32 @@ def check_str_param(json_data, param_name: str, err): def check_type(json_data): if "type" not in json_data: - return ErrResponse(INVALID_TYPE) - if not is_string_valid(json_data["type"]) or json_data["type"] not in ALLOW_TYPES: - return ErrResponse(INVALID_TYPE) + return ErrResponse(errnos.INVALID_TYPE) + if ( + not is_string_valid(json_data["type"]) + or json_data["type"] not in ALLOW_TYPES + or json_data["type"] == "Workflow" + ): + return ErrResponse(errnos.INVALID_TYPE) return None -def list_types(): +def types(): types = [] for k, v in TYPE_OPTIONS.items(): types.append({"label": k, "value": v}) return types + + +def base_model_types(): + base_model_types = [] + for k, v in BASE_MODEL_TYPE_OPTIONS.items(): + base_model_types.append({"label": k, "value": v}) + return base_model_types + + +def is_allow_ext_name(local_file_name): + if not os.path.isfile(local_file_name): + return False + _, ext = os.path.splitext(local_file_name) + return ext.lower() in ALLOW_UPLOADABLE_EXT_NAMES diff --git a/src/bizyair/commands/processors/prompt_processor.py b/src/bizyair/commands/processors/prompt_processor.py index 39697e62..4ddfc496 100644 --- a/src/bizyair/commands/processors/prompt_processor.py +++ b/src/bizyair/commands/processors/prompt_processor.py @@ -8,7 +8,7 @@ BIZYAIR_DEV_REQUEST_URL, BIZYAIR_SERVER_ADDRESS, ) -from bizyair.configs.conf import ModelRule +from bizyair.configs.conf import ModelRule, config_manager from bizyair.path_utils import ( convert_prompt_label_path_to_real_path, guess_url_from_node, @@ -83,14 +83,29 @@ def validate_input( class PromptProcessor(Processor): + def _exec_info(self, prompt: Dict[str, Dict[str, Any]]): + exec_info = { + "model_version_ids": [], + } + model_version_id_prefix = config_manager.get_model_version_id_prefix() + for node_id, node_data in prompt.items(): + for k, v in node_data.get("inputs", {}).items(): + if isinstance(v, str) and v.startswith(model_version_id_prefix): + model_version_id = int(v[len(model_version_id_prefix) :]) + exec_info["model_version_ids"].append(model_version_id) + return exec_info + def process( self, url: str, prompt: Dict[str, Dict[str, Any]], last_node_ids: List[str] ): - prompt = convert_prompt_label_path_to_real_path(prompt) return client.send_request( url=url, data=json.dumps( - {"prompt": prompt, "last_node_id": last_node_ids[0]} + { + "prompt": prompt, + "last_node_id": last_node_ids[0], + "exec_info": self._exec_info(prompt), + } ).encode("utf-8"), ) diff --git a/src/bizyair/commands/servers/prompt_server.py b/src/bizyair/commands/servers/prompt_server.py index a7c0f855..475bd7cf 100644 --- a/src/bizyair/commands/servers/prompt_server.py +++ b/src/bizyair/commands/servers/prompt_server.py @@ -21,6 +21,7 @@ def execute( *args, **kwargs, ): + prompt = encode_data(prompt) if BIZYAIR_DEBUG: debug_info = { diff --git a/src/bizyair/configs/conf.py b/src/bizyair/configs/conf.py index c8ed2468..d59bcbdb 100644 --- a/src/bizyair/configs/conf.py +++ b/src/bizyair/configs/conf.py @@ -77,8 +77,9 @@ def get_filenames(self, folder_name: str) -> List[str]: class ConfigManager: def __init__(self, model_path_config: str, model_rule_config: str): self.model_path_manager = ModelPathManager(config_path=model_path_config) + self.model_rule_config = load_config_file(model_rule_config) self.model_rules = ModelRuleManager( - model_rules=load_config_file(model_rule_config)["model_rules"] + model_rules=self.model_rule_config["model_rules"] ) def get_filenames(self, folder_name: str) -> List[str]: @@ -89,6 +90,9 @@ def get_rules(self, class_type: str) -> List[ModelRule]: class_type = class_type[8:] return self.model_rules.find_rules(class_type) + def get_model_version_id_prefix(self): + return self.model_rule_config["model_version_config"]["model_version_id_prefix"] + model_path_config = os.path.join(os.path.dirname(__file__), "models.json") model_rule_config = os.path.join(os.path.dirname(__file__), "models.yaml") diff --git a/src/bizyair/configs/models.yaml b/src/bizyair/configs/models.yaml index a665046b..43d8dc8f 100644 --- a/src/bizyair/configs/models.yaml +++ b/src/bizyair/configs/models.yaml @@ -1,4 +1,8 @@ # Common configuration +model_version_config: + model_version_id_prefix: "BIZYAIR_MODEL_VERSION_ID:" + + model_hub: find_model: route: /models/files diff --git a/src/bizyair/path_utils/path_manager.py b/src/bizyair/path_utils/path_manager.py index 791ce7a8..c7f9df94 100644 --- a/src/bizyair/path_utils/path_manager.py +++ b/src/bizyair/path_utils/path_manager.py @@ -188,21 +188,22 @@ def get_share_filename_list(folder_name, share_id, *, verbose=BIZYAIR_DEBUG): def get_filename_list(folder_name, *, verbose=BIZYAIR_DEBUG): global folder_names_and_paths - results = [] - if folder_name in models_config["model_types"]: - refresh = refresh_settings.get(folder_name, True) - results.extend( - cached_filename_list(folder_name, verbose=verbose, refresh=refresh) - ) - if folder_name in folder_names_and_paths: - results.extend(folder_names_and_paths[folder_name]) - if BIZYAIR_DEBUG: - try: - import folder_paths - - results.extend(folder_paths.get_filename_list(folder_name)) - except: - pass + results = folder_names_and_paths.get(folder_name, []) + # 社区node上线后移除 + # if folder_name in models_config["model_types"]: + # refresh = refresh_settings.get(folder_name, True) + # results.extend( + # cached_filename_list(folder_name, verbose=verbose, refresh=refresh) + # ) + # if folder_name in folder_names_and_paths: + # results.extend(folder_names_and_paths[folder_name]) + # if BIZYAIR_DEBUG: + # try: + # import folder_paths + # + # results.extend(folder_paths.get_filename_list(folder_name)) + # except: + # pass return results