From 8349d736114b5ebd57d769fc2d8842b41e733f5a Mon Sep 17 00:00:00 2001 From: leo-assistant-chef Date: Thu, 5 Mar 2026 22:20:08 +0000 Subject: [PATCH 1/2] fix(vercel): remove stale gh-pages artifacts, add correct build config The Vercel project was serving a pre-built static app (committed as gh-pages artifacts at the repo root) instead of building the actual Vite frontend from frontend/. Changes: - Remove index.html and assets/ (stale gh-pages build output on main) - Add root vercel.json pointing Vercel to build from frontend/ with the correct install/build commands and output directory --- assets/index-BEdjLAPg.css | 2 - assets/index-DV7UGmLY.js | 304 ----------------------------------- assets/index-DV7UGmLY.js.map | 1 - assets/index-Dgcojl8p.js | 2 - assets/index-Dgcojl8p.js.map | 1 - index.html | 19 --- vercel.json | 6 + 7 files changed, 6 insertions(+), 329 deletions(-) delete mode 100644 assets/index-BEdjLAPg.css delete mode 100644 assets/index-DV7UGmLY.js delete mode 100644 assets/index-DV7UGmLY.js.map delete mode 100644 assets/index-Dgcojl8p.js delete mode 100644 assets/index-Dgcojl8p.js.map delete mode 100644 index.html create mode 100644 vercel.json diff --git a/assets/index-BEdjLAPg.css b/assets/index-BEdjLAPg.css deleted file mode 100644 index 762953b48..000000000 --- a/assets/index-BEdjLAPg.css +++ /dev/null @@ -1,2 +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: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com - */*,: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:Inter,system-ui,sans-serif;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:JetBrains Mono,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}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.-right-10{right:-2.5rem}.-right-4{right:-1rem}.-top-10{top:-2.5rem}.bottom-0{bottom:0}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.right-0{right:0}.right-3{right:.75rem}.top-0{top:0}.top-1\/2{top:50%}.top-20{top:5rem}.top-full{top:100%}.z-50{z-index:50}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.-ml-1{margin-left:-.25rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-8{margin-left:2rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.h-0\.5{height:.125rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-20{height:5rem}.h-28{height:7rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-\[500px\]{height:500px}.h-\[600px\]{height:600px}.h-\[700px\]{height:700px}.h-\[800px\]{height:800px}.h-full{height:100%}.h-px{height:1px}.max-h-40{max-height:10rem}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-8{width:2rem}.w-\[1200px\]{width:1200px}.w-\[500px\]{width:500px}.w-\[600px\]{width:600px}.w-\[800px\]{width:800px}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[200px\]{min-width:200px}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.grow{flex-grow:1}.-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))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.break-all{word-break:break-all}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-blue-400\/20{border-color:#60a5fa33}.border-blue-400\/30{border-color:#60a5fa4d}.border-blue-500\/20{border-color:#3b82f633}.border-blue-500\/30{border-color:#3b82f64d}.border-blue-500\/50{border-color:#3b82f680}.border-cyan-500\/20{border-color:#06b6d433}.border-cyan-500\/30{border-color:#06b6d44d}.border-emerald-500\/20{border-color:#10b98133}.border-green-500\/20{border-color:#22c55e33}.border-green-500\/30{border-color:#22c55e4d}.border-orange-500\/20{border-color:#f9731633}.border-orange-500\/30{border-color:#f973164d}.border-pink-500{--tw-border-opacity: 1;border-color:rgb(236 72 153 / var(--tw-border-opacity, 1))}.border-pink-500\/30{border-color:#ec48994d}.border-purple-500\/20{border-color:#a855f733}.border-red-500\/50{border-color:#ef444480}.border-slate-500\/20{border-color:#64748b33}.border-slate-500\/30{border-color:#64748b4d}.border-slate-600{--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity, 1))}.border-slate-600\/50{border-color:#47556980}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.border-slate-700\/30{border-color:#3341554d}.border-slate-700\/50{border-color:#33415580}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.border-slate-800\/50{border-color:#1e293b80}.border-transparent{border-color:transparent}.border-yellow-500\/20{border-color:#eab30833}.border-yellow-500\/30{border-color:#eab3084d}.border-t-slate-800{--tw-border-opacity: 1;border-top-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.bg-blue-400\/10{background-color:#60a5fa1a}.bg-blue-400\/20{background-color:#60a5fa33}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-500\/10{background-color:#3b82f61a}.bg-blue-500\/20{background-color:#3b82f633}.bg-cyan-500\/10{background-color:#06b6d41a}.bg-cyan-500\/20{background-color:#06b6d433}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-500\/20{background-color:#10b98133}.bg-green-500\/10{background-color:#22c55e1a}.bg-green-500\/20{background-color:#22c55e33}.bg-green-500\/80{background-color:#22c55ecc}.bg-orange-500\/10{background-color:#f973161a}.bg-orange-500\/20{background-color:#f9731633}.bg-pink-400{--tw-bg-opacity: 1;background-color:rgb(244 114 182 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-pink-500\/10{background-color:#ec48991a}.bg-pink-500\/20{background-color:#ec489933}.bg-pink-600{--tw-bg-opacity: 1;background-color:rgb(219 39 119 / var(--tw-bg-opacity, 1))}.bg-purple-500\/10{background-color:#a855f71a}.bg-red-500\/80{background-color:#ef4444cc}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-slate-500\/10{background-color:#64748b1a}.bg-slate-500\/20{background-color:#64748b33}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-700\/50{background-color:#33415580}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-800\/30{background-color:#1e293b4d}.bg-slate-800\/50{background-color:#1e293b80}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-slate-900\/30{background-color:#0f172a4d}.bg-slate-900\/50{background-color:#0f172a80}.bg-slate-900\/80{background-color:#0f172acc}.bg-slate-900\/90{background-color:#0f172ae6}.bg-slate-950{--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1))}.bg-slate-950\/80{background-color:#020617cc}.bg-transparent{background-color:transparent}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/20{background-color:#eab30833}.bg-yellow-500\/80{background-color:#eab308cc}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500\/20{--tw-gradient-from: rgb(59 130 246 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500\/5{--tw-gradient-from: rgb(59 130 246 / .05) var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500\/50{--tw-gradient-from: rgb(59 130 246 / .5) var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-600{--tw-gradient-from: #2563eb var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-600\/20{--tw-gradient-from: rgb(37 99 235 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500\/15{--tw-gradient-from: rgb(6 182 212 / .15) var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-emerald-600{--tw-gradient-from: #059669 var(--tw-gradient-from-position);--tw-gradient-to: rgb(5 150 105 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-pink-500{--tw-gradient-from: #ec4899 var(--tw-gradient-from-position);--tw-gradient-to: rgb(236 72 153 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-pink-500\/20{--tw-gradient-from: rgb(236 72 153 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(236 72 153 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500\/10{--tw-gradient-from: rgb(168 85 247 / .1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-700{--tw-gradient-from: #334155 var(--tw-gradient-from-position);--tw-gradient-to: rgb(51 65 85 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-900\/50{--tw-gradient-from: rgb(15 23 42 / .5) var(--tw-gradient-from-position);--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-cyan-500\/50{--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(6 182 212 / .5) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-cyan-600\/20{--tw-gradient-to: rgb(8 145 178 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(8 145 178 / .2) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-500\/50{--tw-gradient-to: rgb(59 130 246 / .5) var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-cyan-500\/20{--tw-gradient-to: rgb(6 182 212 / .2) var(--tw-gradient-to-position)}.to-cyan-600{--tw-gradient-to: #0891b2 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-purple-500\/20{--tw-gradient-to: rgb(168 85 247 / .2) var(--tw-gradient-to-position)}.to-purple-500\/5{--tw-gradient-to: rgb(168 85 247 / .05) var(--tw-gradient-to-position)}.to-purple-600{--tw-gradient-to: #9333ea var(--tw-gradient-to-position)}.to-slate-900\/50{--tw-gradient-to: rgb(15 23 42 / .5) var(--tw-gradient-to-position)}.to-teal-600{--tw-gradient-to: #0d9488 var(--tw-gradient-to-position)}.to-teal-600\/20{--tw-gradient-to: rgb(13 148 136 / .2) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-red-500{fill:#ef4444}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-px{padding:1px}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-12{padding-bottom:3rem}.pb-20{padding-bottom:5rem}.pb-5{padding-bottom:1.25rem}.pl-11{padding-left:2.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-4{padding-right:1rem}.pt-24{padding-top:6rem}.pt-32{padding-top:8rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:JetBrains Mono,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-6{line-height:1.5rem}.leading-\[1\.1\]{line-height:1.1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-400\/80{color:#60a5facc}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-cyan-500{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-emerald-400\/80{color:#34d399cc}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-pink-400{--tw-text-opacity: 1;color:rgb(244 114 182 / var(--tw-text-opacity, 1))}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity, 1))}.text-slate-700\/50{color:#33415580}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.placeholder-slate-500::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(100 116 139 / var(--tw-placeholder-opacity, 1))}.placeholder-slate-500::placeholder{--tw-placeholder-opacity: 1;color:rgb(100 116 139 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-blue-500\/10{--tw-shadow-color: rgb(59 130 246 / .1);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-500\/20{--tw-shadow-color: rgb(59 130 246 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-500\/25{--tw-shadow-color: rgb(59 130 246 / .25);--tw-shadow: var(--tw-shadow-colored)}.shadow-cyan-500\/20{--tw-shadow-color: rgb(6 182 212 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-emerald-500\/20{--tw-shadow-color: rgb(16 185 129 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-orange-500\/20{--tw-shadow-color: rgb(249 115 22 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-purple-500\/20{--tw-shadow-color: rgb(168 85 247 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-red-500\/20{--tw-shadow-color: rgb(239 68 68 / .2);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.blur-2xl{--tw-blur: blur(40px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[100px\]{--tw-blur: blur(100px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[120px\]{--tw-blur: blur(120px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[80px\]{--tw-blur: blur(80px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.delay-100{transition-delay:.1s}.delay-200{transition-delay:.2s}.delay-300{transition-delay:.3s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}:root{--color-bg-primary: #0f172a;--color-bg-secondary: #1e293b;--color-bg-tertiary: #334155;--color-accent-blue: #3b82f6;--color-accent-cyan: #06b6d4;--color-accent-purple: #8b5cf6;--color-accent-emerald: #10b981;--color-accent-pink: #ec4899;--color-text-primary: #f8fafc;--color-text-secondary: #94a3b8;--color-text-tertiary: #64748b;--color-text-muted: #475569;--color-border-subtle: rgba(148, 163, 184, .1);--color-border-default: rgba(148, 163, 184, .2);--color-border-strong: rgba(148, 163, 184, .3);--gradient-primary: linear-gradient(135deg, #3b82f6 0%, #06b6d4 100%);--gradient-secondary: linear-gradient(135deg, #8b5cf6 0%, #ec4899 100%);--gradient-dark: linear-gradient(180deg, #0f172a 0%, #1e293b 100%);--gradient-glass: linear-gradient(135deg, rgba(59, 130, 246, .1) 0%, rgba(6, 182, 212, .05) 100%);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -2px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5), 0 4px 6px -4px rgba(0, 0, 0, .3);--shadow-glow-blue: 0 0 20px rgba(59, 130, 246, .3);--shadow-glow-cyan: 0 0 20px rgba(6, 182, 212, .3);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-12: 3rem;--space-16: 4rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-2xl: 1.5rem;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--transition-fast: .15s ease;--transition-base: .25s ease;--transition-slow: .35s ease}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--color-bg-primary);color:var(--color-text-primary);line-height:1.6;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100%;min-height:100vh}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.2;color:var(--color-text-primary)}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1.125rem}h6{font-size:1rem}@media (min-width: 640px){h1{font-size:3.5rem}h2{font-size:2.5rem}h3{font-size:1.75rem}}@media (min-width: 1024px){h1{font-size:4.5rem}h2{font-size:3rem}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-primary)}::-webkit-scrollbar-thumb{background:var(--color-bg-tertiary);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#475569}.glass{background:#1e293b99;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--color-border-default)}.glass-card{background:linear-gradient(135deg,#1e293bcc,#0f172ae6);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--color-border-default);border-radius:var(--radius-xl);transition:all var(--transition-base)}.glass-card:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.glass-elevated{background:#1e293bb3;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(148,163,184,.15);box-shadow:0 8px 32px #0006,inset 0 1px #ffffff0d}.glass-subtle{background:#1e293b66;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--color-border-subtle)}.gradient-text{background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.gradient-text-purple{background:var(--gradient-secondary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.gradient-bg{background:var(--gradient-primary)}.gradient-border{position:relative}.gradient-border:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;padding:1px;background:var(--gradient-primary);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.hover-lift{transition:transform var(--transition-base),box-shadow var(--transition-base)}.hover-lift:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.hover-glow:hover{box-shadow:var(--shadow-glow-blue)}.focus-ring{outline:none;transition:box-shadow var(--transition-fast)}.focus-ring:focus-visible{box-shadow:0 0 0 2px var(--color-bg-primary),0 0 0 4px var(--color-accent-blue)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes pulse-glow{0%,to{box-shadow:0 0 20px #3b82f64d}50%{box-shadow:0 0 40px #3b82f680}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-fade-in{animation:fadeIn .5s ease forwards}.animate-fade-up{animation:fadeUp .5s ease forwards}.animate-fade-down{animation:fadeDown .3s ease forwards}.animate-scale-in{animation:scaleIn .3s ease forwards}.animate-slide-in-right{animation:slideInRight .4s ease forwards}.animate-pulse-glow{animation:pulse-glow 2s ease-in-out infinite}.animate-float{animation:float 3s ease-in-out infinite}.animate-shimmer{background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);background-size:200% 100%;animation:shimmer 2s infinite}.animate-spin{animation:spin 1s linear infinite}.delay-100{animation-delay:.1s}.delay-200{animation-delay:.2s}.delay-300{animation-delay:.3s}.delay-400{animation-delay:.4s}.delay-500{animation-delay:.5s}.line-clamp-1{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.line-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.text-balance{text-wrap:balance}.bg-grid-pattern{background-image:linear-gradient(rgba(148,163,184,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.05) 1px,transparent 1px);background-size:40px 40px}.bg-dot-pattern{background-image:radial-gradient(rgba(148,163,184,.1) 1px,transparent 1px);background-size:24px 24px}.gradient-orb{position:absolute;border-radius:50%;filter:blur(80px);pointer-events:none}.gradient-orb-blue{background:#3b82f64d}.gradient-orb-cyan{background:#06b6d433}.gradient-orb-purple{background:#8b5cf633}[data-rk]{--rk-colors-modalBackground: var(--color-bg-secondary) !important;--rk-colors-modalText: var(--color-text-primary) !important;--rk-colors-modalTextSecondary: var(--color-text-secondary) !important;--rk-colors-profileForeground: var(--color-bg-tertiary) !important;--rk-colors-profileBackground: var(--color-bg-primary) !important;--rk-colors-accentColor: var(--color-accent-blue) !important;--rk-colors-accentColorForeground: var(--color-text-primary) !important;--rk-colors-selectedOptionBorder: var(--color-accent-blue) !important;--rk-colors-connectButtonBackground: var(--color-bg-tertiary) !important;--rk-colors-connectButtonText: var(--color-text-primary) !important}.code-block{font-family:var(--font-mono);font-size:.875rem;line-height:1.6}.code-keyword{color:#c084fc}.code-string{color:#4ade80}.code-comment{color:#64748b;font-style:italic}.code-function{color:#60a5fa}.code-number{color:#fbbf24}.code-operator{color:#f472b6}.code-type{color:#22d3ee}input,textarea,select{font-family:inherit}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--color-text-tertiary)}input::placeholder,textarea::placeholder{color:var(--color-text-tertiary)}::selection{background:#3b82f64d;color:var(--color-text-primary)}::-moz-selection{background:#3b82f64d;color:var(--color-text-primary)}@media (max-width: 640px){html{font-size:14px}}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}.safe-area-inset{padding-bottom:env(safe-area-inset-bottom)}.hover\:border-blue-500\/30:hover{border-color:#3b82f64d}.hover\:border-pink-500\/50:hover{border-color:#ec489980}.hover\:border-red-500\/20:hover{border-color:#ef444433}.hover\:border-slate-600\/50:hover{border-color:#47556980}.hover\:bg-blue-500\/10:hover{background-color:#3b82f61a}.hover\:bg-blue-500\/20:hover{background-color:#3b82f633}.hover\:bg-pink-500:hover{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.hover\:bg-red-500:hover{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-slate-700:hover{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-700\/50:hover{background-color:#33415580}.hover\:bg-slate-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-800\/50:hover{background-color:#1e293b80}.hover\:from-blue-500:hover{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-emerald-500:hover{--tw-gradient-from: #10b981 var(--tw-gradient-from-position);--tw-gradient-to: rgb(16 185 129 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:to-cyan-500:hover{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.hover\:to-teal-500:hover{--tw-gradient-to: #14b8a6 var(--tw-gradient-to-position)}.hover\:text-blue-300:hover{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.hover\:text-blue-400:hover{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.hover\:text-pink-300:hover{--tw-text-opacity: 1;color:rgb(249 168 212 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.focus\:border-blue-500\/50:focus{border-color:#3b82f680}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-500\/50:focus{--tw-ring-color: rgb(59 130 246 / .5)}.focus\:ring-pink-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(236 72 153 / var(--tw-ring-opacity, 1))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus\:ring-slate-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(100 116 139 / var(--tw-ring-opacity, 1))}.focus\:ring-slate-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(71 85 105 / var(--tw-ring-opacity, 1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus\:ring-offset-slate-900:focus{--tw-ring-offset-color: #0f172a}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.group:hover .group-hover\:text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}@media (min-width: 640px){.sm\:ml-14{margin-left:3.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:gap-4{gap:1rem}.sm\:p-12{padding:3rem}.sm\:p-5{padding:1.25rem}.sm\:p-8{padding:2rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-12{padding-top:3rem;padding-bottom:3rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 768px){.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}}@media (min-width: 1024px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:p-16{padding:4rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-32{padding-top:8rem;padding-bottom:8rem}.lg\:pb-32{padding-bottom:8rem}.lg\:pt-48{padding-top:12rem}.lg\:text-4xl{font-size:2.25rem;line-height:2.5rem}.lg\:text-7xl{font-size:4.5rem;line-height:1}}@media (min-width: 1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}} diff --git a/assets/index-DV7UGmLY.js b/assets/index-DV7UGmLY.js deleted file mode 100644 index 1f7c1dce9..000000000 --- a/assets/index-DV7UGmLY.js +++ /dev/null @@ -1,304 +0,0 @@ -(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))i(a);new MutationObserver(a=>{for(const u of a)if(u.type==="childList")for(const c of u.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&i(c)}).observe(document,{childList:!0,subtree:!0});function s(a){const u={};return a.integrity&&(u.integrity=a.integrity),a.referrerPolicy&&(u.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?u.credentials="include":a.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function i(a){if(a.ep)return;a.ep=!0;const u=s(a);fetch(a.href,u)}})();function Ph(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Iu={exports:{}},Js={},Au={exports:{}},xe={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var y0;function z1(){if(y0)return xe;y0=1;var t=Symbol.for("react.element"),n=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),u=Symbol.for("react.provider"),c=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),g=Symbol.for("react.lazy"),y=Symbol.iterator;function x(T){return T===null||typeof T!="object"?null:(T=y&&T[y]||T["@@iterator"],typeof T=="function"?T:null)}var E={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,k={};function b(T,O,pe){this.props=T,this.context=O,this.refs=k,this.updater=pe||E}b.prototype.isReactComponent={},b.prototype.setState=function(T,O){if(typeof T!="object"&&typeof T!="function"&&T!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,T,O,"setState")},b.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function N(){}N.prototype=b.prototype;function I(T,O,pe){this.props=T,this.context=O,this.refs=k,this.updater=pe||E}var _=I.prototype=new N;_.constructor=I,C(_,b.prototype),_.isPureReactComponent=!0;var F=Array.isArray,W=Object.prototype.hasOwnProperty,U={current:null},D={key:!0,ref:!0,__self:!0,__source:!0};function B(T,O,pe){var ue,ve={},ge=null,Ce=null;if(O!=null)for(ue in O.ref!==void 0&&(Ce=O.ref),O.key!==void 0&&(ge=""+O.key),O)W.call(O,ue)&&!D.hasOwnProperty(ue)&&(ve[ue]=O[ue]);var we=arguments.length-2;if(we===1)ve.children=pe;else if(1>>1,O=z[T];if(0>>1;Ta(ve,Z))gea(Ce,ve)?(z[T]=Ce,z[ge]=Z,T=ge):(z[T]=ve,z[ue]=Z,T=ue);else if(gea(Ce,Z))z[T]=Ce,z[ge]=Z,T=ge;else break e}}return J}function a(z,J){var Z=z.sortIndex-J.sortIndex;return Z!==0?Z:z.id-J.id}if(typeof performance=="object"&&typeof performance.now=="function"){var u=performance;t.unstable_now=function(){return u.now()}}else{var c=Date,f=c.now();t.unstable_now=function(){return c.now()-f}}var p=[],m=[],g=1,y=null,x=3,E=!1,C=!1,k=!1,b=typeof setTimeout=="function"?setTimeout:null,N=typeof clearTimeout=="function"?clearTimeout:null,I=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function _(z){for(var J=s(m);J!==null;){if(J.callback===null)i(m);else if(J.startTime<=z)i(m),J.sortIndex=J.expirationTime,n(p,J);else break;J=s(m)}}function F(z){if(k=!1,_(z),!C)if(s(p)!==null)C=!0,Q(W);else{var J=s(m);J!==null&&ee(F,J.startTime-z)}}function W(z,J){C=!1,k&&(k=!1,N(B),B=-1),E=!0;var Z=x;try{for(_(J),y=s(p);y!==null&&(!(y.expirationTime>J)||z&&!re());){var T=y.callback;if(typeof T=="function"){y.callback=null,x=y.priorityLevel;var O=T(y.expirationTime<=J);J=t.unstable_now(),typeof O=="function"?y.callback=O:y===s(p)&&i(p),_(J)}else i(p);y=s(p)}if(y!==null)var pe=!0;else{var ue=s(m);ue!==null&&ee(F,ue.startTime-J),pe=!1}return pe}finally{y=null,x=Z,E=!1}}var U=!1,D=null,B=-1,M=5,oe=-1;function re(){return!(t.unstable_now()-oez||125T?(z.sortIndex=Z,n(m,z),s(p)===null&&z===s(m)&&(k?(N(B),B=-1):k=!0,ee(F,Z-T))):(z.sortIndex=O,n(p,z),C||E||(C=!0,Q(W))),z},t.unstable_shouldYield=re,t.unstable_wrapCallback=function(z){var J=x;return function(){var Z=x;x=J;try{return z.apply(this,arguments)}finally{x=Z}}}}($u)),$u}var b0;function H1(){return b0||(b0=1,Bu.exports=U1()),Bu.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var E0;function V1(){if(E0)return ct;E0=1;var t=Ac(),n=H1();function s(e){for(var r="https://reactjs.org/docs/error-decoder.html?invariant="+e,o=1;o"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),p=Object.prototype.hasOwnProperty,m=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,g={},y={};function x(e){return p.call(y,e)?!0:p.call(g,e)?!1:m.test(e)?y[e]=!0:(g[e]=!0,!1)}function E(e,r,o,l){if(o!==null&&o.type===0)return!1;switch(typeof r){case"function":case"symbol":return!0;case"boolean":return l?!1:o!==null?!o.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function C(e,r,o,l){if(r===null||typeof r>"u"||E(e,r,o,l))return!0;if(l)return!1;if(o!==null)switch(o.type){case 3:return!r;case 4:return r===!1;case 5:return isNaN(r);case 6:return isNaN(r)||1>r}return!1}function k(e,r,o,l,d,h,w){this.acceptsBooleans=r===2||r===3||r===4,this.attributeName=l,this.attributeNamespace=d,this.mustUseProperty=o,this.propertyName=e,this.type=r,this.sanitizeURL=h,this.removeEmptyString=w}var b={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){b[e]=new k(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var r=e[0];b[r]=new k(r,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){b[e]=new k(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){b[e]=new k(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){b[e]=new k(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){b[e]=new k(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){b[e]=new k(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){b[e]=new k(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){b[e]=new k(e,5,!1,e.toLowerCase(),null,!1,!1)});var N=/[\-:]([a-z])/g;function I(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var r=e.replace(N,I);b[r]=new k(r,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var r=e.replace(N,I);b[r]=new k(r,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var r=e.replace(N,I);b[r]=new k(r,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){b[e]=new k(e,1,!1,e.toLowerCase(),null,!1,!1)}),b.xlinkHref=new k("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){b[e]=new k(e,1,!1,e.toLowerCase(),null,!0,!0)});function _(e,r,o,l){var d=b.hasOwnProperty(r)?b[r]:null;(d!==null?d.type!==0:l||!(2S||d[w]!==h[S]){var P=` -`+d[w].replace(" at new "," at ");return e.displayName&&P.includes("")&&(P=P.replace("",e.displayName)),P}while(1<=w&&0<=S);break}}}finally{pe=!1,Error.prepareStackTrace=o}return(e=e?e.displayName||e.name:"")?O(e):""}function ve(e){switch(e.tag){case 5:return O(e.type);case 16:return O("Lazy");case 13:return O("Suspense");case 19:return O("SuspenseList");case 0:case 2:case 15:return e=ue(e.type,!1),e;case 11:return e=ue(e.type.render,!1),e;case 1:return e=ue(e.type,!0),e;default:return""}}function ge(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case D:return"Fragment";case U:return"Portal";case M:return"Profiler";case B:return"StrictMode";case fe:return"Suspense";case K:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case re:return(e.displayName||"Context")+".Consumer";case oe:return(e._context.displayName||"Context")+".Provider";case ae:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case X:return r=e.displayName||null,r!==null?r:ge(e.type)||"Memo";case Q:r=e._payload,e=e._init;try{return ge(e(r))}catch{}}return null}function Ce(e){var r=e.type;switch(e.tag){case 24:return"Cache";case 9:return(r.displayName||"Context")+".Consumer";case 10:return(r._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=r.render,e=e.displayName||e.name||"",r.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return r;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ge(r);case 8:return r===B?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof r=="function")return r.displayName||r.name||null;if(typeof r=="string")return r}return null}function we(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Se(e){var r=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(r==="checkbox"||r==="radio")}function Ye(e){var r=Se(e)?"checked":"value",o=Object.getOwnPropertyDescriptor(e.constructor.prototype,r),l=""+e[r];if(!e.hasOwnProperty(r)&&typeof o<"u"&&typeof o.get=="function"&&typeof o.set=="function"){var d=o.get,h=o.set;return Object.defineProperty(e,r,{configurable:!0,get:function(){return d.call(this)},set:function(w){l=""+w,h.call(this,w)}}),Object.defineProperty(e,r,{enumerable:o.enumerable}),{getValue:function(){return l},setValue:function(w){l=""+w},stopTracking:function(){e._valueTracker=null,delete e[r]}}}}function Ot(e){e._valueTracker||(e._valueTracker=Ye(e))}function Dt(e){if(!e)return!1;var r=e._valueTracker;if(!r)return!0;var o=r.getValue(),l="";return e&&(l=Se(e)?e.checked?"true":"false":e.value),e=l,e!==o?(r.setValue(e),!0):!1}function Ut(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function tn(e,r){var o=r.checked;return Z({},r,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:o??e._wrapperState.initialChecked})}function nn(e,r){var o=r.defaultValue==null?"":r.defaultValue,l=r.checked!=null?r.checked:r.defaultChecked;o=we(r.value!=null?r.value:o),e._wrapperState={initialChecked:l,initialValue:o,controlled:r.type==="checkbox"||r.type==="radio"?r.checked!=null:r.value!=null}}function kd(e,r){r=r.checked,r!=null&&_(e,"checked",r,!1)}function Fa(e,r){kd(e,r);var o=we(r.value),l=r.type;if(o!=null)l==="number"?(o===0&&e.value===""||e.value!=o)&&(e.value=""+o):e.value!==""+o&&(e.value=""+o);else if(l==="submit"||l==="reset"){e.removeAttribute("value");return}r.hasOwnProperty("value")?za(e,r.type,o):r.hasOwnProperty("defaultValue")&&za(e,r.type,we(r.defaultValue)),r.checked==null&&r.defaultChecked!=null&&(e.defaultChecked=!!r.defaultChecked)}function Sd(e,r,o){if(r.hasOwnProperty("value")||r.hasOwnProperty("defaultValue")){var l=r.type;if(!(l!=="submit"&&l!=="reset"||r.value!==void 0&&r.value!==null))return;r=""+e._wrapperState.initialValue,o||r===e.value||(e.value=r),e.defaultValue=r}o=e.name,o!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,o!==""&&(e.name=o)}function za(e,r,o){(r!=="number"||Ut(e.ownerDocument)!==e)&&(o==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+o&&(e.defaultValue=""+o))}var hs=Array.isArray;function Sr(e,r,o,l){if(e=e.options,r){r={};for(var d=0;d"+r.valueOf().toString()+"",r=Go.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;r.firstChild;)e.appendChild(r.firstChild)}});function ms(e,r){if(r){var o=e.firstChild;if(o&&o===e.lastChild&&o.nodeType===3){o.nodeValue=r;return}}e.textContent=r}var ys={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Hy=["Webkit","ms","Moz","O"];Object.keys(ys).forEach(function(e){Hy.forEach(function(r){r=r+e.charAt(0).toUpperCase()+e.substring(1),ys[r]=ys[e]})});function Id(e,r,o){return r==null||typeof r=="boolean"||r===""?"":o||typeof r!="number"||r===0||ys.hasOwnProperty(e)&&ys[e]?(""+r).trim():r+"px"}function Ad(e,r){e=e.style;for(var o in r)if(r.hasOwnProperty(o)){var l=o.indexOf("--")===0,d=Id(o,r[o],l);o==="float"&&(o="cssFloat"),l?e.setProperty(o,d):e[o]=d}}var Vy=Z({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ua(e,r){if(r){if(Vy[e]&&(r.children!=null||r.dangerouslySetInnerHTML!=null))throw Error(s(137,e));if(r.dangerouslySetInnerHTML!=null){if(r.children!=null)throw Error(s(60));if(typeof r.dangerouslySetInnerHTML!="object"||!("__html"in r.dangerouslySetInnerHTML))throw Error(s(61))}if(r.style!=null&&typeof r.style!="object")throw Error(s(62))}}function Ha(e,r){if(e.indexOf("-")===-1)return typeof r.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Va=null;function Ga(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var qa=null,Cr=null,Nr=null;function Rd(e){if(e=Fs(e)){if(typeof qa!="function")throw Error(s(280));var r=e.stateNode;r&&(r=hi(r),qa(e.stateNode,e.type,r))}}function Bd(e){Cr?Nr?Nr.push(e):Nr=[e]:Cr=e}function $d(){if(Cr){var e=Cr,r=Nr;if(Nr=Cr=null,Rd(e),r)for(e=0;e>>=0,e===0?32:31-(tg(e)/ng|0)|0}var Yo=64,Qo=4194304;function ws(e){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: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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Xo(e,r){var o=e.pendingLanes;if(o===0)return 0;var l=0,d=e.suspendedLanes,h=e.pingedLanes,w=o&268435455;if(w!==0){var S=w&~d;S!==0?l=ws(S):(h&=w,h!==0&&(l=ws(h)))}else w=o&~d,w!==0?l=ws(w):h!==0&&(l=ws(h));if(l===0)return 0;if(r!==0&&r!==l&&!(r&d)&&(d=l&-l,h=r&-r,d>=h||d===16&&(h&4194240)!==0))return r;if(l&4&&(l|=o&16),r=e.entangledLanes,r!==0)for(e=e.entanglements,r&=l;0o;o++)r.push(e);return r}function bs(e,r,o){e.pendingLanes|=r,r!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,r=31-jt(r),e[r]=o}function ig(e,r){var o=e.pendingLanes&~r;e.pendingLanes=r,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=r,e.mutableReadLanes&=r,e.entangledLanes&=r,r=e.entanglements;var l=e.eventTimes;for(e=e.expirationTimes;0=Ts),uf=" ",cf=!1;function df(e,r){switch(e){case"keyup":return $g.indexOf(r.keyCode)!==-1;case"keydown":return r.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ff(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Tr=!1;function Lg(e,r){switch(e){case"compositionend":return ff(r);case"keypress":return r.which!==32?null:(cf=!0,uf);case"textInput":return e=r.data,e===uf&&cf?null:e;default:return null}}function Mg(e,r){if(Tr)return e==="compositionend"||!cl&&df(e,r)?(e=nf(),ri=sl=jn=null,Tr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(r.ctrlKey||r.altKey||r.metaKey)||r.ctrlKey&&r.altKey){if(r.char&&1=r)return{node:o,offset:r-e};e=l}e:{for(;o;){if(o.nextSibling){o=o.nextSibling;break e}o=o.parentNode}o=void 0}o=xf(o)}}function bf(e,r){return e&&r?e===r?!0:e&&e.nodeType===3?!1:r&&r.nodeType===3?bf(e,r.parentNode):"contains"in e?e.contains(r):e.compareDocumentPosition?!!(e.compareDocumentPosition(r)&16):!1:!1}function Ef(){for(var e=window,r=Ut();r instanceof e.HTMLIFrameElement;){try{var o=typeof r.contentWindow.location.href=="string"}catch{o=!1}if(o)e=r.contentWindow;else break;r=Ut(e.document)}return r}function pl(e){var r=e&&e.nodeName&&e.nodeName.toLowerCase();return r&&(r==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||r==="textarea"||e.contentEditable==="true")}function qg(e){var r=Ef(),o=e.focusedElem,l=e.selectionRange;if(r!==o&&o&&o.ownerDocument&&bf(o.ownerDocument.documentElement,o)){if(l!==null&&pl(o)){if(r=l.start,e=l.end,e===void 0&&(e=r),"selectionStart"in o)o.selectionStart=r,o.selectionEnd=Math.min(e,o.value.length);else if(e=(r=o.ownerDocument||document)&&r.defaultView||window,e.getSelection){e=e.getSelection();var d=o.textContent.length,h=Math.min(l.start,d);l=l.end===void 0?h:Math.min(l.end,d),!e.extend&&h>l&&(d=l,l=h,h=d),d=wf(o,h);var w=wf(o,l);d&&w&&(e.rangeCount!==1||e.anchorNode!==d.node||e.anchorOffset!==d.offset||e.focusNode!==w.node||e.focusOffset!==w.offset)&&(r=r.createRange(),r.setStart(d.node,d.offset),e.removeAllRanges(),h>l?(e.addRange(r),e.extend(w.node,w.offset)):(r.setEnd(w.node,w.offset),e.addRange(r)))}}for(r=[],e=o;e=e.parentNode;)e.nodeType===1&&r.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;o=document.documentMode,Ir=null,hl=null,Bs=null,ml=!1;function kf(e,r,o){var l=o.window===o?o.document:o.nodeType===9?o:o.ownerDocument;ml||Ir==null||Ir!==Ut(l)||(l=Ir,"selectionStart"in l&&pl(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Bs&&Rs(Bs,l)||(Bs=l,l=di(hl,"onSelect"),0_r||(e.current=Pl[_r],Pl[_r]=null,_r--)}function Pe(e,r){_r++,Pl[_r]=e.current,e.current=r}var Rn={},Je=An(Rn),ot=An(!1),rr=Rn;function Lr(e,r){var o=e.type.contextTypes;if(!o)return Rn;var l=e.stateNode;if(l&&l.__reactInternalMemoizedUnmaskedChildContext===r)return l.__reactInternalMemoizedMaskedChildContext;var d={},h;for(h in o)d[h]=r[h];return l&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=d),d}function it(e){return e=e.childContextTypes,e!=null}function mi(){Te(ot),Te(Je)}function Ff(e,r,o){if(Je.current!==Rn)throw Error(s(168));Pe(Je,r),Pe(ot,o)}function zf(e,r,o){var l=e.stateNode;if(r=r.childContextTypes,typeof l.getChildContext!="function")return o;l=l.getChildContext();for(var d in l)if(!(d in r))throw Error(s(108,Ce(e)||"Unknown",d));return Z({},o,l)}function yi(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Rn,rr=Je.current,Pe(Je,e),Pe(ot,ot.current),!0}function Of(e,r,o){var l=e.stateNode;if(!l)throw Error(s(169));o?(e=zf(e,r,rr),l.__reactInternalMemoizedMergedChildContext=e,Te(ot),Te(Je),Pe(Je,e)):Te(ot),Pe(ot,o)}var sn=null,gi=!1,jl=!1;function Df(e){sn===null?sn=[e]:sn.push(e)}function s1(e){gi=!0,Df(e)}function Bn(){if(!jl&&sn!==null){jl=!0;var e=0,r=Ne;try{var o=sn;for(Ne=1;e>=w,d-=w,on=1<<32-jt(r)+d|o<ye?(Ge=de,de=null):Ge=de.sibling;var Ee=H(A,de,$[ye],Y);if(Ee===null){de===null&&(de=Ge);break}e&&de&&Ee.alternate===null&&r(A,de),j=h(Ee,j,ye),ce===null?le=Ee:ce.sibling=Ee,ce=Ee,de=Ge}if(ye===$.length)return o(A,de),Ie&&or(A,ye),le;if(de===null){for(;ye<$.length;ye++)de=q(A,$[ye],Y),de!==null&&(j=h(de,j,ye),ce===null?le=de:ce.sibling=de,ce=de);return Ie&&or(A,ye),le}for(de=l(A,de);ye<$.length;ye++)Ge=te(de,A,ye,$[ye],Y),Ge!==null&&(e&&Ge.alternate!==null&&de.delete(Ge.key===null?ye:Ge.key),j=h(Ge,j,ye),ce===null?le=Ge:ce.sibling=Ge,ce=Ge);return e&&de.forEach(function(Un){return r(A,Un)}),Ie&&or(A,ye),le}function ie(A,j,$,Y){var le=J($);if(typeof le!="function")throw Error(s(150));if($=le.call($),$==null)throw Error(s(151));for(var ce=le=null,de=j,ye=j=0,Ge=null,Ee=$.next();de!==null&&!Ee.done;ye++,Ee=$.next()){de.index>ye?(Ge=de,de=null):Ge=de.sibling;var Un=H(A,de,Ee.value,Y);if(Un===null){de===null&&(de=Ge);break}e&&de&&Un.alternate===null&&r(A,de),j=h(Un,j,ye),ce===null?le=Un:ce.sibling=Un,ce=Un,de=Ge}if(Ee.done)return o(A,de),Ie&&or(A,ye),le;if(de===null){for(;!Ee.done;ye++,Ee=$.next())Ee=q(A,Ee.value,Y),Ee!==null&&(j=h(Ee,j,ye),ce===null?le=Ee:ce.sibling=Ee,ce=Ee);return Ie&&or(A,ye),le}for(de=l(A,de);!Ee.done;ye++,Ee=$.next())Ee=te(de,A,ye,Ee.value,Y),Ee!==null&&(e&&Ee.alternate!==null&&de.delete(Ee.key===null?ye:Ee.key),j=h(Ee,j,ye),ce===null?le=Ee:ce.sibling=Ee,ce=Ee);return e&&de.forEach(function(F1){return r(A,F1)}),Ie&&or(A,ye),le}function Le(A,j,$,Y){if(typeof $=="object"&&$!==null&&$.type===D&&$.key===null&&($=$.props.children),typeof $=="object"&&$!==null){switch($.$$typeof){case W:e:{for(var le=$.key,ce=j;ce!==null;){if(ce.key===le){if(le=$.type,le===D){if(ce.tag===7){o(A,ce.sibling),j=d(ce,$.props.children),j.return=A,A=j;break e}}else if(ce.elementType===le||typeof le=="object"&&le!==null&&le.$$typeof===Q&&Wf(le)===ce.type){o(A,ce.sibling),j=d(ce,$.props),j.ref=zs(A,ce,$),j.return=A,A=j;break e}o(A,ce);break}else r(A,ce);ce=ce.sibling}$.type===D?(j=pr($.props.children,A.mode,Y,$.key),j.return=A,A=j):(Y=Gi($.type,$.key,$.props,null,A.mode,Y),Y.ref=zs(A,j,$),Y.return=A,A=Y)}return w(A);case U:e:{for(ce=$.key;j!==null;){if(j.key===ce)if(j.tag===4&&j.stateNode.containerInfo===$.containerInfo&&j.stateNode.implementation===$.implementation){o(A,j.sibling),j=d(j,$.children||[]),j.return=A,A=j;break e}else{o(A,j);break}else r(A,j);j=j.sibling}j=Cu($,A.mode,Y),j.return=A,A=j}return w(A);case Q:return ce=$._init,Le(A,j,ce($._payload),Y)}if(hs($))return se(A,j,$,Y);if(J($))return ie(A,j,$,Y);bi(A,$)}return typeof $=="string"&&$!==""||typeof $=="number"?($=""+$,j!==null&&j.tag===6?(o(A,j.sibling),j=d(j,$),j.return=A,A=j):(o(A,j),j=Su($,A.mode,Y),j.return=A,A=j),w(A)):o(A,j)}return Le}var Or=Kf(!0),Zf=Kf(!1),Ei=An(null),ki=null,Dr=null,$l=null;function _l(){$l=Dr=ki=null}function Ll(e){var r=Ei.current;Te(Ei),e._currentValue=r}function Ml(e,r,o){for(;e!==null;){var l=e.alternate;if((e.childLanes&r)!==r?(e.childLanes|=r,l!==null&&(l.childLanes|=r)):l!==null&&(l.childLanes&r)!==r&&(l.childLanes|=r),e===o)break;e=e.return}}function Ur(e,r){ki=e,$l=Dr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&r&&(at=!0),e.firstContext=null)}function bt(e){var r=e._currentValue;if($l!==e)if(e={context:e,memoizedValue:r,next:null},Dr===null){if(ki===null)throw Error(s(308));Dr=e,ki.dependencies={lanes:0,firstContext:e}}else Dr=Dr.next=e;return r}var ir=null;function Fl(e){ir===null?ir=[e]:ir.push(e)}function Yf(e,r,o,l){var d=r.interleaved;return d===null?(o.next=o,Fl(r)):(o.next=d.next,d.next=o),r.interleaved=o,ln(e,l)}function ln(e,r){e.lanes|=r;var o=e.alternate;for(o!==null&&(o.lanes|=r),o=e,e=e.return;e!==null;)e.childLanes|=r,o=e.alternate,o!==null&&(o.childLanes|=r),o=e,e=e.return;return o.tag===3?o.stateNode:null}var $n=!1;function zl(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Qf(e,r){e=e.updateQueue,r.updateQueue===e&&(r.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function un(e,r){return{eventTime:e,lane:r,tag:0,payload:null,callback:null,next:null}}function _n(e,r,o){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,be&2){var d=l.pending;return d===null?r.next=r:(r.next=d.next,d.next=r),l.pending=r,ln(e,o)}return d=l.interleaved,d===null?(r.next=r,Fl(l)):(r.next=d.next,d.next=r),l.interleaved=r,ln(e,o)}function Si(e,r,o){if(r=r.updateQueue,r!==null&&(r=r.shared,(o&4194240)!==0)){var l=r.lanes;l&=e.pendingLanes,o|=l,r.lanes=o,Ja(e,o)}}function Xf(e,r){var o=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,o===l)){var d=null,h=null;if(o=o.firstBaseUpdate,o!==null){do{var w={eventTime:o.eventTime,lane:o.lane,tag:o.tag,payload:o.payload,callback:o.callback,next:null};h===null?d=h=w:h=h.next=w,o=o.next}while(o!==null);h===null?d=h=r:h=h.next=r}else d=h=r;o={baseState:l.baseState,firstBaseUpdate:d,lastBaseUpdate:h,shared:l.shared,effects:l.effects},e.updateQueue=o;return}e=o.lastBaseUpdate,e===null?o.firstBaseUpdate=r:e.next=r,o.lastBaseUpdate=r}function Ci(e,r,o,l){var d=e.updateQueue;$n=!1;var h=d.firstBaseUpdate,w=d.lastBaseUpdate,S=d.shared.pending;if(S!==null){d.shared.pending=null;var P=S,L=P.next;P.next=null,w===null?h=L:w.next=L,w=P;var G=e.alternate;G!==null&&(G=G.updateQueue,S=G.lastBaseUpdate,S!==w&&(S===null?G.firstBaseUpdate=L:S.next=L,G.lastBaseUpdate=P))}if(h!==null){var q=d.baseState;w=0,G=L=P=null,S=h;do{var H=S.lane,te=S.eventTime;if((l&H)===H){G!==null&&(G=G.next={eventTime:te,lane:0,tag:S.tag,payload:S.payload,callback:S.callback,next:null});e:{var se=e,ie=S;switch(H=r,te=o,ie.tag){case 1:if(se=ie.payload,typeof se=="function"){q=se.call(te,q,H);break e}q=se;break e;case 3:se.flags=se.flags&-65537|128;case 0:if(se=ie.payload,H=typeof se=="function"?se.call(te,q,H):se,H==null)break e;q=Z({},q,H);break e;case 2:$n=!0}}S.callback!==null&&S.lane!==0&&(e.flags|=64,H=d.effects,H===null?d.effects=[S]:H.push(S))}else te={eventTime:te,lane:H,tag:S.tag,payload:S.payload,callback:S.callback,next:null},G===null?(L=G=te,P=q):G=G.next=te,w|=H;if(S=S.next,S===null){if(S=d.shared.pending,S===null)break;H=S,S=H.next,H.next=null,d.lastBaseUpdate=H,d.shared.pending=null}}while(!0);if(G===null&&(P=q),d.baseState=P,d.firstBaseUpdate=L,d.lastBaseUpdate=G,r=d.shared.interleaved,r!==null){d=r;do w|=d.lane,d=d.next;while(d!==r)}else h===null&&(d.shared.lanes=0);ur|=w,e.lanes=w,e.memoizedState=q}}function Jf(e,r,o){if(e=r.effects,r.effects=null,e!==null)for(r=0;ro?o:4,e(!0);var l=Vl.transition;Vl.transition={};try{e(!1),r()}finally{Ne=o,Vl.transition=l}}function vp(){return Et().memoizedState}function l1(e,r,o){var l=zn(e);if(o={lane:l,action:o,hasEagerState:!1,eagerState:null,next:null},xp(e))wp(r,o);else if(o=Yf(e,r,o,l),o!==null){var d=st();$t(o,e,l,d),bp(o,r,l)}}function u1(e,r,o){var l=zn(e),d={lane:l,action:o,hasEagerState:!1,eagerState:null,next:null};if(xp(e))wp(r,d);else{var h=e.alternate;if(e.lanes===0&&(h===null||h.lanes===0)&&(h=r.lastRenderedReducer,h!==null))try{var w=r.lastRenderedState,S=h(w,o);if(d.hasEagerState=!0,d.eagerState=S,Tt(S,w)){var P=r.interleaved;P===null?(d.next=d,Fl(r)):(d.next=P.next,P.next=d),r.interleaved=d;return}}catch{}finally{}o=Yf(e,r,d,l),o!==null&&(d=st(),$t(o,e,l,d),bp(o,r,l))}}function xp(e){var r=e.alternate;return e===Re||r!==null&&r===Re}function wp(e,r){Hs=ji=!0;var o=e.pending;o===null?r.next=r:(r.next=o.next,o.next=r),e.pending=r}function bp(e,r,o){if(o&4194240){var l=r.lanes;l&=e.pendingLanes,o|=l,r.lanes=o,Ja(e,o)}}var Ai={readContext:bt,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useInsertionEffect:et,useLayoutEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useMutableSource:et,useSyncExternalStore:et,useId:et,unstable_isNewReconciler:!1},c1={readContext:bt,useCallback:function(e,r){return qt().memoizedState=[e,r===void 0?null:r],e},useContext:bt,useEffect:cp,useImperativeHandle:function(e,r,o){return o=o!=null?o.concat([e]):null,Ti(4194308,4,pp.bind(null,r,e),o)},useLayoutEffect:function(e,r){return Ti(4194308,4,e,r)},useInsertionEffect:function(e,r){return Ti(4,2,e,r)},useMemo:function(e,r){var o=qt();return r=r===void 0?null:r,e=e(),o.memoizedState=[e,r],e},useReducer:function(e,r,o){var l=qt();return r=o!==void 0?o(r):r,l.memoizedState=l.baseState=r,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:r},l.queue=e,e=e.dispatch=l1.bind(null,Re,e),[l.memoizedState,e]},useRef:function(e){var r=qt();return e={current:e},r.memoizedState=e},useState:lp,useDebugValue:Ql,useDeferredValue:function(e){return qt().memoizedState=e},useTransition:function(){var e=lp(!1),r=e[0];return e=a1.bind(null,e[1]),qt().memoizedState=e,[r,e]},useMutableSource:function(){},useSyncExternalStore:function(e,r,o){var l=Re,d=qt();if(Ie){if(o===void 0)throw Error(s(407));o=o()}else{if(o=r(),Ve===null)throw Error(s(349));lr&30||rp(l,r,o)}d.memoizedState=o;var h={value:o,getSnapshot:r};return d.queue=h,cp(op.bind(null,l,h,e),[e]),l.flags|=2048,qs(9,sp.bind(null,l,h,o,r),void 0,null),o},useId:function(){var e=qt(),r=Ve.identifierPrefix;if(Ie){var o=an,l=on;o=(l&~(1<<32-jt(l)-1)).toString(32)+o,r=":"+r+"R"+o,o=Vs++,0<\/script>",e=e.removeChild(e.firstChild)):typeof l.is=="string"?e=w.createElement(o,{is:l.is}):(e=w.createElement(o),o==="select"&&(w=e,l.multiple?w.multiple=!0:l.size&&(w.size=l.size))):e=w.createElementNS(e,o),e[Vt]=r,e[Ms]=l,Dp(e,r,!1,!1),r.stateNode=e;e:{switch(w=Ha(o,l),o){case"dialog":je("cancel",e),je("close",e),d=l;break;case"iframe":case"object":case"embed":je("load",e),d=l;break;case"video":case"audio":for(d=0;d<$s.length;d++)je($s[d],e);d=l;break;case"source":je("error",e),d=l;break;case"img":case"image":case"link":je("error",e),je("load",e),d=l;break;case"details":je("toggle",e),d=l;break;case"input":nn(e,l),d=tn(e,l),je("invalid",e);break;case"option":d=l;break;case"select":e._wrapperState={wasMultiple:!!l.multiple},d=Z({},l,{value:void 0}),je("invalid",e);break;case"textarea":Cd(e,l),d=Oa(e,l),je("invalid",e);break;default:d=l}Ua(o,d),S=d;for(h in S)if(S.hasOwnProperty(h)){var P=S[h];h==="style"?Ad(e,P):h==="dangerouslySetInnerHTML"?(P=P?P.__html:void 0,P!=null&&Td(e,P)):h==="children"?typeof P=="string"?(o!=="textarea"||P!=="")&&ms(e,P):typeof P=="number"&&ms(e,""+P):h!=="suppressContentEditableWarning"&&h!=="suppressHydrationWarning"&&h!=="autoFocus"&&(a.hasOwnProperty(h)?P!=null&&h==="onScroll"&&je("scroll",e):P!=null&&_(e,h,P,w))}switch(o){case"input":Ot(e),Sd(e,l,!1);break;case"textarea":Ot(e),Pd(e);break;case"option":l.value!=null&&e.setAttribute("value",""+we(l.value));break;case"select":e.multiple=!!l.multiple,h=l.value,h!=null?Sr(e,!!l.multiple,h,!1):l.defaultValue!=null&&Sr(e,!!l.multiple,l.defaultValue,!0);break;default:typeof d.onClick=="function"&&(e.onclick=pi)}switch(o){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}}l&&(r.flags|=4)}r.ref!==null&&(r.flags|=512,r.flags|=2097152)}return tt(r),null;case 6:if(e&&r.stateNode!=null)Hp(e,r,e.memoizedProps,l);else{if(typeof l!="string"&&r.stateNode===null)throw Error(s(166));if(o=ar(Us.current),ar(Gt.current),wi(r)){if(l=r.stateNode,o=r.memoizedProps,l[Vt]=r,(h=l.nodeValue!==o)&&(e=mt,e!==null))switch(e.tag){case 3:fi(l.nodeValue,o,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&fi(l.nodeValue,o,(e.mode&1)!==0)}h&&(r.flags|=4)}else l=(o.nodeType===9?o:o.ownerDocument).createTextNode(l),l[Vt]=r,r.stateNode=l}return tt(r),null;case 13:if(Te(Ae),l=r.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(Ie&&yt!==null&&r.mode&1&&!(r.flags&128))qf(),zr(),r.flags|=98560,h=!1;else if(h=wi(r),l!==null&&l.dehydrated!==null){if(e===null){if(!h)throw Error(s(318));if(h=r.memoizedState,h=h!==null?h.dehydrated:null,!h)throw Error(s(317));h[Vt]=r}else zr(),!(r.flags&128)&&(r.memoizedState=null),r.flags|=4;tt(r),h=!1}else It!==null&&(xu(It),It=null),h=!0;if(!h)return r.flags&65536?r:null}return r.flags&128?(r.lanes=o,r):(l=l!==null,l!==(e!==null&&e.memoizedState!==null)&&l&&(r.child.flags|=8192,r.mode&1&&(e===null||Ae.current&1?De===0&&(De=3):Eu())),r.updateQueue!==null&&(r.flags|=4),tt(r),null);case 4:return Hr(),lu(e,r),e===null&&_s(r.stateNode.containerInfo),tt(r),null;case 10:return Ll(r.type._context),tt(r),null;case 17:return it(r.type)&&mi(),tt(r),null;case 19:if(Te(Ae),h=r.memoizedState,h===null)return tt(r),null;if(l=(r.flags&128)!==0,w=h.rendering,w===null)if(l)Ws(h,!1);else{if(De!==0||e!==null&&e.flags&128)for(e=r.child;e!==null;){if(w=Ni(e),w!==null){for(r.flags|=128,Ws(h,!1),l=w.updateQueue,l!==null&&(r.updateQueue=l,r.flags|=4),r.subtreeFlags=0,l=o,o=r.child;o!==null;)h=o,e=l,h.flags&=14680066,w=h.alternate,w===null?(h.childLanes=0,h.lanes=e,h.child=null,h.subtreeFlags=0,h.memoizedProps=null,h.memoizedState=null,h.updateQueue=null,h.dependencies=null,h.stateNode=null):(h.childLanes=w.childLanes,h.lanes=w.lanes,h.child=w.child,h.subtreeFlags=0,h.deletions=null,h.memoizedProps=w.memoizedProps,h.memoizedState=w.memoizedState,h.updateQueue=w.updateQueue,h.type=w.type,e=w.dependencies,h.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),o=o.sibling;return Pe(Ae,Ae.current&1|2),r.child}e=e.sibling}h.tail!==null&&_e()>Wr&&(r.flags|=128,l=!0,Ws(h,!1),r.lanes=4194304)}else{if(!l)if(e=Ni(w),e!==null){if(r.flags|=128,l=!0,o=e.updateQueue,o!==null&&(r.updateQueue=o,r.flags|=4),Ws(h,!0),h.tail===null&&h.tailMode==="hidden"&&!w.alternate&&!Ie)return tt(r),null}else 2*_e()-h.renderingStartTime>Wr&&o!==1073741824&&(r.flags|=128,l=!0,Ws(h,!1),r.lanes=4194304);h.isBackwards?(w.sibling=r.child,r.child=w):(o=h.last,o!==null?o.sibling=w:r.child=w,h.last=w)}return h.tail!==null?(r=h.tail,h.rendering=r,h.tail=r.sibling,h.renderingStartTime=_e(),r.sibling=null,o=Ae.current,Pe(Ae,l?o&1|2:o&1),r):(tt(r),null);case 22:case 23:return bu(),l=r.memoizedState!==null,e!==null&&e.memoizedState!==null!==l&&(r.flags|=8192),l&&r.mode&1?gt&1073741824&&(tt(r),r.subtreeFlags&6&&(r.flags|=8192)):tt(r),null;case 24:return null;case 25:return null}throw Error(s(156,r.tag))}function v1(e,r){switch(Il(r),r.tag){case 1:return it(r.type)&&mi(),e=r.flags,e&65536?(r.flags=e&-65537|128,r):null;case 3:return Hr(),Te(ot),Te(Je),Hl(),e=r.flags,e&65536&&!(e&128)?(r.flags=e&-65537|128,r):null;case 5:return Dl(r),null;case 13:if(Te(Ae),e=r.memoizedState,e!==null&&e.dehydrated!==null){if(r.alternate===null)throw Error(s(340));zr()}return e=r.flags,e&65536?(r.flags=e&-65537|128,r):null;case 19:return Te(Ae),null;case 4:return Hr(),null;case 10:return Ll(r.type._context),null;case 22:case 23:return bu(),null;case 24:return null;default:return null}}var _i=!1,nt=!1,x1=typeof WeakSet=="function"?WeakSet:Set,ne=null;function Gr(e,r){var o=e.ref;if(o!==null)if(typeof o=="function")try{o(null)}catch(l){$e(e,r,l)}else o.current=null}function uu(e,r,o){try{o()}catch(l){$e(e,r,l)}}var Vp=!1;function w1(e,r){if(bl=ti,e=Ef(),pl(e)){if("selectionStart"in e)var o={start:e.selectionStart,end:e.selectionEnd};else e:{o=(o=e.ownerDocument)&&o.defaultView||window;var l=o.getSelection&&o.getSelection();if(l&&l.rangeCount!==0){o=l.anchorNode;var d=l.anchorOffset,h=l.focusNode;l=l.focusOffset;try{o.nodeType,h.nodeType}catch{o=null;break e}var w=0,S=-1,P=-1,L=0,G=0,q=e,H=null;t:for(;;){for(var te;q!==o||d!==0&&q.nodeType!==3||(S=w+d),q!==h||l!==0&&q.nodeType!==3||(P=w+l),q.nodeType===3&&(w+=q.nodeValue.length),(te=q.firstChild)!==null;)H=q,q=te;for(;;){if(q===e)break t;if(H===o&&++L===d&&(S=w),H===h&&++G===l&&(P=w),(te=q.nextSibling)!==null)break;q=H,H=q.parentNode}q=te}o=S===-1||P===-1?null:{start:S,end:P}}else o=null}o=o||{start:0,end:0}}else o=null;for(El={focusedElem:e,selectionRange:o},ti=!1,ne=r;ne!==null;)if(r=ne,e=r.child,(r.subtreeFlags&1028)!==0&&e!==null)e.return=r,ne=e;else for(;ne!==null;){r=ne;try{var se=r.alternate;if(r.flags&1024)switch(r.tag){case 0:case 11:case 15:break;case 1:if(se!==null){var ie=se.memoizedProps,Le=se.memoizedState,A=r.stateNode,j=A.getSnapshotBeforeUpdate(r.elementType===r.type?ie:At(r.type,ie),Le);A.__reactInternalSnapshotBeforeUpdate=j}break;case 3:var $=r.stateNode.containerInfo;$.nodeType===1?$.textContent="":$.nodeType===9&&$.documentElement&&$.removeChild($.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(s(163))}}catch(Y){$e(r,r.return,Y)}if(e=r.sibling,e!==null){e.return=r.return,ne=e;break}ne=r.return}return se=Vp,Vp=!1,se}function Ks(e,r,o){var l=r.updateQueue;if(l=l!==null?l.lastEffect:null,l!==null){var d=l=l.next;do{if((d.tag&e)===e){var h=d.destroy;d.destroy=void 0,h!==void 0&&uu(r,o,h)}d=d.next}while(d!==l)}}function Li(e,r){if(r=r.updateQueue,r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var l=o.create;o.destroy=l()}o=o.next}while(o!==r)}}function cu(e){var r=e.ref;if(r!==null){var o=e.stateNode;switch(e.tag){case 5:e=o;break;default:e=o}typeof r=="function"?r(e):r.current=e}}function Gp(e){var r=e.alternate;r!==null&&(e.alternate=null,Gp(r)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(r=e.stateNode,r!==null&&(delete r[Vt],delete r[Ms],delete r[Nl],delete r[n1],delete r[r1])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function qp(e){return e.tag===5||e.tag===3||e.tag===4}function Wp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||qp(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.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 du(e,r,o){var l=e.tag;if(l===5||l===6)e=e.stateNode,r?o.nodeType===8?o.parentNode.insertBefore(e,r):o.insertBefore(e,r):(o.nodeType===8?(r=o.parentNode,r.insertBefore(e,o)):(r=o,r.appendChild(e)),o=o._reactRootContainer,o!=null||r.onclick!==null||(r.onclick=pi));else if(l!==4&&(e=e.child,e!==null))for(du(e,r,o),e=e.sibling;e!==null;)du(e,r,o),e=e.sibling}function fu(e,r,o){var l=e.tag;if(l===5||l===6)e=e.stateNode,r?o.insertBefore(e,r):o.appendChild(e);else if(l!==4&&(e=e.child,e!==null))for(fu(e,r,o),e=e.sibling;e!==null;)fu(e,r,o),e=e.sibling}var Qe=null,Rt=!1;function Ln(e,r,o){for(o=o.child;o!==null;)Kp(e,r,o),o=o.sibling}function Kp(e,r,o){if(Ht&&typeof Ht.onCommitFiberUnmount=="function")try{Ht.onCommitFiberUnmount(Zo,o)}catch{}switch(o.tag){case 5:nt||Gr(o,r);case 6:var l=Qe,d=Rt;Qe=null,Ln(e,r,o),Qe=l,Rt=d,Qe!==null&&(Rt?(e=Qe,o=o.stateNode,e.nodeType===8?e.parentNode.removeChild(o):e.removeChild(o)):Qe.removeChild(o.stateNode));break;case 18:Qe!==null&&(Rt?(e=Qe,o=o.stateNode,e.nodeType===8?Cl(e.parentNode,o):e.nodeType===1&&Cl(e,o),Ns(e)):Cl(Qe,o.stateNode));break;case 4:l=Qe,d=Rt,Qe=o.stateNode.containerInfo,Rt=!0,Ln(e,r,o),Qe=l,Rt=d;break;case 0:case 11:case 14:case 15:if(!nt&&(l=o.updateQueue,l!==null&&(l=l.lastEffect,l!==null))){d=l=l.next;do{var h=d,w=h.destroy;h=h.tag,w!==void 0&&(h&2||h&4)&&uu(o,r,w),d=d.next}while(d!==l)}Ln(e,r,o);break;case 1:if(!nt&&(Gr(o,r),l=o.stateNode,typeof l.componentWillUnmount=="function"))try{l.props=o.memoizedProps,l.state=o.memoizedState,l.componentWillUnmount()}catch(S){$e(o,r,S)}Ln(e,r,o);break;case 21:Ln(e,r,o);break;case 22:o.mode&1?(nt=(l=nt)||o.memoizedState!==null,Ln(e,r,o),nt=l):Ln(e,r,o);break;default:Ln(e,r,o)}}function Zp(e){var r=e.updateQueue;if(r!==null){e.updateQueue=null;var o=e.stateNode;o===null&&(o=e.stateNode=new x1),r.forEach(function(l){var d=T1.bind(null,e,l);o.has(l)||(o.add(l),l.then(d,d))})}}function Bt(e,r){var o=r.deletions;if(o!==null)for(var l=0;ld&&(d=w),l&=~h}if(l=d,l=_e()-l,l=(120>l?120:480>l?480:1080>l?1080:1920>l?1920:3e3>l?3e3:4320>l?4320:1960*E1(l/1960))-l,10e?16:e,Fn===null)var l=!1;else{if(e=Fn,Fn=null,Di=0,be&6)throw Error(s(331));var d=be;for(be|=4,ne=e.current;ne!==null;){var h=ne,w=h.child;if(ne.flags&16){var S=h.deletions;if(S!==null){for(var P=0;P_e()-mu?dr(e,0):hu|=o),ut(e,r)}function l0(e,r){r===0&&(e.mode&1?(r=Qo,Qo<<=1,!(Qo&130023424)&&(Qo=4194304)):r=1);var o=st();e=ln(e,r),e!==null&&(bs(e,r,o),ut(e,o))}function j1(e){var r=e.memoizedState,o=0;r!==null&&(o=r.retryLane),l0(e,o)}function T1(e,r){var o=0;switch(e.tag){case 13:var l=e.stateNode,d=e.memoizedState;d!==null&&(o=d.retryLane);break;case 19:l=e.stateNode;break;default:throw Error(s(314))}l!==null&&l.delete(r),l0(e,o)}var u0;u0=function(e,r,o){if(e!==null)if(e.memoizedProps!==r.pendingProps||ot.current)at=!0;else{if(!(e.lanes&o)&&!(r.flags&128))return at=!1,y1(e,r,o);at=!!(e.flags&131072)}else at=!1,Ie&&r.flags&1048576&&Uf(r,xi,r.index);switch(r.lanes=0,r.tag){case 2:var l=r.type;$i(e,r),e=r.pendingProps;var d=Lr(r,Je.current);Ur(r,o),d=ql(null,r,l,e,d,o);var h=Wl();return r.flags|=1,typeof d=="object"&&d!==null&&typeof d.render=="function"&&d.$$typeof===void 0?(r.tag=1,r.memoizedState=null,r.updateQueue=null,it(l)?(h=!0,yi(r)):h=!1,r.memoizedState=d.state!==null&&d.state!==void 0?d.state:null,zl(r),d.updater=Ri,r.stateNode=d,d._reactInternals=r,Jl(r,l,e,o),r=ru(null,r,l,!0,h,o)):(r.tag=0,Ie&&h&&Tl(r),rt(null,r,d,o),r=r.child),r;case 16:l=r.elementType;e:{switch($i(e,r),e=r.pendingProps,d=l._init,l=d(l._payload),r.type=l,d=r.tag=A1(l),e=At(l,e),d){case 0:r=nu(null,r,l,e,o);break e;case 1:r=_p(null,r,l,e,o);break e;case 11:r=Ip(null,r,l,e,o);break e;case 14:r=Ap(null,r,l,At(l.type,e),o);break e}throw Error(s(306,l,""))}return r;case 0:return l=r.type,d=r.pendingProps,d=r.elementType===l?d:At(l,d),nu(e,r,l,d,o);case 1:return l=r.type,d=r.pendingProps,d=r.elementType===l?d:At(l,d),_p(e,r,l,d,o);case 3:e:{if(Lp(r),e===null)throw Error(s(387));l=r.pendingProps,h=r.memoizedState,d=h.element,Qf(e,r),Ci(r,l,null,o);var w=r.memoizedState;if(l=w.element,h.isDehydrated)if(h={element:l,isDehydrated:!1,cache:w.cache,pendingSuspenseBoundaries:w.pendingSuspenseBoundaries,transitions:w.transitions},r.updateQueue.baseState=h,r.memoizedState=h,r.flags&256){d=Vr(Error(s(423)),r),r=Mp(e,r,l,o,d);break e}else if(l!==d){d=Vr(Error(s(424)),r),r=Mp(e,r,l,o,d);break e}else for(yt=In(r.stateNode.containerInfo.firstChild),mt=r,Ie=!0,It=null,o=Zf(r,null,l,o),r.child=o;o;)o.flags=o.flags&-3|4096,o=o.sibling;else{if(zr(),l===d){r=cn(e,r,o);break e}rt(e,r,l,o)}r=r.child}return r;case 5:return ep(r),e===null&&Rl(r),l=r.type,d=r.pendingProps,h=e!==null?e.memoizedProps:null,w=d.children,kl(l,d)?w=null:h!==null&&kl(l,h)&&(r.flags|=32),$p(e,r),rt(e,r,w,o),r.child;case 6:return e===null&&Rl(r),null;case 13:return Fp(e,r,o);case 4:return Ol(r,r.stateNode.containerInfo),l=r.pendingProps,e===null?r.child=Or(r,null,l,o):rt(e,r,l,o),r.child;case 11:return l=r.type,d=r.pendingProps,d=r.elementType===l?d:At(l,d),Ip(e,r,l,d,o);case 7:return rt(e,r,r.pendingProps,o),r.child;case 8:return rt(e,r,r.pendingProps.children,o),r.child;case 12:return rt(e,r,r.pendingProps.children,o),r.child;case 10:e:{if(l=r.type._context,d=r.pendingProps,h=r.memoizedProps,w=d.value,Pe(Ei,l._currentValue),l._currentValue=w,h!==null)if(Tt(h.value,w)){if(h.children===d.children&&!ot.current){r=cn(e,r,o);break e}}else for(h=r.child,h!==null&&(h.return=r);h!==null;){var S=h.dependencies;if(S!==null){w=h.child;for(var P=S.firstContext;P!==null;){if(P.context===l){if(h.tag===1){P=un(-1,o&-o),P.tag=2;var L=h.updateQueue;if(L!==null){L=L.shared;var G=L.pending;G===null?P.next=P:(P.next=G.next,G.next=P),L.pending=P}}h.lanes|=o,P=h.alternate,P!==null&&(P.lanes|=o),Ml(h.return,o,r),S.lanes|=o;break}P=P.next}}else if(h.tag===10)w=h.type===r.type?null:h.child;else if(h.tag===18){if(w=h.return,w===null)throw Error(s(341));w.lanes|=o,S=w.alternate,S!==null&&(S.lanes|=o),Ml(w,o,r),w=h.sibling}else w=h.child;if(w!==null)w.return=h;else for(w=h;w!==null;){if(w===r){w=null;break}if(h=w.sibling,h!==null){h.return=w.return,w=h;break}w=w.return}h=w}rt(e,r,d.children,o),r=r.child}return r;case 9:return d=r.type,l=r.pendingProps.children,Ur(r,o),d=bt(d),l=l(d),r.flags|=1,rt(e,r,l,o),r.child;case 14:return l=r.type,d=At(l,r.pendingProps),d=At(l.type,d),Ap(e,r,l,d,o);case 15:return Rp(e,r,r.type,r.pendingProps,o);case 17:return l=r.type,d=r.pendingProps,d=r.elementType===l?d:At(l,d),$i(e,r),r.tag=1,it(l)?(e=!0,yi(r)):e=!1,Ur(r,o),kp(r,l,d),Jl(r,l,d,o),ru(null,r,l,!0,e,o);case 19:return Op(e,r,o);case 22:return Bp(e,r,o)}throw Error(s(156,r.tag))};function c0(e,r){return Ud(e,r)}function I1(e,r,o,l){this.tag=e,this.key=o,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=r,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=l,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function St(e,r,o,l){return new I1(e,r,o,l)}function ku(e){return e=e.prototype,!(!e||!e.isReactComponent)}function A1(e){if(typeof e=="function")return ku(e)?1:0;if(e!=null){if(e=e.$$typeof,e===ae)return 11;if(e===X)return 14}return 2}function Dn(e,r){var o=e.alternate;return o===null?(o=St(e.tag,r,e.key,e.mode),o.elementType=e.elementType,o.type=e.type,o.stateNode=e.stateNode,o.alternate=e,e.alternate=o):(o.pendingProps=r,o.type=e.type,o.flags=0,o.subtreeFlags=0,o.deletions=null),o.flags=e.flags&14680064,o.childLanes=e.childLanes,o.lanes=e.lanes,o.child=e.child,o.memoizedProps=e.memoizedProps,o.memoizedState=e.memoizedState,o.updateQueue=e.updateQueue,r=e.dependencies,o.dependencies=r===null?null:{lanes:r.lanes,firstContext:r.firstContext},o.sibling=e.sibling,o.index=e.index,o.ref=e.ref,o}function Gi(e,r,o,l,d,h){var w=2;if(l=e,typeof e=="function")ku(e)&&(w=1);else if(typeof e=="string")w=5;else e:switch(e){case D:return pr(o.children,d,h,r);case B:w=8,d|=8;break;case M:return e=St(12,o,r,d|2),e.elementType=M,e.lanes=h,e;case fe:return e=St(13,o,r,d),e.elementType=fe,e.lanes=h,e;case K:return e=St(19,o,r,d),e.elementType=K,e.lanes=h,e;case ee:return qi(o,d,h,r);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case oe:w=10;break e;case re:w=9;break e;case ae:w=11;break e;case X:w=14;break e;case Q:w=16,l=null;break e}throw Error(s(130,e==null?e:typeof e,""))}return r=St(w,o,r,d),r.elementType=e,r.type=l,r.lanes=h,r}function pr(e,r,o,l){return e=St(7,e,l,r),e.lanes=o,e}function qi(e,r,o,l){return e=St(22,e,l,r),e.elementType=ee,e.lanes=o,e.stateNode={isHidden:!1},e}function Su(e,r,o){return e=St(6,e,null,r),e.lanes=o,e}function Cu(e,r,o){return r=St(4,e.children!==null?e.children:[],e.key,r),r.lanes=o,r.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},r}function R1(e,r,o,l,d){this.tag=r,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Xa(0),this.expirationTimes=Xa(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Xa(0),this.identifierPrefix=l,this.onRecoverableError=d,this.mutableSourceEagerHydrationData=null}function Nu(e,r,o,l,d,h,w,S,P){return e=new R1(e,r,o,S,P),r===1?(r=1,h===!0&&(r|=8)):r=0,h=St(3,null,null,r),e.current=h,h.stateNode=e,h.memoizedState={element:l,isDehydrated:o,cache:null,transitions:null,pendingSuspenseBoundaries:null},zl(h),e}function B1(e,r,o){var l=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(n){console.error(n)}}return t(),Ru.exports=V1(),Ru.exports}var S0;function q1(){if(S0)return Ji;S0=1;var t=G1();return Ji.createRoot=t.createRoot,Ji.hydrateRoot=t.hydrateRoot,Ji}var W1=q1();const K1=Ph(W1);/** - * react-router v7.1.1 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */var C0="popstate";function Z1(t={}){function n(i,a){let{pathname:u,search:c,hash:f}=i.location;return nc("",{pathname:u,search:c,hash:f},a.state&&a.state.usr||null,a.state&&a.state.key||"default")}function s(i,a){return typeof a=="string"?a:co(a)}return Q1(n,s,null,t)}function Be(t,n){if(t===!1||t===null||typeof t>"u")throw new Error(n)}function Qt(t,n){if(!t){typeof console<"u"&&console.warn(n);try{throw new Error(n)}catch{}}}function Y1(){return Math.random().toString(36).substring(2,10)}function N0(t,n){return{usr:t.state,key:t.key,idx:n}}function nc(t,n,s=null,i){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof n=="string"?os(n):n,state:s,key:n&&n.key||i||Y1()}}function co({pathname:t="/",search:n="",hash:s=""}){return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),s&&s!=="#"&&(t+=s.charAt(0)==="#"?s:"#"+s),t}function os(t){let n={};if(t){let s=t.indexOf("#");s>=0&&(n.hash=t.substring(s),t=t.substring(0,s));let i=t.indexOf("?");i>=0&&(n.search=t.substring(i),t=t.substring(0,i)),t&&(n.pathname=t)}return n}function Q1(t,n,s,i={}){let{window:a=document.defaultView,v5Compat:u=!1}=i,c=a.history,f="POP",p=null,m=g();m==null&&(m=0,c.replaceState({...c.state,idx:m},""));function g(){return(c.state||{idx:null}).idx}function y(){f="POP";let b=g(),N=b==null?null:b-m;m=b,p&&p({action:f,location:k.location,delta:N})}function x(b,N){f="PUSH";let I=nc(k.location,b,N);m=g()+1;let _=N0(I,m),F=k.createHref(I);try{c.pushState(_,"",F)}catch(W){if(W instanceof DOMException&&W.name==="DataCloneError")throw W;a.location.assign(F)}u&&p&&p({action:f,location:k.location,delta:1})}function E(b,N){f="REPLACE";let I=nc(k.location,b,N);m=g();let _=N0(I,m),F=k.createHref(I);c.replaceState(_,"",F),u&&p&&p({action:f,location:k.location,delta:0})}function C(b){let N=a.location.origin!=="null"?a.location.origin:a.location.href,I=typeof b=="string"?b:co(b);return I=I.replace(/ $/,"%20"),Be(N,`No window.location.(origin|href) available to create URL for href: ${I}`),new URL(I,N)}let k={get action(){return f},get location(){return t(a,c)},listen(b){if(p)throw new Error("A history only accepts one active listener");return a.addEventListener(C0,y),p=b,()=>{a.removeEventListener(C0,y),p=null}},createHref(b){return n(a,b)},createURL:C,encodeLocation(b){let N=C(b);return{pathname:N.pathname,search:N.search,hash:N.hash}},push:x,replace:E,go(b){return c.go(b)}};return k}function Th(t,n,s="/"){return X1(t,n,s,!1)}function X1(t,n,s,i){let a=typeof n=="string"?os(n):n,u=Kn(a.pathname||"/",s);if(u==null)return null;let c=Ih(t);J1(c);let f=null;for(let p=0;f==null&&p{let p={relativePath:f===void 0?u.path||"":f,caseSensitive:u.caseSensitive===!0,childrenIndex:c,route:u};p.relativePath.startsWith("/")&&(Be(p.relativePath.startsWith(i),`Absolute route path "${p.relativePath}" nested under path "${i}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),p.relativePath=p.relativePath.slice(i.length));let m=yn([i,p.relativePath]),g=s.concat(p);u.children&&u.children.length>0&&(Be(u.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${m}".`),Ih(u.children,n,g,m)),!(u.path==null&&!u.index)&&n.push({path:m,score:iv(m,u.index),routesMeta:g})};return t.forEach((u,c)=>{var f;if(u.path===""||!((f=u.path)!=null&&f.includes("?")))a(u,c);else for(let p of Ah(u.path))a(u,c,p)}),n}function Ah(t){let n=t.split("/");if(n.length===0)return[];let[s,...i]=n,a=s.endsWith("?"),u=s.replace(/\?$/,"");if(i.length===0)return a?[u,""]:[u];let c=Ah(i.join("/")),f=[];return f.push(...c.map(p=>p===""?u:[u,p].join("/"))),a&&f.push(...c),f.map(p=>t.startsWith("/")&&p===""?"/":p)}function J1(t){t.sort((n,s)=>n.score!==s.score?s.score-n.score:av(n.routesMeta.map(i=>i.childrenIndex),s.routesMeta.map(i=>i.childrenIndex)))}var ev=/^:[\w-]+$/,tv=3,nv=2,rv=1,sv=10,ov=-2,P0=t=>t==="*";function iv(t,n){let s=t.split("/"),i=s.length;return s.some(P0)&&(i+=ov),n&&(i+=nv),s.filter(a=>!P0(a)).reduce((a,u)=>a+(ev.test(u)?tv:u===""?rv:sv),i)}function av(t,n){return t.length===n.length&&t.slice(0,-1).every((i,a)=>i===n[a])?t[t.length-1]-n[n.length-1]:0}function lv(t,n,s=!1){let{routesMeta:i}=t,a={},u="/",c=[];for(let f=0;f{if(g==="*"){let C=f[x]||"";c=u.slice(0,u.length-C.length).replace(/(.)\/+$/,"$1")}const E=f[x];return y&&!E?m[g]=void 0:m[g]=(E||"").replace(/%2F/g,"/"),m},{}),pathname:u,pathnameBase:c,pattern:t}}function uv(t,n=!1,s=!0){Qt(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let i=[],a="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(c,f,p)=>(i.push({paramName:f,isOptional:p!=null}),p?"/?([^\\/]+)?":"/([^\\/]+)"));return t.endsWith("*")?(i.push({paramName:"*"}),a+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):s?a+="\\/*$":t!==""&&t!=="/"&&(a+="(?:(?=\\/|$))"),[new RegExp(a,n?void 0:"i"),i]}function cv(t){try{return t.split("/").map(n=>decodeURIComponent(n).replace(/\//g,"%2F")).join("/")}catch(n){return Qt(!1,`The URL path "${t}" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding (${n}).`),t}}function Kn(t,n){if(n==="/")return t;if(!t.toLowerCase().startsWith(n.toLowerCase()))return null;let s=n.endsWith("/")?n.length-1:n.length,i=t.charAt(s);return i&&i!=="/"?null:t.slice(s)||"/"}function dv(t,n="/"){let{pathname:s,search:i="",hash:a=""}=typeof t=="string"?os(t):t;return{pathname:s?s.startsWith("/")?s:fv(s,n):n,search:mv(i),hash:yv(a)}}function fv(t,n){let s=n.replace(/\/+$/,"").split("/");return t.split("/").forEach(a=>{a===".."?s.length>1&&s.pop():a!=="."&&s.push(a)}),s.length>1?s.join("/"):"/"}function _u(t,n,s,i){return`Cannot include a '${t}' character in a manually specified \`to.${n}\` field [${JSON.stringify(i)}]. 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 pv(t){return t.filter((n,s)=>s===0||n.route.path&&n.route.path.length>0)}function Rh(t){let n=pv(t);return n.map((s,i)=>i===n.length-1?s.pathname:s.pathnameBase)}function Bh(t,n,s,i=!1){let a;typeof t=="string"?a=os(t):(a={...t},Be(!a.pathname||!a.pathname.includes("?"),_u("?","pathname","search",a)),Be(!a.pathname||!a.pathname.includes("#"),_u("#","pathname","hash",a)),Be(!a.search||!a.search.includes("#"),_u("#","search","hash",a)));let u=t===""||a.pathname==="",c=u?"/":a.pathname,f;if(c==null)f=s;else{let y=n.length-1;if(!i&&c.startsWith("..")){let x=c.split("/");for(;x[0]==="..";)x.shift(),y-=1;a.pathname=x.join("/")}f=y>=0?n[y]:"/"}let p=dv(a,f),m=c&&c!=="/"&&c.endsWith("/"),g=(u||c===".")&&s.endsWith("/");return!p.pathname.endsWith("/")&&(m||g)&&(p.pathname+="/"),p}var yn=t=>t.join("/").replace(/\/\/+/g,"/"),hv=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),mv=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,yv=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function gv(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}var $h=["POST","PUT","PATCH","DELETE"];new Set($h);var vv=["GET",...$h];new Set(vv);var is=R.createContext(null);is.displayName="DataRouter";var xa=R.createContext(null);xa.displayName="DataRouterState";var _h=R.createContext({isTransitioning:!1});_h.displayName="ViewTransition";var xv=R.createContext(new Map);xv.displayName="Fetchers";var wv=R.createContext(null);wv.displayName="Await";var en=R.createContext(null);en.displayName="Navigation";var Io=R.createContext(null);Io.displayName="Location";var En=R.createContext({outlet:null,matches:[],isDataRoute:!1});En.displayName="Route";var Rc=R.createContext(null);Rc.displayName="RouteError";function bv(t,{relative:n}={}){Be(Ao(),"useHref() may be used only in the context of a component.");let{basename:s,navigator:i}=R.useContext(en),{hash:a,pathname:u,search:c}=Ro(t,{relative:n}),f=u;return s!=="/"&&(f=u==="/"?s:yn([s,u])),i.createHref({pathname:f,search:c,hash:a})}function Ao(){return R.useContext(Io)!=null}function Jn(){return Be(Ao(),"useLocation() may be used only in the context of a component."),R.useContext(Io).location}var Lh="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Mh(t){R.useContext(en).static||R.useLayoutEffect(t)}function Bc(){let{isDataRoute:t}=R.useContext(En);return t?$v():Ev()}function Ev(){Be(Ao(),"useNavigate() may be used only in the context of a component.");let t=R.useContext(is),{basename:n,navigator:s}=R.useContext(en),{matches:i}=R.useContext(En),{pathname:a}=Jn(),u=JSON.stringify(Rh(i)),c=R.useRef(!1);return Mh(()=>{c.current=!0}),R.useCallback((p,m={})=>{if(Qt(c.current,Lh),!c.current)return;if(typeof p=="number"){s.go(p);return}let g=Bh(p,JSON.parse(u),a,m.relative==="path");t==null&&n!=="/"&&(g.pathname=g.pathname==="/"?n:yn([n,g.pathname])),(m.replace?s.replace:s.push)(g,m.state,m)},[n,s,u,a,t])}R.createContext(null);function Ro(t,{relative:n}={}){let{matches:s}=R.useContext(En),{pathname:i}=Jn(),a=JSON.stringify(Rh(s));return R.useMemo(()=>Bh(t,JSON.parse(a),i,n==="path"),[t,a,i,n])}function kv(t,n){return Fh(t,n)}function Fh(t,n,s,i){var N;Be(Ao(),"useRoutes() may be used only in the context of a component.");let{navigator:a}=R.useContext(en),{matches:u}=R.useContext(En),c=u[u.length-1],f=c?c.params:{},p=c?c.pathname:"/",m=c?c.pathnameBase:"/",g=c&&c.route;{let I=g&&g.path||"";zh(p,!g||I.endsWith("*")||I.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${p}" (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 y=Jn(),x;if(n){let I=typeof n=="string"?os(n):n;Be(m==="/"||((N=I.pathname)==null?void 0:N.startsWith(m)),`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 "${m}" but pathname "${I.pathname}" was given in the \`location\` prop.`),x=I}else x=y;let E=x.pathname||"/",C=E;if(m!=="/"){let I=m.replace(/^\//,"").split("/");C="/"+E.replace(/^\//,"").split("/").slice(I.length).join("/")}let k=Th(t,{pathname:C});Qt(g||k!=null,`No routes matched location "${x.pathname}${x.search}${x.hash}" `),Qt(k==null||k[k.length-1].route.element!==void 0||k[k.length-1].route.Component!==void 0||k[k.length-1].route.lazy!==void 0,`Matched leaf route at location "${x.pathname}${x.search}${x.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 b=jv(k&&k.map(I=>Object.assign({},I,{params:Object.assign({},f,I.params),pathname:yn([m,a.encodeLocation?a.encodeLocation(I.pathname).pathname:I.pathname]),pathnameBase:I.pathnameBase==="/"?m:yn([m,a.encodeLocation?a.encodeLocation(I.pathnameBase).pathname:I.pathnameBase])})),u,s,i);return n&&b?R.createElement(Io.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...x},navigationType:"POP"}},b):b}function Sv(){let t=Bv(),n=gv(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),s=t instanceof Error?t.stack:null,i="rgba(200,200,200, 0.5)",a={padding:"0.5rem",backgroundColor:i},u={padding:"2px 4px",backgroundColor:i},c=null;return console.error("Error handled by React Router default ErrorBoundary:",t),c=R.createElement(R.Fragment,null,R.createElement("p",null,"💿 Hey developer 👋"),R.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",R.createElement("code",{style:u},"ErrorBoundary")," or"," ",R.createElement("code",{style:u},"errorElement")," prop on your route.")),R.createElement(R.Fragment,null,R.createElement("h2",null,"Unexpected Application Error!"),R.createElement("h3",{style:{fontStyle:"italic"}},n),s?R.createElement("pre",{style:a},s):null,c)}var Cv=R.createElement(Sv,null),Nv=class extends R.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?R.createElement(En.Provider,{value:this.props.routeContext},R.createElement(Rc.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Pv({routeContext:t,match:n,children:s}){let i=R.useContext(is);return i&&i.static&&i.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=n.route.id),R.createElement(En.Provider,{value:t},s)}function jv(t,n=[],s=null,i=null){if(t==null){if(!s)return null;if(s.errors)t=s.matches;else if(n.length===0&&!s.initialized&&s.matches.length>0)t=s.matches;else return null}let a=t,u=s==null?void 0:s.errors;if(u!=null){let p=a.findIndex(m=>m.route.id&&(u==null?void 0:u[m.route.id])!==void 0);Be(p>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(u).join(",")}`),a=a.slice(0,Math.min(a.length,p+1))}let c=!1,f=-1;if(s)for(let p=0;p=0?a=a.slice(0,f+1):a=[a[0]];break}}}return a.reduceRight((p,m,g)=>{let y,x=!1,E=null,C=null;s&&(y=u&&m.route.id?u[m.route.id]:void 0,E=m.route.errorElement||Cv,c&&(f<0&&g===0?(zh("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),x=!0,C=null):f===g&&(x=!0,C=m.route.hydrateFallbackElement||null)));let k=n.concat(a.slice(0,g+1)),b=()=>{let N;return y?N=E:x?N=C:m.route.Component?N=R.createElement(m.route.Component,null):m.route.element?N=m.route.element:N=p,R.createElement(Pv,{match:m,routeContext:{outlet:p,matches:k,isDataRoute:s!=null},children:N})};return s&&(m.route.ErrorBoundary||m.route.errorElement||g===0)?R.createElement(Nv,{location:s.location,revalidation:s.revalidation,component:E,error:y,children:b(),routeContext:{outlet:null,matches:k,isDataRoute:!0}}):b()},null)}function $c(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Tv(t){let n=R.useContext(is);return Be(n,$c(t)),n}function Iv(t){let n=R.useContext(xa);return Be(n,$c(t)),n}function Av(t){let n=R.useContext(En);return Be(n,$c(t)),n}function _c(t){let n=Av(t),s=n.matches[n.matches.length-1];return Be(s.route.id,`${t} can only be used on routes that contain a unique "id"`),s.route.id}function Rv(){return _c("useRouteId")}function Bv(){var i;let t=R.useContext(Rc),n=Iv("useRouteError"),s=_c("useRouteError");return t!==void 0?t:(i=n.errors)==null?void 0:i[s]}function $v(){let{router:t}=Tv("useNavigate"),n=_c("useNavigate"),s=R.useRef(!1);return Mh(()=>{s.current=!0}),R.useCallback(async(a,u={})=>{Qt(s.current,Lh),s.current&&(typeof a=="number"?t.navigate(a):await t.navigate(a,{fromRouteId:n,...u}))},[t,n])}var j0={};function zh(t,n,s){!n&&!j0[t]&&(j0[t]=!0,Qt(!1,s))}R.memo(_v);function _v({routes:t,future:n,state:s}){return Fh(t,void 0,s,n)}function io(t){Be(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Lv({basename:t="/",children:n=null,location:s,navigationType:i="POP",navigator:a,static:u=!1}){Be(!Ao(),"You cannot render a inside another . You should never have more than one in your app.");let c=t.replace(/^\/*/,"/"),f=R.useMemo(()=>({basename:c,navigator:a,static:u,future:{}}),[c,a,u]);typeof s=="string"&&(s=os(s));let{pathname:p="/",search:m="",hash:g="",state:y=null,key:x="default"}=s,E=R.useMemo(()=>{let C=Kn(p,c);return C==null?null:{location:{pathname:C,search:m,hash:g,state:y,key:x},navigationType:i}},[c,p,m,g,y,x,i]);return Qt(E!=null,` is not able to match the URL "${p}${m}${g}" because it does not start with the basename, so the won't render anything.`),E==null?null:R.createElement(en.Provider,{value:f},R.createElement(Io.Provider,{children:n,value:E}))}function Mv({children:t,location:n}){return kv(rc(t),n)}function rc(t,n=[]){let s=[];return R.Children.forEach(t,(i,a)=>{if(!R.isValidElement(i))return;let u=[...n,a];if(i.type===R.Fragment){s.push.apply(s,rc(i.props.children,u));return}Be(i.type===io,`[${typeof i.type=="string"?i.type:i.type.name}] is not a component. All component children of must be a or `),Be(!i.props.index||!i.props.children,"An index route cannot have child routes.");let c={id:i.props.id||u.join("-"),caseSensitive:i.props.caseSensitive,element:i.props.element,Component:i.props.Component,index:i.props.index,path:i.props.path,loader:i.props.loader,action:i.props.action,hydrateFallbackElement:i.props.hydrateFallbackElement,HydrateFallback:i.props.HydrateFallback,errorElement:i.props.errorElement,ErrorBoundary:i.props.ErrorBoundary,hasErrorBoundary:i.props.hasErrorBoundary===!0||i.props.ErrorBoundary!=null||i.props.errorElement!=null,shouldRevalidate:i.props.shouldRevalidate,handle:i.props.handle,lazy:i.props.lazy};i.props.children&&(c.children=rc(i.props.children,u)),s.push(c)}),s}var la="get",ua="application/x-www-form-urlencoded";function wa(t){return t!=null&&typeof t.tagName=="string"}function Fv(t){return wa(t)&&t.tagName.toLowerCase()==="button"}function zv(t){return wa(t)&&t.tagName.toLowerCase()==="form"}function Ov(t){return wa(t)&&t.tagName.toLowerCase()==="input"}function Dv(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function Uv(t,n){return t.button===0&&(!n||n==="_self")&&!Dv(t)}var ea=null;function Hv(){if(ea===null)try{new FormData(document.createElement("form"),0),ea=!1}catch{ea=!0}return ea}var Vv=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Lu(t){return t!=null&&!Vv.has(t)?(Qt(!1,`"${t}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${ua}"`),null):t}function Gv(t,n){let s,i,a,u,c;if(zv(t)){let f=t.getAttribute("action");i=f?Kn(f,n):null,s=t.getAttribute("method")||la,a=Lu(t.getAttribute("enctype"))||ua,u=new FormData(t)}else if(Fv(t)||Ov(t)&&(t.type==="submit"||t.type==="image")){let f=t.form;if(f==null)throw new Error('Cannot submit a \n )\n }\n\n if (isConnected && address) {\n return (\n \n {isUP && (\n \n )}\n {address.slice(0, 6)}...{address.slice(-4)}\n \n )\n }\n\n return (\n \n Connect Wallet\n \n )\n}\n","import { useState, useEffect } from 'react'\nimport { Link, useLocation } from 'react-router-dom'\nimport { \n Code2, \n Search, \n Plus, \n User, \n Menu, \n X, \n Moon,\n Sun,\n Wallet\n} from 'lucide-react'\nimport { useTheme } from '../contexts/ThemeContext'\nimport { useWeb3 } from '../contexts/Web3Context'\nimport { WalletButton } from './WalletButton'\n\nexport default function Navbar() {\n const { theme, toggleTheme } = useTheme()\n const { isConnected, address, isUP } = useWeb3()\n const location = useLocation()\n const [isScrolled, setIsScrolled] = useState(false)\n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false)\n\n useEffect(() => {\n const handleScroll = () => setIsScrolled(window.scrollY > 20)\n window.addEventListener('scroll', handleScroll, { passive: true })\n return () => window.removeEventListener('scroll', handleScroll)\n }, [])\n\n const navLinks = [\n { path: '/', label: 'Home' },\n { path: '/explore', label: 'Explore', icon: Search },\n { path: '/upload', label: 'Upload', icon: Plus },\n { path: '/my-codes', label: 'My Codes', icon: User },\n ]\n\n return (\n \n )\n}\n","import React, { useState } from 'react'\nimport { Link } from 'react-router-dom'\nimport { \n Heart, \n GitFork, \n Clock, \n Shield, \n MoreHorizontal,\n Copy,\n Check,\n FileCode\n} from 'lucide-react'\nimport type { CodeSnippet } from '../types'\n\ninterface CodeCardProps {\n code: CodeSnippet\n variant?: 'default' | 'compact'\n}\n\nconst CodeCard: React.FC = ({ code, variant = 'default' }) => {\n const [copied, setCopied] = useState(false)\n const [isLiked, setIsLiked] = useState(false)\n\n const formatDate = (timestamp: number) => {\n const date = new Date(timestamp)\n const now = new Date()\n const diff = now.getTime() - date.getTime()\n const days = Math.floor(diff / (1000 * 60 * 60 * 24))\n \n if (days === 0) return 'Today'\n if (days === 1) return 'Yesterday'\n if (days < 7) return `${days} days ago`\n if (days < 30) return `${Math.floor(days / 7)} weeks ago`\n return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric' })\n }\n\n const handleCopy = async (e: React.MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n await navigator.clipboard.writeText(code.code)\n setCopied(true)\n setTimeout(() => setCopied(false), 2000)\n }\n\n const handleLike = (e: React.MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n setIsLiked(!isLiked)\n }\n\n const languageColors: Record = {\n solidity: 'bg-blue-500/20 text-blue-400 border-blue-500/30',\n javascript: 'bg-yellow-500/20 text-yellow-400 border-yellow-500/30',\n typescript: 'bg-blue-400/20 text-blue-300 border-blue-400/30',\n python: 'bg-green-500/20 text-green-400 border-green-500/30',\n rust: 'bg-orange-500/20 text-orange-400 border-orange-500/30',\n go: 'bg-cyan-500/20 text-cyan-400 border-cyan-500/30',\n default: 'bg-slate-500/20 text-slate-400 border-slate-500/30'\n }\n\n const languageColor = languageColors[code.language.toLowerCase()] || languageColors.default\n\n if (variant === 'compact') {\n return (\n \n
\n \n
\n \n
\n

\n {code.title}\n

\n
\n \n {code.language}\n \n {formatDate(code.timestamp)}\n
\n
\n\n
\n
\n \n {code.likes + (isLiked ? 1 : 0)}\n
\n
\n \n {code.forks}\n
\n
\n \n )\n }\n\n return (\n \n {/* Header */}\n
\n
\n
\n
\n \n {code.language}\n \n {code.isVerified && (\n \n \n Verified\n \n )}\n
\n

\n {code.title}\n

\n

\n {code.description}\n

\n
\n\n \n {copied ? : }\n \n
\n\n {/* Tags */}\n {code.tags.length > 0 && (\n
\n {code.tags.slice(0, 3).map((tag) => (\n \n #{tag}\n \n ))}\n {code.tags.length > 3 && (\n \n +{code.tags.length - 3}\n \n )}\n
\n )}\n
\n\n {/* Code Preview */}\n
\n
\n
\n            {code.code}\n          
\n
\n
\n\n {/* Footer */}\n
\n
\n
\n {code.author.charAt(0).toUpperCase()}\n
\n {code.author}\n
\n\n
\n \n \n {code.likes + (isLiked ? 1 : 0)}\n \n
\n \n {code.forks}\n
\n
\n \n {formatDate(code.timestamp)}\n
\n
\n
\n \n )\n}\n\nexport default CodeCard\n","import React from 'react'\nimport { LucideIcon } from 'lucide-react'\n\ninterface ButtonProps extends React.ButtonHTMLAttributes {\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger'\n size?: 'sm' | 'md' | 'lg'\n icon?: LucideIcon\n iconPosition?: 'left' | 'right'\n isLoading?: boolean\n fullWidth?: boolean\n}\n\nconst Button: React.FC = ({\n children,\n variant = 'primary',\n size = 'md',\n icon: Icon,\n iconPosition = 'left',\n isLoading,\n fullWidth,\n className = '',\n disabled,\n ...props\n}) => {\n const baseStyles = 'inline-flex items-center justify-center gap-2 font-medium rounded-lg transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-slate-900 disabled:opacity-50 disabled:cursor-not-allowed'\n \n const variants = {\n primary: 'bg-gradient-to-r from-blue-600 to-cyan-600 text-white hover:from-blue-500 hover:to-cyan-500 focus:ring-blue-500 shadow-lg shadow-blue-500/20',\n secondary: 'bg-slate-800 text-white hover:bg-slate-700 focus:ring-slate-600',\n outline: 'border border-slate-600 text-slate-300 hover:bg-slate-800 hover:text-white focus:ring-slate-500',\n ghost: 'text-slate-400 hover:text-white hover:bg-slate-800/50 focus:ring-slate-500',\n danger: 'bg-red-600 text-white hover:bg-red-500 focus:ring-red-500 shadow-lg shadow-red-500/20'\n }\n\n const sizes = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2.5 text-sm',\n lg: 'px-6 py-3 text-base'\n }\n\n return (\n \n {isLoading ? (\n <>\n \n \n \n \n Loading...\n \n ) : (\n <>\n {Icon && iconPosition === 'left' && }\n {children}\n {Icon && iconPosition === 'right' && }\n \n )}\n \n )\n}\n\nexport default Button\n","import React, { useState, useEffect } from 'react'\nimport { Link } from 'react-router-dom'\nimport { \n Code2, \n Sparkles, \n ArrowRight, \n Zap, \n Shield, \n Users,\n ChevronRight,\n Terminal,\n Globe,\n Lock,\n Rocket,\n Github\n} from 'lucide-react'\nimport CodeCard from '../components/CodeCard'\nimport Button from '../components/Button'\nimport type { CodeSnippet } from '../types'\n\n// Mock data for featured snippets\nconst featuredSnippets: CodeSnippet[] = [\n {\n id: '1',\n title: 'ERC-20 Token with Burn Function',\n description: 'A secure ERC-20 token implementation with burn functionality and access control.',\n code: `// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ncontract MyToken is ERC20, Ownable {\\n constructor() ERC20(\"MyToken\", \"MTK\") {\\n _mint(msg.sender, 1000000 * 10**decimals());\\n }\\n \\n function burn(uint256 amount) public {\\n _burn(msg.sender, amount);\\n }\\n}`,\n language: 'solidity',\n author: 'dev_alice',\n authorAddress: '0x1234...5678',\n timestamp: Date.now() - 86400000,\n tags: ['erc20', 'token', 'defi'],\n likes: 128,\n forks: 45,\n isVerified: true\n },\n {\n id: '2',\n title: 'NFT Minting Contract',\n description: 'Simple NFT minting contract with metadata support and minting limits.',\n code: `contract NFTMint is ERC721 {\\n uint256 public maxSupply = 10000;\\n uint256 public mintPrice = 0.05 ether;\\n \\n function mint(uint256 quantity) external payable {\\n require(totalSupply() + quantity <= maxSupply);\\n require(msg.value >= mintPrice * quantity);\\n _safeMint(msg.sender, quantity);\\n }\\n}`,\n language: 'solidity',\n author: 'crypto_bob',\n authorAddress: '0xabcd...efgh',\n timestamp: Date.now() - 172800000,\n tags: ['nft', 'erc721', 'minting'],\n likes: 89,\n forks: 32,\n isVerified: true\n },\n {\n id: '3',\n title: 'Staking Contract',\n description: 'Yield farming staking contract with reward distribution mechanism.',\n code: `contract StakingPool is ReentrancyGuard {\\n mapping(address => uint256) public stakes;\\n mapping(address => uint256) public rewards;\\n \\n function stake(uint256 amount) external {\\n updateReward(msg.sender);\\n stakes[msg.sender] += amount;\\n token.transferFrom(msg.sender, address(this), amount);\\n }\\n}`,\n language: 'solidity',\n author: 'yield_farmer',\n authorAddress: '0x9876...5432',\n timestamp: Date.now() - 259200000,\n tags: ['staking', 'yield', 'defi'],\n likes: 156,\n forks: 67,\n isVerified: true\n }\n]\n\nconst stats = [\n { value: '10K+', label: 'Code Snippets', icon: Code2 },\n { value: '5K+', label: 'Developers', icon: Users },\n { value: '100%', label: 'Verified Code', icon: Shield },\n { value: '50ms', label: 'Avg. Load Time', icon: Zap }\n]\n\nconst features = [\n {\n icon: Shield,\n title: 'Verified Code',\n description: 'All code snippets are verified and audited by our community of expert developers.',\n color: 'emerald'\n },\n {\n icon: Zap,\n title: 'Lightning Fast',\n description: 'Instant access to thousands of code snippets with our optimized search engine.',\n color: 'yellow'\n },\n {\n icon: Users,\n title: 'Community Driven',\n description: 'Join a thriving community of blockchain developers sharing knowledge and code.',\n color: 'blue'\n },\n {\n icon: Lock,\n title: 'Secure Storage',\n description: 'Your code is stored securely on IPFS and blockchain for permanent access.',\n color: 'purple'\n },\n {\n icon: Globe,\n title: 'Universal Profile',\n description: 'Native support for LUKSO Universal Profiles with reputation tracking.',\n color: 'pink'\n },\n {\n icon: Terminal,\n title: 'Developer First',\n description: 'Built by developers for developers with syntax highlighting and smart features.',\n color: 'cyan'\n }\n]\n\nconst Home: React.FC = () => {\n const [isVisible, setIsVisible] = useState(false)\n\n useEffect(() => {\n const timer = setTimeout(() => setIsVisible(true), 100)\n return () => clearTimeout(timer)\n }, [])\n\n return (\n
\n {/* Hero Section */}\n
\n {/* Background Effects */}\n
\n
\n
\n
\n
\n
\n\n
\n
\n {/* Badge */}\n
\n \n The Future of Code Sharing\n NEW\n
\n\n {/* Title */}\n

\n Share & Discover{' '}\n Smart Contract{' '}\n Code\n

\n\n {/* Subtitle */}\n

\n The premier platform for blockchain developers to share, discover, \n and collaborate on verified smart contract code snippets.\n

\n\n {/* CTA Buttons */}\n
\n \n \n \n \n \n \n
\n\n {/* Stats */}\n
\n {stats.map((stat, index) => (\n
\n
\n \n
\n
{stat.value}
\n
{stat.label}
\n
\n ))}\n
\n
\n
\n
\n\n {/* Featured Code Section */}\n
\n
\n \n
\n
\n
\n
\n
\n

Featured Snippets

\n
\n

Hand-picked code from our community

\n
\n \n View All\n \n \n
\n\n
\n {featuredSnippets.map((snippet, index) => (\n
\n \n
\n ))}\n
\n
\n
\n\n {/* Features Section */}\n
\n
\n
\n
\n\n
\n
\n
\n \n Powerful Features\n
\n

\n Why Choose Agent Code Hub?\n

\n

\n Built for developers, by developers. Everything you need to build better smart contracts.\n

\n
\n\n
\n {features.map((feature, index) => (\n
\n
\n \n
\n

{feature.title}

\n

{feature.description}

\n
\n ))}\n
\n
\n
\n\n {/* How It Works Section */}\n
\n
\n
\n

\n How It Works\n

\n

\n Get started in minutes with our simple three-step process\n

\n
\n\n
\n {[\n {\n step: '01',\n title: 'Connect Wallet',\n description: 'Connect your Universal Profile or MetaMask wallet to get started.'\n },\n {\n step: '02',\n title: 'Share Code',\n description: 'Upload your smart contract code with descriptions and tags.'\n },\n {\n step: '03',\n title: 'Earn Reputation',\n description: 'Get likes and forks to build your developer reputation.'\n }\n ].map((item, index) => (\n
\n
\n
{item.step}
\n

{item.title}

\n

{item.description}

\n
\n {index < 2 && (\n
\n )}\n
\n ))}\n
\n
\n
\n\n {/* CTA Section */}\n
\n
\n
\n {/* Background */}\n
\n
\n \n {/* Animated gradient border */}\n
\n \n {/* Content */}\n
\n
\n \n
\n

\n Ready to Share Your Code?\n

\n

\n Join thousands of developers sharing their smart contract code. \n Get feedback, earn reputation, and help the community grow.\n

\n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n\n {/* Footer */}\n
\n
\n
\n
\n
\n \n
\n \n Agent\n Code\n \n
\n

\n Built for the blockchain developer community\n

\n
\n \n \n \n
\n
\n
\n
\n
\n )\n}\n\nexport default Home\n","import { LUKSO_TESTNET_CONFIG, LUKSO_MAINNET_CONFIG } from './lukso'\n\nexport { LUKSO_TESTNET_CONFIG, LUKSO_MAINNET_CONFIG }\n\n// Contract addresses on LUKSO Testnet\nexport const CONTRACTS = {\n luksoTestnet: {\n codeRegistry: '0xF07CCA0d521B1ccE1f6b71879d37ef9ab45BF758',\n codeAttribution: '0xEf4C853f8521fcf475CcF1Cc29D17A9b979e3eC7',\n reputationToken: '0xbACc1604b99Bf988d4F5A429a717FfCEb44Bc0F5'\n }\n} as const\n\n// Legacy export for backward compatibility\nexport const LUKSO_TESTNET = {\n id: 4201,\n name: 'LUKSO Testnet',\n network: 'lukso-testnet',\n nativeCurrency: {\n decimals: 18,\n name: 'LYX',\n symbol: 'LYX',\n },\n rpcUrls: {\n default: {\n http: ['https://rpc.testnet.lukso.network'],\n },\n public: {\n http: ['https://rpc.testnet.lukso.network'],\n },\n },\n blockExplorers: {\n default: {\n name: 'LUKSO Testnet Explorer',\n url: 'https://explorer.execution.testnet.lukso.network',\n },\n },\n} as const\n\n// IPFS configuration\nexport const IPFS_CONFIG = {\n gateway: 'https://ipfs.io/ipfs',\n local: 'http://localhost:5001',\n // LUKSO IPFS gateway for profile data\n luksoGateway: 'https://api.universalprofile.cloud/ipfs'\n}\n\n// App configuration\nexport const APP_CONFIG = {\n name: 'Agent Code Hub',\n description: 'Share & Discover Smart Contract Code on LUKSO',\n url: 'https://agent-code-hub.lukso.io',\n icon: '/logo.png'\n}\n\n// Supported languages for code snippets\nexport const SUPPORTED_LANGUAGES = [\n 'javascript',\n 'typescript',\n 'python',\n 'solidity',\n 'rust',\n 'go',\n 'java',\n 'cpp',\n 'csharp',\n 'ruby',\n 'php',\n 'swift',\n 'kotlin',\n 'other'\n] as const\n","export const CODE_REGISTRY_ABI = [\n {\n \"inputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"ipfsHash\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"description\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string[]\",\n \"name\": \"tags\",\n \"type\": \"string[]\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"language\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"registerCode\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"codeId\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"codeId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"newIpfsHash\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"updateCode\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"codeId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getCode\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"creator\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"ipfsHash\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"description\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string[]\",\n \"name\": \"tags\",\n \"type\": \"string[]\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"language\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"createdAt\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"updatedAt\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"exists\",\n \"type\": \"bool\"\n }\n ],\n \"internalType\": \"struct CodeRegistry.Code\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"creator\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getCodesByCreator\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"tag\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"getCodesByTag\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"getAllCodes\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"codeId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"creator\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"ipfsHash\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"CodeRegistered\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"codeId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"newIpfsHash\",\n \"type\": \"string\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"CodeUpdated\",\n \"type\": \"event\"\n }\n] as const\n\nexport const CODE_ATTRIBUTION_ABI = [\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"codeId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"contributor\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"share\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"addAttribution\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"codeId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"getAttributions\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"contributor\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"share\",\n \"type\": \"uint256\"\n }\n ],\n \"internalType\": \"struct CodeAttribution.Attribution[]\",\n \"name\": \"\",\n \"type\": \"tuple[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"codeId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"contributor\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"share\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"AttributionAdded\",\n \"type\": \"event\"\n }\n] as const\n\nexport const REPUTATION_TOKEN_ABI = [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"getReputation\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ReputationMinted\",\n \"type\": \"event\"\n }\n] as const\n","import { useState, useEffect, useCallback } from 'react'\nimport { useWeb3 } from '../contexts/Web3Context'\nimport { CONTRACTS } from '../utils/constants'\nimport { CODE_REGISTRY_ABI, CODE_ATTRIBUTION_ABI, REPUTATION_TOKEN_ABI } from '../abi/contracts'\n\n// Re-export the wallet hook for convenience\nexport { useWeb3 }\n\ninterface CodeSnippet {\n id: string\n creator: string\n ipfsHash: string\n name: string\n description: string\n tags: string[]\n language: string\n version: string\n createdAt: bigint\n updatedAt: bigint\n exists: boolean\n}\n\n/**\n * Hook for CodeRegistry contract interactions\n */\nexport function useCodeRegistry() {\n const { executeTransaction, publicClient, address } = useWeb3()\n\n const registerCode = useCallback(async (\n ipfsHash: string,\n name: string,\n description: string,\n tags: string[],\n language: string,\n version: string\n ): Promise => {\n return executeTransaction(\n CONTRACTS.luksoTestnet.codeRegistry,\n CODE_REGISTRY_ABI as any,\n 'registerCode',\n [ipfsHash, name, description, tags, language, version]\n )\n }, [executeTransaction])\n\n const updateCode = useCallback(async (\n codeId: string,\n newIpfsHash: string,\n version: string\n ): Promise => {\n return executeTransaction(\n CONTRACTS.luksoTestnet.codeRegistry,\n CODE_REGISTRY_ABI as any,\n 'updateCode',\n [codeId, newIpfsHash, version]\n )\n }, [executeTransaction])\n\n const getCode = useCallback(async (codeId: string): Promise => {\n if (!publicClient) return null\n \n try {\n const result = await publicClient.readContract({\n address: CONTRACTS.luksoTestnet.codeRegistry as `0x${string}`,\n abi: CODE_REGISTRY_ABI,\n functionName: 'getCode',\n args: [codeId as `0x${string}`],\n }) as any\n \n return result as CodeSnippet\n } catch (error) {\n console.error('Error fetching code:', error)\n return null\n }\n }, [publicClient])\n\n const getCodesByCreator = useCallback(async (creator: string): Promise => {\n if (!publicClient) return []\n \n try {\n return await publicClient.readContract({\n address: CONTRACTS.luksoTestnet.codeRegistry as `0x${string}`,\n abi: CODE_REGISTRY_ABI,\n functionName: 'getCodesByCreator',\n args: [creator as `0x${string}`],\n }) as string[]\n } catch (error) {\n console.error('Error fetching codes by creator:', error)\n return []\n }\n }, [publicClient])\n\n const getAllCodes = useCallback(async (): Promise => {\n if (!publicClient) return []\n \n try {\n return await publicClient.readContract({\n address: CONTRACTS.luksoTestnet.codeRegistry as `0x${string}`,\n abi: CODE_REGISTRY_ABI,\n functionName: 'getAllCodes',\n args: [],\n }) as string[]\n } catch (error) {\n console.error('Error fetching all codes:', error)\n return []\n }\n }, [publicClient])\n\n return {\n registerCode,\n updateCode,\n getCode,\n getCodesByCreator,\n getAllCodes,\n }\n}\n\n/**\n * Hook for CodeAttribution contract interactions\n */\nexport function useCodeAttribution() {\n const { executeTransaction, publicClient } = useWeb3()\n\n const addAttribution = useCallback(async (\n codeId: string,\n contributor: string,\n share: number\n ): Promise => {\n return executeTransaction(\n CONTRACTS.luksoTestnet.codeAttribution,\n CODE_ATTRIBUTION_ABI as any,\n 'addAttribution',\n [codeId, contributor, BigInt(share)]\n )\n }, [executeTransaction])\n\n const getAttributions = useCallback(async (codeId: string) => {\n if (!publicClient) return []\n \n try {\n return await publicClient.readContract({\n address: CONTRACTS.luksoTestnet.codeAttribution as `0x${string}`,\n abi: CODE_ATTRIBUTION_ABI,\n functionName: 'getAttributions',\n args: [codeId as `0x${string}`],\n })\n } catch (error) {\n console.error('Error fetching attributions:', error)\n return []\n }\n }, [publicClient])\n\n return {\n addAttribution,\n getAttributions,\n }\n}\n\n/**\n * Hook for ReputationToken contract interactions\n */\nexport function useReputationToken() {\n const { publicClient } = useWeb3()\n\n const getReputation = useCallback(async (account: string): Promise => {\n if (!publicClient) return 0n\n \n try {\n return await publicClient.readContract({\n address: CONTRACTS.luksoTestnet.reputationToken as `0x${string}`,\n abi: REPUTATION_TOKEN_ABI,\n functionName: 'getReputation',\n args: [account as `0x${string}`],\n }) as bigint\n } catch (error) {\n console.error('Error fetching reputation:', error)\n return 0n\n }\n }, [publicClient])\n\n const balanceOf = useCallback(async (account: string): Promise => {\n if (!publicClient) return 0n\n \n try {\n return await publicClient.readContract({\n address: CONTRACTS.luksoTestnet.reputationToken as `0x${string}`,\n abi: REPUTATION_TOKEN_ABI,\n functionName: 'balanceOf',\n args: [account as `0x${string}`],\n }) as bigint\n } catch (error) {\n console.error('Error fetching balance:', error)\n return 0n\n }\n }, [publicClient])\n\n return {\n getReputation,\n balanceOf,\n }\n}\n","export function formatDistanceToNow(timestamp: number): string {\n const now = Date.now() / 1000\n const diff = now - timestamp\n\n if (diff < 60) return 'just now'\n if (diff < 3600) return `${Math.floor(diff / 60)}m ago`\n if (diff < 86400) return `${Math.floor(diff / 3600)}h ago`\n if (diff < 604800) return `${Math.floor(diff / 86400)}d ago`\n return `${Math.floor(diff / 604800)}w ago`\n}\n\nexport function truncateAddress(address: string, start = 6, end = 4): string {\n if (!address) return ''\n return `${address.slice(0, start)}...${address.slice(-end)}`\n}\n","import { useEffect, useState } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useCodeRegistry } from '../hooks/useLukso'\nimport { formatDistanceToNow } from '../utils/format'\n\ninterface CodeSnippet {\n id: string\n creator: string\n ipfsHash: string\n name: string\n description: string\n tags: string[]\n language: string\n version: string\n createdAt: bigint\n updatedAt: bigint\n exists: boolean\n}\n\nexport function Explore() {\n const [codes, setCodes] = useState([])\n const [loading, setLoading] = useState(true)\n const [selectedLanguage, setSelectedLanguage] = useState('all')\n const { getAllCodes, getCode } = useCodeRegistry()\n const navigate = useNavigate()\n\n useEffect(() => {\n const loadCodes = async () => {\n try {\n const codeIds = await getAllCodes()\n const codeData = await Promise.all(\n codeIds.map(async (id) => {\n const code = await getCode(id)\n if (code && code.exists) {\n return {\n id,\n ...code\n } as CodeSnippet\n }\n return null\n })\n )\n setCodes(codeData.filter((c): c is CodeSnippet => c !== null))\n } catch (error) {\n console.error('Error loading codes:', error)\n } finally {\n setLoading(false)\n }\n }\n\n loadCodes()\n }, [getAllCodes, getCode])\n\n const languages = ['all', ...new Set(codes.map(c => c.language))]\n \n const filteredCodes = selectedLanguage === 'all' \n ? codes \n : codes.filter(c => c.language === selectedLanguage)\n\n if (loading) {\n return (\n
\n
\n
\n )\n }\n\n return (\n
\n
\n
\n

Explore Code Snippets

\n \n setSelectedLanguage(e.target.value)}\n className=\"px-4 py-2 bg-slate-800 border border-slate-700 rounded-lg text-white focus:outline-none focus:ring-2 focus:ring-pink-500\"\n >\n {languages.map(lang => (\n \n ))}\n \n
\n\n {filteredCodes.length === 0 ? (\n
\n

No code snippets found.

\n
\n ) : (\n
\n {filteredCodes.map((code) => (\n
navigate(`/code/${code.id}`)}\n className=\"bg-slate-900 rounded-xl border border-slate-800 p-6 hover:border-pink-500/50 transition-colors cursor-pointer\"\n >\n
\n
\n \n {code.language.slice(0, 2).toUpperCase()}\n \n
\n \n v{code.version}\n \n
\n\n

{code.name}

\n

{code.description}

\n\n
\n {code.tags.slice(0, 3).map((tag, idx) => (\n \n {tag}\n \n ))}\n
\n\n
\n \n {code.creator.slice(0, 6)}...{code.creator.slice(-4)}\n \n \n {formatDistanceToNow(Number(code.createdAt))}\n \n
\n
\n ))}\n
\n )}\n
\n
\n )\n}\n","import React, { useState } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { \n Upload, \n Code2, \n FileCode, \n Hash, \n Tag, \n AlertCircle, \n CheckCircle2, \n Loader2,\n Sparkles,\n X,\n Info,\n Terminal\n} from 'lucide-react'\nimport { useWeb3 } from '../contexts/Web3Context'\nimport Button from '../components/Button'\n\ninterface FormData {\n name: string\n description: string\n code: string\n language: string\n tags: string[]\n version: string\n license: string\n}\n\ninterface FormErrors {\n name?: string\n description?: string\n code?: string\n language?: string\n}\n\nconst languages = [\n { value: 'solidity', label: 'Solidity', color: 'text-blue-400' },\n { value: 'javascript', label: 'JavaScript', color: 'text-yellow-400' },\n { value: 'typescript', label: 'TypeScript', color: 'text-blue-300' },\n { value: 'python', label: 'Python', color: 'text-green-400' },\n { value: 'rust', label: 'Rust', color: 'text-orange-400' },\n { value: 'go', label: 'Go', color: 'text-cyan-400' },\n { value: 'java', label: 'Java', color: 'text-red-400' },\n { value: 'cpp', label: 'C++', color: 'text-purple-400' },\n { value: 'other', label: 'Other', color: 'text-slate-400' }\n]\n\nconst licenses = [\n 'MIT',\n 'Apache-2.0',\n 'GPL-3.0',\n 'BSD-3-Clause',\n 'Unlicense',\n 'Custom'\n]\n\nconst steps = [\n { id: 1, label: 'Basic Info' },\n { id: 2, label: 'Code' },\n { id: 3, label: 'Review' }\n]\n\nconst UploadPage: React.FC = () => {\n const { isConnected, address } = useWeb3()\n const navigate = useNavigate()\n \n const [currentStep, setCurrentStep] = useState(1)\n const [formData, setFormData] = useState({\n name: '',\n description: '',\n code: '',\n language: 'solidity',\n tags: [],\n version: '1.0.0',\n license: 'MIT'\n })\n const [errors, setErrors] = useState({})\n const [tagInput, setTagInput] = useState('')\n const [isUploading, setIsUploading] = useState(false)\n const [uploadProgress, setUploadProgress] = useState(0)\n const [uploadStatus, setUploadStatus] = useState<'idle' | 'uploading' | 'success' | 'error'>('idle')\n\n const validateStep = (step: number): boolean => {\n const newErrors: FormErrors = {}\n \n if (step === 1) {\n if (!formData.name.trim()) {\n newErrors.name = 'Name is required'\n } else if (formData.name.length < 3) {\n newErrors.name = 'Name must be at least 3 characters'\n }\n \n if (!formData.description.trim()) {\n newErrors.description = 'Description is required'\n } else if (formData.description.length < 10) {\n newErrors.description = 'Description must be at least 10 characters'\n }\n }\n \n if (step === 2) {\n if (!formData.code.trim()) {\n newErrors.code = 'Code is required'\n } else if (formData.code.length < 50) {\n newErrors.code = 'Code must be at least 50 characters'\n }\n }\n \n setErrors(newErrors)\n return Object.keys(newErrors).length === 0\n }\n\n const handleNext = () => {\n if (validateStep(currentStep)) {\n setCurrentStep(prev => Math.min(prev + 1, 3))\n }\n }\n\n const handleBack = () => {\n setCurrentStep(prev => Math.max(prev - 1, 1))\n setErrors({})\n }\n\n const handleAddTag = () => {\n if (tagInput.trim() && !formData.tags.includes(tagInput.trim())) {\n setFormData(prev => ({\n ...prev,\n tags: [...prev.tags, tagInput.trim()]\n }))\n setTagInput('')\n }\n }\n\n const handleRemoveTag = (tagToRemove: string) => {\n setFormData(prev => ({\n ...prev,\n tags: prev.tags.filter(tag => tag !== tagToRemove)\n }))\n }\n\n const handleSubmit = async () => {\n setIsUploading(true)\n setUploadStatus('uploading')\n \n // Simulate upload progress\n for (let i = 0; i <= 100; i += 10) {\n await new Promise(resolve => setTimeout(resolve, 300))\n setUploadProgress(i)\n }\n \n // Simulate success\n setTimeout(() => {\n setUploadStatus('success')\n setTimeout(() => {\n navigate('/profile')\n }, 1500)\n }, 500)\n }\n\n const getLanguageLabel = (value: string) => {\n return languages.find(l => l.value === value)?.label || value\n }\n\n if (!isConnected) {\n return (\n
\n
\n
\n \n
\n

Connect Your Wallet

\n

\n Please connect your wallet to upload code snippets. We support both Universal Profile and MetaMask.\n

\n
\n
\n )\n }\n\n if (uploadStatus === 'success') {\n return (\n
\n
\n
\n \n
\n

Upload Successful!

\n

\n Your code has been uploaded to IPFS and registered on the blockchain.\n

\n
\n
\n )\n }\n\n return (\n
\n
\n {/* Header */}\n
\n
\n
\n \n
\n

Post Your Code

\n
\n

\n Share your smart contract code with the community\n

\n
\n\n {/* Progress Steps */}\n
\n
\n {steps.map((step, index) => (\n \n
\n
step.id \n ? 'bg-emerald-500 text-white' \n : currentStep === step.id \n ? 'bg-blue-500 text-white' \n : 'bg-slate-800 text-slate-500 border border-slate-700'\n }`}\n >\n {currentStep > step.id ? (\n \n ) : (\n step.id\n )}\n
\n \n
\n {index < steps.length - 1 && (\n
step.id ? 'bg-emerald-500' : 'bg-slate-800'\n }`} />\n )}\n \n ))}\n
\n
\n\n {/* Form Content */}\n
\n {/* Step 1: Basic Info */}\n {currentStep === 1 && (\n
\n
\n \n setFormData(prev => ({ ...prev, name: e.target.value }))}\n className={`w-full px-4 py-3 rounded-xl bg-slate-800/50 border ${\n errors.name ? 'border-red-500/50' : 'border-slate-700/50'\n } text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500/50 transition-all`}\n placeholder=\"e.g., ERC20 Token Implementation\"\n />\n {errors.name && (\n

\n \n {errors.name}\n

\n )}\n
\n\n
\n \n setFormData(prev => ({ ...prev, description: e.target.value }))}\n rows={4}\n className={`w-full px-4 py-3 rounded-xl bg-slate-800/50 border ${\n errors.description ? 'border-red-500/50' : 'border-slate-700/50'\n } text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500/50 transition-all resize-none`}\n placeholder=\"Describe what your code does, its features, and use cases...\"\n />\n {errors.description && (\n

