From 9f0bb8bd244be17f295e0c41bcd4fc9ad7e87c18 Mon Sep 17 00:00:00 2001 From: legop3 Date: Thu, 4 Dec 2025 23:50:44 -0500 Subject: [PATCH] new help system!! --- server/public/assets/index-4BBPmLYK.css | 1 + server/public/assets/index-7IHa35aL.css | 1 - server/public/assets/index-B-bJbbPY.js | 12 ++ server/public/assets/index-ba8YMKfH.js | 12 -- server/public/index.html | 4 +- webui/src/App.jsx | 99 ++++++--- webui/src/components/DiscordInviteButton.jsx | 2 +- webui/src/components/HelpContentView.jsx | 204 ++++++++++++++++++ webui/src/components/HelpOverlay.jsx | 44 ++++ webui/src/components/HelpPanel.jsx | 46 ++--- webui/src/components/RightPaneTabs.jsx | 4 +- webui/src/components/UserListPanel.jsx | 9 +- webui/src/help/content.js | 206 +++++++++++++++++++ webui/src/index.css | 2 +- 14 files changed, 572 insertions(+), 74 deletions(-) create mode 100644 server/public/assets/index-4BBPmLYK.css delete mode 100644 server/public/assets/index-7IHa35aL.css create mode 100644 server/public/assets/index-B-bJbbPY.js delete mode 100644 server/public/assets/index-ba8YMKfH.js create mode 100644 webui/src/components/HelpContentView.jsx create mode 100644 webui/src/components/HelpOverlay.jsx create mode 100644 webui/src/help/content.js diff --git a/server/public/assets/index-4BBPmLYK.css b/server/public/assets/index-4BBPmLYK.css new file mode 100644 index 00000000..e7d3f400 --- /dev/null +++ b/server/public/assets/index-4BBPmLYK.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.panel{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.panel-section{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.panel-muted{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.surface{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.surface-muted{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.field-input{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.field-input:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(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);--tw-ring-opacity: 1;--tw-ring-color: rgb(14 165 233 / var(--tw-ring-opacity))}.button-dark{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity));padding:.125rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.button-dark:hover{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity))}.button-danger{--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity));padding:.125rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity))}.rainbow-animate-bg{background:linear-gradient(270deg,red,#ff7f00,#ffff00b3,#0f0,#00f,indigo,#8b00ff);background-size:1400% 1400%;animation:rainbowBG 300s ease infinite}@keyframes rainbowBG{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!visible{visibility:visible!important}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-0\.5{bottom:.125rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.right-0{right:0}.right-1{right:.25rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1{top:.25rem}.top-1\/2{top:50%}.top-10{top:2.5rem}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-span-full{grid-column:1 / -1}.m-0\.5{margin:.125rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-2{margin-top:.5rem}.\!block{display:block!important}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-video{aspect-ratio:16 / 9}.h-10{height:2.5rem}.h-12{height:3rem}.h-2{height:.5rem}.h-28{height:7rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-52{height:13rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-\[220px\]{height:220px}.h-\[260px\]{height:260px}.h-\[70\%\]{height:70%}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:10rem}.max-h-80{max-height:20rem}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0px}.min-h-\[14rem\]{min-height:14rem}.min-h-\[16rem\]{min-height:16rem}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-12{width:3rem}.w-2{width:.5rem}.w-28{width:7rem}.w-4{width:1rem}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-4xl{max-width:56rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-\[1\.1\]{flex:1.1}.flex-\[1\.8\]{flex:1.8}.-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))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-not-allowed{cursor:not-allowed}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[minmax\(0\,0\.7fr\)_minmax\(0\,2\.1fr\)_minmax\(0\,0\.7fr\)\]{grid-template-columns:minmax(0,.7fr) minmax(0,2.1fr) minmax(0,.7fr)}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-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))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-nowrap{text-wrap:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-amber-400\/30{border-color:#fbbf244d}.border-cyan-500\/40{border-color:#06b6d466}.border-emerald-700{--tw-border-opacity: 1;border-color:rgb(4 120 87 / var(--tw-border-opacity))}.border-indigo-400\/30{border-color:#818cf84d}.border-rose-800{--tw-border-opacity: 1;border-color:rgb(159 18 57 / var(--tw-border-opacity))}.border-slate-600{--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity))}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity))}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity))}.bg-amber-500\/30{background-color:#f59e0b4d}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity))}.bg-amber-700{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity))}.bg-amber-900{--tw-bg-opacity: 1;background-color:rgb(120 53 15 / var(--tw-bg-opacity))}.bg-amber-900\/60{background-color:#78350f99}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-black\/20{background-color:#0003}.bg-black\/30{background-color:#0000004d}.bg-black\/60{background-color:#0009}.bg-black\/70{background-color:#000000b3}.bg-black\/80{background-color:#000c}.bg-black\/85{background-color:#000000d9}.bg-cyan-300\/80{background-color:#67e8f9cc}.bg-cyan-400\/10{background-color:#22d3ee1a}.bg-cyan-500{--tw-bg-opacity: 1;background-color:rgb(6 182 212 / var(--tw-bg-opacity))}.bg-cyan-600{--tw-bg-opacity: 1;background-color:rgb(8 145 178 / var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity: 1;background-color:rgb(21 94 117 / var(--tw-bg-opacity))}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.bg-emerald-500\/30{background-color:#10b9814d}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-emerald-700{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.bg-emerald-800{--tw-bg-opacity: 1;background-color:rgb(6 95 70 / var(--tw-bg-opacity))}.bg-emerald-900{--tw-bg-opacity: 1;background-color:rgb(6 78 59 / var(--tw-bg-opacity))}.bg-emerald-900\/80{background-color:#064e3bcc}.bg-fuchsia-600{--tw-bg-opacity: 1;background-color:rgb(192 38 211 / var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-indigo-500\/30{background-color:#6366f14d}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity))}.bg-indigo-700{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity))}.bg-indigo-900\/20{background-color:#312e8133}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-red-500\/30{background-color:#ef44444d}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-red-900\/40{background-color:#7f1d1d66}.bg-red-900\/60{background-color:#7f1d1d99}.bg-rose-900\/80{background-color:#881337cc}.bg-sky-600{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity))}.bg-sky-700{--tw-bg-opacity: 1;background-color:rgb(3 105 161 / var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity))}.bg-slate-900\/40{background-color:#0f172a66}.bg-transparent{background-color:transparent}.bg-zinc-900{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity))}.bg-zinc-950{--tw-bg-opacity: 1;background-color:rgb(9 9 11 / var(--tw-bg-opacity))}.bg-zinc-950\/95{background-color:#09090bf2}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-purple-500{--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #a855f7 var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-\[2px\]{padding-top:2px;padding-bottom:2px}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pr-0\.5{padding-right:.125rem}.pt-1{padding-top:.25rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.7rem\]{font-size:.7rem}.text-\[0\.85rem\]{font-size:.85rem}.text-\[0\.8rem\]{font-size:.8rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.text-amber-100{--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity))}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity))}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity))}.text-amber-50{--tw-text-opacity: 1;color:rgb(255 251 235 / var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity))}.text-amber-950{--tw-text-opacity: 1;color:rgb(69 26 3 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-black\/80{color:#000c}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity))}.text-emerald-100{--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity))}.text-emerald-50{--tw-text-opacity: 1;color:rgb(236 253 245 / var(--tw-text-opacity))}.text-emerald-50\/80{color:#ecfdf5cc}.text-emerald-950{--tw-text-opacity: 1;color:rgb(2 44 34 / var(--tw-text-opacity))}.text-indigo-100{--tw-text-opacity: 1;color:rgb(224 231 255 / var(--tw-text-opacity))}.text-indigo-200{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity))}.text-indigo-50{--tw-text-opacity: 1;color:rgb(238 242 255 / var(--tw-text-opacity))}.text-lime-300{--tw-text-opacity: 1;color:rgb(190 242 100 / var(--tw-text-opacity))}.text-lime-400{--tw-text-opacity: 1;color:rgb(163 230 53 / var(--tw-text-opacity))}.text-red-100{--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-rose-50{--tw-text-opacity: 1;color:rgb(255 241 242 / var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity))}.text-teal-400{--tw-text-opacity: 1;color:rgb(45 212 191 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/90{color:#ffffffe6}.underline{text-decoration-line:underline}.accent-cyan-400{accent-color:#22d3ee}.accent-cyan-500{accent-color:#06b6d4}.accent-emerald-400{accent-color:#34d399}.opacity-50{opacity:.5}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-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-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-black\/40{--tw-shadow-color: rgb(0 0 0 / .4);--tw-shadow: var(--tw-shadow-colored)}.outline{outline-style:solid}.outline-2{outline-width:2px}.outline-cyan-400\/60{outline-color:#22d3ee99}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[height\]{transition-property:height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;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}.no-touch-select{-moz-user-select:none;user-select:none;-webkit-user-select:none;-ms-user-select:none;-webkit-touch-callout:none}.\[clip-path\:circle\(50\%\)\]{clip-path:circle(50%)}:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}body{margin:0;min-height:100vh;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}*{scrollbar-width:thin;scrollbar-color:#3b82f6 rgba(255,255,255,.08)}*::-webkit-scrollbar{width:1px;height:1px}*::-webkit-scrollbar-track{background:#ffffff14}*::-webkit-scrollbar-thumb{background-color:#3b82f6;border-radius:9999px}.hover\:bg-amber-300:hover{--tw-bg-opacity: 1;background-color:rgb(252 211 77 / var(--tw-bg-opacity))}.hover\:bg-amber-500:hover{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity))}.hover\:bg-cyan-400:hover{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity))}.hover\:bg-emerald-400:hover{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity))}.hover\:bg-emerald-500:hover{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.hover\:bg-emerald-800:hover{--tw-bg-opacity: 1;background-color:rgb(6 95 70 / var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity))}.hover\:bg-rose-800:hover{--tw-bg-opacity: 1;background-color:rgb(159 18 57 / var(--tw-bg-opacity))}.hover\:bg-sky-500:hover{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity))}.hover\:from-indigo-600:hover{--tw-gradient-from: #4f46e5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(79 70 229 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:via-purple-600:hover{--tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #9333ea var(--tw-gradient-via-position), var(--tw-gradient-to)}.hover\:to-pink-600:hover{--tw-gradient-to: #db2777 var(--tw-gradient-to-position)}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:brightness-110:hover{--tw-brightness: brightness(1.1);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-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-offset-1:focus-visible{outline-offset:1px}.focus-visible\:outline-slate-500:focus-visible{outline-color:#64748b}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:hover\:bg-inherit:hover:disabled{background-color:inherit}@media(min-width:640px){.sm\:min-h-\[18rem\]{min-height:18rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:items-center{align-items:center}}@media(min-width:768px){.md\:h-full{height:100%}.md\:h-screen{height:100vh}.md\:min-h-0{min-height:0px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1fr\)_18rem\]{grid-template-columns:minmax(0,1fr) 18rem}.md\:overflow-hidden{overflow:hidden}.md\:overflow-y-auto{overflow-y:auto}}@media(min-width:1024px){.lg\:grid-cols-\[minmax\(0\,1fr\)_20rem\]{grid-template-columns:minmax(0,1fr) 20rem}} diff --git a/server/public/assets/index-7IHa35aL.css b/server/public/assets/index-7IHa35aL.css deleted file mode 100644 index 8fdbca53..00000000 --- a/server/public/assets/index-7IHa35aL.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.panel{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.panel-section{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.panel-muted{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.surface{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.surface-muted{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.field-input{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.field-input:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(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);--tw-ring-opacity: 1;--tw-ring-color: rgb(14 165 233 / var(--tw-ring-opacity))}.button-dark{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity));padding:.125rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.button-dark:hover{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity))}.button-danger{--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity));padding:.125rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity))}.rainbow-animate-bg{background:linear-gradient(270deg,red,#ff7f00,#ff0,#0f0,#00f,indigo,#8b00ff);background-size:1400% 1400%;animation:rainbowBG 300s ease infinite}@keyframes rainbowBG{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!visible{visibility:visible!important}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-0\.5{bottom:.125rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.right-0{right:0}.right-1{right:.25rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1{top:.25rem}.top-1\/2{top:50%}.top-10{top:2.5rem}.z-40{z-index:40}.z-50{z-index:50}.col-span-full{grid-column:1 / -1}.m-0\.5{margin:.125rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-2{margin-top:.5rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-video{aspect-ratio:16 / 9}.h-10{height:2.5rem}.h-12{height:3rem}.h-2{height:.5rem}.h-28{height:7rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-52{height:13rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-\[220px\]{height:220px}.h-\[260px\]{height:260px}.h-\[70\%\]{height:70%}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:10rem}.max-h-80{max-height:20rem}.min-h-0{min-height:0px}.min-h-\[14rem\]{min-height:14rem}.min-h-\[16rem\]{min-height:16rem}.min-h-screen{min-height:100vh}.w-1\/4{width:25%}.w-12{width:3rem}.w-2{width:.5rem}.w-28{width:7rem}.w-4{width:1rem}.w-full{width:100%}.min-w-0{min-width:0px}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-\[1\.1\]{flex:1.1}.flex-\[1\.8\]{flex:1.8}.-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))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-not-allowed{cursor:not-allowed}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[minmax\(0\,0\.7fr\)_minmax\(0\,2\.1fr\)_minmax\(0\,0\.7fr\)\]{grid-template-columns:minmax(0,.7fr) minmax(0,2.1fr) minmax(0,.7fr)}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-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))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-nowrap{text-wrap:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.border-amber-400\/30{border-color:#fbbf244d}.border-cyan-500\/40{border-color:#06b6d466}.border-emerald-700{--tw-border-opacity: 1;border-color:rgb(4 120 87 / var(--tw-border-opacity))}.border-indigo-400\/30{border-color:#818cf84d}.border-rose-800{--tw-border-opacity: 1;border-color:rgb(159 18 57 / var(--tw-border-opacity))}.border-slate-600{--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity))}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity))}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity))}.bg-amber-500\/30{background-color:#f59e0b4d}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity))}.bg-amber-700{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity))}.bg-amber-900{--tw-bg-opacity: 1;background-color:rgb(120 53 15 / var(--tw-bg-opacity))}.bg-amber-900\/60{background-color:#78350f99}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-black\/20{background-color:#0003}.bg-black\/30{background-color:#0000004d}.bg-black\/60{background-color:#0009}.bg-black\/70{background-color:#000000b3}.bg-black\/80{background-color:#000c}.bg-black\/85{background-color:#000000d9}.bg-cyan-300\/80{background-color:#67e8f9cc}.bg-cyan-400\/10{background-color:#22d3ee1a}.bg-cyan-500{--tw-bg-opacity: 1;background-color:rgb(6 182 212 / var(--tw-bg-opacity))}.bg-cyan-600{--tw-bg-opacity: 1;background-color:rgb(8 145 178 / var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity: 1;background-color:rgb(21 94 117 / var(--tw-bg-opacity))}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.bg-emerald-500\/30{background-color:#10b9814d}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-emerald-700{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.bg-emerald-800{--tw-bg-opacity: 1;background-color:rgb(6 95 70 / var(--tw-bg-opacity))}.bg-emerald-900{--tw-bg-opacity: 1;background-color:rgb(6 78 59 / var(--tw-bg-opacity))}.bg-emerald-900\/80{background-color:#064e3bcc}.bg-fuchsia-600{--tw-bg-opacity: 1;background-color:rgb(192 38 211 / var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-indigo-500\/30{background-color:#6366f14d}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity))}.bg-indigo-700{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity))}.bg-indigo-900\/20{background-color:#312e8133}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-red-500\/30{background-color:#ef44444d}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-red-900\/40{background-color:#7f1d1d66}.bg-red-900\/60{background-color:#7f1d1d99}.bg-rose-900\/80{background-color:#881337cc}.bg-sky-600{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity))}.bg-sky-700{--tw-bg-opacity: 1;background-color:rgb(3 105 161 / var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-zinc-900{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity))}.bg-zinc-950{--tw-bg-opacity: 1;background-color:rgb(9 9 11 / var(--tw-bg-opacity))}.bg-zinc-950\/95{background-color:#09090bf2}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-purple-500{--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #a855f7 var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pr-0\.5{padding-right:.125rem}.pt-1{padding-top:.25rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.7rem\]{font-size:.7rem}.text-\[0\.85rem\]{font-size:.85rem}.text-\[0\.8rem\]{font-size:.8rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.text-amber-100{--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity))}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity))}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity))}.text-amber-50{--tw-text-opacity: 1;color:rgb(255 251 235 / var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity))}.text-amber-950{--tw-text-opacity: 1;color:rgb(69 26 3 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-black\/80{color:#000c}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity))}.text-emerald-100{--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity))}.text-emerald-50{--tw-text-opacity: 1;color:rgb(236 253 245 / var(--tw-text-opacity))}.text-emerald-50\/80{color:#ecfdf5cc}.text-emerald-950{--tw-text-opacity: 1;color:rgb(2 44 34 / var(--tw-text-opacity))}.text-indigo-100{--tw-text-opacity: 1;color:rgb(224 231 255 / var(--tw-text-opacity))}.text-indigo-200{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity))}.text-indigo-50{--tw-text-opacity: 1;color:rgb(238 242 255 / var(--tw-text-opacity))}.text-lime-300{--tw-text-opacity: 1;color:rgb(190 242 100 / var(--tw-text-opacity))}.text-lime-400{--tw-text-opacity: 1;color:rgb(163 230 53 / var(--tw-text-opacity))}.text-red-100{--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-rose-50{--tw-text-opacity: 1;color:rgb(255 241 242 / var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity))}.text-teal-400{--tw-text-opacity: 1;color:rgb(45 212 191 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/90{color:#ffffffe6}.underline{text-decoration-line:underline}.accent-cyan-400{accent-color:#22d3ee}.accent-cyan-500{accent-color:#06b6d4}.accent-emerald-400{accent-color:#34d399}.opacity-50{opacity:.5}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-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-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-black\/40{--tw-shadow-color: rgb(0 0 0 / .4);--tw-shadow: var(--tw-shadow-colored)}.outline{outline-style:solid}.outline-2{outline-width:2px}.outline-cyan-400\/60{outline-color:#22d3ee99}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[height\]{transition-property:height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;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}.no-touch-select{-moz-user-select:none;user-select:none;-webkit-user-select:none;-ms-user-select:none;-webkit-touch-callout:none}.\[clip-path\:circle\(50\%\)\]{clip-path:circle(50%)}:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}body{margin:0;min-height:100vh;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}*{scrollbar-width:thin;scrollbar-color:#3b82f6 rgba(255,255,255,.08)}*::-webkit-scrollbar{width:1px;height:1px}*::-webkit-scrollbar-track{background:#ffffff14}*::-webkit-scrollbar-thumb{background-color:#3b82f6;border-radius:9999px}.hover\:bg-amber-300:hover{--tw-bg-opacity: 1;background-color:rgb(252 211 77 / var(--tw-bg-opacity))}.hover\:bg-amber-500:hover{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity))}.hover\:bg-cyan-400:hover{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity))}.hover\:bg-emerald-400:hover{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity))}.hover\:bg-emerald-500:hover{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.hover\:bg-emerald-800:hover{--tw-bg-opacity: 1;background-color:rgb(6 95 70 / var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity))}.hover\:bg-rose-800:hover{--tw-bg-opacity: 1;background-color:rgb(159 18 57 / var(--tw-bg-opacity))}.hover\:bg-sky-500:hover{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity))}.hover\:from-indigo-600:hover{--tw-gradient-from: #4f46e5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(79 70 229 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:via-purple-600:hover{--tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #9333ea var(--tw-gradient-via-position), var(--tw-gradient-to)}.hover\:to-pink-600:hover{--tw-gradient-to: #db2777 var(--tw-gradient-to-position)}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:brightness-110:hover{--tw-brightness: brightness(1.1);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-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-offset-1:focus-visible{outline-offset:1px}.focus-visible\:outline-slate-500:focus-visible{outline-color:#64748b}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:hover\:bg-inherit:hover:disabled{background-color:inherit}@media(min-width:640px){.sm\:min-h-\[18rem\]{min-height:18rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:items-center{align-items:center}}@media(min-width:768px){.md\:h-full{height:100%}.md\:h-screen{height:100vh}.md\:min-h-0{min-height:0px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1fr\)_18rem\]{grid-template-columns:minmax(0,1fr) 18rem}.md\:overflow-hidden{overflow:hidden}.md\:overflow-y-auto{overflow-y:auto}}@media(min-width:1024px){.lg\:grid-cols-\[minmax\(0\,1fr\)_20rem\]{grid-template-columns:minmax(0,1fr) 20rem}} diff --git a/server/public/assets/index-B-bJbbPY.js b/server/public/assets/index-B-bJbbPY.js new file mode 100644 index 00000000..416f20f6 --- /dev/null +++ b/server/public/assets/index-B-bJbbPY.js @@ -0,0 +1,12 @@ +(function(){const l=document.createElement("link").relList;if(l&&l.supports&&l.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))u(f);new MutationObserver(f=>{for(const h of f)if(h.type==="childList")for(const p of h.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&u(p)}).observe(document,{childList:!0,subtree:!0});function s(f){const h={};return f.integrity&&(h.integrity=f.integrity),f.referrerPolicy&&(h.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?h.credentials="include":f.crossOrigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function u(f){if(f.ep)return;f.ep=!0;const h=s(f);fetch(f.href,h)}})();function Yv(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var bc={exports:{}},ei={};var xm;function Vv(){if(xm)return ei;xm=1;var i=Symbol.for("react.transitional.element"),l=Symbol.for("react.fragment");function s(u,f,h){var p=null;if(h!==void 0&&(p=""+h),f.key!==void 0&&(p=""+f.key),"key"in f){h={};for(var x in f)x!=="key"&&(h[x]=f[x])}else h=f;return f=h.ref,{$$typeof:i,type:u,key:p,ref:f!==void 0?f:null,props:h}}return ei.Fragment=l,ei.jsx=s,ei.jsxs=s,ei}var bm;function Qv(){return bm||(bm=1,bc.exports=Vv()),bc.exports}var o=Qv(),Ac={exports:{}},oe={};var Am;function Gv(){if(Am)return oe;Am=1;var i=Symbol.for("react.transitional.element"),l=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),h=Symbol.for("react.consumer"),p=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),y=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),A=Symbol.for("react.activity"),C=Symbol.iterator;function j(q){return q===null||typeof q!="object"?null:(q=C&&q[C]||q["@@iterator"],typeof q=="function"?q:null)}var N={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},R=Object.assign,T={};function D(q,H,K){this.props=q,this.context=H,this.refs=T,this.updater=K||N}D.prototype.isReactComponent={},D.prototype.setState=function(q,H){if(typeof q!="object"&&typeof q!="function"&&q!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,q,H,"setState")},D.prototype.forceUpdate=function(q){this.updater.enqueueForceUpdate(this,q,"forceUpdate")};function B(){}B.prototype=D.prototype;function V(q,H,K){this.props=q,this.context=H,this.refs=T,this.updater=K||N}var $=V.prototype=new B;$.constructor=V,R($,D.prototype),$.isPureReactComponent=!0;var ne=Array.isArray;function ae(){}var Q={H:null,A:null,T:null,S:null},I=Object.prototype.hasOwnProperty;function ie(q,H,K){var X=K.ref;return{$$typeof:i,type:q,key:H,ref:X!==void 0?X:null,props:K}}function ue(q,H){return ie(q.type,H,q.props)}function G(q){return typeof q=="object"&&q!==null&&q.$$typeof===i}function W(q){var H={"=":"=0",":":"=2"};return"$"+q.replace(/[=:]/g,function(K){return H[K]})}var ce=/\/+/g;function ve(q,H){return typeof q=="object"&&q!==null&&q.key!=null?W(""+q.key):H.toString(36)}function F(q){switch(q.status){case"fulfilled":return q.value;case"rejected":throw q.reason;default:switch(typeof q.status=="string"?q.then(ae,ae):(q.status="pending",q.then(function(H){q.status==="pending"&&(q.status="fulfilled",q.value=H)},function(H){q.status==="pending"&&(q.status="rejected",q.reason=H)})),q.status){case"fulfilled":return q.value;case"rejected":throw q.reason}}throw q}function z(q,H,K,X,J){var re=typeof q;(re==="undefined"||re==="boolean")&&(q=null);var de=!1;if(q===null)de=!0;else switch(re){case"bigint":case"string":case"number":de=!0;break;case"object":switch(q.$$typeof){case i:case l:de=!0;break;case b:return de=q._init,z(de(q._payload),H,K,X,J)}}if(de)return J=J(q),de=X===""?"."+ve(q,0):X,ne(J)?(K="",de!=null&&(K=de.replace(ce,"$&/")+"/"),z(J,H,K,"",function(Kt){return Kt})):J!=null&&(G(J)&&(J=ue(J,K+(J.key==null||q&&q.key===J.key?"":(""+J.key).replace(ce,"$&/")+"/")+de)),H.push(J)),1;de=0;var Ce=X===""?".":X+":";if(ne(q))for(var qe=0;qe>>1,Se=z[me];if(0>>1;mef(K,ee))Xf(J,K)?(z[me]=J,z[X]=ee,me=X):(z[me]=K,z[H]=ee,me=H);else if(Xf(J,ee))z[me]=J,z[X]=ee,me=X;else break e}}return Z}function f(z,Z){var ee=z.sortIndex-Z.sortIndex;return ee!==0?ee:z.id-Z.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var h=performance;i.unstable_now=function(){return h.now()}}else{var p=Date,x=p.now();i.unstable_now=function(){return p.now()-x}}var y=[],v=[],b=1,A=null,C=3,j=!1,N=!1,R=!1,T=!1,D=typeof setTimeout=="function"?setTimeout:null,B=typeof clearTimeout=="function"?clearTimeout:null,V=typeof setImmediate<"u"?setImmediate:null;function $(z){for(var Z=s(v);Z!==null;){if(Z.callback===null)u(v);else if(Z.startTime<=z)u(v),Z.sortIndex=Z.expirationTime,l(y,Z);else break;Z=s(v)}}function ne(z){if(R=!1,$(z),!N)if(s(y)!==null)N=!0,ae||(ae=!0,W());else{var Z=s(v);Z!==null&&F(ne,Z.startTime-z)}}var ae=!1,Q=-1,I=5,ie=-1;function ue(){return T?!0:!(i.unstable_now()-iez&&ue());){var me=A.callback;if(typeof me=="function"){A.callback=null,C=A.priorityLevel;var Se=me(A.expirationTime<=z);if(z=i.unstable_now(),typeof Se=="function"){A.callback=Se,$(z),Z=!0;break t}A===s(y)&&u(y),$(z)}else u(y);A=s(y)}if(A!==null)Z=!0;else{var q=s(v);q!==null&&F(ne,q.startTime-z),Z=!1}}break e}finally{A=null,C=ee,j=!1}Z=void 0}}finally{Z?W():ae=!1}}}var W;if(typeof V=="function")W=function(){V(G)};else if(typeof MessageChannel<"u"){var ce=new MessageChannel,ve=ce.port2;ce.port1.onmessage=G,W=function(){ve.postMessage(null)}}else W=function(){D(G,0)};function F(z,Z){Q=D(function(){z(i.unstable_now())},Z)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(z){z.callback=null},i.unstable_forceFrameRate=function(z){0>z||125me?(z.sortIndex=ee,l(v,z),s(y)===null&&z===s(v)&&(R?(B(Q),Q=-1):R=!0,F(ne,ee-me))):(z.sortIndex=Se,l(y,z),N||j||(N=!0,ae||(ae=!0,W()))),z},i.unstable_shouldYield=ue,i.unstable_wrapCallback=function(z){var Z=C;return function(){var ee=C;C=Z;try{return z.apply(this,arguments)}finally{C=ee}}}})(Ec)),Ec}var Em;function Kv(){return Em||(Em=1,qc.exports=Xv()),qc.exports}var Nc={exports:{}},nt={};var Nm;function Zv(){if(Nm)return nt;Nm=1;var i=Ic();function l(y){var v="https://react.dev/errors/"+y;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(l){console.error(l)}}return i(),Nc.exports=Zv(),Nc.exports}var Cm;function $v(){if(Cm)return ti;Cm=1;var i=Kv(),l=Ic(),s=Jv();function u(e){var t="https://react.dev/errors/"+e;if(1Se||(e.current=me[Se],me[Se]=null,Se--)}function K(e,t){Se++,me[Se]=e.current,e.current=t}var X=q(null),J=q(null),re=q(null),de=q(null);function Ce(e,t){switch(K(re,t),K(J,e),K(X,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vh(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vh(t),e=Qh(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}H(X),K(X,e)}function qe(){H(X),H(J),H(re)}function Kt(e){e.memoizedState!==null&&K(de,e);var t=X.current,n=Qh(t,e.type);t!==n&&(K(J,e),K(X,n))}function ga(e){J.current===e&&(H(X),H(J)),de.current===e&&(H(de),Fl._currentValue=ee)}var xa,mi;function Zt(e){if(xa===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);xa=t&&t[1]||"",mi=-1)":-1r||S[a]!==M[r]){var U=` +`+S[a].replace(" at new "," at ");return e.displayName&&U.includes("")&&(U=U.replace("",e.displayName)),U}while(1<=a&&0<=r);break}}}finally{gn=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Zt(n):""}function pi(e,t){switch(e.tag){case 26:case 27:case 5:return Zt(e.type);case 16:return Zt("Lazy");case 13:return e.child!==t&&t!==null?Zt("Suspense Fallback"):Zt("Suspense");case 19:return Zt("SuspenseList");case 0:case 15:return Xn(e.type,!1);case 11:return Xn(e.type.render,!1);case 1:return Xn(e.type,!0);case 31:return Zt("Activity");default:return""}}function go(e){try{var t="",n=null;do t+=pi(e,n),n=e,e=e.return;while(e);return t}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}var ir=Object.prototype.hasOwnProperty,sr=i.unstable_scheduleCallback,rr=i.unstable_cancelCallback,x0=i.unstable_shouldYield,b0=i.unstable_requestPaint,dt=i.unstable_now,A0=i.unstable_getCurrentPriorityLevel,xo=i.unstable_ImmediatePriority,bo=i.unstable_UserBlockingPriority,yi=i.unstable_NormalPriority,S0=i.unstable_LowPriority,Ao=i.unstable_IdlePriority,q0=i.log,E0=i.unstable_setDisableYieldValue,ul=null,ht=null;function xn(e){if(typeof q0=="function"&&E0(e),ht&&typeof ht.setStrictMode=="function")try{ht.setStrictMode(ul,e)}catch{}}var mt=Math.clz32?Math.clz32:C0,N0=Math.log,j0=Math.LN2;function C0(e){return e>>>=0,e===0?32:31-(N0(e)/j0|0)|0}var vi=256,gi=262144,xi=4194304;function Kn(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function bi(e,t,n){var a=e.pendingLanes;if(a===0)return 0;var r=0,c=e.suspendedLanes,d=e.pingedLanes;e=e.warmLanes;var g=a&134217727;return g!==0?(a=g&~c,a!==0?r=Kn(a):(d&=g,d!==0?r=Kn(d):n||(n=g&~e,n!==0&&(r=Kn(n))))):(g=a&~c,g!==0?r=Kn(g):d!==0?r=Kn(d):n||(n=a&~e,n!==0&&(r=Kn(n)))),r===0?0:t!==0&&t!==r&&(t&c)===0&&(c=r&-r,n=t&-t,c>=n||c===32&&(n&4194048)!==0)?t:r}function cl(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function T0(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function So(){var e=xi;return xi<<=1,(xi&62914560)===0&&(xi=4194304),e}function ur(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ol(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function w0(e,t,n,a,r,c){var d=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var g=e.entanglements,S=e.expirationTimes,M=e.hiddenUpdates;for(n=d&~n;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var z0=/[\n"\\]/g;function qt(e){return e.replace(z0,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function mr(e,t,n,a,r,c,d,g){e.name="",d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"?e.type=d:e.removeAttribute("type"),t!=null?d==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+St(t)):e.value!==""+St(t)&&(e.value=""+St(t)):d!=="submit"&&d!=="reset"||e.removeAttribute("value"),t!=null?pr(e,d,St(t)):n!=null?pr(e,d,St(n)):a!=null&&e.removeAttribute("value"),r==null&&c!=null&&(e.defaultChecked=!!c),r!=null&&(e.checked=r&&typeof r!="function"&&typeof r!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?e.name=""+St(g):e.removeAttribute("name")}function zo(e,t,n,a,r,c,d,g){if(c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(e.type=c),t!=null||n!=null){if(!(c!=="submit"&&c!=="reset"||t!=null)){hr(e);return}n=n!=null?""+St(n):"",t=t!=null?""+St(t):n,g||t===e.value||(e.value=t),e.defaultValue=t}a=a??r,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=g?e.checked:!!a,e.defaultChecked=!!a,d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"&&(e.name=d),hr(e)}function pr(e,t,n){t==="number"&&qi(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function Na(e,t,n,a){if(e=e.options,t){t={};for(var r=0;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),br=!1;if(Ft)try{var ml={};Object.defineProperty(ml,"passive",{get:function(){br=!0}}),window.addEventListener("test",ml,ml),window.removeEventListener("test",ml,ml)}catch{br=!1}var An=null,Ar=null,Ni=null;function Vo(){if(Ni)return Ni;var e,t=Ar,n=t.length,a,r="value"in An?An.value:An.textContent,c=r.length;for(e=0;e=vl),Jo=" ",$o=!1;function Fo(e,t){switch(e){case"keyup":return cy.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Wo(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var wa=!1;function fy(e,t){switch(e){case"compositionend":return Wo(t);case"keypress":return t.which!==32?null:($o=!0,Jo);case"textInput":return e=t.data,e===Jo&&$o?null:e;default:return null}}function dy(e,t){if(wa)return e==="compositionend"||!jr&&Fo(e,t)?(e=Vo(),Ni=Ar=An=null,wa=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=sf(n)}}function uf(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?uf(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function cf(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=qi(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=qi(e.document)}return t}function wr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var by=Ft&&"documentMode"in document&&11>=document.documentMode,Ra=null,Rr=null,Al=null,_r=!1;function of(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;_r||Ra==null||Ra!==qi(a)||(a=Ra,"selectionStart"in a&&wr(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Al&&bl(Al,a)||(Al=a,a=gs(Rr,"onSelect"),0>=d,r-=d,Lt=1<<32-mt(t)+r|n<he?(xe=te,te=null):xe=te.sibling;var Ne=O(w,te,_[he],L);if(Ne===null){te===null&&(te=xe);break}e&&te&&Ne.alternate===null&&t(w,te),E=c(Ne,E,he),Ee===null?le=Ne:Ee.sibling=Ne,Ee=Ne,te=xe}if(he===_.length)return n(w,te),be&&It(w,he),le;if(te===null){for(;he<_.length;he++)te=Y(w,_[he],L),te!==null&&(E=c(te,E,he),Ee===null?le=te:Ee.sibling=te,Ee=te);return be&&It(w,he),le}for(te=a(te);he<_.length;he++)xe=k(te,w,he,_[he],L),xe!==null&&(e&&xe.alternate!==null&&te.delete(xe.key===null?he:xe.key),E=c(xe,E,he),Ee===null?le=xe:Ee.sibling=xe,Ee=xe);return e&&te.forEach(function(Qn){return t(w,Qn)}),be&&It(w,he),le}function se(w,E,_,L){if(_==null)throw Error(u(151));for(var le=null,Ee=null,te=E,he=E=0,xe=null,Ne=_.next();te!==null&&!Ne.done;he++,Ne=_.next()){te.index>he?(xe=te,te=null):xe=te.sibling;var Qn=O(w,te,Ne.value,L);if(Qn===null){te===null&&(te=xe);break}e&&te&&Qn.alternate===null&&t(w,te),E=c(Qn,E,he),Ee===null?le=Qn:Ee.sibling=Qn,Ee=Qn,te=xe}if(Ne.done)return n(w,te),be&&It(w,he),le;if(te===null){for(;!Ne.done;he++,Ne=_.next())Ne=Y(w,Ne.value,L),Ne!==null&&(E=c(Ne,E,he),Ee===null?le=Ne:Ee.sibling=Ne,Ee=Ne);return be&&It(w,he),le}for(te=a(te);!Ne.done;he++,Ne=_.next())Ne=k(te,w,he,Ne.value,L),Ne!==null&&(e&&Ne.alternate!==null&&te.delete(Ne.key===null?he:Ne.key),E=c(Ne,E,he),Ee===null?le=Ne:Ee.sibling=Ne,Ee=Ne);return e&&te.forEach(function(Hv){return t(w,Hv)}),be&&It(w,he),le}function Me(w,E,_,L){if(typeof _=="object"&&_!==null&&_.type===R&&_.key===null&&(_=_.props.children),typeof _=="object"&&_!==null){switch(_.$$typeof){case j:e:{for(var le=_.key;E!==null;){if(E.key===le){if(le=_.type,le===R){if(E.tag===7){n(w,E.sibling),L=r(E,_.props.children),L.return=w,w=L;break e}}else if(E.elementType===le||typeof le=="object"&&le!==null&&le.$$typeof===I&&aa(le)===E.type){n(w,E.sibling),L=r(E,_.props),Cl(L,_),L.return=w,w=L;break e}n(w,E);break}else t(w,E);E=E.sibling}_.type===R?(L=In(_.props.children,w.mode,L,_.key),L.return=w,w=L):(L=zi(_.type,_.key,_.props,null,w.mode,L),Cl(L,_),L.return=w,w=L)}return d(w);case N:e:{for(le=_.key;E!==null;){if(E.key===le)if(E.tag===4&&E.stateNode.containerInfo===_.containerInfo&&E.stateNode.implementation===_.implementation){n(w,E.sibling),L=r(E,_.children||[]),L.return=w,w=L;break e}else{n(w,E);break}else t(w,E);E=E.sibling}L=Ur(_,w.mode,L),L.return=w,w=L}return d(w);case I:return _=aa(_),Me(w,E,_,L)}if(F(_))return P(w,E,_,L);if(W(_)){if(le=W(_),typeof le!="function")throw Error(u(150));return _=le.call(_),se(w,E,_,L)}if(typeof _.then=="function")return Me(w,E,Vi(_),L);if(_.$$typeof===V)return Me(w,E,Ui(w,_),L);Qi(w,_)}return typeof _=="string"&&_!==""||typeof _=="number"||typeof _=="bigint"?(_=""+_,E!==null&&E.tag===6?(n(w,E.sibling),L=r(E,_),L.return=w,w=L):(n(w,E),L=Br(_,w.mode,L),L.return=w,w=L),d(w)):n(w,E)}return function(w,E,_,L){try{jl=0;var le=Me(w,E,_,L);return Ya=null,le}catch(te){if(te===Ha||te===Hi)throw te;var Ee=yt(29,te,null,w.mode);return Ee.lanes=L,Ee.return=w,Ee}finally{}}}var ia=Of(!0),Df=Of(!1),jn=!1;function Fr(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Wr(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Cn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Tn(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(je&2)!==0){var r=a.pending;return r===null?t.next=t:(t.next=r.next,r.next=t),a.pending=t,t=Di(e),vf(e,null,n),t}return Oi(e,a,t,n),Di(e)}function Tl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Eo(e,n)}}function Ir(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var r=null,c=null;if(n=n.firstBaseUpdate,n!==null){do{var d={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};c===null?r=c=d:c=c.next=d,n=n.next}while(n!==null);c===null?r=c=t:c=c.next=t}else r=c=t;n={baseState:a.baseState,firstBaseUpdate:r,lastBaseUpdate:c,shared:a.shared,callbacks:a.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Pr=!1;function wl(){if(Pr){var e=La;if(e!==null)throw e}}function Rl(e,t,n,a){Pr=!1;var r=e.updateQueue;jn=!1;var c=r.firstBaseUpdate,d=r.lastBaseUpdate,g=r.shared.pending;if(g!==null){r.shared.pending=null;var S=g,M=S.next;S.next=null,d===null?c=M:d.next=M,d=S;var U=e.alternate;U!==null&&(U=U.updateQueue,g=U.lastBaseUpdate,g!==d&&(g===null?U.firstBaseUpdate=M:g.next=M,U.lastBaseUpdate=S))}if(c!==null){var Y=r.baseState;d=0,U=M=S=null,g=c;do{var O=g.lane&-536870913,k=O!==g.lane;if(k?(ge&O)===O:(a&O)===O){O!==0&&O===Ua&&(Pr=!0),U!==null&&(U=U.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var P=e,se=g;O=t;var Me=n;switch(se.tag){case 1:if(P=se.payload,typeof P=="function"){Y=P.call(Me,Y,O);break e}Y=P;break e;case 3:P.flags=P.flags&-65537|128;case 0:if(P=se.payload,O=typeof P=="function"?P.call(Me,Y,O):P,O==null)break e;Y=A({},Y,O);break e;case 2:jn=!0}}O=g.callback,O!==null&&(e.flags|=64,k&&(e.flags|=8192),k=r.callbacks,k===null?r.callbacks=[O]:k.push(O))}else k={lane:O,tag:g.tag,payload:g.payload,callback:g.callback,next:null},U===null?(M=U=k,S=Y):U=U.next=k,d|=O;if(g=g.next,g===null){if(g=r.shared.pending,g===null)break;k=g,g=k.next,k.next=null,r.lastBaseUpdate=k,r.shared.pending=null}}while(!0);U===null&&(S=Y),r.baseState=S,r.firstBaseUpdate=M,r.lastBaseUpdate=U,c===null&&(r.shared.lanes=0),On|=d,e.lanes=d,e.memoizedState=Y}}function zf(e,t){if(typeof e!="function")throw Error(u(191,e));e.call(t)}function kf(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ec?c:8;var d=z.T,g={};z.T=g,gu(e,!1,t,n);try{var S=r(),M=z.S;if(M!==null&&M(g,S),S!==null&&typeof S=="object"&&typeof S.then=="function"){var U=wy(S,a);Ol(e,t,U,At(e))}else Ol(e,t,a,At(e))}catch(Y){Ol(e,t,{then:function(){},status:"rejected",reason:Y},At())}finally{Z.p=c,d!==null&&g.types!==null&&(d.types=g.types),z.T=d}}function zy(){}function yu(e,t,n,a){if(e.tag!==5)throw Error(u(476));var r=md(e).queue;hd(e,r,t,ee,n===null?zy:function(){return pd(e),n(a)})}function md(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ee,baseState:ee,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:nn,lastRenderedState:ee},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:nn,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function pd(e){var t=md(e);t.next===null&&(t=e.alternate.memoizedState),Ol(e,t.next.queue,{},At())}function vu(){return Pe(Fl)}function yd(){return Ye().memoizedState}function vd(){return Ye().memoizedState}function ky(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=At();e=Cn(n);var a=Tn(t,e,n);a!==null&&(ft(a,t,n),Tl(a,t,n)),t={cache:Kr()},e.payload=t;return}t=t.return}}function By(e,t,n){var a=At();n={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Pi(e)?xd(t,n):(n=zr(e,t,n,a),n!==null&&(ft(n,e,a),bd(n,t,a)))}function gd(e,t,n){var a=At();Ol(e,t,n,a)}function Ol(e,t,n,a){var r={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Pi(e))xd(t,r);else{var c=e.alternate;if(e.lanes===0&&(c===null||c.lanes===0)&&(c=t.lastRenderedReducer,c!==null))try{var d=t.lastRenderedState,g=c(d,n);if(r.hasEagerState=!0,r.eagerState=g,pt(g,d))return Oi(e,t,r,0),Oe===null&&Mi(),!1}catch{}finally{}if(n=zr(e,t,r,a),n!==null)return ft(n,e,a),bd(n,t,a),!0}return!1}function gu(e,t,n,a){if(a={lane:2,revertLane:Fu(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},Pi(e)){if(t)throw Error(u(479))}else t=zr(e,n,a,2),t!==null&&ft(t,e,2)}function Pi(e){var t=e.alternate;return e===fe||t!==null&&t===fe}function xd(e,t){Qa=Ki=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function bd(e,t,n){if((n&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Eo(e,n)}}var Dl={readContext:Pe,use:$i,useCallback:Ue,useContext:Ue,useEffect:Ue,useImperativeHandle:Ue,useLayoutEffect:Ue,useInsertionEffect:Ue,useMemo:Ue,useReducer:Ue,useRef:Ue,useState:Ue,useDebugValue:Ue,useDeferredValue:Ue,useTransition:Ue,useSyncExternalStore:Ue,useId:Ue,useHostTransitionStatus:Ue,useFormState:Ue,useActionState:Ue,useOptimistic:Ue,useMemoCache:Ue,useCacheRefresh:Ue};Dl.useEffectEvent=Ue;var Ad={readContext:Pe,use:$i,useCallback:function(e,t){return lt().memoizedState=[e,t===void 0?null:t],e},useContext:Pe,useEffect:ld,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,Wi(4194308,4,ud.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Wi(4194308,4,e,t)},useInsertionEffect:function(e,t){Wi(4,2,e,t)},useMemo:function(e,t){var n=lt();t=t===void 0?null:t;var a=e();if(sa){xn(!0);try{e()}finally{xn(!1)}}return n.memoizedState=[a,t],a},useReducer:function(e,t,n){var a=lt();if(n!==void 0){var r=n(t);if(sa){xn(!0);try{n(t)}finally{xn(!1)}}}else r=t;return a.memoizedState=a.baseState=r,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:r},a.queue=e,e=e.dispatch=By.bind(null,fe,e),[a.memoizedState,e]},useRef:function(e){var t=lt();return e={current:e},t.memoizedState=e},useState:function(e){e=fu(e);var t=e.queue,n=gd.bind(null,fe,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:mu,useDeferredValue:function(e,t){var n=lt();return pu(n,e,t)},useTransition:function(){var e=fu(!1);return e=hd.bind(null,fe,e.queue,!0,!1),lt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var a=fe,r=lt();if(be){if(n===void 0)throw Error(u(407));n=n()}else{if(n=t(),Oe===null)throw Error(u(349));(ge&127)!==0||Vf(a,t,n)}r.memoizedState=n;var c={value:n,getSnapshot:t};return r.queue=c,ld(Gf.bind(null,a,c,e),[e]),a.flags|=2048,Xa(9,{destroy:void 0},Qf.bind(null,a,c,n,t),null),n},useId:function(){var e=lt(),t=Oe.identifierPrefix;if(be){var n=Ht,a=Lt;n=(a&~(1<<32-mt(a)-1)).toString(32)+n,t="_"+t+"R_"+n,n=Zi++,0<\/script>",c=c.removeChild(c.firstChild);break;case"select":c=typeof a.is=="string"?d.createElement("select",{is:a.is}):d.createElement("select"),a.multiple?c.multiple=!0:a.size&&(c.size=a.size);break;default:c=typeof a.is=="string"?d.createElement(r,{is:a.is}):d.createElement(r)}}c[We]=t,c[it]=a;e:for(d=t.child;d!==null;){if(d.tag===5||d.tag===6)c.appendChild(d.stateNode);else if(d.tag!==4&&d.tag!==27&&d.child!==null){d.child.return=d,d=d.child;continue}if(d===t)break e;for(;d.sibling===null;){if(d.return===null||d.return===t)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}t.stateNode=c;e:switch(tt(c,r,a),r){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&ln(t)}}return ze(t),Mu(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&ln(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(u(166));if(e=re.current,ka(t)){if(e=t.stateNode,n=t.memoizedProps,a=null,r=Ie,r!==null)switch(r.tag){case 27:case 5:a=r.memoizedProps}e[We]=t,e=!!(e.nodeValue===n||a!==null&&a.suppressHydrationWarning===!0||Hh(e.nodeValue,n)),e||En(t,!0)}else e=xs(e).createTextNode(a),e[We]=t,t.stateNode=e}return ze(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(a=ka(t),n!==null){if(e===null){if(!a)throw Error(u(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(u(557));e[We]=t}else Pn(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ze(t),e=!1}else n=Vr(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(gt(t),t):(gt(t),null);if((t.flags&128)!==0)throw Error(u(558))}return ze(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(r=ka(t),a!==null&&a.dehydrated!==null){if(e===null){if(!r)throw Error(u(318));if(r=t.memoizedState,r=r!==null?r.dehydrated:null,!r)throw Error(u(317));r[We]=t}else Pn(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;ze(t),r=!1}else r=Vr(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=r),r=!0;if(!r)return t.flags&256?(gt(t),t):(gt(t),null)}return gt(t),(t.flags&128)!==0?(t.lanes=n,t):(n=a!==null,e=e!==null&&e.memoizedState!==null,n&&(a=t.child,r=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(r=a.alternate.memoizedState.cachePool.pool),c=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(c=a.memoizedState.cachePool.pool),c!==r&&(a.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),ls(t,t.updateQueue),ze(t),null);case 4:return qe(),e===null&&ec(t.stateNode.containerInfo),ze(t),null;case 10:return en(t.type),ze(t),null;case 19:if(H(He),a=t.memoizedState,a===null)return ze(t),null;if(r=(t.flags&128)!==0,c=a.rendering,c===null)if(r)kl(a,!1);else{if(Le!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(c=Xi(e),c!==null){for(t.flags|=128,kl(a,!1),e=c.updateQueue,t.updateQueue=e,ls(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)gf(n,e),n=n.sibling;return K(He,He.current&1|2),be&&It(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&dt()>cs&&(t.flags|=128,r=!0,kl(a,!1),t.lanes=4194304)}else{if(!r)if(e=Xi(c),e!==null){if(t.flags|=128,r=!0,e=e.updateQueue,t.updateQueue=e,ls(t,e),kl(a,!0),a.tail===null&&a.tailMode==="hidden"&&!c.alternate&&!be)return ze(t),null}else 2*dt()-a.renderingStartTime>cs&&n!==536870912&&(t.flags|=128,r=!0,kl(a,!1),t.lanes=4194304);a.isBackwards?(c.sibling=t.child,t.child=c):(e=a.last,e!==null?e.sibling=c:t.child=c,a.last=c)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=dt(),e.sibling=null,n=He.current,K(He,r?n&1|2:n&1),be&&It(t,a.treeForkCount),e):(ze(t),null);case 22:case 23:return gt(t),tu(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(n&536870912)!==0&&(t.flags&128)===0&&(ze(t),t.subtreeFlags&6&&(t.flags|=8192)):ze(t),n=t.updateQueue,n!==null&&ls(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==n&&(t.flags|=2048),e!==null&&H(na),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),en(Ve),ze(t),null;case 25:return null;case 30:return null}throw Error(u(156,t.tag))}function Vy(e,t){switch(Hr(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return en(Ve),qe(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ga(t),null;case 31:if(t.memoizedState!==null){if(gt(t),t.alternate===null)throw Error(u(340));Pn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(gt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(u(340));Pn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return H(He),null;case 4:return qe(),null;case 10:return en(t.type),null;case 22:case 23:return gt(t),tu(),e!==null&&H(na),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return en(Ve),null;case 25:return null;default:return null}}function Xd(e,t){switch(Hr(t),t.tag){case 3:en(Ve),qe();break;case 26:case 27:case 5:ga(t);break;case 4:qe();break;case 31:t.memoizedState!==null&>(t);break;case 13:gt(t);break;case 19:H(He);break;case 10:en(t.type);break;case 22:case 23:gt(t),tu(),e!==null&&H(na);break;case 24:en(Ve)}}function Bl(e,t){try{var n=t.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var r=a.next;n=r;do{if((n.tag&e)===e){a=void 0;var c=n.create,d=n.inst;a=c(),d.destroy=a}n=n.next}while(n!==r)}}catch(g){we(t,t.return,g)}}function _n(e,t,n){try{var a=t.updateQueue,r=a!==null?a.lastEffect:null;if(r!==null){var c=r.next;a=c;do{if((a.tag&e)===e){var d=a.inst,g=d.destroy;if(g!==void 0){d.destroy=void 0,r=t;var S=n,M=g;try{M()}catch(U){we(r,S,U)}}}a=a.next}while(a!==c)}}catch(U){we(t,t.return,U)}}function Kd(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{kf(t,n)}catch(a){we(e,e.return,a)}}}function Zd(e,t,n){n.props=ra(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(a){we(e,t,a)}}function Ul(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof n=="function"?e.refCleanup=n(a):n.current=a}}catch(r){we(e,t,r)}}function Yt(e,t){var n=e.ref,a=e.refCleanup;if(n!==null)if(typeof a=="function")try{a()}catch(r){we(e,t,r)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(r){we(e,t,r)}else n.current=null}function Jd(e){var t=e.type,n=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&a.focus();break e;case"img":n.src?a.src=n.src:n.srcSet&&(a.srcset=n.srcSet)}}catch(r){we(e,e.return,r)}}function Ou(e,t,n){try{var a=e.stateNode;ov(a,e.type,n,t),a[it]=t}catch(r){we(e,e.return,r)}}function $d(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Un(e.type)||e.tag===4}function Du(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||$d(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Un(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function zu(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=$t));else if(a!==4&&(a===27&&Un(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(zu(e,t,n),e=e.sibling;e!==null;)zu(e,t,n),e=e.sibling}function is(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(a===27&&Un(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(is(e,t,n),e=e.sibling;e!==null;)is(e,t,n),e=e.sibling}function Fd(e){var t=e.stateNode,n=e.memoizedProps;try{for(var a=e.type,r=t.attributes;r.length;)t.removeAttributeNode(r[0]);tt(t,a,n),t[We]=e,t[it]=n}catch(c){we(e,e.return,c)}}var sn=!1,Xe=!1,ku=!1,Wd=typeof WeakSet=="function"?WeakSet:Set,Fe=null;function Qy(e,t){if(e=e.containerInfo,ac=js,e=cf(e),wr(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var r=a.anchorOffset,c=a.focusNode;a=a.focusOffset;try{n.nodeType,c.nodeType}catch{n=null;break e}var d=0,g=-1,S=-1,M=0,U=0,Y=e,O=null;t:for(;;){for(var k;Y!==n||r!==0&&Y.nodeType!==3||(g=d+r),Y!==c||a!==0&&Y.nodeType!==3||(S=d+a),Y.nodeType===3&&(d+=Y.nodeValue.length),(k=Y.firstChild)!==null;)O=Y,Y=k;for(;;){if(Y===e)break t;if(O===n&&++M===r&&(g=d),O===c&&++U===a&&(S=d),(k=Y.nextSibling)!==null)break;Y=O,O=Y.parentNode}Y=k}n=g===-1||S===-1?null:{start:g,end:S}}else n=null}n=n||{start:0,end:0}}else n=null;for(lc={focusedElem:e,selectionRange:n},js=!1,Fe=t;Fe!==null;)if(t=Fe,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Fe=e;else for(;Fe!==null;){switch(t=Fe,c=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n title"))),tt(c,a,n),c[We]=e,$e(c),a=c;break e;case"link":var d=am("link","href",r).get(a+(n.href||""));if(d){for(var g=0;gMe&&(d=Me,Me=se,se=d);var w=rf(g,se),E=rf(g,Me);if(w&&E&&(k.rangeCount!==1||k.anchorNode!==w.node||k.anchorOffset!==w.offset||k.focusNode!==E.node||k.focusOffset!==E.offset)){var _=Y.createRange();_.setStart(w.node,w.offset),k.removeAllRanges(),se>Me?(k.addRange(_),k.extend(E.node,E.offset)):(_.setEnd(E.node,E.offset),k.addRange(_))}}}}for(Y=[],k=g;k=k.parentNode;)k.nodeType===1&&Y.push({element:k,left:k.scrollLeft,top:k.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;gn?32:n,z.T=null,n=Qu,Qu=null;var c=zn,d=fn;if(Je=0,Fa=zn=null,fn=0,(je&6)!==0)throw Error(u(331));var g=je;if(je|=4,uh(c.current),ih(c,c.current,d,n),je=g,Gl(0,!1),ht&&typeof ht.onPostCommitFiberRoot=="function")try{ht.onPostCommitFiberRoot(ul,c)}catch{}return!0}finally{Z.p=r,z.T=a,jh(e,t)}}function Th(e,t,n){t=Nt(n,t),t=Su(e.stateNode,t,2),e=Tn(e,t,2),e!==null&&(ol(e,2),Vt(e))}function we(e,t,n){if(e.tag===3)Th(e,e,n);else for(;t!==null;){if(t.tag===3){Th(t,e,n);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Dn===null||!Dn.has(a))){e=Nt(n,e),n=wd(2),a=Tn(t,n,2),a!==null&&(Rd(n,a,t,e),ol(a,2),Vt(a));break}}t=t.return}}function Zu(e,t,n){var a=e.pingCache;if(a===null){a=e.pingCache=new Ky;var r=new Set;a.set(t,r)}else r=a.get(t),r===void 0&&(r=new Set,a.set(t,r));r.has(n)||(Lu=!0,r.add(n),e=Wy.bind(null,e,t,n),t.then(e,e))}function Wy(e,t,n){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Oe===e&&(ge&n)===n&&(Le===4||Le===3&&(ge&62914560)===ge&&300>dt()-us?(je&2)===0&&Wa(e,0):Hu|=n,$a===ge&&($a=0)),Vt(e)}function wh(e,t){t===0&&(t=So()),e=Wn(e,t),e!==null&&(ol(e,t),Vt(e))}function Iy(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),wh(e,n)}function Py(e,t){var n=0;switch(e.tag){case 31:case 13:var a=e.stateNode,r=e.memoizedState;r!==null&&(n=r.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(u(314))}a!==null&&a.delete(t),wh(e,n)}function ev(e,t){return sr(e,t)}var ps=null,Pa=null,Ju=!1,ys=!1,$u=!1,Bn=0;function Vt(e){e!==Pa&&e.next===null&&(Pa===null?ps=Pa=e:Pa=Pa.next=e),ys=!0,Ju||(Ju=!0,nv())}function Gl(e,t){if(!$u&&ys){$u=!0;do for(var n=!1,a=ps;a!==null;){if(e!==0){var r=a.pendingLanes;if(r===0)var c=0;else{var d=a.suspendedLanes,g=a.pingedLanes;c=(1<<31-mt(42|e)+1)-1,c&=r&~(d&~g),c=c&201326741?c&201326741|1:c?c|2:0}c!==0&&(n=!0,Oh(a,c))}else c=ge,c=bi(a,a===Oe?c:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(c&3)===0||cl(a,c)||(n=!0,Oh(a,c));a=a.next}while(n);$u=!1}}function tv(){Rh()}function Rh(){ys=Ju=!1;var e=0;Bn!==0&&dv()&&(e=Bn);for(var t=dt(),n=null,a=ps;a!==null;){var r=a.next,c=_h(a,t);c===0?(a.next=null,n===null?ps=r:n.next=r,r===null&&(Pa=n)):(n=a,(e!==0||(c&3)!==0)&&(ys=!0)),a=r}Je!==0&&Je!==5||Gl(e),Bn!==0&&(Bn=0)}function _h(e,t){for(var n=e.suspendedLanes,a=e.pingedLanes,r=e.expirationTimes,c=e.pendingLanes&-62914561;0g)break;var U=S.transferSize,Y=S.initiatorType;U&&Yh(Y)&&(S=S.responseEnd,d+=U*(S"u"?null:document;function Ph(e,t,n){var a=el;if(a&&typeof t=="string"&&t){var r=qt(t);r='link[rel="'+e+'"][href="'+r+'"]',typeof n=="string"&&(r+='[crossorigin="'+n+'"]'),Ih.has(r)||(Ih.add(r),e={rel:e,crossOrigin:n,href:t},a.querySelector(r)===null&&(t=a.createElement("link"),tt(t,"link",e),$e(t),a.head.appendChild(t)))}}function Av(e){dn.D(e),Ph("dns-prefetch",e,null)}function Sv(e,t){dn.C(e,t),Ph("preconnect",e,t)}function qv(e,t,n){dn.L(e,t,n);var a=el;if(a&&e&&t){var r='link[rel="preload"][as="'+qt(t)+'"]';t==="image"&&n&&n.imageSrcSet?(r+='[imagesrcset="'+qt(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(r+='[imagesizes="'+qt(n.imageSizes)+'"]')):r+='[href="'+qt(e)+'"]';var c=r;switch(t){case"style":c=tl(e);break;case"script":c=nl(e)}_t.has(c)||(e=A({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),_t.set(c,e),a.querySelector(r)!==null||t==="style"&&a.querySelector(Jl(c))||t==="script"&&a.querySelector($l(c))||(t=a.createElement("link"),tt(t,"link",e),$e(t),a.head.appendChild(t)))}}function Ev(e,t){dn.m(e,t);var n=el;if(n&&e){var a=t&&typeof t.as=="string"?t.as:"script",r='link[rel="modulepreload"][as="'+qt(a)+'"][href="'+qt(e)+'"]',c=r;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":c=nl(e)}if(!_t.has(c)&&(e=A({rel:"modulepreload",href:e},t),_t.set(c,e),n.querySelector(r)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector($l(c)))return}a=n.createElement("link"),tt(a,"link",e),$e(a),n.head.appendChild(a)}}}function Nv(e,t,n){dn.S(e,t,n);var a=el;if(a&&e){var r=qa(a).hoistableStyles,c=tl(e);t=t||"default";var d=r.get(c);if(!d){var g={loading:0,preload:null};if(d=a.querySelector(Jl(c)))g.loading=5;else{e=A({rel:"stylesheet",href:e,"data-precedence":t},n),(n=_t.get(c))&&fc(e,n);var S=d=a.createElement("link");$e(S),tt(S,"link",e),S._p=new Promise(function(M,U){S.onload=M,S.onerror=U}),S.addEventListener("load",function(){g.loading|=1}),S.addEventListener("error",function(){g.loading|=2}),g.loading|=4,As(d,t,a)}d={type:"stylesheet",instance:d,count:1,state:g},r.set(c,d)}}}function jv(e,t){dn.X(e,t);var n=el;if(n&&e){var a=qa(n).hoistableScripts,r=nl(e),c=a.get(r);c||(c=n.querySelector($l(r)),c||(e=A({src:e,async:!0},t),(t=_t.get(r))&&dc(e,t),c=n.createElement("script"),$e(c),tt(c,"link",e),n.head.appendChild(c)),c={type:"script",instance:c,count:1,state:null},a.set(r,c))}}function Cv(e,t){dn.M(e,t);var n=el;if(n&&e){var a=qa(n).hoistableScripts,r=nl(e),c=a.get(r);c||(c=n.querySelector($l(r)),c||(e=A({src:e,async:!0,type:"module"},t),(t=_t.get(r))&&dc(e,t),c=n.createElement("script"),$e(c),tt(c,"link",e),n.head.appendChild(c)),c={type:"script",instance:c,count:1,state:null},a.set(r,c))}}function em(e,t,n,a){var r=(r=re.current)?bs(r):null;if(!r)throw Error(u(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=tl(n.href),n=qa(r).hoistableStyles,a=n.get(t),a||(a={type:"style",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=tl(n.href);var c=qa(r).hoistableStyles,d=c.get(e);if(d||(r=r.ownerDocument||r,d={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},c.set(e,d),(c=r.querySelector(Jl(e)))&&!c._p&&(d.instance=c,d.state.loading=5),_t.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},_t.set(e,n),c||Tv(r,e,n,d.state))),t&&a===null)throw Error(u(528,""));return d}if(t&&a!==null)throw Error(u(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=nl(n),n=qa(r).hoistableScripts,a=n.get(t),a||(a={type:"script",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(u(444,e))}}function tl(e){return'href="'+qt(e)+'"'}function Jl(e){return'link[rel="stylesheet"]['+e+"]"}function tm(e){return A({},e,{"data-precedence":e.precedence,precedence:null})}function Tv(e,t,n,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),tt(t,"link",n),$e(t),e.head.appendChild(t))}function nl(e){return'[src="'+qt(e)+'"]'}function $l(e){return"script[async]"+e}function nm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+qt(n.href)+'"]');if(a)return t.instance=a,$e(a),a;var r=A({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),$e(a),tt(a,"style",r),As(a,n.precedence,e),t.instance=a;case"stylesheet":r=tl(n.href);var c=e.querySelector(Jl(r));if(c)return t.state.loading|=4,t.instance=c,$e(c),c;a=tm(n),(r=_t.get(r))&&fc(a,r),c=(e.ownerDocument||e).createElement("link"),$e(c);var d=c;return d._p=new Promise(function(g,S){d.onload=g,d.onerror=S}),tt(c,"link",a),t.state.loading|=4,As(c,n.precedence,e),t.instance=c;case"script":return c=nl(n.src),(r=e.querySelector($l(c)))?(t.instance=r,$e(r),r):(a=n,(r=_t.get(c))&&(a=A({},n),dc(a,r)),e=e.ownerDocument||e,r=e.createElement("script"),$e(r),tt(r,"link",a),e.head.appendChild(r),t.instance=r);case"void":return null;default:throw Error(u(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,As(a,n.precedence,e));return t.instance}function As(e,t,n){for(var a=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),r=a.length?a[a.length-1]:null,c=r,d=0;d title"):null)}function wv(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function im(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Rv(e,t,n,a){if(n.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var r=tl(a.href),c=t.querySelector(Jl(r));if(c){t=c._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=qs.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=c,$e(c);return}c=t.ownerDocument||t,a=tm(a),(r=_t.get(r))&&fc(a,r),c=c.createElement("link"),$e(c);var d=c;d._p=new Promise(function(g,S){d.onload=g,d.onerror=S}),tt(c,"link",a),n.instance=c}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=qs.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var hc=0;function _v(e,t){return e.stylesheets&&e.count===0&&Ns(e,e.stylesheets),0hc?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(r)}}:null}function qs(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Ns(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Es=null;function Ns(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Es=new Map,t.forEach(Mv,e),Es=null,qs.call(e))}function Mv(e,t){if(!(t.state.loading&4)){var n=Es.get(e);if(n)var a=n.get(null);else{n=new Map,Es.set(e,n);for(var r=e.querySelectorAll("link[data-precedence],style[data-precedence]"),c=0;c"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(l){console.error(l)}}return i(),Sc.exports=$v(),Sc.exports}var Wv=Fv();var wm="popstate";function Iv(i={}){function l(u,f){let{pathname:h,search:p,hash:x}=u.location;return Lc("",{pathname:h,search:p,hash:x},f.state&&f.state.usr||null,f.state&&f.state.key||"default")}function s(u,f){return typeof f=="string"?f:ri(f)}return eg(l,s,null,i)}function Be(i,l){if(i===!1||i===null||typeof i>"u")throw new Error(l)}function Bt(i,l){if(!i){typeof console<"u"&&console.warn(l);try{throw new Error(l)}catch{}}}function Pv(){return Math.random().toString(36).substring(2,10)}function Rm(i,l){return{usr:i.state,key:i.key,idx:l}}function Lc(i,l,s=null,u){return{pathname:typeof i=="string"?i:i.pathname,search:"",hash:"",...typeof l=="string"?il(l):l,state:s,key:l&&l.key||u||Pv()}}function ri({pathname:i="/",search:l="",hash:s=""}){return l&&l!=="?"&&(i+=l.charAt(0)==="?"?l:"?"+l),s&&s!=="#"&&(i+=s.charAt(0)==="#"?s:"#"+s),i}function il(i){let l={};if(i){let s=i.indexOf("#");s>=0&&(l.hash=i.substring(s),i=i.substring(0,s));let u=i.indexOf("?");u>=0&&(l.search=i.substring(u),i=i.substring(0,u)),i&&(l.pathname=i)}return l}function eg(i,l,s,u={}){let{window:f=document.defaultView,v5Compat:h=!1}=u,p=f.history,x="POP",y=null,v=b();v==null&&(v=0,p.replaceState({...p.state,idx:v},""));function b(){return(p.state||{idx:null}).idx}function A(){x="POP";let T=b(),D=T==null?null:T-v;v=T,y&&y({action:x,location:R.location,delta:D})}function C(T,D){x="PUSH";let B=Lc(R.location,T,D);v=b()+1;let V=Rm(B,v),$=R.createHref(B);try{p.pushState(V,"",$)}catch(ne){if(ne instanceof DOMException&&ne.name==="DataCloneError")throw ne;f.location.assign($)}h&&y&&y({action:x,location:R.location,delta:1})}function j(T,D){x="REPLACE";let B=Lc(R.location,T,D);v=b();let V=Rm(B,v),$=R.createHref(B);p.replaceState(V,"",$),h&&y&&y({action:x,location:R.location,delta:0})}function N(T){return tg(T)}let R={get action(){return x},get location(){return i(f,p)},listen(T){if(y)throw new Error("A history only accepts one active listener");return f.addEventListener(wm,A),y=T,()=>{f.removeEventListener(wm,A),y=null}},createHref(T){return l(f,T)},createURL:N,encodeLocation(T){let D=N(T);return{pathname:D.pathname,search:D.search,hash:D.hash}},push:C,replace:j,go(T){return p.go(T)}};return R}function tg(i,l=!1){let s="http://localhost";typeof window<"u"&&(s=window.location.origin!=="null"?window.location.origin:window.location.href),Be(s,"No window.location.(origin|href) available to create URL");let u=typeof i=="string"?i:ri(i);return u=u.replace(/ $/,"%20"),!l&&u.startsWith("//")&&(u=s+u),new URL(u,s)}function up(i,l,s="/"){return ng(i,l,s,!1)}function ng(i,l,s,u){let f=typeof l=="string"?il(l):l,h=pn(f.pathname||"/",s);if(h==null)return null;let p=cp(i);ag(p);let x=null;for(let y=0;x==null&&y{let b={relativePath:v===void 0?p.path||"":v,caseSensitive:p.caseSensitive===!0,childrenIndex:x,route:p};if(b.relativePath.startsWith("/")){if(!b.relativePath.startsWith(u)&&y)return;Be(b.relativePath.startsWith(u),`Absolute route path "${b.relativePath}" nested under path "${u}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),b.relativePath=b.relativePath.slice(u.length)}let A=hn([u,b.relativePath]),C=s.concat(b);p.children&&p.children.length>0&&(Be(p.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${A}".`),cp(p.children,l,C,A,y)),!(p.path==null&&!p.index)&&l.push({path:A,score:og(A,p.index),routesMeta:C})};return i.forEach((p,x)=>{if(p.path===""||!p.path?.includes("?"))h(p,x);else for(let y of op(p.path))h(p,x,!0,y)}),l}function op(i){let l=i.split("/");if(l.length===0)return[];let[s,...u]=l,f=s.endsWith("?"),h=s.replace(/\?$/,"");if(u.length===0)return f?[h,""]:[h];let p=op(u.join("/")),x=[];return x.push(...p.map(y=>y===""?h:[h,y].join("/"))),f&&x.push(...p),x.map(y=>i.startsWith("/")&&y===""?"/":y)}function ag(i){i.sort((l,s)=>l.score!==s.score?s.score-l.score:fg(l.routesMeta.map(u=>u.childrenIndex),s.routesMeta.map(u=>u.childrenIndex)))}var lg=/^:[\w-]+$/,ig=3,sg=2,rg=1,ug=10,cg=-2,_m=i=>i==="*";function og(i,l){let s=i.split("/"),u=s.length;return s.some(_m)&&(u+=cg),l&&(u+=sg),s.filter(f=>!_m(f)).reduce((f,h)=>f+(lg.test(h)?ig:h===""?rg:ug),u)}function fg(i,l){return i.length===l.length&&i.slice(0,-1).every((u,f)=>u===l[f])?i[i.length-1]-l[l.length-1]:0}function dg(i,l,s=!1){let{routesMeta:u}=i,f={},h="/",p=[];for(let x=0;x{if(b==="*"){let N=x[C]||"";p=h.slice(0,h.length-N.length).replace(/(.)\/+$/,"$1")}const j=x[C];return A&&!j?v[b]=void 0:v[b]=(j||"").replace(/%2F/g,"/"),v},{}),pathname:h,pathnameBase:p,pattern:i}}function hg(i,l=!1,s=!0){Bt(i==="*"||!i.endsWith("*")||i.endsWith("/*"),`Route path "${i}" will be treated as if it were "${i.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${i.replace(/\*$/,"/*")}".`);let u=[],f="^"+i.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,x,y)=>(u.push({paramName:x,isOptional:y!=null}),y?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return i.endsWith("*")?(u.push({paramName:"*"}),f+=i==="*"||i==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):s?f+="\\/*$":i!==""&&i!=="/"&&(f+="(?:(?=\\/|$))"),[new RegExp(f,l?void 0:"i"),u]}function mg(i){try{return i.split("/").map(l=>decodeURIComponent(l).replace(/\//g,"%2F")).join("/")}catch(l){return Bt(!1,`The URL path "${i}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${l}).`),i}}function pn(i,l){if(l==="/")return i;if(!i.toLowerCase().startsWith(l.toLowerCase()))return null;let s=l.endsWith("/")?l.length-1:l.length,u=i.charAt(s);return u&&u!=="/"?null:i.slice(s)||"/"}var pg=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,yg=i=>pg.test(i);function vg(i,l="/"){let{pathname:s,search:u="",hash:f=""}=typeof i=="string"?il(i):i,h;if(s)if(yg(s))h=s;else{if(s.includes("//")){let p=s;s=s.replace(/\/\/+/g,"/"),Bt(!1,`Pathnames cannot have embedded double slashes - normalizing ${p} -> ${s}`)}s.startsWith("/")?h=Mm(s.substring(1),"/"):h=Mm(s,l)}else h=l;return{pathname:h,search:bg(u),hash:Ag(f)}}function Mm(i,l){let s=l.replace(/\/+$/,"").split("/");return i.split("/").forEach(f=>{f===".."?s.length>1&&s.pop():f!=="."&&s.push(f)}),s.length>1?s.join("/"):"/"}function jc(i,l,s,u){return`Cannot include a '${i}' character in a manually specified \`to.${l}\` field [${JSON.stringify(u)}]. Please separate it out to the \`to.${s}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function gg(i){return i.filter((l,s)=>s===0||l.route.path&&l.route.path.length>0)}function fp(i){let l=gg(i);return l.map((s,u)=>u===l.length-1?s.pathname:s.pathnameBase)}function dp(i,l,s,u=!1){let f;typeof i=="string"?f=il(i):(f={...i},Be(!f.pathname||!f.pathname.includes("?"),jc("?","pathname","search",f)),Be(!f.pathname||!f.pathname.includes("#"),jc("#","pathname","hash",f)),Be(!f.search||!f.search.includes("#"),jc("#","search","hash",f)));let h=i===""||f.pathname==="",p=h?"/":f.pathname,x;if(p==null)x=s;else{let A=l.length-1;if(!u&&p.startsWith("..")){let C=p.split("/");for(;C[0]==="..";)C.shift(),A-=1;f.pathname=C.join("/")}x=A>=0?l[A]:"/"}let y=vg(f,x),v=p&&p!=="/"&&p.endsWith("/"),b=(h||p===".")&&s.endsWith("/");return!y.pathname.endsWith("/")&&(v||b)&&(y.pathname+="/"),y}var hn=i=>i.join("/").replace(/\/\/+/g,"/"),xg=i=>i.replace(/\/+$/,"").replace(/^\/*/,"/"),bg=i=>!i||i==="?"?"":i.startsWith("?")?i:"?"+i,Ag=i=>!i||i==="#"?"":i.startsWith("#")?i:"#"+i;function Sg(i){return i!=null&&typeof i.status=="number"&&typeof i.statusText=="string"&&typeof i.internal=="boolean"&&"data"in i}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var hp=["POST","PUT","PATCH","DELETE"];new Set(hp);var qg=["GET",...hp];new Set(qg);var sl=m.createContext(null);sl.displayName="DataRouter";var Is=m.createContext(null);Is.displayName="DataRouterState";m.createContext(!1);var mp=m.createContext({isTransitioning:!1});mp.displayName="ViewTransition";var Eg=m.createContext(new Map);Eg.displayName="Fetchers";var Ng=m.createContext(null);Ng.displayName="Await";var Xt=m.createContext(null);Xt.displayName="Navigation";var ci=m.createContext(null);ci.displayName="Location";var vn=m.createContext({outlet:null,matches:[],isDataRoute:!1});vn.displayName="Route";var Pc=m.createContext(null);Pc.displayName="RouteError";function jg(i,{relative:l}={}){Be(oi(),"useHref() may be used only in the context of a component.");let{basename:s,navigator:u}=m.useContext(Xt),{hash:f,pathname:h,search:p}=fi(i,{relative:l}),x=h;return s!=="/"&&(x=h==="/"?s:hn([s,h])),u.createHref({pathname:x,search:p,hash:f})}function oi(){return m.useContext(ci)!=null}function ya(){return Be(oi(),"useLocation() may be used only in the context of a component."),m.useContext(ci).location}var pp="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function yp(i){m.useContext(Xt).static||m.useLayoutEffect(i)}function Cg(){let{isDataRoute:i}=m.useContext(vn);return i?Hg():Tg()}function Tg(){Be(oi(),"useNavigate() may be used only in the context of a component.");let i=m.useContext(sl),{basename:l,navigator:s}=m.useContext(Xt),{matches:u}=m.useContext(vn),{pathname:f}=ya(),h=JSON.stringify(fp(u)),p=m.useRef(!1);return yp(()=>{p.current=!0}),m.useCallback((y,v={})=>{if(Bt(p.current,pp),!p.current)return;if(typeof y=="number"){s.go(y);return}let b=dp(y,JSON.parse(h),f,v.relative==="path");i==null&&l!=="/"&&(b.pathname=b.pathname==="/"?l:hn([l,b.pathname])),(v.replace?s.replace:s.push)(b,v.state,v)},[l,s,h,f,i])}m.createContext(null);function fi(i,{relative:l}={}){let{matches:s}=m.useContext(vn),{pathname:u}=ya(),f=JSON.stringify(fp(s));return m.useMemo(()=>dp(i,JSON.parse(f),u,l==="path"),[i,f,u,l])}function wg(i,l){return vp(i,l)}function vp(i,l,s,u,f){Be(oi(),"useRoutes() may be used only in the context of a component.");let{navigator:h}=m.useContext(Xt),{matches:p}=m.useContext(vn),x=p[p.length-1],y=x?x.params:{},v=x?x.pathname:"/",b=x?x.pathnameBase:"/",A=x&&x.route;{let B=A&&A.path||"";gp(v,!A||B.endsWith("*")||B.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${v}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let C=ya(),j;if(l){let B=typeof l=="string"?il(l):l;Be(b==="/"||B.pathname?.startsWith(b),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${b}" but pathname "${B.pathname}" was given in the \`location\` prop.`),j=B}else j=C;let N=j.pathname||"/",R=N;if(b!=="/"){let B=b.replace(/^\//,"").split("/");R="/"+N.replace(/^\//,"").split("/").slice(B.length).join("/")}let T=up(i,{pathname:R});Bt(A||T!=null,`No routes matched location "${j.pathname}${j.search}${j.hash}" `),Bt(T==null||T[T.length-1].route.element!==void 0||T[T.length-1].route.Component!==void 0||T[T.length-1].route.lazy!==void 0,`Matched leaf route at location "${j.pathname}${j.search}${j.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let D=Dg(T&&T.map(B=>Object.assign({},B,{params:Object.assign({},y,B.params),pathname:hn([b,h.encodeLocation?h.encodeLocation(B.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:B.pathname]),pathnameBase:B.pathnameBase==="/"?b:hn([b,h.encodeLocation?h.encodeLocation(B.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:B.pathnameBase])})),p,s,u,f);return l&&D?m.createElement(ci.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...j},navigationType:"POP"}},D):D}function Rg(){let i=Lg(),l=Sg(i)?`${i.status} ${i.statusText}`:i instanceof Error?i.message:JSON.stringify(i),s=i instanceof Error?i.stack:null,u="rgba(200,200,200, 0.5)",f={padding:"0.5rem",backgroundColor:u},h={padding:"2px 4px",backgroundColor:u},p=null;return console.error("Error handled by React Router default ErrorBoundary:",i),p=m.createElement(m.Fragment,null,m.createElement("p",null,"💿 Hey developer 👋"),m.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",m.createElement("code",{style:h},"ErrorBoundary")," or"," ",m.createElement("code",{style:h},"errorElement")," prop on your route.")),m.createElement(m.Fragment,null,m.createElement("h2",null,"Unexpected Application Error!"),m.createElement("h3",{style:{fontStyle:"italic"}},l),s?m.createElement("pre",{style:f},s):null,p)}var _g=m.createElement(Rg,null),Mg=class extends m.Component{constructor(i){super(i),this.state={location:i.location,revalidation:i.revalidation,error:i.error}}static getDerivedStateFromError(i){return{error:i}}static getDerivedStateFromProps(i,l){return l.location!==i.location||l.revalidation!=="idle"&&i.revalidation==="idle"?{error:i.error,location:i.location,revalidation:i.revalidation}:{error:i.error!==void 0?i.error:l.error,location:l.location,revalidation:i.revalidation||l.revalidation}}componentDidCatch(i,l){this.props.onError?this.props.onError(i,l):console.error("React Router caught the following error during render",i)}render(){return this.state.error!==void 0?m.createElement(vn.Provider,{value:this.props.routeContext},m.createElement(Pc.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Og({routeContext:i,match:l,children:s}){let u=m.useContext(sl);return u&&u.static&&u.staticContext&&(l.route.errorElement||l.route.ErrorBoundary)&&(u.staticContext._deepestRenderedBoundaryId=l.route.id),m.createElement(vn.Provider,{value:i},s)}function Dg(i,l=[],s=null,u=null,f=null){if(i==null){if(!s)return null;if(s.errors)i=s.matches;else if(l.length===0&&!s.initialized&&s.matches.length>0)i=s.matches;else return null}let h=i,p=s?.errors;if(p!=null){let b=h.findIndex(A=>A.route.id&&p?.[A.route.id]!==void 0);Be(b>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(p).join(",")}`),h=h.slice(0,Math.min(h.length,b+1))}let x=!1,y=-1;if(s)for(let b=0;b=0?h=h.slice(0,y+1):h=[h[0]];break}}}let v=s&&u?(b,A)=>{u(b,{location:s.location,params:s.matches?.[0]?.params??{},errorInfo:A})}:void 0;return h.reduceRight((b,A,C)=>{let j,N=!1,R=null,T=null;s&&(j=p&&A.route.id?p[A.route.id]:void 0,R=A.route.errorElement||_g,x&&(y<0&&C===0?(gp("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),N=!0,T=null):y===C&&(N=!0,T=A.route.hydrateFallbackElement||null)));let D=l.concat(h.slice(0,C+1)),B=()=>{let V;return j?V=R:N?V=T:A.route.Component?V=m.createElement(A.route.Component,null):A.route.element?V=A.route.element:V=b,m.createElement(Og,{match:A,routeContext:{outlet:b,matches:D,isDataRoute:s!=null},children:V})};return s&&(A.route.ErrorBoundary||A.route.errorElement||C===0)?m.createElement(Mg,{location:s.location,revalidation:s.revalidation,component:R,error:j,children:B(),routeContext:{outlet:null,matches:D,isDataRoute:!0},onError:v}):B()},null)}function eo(i){return`${i} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function zg(i){let l=m.useContext(sl);return Be(l,eo(i)),l}function kg(i){let l=m.useContext(Is);return Be(l,eo(i)),l}function Bg(i){let l=m.useContext(vn);return Be(l,eo(i)),l}function to(i){let l=Bg(i),s=l.matches[l.matches.length-1];return Be(s.route.id,`${i} can only be used on routes that contain a unique "id"`),s.route.id}function Ug(){return to("useRouteId")}function Lg(){let i=m.useContext(Pc),l=kg("useRouteError"),s=to("useRouteError");return i!==void 0?i:l.errors?.[s]}function Hg(){let{router:i}=zg("useNavigate"),l=to("useNavigate"),s=m.useRef(!1);return yp(()=>{s.current=!0}),m.useCallback(async(f,h={})=>{Bt(s.current,pp),s.current&&(typeof f=="number"?i.navigate(f):await i.navigate(f,{fromRouteId:l,...h}))},[i,l])}var Om={};function gp(i,l,s){!l&&!Om[i]&&(Om[i]=!0,Bt(!1,s))}m.memo(Yg);function Yg({routes:i,future:l,state:s,unstable_onError:u}){return vp(i,void 0,s,u,l)}function Hc(i){Be(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Vg({basename:i="/",children:l=null,location:s,navigationType:u="POP",navigator:f,static:h=!1}){Be(!oi(),"You cannot render a inside another . You should never have more than one in your app.");let p=i.replace(/^\/*/,"/"),x=m.useMemo(()=>({basename:p,navigator:f,static:h,future:{}}),[p,f,h]);typeof s=="string"&&(s=il(s));let{pathname:y="/",search:v="",hash:b="",state:A=null,key:C="default"}=s,j=m.useMemo(()=>{let N=pn(y,p);return N==null?null:{location:{pathname:N,search:v,hash:b,state:A,key:C},navigationType:u}},[p,y,v,b,A,C,u]);return Bt(j!=null,` is not able to match the URL "${y}${v}${b}" because it does not start with the basename, so the won't render anything.`),j==null?null:m.createElement(Xt.Provider,{value:x},m.createElement(ci.Provider,{children:l,value:j}))}function Qg({children:i,location:l}){return wg(Yc(i),l)}function Yc(i,l=[]){let s=[];return m.Children.forEach(i,(u,f)=>{if(!m.isValidElement(u))return;let h=[...l,f];if(u.type===m.Fragment){s.push.apply(s,Yc(u.props.children,h));return}Be(u.type===Hc,`[${typeof u.type=="string"?u.type:u.type.name}] is not a component. All component children of must be a or `),Be(!u.props.index||!u.props.children,"An index route cannot have child routes.");let p={id:u.props.id||h.join("-"),caseSensitive:u.props.caseSensitive,element:u.props.element,Component:u.props.Component,index:u.props.index,path:u.props.path,middleware:u.props.middleware,loader:u.props.loader,action:u.props.action,hydrateFallbackElement:u.props.hydrateFallbackElement,HydrateFallback:u.props.HydrateFallback,errorElement:u.props.errorElement,ErrorBoundary:u.props.ErrorBoundary,hasErrorBoundary:u.props.hasErrorBoundary===!0||u.props.ErrorBoundary!=null||u.props.errorElement!=null,shouldRevalidate:u.props.shouldRevalidate,handle:u.props.handle,lazy:u.props.lazy};u.props.children&&(p.children=Yc(u.props.children,h)),s.push(p)}),s}var Vs="get",Qs="application/x-www-form-urlencoded";function Ps(i){return i!=null&&typeof i.tagName=="string"}function Gg(i){return Ps(i)&&i.tagName.toLowerCase()==="button"}function Xg(i){return Ps(i)&&i.tagName.toLowerCase()==="form"}function Kg(i){return Ps(i)&&i.tagName.toLowerCase()==="input"}function Zg(i){return!!(i.metaKey||i.altKey||i.ctrlKey||i.shiftKey)}function Jg(i,l){return i.button===0&&(!l||l==="_self")&&!Zg(i)}var Os=null;function $g(){if(Os===null)try{new FormData(document.createElement("form"),0),Os=!1}catch{Os=!0}return Os}var Fg=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Cc(i){return i!=null&&!Fg.has(i)?(Bt(!1,`"${i}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Qs}"`),null):i}function Wg(i,l){let s,u,f,h,p;if(Xg(i)){let x=i.getAttribute("action");u=x?pn(x,l):null,s=i.getAttribute("method")||Vs,f=Cc(i.getAttribute("enctype"))||Qs,h=new FormData(i)}else if(Gg(i)||Kg(i)&&(i.type==="submit"||i.type==="image")){let x=i.form;if(x==null)throw new Error('Cannot submit a + + +
+ +
+ + + ); +} diff --git a/webui/src/components/HelpPanel.jsx b/webui/src/components/HelpPanel.jsx index e57f7cd5..3513cbd0 100644 --- a/webui/src/components/HelpPanel.jsx +++ b/webui/src/components/HelpPanel.jsx @@ -1,32 +1,22 @@ -export default function HelpPanel({ layout }) { - const presets = { - desktop: [ - 'Use WASD + Shift to drive. Video must stay focused.', - 'Macros on the left prep the rover before moving.', - 'Switch tabs on the right for telemetry, room, and advanced tools.', - ], - 'mobile-portrait': [ - 'Keep joystick centered when not driving.', - 'Auxiliary buttons sit beside the joystick – use them carefully.', - 'Scroll to access drive/telemetry if screen space is limited.', - ], - 'mobile-landscape': [ - 'Joystick and video are side by side for game-style control.', - 'Rotate back to portrait if you need admin controls quickly.', - 'Tabs are desktop-only; mobile shows sections stacked.', - ], - }; - const tips = presets[layout] || presets.desktop; +import { useControlSystem } from '../controls/index.js'; +import HelpContentView from './HelpContentView.jsx'; + +export default function HelpPanel({ layout, onOpenOverlay }) { + const { state } = useControlSystem(); + return ( -
-

Help

-
    - {tips.map((tip) => ( -
  • - {tip} -
  • - ))} -
+
+
+ Help + +
+
); } diff --git a/webui/src/components/RightPaneTabs.jsx b/webui/src/components/RightPaneTabs.jsx index 08c475ca..4e971f1e 100644 --- a/webui/src/components/RightPaneTabs.jsx +++ b/webui/src/components/RightPaneTabs.jsx @@ -7,7 +7,7 @@ import SettingsPanel from './SettingsPanel.jsx'; import HelpPanel from './HelpPanel.jsx'; import Tabs, { Tab, TabList, TabPanel, TabPanels } from './Tabs.jsx'; -export default function RightPaneTabs({ layout }) { +export default function RightPaneTabs({ layout, onOpenHelpOverlay }) { return (
@@ -36,7 +36,7 @@ export default function RightPaneTabs({ layout }) { - + diff --git a/webui/src/components/UserListPanel.jsx b/webui/src/components/UserListPanel.jsx index 144cfaa9..0df19610 100644 --- a/webui/src/components/UserListPanel.jsx +++ b/webui/src/components/UserListPanel.jsx @@ -3,6 +3,7 @@ import { useSession } from '../context/SessionContext.jsx'; import { useSettingsNamespace } from '../settings/index.js'; import { useSocket } from '../context/SocketContext.jsx'; import NicknameForm from './NicknameForm.jsx'; +import DiscordInviteButton from './DiscordInviteButton.jsx'; function roleColors(role) { switch (role) { @@ -128,8 +129,14 @@ export default function UserListPanel({ hideNicknameForm = false, hideHeader = f className={`panel-section space-y-0.5 text-base ${fillHeight ? 'flex h-full min-h-0 flex-col overflow-hidden' : ''} ${className}`} > {!hideNicknameForm && ( -
+
+
+ +
+
+ +
{!canSetNickname &&

Spectators cannot set nicknames.

}
)} diff --git a/webui/src/help/content.js b/webui/src/help/content.js new file mode 100644 index 00000000..c44d83fa --- /dev/null +++ b/webui/src/help/content.js @@ -0,0 +1,206 @@ +export const HELP_LAYOUTS = ['desktop', 'mobile-portrait', 'mobile-landscape']; + +// Block-based help content; each layout defines a hero plus main/aside blocks. +// Text supports inline key pills via segments: strings or { action: 'driveMacro' }. +export const HELP_CONTENT = { + desktop: { + main: [ + { + type: 'list', + title: 'Chat and nicknames', + items: [ + 'Set a nickname in the user list panel, on the bottom left of the page below the rover video.', + { segments: ['Toggle chat focus with ', { action: 'chatFocus' }, '. Press ', { action: 'chatFocus'}, ' again to send.'] }, + ] + }, + { + type: 'list', + title: 'Driving the rover', + items: [ + { segments: ['Press the "Start Driving" button onscreen, or press ' , { action: 'driveMacro' }, ' on your keyboard to put the rover into driving mode.'] }, + 'Refer to the controls for the controls for the rover.' + ], + }, + { + type: 'list', + title: 'Docking the rover', + items: [ + 'Line up the rover to the dock, about a foot away, then:', + { segments: ['Press the "Dock and Charge" button onscreen, or press ', { action: 'dockMacro' }, ' on your keyboard to start docking.'] }, + 'Wait for the rover to confirm it is docked and charging before leaving it unattended.', + ], + }, + ], + aside: [ + { + type: 'keyboard', + title: 'Keyboard controls', + footnote: 'Per-browser; adjust in Settings → Keybindings.', + groups: [ + { + id: 'movement', + title: 'Movement', + items: [ + { action: 'driveForward', label: 'Forward' }, + { action: 'driveBackward', label: 'Backward' }, + { action: 'driveLeft', label: 'Turn left' }, + { action: 'driveRight', label: 'Turn right' }, + { action: 'boostModifier', label: 'Boost speed' }, + { action: 'slowModifier', label: 'Precision speed' }, + ], + }, + { + id: 'macros', + title: 'Rover modes & chat', + items: [ + { action: 'driveMacro', label: 'Drive macro' }, + { action: 'dockMacro', label: 'Dock macro' }, + { action: 'chatFocus', label: 'Chat focus' }, + ], + }, + { + id: 'camera', + title: 'Camera', + items: [ + { action: 'cameraUp', label: 'Tilt up' }, + { action: 'cameraDown', label: 'Tilt down' }, + { action: 'nightVisionToggle', label: 'Toggle night vision' }, + ], + }, + { + id: 'motors', + title: 'Rover Aux Motors', + items: [ + { action: 'auxMainForward', label: 'Main brush forward' }, + { action: 'auxMainReverse', label: 'Main brush reverse' }, + { action: 'auxSideForward', label: 'Side brush forward' }, + { action: 'auxSideReverse', label: 'Side brush reverse' }, + { action: 'auxVacuumFast', label: 'Vacuum max' }, + { action: 'auxVacuumSlow', label: 'Vacuum low' }, + { action: 'auxAllForward', label: 'All motors forward' }, + ], + }, + ], + }, + { + type: 'gamepad', + title: 'Gamepad / joystick', + items: [ + 'Gamepad controls are not mapped by default, this is because of how terribly inconsistent gamepad implementations are across browsers and devices.', + 'You can map gamepad controls in Settings → Controller.', + 'Use at your own risk, it may not be perfect depending on your setup.' + ], + }, + ], + }, + 'mobile-portrait': { + main: [ + { + type: 'list', + title: 'Chat and nicknames', + items: [ + 'Set a nickname in the user list panel below.', + 'Tap in the chat box to send messages in the chat.' + ] + }, + { + type: 'list', + title: 'Driving the rover', + items: [ + { segments: ['Press the "Start Driving" button onscreen to put the rover into driving mode.'] }, + 'Look below the rover video. Use the joystick on the right to move the rover, and hold the buttons on the left to run the aux motors.' + ], + }, + { + type: 'list', + title: 'Docking the rover', + items: [ + 'Line up the rover to the dock, about a foot away, then:', + { segments: ['Press the "Dock and Charge" button onscreen to start docking.'] }, + 'Wait for the rover to confirm it is docked and charging before leaving it unattended.', + ], + } + ], + }, + 'mobile-landscape': { + main: [ + { + type: 'list', + title: 'Chat and nicknames', + items: [ + 'Scroll down to see more of the page.', + 'Set a nickname in the user list panel below.', + 'Tap in the chat box to send messages in the chat.' + ] + }, + { + type: 'list', + title: 'Driving the rover', + items: [ + { segments: ['Press the "Start Driving" button, or the "Drive" button to put the rover into driving mode.'] }, + 'Use the joystick to the right of the video feed to move the rover, and hold the buttons on the left to run the aux motors.' + ], + }, + { + type: 'list', + title: 'Docking the rover', + items: [ + 'Line up the rover to the dock, about a foot away, then:', + { segments: ['Press the "Dock and Charge" or the "Dock" button onscreen to start docking.'] }, + 'Wait for the rover to confirm it is docked and charging before leaving it unattended.', + ], + } + ], + // aside: [ + // { + // type: 'keyboard', + // title: 'Keyboard (if attached)', + // footnote: 'Per-browser; adjust in Settings → Controls.', + // groups: [ + // { + // id: 'movement', + // title: 'Movement', + // items: [ + // { action: 'driveForward', label: 'Forward' }, + // { action: 'driveBackward', label: 'Backward' }, + // { action: 'driveLeft', label: 'Turn left' }, + // { action: 'driveRight', label: 'Turn right' }, + // { action: 'boostModifier', label: 'Boost' }, + // { action: 'slowModifier', label: 'Precision' }, + // ], + // }, + // { + // id: 'camera', + // title: 'Camera', + // items: [ + // { action: 'cameraUp', label: 'Tilt up' }, + // { action: 'cameraDown', label: 'Tilt down' }, + // ], + // }, + // { + // id: 'macros', + // title: 'Macros & chat', + // items: [ + // { action: 'driveMacro', label: 'Drive macro' }, + // { action: 'dockMacro', label: 'Dock macro' }, + // { action: 'nightVisionToggle', label: 'Toggle night vision' }, + // { action: 'chatFocus', label: 'Chat focus' }, + // ], + // }, + // ], + // }, + // { + // type: 'gamepad', + // title: 'Gamepad / joystick', + // items: [ + // 'Left stick drives; right stick/D-pad: camera when mapped.', + // 'Buttons can trigger macros or aux motors; adjust deadzones if drifting.', + // ], + // }, + // ], + }, +}; + +export function getHelpContent(layout) { + return HELP_CONTENT[layout] || HELP_CONTENT.desktop; +} diff --git a/webui/src/index.css b/webui/src/index.css index fbf2c429..8e5a3a43 100644 --- a/webui/src/index.css +++ b/webui/src/index.css @@ -71,7 +71,7 @@ body { 270deg, #ff0000, #ff7f00, - #ffff00, + #ffff00b3, #00ff00, #0000ff, #4b0082,