\n \n {errors.description}\n

\n )}\n
\n\n
\n
\n \n setFormData(prev => ({ ...prev, language: e.target.value }))}\n className=\"w-full px-4 py-3 rounded-xl bg-slate-800/50 border border-slate-700/50 text-white focus:outline-none focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500/50 transition-all appearance-none cursor-pointer\"\n >\n {languages.map(lang => (\n \n ))}\n \n
\n\n
\n \n setFormData(prev => ({ ...prev, version: e.target.value }))}\n className=\"w-full px-4 py-3 rounded-xl bg-slate-800/50 border border-slate-700/50 text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500/50 transition-all\"\n placeholder=\"1.0.0\"\n />\n
\n
\n\n
\n \n
\n setTagInput(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n handleAddTag()\n }\n }}\n className=\"flex-1 px-4 py-3 rounded-xl bg-slate-800/50 border border-slate-700/50 text-white placeholder-slate-500 focus:outline-none focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500/50 transition-all\"\n placeholder=\"Add tags (press Enter)\"\n />\n \n \n \n
\n {formData.tags.length > 0 && (\n
\n {formData.tags.map((tag) => (\n \n #{tag}\n handleRemoveTag(tag)}\n className=\"hover:text-white\"\n >\n \n \n \n ))}\n
\n )}\n
\n\n
\n \n setFormData(prev => ({ ...prev, license: e.target.value }))}\n className=\"w-full px-4 py-3 rounded-xl bg-slate-800/50 border border-slate-700/50 text-white focus:outline-none focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500/50 transition-all appearance-none cursor-pointer\"\n >\n {licenses.map(license => (\n \n ))}\n \n
\n
\n )}\n\n {/* Step 2: Code */}\n {currentStep === 2 && (\n
\n
\n \n
\n

Code Formatting

\n

\n Make sure your code is properly formatted and includes comments for better readability.\n

\n
\n
\n\n
\n \n
\n {/* Code Editor Header */}\n
\n \n \n {formData.name ? formData.name.toLowerCase().replace(/\\s+/g, '_') : 'untitled'}.{formData.language === 'solidity' ? 'sol' : formData.language}\n \n
\n setFormData(prev => ({ ...prev, code: e.target.value }))}\n rows={16}\n className=\"w-full px-4 py-4 bg-slate-950 text-slate-300 font-mono text-sm focus:outline-none resize-none\"\n placeholder=\"// Paste your code here...\"\n spellCheck={false}\n />\n
\n {errors.code && (\n

\n \n {errors.code}\n

\n )}\n

\n {formData.code.length} characters\n

\n
\n
\n )}\n\n {/* Step 3: Review */}\n {currentStep === 3 && (\n
\n
\n
\n \n

Ready to upload!

\n
\n

\n Review your code details below before submitting.\n

\n
\n\n
\n
\n

Name

\n

{formData.name}

\n
\n\n
\n

Description

\n

{formData.description}

\n
\n\n
\n
\n

Language

\n

{getLanguageLabel(formData.language)}

\n
\n
\n

Version

\n

{formData.version}

\n
\n
\n\n {formData.tags.length > 0 && (\n
\n

Tags

\n
\n {formData.tags.map((tag) => (\n \n #{tag}\n \n ))}\n
\n
\n )}\n\n
\n

Code Preview

\n
\n                    {formData.code.slice(0, 500)}{formData.code.length > 500 ? '...' : ''}\n                  
\n
\n
\n
\n )}\n\n {/* Navigation Buttons */}\n
\n \n Back\n \n \n {currentStep < 3 ? (\n \n Next\n \n \n ) : (\n \n {isUploading ? (\n <>\n \n Uploading... {uploadProgress}%\n \n ) : (\n <>\n \n Upload Code\n \n )}\n \n )}\n
\n\n {/* Progress Bar */}\n {isUploading && (\n
\n
\n
\n
\n

\n {uploadProgress < 50 ? 'Uploading to IPFS...' : 'Registering on blockchain...'}\n

\n
\n )}\n
\n
\n
\n )\n}\n\nexport default UploadPage\n","import { useState } from 'react'\nimport { Wallet, User } from 'lucide-react'\n\ninterface UPIndicatorProps {\n isUP: boolean\n upAddress: string | null\n profileName?: string\n showDetails?: boolean\n}\n\nexport function UPIndicator({ isUP, upAddress, profileName, showDetails = false }: UPIndicatorProps) {\n const [showTooltip, setShowTooltip] = useState(false)\n\n if (!upAddress) return null\n\n return (\n
\n
setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n {isUP ? (\n \n ) : (\n \n )}\n \n {isUP \n ? (profileName || 'Universal Profile') \n : 'Standard Wallet'\n }\n \n {isUP && (\n \n )}\n
\n \n {showTooltip && (\n
\n {isUP \n ? `Connected via LUKSO Universal Profile: ${upAddress.slice(0, 6)}...${upAddress.slice(-4)}`\n : `Connected via standard wallet: ${upAddress.slice(0, 6)}...${upAddress.slice(-4)}`\n }\n
\n
\n )}\n\n {/* Extended details panel */}\n {showDetails && isUP && (\n
\n
Address
\n
\n {upAddress}\n
\n
\n This transaction will be executed via your KeyManager\n
\n
\n )}\n
\n )\n}\n","import { useEffect, useState } from 'react'\nimport { useWeb3, useCodeRegistry, useReputationToken } from '../hooks/useLukso'\nimport { UPIndicator } from '../components/UPIndicator'\nimport { formatDistanceToNow, truncateAddress } from '../utils/format'\n\ninterface CodeSnippet {\n id: string\n creator: string\n ipfsHash: string\n name: string\n description: string\n tags: string[]\n language: string\n version: string\n createdAt: bigint\n updatedAt: bigint\n exists: boolean\n}\n\nexport function MyCodes() {\n const { address, isConnected, isUP } = useWeb3()\n const { getCodesByCreator, getCode } = useCodeRegistry()\n const { getReputation } = useReputationToken()\n \n const [codes, setCodes] = useState([])\n const [reputation, setReputation] = useState(BigInt(0))\n const [loading, setLoading] = useState(true)\n\n useEffect(() => {\n const loadData = async () => {\n if (!address) return\n\n setLoading(true)\n try {\n // Get user's codes\n const codeIds = await getCodesByCreator(address)\n const codeData = await Promise.all(\n codeIds.map(async (id) => {\n const code = await getCode(id)\n if (code && code.exists) {\n return {\n id,\n ...code\n } as CodeSnippet\n }\n return null\n })\n )\n setCodes(codeData.filter((c): c is CodeSnippet => c !== null))\n\n // Get reputation\n const rep = await getReputation(address)\n setReputation(rep)\n } catch (error) {\n console.error('Error loading data:', error)\n } finally {\n setLoading(false)\n }\n }\n\n loadData()\n }, [address, getCodesByCreator, getCode, getReputation])\n\n if (!isConnected) {\n return (\n
\n
\n

Please connect your wallet to view your codes

\n
\n
\n )\n }\n\n return (\n
\n
\n
\n
\n

My Codes

\n

\n {truncateAddress(address!)}\n

\n
\n
\n \n
\n Reputation: \n {reputation.toString()}\n
\n
\n
\n\n {loading ? (\n
\n
\n
\n ) : codes.length === 0 ? (\n
\n

You haven't uploaded any code yet

\n \n Upload your first code snippet →\n \n
\n ) : (\n
\n {codes.map((code) => (\n
\n
\n
\n \n {code.language.slice(0, 2).toUpperCase()}\n \n
\n \n v{code.version}\n \n
\n\n

{code.name}

\n

{code.description}

\n\n
\n {code.tags.slice(0, 3).map((tag, idx) => (\n \n {tag}\n \n ))}\n
\n\n
\n ID: {truncateAddress(code.id, 8, 8)}\n \n {formatDistanceToNow(Number(code.createdAt))}\n \n
\n\n
\n
IPFS Hash
\n
\n {code.ipfsHash}\n
\n
\n
\n ))}\n
\n )}\n
\n
\n )\n}\n","import { Routes, Route } from 'react-router-dom'\nimport Navbar from './components/Navbar'\nimport Home from './pages/Home'\nimport { Explore } from './pages/Explore'\nimport Upload from './pages/Upload'\nimport { MyCodes } from './pages/MyCodes'\nimport './index.css'\n\nfunction App() {\n return (\n
\n \n \n } />\n } />\n } />\n } />\n \n
\n )\n}\n\nexport default App\n","import React from 'react'\nimport ReactDOM from 'react-dom/client'\nimport { BrowserRouter } from 'react-router-dom'\nimport { Web3Provider } from './contexts/Web3Context'\nimport { ThemeProvider } from './contexts/ThemeContext'\nimport App from './App'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n \n \n \n \n \n \n \n \n ,\n)\n"],"file":"assets/index-DV7UGmLY.js"} \ No newline at end of file diff --git a/assets/index-Dgcojl8p.js b/assets/index-Dgcojl8p.js deleted file mode 100644 index a660cec9d..000000000 --- a/assets/index-Dgcojl8p.js +++ /dev/null @@ -1,2 +0,0 @@ -import{B as p,g as R,s as g,d as A,i as C,c as N,a as F,e as x,H as m,b as w,f as P,A as k,h as L,j as O,k as H,l as U,m as z,n as q,o as j,p as _,q as G,r as $,t as V,u as W,v as J,w as K,x as Z,y as Q,C as X,z as Y,D as aa,E as ra,F as ea,G as sa,I as oa,J as ta,K as na,L as ia,M as ca,N as da,O as ua,P as la,Q as Ea,R as ba,S as pa,T as ha,U as ma,V as ga,W as fa,X as ya,Y as Ta,Z as Sa,_ as va,$ as Ra,a0 as Aa,a1 as Ca,a2 as Fa,a3 as xa,a4 as wa,a5 as Ia,a6 as Da,a7 as Ma,a8 as Ba,a9 as Na,aa as Pa,ab as ka,ac as La,ad as Oa,ae as Ha,af as Ua,ag as za,ah as qa,ai as ja,aj as _a,ak as Ga,al as $a,am as Va,an as Wa,ao as Ja,ap as Ka,aq as Za,ar as Qa,as as Xa,at as Ya,au as ar,av as rr,aw as er,ax as sr,ay as or,az as tr,aA as nr,aB as ir,aC as cr,aD as dr,aE as ur,aF as lr,aG as Er,aH as br,aI as pr,aJ as hr,aK as mr,aL as gr,aM as fr,aN as yr,aO as Tr,aP as Sr,aQ as vr,aR as Rr,aS as Ar,aT as Cr,aU as Fr,aV as xr,aW as wr,aX as Ir,aY as Dr,aZ as Mr,a_ as Br,a$ as Nr,b0 as Pr,b1 as kr,b2 as Lr,b3 as Or,b4 as Hr,b5 as Ur,b6 as zr,b7 as qr,b8 as jr,b9 as _r,ba as Gr,bb as $r,bc as Vr,bd as Wr,be as Jr,bf as Kr,bg as Zr,bh as Qr,bi as Xr,bj as Yr,bk as ae,bl as re,bm as ee,bn as se,bo as oe,bp as te,bq as ne,br as ie,bs as ce,bt as de,bu as ue,bv as le,bw as Ee,bx as be,by as pe,bz as he,bA as me,bB as ge,bC as y,bD as E,bE as T,bF as fe,bG as ye,bH as Te,bI as Se,bJ as ve,bK as Re,bL as Ae,bM as Ce,bN as Fe,bO as xe,bP as we,bQ as Ie,bR as De,bS as Me,bT as Be,bU as Ne,bV as Pe,bW as ke,bX as Le,bY as Oe,bZ as He,b_ as Ue,b$ as ze,c0 as qe,c1 as je,c2 as _e,c3 as Ge,c4 as $e,c5 as Ve,c6 as We,c7 as Je,c8 as Ke,c9 as Ze,ca as S,cb as Qe,cc as Xe,cd as Ye,ce as as,cf as rs,cg as es,ch as ss,ci as os,cj as ts,ck as ns,cl as is,cm as v,cn as cs,co as ds,cp as us,cq as ls,cr as Es,cs as bs,ct as ps,cu as hs,cv as ms,cw as gs,cx as fs}from"./index-DV7UGmLY.js";class ys extends p{constructor({callbackSelector:o,cause:r,data:t,extraData:c,sender:d,urls:e}){var n;super(r.shortMessage||"An error occurred while fetching for an offchain result.",{cause:r,metaMessages:[...r.metaMessages||[],(n=r.metaMessages)!=null&&n.length?"":[],"Offchain Gateway Call:",e&&[" Gateway URL(s):",...e.map(u=>` ${R(u)}`)],` Sender: ${d}`,` Data: ${t}`,` Callback selector: ${o}`,` Extra data: ${c}`].flat(),name:"OffchainLookupError"})}}class Ts extends p{constructor({result:o,url:r}){super("Offchain gateway response is malformed. Response data must be a hex value.",{metaMessages:[`Gateway URL: ${R(r)}`,`Response: ${g(o)}`],name:"OffchainLookupResponseMalformedError"})}}class Ss extends p{constructor({sender:o,to:r}){super("Reverted sender address does not match target contract address (`to`).",{metaMessages:[`Contract address: ${r}`,`OffchainLookup sender address: ${o}`],name:"OffchainLookupSenderMismatchError"})}}const I="0x556f1830",f={name:"OffchainLookup",type:"error",inputs:[{name:"sender",type:"address"},{name:"urls",type:"string[]"},{name:"callData",type:"bytes"},{name:"callbackFunction",type:"bytes4"},{name:"extraData",type:"bytes"}]};async function D(i,{blockNumber:o,blockTag:r,data:t,to:c}){const{args:d}=A({data:t,abi:[f]}),[e,n,u,l,s]=d,{ccipRead:a}=i,M=a&&typeof(a==null?void 0:a.request)=="function"?a.request:b;try{if(!C(c,e))throw new Ss({sender:e,to:c});const h=await M({data:u,sender:e,urls:n}),{data:B}=await N(i,{blockNumber:o,blockTag:r,data:F([l,x([{type:"bytes"},{type:"bytes"}],[h,s])]),to:c});return B}catch(h){throw new ys({callbackSelector:l,cause:h,data:t,extraData:s,sender:e,urls:n})}}async function b({data:i,sender:o,urls:r}){var c;let t=new Error("An unknown error occurred.");for(let d=0;d ` ${getUrl(url)}`),\n ],\n ` Sender: ${sender}`,\n ` Data: ${data}`,\n ` Callback selector: ${callbackSelector}`,\n ` Extra data: ${extraData}`,\n ].flat(),\n name: 'OffchainLookupError',\n });\n }\n}\nexport class OffchainLookupResponseMalformedError extends BaseError {\n constructor({ result, url }) {\n super('Offchain gateway response is malformed. Response data must be a hex value.', {\n metaMessages: [\n `Gateway URL: ${getUrl(url)}`,\n `Response: ${stringify(result)}`,\n ],\n name: 'OffchainLookupResponseMalformedError',\n });\n }\n}\nexport class OffchainLookupSenderMismatchError extends BaseError {\n constructor({ sender, to }) {\n super('Reverted sender address does not match target contract address (`to`).', {\n metaMessages: [\n `Contract address: ${to}`,\n `OffchainLookup sender address: ${sender}`,\n ],\n name: 'OffchainLookupSenderMismatchError',\n });\n }\n}\n//# sourceMappingURL=ccip.js.map","import { call } from '../actions/public/call.js';\nimport { OffchainLookupError, OffchainLookupResponseMalformedError, OffchainLookupSenderMismatchError, } from '../errors/ccip.js';\nimport { HttpRequestError, } from '../errors/request.js';\nimport { decodeErrorResult } from './abi/decodeErrorResult.js';\nimport { encodeAbiParameters } from './abi/encodeAbiParameters.js';\nimport { isAddressEqual } from './address/isAddressEqual.js';\nimport { concat } from './data/concat.js';\nimport { isHex } from './data/isHex.js';\nimport { stringify } from './stringify.js';\nexport const offchainLookupSignature = '0x556f1830';\nexport const offchainLookupAbiItem = {\n name: 'OffchainLookup',\n type: 'error',\n inputs: [\n {\n name: 'sender',\n type: 'address',\n },\n {\n name: 'urls',\n type: 'string[]',\n },\n {\n name: 'callData',\n type: 'bytes',\n },\n {\n name: 'callbackFunction',\n type: 'bytes4',\n },\n {\n name: 'extraData',\n type: 'bytes',\n },\n ],\n};\nexport async function offchainLookup(client, { blockNumber, blockTag, data, to, }) {\n const { args } = decodeErrorResult({\n data,\n abi: [offchainLookupAbiItem],\n });\n const [sender, urls, callData, callbackSelector, extraData] = args;\n const { ccipRead } = client;\n const ccipRequest_ = ccipRead && typeof ccipRead?.request === 'function'\n ? ccipRead.request\n : ccipRequest;\n try {\n if (!isAddressEqual(to, sender))\n throw new OffchainLookupSenderMismatchError({ sender, to });\n const result = await ccipRequest_({ data: callData, sender, urls });\n const { data: data_ } = await call(client, {\n blockNumber,\n blockTag,\n data: concat([\n callbackSelector,\n encodeAbiParameters([{ type: 'bytes' }, { type: 'bytes' }], [result, extraData]),\n ]),\n to,\n });\n return data_;\n }\n catch (err) {\n throw new OffchainLookupError({\n callbackSelector,\n cause: err,\n data,\n extraData,\n sender,\n urls,\n });\n }\n}\nexport async function ccipRequest({ data, sender, urls, }) {\n let error = new Error('An unknown error occurred.');\n for (let i = 0; i < urls.length; i++) {\n const url = urls[i];\n const method = url.includes('{data}') ? 'GET' : 'POST';\n const body = method === 'POST' ? { data, sender } : undefined;\n const headers = method === 'POST' ? { 'Content-Type': 'application/json' } : {};\n try {\n const response = await fetch(url.replace('{sender}', sender).replace('{data}', data), {\n body: JSON.stringify(body),\n headers,\n method,\n });\n let result;\n if (response.headers.get('Content-Type')?.startsWith('application/json')) {\n result = (await response.json()).data;\n }\n else {\n result = (await response.text());\n }\n if (!response.ok) {\n error = new HttpRequestError({\n body,\n details: result?.error\n ? stringify(result.error)\n : response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n });\n continue;\n }\n if (!isHex(result)) {\n error = new OffchainLookupResponseMalformedError({\n result,\n url,\n });\n continue;\n }\n return result;\n }\n catch (err) {\n error = new HttpRequestError({\n body,\n details: err.message,\n url,\n });\n }\n }\n throw error;\n}\n//# sourceMappingURL=ccip.js.map"],"names":["OffchainLookupError","BaseError","callbackSelector","cause","data","extraData","sender","urls","_a","url","getUrl","OffchainLookupResponseMalformedError","result","stringify","OffchainLookupSenderMismatchError","to","offchainLookupSignature","offchainLookupAbiItem","offchainLookup","client","blockNumber","blockTag","args","decodeErrorResult","callData","ccipRead","ccipRequest_","ccipRequest","isAddressEqual","data_","call","concat","encodeAbiParameters","err","error","i","method","body","headers","response","HttpRequestError","isHex"],"mappings":"g2DAGO,MAAMA,WAA4BC,CAAU,CAC/C,YAAY,CAAE,iBAAAC,EAAkB,MAAAC,EAAO,KAAAC,EAAM,UAAAC,EAAW,OAAAC,EAAQ,KAAAC,GAAS,OACrE,MAAMJ,EAAM,cACR,2DAA4D,CAC5D,MAAAA,EACA,aAAc,CACV,GAAIA,EAAM,cAAgB,IAC1BK,EAAAL,EAAM,eAAN,MAAAK,EAAoB,OAAS,GAAK,CAAA,EAClC,yBACAD,GAAQ,CACJ,oBACA,GAAGA,EAAK,IAAKE,GAAQ,OAAOC,EAAOD,CAAG,CAAC,EAAE,CAC7D,EACgB,aAAaH,CAAM,GACnB,WAAWF,CAAI,GACf,wBAAwBF,CAAgB,GACxC,iBAAiBG,CAAS,EAC1C,EAAc,KAAI,EACN,KAAM,qBAClB,CAAS,CACL,CACJ,CACO,MAAMM,WAA6CV,CAAU,CAChE,YAAY,CAAE,OAAAW,EAAQ,IAAAH,GAAO,CACzB,MAAM,6EAA8E,CAChF,aAAc,CACV,gBAAgBC,EAAOD,CAAG,CAAC,GAC3B,aAAaI,EAAUD,CAAM,CAAC,EAC9C,EACY,KAAM,sCAClB,CAAS,CACL,CACJ,CACO,MAAME,WAA0Cb,CAAU,CAC7D,YAAY,CAAE,OAAAK,EAAQ,GAAAS,GAAM,CACxB,MAAM,yEAA0E,CAC5E,aAAc,CACV,qBAAqBA,CAAE,GACvB,kCAAkCT,CAAM,EACxD,EACY,KAAM,mCAClB,CAAS,CACL,CACJ,CCrCO,MAAMU,EAA0B,aAC1BC,EAAwB,CACjC,KAAM,iBACN,KAAM,QACN,OAAQ,CACJ,CACI,KAAM,SACN,KAAM,SAClB,EACQ,CACI,KAAM,OACN,KAAM,UAClB,EACQ,CACI,KAAM,WACN,KAAM,OAClB,EACQ,CACI,KAAM,mBACN,KAAM,QAClB,EACQ,CACI,KAAM,YACN,KAAM,OAClB,CACA,CACA,EACO,eAAeC,EAAeC,EAAQ,CAAE,YAAAC,EAAa,SAAAC,EAAU,KAAAjB,EAAM,GAAAW,GAAO,CAC/E,KAAM,CAAE,KAAAO,CAAI,EAAKC,EAAkB,CAC/B,KAAAnB,EACA,IAAK,CAACa,CAAqB,CACnC,CAAK,EACK,CAACX,EAAQC,EAAMiB,EAAUtB,EAAkBG,CAAS,EAAIiB,EACxD,CAAE,SAAAG,CAAQ,EAAKN,EACfO,EAAeD,GAAY,OAAOA,GAAA,YAAAA,EAAU,UAAY,WACxDA,EAAS,QACTE,EACN,GAAI,CACA,GAAI,CAACC,EAAeb,EAAIT,CAAM,EAC1B,MAAM,IAAIQ,GAAkC,CAAE,OAAAR,EAAQ,GAAAS,CAAE,CAAE,EAC9D,MAAMH,EAAS,MAAMc,EAAa,CAAE,KAAMF,EAAU,OAAAlB,EAAQ,KAAAC,EAAM,EAC5D,CAAE,KAAMsB,CAAK,EAAK,MAAMC,EAAKX,EAAQ,CACvC,YAAAC,EACA,SAAAC,EACA,KAAMU,EAAO,CACT7B,EACA8B,EAAoB,CAAC,CAAE,KAAM,SAAW,CAAE,KAAM,QAAS,EAAG,CAACpB,EAAQP,CAAS,CAAC,CAC/F,CAAa,EACD,GAAAU,CACZ,CAAS,EACD,OAAOc,CACX,OACOI,EAAK,CACR,MAAM,IAAIjC,GAAoB,CAC1B,iBAAAE,EACA,MAAO+B,EACP,KAAA7B,EACA,UAAAC,EACA,OAAAC,EACA,KAAAC,CACZ,CAAS,CACL,CACJ,CACO,eAAeoB,EAAY,CAAE,KAAAvB,EAAM,OAAAE,EAAQ,KAAAC,CAAI,EAAK,OACvD,IAAI2B,EAAQ,IAAI,MAAM,4BAA4B,EAClD,QAASC,EAAI,EAAGA,EAAI5B,EAAK,OAAQ4B,IAAK,CAClC,MAAM1B,EAAMF,EAAK4B,CAAC,EACZC,EAAS3B,EAAI,SAAS,QAAQ,EAAI,MAAQ,OAC1C4B,EAAOD,IAAW,OAAS,CAAE,KAAAhC,EAAM,OAAAE,CAAM,EAAK,OAC9CgC,EAAUF,IAAW,OAAS,CAAE,eAAgB,kBAAkB,EAAK,CAAA,EAC7E,GAAI,CACA,MAAMG,EAAW,MAAM,MAAM9B,EAAI,QAAQ,WAAYH,CAAM,EAAE,QAAQ,SAAUF,CAAI,EAAG,CAClF,KAAM,KAAK,UAAUiC,CAAI,EACzB,QAAAC,EACA,OAAAF,CAChB,CAAa,EACD,IAAIxB,EAOJ,IANIJ,EAAA+B,EAAS,QAAQ,IAAI,cAAc,IAAnC,MAAA/B,EAAsC,WAAW,oBACjDI,GAAU,MAAM2B,EAAS,KAAI,GAAI,KAGjC3B,EAAU,MAAM2B,EAAS,OAEzB,CAACA,EAAS,GAAI,CACdL,EAAQ,IAAIM,EAAiB,CACzB,KAAAH,EACA,QAASzB,GAAA,MAAAA,EAAQ,MACXC,EAAUD,EAAO,KAAK,EACtB2B,EAAS,WACf,QAASA,EAAS,QAClB,OAAQA,EAAS,OACjB,IAAA9B,CACpB,CAAiB,EACD,QACJ,CACA,GAAI,CAACgC,EAAM7B,CAAM,EAAG,CAChBsB,EAAQ,IAAIvB,GAAqC,CAC7C,OAAAC,EACA,IAAAH,CACpB,CAAiB,EACD,QACJ,CACA,OAAOG,CACX,OACOqB,EAAK,CACRC,EAAQ,IAAIM,EAAiB,CACzB,KAAAH,EACA,QAASJ,EAAI,QACb,IAAAxB,CAChB,CAAa,CACL,CACJ,CACA,MAAMyB,CACV","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/index.html b/index.html deleted file mode 100644 index 39dc291d8..000000000 --- a/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - Agent Code Hub | Decentralized Code Sharing on LUKSO - - - - - - - - - -
- - diff --git a/vercel.json b/vercel.json new file mode 100644 index 000000000..df66ad326 --- /dev/null +++ b/vercel.json @@ -0,0 +1,6 @@ +{ + "installCommand": "cd frontend && pnpm install", + "buildCommand": "cd frontend && pnpm run build", + "outputDirectory": "frontend/dist", + "framework": "vite" +} From 522e9c386de046009d58ac20fb90926ca72572cf Mon Sep 17 00:00:00 2001 From: leo-assistant-chef Date: Thu, 5 Mar 2026 22:24:02 +0000 Subject: [PATCH 2/2] fix(build): fix named import of default export Button, install missing reconnecting-websocket dep MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ControllerAuth.tsx used named import { Button } but Button.tsx uses default export — changed to default import - reconnecting-websocket was in package.json but not installed (missing from node_modules), causing Rollup build failure — installed properly --- frontend/package-lock.json | 99 +++++++++++++++++++++++---- frontend/src/pages/ControllerAuth.tsx | 2 +- 2 files changed, 87 insertions(+), 14 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 88907cae0..e0701f83b 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,25 +1,29 @@ { "name": "agent-code-hub-frontend", - "version": "0.1.0", + "version": "0.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "agent-code-hub-frontend", - "version": "0.1.0", + "version": "0.2.0", "dependencies": { + "@monaco-editor/react": "^4.6.0", "@rainbow-me/rainbowkit": "2.2.3", "@tanstack/react-query": "5.64.1", "@vercel/analytics": "^1.6.1", "ethereum-blockies-base64": "^1.0.2", "ethers": "^6.13.5", "lucide-react": "0.468.0", + "monaco-editor": "^0.47.0", "prism-react-renderer": "^2.4.1", "react": "18.3.1", "react-dom": "18.3.1", "react-router-dom": "7.1.1", + "reconnecting-websocket": "^4.4.0", "viem": "2.21.57", - "wagmi": "2.14.8" + "wagmi": "2.14.8", + "zustand": "^4.5.0" }, "devDependencies": { "@types/react": "18.3.18", @@ -1270,6 +1274,29 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/@monaco-editor/loader": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.7.0.tgz", + "integrity": "sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA==", + "license": "MIT", + "dependencies": { + "state-local": "^1.0.6" + } + }, + "node_modules/@monaco-editor/react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.7.0.tgz", + "integrity": "sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA==", + "license": "MIT", + "dependencies": { + "@monaco-editor/loader": "^1.5.0" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/@motionone/animation": { "version": "10.18.0", "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", @@ -2368,6 +2395,35 @@ } } }, + "node_modules/@wagmi/core/node_modules/zustand": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.0.tgz", + "integrity": "sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + }, "node_modules/@walletconnect/core": { "version": "2.17.0", "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.17.0.tgz", @@ -4943,6 +4999,12 @@ "integrity": "sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==", "license": "MIT" }, + "node_modules/monaco-editor": { + "version": "0.47.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.47.0.tgz", + "integrity": "sha512-VabVvHvQ9QmMwXu4du008ZDuyLnHs9j7ThVFsiJoXSOQk18+LF89N4ADzPbFenm0W4V2bGHnFBztIRQTgBfxzw==", + "license": "MIT" + }, "node_modules/motion": { "version": "10.16.2", "resolved": "https://registry.npmjs.org/motion/-/motion-10.16.2.tgz", @@ -5837,6 +5899,12 @@ "node": ">= 12.13.0" } }, + "node_modules/reconnecting-websocket": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==", + "license": "MIT" + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -6132,6 +6200,12 @@ "node": ">= 10.x" } }, + "node_modules/state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==", + "license": "MIT" + }, "node_modules/stream-shift": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", @@ -7054,18 +7128,20 @@ } }, "node_modules/zustand": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.0.tgz", - "integrity": "sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ==", + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.2.2" + }, "engines": { - "node": ">=12.20.0" + "node": ">=12.7.0" }, "peerDependencies": { - "@types/react": ">=18.0.0", + "@types/react": ">=16.8", "immer": ">=9.0.6", - "react": ">=18.0.0", - "use-sync-external-store": ">=1.2.0" + "react": ">=16.8" }, "peerDependenciesMeta": { "@types/react": { @@ -7076,9 +7152,6 @@ }, "react": { "optional": true - }, - "use-sync-external-store": { - "optional": true } } } diff --git a/frontend/src/pages/ControllerAuth.tsx b/frontend/src/pages/ControllerAuth.tsx index 882c06985..6e8843e9d 100644 --- a/frontend/src/pages/ControllerAuth.tsx +++ b/frontend/src/pages/ControllerAuth.tsx @@ -1,6 +1,6 @@ import { useState } from 'react'; import { useWeb3 } from '../contexts/Web3Context'; -import { Button } from '../components/Button'; +import Button from '../components/Button'; import { ArrowLeft, Key, ExternalLink, Shield, CheckCircle } from 'lucide-react'; interface ControllerAuthorizationProps {