@grackle-ai/web 0.88.0 → 0.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,503 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/KnowledgePage-UHkf3T0n.js","assets/dagview-CzJGOIoX.js","assets/grpc-CRztlRZY.js","assets/markdown-DH3wQq0i.js","assets/KnowledgePage-DMqJ4jlP.css"])))=>i.map(i=>d[i]);
2
+ import{r as cT,a as uT,b as y,j as l,d as d0,H as f0,P as p0,i as dT,B as fT,c as pT,C as mT,M as hT}from"./dagview-CzJGOIoX.js";import{c as gT,a as vT,G as yT,f as bT,M as _T,A as _b,D as xb,W as xT,O as ST,b as TT,C as zc,d as kT,e as Sb,w as wT,t as NT,p as ac,g as jT,R as or,S as m0}from"./grpc-CRztlRZY.js";import{v as CT,r as ET,t as ic,i as AT,f as DT,M as Pc,a as Vc}from"./markdown-DH3wQq0i.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))o(c);new MutationObserver(c=>{for(const u of c)if(u.type==="childList")for(const d of u.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&o(d)}).observe(document,{childList:!0,subtree:!0});function i(c){const u={};return c.integrity&&(u.integrity=c.integrity),c.referrerPolicy&&(u.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?u.credentials="include":c.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function o(c){if(c.ep)return;c.ep=!0;const u=i(c);fetch(c.href,u)}})();var uf={exports:{}},rr={},df={exports:{}},ff={};/**
3
+ * @license React
4
+ * scheduler.production.js
5
+ *
6
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
7
+ *
8
+ * This source code is licensed under the MIT license found in the
9
+ * LICENSE file in the root directory of this source tree.
10
+ */var h0;function RT(){return h0||(h0=1,(function(t){function s(O,q){var te=O.length;O.push(q);e:for(;0<te;){var re=te-1>>>1,ue=O[re];if(0<c(ue,q))O[re]=q,O[te]=ue,te=re;else break e}}function i(O){return O.length===0?null:O[0]}function o(O){if(O.length===0)return null;var q=O[0],te=O.pop();if(te!==q){O[0]=te;e:for(var re=0,ue=O.length,Fe=ue>>>1;re<Fe;){var Ne=2*(re+1)-1,ke=O[Ne],Me=Ne+1,le=O[Me];if(0>c(ke,te))Me<ue&&0>c(le,ke)?(O[re]=le,O[Me]=te,re=Me):(O[re]=ke,O[Ne]=te,re=Ne);else if(Me<ue&&0>c(le,te))O[re]=le,O[Me]=te,re=Me;else break e}}return q}function c(O,q){var te=O.sortIndex-q.sortIndex;return te!==0?te:O.id-q.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;t.unstable_now=function(){return u.now()}}else{var d=Date,m=d.now();t.unstable_now=function(){return d.now()-m}}var h=[],g=[],v=1,_=null,b=3,S=!1,T=!1,N=!1,j=!1,w=typeof setTimeout=="function"?setTimeout:null,C=typeof clearTimeout=="function"?clearTimeout:null,A=typeof setImmediate<"u"?setImmediate:null;function M(O){for(var q=i(g);q!==null;){if(q.callback===null)o(g);else if(q.startTime<=O)o(g),q.sortIndex=q.expirationTime,s(h,q);else break;q=i(g)}}function D(O){if(N=!1,M(O),!T)if(i(h)!==null)T=!0,E||(E=!0,ae());else{var q=i(g);q!==null&&X(D,q.startTime-O)}}var E=!1,$=-1,z=5,K=-1;function F(){return j?!0:!(t.unstable_now()-K<z)}function ee(){if(j=!1,E){var O=t.unstable_now();K=O;var q=!0;try{e:{T=!1,N&&(N=!1,C($),$=-1),S=!0;var te=b;try{t:{for(M(O),_=i(h);_!==null&&!(_.expirationTime>O&&F());){var re=_.callback;if(typeof re=="function"){_.callback=null,b=_.priorityLevel;var ue=re(_.expirationTime<=O);if(O=t.unstable_now(),typeof ue=="function"){_.callback=ue,M(O),q=!0;break t}_===i(h)&&o(h),M(O)}else o(h);_=i(h)}if(_!==null)q=!0;else{var Fe=i(g);Fe!==null&&X(D,Fe.startTime-O),q=!1}}break e}finally{_=null,b=te,S=!1}q=void 0}}finally{q?ae():E=!1}}}var ae;if(typeof A=="function")ae=function(){A(ee)};else if(typeof MessageChannel<"u"){var me=new MessageChannel,ie=me.port2;me.port1.onmessage=ee,ae=function(){ie.postMessage(null)}}else ae=function(){w(ee,0)};function X(O,q){$=w(function(){O(t.unstable_now())},q)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(O){O.callback=null},t.unstable_forceFrameRate=function(O){0>O||125<O?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):z=0<O?Math.floor(1e3/O):5},t.unstable_getCurrentPriorityLevel=function(){return b},t.unstable_next=function(O){switch(b){case 1:case 2:case 3:var q=3;break;default:q=b}var te=b;b=q;try{return O()}finally{b=te}},t.unstable_requestPaint=function(){j=!0},t.unstable_runWithPriority=function(O,q){switch(O){case 1:case 2:case 3:case 4:case 5:break;default:O=3}var te=b;b=O;try{return q()}finally{b=te}},t.unstable_scheduleCallback=function(O,q,te){var re=t.unstable_now();switch(typeof te=="object"&&te!==null?(te=te.delay,te=typeof te=="number"&&0<te?re+te:re):te=re,O){case 1:var ue=-1;break;case 2:ue=250;break;case 5:ue=1073741823;break;case 4:ue=1e4;break;default:ue=5e3}return ue=te+ue,O={id:v++,callback:q,priorityLevel:O,startTime:te,expirationTime:ue,sortIndex:-1},te>re?(O.sortIndex=te,s(g,O),i(h)===null&&O===i(g)&&(N?(C($),$=-1):N=!0,X(D,te-re))):(O.sortIndex=ue,s(h,O),T||S||(T=!0,E||(E=!0,ae()))),O},t.unstable_shouldYield=F,t.unstable_wrapCallback=function(O){var q=b;return function(){var te=b;b=q;try{return O.apply(this,arguments)}finally{b=te}}}})(ff)),ff}var g0;function MT(){return g0||(g0=1,df.exports=RT()),df.exports}/**
11
+ * @license React
12
+ * react-dom-client.production.js
13
+ *
14
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
15
+ *
16
+ * This source code is licensed under the MIT license found in the
17
+ * LICENSE file in the root directory of this source tree.
18
+ */var v0;function IT(){if(v0)return rr;v0=1;var t=MT(),s=cT(),i=uT();function o(e){var n="https://react.dev/errors/"+e;if(1<arguments.length){n+="?args[]="+encodeURIComponent(arguments[1]);for(var a=2;a<arguments.length;a++)n+="&args[]="+encodeURIComponent(arguments[a])}return"Minified React error #"+e+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function c(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function u(e){var n=e,a=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do n=e,(n.flags&4098)!==0&&(a=n.return),e=n.return;while(e)}return n.tag===3?a:null}function d(e){if(e.tag===13){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function m(e){if(e.tag===31){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function h(e){if(u(e)!==e)throw Error(o(188))}function g(e){var n=e.alternate;if(!n){if(n=u(e),n===null)throw Error(o(188));return n!==e?null:e}for(var a=e,r=n;;){var f=a.return;if(f===null)break;var p=f.alternate;if(p===null){if(r=f.return,r!==null){a=r;continue}break}if(f.child===p.child){for(p=f.child;p;){if(p===a)return h(f),e;if(p===r)return h(f),n;p=p.sibling}throw Error(o(188))}if(a.return!==r.return)a=f,r=p;else{for(var x=!1,k=f.child;k;){if(k===a){x=!0,a=f,r=p;break}if(k===r){x=!0,r=f,a=p;break}k=k.sibling}if(!x){for(k=p.child;k;){if(k===a){x=!0,a=p,r=f;break}if(k===r){x=!0,r=p,a=f;break}k=k.sibling}if(!x)throw Error(o(189))}}if(a.alternate!==r)throw Error(o(190))}if(a.tag!==3)throw Error(o(188));return a.stateNode.current===a?e:n}function v(e){var n=e.tag;if(n===5||n===26||n===27||n===6)return e;for(e=e.child;e!==null;){if(n=v(e),n!==null)return n;e=e.sibling}return null}var _=Object.assign,b=Symbol.for("react.element"),S=Symbol.for("react.transitional.element"),T=Symbol.for("react.portal"),N=Symbol.for("react.fragment"),j=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),C=Symbol.for("react.consumer"),A=Symbol.for("react.context"),M=Symbol.for("react.forward_ref"),D=Symbol.for("react.suspense"),E=Symbol.for("react.suspense_list"),$=Symbol.for("react.memo"),z=Symbol.for("react.lazy"),K=Symbol.for("react.activity"),F=Symbol.for("react.memo_cache_sentinel"),ee=Symbol.iterator;function ae(e){return e===null||typeof e!="object"?null:(e=ee&&e[ee]||e["@@iterator"],typeof e=="function"?e:null)}var me=Symbol.for("react.client.reference");function ie(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===me?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case N:return"Fragment";case w:return"Profiler";case j:return"StrictMode";case D:return"Suspense";case E:return"SuspenseList";case K:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case T:return"Portal";case A:return e.displayName||"Context";case C:return(e._context.displayName||"Context")+".Consumer";case M:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case $:return n=e.displayName||null,n!==null?n:ie(e.type)||"Memo";case z:n=e._payload,e=e._init;try{return ie(e(n))}catch{}}return null}var X=Array.isArray,O=s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,q=i.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,te={pending:!1,data:null,method:null,action:null},re=[],ue=-1;function Fe(e){return{current:e}}function Ne(e){0>ue||(e.current=re[ue],re[ue]=null,ue--)}function ke(e,n){ue++,re[ue]=e.current,e.current=n}var Me=Fe(null),le=Fe(null),ve=Fe(null),de=Fe(null);function Ie(e,n){switch(ke(ve,n),ke(le,e),ke(Me,null),n.nodeType){case 9:case 11:e=(e=n.documentElement)&&(e=e.namespaceURI)?Iv(e):0;break;default:if(e=n.tagName,n=n.namespaceURI)n=Iv(n),e=Ov(n,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Ne(Me),ke(Me,e)}function yt(){Ne(Me),Ne(le),Ne(ve)}function fn(e){e.memoizedState!==null&&ke(de,e);var n=Me.current,a=Ov(n,e.type);n!==a&&(ke(le,e),ke(Me,a))}function B(e){le.current===e&&(Ne(Me),Ne(le)),de.current===e&&(Ne(de),nr._currentValue=te)}var Re,Qe;function et(e){if(Re===void 0)try{throw Error()}catch(a){var n=a.stack.trim().match(/\n( *(at )?)/);Re=n&&n[1]||"",Qe=-1<a.stack.indexOf(`
19
+ at`)?" (<anonymous>)":-1<a.stack.indexOf("@")?"@unknown:0:0":""}return`
20
+ `+Re+e+Qe}var $e=!1;function es(e,n){if(!e||$e)return"";$e=!0;var a=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(n){var W=function(){throw Error()};if(Object.defineProperty(W.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(W,[])}catch(Z){var G=Z}Reflect.construct(e,[],W)}else{try{W.call()}catch(Z){G=Z}e.call(W.prototype)}}else{try{throw Error()}catch(Z){G=Z}(W=e())&&typeof W.catch=="function"&&W.catch(function(){})}}catch(Z){if(Z&&G&&typeof Z.stack=="string")return[Z.stack,G.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var f=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,"name");f&&f.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var p=r.DetermineComponentFrameRoot(),x=p[0],k=p[1];if(x&&k){var R=x.split(`
21
+ `),H=k.split(`
22
+ `);for(f=r=0;r<R.length&&!R[r].includes("DetermineComponentFrameRoot");)r++;for(;f<H.length&&!H[f].includes("DetermineComponentFrameRoot");)f++;if(r===R.length||f===H.length)for(r=R.length-1,f=H.length-1;1<=r&&0<=f&&R[r]!==H[f];)f--;for(;1<=r&&0<=f;r--,f--)if(R[r]!==H[f]){if(r!==1||f!==1)do if(r--,f--,0>f||R[r]!==H[f]){var Y=`
23
+ `+R[r].replace(" at new "," at ");return e.displayName&&Y.includes("<anonymous>")&&(Y=Y.replace("<anonymous>",e.displayName)),Y}while(1<=r&&0<=f);break}}}finally{$e=!1,Error.prepareStackTrace=a}return(a=e?e.displayName||e.name:"")?et(a):""}function Hs(e,n){switch(e.tag){case 26:case 27:case 5:return et(e.type);case 16:return et("Lazy");case 13:return e.child!==n&&n!==null?et("Suspense Fallback"):et("Suspense");case 19:return et("SuspenseList");case 0:case 15:return es(e.type,!1);case 11:return es(e.type.render,!1);case 1:return es(e.type,!0);case 31:return et("Activity");default:return""}}function kn(e){try{var n="",a=null;do n+=Hs(e,a),a=e,e=e.return;while(e);return n}catch(r){return`
24
+ Error generating stack: `+r.message+`
25
+ `+r.stack}}var Vn=Object.prototype.hasOwnProperty,ts=t.unstable_scheduleCallback,$s=t.unstable_cancelCallback,Hn=t.unstable_shouldYield,Ae=t.unstable_requestPaint,We=t.unstable_now,zr=t.unstable_getCurrentPriorityLevel,mo=t.unstable_ImmediatePriority,ho=t.unstable_UserBlockingPriority,Gs=t.unstable_NormalPriority,Pr=t.unstable_LowPriority,go=t.unstable_IdlePriority,Vr=t.log,Hr=t.unstable_setDisableYieldValue,qs=null,Yt=null;function $n(e){if(typeof Vr=="function"&&Hr(e),Yt&&typeof Yt.setStrictMode=="function")try{Yt.setStrictMode(qs,e)}catch{}}var Jt=Math.clz32?Math.clz32:qr,$r=Math.log,Gr=Math.LN2;function qr(e){return e>>>=0,e===0?32:31-($r(e)/Gr|0)|0}var ja=256,Ca=262144,Ea=4194304;function ps(e){var n=e&42;if(n!==0)return n;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function P(e,n,a){var r=e.pendingLanes;if(r===0)return 0;var f=0,p=e.suspendedLanes,x=e.pingedLanes;e=e.warmLanes;var k=r&134217727;return k!==0?(r=k&~p,r!==0?f=ps(r):(x&=k,x!==0?f=ps(x):a||(a=k&~e,a!==0&&(f=ps(a))))):(k=r&~p,k!==0?f=ps(k):x!==0?f=ps(x):a||(a=r&~e,a!==0&&(f=ps(a)))),f===0?0:n!==0&&n!==f&&(n&p)===0&&(p=f&-f,a=n&-n,p>=a||p===32&&(a&4194048)!==0)?n:f}function Q(e,n){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&n)===0}function oe(e,n){switch(e){case 1:case 2:case 4:case 8:case 64:return n+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ce(){var e=Ea;return Ea<<=1,(Ea&62914560)===0&&(Ea=4194304),e}function fe(e){for(var n=[],a=0;31>a;a++)n.push(e);return n}function Le(e,n){e.pendingLanes|=n,n!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ye(e,n,a,r,f,p){var x=e.pendingLanes;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=a,e.entangledLanes&=a,e.errorRecoveryDisabledLanes&=a,e.shellSuspendCounter=0;var k=e.entanglements,R=e.expirationTimes,H=e.hiddenUpdates;for(a=x&~a;0<a;){var Y=31-Jt(a),W=1<<Y;k[Y]=0,R[Y]=-1;var G=H[Y];if(G!==null)for(H[Y]=null,Y=0;Y<G.length;Y++){var Z=G[Y];Z!==null&&(Z.lane&=-536870913)}a&=~W}r!==0&&Ce(e,r,0),p!==0&&f===0&&e.tag!==0&&(e.suspendedLanes|=p&~(x&~n))}function Ce(e,n,a){e.pendingLanes|=n,e.suspendedLanes&=~n;var r=31-Jt(n);e.entangledLanes|=n,e.entanglements[r]=e.entanglements[r]|1073741824|a&261930}function Ge(e,n){var a=e.entangledLanes|=n;for(e=e.entanglements;a;){var r=31-Jt(a),f=1<<r;f&n|e[r]&n&&(e[r]|=n),a&=~f}}function lt(e,n){var a=n&-n;return a=(a&42)!==0?1:qe(a),(a&(e.suspendedLanes|n))!==0?0:a}function qe(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;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:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function Bt(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function Ht(){var e=q.p;return e!==0?e:(e=window.event,e===void 0?32:a0(e.type))}function jt(e,n){var a=q.p;try{return q.p=e,n()}finally{q.p=a}}var Qt=Math.random().toString(36).slice(2),dt="__reactFiber$"+Qt,zt="__reactProps$"+Qt,ui="__reactContainer$"+Qt,eu="__reactEvents$"+Qt,Xx="__reactListeners$"+Qt,Qx="__reactHandles$"+Qt,xm="__reactResources$"+Qt,vo="__reactMarker$"+Qt;function tu(e){delete e[dt],delete e[zt],delete e[eu],delete e[Xx],delete e[Qx]}function di(e){var n=e[dt];if(n)return n;for(var a=e.parentNode;a;){if(n=a[ui]||a[dt]){if(a=n.alternate,n.child!==null||a!==null&&a.child!==null)for(e=Hv(e);e!==null;){if(a=e[dt])return a;e=Hv(e)}return n}e=a,a=e.parentNode}return null}function fi(e){if(e=e[dt]||e[ui]){var n=e.tag;if(n===5||n===6||n===13||n===31||n===26||n===27||n===3)return e}return null}function yo(e){var n=e.tag;if(n===5||n===26||n===27||n===6)return e.stateNode;throw Error(o(33))}function pi(e){var n=e[xm];return n||(n=e[xm]={hoistableStyles:new Map,hoistableScripts:new Map}),n}function Pt(e){e[vo]=!0}var Sm=new Set,Tm={};function Aa(e,n){mi(e,n),mi(e+"Capture",n)}function mi(e,n){for(Tm[e]=n,e=0;e<n.length;e++)Sm.add(n[e])}var e1=RegExp("^[: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]*$"),km={},wm={};function t1(e){return Vn.call(wm,e)?!0:Vn.call(km,e)?!1:e1.test(e)?wm[e]=!0:(km[e]=!0,!1)}function Fr(e,n,a){if(t1(n))if(a===null)e.removeAttribute(n);else{switch(typeof a){case"undefined":case"function":case"symbol":e.removeAttribute(n);return;case"boolean":var r=n.toLowerCase().slice(0,5);if(r!=="data-"&&r!=="aria-"){e.removeAttribute(n);return}}e.setAttribute(n,""+a)}}function Zr(e,n,a){if(a===null)e.removeAttribute(n);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(n);return}e.setAttribute(n,""+a)}}function ms(e,n,a,r){if(r===null)e.removeAttribute(a);else{switch(typeof r){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(a);return}e.setAttributeNS(n,a,""+r)}}function wn(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Nm(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function n1(e,n,a){var r=Object.getOwnPropertyDescriptor(e.constructor.prototype,n);if(!e.hasOwnProperty(n)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var f=r.get,p=r.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return f.call(this)},set:function(x){a=""+x,p.call(this,x)}}),Object.defineProperty(e,n,{enumerable:r.enumerable}),{getValue:function(){return a},setValue:function(x){a=""+x},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function nu(e){if(!e._valueTracker){var n=Nm(e)?"checked":"value";e._valueTracker=n1(e,n,""+e[n])}}function jm(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var a=n.getValue(),r="";return e&&(r=Nm(e)?e.checked?"true":"false":e.value),e=r,e!==a?(n.setValue(e),!0):!1}function Kr(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}}var s1=/[\n"\\]/g;function Nn(e){return e.replace(s1,function(n){return"\\"+n.charCodeAt(0).toString(16)+" "})}function su(e,n,a,r,f,p,x,k){e.name="",x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"?e.type=x:e.removeAttribute("type"),n!=null?x==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+wn(n)):e.value!==""+wn(n)&&(e.value=""+wn(n)):x!=="submit"&&x!=="reset"||e.removeAttribute("value"),n!=null?au(e,x,wn(n)):a!=null?au(e,x,wn(a)):r!=null&&e.removeAttribute("value"),f==null&&p!=null&&(e.defaultChecked=!!p),f!=null&&(e.checked=f&&typeof f!="function"&&typeof f!="symbol"),k!=null&&typeof k!="function"&&typeof k!="symbol"&&typeof k!="boolean"?e.name=""+wn(k):e.removeAttribute("name")}function Cm(e,n,a,r,f,p,x,k){if(p!=null&&typeof p!="function"&&typeof p!="symbol"&&typeof p!="boolean"&&(e.type=p),n!=null||a!=null){if(!(p!=="submit"&&p!=="reset"||n!=null)){nu(e);return}a=a!=null?""+wn(a):"",n=n!=null?""+wn(n):a,k||n===e.value||(e.value=n),e.defaultValue=n}r=r??f,r=typeof r!="function"&&typeof r!="symbol"&&!!r,e.checked=k?e.checked:!!r,e.defaultChecked=!!r,x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"&&(e.name=x),nu(e)}function au(e,n,a){n==="number"&&Kr(e.ownerDocument)===e||e.defaultValue===""+a||(e.defaultValue=""+a)}function hi(e,n,a,r){if(e=e.options,n){n={};for(var f=0;f<a.length;f++)n["$"+a[f]]=!0;for(a=0;a<e.length;a++)f=n.hasOwnProperty("$"+e[a].value),e[a].selected!==f&&(e[a].selected=f),f&&r&&(e[a].defaultSelected=!0)}else{for(a=""+wn(a),n=null,f=0;f<e.length;f++){if(e[f].value===a){e[f].selected=!0,r&&(e[f].defaultSelected=!0);return}n!==null||e[f].disabled||(n=e[f])}n!==null&&(n.selected=!0)}}function Em(e,n,a){if(n!=null&&(n=""+wn(n),n!==e.value&&(e.value=n),a==null)){e.defaultValue!==n&&(e.defaultValue=n);return}e.defaultValue=a!=null?""+wn(a):""}function Am(e,n,a,r){if(n==null){if(r!=null){if(a!=null)throw Error(o(92));if(X(r)){if(1<r.length)throw Error(o(93));r=r[0]}a=r}a==null&&(a=""),n=a}a=wn(n),e.defaultValue=a,r=e.textContent,r===a&&r!==""&&r!==null&&(e.value=r),nu(e)}function gi(e,n){if(n){var a=e.firstChild;if(a&&a===e.lastChild&&a.nodeType===3){a.nodeValue=n;return}}e.textContent=n}var a1=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Dm(e,n,a){var r=n.indexOf("--")===0;a==null||typeof a=="boolean"||a===""?r?e.setProperty(n,""):n==="float"?e.cssFloat="":e[n]="":r?e.setProperty(n,a):typeof a!="number"||a===0||a1.has(n)?n==="float"?e.cssFloat=a:e[n]=(""+a).trim():e[n]=a+"px"}function Rm(e,n,a){if(n!=null&&typeof n!="object")throw Error(o(62));if(e=e.style,a!=null){for(var r in a)!a.hasOwnProperty(r)||n!=null&&n.hasOwnProperty(r)||(r.indexOf("--")===0?e.setProperty(r,""):r==="float"?e.cssFloat="":e[r]="");for(var f in n)r=n[f],n.hasOwnProperty(f)&&a[f]!==r&&Dm(e,f,r)}else for(var p in n)n.hasOwnProperty(p)&&Dm(e,p,n[p])}function iu(e){if(e.indexOf("-")===-1)return!1;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 i1=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),o1=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Yr(e){return o1.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function hs(){}var ou=null;function ru(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var vi=null,yi=null;function Mm(e){var n=fi(e);if(n&&(e=n.stateNode)){var a=e[zt]||null;e:switch(e=n.stateNode,n.type){case"input":if(su(e,a.value,a.defaultValue,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name),n=a.name,a.type==="radio"&&n!=null){for(a=e;a.parentNode;)a=a.parentNode;for(a=a.querySelectorAll('input[name="'+Nn(""+n)+'"][type="radio"]'),n=0;n<a.length;n++){var r=a[n];if(r!==e&&r.form===e.form){var f=r[zt]||null;if(!f)throw Error(o(90));su(r,f.value,f.defaultValue,f.defaultValue,f.checked,f.defaultChecked,f.type,f.name)}}for(n=0;n<a.length;n++)r=a[n],r.form===e.form&&jm(r)}break e;case"textarea":Em(e,a.value,a.defaultValue);break e;case"select":n=a.value,n!=null&&hi(e,!!a.multiple,n,!1)}}}var lu=!1;function Im(e,n,a){if(lu)return e(n,a);lu=!0;try{var r=e(n);return r}finally{if(lu=!1,(vi!==null||yi!==null)&&(Bl(),vi&&(n=vi,e=yi,yi=vi=null,Mm(n),e)))for(n=0;n<e.length;n++)Mm(e[n])}}function bo(e,n){var a=e.stateNode;if(a===null)return null;var r=a[zt]||null;if(r===null)return null;a=r[n];e:switch(n){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(e=e.type,r=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!r;break e;default:e=!1}if(e)return null;if(a&&typeof a!="function")throw Error(o(231,n,typeof a));return a}var gs=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),cu=!1;if(gs)try{var _o={};Object.defineProperty(_o,"passive",{get:function(){cu=!0}}),window.addEventListener("test",_o,_o),window.removeEventListener("test",_o,_o)}catch{cu=!1}var Fs=null,uu=null,Jr=null;function Om(){if(Jr)return Jr;var e,n=uu,a=n.length,r,f="value"in Fs?Fs.value:Fs.textContent,p=f.length;for(e=0;e<a&&n[e]===f[e];e++);var x=a-e;for(r=1;r<=x&&n[a-r]===f[p-r];r++);return Jr=f.slice(e,1<r?1-r:void 0)}function Wr(e){var n=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&n===13&&(e=13)):e=n,e===10&&(e=13),32<=e||e===13?e:0}function Xr(){return!0}function Bm(){return!1}function an(e){function n(a,r,f,p,x){this._reactName=a,this._targetInst=f,this.type=r,this.nativeEvent=p,this.target=x,this.currentTarget=null;for(var k in e)e.hasOwnProperty(k)&&(a=e[k],this[k]=a?a(p):p[k]);return this.isDefaultPrevented=(p.defaultPrevented!=null?p.defaultPrevented:p.returnValue===!1)?Xr:Bm,this.isPropagationStopped=Bm,this}return _(n.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():typeof a.returnValue!="unknown"&&(a.returnValue=!1),this.isDefaultPrevented=Xr)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():typeof a.cancelBubble!="unknown"&&(a.cancelBubble=!0),this.isPropagationStopped=Xr)},persist:function(){},isPersistent:Xr}),n}var Da={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Qr=an(Da),xo=_({},Da,{view:0,detail:0}),r1=an(xo),du,fu,So,el=_({},xo,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:mu,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==So&&(So&&e.type==="mousemove"?(du=e.screenX-So.screenX,fu=e.screenY-So.screenY):fu=du=0,So=e),du)},movementY:function(e){return"movementY"in e?e.movementY:fu}}),Lm=an(el),l1=_({},el,{dataTransfer:0}),c1=an(l1),u1=_({},xo,{relatedTarget:0}),pu=an(u1),d1=_({},Da,{animationName:0,elapsedTime:0,pseudoElement:0}),f1=an(d1),p1=_({},Da,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),m1=an(p1),h1=_({},Da,{data:0}),Um=an(h1),g1={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},v1={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},y1={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function b1(e){var n=this.nativeEvent;return n.getModifierState?n.getModifierState(e):(e=y1[e])?!!n[e]:!1}function mu(){return b1}var _1=_({},xo,{key:function(e){if(e.key){var n=g1[e.key]||e.key;if(n!=="Unidentified")return n}return e.type==="keypress"?(e=Wr(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?v1[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:mu,charCode:function(e){return e.type==="keypress"?Wr(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Wr(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),x1=an(_1),S1=_({},el,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),zm=an(S1),T1=_({},xo,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:mu}),k1=an(T1),w1=_({},Da,{propertyName:0,elapsedTime:0,pseudoElement:0}),N1=an(w1),j1=_({},el,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),C1=an(j1),E1=_({},Da,{newState:0,oldState:0}),A1=an(E1),D1=[9,13,27,32],hu=gs&&"CompositionEvent"in window,To=null;gs&&"documentMode"in document&&(To=document.documentMode);var R1=gs&&"TextEvent"in window&&!To,Pm=gs&&(!hu||To&&8<To&&11>=To),Vm=" ",Hm=!1;function $m(e,n){switch(e){case"keyup":return D1.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Gm(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var bi=!1;function M1(e,n){switch(e){case"compositionend":return Gm(n);case"keypress":return n.which!==32?null:(Hm=!0,Vm);case"textInput":return e=n.data,e===Vm&&Hm?null:e;default:return null}}function I1(e,n){if(bi)return e==="compositionend"||!hu&&$m(e,n)?(e=Om(),Jr=uu=Fs=null,bi=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1<n.char.length)return n.char;if(n.which)return String.fromCharCode(n.which)}return null;case"compositionend":return Pm&&n.locale!=="ko"?null:n.data;default:return null}}var O1={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function qm(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n==="input"?!!O1[e.type]:n==="textarea"}function Fm(e,n,a,r){vi?yi?yi.push(r):yi=[r]:vi=r,n=$l(n,"onChange"),0<n.length&&(a=new Qr("onChange","change",null,a,r),e.push({event:a,listeners:n}))}var ko=null,wo=null;function B1(e){Cv(e,0)}function tl(e){var n=yo(e);if(jm(n))return e}function Zm(e,n){if(e==="change")return n}var Km=!1;if(gs){var gu;if(gs){var vu="oninput"in document;if(!vu){var Ym=document.createElement("div");Ym.setAttribute("oninput","return;"),vu=typeof Ym.oninput=="function"}gu=vu}else gu=!1;Km=gu&&(!document.documentMode||9<document.documentMode)}function Jm(){ko&&(ko.detachEvent("onpropertychange",Wm),wo=ko=null)}function Wm(e){if(e.propertyName==="value"&&tl(wo)){var n=[];Fm(n,wo,e,ru(e)),Im(B1,n)}}function L1(e,n,a){e==="focusin"?(Jm(),ko=n,wo=a,ko.attachEvent("onpropertychange",Wm)):e==="focusout"&&Jm()}function U1(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return tl(wo)}function z1(e,n){if(e==="click")return tl(n)}function P1(e,n){if(e==="input"||e==="change")return tl(n)}function V1(e,n){return e===n&&(e!==0||1/e===1/n)||e!==e&&n!==n}var pn=typeof Object.is=="function"?Object.is:V1;function No(e,n){if(pn(e,n))return!0;if(typeof e!="object"||e===null||typeof n!="object"||n===null)return!1;var a=Object.keys(e),r=Object.keys(n);if(a.length!==r.length)return!1;for(r=0;r<a.length;r++){var f=a[r];if(!Vn.call(n,f)||!pn(e[f],n[f]))return!1}return!0}function Xm(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Qm(e,n){var a=Xm(e);e=0;for(var r;a;){if(a.nodeType===3){if(r=e+a.textContent.length,e<=n&&r>=n)return{node:a,offset:n-e};e=r}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Xm(a)}}function eh(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?eh(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function th(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var n=Kr(e.document);n instanceof e.HTMLIFrameElement;){try{var a=typeof n.contentWindow.location.href=="string"}catch{a=!1}if(a)e=n.contentWindow;else break;n=Kr(e.document)}return n}function yu(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}var H1=gs&&"documentMode"in document&&11>=document.documentMode,_i=null,bu=null,jo=null,_u=!1;function nh(e,n,a){var r=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;_u||_i==null||_i!==Kr(r)||(r=_i,"selectionStart"in r&&yu(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),jo&&No(jo,r)||(jo=r,r=$l(bu,"onSelect"),0<r.length&&(n=new Qr("onSelect","select",null,n,a),e.push({event:n,listeners:r}),n.target=_i)))}function Ra(e,n){var a={};return a[e.toLowerCase()]=n.toLowerCase(),a["Webkit"+e]="webkit"+n,a["Moz"+e]="moz"+n,a}var xi={animationend:Ra("Animation","AnimationEnd"),animationiteration:Ra("Animation","AnimationIteration"),animationstart:Ra("Animation","AnimationStart"),transitionrun:Ra("Transition","TransitionRun"),transitionstart:Ra("Transition","TransitionStart"),transitioncancel:Ra("Transition","TransitionCancel"),transitionend:Ra("Transition","TransitionEnd")},xu={},sh={};gs&&(sh=document.createElement("div").style,"AnimationEvent"in window||(delete xi.animationend.animation,delete xi.animationiteration.animation,delete xi.animationstart.animation),"TransitionEvent"in window||delete xi.transitionend.transition);function Ma(e){if(xu[e])return xu[e];if(!xi[e])return e;var n=xi[e],a;for(a in n)if(n.hasOwnProperty(a)&&a in sh)return xu[e]=n[a];return e}var ah=Ma("animationend"),ih=Ma("animationiteration"),oh=Ma("animationstart"),$1=Ma("transitionrun"),G1=Ma("transitionstart"),q1=Ma("transitioncancel"),rh=Ma("transitionend"),lh=new Map,Su="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Su.push("scrollEnd");function Gn(e,n){lh.set(e,n),Aa(n,[e])}var nl=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var n=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(n))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},jn=[],Si=0,Tu=0;function sl(){for(var e=Si,n=Tu=Si=0;n<e;){var a=jn[n];jn[n++]=null;var r=jn[n];jn[n++]=null;var f=jn[n];jn[n++]=null;var p=jn[n];if(jn[n++]=null,r!==null&&f!==null){var x=r.pending;x===null?f.next=f:(f.next=x.next,x.next=f),r.pending=f}p!==0&&ch(a,f,p)}}function al(e,n,a,r){jn[Si++]=e,jn[Si++]=n,jn[Si++]=a,jn[Si++]=r,Tu|=r,e.lanes|=r,e=e.alternate,e!==null&&(e.lanes|=r)}function ku(e,n,a,r){return al(e,n,a,r),il(e)}function Ia(e,n){return al(e,null,null,n),il(e)}function ch(e,n,a){e.lanes|=a;var r=e.alternate;r!==null&&(r.lanes|=a);for(var f=!1,p=e.return;p!==null;)p.childLanes|=a,r=p.alternate,r!==null&&(r.childLanes|=a),p.tag===22&&(e=p.stateNode,e===null||e._visibility&1||(f=!0)),e=p,p=p.return;return e.tag===3?(p=e.stateNode,f&&n!==null&&(f=31-Jt(a),e=p.hiddenUpdates,r=e[f],r===null?e[f]=[n]:r.push(n),n.lane=a|536870912),p):null}function il(e){if(50<Yo)throw Yo=0,Md=null,Error(o(185));for(var n=e.return;n!==null;)e=n,n=e.return;return e.tag===3?e.stateNode:null}var Ti={};function F1(e,n,a,r){this.tag=e,this.key=a,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function mn(e,n,a,r){return new F1(e,n,a,r)}function wu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function vs(e,n){var a=e.alternate;return a===null?(a=mn(e.tag,n,e.key,e.mode),a.elementType=e.elementType,a.type=e.type,a.stateNode=e.stateNode,a.alternate=e,e.alternate=a):(a.pendingProps=n,a.type=e.type,a.flags=0,a.subtreeFlags=0,a.deletions=null),a.flags=e.flags&65011712,a.childLanes=e.childLanes,a.lanes=e.lanes,a.child=e.child,a.memoizedProps=e.memoizedProps,a.memoizedState=e.memoizedState,a.updateQueue=e.updateQueue,n=e.dependencies,a.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},a.sibling=e.sibling,a.index=e.index,a.ref=e.ref,a.refCleanup=e.refCleanup,a}function uh(e,n){e.flags&=65011714;var a=e.alternate;return a===null?(e.childLanes=0,e.lanes=n,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=a.childLanes,e.lanes=a.lanes,e.child=a.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=a.memoizedProps,e.memoizedState=a.memoizedState,e.updateQueue=a.updateQueue,e.type=a.type,n=a.dependencies,e.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext}),e}function ol(e,n,a,r,f,p){var x=0;if(r=e,typeof e=="function")wu(e)&&(x=1);else if(typeof e=="string")x=WS(e,a,Me.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case K:return e=mn(31,a,n,f),e.elementType=K,e.lanes=p,e;case N:return Oa(a.children,f,p,n);case j:x=8,f|=24;break;case w:return e=mn(12,a,n,f|2),e.elementType=w,e.lanes=p,e;case D:return e=mn(13,a,n,f),e.elementType=D,e.lanes=p,e;case E:return e=mn(19,a,n,f),e.elementType=E,e.lanes=p,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case A:x=10;break e;case C:x=9;break e;case M:x=11;break e;case $:x=14;break e;case z:x=16,r=null;break e}x=29,a=Error(o(130,e===null?"null":typeof e,"")),r=null}return n=mn(x,a,n,f),n.elementType=e,n.type=r,n.lanes=p,n}function Oa(e,n,a,r){return e=mn(7,e,r,n),e.lanes=a,e}function Nu(e,n,a){return e=mn(6,e,null,n),e.lanes=a,e}function dh(e){var n=mn(18,null,null,0);return n.stateNode=e,n}function ju(e,n,a){return n=mn(4,e.children!==null?e.children:[],e.key,n),n.lanes=a,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}var fh=new WeakMap;function Cn(e,n){if(typeof e=="object"&&e!==null){var a=fh.get(e);return a!==void 0?a:(n={value:e,source:n,stack:kn(n)},fh.set(e,n),n)}return{value:e,source:n,stack:kn(n)}}var ki=[],wi=0,rl=null,Co=0,En=[],An=0,Zs=null,ns=1,ss="";function ys(e,n){ki[wi++]=Co,ki[wi++]=rl,rl=e,Co=n}function ph(e,n,a){En[An++]=ns,En[An++]=ss,En[An++]=Zs,Zs=e;var r=ns;e=ss;var f=32-Jt(r)-1;r&=~(1<<f),a+=1;var p=32-Jt(n)+f;if(30<p){var x=f-f%5;p=(r&(1<<x)-1).toString(32),r>>=x,f-=x,ns=1<<32-Jt(n)+f|a<<f|r,ss=p+e}else ns=1<<p|a<<f|r,ss=e}function Cu(e){e.return!==null&&(ys(e,1),ph(e,1,0))}function Eu(e){for(;e===rl;)rl=ki[--wi],ki[wi]=null,Co=ki[--wi],ki[wi]=null;for(;e===Zs;)Zs=En[--An],En[An]=null,ss=En[--An],En[An]=null,ns=En[--An],En[An]=null}function mh(e,n){En[An++]=ns,En[An++]=ss,En[An++]=Zs,ns=n.id,ss=n.overflow,Zs=e}var $t=null,ft=null,Pe=!1,Ks=null,Dn=!1,Au=Error(o(519));function Ys(e){var n=Error(o(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw Eo(Cn(n,e)),Au}function hh(e){var n=e.stateNode,a=e.type,r=e.memoizedProps;switch(n[dt]=e,n[zt]=r,a){case"dialog":Be("cancel",n),Be("close",n);break;case"iframe":case"object":case"embed":Be("load",n);break;case"video":case"audio":for(a=0;a<Wo.length;a++)Be(Wo[a],n);break;case"source":Be("error",n);break;case"img":case"image":case"link":Be("error",n),Be("load",n);break;case"details":Be("toggle",n);break;case"input":Be("invalid",n),Cm(n,r.value,r.defaultValue,r.checked,r.defaultChecked,r.type,r.name,!0);break;case"select":Be("invalid",n);break;case"textarea":Be("invalid",n),Am(n,r.value,r.defaultValue,r.children)}a=r.children,typeof a!="string"&&typeof a!="number"&&typeof a!="bigint"||n.textContent===""+a||r.suppressHydrationWarning===!0||Rv(n.textContent,a)?(r.popover!=null&&(Be("beforetoggle",n),Be("toggle",n)),r.onScroll!=null&&Be("scroll",n),r.onScrollEnd!=null&&Be("scrollend",n),r.onClick!=null&&(n.onclick=hs),n=!0):n=!1,n||Ys(e,!0)}function gh(e){for($t=e.return;$t;)switch($t.tag){case 5:case 31:case 13:Dn=!1;return;case 27:case 3:Dn=!0;return;default:$t=$t.return}}function Ni(e){if(e!==$t)return!1;if(!Pe)return gh(e),Pe=!0,!1;var n=e.tag,a;if((a=n!==3&&n!==27)&&((a=n===5)&&(a=e.type,a=!(a!=="form"&&a!=="button")||Kd(e.type,e.memoizedProps)),a=!a),a&&ft&&Ys(e),gh(e),n===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(317));ft=Vv(e)}else if(n===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(317));ft=Vv(e)}else n===27?(n=ft,ca(e.type)?(e=Qd,Qd=null,ft=e):ft=n):ft=$t?Mn(e.stateNode.nextSibling):null;return!0}function Ba(){ft=$t=null,Pe=!1}function Du(){var e=Ks;return e!==null&&(cn===null?cn=e:cn.push.apply(cn,e),Ks=null),e}function Eo(e){Ks===null?Ks=[e]:Ks.push(e)}var Ru=Fe(null),La=null,bs=null;function Js(e,n,a){ke(Ru,n._currentValue),n._currentValue=a}function _s(e){e._currentValue=Ru.current,Ne(Ru)}function Mu(e,n,a){for(;e!==null;){var r=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,r!==null&&(r.childLanes|=n)):r!==null&&(r.childLanes&n)!==n&&(r.childLanes|=n),e===a)break;e=e.return}}function Iu(e,n,a,r){var f=e.child;for(f!==null&&(f.return=e);f!==null;){var p=f.dependencies;if(p!==null){var x=f.child;p=p.firstContext;e:for(;p!==null;){var k=p;p=f;for(var R=0;R<n.length;R++)if(k.context===n[R]){p.lanes|=a,k=p.alternate,k!==null&&(k.lanes|=a),Mu(p.return,a,e),r||(x=null);break e}p=k.next}}else if(f.tag===18){if(x=f.return,x===null)throw Error(o(341));x.lanes|=a,p=x.alternate,p!==null&&(p.lanes|=a),Mu(x,a,e),x=null}else x=f.child;if(x!==null)x.return=f;else for(x=f;x!==null;){if(x===e){x=null;break}if(f=x.sibling,f!==null){f.return=x.return,x=f;break}x=x.return}f=x}}function ji(e,n,a,r){e=null;for(var f=n,p=!1;f!==null;){if(!p){if((f.flags&524288)!==0)p=!0;else if((f.flags&262144)!==0)break}if(f.tag===10){var x=f.alternate;if(x===null)throw Error(o(387));if(x=x.memoizedProps,x!==null){var k=f.type;pn(f.pendingProps.value,x.value)||(e!==null?e.push(k):e=[k])}}else if(f===de.current){if(x=f.alternate,x===null)throw Error(o(387));x.memoizedState.memoizedState!==f.memoizedState.memoizedState&&(e!==null?e.push(nr):e=[nr])}f=f.return}e!==null&&Iu(n,e,a,r),n.flags|=262144}function ll(e){for(e=e.firstContext;e!==null;){if(!pn(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Ua(e){La=e,bs=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function Gt(e){return vh(La,e)}function cl(e,n){return La===null&&Ua(e),vh(e,n)}function vh(e,n){var a=n._currentValue;if(n={context:n,memoizedValue:a,next:null},bs===null){if(e===null)throw Error(o(308));bs=n,e.dependencies={lanes:0,firstContext:n},e.flags|=524288}else bs=bs.next=n;return a}var Z1=typeof AbortController<"u"?AbortController:function(){var e=[],n=this.signal={aborted:!1,addEventListener:function(a,r){e.push(r)}};this.abort=function(){n.aborted=!0,e.forEach(function(a){return a()})}},K1=t.unstable_scheduleCallback,Y1=t.unstable_NormalPriority,Rt={$$typeof:A,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Ou(){return{controller:new Z1,data:new Map,refCount:0}}function Ao(e){e.refCount--,e.refCount===0&&K1(Y1,function(){e.controller.abort()})}var Do=null,Bu=0,Ci=0,Ei=null;function J1(e,n){if(Do===null){var a=Do=[];Bu=0,Ci=zd(),Ei={status:"pending",value:void 0,then:function(r){a.push(r)}}}return Bu++,n.then(yh,yh),n}function yh(){if(--Bu===0&&Do!==null){Ei!==null&&(Ei.status="fulfilled");var e=Do;Do=null,Ci=0,Ei=null;for(var n=0;n<e.length;n++)(0,e[n])()}}function W1(e,n){var a=[],r={status:"pending",value:null,reason:null,then:function(f){a.push(f)}};return e.then(function(){r.status="fulfilled",r.value=n;for(var f=0;f<a.length;f++)(0,a[f])(n)},function(f){for(r.status="rejected",r.reason=f,f=0;f<a.length;f++)(0,a[f])(void 0)}),r}var bh=O.S;O.S=function(e,n){nv=We(),typeof n=="object"&&n!==null&&typeof n.then=="function"&&J1(e,n),bh!==null&&bh(e,n)};var za=Fe(null);function Lu(){var e=za.current;return e!==null?e:ct.pooledCache}function ul(e,n){n===null?ke(za,za.current):ke(za,n.pool)}function _h(){var e=Lu();return e===null?null:{parent:Rt._currentValue,pool:e}}var Ai=Error(o(460)),Uu=Error(o(474)),dl=Error(o(542)),fl={then:function(){}};function xh(e){return e=e.status,e==="fulfilled"||e==="rejected"}function Sh(e,n,a){switch(a=e[a],a===void 0?e.push(n):a!==n&&(n.then(hs,hs),n=a),n.status){case"fulfilled":return n.value;case"rejected":throw e=n.reason,kh(e),e;default:if(typeof n.status=="string")n.then(hs,hs);else{if(e=ct,e!==null&&100<e.shellSuspendCounter)throw Error(o(482));e=n,e.status="pending",e.then(function(r){if(n.status==="pending"){var f=n;f.status="fulfilled",f.value=r}},function(r){if(n.status==="pending"){var f=n;f.status="rejected",f.reason=r}})}switch(n.status){case"fulfilled":return n.value;case"rejected":throw e=n.reason,kh(e),e}throw Va=n,Ai}}function Pa(e){try{var n=e._init;return n(e._payload)}catch(a){throw a!==null&&typeof a=="object"&&typeof a.then=="function"?(Va=a,Ai):a}}var Va=null;function Th(){if(Va===null)throw Error(o(459));var e=Va;return Va=null,e}function kh(e){if(e===Ai||e===dl)throw Error(o(483))}var Di=null,Ro=0;function pl(e){var n=Ro;return Ro+=1,Di===null&&(Di=[]),Sh(Di,e,n)}function Mo(e,n){n=n.props.ref,e.ref=n!==void 0?n:null}function ml(e,n){throw n.$$typeof===b?Error(o(525)):(e=Object.prototype.toString.call(n),Error(o(31,e==="[object Object]"?"object with keys {"+Object.keys(n).join(", ")+"}":e)))}function wh(e){function n(L,I){if(e){var V=L.deletions;V===null?(L.deletions=[I],L.flags|=16):V.push(I)}}function a(L,I){if(!e)return null;for(;I!==null;)n(L,I),I=I.sibling;return null}function r(L){for(var I=new Map;L!==null;)L.key!==null?I.set(L.key,L):I.set(L.index,L),L=L.sibling;return I}function f(L,I){return L=vs(L,I),L.index=0,L.sibling=null,L}function p(L,I,V){return L.index=V,e?(V=L.alternate,V!==null?(V=V.index,V<I?(L.flags|=67108866,I):V):(L.flags|=67108866,I)):(L.flags|=1048576,I)}function x(L){return e&&L.alternate===null&&(L.flags|=67108866),L}function k(L,I,V,J){return I===null||I.tag!==6?(I=Nu(V,L.mode,J),I.return=L,I):(I=f(I,V),I.return=L,I)}function R(L,I,V,J){var be=V.type;return be===N?Y(L,I,V.props.children,J,V.key):I!==null&&(I.elementType===be||typeof be=="object"&&be!==null&&be.$$typeof===z&&Pa(be)===I.type)?(I=f(I,V.props),Mo(I,V),I.return=L,I):(I=ol(V.type,V.key,V.props,null,L.mode,J),Mo(I,V),I.return=L,I)}function H(L,I,V,J){return I===null||I.tag!==4||I.stateNode.containerInfo!==V.containerInfo||I.stateNode.implementation!==V.implementation?(I=ju(V,L.mode,J),I.return=L,I):(I=f(I,V.children||[]),I.return=L,I)}function Y(L,I,V,J,be){return I===null||I.tag!==7?(I=Oa(V,L.mode,J,be),I.return=L,I):(I=f(I,V),I.return=L,I)}function W(L,I,V){if(typeof I=="string"&&I!==""||typeof I=="number"||typeof I=="bigint")return I=Nu(""+I,L.mode,V),I.return=L,I;if(typeof I=="object"&&I!==null){switch(I.$$typeof){case S:return V=ol(I.type,I.key,I.props,null,L.mode,V),Mo(V,I),V.return=L,V;case T:return I=ju(I,L.mode,V),I.return=L,I;case z:return I=Pa(I),W(L,I,V)}if(X(I)||ae(I))return I=Oa(I,L.mode,V,null),I.return=L,I;if(typeof I.then=="function")return W(L,pl(I),V);if(I.$$typeof===A)return W(L,cl(L,I),V);ml(L,I)}return null}function G(L,I,V,J){var be=I!==null?I.key:null;if(typeof V=="string"&&V!==""||typeof V=="number"||typeof V=="bigint")return be!==null?null:k(L,I,""+V,J);if(typeof V=="object"&&V!==null){switch(V.$$typeof){case S:return V.key===be?R(L,I,V,J):null;case T:return V.key===be?H(L,I,V,J):null;case z:return V=Pa(V),G(L,I,V,J)}if(X(V)||ae(V))return be!==null?null:Y(L,I,V,J,null);if(typeof V.then=="function")return G(L,I,pl(V),J);if(V.$$typeof===A)return G(L,I,cl(L,V),J);ml(L,V)}return null}function Z(L,I,V,J,be){if(typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint")return L=L.get(V)||null,k(I,L,""+J,be);if(typeof J=="object"&&J!==null){switch(J.$$typeof){case S:return L=L.get(J.key===null?V:J.key)||null,R(I,L,J,be);case T:return L=L.get(J.key===null?V:J.key)||null,H(I,L,J,be);case z:return J=Pa(J),Z(L,I,V,J,be)}if(X(J)||ae(J))return L=L.get(V)||null,Y(I,L,J,be,null);if(typeof J.then=="function")return Z(L,I,V,pl(J),be);if(J.$$typeof===A)return Z(L,I,V,cl(I,J),be);ml(I,J)}return null}function he(L,I,V,J){for(var be=null,Ze=null,ge=I,De=I=0,ze=null;ge!==null&&De<V.length;De++){ge.index>De?(ze=ge,ge=null):ze=ge.sibling;var Ke=G(L,ge,V[De],J);if(Ke===null){ge===null&&(ge=ze);break}e&&ge&&Ke.alternate===null&&n(L,ge),I=p(Ke,I,De),Ze===null?be=Ke:Ze.sibling=Ke,Ze=Ke,ge=ze}if(De===V.length)return a(L,ge),Pe&&ys(L,De),be;if(ge===null){for(;De<V.length;De++)ge=W(L,V[De],J),ge!==null&&(I=p(ge,I,De),Ze===null?be=ge:Ze.sibling=ge,Ze=ge);return Pe&&ys(L,De),be}for(ge=r(ge);De<V.length;De++)ze=Z(ge,L,De,V[De],J),ze!==null&&(e&&ze.alternate!==null&&ge.delete(ze.key===null?De:ze.key),I=p(ze,I,De),Ze===null?be=ze:Ze.sibling=ze,Ze=ze);return e&&ge.forEach(function(ma){return n(L,ma)}),Pe&&ys(L,De),be}function Se(L,I,V,J){if(V==null)throw Error(o(151));for(var be=null,Ze=null,ge=I,De=I=0,ze=null,Ke=V.next();ge!==null&&!Ke.done;De++,Ke=V.next()){ge.index>De?(ze=ge,ge=null):ze=ge.sibling;var ma=G(L,ge,Ke.value,J);if(ma===null){ge===null&&(ge=ze);break}e&&ge&&ma.alternate===null&&n(L,ge),I=p(ma,I,De),Ze===null?be=ma:Ze.sibling=ma,Ze=ma,ge=ze}if(Ke.done)return a(L,ge),Pe&&ys(L,De),be;if(ge===null){for(;!Ke.done;De++,Ke=V.next())Ke=W(L,Ke.value,J),Ke!==null&&(I=p(Ke,I,De),Ze===null?be=Ke:Ze.sibling=Ke,Ze=Ke);return Pe&&ys(L,De),be}for(ge=r(ge);!Ke.done;De++,Ke=V.next())Ke=Z(ge,L,De,Ke.value,J),Ke!==null&&(e&&Ke.alternate!==null&&ge.delete(Ke.key===null?De:Ke.key),I=p(Ke,I,De),Ze===null?be=Ke:Ze.sibling=Ke,Ze=Ke);return e&&ge.forEach(function(lT){return n(L,lT)}),Pe&&ys(L,De),be}function ot(L,I,V,J){if(typeof V=="object"&&V!==null&&V.type===N&&V.key===null&&(V=V.props.children),typeof V=="object"&&V!==null){switch(V.$$typeof){case S:e:{for(var be=V.key;I!==null;){if(I.key===be){if(be=V.type,be===N){if(I.tag===7){a(L,I.sibling),J=f(I,V.props.children),J.return=L,L=J;break e}}else if(I.elementType===be||typeof be=="object"&&be!==null&&be.$$typeof===z&&Pa(be)===I.type){a(L,I.sibling),J=f(I,V.props),Mo(J,V),J.return=L,L=J;break e}a(L,I);break}else n(L,I);I=I.sibling}V.type===N?(J=Oa(V.props.children,L.mode,J,V.key),J.return=L,L=J):(J=ol(V.type,V.key,V.props,null,L.mode,J),Mo(J,V),J.return=L,L=J)}return x(L);case T:e:{for(be=V.key;I!==null;){if(I.key===be)if(I.tag===4&&I.stateNode.containerInfo===V.containerInfo&&I.stateNode.implementation===V.implementation){a(L,I.sibling),J=f(I,V.children||[]),J.return=L,L=J;break e}else{a(L,I);break}else n(L,I);I=I.sibling}J=ju(V,L.mode,J),J.return=L,L=J}return x(L);case z:return V=Pa(V),ot(L,I,V,J)}if(X(V))return he(L,I,V,J);if(ae(V)){if(be=ae(V),typeof be!="function")throw Error(o(150));return V=be.call(V),Se(L,I,V,J)}if(typeof V.then=="function")return ot(L,I,pl(V),J);if(V.$$typeof===A)return ot(L,I,cl(L,V),J);ml(L,V)}return typeof V=="string"&&V!==""||typeof V=="number"||typeof V=="bigint"?(V=""+V,I!==null&&I.tag===6?(a(L,I.sibling),J=f(I,V),J.return=L,L=J):(a(L,I),J=Nu(V,L.mode,J),J.return=L,L=J),x(L)):a(L,I)}return function(L,I,V,J){try{Ro=0;var be=ot(L,I,V,J);return Di=null,be}catch(ge){if(ge===Ai||ge===dl)throw ge;var Ze=mn(29,ge,null,L.mode);return Ze.lanes=J,Ze.return=L,Ze}finally{}}}var Ha=wh(!0),Nh=wh(!1),Ws=!1;function zu(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Pu(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Xs(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Qs(e,n,a){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(Xe&2)!==0){var f=r.pending;return f===null?n.next=n:(n.next=f.next,f.next=n),r.pending=n,n=il(e),ch(e,null,a),n}return al(e,r,n,a),il(e)}function Io(e,n,a){if(n=n.updateQueue,n!==null&&(n=n.shared,(a&4194048)!==0)){var r=n.lanes;r&=e.pendingLanes,a|=r,n.lanes=a,Ge(e,a)}}function Vu(e,n){var a=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,a===r)){var f=null,p=null;if(a=a.firstBaseUpdate,a!==null){do{var x={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};p===null?f=p=x:p=p.next=x,a=a.next}while(a!==null);p===null?f=p=n:p=p.next=n}else f=p=n;a={baseState:r.baseState,firstBaseUpdate:f,lastBaseUpdate:p,shared:r.shared,callbacks:r.callbacks},e.updateQueue=a;return}e=a.lastBaseUpdate,e===null?a.firstBaseUpdate=n:e.next=n,a.lastBaseUpdate=n}var Hu=!1;function Oo(){if(Hu){var e=Ei;if(e!==null)throw e}}function Bo(e,n,a,r){Hu=!1;var f=e.updateQueue;Ws=!1;var p=f.firstBaseUpdate,x=f.lastBaseUpdate,k=f.shared.pending;if(k!==null){f.shared.pending=null;var R=k,H=R.next;R.next=null,x===null?p=H:x.next=H,x=R;var Y=e.alternate;Y!==null&&(Y=Y.updateQueue,k=Y.lastBaseUpdate,k!==x&&(k===null?Y.firstBaseUpdate=H:k.next=H,Y.lastBaseUpdate=R))}if(p!==null){var W=f.baseState;x=0,Y=H=R=null,k=p;do{var G=k.lane&-536870913,Z=G!==k.lane;if(Z?(Ue&G)===G:(r&G)===G){G!==0&&G===Ci&&(Hu=!0),Y!==null&&(Y=Y.next={lane:0,tag:k.tag,payload:k.payload,callback:null,next:null});e:{var he=e,Se=k;G=n;var ot=a;switch(Se.tag){case 1:if(he=Se.payload,typeof he=="function"){W=he.call(ot,W,G);break e}W=he;break e;case 3:he.flags=he.flags&-65537|128;case 0:if(he=Se.payload,G=typeof he=="function"?he.call(ot,W,G):he,G==null)break e;W=_({},W,G);break e;case 2:Ws=!0}}G=k.callback,G!==null&&(e.flags|=64,Z&&(e.flags|=8192),Z=f.callbacks,Z===null?f.callbacks=[G]:Z.push(G))}else Z={lane:G,tag:k.tag,payload:k.payload,callback:k.callback,next:null},Y===null?(H=Y=Z,R=W):Y=Y.next=Z,x|=G;if(k=k.next,k===null){if(k=f.shared.pending,k===null)break;Z=k,k=Z.next,Z.next=null,f.lastBaseUpdate=Z,f.shared.pending=null}}while(!0);Y===null&&(R=W),f.baseState=R,f.firstBaseUpdate=H,f.lastBaseUpdate=Y,p===null&&(f.shared.lanes=0),aa|=x,e.lanes=x,e.memoizedState=W}}function jh(e,n){if(typeof e!="function")throw Error(o(191,e));e.call(n)}function Ch(e,n){var a=e.callbacks;if(a!==null)for(e.callbacks=null,e=0;e<a.length;e++)jh(a[e],n)}var Ri=Fe(null),hl=Fe(0);function Eh(e,n){e=Es,ke(hl,e),ke(Ri,n),Es=e|n.baseLanes}function $u(){ke(hl,Es),ke(Ri,Ri.current)}function Gu(){Es=hl.current,Ne(Ri),Ne(hl)}var hn=Fe(null),Rn=null;function ea(e){var n=e.alternate;ke(Ct,Ct.current&1),ke(hn,e),Rn===null&&(n===null||Ri.current!==null||n.memoizedState!==null)&&(Rn=e)}function qu(e){ke(Ct,Ct.current),ke(hn,e),Rn===null&&(Rn=e)}function Ah(e){e.tag===22?(ke(Ct,Ct.current),ke(hn,e),Rn===null&&(Rn=e)):ta()}function ta(){ke(Ct,Ct.current),ke(hn,hn.current)}function gn(e){Ne(hn),Rn===e&&(Rn=null),Ne(Ct)}var Ct=Fe(0);function gl(e){for(var n=e;n!==null;){if(n.tag===13){var a=n.memoizedState;if(a!==null&&(a=a.dehydrated,a===null||Wd(a)||Xd(a)))return n}else if(n.tag===19&&(n.memoizedProps.revealOrder==="forwards"||n.memoizedProps.revealOrder==="backwards"||n.memoizedProps.revealOrder==="unstable_legacy-backwards"||n.memoizedProps.revealOrder==="together")){if((n.flags&128)!==0)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var xs=0,Ee=null,at=null,Mt=null,vl=!1,Mi=!1,$a=!1,yl=0,Lo=0,Ii=null,X1=0;function St(){throw Error(o(321))}function Fu(e,n){if(n===null)return!1;for(var a=0;a<n.length&&a<e.length;a++)if(!pn(e[a],n[a]))return!1;return!0}function Zu(e,n,a,r,f,p){return xs=p,Ee=n,n.memoizedState=null,n.updateQueue=null,n.lanes=0,O.H=e===null||e.memoizedState===null?pg:ld,$a=!1,p=a(r,f),$a=!1,Mi&&(p=Rh(n,a,r,f)),Dh(e),p}function Dh(e){O.H=Po;var n=at!==null&&at.next!==null;if(xs=0,Mt=at=Ee=null,vl=!1,Lo=0,Ii=null,n)throw Error(o(300));e===null||It||(e=e.dependencies,e!==null&&ll(e)&&(It=!0))}function Rh(e,n,a,r){Ee=e;var f=0;do{if(Mi&&(Ii=null),Lo=0,Mi=!1,25<=f)throw Error(o(301));if(f+=1,Mt=at=null,e.updateQueue!=null){var p=e.updateQueue;p.lastEffect=null,p.events=null,p.stores=null,p.memoCache!=null&&(p.memoCache.index=0)}O.H=mg,p=n(a,r)}while(Mi);return p}function Q1(){var e=O.H,n=e.useState()[0];return n=typeof n.then=="function"?Uo(n):n,e=e.useState()[0],(at!==null?at.memoizedState:null)!==e&&(Ee.flags|=1024),n}function Ku(){var e=yl!==0;return yl=0,e}function Yu(e,n,a){n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~a}function Ju(e){if(vl){for(e=e.memoizedState;e!==null;){var n=e.queue;n!==null&&(n.pending=null),e=e.next}vl=!1}xs=0,Mt=at=Ee=null,Mi=!1,Lo=yl=0,Ii=null}function en(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Mt===null?Ee.memoizedState=Mt=e:Mt=Mt.next=e,Mt}function Et(){if(at===null){var e=Ee.alternate;e=e!==null?e.memoizedState:null}else e=at.next;var n=Mt===null?Ee.memoizedState:Mt.next;if(n!==null)Mt=n,at=e;else{if(e===null)throw Ee.alternate===null?Error(o(467)):Error(o(310));at=e,e={memoizedState:at.memoizedState,baseState:at.baseState,baseQueue:at.baseQueue,queue:at.queue,next:null},Mt===null?Ee.memoizedState=Mt=e:Mt=Mt.next=e}return Mt}function bl(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function Uo(e){var n=Lo;return Lo+=1,Ii===null&&(Ii=[]),e=Sh(Ii,e,n),n=Ee,(Mt===null?n.memoizedState:Mt.next)===null&&(n=n.alternate,O.H=n===null||n.memoizedState===null?pg:ld),e}function _l(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return Uo(e);if(e.$$typeof===A)return Gt(e)}throw Error(o(438,String(e)))}function Wu(e){var n=null,a=Ee.updateQueue;if(a!==null&&(n=a.memoCache),n==null){var r=Ee.alternate;r!==null&&(r=r.updateQueue,r!==null&&(r=r.memoCache,r!=null&&(n={data:r.data.map(function(f){return f.slice()}),index:0})))}if(n==null&&(n={data:[],index:0}),a===null&&(a=bl(),Ee.updateQueue=a),a.memoCache=n,a=n.data[n.index],a===void 0)for(a=n.data[n.index]=Array(e),r=0;r<e;r++)a[r]=F;return n.index++,a}function Ss(e,n){return typeof n=="function"?n(e):n}function xl(e){var n=Et();return Xu(n,at,e)}function Xu(e,n,a){var r=e.queue;if(r===null)throw Error(o(311));r.lastRenderedReducer=a;var f=e.baseQueue,p=r.pending;if(p!==null){if(f!==null){var x=f.next;f.next=p.next,p.next=x}n.baseQueue=f=p,r.pending=null}if(p=e.baseState,f===null)e.memoizedState=p;else{n=f.next;var k=x=null,R=null,H=n,Y=!1;do{var W=H.lane&-536870913;if(W!==H.lane?(Ue&W)===W:(xs&W)===W){var G=H.revertLane;if(G===0)R!==null&&(R=R.next={lane:0,revertLane:0,gesture:null,action:H.action,hasEagerState:H.hasEagerState,eagerState:H.eagerState,next:null}),W===Ci&&(Y=!0);else if((xs&G)===G){H=H.next,G===Ci&&(Y=!0);continue}else W={lane:0,revertLane:H.revertLane,gesture:null,action:H.action,hasEagerState:H.hasEagerState,eagerState:H.eagerState,next:null},R===null?(k=R=W,x=p):R=R.next=W,Ee.lanes|=G,aa|=G;W=H.action,$a&&a(p,W),p=H.hasEagerState?H.eagerState:a(p,W)}else G={lane:W,revertLane:H.revertLane,gesture:H.gesture,action:H.action,hasEagerState:H.hasEagerState,eagerState:H.eagerState,next:null},R===null?(k=R=G,x=p):R=R.next=G,Ee.lanes|=W,aa|=W;H=H.next}while(H!==null&&H!==n);if(R===null?x=p:R.next=k,!pn(p,e.memoizedState)&&(It=!0,Y&&(a=Ei,a!==null)))throw a;e.memoizedState=p,e.baseState=x,e.baseQueue=R,r.lastRenderedState=p}return f===null&&(r.lanes=0),[e.memoizedState,r.dispatch]}function Qu(e){var n=Et(),a=n.queue;if(a===null)throw Error(o(311));a.lastRenderedReducer=e;var r=a.dispatch,f=a.pending,p=n.memoizedState;if(f!==null){a.pending=null;var x=f=f.next;do p=e(p,x.action),x=x.next;while(x!==f);pn(p,n.memoizedState)||(It=!0),n.memoizedState=p,n.baseQueue===null&&(n.baseState=p),a.lastRenderedState=p}return[p,r]}function Mh(e,n,a){var r=Ee,f=Et(),p=Pe;if(p){if(a===void 0)throw Error(o(407));a=a()}else a=n();var x=!pn((at||f).memoizedState,a);if(x&&(f.memoizedState=a,It=!0),f=f.queue,nd(Bh.bind(null,r,f,e),[e]),f.getSnapshot!==n||x||Mt!==null&&Mt.memoizedState.tag&1){if(r.flags|=2048,Oi(9,{destroy:void 0},Oh.bind(null,r,f,a,n),null),ct===null)throw Error(o(349));p||(xs&127)!==0||Ih(r,n,a)}return a}function Ih(e,n,a){e.flags|=16384,e={getSnapshot:n,value:a},n=Ee.updateQueue,n===null?(n=bl(),Ee.updateQueue=n,n.stores=[e]):(a=n.stores,a===null?n.stores=[e]:a.push(e))}function Oh(e,n,a,r){n.value=a,n.getSnapshot=r,Lh(n)&&Uh(e)}function Bh(e,n,a){return a(function(){Lh(n)&&Uh(e)})}function Lh(e){var n=e.getSnapshot;e=e.value;try{var a=n();return!pn(e,a)}catch{return!0}}function Uh(e){var n=Ia(e,2);n!==null&&un(n,e,2)}function ed(e){var n=en();if(typeof e=="function"){var a=e;if(e=a(),$a){$n(!0);try{a()}finally{$n(!1)}}}return n.memoizedState=n.baseState=e,n.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ss,lastRenderedState:e},n}function zh(e,n,a,r){return e.baseState=a,Xu(e,at,typeof r=="function"?r:Ss)}function eS(e,n,a,r,f){if(kl(e))throw Error(o(485));if(e=n.action,e!==null){var p={payload:f,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(x){p.listeners.push(x)}};O.T!==null?a(!0):p.isTransition=!1,r(p),a=n.pending,a===null?(p.next=n.pending=p,Ph(n,p)):(p.next=a.next,n.pending=a.next=p)}}function Ph(e,n){var a=n.action,r=n.payload,f=e.state;if(n.isTransition){var p=O.T,x={};O.T=x;try{var k=a(f,r),R=O.S;R!==null&&R(x,k),Vh(e,n,k)}catch(H){td(e,n,H)}finally{p!==null&&x.types!==null&&(p.types=x.types),O.T=p}}else try{p=a(f,r),Vh(e,n,p)}catch(H){td(e,n,H)}}function Vh(e,n,a){a!==null&&typeof a=="object"&&typeof a.then=="function"?a.then(function(r){Hh(e,n,r)},function(r){return td(e,n,r)}):Hh(e,n,a)}function Hh(e,n,a){n.status="fulfilled",n.value=a,$h(n),e.state=a,n=e.pending,n!==null&&(a=n.next,a===n?e.pending=null:(a=a.next,n.next=a,Ph(e,a)))}function td(e,n,a){var r=e.pending;if(e.pending=null,r!==null){r=r.next;do n.status="rejected",n.reason=a,$h(n),n=n.next;while(n!==r)}e.action=null}function $h(e){e=e.listeners;for(var n=0;n<e.length;n++)(0,e[n])()}function Gh(e,n){return n}function qh(e,n){if(Pe){var a=ct.formState;if(a!==null){e:{var r=Ee;if(Pe){if(ft){t:{for(var f=ft,p=Dn;f.nodeType!==8;){if(!p){f=null;break t}if(f=Mn(f.nextSibling),f===null){f=null;break t}}p=f.data,f=p==="F!"||p==="F"?f:null}if(f){ft=Mn(f.nextSibling),r=f.data==="F!";break e}}Ys(r)}r=!1}r&&(n=a[0])}}return a=en(),a.memoizedState=a.baseState=n,r={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Gh,lastRenderedState:n},a.queue=r,a=ug.bind(null,Ee,r),r.dispatch=a,r=ed(!1),p=rd.bind(null,Ee,!1,r.queue),r=en(),f={state:n,dispatch:null,action:e,pending:null},r.queue=f,a=eS.bind(null,Ee,f,p,a),f.dispatch=a,r.memoizedState=e,[n,a,!1]}function Fh(e){var n=Et();return Zh(n,at,e)}function Zh(e,n,a){if(n=Xu(e,n,Gh)[0],e=xl(Ss)[0],typeof n=="object"&&n!==null&&typeof n.then=="function")try{var r=Uo(n)}catch(x){throw x===Ai?dl:x}else r=n;n=Et();var f=n.queue,p=f.dispatch;return a!==n.memoizedState&&(Ee.flags|=2048,Oi(9,{destroy:void 0},tS.bind(null,f,a),null)),[r,p,e]}function tS(e,n){e.action=n}function Kh(e){var n=Et(),a=at;if(a!==null)return Zh(n,a,e);Et(),n=n.memoizedState,a=Et();var r=a.queue.dispatch;return a.memoizedState=e,[n,r,!1]}function Oi(e,n,a,r){return e={tag:e,create:a,deps:r,inst:n,next:null},n=Ee.updateQueue,n===null&&(n=bl(),Ee.updateQueue=n),a=n.lastEffect,a===null?n.lastEffect=e.next=e:(r=a.next,a.next=e,e.next=r,n.lastEffect=e),e}function Yh(){return Et().memoizedState}function Sl(e,n,a,r){var f=en();Ee.flags|=e,f.memoizedState=Oi(1|n,{destroy:void 0},a,r===void 0?null:r)}function Tl(e,n,a,r){var f=Et();r=r===void 0?null:r;var p=f.memoizedState.inst;at!==null&&r!==null&&Fu(r,at.memoizedState.deps)?f.memoizedState=Oi(n,p,a,r):(Ee.flags|=e,f.memoizedState=Oi(1|n,p,a,r))}function Jh(e,n){Sl(8390656,8,e,n)}function nd(e,n){Tl(2048,8,e,n)}function nS(e){Ee.flags|=4;var n=Ee.updateQueue;if(n===null)n=bl(),Ee.updateQueue=n,n.events=[e];else{var a=n.events;a===null?n.events=[e]:a.push(e)}}function Wh(e){var n=Et().memoizedState;return nS({ref:n,nextImpl:e}),function(){if((Xe&2)!==0)throw Error(o(440));return n.impl.apply(void 0,arguments)}}function Xh(e,n){return Tl(4,2,e,n)}function Qh(e,n){return Tl(4,4,e,n)}function eg(e,n){if(typeof n=="function"){e=e();var a=n(e);return function(){typeof a=="function"?a():n(null)}}if(n!=null)return e=e(),n.current=e,function(){n.current=null}}function tg(e,n,a){a=a!=null?a.concat([e]):null,Tl(4,4,eg.bind(null,n,e),a)}function sd(){}function ng(e,n){var a=Et();n=n===void 0?null:n;var r=a.memoizedState;return n!==null&&Fu(n,r[1])?r[0]:(a.memoizedState=[e,n],e)}function sg(e,n){var a=Et();n=n===void 0?null:n;var r=a.memoizedState;if(n!==null&&Fu(n,r[1]))return r[0];if(r=e(),$a){$n(!0);try{e()}finally{$n(!1)}}return a.memoizedState=[r,n],r}function ad(e,n,a){return a===void 0||(xs&1073741824)!==0&&(Ue&261930)===0?e.memoizedState=n:(e.memoizedState=a,e=av(),Ee.lanes|=e,aa|=e,a)}function ag(e,n,a,r){return pn(a,n)?a:Ri.current!==null?(e=ad(e,a,r),pn(e,n)||(It=!0),e):(xs&42)===0||(xs&1073741824)!==0&&(Ue&261930)===0?(It=!0,e.memoizedState=a):(e=av(),Ee.lanes|=e,aa|=e,n)}function ig(e,n,a,r,f){var p=q.p;q.p=p!==0&&8>p?p:8;var x=O.T,k={};O.T=k,rd(e,!1,n,a);try{var R=f(),H=O.S;if(H!==null&&H(k,R),R!==null&&typeof R=="object"&&typeof R.then=="function"){var Y=W1(R,r);zo(e,n,Y,bn(e))}else zo(e,n,r,bn(e))}catch(W){zo(e,n,{then:function(){},status:"rejected",reason:W},bn())}finally{q.p=p,x!==null&&k.types!==null&&(x.types=k.types),O.T=x}}function sS(){}function id(e,n,a,r){if(e.tag!==5)throw Error(o(476));var f=og(e).queue;ig(e,f,n,te,a===null?sS:function(){return rg(e),a(r)})}function og(e){var n=e.memoizedState;if(n!==null)return n;n={memoizedState:te,baseState:te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ss,lastRenderedState:te},next:null};var a={};return n.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ss,lastRenderedState:a},next:null},e.memoizedState=n,e=e.alternate,e!==null&&(e.memoizedState=n),n}function rg(e){var n=og(e);n.next===null&&(n=e.alternate.memoizedState),zo(e,n.next.queue,{},bn())}function od(){return Gt(nr)}function lg(){return Et().memoizedState}function cg(){return Et().memoizedState}function aS(e){for(var n=e.return;n!==null;){switch(n.tag){case 24:case 3:var a=bn();e=Xs(a);var r=Qs(n,e,a);r!==null&&(un(r,n,a),Io(r,n,a)),n={cache:Ou()},e.payload=n;return}n=n.return}}function iS(e,n,a){var r=bn();a={lane:r,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},kl(e)?dg(n,a):(a=ku(e,n,a,r),a!==null&&(un(a,e,r),fg(a,n,r)))}function ug(e,n,a){var r=bn();zo(e,n,a,r)}function zo(e,n,a,r){var f={lane:r,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(kl(e))dg(n,f);else{var p=e.alternate;if(e.lanes===0&&(p===null||p.lanes===0)&&(p=n.lastRenderedReducer,p!==null))try{var x=n.lastRenderedState,k=p(x,a);if(f.hasEagerState=!0,f.eagerState=k,pn(k,x))return al(e,n,f,0),ct===null&&sl(),!1}catch{}finally{}if(a=ku(e,n,f,r),a!==null)return un(a,e,r),fg(a,n,r),!0}return!1}function rd(e,n,a,r){if(r={lane:2,revertLane:zd(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},kl(e)){if(n)throw Error(o(479))}else n=ku(e,a,r,2),n!==null&&un(n,e,2)}function kl(e){var n=e.alternate;return e===Ee||n!==null&&n===Ee}function dg(e,n){Mi=vl=!0;var a=e.pending;a===null?n.next=n:(n.next=a.next,a.next=n),e.pending=n}function fg(e,n,a){if((a&4194048)!==0){var r=n.lanes;r&=e.pendingLanes,a|=r,n.lanes=a,Ge(e,a)}}var Po={readContext:Gt,use:_l,useCallback:St,useContext:St,useEffect:St,useImperativeHandle:St,useLayoutEffect:St,useInsertionEffect:St,useMemo:St,useReducer:St,useRef:St,useState:St,useDebugValue:St,useDeferredValue:St,useTransition:St,useSyncExternalStore:St,useId:St,useHostTransitionStatus:St,useFormState:St,useActionState:St,useOptimistic:St,useMemoCache:St,useCacheRefresh:St};Po.useEffectEvent=St;var pg={readContext:Gt,use:_l,useCallback:function(e,n){return en().memoizedState=[e,n===void 0?null:n],e},useContext:Gt,useEffect:Jh,useImperativeHandle:function(e,n,a){a=a!=null?a.concat([e]):null,Sl(4194308,4,eg.bind(null,n,e),a)},useLayoutEffect:function(e,n){return Sl(4194308,4,e,n)},useInsertionEffect:function(e,n){Sl(4,2,e,n)},useMemo:function(e,n){var a=en();n=n===void 0?null:n;var r=e();if($a){$n(!0);try{e()}finally{$n(!1)}}return a.memoizedState=[r,n],r},useReducer:function(e,n,a){var r=en();if(a!==void 0){var f=a(n);if($a){$n(!0);try{a(n)}finally{$n(!1)}}}else f=n;return r.memoizedState=r.baseState=f,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:f},r.queue=e,e=e.dispatch=iS.bind(null,Ee,e),[r.memoizedState,e]},useRef:function(e){var n=en();return e={current:e},n.memoizedState=e},useState:function(e){e=ed(e);var n=e.queue,a=ug.bind(null,Ee,n);return n.dispatch=a,[e.memoizedState,a]},useDebugValue:sd,useDeferredValue:function(e,n){var a=en();return ad(a,e,n)},useTransition:function(){var e=ed(!1);return e=ig.bind(null,Ee,e.queue,!0,!1),en().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,n,a){var r=Ee,f=en();if(Pe){if(a===void 0)throw Error(o(407));a=a()}else{if(a=n(),ct===null)throw Error(o(349));(Ue&127)!==0||Ih(r,n,a)}f.memoizedState=a;var p={value:a,getSnapshot:n};return f.queue=p,Jh(Bh.bind(null,r,p,e),[e]),r.flags|=2048,Oi(9,{destroy:void 0},Oh.bind(null,r,p,a,n),null),a},useId:function(){var e=en(),n=ct.identifierPrefix;if(Pe){var a=ss,r=ns;a=(r&~(1<<32-Jt(r)-1)).toString(32)+a,n="_"+n+"R_"+a,a=yl++,0<a&&(n+="H"+a.toString(32)),n+="_"}else a=X1++,n="_"+n+"r_"+a.toString(32)+"_";return e.memoizedState=n},useHostTransitionStatus:od,useFormState:qh,useActionState:qh,useOptimistic:function(e){var n=en();n.memoizedState=n.baseState=e;var a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return n.queue=a,n=rd.bind(null,Ee,!0,a),a.dispatch=n,[e,n]},useMemoCache:Wu,useCacheRefresh:function(){return en().memoizedState=aS.bind(null,Ee)},useEffectEvent:function(e){var n=en(),a={impl:e};return n.memoizedState=a,function(){if((Xe&2)!==0)throw Error(o(440));return a.impl.apply(void 0,arguments)}}},ld={readContext:Gt,use:_l,useCallback:ng,useContext:Gt,useEffect:nd,useImperativeHandle:tg,useInsertionEffect:Xh,useLayoutEffect:Qh,useMemo:sg,useReducer:xl,useRef:Yh,useState:function(){return xl(Ss)},useDebugValue:sd,useDeferredValue:function(e,n){var a=Et();return ag(a,at.memoizedState,e,n)},useTransition:function(){var e=xl(Ss)[0],n=Et().memoizedState;return[typeof e=="boolean"?e:Uo(e),n]},useSyncExternalStore:Mh,useId:lg,useHostTransitionStatus:od,useFormState:Fh,useActionState:Fh,useOptimistic:function(e,n){var a=Et();return zh(a,at,e,n)},useMemoCache:Wu,useCacheRefresh:cg};ld.useEffectEvent=Wh;var mg={readContext:Gt,use:_l,useCallback:ng,useContext:Gt,useEffect:nd,useImperativeHandle:tg,useInsertionEffect:Xh,useLayoutEffect:Qh,useMemo:sg,useReducer:Qu,useRef:Yh,useState:function(){return Qu(Ss)},useDebugValue:sd,useDeferredValue:function(e,n){var a=Et();return at===null?ad(a,e,n):ag(a,at.memoizedState,e,n)},useTransition:function(){var e=Qu(Ss)[0],n=Et().memoizedState;return[typeof e=="boolean"?e:Uo(e),n]},useSyncExternalStore:Mh,useId:lg,useHostTransitionStatus:od,useFormState:Kh,useActionState:Kh,useOptimistic:function(e,n){var a=Et();return at!==null?zh(a,at,e,n):(a.baseState=e,[e,a.queue.dispatch])},useMemoCache:Wu,useCacheRefresh:cg};mg.useEffectEvent=Wh;function cd(e,n,a,r){n=e.memoizedState,a=a(r,n),a=a==null?n:_({},n,a),e.memoizedState=a,e.lanes===0&&(e.updateQueue.baseState=a)}var ud={enqueueSetState:function(e,n,a){e=e._reactInternals;var r=bn(),f=Xs(r);f.payload=n,a!=null&&(f.callback=a),n=Qs(e,f,r),n!==null&&(un(n,e,r),Io(n,e,r))},enqueueReplaceState:function(e,n,a){e=e._reactInternals;var r=bn(),f=Xs(r);f.tag=1,f.payload=n,a!=null&&(f.callback=a),n=Qs(e,f,r),n!==null&&(un(n,e,r),Io(n,e,r))},enqueueForceUpdate:function(e,n){e=e._reactInternals;var a=bn(),r=Xs(a);r.tag=2,n!=null&&(r.callback=n),n=Qs(e,r,a),n!==null&&(un(n,e,a),Io(n,e,a))}};function hg(e,n,a,r,f,p,x){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(r,p,x):n.prototype&&n.prototype.isPureReactComponent?!No(a,r)||!No(f,p):!0}function gg(e,n,a,r){e=n.state,typeof n.componentWillReceiveProps=="function"&&n.componentWillReceiveProps(a,r),typeof n.UNSAFE_componentWillReceiveProps=="function"&&n.UNSAFE_componentWillReceiveProps(a,r),n.state!==e&&ud.enqueueReplaceState(n,n.state,null)}function Ga(e,n){var a=n;if("ref"in n){a={};for(var r in n)r!=="ref"&&(a[r]=n[r])}if(e=e.defaultProps){a===n&&(a=_({},a));for(var f in e)a[f]===void 0&&(a[f]=e[f])}return a}function vg(e){nl(e)}function yg(e){console.error(e)}function bg(e){nl(e)}function wl(e,n){try{var a=e.onUncaughtError;a(n.value,{componentStack:n.stack})}catch(r){setTimeout(function(){throw r})}}function _g(e,n,a){try{var r=e.onCaughtError;r(a.value,{componentStack:a.stack,errorBoundary:n.tag===1?n.stateNode:null})}catch(f){setTimeout(function(){throw f})}}function dd(e,n,a){return a=Xs(a),a.tag=3,a.payload={element:null},a.callback=function(){wl(e,n)},a}function xg(e){return e=Xs(e),e.tag=3,e}function Sg(e,n,a,r){var f=a.type.getDerivedStateFromError;if(typeof f=="function"){var p=r.value;e.payload=function(){return f(p)},e.callback=function(){_g(n,a,r)}}var x=a.stateNode;x!==null&&typeof x.componentDidCatch=="function"&&(e.callback=function(){_g(n,a,r),typeof f!="function"&&(ia===null?ia=new Set([this]):ia.add(this));var k=r.stack;this.componentDidCatch(r.value,{componentStack:k!==null?k:""})})}function oS(e,n,a,r,f){if(a.flags|=32768,r!==null&&typeof r=="object"&&typeof r.then=="function"){if(n=a.alternate,n!==null&&ji(n,a,f,!0),a=hn.current,a!==null){switch(a.tag){case 31:case 13:return Rn===null?Ll():a.alternate===null&&Tt===0&&(Tt=3),a.flags&=-257,a.flags|=65536,a.lanes=f,r===fl?a.flags|=16384:(n=a.updateQueue,n===null?a.updateQueue=new Set([r]):n.add(r),Bd(e,r,f)),!1;case 22:return a.flags|=65536,r===fl?a.flags|=16384:(n=a.updateQueue,n===null?(n={transitions:null,markerInstances:null,retryQueue:new Set([r])},a.updateQueue=n):(a=n.retryQueue,a===null?n.retryQueue=new Set([r]):a.add(r)),Bd(e,r,f)),!1}throw Error(o(435,a.tag))}return Bd(e,r,f),Ll(),!1}if(Pe)return n=hn.current,n!==null?((n.flags&65536)===0&&(n.flags|=256),n.flags|=65536,n.lanes=f,r!==Au&&(e=Error(o(422),{cause:r}),Eo(Cn(e,a)))):(r!==Au&&(n=Error(o(423),{cause:r}),Eo(Cn(n,a))),e=e.current.alternate,e.flags|=65536,f&=-f,e.lanes|=f,r=Cn(r,a),f=dd(e.stateNode,r,f),Vu(e,f),Tt!==4&&(Tt=2)),!1;var p=Error(o(520),{cause:r});if(p=Cn(p,a),Ko===null?Ko=[p]:Ko.push(p),Tt!==4&&(Tt=2),n===null)return!0;r=Cn(r,a),a=n;do{switch(a.tag){case 3:return a.flags|=65536,e=f&-f,a.lanes|=e,e=dd(a.stateNode,r,e),Vu(a,e),!1;case 1:if(n=a.type,p=a.stateNode,(a.flags&128)===0&&(typeof n.getDerivedStateFromError=="function"||p!==null&&typeof p.componentDidCatch=="function"&&(ia===null||!ia.has(p))))return a.flags|=65536,f&=-f,a.lanes|=f,f=xg(f),Sg(f,e,a,r),Vu(a,f),!1}a=a.return}while(a!==null);return!1}var fd=Error(o(461)),It=!1;function qt(e,n,a,r){n.child=e===null?Nh(n,null,a,r):Ha(n,e.child,a,r)}function Tg(e,n,a,r,f){a=a.render;var p=n.ref;if("ref"in r){var x={};for(var k in r)k!=="ref"&&(x[k]=r[k])}else x=r;return Ua(n),r=Zu(e,n,a,x,p,f),k=Ku(),e!==null&&!It?(Yu(e,n,f),Ts(e,n,f)):(Pe&&k&&Cu(n),n.flags|=1,qt(e,n,r,f),n.child)}function kg(e,n,a,r,f){if(e===null){var p=a.type;return typeof p=="function"&&!wu(p)&&p.defaultProps===void 0&&a.compare===null?(n.tag=15,n.type=p,wg(e,n,p,r,f)):(e=ol(a.type,null,r,n,n.mode,f),e.ref=n.ref,e.return=n,n.child=e)}if(p=e.child,!_d(e,f)){var x=p.memoizedProps;if(a=a.compare,a=a!==null?a:No,a(x,r)&&e.ref===n.ref)return Ts(e,n,f)}return n.flags|=1,e=vs(p,r),e.ref=n.ref,e.return=n,n.child=e}function wg(e,n,a,r,f){if(e!==null){var p=e.memoizedProps;if(No(p,r)&&e.ref===n.ref)if(It=!1,n.pendingProps=r=p,_d(e,f))(e.flags&131072)!==0&&(It=!0);else return n.lanes=e.lanes,Ts(e,n,f)}return pd(e,n,a,r,f)}function Ng(e,n,a,r){var f=r.children,p=e!==null?e.memoizedState:null;if(e===null&&n.stateNode===null&&(n.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),r.mode==="hidden"){if((n.flags&128)!==0){if(p=p!==null?p.baseLanes|a:a,e!==null){for(r=n.child=e.child,f=0;r!==null;)f=f|r.lanes|r.childLanes,r=r.sibling;r=f&~p}else r=0,n.child=null;return jg(e,n,p,a,r)}if((a&536870912)!==0)n.memoizedState={baseLanes:0,cachePool:null},e!==null&&ul(n,p!==null?p.cachePool:null),p!==null?Eh(n,p):$u(),Ah(n);else return r=n.lanes=536870912,jg(e,n,p!==null?p.baseLanes|a:a,a,r)}else p!==null?(ul(n,p.cachePool),Eh(n,p),ta(),n.memoizedState=null):(e!==null&&ul(n,null),$u(),ta());return qt(e,n,f,a),n.child}function Vo(e,n){return e!==null&&e.tag===22||n.stateNode!==null||(n.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),n.sibling}function jg(e,n,a,r,f){var p=Lu();return p=p===null?null:{parent:Rt._currentValue,pool:p},n.memoizedState={baseLanes:a,cachePool:p},e!==null&&ul(n,null),$u(),Ah(n),e!==null&&ji(e,n,r,!0),n.childLanes=f,null}function Nl(e,n){return n=Cl({mode:n.mode,children:n.children},e.mode),n.ref=e.ref,e.child=n,n.return=e,n}function Cg(e,n,a){return Ha(n,e.child,null,a),e=Nl(n,n.pendingProps),e.flags|=2,gn(n),n.memoizedState=null,e}function rS(e,n,a){var r=n.pendingProps,f=(n.flags&128)!==0;if(n.flags&=-129,e===null){if(Pe){if(r.mode==="hidden")return e=Nl(n,r),n.lanes=536870912,Vo(null,e);if(qu(n),(e=ft)?(e=Pv(e,Dn),e=e!==null&&e.data==="&"?e:null,e!==null&&(n.memoizedState={dehydrated:e,treeContext:Zs!==null?{id:ns,overflow:ss}:null,retryLane:536870912,hydrationErrors:null},a=dh(e),a.return=n,n.child=a,$t=n,ft=null)):e=null,e===null)throw Ys(n);return n.lanes=536870912,null}return Nl(n,r)}var p=e.memoizedState;if(p!==null){var x=p.dehydrated;if(qu(n),f)if(n.flags&256)n.flags&=-257,n=Cg(e,n,a);else if(n.memoizedState!==null)n.child=e.child,n.flags|=128,n=null;else throw Error(o(558));else if(It||ji(e,n,a,!1),f=(a&e.childLanes)!==0,It||f){if(r=ct,r!==null&&(x=lt(r,a),x!==0&&x!==p.retryLane))throw p.retryLane=x,Ia(e,x),un(r,e,x),fd;Ll(),n=Cg(e,n,a)}else e=p.treeContext,ft=Mn(x.nextSibling),$t=n,Pe=!0,Ks=null,Dn=!1,e!==null&&mh(n,e),n=Nl(n,r),n.flags|=4096;return n}return e=vs(e.child,{mode:r.mode,children:r.children}),e.ref=n.ref,n.child=e,e.return=n,e}function jl(e,n){var a=n.ref;if(a===null)e!==null&&e.ref!==null&&(n.flags|=4194816);else{if(typeof a!="function"&&typeof a!="object")throw Error(o(284));(e===null||e.ref!==a)&&(n.flags|=4194816)}}function pd(e,n,a,r,f){return Ua(n),a=Zu(e,n,a,r,void 0,f),r=Ku(),e!==null&&!It?(Yu(e,n,f),Ts(e,n,f)):(Pe&&r&&Cu(n),n.flags|=1,qt(e,n,a,f),n.child)}function Eg(e,n,a,r,f,p){return Ua(n),n.updateQueue=null,a=Rh(n,r,a,f),Dh(e),r=Ku(),e!==null&&!It?(Yu(e,n,p),Ts(e,n,p)):(Pe&&r&&Cu(n),n.flags|=1,qt(e,n,a,p),n.child)}function Ag(e,n,a,r,f){if(Ua(n),n.stateNode===null){var p=Ti,x=a.contextType;typeof x=="object"&&x!==null&&(p=Gt(x)),p=new a(r,p),n.memoizedState=p.state!==null&&p.state!==void 0?p.state:null,p.updater=ud,n.stateNode=p,p._reactInternals=n,p=n.stateNode,p.props=r,p.state=n.memoizedState,p.refs={},zu(n),x=a.contextType,p.context=typeof x=="object"&&x!==null?Gt(x):Ti,p.state=n.memoizedState,x=a.getDerivedStateFromProps,typeof x=="function"&&(cd(n,a,x,r),p.state=n.memoizedState),typeof a.getDerivedStateFromProps=="function"||typeof p.getSnapshotBeforeUpdate=="function"||typeof p.UNSAFE_componentWillMount!="function"&&typeof p.componentWillMount!="function"||(x=p.state,typeof p.componentWillMount=="function"&&p.componentWillMount(),typeof p.UNSAFE_componentWillMount=="function"&&p.UNSAFE_componentWillMount(),x!==p.state&&ud.enqueueReplaceState(p,p.state,null),Bo(n,r,p,f),Oo(),p.state=n.memoizedState),typeof p.componentDidMount=="function"&&(n.flags|=4194308),r=!0}else if(e===null){p=n.stateNode;var k=n.memoizedProps,R=Ga(a,k);p.props=R;var H=p.context,Y=a.contextType;x=Ti,typeof Y=="object"&&Y!==null&&(x=Gt(Y));var W=a.getDerivedStateFromProps;Y=typeof W=="function"||typeof p.getSnapshotBeforeUpdate=="function",k=n.pendingProps!==k,Y||typeof p.UNSAFE_componentWillReceiveProps!="function"&&typeof p.componentWillReceiveProps!="function"||(k||H!==x)&&gg(n,p,r,x),Ws=!1;var G=n.memoizedState;p.state=G,Bo(n,r,p,f),Oo(),H=n.memoizedState,k||G!==H||Ws?(typeof W=="function"&&(cd(n,a,W,r),H=n.memoizedState),(R=Ws||hg(n,a,R,r,G,H,x))?(Y||typeof p.UNSAFE_componentWillMount!="function"&&typeof p.componentWillMount!="function"||(typeof p.componentWillMount=="function"&&p.componentWillMount(),typeof p.UNSAFE_componentWillMount=="function"&&p.UNSAFE_componentWillMount()),typeof p.componentDidMount=="function"&&(n.flags|=4194308)):(typeof p.componentDidMount=="function"&&(n.flags|=4194308),n.memoizedProps=r,n.memoizedState=H),p.props=r,p.state=H,p.context=x,r=R):(typeof p.componentDidMount=="function"&&(n.flags|=4194308),r=!1)}else{p=n.stateNode,Pu(e,n),x=n.memoizedProps,Y=Ga(a,x),p.props=Y,W=n.pendingProps,G=p.context,H=a.contextType,R=Ti,typeof H=="object"&&H!==null&&(R=Gt(H)),k=a.getDerivedStateFromProps,(H=typeof k=="function"||typeof p.getSnapshotBeforeUpdate=="function")||typeof p.UNSAFE_componentWillReceiveProps!="function"&&typeof p.componentWillReceiveProps!="function"||(x!==W||G!==R)&&gg(n,p,r,R),Ws=!1,G=n.memoizedState,p.state=G,Bo(n,r,p,f),Oo();var Z=n.memoizedState;x!==W||G!==Z||Ws||e!==null&&e.dependencies!==null&&ll(e.dependencies)?(typeof k=="function"&&(cd(n,a,k,r),Z=n.memoizedState),(Y=Ws||hg(n,a,Y,r,G,Z,R)||e!==null&&e.dependencies!==null&&ll(e.dependencies))?(H||typeof p.UNSAFE_componentWillUpdate!="function"&&typeof p.componentWillUpdate!="function"||(typeof p.componentWillUpdate=="function"&&p.componentWillUpdate(r,Z,R),typeof p.UNSAFE_componentWillUpdate=="function"&&p.UNSAFE_componentWillUpdate(r,Z,R)),typeof p.componentDidUpdate=="function"&&(n.flags|=4),typeof p.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof p.componentDidUpdate!="function"||x===e.memoizedProps&&G===e.memoizedState||(n.flags|=4),typeof p.getSnapshotBeforeUpdate!="function"||x===e.memoizedProps&&G===e.memoizedState||(n.flags|=1024),n.memoizedProps=r,n.memoizedState=Z),p.props=r,p.state=Z,p.context=R,r=Y):(typeof p.componentDidUpdate!="function"||x===e.memoizedProps&&G===e.memoizedState||(n.flags|=4),typeof p.getSnapshotBeforeUpdate!="function"||x===e.memoizedProps&&G===e.memoizedState||(n.flags|=1024),r=!1)}return p=r,jl(e,n),r=(n.flags&128)!==0,p||r?(p=n.stateNode,a=r&&typeof a.getDerivedStateFromError!="function"?null:p.render(),n.flags|=1,e!==null&&r?(n.child=Ha(n,e.child,null,f),n.child=Ha(n,null,a,f)):qt(e,n,a,f),n.memoizedState=p.state,e=n.child):e=Ts(e,n,f),e}function Dg(e,n,a,r){return Ba(),n.flags|=256,qt(e,n,a,r),n.child}var md={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function hd(e){return{baseLanes:e,cachePool:_h()}}function gd(e,n,a){return e=e!==null?e.childLanes&~a:0,n&&(e|=yn),e}function Rg(e,n,a){var r=n.pendingProps,f=!1,p=(n.flags&128)!==0,x;if((x=p)||(x=e!==null&&e.memoizedState===null?!1:(Ct.current&2)!==0),x&&(f=!0,n.flags&=-129),x=(n.flags&32)!==0,n.flags&=-33,e===null){if(Pe){if(f?ea(n):ta(),(e=ft)?(e=Pv(e,Dn),e=e!==null&&e.data!=="&"?e:null,e!==null&&(n.memoizedState={dehydrated:e,treeContext:Zs!==null?{id:ns,overflow:ss}:null,retryLane:536870912,hydrationErrors:null},a=dh(e),a.return=n,n.child=a,$t=n,ft=null)):e=null,e===null)throw Ys(n);return Xd(e)?n.lanes=32:n.lanes=536870912,null}var k=r.children;return r=r.fallback,f?(ta(),f=n.mode,k=Cl({mode:"hidden",children:k},f),r=Oa(r,f,a,null),k.return=n,r.return=n,k.sibling=r,n.child=k,r=n.child,r.memoizedState=hd(a),r.childLanes=gd(e,x,a),n.memoizedState=md,Vo(null,r)):(ea(n),vd(n,k))}var R=e.memoizedState;if(R!==null&&(k=R.dehydrated,k!==null)){if(p)n.flags&256?(ea(n),n.flags&=-257,n=yd(e,n,a)):n.memoizedState!==null?(ta(),n.child=e.child,n.flags|=128,n=null):(ta(),k=r.fallback,f=n.mode,r=Cl({mode:"visible",children:r.children},f),k=Oa(k,f,a,null),k.flags|=2,r.return=n,k.return=n,r.sibling=k,n.child=r,Ha(n,e.child,null,a),r=n.child,r.memoizedState=hd(a),r.childLanes=gd(e,x,a),n.memoizedState=md,n=Vo(null,r));else if(ea(n),Xd(k)){if(x=k.nextSibling&&k.nextSibling.dataset,x)var H=x.dgst;x=H,r=Error(o(419)),r.stack="",r.digest=x,Eo({value:r,source:null,stack:null}),n=yd(e,n,a)}else if(It||ji(e,n,a,!1),x=(a&e.childLanes)!==0,It||x){if(x=ct,x!==null&&(r=lt(x,a),r!==0&&r!==R.retryLane))throw R.retryLane=r,Ia(e,r),un(x,e,r),fd;Wd(k)||Ll(),n=yd(e,n,a)}else Wd(k)?(n.flags|=192,n.child=e.child,n=null):(e=R.treeContext,ft=Mn(k.nextSibling),$t=n,Pe=!0,Ks=null,Dn=!1,e!==null&&mh(n,e),n=vd(n,r.children),n.flags|=4096);return n}return f?(ta(),k=r.fallback,f=n.mode,R=e.child,H=R.sibling,r=vs(R,{mode:"hidden",children:r.children}),r.subtreeFlags=R.subtreeFlags&65011712,H!==null?k=vs(H,k):(k=Oa(k,f,a,null),k.flags|=2),k.return=n,r.return=n,r.sibling=k,n.child=r,Vo(null,r),r=n.child,k=e.child.memoizedState,k===null?k=hd(a):(f=k.cachePool,f!==null?(R=Rt._currentValue,f=f.parent!==R?{parent:R,pool:R}:f):f=_h(),k={baseLanes:k.baseLanes|a,cachePool:f}),r.memoizedState=k,r.childLanes=gd(e,x,a),n.memoizedState=md,Vo(e.child,r)):(ea(n),a=e.child,e=a.sibling,a=vs(a,{mode:"visible",children:r.children}),a.return=n,a.sibling=null,e!==null&&(x=n.deletions,x===null?(n.deletions=[e],n.flags|=16):x.push(e)),n.child=a,n.memoizedState=null,a)}function vd(e,n){return n=Cl({mode:"visible",children:n},e.mode),n.return=e,e.child=n}function Cl(e,n){return e=mn(22,e,null,n),e.lanes=0,e}function yd(e,n,a){return Ha(n,e.child,null,a),e=vd(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function Mg(e,n,a){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n),Mu(e.return,n,a)}function bd(e,n,a,r,f,p){var x=e.memoizedState;x===null?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:r,tail:a,tailMode:f,treeForkCount:p}:(x.isBackwards=n,x.rendering=null,x.renderingStartTime=0,x.last=r,x.tail=a,x.tailMode=f,x.treeForkCount=p)}function Ig(e,n,a){var r=n.pendingProps,f=r.revealOrder,p=r.tail;r=r.children;var x=Ct.current,k=(x&2)!==0;if(k?(x=x&1|2,n.flags|=128):x&=1,ke(Ct,x),qt(e,n,r,a),r=Pe?Co:0,!k&&e!==null&&(e.flags&128)!==0)e:for(e=n.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Mg(e,a,n);else if(e.tag===19)Mg(e,a,n);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;e.sibling===null;){if(e.return===null||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(f){case"forwards":for(a=n.child,f=null;a!==null;)e=a.alternate,e!==null&&gl(e)===null&&(f=a),a=a.sibling;a=f,a===null?(f=n.child,n.child=null):(f=a.sibling,a.sibling=null),bd(n,!1,f,a,p,r);break;case"backwards":case"unstable_legacy-backwards":for(a=null,f=n.child,n.child=null;f!==null;){if(e=f.alternate,e!==null&&gl(e)===null){n.child=f;break}e=f.sibling,f.sibling=a,a=f,f=e}bd(n,!0,a,null,p,r);break;case"together":bd(n,!1,null,null,void 0,r);break;default:n.memoizedState=null}return n.child}function Ts(e,n,a){if(e!==null&&(n.dependencies=e.dependencies),aa|=n.lanes,(a&n.childLanes)===0)if(e!==null){if(ji(e,n,a,!1),(a&n.childLanes)===0)return null}else return null;if(e!==null&&n.child!==e.child)throw Error(o(153));if(n.child!==null){for(e=n.child,a=vs(e,e.pendingProps),n.child=a,a.return=n;e.sibling!==null;)e=e.sibling,a=a.sibling=vs(e,e.pendingProps),a.return=n;a.sibling=null}return n.child}function _d(e,n){return(e.lanes&n)!==0?!0:(e=e.dependencies,!!(e!==null&&ll(e)))}function lS(e,n,a){switch(n.tag){case 3:Ie(n,n.stateNode.containerInfo),Js(n,Rt,e.memoizedState.cache),Ba();break;case 27:case 5:fn(n);break;case 4:Ie(n,n.stateNode.containerInfo);break;case 10:Js(n,n.type,n.memoizedProps.value);break;case 31:if(n.memoizedState!==null)return n.flags|=128,qu(n),null;break;case 13:var r=n.memoizedState;if(r!==null)return r.dehydrated!==null?(ea(n),n.flags|=128,null):(a&n.child.childLanes)!==0?Rg(e,n,a):(ea(n),e=Ts(e,n,a),e!==null?e.sibling:null);ea(n);break;case 19:var f=(e.flags&128)!==0;if(r=(a&n.childLanes)!==0,r||(ji(e,n,a,!1),r=(a&n.childLanes)!==0),f){if(r)return Ig(e,n,a);n.flags|=128}if(f=n.memoizedState,f!==null&&(f.rendering=null,f.tail=null,f.lastEffect=null),ke(Ct,Ct.current),r)break;return null;case 22:return n.lanes=0,Ng(e,n,a,n.pendingProps);case 24:Js(n,Rt,e.memoizedState.cache)}return Ts(e,n,a)}function Og(e,n,a){if(e!==null)if(e.memoizedProps!==n.pendingProps)It=!0;else{if(!_d(e,a)&&(n.flags&128)===0)return It=!1,lS(e,n,a);It=(e.flags&131072)!==0}else It=!1,Pe&&(n.flags&1048576)!==0&&ph(n,Co,n.index);switch(n.lanes=0,n.tag){case 16:e:{var r=n.pendingProps;if(e=Pa(n.elementType),n.type=e,typeof e=="function")wu(e)?(r=Ga(e,r),n.tag=1,n=Ag(null,n,e,r,a)):(n.tag=0,n=pd(null,n,e,r,a));else{if(e!=null){var f=e.$$typeof;if(f===M){n.tag=11,n=Tg(null,n,e,r,a);break e}else if(f===$){n.tag=14,n=kg(null,n,e,r,a);break e}}throw n=ie(e)||e,Error(o(306,n,""))}}return n;case 0:return pd(e,n,n.type,n.pendingProps,a);case 1:return r=n.type,f=Ga(r,n.pendingProps),Ag(e,n,r,f,a);case 3:e:{if(Ie(n,n.stateNode.containerInfo),e===null)throw Error(o(387));r=n.pendingProps;var p=n.memoizedState;f=p.element,Pu(e,n),Bo(n,r,null,a);var x=n.memoizedState;if(r=x.cache,Js(n,Rt,r),r!==p.cache&&Iu(n,[Rt],a,!0),Oo(),r=x.element,p.isDehydrated)if(p={element:r,isDehydrated:!1,cache:x.cache},n.updateQueue.baseState=p,n.memoizedState=p,n.flags&256){n=Dg(e,n,r,a);break e}else if(r!==f){f=Cn(Error(o(424)),n),Eo(f),n=Dg(e,n,r,a);break e}else{switch(e=n.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(ft=Mn(e.firstChild),$t=n,Pe=!0,Ks=null,Dn=!0,a=Nh(n,null,r,a),n.child=a;a;)a.flags=a.flags&-3|4096,a=a.sibling}else{if(Ba(),r===f){n=Ts(e,n,a);break e}qt(e,n,r,a)}n=n.child}return n;case 26:return jl(e,n),e===null?(a=Fv(n.type,null,n.pendingProps,null))?n.memoizedState=a:Pe||(a=n.type,e=n.pendingProps,r=Gl(ve.current).createElement(a),r[dt]=n,r[zt]=e,Ft(r,a,e),Pt(r),n.stateNode=r):n.memoizedState=Fv(n.type,e.memoizedProps,n.pendingProps,e.memoizedState),null;case 27:return fn(n),e===null&&Pe&&(r=n.stateNode=$v(n.type,n.pendingProps,ve.current),$t=n,Dn=!0,f=ft,ca(n.type)?(Qd=f,ft=Mn(r.firstChild)):ft=f),qt(e,n,n.pendingProps.children,a),jl(e,n),e===null&&(n.flags|=4194304),n.child;case 5:return e===null&&Pe&&((f=r=ft)&&(r=US(r,n.type,n.pendingProps,Dn),r!==null?(n.stateNode=r,$t=n,ft=Mn(r.firstChild),Dn=!1,f=!0):f=!1),f||Ys(n)),fn(n),f=n.type,p=n.pendingProps,x=e!==null?e.memoizedProps:null,r=p.children,Kd(f,p)?r=null:x!==null&&Kd(f,x)&&(n.flags|=32),n.memoizedState!==null&&(f=Zu(e,n,Q1,null,null,a),nr._currentValue=f),jl(e,n),qt(e,n,r,a),n.child;case 6:return e===null&&Pe&&((e=a=ft)&&(a=zS(a,n.pendingProps,Dn),a!==null?(n.stateNode=a,$t=n,ft=null,e=!0):e=!1),e||Ys(n)),null;case 13:return Rg(e,n,a);case 4:return Ie(n,n.stateNode.containerInfo),r=n.pendingProps,e===null?n.child=Ha(n,null,r,a):qt(e,n,r,a),n.child;case 11:return Tg(e,n,n.type,n.pendingProps,a);case 7:return qt(e,n,n.pendingProps,a),n.child;case 8:return qt(e,n,n.pendingProps.children,a),n.child;case 12:return qt(e,n,n.pendingProps.children,a),n.child;case 10:return r=n.pendingProps,Js(n,n.type,r.value),qt(e,n,r.children,a),n.child;case 9:return f=n.type._context,r=n.pendingProps.children,Ua(n),f=Gt(f),r=r(f),n.flags|=1,qt(e,n,r,a),n.child;case 14:return kg(e,n,n.type,n.pendingProps,a);case 15:return wg(e,n,n.type,n.pendingProps,a);case 19:return Ig(e,n,a);case 31:return rS(e,n,a);case 22:return Ng(e,n,a,n.pendingProps);case 24:return Ua(n),r=Gt(Rt),e===null?(f=Lu(),f===null&&(f=ct,p=Ou(),f.pooledCache=p,p.refCount++,p!==null&&(f.pooledCacheLanes|=a),f=p),n.memoizedState={parent:r,cache:f},zu(n),Js(n,Rt,f)):((e.lanes&a)!==0&&(Pu(e,n),Bo(n,null,null,a),Oo()),f=e.memoizedState,p=n.memoizedState,f.parent!==r?(f={parent:r,cache:r},n.memoizedState=f,n.lanes===0&&(n.memoizedState=n.updateQueue.baseState=f),Js(n,Rt,r)):(r=p.cache,Js(n,Rt,r),r!==f.cache&&Iu(n,[Rt],a,!0))),qt(e,n,n.pendingProps.children,a),n.child;case 29:throw n.pendingProps}throw Error(o(156,n.tag))}function ks(e){e.flags|=4}function xd(e,n,a,r,f){if((n=(e.mode&32)!==0)&&(n=!1),n){if(e.flags|=16777216,(f&335544128)===f)if(e.stateNode.complete)e.flags|=8192;else if(lv())e.flags|=8192;else throw Va=fl,Uu}else e.flags&=-16777217}function Bg(e,n){if(n.type!=="stylesheet"||(n.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!Wv(n))if(lv())e.flags|=8192;else throw Va=fl,Uu}function El(e,n){n!==null&&(e.flags|=4),e.flags&16384&&(n=e.tag!==22?ce():536870912,e.lanes|=n,zi|=n)}function Ho(e,n){if(!Pe)switch(e.tailMode){case"hidden":n=e.tail;for(var a=null;n!==null;)n.alternate!==null&&(a=n),n=n.sibling;a===null?e.tail=null:a.sibling=null;break;case"collapsed":a=e.tail;for(var r=null;a!==null;)a.alternate!==null&&(r=a),a=a.sibling;r===null?n||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function pt(e){var n=e.alternate!==null&&e.alternate.child===e.child,a=0,r=0;if(n)for(var f=e.child;f!==null;)a|=f.lanes|f.childLanes,r|=f.subtreeFlags&65011712,r|=f.flags&65011712,f.return=e,f=f.sibling;else for(f=e.child;f!==null;)a|=f.lanes|f.childLanes,r|=f.subtreeFlags,r|=f.flags,f.return=e,f=f.sibling;return e.subtreeFlags|=r,e.childLanes=a,n}function cS(e,n,a){var r=n.pendingProps;switch(Eu(n),n.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return pt(n),null;case 1:return pt(n),null;case 3:return a=n.stateNode,r=null,e!==null&&(r=e.memoizedState.cache),n.memoizedState.cache!==r&&(n.flags|=2048),_s(Rt),yt(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(e===null||e.child===null)&&(Ni(n)?ks(n):e===null||e.memoizedState.isDehydrated&&(n.flags&256)===0||(n.flags|=1024,Du())),pt(n),null;case 26:var f=n.type,p=n.memoizedState;return e===null?(ks(n),p!==null?(pt(n),Bg(n,p)):(pt(n),xd(n,f,null,r,a))):p?p!==e.memoizedState?(ks(n),pt(n),Bg(n,p)):(pt(n),n.flags&=-16777217):(e=e.memoizedProps,e!==r&&ks(n),pt(n),xd(n,f,e,r,a)),null;case 27:if(B(n),a=ve.current,f=n.type,e!==null&&n.stateNode!=null)e.memoizedProps!==r&&ks(n);else{if(!r){if(n.stateNode===null)throw Error(o(166));return pt(n),null}e=Me.current,Ni(n)?hh(n):(e=$v(f,r,a),n.stateNode=e,ks(n))}return pt(n),null;case 5:if(B(n),f=n.type,e!==null&&n.stateNode!=null)e.memoizedProps!==r&&ks(n);else{if(!r){if(n.stateNode===null)throw Error(o(166));return pt(n),null}if(p=Me.current,Ni(n))hh(n);else{var x=Gl(ve.current);switch(p){case 1:p=x.createElementNS("http://www.w3.org/2000/svg",f);break;case 2:p=x.createElementNS("http://www.w3.org/1998/Math/MathML",f);break;default:switch(f){case"svg":p=x.createElementNS("http://www.w3.org/2000/svg",f);break;case"math":p=x.createElementNS("http://www.w3.org/1998/Math/MathML",f);break;case"script":p=x.createElement("div"),p.innerHTML="<script><\/script>",p=p.removeChild(p.firstChild);break;case"select":p=typeof r.is=="string"?x.createElement("select",{is:r.is}):x.createElement("select"),r.multiple?p.multiple=!0:r.size&&(p.size=r.size);break;default:p=typeof r.is=="string"?x.createElement(f,{is:r.is}):x.createElement(f)}}p[dt]=n,p[zt]=r;e:for(x=n.child;x!==null;){if(x.tag===5||x.tag===6)p.appendChild(x.stateNode);else if(x.tag!==4&&x.tag!==27&&x.child!==null){x.child.return=x,x=x.child;continue}if(x===n)break e;for(;x.sibling===null;){if(x.return===null||x.return===n)break e;x=x.return}x.sibling.return=x.return,x=x.sibling}n.stateNode=p;e:switch(Ft(p,f,r),f){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}r&&ks(n)}}return pt(n),xd(n,n.type,e===null?null:e.memoizedProps,n.pendingProps,a),null;case 6:if(e&&n.stateNode!=null)e.memoizedProps!==r&&ks(n);else{if(typeof r!="string"&&n.stateNode===null)throw Error(o(166));if(e=ve.current,Ni(n)){if(e=n.stateNode,a=n.memoizedProps,r=null,f=$t,f!==null)switch(f.tag){case 27:case 5:r=f.memoizedProps}e[dt]=n,e=!!(e.nodeValue===a||r!==null&&r.suppressHydrationWarning===!0||Rv(e.nodeValue,a)),e||Ys(n,!0)}else e=Gl(e).createTextNode(r),e[dt]=n,n.stateNode=e}return pt(n),null;case 31:if(a=n.memoizedState,e===null||e.memoizedState!==null){if(r=Ni(n),a!==null){if(e===null){if(!r)throw Error(o(318));if(e=n.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(557));e[dt]=n}else Ba(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;pt(n),e=!1}else a=Du(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),e=!0;if(!e)return n.flags&256?(gn(n),n):(gn(n),null);if((n.flags&128)!==0)throw Error(o(558))}return pt(n),null;case 13:if(r=n.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(f=Ni(n),r!==null&&r.dehydrated!==null){if(e===null){if(!f)throw Error(o(318));if(f=n.memoizedState,f=f!==null?f.dehydrated:null,!f)throw Error(o(317));f[dt]=n}else Ba(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;pt(n),f=!1}else f=Du(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=f),f=!0;if(!f)return n.flags&256?(gn(n),n):(gn(n),null)}return gn(n),(n.flags&128)!==0?(n.lanes=a,n):(a=r!==null,e=e!==null&&e.memoizedState!==null,a&&(r=n.child,f=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(f=r.alternate.memoizedState.cachePool.pool),p=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(p=r.memoizedState.cachePool.pool),p!==f&&(r.flags|=2048)),a!==e&&a&&(n.child.flags|=8192),El(n,n.updateQueue),pt(n),null);case 4:return yt(),e===null&&$d(n.stateNode.containerInfo),pt(n),null;case 10:return _s(n.type),pt(n),null;case 19:if(Ne(Ct),r=n.memoizedState,r===null)return pt(n),null;if(f=(n.flags&128)!==0,p=r.rendering,p===null)if(f)Ho(r,!1);else{if(Tt!==0||e!==null&&(e.flags&128)!==0)for(e=n.child;e!==null;){if(p=gl(e),p!==null){for(n.flags|=128,Ho(r,!1),e=p.updateQueue,n.updateQueue=e,El(n,e),n.subtreeFlags=0,e=a,a=n.child;a!==null;)uh(a,e),a=a.sibling;return ke(Ct,Ct.current&1|2),Pe&&ys(n,r.treeForkCount),n.child}e=e.sibling}r.tail!==null&&We()>Il&&(n.flags|=128,f=!0,Ho(r,!1),n.lanes=4194304)}else{if(!f)if(e=gl(p),e!==null){if(n.flags|=128,f=!0,e=e.updateQueue,n.updateQueue=e,El(n,e),Ho(r,!0),r.tail===null&&r.tailMode==="hidden"&&!p.alternate&&!Pe)return pt(n),null}else 2*We()-r.renderingStartTime>Il&&a!==536870912&&(n.flags|=128,f=!0,Ho(r,!1),n.lanes=4194304);r.isBackwards?(p.sibling=n.child,n.child=p):(e=r.last,e!==null?e.sibling=p:n.child=p,r.last=p)}return r.tail!==null?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=We(),e.sibling=null,a=Ct.current,ke(Ct,f?a&1|2:a&1),Pe&&ys(n,r.treeForkCount),e):(pt(n),null);case 22:case 23:return gn(n),Gu(),r=n.memoizedState!==null,e!==null?e.memoizedState!==null!==r&&(n.flags|=8192):r&&(n.flags|=8192),r?(a&536870912)!==0&&(n.flags&128)===0&&(pt(n),n.subtreeFlags&6&&(n.flags|=8192)):pt(n),a=n.updateQueue,a!==null&&El(n,a.retryQueue),a=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),r=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(r=n.memoizedState.cachePool.pool),r!==a&&(n.flags|=2048),e!==null&&Ne(za),null;case 24:return a=null,e!==null&&(a=e.memoizedState.cache),n.memoizedState.cache!==a&&(n.flags|=2048),_s(Rt),pt(n),null;case 25:return null;case 30:return null}throw Error(o(156,n.tag))}function uS(e,n){switch(Eu(n),n.tag){case 1:return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return _s(Rt),yt(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 26:case 27:case 5:return B(n),null;case 31:if(n.memoizedState!==null){if(gn(n),n.alternate===null)throw Error(o(340));Ba()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 13:if(gn(n),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(o(340));Ba()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return Ne(Ct),null;case 4:return yt(),null;case 10:return _s(n.type),null;case 22:case 23:return gn(n),Gu(),e!==null&&Ne(za),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 24:return _s(Rt),null;case 25:return null;default:return null}}function Lg(e,n){switch(Eu(n),n.tag){case 3:_s(Rt),yt();break;case 26:case 27:case 5:B(n);break;case 4:yt();break;case 31:n.memoizedState!==null&&gn(n);break;case 13:gn(n);break;case 19:Ne(Ct);break;case 10:_s(n.type);break;case 22:case 23:gn(n),Gu(),e!==null&&Ne(za);break;case 24:_s(Rt)}}function $o(e,n){try{var a=n.updateQueue,r=a!==null?a.lastEffect:null;if(r!==null){var f=r.next;a=f;do{if((a.tag&e)===e){r=void 0;var p=a.create,x=a.inst;r=p(),x.destroy=r}a=a.next}while(a!==f)}}catch(k){st(n,n.return,k)}}function na(e,n,a){try{var r=n.updateQueue,f=r!==null?r.lastEffect:null;if(f!==null){var p=f.next;r=p;do{if((r.tag&e)===e){var x=r.inst,k=x.destroy;if(k!==void 0){x.destroy=void 0,f=n;var R=a,H=k;try{H()}catch(Y){st(f,R,Y)}}}r=r.next}while(r!==p)}}catch(Y){st(n,n.return,Y)}}function Ug(e){var n=e.updateQueue;if(n!==null){var a=e.stateNode;try{Ch(n,a)}catch(r){st(e,e.return,r)}}}function zg(e,n,a){a.props=Ga(e.type,e.memoizedProps),a.state=e.memoizedState;try{a.componentWillUnmount()}catch(r){st(e,n,r)}}function Go(e,n){try{var a=e.ref;if(a!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof a=="function"?e.refCleanup=a(r):a.current=r}}catch(f){st(e,n,f)}}function as(e,n){var a=e.ref,r=e.refCleanup;if(a!==null)if(typeof r=="function")try{r()}catch(f){st(e,n,f)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(f){st(e,n,f)}else a.current=null}function Pg(e){var n=e.type,a=e.memoizedProps,r=e.stateNode;try{e:switch(n){case"button":case"input":case"select":case"textarea":a.autoFocus&&r.focus();break e;case"img":a.src?r.src=a.src:a.srcSet&&(r.srcset=a.srcSet)}}catch(f){st(e,e.return,f)}}function Sd(e,n,a){try{var r=e.stateNode;RS(r,e.type,a,n),r[zt]=n}catch(f){st(e,e.return,f)}}function Vg(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&ca(e.type)||e.tag===4}function Td(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Vg(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&ca(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function kd(e,n,a){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(e,n):(n=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,n.appendChild(e),a=a._reactRootContainer,a!=null||n.onclick!==null||(n.onclick=hs));else if(r!==4&&(r===27&&ca(e.type)&&(a=e.stateNode,n=null),e=e.child,e!==null))for(kd(e,n,a),e=e.sibling;e!==null;)kd(e,n,a),e=e.sibling}function Al(e,n,a){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?a.insertBefore(e,n):a.appendChild(e);else if(r!==4&&(r===27&&ca(e.type)&&(a=e.stateNode),e=e.child,e!==null))for(Al(e,n,a),e=e.sibling;e!==null;)Al(e,n,a),e=e.sibling}function Hg(e){var n=e.stateNode,a=e.memoizedProps;try{for(var r=e.type,f=n.attributes;f.length;)n.removeAttributeNode(f[0]);Ft(n,r,a),n[dt]=e,n[zt]=a}catch(p){st(e,e.return,p)}}var ws=!1,Ot=!1,wd=!1,$g=typeof WeakSet=="function"?WeakSet:Set,Vt=null;function dS(e,n){if(e=e.containerInfo,Fd=Wl,e=th(e),yu(e)){if("selectionStart"in e)var a={start:e.selectionStart,end:e.selectionEnd};else e:{a=(a=e.ownerDocument)&&a.defaultView||window;var r=a.getSelection&&a.getSelection();if(r&&r.rangeCount!==0){a=r.anchorNode;var f=r.anchorOffset,p=r.focusNode;r=r.focusOffset;try{a.nodeType,p.nodeType}catch{a=null;break e}var x=0,k=-1,R=-1,H=0,Y=0,W=e,G=null;t:for(;;){for(var Z;W!==a||f!==0&&W.nodeType!==3||(k=x+f),W!==p||r!==0&&W.nodeType!==3||(R=x+r),W.nodeType===3&&(x+=W.nodeValue.length),(Z=W.firstChild)!==null;)G=W,W=Z;for(;;){if(W===e)break t;if(G===a&&++H===f&&(k=x),G===p&&++Y===r&&(R=x),(Z=W.nextSibling)!==null)break;W=G,G=W.parentNode}W=Z}a=k===-1||R===-1?null:{start:k,end:R}}else a=null}a=a||{start:0,end:0}}else a=null;for(Zd={focusedElem:e,selectionRange:a},Wl=!1,Vt=n;Vt!==null;)if(n=Vt,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,Vt=e;else for(;Vt!==null;){switch(n=Vt,p=n.alternate,e=n.flags,n.tag){case 0:if((e&4)!==0&&(e=n.updateQueue,e=e!==null?e.events:null,e!==null))for(a=0;a<e.length;a++)f=e[a],f.ref.impl=f.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&p!==null){e=void 0,a=n,f=p.memoizedProps,p=p.memoizedState,r=a.stateNode;try{var he=Ga(a.type,f);e=r.getSnapshotBeforeUpdate(he,p),r.__reactInternalSnapshotBeforeUpdate=e}catch(Se){st(a,a.return,Se)}}break;case 3:if((e&1024)!==0){if(e=n.stateNode.containerInfo,a=e.nodeType,a===9)Jd(e);else if(a===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":Jd(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(o(163))}if(e=n.sibling,e!==null){e.return=n.return,Vt=e;break}Vt=n.return}}function Gg(e,n,a){var r=a.flags;switch(a.tag){case 0:case 11:case 15:js(e,a),r&4&&$o(5,a);break;case 1:if(js(e,a),r&4)if(e=a.stateNode,n===null)try{e.componentDidMount()}catch(x){st(a,a.return,x)}else{var f=Ga(a.type,n.memoizedProps);n=n.memoizedState;try{e.componentDidUpdate(f,n,e.__reactInternalSnapshotBeforeUpdate)}catch(x){st(a,a.return,x)}}r&64&&Ug(a),r&512&&Go(a,a.return);break;case 3:if(js(e,a),r&64&&(e=a.updateQueue,e!==null)){if(n=null,a.child!==null)switch(a.child.tag){case 27:case 5:n=a.child.stateNode;break;case 1:n=a.child.stateNode}try{Ch(e,n)}catch(x){st(a,a.return,x)}}break;case 27:n===null&&r&4&&Hg(a);case 26:case 5:js(e,a),n===null&&r&4&&Pg(a),r&512&&Go(a,a.return);break;case 12:js(e,a);break;case 31:js(e,a),r&4&&Zg(e,a);break;case 13:js(e,a),r&4&&Kg(e,a),r&64&&(e=a.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(a=_S.bind(null,a),PS(e,a))));break;case 22:if(r=a.memoizedState!==null||ws,!r){n=n!==null&&n.memoizedState!==null||Ot,f=ws;var p=Ot;ws=r,(Ot=n)&&!p?Cs(e,a,(a.subtreeFlags&8772)!==0):js(e,a),ws=f,Ot=p}break;case 30:break;default:js(e,a)}}function qg(e){var n=e.alternate;n!==null&&(e.alternate=null,qg(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&tu(n)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var bt=null,on=!1;function Ns(e,n,a){for(a=a.child;a!==null;)Fg(e,n,a),a=a.sibling}function Fg(e,n,a){if(Yt&&typeof Yt.onCommitFiberUnmount=="function")try{Yt.onCommitFiberUnmount(qs,a)}catch{}switch(a.tag){case 26:Ot||as(a,n),Ns(e,n,a),a.memoizedState?a.memoizedState.count--:a.stateNode&&(a=a.stateNode,a.parentNode.removeChild(a));break;case 27:Ot||as(a,n);var r=bt,f=on;ca(a.type)&&(bt=a.stateNode,on=!1),Ns(e,n,a),Qo(a.stateNode),bt=r,on=f;break;case 5:Ot||as(a,n);case 6:if(r=bt,f=on,bt=null,Ns(e,n,a),bt=r,on=f,bt!==null)if(on)try{(bt.nodeType===9?bt.body:bt.nodeName==="HTML"?bt.ownerDocument.body:bt).removeChild(a.stateNode)}catch(p){st(a,n,p)}else try{bt.removeChild(a.stateNode)}catch(p){st(a,n,p)}break;case 18:bt!==null&&(on?(e=bt,Uv(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,a.stateNode),Zi(e)):Uv(bt,a.stateNode));break;case 4:r=bt,f=on,bt=a.stateNode.containerInfo,on=!0,Ns(e,n,a),bt=r,on=f;break;case 0:case 11:case 14:case 15:na(2,a,n),Ot||na(4,a,n),Ns(e,n,a);break;case 1:Ot||(as(a,n),r=a.stateNode,typeof r.componentWillUnmount=="function"&&zg(a,n,r)),Ns(e,n,a);break;case 21:Ns(e,n,a);break;case 22:Ot=(r=Ot)||a.memoizedState!==null,Ns(e,n,a),Ot=r;break;default:Ns(e,n,a)}}function Zg(e,n){if(n.memoizedState===null&&(e=n.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Zi(e)}catch(a){st(n,n.return,a)}}}function Kg(e,n){if(n.memoizedState===null&&(e=n.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Zi(e)}catch(a){st(n,n.return,a)}}function fS(e){switch(e.tag){case 31:case 13:case 19:var n=e.stateNode;return n===null&&(n=e.stateNode=new $g),n;case 22:return e=e.stateNode,n=e._retryCache,n===null&&(n=e._retryCache=new $g),n;default:throw Error(o(435,e.tag))}}function Dl(e,n){var a=fS(e);n.forEach(function(r){if(!a.has(r)){a.add(r);var f=xS.bind(null,e,r);r.then(f,f)}})}function rn(e,n){var a=n.deletions;if(a!==null)for(var r=0;r<a.length;r++){var f=a[r],p=e,x=n,k=x;e:for(;k!==null;){switch(k.tag){case 27:if(ca(k.type)){bt=k.stateNode,on=!1;break e}break;case 5:bt=k.stateNode,on=!1;break e;case 3:case 4:bt=k.stateNode.containerInfo,on=!0;break e}k=k.return}if(bt===null)throw Error(o(160));Fg(p,x,f),bt=null,on=!1,p=f.alternate,p!==null&&(p.return=null),f.return=null}if(n.subtreeFlags&13886)for(n=n.child;n!==null;)Yg(n,e),n=n.sibling}var qn=null;function Yg(e,n){var a=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:rn(n,e),ln(e),r&4&&(na(3,e,e.return),$o(3,e),na(5,e,e.return));break;case 1:rn(n,e),ln(e),r&512&&(Ot||a===null||as(a,a.return)),r&64&&ws&&(e=e.updateQueue,e!==null&&(r=e.callbacks,r!==null&&(a=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=a===null?r:a.concat(r))));break;case 26:var f=qn;if(rn(n,e),ln(e),r&512&&(Ot||a===null||as(a,a.return)),r&4){var p=a!==null?a.memoizedState:null;if(r=e.memoizedState,a===null)if(r===null)if(e.stateNode===null){e:{r=e.type,a=e.memoizedProps,f=f.ownerDocument||f;t:switch(r){case"title":p=f.getElementsByTagName("title")[0],(!p||p[vo]||p[dt]||p.namespaceURI==="http://www.w3.org/2000/svg"||p.hasAttribute("itemprop"))&&(p=f.createElement(r),f.head.insertBefore(p,f.querySelector("head > title"))),Ft(p,r,a),p[dt]=e,Pt(p),r=p;break e;case"link":var x=Yv("link","href",f).get(r+(a.href||""));if(x){for(var k=0;k<x.length;k++)if(p=x[k],p.getAttribute("href")===(a.href==null||a.href===""?null:a.href)&&p.getAttribute("rel")===(a.rel==null?null:a.rel)&&p.getAttribute("title")===(a.title==null?null:a.title)&&p.getAttribute("crossorigin")===(a.crossOrigin==null?null:a.crossOrigin)){x.splice(k,1);break t}}p=f.createElement(r),Ft(p,r,a),f.head.appendChild(p);break;case"meta":if(x=Yv("meta","content",f).get(r+(a.content||""))){for(k=0;k<x.length;k++)if(p=x[k],p.getAttribute("content")===(a.content==null?null:""+a.content)&&p.getAttribute("name")===(a.name==null?null:a.name)&&p.getAttribute("property")===(a.property==null?null:a.property)&&p.getAttribute("http-equiv")===(a.httpEquiv==null?null:a.httpEquiv)&&p.getAttribute("charset")===(a.charSet==null?null:a.charSet)){x.splice(k,1);break t}}p=f.createElement(r),Ft(p,r,a),f.head.appendChild(p);break;default:throw Error(o(468,r))}p[dt]=e,Pt(p),r=p}e.stateNode=r}else Jv(f,e.type,e.stateNode);else e.stateNode=Kv(f,r,e.memoizedProps);else p!==r?(p===null?a.stateNode!==null&&(a=a.stateNode,a.parentNode.removeChild(a)):p.count--,r===null?Jv(f,e.type,e.stateNode):Kv(f,r,e.memoizedProps)):r===null&&e.stateNode!==null&&Sd(e,e.memoizedProps,a.memoizedProps)}break;case 27:rn(n,e),ln(e),r&512&&(Ot||a===null||as(a,a.return)),a!==null&&r&4&&Sd(e,e.memoizedProps,a.memoizedProps);break;case 5:if(rn(n,e),ln(e),r&512&&(Ot||a===null||as(a,a.return)),e.flags&32){f=e.stateNode;try{gi(f,"")}catch(he){st(e,e.return,he)}}r&4&&e.stateNode!=null&&(f=e.memoizedProps,Sd(e,f,a!==null?a.memoizedProps:f)),r&1024&&(wd=!0);break;case 6:if(rn(n,e),ln(e),r&4){if(e.stateNode===null)throw Error(o(162));r=e.memoizedProps,a=e.stateNode;try{a.nodeValue=r}catch(he){st(e,e.return,he)}}break;case 3:if(Zl=null,f=qn,qn=ql(n.containerInfo),rn(n,e),qn=f,ln(e),r&4&&a!==null&&a.memoizedState.isDehydrated)try{Zi(n.containerInfo)}catch(he){st(e,e.return,he)}wd&&(wd=!1,Jg(e));break;case 4:r=qn,qn=ql(e.stateNode.containerInfo),rn(n,e),ln(e),qn=r;break;case 12:rn(n,e),ln(e);break;case 31:rn(n,e),ln(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,Dl(e,r)));break;case 13:rn(n,e),ln(e),e.child.flags&8192&&e.memoizedState!==null!=(a!==null&&a.memoizedState!==null)&&(Ml=We()),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,Dl(e,r)));break;case 22:f=e.memoizedState!==null;var R=a!==null&&a.memoizedState!==null,H=ws,Y=Ot;if(ws=H||f,Ot=Y||R,rn(n,e),Ot=Y,ws=H,ln(e),r&8192)e:for(n=e.stateNode,n._visibility=f?n._visibility&-2:n._visibility|1,f&&(a===null||R||ws||Ot||qa(e)),a=null,n=e;;){if(n.tag===5||n.tag===26){if(a===null){R=a=n;try{if(p=R.stateNode,f)x=p.style,typeof x.setProperty=="function"?x.setProperty("display","none","important"):x.display="none";else{k=R.stateNode;var W=R.memoizedProps.style,G=W!=null&&W.hasOwnProperty("display")?W.display:null;k.style.display=G==null||typeof G=="boolean"?"":(""+G).trim()}}catch(he){st(R,R.return,he)}}}else if(n.tag===6){if(a===null){R=n;try{R.stateNode.nodeValue=f?"":R.memoizedProps}catch(he){st(R,R.return,he)}}}else if(n.tag===18){if(a===null){R=n;try{var Z=R.stateNode;f?zv(Z,!0):zv(R.stateNode,!1)}catch(he){st(R,R.return,he)}}}else if((n.tag!==22&&n.tag!==23||n.memoizedState===null||n===e)&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break e;for(;n.sibling===null;){if(n.return===null||n.return===e)break e;a===n&&(a=null),n=n.return}a===n&&(a=null),n.sibling.return=n.return,n=n.sibling}r&4&&(r=e.updateQueue,r!==null&&(a=r.retryQueue,a!==null&&(r.retryQueue=null,Dl(e,a))));break;case 19:rn(n,e),ln(e),r&4&&(r=e.updateQueue,r!==null&&(e.updateQueue=null,Dl(e,r)));break;case 30:break;case 21:break;default:rn(n,e),ln(e)}}function ln(e){var n=e.flags;if(n&2){try{for(var a,r=e.return;r!==null;){if(Vg(r)){a=r;break}r=r.return}if(a==null)throw Error(o(160));switch(a.tag){case 27:var f=a.stateNode,p=Td(e);Al(e,p,f);break;case 5:var x=a.stateNode;a.flags&32&&(gi(x,""),a.flags&=-33);var k=Td(e);Al(e,k,x);break;case 3:case 4:var R=a.stateNode.containerInfo,H=Td(e);kd(e,H,R);break;default:throw Error(o(161))}}catch(Y){st(e,e.return,Y)}e.flags&=-3}n&4096&&(e.flags&=-4097)}function Jg(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var n=e;Jg(n),n.tag===5&&n.flags&1024&&n.stateNode.reset(),e=e.sibling}}function js(e,n){if(n.subtreeFlags&8772)for(n=n.child;n!==null;)Gg(e,n.alternate,n),n=n.sibling}function qa(e){for(e=e.child;e!==null;){var n=e;switch(n.tag){case 0:case 11:case 14:case 15:na(4,n,n.return),qa(n);break;case 1:as(n,n.return);var a=n.stateNode;typeof a.componentWillUnmount=="function"&&zg(n,n.return,a),qa(n);break;case 27:Qo(n.stateNode);case 26:case 5:as(n,n.return),qa(n);break;case 22:n.memoizedState===null&&qa(n);break;case 30:qa(n);break;default:qa(n)}e=e.sibling}}function Cs(e,n,a){for(a=a&&(n.subtreeFlags&8772)!==0,n=n.child;n!==null;){var r=n.alternate,f=e,p=n,x=p.flags;switch(p.tag){case 0:case 11:case 15:Cs(f,p,a),$o(4,p);break;case 1:if(Cs(f,p,a),r=p,f=r.stateNode,typeof f.componentDidMount=="function")try{f.componentDidMount()}catch(H){st(r,r.return,H)}if(r=p,f=r.updateQueue,f!==null){var k=r.stateNode;try{var R=f.shared.hiddenCallbacks;if(R!==null)for(f.shared.hiddenCallbacks=null,f=0;f<R.length;f++)jh(R[f],k)}catch(H){st(r,r.return,H)}}a&&x&64&&Ug(p),Go(p,p.return);break;case 27:Hg(p);case 26:case 5:Cs(f,p,a),a&&r===null&&x&4&&Pg(p),Go(p,p.return);break;case 12:Cs(f,p,a);break;case 31:Cs(f,p,a),a&&x&4&&Zg(f,p);break;case 13:Cs(f,p,a),a&&x&4&&Kg(f,p);break;case 22:p.memoizedState===null&&Cs(f,p,a),Go(p,p.return);break;case 30:break;default:Cs(f,p,a)}n=n.sibling}}function Nd(e,n){var a=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),e=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(e=n.memoizedState.cachePool.pool),e!==a&&(e!=null&&e.refCount++,a!=null&&Ao(a))}function jd(e,n){e=null,n.alternate!==null&&(e=n.alternate.memoizedState.cache),n=n.memoizedState.cache,n!==e&&(n.refCount++,e!=null&&Ao(e))}function Fn(e,n,a,r){if(n.subtreeFlags&10256)for(n=n.child;n!==null;)Wg(e,n,a,r),n=n.sibling}function Wg(e,n,a,r){var f=n.flags;switch(n.tag){case 0:case 11:case 15:Fn(e,n,a,r),f&2048&&$o(9,n);break;case 1:Fn(e,n,a,r);break;case 3:Fn(e,n,a,r),f&2048&&(e=null,n.alternate!==null&&(e=n.alternate.memoizedState.cache),n=n.memoizedState.cache,n!==e&&(n.refCount++,e!=null&&Ao(e)));break;case 12:if(f&2048){Fn(e,n,a,r),e=n.stateNode;try{var p=n.memoizedProps,x=p.id,k=p.onPostCommit;typeof k=="function"&&k(x,n.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(R){st(n,n.return,R)}}else Fn(e,n,a,r);break;case 31:Fn(e,n,a,r);break;case 13:Fn(e,n,a,r);break;case 23:break;case 22:p=n.stateNode,x=n.alternate,n.memoizedState!==null?p._visibility&2?Fn(e,n,a,r):qo(e,n):p._visibility&2?Fn(e,n,a,r):(p._visibility|=2,Bi(e,n,a,r,(n.subtreeFlags&10256)!==0||!1)),f&2048&&Nd(x,n);break;case 24:Fn(e,n,a,r),f&2048&&jd(n.alternate,n);break;default:Fn(e,n,a,r)}}function Bi(e,n,a,r,f){for(f=f&&((n.subtreeFlags&10256)!==0||!1),n=n.child;n!==null;){var p=e,x=n,k=a,R=r,H=x.flags;switch(x.tag){case 0:case 11:case 15:Bi(p,x,k,R,f),$o(8,x);break;case 23:break;case 22:var Y=x.stateNode;x.memoizedState!==null?Y._visibility&2?Bi(p,x,k,R,f):qo(p,x):(Y._visibility|=2,Bi(p,x,k,R,f)),f&&H&2048&&Nd(x.alternate,x);break;case 24:Bi(p,x,k,R,f),f&&H&2048&&jd(x.alternate,x);break;default:Bi(p,x,k,R,f)}n=n.sibling}}function qo(e,n){if(n.subtreeFlags&10256)for(n=n.child;n!==null;){var a=e,r=n,f=r.flags;switch(r.tag){case 22:qo(a,r),f&2048&&Nd(r.alternate,r);break;case 24:qo(a,r),f&2048&&jd(r.alternate,r);break;default:qo(a,r)}n=n.sibling}}var Fo=8192;function Li(e,n,a){if(e.subtreeFlags&Fo)for(e=e.child;e!==null;)Xg(e,n,a),e=e.sibling}function Xg(e,n,a){switch(e.tag){case 26:Li(e,n,a),e.flags&Fo&&e.memoizedState!==null&&XS(a,qn,e.memoizedState,e.memoizedProps);break;case 5:Li(e,n,a);break;case 3:case 4:var r=qn;qn=ql(e.stateNode.containerInfo),Li(e,n,a),qn=r;break;case 22:e.memoizedState===null&&(r=e.alternate,r!==null&&r.memoizedState!==null?(r=Fo,Fo=16777216,Li(e,n,a),Fo=r):Li(e,n,a));break;default:Li(e,n,a)}}function Qg(e){var n=e.alternate;if(n!==null&&(e=n.child,e!==null)){n.child=null;do n=e.sibling,e.sibling=null,e=n;while(e!==null)}}function Zo(e){var n=e.deletions;if((e.flags&16)!==0){if(n!==null)for(var a=0;a<n.length;a++){var r=n[a];Vt=r,tv(r,e)}Qg(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)ev(e),e=e.sibling}function ev(e){switch(e.tag){case 0:case 11:case 15:Zo(e),e.flags&2048&&na(9,e,e.return);break;case 3:Zo(e);break;case 12:Zo(e);break;case 22:var n=e.stateNode;e.memoizedState!==null&&n._visibility&2&&(e.return===null||e.return.tag!==13)?(n._visibility&=-3,Rl(e)):Zo(e);break;default:Zo(e)}}function Rl(e){var n=e.deletions;if((e.flags&16)!==0){if(n!==null)for(var a=0;a<n.length;a++){var r=n[a];Vt=r,tv(r,e)}Qg(e)}for(e=e.child;e!==null;){switch(n=e,n.tag){case 0:case 11:case 15:na(8,n,n.return),Rl(n);break;case 22:a=n.stateNode,a._visibility&2&&(a._visibility&=-3,Rl(n));break;default:Rl(n)}e=e.sibling}}function tv(e,n){for(;Vt!==null;){var a=Vt;switch(a.tag){case 0:case 11:case 15:na(8,a,n);break;case 23:case 22:if(a.memoizedState!==null&&a.memoizedState.cachePool!==null){var r=a.memoizedState.cachePool.pool;r!=null&&r.refCount++}break;case 24:Ao(a.memoizedState.cache)}if(r=a.child,r!==null)r.return=a,Vt=r;else e:for(a=e;Vt!==null;){r=Vt;var f=r.sibling,p=r.return;if(qg(r),r===a){Vt=null;break e}if(f!==null){f.return=p,Vt=f;break e}Vt=p}}}var pS={getCacheForType:function(e){var n=Gt(Rt),a=n.data.get(e);return a===void 0&&(a=e(),n.data.set(e,a)),a},cacheSignal:function(){return Gt(Rt).controller.signal}},mS=typeof WeakMap=="function"?WeakMap:Map,Xe=0,ct=null,Oe=null,Ue=0,nt=0,vn=null,sa=!1,Ui=!1,Cd=!1,Es=0,Tt=0,aa=0,Fa=0,Ed=0,yn=0,zi=0,Ko=null,cn=null,Ad=!1,Ml=0,nv=0,Il=1/0,Ol=null,ia=null,Lt=0,oa=null,Pi=null,As=0,Dd=0,Rd=null,sv=null,Yo=0,Md=null;function bn(){return(Xe&2)!==0&&Ue!==0?Ue&-Ue:O.T!==null?zd():Ht()}function av(){if(yn===0)if((Ue&536870912)===0||Pe){var e=Ca;Ca<<=1,(Ca&3932160)===0&&(Ca=262144),yn=e}else yn=536870912;return e=hn.current,e!==null&&(e.flags|=32),yn}function un(e,n,a){(e===ct&&(nt===2||nt===9)||e.cancelPendingCommit!==null)&&(Vi(e,0),ra(e,Ue,yn,!1)),Le(e,a),((Xe&2)===0||e!==ct)&&(e===ct&&((Xe&2)===0&&(Fa|=a),Tt===4&&ra(e,Ue,yn,!1)),is(e))}function iv(e,n,a){if((Xe&6)!==0)throw Error(o(327));var r=!a&&(n&127)===0&&(n&e.expiredLanes)===0||Q(e,n),f=r?vS(e,n):Od(e,n,!0),p=r;do{if(f===0){Ui&&!r&&ra(e,n,0,!1);break}else{if(a=e.current.alternate,p&&!hS(a)){f=Od(e,n,!1),p=!1;continue}if(f===2){if(p=n,e.errorRecoveryDisabledLanes&p)var x=0;else x=e.pendingLanes&-536870913,x=x!==0?x:x&536870912?536870912:0;if(x!==0){n=x;e:{var k=e;f=Ko;var R=k.current.memoizedState.isDehydrated;if(R&&(Vi(k,x).flags|=256),x=Od(k,x,!1),x!==2){if(Cd&&!R){k.errorRecoveryDisabledLanes|=p,Fa|=p,f=4;break e}p=cn,cn=f,p!==null&&(cn===null?cn=p:cn.push.apply(cn,p))}f=x}if(p=!1,f!==2)continue}}if(f===1){Vi(e,0),ra(e,n,0,!0);break}e:{switch(r=e,p=f,p){case 0:case 1:throw Error(o(345));case 4:if((n&4194048)!==n)break;case 6:ra(r,n,yn,!sa);break e;case 2:cn=null;break;case 3:case 5:break;default:throw Error(o(329))}if((n&62914560)===n&&(f=Ml+300-We(),10<f)){if(ra(r,n,yn,!sa),P(r,0,!0)!==0)break e;As=n,r.timeoutHandle=Bv(ov.bind(null,r,a,cn,Ol,Ad,n,yn,Fa,zi,sa,p,"Throttled",-0,0),f);break e}ov(r,a,cn,Ol,Ad,n,yn,Fa,zi,sa,p,null,-0,0)}}break}while(!0);is(e)}function ov(e,n,a,r,f,p,x,k,R,H,Y,W,G,Z){if(e.timeoutHandle=-1,W=n.subtreeFlags,W&8192||(W&16785408)===16785408){W={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:hs},Xg(n,p,W);var he=(p&62914560)===p?Ml-We():(p&4194048)===p?nv-We():0;if(he=QS(W,he),he!==null){As=p,e.cancelPendingCommit=he(mv.bind(null,e,n,p,a,r,f,x,k,R,Y,W,null,G,Z)),ra(e,p,x,!H);return}}mv(e,n,p,a,r,f,x,k,R)}function hS(e){for(var n=e;;){var a=n.tag;if((a===0||a===11||a===15)&&n.flags&16384&&(a=n.updateQueue,a!==null&&(a=a.stores,a!==null)))for(var r=0;r<a.length;r++){var f=a[r],p=f.getSnapshot;f=f.value;try{if(!pn(p(),f))return!1}catch{return!1}}if(a=n.child,n.subtreeFlags&16384&&a!==null)a.return=n,n=a;else{if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return!0;n=n.return}n.sibling.return=n.return,n=n.sibling}}return!0}function ra(e,n,a,r){n&=~Ed,n&=~Fa,e.suspendedLanes|=n,e.pingedLanes&=~n,r&&(e.warmLanes|=n),r=e.expirationTimes;for(var f=n;0<f;){var p=31-Jt(f),x=1<<p;r[p]=-1,f&=~x}a!==0&&Ce(e,a,n)}function Bl(){return(Xe&6)===0?(Jo(0),!1):!0}function Id(){if(Oe!==null){if(nt===0)var e=Oe.return;else e=Oe,bs=La=null,Ju(e),Di=null,Ro=0,e=Oe;for(;e!==null;)Lg(e.alternate,e),e=e.return;Oe=null}}function Vi(e,n){var a=e.timeoutHandle;a!==-1&&(e.timeoutHandle=-1,OS(a)),a=e.cancelPendingCommit,a!==null&&(e.cancelPendingCommit=null,a()),As=0,Id(),ct=e,Oe=a=vs(e.current,null),Ue=n,nt=0,vn=null,sa=!1,Ui=Q(e,n),Cd=!1,zi=yn=Ed=Fa=aa=Tt=0,cn=Ko=null,Ad=!1,(n&8)!==0&&(n|=n&32);var r=e.entangledLanes;if(r!==0)for(e=e.entanglements,r&=n;0<r;){var f=31-Jt(r),p=1<<f;n|=e[f],r&=~p}return Es=n,sl(),a}function rv(e,n){Ee=null,O.H=Po,n===Ai||n===dl?(n=Th(),nt=3):n===Uu?(n=Th(),nt=4):nt=n===fd?8:n!==null&&typeof n=="object"&&typeof n.then=="function"?6:1,vn=n,Oe===null&&(Tt=1,wl(e,Cn(n,e.current)))}function lv(){var e=hn.current;return e===null?!0:(Ue&4194048)===Ue?Rn===null:(Ue&62914560)===Ue||(Ue&536870912)!==0?e===Rn:!1}function cv(){var e=O.H;return O.H=Po,e===null?Po:e}function uv(){var e=O.A;return O.A=pS,e}function Ll(){Tt=4,sa||(Ue&4194048)!==Ue&&hn.current!==null||(Ui=!0),(aa&134217727)===0&&(Fa&134217727)===0||ct===null||ra(ct,Ue,yn,!1)}function Od(e,n,a){var r=Xe;Xe|=2;var f=cv(),p=uv();(ct!==e||Ue!==n)&&(Ol=null,Vi(e,n)),n=!1;var x=Tt;e:do try{if(nt!==0&&Oe!==null){var k=Oe,R=vn;switch(nt){case 8:Id(),x=6;break e;case 3:case 2:case 9:case 6:hn.current===null&&(n=!0);var H=nt;if(nt=0,vn=null,Hi(e,k,R,H),a&&Ui){x=0;break e}break;default:H=nt,nt=0,vn=null,Hi(e,k,R,H)}}gS(),x=Tt;break}catch(Y){rv(e,Y)}while(!0);return n&&e.shellSuspendCounter++,bs=La=null,Xe=r,O.H=f,O.A=p,Oe===null&&(ct=null,Ue=0,sl()),x}function gS(){for(;Oe!==null;)dv(Oe)}function vS(e,n){var a=Xe;Xe|=2;var r=cv(),f=uv();ct!==e||Ue!==n?(Ol=null,Il=We()+500,Vi(e,n)):Ui=Q(e,n);e:do try{if(nt!==0&&Oe!==null){n=Oe;var p=vn;t:switch(nt){case 1:nt=0,vn=null,Hi(e,n,p,1);break;case 2:case 9:if(xh(p)){nt=0,vn=null,fv(n);break}n=function(){nt!==2&&nt!==9||ct!==e||(nt=7),is(e)},p.then(n,n);break e;case 3:nt=7;break e;case 4:nt=5;break e;case 7:xh(p)?(nt=0,vn=null,fv(n)):(nt=0,vn=null,Hi(e,n,p,7));break;case 5:var x=null;switch(Oe.tag){case 26:x=Oe.memoizedState;case 5:case 27:var k=Oe;if(x?Wv(x):k.stateNode.complete){nt=0,vn=null;var R=k.sibling;if(R!==null)Oe=R;else{var H=k.return;H!==null?(Oe=H,Ul(H)):Oe=null}break t}}nt=0,vn=null,Hi(e,n,p,5);break;case 6:nt=0,vn=null,Hi(e,n,p,6);break;case 8:Id(),Tt=6;break e;default:throw Error(o(462))}}yS();break}catch(Y){rv(e,Y)}while(!0);return bs=La=null,O.H=r,O.A=f,Xe=a,Oe!==null?0:(ct=null,Ue=0,sl(),Tt)}function yS(){for(;Oe!==null&&!Hn();)dv(Oe)}function dv(e){var n=Og(e.alternate,e,Es);e.memoizedProps=e.pendingProps,n===null?Ul(e):Oe=n}function fv(e){var n=e,a=n.alternate;switch(n.tag){case 15:case 0:n=Eg(a,n,n.pendingProps,n.type,void 0,Ue);break;case 11:n=Eg(a,n,n.pendingProps,n.type.render,n.ref,Ue);break;case 5:Ju(n);default:Lg(a,n),n=Oe=uh(n,Es),n=Og(a,n,Es)}e.memoizedProps=e.pendingProps,n===null?Ul(e):Oe=n}function Hi(e,n,a,r){bs=La=null,Ju(n),Di=null,Ro=0;var f=n.return;try{if(oS(e,f,n,a,Ue)){Tt=1,wl(e,Cn(a,e.current)),Oe=null;return}}catch(p){if(f!==null)throw Oe=f,p;Tt=1,wl(e,Cn(a,e.current)),Oe=null;return}n.flags&32768?(Pe||r===1?e=!0:Ui||(Ue&536870912)!==0?e=!1:(sa=e=!0,(r===2||r===9||r===3||r===6)&&(r=hn.current,r!==null&&r.tag===13&&(r.flags|=16384))),pv(n,e)):Ul(n)}function Ul(e){var n=e;do{if((n.flags&32768)!==0){pv(n,sa);return}e=n.return;var a=cS(n.alternate,n,Es);if(a!==null){Oe=a;return}if(n=n.sibling,n!==null){Oe=n;return}Oe=n=e}while(n!==null);Tt===0&&(Tt=5)}function pv(e,n){do{var a=uS(e.alternate,e);if(a!==null){a.flags&=32767,Oe=a;return}if(a=e.return,a!==null&&(a.flags|=32768,a.subtreeFlags=0,a.deletions=null),!n&&(e=e.sibling,e!==null)){Oe=e;return}Oe=e=a}while(e!==null);Tt=6,Oe=null}function mv(e,n,a,r,f,p,x,k,R){e.cancelPendingCommit=null;do zl();while(Lt!==0);if((Xe&6)!==0)throw Error(o(327));if(n!==null){if(n===e.current)throw Error(o(177));if(p=n.lanes|n.childLanes,p|=Tu,ye(e,a,p,x,k,R),e===ct&&(Oe=ct=null,Ue=0),Pi=n,oa=e,As=a,Dd=p,Rd=f,sv=r,(n.subtreeFlags&10256)!==0||(n.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,SS(Gs,function(){return bv(),null})):(e.callbackNode=null,e.callbackPriority=0),r=(n.flags&13878)!==0,(n.subtreeFlags&13878)!==0||r){r=O.T,O.T=null,f=q.p,q.p=2,x=Xe,Xe|=4;try{dS(e,n,a)}finally{Xe=x,q.p=f,O.T=r}}Lt=1,hv(),gv(),vv()}}function hv(){if(Lt===1){Lt=0;var e=oa,n=Pi,a=(n.flags&13878)!==0;if((n.subtreeFlags&13878)!==0||a){a=O.T,O.T=null;var r=q.p;q.p=2;var f=Xe;Xe|=4;try{Yg(n,e);var p=Zd,x=th(e.containerInfo),k=p.focusedElem,R=p.selectionRange;if(x!==k&&k&&k.ownerDocument&&eh(k.ownerDocument.documentElement,k)){if(R!==null&&yu(k)){var H=R.start,Y=R.end;if(Y===void 0&&(Y=H),"selectionStart"in k)k.selectionStart=H,k.selectionEnd=Math.min(Y,k.value.length);else{var W=k.ownerDocument||document,G=W&&W.defaultView||window;if(G.getSelection){var Z=G.getSelection(),he=k.textContent.length,Se=Math.min(R.start,he),ot=R.end===void 0?Se:Math.min(R.end,he);!Z.extend&&Se>ot&&(x=ot,ot=Se,Se=x);var L=Qm(k,Se),I=Qm(k,ot);if(L&&I&&(Z.rangeCount!==1||Z.anchorNode!==L.node||Z.anchorOffset!==L.offset||Z.focusNode!==I.node||Z.focusOffset!==I.offset)){var V=W.createRange();V.setStart(L.node,L.offset),Z.removeAllRanges(),Se>ot?(Z.addRange(V),Z.extend(I.node,I.offset)):(V.setEnd(I.node,I.offset),Z.addRange(V))}}}}for(W=[],Z=k;Z=Z.parentNode;)Z.nodeType===1&&W.push({element:Z,left:Z.scrollLeft,top:Z.scrollTop});for(typeof k.focus=="function"&&k.focus(),k=0;k<W.length;k++){var J=W[k];J.element.scrollLeft=J.left,J.element.scrollTop=J.top}}Wl=!!Fd,Zd=Fd=null}finally{Xe=f,q.p=r,O.T=a}}e.current=n,Lt=2}}function gv(){if(Lt===2){Lt=0;var e=oa,n=Pi,a=(n.flags&8772)!==0;if((n.subtreeFlags&8772)!==0||a){a=O.T,O.T=null;var r=q.p;q.p=2;var f=Xe;Xe|=4;try{Gg(e,n.alternate,n)}finally{Xe=f,q.p=r,O.T=a}}Lt=3}}function vv(){if(Lt===4||Lt===3){Lt=0,Ae();var e=oa,n=Pi,a=As,r=sv;(n.subtreeFlags&10256)!==0||(n.flags&10256)!==0?Lt=5:(Lt=0,Pi=oa=null,yv(e,e.pendingLanes));var f=e.pendingLanes;if(f===0&&(ia=null),Bt(a),n=n.stateNode,Yt&&typeof Yt.onCommitFiberRoot=="function")try{Yt.onCommitFiberRoot(qs,n,void 0,(n.current.flags&128)===128)}catch{}if(r!==null){n=O.T,f=q.p,q.p=2,O.T=null;try{for(var p=e.onRecoverableError,x=0;x<r.length;x++){var k=r[x];p(k.value,{componentStack:k.stack})}}finally{O.T=n,q.p=f}}(As&3)!==0&&zl(),is(e),f=e.pendingLanes,(a&261930)!==0&&(f&42)!==0?e===Md?Yo++:(Yo=0,Md=e):Yo=0,Jo(0)}}function yv(e,n){(e.pooledCacheLanes&=n)===0&&(n=e.pooledCache,n!=null&&(e.pooledCache=null,Ao(n)))}function zl(){return hv(),gv(),vv(),bv()}function bv(){if(Lt!==5)return!1;var e=oa,n=Dd;Dd=0;var a=Bt(As),r=O.T,f=q.p;try{q.p=32>a?32:a,O.T=null,a=Rd,Rd=null;var p=oa,x=As;if(Lt=0,Pi=oa=null,As=0,(Xe&6)!==0)throw Error(o(331));var k=Xe;if(Xe|=4,ev(p.current),Wg(p,p.current,x,a),Xe=k,Jo(0,!1),Yt&&typeof Yt.onPostCommitFiberRoot=="function")try{Yt.onPostCommitFiberRoot(qs,p)}catch{}return!0}finally{q.p=f,O.T=r,yv(e,n)}}function _v(e,n,a){n=Cn(a,n),n=dd(e.stateNode,n,2),e=Qs(e,n,2),e!==null&&(Le(e,2),is(e))}function st(e,n,a){if(e.tag===3)_v(e,e,a);else for(;n!==null;){if(n.tag===3){_v(n,e,a);break}else if(n.tag===1){var r=n.stateNode;if(typeof n.type.getDerivedStateFromError=="function"||typeof r.componentDidCatch=="function"&&(ia===null||!ia.has(r))){e=Cn(a,e),a=xg(2),r=Qs(n,a,2),r!==null&&(Sg(a,r,n,e),Le(r,2),is(r));break}}n=n.return}}function Bd(e,n,a){var r=e.pingCache;if(r===null){r=e.pingCache=new mS;var f=new Set;r.set(n,f)}else f=r.get(n),f===void 0&&(f=new Set,r.set(n,f));f.has(a)||(Cd=!0,f.add(a),e=bS.bind(null,e,n,a),n.then(e,e))}function bS(e,n,a){var r=e.pingCache;r!==null&&r.delete(n),e.pingedLanes|=e.suspendedLanes&a,e.warmLanes&=~a,ct===e&&(Ue&a)===a&&(Tt===4||Tt===3&&(Ue&62914560)===Ue&&300>We()-Ml?(Xe&2)===0&&Vi(e,0):Ed|=a,zi===Ue&&(zi=0)),is(e)}function xv(e,n){n===0&&(n=ce()),e=Ia(e,n),e!==null&&(Le(e,n),is(e))}function _S(e){var n=e.memoizedState,a=0;n!==null&&(a=n.retryLane),xv(e,a)}function xS(e,n){var a=0;switch(e.tag){case 31:case 13:var r=e.stateNode,f=e.memoizedState;f!==null&&(a=f.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(o(314))}r!==null&&r.delete(n),xv(e,a)}function SS(e,n){return ts(e,n)}var Pl=null,$i=null,Ld=!1,Vl=!1,Ud=!1,la=0;function is(e){e!==$i&&e.next===null&&($i===null?Pl=$i=e:$i=$i.next=e),Vl=!0,Ld||(Ld=!0,kS())}function Jo(e,n){if(!Ud&&Vl){Ud=!0;do for(var a=!1,r=Pl;r!==null;){if(e!==0){var f=r.pendingLanes;if(f===0)var p=0;else{var x=r.suspendedLanes,k=r.pingedLanes;p=(1<<31-Jt(42|e)+1)-1,p&=f&~(x&~k),p=p&201326741?p&201326741|1:p?p|2:0}p!==0&&(a=!0,wv(r,p))}else p=Ue,p=P(r,r===ct?p:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),(p&3)===0||Q(r,p)||(a=!0,wv(r,p));r=r.next}while(a);Ud=!1}}function TS(){Sv()}function Sv(){Vl=Ld=!1;var e=0;la!==0&&IS()&&(e=la);for(var n=We(),a=null,r=Pl;r!==null;){var f=r.next,p=Tv(r,n);p===0?(r.next=null,a===null?Pl=f:a.next=f,f===null&&($i=a)):(a=r,(e!==0||(p&3)!==0)&&(Vl=!0)),r=f}Lt!==0&&Lt!==5||Jo(e),la!==0&&(la=0)}function Tv(e,n){for(var a=e.suspendedLanes,r=e.pingedLanes,f=e.expirationTimes,p=e.pendingLanes&-62914561;0<p;){var x=31-Jt(p),k=1<<x,R=f[x];R===-1?((k&a)===0||(k&r)!==0)&&(f[x]=oe(k,n)):R<=n&&(e.expiredLanes|=k),p&=~k}if(n=ct,a=Ue,a=P(e,e===n?a:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r=e.callbackNode,a===0||e===n&&(nt===2||nt===9)||e.cancelPendingCommit!==null)return r!==null&&r!==null&&$s(r),e.callbackNode=null,e.callbackPriority=0;if((a&3)===0||Q(e,a)){if(n=a&-a,n===e.callbackPriority)return n;switch(r!==null&&$s(r),Bt(a)){case 2:case 8:a=ho;break;case 32:a=Gs;break;case 268435456:a=go;break;default:a=Gs}return r=kv.bind(null,e),a=ts(a,r),e.callbackPriority=n,e.callbackNode=a,n}return r!==null&&r!==null&&$s(r),e.callbackPriority=2,e.callbackNode=null,2}function kv(e,n){if(Lt!==0&&Lt!==5)return e.callbackNode=null,e.callbackPriority=0,null;var a=e.callbackNode;if(zl()&&e.callbackNode!==a)return null;var r=Ue;return r=P(e,e===ct?r:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),r===0?null:(iv(e,r,n),Tv(e,We()),e.callbackNode!=null&&e.callbackNode===a?kv.bind(null,e):null)}function wv(e,n){if(zl())return null;iv(e,n,!0)}function kS(){BS(function(){(Xe&6)!==0?ts(mo,TS):Sv()})}function zd(){if(la===0){var e=Ci;e===0&&(e=ja,ja<<=1,(ja&261888)===0&&(ja=256)),la=e}return la}function Nv(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:Yr(""+e)}function jv(e,n){var a=n.ownerDocument.createElement("input");return a.name=n.name,a.value=n.value,e.id&&a.setAttribute("form",e.id),n.parentNode.insertBefore(a,n),e=new FormData(e),a.parentNode.removeChild(a),e}function wS(e,n,a,r,f){if(n==="submit"&&a&&a.stateNode===f){var p=Nv((f[zt]||null).action),x=r.submitter;x&&(n=(n=x[zt]||null)?Nv(n.formAction):x.getAttribute("formAction"),n!==null&&(p=n,x=null));var k=new Qr("action","action",null,r,f);e.push({event:k,listeners:[{instance:null,listener:function(){if(r.defaultPrevented){if(la!==0){var R=x?jv(f,x):new FormData(f);id(a,{pending:!0,data:R,method:f.method,action:p},null,R)}}else typeof p=="function"&&(k.preventDefault(),R=x?jv(f,x):new FormData(f),id(a,{pending:!0,data:R,method:f.method,action:p},p,R))},currentTarget:f}]})}}for(var Pd=0;Pd<Su.length;Pd++){var Vd=Su[Pd],NS=Vd.toLowerCase(),jS=Vd[0].toUpperCase()+Vd.slice(1);Gn(NS,"on"+jS)}Gn(ah,"onAnimationEnd"),Gn(ih,"onAnimationIteration"),Gn(oh,"onAnimationStart"),Gn("dblclick","onDoubleClick"),Gn("focusin","onFocus"),Gn("focusout","onBlur"),Gn($1,"onTransitionRun"),Gn(G1,"onTransitionStart"),Gn(q1,"onTransitionCancel"),Gn(rh,"onTransitionEnd"),mi("onMouseEnter",["mouseout","mouseover"]),mi("onMouseLeave",["mouseout","mouseover"]),mi("onPointerEnter",["pointerout","pointerover"]),mi("onPointerLeave",["pointerout","pointerover"]),Aa("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),Aa("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),Aa("onBeforeInput",["compositionend","keypress","textInput","paste"]),Aa("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),Aa("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),Aa("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Wo="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),CS=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Wo));function Cv(e,n){n=(n&4)!==0;for(var a=0;a<e.length;a++){var r=e[a],f=r.event;r=r.listeners;e:{var p=void 0;if(n)for(var x=r.length-1;0<=x;x--){var k=r[x],R=k.instance,H=k.currentTarget;if(k=k.listener,R!==p&&f.isPropagationStopped())break e;p=k,f.currentTarget=H;try{p(f)}catch(Y){nl(Y)}f.currentTarget=null,p=R}else for(x=0;x<r.length;x++){if(k=r[x],R=k.instance,H=k.currentTarget,k=k.listener,R!==p&&f.isPropagationStopped())break e;p=k,f.currentTarget=H;try{p(f)}catch(Y){nl(Y)}f.currentTarget=null,p=R}}}}function Be(e,n){var a=n[eu];a===void 0&&(a=n[eu]=new Set);var r=e+"__bubble";a.has(r)||(Ev(n,e,2,!1),a.add(r))}function Hd(e,n,a){var r=0;n&&(r|=4),Ev(a,e,r,n)}var Hl="_reactListening"+Math.random().toString(36).slice(2);function $d(e){if(!e[Hl]){e[Hl]=!0,Sm.forEach(function(a){a!=="selectionchange"&&(CS.has(a)||Hd(a,!1,e),Hd(a,!0,e))});var n=e.nodeType===9?e:e.ownerDocument;n===null||n[Hl]||(n[Hl]=!0,Hd("selectionchange",!1,n))}}function Ev(e,n,a,r){switch(a0(n)){case 2:var f=nT;break;case 8:f=sT;break;default:f=af}a=f.bind(null,n,a,e),f=void 0,!cu||n!=="touchstart"&&n!=="touchmove"&&n!=="wheel"||(f=!0),r?f!==void 0?e.addEventListener(n,a,{capture:!0,passive:f}):e.addEventListener(n,a,!0):f!==void 0?e.addEventListener(n,a,{passive:f}):e.addEventListener(n,a,!1)}function Gd(e,n,a,r,f){var p=r;if((n&1)===0&&(n&2)===0&&r!==null)e:for(;;){if(r===null)return;var x=r.tag;if(x===3||x===4){var k=r.stateNode.containerInfo;if(k===f)break;if(x===4)for(x=r.return;x!==null;){var R=x.tag;if((R===3||R===4)&&x.stateNode.containerInfo===f)return;x=x.return}for(;k!==null;){if(x=di(k),x===null)return;if(R=x.tag,R===5||R===6||R===26||R===27){r=p=x;continue e}k=k.parentNode}}r=r.return}Im(function(){var H=p,Y=ru(a),W=[];e:{var G=lh.get(e);if(G!==void 0){var Z=Qr,he=e;switch(e){case"keypress":if(Wr(a)===0)break e;case"keydown":case"keyup":Z=x1;break;case"focusin":he="focus",Z=pu;break;case"focusout":he="blur",Z=pu;break;case"beforeblur":case"afterblur":Z=pu;break;case"click":if(a.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":Z=Lm;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":Z=c1;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":Z=k1;break;case ah:case ih:case oh:Z=f1;break;case rh:Z=N1;break;case"scroll":case"scrollend":Z=r1;break;case"wheel":Z=C1;break;case"copy":case"cut":case"paste":Z=m1;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":Z=zm;break;case"toggle":case"beforetoggle":Z=A1}var Se=(n&4)!==0,ot=!Se&&(e==="scroll"||e==="scrollend"),L=Se?G!==null?G+"Capture":null:G;Se=[];for(var I=H,V;I!==null;){var J=I;if(V=J.stateNode,J=J.tag,J!==5&&J!==26&&J!==27||V===null||L===null||(J=bo(I,L),J!=null&&Se.push(Xo(I,J,V))),ot)break;I=I.return}0<Se.length&&(G=new Z(G,he,null,a,Y),W.push({event:G,listeners:Se}))}}if((n&7)===0){e:{if(G=e==="mouseover"||e==="pointerover",Z=e==="mouseout"||e==="pointerout",G&&a!==ou&&(he=a.relatedTarget||a.fromElement)&&(di(he)||he[ui]))break e;if((Z||G)&&(G=Y.window===Y?Y:(G=Y.ownerDocument)?G.defaultView||G.parentWindow:window,Z?(he=a.relatedTarget||a.toElement,Z=H,he=he?di(he):null,he!==null&&(ot=u(he),Se=he.tag,he!==ot||Se!==5&&Se!==27&&Se!==6)&&(he=null)):(Z=null,he=H),Z!==he)){if(Se=Lm,J="onMouseLeave",L="onMouseEnter",I="mouse",(e==="pointerout"||e==="pointerover")&&(Se=zm,J="onPointerLeave",L="onPointerEnter",I="pointer"),ot=Z==null?G:yo(Z),V=he==null?G:yo(he),G=new Se(J,I+"leave",Z,a,Y),G.target=ot,G.relatedTarget=V,J=null,di(Y)===H&&(Se=new Se(L,I+"enter",he,a,Y),Se.target=V,Se.relatedTarget=ot,J=Se),ot=J,Z&&he)t:{for(Se=ES,L=Z,I=he,V=0,J=L;J;J=Se(J))V++;J=0;for(var be=I;be;be=Se(be))J++;for(;0<V-J;)L=Se(L),V--;for(;0<J-V;)I=Se(I),J--;for(;V--;){if(L===I||I!==null&&L===I.alternate){Se=L;break t}L=Se(L),I=Se(I)}Se=null}else Se=null;Z!==null&&Av(W,G,Z,Se,!1),he!==null&&ot!==null&&Av(W,ot,he,Se,!0)}}e:{if(G=H?yo(H):window,Z=G.nodeName&&G.nodeName.toLowerCase(),Z==="select"||Z==="input"&&G.type==="file")var Ze=Zm;else if(qm(G))if(Km)Ze=P1;else{Ze=U1;var ge=L1}else Z=G.nodeName,!Z||Z.toLowerCase()!=="input"||G.type!=="checkbox"&&G.type!=="radio"?H&&iu(H.elementType)&&(Ze=Zm):Ze=z1;if(Ze&&(Ze=Ze(e,H))){Fm(W,Ze,a,Y);break e}ge&&ge(e,G,H),e==="focusout"&&H&&G.type==="number"&&H.memoizedProps.value!=null&&au(G,"number",G.value)}switch(ge=H?yo(H):window,e){case"focusin":(qm(ge)||ge.contentEditable==="true")&&(_i=ge,bu=H,jo=null);break;case"focusout":jo=bu=_i=null;break;case"mousedown":_u=!0;break;case"contextmenu":case"mouseup":case"dragend":_u=!1,nh(W,a,Y);break;case"selectionchange":if(H1)break;case"keydown":case"keyup":nh(W,a,Y)}var De;if(hu)e:{switch(e){case"compositionstart":var ze="onCompositionStart";break e;case"compositionend":ze="onCompositionEnd";break e;case"compositionupdate":ze="onCompositionUpdate";break e}ze=void 0}else bi?$m(e,a)&&(ze="onCompositionEnd"):e==="keydown"&&a.keyCode===229&&(ze="onCompositionStart");ze&&(Pm&&a.locale!=="ko"&&(bi||ze!=="onCompositionStart"?ze==="onCompositionEnd"&&bi&&(De=Om()):(Fs=Y,uu="value"in Fs?Fs.value:Fs.textContent,bi=!0)),ge=$l(H,ze),0<ge.length&&(ze=new Um(ze,e,null,a,Y),W.push({event:ze,listeners:ge}),De?ze.data=De:(De=Gm(a),De!==null&&(ze.data=De)))),(De=R1?M1(e,a):I1(e,a))&&(ze=$l(H,"onBeforeInput"),0<ze.length&&(ge=new Um("onBeforeInput","beforeinput",null,a,Y),W.push({event:ge,listeners:ze}),ge.data=De)),wS(W,e,H,a,Y)}Cv(W,n)})}function Xo(e,n,a){return{instance:e,listener:n,currentTarget:a}}function $l(e,n){for(var a=n+"Capture",r=[];e!==null;){var f=e,p=f.stateNode;if(f=f.tag,f!==5&&f!==26&&f!==27||p===null||(f=bo(e,a),f!=null&&r.unshift(Xo(e,f,p)),f=bo(e,n),f!=null&&r.push(Xo(e,f,p))),e.tag===3)return r;e=e.return}return[]}function ES(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function Av(e,n,a,r,f){for(var p=n._reactName,x=[];a!==null&&a!==r;){var k=a,R=k.alternate,H=k.stateNode;if(k=k.tag,R!==null&&R===r)break;k!==5&&k!==26&&k!==27||H===null||(R=H,f?(H=bo(a,p),H!=null&&x.unshift(Xo(a,H,R))):f||(H=bo(a,p),H!=null&&x.push(Xo(a,H,R)))),a=a.return}x.length!==0&&e.push({event:n,listeners:x})}var AS=/\r\n?/g,DS=/\u0000|\uFFFD/g;function Dv(e){return(typeof e=="string"?e:""+e).replace(AS,`
26
+ `).replace(DS,"")}function Rv(e,n){return n=Dv(n),Dv(e)===n}function it(e,n,a,r,f,p){switch(a){case"children":typeof r=="string"?n==="body"||n==="textarea"&&r===""||gi(e,r):(typeof r=="number"||typeof r=="bigint")&&n!=="body"&&gi(e,""+r);break;case"className":Zr(e,"class",r);break;case"tabIndex":Zr(e,"tabindex",r);break;case"dir":case"role":case"viewBox":case"width":case"height":Zr(e,a,r);break;case"style":Rm(e,r,p);break;case"data":if(n!=="object"){Zr(e,"data",r);break}case"src":case"href":if(r===""&&(n!=="a"||a!=="href")){e.removeAttribute(a);break}if(r==null||typeof r=="function"||typeof r=="symbol"||typeof r=="boolean"){e.removeAttribute(a);break}r=Yr(""+r),e.setAttribute(a,r);break;case"action":case"formAction":if(typeof r=="function"){e.setAttribute(a,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof p=="function"&&(a==="formAction"?(n!=="input"&&it(e,n,"name",f.name,f,null),it(e,n,"formEncType",f.formEncType,f,null),it(e,n,"formMethod",f.formMethod,f,null),it(e,n,"formTarget",f.formTarget,f,null)):(it(e,n,"encType",f.encType,f,null),it(e,n,"method",f.method,f,null),it(e,n,"target",f.target,f,null)));if(r==null||typeof r=="symbol"||typeof r=="boolean"){e.removeAttribute(a);break}r=Yr(""+r),e.setAttribute(a,r);break;case"onClick":r!=null&&(e.onclick=hs);break;case"onScroll":r!=null&&Be("scroll",e);break;case"onScrollEnd":r!=null&&Be("scrollend",e);break;case"dangerouslySetInnerHTML":if(r!=null){if(typeof r!="object"||!("__html"in r))throw Error(o(61));if(a=r.__html,a!=null){if(f.children!=null)throw Error(o(60));e.innerHTML=a}}break;case"multiple":e.multiple=r&&typeof r!="function"&&typeof r!="symbol";break;case"muted":e.muted=r&&typeof r!="function"&&typeof r!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(r==null||typeof r=="function"||typeof r=="boolean"||typeof r=="symbol"){e.removeAttribute("xlink:href");break}a=Yr(""+r),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":r!=null&&typeof r!="function"&&typeof r!="symbol"?e.setAttribute(a,""+r):e.removeAttribute(a);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":r&&typeof r!="function"&&typeof r!="symbol"?e.setAttribute(a,""):e.removeAttribute(a);break;case"capture":case"download":r===!0?e.setAttribute(a,""):r!==!1&&r!=null&&typeof r!="function"&&typeof r!="symbol"?e.setAttribute(a,r):e.removeAttribute(a);break;case"cols":case"rows":case"size":case"span":r!=null&&typeof r!="function"&&typeof r!="symbol"&&!isNaN(r)&&1<=r?e.setAttribute(a,r):e.removeAttribute(a);break;case"rowSpan":case"start":r==null||typeof r=="function"||typeof r=="symbol"||isNaN(r)?e.removeAttribute(a):e.setAttribute(a,r);break;case"popover":Be("beforetoggle",e),Be("toggle",e),Fr(e,"popover",r);break;case"xlinkActuate":ms(e,"http://www.w3.org/1999/xlink","xlink:actuate",r);break;case"xlinkArcrole":ms(e,"http://www.w3.org/1999/xlink","xlink:arcrole",r);break;case"xlinkRole":ms(e,"http://www.w3.org/1999/xlink","xlink:role",r);break;case"xlinkShow":ms(e,"http://www.w3.org/1999/xlink","xlink:show",r);break;case"xlinkTitle":ms(e,"http://www.w3.org/1999/xlink","xlink:title",r);break;case"xlinkType":ms(e,"http://www.w3.org/1999/xlink","xlink:type",r);break;case"xmlBase":ms(e,"http://www.w3.org/XML/1998/namespace","xml:base",r);break;case"xmlLang":ms(e,"http://www.w3.org/XML/1998/namespace","xml:lang",r);break;case"xmlSpace":ms(e,"http://www.w3.org/XML/1998/namespace","xml:space",r);break;case"is":Fr(e,"is",r);break;case"innerText":case"textContent":break;default:(!(2<a.length)||a[0]!=="o"&&a[0]!=="O"||a[1]!=="n"&&a[1]!=="N")&&(a=i1.get(a)||a,Fr(e,a,r))}}function qd(e,n,a,r,f,p){switch(a){case"style":Rm(e,r,p);break;case"dangerouslySetInnerHTML":if(r!=null){if(typeof r!="object"||!("__html"in r))throw Error(o(61));if(a=r.__html,a!=null){if(f.children!=null)throw Error(o(60));e.innerHTML=a}}break;case"children":typeof r=="string"?gi(e,r):(typeof r=="number"||typeof r=="bigint")&&gi(e,""+r);break;case"onScroll":r!=null&&Be("scroll",e);break;case"onScrollEnd":r!=null&&Be("scrollend",e);break;case"onClick":r!=null&&(e.onclick=hs);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Tm.hasOwnProperty(a))e:{if(a[0]==="o"&&a[1]==="n"&&(f=a.endsWith("Capture"),n=a.slice(2,f?a.length-7:void 0),p=e[zt]||null,p=p!=null?p[a]:null,typeof p=="function"&&e.removeEventListener(n,p,f),typeof r=="function")){typeof p!="function"&&p!==null&&(a in e?e[a]=null:e.hasAttribute(a)&&e.removeAttribute(a)),e.addEventListener(n,r,f);break e}a in e?e[a]=r:r===!0?e.setAttribute(a,""):Fr(e,a,r)}}}function Ft(e,n,a){switch(n){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Be("error",e),Be("load",e);var r=!1,f=!1,p;for(p in a)if(a.hasOwnProperty(p)){var x=a[p];if(x!=null)switch(p){case"src":r=!0;break;case"srcSet":f=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(o(137,n));default:it(e,n,p,x,a,null)}}f&&it(e,n,"srcSet",a.srcSet,a,null),r&&it(e,n,"src",a.src,a,null);return;case"input":Be("invalid",e);var k=p=x=f=null,R=null,H=null;for(r in a)if(a.hasOwnProperty(r)){var Y=a[r];if(Y!=null)switch(r){case"name":f=Y;break;case"type":x=Y;break;case"checked":R=Y;break;case"defaultChecked":H=Y;break;case"value":p=Y;break;case"defaultValue":k=Y;break;case"children":case"dangerouslySetInnerHTML":if(Y!=null)throw Error(o(137,n));break;default:it(e,n,r,Y,a,null)}}Cm(e,p,k,R,H,x,f,!1);return;case"select":Be("invalid",e),r=x=p=null;for(f in a)if(a.hasOwnProperty(f)&&(k=a[f],k!=null))switch(f){case"value":p=k;break;case"defaultValue":x=k;break;case"multiple":r=k;default:it(e,n,f,k,a,null)}n=p,a=x,e.multiple=!!r,n!=null?hi(e,!!r,n,!1):a!=null&&hi(e,!!r,a,!0);return;case"textarea":Be("invalid",e),p=f=r=null;for(x in a)if(a.hasOwnProperty(x)&&(k=a[x],k!=null))switch(x){case"value":r=k;break;case"defaultValue":f=k;break;case"children":p=k;break;case"dangerouslySetInnerHTML":if(k!=null)throw Error(o(91));break;default:it(e,n,x,k,a,null)}Am(e,r,f,p);return;case"option":for(R in a)if(a.hasOwnProperty(R)&&(r=a[R],r!=null))switch(R){case"selected":e.selected=r&&typeof r!="function"&&typeof r!="symbol";break;default:it(e,n,R,r,a,null)}return;case"dialog":Be("beforetoggle",e),Be("toggle",e),Be("cancel",e),Be("close",e);break;case"iframe":case"object":Be("load",e);break;case"video":case"audio":for(r=0;r<Wo.length;r++)Be(Wo[r],e);break;case"image":Be("error",e),Be("load",e);break;case"details":Be("toggle",e);break;case"embed":case"source":case"link":Be("error",e),Be("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(H in a)if(a.hasOwnProperty(H)&&(r=a[H],r!=null))switch(H){case"children":case"dangerouslySetInnerHTML":throw Error(o(137,n));default:it(e,n,H,r,a,null)}return;default:if(iu(n)){for(Y in a)a.hasOwnProperty(Y)&&(r=a[Y],r!==void 0&&qd(e,n,Y,r,a,void 0));return}}for(k in a)a.hasOwnProperty(k)&&(r=a[k],r!=null&&it(e,n,k,r,a,null))}function RS(e,n,a,r){switch(n){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var f=null,p=null,x=null,k=null,R=null,H=null,Y=null;for(Z in a){var W=a[Z];if(a.hasOwnProperty(Z)&&W!=null)switch(Z){case"checked":break;case"value":break;case"defaultValue":R=W;default:r.hasOwnProperty(Z)||it(e,n,Z,null,r,W)}}for(var G in r){var Z=r[G];if(W=a[G],r.hasOwnProperty(G)&&(Z!=null||W!=null))switch(G){case"type":p=Z;break;case"name":f=Z;break;case"checked":H=Z;break;case"defaultChecked":Y=Z;break;case"value":x=Z;break;case"defaultValue":k=Z;break;case"children":case"dangerouslySetInnerHTML":if(Z!=null)throw Error(o(137,n));break;default:Z!==W&&it(e,n,G,Z,r,W)}}su(e,x,k,R,H,Y,p,f);return;case"select":Z=x=k=G=null;for(p in a)if(R=a[p],a.hasOwnProperty(p)&&R!=null)switch(p){case"value":break;case"multiple":Z=R;default:r.hasOwnProperty(p)||it(e,n,p,null,r,R)}for(f in r)if(p=r[f],R=a[f],r.hasOwnProperty(f)&&(p!=null||R!=null))switch(f){case"value":G=p;break;case"defaultValue":k=p;break;case"multiple":x=p;default:p!==R&&it(e,n,f,p,r,R)}n=k,a=x,r=Z,G!=null?hi(e,!!a,G,!1):!!r!=!!a&&(n!=null?hi(e,!!a,n,!0):hi(e,!!a,a?[]:"",!1));return;case"textarea":Z=G=null;for(k in a)if(f=a[k],a.hasOwnProperty(k)&&f!=null&&!r.hasOwnProperty(k))switch(k){case"value":break;case"children":break;default:it(e,n,k,null,r,f)}for(x in r)if(f=r[x],p=a[x],r.hasOwnProperty(x)&&(f!=null||p!=null))switch(x){case"value":G=f;break;case"defaultValue":Z=f;break;case"children":break;case"dangerouslySetInnerHTML":if(f!=null)throw Error(o(91));break;default:f!==p&&it(e,n,x,f,r,p)}Em(e,G,Z);return;case"option":for(var he in a)if(G=a[he],a.hasOwnProperty(he)&&G!=null&&!r.hasOwnProperty(he))switch(he){case"selected":e.selected=!1;break;default:it(e,n,he,null,r,G)}for(R in r)if(G=r[R],Z=a[R],r.hasOwnProperty(R)&&G!==Z&&(G!=null||Z!=null))switch(R){case"selected":e.selected=G&&typeof G!="function"&&typeof G!="symbol";break;default:it(e,n,R,G,r,Z)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var Se in a)G=a[Se],a.hasOwnProperty(Se)&&G!=null&&!r.hasOwnProperty(Se)&&it(e,n,Se,null,r,G);for(H in r)if(G=r[H],Z=a[H],r.hasOwnProperty(H)&&G!==Z&&(G!=null||Z!=null))switch(H){case"children":case"dangerouslySetInnerHTML":if(G!=null)throw Error(o(137,n));break;default:it(e,n,H,G,r,Z)}return;default:if(iu(n)){for(var ot in a)G=a[ot],a.hasOwnProperty(ot)&&G!==void 0&&!r.hasOwnProperty(ot)&&qd(e,n,ot,void 0,r,G);for(Y in r)G=r[Y],Z=a[Y],!r.hasOwnProperty(Y)||G===Z||G===void 0&&Z===void 0||qd(e,n,Y,G,r,Z);return}}for(var L in a)G=a[L],a.hasOwnProperty(L)&&G!=null&&!r.hasOwnProperty(L)&&it(e,n,L,null,r,G);for(W in r)G=r[W],Z=a[W],!r.hasOwnProperty(W)||G===Z||G==null&&Z==null||it(e,n,W,G,r,Z)}function Mv(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function MS(){if(typeof performance.getEntriesByType=="function"){for(var e=0,n=0,a=performance.getEntriesByType("resource"),r=0;r<a.length;r++){var f=a[r],p=f.transferSize,x=f.initiatorType,k=f.duration;if(p&&k&&Mv(x)){for(x=0,k=f.responseEnd,r+=1;r<a.length;r++){var R=a[r],H=R.startTime;if(H>k)break;var Y=R.transferSize,W=R.initiatorType;Y&&Mv(W)&&(R=R.responseEnd,x+=Y*(R<k?1:(k-H)/(R-H)))}if(--r,n+=8*(p+x)/(f.duration/1e3),e++,10<e)break}}if(0<e)return n/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var Fd=null,Zd=null;function Gl(e){return e.nodeType===9?e:e.ownerDocument}function Iv(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Ov(e,n){if(e===0)switch(n){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&n==="foreignObject"?0:e}function Kd(e,n){return e==="textarea"||e==="noscript"||typeof n.children=="string"||typeof n.children=="number"||typeof n.children=="bigint"||typeof n.dangerouslySetInnerHTML=="object"&&n.dangerouslySetInnerHTML!==null&&n.dangerouslySetInnerHTML.__html!=null}var Yd=null;function IS(){var e=window.event;return e&&e.type==="popstate"?e===Yd?!1:(Yd=e,!0):(Yd=null,!1)}var Bv=typeof setTimeout=="function"?setTimeout:void 0,OS=typeof clearTimeout=="function"?clearTimeout:void 0,Lv=typeof Promise=="function"?Promise:void 0,BS=typeof queueMicrotask=="function"?queueMicrotask:typeof Lv<"u"?function(e){return Lv.resolve(null).then(e).catch(LS)}:Bv;function LS(e){setTimeout(function(){throw e})}function ca(e){return e==="head"}function Uv(e,n){var a=n,r=0;do{var f=a.nextSibling;if(e.removeChild(a),f&&f.nodeType===8)if(a=f.data,a==="/$"||a==="/&"){if(r===0){e.removeChild(f),Zi(n);return}r--}else if(a==="$"||a==="$?"||a==="$~"||a==="$!"||a==="&")r++;else if(a==="html")Qo(e.ownerDocument.documentElement);else if(a==="head"){a=e.ownerDocument.head,Qo(a);for(var p=a.firstChild;p;){var x=p.nextSibling,k=p.nodeName;p[vo]||k==="SCRIPT"||k==="STYLE"||k==="LINK"&&p.rel.toLowerCase()==="stylesheet"||a.removeChild(p),p=x}}else a==="body"&&Qo(e.ownerDocument.body);a=f}while(a);Zi(n)}function zv(e,n){var a=e;e=0;do{var r=a.nextSibling;if(a.nodeType===1?n?(a._stashedDisplay=a.style.display,a.style.display="none"):(a.style.display=a._stashedDisplay||"",a.getAttribute("style")===""&&a.removeAttribute("style")):a.nodeType===3&&(n?(a._stashedText=a.nodeValue,a.nodeValue=""):a.nodeValue=a._stashedText||""),r&&r.nodeType===8)if(a=r.data,a==="/$"){if(e===0)break;e--}else a!=="$"&&a!=="$?"&&a!=="$~"&&a!=="$!"||e++;a=r}while(a)}function Jd(e){var n=e.firstChild;for(n&&n.nodeType===10&&(n=n.nextSibling);n;){var a=n;switch(n=n.nextSibling,a.nodeName){case"HTML":case"HEAD":case"BODY":Jd(a),tu(a);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(a.rel.toLowerCase()==="stylesheet")continue}e.removeChild(a)}}function US(e,n,a,r){for(;e.nodeType===1;){var f=a;if(e.nodeName.toLowerCase()!==n.toLowerCase()){if(!r&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(r){if(!e[vo])switch(n){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(p=e.getAttribute("rel"),p==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(p!==f.rel||e.getAttribute("href")!==(f.href==null||f.href===""?null:f.href)||e.getAttribute("crossorigin")!==(f.crossOrigin==null?null:f.crossOrigin)||e.getAttribute("title")!==(f.title==null?null:f.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(p=e.getAttribute("src"),(p!==(f.src==null?null:f.src)||e.getAttribute("type")!==(f.type==null?null:f.type)||e.getAttribute("crossorigin")!==(f.crossOrigin==null?null:f.crossOrigin))&&p&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(n==="input"&&e.type==="hidden"){var p=f.name==null?null:""+f.name;if(f.type==="hidden"&&e.getAttribute("name")===p)return e}else return e;if(e=Mn(e.nextSibling),e===null)break}return null}function zS(e,n,a){if(n==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!a||(e=Mn(e.nextSibling),e===null))return null;return e}function Pv(e,n){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!n||(e=Mn(e.nextSibling),e===null))return null;return e}function Wd(e){return e.data==="$?"||e.data==="$~"}function Xd(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function PS(e,n){var a=e.ownerDocument;if(e.data==="$~")e._reactRetry=n;else if(e.data!=="$?"||a.readyState!=="loading")n();else{var r=function(){n(),a.removeEventListener("DOMContentLoaded",r)};a.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}function Mn(e){for(;e!=null;e=e.nextSibling){var n=e.nodeType;if(n===1||n===3)break;if(n===8){if(n=e.data,n==="$"||n==="$!"||n==="$?"||n==="$~"||n==="&"||n==="F!"||n==="F")break;if(n==="/$"||n==="/&")return null}}return e}var Qd=null;function Vv(e){e=e.nextSibling;for(var n=0;e;){if(e.nodeType===8){var a=e.data;if(a==="/$"||a==="/&"){if(n===0)return Mn(e.nextSibling);n--}else a!=="$"&&a!=="$!"&&a!=="$?"&&a!=="$~"&&a!=="&"||n++}e=e.nextSibling}return null}function Hv(e){e=e.previousSibling;for(var n=0;e;){if(e.nodeType===8){var a=e.data;if(a==="$"||a==="$!"||a==="$?"||a==="$~"||a==="&"){if(n===0)return e;n--}else a!=="/$"&&a!=="/&"||n++}e=e.previousSibling}return null}function $v(e,n,a){switch(n=Gl(a),e){case"html":if(e=n.documentElement,!e)throw Error(o(452));return e;case"head":if(e=n.head,!e)throw Error(o(453));return e;case"body":if(e=n.body,!e)throw Error(o(454));return e;default:throw Error(o(451))}}function Qo(e){for(var n=e.attributes;n.length;)e.removeAttributeNode(n[0]);tu(e)}var In=new Map,Gv=new Set;function ql(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var Ds=q.d;q.d={f:VS,r:HS,D:$S,C:GS,L:qS,m:FS,X:KS,S:ZS,M:YS};function VS(){var e=Ds.f(),n=Bl();return e||n}function HS(e){var n=fi(e);n!==null&&n.tag===5&&n.type==="form"?rg(n):Ds.r(e)}var Gi=typeof document>"u"?null:document;function qv(e,n,a){var r=Gi;if(r&&typeof n=="string"&&n){var f=Nn(n);f='link[rel="'+e+'"][href="'+f+'"]',typeof a=="string"&&(f+='[crossorigin="'+a+'"]'),Gv.has(f)||(Gv.add(f),e={rel:e,crossOrigin:a,href:n},r.querySelector(f)===null&&(n=r.createElement("link"),Ft(n,"link",e),Pt(n),r.head.appendChild(n)))}}function $S(e){Ds.D(e),qv("dns-prefetch",e,null)}function GS(e,n){Ds.C(e,n),qv("preconnect",e,n)}function qS(e,n,a){Ds.L(e,n,a);var r=Gi;if(r&&e&&n){var f='link[rel="preload"][as="'+Nn(n)+'"]';n==="image"&&a&&a.imageSrcSet?(f+='[imagesrcset="'+Nn(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(f+='[imagesizes="'+Nn(a.imageSizes)+'"]')):f+='[href="'+Nn(e)+'"]';var p=f;switch(n){case"style":p=qi(e);break;case"script":p=Fi(e)}In.has(p)||(e=_({rel:"preload",href:n==="image"&&a&&a.imageSrcSet?void 0:e,as:n},a),In.set(p,e),r.querySelector(f)!==null||n==="style"&&r.querySelector(er(p))||n==="script"&&r.querySelector(tr(p))||(n=r.createElement("link"),Ft(n,"link",e),Pt(n),r.head.appendChild(n)))}}function FS(e,n){Ds.m(e,n);var a=Gi;if(a&&e){var r=n&&typeof n.as=="string"?n.as:"script",f='link[rel="modulepreload"][as="'+Nn(r)+'"][href="'+Nn(e)+'"]',p=f;switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":p=Fi(e)}if(!In.has(p)&&(e=_({rel:"modulepreload",href:e},n),In.set(p,e),a.querySelector(f)===null)){switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(tr(p)))return}r=a.createElement("link"),Ft(r,"link",e),Pt(r),a.head.appendChild(r)}}}function ZS(e,n,a){Ds.S(e,n,a);var r=Gi;if(r&&e){var f=pi(r).hoistableStyles,p=qi(e);n=n||"default";var x=f.get(p);if(!x){var k={loading:0,preload:null};if(x=r.querySelector(er(p)))k.loading=5;else{e=_({rel:"stylesheet",href:e,"data-precedence":n},a),(a=In.get(p))&&ef(e,a);var R=x=r.createElement("link");Pt(R),Ft(R,"link",e),R._p=new Promise(function(H,Y){R.onload=H,R.onerror=Y}),R.addEventListener("load",function(){k.loading|=1}),R.addEventListener("error",function(){k.loading|=2}),k.loading|=4,Fl(x,n,r)}x={type:"stylesheet",instance:x,count:1,state:k},f.set(p,x)}}}function KS(e,n){Ds.X(e,n);var a=Gi;if(a&&e){var r=pi(a).hoistableScripts,f=Fi(e),p=r.get(f);p||(p=a.querySelector(tr(f)),p||(e=_({src:e,async:!0},n),(n=In.get(f))&&tf(e,n),p=a.createElement("script"),Pt(p),Ft(p,"link",e),a.head.appendChild(p)),p={type:"script",instance:p,count:1,state:null},r.set(f,p))}}function YS(e,n){Ds.M(e,n);var a=Gi;if(a&&e){var r=pi(a).hoistableScripts,f=Fi(e),p=r.get(f);p||(p=a.querySelector(tr(f)),p||(e=_({src:e,async:!0,type:"module"},n),(n=In.get(f))&&tf(e,n),p=a.createElement("script"),Pt(p),Ft(p,"link",e),a.head.appendChild(p)),p={type:"script",instance:p,count:1,state:null},r.set(f,p))}}function Fv(e,n,a,r){var f=(f=ve.current)?ql(f):null;if(!f)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(n=qi(a.href),a=pi(f).hoistableStyles,r=a.get(n),r||(r={type:"style",instance:null,count:0,state:null},a.set(n,r)),r):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){e=qi(a.href);var p=pi(f).hoistableStyles,x=p.get(e);if(x||(f=f.ownerDocument||f,x={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},p.set(e,x),(p=f.querySelector(er(e)))&&!p._p&&(x.instance=p,x.state.loading=5),In.has(e)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},In.set(e,a),p||JS(f,e,a,x.state))),n&&r===null)throw Error(o(528,""));return x}if(n&&r!==null)throw Error(o(529,""));return null;case"script":return n=a.async,a=a.src,typeof a=="string"&&n&&typeof n!="function"&&typeof n!="symbol"?(n=Fi(a),a=pi(f).hoistableScripts,r=a.get(n),r||(r={type:"script",instance:null,count:0,state:null},a.set(n,r)),r):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,e))}}function qi(e){return'href="'+Nn(e)+'"'}function er(e){return'link[rel="stylesheet"]['+e+"]"}function Zv(e){return _({},e,{"data-precedence":e.precedence,precedence:null})}function JS(e,n,a,r){e.querySelector('link[rel="preload"][as="style"]['+n+"]")?r.loading=1:(n=e.createElement("link"),r.preload=n,n.addEventListener("load",function(){return r.loading|=1}),n.addEventListener("error",function(){return r.loading|=2}),Ft(n,"link",a),Pt(n),e.head.appendChild(n))}function Fi(e){return'[src="'+Nn(e)+'"]'}function tr(e){return"script[async]"+e}function Kv(e,n,a){if(n.count++,n.instance===null)switch(n.type){case"style":var r=e.querySelector('style[data-href~="'+Nn(a.href)+'"]');if(r)return n.instance=r,Pt(r),r;var f=_({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement("style"),Pt(r),Ft(r,"style",f),Fl(r,a.precedence,e),n.instance=r;case"stylesheet":f=qi(a.href);var p=e.querySelector(er(f));if(p)return n.state.loading|=4,n.instance=p,Pt(p),p;r=Zv(a),(f=In.get(f))&&ef(r,f),p=(e.ownerDocument||e).createElement("link"),Pt(p);var x=p;return x._p=new Promise(function(k,R){x.onload=k,x.onerror=R}),Ft(p,"link",r),n.state.loading|=4,Fl(p,a.precedence,e),n.instance=p;case"script":return p=Fi(a.src),(f=e.querySelector(tr(p)))?(n.instance=f,Pt(f),f):(r=a,(f=In.get(p))&&(r=_({},a),tf(r,f)),e=e.ownerDocument||e,f=e.createElement("script"),Pt(f),Ft(f,"link",r),e.head.appendChild(f),n.instance=f);case"void":return null;default:throw Error(o(443,n.type))}else n.type==="stylesheet"&&(n.state.loading&4)===0&&(r=n.instance,n.state.loading|=4,Fl(r,a.precedence,e));return n.instance}function Fl(e,n,a){for(var r=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),f=r.length?r[r.length-1]:null,p=f,x=0;x<r.length;x++){var k=r[x];if(k.dataset.precedence===n)p=k;else if(p!==f)break}p?p.parentNode.insertBefore(e,p.nextSibling):(n=a.nodeType===9?a.head:a,n.insertBefore(e,n.firstChild))}function ef(e,n){e.crossOrigin==null&&(e.crossOrigin=n.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=n.referrerPolicy),e.title==null&&(e.title=n.title)}function tf(e,n){e.crossOrigin==null&&(e.crossOrigin=n.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=n.referrerPolicy),e.integrity==null&&(e.integrity=n.integrity)}var Zl=null;function Yv(e,n,a){if(Zl===null){var r=new Map,f=Zl=new Map;f.set(a,r)}else f=Zl,r=f.get(a),r||(r=new Map,f.set(a,r));if(r.has(e))return r;for(r.set(e,null),a=a.getElementsByTagName(e),f=0;f<a.length;f++){var p=a[f];if(!(p[vo]||p[dt]||e==="link"&&p.getAttribute("rel")==="stylesheet")&&p.namespaceURI!=="http://www.w3.org/2000/svg"){var x=p.getAttribute(n)||"";x=e+x;var k=r.get(x);k?k.push(p):r.set(x,[p])}}return r}function Jv(e,n,a){e=e.ownerDocument||e,e.head.insertBefore(a,n==="title"?e.querySelector("head > title"):null)}function WS(e,n,a){if(a===1||n.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof n.precedence!="string"||typeof n.href!="string"||n.href==="")break;return!0;case"link":if(typeof n.rel!="string"||typeof n.href!="string"||n.href===""||n.onLoad||n.onError)break;switch(n.rel){case"stylesheet":return e=n.disabled,typeof n.precedence=="string"&&e==null;default:return!0}case"script":if(n.async&&typeof n.async!="function"&&typeof n.async!="symbol"&&!n.onLoad&&!n.onError&&n.src&&typeof n.src=="string")return!0}return!1}function Wv(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function XS(e,n,a,r){if(a.type==="stylesheet"&&(typeof r.media!="string"||matchMedia(r.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var f=qi(r.href),p=n.querySelector(er(f));if(p){n=p._p,n!==null&&typeof n=="object"&&typeof n.then=="function"&&(e.count++,e=Kl.bind(e),n.then(e,e)),a.state.loading|=4,a.instance=p,Pt(p);return}p=n.ownerDocument||n,r=Zv(r),(f=In.get(f))&&ef(r,f),p=p.createElement("link"),Pt(p);var x=p;x._p=new Promise(function(k,R){x.onload=k,x.onerror=R}),Ft(p,"link",r),a.instance=p}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(a,n),(n=a.state.preload)&&(a.state.loading&3)===0&&(e.count++,a=Kl.bind(e),n.addEventListener("load",a),n.addEventListener("error",a))}}var nf=0;function QS(e,n){return e.stylesheets&&e.count===0&&Jl(e,e.stylesheets),0<e.count||0<e.imgCount?function(a){var r=setTimeout(function(){if(e.stylesheets&&Jl(e,e.stylesheets),e.unsuspend){var p=e.unsuspend;e.unsuspend=null,p()}},6e4+n);0<e.imgBytes&&nf===0&&(nf=62500*MS());var f=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Jl(e,e.stylesheets),e.unsuspend)){var p=e.unsuspend;e.unsuspend=null,p()}},(e.imgBytes>nf?50:800)+n);return e.unsuspend=a,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(f)}}:null}function Kl(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Jl(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yl=null;function Jl(e,n){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yl=new Map,n.forEach(eT,e),Yl=null,Kl.call(e))}function eT(e,n){if(!(n.state.loading&4)){var a=Yl.get(e);if(a)var r=a.get(null);else{a=new Map,Yl.set(e,a);for(var f=e.querySelectorAll("link[data-precedence],style[data-precedence]"),p=0;p<f.length;p++){var x=f[p];(x.nodeName==="LINK"||x.getAttribute("media")!=="not all")&&(a.set(x.dataset.precedence,x),r=x)}r&&a.set(null,r)}f=n.instance,x=f.getAttribute("data-precedence"),p=a.get(x)||r,p===r&&a.set(null,f),a.set(x,f),this.count++,r=Kl.bind(this),f.addEventListener("load",r),f.addEventListener("error",r),p?p.parentNode.insertBefore(f,p.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(f,e.firstChild)),n.state.loading|=4}}var nr={$$typeof:A,Provider:null,Consumer:null,_currentValue:te,_currentValue2:te,_threadCount:0};function tT(e,n,a,r,f,p,x,k,R){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=fe(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=fe(0),this.hiddenUpdates=fe(null),this.identifierPrefix=r,this.onUncaughtError=f,this.onCaughtError=p,this.onRecoverableError=x,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=R,this.incompleteTransitions=new Map}function Xv(e,n,a,r,f,p,x,k,R,H,Y,W){return e=new tT(e,n,a,x,R,H,Y,W,k),n=1,p===!0&&(n|=24),p=mn(3,null,null,n),e.current=p,p.stateNode=e,n=Ou(),n.refCount++,e.pooledCache=n,n.refCount++,p.memoizedState={element:r,isDehydrated:a,cache:n},zu(p),e}function Qv(e){return e?(e=Ti,e):Ti}function e0(e,n,a,r,f,p){f=Qv(f),r.context===null?r.context=f:r.pendingContext=f,r=Xs(n),r.payload={element:a},p=p===void 0?null:p,p!==null&&(r.callback=p),a=Qs(e,r,n),a!==null&&(un(a,e,n),Io(a,e,n))}function t0(e,n){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var a=e.retryLane;e.retryLane=a!==0&&a<n?a:n}}function sf(e,n){t0(e,n),(e=e.alternate)&&t0(e,n)}function n0(e){if(e.tag===13||e.tag===31){var n=Ia(e,67108864);n!==null&&un(n,e,67108864),sf(e,67108864)}}function s0(e){if(e.tag===13||e.tag===31){var n=bn();n=qe(n);var a=Ia(e,n);a!==null&&un(a,e,n),sf(e,n)}}var Wl=!0;function nT(e,n,a,r){var f=O.T;O.T=null;var p=q.p;try{q.p=2,af(e,n,a,r)}finally{q.p=p,O.T=f}}function sT(e,n,a,r){var f=O.T;O.T=null;var p=q.p;try{q.p=8,af(e,n,a,r)}finally{q.p=p,O.T=f}}function af(e,n,a,r){if(Wl){var f=of(r);if(f===null)Gd(e,n,r,Xl,a),i0(e,r);else if(iT(f,e,n,a,r))r.stopPropagation();else if(i0(e,r),n&4&&-1<aT.indexOf(e)){for(;f!==null;){var p=fi(f);if(p!==null)switch(p.tag){case 3:if(p=p.stateNode,p.current.memoizedState.isDehydrated){var x=ps(p.pendingLanes);if(x!==0){var k=p;for(k.pendingLanes|=2,k.entangledLanes|=2;x;){var R=1<<31-Jt(x);k.entanglements[1]|=R,x&=~R}is(p),(Xe&6)===0&&(Il=We()+500,Jo(0))}}break;case 31:case 13:k=Ia(p,2),k!==null&&un(k,p,2),Bl(),sf(p,2)}if(p=of(r),p===null&&Gd(e,n,r,Xl,a),p===f)break;f=p}f!==null&&r.stopPropagation()}else Gd(e,n,r,null,a)}}function of(e){return e=ru(e),rf(e)}var Xl=null;function rf(e){if(Xl=null,e=di(e),e!==null){var n=u(e);if(n===null)e=null;else{var a=n.tag;if(a===13){if(e=d(n),e!==null)return e;e=null}else if(a===31){if(e=m(n),e!==null)return e;e=null}else if(a===3){if(n.stateNode.current.memoizedState.isDehydrated)return n.tag===3?n.stateNode.containerInfo:null;e=null}else n!==e&&(e=null)}}return Xl=e,null}function a0(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(zr()){case mo:return 2;case ho:return 8;case Gs:case Pr:return 32;case go:return 268435456;default:return 32}default:return 32}}var lf=!1,ua=null,da=null,fa=null,sr=new Map,ar=new Map,pa=[],aT="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function i0(e,n){switch(e){case"focusin":case"focusout":ua=null;break;case"dragenter":case"dragleave":da=null;break;case"mouseover":case"mouseout":fa=null;break;case"pointerover":case"pointerout":sr.delete(n.pointerId);break;case"gotpointercapture":case"lostpointercapture":ar.delete(n.pointerId)}}function ir(e,n,a,r,f,p){return e===null||e.nativeEvent!==p?(e={blockedOn:n,domEventName:a,eventSystemFlags:r,nativeEvent:p,targetContainers:[f]},n!==null&&(n=fi(n),n!==null&&n0(n)),e):(e.eventSystemFlags|=r,n=e.targetContainers,f!==null&&n.indexOf(f)===-1&&n.push(f),e)}function iT(e,n,a,r,f){switch(n){case"focusin":return ua=ir(ua,e,n,a,r,f),!0;case"dragenter":return da=ir(da,e,n,a,r,f),!0;case"mouseover":return fa=ir(fa,e,n,a,r,f),!0;case"pointerover":var p=f.pointerId;return sr.set(p,ir(sr.get(p)||null,e,n,a,r,f)),!0;case"gotpointercapture":return p=f.pointerId,ar.set(p,ir(ar.get(p)||null,e,n,a,r,f)),!0}return!1}function o0(e){var n=di(e.target);if(n!==null){var a=u(n);if(a!==null){if(n=a.tag,n===13){if(n=d(a),n!==null){e.blockedOn=n,jt(e.priority,function(){s0(a)});return}}else if(n===31){if(n=m(a),n!==null){e.blockedOn=n,jt(e.priority,function(){s0(a)});return}}else if(n===3&&a.stateNode.current.memoizedState.isDehydrated){e.blockedOn=a.tag===3?a.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Ql(e){if(e.blockedOn!==null)return!1;for(var n=e.targetContainers;0<n.length;){var a=of(e.nativeEvent);if(a===null){a=e.nativeEvent;var r=new a.constructor(a.type,a);ou=r,a.target.dispatchEvent(r),ou=null}else return n=fi(a),n!==null&&n0(n),e.blockedOn=a,!1;n.shift()}return!0}function r0(e,n,a){Ql(e)&&a.delete(n)}function oT(){lf=!1,ua!==null&&Ql(ua)&&(ua=null),da!==null&&Ql(da)&&(da=null),fa!==null&&Ql(fa)&&(fa=null),sr.forEach(r0),ar.forEach(r0)}function ec(e,n){e.blockedOn===n&&(e.blockedOn=null,lf||(lf=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,oT)))}var tc=null;function l0(e){tc!==e&&(tc=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){tc===e&&(tc=null);for(var n=0;n<e.length;n+=3){var a=e[n],r=e[n+1],f=e[n+2];if(typeof r!="function"){if(rf(r||a)===null)continue;break}var p=fi(a);p!==null&&(e.splice(n,3),n-=3,id(p,{pending:!0,data:f,method:a.method,action:r},r,f))}}))}function Zi(e){function n(R){return ec(R,e)}ua!==null&&ec(ua,e),da!==null&&ec(da,e),fa!==null&&ec(fa,e),sr.forEach(n),ar.forEach(n);for(var a=0;a<pa.length;a++){var r=pa[a];r.blockedOn===e&&(r.blockedOn=null)}for(;0<pa.length&&(a=pa[0],a.blockedOn===null);)o0(a),a.blockedOn===null&&pa.shift();if(a=(e.ownerDocument||e).$$reactFormReplay,a!=null)for(r=0;r<a.length;r+=3){var f=a[r],p=a[r+1],x=f[zt]||null;if(typeof p=="function")x||l0(a);else if(x){var k=null;if(p&&p.hasAttribute("formAction")){if(f=p,x=p[zt]||null)k=x.formAction;else if(rf(f)!==null)continue}else k=x.action;typeof k=="function"?a[r+1]=k:(a.splice(r,3),r-=3),l0(a)}}}function c0(){function e(p){p.canIntercept&&p.info==="react-transition"&&p.intercept({handler:function(){return new Promise(function(x){return f=x})},focusReset:"manual",scroll:"manual"})}function n(){f!==null&&(f(),f=null),r||setTimeout(a,20)}function a(){if(!r&&!navigation.transition){var p=navigation.currentEntry;p&&p.url!=null&&navigation.navigate(p.url,{state:p.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var r=!1,f=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",n),navigation.addEventListener("navigateerror",n),setTimeout(a,100),function(){r=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",n),navigation.removeEventListener("navigateerror",n),f!==null&&(f(),f=null)}}}function cf(e){this._internalRoot=e}nc.prototype.render=cf.prototype.render=function(e){var n=this._internalRoot;if(n===null)throw Error(o(409));var a=n.current,r=bn();e0(a,r,e,n,null,null)},nc.prototype.unmount=cf.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var n=e.containerInfo;e0(e.current,2,null,e,null,null),Bl(),n[ui]=null}};function nc(e){this._internalRoot=e}nc.prototype.unstable_scheduleHydration=function(e){if(e){var n=Ht();e={blockedOn:null,target:e,priority:n};for(var a=0;a<pa.length&&n!==0&&n<pa[a].priority;a++);pa.splice(a,0,e),a===0&&o0(e)}};var u0=s.version;if(u0!=="19.2.4")throw Error(o(527,u0,"19.2.4"));q.findDOMNode=function(e){var n=e._reactInternals;if(n===void 0)throw typeof e.render=="function"?Error(o(188)):(e=Object.keys(e).join(","),Error(o(268,e)));return e=g(n),e=e!==null?v(e):null,e=e===null?null:e.stateNode,e};var rT={bundleType:0,version:"19.2.4",rendererPackageName:"react-dom",currentDispatcherRef:O,reconcilerVersion:"19.2.4"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var sc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!sc.isDisabled&&sc.supportsFiber)try{qs=sc.inject(rT),Yt=sc}catch{}}return rr.createRoot=function(e,n){if(!c(e))throw Error(o(299));var a=!1,r="",f=vg,p=yg,x=bg;return n!=null&&(n.unstable_strictMode===!0&&(a=!0),n.identifierPrefix!==void 0&&(r=n.identifierPrefix),n.onUncaughtError!==void 0&&(f=n.onUncaughtError),n.onCaughtError!==void 0&&(p=n.onCaughtError),n.onRecoverableError!==void 0&&(x=n.onRecoverableError)),n=Xv(e,1,!1,null,null,a,r,null,f,p,x,c0),e[ui]=n.current,$d(e),new cf(n)},rr.hydrateRoot=function(e,n,a){if(!c(e))throw Error(o(299));var r=!1,f="",p=vg,x=yg,k=bg,R=null;return a!=null&&(a.unstable_strictMode===!0&&(r=!0),a.identifierPrefix!==void 0&&(f=a.identifierPrefix),a.onUncaughtError!==void 0&&(p=a.onUncaughtError),a.onCaughtError!==void 0&&(x=a.onCaughtError),a.onRecoverableError!==void 0&&(k=a.onRecoverableError),a.formState!==void 0&&(R=a.formState)),n=Xv(e,1,!0,n,a??null,r,f,R,p,x,k,c0),n.context=Qv(null),a=n.current,r=bn(),r=qe(r),f=Xs(r),f.callback=null,Qs(a,f,r),a=r,n.current.lanes=a,Le(n,a),is(n),e[ui]=n.current,$d(e),new nc(n)},rr.version="19.2.4",rr}var y0;function OT(){if(y0)return uf.exports;y0=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(s){console.error(s)}}return t(),uf.exports=IT(),uf.exports}var BT=OT();const LT="modulepreload",UT=function(t){return"/"+t},b0={},zT=function(s,i,o){let c=Promise.resolve();if(i&&i.length>0){let d=function(g){return Promise.all(g.map(v=>Promise.resolve(v).then(_=>({status:"fulfilled",value:_}),_=>({status:"rejected",reason:_}))))};document.getElementsByTagName("link");const m=document.querySelector("meta[property=csp-nonce]"),h=(m==null?void 0:m.nonce)||(m==null?void 0:m.getAttribute("nonce"));c=d(i.map(g=>{if(g=UT(g),g in b0)return;b0[g]=!0;const v=g.endsWith(".css"),_=v?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${g}"]${_}`))return;const b=document.createElement("link");if(b.rel=v?"stylesheet":LT,v||(b.as="script"),b.crossOrigin="",b.href=g,h&&b.setAttribute("nonce",h),document.head.appendChild(b),v)return new Promise((S,T)=>{b.addEventListener("load",S),b.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${g}`)))})}))}function u(d){const m=new Event("vite:preloadError",{cancelable:!0});if(m.payload=d,window.dispatchEvent(m),!m.defaultPrevented)throw d}return c.then(d=>{for(const m of d||[])m.status==="rejected"&&u(m.reason);return s().catch(u)})},PT=new Proxy(globalThis.fetch,{apply(t,s,i){return Reflect.apply(globalThis.fetch,s,i)}}),VT=gT({baseUrl:"/",fetch:PT}),xe=vT(yT,VT),HT="_bar_1xhb4_1",$T="_input_1xhb4_32",GT="_select_1xhb4_67",qT="_btnPrimary_1xhb4_103",FT="_btnGhost_1xhb4_173",ZT="_badge_1xhb4_195",KT="_disconnectHint_1xhb4_205",_n={bar:HT,input:$T,select:GT,btnPrimary:qT,btnGhost:FT,badge:ZT,disconnectHint:KT};function YT(t,s){if(!t)return!1;const i=s.find(o=>o.id===t);return i!==void 0&&(i.status==="disconnected"||i.status==="error")}function JT({environmentId:t,onReconnect:s}){return l.jsxs(l.Fragment,{children:[l.jsx("span",{className:_n.disconnectHint,"data-testid":"env-disconnect-hint",children:"Environment unavailable"}),l.jsx("button",{type:"button",onClick:()=>s(t),className:_n.btnGhost,"data-testid":"reconnect-btn",title:"Reconnect the environment to resume messaging",children:"Reconnect"})]})}function kr({mode:t,sessionId:s,environmentId:i,taskId:o,showPersonaSelect:c,personas:u,environments:d,onSendInput:m,onSpawn:h,onStartTask:g,onProvisionEnvironment:v,onShowToast:_}){const[b,S]=y.useState(""),[T,N]=y.useState(""),j=YT(i,d),w=C=>{if(C.preventDefault(),!!b.trim())if(t==="send"){if(!s||j)return;m(s,b),S("")}else if(t==="spawn"){if(!i)return;h(i,b,T),_==null||_("Session started","success"),S(""),N("")}else{if(!o)return;g(o,void 0,i,b),S("")}};return t==="spawn"?l.jsxs("form",{onSubmit:w,className:_n.bar,children:[l.jsx("span",{className:_n.badge,children:"new chat"}),l.jsx("input",{type:"text",value:b,onChange:C=>S(C.target.value),placeholder:"Enter prompt...",autoFocus:!0,className:_n.input}),c&&l.jsxs("select",{value:T,onChange:C=>N(C.target.value),className:_n.select,children:[l.jsx("option",{value:"",children:"(Default)"}),u.map(C=>l.jsx("option",{value:C.id,children:C.name},C.id))]}),l.jsx("button",{type:"submit",disabled:!b.trim()||!i,className:_n.btnPrimary,children:"Go"})]}):t==="start"?l.jsxs("form",{onSubmit:w,className:_n.bar,children:[l.jsx("input",{type:"text",value:b,onChange:C=>S(C.target.value),placeholder:"Type a message...",autoFocus:!0,className:_n.input}),l.jsx("button",{type:"submit",disabled:!b.trim(),className:_n.btnPrimary,children:"Send"})]}):l.jsxs("form",{onSubmit:w,className:_n.bar,children:[j&&i&&l.jsx(JT,{environmentId:i,onReconnect:v}),l.jsx("input",{type:"text",value:b,onChange:C=>S(C.target.value),placeholder:"Type a message...",autoFocus:!j,disabled:j,className:_n.input}),l.jsx("span",{title:j?"Environment is unavailable — reconnect first":void 0,children:l.jsx("button",{type:"submit",disabled:!b.trim()||j,className:_n.btnPrimary,children:"Send"})})]})}const _0=220,x0=70,WT=40,XT=60,QT="hierarchy",ek="dependency";function tk(t){return y.useMemo(()=>{if(t.length===0)return{nodes:[],edges:[]};const s=new d0.graphlib.Graph({multigraph:!0});s.setDefaultEdgeLabel(()=>({})),s.setGraph({rankdir:"TB",nodesep:WT,ranksep:XT});const i=new Map(t.map(d=>[d.id,d])),o=new Map;for(const d of t)if(d.parentTaskId&&i.has(d.parentTaskId)){const m=o.get(d.parentTaskId)||[];m.push(d),o.set(d.parentTaskId,m)}for(const d of t)s.setNode(d.id,{width:_0,height:x0});const c=[];for(const d of t){if(d.parentTaskId&&i.has(d.parentTaskId)){const m=`hierarchy-${d.parentTaskId}-${d.id}`;s.setEdge(d.parentTaskId,d.id,{},m),c.push({id:m,source:d.parentTaskId,target:d.id,type:"smoothstep",data:{edgeType:QT},style:{stroke:"var(--accent-green)",strokeWidth:2},animated:!1})}for(const m of d.dependsOn)if(i.has(m)){const h=`dependency-${m}-${d.id}`;s.setEdge(m,d.id,{},h),c.push({id:h,source:m,target:d.id,type:"smoothstep",data:{edgeType:ek},style:{stroke:"var(--text-tertiary)",strokeWidth:1.5,strokeDasharray:"6 3"},animated:!1})}}return d0.layout(s),{nodes:t.map(d=>{const m=s.node(d.id),h=o.get(d.id)||[];return{id:d.id,type:"task",position:{x:m.x-_0/2,y:m.y-x0/2},data:{task:d,childCount:h.length,doneChildCount:h.filter(g=>g.status==="complete").length,hasDependencies:d.dependsOn.length>0}}}),edges:c}},[t])}const Yf={not_started:{color:"var(--text-tertiary)",icon:"○",label:"Not Started"},working:{color:"var(--accent-green)",icon:"●",label:"Working"},paused:{color:"var(--accent-yellow)",icon:"◉",label:"Paused"},complete:{color:"var(--accent-green)",icon:"✓",label:"Complete"},failed:{color:"var(--accent-red)",icon:"✗",label:"Failed"},blocked:{color:"var(--accent-yellow)",icon:"⦸",label:"Blocked"}};function Sa(t){return t==="blocked"?Yf.blocked:Yf[Tp(t)]}const nk={not_started:"statusPending",working:"statusInProgress",paused:"statusWaitingInput",complete:"statusDone",failed:"statusFailed"};function sk(t){return nk[Tp(t)]??"statusPending"}const ak=["working","paused","failed","not_started","blocked","complete"],S0=["not_started","working","paused","complete","failed"],ik={pending:"not_started",assigned:"not_started",in_progress:"working",waiting_input:"paused",review:"paused",done:"complete"};function Tp(t){return t in Yf&&t!=="blocked"?t:ik[t]??"not_started"}const ok={not_started:"--text-tertiary",working:"--accent-green",paused:"--accent-yellow",complete:"--accent-green",failed:"--accent-red",pending:"--text-tertiary",assigned:"--text-tertiary",in_progress:"--accent-green",review:"--accent-yellow",done:"--accent-green",waiting_input:"--accent-yellow"},rk="_dagContainer_js4w6_1",lk="_taskNode_js4w6_26",ck="_taskNodeBorder_js4w6_54",uk="_taskNodeContent_js4w6_60",dk="_taskNodeHeader_js4w6_70",fk="_taskNodeIcon_js4w6_77",pk="_taskNodeTitle_js4w6_82",mk="_taskNodeBadges_js4w6_90",hk="_childBadge_js4w6_95",gk="_depBadge_js4w6_107",vk="_handle_js4w6_119",yk="_emptyCta_js4w6_126",bk="_ctaDescription_js4w6_137",_k="_ctaButton_js4w6_144",sn={dagContainer:rk,taskNode:lk,taskNodeBorder:ck,taskNodeContent:uk,taskNodeHeader:dk,taskNodeIcon:fk,taskNodeTitle:pk,taskNodeBadges:mk,childBadge:hk,depBadge:gk,handle:vk,emptyCta:yk,ctaDescription:bk,ctaButton:_k};function xk({data:t}){const{task:s,childCount:i,doneChildCount:o,hasDependencies:c}=t,u=Sa(s.status);return l.jsxs("div",{className:sn.taskNode,"data-task-id":s.id,"data-task-title":s.title,children:[l.jsx(f0,{type:"target",position:p0.Top,className:sn.handle}),l.jsx("div",{className:sn.taskNodeBorder,style:{backgroundColor:u.color}}),l.jsxs("div",{className:sn.taskNodeContent,children:[l.jsxs("div",{className:sn.taskNodeHeader,children:[l.jsx("span",{className:sn.taskNodeIcon,style:{color:u.color},children:u.icon}),l.jsx("span",{className:sn.taskNodeTitle,children:s.title})]}),l.jsxs("div",{className:sn.taskNodeBadges,children:[i>0&&l.jsxs("span",{className:sn.childBadge,children:[o,"/",i]}),c&&l.jsx("span",{className:sn.depBadge,children:"dep"})]})]}),l.jsx(f0,{type:"source",position:p0.Bottom,className:sn.handle})]})}/**
27
+ * react-router v7.13.2
28
+ *
29
+ * Copyright (c) Remix Software Inc.
30
+ *
31
+ * This source code is licensed under the MIT license found in the
32
+ * LICENSE.md file in the root directory of this source tree.
33
+ *
34
+ * @license MIT
35
+ */var T0="popstate";function k0(t){return typeof t=="object"&&t!=null&&"pathname"in t&&"search"in t&&"hash"in t&&"state"in t&&"key"in t}function Sk(t={}){function s(o,c){var g;let u=(g=c.state)==null?void 0:g.masked,{pathname:d,search:m,hash:h}=u||o.location;return Jf("",{pathname:d,search:m,hash:h},c.state&&c.state.usr||null,c.state&&c.state.key||"default",u?{pathname:o.location.pathname,search:o.location.search,hash:o.location.hash}:void 0)}function i(o,c){return typeof c=="string"?c:wr(c)}return kk(s,i,null,t)}function ht(t,s){if(t===!1||t===null||typeof t>"u")throw new Error(s)}function zn(t,s){if(!t){typeof console<"u"&&console.warn(s);try{throw new Error(s)}catch{}}}function Tk(){return Math.random().toString(36).substring(2,10)}function w0(t,s){return{usr:t.state,key:t.key,idx:s,masked:t.unstable_mask?{pathname:t.pathname,search:t.search,hash:t.hash}:void 0}}function Jf(t,s,i=null,o,c){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof s=="string"?co(s):s,state:i,key:s&&s.key||o||Tk(),unstable_mask:c}}function wr({pathname:t="/",search:s="",hash:i=""}){return s&&s!=="?"&&(t+=s.charAt(0)==="?"?s:"?"+s),i&&i!=="#"&&(t+=i.charAt(0)==="#"?i:"#"+i),t}function co(t){let s={};if(t){let i=t.indexOf("#");i>=0&&(s.hash=t.substring(i),t=t.substring(0,i));let o=t.indexOf("?");o>=0&&(s.search=t.substring(o),t=t.substring(0,o)),t&&(s.pathname=t)}return s}function kk(t,s,i,o={}){let{window:c=document.defaultView,v5Compat:u=!1}=o,d=c.history,m="POP",h=null,g=v();g==null&&(g=0,d.replaceState({...d.state,idx:g},""));function v(){return(d.state||{idx:null}).idx}function _(){m="POP";let j=v(),w=j==null?null:j-g;g=j,h&&h({action:m,location:N.location,delta:w})}function b(j,w){m="PUSH";let C=k0(j)?j:Jf(N.location,j,w);g=v()+1;let A=w0(C,g),M=N.createHref(C.unstable_mask||C);try{d.pushState(A,"",M)}catch(D){if(D instanceof DOMException&&D.name==="DataCloneError")throw D;c.location.assign(M)}u&&h&&h({action:m,location:N.location,delta:1})}function S(j,w){m="REPLACE";let C=k0(j)?j:Jf(N.location,j,w);g=v();let A=w0(C,g),M=N.createHref(C.unstable_mask||C);d.replaceState(A,"",M),u&&h&&h({action:m,location:N.location,delta:0})}function T(j){return wk(j)}let N={get action(){return m},get location(){return t(c,d)},listen(j){if(h)throw new Error("A history only accepts one active listener");return c.addEventListener(T0,_),h=j,()=>{c.removeEventListener(T0,_),h=null}},createHref(j){return s(c,j)},createURL:T,encodeLocation(j){let w=T(j);return{pathname:w.pathname,search:w.search,hash:w.hash}},push:b,replace:S,go(j){return d.go(j)}};return N}function wk(t,s=!1){let i="http://localhost";typeof window<"u"&&(i=window.location.origin!=="null"?window.location.origin:window.location.href),ht(i,"No window.location.(origin|href) available to create URL");let o=typeof t=="string"?t:wr(t);return o=o.replace(/ $/,"%20"),!s&&o.startsWith("//")&&(o=i+o),new URL(o,i)}function Tb(t,s,i="/"){return Nk(t,s,i,!1)}function Nk(t,s,i,o){let c=typeof s=="string"?co(s):s,u=zs(c.pathname||"/",i);if(u==null)return null;let d=kb(t);jk(d);let m=null;for(let h=0;m==null&&h<d.length;++h){let g=Nb(u);m=Bk(d[h],g,o)}return m}function kb(t,s=[],i=[],o="",c=!1){let u=(d,m,h=c,g)=>{let v={relativePath:g===void 0?d.path||"":g,caseSensitive:d.caseSensitive===!0,childrenIndex:m,route:d};if(v.relativePath.startsWith("/")){if(!v.relativePath.startsWith(o)&&h)return;ht(v.relativePath.startsWith(o),`Absolute route path "${v.relativePath}" nested under path "${o}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),v.relativePath=v.relativePath.slice(o.length)}let _=ls([o,v.relativePath]),b=i.concat(v);d.children&&d.children.length>0&&(ht(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${_}".`),kb(d.children,s,b,_,h)),!(d.path==null&&!d.index)&&s.push({path:_,score:Ik(_,d.index),routesMeta:b})};return t.forEach((d,m)=>{var h;if(d.path===""||!((h=d.path)!=null&&h.includes("?")))u(d,m);else for(let g of wb(d.path))u(d,m,!0,g)}),s}function wb(t){let s=t.split("/");if(s.length===0)return[];let[i,...o]=s,c=i.endsWith("?"),u=i.replace(/\?$/,"");if(o.length===0)return c?[u,""]:[u];let d=wb(o.join("/")),m=[];return m.push(...d.map(h=>h===""?u:[u,h].join("/"))),c&&m.push(...d),m.map(h=>t.startsWith("/")&&h===""?"/":h)}function jk(t){t.sort((s,i)=>s.score!==i.score?i.score-s.score:Ok(s.routesMeta.map(o=>o.childrenIndex),i.routesMeta.map(o=>o.childrenIndex)))}var Ck=/^:[\w-]+$/,Ek=3,Ak=2,Dk=1,Rk=10,Mk=-2,N0=t=>t==="*";function Ik(t,s){let i=t.split("/"),o=i.length;return i.some(N0)&&(o+=Mk),s&&(o+=Ak),i.filter(c=>!N0(c)).reduce((c,u)=>c+(Ck.test(u)?Ek:u===""?Dk:Rk),o)}function Ok(t,s){return t.length===s.length&&t.slice(0,-1).every((o,c)=>o===s[c])?t[t.length-1]-s[s.length-1]:0}function Bk(t,s,i=!1){let{routesMeta:o}=t,c={},u="/",d=[];for(let m=0;m<o.length;++m){let h=o[m],g=m===o.length-1,v=u==="/"?s:s.slice(u.length)||"/",_=Nr({path:h.relativePath,caseSensitive:h.caseSensitive,end:g},v),b=h.route;if(!_&&g&&i&&!o[o.length-1].route.index&&(_=Nr({path:h.relativePath,caseSensitive:h.caseSensitive,end:!1},v)),!_)return null;Object.assign(c,_.params),d.push({params:c,pathname:ls([u,_.pathname]),pathnameBase:Vk(ls([u,_.pathnameBase])),route:b}),_.pathnameBase!=="/"&&(u=ls([u,_.pathnameBase]))}return d}function Nr(t,s){typeof t=="string"&&(t={path:t,caseSensitive:!1,end:!0});let[i,o]=Lk(t.path,t.caseSensitive,t.end),c=s.match(i);if(!c)return null;let u=c[0],d=u.replace(/(.)\/+$/,"$1"),m=c.slice(1);return{params:o.reduce((g,{paramName:v,isOptional:_},b)=>{if(v==="*"){let T=m[b]||"";d=u.slice(0,u.length-T.length).replace(/(.)\/+$/,"$1")}const S=m[b];return _&&!S?g[v]=void 0:g[v]=(S||"").replace(/%2F/g,"/"),g},{}),pathname:u,pathnameBase:d,pattern:t}}function Lk(t,s=!1,i=!0){zn(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 o=[],c="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(d,m,h,g,v)=>{if(o.push({paramName:m,isOptional:h!=null}),h){let _=v.charAt(g+d.length);return _&&_!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(o.push({paramName:"*"}),c+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):i?c+="\\/*$":t!==""&&t!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,s?void 0:"i"),o]}function Nb(t){try{return t.split("/").map(s=>decodeURIComponent(s).replace(/\//g,"%2F")).join("/")}catch(s){return zn(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${s}).`),t}}function zs(t,s){if(s==="/")return t;if(!t.toLowerCase().startsWith(s.toLowerCase()))return null;let i=s.endsWith("/")?s.length-1:s.length,o=t.charAt(i);return o&&o!=="/"?null:t.slice(i)||"/"}var Uk=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function zk(t,s="/"){let{pathname:i,search:o="",hash:c=""}=typeof t=="string"?co(t):t,u;return i?(i=i.replace(/\/\/+/g,"/"),i.startsWith("/")?u=j0(i.substring(1),"/"):u=j0(i,s)):u=s,{pathname:u,search:Hk(o),hash:$k(c)}}function j0(t,s){let i=s.replace(/\/+$/,"").split("/");return t.split("/").forEach(c=>{c===".."?i.length>1&&i.pop():c!=="."&&i.push(c)}),i.length>1?i.join("/"):"/"}function pf(t,s,i,o){return`Cannot include a '${t}' character in a manually specified \`to.${s}\` field [${JSON.stringify(o)}]. Please separate it out to the \`to.${i}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Pk(t){return t.filter((s,i)=>i===0||s.route.path&&s.route.path.length>0)}function kp(t){let s=Pk(t);return s.map((i,o)=>o===s.length-1?i.pathname:i.pathnameBase)}function Hc(t,s,i,o=!1){let c;typeof t=="string"?c=co(t):(c={...t},ht(!c.pathname||!c.pathname.includes("?"),pf("?","pathname","search",c)),ht(!c.pathname||!c.pathname.includes("#"),pf("#","pathname","hash",c)),ht(!c.search||!c.search.includes("#"),pf("#","search","hash",c)));let u=t===""||c.pathname==="",d=u?"/":c.pathname,m;if(d==null)m=i;else{let _=s.length-1;if(!o&&d.startsWith("..")){let b=d.split("/");for(;b[0]==="..";)b.shift(),_-=1;c.pathname=b.join("/")}m=_>=0?s[_]:"/"}let h=zk(c,m),g=d&&d!=="/"&&d.endsWith("/"),v=(u||d===".")&&i.endsWith("/");return!h.pathname.endsWith("/")&&(g||v)&&(h.pathname+="/"),h}var ls=t=>t.join("/").replace(/\/\/+/g,"/"),Vk=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),Hk=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,$k=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t,Gk=class{constructor(t,s,i,o=!1){this.status=t,this.statusText=s||"",this.internal=o,i instanceof Error?(this.data=i.toString(),this.error=i):this.data=i}};function qk(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}function Fk(t){return t.map(s=>s.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var jb=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Cb(t,s){let i=t;if(typeof i!="string"||!Uk.test(i))return{absoluteURL:void 0,isExternal:!1,to:i};let o=i,c=!1;if(jb)try{let u=new URL(window.location.href),d=i.startsWith("//")?new URL(u.protocol+i):new URL(i),m=zs(d.pathname,s);d.origin===u.origin&&m!=null?i=m+d.search+d.hash:c=!0}catch{zn(!1,`<Link to="${i}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:o,isExternal:c,to:i}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Eb=["POST","PUT","PATCH","DELETE"];new Set(Eb);var Zk=["GET",...Eb];new Set(Zk);var uo=y.createContext(null);uo.displayName="DataRouter";var $c=y.createContext(null);$c.displayName="DataRouterState";var Kk=y.createContext(!1),Ab=y.createContext({isTransitioning:!1});Ab.displayName="ViewTransition";var Yk=y.createContext(new Map);Yk.displayName="Fetchers";var Jk=y.createContext(null);Jk.displayName="Await";var Tn=y.createContext(null);Tn.displayName="Navigation";var Rr=y.createContext(null);Rr.displayName="Location";var Pn=y.createContext({outlet:null,matches:[],isDataRoute:!1});Pn.displayName="Route";var wp=y.createContext(null);wp.displayName="RouteError";var Db="REACT_ROUTER_ERROR",Wk="REDIRECT",Xk="ROUTE_ERROR_RESPONSE";function Qk(t){if(t.startsWith(`${Db}:${Wk}:{`))try{let s=JSON.parse(t.slice(28));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string"&&typeof s.location=="string"&&typeof s.reloadDocument=="boolean"&&typeof s.replace=="boolean")return s}catch{}}function ew(t){if(t.startsWith(`${Db}:${Xk}:{`))try{let s=JSON.parse(t.slice(40));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string")return new Gk(s.status,s.statusText,s.data)}catch{}}function tw(t,{relative:s}={}){ht(oi(),"useHref() may be used only in the context of a <Router> component.");let{basename:i,navigator:o}=y.useContext(Tn),{hash:c,pathname:u,search:d}=Mr(t,{relative:s}),m=u;return i!=="/"&&(m=u==="/"?i:ls([i,u])),o.createHref({pathname:m,search:d,hash:c})}function oi(){return y.useContext(Rr)!=null}function Ut(){return ht(oi(),"useLocation() may be used only in the context of a <Router> component."),y.useContext(Rr).location}function kt(t){ht(oi(),"useMatch() may be used only in the context of a <Router> component.");let{pathname:s}=Ut();return y.useMemo(()=>Nr(t,Nb(s)),[s,t])}var Rb="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Mb(t){y.useContext(Tn).static||y.useLayoutEffect(t)}function Gc(){let{isDataRoute:t}=y.useContext(Pn);return t?gw():nw()}function nw(){ht(oi(),"useNavigate() may be used only in the context of a <Router> component.");let t=y.useContext(uo),{basename:s,navigator:i}=y.useContext(Tn),{matches:o}=y.useContext(Pn),{pathname:c}=Ut(),u=JSON.stringify(kp(o)),d=y.useRef(!1);return Mb(()=>{d.current=!0}),y.useCallback((h,g={})=>{if(zn(d.current,Rb),!d.current)return;if(typeof h=="number"){i.go(h);return}let v=Hc(h,JSON.parse(u),c,g.relative==="path");t==null&&s!=="/"&&(v.pathname=v.pathname==="/"?s:ls([s,v.pathname])),(g.replace?i.replace:i.push)(v,g.state,g)},[s,i,u,c,t])}var sw=y.createContext(null);function aw(t){let s=y.useContext(Pn).outlet;return y.useMemo(()=>s&&y.createElement(sw.Provider,{value:t},s),[s,t])}function Qn(){let{matches:t}=y.useContext(Pn),s=t[t.length-1];return s?s.params:{}}function Mr(t,{relative:s}={}){let{matches:i}=y.useContext(Pn),{pathname:o}=Ut(),c=JSON.stringify(kp(i));return y.useMemo(()=>Hc(t,JSON.parse(c),o,s==="path"),[t,c,o,s])}function iw(t,s){return Ib(t,s)}function Ib(t,s,i){var j;ht(oi(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:o}=y.useContext(Tn),{matches:c}=y.useContext(Pn),u=c[c.length-1],d=u?u.params:{},m=u?u.pathname:"/",h=u?u.pathnameBase:"/",g=u&&u.route;{let w=g&&g.path||"";Bb(m,!g||w.endsWith("*")||w.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${m}" (under <Route path="${w}">) 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.
36
+
37
+ Please change the parent <Route path="${w}"> to <Route path="${w==="/"?"*":`${w}/*`}">.`)}let v=Ut(),_;if(s){let w=typeof s=="string"?co(s):s;ht(h==="/"||((j=w.pathname)==null?void 0:j.startsWith(h)),`When overriding the location using \`<Routes location>\` 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 "${h}" but pathname "${w.pathname}" was given in the \`location\` prop.`),_=w}else _=v;let b=_.pathname||"/",S=b;if(h!=="/"){let w=h.replace(/^\//,"").split("/");S="/"+b.replace(/^\//,"").split("/").slice(w.length).join("/")}let T=Tb(t,{pathname:S});zn(g||T!=null,`No routes matched location "${_.pathname}${_.search}${_.hash}" `),zn(T==null||T[T.length-1].route.element!==void 0||T[T.length-1].route.Component!==void 0||T[T.length-1].route.lazy!==void 0,`Matched leaf route at location "${_.pathname}${_.search}${_.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let N=uw(T&&T.map(w=>Object.assign({},w,{params:Object.assign({},d,w.params),pathname:ls([h,o.encodeLocation?o.encodeLocation(w.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?h:ls([h,o.encodeLocation?o.encodeLocation(w.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:w.pathnameBase])})),c,i);return s&&N?y.createElement(Rr.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,..._},navigationType:"POP"}},N):N}function ow(){let t=hw(),s=qk(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),i=t instanceof Error?t.stack:null,o="rgba(200,200,200, 0.5)",c={padding:"0.5rem",backgroundColor:o},u={padding:"2px 4px",backgroundColor:o},d=null;return console.error("Error handled by React Router default ErrorBoundary:",t),d=y.createElement(y.Fragment,null,y.createElement("p",null,"💿 Hey developer 👋"),y.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",y.createElement("code",{style:u},"ErrorBoundary")," or"," ",y.createElement("code",{style:u},"errorElement")," prop on your route.")),y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},s),i?y.createElement("pre",{style:c},i):null,d)}var rw=y.createElement(ow,null),Ob=class extends y.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,s){return s.location!==t.location||s.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:s.error,location:s.location,revalidation:t.revalidation||s.revalidation}}componentDidCatch(t,s){this.props.onError?this.props.onError(t,s):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const i=ew(t.digest);i&&(t=i)}let s=t!==void 0?y.createElement(Pn.Provider,{value:this.props.routeContext},y.createElement(wp.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?y.createElement(lw,{error:t},s):s}};Ob.contextType=Kk;var mf=new WeakMap;function lw({children:t,error:s}){let{basename:i}=y.useContext(Tn);if(typeof s=="object"&&s&&"digest"in s&&typeof s.digest=="string"){let o=Qk(s.digest);if(o){let c=mf.get(s);if(c)throw c;let u=Cb(o.location,i);if(jb&&!mf.get(s))if(u.isExternal||o.reloadDocument)window.location.href=u.absoluteURL||u.to;else{const d=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(u.to,{replace:o.replace}));throw mf.set(s,d),d}return y.createElement("meta",{httpEquiv:"refresh",content:`0;url=${u.absoluteURL||u.to}`})}}return t}function cw({routeContext:t,match:s,children:i}){let o=y.useContext(uo);return o&&o.static&&o.staticContext&&(s.route.errorElement||s.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=s.route.id),y.createElement(Pn.Provider,{value:t},i)}function uw(t,s=[],i){let o=i==null?void 0:i.state;if(t==null){if(!o)return null;if(o.errors)t=o.matches;else if(s.length===0&&!o.initialized&&o.matches.length>0)t=o.matches;else return null}let c=t,u=o==null?void 0:o.errors;if(u!=null){let v=c.findIndex(_=>_.route.id&&(u==null?void 0:u[_.route.id])!==void 0);ht(v>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(u).join(",")}`),c=c.slice(0,Math.min(c.length,v+1))}let d=!1,m=-1;if(i&&o){d=o.renderFallback;for(let v=0;v<c.length;v++){let _=c[v];if((_.route.HydrateFallback||_.route.hydrateFallbackElement)&&(m=v),_.route.id){let{loaderData:b,errors:S}=o,T=_.route.loader&&!b.hasOwnProperty(_.route.id)&&(!S||S[_.route.id]===void 0);if(_.route.lazy||T){i.isStatic&&(d=!0),m>=0?c=c.slice(0,m+1):c=[c[0]];break}}}}let h=i==null?void 0:i.onError,g=o&&h?(v,_)=>{var b,S;h(v,{location:o.location,params:((S=(b=o.matches)==null?void 0:b[0])==null?void 0:S.params)??{},unstable_pattern:Fk(o.matches),errorInfo:_})}:void 0;return c.reduceRight((v,_,b)=>{let S,T=!1,N=null,j=null;o&&(S=u&&_.route.id?u[_.route.id]:void 0,N=_.route.errorElement||rw,d&&(m<0&&b===0?(Bb("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),T=!0,j=null):m===b&&(T=!0,j=_.route.hydrateFallbackElement||null)));let w=s.concat(c.slice(0,b+1)),C=()=>{let A;return S?A=N:T?A=j:_.route.Component?A=y.createElement(_.route.Component,null):_.route.element?A=_.route.element:A=v,y.createElement(cw,{match:_,routeContext:{outlet:v,matches:w,isDataRoute:o!=null},children:A})};return o&&(_.route.ErrorBoundary||_.route.errorElement||b===0)?y.createElement(Ob,{location:o.location,revalidation:o.revalidation,component:N,error:S,children:C(),routeContext:{outlet:null,matches:w,isDataRoute:!0},onError:g}):C()},null)}function Np(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function dw(t){let s=y.useContext(uo);return ht(s,Np(t)),s}function fw(t){let s=y.useContext($c);return ht(s,Np(t)),s}function pw(t){let s=y.useContext(Pn);return ht(s,Np(t)),s}function jp(t){let s=pw(t),i=s.matches[s.matches.length-1];return ht(i.route.id,`${t} can only be used on routes that contain a unique "id"`),i.route.id}function mw(){return jp("useRouteId")}function hw(){var o;let t=y.useContext(wp),s=fw("useRouteError"),i=jp("useRouteError");return t!==void 0?t:(o=s.errors)==null?void 0:o[i]}function gw(){let{router:t}=dw("useNavigate"),s=jp("useNavigate"),i=y.useRef(!1);return Mb(()=>{i.current=!0}),y.useCallback(async(c,u={})=>{zn(i.current,Rb),i.current&&(typeof c=="number"?await t.navigate(c):await t.navigate(c,{fromRouteId:s,...u}))},[t,s])}var C0={};function Bb(t,s,i){!s&&!C0[t]&&(C0[t]=!0,zn(!1,i))}y.memo(vw);function vw({routes:t,future:s,state:i,isStatic:o,onError:c}){return Ib(t,void 0,{state:i,isStatic:o,onError:c})}function Wn({to:t,replace:s,state:i,relative:o}){ht(oi(),"<Navigate> may be used only in the context of a <Router> component.");let{static:c}=y.useContext(Tn);zn(!c,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:u}=y.useContext(Pn),{pathname:d}=Ut(),m=Gc(),h=Hc(t,kp(u),d,o==="path"),g=JSON.stringify(h);return y.useEffect(()=>{m(JSON.parse(g),{replace:s,state:i,relative:o})},[m,g,o,s,i]),null}function wa(t){return aw(t.context)}function Te(t){ht(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function yw({basename:t="/",children:s=null,location:i,navigationType:o="POP",navigator:c,static:u=!1,unstable_useTransitions:d}){ht(!oi(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let m=t.replace(/^\/*/,"/"),h=y.useMemo(()=>({basename:m,navigator:c,static:u,unstable_useTransitions:d,future:{}}),[m,c,u,d]);typeof i=="string"&&(i=co(i));let{pathname:g="/",search:v="",hash:_="",state:b=null,key:S="default",unstable_mask:T}=i,N=y.useMemo(()=>{let j=zs(g,m);return j==null?null:{location:{pathname:j,search:v,hash:_,state:b,key:S,unstable_mask:T},navigationType:o}},[m,g,v,_,b,S,o,T]);return zn(N!=null,`<Router basename="${m}"> is not able to match the URL "${g}${v}${_}" because it does not start with the basename, so the <Router> won't render anything.`),N==null?null:y.createElement(Tn.Provider,{value:h},y.createElement(Rr.Provider,{children:s,value:N}))}function bw({children:t,location:s}){return iw(Wf(t),s)}function Wf(t,s=[]){let i=[];return y.Children.forEach(t,(o,c)=>{if(!y.isValidElement(o))return;let u=[...s,c];if(o.type===y.Fragment){i.push.apply(i,Wf(o.props.children,u));return}ht(o.type===Te,`[${typeof o.type=="string"?o.type:o.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),ht(!o.props.index||!o.props.children,"An index route cannot have child routes.");let d={id:o.props.id||u.join("-"),caseSensitive:o.props.caseSensitive,element:o.props.element,Component:o.props.Component,index:o.props.index,path:o.props.path,middleware:o.props.middleware,loader:o.props.loader,action:o.props.action,hydrateFallbackElement:o.props.hydrateFallbackElement,HydrateFallback:o.props.HydrateFallback,errorElement:o.props.errorElement,ErrorBoundary:o.props.ErrorBoundary,hasErrorBoundary:o.props.hasErrorBoundary===!0||o.props.ErrorBoundary!=null||o.props.errorElement!=null,shouldRevalidate:o.props.shouldRevalidate,handle:o.props.handle,lazy:o.props.lazy};o.props.children&&(d.children=Wf(o.props.children,u)),i.push(d)}),i}var bc="get",_c="application/x-www-form-urlencoded";function qc(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function _w(t){return qc(t)&&t.tagName.toLowerCase()==="button"}function xw(t){return qc(t)&&t.tagName.toLowerCase()==="form"}function Sw(t){return qc(t)&&t.tagName.toLowerCase()==="input"}function Tw(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function kw(t,s){return t.button===0&&(!s||s==="_self")&&!Tw(t)}function Xf(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((s,i)=>{let o=t[i];return s.concat(Array.isArray(o)?o.map(c=>[i,c]):[[i,o]])},[]))}function ww(t,s){let i=Xf(t);return s&&s.forEach((o,c)=>{i.has(c)||s.getAll(c).forEach(u=>{i.append(c,u)})}),i}var oc=null;function Nw(){if(oc===null)try{new FormData(document.createElement("form"),0),oc=!1}catch{oc=!0}return oc}var jw=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function hf(t){return t!=null&&!jw.has(t)?(zn(!1,`"${t}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${_c}"`),null):t}function Cw(t,s){let i,o,c,u,d;if(xw(t)){let m=t.getAttribute("action");o=m?zs(m,s):null,i=t.getAttribute("method")||bc,c=hf(t.getAttribute("enctype"))||_c,u=new FormData(t)}else if(_w(t)||Sw(t)&&(t.type==="submit"||t.type==="image")){let m=t.form;if(m==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let h=t.getAttribute("formaction")||m.getAttribute("action");if(o=h?zs(h,s):null,i=t.getAttribute("formmethod")||m.getAttribute("method")||bc,c=hf(t.getAttribute("formenctype"))||hf(m.getAttribute("enctype"))||_c,u=new FormData(m,t),!Nw()){let{name:g,type:v,value:_}=t;if(v==="image"){let b=g?`${g}.`:"";u.append(`${b}x`,"0"),u.append(`${b}y`,"0")}else g&&u.append(g,_)}}else{if(qc(t))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');i=bc,o=null,c=_c,d=t}return u&&c==="text/plain"&&(d=u,u=void 0),{action:o,method:i.toLowerCase(),encType:c,formData:u,body:d}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Cp(t,s){if(t===!1||t===null||typeof t>"u")throw new Error(s)}function Ew(t,s,i,o){let c=typeof t=="string"?new URL(t,typeof window>"u"?"server://singlefetch/":window.location.origin):t;return i?c.pathname.endsWith("/")?c.pathname=`${c.pathname}_.${o}`:c.pathname=`${c.pathname}.${o}`:c.pathname==="/"?c.pathname=`_root.${o}`:s&&zs(c.pathname,s)==="/"?c.pathname=`${s.replace(/\/$/,"")}/_root.${o}`:c.pathname=`${c.pathname.replace(/\/$/,"")}.${o}`,c}async function Aw(t,s){if(t.id in s)return s[t.id];try{let i=await import(t.module);return s[t.id]=i,i}catch(i){return console.error(`Error loading route module \`${t.module}\`, reloading page...`),console.error(i),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Dw(t){return t==null?!1:t.href==null?t.rel==="preload"&&typeof t.imageSrcSet=="string"&&typeof t.imageSizes=="string":typeof t.rel=="string"&&typeof t.href=="string"}async function Rw(t,s,i){let o=await Promise.all(t.map(async c=>{let u=s.routes[c.route.id];if(u){let d=await Aw(u,i);return d.links?d.links():[]}return[]}));return Bw(o.flat(1).filter(Dw).filter(c=>c.rel==="stylesheet"||c.rel==="preload").map(c=>c.rel==="stylesheet"?{...c,rel:"prefetch",as:"style"}:{...c,rel:"prefetch"}))}function E0(t,s,i,o,c,u){let d=(h,g)=>i[g]?h.route.id!==i[g].route.id:!0,m=(h,g)=>{var v;return i[g].pathname!==h.pathname||((v=i[g].route.path)==null?void 0:v.endsWith("*"))&&i[g].params["*"]!==h.params["*"]};return u==="assets"?s.filter((h,g)=>d(h,g)||m(h,g)):u==="data"?s.filter((h,g)=>{var _;let v=o.routes[h.route.id];if(!v||!v.hasLoader)return!1;if(d(h,g)||m(h,g))return!0;if(h.route.shouldRevalidate){let b=h.route.shouldRevalidate({currentUrl:new URL(c.pathname+c.search+c.hash,window.origin),currentParams:((_=i[0])==null?void 0:_.params)||{},nextUrl:new URL(t,window.origin),nextParams:h.params,defaultShouldRevalidate:!0});if(typeof b=="boolean")return b}return!0}):[]}function Mw(t,s,{includeHydrateFallback:i}={}){return Iw(t.map(o=>{let c=s.routes[o.route.id];if(!c)return[];let u=[c.module];return c.clientActionModule&&(u=u.concat(c.clientActionModule)),c.clientLoaderModule&&(u=u.concat(c.clientLoaderModule)),i&&c.hydrateFallbackModule&&(u=u.concat(c.hydrateFallbackModule)),c.imports&&(u=u.concat(c.imports)),u}).flat(1))}function Iw(t){return[...new Set(t)]}function Ow(t){let s={},i=Object.keys(t).sort();for(let o of i)s[o]=t[o];return s}function Bw(t,s){let i=new Set;return new Set(s),t.reduce((o,c)=>{let u=JSON.stringify(Ow(c));return i.has(u)||(i.add(u),o.push({key:u,link:c})),o},[])}function Lb(){let t=y.useContext(uo);return Cp(t,"You must render this element inside a <DataRouterContext.Provider> element"),t}function Lw(){let t=y.useContext($c);return Cp(t,"You must render this element inside a <DataRouterStateContext.Provider> element"),t}var Ep=y.createContext(void 0);Ep.displayName="FrameworkContext";function Ub(){let t=y.useContext(Ep);return Cp(t,"You must render this element inside a <HydratedRouter> element"),t}function Uw(t,s){let i=y.useContext(Ep),[o,c]=y.useState(!1),[u,d]=y.useState(!1),{onFocus:m,onBlur:h,onMouseEnter:g,onMouseLeave:v,onTouchStart:_}=s,b=y.useRef(null);y.useEffect(()=>{if(t==="render"&&d(!0),t==="viewport"){let N=w=>{w.forEach(C=>{d(C.isIntersecting)})},j=new IntersectionObserver(N,{threshold:.5});return b.current&&j.observe(b.current),()=>{j.disconnect()}}},[t]),y.useEffect(()=>{if(o){let N=setTimeout(()=>{d(!0)},100);return()=>{clearTimeout(N)}}},[o]);let S=()=>{c(!0)},T=()=>{c(!1),d(!1)};return i?t!=="intent"?[u,b,{}]:[u,b,{onFocus:lr(m,S),onBlur:lr(h,T),onMouseEnter:lr(g,S),onMouseLeave:lr(v,T),onTouchStart:lr(_,S)}]:[!1,b,{}]}function lr(t,s){return i=>{t&&t(i),i.defaultPrevented||s(i)}}function zw({page:t,...s}){let{router:i}=Lb(),o=y.useMemo(()=>Tb(i.routes,t,i.basename),[i.routes,t,i.basename]);return o?y.createElement(Vw,{page:t,matches:o,...s}):null}function Pw(t){let{manifest:s,routeModules:i}=Ub(),[o,c]=y.useState([]);return y.useEffect(()=>{let u=!1;return Rw(t,s,i).then(d=>{u||c(d)}),()=>{u=!0}},[t,s,i]),o}function Vw({page:t,matches:s,...i}){let o=Ut(),{future:c,manifest:u,routeModules:d}=Ub(),{basename:m}=Lb(),{loaderData:h,matches:g}=Lw(),v=y.useMemo(()=>E0(t,s,g,u,o,"data"),[t,s,g,u,o]),_=y.useMemo(()=>E0(t,s,g,u,o,"assets"),[t,s,g,u,o]),b=y.useMemo(()=>{if(t===o.pathname+o.search+o.hash)return[];let N=new Set,j=!1;if(s.forEach(C=>{var M;let A=u.routes[C.route.id];!A||!A.hasLoader||(!v.some(D=>D.route.id===C.route.id)&&C.route.id in h&&((M=d[C.route.id])!=null&&M.shouldRevalidate)||A.hasClientLoader?j=!0:N.add(C.route.id))}),N.size===0)return[];let w=Ew(t,m,c.unstable_trailingSlashAwareDataRequests,"data");return j&&N.size>0&&w.searchParams.set("_routes",s.filter(C=>N.has(C.route.id)).map(C=>C.route.id).join(",")),[w.pathname+w.search]},[m,c.unstable_trailingSlashAwareDataRequests,h,o,u,v,s,t,d]),S=y.useMemo(()=>Mw(_,u),[_,u]),T=Pw(_);return y.createElement(y.Fragment,null,b.map(N=>y.createElement("link",{key:N,rel:"prefetch",as:"fetch",href:N,...i})),S.map(N=>y.createElement("link",{key:N,rel:"modulepreload",href:N,...i})),T.map(({key:N,link:j})=>y.createElement("link",{key:N,nonce:i.nonce,...j,crossOrigin:j.crossOrigin??i.crossOrigin})))}function Hw(...t){return s=>{t.forEach(i=>{typeof i=="function"?i(s):i!=null&&(i.current=s)})}}var $w=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{$w&&(window.__reactRouterVersion="7.13.2")}catch{}function Gw({basename:t,children:s,unstable_useTransitions:i,window:o}){let c=y.useRef();c.current==null&&(c.current=Sk({window:o,v5Compat:!0}));let u=c.current,[d,m]=y.useState({action:u.action,location:u.location}),h=y.useCallback(g=>{i===!1?m(g):y.startTransition(()=>m(g))},[i]);return y.useLayoutEffect(()=>u.listen(h),[u,h]),y.createElement(yw,{basename:t,children:s,location:d.location,navigationType:d.action,navigator:u,unstable_useTransitions:i})}var zb=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Ap=y.forwardRef(function({onClick:s,discover:i="render",prefetch:o="none",relative:c,reloadDocument:u,replace:d,unstable_mask:m,state:h,target:g,to:v,preventScrollReset:_,viewTransition:b,unstable_defaultShouldRevalidate:S,...T},N){let{basename:j,navigator:w,unstable_useTransitions:C}=y.useContext(Tn),A=typeof v=="string"&&zb.test(v),M=Cb(v,j);v=M.to;let D=tw(v,{relative:c}),E=Ut(),$=null;if(m){let X=Hc(m,[],E.unstable_mask?E.unstable_mask.pathname:"/",!0);j!=="/"&&(X.pathname=X.pathname==="/"?j:ls([j,X.pathname])),$=w.createHref(X)}let[z,K,F]=Uw(o,T),ee=Kw(v,{replace:d,unstable_mask:m,state:h,target:g,preventScrollReset:_,relative:c,viewTransition:b,unstable_defaultShouldRevalidate:S,unstable_useTransitions:C});function ae(X){s&&s(X),X.defaultPrevented||ee(X)}let me=!(M.isExternal||u),ie=y.createElement("a",{...T,...F,href:(me?$:void 0)||M.absoluteURL||D,onClick:me?ae:s,ref:Hw(N,K),target:g,"data-discover":!A&&i==="render"?"true":void 0});return z&&!A?y.createElement(y.Fragment,null,ie,y.createElement(zw,{page:D})):ie});Ap.displayName="Link";var qw=y.forwardRef(function({"aria-current":s="page",caseSensitive:i=!1,className:o="",end:c=!1,style:u,to:d,viewTransition:m,children:h,...g},v){let _=Mr(d,{relative:g.relative}),b=Ut(),S=y.useContext($c),{navigator:T,basename:N}=y.useContext(Tn),j=S!=null&&Qw(_)&&m===!0,w=T.encodeLocation?T.encodeLocation(_).pathname:_.pathname,C=b.pathname,A=S&&S.navigation&&S.navigation.location?S.navigation.location.pathname:null;i||(C=C.toLowerCase(),A=A?A.toLowerCase():null,w=w.toLowerCase()),A&&N&&(A=zs(A,N)||A);const M=w!=="/"&&w.endsWith("/")?w.length-1:w.length;let D=C===w||!c&&C.startsWith(w)&&C.charAt(M)==="/",E=A!=null&&(A===w||!c&&A.startsWith(w)&&A.charAt(w.length)==="/"),$={isActive:D,isPending:E,isTransitioning:j},z=D?s:void 0,K;typeof o=="function"?K=o($):K=[o,D?"active":null,E?"pending":null,j?"transitioning":null].filter(Boolean).join(" ");let F=typeof u=="function"?u($):u;return y.createElement(Ap,{...g,"aria-current":z,className:K,ref:v,style:F,to:d,viewTransition:m},typeof h=="function"?h($):h)});qw.displayName="NavLink";var Fw=y.forwardRef(({discover:t="render",fetcherKey:s,navigate:i,reloadDocument:o,replace:c,state:u,method:d=bc,action:m,onSubmit:h,relative:g,preventScrollReset:v,viewTransition:_,unstable_defaultShouldRevalidate:b,...S},T)=>{let{unstable_useTransitions:N}=y.useContext(Tn),j=Ww(),w=Xw(m,{relative:g}),C=d.toLowerCase()==="get"?"get":"post",A=typeof m=="string"&&zb.test(m),M=D=>{if(h&&h(D),D.defaultPrevented)return;D.preventDefault();let E=D.nativeEvent.submitter,$=(E==null?void 0:E.getAttribute("formmethod"))||d,z=()=>j(E||D.currentTarget,{fetcherKey:s,method:$,navigate:i,replace:c,state:u,relative:g,preventScrollReset:v,viewTransition:_,unstable_defaultShouldRevalidate:b});N&&i!==!1?y.startTransition(()=>z()):z()};return y.createElement("form",{ref:T,method:C,action:w,onSubmit:o?h:M,...S,"data-discover":!A&&t==="render"?"true":void 0})});Fw.displayName="Form";function Zw(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Pb(t){let s=y.useContext(uo);return ht(s,Zw(t)),s}function Kw(t,{target:s,replace:i,unstable_mask:o,state:c,preventScrollReset:u,relative:d,viewTransition:m,unstable_defaultShouldRevalidate:h,unstable_useTransitions:g}={}){let v=Gc(),_=Ut(),b=Mr(t,{relative:d});return y.useCallback(S=>{if(kw(S,s)){S.preventDefault();let T=i!==void 0?i:wr(_)===wr(b),N=()=>v(t,{replace:T,unstable_mask:o,state:c,preventScrollReset:u,relative:d,viewTransition:m,unstable_defaultShouldRevalidate:h});g?y.startTransition(()=>N()):N()}},[_,v,b,i,o,c,s,t,u,d,m,h,g])}function Dp(t){zn(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let s=y.useRef(Xf(t)),i=y.useRef(!1),o=Ut(),c=y.useMemo(()=>ww(o.search,i.current?null:s.current),[o.search]),u=Gc(),d=y.useCallback((m,h)=>{const g=Xf(typeof m=="function"?m(new URLSearchParams(c)):m);i.current=!0,u("?"+g,h)},[u,c]);return[c,d]}var Yw=0,Jw=()=>`__${String(++Yw)}__`;function Ww(){let{router:t}=Pb("useSubmit"),{basename:s}=y.useContext(Tn),i=mw(),o=t.fetch,c=t.navigate;return y.useCallback(async(u,d={})=>{let{action:m,method:h,encType:g,formData:v,body:_}=Cw(u,s);if(d.navigate===!1){let b=d.fetcherKey||Jw();await o(b,i,d.action||m,{unstable_defaultShouldRevalidate:d.unstable_defaultShouldRevalidate,preventScrollReset:d.preventScrollReset,formData:v,body:_,formMethod:d.method||h,formEncType:d.encType||g,flushSync:d.flushSync})}else await c(d.action||m,{unstable_defaultShouldRevalidate:d.unstable_defaultShouldRevalidate,preventScrollReset:d.preventScrollReset,formData:v,body:_,formMethod:d.method||h,formEncType:d.encType||g,replace:d.replace,state:d.state,fromRouteId:i,flushSync:d.flushSync,viewTransition:d.viewTransition})},[o,c,s,i])}function Xw(t,{relative:s}={}){let{basename:i}=y.useContext(Tn),o=y.useContext(Pn);ht(o,"useFormAction must be used inside a RouteContext");let[c]=o.matches.slice(-1),u={...Mr(t||".",{relative:s})},d=Ut();if(t==null){u.search=d.search;let m=new URLSearchParams(u.search),h=m.getAll("index");if(h.some(v=>v==="")){m.delete("index"),h.filter(_=>_).forEach(_=>m.append("index",_));let v=m.toString();u.search=v?`?${v}`:""}}return(!t||t===".")&&c.route.index&&(u.search=u.search?u.search.replace(/^\?/,"?index&"):"?index"),i!=="/"&&(u.pathname=u.pathname==="/"?i:ls([i,u.pathname])),wr(u)}function Qw(t,{relative:s}={}){let i=y.useContext(Ab);ht(i!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:o}=Pb("useViewTransitionState"),c=Mr(t,{relative:s});if(!i.isTransitioning)return!1;let u=zs(i.currentLocation.pathname,o)||i.currentLocation.pathname,d=zs(i.nextLocation.pathname,o)||i.nextLocation.pathname;return Nr(c.pathname,d)!=null||Nr(c.pathname,u)!=null}function vt(){const t=Gc();return y.useCallback((s,i)=>{typeof s=="number"?t(s):t(s,i)},[t])}function Rp(t){return`/sessions/${encodeURIComponent(t)}`}function ni(t,s){return s?`/environments/${encodeURIComponent(s)}/workspaces/${encodeURIComponent(t)}`:`/workspaces/${encodeURIComponent(t)}`}function Xn(t,s,i,o){const c=encodeURIComponent(t);let u;return i&&o?u=`/environments/${encodeURIComponent(o)}/workspaces/${encodeURIComponent(i)}/tasks/${c}`:i?u=`/workspaces/${encodeURIComponent(i)}/tasks/${c}`:u=`/tasks/${c}`,s?`${u}/${s}`:u}function ri(t,s,i){const o=new URLSearchParams;t&&o.set("workspace",t),s&&o.set("parent",s);const c=o.toString();if(t&&i){const u=`/environments/${encodeURIComponent(i)}/workspaces/${encodeURIComponent(t)}/tasks/new`;return s?`${u}?parent=${encodeURIComponent(s)}`:u}return c?`/tasks/new?${c}`:"/tasks/new"}function Vb(t){return`/sessions/new?${new URLSearchParams({env:t}).toString()}`}const ao="/environments",e2="/environments/new";function si(t){return`/environments/${encodeURIComponent(t)}`}function t2(t){return`/environments/${encodeURIComponent(t)}/edit`}const so="/settings",n2="/settings/credentials",gf="/settings/personas",s2="/settings/personas/new";function Hb(t){return`/settings/personas/${encodeURIComponent(t)}`}const a2="/settings/shortcuts",i2="/pair",o2="/chat",ai="/",r2="/tasks",$b="/workspaces/new",Gb="/knowledge",Fc="/findings";function l2(t,s){return t&&s?`/environments/${encodeURIComponent(s)}/workspaces/${encodeURIComponent(t)}/findings`:Fc}function Qf(t,s,i){const o=encodeURIComponent(t);return s&&i?`/environments/${encodeURIComponent(i)}/workspaces/${encodeURIComponent(s)}/findings/${o}`:`/findings/${o}`}const c2=ok,u2={task:xk};function d2({workspaceId:t,environmentId:s,tasks:i,resolvedThemeId:o}){const c=vt(),u=y.useMemo(()=>i.filter(_=>_.workspaceId===t),[i,t]),{nodes:d,edges:m}=tk(u),h=y.useMemo(()=>{const _=getComputedStyle(document.documentElement),b={};for(const[S,T]of Object.entries(c2))b[S]=_.getPropertyValue(T).trim()||"#6b7a8d";return b},[o]),g=y.useCallback((_,b)=>{c(Xn(b.id,void 0,t,s))},[c,t,s]),v=y.useCallback(_=>{const b=_.data;return h[b.task.status]||h.pending},[h]);return u.length===0?l.jsxs("div",{className:sn.emptyCta,children:[l.jsx("button",{className:sn.ctaButton,onClick:()=>c(ri(t,void 0,s)),children:"Create Task"}),l.jsx("div",{className:sn.ctaDescription,children:"Create tasks to see the dependency graph"})]}):l.jsx("div",{className:sn.dagContainer,children:l.jsxs(dT,{nodes:d,edges:m,nodeTypes:u2,onNodeClick:g,fitView:!0,fitViewOptions:{padding:.2},minZoom:.3,maxZoom:2,children:[l.jsx(fT,{variant:pT.Dots,gap:24,size:1,color:"var(--text-disabled)"}),l.jsx(mT,{showInteractive:!1}),l.jsx(hT,{nodeColor:v,maskColor:"var(--bg-overlay)",style:{background:"var(--bg-inset)"}})]})})}const f2="_breadcrumbs_17or2_1",p2="_list_17or2_11",m2="_item_17or2_21",h2="_separator_17or2_28",g2="_link_17or2_34",v2="_current_17or2_57",Ki={breadcrumbs:f2,list:p2,item:m2,separator:h2,link:g2,current:v2},y2="›";function fs({segments:t}){return l.jsx("nav",{className:Ki.breadcrumbs,"aria-label":"Breadcrumb","data-testid":"breadcrumbs",children:l.jsx("ol",{className:Ki.list,children:t.map((s,i)=>{const o=i===t.length-1;return l.jsxs("li",{className:Ki.item,children:[i>0&&l.jsx("span",{className:Ki.separator,"aria-hidden":"true",children:y2}),s.url&&!o?l.jsx(Ap,{className:Ki.link,to:s.url,title:s.label,children:s.label}):l.jsx("span",{className:Ki.current,"aria-current":"page",title:s.label,children:s.label})]},i)})})})}const b2="_btn_dwk2o_1",_2="_sm_dwk2o_22",x2="_md_dwk2o_28",S2="_lg_dwk2o_34",T2="_primary_dwk2o_40",k2="_danger_dwk2o_55",w2="_outline_dwk2o_70",N2="_ghost_dwk2o_80",vf={btn:b2,sm:_2,md:x2,lg:S2,primary:T2,danger:k2,outline:w2,ghost:N2},Os=y.forwardRef(function({variant:s="primary",size:i="md",className:o,children:c,...u},d){const m=[vf.btn,vf[s],vf[i],o].filter(Boolean).join(" ");return l.jsx("button",{ref:d,className:m,...u,children:c})}),j2="_copyButton_1bqk0_1",C2={copyButton:j2},E2=2e3;function li({text:t,className:s,"data-testid":i}){const[o,c]=y.useState(!1),u=y.useRef(void 0);y.useEffect(()=>()=>{u.current!==void 0&&clearTimeout(u.current)},[]);const d=y.useCallback(async()=>{try{await navigator.clipboard.writeText(t),c(!0),u.current!==void 0&&clearTimeout(u.current),u.current=setTimeout(()=>{c(!1),u.current=void 0},E2)}catch{}},[t]);return l.jsx("button",{type:"button",className:`${C2.copyButton} ${s??""}`,onClick:()=>{d().catch(()=>{})},"aria-label":o?"Copied":"Copy to clipboard","data-testid":i??"copy-button",children:o?"✓":"📋"})}const A2="_banner_bxqlh_1",D2="_label_bxqlh_15",R2="_text_bxqlh_25",M2="_link_bxqlh_29",rc={banner:A2,label:D2,text:R2,link:M2};function I2(){return l.jsxs("div",{className:rc.banner,"data-testid":"demo-banner",children:[l.jsx("span",{className:rc.label,children:"DEMO"}),l.jsxs("span",{className:rc.text,children:["This is an interactive demo with mock data."," ",l.jsx("a",{href:"https://github.com/nick-pape/grackle",target:"_blank",rel:"noopener noreferrer",className:rc.link,children:"Install Grackle"})," ","to use it for real."]})]})}const O2="_container_og0yp_1",B2="_chevronButton_og0yp_6",L2="_mainButton_og0yp_6",U2="_sm_og0yp_34",z2="_md_og0yp_34",P2="_lg_og0yp_34",V2="_primary_og0yp_57",H2="_danger_og0yp_70",$2="_outline_og0yp_83",G2="_ghost_og0yp_92",q2="_dropdown_og0yp_100",F2="_option_og0yp_113",Z2="_optionLabel_og0yp_130",K2="_optionDesc_og0yp_135",Rs={container:O2,chevronButton:B2,mainButton:L2,sm:U2,md:z2,lg:P2,primary:V2,danger:H2,outline:$2,ghost:G2,dropdown:q2,option:F2,optionLabel:Z2,optionDesc:K2};function qb({label:t,onClick:s,options:i,variant:o="primary",size:c="md","data-testid":u}){const[d,m]=y.useState(!1),h=y.useRef(null);y.useEffect(()=>{if(!d)return;function b(S){h.current&&S.target instanceof Node&&!h.current.contains(S.target)&&m(!1)}return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b)},[d]),y.useEffect(()=>{if(!d)return;function b(S){S.key==="Escape"&&m(!1)}return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[d]);const g=Rs[o]||"",v=Rs[c]||"",_=()=>{d&&m(!1),s()};return l.jsxs("div",{ref:h,className:Rs.container,"data-testid":u,children:[l.jsx("button",{type:"button",className:`${Rs.mainButton} ${g} ${v}`,onClick:_,"data-testid":u?`${u}-main`:void 0,children:t}),l.jsx("button",{type:"button",className:`${Rs.chevronButton} ${g} ${v}`,onClick:()=>m(b=>!b),"aria-label":`More options for ${t}`,"aria-haspopup":"menu","aria-expanded":d,"data-testid":u?`${u}-chevron`:void 0,children:"▾"}),d&&l.jsx("div",{className:Rs.dropdown,"data-testid":u?`${u}-menu`:void 0,children:i.map((b,S)=>l.jsxs("button",{type:"button",className:Rs.option,onClick:()=>{b.onClick(),m(!1)},children:[l.jsx("span",{className:Rs.optionLabel,children:b.label}),b.description&&l.jsx("span",{className:Rs.optionDesc,children:b.description})]},S))})]})}function ep(){ep=function(c,u){return new i(c,void 0,u)};var t=RegExp.prototype,s=new WeakMap;function i(c,u,d){var m=new RegExp(c,u);return s.set(m,d||s.get(c)),jc(m,i.prototype)}function o(c,u){var d=s.get(u);return Object.keys(d).reduce(function(m,h){var g=d[h];if(typeof g=="number")m[h]=c[g];else{for(var v=0;c[g[v]]===void 0&&v+1<g.length;)v++;m[h]=c[g[v]]}return m},Object.create(null))}return(function(c,u){if(typeof u!="function"&&u!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(u&&u.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),Object.defineProperty(c,"prototype",{writable:!1}),u&&jc(c,u)})(i,RegExp),i.prototype.exec=function(c){var u=t.exec.call(this,c);if(u){u.groups=o(u,this);var d=u.indices;d&&(d.groups=o(d,this))}return u},i.prototype[Symbol.replace]=function(c,u){if(typeof u=="string"){var d=s.get(this);return t[Symbol.replace].call(this,c,u.replace(/\$<([^>]+)>/g,function(h,g){var v=d[g];return"$"+(Array.isArray(v)?v.join("$"):v)}))}if(typeof u=="function"){var m=this;return t[Symbol.replace].call(this,c,function(){var h=arguments;return typeof h[h.length-1]!="object"&&(h=[].slice.call(h)).push(o(h,m)),u.apply(this,h)})}return t[Symbol.replace].call(this,c,u)},ep.apply(this,arguments)}function jc(t,s){return jc=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(i,o){return i.__proto__=o,i},jc(t,s)}function A0(t,s){(s==null||s>t.length)&&(s=t.length);for(var i=0,o=new Array(s);i<s;i++)o[i]=t[i];return o}function yf(t,s){var i=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(i)return(i=i.call(t)).next.bind(i);if(Array.isArray(t)||(i=(function(c,u){if(c){if(typeof c=="string")return A0(c,u);var d=Object.prototype.toString.call(c).slice(8,-1);return d==="Object"&&c.constructor&&(d=c.constructor.name),d==="Map"||d==="Set"?Array.from(c):d==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(d)?A0(c,u):void 0}})(t))||s){i&&(t=i);var o=0;return function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
38
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var Y2=(function(t){return function(s){return s===void 0&&(s={}),(function(o,c){if(c&&!o.registered(c))throw new Error('The default language "'+c+'" is not registered with refractor.')})(t,s.defaultLanguage),function(o){CT(o,"element",i)};function i(o,c,u){var d,m;if(u&&u.tagName==="pre"&&o.tagName==="code"){var h=(o==null||(d=o.data)==null?void 0:d.meta)||(o==null||(m=o.properties)==null?void 0:m.metastring)||"";o.properties.className?typeof o.properties.className=="boolean"?o.properties.className=[]:Array.isArray(o.properties.className)||(o.properties.className=[o.properties.className]):o.properties.className=[];var g,v,_=(function(D){for(var E,$=yf(D.properties.className);!(E=$()).done;){var z=E.value;if(z.slice(0,9)==="language-")return z.slice(9).toLowerCase()}return null})(o);if(!_&&s.defaultLanguage&&o.properties.className.push("language-"+(_=s.defaultLanguage)),o.properties.className.push("code-highlight"),_)try{var b,S;S=(b=_)!=null&&b.includes("diff-")?_.split("-")[1]:_,g=t.highlight(ic(o),S),u.properties.className=(u.properties.className||[]).concat("language-"+S)}catch(D){if(!s.ignoreMissing||!/Unknown language/.test(D.message))throw D;g=o}else g=o;g.children=(v=1,function D(E){return E.reduce(function($,z){if(z.type==="text"){var K=z.value,F=(K.match(/\n/g)||"").length;if(F===0)z.position={start:{line:v,column:1},end:{line:v,column:1}},$.push(z);else for(var ee,ae=K.split(`
39
+ `),me=yf(ae.entries());!(ee=me()).done;){var ie=ee.value,X=ie[0],O=ie[1];$.push({type:"text",value:X===ae.length-1?O:O+`
40
+ `,position:{start:{line:v+X,column:1},end:{line:v+X,column:1}}})}return v+=F,$}if(Object.prototype.hasOwnProperty.call(z,"children")){var q=v;return z.children=D(z.children),$.push(z),z.position={start:{line:q,column:1},end:{line:v,column:1}},$}return $.push(z),$},[])})(g.children),g.position=g.children.length>0?{start:{line:g.children[0].position.start.line,column:0},end:{line:g.children[g.children.length-1].position.end.line,column:0}}:{start:{line:0,column:0},end:{line:0,column:0}};for(var T,N=(function(D){var E=/{([\d,-]+)}/,$=D.split(",").map(function(F){return F.trim()}).join();if(E.test($)){var z=E.exec($)[1],K=AT(z);return function(F){return K.includes(F+1)}}return function(){return!1}})(h),j=(function(D){var E=ep(/showLineNumbers=(\d+)/i,{lines:1});if(E.test(D)){var $=E.exec(D);return Number($.groups.lines)}return 1})(h),w=(function(D){for(var E=new Array(D),$=0;$<D;$++)E[$]={type:"element",tagName:"span",properties:{className:[]},children:[]};return E})(g.position.end.line),C=["showlinenumbers=false",'showlinenumbers="false"',"showlinenumbers={false}"],A=function(){var D,E,$=T.value,z=$[0],K=$[1];K.properties.className=["code-line"];var F=DT(g,function(ee){return ee.position.start.line<=z+1&&ee.position.end.line>=z+1});K.children=F.children,(h.toLowerCase().includes("showLineNumbers".toLowerCase())||s.showLineNumbers===!0||typeof s.showLineNumbers=="object"&&s.showLineNumbers.includes(_))&&!C.some(function(ee){return h.toLowerCase().includes(ee)})&&(K.properties.line=[(z+j).toString()],K.properties.className.push("line-number")),N(z)&&K.properties.className.push("highlight-line"),(_==="diff"||(D=_)!=null&&D.includes("diff-"))&&ic(K).substring(0,1)==="-"?K.properties.className.push("deleted"):(_==="diff"||(E=_)!=null&&E.includes("diff-"))&&ic(K).substring(0,1)==="+"&&K.properties.className.push("inserted")},M=yf(w.entries());!(T=M()).done;)A();w.length>0&&ic(w[w.length-1]).trim()===""&&w.pop(),o.children=w}}}})(ET);function Fb(t){if(t>=1e6)return`${(t/1e6).toFixed(1)}M`;if(t>=1e3){const s=Number((t/1e3).toFixed(1));return s>=1e3?`${(t/1e6).toFixed(1)}M`:`${s.toFixed(1)}k`}return String(t)}function io(t){return t===0?"-":t<.01?`$${t.toFixed(4)}`:`$${t.toFixed(2)}`}const J2={read:"file-read",view:"file-read",edit:"file-edit",file_change:"file-edit",write:"file-write",bash:"shell",command_execution:"shell",grep:"search",glob:"search",todowrite:"todo",update_plan:"todo",todo_write:"todo",report_intent:"metadata"};function W2(t){return J2[t.toLowerCase()]??"generic"}const X2="_card_17a7m_2",Q2="_cardBlue_17a7m_20",eN="_cardOrange_17a7m_24",tN="_cardGreen_17a7m_28",nN="_cardPurple_17a7m_32",sN="_cardNeutral_17a7m_36",aN="_cardRed_17a7m_40",iN="_header_17a7m_44",oN="_icon_17a7m_51",rN="_toolName_17a7m_58",lN="_fileName_17a7m_65",cN="_badge_17a7m_74",uN="_spacer_17a7m_81",dN="_bodyToggle_17a7m_85",fN="_chevron_17a7m_103",pN="_chevronExpanded_17a7m_108",mN="_pre_17a7m_112",hN="_diffAdd_17a7m_136",gN="_diffRemove_17a7m_148",vN="_diffContext_17a7m_160",yN="_diffHeader_17a7m_169",bN="_diffLine_17a7m_175",_N="_exitOk_17a7m_181",xN="_exitError_17a7m_187",SN="_exitPending_17a7m_193",TN="_copyButtonInline_17a7m_207",kN="_inProgress_17a7m_221",wN="_metadata_17a7m_225",NN="_metadataPrefix_17a7m_232",se={card:X2,cardBlue:Q2,cardOrange:eN,cardGreen:tN,cardPurple:nN,cardNeutral:sN,cardRed:aN,header:iN,icon:oN,toolName:rN,fileName:lN,badge:cN,spacer:uN,bodyToggle:dN,chevron:fN,chevronExpanded:pN,pre:mN,diffAdd:hN,diffRemove:gN,diffContext:vN,diffHeader:yN,diffLine:bN,exitOk:_N,exitError:xN,exitPending:SN,copyButtonInline:TN,inProgress:kN,metadata:wN,metadataPrefix:NN};function jN(t){if(t==null||typeof t!="object")return"";const s=t;return typeof s.file_path=="string"?s.file_path:typeof s.path=="string"?s.path:""}function CN(t){const s=t.split(/[/\\]/);return s[s.length-1]||t}const bf=5;function D0({tool:t,args:s,result:i,isError:o,writeVariant:c}){const[u,d]=y.useState(!1),m=jN(s),h=CN(m),g=i===void 0,v=o?se.cardRed:c?se.cardGreen:se.cardBlue,_=c?"var(--accent-green)":"var(--accent-blue)",b=c?"📝":"📄",S=c?"tool-card-file-write":"tool-card-file-read",T=(i==null?void 0:i.split(`
41
+ `))??[],N=T.length>bf,j=u?T:T.slice(0,bf);return l.jsxs("div",{className:`${se.card} ${v} ${g?se.inProgress:""}`,"data-testid":S,children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,children:b}),l.jsx("span",{className:se.toolName,style:{color:_},children:t}),h&&l.jsx("span",{className:se.fileName,title:m,children:h}),!g&&T.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:se.spacer}),l.jsxs("span",{className:se.badge,children:[T.length," lines"]})]}),!g&&!o&&i&&l.jsx(li,{text:i,"data-testid":"tool-card-copy",className:se.copyButtonInline})]}),o&&i&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-error",children:i}),!o&&!g&&T.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:se.pre,"data-testid":"tool-card-content",children:j.map((w,C)=>l.jsxs("span",{className:se.diffLine,children:[l.jsx("span",{style:{color:"var(--text-tertiary)",userSelect:"none",marginRight:"var(--space-sm)",display:"inline-block",width:"3ch",textAlign:"right"},children:C+1}),w]},C))}),N&&l.jsxs("button",{type:"button",className:se.bodyToggle,onClick:()=>{d(w=>!w)},"aria-expanded":u,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${se.chevron} ${u?se.chevronExpanded:""}`,children:"▸"}),u?"collapse":`${T.length-bf} more lines`]})]})]})}function EN(t){const s=t.split(`
42
+ `),i=[];for(const o of s)o.startsWith("diff --git")||o.startsWith("index ")||(o.startsWith("--- ")||o.startsWith("+++ "))&&!o.startsWith("---- ")&&!o.startsWith("++++ ")||(o.startsWith("@@")?i.push({type:"header",content:o}):o.startsWith("+")?i.push({type:"add",content:o.slice(1)}):o.startsWith("-")?i.push({type:"remove",content:o.slice(1)}):o.startsWith(" ")?i.push({type:"context",content:o.slice(1)}):o===""&&i.push({type:"context",content:""}));return i}function AN(t,s){const i=t.split(`
43
+ `),o=s.split(`
44
+ `),c=[];for(const u of i)c.push({type:"remove",content:u});for(const u of o)c.push({type:"add",content:u});return c}function DN(t){let s=0,i=0;for(const o of t)o.type==="add"&&s++,o.type==="remove"&&i++;return{added:s,removed:i}}function RN(t){if(t==null||typeof t!="object")return"";const s=t;return typeof s.file_path=="string"&&s.file_path||typeof s.path=="string"&&s.path||""}function MN(t){if(t===void 0||typeof t!="object"||t===null)return;const s=t,i=(typeof s.old_string=="string"?s.old_string:void 0)??(typeof s.old_str=="string"?s.old_str:void 0),o=(typeof s.new_string=="string"?s.new_string:void 0)??(typeof s.new_str=="string"?s.new_str:void 0);if(i!==void 0&&o!==void 0)return{oldStr:i,newStr:o}}function IN(t){const s=t.split(/[/\\]/);return s[s.length-1]||t}function ON(t,s){if(s){let o=s;if(s.trimStart().startsWith("{"))try{const c=JSON.parse(s);typeof c.detailedContent=="string"&&(o=c.detailedContent)}catch{}if(o.includes("@@")||o.startsWith("diff ")){const c=EN(o);if(c.length>0)return c}}const i=MN(t);if(i)return AN(i.oldStr,i.newStr)}const _f=5;function BN({tool:t,args:s,result:i,isError:o,detailedResult:c}){const[u,d]=y.useState(!1),m=RN(s),h=IN(m),g=i===void 0,v=ON(s,c),_=v?DN(v):null,b=((v==null?void 0:v.length)??0)>_f,S=u?v:v==null?void 0:v.slice(0,_f);return l.jsxs("div",{className:`${se.card} ${o?se.cardRed:se.cardOrange} ${g?se.inProgress:""}`,"data-testid":"tool-card-file-edit",children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,children:"✏️"}),l.jsx("span",{className:se.toolName,style:{color:"var(--accent-yellow)"},children:t}),h&&l.jsx("span",{className:se.fileName,title:m,children:h}),_&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:se.spacer}),l.jsxs("span",{className:se.badge,"data-testid":"tool-card-diff-stats",children:[l.jsxs("span",{style:{color:"var(--accent-green)"},children:["+",_.added]})," ",l.jsxs("span",{style:{color:"var(--accent-red)"},children:["−",_.removed]})]})]}),!g&&!o&&(v||i)&&l.jsx(li,{text:v?v.map(T=>`${T.type==="add"?"+":T.type==="remove"?"-":T.type==="header"?"":" "}${T.content}`).join(`
45
+ `):i,"data-testid":"tool-card-copy",className:se.copyButtonInline})]}),o&&i&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-error",children:i}),!o&&S&&S.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:se.pre,"data-testid":"tool-card-diff",children:S.map((T,N)=>{let j=se.diffContext;return T.type==="add"&&(j=se.diffAdd),T.type==="remove"&&(j=se.diffRemove),T.type==="header"&&(j=se.diffHeader),l.jsx("span",{className:`${se.diffLine} ${j}`,children:T.content},N)})}),b&&l.jsxs("button",{type:"button",className:se.bodyToggle,onClick:()=>{d(T=>!T)},"aria-expanded":u,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${se.chevron} ${u?se.chevronExpanded:""}`,children:"▸"}),u?"collapse":`${((v==null?void 0:v.length)??0)-_f} more lines`]})]}),!o&&!v&&!g&&i&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-content",children:i})]})}const LN=/^\[exit (\d+)\]\s*/;function UN(t){const s=LN.exec(t);return s?{exitCode:Number(s[1]),output:t.slice(s[0].length)}:{exitCode:void 0,output:t}}function zN(t){if(t==null||typeof t!="object")return"";const s=t;return typeof s.command=="string"?s.command:""}function PN(t){const s=/pwsh(?:\.exe)?["']?\s+-Command\s+'(.+?)'\s*$/i.exec(t);if(s)return s[1];const i=/pwsh(?:\.exe)?["']?\s+-Command\s+"(.+?)"\s*$/i.exec(t);return i?i[1]:t}const xf=3;function VN({tool:t,args:s,result:i,isError:o}){const[c,u]=y.useState(!1),d=zN(s),m=PN(d),h=i===void 0,g=i?UN(i):null,v=(g==null?void 0:g.output.split(`
46
+ `))??[],_=v.length>xf,b=c?v:v.slice(0,xf),S=g==null?void 0:g.exitCode,T=o||S!==void 0&&S!==0;return l.jsxs("div",{className:`${se.card} ${T?se.cardRed:se.cardNeutral}`,"data-testid":"tool-card-shell",children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,style:{color:"var(--text-secondary)",fontFamily:"var(--font-mono)",fontWeight:"bold"},children:"$"}),l.jsx("span",{className:se.fileName,style:{flex:1,color:"var(--text-primary)"},title:d!==m?d:void 0,"data-testid":"tool-card-command",children:m}),S!==void 0&&l.jsxs("span",{className:S===0?se.exitOk:se.exitError,"data-testid":"tool-card-exit-code",children:[S===0?"✓":"✗"," exit ",S]}),!h&&g&&g.output.length>0&&l.jsx(li,{text:g.output,"data-testid":"tool-card-copy",className:se.copyButtonInline}),h&&l.jsx("span",{className:se.exitPending,"data-testid":"tool-card-pending",children:"●"})]}),!h&&g&&g.output.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:se.pre,"data-testid":"tool-card-output",children:b.join(`
47
+ `)}),_&&l.jsxs("button",{type:"button",className:se.bodyToggle,onClick:()=>{u(N=>!N)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${se.chevron} ${c?se.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${v.length-xf} more lines`]})]})]})}function HN(t){if(t==null||typeof t!="object")return{pattern:"",path:""};const s=t,i=typeof s.pattern=="string"?s.pattern:"",o=typeof s.path=="string"?s.path:"";return{pattern:i,path:o}}const Sf=5;function $N({tool:t,args:s,result:i,isError:o}){const[c,u]=y.useState(!1),{pattern:d,path:m}=HN(s),h=i===void 0,g=(i==null?void 0:i.split(`
48
+ `).filter(b=>b.length>0))??[],v=g.length>Sf,_=c?g:g.slice(0,Sf);return l.jsxs("div",{className:`${se.card} ${o?se.cardRed:se.cardPurple} ${h?se.inProgress:""}`,"data-testid":"tool-card-search",children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,children:"🔍"}),l.jsx("span",{className:se.toolName,style:{color:"var(--accent-purple, #a78bfa)"},children:t}),d&&l.jsxs("span",{className:se.fileName,"data-testid":"tool-card-pattern",children:['"',d,'"']}),m&&l.jsxs("span",{className:se.fileName,style:{flexShrink:1},"data-testid":"tool-card-search-path",children:["in ",m]}),!h&&!o&&g.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:se.spacer}),l.jsxs("span",{className:se.badge,"data-testid":"tool-card-match-count",children:[g.length," ",g.length===1?"match":"matches"]})]}),!h&&!o&&i&&l.jsx(li,{text:i,"data-testid":"tool-card-copy",className:se.copyButtonInline})]}),o&&i&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-error",children:i}),!o&&!h&&_.length>0&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:se.pre,"data-testid":"tool-card-results",children:_.join(`
49
+ `)}),v&&l.jsxs("button",{type:"button",className:se.bodyToggle,onClick:()=>{u(b=>!b)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${se.chevron} ${c?se.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${g.length-Sf} more matches`]})]})]})}const GN="_progressBar_14f5c_1",qN="_progressFill_14f5c_9",FN="_activeTask_14f5c_16",ZN="_activeIcon_14f5c_27",KN="_todoPulse_14f5c_1",YN="_activeText_14f5c_34",JN="_checklist_14f5c_48",WN="_item_14f5c_55",XN="_itemIcon_14f5c_65",QN="_itemText_14f5c_73",ej="_pending_14f5c_78",tj="_in_progress_14f5c_85",nj="_completed_14f5c_97",sj="_emptyMessage_14f5c_108",Zn={progressBar:GN,progressFill:qN,activeTask:FN,activeIcon:ZN,todoPulse:KN,activeText:YN,checklist:JN,item:WN,itemIcon:XN,itemText:QN,pending:ej,in_progress:tj,completed:nj,emptyMessage:sj},aj=/^[-*]\s*\[([ xX~!/])\]\s*(.+)$/;function ij(t){if(t===void 0||typeof t!="object"||t===null)return[];const s=t;return Array.isArray(s.todos)?s.todos.filter(i=>typeof i=="object"&&i!==null&&typeof i.content=="string"&&typeof i.status=="string").map(i=>({content:i.content,activeForm:typeof i.activeForm=="string"?i.activeForm:void 0,status:R0(i.status)})):Array.isArray(s.plan)?s.plan.filter(i=>typeof i=="object"&&i!==null&&typeof i.step=="string"&&typeof i.status=="string").map(i=>({content:i.step,status:R0(i.status)})):typeof s.content=="string"?oj(s.content):[]}function R0(t){switch(t.toLowerCase()){case"completed":case"done":case"complete":return"completed";case"in_progress":case"in-progress":case"working":case"active":return"in_progress";default:return"pending"}}function oj(t){const s=t.split(`
50
+ `),i=[];for(const o of s){const c=aj.exec(o.trim());if(c){const u=c[1],d=c[2].trim();let m="pending";u==="x"||u==="X"?m="completed":(u==="~"||u==="/"||u==="!")&&(m="in_progress"),i.push({content:d,status:m})}}return i}function rj(t){switch(t){case"completed":return"✓";case"in_progress":return"●";default:return"○"}}function lj({args:t}){const s=ij(t),i=s.filter(u=>u.status==="completed").length,o=s.find(u=>u.status==="in_progress"),c=s.length===0;return l.jsxs("div",{className:`${se.card} ${se.cardBlue}`,"data-testid":"tool-card-todo",children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,children:"☑"}),l.jsx("span",{className:se.toolName,style:{color:"var(--accent-blue)"},children:c?"Todos cleared":"Todos"}),!c&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:se.spacer}),l.jsxs("span",{className:se.badge,"data-testid":"tool-card-todo-progress",children:[i,"/",s.length]})]})]}),!c&&l.jsx("div",{className:Zn.progressBar,"data-testid":"tool-card-todo-bar",children:l.jsx("div",{className:Zn.progressFill,style:{width:`${i/s.length*100}%`}})}),o&&l.jsxs("div",{className:Zn.activeTask,"data-testid":"tool-card-todo-active",children:[l.jsx("span",{className:Zn.activeIcon,children:"●"}),l.jsx("span",{className:Zn.activeText,children:o.activeForm||o.content})]}),!c&&l.jsx("div",{className:Zn.checklist,"data-testid":"tool-card-todo-list",children:s.map((u,d)=>l.jsxs("div",{className:`${Zn.item} ${Zn[u.status]}`,"data-testid":"tool-card-todo-item",children:[l.jsx("span",{className:Zn.itemIcon,children:rj(u.status)}),l.jsx("span",{className:Zn.itemText,children:u.content})]},d))}),c&&l.jsx("div",{className:Zn.emptyMessage,children:"All items completed and cleared."})]})}function cj(t,s){if(s==null||typeof s!="object")return"";const i=s;if(typeof i.intent=="string")return i.intent;for(const o of Object.values(i))if(typeof o=="string")return o;return t}function uj({tool:t,args:s}){const i=cj(t,s);return l.jsxs("div",{className:se.metadata,"data-testid":"tool-card-metadata",children:[l.jsx("span",{className:se.metadataPrefix,children:"↳"}),i]})}function dj(t){const s=/^mcp__(.+?)__(.+)$/.exec(t);return s?{display:`${s[1]} / ${s[2]}`,isMcp:!0}:{display:t,isMcp:!1}}function fj(t){if(t==null)return"";if(typeof t!="object")return String(t);const s=t;if(typeof s.command=="string")return s.command;if(typeof s.file_path=="string")return s.file_path;if(typeof s.path=="string")return s.path;if(typeof s.query=="string")return s.query;if(typeof s.url=="string")return s.url;try{const i=JSON.stringify(t);return i.length>120?`${i.slice(0,120)}…`:i}catch{return""}}const Tf=5;function pj({tool:t,args:s,result:i,isError:o}){const[c,u]=y.useState(!1),{display:d}=dj(t),m=fj(s),h=i===void 0,g=(i==null?void 0:i.split(`
51
+ `))??[],v=g.length>Tf,_=c?i:g.slice(0,Tf).join(`
52
+ `);let b="";if(s!=null)try{b=JSON.stringify(s,null,2)}catch{b=String(s)}return l.jsxs("div",{className:`${se.card} ${o?se.cardRed:se.cardBlue} ${h?se.inProgress:""}`,"data-testid":"tool-card-generic",children:[l.jsxs("div",{className:se.header,children:[l.jsx("span",{className:se.icon,children:"⚙"}),l.jsx("span",{className:se.toolName,style:{color:"var(--accent-blue)"},children:d}),m&&l.jsx("span",{className:se.fileName,children:m}),!h&&!o&&i&&l.jsx(li,{text:i,"data-testid":"tool-card-copy",className:se.copyButtonInline})]}),h&&b&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-args",children:b}),o&&i&&l.jsx("pre",{className:se.pre,"data-testid":"tool-card-error",children:i}),!o&&!h&&i&&l.jsxs(l.Fragment,{children:[l.jsx("pre",{className:se.pre,"data-testid":"tool-card-result",children:_}),v&&l.jsxs("button",{type:"button",className:se.bodyToggle,onClick:()=>{u(S=>!S)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[l.jsx("span",{className:`${se.chevron} ${c?se.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${g.length-Tf} more lines`]})]})]})}function kf(t){switch(W2(t.tool)){case"file-read":return l.jsx(D0,{...t});case"file-edit":return l.jsx(BN,{...t});case"file-write":return l.jsx(D0,{...t,writeVariant:!0});case"shell":return l.jsx(VN,{...t});case"search":return l.jsx($N,{...t});case"todo":return l.jsx(lj,{...t});case"metadata":return l.jsx(uj,{...t});default:return l.jsx(pj,{...t})}}const mj="_systemContextEvent_8n7q0_1",hj="_systemContextHeader_8n7q0_7",gj="_systemContextBadge_8n7q0_28",vj="_systemContextToggle_8n7q0_37",yj="_systemContextPre_8n7q0_43",bj="_systemContextEllipsis_8n7q0_54",_j="_systemEvent_8n7q0_58",xj="_systemTimestamp_8n7q0_65",Sj="_textEvent_8n7q0_69",Tj="_messageCopyButton_8n7q0_75",kj="_codeBlockWrapper_8n7q0_159",wj="_codeBlockCopyButton_8n7q0_162",Nj="_errorEvent_8n7q0_166",jj="_statusEvent_8n7q0_174",Cj="_userInputEvent_8n7q0_183",Ej="_userInputContent_8n7q0_189",Aj="_signalEvent_8n7q0_206",Dj="_signalBadge_8n7q0_217",Rj="_signalContent_8n7q0_226",Mj="_usageEvent_8n7q0_231",Ij="_usageBadge_8n7q0_238",Oj="_defaultEvent_8n7q0_247",Nt={systemContextEvent:mj,systemContextHeader:hj,systemContextBadge:gj,systemContextToggle:vj,systemContextPre:yj,systemContextEllipsis:bj,systemEvent:_j,systemTimestamp:xj,textEvent:Sj,messageCopyButton:Tj,codeBlockWrapper:kj,codeBlockCopyButton:wj,errorEvent:Nj,statusEvent:jj,userInputEvent:Cj,userInputContent:Ej,signalEvent:Aj,signalBadge:Dj,signalContent:Rj,usageEvent:Mj,usageBadge:Ij,defaultEvent:Oj},M0=3;function Bj({content:t}){const[s,i]=y.useState(!1),o=t.split(`
53
+ `),c=o.length>M0,u=s?t:o.slice(0,M0).join(`
54
+ `);return l.jsxs("div",{className:Nt.systemContextEvent,"data-testid":"system-context-event",children:[l.jsxs("button",{type:"button",className:Nt.systemContextHeader,onClick:()=>{i(d=>!d)},"aria-expanded":s,children:[l.jsx("span",{className:Nt.systemContextBadge,children:"SYSTEM PROMPT"}),c&&l.jsx("span",{className:Nt.systemContextToggle,"aria-hidden":"true",children:s?"▾":"▸"})]}),l.jsxs("pre",{className:Nt.systemContextPre,children:[u,!s&&c&&l.jsx("span",{className:Nt.systemContextEllipsis,children:"…"})]})]})}function Lj({time:t,content:s}){return l.jsxs("div",{className:Nt.systemEvent,children:[l.jsxs("span",{className:Nt.systemTimestamp,children:["[",t,"]"]})," ",s]})}function tp(t){return typeof t=="string"?t:typeof t=="number"?String(t):Array.isArray(t)?t.map(tp).join(""):t!=null&&typeof t=="object"&&"props"in t?tp(t.props.children):""}function Uj({children:t,node:s,...i}){const o=tp(t);return l.jsxs("div",{className:Nt.codeBlockWrapper,children:[l.jsx("pre",{...i,children:t}),l.jsx(li,{text:o,"data-testid":"copy-code-block",className:Nt.codeBlockCopyButton})]})}const zj={pre:Uj};function Pj({content:t}){return l.jsxs("div",{className:Nt.textEvent,children:[l.jsx(li,{text:t,"data-testid":"copy-message",className:Nt.messageCopyButton}),l.jsx(Pc,{remarkPlugins:[Vc],rehypePlugins:[Y2],components:zj,children:t})]})}function Vj({content:t}){return l.jsxs("div",{className:Nt.errorEvent,children:["Error: ",t]})}function Hj({content:t}){return l.jsxs("div",{className:Nt.statusEvent,children:["--- ",t," ---"]})}function $j({content:t}){return l.jsx("div",{className:Nt.userInputEvent,children:l.jsx("span",{className:Nt.userInputContent,children:t})})}function Gj({content:t}){return l.jsxs("div",{className:Nt.signalEvent,"data-testid":"signal-event",children:[l.jsx("span",{className:Nt.signalBadge,children:"SIGNAL"}),l.jsx("span",{className:Nt.signalContent,children:t})]})}function qj({content:t}){let s=t;try{const i=JSON.parse(t),o=Number(i.input_tokens)||0,c=Number(i.output_tokens)||0,u=Fb(o+c),d=io(Number(i.cost_usd)||0);s=`${u} tokens · ${d}`}catch{}return l.jsx("div",{className:Nt.usageEvent,"data-testid":"usage-event",children:l.jsx("span",{className:Nt.usageBadge,children:s})})}function Fj({content:t}){return l.jsx("div",{className:Nt.defaultEvent,children:t})}function Zj({event:t,toolUseCtx:s}){const i=new Date(t.timestamp).toLocaleTimeString();switch(t.eventType){case"system":{if(t.raw)try{if(JSON.parse(t.raw).systemContext===!0)return l.jsx(Bj,{content:t.content})}catch{}return l.jsx(Lj,{time:i,content:t.content})}case"text":case"output":return l.jsx(Pj,{content:t.content});case"tool_use":{let o="",c={};try{const u=JSON.parse(t.content);o=u.tool||"",c=u.args}catch{}return l.jsx(kf,{tool:o,args:c})}case"tool_result":{let o=!1;if(t.raw)try{o=JSON.parse(t.raw).is_error===!0}catch{}let c=t.content;if(t.content.trimStart().startsWith("{"))try{const u=JSON.parse(t.content);typeof u.content=="string"&&(c=u.content)}catch{}return s?l.jsx(kf,{tool:s.tool,args:s.args,result:c,isError:o,detailedResult:s.detailedResult}):l.jsx(kf,{tool:"Tool output",args:void 0,result:c,isError:o})}case"error":return l.jsx(Vj,{content:t.content});case"status":return l.jsx(Hj,{content:t.content});case"user_input":return l.jsx($j,{content:t.content});case"signal":return l.jsx(Gj,{content:t.content});case"usage":return l.jsx(qj,{content:t.content});default:return l.jsx(Fj,{content:t.content})}}const Mp=y.createContext({});function Ip(t){const s=y.useRef(null);return s.current===null&&(s.current=t()),s.current}const Zc=y.createContext(null),Op=y.createContext({transformPagePoint:t=>t,isStatic:!1,reducedMotion:"never"});class Kj extends y.Component{getSnapshotBeforeUpdate(s){const i=this.props.childRef.current;if(i&&s.isPresent&&!this.props.isPresent){const o=this.props.sizeRef.current;o.height=i.offsetHeight||0,o.width=i.offsetWidth||0,o.top=i.offsetTop,o.left=i.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function Yj({children:t,isPresent:s}){const i=y.useId(),o=y.useRef(null),c=y.useRef({width:0,height:0,top:0,left:0}),{nonce:u}=y.useContext(Op);return y.useInsertionEffect(()=>{const{width:d,height:m,top:h,left:g}=c.current;if(s||!o.current||!d||!m)return;o.current.dataset.motionPopId=i;const v=document.createElement("style");return u&&(v.nonce=u),document.head.appendChild(v),v.sheet&&v.sheet.insertRule(`
55
+ [data-motion-pop-id="${i}"] {
56
+ position: absolute !important;
57
+ width: ${d}px !important;
58
+ height: ${m}px !important;
59
+ top: ${h}px !important;
60
+ left: ${g}px !important;
61
+ }
62
+ `),()=>{document.head.removeChild(v)}},[s]),l.jsx(Kj,{isPresent:s,childRef:o,sizeRef:c,children:y.cloneElement(t,{ref:o})})}const Jj=({children:t,initial:s,isPresent:i,onExitComplete:o,custom:c,presenceAffectsLayout:u,mode:d})=>{const m=Ip(Wj),h=y.useId(),g=y.useCallback(_=>{m.set(_,!0);for(const b of m.values())if(!b)return;o&&o()},[m,o]),v=y.useMemo(()=>({id:h,initial:s,isPresent:i,custom:c,onExitComplete:g,register:_=>(m.set(_,!1),()=>m.delete(_))}),u?[Math.random(),g]:[i,g]);return y.useMemo(()=>{m.forEach((_,b)=>m.set(b,!1))},[i]),y.useEffect(()=>{!i&&!m.size&&o&&o()},[i]),d==="popLayout"&&(t=l.jsx(Yj,{isPresent:i,children:t})),l.jsx(Zc.Provider,{value:v,children:t})};function Wj(){return new Map}function Zb(t=!0){const s=y.useContext(Zc);if(s===null)return[!0,null];const{isPresent:i,onExitComplete:o,register:c}=s,u=y.useId();y.useEffect(()=>{t&&c(u)},[t]);const d=y.useCallback(()=>t&&o&&o(u),[u,o,t]);return!i&&o?[!1,d]:[!0]}const lc=t=>t.key||"";function I0(t){const s=[];return y.Children.forEach(t,i=>{y.isValidElement(i)&&s.push(i)}),s}const Bp=typeof window<"u",Kb=Bp?y.useLayoutEffect:y.useEffect,ds=({children:t,custom:s,initial:i=!0,onExitComplete:o,presenceAffectsLayout:c=!0,mode:u="sync",propagate:d=!1})=>{const[m,h]=Zb(d),g=y.useMemo(()=>I0(t),[t]),v=d&&!m?[]:g.map(lc),_=y.useRef(!0),b=y.useRef(g),S=Ip(()=>new Map),[T,N]=y.useState(g),[j,w]=y.useState(g);Kb(()=>{_.current=!1,b.current=g;for(let M=0;M<j.length;M++){const D=lc(j[M]);v.includes(D)?S.delete(D):S.get(D)!==!0&&S.set(D,!1)}},[j,v.length,v.join("-")]);const C=[];if(g!==T){let M=[...g];for(let D=0;D<j.length;D++){const E=j[D],$=lc(E);v.includes($)||(M.splice(D,0,E),C.push(E))}u==="wait"&&C.length&&(M=C),w(I0(M)),N(g);return}const{forceRender:A}=y.useContext(Mp);return l.jsx(l.Fragment,{children:j.map(M=>{const D=lc(M),E=d&&!m?!1:g===j||v.includes(D),$=()=>{if(S.has(D))S.set(D,!0);else return;let z=!0;S.forEach(K=>{K||(z=!1)}),z&&(A==null||A(),w(b.current),d&&(h==null||h()),o&&o())};return l.jsx(Jj,{isPresent:E,initial:!_.current||i?void 0:!1,custom:E?void 0:s,presenceAffectsLayout:c,mode:u,onExitComplete:E?void 0:$,children:M},D)})})},xn=t=>t;let Yb=xn;const Xj={useManualTiming:!1};function Qj(t){let s=new Set,i=new Set,o=!1,c=!1;const u=new WeakSet;let d={delta:0,timestamp:0,isProcessing:!1};function m(g){u.has(g)&&(h.schedule(g),t()),g(d)}const h={schedule:(g,v=!1,_=!1)=>{const S=_&&o?s:i;return v&&u.add(g),S.has(g)||S.add(g),g},cancel:g=>{i.delete(g),u.delete(g)},process:g=>{if(d=g,o){c=!0;return}o=!0,[s,i]=[i,s],s.forEach(m),s.clear(),o=!1,c&&(c=!1,h.process(g))}};return h}const cc=["read","resolveKeyframes","update","preRender","render","postRender"],eC=40;function Jb(t,s){let i=!1,o=!0;const c={delta:0,timestamp:0,isProcessing:!1},u=()=>i=!0,d=cc.reduce((w,C)=>(w[C]=Qj(u),w),{}),{read:m,resolveKeyframes:h,update:g,preRender:v,render:_,postRender:b}=d,S=()=>{const w=performance.now();i=!1,c.delta=o?1e3/60:Math.max(Math.min(w-c.timestamp,eC),1),c.timestamp=w,c.isProcessing=!0,m.process(c),h.process(c),g.process(c),v.process(c),_.process(c),b.process(c),c.isProcessing=!1,i&&s&&(o=!1,t(S))},T=()=>{i=!0,o=!0,c.isProcessing||t(S)};return{schedule:cc.reduce((w,C)=>{const A=d[C];return w[C]=(M,D=!1,E=!1)=>(i||T(),A.schedule(M,D,E)),w},{}),cancel:w=>{for(let C=0;C<cc.length;C++)d[cc[C]].cancel(w)},state:c,steps:d}}const{schedule:gt,cancel:Ta,state:Zt,steps:wf}=Jb(typeof requestAnimationFrame<"u"?requestAnimationFrame:xn,!0),Wb=y.createContext({strict:!1}),O0={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},oo={};for(const t in O0)oo[t]={isEnabled:s=>O0[t].some(i=>!!s[i])};function tC(t){for(const s in t)oo[s]={...oo[s],...t[s]}}const nC=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function Cc(t){return t.startsWith("while")||t.startsWith("drag")&&t!=="draggable"||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||nC.has(t)}let Xb=t=>!Cc(t);function sC(t){t&&(Xb=s=>s.startsWith("on")?!Cc(s):t(s))}try{sC(require("@emotion/is-prop-valid").default)}catch{}function aC(t,s,i){const o={};for(const c in t)c==="values"&&typeof t.values=="object"||(Xb(c)||i===!0&&Cc(c)||!s&&!Cc(c)||t.draggable&&c.startsWith("onDrag"))&&(o[c]=t[c]);return o}function iC(t){if(typeof Proxy>"u")return t;const s=new Map,i=(...o)=>t(...o);return new Proxy(i,{get:(o,c)=>c==="create"?t:(s.has(c)||s.set(c,t(c)),s.get(c))})}const Kc=y.createContext({});function jr(t){return typeof t=="string"||Array.isArray(t)}function Yc(t){return t!==null&&typeof t=="object"&&typeof t.start=="function"}const Lp=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],Up=["initial",...Lp];function Jc(t){return Yc(t.animate)||Up.some(s=>jr(t[s]))}function Qb(t){return!!(Jc(t)||t.variants)}function oC(t,s){if(Jc(t)){const{initial:i,animate:o}=t;return{initial:i===!1||jr(i)?i:void 0,animate:jr(o)?o:void 0}}return t.inherit!==!1?s:{}}function rC(t){const{initial:s,animate:i}=oC(t,y.useContext(Kc));return y.useMemo(()=>({initial:s,animate:i}),[B0(s),B0(i)])}function B0(t){return Array.isArray(t)?t.join(" "):t}const lC=Symbol.for("motionComponentSymbol");function Wi(t){return t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"current")}function cC(t,s,i){return y.useCallback(o=>{o&&t.onMount&&t.onMount(o),s&&(o?s.mount(o):s.unmount()),i&&(typeof i=="function"?i(o):Wi(i)&&(i.current=o))},[s])}const zp=t=>t.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),uC="framerAppearId",e_="data-"+zp(uC),{schedule:Pp}=Jb(queueMicrotask,!1),t_=y.createContext({});function dC(t,s,i,o,c){var u,d;const{visualElement:m}=y.useContext(Kc),h=y.useContext(Wb),g=y.useContext(Zc),v=y.useContext(Op).reducedMotion,_=y.useRef(null);o=o||h.renderer,!_.current&&o&&(_.current=o(t,{visualState:s,parent:m,props:i,presenceContext:g,blockInitialAnimation:g?g.initial===!1:!1,reducedMotionConfig:v}));const b=_.current,S=y.useContext(t_);b&&!b.projection&&c&&(b.type==="html"||b.type==="svg")&&fC(_.current,i,c,S);const T=y.useRef(!1);y.useInsertionEffect(()=>{b&&T.current&&b.update(i,g)});const N=i[e_],j=y.useRef(!!N&&!(!((u=window.MotionHandoffIsComplete)===null||u===void 0)&&u.call(window,N))&&((d=window.MotionHasOptimisedAnimation)===null||d===void 0?void 0:d.call(window,N)));return Kb(()=>{b&&(T.current=!0,window.MotionIsMounted=!0,b.updateFeatures(),Pp.render(b.render),j.current&&b.animationState&&b.animationState.animateChanges())}),y.useEffect(()=>{b&&(!j.current&&b.animationState&&b.animationState.animateChanges(),j.current&&(queueMicrotask(()=>{var w;(w=window.MotionHandoffMarkAsComplete)===null||w===void 0||w.call(window,N)}),j.current=!1))}),b}function fC(t,s,i,o){const{layoutId:c,layout:u,drag:d,dragConstraints:m,layoutScroll:h,layoutRoot:g}=s;t.projection=new i(t.latestValues,s["data-framer-portal-id"]?void 0:n_(t.parent)),t.projection.setOptions({layoutId:c,layout:u,alwaysMeasureLayout:!!d||m&&Wi(m),visualElement:t,animationType:typeof u=="string"?u:"both",initialPromotionConfig:o,layoutScroll:h,layoutRoot:g})}function n_(t){if(t)return t.options.allowProjection!==!1?t.projection:n_(t.parent)}function pC({preloadedFeatures:t,createVisualElement:s,useRender:i,useVisualState:o,Component:c}){var u,d;t&&tC(t);function m(g,v){let _;const b={...y.useContext(Op),...g,layoutId:mC(g)},{isStatic:S}=b,T=rC(g),N=o(g,S);if(!S&&Bp){hC();const j=gC(b);_=j.MeasureLayout,T.visualElement=dC(c,N,b,s,j.ProjectionNode)}return l.jsxs(Kc.Provider,{value:T,children:[_&&T.visualElement?l.jsx(_,{visualElement:T.visualElement,...b}):null,i(c,g,cC(N,T.visualElement,v),N,S,T.visualElement)]})}m.displayName=`motion.${typeof c=="string"?c:`create(${(d=(u=c.displayName)!==null&&u!==void 0?u:c.name)!==null&&d!==void 0?d:""})`}`;const h=y.forwardRef(m);return h[lC]=c,h}function mC({layoutId:t}){const s=y.useContext(Mp).id;return s&&t!==void 0?s+"-"+t:t}function hC(t,s){y.useContext(Wb).strict}function gC(t){const{drag:s,layout:i}=oo;if(!s&&!i)return{};const o={...s,...i};return{MeasureLayout:s!=null&&s.isEnabled(t)||i!=null&&i.isEnabled(t)?o.MeasureLayout:void 0,ProjectionNode:o.ProjectionNode}}const vC=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Vp(t){return typeof t!="string"||t.includes("-")?!1:!!(vC.indexOf(t)>-1||/[A-Z]/u.test(t))}function L0(t){const s=[{},{}];return t==null||t.values.forEach((i,o)=>{s[0][o]=i.get(),s[1][o]=i.getVelocity()}),s}function Hp(t,s,i,o){if(typeof s=="function"){const[c,u]=L0(o);s=s(i!==void 0?i:t.custom,c,u)}if(typeof s=="string"&&(s=t.variants&&t.variants[s]),typeof s=="function"){const[c,u]=L0(o);s=s(i!==void 0?i:t.custom,c,u)}return s}const np=t=>Array.isArray(t),yC=t=>!!(t&&typeof t=="object"&&t.mix&&t.toValue),bC=t=>np(t)?t[t.length-1]||0:t,Xt=t=>!!(t&&t.getVelocity);function xc(t){const s=Xt(t)?t.get():t;return yC(s)?s.toValue():s}function _C({scrapeMotionValuesFromProps:t,createRenderState:s,onUpdate:i},o,c,u){const d={latestValues:xC(o,c,u,t),renderState:s()};return i&&(d.onMount=m=>i({props:o,current:m,...d}),d.onUpdate=m=>i(m)),d}const s_=t=>(s,i)=>{const o=y.useContext(Kc),c=y.useContext(Zc),u=()=>_C(t,s,o,c);return i?u():Ip(u)};function xC(t,s,i,o){const c={},u=o(t,{});for(const b in u)c[b]=xc(u[b]);let{initial:d,animate:m}=t;const h=Jc(t),g=Qb(t);s&&g&&!h&&t.inherit!==!1&&(d===void 0&&(d=s.initial),m===void 0&&(m=s.animate));let v=i?i.initial===!1:!1;v=v||d===!1;const _=v?m:d;if(_&&typeof _!="boolean"&&!Yc(_)){const b=Array.isArray(_)?_:[_];for(let S=0;S<b.length;S++){const T=Hp(t,b[S]);if(T){const{transitionEnd:N,transition:j,...w}=T;for(const C in w){let A=w[C];if(Array.isArray(A)){const M=v?A.length-1:0;A=A[M]}A!==null&&(c[C]=A)}for(const C in N)c[C]=N[C]}}}return c}const fo=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],ci=new Set(fo),a_=t=>s=>typeof s=="string"&&s.startsWith(t),i_=a_("--"),SC=a_("var(--"),$p=t=>SC(t)?TC.test(t.split("/*")[0].trim()):!1,TC=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,o_=(t,s)=>s&&typeof t=="number"?s.transform(t):t,Ps=(t,s,i)=>i>s?s:i<t?t:i,po={test:t=>typeof t=="number",parse:parseFloat,transform:t=>t},Cr={...po,transform:t=>Ps(0,1,t)},uc={...po,default:1},Ir=t=>({test:s=>typeof s=="string"&&s.endsWith(t)&&s.split(" ").length===1,parse:parseFloat,transform:s=>`${s}${t}`}),_a=Ir("deg"),cs=Ir("%"),we=Ir("px"),kC=Ir("vh"),wC=Ir("vw"),U0={...cs,parse:t=>cs.parse(t)/100,transform:t=>cs.transform(t*100)},NC={borderWidth:we,borderTopWidth:we,borderRightWidth:we,borderBottomWidth:we,borderLeftWidth:we,borderRadius:we,radius:we,borderTopLeftRadius:we,borderTopRightRadius:we,borderBottomRightRadius:we,borderBottomLeftRadius:we,width:we,maxWidth:we,height:we,maxHeight:we,top:we,right:we,bottom:we,left:we,padding:we,paddingTop:we,paddingRight:we,paddingBottom:we,paddingLeft:we,margin:we,marginTop:we,marginRight:we,marginBottom:we,marginLeft:we,backgroundPositionX:we,backgroundPositionY:we},jC={rotate:_a,rotateX:_a,rotateY:_a,rotateZ:_a,scale:uc,scaleX:uc,scaleY:uc,scaleZ:uc,skew:_a,skewX:_a,skewY:_a,distance:we,translateX:we,translateY:we,translateZ:we,x:we,y:we,z:we,perspective:we,transformPerspective:we,opacity:Cr,originX:U0,originY:U0,originZ:we},z0={...po,transform:Math.round},Gp={...NC,...jC,zIndex:z0,size:we,fillOpacity:Cr,strokeOpacity:Cr,numOctaves:z0},CC={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},EC=fo.length;function AC(t,s,i){let o="",c=!0;for(let u=0;u<EC;u++){const d=fo[u],m=t[d];if(m===void 0)continue;let h=!0;if(typeof m=="number"?h=m===(d.startsWith("scale")?1:0):h=parseFloat(m)===0,!h||i){const g=o_(m,Gp[d]);if(!h){c=!1;const v=CC[d]||d;o+=`${v}(${g}) `}i&&(s[d]=g)}}return o=o.trim(),i?o=i(s,c?"":o):c&&(o="none"),o}function qp(t,s,i){const{style:o,vars:c,transformOrigin:u}=t;let d=!1,m=!1;for(const h in s){const g=s[h];if(ci.has(h)){d=!0;continue}else if(i_(h)){c[h]=g;continue}else{const v=o_(g,Gp[h]);h.startsWith("origin")?(m=!0,u[h]=v):o[h]=v}}if(s.transform||(d||i?o.transform=AC(s,t.transform,i):o.transform&&(o.transform="none")),m){const{originX:h="50%",originY:g="50%",originZ:v=0}=u;o.transformOrigin=`${h} ${g} ${v}`}}const DC={offset:"stroke-dashoffset",array:"stroke-dasharray"},RC={offset:"strokeDashoffset",array:"strokeDasharray"};function MC(t,s,i=1,o=0,c=!0){t.pathLength=1;const u=c?DC:RC;t[u.offset]=we.transform(-o);const d=we.transform(s),m=we.transform(i);t[u.array]=`${d} ${m}`}function P0(t,s,i){return typeof t=="string"?t:we.transform(s+i*t)}function IC(t,s,i){const o=P0(s,t.x,t.width),c=P0(i,t.y,t.height);return`${o} ${c}`}function Fp(t,{attrX:s,attrY:i,attrScale:o,originX:c,originY:u,pathLength:d,pathSpacing:m=1,pathOffset:h=0,...g},v,_){if(qp(t,g,_),v){t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox);return}t.attrs=t.style,t.style={};const{attrs:b,style:S,dimensions:T}=t;b.transform&&(T&&(S.transform=b.transform),delete b.transform),T&&(c!==void 0||u!==void 0||S.transform)&&(S.transformOrigin=IC(T,c!==void 0?c:.5,u!==void 0?u:.5)),s!==void 0&&(b.x=s),i!==void 0&&(b.y=i),o!==void 0&&(b.scale=o),d!==void 0&&MC(b,d,m,h,!1)}const Zp=()=>({style:{},transform:{},transformOrigin:{},vars:{}}),r_=()=>({...Zp(),attrs:{}}),Kp=t=>typeof t=="string"&&t.toLowerCase()==="svg";function l_(t,{style:s,vars:i},o,c){Object.assign(t.style,s,c&&c.getProjectionStyles(o));for(const u in i)t.style.setProperty(u,i[u])}const c_=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function u_(t,s,i,o){l_(t,s,void 0,o);for(const c in s.attrs)t.setAttribute(c_.has(c)?c:zp(c),s.attrs[c])}const Ec={};function OC(t){Object.assign(Ec,t)}function d_(t,{layout:s,layoutId:i}){return ci.has(t)||t.startsWith("origin")||(s||i!==void 0)&&(!!Ec[t]||t==="opacity")}function Yp(t,s,i){var o;const{style:c}=t,u={};for(const d in c)(Xt(c[d])||s.style&&Xt(s.style[d])||d_(d,t)||((o=i==null?void 0:i.getValue(d))===null||o===void 0?void 0:o.liveStyle)!==void 0)&&(u[d]=c[d]);return u}function f_(t,s,i){const o=Yp(t,s,i);for(const c in t)if(Xt(t[c])||Xt(s[c])){const u=fo.indexOf(c)!==-1?"attr"+c.charAt(0).toUpperCase()+c.substring(1):c;o[u]=t[c]}return o}function BC(t,s){try{s.dimensions=typeof t.getBBox=="function"?t.getBBox():t.getBoundingClientRect()}catch{s.dimensions={x:0,y:0,width:0,height:0}}}const V0=["x","y","width","height","cx","cy","r"],LC={useVisualState:s_({scrapeMotionValuesFromProps:f_,createRenderState:r_,onUpdate:({props:t,prevProps:s,current:i,renderState:o,latestValues:c})=>{if(!i)return;let u=!!t.drag;if(!u){for(const m in c)if(ci.has(m)){u=!0;break}}if(!u)return;let d=!s;if(s)for(let m=0;m<V0.length;m++){const h=V0[m];t[h]!==s[h]&&(d=!0)}d&&gt.read(()=>{BC(i,o),gt.render(()=>{Fp(o,c,Kp(i.tagName),t.transformTemplate),u_(i,o)})})}})},UC={useVisualState:s_({scrapeMotionValuesFromProps:Yp,createRenderState:Zp})};function p_(t,s,i){for(const o in s)!Xt(s[o])&&!d_(o,i)&&(t[o]=s[o])}function zC({transformTemplate:t},s){return y.useMemo(()=>{const i=Zp();return qp(i,s,t),Object.assign({},i.vars,i.style)},[s])}function PC(t,s){const i=t.style||{},o={};return p_(o,i,t),Object.assign(o,zC(t,s)),o}function VC(t,s){const i={},o=PC(t,s);return t.drag&&t.dragListener!==!1&&(i.draggable=!1,o.userSelect=o.WebkitUserSelect=o.WebkitTouchCallout="none",o.touchAction=t.drag===!0?"none":`pan-${t.drag==="x"?"y":"x"}`),t.tabIndex===void 0&&(t.onTap||t.onTapStart||t.whileTap)&&(i.tabIndex=0),i.style=o,i}function HC(t,s,i,o){const c=y.useMemo(()=>{const u=r_();return Fp(u,s,Kp(o),t.transformTemplate),{...u.attrs,style:{...u.style}}},[s]);if(t.style){const u={};p_(u,t.style,t),c.style={...u,...c.style}}return c}function $C(t=!1){return(i,o,c,{latestValues:u},d)=>{const h=(Vp(i)?HC:VC)(o,u,d,i),g=aC(o,typeof i=="string",t),v=i!==y.Fragment?{...g,...h,ref:c}:{},{children:_}=o,b=y.useMemo(()=>Xt(_)?_.get():_,[_]);return y.createElement(i,{...v,children:b})}}function GC(t,s){return function(o,{forwardMotionProps:c}={forwardMotionProps:!1}){const d={...Vp(o)?LC:UC,preloadedFeatures:t,useRender:$C(c),createVisualElement:s,Component:o};return pC(d)}}function m_(t,s){if(!Array.isArray(s))return!1;const i=s.length;if(i!==t.length)return!1;for(let o=0;o<i;o++)if(s[o]!==t[o])return!1;return!0}function Wc(t,s,i){const o=t.getProps();return Hp(o,s,i!==void 0?i:o.custom,t)}function Jp(t,s){return t?t[s]||t.default||t:void 0}const h_=new Set(["width","height","top","left","right","bottom",...fo]);let Sc;function qC(){Sc=void 0}const us={now:()=>(Sc===void 0&&us.set(Zt.isProcessing||Xj.useManualTiming?Zt.timestamp:performance.now()),Sc),set:t=>{Sc=t,queueMicrotask(qC)}};function Wp(t,s){t.indexOf(s)===-1&&t.push(s)}function Xp(t,s){const i=t.indexOf(s);i>-1&&t.splice(i,1)}class Qp{constructor(){this.subscriptions=[]}add(s){return Wp(this.subscriptions,s),()=>Xp(this.subscriptions,s)}notify(s,i,o){const c=this.subscriptions.length;if(c)if(c===1)this.subscriptions[0](s,i,o);else for(let u=0;u<c;u++){const d=this.subscriptions[u];d&&d(s,i,o)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}function g_(t,s){return s?t*(1e3/s):0}const H0=30,FC=t=>!isNaN(parseFloat(t));class ZC{constructor(s,i={}){this.version="11.18.2",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(o,c=!0)=>{const u=us.now();this.updatedAt!==u&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(o),this.current!==this.prev&&this.events.change&&this.events.change.notify(this.current),c&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.hasAnimated=!1,this.setCurrent(s),this.owner=i.owner}setCurrent(s){this.current=s,this.updatedAt=us.now(),this.canTrackVelocity===null&&s!==void 0&&(this.canTrackVelocity=FC(this.current))}setPrevFrameValue(s=this.current){this.prevFrameValue=s,this.prevUpdatedAt=this.updatedAt}onChange(s){return this.on("change",s)}on(s,i){this.events[s]||(this.events[s]=new Qp);const o=this.events[s].add(i);return s==="change"?()=>{o(),gt.read(()=>{this.events.change.getSize()||this.stop()})}:o}clearListeners(){for(const s in this.events)this.events[s].clear()}attach(s,i){this.passiveEffect=s,this.stopPassiveEffect=i}set(s,i=!0){!i||!this.passiveEffect?this.updateAndNotify(s,i):this.passiveEffect(s,this.updateAndNotify)}setWithVelocity(s,i,o){this.set(i),this.prev=void 0,this.prevFrameValue=s,this.prevUpdatedAt=this.updatedAt-o}jump(s,i=!0){this.updateAndNotify(s),this.prev=s,this.prevUpdatedAt=this.prevFrameValue=void 0,i&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const s=us.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||s-this.updatedAt>H0)return 0;const i=Math.min(this.updatedAt-this.prevUpdatedAt,H0);return g_(parseFloat(this.current)-parseFloat(this.prevFrameValue),i)}start(s){return this.stop(),new Promise(i=>{this.hasAnimated=!0,this.animation=s(i),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function Er(t,s){return new ZC(t,s)}function KC(t,s,i){t.hasValue(s)?t.getValue(s).set(i):t.addValue(s,Er(i))}function YC(t,s){const i=Wc(t,s);let{transitionEnd:o={},transition:c={},...u}=i||{};u={...u,...o};for(const d in u){const m=bC(u[d]);KC(t,d,m)}}function JC(t){return!!(Xt(t)&&t.add)}function sp(t,s){const i=t.getValue("willChange");if(JC(i))return i.add(s)}function v_(t){return t.props[e_]}function em(t){let s;return()=>(s===void 0&&(s=t()),s)}const WC=em(()=>window.ScrollTimeline!==void 0);class XC{constructor(s){this.stop=()=>this.runAll("stop"),this.animations=s.filter(Boolean)}get finished(){return Promise.all(this.animations.map(s=>"finished"in s?s.finished:s))}getAll(s){return this.animations[0][s]}setAll(s,i){for(let o=0;o<this.animations.length;o++)this.animations[o][s]=i}attachTimeline(s,i){const o=this.animations.map(c=>{if(WC()&&c.attachTimeline)return c.attachTimeline(s);if(typeof i=="function")return i(c)});return()=>{o.forEach((c,u)=>{c&&c(),this.animations[u].stop()})}}get time(){return this.getAll("time")}set time(s){this.setAll("time",s)}get speed(){return this.getAll("speed")}set speed(s){this.setAll("speed",s)}get startTime(){return this.getAll("startTime")}get duration(){let s=0;for(let i=0;i<this.animations.length;i++)s=Math.max(s,this.animations[i].duration);return s}runAll(s){this.animations.forEach(i=>i[s]())}flatten(){this.runAll("flatten")}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}class QC extends XC{then(s,i){return Promise.all(this.animations).then(s).catch(i)}}const Bs=t=>t*1e3,Ls=t=>t/1e3;function tm(t){return typeof t=="function"}function $0(t,s){t.timeline=s,t.onfinish=null}const nm=t=>Array.isArray(t)&&typeof t[0]=="number",eE={linearEasing:void 0};function tE(t,s){const i=em(t);return()=>{var o;return(o=eE[s])!==null&&o!==void 0?o:i()}}const Ac=tE(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),ro=(t,s,i)=>{const o=s-t;return o===0?1:(i-t)/o},y_=(t,s,i=10)=>{let o="";const c=Math.max(Math.round(s/i),2);for(let u=0;u<c;u++)o+=t(ro(0,c-1,u))+", ";return`linear(${o.substring(0,o.length-2)})`};function b_(t){return!!(typeof t=="function"&&Ac()||!t||typeof t=="string"&&(t in ap||Ac())||nm(t)||Array.isArray(t)&&t.every(b_))}const pr=([t,s,i,o])=>`cubic-bezier(${t}, ${s}, ${i}, ${o})`,ap={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:pr([0,.65,.55,1]),circOut:pr([.55,0,1,.45]),backIn:pr([.31,.01,.66,-.59]),backOut:pr([.33,1.53,.69,.99])};function __(t,s){if(t)return typeof t=="function"&&Ac()?y_(t,s):nm(t)?pr(t):Array.isArray(t)?t.map(i=>__(i,s)||ap.easeOut):ap[t]}const x_=(t,s,i)=>(((1-3*i+3*s)*t+(3*i-6*s))*t+3*s)*t,nE=1e-7,sE=12;function aE(t,s,i,o,c){let u,d,m=0;do d=s+(i-s)/2,u=x_(d,o,c)-t,u>0?i=d:s=d;while(Math.abs(u)>nE&&++m<sE);return d}function Or(t,s,i,o){if(t===s&&i===o)return xn;const c=u=>aE(u,0,1,t,i);return u=>u===0||u===1?u:x_(c(u),s,o)}const S_=t=>s=>s<=.5?t(2*s)/2:(2-t(2*(1-s)))/2,T_=t=>s=>1-t(1-s),k_=Or(.33,1.53,.69,.99),sm=T_(k_),w_=S_(sm),N_=t=>(t*=2)<1?.5*sm(t):.5*(2-Math.pow(2,-10*(t-1))),am=t=>1-Math.sin(Math.acos(t)),j_=T_(am),C_=S_(am),E_=t=>/^0[^.\s]+$/u.test(t);function iE(t){return typeof t=="number"?t===0:t!==null?t==="none"||t==="0"||E_(t):!0}const yr=t=>Math.round(t*1e5)/1e5,im=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function oE(t){return t==null}const rE=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,om=(t,s)=>i=>!!(typeof i=="string"&&rE.test(i)&&i.startsWith(t)||s&&!oE(i)&&Object.prototype.hasOwnProperty.call(i,s)),A_=(t,s,i)=>o=>{if(typeof o!="string")return o;const[c,u,d,m]=o.match(im);return{[t]:parseFloat(c),[s]:parseFloat(u),[i]:parseFloat(d),alpha:m!==void 0?parseFloat(m):1}},lE=t=>Ps(0,255,t),Nf={...po,transform:t=>Math.round(lE(t))},Qa={test:om("rgb","red"),parse:A_("red","green","blue"),transform:({red:t,green:s,blue:i,alpha:o=1})=>"rgba("+Nf.transform(t)+", "+Nf.transform(s)+", "+Nf.transform(i)+", "+yr(Cr.transform(o))+")"};function cE(t){let s="",i="",o="",c="";return t.length>5?(s=t.substring(1,3),i=t.substring(3,5),o=t.substring(5,7),c=t.substring(7,9)):(s=t.substring(1,2),i=t.substring(2,3),o=t.substring(3,4),c=t.substring(4,5),s+=s,i+=i,o+=o,c+=c),{red:parseInt(s,16),green:parseInt(i,16),blue:parseInt(o,16),alpha:c?parseInt(c,16)/255:1}}const ip={test:om("#"),parse:cE,transform:Qa.transform},Xi={test:om("hsl","hue"),parse:A_("hue","saturation","lightness"),transform:({hue:t,saturation:s,lightness:i,alpha:o=1})=>"hsla("+Math.round(t)+", "+cs.transform(yr(s))+", "+cs.transform(yr(i))+", "+yr(Cr.transform(o))+")"},Wt={test:t=>Qa.test(t)||ip.test(t)||Xi.test(t),parse:t=>Qa.test(t)?Qa.parse(t):Xi.test(t)?Xi.parse(t):ip.parse(t),transform:t=>typeof t=="string"?t:t.hasOwnProperty("red")?Qa.transform(t):Xi.transform(t)},uE=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function dE(t){var s,i;return isNaN(t)&&typeof t=="string"&&(((s=t.match(im))===null||s===void 0?void 0:s.length)||0)+(((i=t.match(uE))===null||i===void 0?void 0:i.length)||0)>0}const D_="number",R_="color",fE="var",pE="var(",G0="${}",mE=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function Ar(t){const s=t.toString(),i=[],o={color:[],number:[],var:[]},c=[];let u=0;const m=s.replace(mE,h=>(Wt.test(h)?(o.color.push(u),c.push(R_),i.push(Wt.parse(h))):h.startsWith(pE)?(o.var.push(u),c.push(fE),i.push(h)):(o.number.push(u),c.push(D_),i.push(parseFloat(h))),++u,G0)).split(G0);return{values:i,split:m,indexes:o,types:c}}function M_(t){return Ar(t).values}function I_(t){const{split:s,types:i}=Ar(t),o=s.length;return c=>{let u="";for(let d=0;d<o;d++)if(u+=s[d],c[d]!==void 0){const m=i[d];m===D_?u+=yr(c[d]):m===R_?u+=Wt.transform(c[d]):u+=c[d]}return u}}const hE=t=>typeof t=="number"?0:t;function gE(t){const s=M_(t);return I_(t)(s.map(hE))}const ka={test:dE,parse:M_,createTransformer:I_,getAnimatableNone:gE},vE=new Set(["brightness","contrast","saturate","opacity"]);function yE(t){const[s,i]=t.slice(0,-1).split("(");if(s==="drop-shadow")return t;const[o]=i.match(im)||[];if(!o)return t;const c=i.replace(o,"");let u=vE.has(s)?1:0;return o!==i&&(u*=100),s+"("+u+c+")"}const bE=/\b([a-z-]*)\(.*?\)/gu,op={...ka,getAnimatableNone:t=>{const s=t.match(bE);return s?s.map(yE).join(" "):t}},_E={...Gp,color:Wt,backgroundColor:Wt,outlineColor:Wt,fill:Wt,stroke:Wt,borderColor:Wt,borderTopColor:Wt,borderRightColor:Wt,borderBottomColor:Wt,borderLeftColor:Wt,filter:op,WebkitFilter:op},rm=t=>_E[t];function O_(t,s){let i=rm(t);return i!==op&&(i=ka),i.getAnimatableNone?i.getAnimatableNone(s):void 0}const xE=new Set(["auto","none","0"]);function SE(t,s,i){let o=0,c;for(;o<t.length&&!c;){const u=t[o];typeof u=="string"&&!xE.has(u)&&Ar(u).values.length&&(c=t[o]),o++}if(c&&i)for(const u of s)t[u]=O_(i,c)}const q0=t=>t===po||t===we,F0=(t,s)=>parseFloat(t.split(", ")[s]),Z0=(t,s)=>(i,{transform:o})=>{if(o==="none"||!o)return 0;const c=o.match(/^matrix3d\((.+)\)$/u);if(c)return F0(c[1],s);{const u=o.match(/^matrix\((.+)\)$/u);return u?F0(u[1],t):0}},TE=new Set(["x","y","z"]),kE=fo.filter(t=>!TE.has(t));function wE(t){const s=[];return kE.forEach(i=>{const o=t.getValue(i);o!==void 0&&(s.push([i,o.get()]),o.set(i.startsWith("scale")?1:0))}),s}const lo={width:({x:t},{paddingLeft:s="0",paddingRight:i="0"})=>t.max-t.min-parseFloat(s)-parseFloat(i),height:({y:t},{paddingTop:s="0",paddingBottom:i="0"})=>t.max-t.min-parseFloat(s)-parseFloat(i),top:(t,{top:s})=>parseFloat(s),left:(t,{left:s})=>parseFloat(s),bottom:({y:t},{top:s})=>parseFloat(s)+(t.max-t.min),right:({x:t},{left:s})=>parseFloat(s)+(t.max-t.min),x:Z0(4,13),y:Z0(5,14)};lo.translateX=lo.x;lo.translateY=lo.y;const ti=new Set;let rp=!1,lp=!1;function B_(){if(lp){const t=Array.from(ti).filter(o=>o.needsMeasurement),s=new Set(t.map(o=>o.element)),i=new Map;s.forEach(o=>{const c=wE(o);c.length&&(i.set(o,c),o.render())}),t.forEach(o=>o.measureInitialState()),s.forEach(o=>{o.render();const c=i.get(o);c&&c.forEach(([u,d])=>{var m;(m=o.getValue(u))===null||m===void 0||m.set(d)})}),t.forEach(o=>o.measureEndState()),t.forEach(o=>{o.suspendedScrollY!==void 0&&window.scrollTo(0,o.suspendedScrollY)})}lp=!1,rp=!1,ti.forEach(t=>t.complete()),ti.clear()}function L_(){ti.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(lp=!0)})}function NE(){L_(),B_()}class lm{constructor(s,i,o,c,u,d=!1){this.isComplete=!1,this.isAsync=!1,this.needsMeasurement=!1,this.isScheduled=!1,this.unresolvedKeyframes=[...s],this.onComplete=i,this.name=o,this.motionValue=c,this.element=u,this.isAsync=d}scheduleResolve(){this.isScheduled=!0,this.isAsync?(ti.add(this),rp||(rp=!0,gt.read(L_),gt.resolveKeyframes(B_))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:s,name:i,element:o,motionValue:c}=this;for(let u=0;u<s.length;u++)if(s[u]===null)if(u===0){const d=c==null?void 0:c.get(),m=s[s.length-1];if(d!==void 0)s[0]=d;else if(o&&i){const h=o.readValue(i,m);h!=null&&(s[0]=h)}s[0]===void 0&&(s[0]=m),c&&d===void 0&&c.set(s[0])}else s[u]=s[u-1]}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(){this.isComplete=!0,this.onComplete(this.unresolvedKeyframes,this.finalKeyframe),ti.delete(this)}cancel(){this.isComplete||(this.isScheduled=!1,ti.delete(this))}resume(){this.isComplete||this.scheduleResolve()}}const U_=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t),jE=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function CE(t){const s=jE.exec(t);if(!s)return[,];const[,i,o,c]=s;return[`--${i??o}`,c]}function z_(t,s,i=1){const[o,c]=CE(t);if(!o)return;const u=window.getComputedStyle(s).getPropertyValue(o);if(u){const d=u.trim();return U_(d)?parseFloat(d):d}return $p(c)?z_(c,s,i+1):c}const P_=t=>s=>s.test(t),EE={test:t=>t==="auto",parse:t=>t},V_=[po,we,cs,_a,wC,kC,EE],K0=t=>V_.find(P_(t));class H_ extends lm{constructor(s,i,o,c,u){super(s,i,o,c,u,!0)}readKeyframes(){const{unresolvedKeyframes:s,element:i,name:o}=this;if(!i||!i.current)return;super.readKeyframes();for(let h=0;h<s.length;h++){let g=s[h];if(typeof g=="string"&&(g=g.trim(),$p(g))){const v=z_(g,i.current);v!==void 0&&(s[h]=v),h===s.length-1&&(this.finalKeyframe=g)}}if(this.resolveNoneKeyframes(),!h_.has(o)||s.length!==2)return;const[c,u]=s,d=K0(c),m=K0(u);if(d!==m)if(q0(d)&&q0(m))for(let h=0;h<s.length;h++){const g=s[h];typeof g=="string"&&(s[h]=parseFloat(g))}else this.needsMeasurement=!0}resolveNoneKeyframes(){const{unresolvedKeyframes:s,name:i}=this,o=[];for(let c=0;c<s.length;c++)iE(s[c])&&o.push(c);o.length&&SE(s,o,i)}measureInitialState(){const{element:s,unresolvedKeyframes:i,name:o}=this;if(!s||!s.current)return;o==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=lo[o](s.measureViewportBox(),window.getComputedStyle(s.current)),i[0]=this.measuredOrigin;const c=i[i.length-1];c!==void 0&&s.getValue(o,c).jump(c,!1)}measureEndState(){var s;const{element:i,name:o,unresolvedKeyframes:c}=this;if(!i||!i.current)return;const u=i.getValue(o);u&&u.jump(this.measuredOrigin,!1);const d=c.length-1,m=c[d];c[d]=lo[o](i.measureViewportBox(),window.getComputedStyle(i.current)),m!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=m),!((s=this.removedTransforms)===null||s===void 0)&&s.length&&this.removedTransforms.forEach(([h,g])=>{i.getValue(h).set(g)}),this.resolveNoneKeyframes()}}const Y0=(t,s)=>s==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(ka.test(t)||t==="0")&&!t.startsWith("url("));function AE(t){const s=t[0];if(t.length===1)return!0;for(let i=0;i<t.length;i++)if(t[i]!==s)return!0}function DE(t,s,i,o){const c=t[0];if(c===null)return!1;if(s==="display"||s==="visibility")return!0;const u=t[t.length-1],d=Y0(c,s),m=Y0(u,s);return!d||!m?!1:AE(t)||(i==="spring"||tm(i))&&o}const RE=t=>t!==null;function Xc(t,{repeat:s,repeatType:i="loop"},o){const c=t.filter(RE),u=s&&i!=="loop"&&s%2===1?0:c.length-1;return!u||o===void 0?c[u]:o}const ME=40;class $_{constructor({autoplay:s=!0,delay:i=0,type:o="keyframes",repeat:c=0,repeatDelay:u=0,repeatType:d="loop",...m}){this.isStopped=!1,this.hasAttemptedResolve=!1,this.createdAt=us.now(),this.options={autoplay:s,delay:i,type:o,repeat:c,repeatDelay:u,repeatType:d,...m},this.updateFinishedPromise()}calcStartTime(){return this.resolvedAt?this.resolvedAt-this.createdAt>ME?this.resolvedAt:this.createdAt:this.createdAt}get resolved(){return!this._resolved&&!this.hasAttemptedResolve&&NE(),this._resolved}onKeyframesResolved(s,i){this.resolvedAt=us.now(),this.hasAttemptedResolve=!0;const{name:o,type:c,velocity:u,delay:d,onComplete:m,onUpdate:h,isGenerator:g}=this.options;if(!g&&!DE(s,o,c,u))if(d)this.options.duration=0;else{h&&h(Xc(s,this.options,i)),m&&m(),this.resolveFinishedPromise();return}const v=this.initPlayback(s,i);v!==!1&&(this._resolved={keyframes:s,finalKeyframe:i,...v},this.onPostResolved())}onPostResolved(){}then(s,i){return this.currentFinishedPromise.then(s,i)}flatten(){this.options.type="keyframes",this.options.ease="linear"}updateFinishedPromise(){this.currentFinishedPromise=new Promise(s=>{this.resolveFinishedPromise=s})}}const cp=2e4;function G_(t){let s=0;const i=50;let o=t.next(s);for(;!o.done&&s<cp;)s+=i,o=t.next(s);return s>=cp?1/0:s}const xt=(t,s,i)=>t+(s-t)*i;function jf(t,s,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?t+(s-t)*6*i:i<1/2?s:i<2/3?t+(s-t)*(2/3-i)*6:t}function IE({hue:t,saturation:s,lightness:i,alpha:o}){t/=360,s/=100,i/=100;let c=0,u=0,d=0;if(!s)c=u=d=i;else{const m=i<.5?i*(1+s):i+s-i*s,h=2*i-m;c=jf(h,m,t+1/3),u=jf(h,m,t),d=jf(h,m,t-1/3)}return{red:Math.round(c*255),green:Math.round(u*255),blue:Math.round(d*255),alpha:o}}function Dc(t,s){return i=>i>0?s:t}const Cf=(t,s,i)=>{const o=t*t,c=i*(s*s-o)+o;return c<0?0:Math.sqrt(c)},OE=[ip,Qa,Xi],BE=t=>OE.find(s=>s.test(t));function J0(t){const s=BE(t);if(!s)return!1;let i=s.parse(t);return s===Xi&&(i=IE(i)),i}const W0=(t,s)=>{const i=J0(t),o=J0(s);if(!i||!o)return Dc(t,s);const c={...i};return u=>(c.red=Cf(i.red,o.red,u),c.green=Cf(i.green,o.green,u),c.blue=Cf(i.blue,o.blue,u),c.alpha=xt(i.alpha,o.alpha,u),Qa.transform(c))},LE=(t,s)=>i=>s(t(i)),Br=(...t)=>t.reduce(LE),up=new Set(["none","hidden"]);function UE(t,s){return up.has(t)?i=>i<=0?t:s:i=>i>=1?s:t}function zE(t,s){return i=>xt(t,s,i)}function cm(t){return typeof t=="number"?zE:typeof t=="string"?$p(t)?Dc:Wt.test(t)?W0:HE:Array.isArray(t)?q_:typeof t=="object"?Wt.test(t)?W0:PE:Dc}function q_(t,s){const i=[...t],o=i.length,c=t.map((u,d)=>cm(u)(u,s[d]));return u=>{for(let d=0;d<o;d++)i[d]=c[d](u);return i}}function PE(t,s){const i={...t,...s},o={};for(const c in i)t[c]!==void 0&&s[c]!==void 0&&(o[c]=cm(t[c])(t[c],s[c]));return c=>{for(const u in o)i[u]=o[u](c);return i}}function VE(t,s){var i;const o=[],c={color:0,var:0,number:0};for(let u=0;u<s.values.length;u++){const d=s.types[u],m=t.indexes[d][c[d]],h=(i=t.values[m])!==null&&i!==void 0?i:0;o[u]=h,c[d]++}return o}const HE=(t,s)=>{const i=ka.createTransformer(s),o=Ar(t),c=Ar(s);return o.indexes.var.length===c.indexes.var.length&&o.indexes.color.length===c.indexes.color.length&&o.indexes.number.length>=c.indexes.number.length?up.has(t)&&!c.values.length||up.has(s)&&!o.values.length?UE(t,s):Br(q_(VE(o,c),c.values),i):Dc(t,s)};function F_(t,s,i){return typeof t=="number"&&typeof s=="number"&&typeof i=="number"?xt(t,s,i):cm(t)(t,s)}const $E=5;function Z_(t,s,i){const o=Math.max(s-$E,0);return g_(i-t(o),s-o)}const wt={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},Ef=.001;function GE({duration:t=wt.duration,bounce:s=wt.bounce,velocity:i=wt.velocity,mass:o=wt.mass}){let c,u,d=1-s;d=Ps(wt.minDamping,wt.maxDamping,d),t=Ps(wt.minDuration,wt.maxDuration,Ls(t)),d<1?(c=g=>{const v=g*d,_=v*t,b=v-i,S=dp(g,d),T=Math.exp(-_);return Ef-b/S*T},u=g=>{const _=g*d*t,b=_*i+i,S=Math.pow(d,2)*Math.pow(g,2)*t,T=Math.exp(-_),N=dp(Math.pow(g,2),d);return(-c(g)+Ef>0?-1:1)*((b-S)*T)/N}):(c=g=>{const v=Math.exp(-g*t),_=(g-i)*t+1;return-Ef+v*_},u=g=>{const v=Math.exp(-g*t),_=(i-g)*(t*t);return v*_});const m=5/t,h=FE(c,u,m);if(t=Bs(t),isNaN(h))return{stiffness:wt.stiffness,damping:wt.damping,duration:t};{const g=Math.pow(h,2)*o;return{stiffness:g,damping:d*2*Math.sqrt(o*g),duration:t}}}const qE=12;function FE(t,s,i){let o=i;for(let c=1;c<qE;c++)o=o-t(o)/s(o);return o}function dp(t,s){return t*Math.sqrt(1-s*s)}const ZE=["duration","bounce"],KE=["stiffness","damping","mass"];function X0(t,s){return s.some(i=>t[i]!==void 0)}function YE(t){let s={velocity:wt.velocity,stiffness:wt.stiffness,damping:wt.damping,mass:wt.mass,isResolvedFromDuration:!1,...t};if(!X0(t,KE)&&X0(t,ZE))if(t.visualDuration){const i=t.visualDuration,o=2*Math.PI/(i*1.2),c=o*o,u=2*Ps(.05,1,1-(t.bounce||0))*Math.sqrt(c);s={...s,mass:wt.mass,stiffness:c,damping:u}}else{const i=GE(t);s={...s,...i,mass:wt.mass},s.isResolvedFromDuration=!0}return s}function K_(t=wt.visualDuration,s=wt.bounce){const i=typeof t!="object"?{visualDuration:t,keyframes:[0,1],bounce:s}:t;let{restSpeed:o,restDelta:c}=i;const u=i.keyframes[0],d=i.keyframes[i.keyframes.length-1],m={done:!1,value:u},{stiffness:h,damping:g,mass:v,duration:_,velocity:b,isResolvedFromDuration:S}=YE({...i,velocity:-Ls(i.velocity||0)}),T=b||0,N=g/(2*Math.sqrt(h*v)),j=d-u,w=Ls(Math.sqrt(h/v)),C=Math.abs(j)<5;o||(o=C?wt.restSpeed.granular:wt.restSpeed.default),c||(c=C?wt.restDelta.granular:wt.restDelta.default);let A;if(N<1){const D=dp(w,N);A=E=>{const $=Math.exp(-N*w*E);return d-$*((T+N*w*j)/D*Math.sin(D*E)+j*Math.cos(D*E))}}else if(N===1)A=D=>d-Math.exp(-w*D)*(j+(T+w*j)*D);else{const D=w*Math.sqrt(N*N-1);A=E=>{const $=Math.exp(-N*w*E),z=Math.min(D*E,300);return d-$*((T+N*w*j)*Math.sinh(z)+D*j*Math.cosh(z))/D}}const M={calculatedDuration:S&&_||null,next:D=>{const E=A(D);if(S)m.done=D>=_;else{let $=0;N<1&&($=D===0?Bs(T):Z_(A,D,E));const z=Math.abs($)<=o,K=Math.abs(d-E)<=c;m.done=z&&K}return m.value=m.done?d:E,m},toString:()=>{const D=Math.min(G_(M),cp),E=y_($=>M.next(D*$).value,D,30);return D+"ms "+E}};return M}function Q0({keyframes:t,velocity:s=0,power:i=.8,timeConstant:o=325,bounceDamping:c=10,bounceStiffness:u=500,modifyTarget:d,min:m,max:h,restDelta:g=.5,restSpeed:v}){const _=t[0],b={done:!1,value:_},S=z=>m!==void 0&&z<m||h!==void 0&&z>h,T=z=>m===void 0?h:h===void 0||Math.abs(m-z)<Math.abs(h-z)?m:h;let N=i*s;const j=_+N,w=d===void 0?j:d(j);w!==j&&(N=w-_);const C=z=>-N*Math.exp(-z/o),A=z=>w+C(z),M=z=>{const K=C(z),F=A(z);b.done=Math.abs(K)<=g,b.value=b.done?w:F};let D,E;const $=z=>{S(b.value)&&(D=z,E=K_({keyframes:[b.value,T(b.value)],velocity:Z_(A,z,b.value),damping:c,stiffness:u,restDelta:g,restSpeed:v}))};return $(0),{calculatedDuration:null,next:z=>{let K=!1;return!E&&D===void 0&&(K=!0,M(z),$(z)),D!==void 0&&z>=D?E.next(z-D):(!K&&M(z),b)}}}const JE=Or(.42,0,1,1),WE=Or(0,0,.58,1),Y_=Or(.42,0,.58,1),XE=t=>Array.isArray(t)&&typeof t[0]!="number",QE={linear:xn,easeIn:JE,easeInOut:Y_,easeOut:WE,circIn:am,circInOut:C_,circOut:j_,backIn:sm,backInOut:w_,backOut:k_,anticipate:N_},ey=t=>{if(nm(t)){Yb(t.length===4);const[s,i,o,c]=t;return Or(s,i,o,c)}else if(typeof t=="string")return QE[t];return t};function eA(t,s,i){const o=[],c=i||F_,u=t.length-1;for(let d=0;d<u;d++){let m=c(t[d],t[d+1]);if(s){const h=Array.isArray(s)?s[d]||xn:s;m=Br(h,m)}o.push(m)}return o}function tA(t,s,{clamp:i=!0,ease:o,mixer:c}={}){const u=t.length;if(Yb(u===s.length),u===1)return()=>s[0];if(u===2&&s[0]===s[1])return()=>s[1];const d=t[0]===t[1];t[0]>t[u-1]&&(t=[...t].reverse(),s=[...s].reverse());const m=eA(s,o,c),h=m.length,g=v=>{if(d&&v<t[0])return s[0];let _=0;if(h>1)for(;_<t.length-2&&!(v<t[_+1]);_++);const b=ro(t[_],t[_+1],v);return m[_](b)};return i?v=>g(Ps(t[0],t[u-1],v)):g}function nA(t,s){const i=t[t.length-1];for(let o=1;o<=s;o++){const c=ro(0,s,o);t.push(xt(i,1,c))}}function sA(t){const s=[0];return nA(s,t.length-1),s}function aA(t,s){return t.map(i=>i*s)}function iA(t,s){return t.map(()=>s||Y_).splice(0,t.length-1)}function Rc({duration:t=300,keyframes:s,times:i,ease:o="easeInOut"}){const c=XE(o)?o.map(ey):ey(o),u={done:!1,value:s[0]},d=aA(i&&i.length===s.length?i:sA(s),t),m=tA(d,s,{ease:Array.isArray(c)?c:iA(s,c)});return{calculatedDuration:t,next:h=>(u.value=m(h),u.done=h>=t,u)}}const oA=t=>{const s=({timestamp:i})=>t(i);return{start:()=>gt.update(s,!0),stop:()=>Ta(s),now:()=>Zt.isProcessing?Zt.timestamp:us.now()}},rA={decay:Q0,inertia:Q0,tween:Rc,keyframes:Rc,spring:K_},lA=t=>t/100;class um extends $_{constructor(s){super(s),this.holdTime=null,this.cancelTime=null,this.currentTime=0,this.playbackSpeed=1,this.pendingPlayState="running",this.startTime=null,this.state="idle",this.stop=()=>{if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.teardown();const{onStop:h}=this.options;h&&h()};const{name:i,motionValue:o,element:c,keyframes:u}=this.options,d=(c==null?void 0:c.KeyframeResolver)||lm,m=(h,g)=>this.onKeyframesResolved(h,g);this.resolver=new d(u,m,i,o,c),this.resolver.scheduleResolve()}flatten(){super.flatten(),this._resolved&&Object.assign(this._resolved,this.initPlayback(this._resolved.keyframes))}initPlayback(s){const{type:i="keyframes",repeat:o=0,repeatDelay:c=0,repeatType:u,velocity:d=0}=this.options,m=tm(i)?i:rA[i]||Rc;let h,g;m!==Rc&&typeof s[0]!="number"&&(h=Br(lA,F_(s[0],s[1])),s=[0,100]);const v=m({...this.options,keyframes:s});u==="mirror"&&(g=m({...this.options,keyframes:[...s].reverse(),velocity:-d})),v.calculatedDuration===null&&(v.calculatedDuration=G_(v));const{calculatedDuration:_}=v,b=_+c,S=b*(o+1)-c;return{generator:v,mirroredGenerator:g,mapPercentToKeyframes:h,calculatedDuration:_,resolvedDuration:b,totalDuration:S}}onPostResolved(){const{autoplay:s=!0}=this.options;this.play(),this.pendingPlayState==="paused"||!s?this.pause():this.state=this.pendingPlayState}tick(s,i=!1){const{resolved:o}=this;if(!o){const{keyframes:z}=this.options;return{done:!0,value:z[z.length-1]}}const{finalKeyframe:c,generator:u,mirroredGenerator:d,mapPercentToKeyframes:m,keyframes:h,calculatedDuration:g,totalDuration:v,resolvedDuration:_}=o;if(this.startTime===null)return u.next(0);const{delay:b,repeat:S,repeatType:T,repeatDelay:N,onUpdate:j}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,s):this.speed<0&&(this.startTime=Math.min(s-v/this.speed,this.startTime)),i?this.currentTime=s:this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=Math.round(s-this.startTime)*this.speed;const w=this.currentTime-b*(this.speed>=0?1:-1),C=this.speed>=0?w<0:w>v;this.currentTime=Math.max(w,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=v);let A=this.currentTime,M=u;if(S){const z=Math.min(this.currentTime,v)/_;let K=Math.floor(z),F=z%1;!F&&z>=1&&(F=1),F===1&&K--,K=Math.min(K,S+1),!!(K%2)&&(T==="reverse"?(F=1-F,N&&(F-=N/_)):T==="mirror"&&(M=d)),A=Ps(0,1,F)*_}const D=C?{done:!1,value:h[0]}:M.next(A);m&&(D.value=m(D.value));let{done:E}=D;!C&&g!==null&&(E=this.speed>=0?this.currentTime>=v:this.currentTime<=0);const $=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&E);return $&&c!==void 0&&(D.value=Xc(h,this.options,c)),j&&j(D.value),$&&this.finish(),D}get duration(){const{resolved:s}=this;return s?Ls(s.calculatedDuration):0}get time(){return Ls(this.currentTime)}set time(s){s=Bs(s),this.currentTime=s,this.holdTime!==null||this.speed===0?this.holdTime=s:this.driver&&(this.startTime=this.driver.now()-s/this.speed)}get speed(){return this.playbackSpeed}set speed(s){const i=this.playbackSpeed!==s;this.playbackSpeed=s,i&&(this.time=Ls(this.currentTime))}play(){if(this.resolver.isScheduled||this.resolver.resume(),!this._resolved){this.pendingPlayState="running";return}if(this.isStopped)return;const{driver:s=oA,onPlay:i,startTime:o}=this.options;this.driver||(this.driver=s(u=>this.tick(u))),i&&i();const c=this.driver.now();this.holdTime!==null?this.startTime=c-this.holdTime:this.startTime?this.state==="finished"&&(this.startTime=c):this.startTime=o??this.calcStartTime(),this.state==="finished"&&this.updateFinishedPromise(),this.cancelTime=this.startTime,this.holdTime=null,this.state="running",this.driver.start()}pause(){var s;if(!this._resolved){this.pendingPlayState="paused";return}this.state="paused",this.holdTime=(s=this.currentTime)!==null&&s!==void 0?s:0}complete(){this.state!=="running"&&this.play(),this.pendingPlayState=this.state="finished",this.holdTime=null}finish(){this.teardown(),this.state="finished";const{onComplete:s}=this.options;s&&s()}cancel(){this.cancelTime!==null&&this.tick(this.cancelTime),this.teardown(),this.updateFinishedPromise()}teardown(){this.state="idle",this.stopDriver(),this.resolveFinishedPromise(),this.updateFinishedPromise(),this.startTime=this.cancelTime=null,this.resolver.cancel()}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(s){return this.startTime=0,this.tick(s,!0)}}const cA=new Set(["opacity","clipPath","filter","transform"]);function uA(t,s,i,{delay:o=0,duration:c=300,repeat:u=0,repeatType:d="loop",ease:m="easeInOut",times:h}={}){const g={[s]:i};h&&(g.offset=h);const v=__(m,c);return Array.isArray(v)&&(g.easing=v),t.animate(g,{delay:o,duration:c,easing:Array.isArray(v)?"linear":v,fill:"both",iterations:u+1,direction:d==="reverse"?"alternate":"normal"})}const dA=em(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),Mc=10,fA=2e4;function pA(t){return tm(t.type)||t.type==="spring"||!b_(t.ease)}function mA(t,s){const i=new um({...s,keyframes:t,repeat:0,delay:0,isGenerator:!0});let o={done:!1,value:t[0]};const c=[];let u=0;for(;!o.done&&u<fA;)o=i.sample(u),c.push(o.value),u+=Mc;return{times:void 0,keyframes:c,duration:u-Mc,ease:"linear"}}const J_={anticipate:N_,backInOut:w_,circInOut:C_};function hA(t){return t in J_}class ty extends $_{constructor(s){super(s);const{name:i,motionValue:o,element:c,keyframes:u}=this.options;this.resolver=new H_(u,(d,m)=>this.onKeyframesResolved(d,m),i,o,c),this.resolver.scheduleResolve()}initPlayback(s,i){let{duration:o=300,times:c,ease:u,type:d,motionValue:m,name:h,startTime:g}=this.options;if(!m.owner||!m.owner.current)return!1;if(typeof u=="string"&&Ac()&&hA(u)&&(u=J_[u]),pA(this.options)){const{onComplete:_,onUpdate:b,motionValue:S,element:T,...N}=this.options,j=mA(s,N);s=j.keyframes,s.length===1&&(s[1]=s[0]),o=j.duration,c=j.times,u=j.ease,d="keyframes"}const v=uA(m.owner.current,h,s,{...this.options,duration:o,times:c,ease:u});return v.startTime=g??this.calcStartTime(),this.pendingTimeline?($0(v,this.pendingTimeline),this.pendingTimeline=void 0):v.onfinish=()=>{const{onComplete:_}=this.options;m.set(Xc(s,this.options,i)),_&&_(),this.cancel(),this.resolveFinishedPromise()},{animation:v,duration:o,times:c,type:d,ease:u,keyframes:s}}get duration(){const{resolved:s}=this;if(!s)return 0;const{duration:i}=s;return Ls(i)}get time(){const{resolved:s}=this;if(!s)return 0;const{animation:i}=s;return Ls(i.currentTime||0)}set time(s){const{resolved:i}=this;if(!i)return;const{animation:o}=i;o.currentTime=Bs(s)}get speed(){const{resolved:s}=this;if(!s)return 1;const{animation:i}=s;return i.playbackRate}set speed(s){const{resolved:i}=this;if(!i)return;const{animation:o}=i;o.playbackRate=s}get state(){const{resolved:s}=this;if(!s)return"idle";const{animation:i}=s;return i.playState}get startTime(){const{resolved:s}=this;if(!s)return null;const{animation:i}=s;return i.startTime}attachTimeline(s){if(!this._resolved)this.pendingTimeline=s;else{const{resolved:i}=this;if(!i)return xn;const{animation:o}=i;$0(o,s)}return xn}play(){if(this.isStopped)return;const{resolved:s}=this;if(!s)return;const{animation:i}=s;i.playState==="finished"&&this.updateFinishedPromise(),i.play()}pause(){const{resolved:s}=this;if(!s)return;const{animation:i}=s;i.pause()}stop(){if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.resolveFinishedPromise(),this.updateFinishedPromise();const{resolved:s}=this;if(!s)return;const{animation:i,keyframes:o,duration:c,type:u,ease:d,times:m}=s;if(i.playState==="idle"||i.playState==="finished")return;if(this.time){const{motionValue:g,onUpdate:v,onComplete:_,element:b,...S}=this.options,T=new um({...S,keyframes:o,duration:c,type:u,ease:d,times:m,isGenerator:!0}),N=Bs(this.time);g.setWithVelocity(T.sample(N-Mc).value,T.sample(N).value,Mc)}const{onStop:h}=this.options;h&&h(),this.cancel()}complete(){const{resolved:s}=this;s&&s.animation.finish()}cancel(){const{resolved:s}=this;s&&s.animation.cancel()}static supports(s){const{motionValue:i,name:o,repeatDelay:c,repeatType:u,damping:d,type:m}=s;if(!i||!i.owner||!(i.owner.current instanceof HTMLElement))return!1;const{onUpdate:h,transformTemplate:g}=i.owner.getProps();return dA()&&o&&cA.has(o)&&!h&&!g&&!c&&u!=="mirror"&&d!==0&&m!=="inertia"}}const gA={type:"spring",stiffness:500,damping:25,restSpeed:10},vA=t=>({type:"spring",stiffness:550,damping:t===0?2*Math.sqrt(550):30,restSpeed:10}),yA={type:"keyframes",duration:.8},bA={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},_A=(t,{keyframes:s})=>s.length>2?yA:ci.has(t)?t.startsWith("scale")?vA(s[1]):gA:bA;function xA({when:t,delay:s,delayChildren:i,staggerChildren:o,staggerDirection:c,repeat:u,repeatType:d,repeatDelay:m,from:h,elapsed:g,...v}){return!!Object.keys(v).length}const dm=(t,s,i,o={},c,u)=>d=>{const m=Jp(o,t)||{},h=m.delay||o.delay||0;let{elapsed:g=0}=o;g=g-Bs(h);let v={keyframes:Array.isArray(i)?i:[null,i],ease:"easeOut",velocity:s.getVelocity(),...m,delay:-g,onUpdate:b=>{s.set(b),m.onUpdate&&m.onUpdate(b)},onComplete:()=>{d(),m.onComplete&&m.onComplete()},name:t,motionValue:s,element:u?void 0:c};xA(m)||(v={...v,..._A(t,v)}),v.duration&&(v.duration=Bs(v.duration)),v.repeatDelay&&(v.repeatDelay=Bs(v.repeatDelay)),v.from!==void 0&&(v.keyframes[0]=v.from);let _=!1;if((v.type===!1||v.duration===0&&!v.repeatDelay)&&(v.duration=0,v.delay===0&&(_=!0)),_&&!u&&s.get()!==void 0){const b=Xc(v.keyframes,m);if(b!==void 0)return gt.update(()=>{v.onUpdate(b),v.onComplete()}),new QC([])}return!u&&ty.supports(v)?new ty(v):new um(v)};function SA({protectedKeys:t,needsAnimating:s},i){const o=t.hasOwnProperty(i)&&s[i]!==!0;return s[i]=!1,o}function W_(t,s,{delay:i=0,transitionOverride:o,type:c}={}){var u;let{transition:d=t.getDefaultTransition(),transitionEnd:m,...h}=s;o&&(d=o);const g=[],v=c&&t.animationState&&t.animationState.getState()[c];for(const _ in h){const b=t.getValue(_,(u=t.latestValues[_])!==null&&u!==void 0?u:null),S=h[_];if(S===void 0||v&&SA(v,_))continue;const T={delay:i,...Jp(d||{},_)};let N=!1;if(window.MotionHandoffAnimation){const w=v_(t);if(w){const C=window.MotionHandoffAnimation(w,_,gt);C!==null&&(T.startTime=C,N=!0)}}sp(t,_),b.start(dm(_,b,S,t.shouldReduceMotion&&h_.has(_)?{type:!1}:T,t,N));const j=b.animation;j&&g.push(j)}return m&&Promise.all(g).then(()=>{gt.update(()=>{m&&YC(t,m)})}),g}function fp(t,s,i={}){var o;const c=Wc(t,s,i.type==="exit"?(o=t.presenceContext)===null||o===void 0?void 0:o.custom:void 0);let{transition:u=t.getDefaultTransition()||{}}=c||{};i.transitionOverride&&(u=i.transitionOverride);const d=c?()=>Promise.all(W_(t,c,i)):()=>Promise.resolve(),m=t.variantChildren&&t.variantChildren.size?(g=0)=>{const{delayChildren:v=0,staggerChildren:_,staggerDirection:b}=u;return TA(t,s,v+g,_,b,i)}:()=>Promise.resolve(),{when:h}=u;if(h){const[g,v]=h==="beforeChildren"?[d,m]:[m,d];return g().then(()=>v())}else return Promise.all([d(),m(i.delay)])}function TA(t,s,i=0,o=0,c=1,u){const d=[],m=(t.variantChildren.size-1)*o,h=c===1?(g=0)=>g*o:(g=0)=>m-g*o;return Array.from(t.variantChildren).sort(kA).forEach((g,v)=>{g.notify("AnimationStart",s),d.push(fp(g,s,{...u,delay:i+h(v)}).then(()=>g.notify("AnimationComplete",s)))}),Promise.all(d)}function kA(t,s){return t.sortNodePosition(s)}function wA(t,s,i={}){t.notify("AnimationStart",s);let o;if(Array.isArray(s)){const c=s.map(u=>fp(t,u,i));o=Promise.all(c)}else if(typeof s=="string")o=fp(t,s,i);else{const c=typeof s=="function"?Wc(t,s,i.custom):s;o=Promise.all(W_(t,c,i))}return o.then(()=>{t.notify("AnimationComplete",s)})}const NA=Up.length;function X_(t){if(!t)return;if(!t.isControllingVariants){const i=t.parent?X_(t.parent)||{}:{};return t.props.initial!==void 0&&(i.initial=t.props.initial),i}const s={};for(let i=0;i<NA;i++){const o=Up[i],c=t.props[o];(jr(c)||c===!1)&&(s[o]=c)}return s}const jA=[...Lp].reverse(),CA=Lp.length;function EA(t){return s=>Promise.all(s.map(({animation:i,options:o})=>wA(t,i,o)))}function AA(t){let s=EA(t),i=ny(),o=!0;const c=h=>(g,v)=>{var _;const b=Wc(t,v,h==="exit"?(_=t.presenceContext)===null||_===void 0?void 0:_.custom:void 0);if(b){const{transition:S,transitionEnd:T,...N}=b;g={...g,...N,...T}}return g};function u(h){s=h(t)}function d(h){const{props:g}=t,v=X_(t.parent)||{},_=[],b=new Set;let S={},T=1/0;for(let j=0;j<CA;j++){const w=jA[j],C=i[w],A=g[w]!==void 0?g[w]:v[w],M=jr(A),D=w===h?C.isActive:null;D===!1&&(T=j);let E=A===v[w]&&A!==g[w]&&M;if(E&&o&&t.manuallyAnimateOnMount&&(E=!1),C.protectedKeys={...S},!C.isActive&&D===null||!A&&!C.prevProp||Yc(A)||typeof A=="boolean")continue;const $=DA(C.prevProp,A);let z=$||w===h&&C.isActive&&!E&&M||j>T&&M,K=!1;const F=Array.isArray(A)?A:[A];let ee=F.reduce(c(w),{});D===!1&&(ee={});const{prevResolvedValues:ae={}}=C,me={...ae,...ee},ie=q=>{z=!0,b.has(q)&&(K=!0,b.delete(q)),C.needsAnimating[q]=!0;const te=t.getValue(q);te&&(te.liveStyle=!1)};for(const q in me){const te=ee[q],re=ae[q];if(S.hasOwnProperty(q))continue;let ue=!1;np(te)&&np(re)?ue=!m_(te,re):ue=te!==re,ue?te!=null?ie(q):b.add(q):te!==void 0&&b.has(q)?ie(q):C.protectedKeys[q]=!0}C.prevProp=A,C.prevResolvedValues=ee,C.isActive&&(S={...S,...ee}),o&&t.blockInitialAnimation&&(z=!1),z&&(!(E&&$)||K)&&_.push(...F.map(q=>({animation:q,options:{type:w}})))}if(b.size){const j={};b.forEach(w=>{const C=t.getBaseTarget(w),A=t.getValue(w);A&&(A.liveStyle=!0),j[w]=C??null}),_.push({animation:j})}let N=!!_.length;return o&&(g.initial===!1||g.initial===g.animate)&&!t.manuallyAnimateOnMount&&(N=!1),o=!1,N?s(_):Promise.resolve()}function m(h,g){var v;if(i[h].isActive===g)return Promise.resolve();(v=t.variantChildren)===null||v===void 0||v.forEach(b=>{var S;return(S=b.animationState)===null||S===void 0?void 0:S.setActive(h,g)}),i[h].isActive=g;const _=d(h);for(const b in i)i[b].protectedKeys={};return _}return{animateChanges:d,setActive:m,setAnimateFunction:u,getState:()=>i,reset:()=>{i=ny(),o=!0}}}function DA(t,s){return typeof s=="string"?s!==t:Array.isArray(s)?!m_(s,t):!1}function Za(t=!1){return{isActive:t,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function ny(){return{animate:Za(!0),whileInView:Za(),whileHover:Za(),whileTap:Za(),whileDrag:Za(),whileFocus:Za(),exit:Za()}}class Na{constructor(s){this.isMounted=!1,this.node=s}update(){}}class RA extends Na{constructor(s){super(s),s.animationState||(s.animationState=AA(s))}updateAnimationControlsSubscription(){const{animate:s}=this.node.getProps();Yc(s)&&(this.unmountControls=s.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:s}=this.node.getProps(),{animate:i}=this.node.prevProps||{};s!==i&&this.updateAnimationControlsSubscription()}unmount(){var s;this.node.animationState.reset(),(s=this.unmountControls)===null||s===void 0||s.call(this)}}let MA=0;class IA extends Na{constructor(){super(...arguments),this.id=MA++}update(){if(!this.node.presenceContext)return;const{isPresent:s,onExitComplete:i}=this.node.presenceContext,{isPresent:o}=this.node.prevPresenceContext||{};if(!this.node.animationState||s===o)return;const c=this.node.animationState.setActive("exit",!s);i&&!s&&c.then(()=>i(this.id))}mount(){const{register:s}=this.node.presenceContext||{};s&&(this.unmount=s(this.id))}unmount(){}}const OA={animation:{Feature:RA},exit:{Feature:IA}},Jn={x:!1,y:!1};function Q_(){return Jn.x||Jn.y}function BA(t){return t==="x"||t==="y"?Jn[t]?null:(Jn[t]=!0,()=>{Jn[t]=!1}):Jn.x||Jn.y?null:(Jn.x=Jn.y=!0,()=>{Jn.x=Jn.y=!1})}const fm=t=>t.pointerType==="mouse"?typeof t.button!="number"||t.button<=0:t.isPrimary!==!1;function Dr(t,s,i,o={passive:!0}){return t.addEventListener(s,i,o),()=>t.removeEventListener(s,i)}function Lr(t){return{point:{x:t.pageX,y:t.pageY}}}const LA=t=>s=>fm(s)&&t(s,Lr(s));function br(t,s,i,o){return Dr(t,s,LA(i),o)}const sy=(t,s)=>Math.abs(t-s);function UA(t,s){const i=sy(t.x,s.x),o=sy(t.y,s.y);return Math.sqrt(i**2+o**2)}class ex{constructor(s,i,{transformPagePoint:o,contextWindow:c,dragSnapToOrigin:u=!1}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const _=Df(this.lastMoveEventInfo,this.history),b=this.startEvent!==null,S=UA(_.offset,{x:0,y:0})>=3;if(!b&&!S)return;const{point:T}=_,{timestamp:N}=Zt;this.history.push({...T,timestamp:N});const{onStart:j,onMove:w}=this.handlers;b||(j&&j(this.lastMoveEvent,_),this.startEvent=this.lastMoveEvent),w&&w(this.lastMoveEvent,_)},this.handlePointerMove=(_,b)=>{this.lastMoveEvent=_,this.lastMoveEventInfo=Af(b,this.transformPagePoint),gt.update(this.updatePoint,!0)},this.handlePointerUp=(_,b)=>{this.end();const{onEnd:S,onSessionEnd:T,resumeAnimation:N}=this.handlers;if(this.dragSnapToOrigin&&N&&N(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const j=Df(_.type==="pointercancel"?this.lastMoveEventInfo:Af(b,this.transformPagePoint),this.history);this.startEvent&&S&&S(_,j),T&&T(_,j)},!fm(s))return;this.dragSnapToOrigin=u,this.handlers=i,this.transformPagePoint=o,this.contextWindow=c||window;const d=Lr(s),m=Af(d,this.transformPagePoint),{point:h}=m,{timestamp:g}=Zt;this.history=[{...h,timestamp:g}];const{onSessionStart:v}=i;v&&v(s,Df(m,this.history)),this.removeListeners=Br(br(this.contextWindow,"pointermove",this.handlePointerMove),br(this.contextWindow,"pointerup",this.handlePointerUp),br(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(s){this.handlers=s}end(){this.removeListeners&&this.removeListeners(),Ta(this.updatePoint)}}function Af(t,s){return s?{point:s(t.point)}:t}function ay(t,s){return{x:t.x-s.x,y:t.y-s.y}}function Df({point:t},s){return{point:t,delta:ay(t,tx(s)),offset:ay(t,zA(s)),velocity:PA(s,.1)}}function zA(t){return t[0]}function tx(t){return t[t.length-1]}function PA(t,s){if(t.length<2)return{x:0,y:0};let i=t.length-1,o=null;const c=tx(t);for(;i>=0&&(o=t[i],!(c.timestamp-o.timestamp>Bs(s)));)i--;if(!o)return{x:0,y:0};const u=Ls(c.timestamp-o.timestamp);if(u===0)return{x:0,y:0};const d={x:(c.x-o.x)/u,y:(c.y-o.y)/u};return d.x===1/0&&(d.x=0),d.y===1/0&&(d.y=0),d}const nx=1e-4,VA=1-nx,HA=1+nx,sx=.01,$A=0-sx,GA=0+sx;function Sn(t){return t.max-t.min}function qA(t,s,i){return Math.abs(t-s)<=i}function iy(t,s,i,o=.5){t.origin=o,t.originPoint=xt(s.min,s.max,t.origin),t.scale=Sn(i)/Sn(s),t.translate=xt(i.min,i.max,t.origin)-t.originPoint,(t.scale>=VA&&t.scale<=HA||isNaN(t.scale))&&(t.scale=1),(t.translate>=$A&&t.translate<=GA||isNaN(t.translate))&&(t.translate=0)}function _r(t,s,i,o){iy(t.x,s.x,i.x,o?o.originX:void 0),iy(t.y,s.y,i.y,o?o.originY:void 0)}function oy(t,s,i){t.min=i.min+s.min,t.max=t.min+Sn(s)}function FA(t,s,i){oy(t.x,s.x,i.x),oy(t.y,s.y,i.y)}function ry(t,s,i){t.min=s.min-i.min,t.max=t.min+Sn(s)}function xr(t,s,i){ry(t.x,s.x,i.x),ry(t.y,s.y,i.y)}function ZA(t,{min:s,max:i},o){return s!==void 0&&t<s?t=o?xt(s,t,o.min):Math.max(t,s):i!==void 0&&t>i&&(t=o?xt(i,t,o.max):Math.min(t,i)),t}function ly(t,s,i){return{min:s!==void 0?t.min+s:void 0,max:i!==void 0?t.max+i-(t.max-t.min):void 0}}function KA(t,{top:s,left:i,bottom:o,right:c}){return{x:ly(t.x,i,c),y:ly(t.y,s,o)}}function cy(t,s){let i=s.min-t.min,o=s.max-t.max;return s.max-s.min<t.max-t.min&&([i,o]=[o,i]),{min:i,max:o}}function YA(t,s){return{x:cy(t.x,s.x),y:cy(t.y,s.y)}}function JA(t,s){let i=.5;const o=Sn(t),c=Sn(s);return c>o?i=ro(s.min,s.max-o,t.min):o>c&&(i=ro(t.min,t.max-c,s.min)),Ps(0,1,i)}function WA(t,s){const i={};return s.min!==void 0&&(i.min=s.min-t.min),s.max!==void 0&&(i.max=s.max-t.min),i}const pp=.35;function XA(t=pp){return t===!1?t=0:t===!0&&(t=pp),{x:uy(t,"left","right"),y:uy(t,"top","bottom")}}function uy(t,s,i){return{min:dy(t,s),max:dy(t,i)}}function dy(t,s){return typeof t=="number"?t:t[s]||0}const fy=()=>({translate:0,scale:1,origin:0,originPoint:0}),Qi=()=>({x:fy(),y:fy()}),py=()=>({min:0,max:0}),At=()=>({x:py(),y:py()});function Un(t){return[t("x"),t("y")]}function ax({top:t,left:s,right:i,bottom:o}){return{x:{min:s,max:i},y:{min:t,max:o}}}function QA({x:t,y:s}){return{top:s.min,right:t.max,bottom:s.max,left:t.min}}function eD(t,s){if(!s)return t;const i=s({x:t.left,y:t.top}),o=s({x:t.right,y:t.bottom});return{top:i.y,left:i.x,bottom:o.y,right:o.x}}function Rf(t){return t===void 0||t===1}function mp({scale:t,scaleX:s,scaleY:i}){return!Rf(t)||!Rf(s)||!Rf(i)}function Wa(t){return mp(t)||ix(t)||t.z||t.rotate||t.rotateX||t.rotateY||t.skewX||t.skewY}function ix(t){return my(t.x)||my(t.y)}function my(t){return t&&t!=="0%"}function Ic(t,s,i){const o=t-i,c=s*o;return i+c}function hy(t,s,i,o,c){return c!==void 0&&(t=Ic(t,c,o)),Ic(t,i,o)+s}function hp(t,s=0,i=1,o,c){t.min=hy(t.min,s,i,o,c),t.max=hy(t.max,s,i,o,c)}function ox(t,{x:s,y:i}){hp(t.x,s.translate,s.scale,s.originPoint),hp(t.y,i.translate,i.scale,i.originPoint)}const gy=.999999999999,vy=1.0000000000001;function tD(t,s,i,o=!1){const c=i.length;if(!c)return;s.x=s.y=1;let u,d;for(let m=0;m<c;m++){u=i[m],d=u.projectionDelta;const{visualElement:h}=u.options;h&&h.props.style&&h.props.style.display==="contents"||(o&&u.options.layoutScroll&&u.scroll&&u!==u.root&&to(t,{x:-u.scroll.offset.x,y:-u.scroll.offset.y}),d&&(s.x*=d.x.scale,s.y*=d.y.scale,ox(t,d)),o&&Wa(u.latestValues)&&to(t,u.latestValues))}s.x<vy&&s.x>gy&&(s.x=1),s.y<vy&&s.y>gy&&(s.y=1)}function eo(t,s){t.min=t.min+s,t.max=t.max+s}function yy(t,s,i,o,c=.5){const u=xt(t.min,t.max,c);hp(t,s,i,u,o)}function to(t,s){yy(t.x,s.x,s.scaleX,s.scale,s.originX),yy(t.y,s.y,s.scaleY,s.scale,s.originY)}function rx(t,s){return ax(eD(t.getBoundingClientRect(),s))}function nD(t,s,i){const o=rx(t,i),{scroll:c}=s;return c&&(eo(o.x,c.offset.x),eo(o.y,c.offset.y)),o}const lx=({current:t})=>t?t.ownerDocument.defaultView:null,sD=new WeakMap;class aD{constructor(s){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=At(),this.visualElement=s}start(s,{snapToCursor:i=!1}={}){const{presenceContext:o}=this.visualElement;if(o&&o.isPresent===!1)return;const c=v=>{const{dragSnapToOrigin:_}=this.getProps();_?this.pauseAnimation():this.stopAnimation(),i&&this.snapToCursor(Lr(v).point)},u=(v,_)=>{const{drag:b,dragPropagation:S,onDragStart:T}=this.getProps();if(b&&!S&&(this.openDragLock&&this.openDragLock(),this.openDragLock=BA(b),!this.openDragLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),Un(j=>{let w=this.getAxisMotionValue(j).get()||0;if(cs.test(w)){const{projection:C}=this.visualElement;if(C&&C.layout){const A=C.layout.layoutBox[j];A&&(w=Sn(A)*(parseFloat(w)/100))}}this.originPoint[j]=w}),T&&gt.postRender(()=>T(v,_)),sp(this.visualElement,"transform");const{animationState:N}=this.visualElement;N&&N.setActive("whileDrag",!0)},d=(v,_)=>{const{dragPropagation:b,dragDirectionLock:S,onDirectionLock:T,onDrag:N}=this.getProps();if(!b&&!this.openDragLock)return;const{offset:j}=_;if(S&&this.currentDirection===null){this.currentDirection=iD(j),this.currentDirection!==null&&T&&T(this.currentDirection);return}this.updateAxis("x",_.point,j),this.updateAxis("y",_.point,j),this.visualElement.render(),N&&N(v,_)},m=(v,_)=>this.stop(v,_),h=()=>Un(v=>{var _;return this.getAnimationState(v)==="paused"&&((_=this.getAxisMotionValue(v).animation)===null||_===void 0?void 0:_.play())}),{dragSnapToOrigin:g}=this.getProps();this.panSession=new ex(s,{onSessionStart:c,onStart:u,onMove:d,onSessionEnd:m,resumeAnimation:h},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:g,contextWindow:lx(this.visualElement)})}stop(s,i){const o=this.isDragging;if(this.cancel(),!o)return;const{velocity:c}=i;this.startAnimation(c);const{onDragEnd:u}=this.getProps();u&&gt.postRender(()=>u(s,i))}cancel(){this.isDragging=!1;const{projection:s,animationState:i}=this.visualElement;s&&(s.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:o}=this.getProps();!o&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),i&&i.setActive("whileDrag",!1)}updateAxis(s,i,o){const{drag:c}=this.getProps();if(!o||!dc(s,c,this.currentDirection))return;const u=this.getAxisMotionValue(s);let d=this.originPoint[s]+o[s];this.constraints&&this.constraints[s]&&(d=ZA(d,this.constraints[s],this.elastic[s])),u.set(d)}resolveConstraints(){var s;const{dragConstraints:i,dragElastic:o}=this.getProps(),c=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(s=this.visualElement.projection)===null||s===void 0?void 0:s.layout,u=this.constraints;i&&Wi(i)?this.constraints||(this.constraints=this.resolveRefConstraints()):i&&c?this.constraints=KA(c.layoutBox,i):this.constraints=!1,this.elastic=XA(o),u!==this.constraints&&c&&this.constraints&&!this.hasMutatedConstraints&&Un(d=>{this.constraints!==!1&&this.getAxisMotionValue(d)&&(this.constraints[d]=WA(c.layoutBox[d],this.constraints[d]))})}resolveRefConstraints(){const{dragConstraints:s,onMeasureDragConstraints:i}=this.getProps();if(!s||!Wi(s))return!1;const o=s.current,{projection:c}=this.visualElement;if(!c||!c.layout)return!1;const u=nD(o,c.root,this.visualElement.getTransformPagePoint());let d=YA(c.layout.layoutBox,u);if(i){const m=i(QA(d));this.hasMutatedConstraints=!!m,m&&(d=ax(m))}return d}startAnimation(s){const{drag:i,dragMomentum:o,dragElastic:c,dragTransition:u,dragSnapToOrigin:d,onDragTransitionEnd:m}=this.getProps(),h=this.constraints||{},g=Un(v=>{if(!dc(v,i,this.currentDirection))return;let _=h&&h[v]||{};d&&(_={min:0,max:0});const b=c?200:1e6,S=c?40:1e7,T={type:"inertia",velocity:o?s[v]:0,bounceStiffness:b,bounceDamping:S,timeConstant:750,restDelta:1,restSpeed:10,...u,..._};return this.startAxisValueAnimation(v,T)});return Promise.all(g).then(m)}startAxisValueAnimation(s,i){const o=this.getAxisMotionValue(s);return sp(this.visualElement,s),o.start(dm(s,o,0,i,this.visualElement,!1))}stopAnimation(){Un(s=>this.getAxisMotionValue(s).stop())}pauseAnimation(){Un(s=>{var i;return(i=this.getAxisMotionValue(s).animation)===null||i===void 0?void 0:i.pause()})}getAnimationState(s){var i;return(i=this.getAxisMotionValue(s).animation)===null||i===void 0?void 0:i.state}getAxisMotionValue(s){const i=`_drag${s.toUpperCase()}`,o=this.visualElement.getProps(),c=o[i];return c||this.visualElement.getValue(s,(o.initial?o.initial[s]:void 0)||0)}snapToCursor(s){Un(i=>{const{drag:o}=this.getProps();if(!dc(i,o,this.currentDirection))return;const{projection:c}=this.visualElement,u=this.getAxisMotionValue(i);if(c&&c.layout){const{min:d,max:m}=c.layout.layoutBox[i];u.set(s[i]-xt(d,m,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:s,dragConstraints:i}=this.getProps(),{projection:o}=this.visualElement;if(!Wi(i)||!o||!this.constraints)return;this.stopAnimation();const c={x:0,y:0};Un(d=>{const m=this.getAxisMotionValue(d);if(m&&this.constraints!==!1){const h=m.get();c[d]=JA({min:h,max:h},this.constraints[d])}});const{transformTemplate:u}=this.visualElement.getProps();this.visualElement.current.style.transform=u?u({},""):"none",o.root&&o.root.updateScroll(),o.updateLayout(),this.resolveConstraints(),Un(d=>{if(!dc(d,s,null))return;const m=this.getAxisMotionValue(d),{min:h,max:g}=this.constraints[d];m.set(xt(h,g,c[d]))})}addListeners(){if(!this.visualElement.current)return;sD.set(this.visualElement,this);const s=this.visualElement.current,i=br(s,"pointerdown",h=>{const{drag:g,dragListener:v=!0}=this.getProps();g&&v&&this.start(h)}),o=()=>{const{dragConstraints:h}=this.getProps();Wi(h)&&h.current&&(this.constraints=this.resolveRefConstraints())},{projection:c}=this.visualElement,u=c.addEventListener("measure",o);c&&!c.layout&&(c.root&&c.root.updateScroll(),c.updateLayout()),gt.read(o);const d=Dr(window,"resize",()=>this.scalePositionWithinConstraints()),m=c.addEventListener("didUpdate",(({delta:h,hasLayoutChanged:g})=>{this.isDragging&&g&&(Un(v=>{const _=this.getAxisMotionValue(v);_&&(this.originPoint[v]+=h[v].translate,_.set(_.get()+h[v].translate))}),this.visualElement.render())}));return()=>{d(),i(),u(),m&&m()}}getProps(){const s=this.visualElement.getProps(),{drag:i=!1,dragDirectionLock:o=!1,dragPropagation:c=!1,dragConstraints:u=!1,dragElastic:d=pp,dragMomentum:m=!0}=s;return{...s,drag:i,dragDirectionLock:o,dragPropagation:c,dragConstraints:u,dragElastic:d,dragMomentum:m}}}function dc(t,s,i){return(s===!0||s===t)&&(i===null||i===t)}function iD(t,s=10){let i=null;return Math.abs(t.y)>s?i="y":Math.abs(t.x)>s&&(i="x"),i}class oD extends Na{constructor(s){super(s),this.removeGroupControls=xn,this.removeListeners=xn,this.controls=new aD(s)}mount(){const{dragControls:s}=this.node.getProps();s&&(this.removeGroupControls=s.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||xn}unmount(){this.removeGroupControls(),this.removeListeners()}}const by=t=>(s,i)=>{t&&gt.postRender(()=>t(s,i))};class rD extends Na{constructor(){super(...arguments),this.removePointerDownListener=xn}onPointerDown(s){this.session=new ex(s,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:lx(this.node)})}createPanHandlers(){const{onPanSessionStart:s,onPanStart:i,onPan:o,onPanEnd:c}=this.node.getProps();return{onSessionStart:by(s),onStart:by(i),onMove:o,onEnd:(u,d)=>{delete this.session,c&&gt.postRender(()=>c(u,d))}}}mount(){this.removePointerDownListener=br(this.node.current,"pointerdown",s=>this.onPointerDown(s))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}const Tc={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function _y(t,s){return s.max===s.min?0:t/(s.max-s.min)*100}const cr={correct:(t,s)=>{if(!s.target)return t;if(typeof t=="string")if(we.test(t))t=parseFloat(t);else return t;const i=_y(t,s.target.x),o=_y(t,s.target.y);return`${i}% ${o}%`}},lD={correct:(t,{treeScale:s,projectionDelta:i})=>{const o=t,c=ka.parse(t);if(c.length>5)return o;const u=ka.createTransformer(t),d=typeof c[0]!="number"?1:0,m=i.x.scale*s.x,h=i.y.scale*s.y;c[0+d]/=m,c[1+d]/=h;const g=xt(m,h,.5);return typeof c[2+d]=="number"&&(c[2+d]/=g),typeof c[3+d]=="number"&&(c[3+d]/=g),u(c)}};class cD extends y.Component{componentDidMount(){const{visualElement:s,layoutGroup:i,switchLayoutGroup:o,layoutId:c}=this.props,{projection:u}=s;OC(uD),u&&(i.group&&i.group.add(u),o&&o.register&&c&&o.register(u),u.root.didUpdate(),u.addEventListener("animationComplete",()=>{this.safeToRemove()}),u.setOptions({...u.options,onExitComplete:()=>this.safeToRemove()})),Tc.hasEverUpdated=!0}getSnapshotBeforeUpdate(s){const{layoutDependency:i,visualElement:o,drag:c,isPresent:u}=this.props,d=o.projection;return d&&(d.isPresent=u,c||s.layoutDependency!==i||i===void 0?d.willUpdate():this.safeToRemove(),s.isPresent!==u&&(u?d.promote():d.relegate()||gt.postRender(()=>{const m=d.getStack();(!m||!m.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:s}=this.props.visualElement;s&&(s.root.didUpdate(),Pp.postRender(()=>{!s.currentAnimation&&s.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:s,layoutGroup:i,switchLayoutGroup:o}=this.props,{projection:c}=s;c&&(c.scheduleCheckAfterUnmount(),i&&i.group&&i.group.remove(c),o&&o.deregister&&o.deregister(c))}safeToRemove(){const{safeToRemove:s}=this.props;s&&s()}render(){return null}}function cx(t){const[s,i]=Zb(),o=y.useContext(Mp);return l.jsx(cD,{...t,layoutGroup:o,switchLayoutGroup:y.useContext(t_),isPresent:s,safeToRemove:i})}const uD={borderRadius:{...cr,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:cr,borderTopRightRadius:cr,borderBottomLeftRadius:cr,borderBottomRightRadius:cr,boxShadow:lD};function dD(t,s,i){const o=Xt(t)?t:Er(t);return o.start(dm("",o,s,i)),o.animation}function fD(t){return t instanceof SVGElement&&t.tagName!=="svg"}const pD=(t,s)=>t.depth-s.depth;class mD{constructor(){this.children=[],this.isDirty=!1}add(s){Wp(this.children,s),this.isDirty=!0}remove(s){Xp(this.children,s),this.isDirty=!0}forEach(s){this.isDirty&&this.children.sort(pD),this.isDirty=!1,this.children.forEach(s)}}function hD(t,s){const i=us.now(),o=({timestamp:c})=>{const u=c-i;u>=s&&(Ta(o),t(u-s))};return gt.read(o,!0),()=>Ta(o)}const ux=["TopLeft","TopRight","BottomLeft","BottomRight"],gD=ux.length,xy=t=>typeof t=="string"?parseFloat(t):t,Sy=t=>typeof t=="number"||we.test(t);function vD(t,s,i,o,c,u){c?(t.opacity=xt(0,i.opacity!==void 0?i.opacity:1,yD(o)),t.opacityExit=xt(s.opacity!==void 0?s.opacity:1,0,bD(o))):u&&(t.opacity=xt(s.opacity!==void 0?s.opacity:1,i.opacity!==void 0?i.opacity:1,o));for(let d=0;d<gD;d++){const m=`border${ux[d]}Radius`;let h=Ty(s,m),g=Ty(i,m);if(h===void 0&&g===void 0)continue;h||(h=0),g||(g=0),h===0||g===0||Sy(h)===Sy(g)?(t[m]=Math.max(xt(xy(h),xy(g),o),0),(cs.test(g)||cs.test(h))&&(t[m]+="%")):t[m]=g}(s.rotate||i.rotate)&&(t.rotate=xt(s.rotate||0,i.rotate||0,o))}function Ty(t,s){return t[s]!==void 0?t[s]:t.borderRadius}const yD=dx(0,.5,j_),bD=dx(.5,.95,xn);function dx(t,s,i){return o=>o<t?0:o>s?1:i(ro(t,s,o))}function ky(t,s){t.min=s.min,t.max=s.max}function On(t,s){ky(t.x,s.x),ky(t.y,s.y)}function wy(t,s){t.translate=s.translate,t.scale=s.scale,t.originPoint=s.originPoint,t.origin=s.origin}function Ny(t,s,i,o,c){return t-=s,t=Ic(t,1/i,o),c!==void 0&&(t=Ic(t,1/c,o)),t}function _D(t,s=0,i=1,o=.5,c,u=t,d=t){if(cs.test(s)&&(s=parseFloat(s),s=xt(d.min,d.max,s/100)-d.min),typeof s!="number")return;let m=xt(u.min,u.max,o);t===u&&(m-=s),t.min=Ny(t.min,s,i,m,c),t.max=Ny(t.max,s,i,m,c)}function jy(t,s,[i,o,c],u,d){_D(t,s[i],s[o],s[c],s.scale,u,d)}const xD=["x","scaleX","originX"],SD=["y","scaleY","originY"];function Cy(t,s,i,o){jy(t.x,s,xD,i?i.x:void 0,o?o.x:void 0),jy(t.y,s,SD,i?i.y:void 0,o?o.y:void 0)}function Ey(t){return t.translate===0&&t.scale===1}function fx(t){return Ey(t.x)&&Ey(t.y)}function Ay(t,s){return t.min===s.min&&t.max===s.max}function TD(t,s){return Ay(t.x,s.x)&&Ay(t.y,s.y)}function Dy(t,s){return Math.round(t.min)===Math.round(s.min)&&Math.round(t.max)===Math.round(s.max)}function px(t,s){return Dy(t.x,s.x)&&Dy(t.y,s.y)}function Ry(t){return Sn(t.x)/Sn(t.y)}function My(t,s){return t.translate===s.translate&&t.scale===s.scale&&t.originPoint===s.originPoint}class kD{constructor(){this.members=[]}add(s){Wp(this.members,s),s.scheduleRender()}remove(s){if(Xp(this.members,s),s===this.prevLead&&(this.prevLead=void 0),s===this.lead){const i=this.members[this.members.length-1];i&&this.promote(i)}}relegate(s){const i=this.members.findIndex(c=>s===c);if(i===0)return!1;let o;for(let c=i;c>=0;c--){const u=this.members[c];if(u.isPresent!==!1){o=u;break}}return o?(this.promote(o),!0):!1}promote(s,i){const o=this.lead;if(s!==o&&(this.prevLead=o,this.lead=s,s.show(),o)){o.instance&&o.scheduleRender(),s.scheduleRender(),s.resumeFrom=o,i&&(s.resumeFrom.preserveOpacity=!0),o.snapshot&&(s.snapshot=o.snapshot,s.snapshot.latestValues=o.animationValues||o.latestValues),s.root&&s.root.isUpdating&&(s.isLayoutDirty=!0);const{crossfade:c}=s.options;c===!1&&o.hide()}}exitAnimationComplete(){this.members.forEach(s=>{const{options:i,resumingFrom:o}=s;i.onExitComplete&&i.onExitComplete(),o&&o.options.onExitComplete&&o.options.onExitComplete()})}scheduleRender(){this.members.forEach(s=>{s.instance&&s.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function wD(t,s,i){let o="";const c=t.x.translate/s.x,u=t.y.translate/s.y,d=(i==null?void 0:i.z)||0;if((c||u||d)&&(o=`translate3d(${c}px, ${u}px, ${d}px) `),(s.x!==1||s.y!==1)&&(o+=`scale(${1/s.x}, ${1/s.y}) `),i){const{transformPerspective:g,rotate:v,rotateX:_,rotateY:b,skewX:S,skewY:T}=i;g&&(o=`perspective(${g}px) ${o}`),v&&(o+=`rotate(${v}deg) `),_&&(o+=`rotateX(${_}deg) `),b&&(o+=`rotateY(${b}deg) `),S&&(o+=`skewX(${S}deg) `),T&&(o+=`skewY(${T}deg) `)}const m=t.x.scale*s.x,h=t.y.scale*s.y;return(m!==1||h!==1)&&(o+=`scale(${m}, ${h})`),o||"none"}const Xa={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0},mr=typeof window<"u"&&window.MotionDebug!==void 0,Mf=["","X","Y","Z"],ND={visibility:"hidden"},Iy=1e3;let jD=0;function If(t,s,i,o){const{latestValues:c}=s;c[t]&&(i[t]=c[t],s.setStaticValue(t,0),o&&(o[t]=0))}function mx(t){if(t.hasCheckedOptimisedAppear=!0,t.root===t)return;const{visualElement:s}=t.options;if(!s)return;const i=v_(s);if(window.MotionHasOptimisedAnimation(i,"transform")){const{layout:c,layoutId:u}=t.options;window.MotionCancelOptimisedAnimation(i,"transform",gt,!(c||u))}const{parent:o}=t;o&&!o.hasCheckedOptimisedAppear&&mx(o)}function hx({attachResizeListener:t,defaultParent:s,measureScroll:i,checkIsScrollRoot:o,resetTransform:c}){return class{constructor(d={},m=s==null?void 0:s()){this.id=jD++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,mr&&(Xa.totalNodes=Xa.resolvedTargetDeltas=Xa.recalculatedProjection=0),this.nodes.forEach(AD),this.nodes.forEach(OD),this.nodes.forEach(BD),this.nodes.forEach(DD),mr&&window.MotionDebug.record(Xa)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=d,this.root=m?m.root||m:this,this.path=m?[...m.path,m]:[],this.parent=m,this.depth=m?m.depth+1:0;for(let h=0;h<this.path.length;h++)this.path[h].shouldResetTransform=!0;this.root===this&&(this.nodes=new mD)}addEventListener(d,m){return this.eventHandlers.has(d)||this.eventHandlers.set(d,new Qp),this.eventHandlers.get(d).add(m)}notifyListeners(d,...m){const h=this.eventHandlers.get(d);h&&h.notify(...m)}hasListeners(d){return this.eventHandlers.has(d)}mount(d,m=this.root.hasTreeAnimated){if(this.instance)return;this.isSVG=fD(d),this.instance=d;const{layoutId:h,layout:g,visualElement:v}=this.options;if(v&&!v.current&&v.mount(d),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),m&&(g||h)&&(this.isLayoutDirty=!0),t){let _;const b=()=>this.root.updateBlockedByResize=!1;t(d,()=>{this.root.updateBlockedByResize=!0,_&&_(),_=hD(b,250),Tc.hasAnimatedSinceResize&&(Tc.hasAnimatedSinceResize=!1,this.nodes.forEach(By))})}h&&this.root.registerSharedNode(h,this),this.options.animate!==!1&&v&&(h||g)&&this.addEventListener("didUpdate",({delta:_,hasLayoutChanged:b,hasRelativeTargetChanged:S,layout:T})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const N=this.options.transition||v.getDefaultTransition()||VD,{onLayoutAnimationStart:j,onLayoutAnimationComplete:w}=v.getProps(),C=!this.targetLayout||!px(this.targetLayout,T)||S,A=!b&&S;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||A||b&&(C||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(_,A);const M={...Jp(N,"layout"),onPlay:j,onComplete:w};(v.shouldReduceMotion||this.options.layoutRoot)&&(M.delay=0,M.type=!1),this.startAnimation(M)}else b||By(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=T})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const d=this.getStack();d&&d.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,Ta(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(LD),this.animationId++)}getTransformTemplate(){const{visualElement:d}=this.options;return d&&d.getProps().transformTemplate}willUpdate(d=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&mx(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let v=0;v<this.path.length;v++){const _=this.path[v];_.shouldResetTransform=!0,_.updateScroll("snapshot"),_.options.layoutRoot&&_.willUpdate(!1)}const{layoutId:m,layout:h}=this.options;if(m===void 0&&!h)return;const g=this.getTransformTemplate();this.prevTransformTemplateValue=g?g(this.latestValues,""):void 0,this.updateSnapshot(),d&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEach(Oy);return}this.isUpdating||this.nodes.forEach(MD),this.isUpdating=!1,this.nodes.forEach(ID),this.nodes.forEach(CD),this.nodes.forEach(ED),this.clearAllSnapshots();const m=us.now();Zt.delta=Ps(0,1e3/60,m-Zt.timestamp),Zt.timestamp=m,Zt.isProcessing=!0,wf.update.process(Zt),wf.preRender.process(Zt),wf.render.process(Zt),Zt.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,Pp.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(RD),this.sharedNodes.forEach(UD)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,gt.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){gt.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let h=0;h<this.path.length;h++)this.path[h].updateScroll();const d=this.layout;this.layout=this.measure(!1),this.layoutCorrected=At(),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:m}=this.options;m&&m.notify("LayoutMeasure",this.layout.layoutBox,d?d.layoutBox:void 0)}updateScroll(d="measure"){let m=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===d&&(m=!1),m){const h=o(this.instance);this.scroll={animationId:this.root.animationId,phase:d,isRoot:h,offset:i(this.instance),wasRoot:this.scroll?this.scroll.isRoot:h}}}resetTransform(){if(!c)return;const d=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,m=this.projectionDelta&&!fx(this.projectionDelta),h=this.getTransformTemplate(),g=h?h(this.latestValues,""):void 0,v=g!==this.prevTransformTemplateValue;d&&(m||Wa(this.latestValues)||v)&&(c(this.instance,g),this.shouldResetTransform=!1,this.scheduleRender())}measure(d=!0){const m=this.measurePageBox();let h=this.removeElementScroll(m);return d&&(h=this.removeTransform(h)),HD(h),{animationId:this.root.animationId,measuredBox:m,layoutBox:h,latestValues:{},source:this.id}}measurePageBox(){var d;const{visualElement:m}=this.options;if(!m)return At();const h=m.measureViewportBox();if(!(((d=this.scroll)===null||d===void 0?void 0:d.wasRoot)||this.path.some($D))){const{scroll:v}=this.root;v&&(eo(h.x,v.offset.x),eo(h.y,v.offset.y))}return h}removeElementScroll(d){var m;const h=At();if(On(h,d),!((m=this.scroll)===null||m===void 0)&&m.wasRoot)return h;for(let g=0;g<this.path.length;g++){const v=this.path[g],{scroll:_,options:b}=v;v!==this.root&&_&&b.layoutScroll&&(_.wasRoot&&On(h,d),eo(h.x,_.offset.x),eo(h.y,_.offset.y))}return h}applyTransform(d,m=!1){const h=At();On(h,d);for(let g=0;g<this.path.length;g++){const v=this.path[g];!m&&v.options.layoutScroll&&v.scroll&&v!==v.root&&to(h,{x:-v.scroll.offset.x,y:-v.scroll.offset.y}),Wa(v.latestValues)&&to(h,v.latestValues)}return Wa(this.latestValues)&&to(h,this.latestValues),h}removeTransform(d){const m=At();On(m,d);for(let h=0;h<this.path.length;h++){const g=this.path[h];if(!g.instance||!Wa(g.latestValues))continue;mp(g.latestValues)&&g.updateSnapshot();const v=At(),_=g.measurePageBox();On(v,_),Cy(m,g.latestValues,g.snapshot?g.snapshot.layoutBox:void 0,v)}return Wa(this.latestValues)&&Cy(m,this.latestValues),m}setTargetDelta(d){this.targetDelta=d,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(d){this.options={...this.options,...d,crossfade:d.crossfade!==void 0?d.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==Zt.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(d=!1){var m;const h=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=h.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=h.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=h.isSharedProjectionDirty);const g=!!this.resumingFrom||this!==h;if(!(d||g&&this.isSharedProjectionDirty||this.isProjectionDirty||!((m=this.parent)===null||m===void 0)&&m.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:_,layoutId:b}=this.options;if(!(!this.layout||!(_||b))){if(this.resolvedRelativeTargetAt=Zt.timestamp,!this.targetDelta&&!this.relativeTarget){const S=this.getClosestProjectingParent();S&&S.layout&&this.animationProgress!==1?(this.relativeParent=S,this.forceRelativeParentToResolveTarget(),this.relativeTarget=At(),this.relativeTargetOrigin=At(),xr(this.relativeTargetOrigin,this.layout.layoutBox,S.layout.layoutBox),On(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}if(!(!this.relativeTarget&&!this.targetDelta)){if(this.target||(this.target=At(),this.targetWithTransforms=At()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),FA(this.target,this.relativeTarget,this.relativeParent.target)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):On(this.target,this.layout.layoutBox),ox(this.target,this.targetDelta)):On(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget){this.attemptToResolveRelativeTarget=!1;const S=this.getClosestProjectingParent();S&&!!S.resumingFrom==!!this.resumingFrom&&!S.options.layoutScroll&&S.target&&this.animationProgress!==1?(this.relativeParent=S,this.forceRelativeParentToResolveTarget(),this.relativeTarget=At(),this.relativeTargetOrigin=At(),xr(this.relativeTargetOrigin,this.target,S.target),On(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}mr&&Xa.resolvedTargetDeltas++}}}getClosestProjectingParent(){if(!(!this.parent||mp(this.parent.latestValues)||ix(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}calcProjection(){var d;const m=this.getLead(),h=!!this.resumingFrom||this!==m;let g=!0;if((this.isProjectionDirty||!((d=this.parent)===null||d===void 0)&&d.isProjectionDirty)&&(g=!1),h&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(g=!1),this.resolvedRelativeTargetAt===Zt.timestamp&&(g=!1),g)return;const{layout:v,layoutId:_}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(v||_))return;On(this.layoutCorrected,this.layout.layoutBox);const b=this.treeScale.x,S=this.treeScale.y;tD(this.layoutCorrected,this.treeScale,this.path,h),m.layout&&!m.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(m.target=m.layout.layoutBox,m.targetWithTransforms=At());const{target:T}=m;if(!T){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(wy(this.prevProjectionDelta.x,this.projectionDelta.x),wy(this.prevProjectionDelta.y,this.projectionDelta.y)),_r(this.projectionDelta,this.layoutCorrected,T,this.latestValues),(this.treeScale.x!==b||this.treeScale.y!==S||!My(this.projectionDelta.x,this.prevProjectionDelta.x)||!My(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",T)),mr&&Xa.recalculatedProjection++}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(d=!0){var m;if((m=this.options.visualElement)===null||m===void 0||m.scheduleRender(),d){const h=this.getStack();h&&h.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=Qi(),this.projectionDelta=Qi(),this.projectionDeltaWithTransform=Qi()}setAnimationOrigin(d,m=!1){const h=this.snapshot,g=h?h.latestValues:{},v={...this.latestValues},_=Qi();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!m;const b=At(),S=h?h.source:void 0,T=this.layout?this.layout.source:void 0,N=S!==T,j=this.getStack(),w=!j||j.members.length<=1,C=!!(N&&!w&&this.options.crossfade===!0&&!this.path.some(PD));this.animationProgress=0;let A;this.mixTargetDelta=M=>{const D=M/1e3;Ly(_.x,d.x,D),Ly(_.y,d.y,D),this.setTargetDelta(_),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(xr(b,this.layout.layoutBox,this.relativeParent.layout.layoutBox),zD(this.relativeTarget,this.relativeTargetOrigin,b,D),A&&TD(this.relativeTarget,A)&&(this.isProjectionDirty=!1),A||(A=At()),On(A,this.relativeTarget)),N&&(this.animationValues=v,vD(v,g,this.latestValues,D,C,w)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=D},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(d){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(Ta(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=gt.update(()=>{Tc.hasAnimatedSinceResize=!0,this.currentAnimation=dD(0,Iy,{...d,onUpdate:m=>{this.mixTargetDelta(m),d.onUpdate&&d.onUpdate(m)},onComplete:()=>{d.onComplete&&d.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const d=this.getStack();d&&d.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(Iy),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const d=this.getLead();let{targetWithTransforms:m,target:h,layout:g,latestValues:v}=d;if(!(!m||!h||!g)){if(this!==d&&this.layout&&g&&gx(this.options.animationType,this.layout.layoutBox,g.layoutBox)){h=this.target||At();const _=Sn(this.layout.layoutBox.x);h.x.min=d.target.x.min,h.x.max=h.x.min+_;const b=Sn(this.layout.layoutBox.y);h.y.min=d.target.y.min,h.y.max=h.y.min+b}On(m,h),to(m,v),_r(this.projectionDeltaWithTransform,this.layoutCorrected,m,v)}}registerSharedNode(d,m){this.sharedNodes.has(d)||this.sharedNodes.set(d,new kD),this.sharedNodes.get(d).add(m);const g=m.options.initialPromotionConfig;m.promote({transition:g?g.transition:void 0,preserveFollowOpacity:g&&g.shouldPreserveFollowOpacity?g.shouldPreserveFollowOpacity(m):void 0})}isLead(){const d=this.getStack();return d?d.lead===this:!0}getLead(){var d;const{layoutId:m}=this.options;return m?((d=this.getStack())===null||d===void 0?void 0:d.lead)||this:this}getPrevLead(){var d;const{layoutId:m}=this.options;return m?(d=this.getStack())===null||d===void 0?void 0:d.prevLead:void 0}getStack(){const{layoutId:d}=this.options;if(d)return this.root.sharedNodes.get(d)}promote({needsReset:d,transition:m,preserveFollowOpacity:h}={}){const g=this.getStack();g&&g.promote(this,h),d&&(this.projectionDelta=void 0,this.needsReset=!0),m&&this.setOptions({transition:m})}relegate(){const d=this.getStack();return d?d.relegate(this):!1}resetSkewAndRotation(){const{visualElement:d}=this.options;if(!d)return;let m=!1;const{latestValues:h}=d;if((h.z||h.rotate||h.rotateX||h.rotateY||h.rotateZ||h.skewX||h.skewY)&&(m=!0),!m)return;const g={};h.z&&If("z",d,g,this.animationValues);for(let v=0;v<Mf.length;v++)If(`rotate${Mf[v]}`,d,g,this.animationValues),If(`skew${Mf[v]}`,d,g,this.animationValues);d.render();for(const v in g)d.setStaticValue(v,g[v]),this.animationValues&&(this.animationValues[v]=g[v]);d.scheduleRender()}getProjectionStyles(d){var m,h;if(!this.instance||this.isSVG)return;if(!this.isVisible)return ND;const g={visibility:""},v=this.getTransformTemplate();if(this.needsReset)return this.needsReset=!1,g.opacity="",g.pointerEvents=xc(d==null?void 0:d.pointerEvents)||"",g.transform=v?v(this.latestValues,""):"none",g;const _=this.getLead();if(!this.projectionDelta||!this.layout||!_.target){const N={};return this.options.layoutId&&(N.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,N.pointerEvents=xc(d==null?void 0:d.pointerEvents)||""),this.hasProjected&&!Wa(this.latestValues)&&(N.transform=v?v({},""):"none",this.hasProjected=!1),N}const b=_.animationValues||_.latestValues;this.applyTransformsToTarget(),g.transform=wD(this.projectionDeltaWithTransform,this.treeScale,b),v&&(g.transform=v(b,g.transform));const{x:S,y:T}=this.projectionDelta;g.transformOrigin=`${S.origin*100}% ${T.origin*100}% 0`,_.animationValues?g.opacity=_===this?(h=(m=b.opacity)!==null&&m!==void 0?m:this.latestValues.opacity)!==null&&h!==void 0?h:1:this.preserveOpacity?this.latestValues.opacity:b.opacityExit:g.opacity=_===this?b.opacity!==void 0?b.opacity:"":b.opacityExit!==void 0?b.opacityExit:0;for(const N in Ec){if(b[N]===void 0)continue;const{correct:j,applyTo:w}=Ec[N],C=g.transform==="none"?b[N]:j(b[N],_);if(w){const A=w.length;for(let M=0;M<A;M++)g[w[M]]=C}else g[N]=C}return this.options.layoutId&&(g.pointerEvents=_===this?xc(d==null?void 0:d.pointerEvents)||"":"none"),g}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(d=>{var m;return(m=d.currentAnimation)===null||m===void 0?void 0:m.stop()}),this.root.nodes.forEach(Oy),this.root.sharedNodes.clear()}}}function CD(t){t.updateLayout()}function ED(t){var s;const i=((s=t.resumeFrom)===null||s===void 0?void 0:s.snapshot)||t.snapshot;if(t.isLead()&&t.layout&&i&&t.hasListeners("didUpdate")){const{layoutBox:o,measuredBox:c}=t.layout,{animationType:u}=t.options,d=i.source!==t.layout.source;u==="size"?Un(_=>{const b=d?i.measuredBox[_]:i.layoutBox[_],S=Sn(b);b.min=o[_].min,b.max=b.min+S}):gx(u,i.layoutBox,o)&&Un(_=>{const b=d?i.measuredBox[_]:i.layoutBox[_],S=Sn(o[_]);b.max=b.min+S,t.relativeTarget&&!t.currentAnimation&&(t.isProjectionDirty=!0,t.relativeTarget[_].max=t.relativeTarget[_].min+S)});const m=Qi();_r(m,o,i.layoutBox);const h=Qi();d?_r(h,t.applyTransform(c,!0),i.measuredBox):_r(h,o,i.layoutBox);const g=!fx(m);let v=!1;if(!t.resumeFrom){const _=t.getClosestProjectingParent();if(_&&!_.resumeFrom){const{snapshot:b,layout:S}=_;if(b&&S){const T=At();xr(T,i.layoutBox,b.layoutBox);const N=At();xr(N,o,S.layoutBox),px(T,N)||(v=!0),_.options.layoutRoot&&(t.relativeTarget=N,t.relativeTargetOrigin=T,t.relativeParent=_)}}}t.notifyListeners("didUpdate",{layout:o,snapshot:i,delta:h,layoutDelta:m,hasLayoutChanged:g,hasRelativeTargetChanged:v})}else if(t.isLead()){const{onExitComplete:o}=t.options;o&&o()}t.options.transition=void 0}function AD(t){mr&&Xa.totalNodes++,t.parent&&(t.isProjecting()||(t.isProjectionDirty=t.parent.isProjectionDirty),t.isSharedProjectionDirty||(t.isSharedProjectionDirty=!!(t.isProjectionDirty||t.parent.isProjectionDirty||t.parent.isSharedProjectionDirty)),t.isTransformDirty||(t.isTransformDirty=t.parent.isTransformDirty))}function DD(t){t.isProjectionDirty=t.isSharedProjectionDirty=t.isTransformDirty=!1}function RD(t){t.clearSnapshot()}function Oy(t){t.clearMeasurements()}function MD(t){t.isLayoutDirty=!1}function ID(t){const{visualElement:s}=t.options;s&&s.getProps().onBeforeLayoutMeasure&&s.notify("BeforeLayoutMeasure"),t.resetTransform()}function By(t){t.finishAnimation(),t.targetDelta=t.relativeTarget=t.target=void 0,t.isProjectionDirty=!0}function OD(t){t.resolveTargetDelta()}function BD(t){t.calcProjection()}function LD(t){t.resetSkewAndRotation()}function UD(t){t.removeLeadSnapshot()}function Ly(t,s,i){t.translate=xt(s.translate,0,i),t.scale=xt(s.scale,1,i),t.origin=s.origin,t.originPoint=s.originPoint}function Uy(t,s,i,o){t.min=xt(s.min,i.min,o),t.max=xt(s.max,i.max,o)}function zD(t,s,i,o){Uy(t.x,s.x,i.x,o),Uy(t.y,s.y,i.y,o)}function PD(t){return t.animationValues&&t.animationValues.opacityExit!==void 0}const VD={duration:.45,ease:[.4,0,.1,1]},zy=t=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(t),Py=zy("applewebkit/")&&!zy("chrome/")?Math.round:xn;function Vy(t){t.min=Py(t.min),t.max=Py(t.max)}function HD(t){Vy(t.x),Vy(t.y)}function gx(t,s,i){return t==="position"||t==="preserve-aspect"&&!qA(Ry(s),Ry(i),.2)}function $D(t){var s;return t!==t.root&&((s=t.scroll)===null||s===void 0?void 0:s.wasRoot)}const GD=hx({attachResizeListener:(t,s)=>Dr(t,"resize",s),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),Of={current:void 0},vx=hx({measureScroll:t=>({x:t.scrollLeft,y:t.scrollTop}),defaultParent:()=>{if(!Of.current){const t=new GD({});t.mount(window),t.setOptions({layoutScroll:!0}),Of.current=t}return Of.current},resetTransform:(t,s)=>{t.style.transform=s!==void 0?s:"none"},checkIsScrollRoot:t=>window.getComputedStyle(t).position==="fixed"}),qD={pan:{Feature:rD},drag:{Feature:oD,ProjectionNode:vx,MeasureLayout:cx}};function FD(t,s,i){var o;if(t instanceof Element)return[t];if(typeof t=="string"){let c=document;const u=(o=void 0)!==null&&o!==void 0?o:c.querySelectorAll(t);return u?Array.from(u):[]}return Array.from(t)}function yx(t,s){const i=FD(t),o=new AbortController,c={passive:!0,...s,signal:o.signal};return[i,c,()=>o.abort()]}function Hy(t){return s=>{s.pointerType==="touch"||Q_()||t(s)}}function ZD(t,s,i={}){const[o,c,u]=yx(t,i),d=Hy(m=>{const{target:h}=m,g=s(m);if(typeof g!="function"||!h)return;const v=Hy(_=>{g(_),h.removeEventListener("pointerleave",v)});h.addEventListener("pointerleave",v,c)});return o.forEach(m=>{m.addEventListener("pointerenter",d,c)}),u}function $y(t,s,i){const{props:o}=t;t.animationState&&o.whileHover&&t.animationState.setActive("whileHover",i==="Start");const c="onHover"+i,u=o[c];u&&gt.postRender(()=>u(s,Lr(s)))}class KD extends Na{mount(){const{current:s}=this.node;s&&(this.unmount=ZD(s,i=>($y(this.node,i,"Start"),o=>$y(this.node,o,"End"))))}unmount(){}}class YD extends Na{constructor(){super(...arguments),this.isActive=!1}onFocus(){let s=!1;try{s=this.node.current.matches(":focus-visible")}catch{s=!0}!s||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=Br(Dr(this.node.current,"focus",()=>this.onFocus()),Dr(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const bx=(t,s)=>s?t===s?!0:bx(t,s.parentElement):!1,JD=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function WD(t){return JD.has(t.tagName)||t.tabIndex!==-1}const hr=new WeakSet;function Gy(t){return s=>{s.key==="Enter"&&t(s)}}function Bf(t,s){t.dispatchEvent(new PointerEvent("pointer"+s,{isPrimary:!0,bubbles:!0}))}const XD=(t,s)=>{const i=t.currentTarget;if(!i)return;const o=Gy(()=>{if(hr.has(i))return;Bf(i,"down");const c=Gy(()=>{Bf(i,"up")}),u=()=>Bf(i,"cancel");i.addEventListener("keyup",c,s),i.addEventListener("blur",u,s)});i.addEventListener("keydown",o,s),i.addEventListener("blur",()=>i.removeEventListener("keydown",o),s)};function qy(t){return fm(t)&&!Q_()}function QD(t,s,i={}){const[o,c,u]=yx(t,i),d=m=>{const h=m.currentTarget;if(!qy(m)||hr.has(h))return;hr.add(h);const g=s(m),v=(S,T)=>{window.removeEventListener("pointerup",_),window.removeEventListener("pointercancel",b),!(!qy(S)||!hr.has(h))&&(hr.delete(h),typeof g=="function"&&g(S,{success:T}))},_=S=>{v(S,i.useGlobalTarget||bx(h,S.target))},b=S=>{v(S,!1)};window.addEventListener("pointerup",_,c),window.addEventListener("pointercancel",b,c)};return o.forEach(m=>{!WD(m)&&m.getAttribute("tabindex")===null&&(m.tabIndex=0),(i.useGlobalTarget?window:m).addEventListener("pointerdown",d,c),m.addEventListener("focus",g=>XD(g,c),c)}),u}function Fy(t,s,i){const{props:o}=t;t.animationState&&o.whileTap&&t.animationState.setActive("whileTap",i==="Start");const c="onTap"+(i==="End"?"":i),u=o[c];u&&gt.postRender(()=>u(s,Lr(s)))}class eR extends Na{mount(){const{current:s}=this.node;s&&(this.unmount=QD(s,i=>(Fy(this.node,i,"Start"),(o,{success:c})=>Fy(this.node,o,c?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const gp=new WeakMap,Lf=new WeakMap,tR=t=>{const s=gp.get(t.target);s&&s(t)},nR=t=>{t.forEach(tR)};function sR({root:t,...s}){const i=t||document;Lf.has(i)||Lf.set(i,{});const o=Lf.get(i),c=JSON.stringify(s);return o[c]||(o[c]=new IntersectionObserver(nR,{root:t,...s})),o[c]}function aR(t,s,i){const o=sR(s);return gp.set(t,i),o.observe(t),()=>{gp.delete(t),o.unobserve(t)}}const iR={some:0,all:1};class oR extends Na{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:s={}}=this.node.getProps(),{root:i,margin:o,amount:c="some",once:u}=s,d={root:i?i.current:void 0,rootMargin:o,threshold:typeof c=="number"?c:iR[c]},m=h=>{const{isIntersecting:g}=h;if(this.isInView===g||(this.isInView=g,u&&!g&&this.hasEnteredView))return;g&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",g);const{onViewportEnter:v,onViewportLeave:_}=this.node.getProps(),b=g?v:_;b&&b(h)};return aR(this.node.current,d,m)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:s,prevProps:i}=this.node;["amount","margin","root"].some(rR(s,i))&&this.startObserver()}unmount(){}}function rR({viewport:t={}},{viewport:s={}}={}){return i=>t[i]!==s[i]}const lR={inView:{Feature:oR},tap:{Feature:eR},focus:{Feature:YD},hover:{Feature:KD}},cR={layout:{ProjectionNode:vx,MeasureLayout:cx}},Oc={current:null},pm={current:!1};function _x(){if(pm.current=!0,!!Bp)if(window.matchMedia){const t=window.matchMedia("(prefers-reduced-motion)"),s=()=>Oc.current=t.matches;t.addListener(s),s()}else Oc.current=!1}const uR=[...V_,Wt,ka],dR=t=>uR.find(P_(t)),Zy=new WeakMap;function fR(t,s,i){for(const o in s){const c=s[o],u=i[o];if(Xt(c))t.addValue(o,c);else if(Xt(u))t.addValue(o,Er(c,{owner:t}));else if(u!==c)if(t.hasValue(o)){const d=t.getValue(o);d.liveStyle===!0?d.jump(c):d.hasAnimated||d.set(c)}else{const d=t.getStaticValue(o);t.addValue(o,Er(d!==void 0?d:c,{owner:t}))}}for(const o in i)s[o]===void 0&&t.removeValue(o);return s}const Ky=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class pR{scrapeMotionValuesFromProps(s,i,o){return{}}constructor({parent:s,props:i,presenceContext:o,reducedMotionConfig:c,blockInitialAnimation:u,visualState:d},m={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=lm,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const S=us.now();this.renderScheduledAt<S&&(this.renderScheduledAt=S,gt.render(this.render,!1,!0))};const{latestValues:h,renderState:g,onUpdate:v}=d;this.onUpdate=v,this.latestValues=h,this.baseTarget={...h},this.initialValues=i.initial?{...h}:{},this.renderState=g,this.parent=s,this.props=i,this.presenceContext=o,this.depth=s?s.depth+1:0,this.reducedMotionConfig=c,this.options=m,this.blockInitialAnimation=!!u,this.isControllingVariants=Jc(i),this.isVariantNode=Qb(i),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(s&&s.current);const{willChange:_,...b}=this.scrapeMotionValuesFromProps(i,{},this);for(const S in b){const T=b[S];h[S]!==void 0&&Xt(T)&&T.set(h[S],!1)}}mount(s){this.current=s,Zy.set(s,this),this.projection&&!this.projection.instance&&this.projection.mount(s),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((i,o)=>this.bindToMotionValue(o,i)),pm.current||_x(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:Oc.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){Zy.delete(this.current),this.projection&&this.projection.unmount(),Ta(this.notifyUpdate),Ta(this.render),this.valueSubscriptions.forEach(s=>s()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const s in this.events)this.events[s].clear();for(const s in this.features){const i=this.features[s];i&&(i.unmount(),i.isMounted=!1)}this.current=null}bindToMotionValue(s,i){this.valueSubscriptions.has(s)&&this.valueSubscriptions.get(s)();const o=ci.has(s),c=i.on("change",m=>{this.latestValues[s]=m,this.props.onUpdate&&gt.preRender(this.notifyUpdate),o&&this.projection&&(this.projection.isTransformDirty=!0)}),u=i.on("renderRequest",this.scheduleRender);let d;window.MotionCheckAppearSync&&(d=window.MotionCheckAppearSync(this,s,i)),this.valueSubscriptions.set(s,()=>{c(),u(),d&&d(),i.owner&&i.stop()})}sortNodePosition(s){return!this.current||!this.sortInstanceNodePosition||this.type!==s.type?0:this.sortInstanceNodePosition(this.current,s.current)}updateFeatures(){let s="animation";for(s in oo){const i=oo[s];if(!i)continue;const{isEnabled:o,Feature:c}=i;if(!this.features[s]&&c&&o(this.props)&&(this.features[s]=new c(this)),this.features[s]){const u=this.features[s];u.isMounted?u.update():(u.mount(),u.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):At()}getStaticValue(s){return this.latestValues[s]}setStaticValue(s,i){this.latestValues[s]=i}update(s,i){(s.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=s,this.prevPresenceContext=this.presenceContext,this.presenceContext=i;for(let o=0;o<Ky.length;o++){const c=Ky[o];this.propEventSubscriptions[c]&&(this.propEventSubscriptions[c](),delete this.propEventSubscriptions[c]);const u="on"+c,d=s[u];d&&(this.propEventSubscriptions[c]=this.on(c,d))}this.prevMotionValues=fR(this,this.scrapeMotionValuesFromProps(s,this.prevProps,this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue(),this.onUpdate&&this.onUpdate(this)}getProps(){return this.props}getVariant(s){return this.props.variants?this.props.variants[s]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(s){const i=this.getClosestVariantNode();if(i)return i.variantChildren&&i.variantChildren.add(s),()=>i.variantChildren.delete(s)}addValue(s,i){const o=this.values.get(s);i!==o&&(o&&this.removeValue(s),this.bindToMotionValue(s,i),this.values.set(s,i),this.latestValues[s]=i.get())}removeValue(s){this.values.delete(s);const i=this.valueSubscriptions.get(s);i&&(i(),this.valueSubscriptions.delete(s)),delete this.latestValues[s],this.removeValueFromRenderState(s,this.renderState)}hasValue(s){return this.values.has(s)}getValue(s,i){if(this.props.values&&this.props.values[s])return this.props.values[s];let o=this.values.get(s);return o===void 0&&i!==void 0&&(o=Er(i===null?void 0:i,{owner:this}),this.addValue(s,o)),o}readValue(s,i){var o;let c=this.latestValues[s]!==void 0||!this.current?this.latestValues[s]:(o=this.getBaseTargetFromProps(this.props,s))!==null&&o!==void 0?o:this.readValueFromInstance(this.current,s,this.options);return c!=null&&(typeof c=="string"&&(U_(c)||E_(c))?c=parseFloat(c):!dR(c)&&ka.test(i)&&(c=O_(s,i)),this.setBaseTarget(s,Xt(c)?c.get():c)),Xt(c)?c.get():c}setBaseTarget(s,i){this.baseTarget[s]=i}getBaseTarget(s){var i;const{initial:o}=this.props;let c;if(typeof o=="string"||typeof o=="object"){const d=Hp(this.props,o,(i=this.presenceContext)===null||i===void 0?void 0:i.custom);d&&(c=d[s])}if(o&&c!==void 0)return c;const u=this.getBaseTargetFromProps(this.props,s);return u!==void 0&&!Xt(u)?u:this.initialValues[s]!==void 0&&c===void 0?void 0:this.baseTarget[s]}on(s,i){return this.events[s]||(this.events[s]=new Qp),this.events[s].add(i)}notify(s,...i){this.events[s]&&this.events[s].notify(...i)}}class xx extends pR{constructor(){super(...arguments),this.KeyframeResolver=H_}sortInstanceNodePosition(s,i){return s.compareDocumentPosition(i)&2?1:-1}getBaseTargetFromProps(s,i){return s.style?s.style[i]:void 0}removeValueFromRenderState(s,{vars:i,style:o}){delete i[s],delete o[s]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:s}=this.props;Xt(s)&&(this.childSubscription=s.on("change",i=>{this.current&&(this.current.textContent=`${i}`)}))}}function mR(t){return window.getComputedStyle(t)}class hR extends xx{constructor(){super(...arguments),this.type="html",this.renderInstance=l_}readValueFromInstance(s,i){if(ci.has(i)){const o=rm(i);return o&&o.default||0}else{const o=mR(s),c=(i_(i)?o.getPropertyValue(i):o[i])||0;return typeof c=="string"?c.trim():c}}measureInstanceViewportBox(s,{transformPagePoint:i}){return rx(s,i)}build(s,i,o){qp(s,i,o.transformTemplate)}scrapeMotionValuesFromProps(s,i,o){return Yp(s,i,o)}}class gR extends xx{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=At}getBaseTargetFromProps(s,i){return s[i]}readValueFromInstance(s,i){if(ci.has(i)){const o=rm(i);return o&&o.default||0}return i=c_.has(i)?i:zp(i),s.getAttribute(i)}scrapeMotionValuesFromProps(s,i,o){return f_(s,i,o)}build(s,i,o){Fp(s,i,this.isSVGTag,o.transformTemplate)}renderInstance(s,i,o,c){u_(s,i,o,c)}mount(s){this.isSVGTag=Kp(s.tagName),super.mount(s)}}const vR=(t,s)=>Vp(t)?new gR(s):new hR(s,{allowProjection:t!==y.Fragment}),yR=GC({...OA,...lR,...qD,...cR},vR),Dt=iC(yR);function bR(){!pm.current&&_x();const[t]=y.useState(Oc.current);return t}const _R="_overlay_cmicx_1",xR="_dialog_cmicx_11",SR="_title_cmicx_30",TR="_description_cmicx_38",kR="_actions_cmicx_45",wR="_cancelButton_cmicx_52",NR="_confirmButton_cmicx_79",Ka={overlay:_R,dialog:xR,title:SR,description:TR,actions:kR,cancelButton:wR,confirmButton:NR};function ii({isOpen:t,title:s,description:i,confirmLabel:o="Delete",onConfirm:c,onCancel:u}){const d=y.useId(),m=y.useId();return l.jsx(ds,{children:t&&l.jsx(Dt.div,{className:Ka.overlay,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},onClick:u,onKeyDown:h=>{h.key==="Escape"&&u()},role:"dialog","aria-modal":"true","aria-labelledby":d,"aria-describedby":i?m:void 0,children:l.jsxs(Dt.div,{className:Ka.dialog,initial:{opacity:0,scale:.93,y:-10},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.93,y:-10},transition:{duration:.15,ease:[.16,1,.3,1]},onClick:h=>h.stopPropagation(),children:[l.jsx("h3",{id:d,className:Ka.title,children:s}),i&&l.jsx("p",{id:m,className:Ka.description,children:i}),l.jsxs("div",{className:Ka.actions,children:[l.jsx("button",{type:"button",className:Ka.cancelButton,onClick:u,autoFocus:!0,children:"Cancel"}),l.jsx("button",{type:"button",className:Ka.confirmButton,onClick:c,children:o})]})]})})})}const jR="_spinner_1uyt1_1",CR="_spin_1uyt1_1",ER="_sm_1uyt1_14",AR="_md_1uyt1_20",DR="_lg_1uyt1_26",RR="_xl_1uyt1_32",Yy={spinner:jR,spin:CR,sm:ER,md:AR,lg:DR,xl:RR};function Sx({size:t="md",className:s,label:i="Loading",liveRegion:o=!1}){return l.jsx("span",{className:`${Yy.spinner} ${Yy[t]} ${s??""}`,role:o?"status":void 0,"aria-label":i,"aria-hidden":o?void 0:!0})}const MR="_splash_1bn1g_1",IR="_logo_1bn1g_11",Jy={splash:MR,logo:IR};function Tx(){return l.jsxs("div",{className:Jy.splash,"data-testid":"splash-screen",children:[l.jsx("img",{src:"/grackle-logo.png",alt:"Grackle",className:Jy.logo}),l.jsx(Sx,{size:"xl",label:"Loading Grackle",liveRegion:!0})]})}const kx=50;function OR(t,s,i,o,c=kx){return o?t<c:s-t-i<c}function BR(t,s){const i=s-t;return i>0?i:0}function LR({scrollRef:t,contentLength:s,isReversed:i}){const[o,c]=y.useState(!0),u=y.useRef(0),d=y.useRef(!1),m=y.useRef(0);y.useEffect(()=>{const g=t.current;if(!g)return;let v=!0;const _=()=>{m.current||(m.current=requestAnimationFrame(()=>{m.current=0;const b=OR(g.scrollTop,g.scrollHeight,g.clientHeight,i,kx);b!==v&&(v=b,c(b))}))};return g.addEventListener("scroll",_,{passive:!0}),()=>{g.removeEventListener("scroll",_),m.current&&(cancelAnimationFrame(m.current),m.current=0)}},[t,i]),y.useLayoutEffect(()=>{const g=t.current;!g||d.current||(d.current=!0,i?g.scrollTop=0:g.scrollTop=g.scrollHeight,c(!0))},[t,i]),y.useLayoutEffect(()=>{const g=t.current;if(g){if(i&&!o){const v=BR(u.current,g.scrollHeight);v>0&&(g.scrollTop+=v)}o&&(i?g.scrollTo({top:0,behavior:"smooth"}):g.scrollTo({top:g.scrollHeight,behavior:"smooth"})),u.current=g.scrollHeight}},[s,o,i,t]);const h=y.useCallback(()=>{const g=t.current;if(!g)return;const v=i?0:g.scrollHeight;g.scrollTo({top:v,behavior:"smooth"}),c(!0)},[t,i]);return{isAtAnchor:o,scrollToAnchor:h}}const UR="_wrapper_1rtuy_1",zR="_scrollContainer_1rtuy_9",PR="_toolbar_1rtuy_15",VR="_directionToggle_1rtuy_22",HR="_scrollToAnchor_1rtuy_60",$R="_scrollToAnchorBottom_1rtuy_84",GR="_scrollToAnchorTop_1rtuy_88",qR="_eventOverflowWarning_1rtuy_92",xa={wrapper:UR,scrollContainer:zR,toolbar:PR,directionToggle:VR,scrollToAnchor:HR,scrollToAnchorBottom:$R,scrollToAnchorTop:GR,eventOverflowWarning:qR},wx="grackle-stream-direction";function FR(){try{return localStorage.getItem(wx)==="reversed"}catch{return!1}}function ZR({eventsDropped:t}){return t<=0?l.jsx(l.Fragment,{}):l.jsxs("div",{className:xa.eventOverflowWarning,role:"alert",children:["⚠"," ",t.toLocaleString()," older event",t===1?"":"s"," were dropped — only the most recent 5,000 are shown. Full history is available in the session log."]})}function mm({events:t,eventsDropped:s,emptyState:i}){const o=y.useRef(null),[c,u]=y.useState(FR),d=bR(),m=y.useMemo(()=>c?[...t].reverse():t,[t,c]),{isAtAnchor:h,scrollToAnchor:g}=LR({scrollRef:o,contentLength:t.length,isReversed:c}),v=()=>{const S=!c;u(S);try{localStorage.setItem(wx,S?"reversed":"default")}catch{}},_=d?0:.2,b=c?-8:8;return l.jsxs("div",{className:xa.wrapper,children:[l.jsx("div",{className:xa.toolbar,children:l.jsx("button",{className:xa.directionToggle,onClick:v,title:c?"Showing newest first":"Showing oldest first","aria-label":c?"Switch to newest at bottom":"Switch to newest at top","data-testid":"direction-toggle",children:c?"↓":"↑"})}),l.jsxs("div",{ref:o,className:xa.scrollContainer,"data-testid":"event-stream-scroll",children:[t.length===0&&i,l.jsx(ZR,{eventsDropped:s}),l.jsx(ds,{initial:!1,children:m.map((S,T)=>{const N=c?t.length-1-T:T;return l.jsx(Dt.div,{initial:{opacity:0,y:b},animate:{opacity:1,y:0},transition:{duration:_,ease:"easeOut"},children:l.jsx(Zj,{event:S,toolUseCtx:S.toolUseCtx})},`${S.sessionId}-${S.timestamp}-${N}`)})})]}),l.jsx(ds,{children:!h&&l.jsxs(Dt.button,{className:`${xa.scrollToAnchor} ${c?xa.scrollToAnchorTop:xa.scrollToAnchorBottom}`,onClick:g,initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{duration:.15},"aria-label":"Scroll to latest","data-testid":"scroll-to-anchor",children:[c?"↑":"↓"," New events"]})})]})}function hm(t){const{value:s,onSave:i,validate:o,fieldId:c,activeFieldId:u,onActivate:d,enterToSave:m=!0,trimOnSave:h=!0}=t,[g,v]=y.useState(""),[_,b]=y.useState(""),S=y.useRef(!1),T=u===c,N=y.useCallback($=>{v($),b("")},[]),j=y.useCallback(()=>{b("")},[]),w=y.useCallback(()=>{S.current=!1,d==null||d(null),v(""),b("")},[d]),C=y.useCallback(()=>{const $=h?g.trim():g;if(o){const K=o(g);if(K){b(K);return}}const z=h?s.trim():s;if($===z){w();return}i($),w()},[g,s,h,o,i,w]),A=y.useCallback(()=>{S.current=!0,d==null||d(c),v(s),b("")},[c,s,d]),M=y.useCallback($=>{if(S.current){S.current=!1;return}$.relatedTarget instanceof HTMLElement&&$.relatedTarget.dataset.editAction===c||C()},[c,C]),D=y.useCallback($=>{$.key==="Escape"?w():$.key==="Enter"&&m&&C()},[w,m,C]),E=(()=>{if(!T)return!1;const $=h?s.trim():s;return(h?g.trim():g)!==$})();return y.useEffect(()=>{!T&&(g!==""||_!=="")&&(v(""),b(""))},[T,g,_]),{isEditing:T,draft:g,error:_,isDirty:E,startEdit:A,cancelEdit:w,save:C,setDraft:N,clearError:j,handleBlur:M,handleKeyDown:D,ignoreInitialBlurRef:S}}const KR="_editFieldWrapper_yuzty_1",YR="_editInput_yuzty_10",JR="_editTextarea_yuzty_42",WR="_editSelect_yuzty_78",XR="_editError_yuzty_111",QR="_editInputInvalid_yuzty_118",eM="_editHint_yuzty_123",tM="_unsavedDot_yuzty_132",nM="_metaValueClickable_yuzty_140",sM="_editButton_yuzty_159",aM="_metaPlaceholder_yuzty_175",iM="_worktreeToggle_yuzty_180",Je={editFieldWrapper:KR,editInput:YR,editTextarea:JR,editSelect:WR,editError:XR,editInputInvalid:QR,editHint:eM,unsavedDot:tM,metaValueClickable:nM,editButton:sM,metaPlaceholder:aM,worktreeToggle:iM};function Kt(t){const{value:s,onSave:i,validate:o,mode:c="edit",fieldId:u="text",activeFieldId:d,onActivate:m,onChange:h,renderDisplay:g,placeholder:v,maxLength:_,ariaLabel:b,"data-testid":S}=t,T=y.useRef(null),N=hm({value:s,onSave:i,validate:o,fieldId:u,activeFieldId:d,onActivate:m,enterToSave:!0,trimOnSave:!0});if(y.useEffect(()=>{if(N.isEditing){const w=window.setTimeout(()=>{var C;(C=T.current)==null||C.focus()},0);return()=>window.clearTimeout(w)}},[N.isEditing]),c==="create"){const w=A=>{h==null||h(A.target.value)},C=o==null?void 0:o(s);return l.jsxs("div",{className:Je.editFieldWrapper,children:[l.jsx("input",{className:`${Je.editInput} ${C?Je.editInputInvalid:""}`,value:s,onChange:w,maxLength:_,placeholder:v,"aria-label":b,"data-testid":S?`${S}-input`:void 0}),C&&l.jsx("span",{className:Je.editError,"data-testid":"edit-error",children:C})]})}if(N.isEditing)return l.jsxs("div",{className:Je.editFieldWrapper,children:[l.jsx("input",{ref:T,className:`${Je.editInput} ${N.error?Je.editInputInvalid:""}`,value:N.draft,onChange:w=>N.setDraft(w.target.value),onBlur:N.handleBlur,onKeyDown:N.handleKeyDown,maxLength:_,placeholder:v,"aria-label":b,"data-testid":S?`${S}-input`:void 0}),N.isDirty&&l.jsx("span",{className:Je.unsavedDot,title:"Unsaved changes"}),N.error&&l.jsx("span",{className:Je.editError,"data-testid":"edit-error",children:N.error}),l.jsx("span",{className:Je.editHint,children:"Enter to save · Esc to cancel"})]});const j=g==null?void 0:g(s);return l.jsxs("span",{role:"button",tabIndex:0,className:Je.metaValueClickable,onClick:()=>N.startEdit(),onKeyDown:w=>{(w.key==="Enter"||w.key===" ")&&(w.preventDefault(),N.startEdit())},title:"Click to edit","aria-label":b,"data-testid":S?`${S}-button`:void 0,children:[j!==void 0?j:s?l.jsx("span",{children:s}):l.jsx("span",{className:Je.metaPlaceholder,children:v||"None"}),l.jsx("span",{className:Je.editButton,"aria-hidden":"true",children:"✏️"})]})}function vp(t){const{value:s,onSave:i,validate:o,mode:c="edit",fieldId:u="textarea",activeFieldId:d,onActivate:m,onChange:h,renderDisplay:g,placeholder:v,ariaLabel:_,"data-testid":b}=t,S=y.useRef(null),T=hm({value:s,onSave:i,validate:o,fieldId:u,activeFieldId:d,onActivate:m,enterToSave:!1,trimOnSave:!1});if(y.useEffect(()=>{if(T.isEditing){const j=window.setTimeout(()=>{var w;(w=S.current)==null||w.focus()},0);return()=>window.clearTimeout(j)}},[T.isEditing]),c==="create"){const j=C=>{h==null||h(C.target.value)},w=o==null?void 0:o(s);return l.jsxs("div",{className:Je.editFieldWrapper,children:[l.jsx("textarea",{className:`${Je.editTextarea} ${w?Je.editInputInvalid:""}`,value:s,onChange:j,placeholder:v,"aria-label":_,"data-testid":b?`${b}-input`:void 0}),w&&l.jsx("span",{className:Je.editError,"data-testid":"edit-error",children:w})]})}if(T.isEditing)return l.jsxs("div",{className:Je.editFieldWrapper,children:[l.jsx("textarea",{ref:S,className:`${Je.editTextarea} ${T.error?Je.editInputInvalid:""}`,value:T.draft,onChange:j=>T.setDraft(j.target.value),onBlur:T.handleBlur,onKeyDown:T.handleKeyDown,title:_,"aria-label":_,"data-testid":b?`${b}-input`:void 0}),T.isDirty&&l.jsx("span",{className:Je.unsavedDot,title:"Unsaved changes"}),T.error&&l.jsx("span",{className:Je.editError,"data-testid":"edit-error",children:T.error}),l.jsx("span",{className:Je.editHint,children:"Tab to save · Esc to cancel"})]});const N=g==null?void 0:g(s);return l.jsxs("span",{role:"button",tabIndex:0,className:Je.metaValueClickable,onClick:()=>T.startEdit(),onKeyDown:j=>{(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),T.startEdit())},title:"Click to edit","aria-label":_,"data-testid":b?`${b}-button`:void 0,children:[N!==void 0?N:s?l.jsx("span",{children:s}):l.jsx("span",{className:Je.metaPlaceholder,children:v||"None"}),l.jsx("span",{className:Je.editButton,"aria-hidden":"true",children:"✏️"})]})}function Bc(t){var A;const{value:s,onSave:i,mode:o="edit",options:c,fieldId:u="select",activeFieldId:d,onActivate:m,onChange:h,renderDisplay:g,placeholder:v,ariaLabel:_,"data-testid":b}=t,S=y.useRef(null),T=hm({value:s,onSave:i,fieldId:u,activeFieldId:d,onActivate:m,enterToSave:!1,trimOnSave:!1});y.useEffect(()=>{if(T.isEditing){const M=window.setTimeout(()=>{var D;(D=S.current)==null||D.focus()},0);return()=>window.clearTimeout(M)}},[T.isEditing]);const N=y.useCallback(M=>{const D=M.target.value;T.ignoreInitialBlurRef.current=!1,D!==s&&i(D),T.cancelEdit()},[s,i,T]),j=y.useCallback(M=>{if(T.ignoreInitialBlurRef.current){T.ignoreInitialBlurRef.current=!1;return}M.relatedTarget instanceof HTMLElement&&M.relatedTarget.dataset.editAction===u||T.cancelEdit()},[u,T]);if(o==="create")return l.jsx("select",{className:Je.editSelect,value:s,onChange:M=>h==null?void 0:h(M.target.value),"aria-label":_,"data-testid":b?`${b}-select`:void 0,children:c.map(M=>l.jsx("option",{value:M.value,children:M.label},M.value))});if(T.isEditing)return l.jsx("select",{ref:S,className:Je.editSelect,value:T.draft,onChange:N,onBlur:j,title:_,"aria-label":_,"data-testid":b?`${b}-select`:void 0,children:c.map(M=>l.jsx("option",{value:M.value,children:M.label},M.value))});const w=g==null?void 0:g(s),C=(A=c.find(M=>M.value===s))==null?void 0:A.label;return l.jsxs("button",{type:"button",className:Je.metaValueClickable,onClick:()=>T.startEdit(),title:"Click to change","aria-label":_,"data-testid":b?`${b}-button`:void 0,children:[w!==void 0?w:C?l.jsx("span",{children:C}):l.jsx("span",{className:Je.metaPlaceholder,children:v||"None"}),l.jsx("span",{className:Je.editButton,"aria-hidden":"true",children:"✏️"})]})}function oM(t){const{checked:s,onChange:i,label:o,ariaLabel:c,"data-testid":u}=t;return l.jsxs("label",{className:Je.worktreeToggle,"data-testid":u,children:[l.jsx("input",{type:"checkbox",checked:s,onChange:d=>i(d.target.checked),"aria-label":c}),l.jsx("span",{children:o})]})}const rM="_envRow_1e1r5_1",lM="_envDot_1e1r5_7",cM="_envDotGreen_1e1r5_14",uM="_envDotYellow_1e1r5_18",dM="_envDotRed_1e1r5_22",fM="_envDotGray_1e1r5_26",no={envRow:rM,envDot:lM,envDotGreen:cM,envDotYellow:uM,envDotRed:dM,envDotGray:fM};function pM(t){const s=t.toLowerCase();return s==="ready"||s==="running"||s==="available"||s==="connected"?no.envDotGreen:s==="provisioning"||s==="starting"||s==="pending"||s==="connecting"?no.envDotYellow:s==="error"||s==="failed"||s==="disconnected"?no.envDotRed:no.envDotGray}function mM(t){const{value:s,onSave:i,environments:o,allowNone:c=!1,fieldId:u="environment",activeFieldId:d,onActivate:m,placeholder:h="No environment",ariaLabel:g="Environment","data-testid":v}=t,_=o.find(T=>T.id===s),b=[...c?[{value:"",label:"None"}]:[],...o.map(T=>({value:T.id,label:T.displayName}))],S=()=>{if(_)return l.jsxs("span",{className:no.envRow,children:[l.jsx("span",{className:`${no.envDot} ${pM(_.status)}`}),_.displayName]})};return l.jsx(Bc,{value:s,onSave:i,options:b,fieldId:u,activeFieldId:d,onActivate:m,renderDisplay:S,placeholder:h,ariaLabel:g,"data-testid":v})}const hM="_nav_1snmp_1",gM="_searchForm_1snmp_8",vM="_searchInput_1snmp_15",yM="_searchButton_1snmp_33",bM="_clearButton_1snmp_68",_M="_workspaceSelect_1snmp_85",xM="_listHeader_1snmp_99",SM="_nodeList_1snmp_108",TM="_nodeItem_1snmp_116",kM="_indicator_1snmp_129",wM="_label_1snmp_136",NM="_badge_1snmp_145",Bn={nav:hM,searchForm:gM,searchInput:vM,searchButton:yM,clearButton:bM,workspaceSelect:_M,listHeader:xM,nodeList:SM,nodeItem:TM,indicator:kM,label:wM,badge:NM};function jM({nodes:t,workspaces:s,loading:i,searchQuery:o,onSearch:c,onClearSearch:u,onSelectNode:d,onWorkspaceChange:m}){const[h,g]=y.useState(""),v=y.useCallback(T=>{T.preventDefault(),h.trim()&&c(h.trim())},[h,c]),_=y.useCallback(()=>{g(""),u()},[u]),b=y.useCallback(T=>{d(T)},[d]),S=y.useCallback(T=>{g(""),m(T)},[m]);return l.jsxs("div",{className:Bn.nav,"data-testid":"knowledge-nav",children:[l.jsxs("form",{className:Bn.searchForm,onSubmit:v,children:[l.jsx("input",{className:Bn.searchInput,type:"text",placeholder:"Search...",value:h,onChange:T=>{g(T.target.value)},"data-testid":"knowledge-search-input"}),l.jsx("button",{type:"submit",className:Bn.searchButton,disabled:i,children:"Go"})]}),o&&l.jsx("button",{type:"button",className:Bn.clearButton,onClick:_,children:"Clear search"}),l.jsxs("select",{className:Bn.workspaceSelect,onChange:T=>{S(T.target.value)},"data-testid":"knowledge-workspace-filter",children:[l.jsx("option",{value:"",children:"All workspaces"}),s.map(T=>l.jsx("option",{value:T.id,children:T.name},T.id))]}),l.jsxs("div",{className:Bn.listHeader,children:["Nodes (",t.length,")"]}),l.jsx("ul",{className:Bn.nodeList,children:t.map(T=>l.jsxs("li",{className:Bn.nodeItem,onClick:()=>{b(T.id)},onKeyDown:N=>{(N.key==="Enter"||N.key===" ")&&(N.preventDefault(),b(T.id))},role:"button",tabIndex:0,children:[l.jsx("span",{className:Bn.indicator,style:{backgroundColor:T.kind==="reference"?"#4A9EFF":T.category==="decision"?"#22C55E":T.category==="concept"?"#A855F7":T.category==="snippet"?"#6B7280":"#EAB308"}}),l.jsx("span",{className:Bn.label,children:T.label}),l.jsx("span",{className:Bn.badge,children:T.kind==="reference"?T.sourceType:T.category})]},T.id))})]})}const CM="_container_1mq5u_1",EM="_hamburger_1mq5u_33",AM="_brand_1mq5u_49",DM="_brandLogo_1mq5u_68",RM="_info_1mq5u_75",MM="_connectionLabel_1mq5u_90",IM="_connectionDot_1mq5u_103",OM="_connected_1mq5u_106",BM="_disconnected_1mq5u_110",Ms={container:CM,hamburger:EM,brand:AM,brandLogo:DM,info:RM,connectionLabel:MM,connectionDot:IM,connected:OM,disconnected:BM};function LM({connected:t,environments:s,sessions:i,onToggleSidebar:o,sidebarOpen:c}){const u=vt(),d=s.length,m=s.filter(g=>g.status==="connected").length,h=i.filter(g=>["running","idle"].includes(g.status)).length;return l.jsxs("div",{className:Ms.container,children:[o&&l.jsx("button",{type:"button",className:Ms.hamburger,onClick:o,"aria-label":"Toggle sidebar","aria-expanded":c,children:"☰"}),l.jsxs("button",{type:"button",className:Ms.brand,onClick:()=>u(ai),title:"Home",children:[l.jsx("img",{src:"/icon-192x192.png",alt:"",className:Ms.brandLogo,"aria-hidden":"true","data-testid":"statusbar-logo"}),"Grackle"]}),l.jsxs("div",{className:Ms.info,children:[l.jsxs("span",{"aria-label":t?"Connected":"Disconnected",children:[l.jsx("span",{className:`${Ms.connectionDot} ${t?Ms.connected:Ms.disconnected}`,"aria-hidden":"true",children:"●"})," ",l.jsx("span",{className:Ms.connectionLabel,"aria-hidden":"true",children:t?"Connected":"Disconnected"})]}),l.jsxs("span",{children:[m,"/",d," env",d!==1?"s":""]}),l.jsxs("span",{children:[h," active"]})]})]})}const UM="_nav_13gkc_1",zM="_tab_13gkc_35",PM="_tabIcon_13gkc_68",VM="_tabLabel_13gkc_79",HM="_tabActive_13gkc_84",ur={nav:UM,tab:zM,tabIcon:PM,tabLabel:VM,tabActive:HM},Ya=[{view:"dashboard",label:"Dashboard",icon:"🏠",route:ai,testId:"sidebar-tab-dashboard"},{view:"chat",label:"Chat",icon:"💬",route:o2,testId:"sidebar-tab-chat"},{view:"tasks",label:"Tasks",icon:"📋",route:r2,testId:"sidebar-tab-tasks"},{view:"environments",label:"Environments",icon:"🖥️",route:ao,testId:"sidebar-tab-environments"},{view:"knowledge",label:"Knowledge",icon:"🧠",route:Gb,testId:"sidebar-tab-knowledge"},{view:"findings",label:"Findings",icon:"🔍",route:Fc,testId:"sidebar-tab-findings"},{view:"settings",label:"Settings",icon:"⚙️",route:n2,testId:"sidebar-tab-settings"}];function $M(t){return t===ai||t==="/"?"dashboard":t.startsWith("/chat")||t.startsWith("/sessions")?"chat":t.startsWith("/workspaces")||t.startsWith("/environments")?"environments":t.startsWith(Gb)?"knowledge":t.startsWith(Fc)?"findings":t.startsWith(so)?"settings":"tasks"}function GM(){const t=Ut(),s=vt(),i=y.useRef(null),o=$M(t.pathname),c=y.useCallback(d=>{s(d.route)},[s]),u=y.useCallback(d=>{var _,b;const m=(_=i.current)==null?void 0:_.querySelectorAll('[role="tab"]');if(!m)return;const h=Array.from(m).findIndex(S=>S===document.activeElement),g=h>=0?h:Ya.findIndex(S=>S.view===o);let v=g;if(d.key==="ArrowRight"||d.key==="j"||d.key==="J")d.preventDefault(),v=(g+1)%Ya.length;else if(d.key==="ArrowLeft"||d.key==="k"||d.key==="K")d.preventDefault(),v=(g-1+Ya.length)%Ya.length;else if(d.key==="Home")d.preventDefault(),v=0;else if(d.key==="End")d.preventDefault(),v=Ya.length-1;else return;s(Ya[v].route),(b=m[v])==null||b.focus()},[o,s]);return l.jsx("nav",{className:ur.nav,ref:i,role:"tablist","aria-orientation":"horizontal","aria-label":"App navigation",onKeyDown:u,"data-testid":"sidebar-nav",children:Ya.map(d=>{const m=d.view===o;return l.jsxs("button",{role:"tab",type:"button","aria-selected":m,tabIndex:m?0:-1,className:`${ur.tab} ${m?ur.tabActive:""}`,onClick:()=>c(d),"data-testid":d.testId,title:d.label,"aria-label":d.label,children:[l.jsx("span",{className:ur.tabIcon,"aria-hidden":"true",children:d.icon}),l.jsx("span",{className:ur.tabLabel,children:d.label})]},d.view)})})}const qM="_container_pi6ii_1",FM="_content_pi6ii_66",Wy={container:qM,content:FM},ZM=320,Nx=220,jx=600,Cx="grackle-sidebar-width";function KM(){try{const t=localStorage.getItem(Cx);if(t!==null){const s=Number(t);if(Number.isFinite(s)&&s>=Nx&&s<=jx)return s}}catch{}return ZM}function YM(t){try{localStorage.setItem(Cx,String(t))}catch{}}function JM({content:t}){const[s]=y.useState(KM),i=y.useRef(null);if(y.useEffect(()=>{const o=i.current;if(!o)return;const c=new ResizeObserver(u=>{for(const d of u){const m=d.borderBoxSize[0];if(m){const h=Math.round(m.inlineSize);h>=Nx&&h<=jx&&YM(h)}}});return c.observe(o),()=>{c.disconnect()}},[]),t!==void 0)return l.jsx("div",{className:Wy.container,ref:i,"data-testid":"sidebar",style:{width:s},children:l.jsx("div",{className:Wy.content,children:t})})}const WM="_bar_tnfsh_1",XM="_btnPrimary_tnfsh_32",QM="_statusText_tnfsh_85",e3="_statusCompleted_tnfsh_90",t3="_statusFailed_tnfsh_94",n3="_statusBlocked_tnfsh_98",s3="_hintText_tnfsh_103",_t={bar:WM,btnPrimary:XM,statusText:QM,statusCompleted:e3,statusFailed:t3,statusBlocked:n3,hintText:s3};function a3({sessions:t,tasks:s,environments:i}){const o=vt(),c=Ut(),u=kt("/sessions/:sessionId"),d=kt("/tasks/:taskId"),m=kt("/tasks/:taskId/stream"),h=kt("/tasks/:taskId/findings"),g=kt("/tasks/:taskId/edit"),v=kt("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId"),_=kt("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/stream"),b=kt("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/findings"),S=kt("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/edit"),T=kt("/sessions/new"),N=kt("/environments/:environmentId/workspaces/:workspaceId"),j=kt("/tasks/new"),w=kt("/chat"),C=kt("/"),A=kt("/settings/*"),M=u==null?void 0:u.params.sessionId,D=(d==null?void 0:d.params.taskId)??(m==null?void 0:m.params.taskId)??(h==null?void 0:h.params.taskId)??(v==null?void 0:v.params.taskId)??(_==null?void 0:_.params.taskId)??(b==null?void 0:b.params.taskId)??(S==null?void 0:S.params.taskId),E=v??_??b??S,$=(E==null?void 0:E.params.environmentId)??(N==null?void 0:N.params.environmentId),z=c.pathname.startsWith("/environments")&&!N&&!E,K=!!w,F=!!T,ee=!!N&&!v&&!_&&!b&&!S,ae=!!j;if(!!C&&!F&&!ee&&!ae||!!A||(!!g||!!S)||ae||z||F)return l.jsx(l.Fragment,{});if(K)return i.find(q=>q.adapterType==="local"&&q.status==="connected")?l.jsx(l.Fragment,{}):l.jsx("div",{className:_t.bar,children:l.jsx("span",{className:_t.hintText,children:"Add a local environment to start chatting"})});if(ee)return l.jsx("div",{className:_t.bar,children:l.jsx("span",{className:_t.hintText,children:"Select a task or click + to create one"})});if(D){const O=s.find(re=>re.id===D);if(!O)return l.jsx("div",{className:_t.bar,children:l.jsx("span",{className:_t.hintText,children:"Loading..."})});const q=new Map(s.map(re=>[re.id,re])),te=O.dependsOn.some(re=>{const ue=q.get(re);return ue!==void 0&&ue.status!=="complete"});if(O.status==="not_started"){const re=te?O.dependsOn.map(ue=>q.get(ue)).filter(ue=>ue&&ue.status!=="complete").map(ue=>ue.title):[];return l.jsx("div",{className:_t.bar,children:te?l.jsxs("span",{className:_t.statusBlocked,children:["Blocked by: ",re.join(", ")]}):l.jsx("span",{className:_t.hintText,children:"Use the buttons above to start or manage this task"})})}if(O.status==="working"||O.status==="paused"){const re=O.latestSessionId||void 0,ue=re?t.find(Ne=>Ne.id===re):void 0;return ue&&ue.status!=="stopped"?l.jsx(l.Fragment,{}):l.jsx("div",{className:_t.bar,children:l.jsx("span",{className:_t.hintText,children:"Waiting for agent..."})})}if(O.status==="complete")return l.jsxs("div",{className:_t.bar,children:[l.jsx("span",{className:`${_t.statusText} ${_t.statusCompleted}`,children:"Task completed"}),l.jsx("button",{onClick:()=>o(ri(O.workspaceId,void 0,$)),className:_t.btnPrimary,children:"+ New Task"})]});if(O.status==="failed")return l.jsx("div",{className:_t.bar,children:l.jsx("span",{className:`${_t.statusText} ${_t.statusFailed}`,children:"Task failed"})})}if(M){const O=t.find(re=>re.id===M),q=(O==null?void 0:O.status)==="stopped";if(O!==void 0&&!q)return l.jsx(l.Fragment,{});if(q)return l.jsxs("div",{className:_t.bar,children:[l.jsxs("span",{className:`${_t.statusText} ${_t.hintText}`,children:["Session ",O.endReason||O.status]}),l.jsx("button",{onClick:()=>o(Vb(O.environmentId)),className:_t.btnPrimary,children:"+ New Chat"})]})}return l.jsx("div",{className:_t.bar,children:l.jsx("span",{className:_t.hintText,children:"Loading..."})})}const i3="_nav_14i94_1",o3="_tab_14i94_24",r3="_tabActive_14i94_62",l3="_tabLabel_14i94_75",c3="_statusDot_14i94_81",u3="_pulse_14i94_87",d3="_addButton_14i94_99",f3="_empty_14i94_132",ha={nav:i3,tab:o3,tabActive:r3,tabLabel:l3,statusDot:c3,pulse:u3,addButton:d3,empty:f3},p3={connected:"var(--accent-green)",sleeping:"var(--accent-yellow)",error:"var(--accent-red)",disconnected:"var(--text-tertiary)",connecting:"var(--accent-blue)"};function m3({environments:t}){const s=vt(),i=y.useRef(null),o=kt("/environments/:environmentId"),c=kt("/environments/:environmentId/edit"),u=kt("/environments/:environmentId/workspaces/:workspaceId"),d=kt("/environments/:environmentId/workspaces/:workspaceId/*"),m=(o==null?void 0:o.params.environmentId)??(c==null?void 0:c.params.environmentId)??(u==null?void 0:u.params.environmentId)??(d==null?void 0:d.params.environmentId),h=m==="new"?void 0:m,g=y.useCallback(b=>{s(si(b))},[s]),v=y.useCallback(b=>{var w;const S=(w=i.current)==null?void 0:w.querySelectorAll('[role="tab"]');if(!S||S.length===0)return;const T=Array.from(S).findIndex(C=>C===document.activeElement),N=T>=0?T:t.findIndex(C=>C.id===h);let j=N;if(b.key==="ArrowDown"||b.key==="j"||b.key==="J")b.preventDefault(),j=(N+1)%S.length;else if(b.key==="ArrowUp"||b.key==="k"||b.key==="K")b.preventDefault(),j=(N-1+S.length)%S.length;else if(b.key==="Home")b.preventDefault(),j=0;else if(b.key==="End")b.preventDefault(),j=S.length-1;else return;j<t.length&&s(si(t[j].id)),S[j].focus()},[h,t,s]),_=h??(t.length>0?t[0].id:void 0);return l.jsxs("div",{className:ha.nav,"data-testid":"environment-nav",children:[l.jsx("nav",{ref:i,role:"tablist","aria-orientation":"vertical","aria-label":"Environments",onKeyDown:v,children:t.map(b=>{const S=b.id===h,T=b.id===_,N=p3[b.status]||"var(--text-tertiary)",j=b.status==="connected";return l.jsxs("button",{role:"tab",type:"button","aria-selected":S,tabIndex:T?0:-1,className:`${ha.tab} ${S?ha.tabActive:""}`,onClick:()=>g(b.id),"data-testid":"env-nav-item",children:[l.jsx("span",{className:`${ha.statusDot} ${j?ha.pulse:""}`,style:{color:N},children:"●"}),l.jsx("span",{className:ha.tabLabel,title:b.displayName||b.id,children:b.displayName||b.id})]},b.id)})}),l.jsx("button",{type:"button",className:ha.addButton,onClick:()=>s(e2),title:"Add environment","data-testid":"env-nav-add",children:"+ Add Environment"}),t.length===0&&l.jsx("div",{className:ha.empty,children:"No environments yet."})]})}function gm(t){const s=new Date(t),i=new Date,o=i.getTime()-s.getTime(),c=Math.floor(o/1e3),u=Math.floor(c/60),d=Math.floor(u/60),m=Math.floor(d/24);if(c<60)return"just now";if(u<60)return`${u}m ago`;if(d<24)return`${d}h ago`;if(m===1)return"yesterday";if(m<7)return`${m} days ago`;const h=s.getFullYear()===i.getFullYear(),g=s.toLocaleString("en-US",{month:"short"}),v=s.getDate();return h?`${g} ${v}`:`${g} ${v} ${s.getFullYear()}`}const Xy={architecture:{text:"var(--accent-blue)",bg:"var(--accent-blue-dim)"},api:{text:"var(--accent-green)",bg:"var(--accent-green-dim)"},bug:{text:"var(--accent-red)",bg:"var(--accent-red-dim)"},decision:{text:"var(--accent-yellow)",bg:"var(--accent-yellow-dim)"},dependency:{text:"var(--accent-purple)",bg:"var(--accent-purple-dim)"},pattern:{text:"var(--accent-cyan)",bg:"var(--accent-cyan-dim)"},general:{text:"var(--text-secondary)",bg:"var(--bg-elevated)"}};function Lc(t){return Xy[t]||Xy.general}const h3="_nav_dlm8m_1",g3="_categoryPills_dlm8m_24",v3="_categoryPill_dlm8m_24",y3="_tab_dlm8m_42",b3="_tabActive_dlm8m_80",_3="_tabContent_dlm8m_93",x3="_tabLabel_dlm8m_100",S3="_tabMeta_dlm8m_106",T3="_categoryDot_dlm8m_111",k3="_empty_dlm8m_118",os={nav:h3,categoryPills:g3,categoryPill:v3,tab:y3,tabActive:b3,tabContent:_3,tabLabel:x3,tabMeta:S3,categoryDot:T3,empty:k3};function w3({findings:t,workspaceId:s,environmentId:i}){const o=vt(),c=y.useRef(null),u=kt("/findings/:findingId"),d=kt("/environments/:environmentId/workspaces/:workspaceId/findings/:findingId"),m=(u==null?void 0:u.params.findingId)??(d==null?void 0:d.params.findingId),h=y.useMemo(()=>{const b=new Set(t.map(S=>S.category).filter(Boolean));return Array.from(b).sort()},[t]),g=y.useCallback(b=>{o(Qf(b,s,i))},[o,s,i]),v=y.useCallback(b=>{var w;const S=(w=c.current)==null?void 0:w.querySelectorAll('[role="tab"]');if(!S||S.length===0)return;const T=Array.from(S).findIndex(C=>C===document.activeElement),N=T>=0?T:t.findIndex(C=>C.id===m);let j=N;if(b.key==="ArrowDown"||b.key==="j"||b.key==="J")b.preventDefault(),j=(N+1)%S.length;else if(b.key==="ArrowUp"||b.key==="k"||b.key==="K")b.preventDefault(),j=(N-1+S.length)%S.length;else if(b.key==="Home")b.preventDefault(),j=0;else if(b.key==="End")b.preventDefault(),j=S.length-1;else return;j<t.length&&o(Qf(t[j].id,s,i)),S[j].focus()},[m,t,o,s,i]),_=m??(t.length>0?t[0].id:void 0);return l.jsxs("div",{className:os.nav,"data-testid":"findings-nav",children:[h.length>1&&l.jsx("div",{className:os.categoryPills,"data-testid":"findings-nav-categories",children:h.map(b=>l.jsx("span",{className:os.categoryPill,style:{color:Lc(b).text},children:b},b))}),l.jsx("nav",{ref:c,role:"tablist","aria-orientation":"vertical","aria-label":"Findings",onKeyDown:v,children:t.map(b=>{const S=b.id===m,T=b.id===_;return l.jsxs("button",{role:"tab",type:"button","aria-selected":S,tabIndex:T?0:-1,className:`${os.tab} ${S?os.tabActive:""}`,onClick:()=>g(b.id),"data-testid":"finding-nav-item",children:[l.jsx("span",{className:os.categoryDot,style:{color:Lc(b.category).text},children:"●"}),l.jsxs("span",{className:os.tabContent,children:[l.jsx("span",{className:os.tabLabel,title:b.title,children:b.title}),l.jsx("span",{className:os.tabMeta,title:b.createdAt,children:gm(b.createdAt)})]})]},b.id)})}),t.length===0&&l.jsx("div",{className:os.empty,children:"No findings yet. Agents will post discoveries here."})]})}function N3(t){if(t.length===0)return[];const s=[...t].sort((o,c)=>o[0]-c[0]),i=[[s[0][0],s[0][1]]];for(let o=1;o<s.length;o++){const c=i[i.length-1],[u,d]=s[o];u<=c[1]+1?c[1]=Math.max(c[1],d):i.push([u,d])}return i}function Ex({text:t,indices:s,highlightClass:i}){if(!s||s.length===0)return l.jsx(l.Fragment,{children:t});const o=N3(s),c=[];let u=0;for(const[d,m]of o)d>u&&c.push(l.jsx("span",{children:t.slice(u,d)},`p${u}`)),c.push(l.jsx("mark",{className:i,children:t.slice(d,m+1)},`m${d}`)),u=m+1;return u<t.length&&c.push(l.jsx("span",{children:t.slice(u)},`p${u}`)),l.jsx(l.Fragment,{children:c})}function j3(t){const s=new Map(t.map(o=>[o.id,{...o,children:[]}])),i=[];for(const o of s.values())o.parentTaskId&&s.has(o.parentTaskId)?s.get(o.parentTaskId).children.push(o):i.push(o);for(const o of s.values())o.children.sort((c,u)=>c.sortOrder-u.sortOrder);return i.sort((o,c)=>o.sortOrder-c.sortOrder)}function C3(t,s){const i=new Map;for(const u of t){const m=u.dependsOn.length>0&&u.dependsOn.some(g=>s.get(g)!=="complete")?"blocked":u.status,h=i.get(m);h?h.push(u):i.set(m,[u])}const o=[],c=new Set;for(const u of ak){c.add(u);const d=i.get(u);if(d&&d.length>0){d.sort((h,g)=>h.sortOrder-g.sortOrder);const m=Sa(u);o.push({status:u,label:m.label,style:m,tasks:d})}}for(const[u,d]of i)if(!c.has(u)&&d.length>0){d.sort((h,g)=>h.sortOrder-g.sortOrder);const m=Sa(u);o.push({status:u,label:m.label,style:m,tasks:d})}return o}const E3="_container_z4i38_1",A3="_header_z4i38_5",D3="_headerActions_z4i38_17",R3="_searchInput_z4i38_23",M3="_searchHighlight_z4i38_56",I3="_groupToggle_z4i38_62",O3="_groupToggleActive_z4i38_89",B3="_addButton_z4i38_93",L3="_taskRow_z4i38_120",U3="_selected_z4i38_140",z3="_expandArrow_z4i38_150",P3="_expanded_z4i38_157",V3="_leafSpacer_z4i38_161",H3="_taskStatusIcon_z4i38_166",$3="_taskTitle_z4i38_170",G3="_workspaceBadge_z4i38_177",q3="_childCountBadge_z4i38_195",F3="_dependencyBadge_z4i38_208",Z3="_blockedBadge_z4i38_220",K3="_addChildButton_z4i38_225",Y3="_emptyState_z4i38_268",J3="_statusGroupHeader_z4i38_275",W3="_statusGroupIcon_z4i38_294",X3="_statusGroupLabel_z4i38_298",Q3="_statusGroupCount_z4i38_303",He={container:E3,header:A3,headerActions:D3,searchInput:R3,searchHighlight:M3,groupToggle:I3,groupToggleActive:O3,addButton:B3,taskRow:L3,selected:U3,expandArrow:z3,expanded:P3,leafSpacer:V3,taskStatusIcon:H3,taskTitle:$3,workspaceBadge:G3,childCountBadge:q3,dependencyBadge:F3,blockedBadge:Z3,addChildButton:K3,emptyState:Y3,statusGroupHeader:J3,statusGroupIcon:W3,statusGroupLabel:X3,statusGroupCount:Q3},e6=[{name:"title",weight:2},{name:"description",weight:1}],Ax=16,t6=16,Dx="grackle-task-group-by-status";function Qy(){try{return localStorage.getItem(Dx)==="true"}catch{return!1}}function n6(t){try{localStorage.setItem(Dx,String(t))}catch{}}function s6({group:t,isExpanded:s,onToggle:i,selectedTaskId:o,navigate:c,titleHighlights:u,workspaceNames:d}){return l.jsxs("div",{"data-testid":`status-group-${t.status}`,children:[l.jsxs("div",{className:He.statusGroupHeader,role:"button",tabIndex:0,"aria-expanded":s,onClick:i,onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),i())},children:[l.jsx("span",{className:`${He.expandArrow} ${s?He.expanded:""}`,children:"▸"}),l.jsx("span",{className:He.statusGroupIcon,style:{color:t.style.color},children:t.style.icon}),l.jsx("span",{className:He.statusGroupLabel,children:t.label}),l.jsx("span",{className:He.statusGroupCount,children:t.tasks.length})]}),l.jsx(ds,{children:s&&l.jsx(Dt.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2},style:{overflow:"hidden"},children:t.tasks.map(m=>{const h=Sa(m.status),g=o===m.id,v=m.parentTaskId||!m.workspaceId?void 0:d.get(m.workspaceId);return l.jsxs("div",{onClick:()=>c(Xn(m.id)),className:`${He.taskRow} ${g?He.selected:""}`,style:{"--task-indent":`${Ax}px`},"data-task-id":m.id,children:[l.jsx("span",{className:He.leafSpacer}),l.jsx("span",{className:He.taskStatusIcon,style:{color:h.color},children:h.icon}),l.jsx("span",{className:He.taskTitle,title:m.title,children:l.jsx(Ex,{text:m.title,indices:u.get(m.id),highlightClass:He.searchHighlight})}),v&&l.jsx("span",{className:He.workspaceBadge,title:v,children:v})]},m.id)})})})]})}function Rx({node:t,depth:s,expandedTasks:i,toggleTask:o,selectedTaskId:c,navigate:u,taskStatusById:d,titleHighlights:m,workspaceNames:h}){const g=Sa(t.status),v=t.dependsOn.length>0&&t.dependsOn.some(w=>d.get(w)!=="complete"),_=i.has(t.id),b=t.children.length>0,S=c===t.id,T=Ax+s*t6,j=s===0&&!t.parentTaskId&&t.workspaceId?h.get(t.workspaceId):void 0;return l.jsxs(l.Fragment,{children:[l.jsxs("div",{onClick:()=>u(Xn(t.id)),className:`${He.taskRow} ${S?He.selected:""}`,style:{"--task-indent":`${T}px`},"data-task-id":t.id,children:[b&&l.jsx("span",{className:`${He.expandArrow} ${_?He.expanded:""}`,role:"button",tabIndex:0,"aria-label":_?"Collapse task":"Expand task",onClick:w=>{w.stopPropagation(),o(t.id)},onKeyDown:w=>{(w.key==="Enter"||w.key===" ")&&(w.preventDefault(),w.stopPropagation(),o(t.id))},children:"▸"}),!b&&l.jsx("span",{className:He.leafSpacer}),l.jsx("span",{className:He.taskStatusIcon,style:{color:g.color},children:g.icon}),l.jsx("span",{className:He.taskTitle,title:t.title,children:l.jsx(Ex,{text:t.title,indices:m.get(t.id),highlightClass:He.searchHighlight})}),j&&l.jsx("span",{className:He.workspaceBadge,title:j,children:j}),b&&l.jsxs("span",{className:He.childCountBadge,children:[t.children.filter(w=>w.status==="complete").length,"/",t.children.length]}),t.dependsOn.length>0&&l.jsx("span",{className:`${He.dependencyBadge} ${v?He.blockedBadge:""}`,title:`Depends on: ${t.dependsOn.join(", ")}`,children:v?"blocked":"dep"}),s<_T&&l.jsx("button",{onClick:w=>{w.stopPropagation(),u(ri(t.workspaceId,t.id))},title:"Add child task","aria-label":"Add child task",className:He.addChildButton,children:"+"})]}),l.jsx(ds,{children:b&&_&&l.jsx(Dt.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.15},style:{overflow:"hidden"},children:t.children.map(w=>l.jsx(Rx,{node:w,depth:s+1,expandedTasks:i,toggleTask:o,selectedTaskId:c,navigate:u,taskStatusById:d,titleHighlights:m,workspaceNames:h},w.id))})})]})}function a6({workspaces:t,tasks:s}){const i=vt(),[o,c]=y.useState(new Set),[u,d]=y.useState(new Set),[m,h]=y.useState(Qy),[g,v]=y.useState(Qy),[_,b]=y.useState(new Map),S=kt("/tasks/:taskId/*"),T=(S==null?void 0:S.params.taskId)!=="new"?S==null?void 0:S.params.taskId:void 0,N=y.useMemo(()=>new Map(s.map(ie=>[ie.id,ie.status])),[s]),j=y.useMemo(()=>new Map(t.map(ie=>[ie.id,ie.name])),[t]),w=()=>{const ie=!m;n6(ie),h(ie),ie&&(v(!0),b(new Map))},C=ie=>{b(X=>{const O=new Map(X),q=O.has(ie)?O.get(ie):g;return O.set(ie,!q),O})},A=ie=>_.has(ie)?_.get(ie):g,M=ie=>{c(X=>{const O=new Set(X);return O.has(ie)?(O.delete(ie),d(q=>new Set(q).add(ie))):(O.add(ie),d(q=>{const te=new Set(q);return te.delete(ie),te})),O})};y.useEffect(()=>{const ie=new Set(s.filter(X=>X.parentTaskId).map(X=>X.parentTaskId));ie.size>0&&c(X=>{const O=new Set(X);for(const q of ie)u.has(q)||O.add(q);return O})},[s,u]);const[D,E]=y.useState(""),{directMatchTaskIds:$,treeMatchTaskIds:z,titleHighlights:K}=y.useMemo(()=>{if(!D.trim())return{directMatchTaskIds:null,treeMatchTaskIds:null,titleHighlights:new Map};const ie=bT(s,D,e6),X=new Set(ie.map(re=>re.item.id)),O=new Map;for(const re of ie){const ue=re.matches.find(Fe=>Fe.key==="title");ue&&O.set(re.item.id,ue.indices)}const q=new Set(X),te=new Map(s.map(re=>[re.id,re]));for(const re of[...X]){let ue=te.get(re);for(;ue!=null&&ue.parentTaskId;)q.add(ue.parentTaskId),ue=te.get(ue.parentTaskId)}return{directMatchTaskIds:X,treeMatchTaskIds:q,titleHighlights:O}},[D,s]),F=$!==null,ee=F?m?$:z:null,ae=ee?s.filter(ie=>ee.has(ie.id)):s,me=m?[]:j3(ae);return l.jsxs("div",{className:He.container,children:[l.jsxs("div",{className:He.header,children:[l.jsx("span",{children:"Tasks"}),l.jsxs("div",{className:He.headerActions,children:[l.jsx("button",{className:`${He.groupToggle} ${m?He.groupToggleActive:""}`,onClick:w,"aria-label":m?"Switch to tree view":"Group tasks by status","aria-pressed":m,title:m?"Switch to tree view":"Group tasks by status","data-testid":"task-group-by-status-toggle",children:"≡"}),l.jsx("button",{className:He.addButton,onClick:()=>i(ri()),"aria-label":"New task",title:"New task","data-testid":"new-task-button",children:"+"})]})]}),s.length>0&&l.jsx("input",{type:"text",value:D,onChange:ie=>E(ie.target.value),placeholder:"Filter...","aria-label":"Filter tasks",className:He.searchInput,"data-testid":"sidebar-search"}),m?C3(ae,N).map(ie=>l.jsx(s6,{group:ie,isExpanded:A(ie.status),onToggle:()=>C(ie.status),selectedTaskId:T,navigate:i,titleHighlights:K,workspaceNames:j},ie.status)):me.map(ie=>l.jsx(Rx,{node:ie,depth:0,expandedTasks:o,toggleTask:M,selectedTaskId:T,navigate:i,taskStatusById:N,titleHighlights:K,workspaceNames:j},ie.id)),ae.length===0&&!F&&l.jsx("div",{className:He.emptyState,children:"No tasks yet. Click + to create one."}),ae.length===0&&F&&l.jsx("div",{className:He.emptyState,children:"No matching tasks"})]})}const i6="_toast_da8ll_1",o6="_success_da8ll_18",r6="_icon_da8ll_22",l6="_error_da8ll_25",c6="_warning_da8ll_32",u6="_info_da8ll_38",d6="_message_da8ll_53",f6="_close_da8ll_60",dr={toast:i6,success:o6,icon:r6,error:l6,warning:c6,info:u6,message:d6,close:f6},p6={success:"✓",error:"✕",warning:"⚠",info:"ℹ"};function m6({toast:t,onDismiss:s}){return y.useEffect(()=>{const i=setTimeout(()=>s(t.id),t.duration);return()=>clearTimeout(i)},[t.id,t.duration,s]),l.jsxs(Dt.div,{className:`${dr.toast} ${dr[t.variant]}`,role:"status",initial:{opacity:0,y:-16,scale:.94},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-8,scale:.94},transition:{duration:.2,ease:"easeOut"},layout:!0,children:[l.jsx("span",{className:dr.icon,"aria-hidden":"true",children:p6[t.variant]}),l.jsx("span",{className:dr.message,children:t.message}),l.jsx("button",{type:"button",className:dr.close,onClick:()=>s(t.id),"aria-label":"Dismiss notification",children:"×"})]})}const h6="_container_qqse2_1",g6={container:h6};function v6({toasts:t,onDismiss:s}){return l.jsx("div",{className:g6.container,"data-testid":"toast-container",children:l.jsx(ds,{children:t.map(i=>l.jsx(m6,{toast:i,onDismiss:s},i.id))})})}const y6="_callout_1jaue_1",b6="_success_1jaue_11",_6="_icon_1jaue_15",x6="_error_1jaue_18",S6="_warning_1jaue_25",T6="_info_1jaue_32",k6="_content_1jaue_48",w6="_close_1jaue_53",fr={callout:y6,success:b6,icon:_6,error:x6,warning:S6,info:T6,content:k6,close:w6},N6={success:"✓",error:"✕",warning:"⚠",info:"ℹ"};function j6({variant:t="info",children:s,dismissible:i=!1,className:o}){const[c,u]=y.useState(!1);return l.jsx(l.Fragment,{children:!c&&l.jsxs("div",{className:[fr.callout,fr[t],o].filter(Boolean).join(" "),role:t==="error"||t==="warning"?"alert":"status",children:[l.jsx("span",{className:fr.icon,"aria-hidden":"true",children:N6[t]}),l.jsx("span",{className:fr.content,children:s}),i&&l.jsx("button",{type:"button",className:fr.close,onClick:()=>u(!0),"aria-label":"Dismiss",children:"×"})]})})}function C6({currentVersion:t,latestVersion:s,updateAvailable:i,isDocker:o}){if(!i)return l.jsx(l.Fragment,{});const c=o?"docker pull ghcr.io/nick-pape/grackle:latest && docker restart grackle":`npm install -g @grackle-ai/cli@${s}`;return l.jsx("div",{"data-testid":"update-banner",children:l.jsxs(j6,{variant:"info",dismissible:!0,children:[l.jsxs("strong",{children:["Grackle v",s]})," is available (you have v",t,")."," ","Run: ",l.jsx("code",{children:c})]})})}const E6="_container_de44x_1",A6="_emptyState_de44x_8",D6="_card_de44x_14",R6="_cardClickable_de44x_34",M6="_cardHeader_de44x_42",I6="_categoryBadge_de44x_54",O6="_findingTitle_de44x_62",B6="_findingDate_de44x_68",L6="_findingContent_de44x_80",U6="_tags_de44x_86",z6="_tag_de44x_86",Kn={container:E6,emptyState:A6,card:D6,cardClickable:R6,cardHeader:M6,categoryBadge:I6,findingTitle:O6,findingDate:B6,findingContent:L6,tags:U6,tag:z6};function Mx({findings:t,onFindingClick:s}){return t.length===0?l.jsx("div",{className:Kn.emptyState,children:"No findings yet. Agents will post discoveries here."}):l.jsx("div",{className:Kn.container,children:t.map((i,o)=>{const c=Lc(i.category),u=s?Dt.button:Dt.div;return l.jsxs(u,{type:s?"button":void 0,className:`${Kn.card} ${s?Kn.cardClickable:""}`,initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{delay:o*.05,duration:.2},onClick:s?()=>{s(i.id)}:void 0,children:[l.jsxs("div",{className:Kn.cardHeader,children:[l.jsx("span",{className:Kn.categoryBadge,style:{background:c.bg,color:c.text},children:i.category}),l.jsx("span",{className:Kn.findingTitle,children:i.title}),l.jsx("span",{className:Kn.findingDate,title:i.createdAt,children:gm(i.createdAt)})]}),l.jsx("div",{className:Kn.findingContent,children:i.content.length>300?i.content.slice(0,300)+"...":i.content}),i.tags.length>0&&l.jsx("div",{className:Kn.tags,children:i.tags.map(d=>l.jsx("span",{className:Kn.tag,style:{color:c.text,textShadow:`0 0 8px ${c.text}`},children:d},d))})]},i.id)})})}const P6="_section_1ingb_14",V6="_sectionTitle_1ingb_26",H6="_sectionDescription_1ingb_35",$6="_tokenList_1ingb_48",G6="_tokenRow_1ingb_55",q6="_tokenBadge_1ingb_68",F6="_tokenName_1ingb_83",Z6="_tokenTarget_1ingb_90",K6="_deleteButton_1ingb_99",Y6="_addForm_1ingb_113",J6="_formRow_1ingb_119",W6="_input_1ingb_125",X6="_select_1ingb_155",Q6="_addButton_1ingb_187",eI="_emptyStateInfo_1ingb_221",tI="_themeOptions_1ingb_229",nI="_themeOption_1ingb_229",sI="_themeOptionSelected_1ingb_254",aI="_themeOptionHeader_1ingb_259",iI="_themeOptionLabel_1ingb_266",oI="_themeOptionDesc_1ingb_273",rI="_variantToggle_1ingb_279",lI="_variantButton_1ingb_286",cI="_variantActive_1ingb_305",uI="_themeSwatches_1ingb_311",dI="_themeSwatch_1ingb_311",fI="_systemToggle_1ingb_325",pI="_systemToggleHint_1ingb_341",mI="_themeActive_1ingb_348",hI="_aboutGrid_1ingb_354",gI="_aboutItem_1ingb_360",vI="_aboutLabel_1ingb_373",yI="_aboutValue_1ingb_379",bI="_aboutDot_1ingb_387",_I="_aboutDotConnected_1ingb_394",xI="_aboutDotDisconnected_1ingb_398",pe={section:P6,sectionTitle:V6,sectionDescription:H6,tokenList:$6,tokenRow:G6,tokenBadge:q6,tokenName:F6,tokenTarget:Z6,deleteButton:K6,addForm:Y6,formRow:J6,input:W6,select:X6,addButton:Q6,emptyStateInfo:eI,themeOptions:tI,themeOption:nI,themeOptionSelected:sI,themeOptionHeader:aI,themeOptionLabel:iI,themeOptionDesc:oI,variantToggle:rI,variantButton:lI,variantActive:cI,themeSwatches:uI,themeSwatch:dI,systemToggle:fI,systemToggleHint:pI,themeActive:mI,aboutGrid:hI,aboutItem:gI,aboutLabel:vI,aboutValue:yI,aboutDot:bI,aboutDotConnected:_I,aboutDotDisconnected:xI},SI=[{value:"env_var",label:"Environment Variable"},{value:"file",label:"File"}];function TI({tokens:t,onSetToken:s,onDeleteToken:i,onShowToast:o}){const[c,u]=y.useState(""),[d,m]=y.useState(""),[h,g]=y.useState("env_var"),[v,_]=y.useState(""),[b,S]=y.useState(null),T=w=>{if(w.preventDefault(),!c||!d)return;const C=h==="env_var"?v||c.toUpperCase()+"_TOKEN":"";s(c,d,h,C,h==="file"?v:""),o==null||o("Token saved successfully","success"),u(""),m(""),_("")},N=w=>{S(w)},j=()=>{b&&(i(b),o==null||o("Token deleted","info")),S(null)};return l.jsxs(l.Fragment,{children:[l.jsx(ii,{isOpen:b!==null,title:"Delete Token?",description:b?`"${b}" will be permanently removed.`:void 0,onConfirm:j,onCancel:()=>S(null)}),l.jsxs("section",{className:pe.section,children:[l.jsx("h3",{className:pe.sectionTitle,children:"Tokens"}),l.jsx("p",{className:pe.sectionDescription,children:"API tokens are auto-pushed to environments when set or updated. Values are write-only."}),t.length===0?l.jsx("div",{className:pe.emptyStateInfo,children:"Add your first API token to enable service integrations."}):l.jsx("div",{className:pe.tokenList,children:t.map(w=>l.jsxs("div",{className:pe.tokenRow,children:[l.jsx("span",{className:pe.tokenBadge,children:w.tokenType}),l.jsx("span",{className:pe.tokenName,children:w.name}),l.jsx("span",{className:pe.tokenTarget,children:w.tokenType==="env_var"?w.envVar:w.filePath}),l.jsx("button",{className:pe.deleteButton,onClick:()=>N(w.name),title:`Delete ${w.name}`,children:"×"})]},w.name))}),l.jsxs("form",{className:pe.addForm,onSubmit:T,children:[l.jsxs("div",{className:pe.formRow,children:[l.jsx("input",{className:pe.input,type:"text",placeholder:"Token name",value:c,onChange:w=>u(w.target.value)}),l.jsx("input",{className:pe.input,type:"password",placeholder:"Value",value:d,onChange:w=>m(w.target.value)})]}),l.jsxs("div",{className:pe.formRow,children:[l.jsx("select",{className:pe.select,value:h,onChange:w=>g(w.target.value),children:SI.map(w=>l.jsx("option",{value:w.value,children:w.label},w.value))}),l.jsx("input",{className:pe.input,type:"text",placeholder:h==="env_var"?"Env var name (e.g. API_TOKEN)":"File path (e.g. /home/user/.token)",value:v,onChange:w=>_(w.target.value)}),l.jsx("button",{className:pe.addButton,type:"submit",children:"Add Token"})]})]})]})]})}const Qc=[{id:"grackle",label:"Grackle",description:"The default Grackle theme — iridescent purple on clean dark.",swatches:["#0e1218","#8b5cf6","#60a5fa","#e5e7eb","#34d399"],variantLightId:"grackle-light",variantDarkId:"grackle-dark"},{id:"grackle-light",label:"Grackle Light",description:"Light Grackle variant.",hidden:!0},{id:"grackle-dark",label:"Grackle Dark",description:"Dark Grackle variant.",hidden:!0},{id:"glass",label:"Glassmorphism",description:"Dark frosted-glass aesthetic with backdrop blur effects.",swatches:["#0a0c14","#4ecca3","#70a1ff","#e2e8f0","#a855f7"]},{id:"matrix",label:"Matrix",description:"Phosphor-green CRT terminal with scanlines and glow.",swatches:["#050505","#00ff41","#00bfff","#33ff77","#ffb000"]},{id:"brutalist",label:"Neubrutalism",description:"Thick borders, raw colors, bold type — ugly on purpose.",swatches:["#f5f0e8","#ff5757","#5ce1e6","#1a1a1a","#ffde59"],variantLightId:"brutalist-light",variantDarkId:"brutalist-dark"},{id:"brutalist-light",label:"Neubrutalism Light",description:"Light neubrutalism variant.",hidden:!0},{id:"brutalist-dark",label:"Neubrutalism Dark",description:"Dark neubrutalism variant.",hidden:!0},{id:"monokai",label:"Monokai",description:"Classic warm editor palette — pink, green, and purple.",swatches:["#272822","#f92672","#a6e22e","#f8f8f2","#ae81ff"],variantLightId:"monokai-light",variantDarkId:"monokai-dark"},{id:"monokai-dark",label:"Monokai Dark",description:"Dark Monokai variant.",hidden:!0},{id:"monokai-light",label:"Monokai Light",description:"Light Monokai variant.",hidden:!0},{id:"ubuntu",label:"Ubuntu",description:"Aubergine terminal with the GNOME Tango palette.",swatches:["#300a24","#8ae234","#ef2929","#eeeeec","#fce94f"]},{id:"sandstone",label:"Sandstone",description:"Warm terracotta accent on dark brown, in the style of Claude Code.",swatches:["#1a1815","#C15F3C","#6b8afd","#e8e6e3","#a78bfa"]},{id:"verdigris",label:"Verdigris",description:"Teal accent on charcoal, in the style of ChatGPT.",swatches:["#141414","#00a67e","#3b82f6","#ececec","#ab68ff"]},{id:"primer",label:"Primer",description:"Blue accent on ink-dark grey, in the style of GitHub.",swatches:["#0d1117","#58a6ff","#3fb950","#c9d1d9","#bc8cff"]}],Ix=new Set(Qc.map(t=>t.id)),eb="grackle";function yp(t){return Qc.find(s=>s.id===t)}function kI({themeId:t,resolvedThemeId:s,onSetTheme:i,preferSystem:o,onSetPreferSystem:c}){return l.jsxs("section",{className:pe.section,children:[l.jsx("h3",{className:pe.sectionTitle,children:"Appearance"}),l.jsx("p",{className:pe.sectionDescription,children:"Choose how Grackle looks across the app."}),l.jsx("div",{className:pe.themeOptions,children:Qc.filter(u=>!u.hidden).map(u=>{const d=!!(u.variantLightId&&u.variantDarkId),m=d?t===u.id||t===u.variantLightId||t===u.variantDarkId:t===u.id,h=d&&s===u.variantLightId;return l.jsxs("button",{type:"button",className:`${pe.themeOption} ${m?pe.themeOptionSelected:""}`,"aria-pressed":m,onClick:()=>i(u.id),children:[l.jsxs("span",{className:pe.themeOptionHeader,children:[l.jsxs("span",{children:[l.jsx("span",{className:pe.themeOptionLabel,children:u.label}),l.jsx("span",{className:pe.themeOptionDesc,children:u.description})]}),d&&l.jsxs("span",{className:pe.variantToggle,children:[l.jsx("span",{role:"button",tabIndex:0,className:`${pe.variantButton} ${m&&h?pe.variantActive:""}`,onClick:g=>{g.stopPropagation(),c(!1),i(u.variantLightId)},onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),g.stopPropagation(),c(!1),i(u.variantLightId))},"aria-label":"Light variant","aria-pressed":m&&h,children:"☼"}),l.jsx("span",{role:"button",tabIndex:0,className:`${pe.variantButton} ${m&&!h?pe.variantActive:""}`,onClick:g=>{g.stopPropagation(),c(!1),i(u.variantDarkId)},onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),g.stopPropagation(),c(!1),i(u.variantDarkId))},"aria-label":"Dark variant","aria-pressed":m&&!h,children:"☾"})]})]}),u.swatches&&l.jsx("span",{className:pe.themeSwatches,children:u.swatches.map((g,v)=>l.jsx("span",{className:pe.themeSwatch,style:{background:g}},v))})]},u.id)})}),l.jsxs("label",{className:pe.systemToggle,children:[l.jsx("input",{type:"checkbox",checked:o,onChange:u=>c(u.target.checked)}),l.jsx("span",{children:"Match system light/dark preference"})]}),l.jsx("p",{className:pe.systemToggleHint,children:"Automatically switches between light and dark variants when available."}),l.jsxs("p",{className:pe.themeActive,children:["Active theme: ",l.jsx("strong",{children:s})]})]})}function wI({connected:t,environments:s,sessions:i}){const o=s.filter(d=>d.status==="connected").length,c=s.length,u=i.filter(d=>["running","idle"].includes(d.status)).length;return l.jsxs("section",{className:pe.section,"data-testid":"about-panel",children:[l.jsx("h3",{className:pe.sectionTitle,children:"About"}),l.jsx("p",{className:pe.sectionDescription,children:"Connection status and application information."}),l.jsxs("div",{className:pe.aboutGrid,children:[l.jsxs("div",{className:pe.aboutItem,children:[l.jsx("span",{className:pe.aboutLabel,children:"Connection"}),l.jsxs("span",{className:pe.aboutValue,children:[l.jsx("span",{className:`${pe.aboutDot} ${t?pe.aboutDotConnected:pe.aboutDotDisconnected}`}),t?"Connected":"Disconnected"]})]}),l.jsxs("div",{className:pe.aboutItem,children:[l.jsx("span",{className:pe.aboutLabel,children:"Environments"}),l.jsxs("span",{className:pe.aboutValue,children:[o,"/",c," connected"]})]}),l.jsxs("div",{className:pe.aboutItem,children:[l.jsx("span",{className:pe.aboutLabel,children:"Active Sessions"}),l.jsx("span",{className:pe.aboutValue,children:u})]}),l.jsxs("div",{className:pe.aboutItem,children:[l.jsx("span",{className:pe.aboutLabel,children:"Version"}),l.jsx("span",{className:pe.aboutValue,children:"0.88.0"})]})]})]})}const NI="_container_cddyd_1",jI="_header_cddyd_8",CI="_headerTitle_cddyd_35",EI="_badge_cddyd_44",AI="_headerActions_cddyd_54",DI="_body_cddyd_61",RI="_formContent_cddyd_73",MI="_section_cddyd_85",II="_label_cddyd_91",OI="_titleInput_cddyd_98",BI="_descriptionTextarea_cddyd_131",LI="_parentContext_cddyd_167",UI="_parentLabel_cddyd_175",zI="_parentName_cddyd_182",PI="_personaSelect_cddyd_186",VI="_depList_cddyd_220",HI="_depItem_cddyd_226",$I="_depItemSelected_cddyd_248",GI="_noDeps_cddyd_252",qI="_btnPrimary_cddyd_258",FI="_btnGhost_cddyd_289",Ye={container:NI,header:jI,headerTitle:CI,badge:EI,headerActions:AI,body:DI,formContent:RI,section:MI,label:II,titleInput:OI,descriptionTextarea:BI,parentContext:LI,parentLabel:UI,parentName:zI,personaSelect:PI,depList:VI,depItem:HI,depItemSelected:$I,noDeps:GI,btnPrimary:qI,btnGhost:FI};function Ox({mode:t,taskId:s,workspaceId:i,parentTaskId:o,environmentId:c,tasks:u,workspaces:d,personas:m,onCreateTask:h,onUpdateTask:g,onEditDone:v,onShowToast:_}){const b=vt(),S=t==="edit",T=S&&s?u.find(de=>de.id===s):void 0,N=S?(T==null?void 0:T.workspaceId)??"":i??"",[j,w]=y.useState(N),C=N||j,A=d.find(de=>de.id===C),M=c??(A==null?void 0:A.environmentId),D=!S&&!i,E=S?(T==null?void 0:T.parentTaskId)??"":o??"",$=E?u.find(de=>de.id===E):void 0,[z,K]=y.useState((T==null?void 0:T.title)??""),[F,ee]=y.useState((T==null?void 0:T.description)??""),[ae,me]=y.useState((T==null?void 0:T.dependsOn)??[]),[ie,X]=y.useState((T==null?void 0:T.defaultPersonaId)??""),[O,q]=y.useState((T==null?void 0:T.canDecompose)??!1),[te,re]=y.useState(!1),ue=y.useRef(!1);y.useEffect(()=>{S&&T&&!ue.current&&(ue.current=!0,K(T.title),ee(T.description),me(T.dependsOn),X(T.defaultPersonaId),q(T.canDecompose))},[S,T]);const Fe=u.filter(de=>de.workspaceId===C&&(!S||de.id!==s)&&de.id!==E),Ne=z.trim().length>0&&(!S||T!==void 0)&&C.length>0,ke=de=>{me(Ie=>Ie.includes(de)?Ie.filter(yt=>yt!==de):[...Ie,de])},Me=()=>{!Ne||te||S&&T===void 0||(S&&s?(g(s,z.trim(),F,ae,ie),_==null||_("Task updated","success"),v?v():b(Xn(s,void 0,C,M),{replace:!0})):(re(!0),h(C,z.trim(),F,ae.length>0?ae:void 0,E||void 0,ie,O,()=>{_==null||_("Task created","success"),b(i?ni(i,M):"/tasks",{replace:!0})},de=>{_==null||_(de,"error"),re(!1)})))},le=()=>{if(v){v();return}b(S&&s?Xn(s,void 0,C,M):i?ni(i,M):"/tasks")},ve=S?"edit task":E?"child task":"new task";return l.jsxs("div",{className:Ye.container,children:[l.jsxs("div",{className:Ye.header,children:[l.jsxs("div",{className:Ye.headerTitle,children:[l.jsx("span",{className:Ye.badge,children:ve}),$&&l.jsxs("span",{className:Ye.parentContext,children:[l.jsx("span",{className:Ye.parentLabel,children:"Child of"}),l.jsx("span",{className:Ye.parentName,children:$.title})]})]}),l.jsxs("div",{className:Ye.headerActions,children:[l.jsx("button",{onClick:Me,disabled:!Ne||te,className:Ye.btnPrimary,"data-testid":"task-edit-save",children:te?"Creating…":S?"Save Changes":"Create"}),l.jsx("button",{onClick:le,className:Ye.btnGhost,children:"Cancel"})]})]}),l.jsx("div",{className:Ye.body,children:l.jsxs("div",{className:Ye.formContent,children:[D&&l.jsxs("div",{className:Ye.section,children:[l.jsx("label",{className:Ye.label,htmlFor:"task-edit-workspace",children:"Workspace"}),l.jsxs("select",{id:"task-edit-workspace",value:j,onChange:de=>w(de.target.value),className:Ye.personaSelect,"data-testid":"task-edit-workspace",children:[l.jsx("option",{value:"",children:"Select a workspace..."}),d.map(de=>l.jsx("option",{value:de.id,children:de.name},de.id))]})]}),l.jsxs("div",{className:Ye.section,children:[l.jsx("label",{className:Ye.label,htmlFor:"task-edit-title",children:"Title"}),l.jsx("input",{id:"task-edit-title",type:"text",value:z,onChange:de=>K(de.target.value),placeholder:"Task title...",autoFocus:!0,className:Ye.titleInput,"data-testid":"task-edit-title",onKeyDown:de=>{de.key==="Enter"&&Ne&&Me()}})]}),l.jsxs("div",{className:Ye.section,children:[l.jsx("label",{className:Ye.label,htmlFor:"task-edit-description",children:"Description"}),l.jsx("textarea",{id:"task-edit-description",value:F,onChange:de=>ee(de.target.value),placeholder:"Describe the task... (markdown supported)",className:Ye.descriptionTextarea,"data-testid":"task-edit-description",rows:8})]}),l.jsxs("div",{className:Ye.section,children:[l.jsx("label",{className:Ye.label,htmlFor:"task-edit-persona",children:"Default Persona"}),l.jsxs("select",{id:"task-edit-persona",value:ie,onChange:de=>X(de.target.value),className:Ye.personaSelect,"data-testid":"task-edit-persona",children:[l.jsx("option",{value:"",children:"(Inherit)"}),m.map(de=>l.jsx("option",{value:de.id,children:de.name},de.id))]})]}),!S&&l.jsx("div",{className:Ye.section,children:l.jsxs("label",{className:Ye.depItem,"data-testid":"task-edit-can-decompose",children:[l.jsx("input",{type:"checkbox",checked:O,onChange:de=>q(de.target.checked)}),"Can spawn subtasks"]})}),l.jsxs("div",{className:Ye.section,children:[l.jsx("div",{className:Ye.label,children:"Dependencies"}),Fe.length===0?l.jsx("div",{className:Ye.noDeps,children:"No other tasks in this workspace"}):l.jsx("div",{className:Ye.depList,children:Fe.map(de=>{const Ie=ae.includes(de.id);return l.jsxs("label",{className:`${Ye.depItem} ${Ie?Ye.depItemSelected:""}`,"data-testid":`dep-option-${de.id}`,children:[l.jsx("input",{type:"checkbox",checked:Ie,onChange:()=>ke(de.id)}),de.title,l.jsxs("span",{style:{opacity:.5,fontSize:"11px",marginLeft:"4px"},children:["(",de.status,")"]})]},de.id)})})]})]})})]})}const ZI="_container_legrg_1",KI="_header_legrg_8",YI="_headerTitle_legrg_35",JI="_badge_legrg_44",WI="_headerActions_legrg_54",XI="_body_legrg_61",QI="_formContent_legrg_73",eO="_section_legrg_85",tO="_label_legrg_91",nO="_nameInput_legrg_98",sO="_fieldInput_legrg_131",aO="_adapterSelect_legrg_164",iO="_readOnlyValue_legrg_198",oO="_codespaceSection_legrg_204",rO="_codespaceActions_legrg_210",lO="_creatingHint_legrg_216",cO="_errorHint_legrg_222",uO="_btnPrimary_legrg_235",dO="_btnGhost_legrg_266",ne={container:ZI,header:KI,headerTitle:YI,badge:JI,headerActions:WI,body:XI,formContent:QI,section:eO,label:tO,nameInput:nO,fieldInput:sO,adapterSelect:aO,readOnlyValue:iO,codespaceSection:oO,codespaceActions:rO,creatingHint:lO,errorHint:cO,btnPrimary:uO,btnGhost:dO},kc=1,wc=65535;function Uf(t){if(!t.trim())return!0;const s=Number(t);return Number.isInteger(s)&&s>=kc&&s<=wc}function zf(t){try{const s=JSON.parse(t);if(typeof s=="object"&&s!==null&&!Array.isArray(s))return s}catch{}return{}}function fO({codespaceName:t,onCodespaceNameChange:s,envName:i,onEnvNameChange:o,codespaces:c,codespaceError:u,codespaceListError:d,codespaceCreating:m,onCreateCodespace:h}){const[g,v]=y.useState("pick"),[_,b]=y.useState(""),[S,T]=y.useState("");return g==="create"?l.jsxs("div",{className:ne.codespaceSection,children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Repository"}),l.jsx("input",{type:"text",value:_,onChange:N=>b(N.target.value),placeholder:"owner/repo",className:ne.fieldInput,"data-testid":"env-codespace-repo"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Machine Type"}),l.jsx("input",{type:"text",value:S,onChange:N=>T(N.target.value),placeholder:"Machine type (optional)...",className:ne.fieldInput,"data-testid":"env-codespace-machine"})]}),l.jsxs("div",{className:ne.codespaceActions,children:[l.jsx("button",{onClick:()=>{_.trim()&&(h(_.trim(),S.trim()||void 0),v("pick"),b(""),T(""))},disabled:!_.trim(),className:ne.btnPrimary,children:"Create"}),l.jsx("button",{onClick:()=>{v("pick"),b(""),T("")},className:ne.btnGhost,children:"Cancel"})]})]}):l.jsx("div",{className:ne.codespaceSection,children:l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Codespace"}),!d&&l.jsxs("select",{value:t,onChange:N=>{N.target.value==="__create__"?(v("create"),s("")):(s(N.target.value),N.target.value&&!i.trim()&&o(N.target.value))},disabled:m,className:ne.adapterSelect,"data-testid":"env-codespace-select",children:[l.jsx("option",{value:"",children:"Select a codespace..."}),c.map(N=>l.jsxs("option",{value:N.name,children:[N.name," (",N.repository,") — ",N.state]},N.name)),l.jsx("option",{value:"__create__",children:"Create new from repo..."})]}),m&&l.jsx("span",{className:ne.creatingHint,children:"Creating codespace..."}),d&&l.jsxs(l.Fragment,{children:[l.jsx("span",{className:ne.errorHint,children:d}),l.jsx("input",{type:"text",value:t,onChange:N=>s(N.target.value),placeholder:"Or enter codespace name manually...",className:ne.fieldInput,"data-testid":"env-codespace-manual"})]}),u&&!d&&l.jsx("span",{className:ne.errorHint,children:u})]})})}function Bx({mode:t,environmentId:s,environments:i,onAddEnvironment:o,onUpdateEnvironment:c,onListCodespaces:u,codespaces:d,codespaceError:m,codespaceListError:h,codespaceCreating:g,onCreateCodespace:v,onShowToast:_}){const b=vt(),S=t==="edit",T=S&&s?i.find(le=>le.id===s):void 0,[N,j]=y.useState(""),[w,C]=y.useState("local"),[A,M]=y.useState(""),[D,E]=y.useState(""),[$,z]=y.useState(""),[K,F]=y.useState(""),[ee,ae]=y.useState(""),[me,ie]=y.useState(""),[X,O]=y.useState(""),[q,te]=y.useState(null),re=y.useCallback(()=>{const le={};if(w==="local"){if(A.trim()&&(le.host=A.trim()),D.trim()){const ve=Number(D);Number.isInteger(ve)&&(le.port=ve)}}else if(w==="ssh"){if(le.host=A.trim(),$.trim()&&(le.user=$.trim()),D.trim()){const ve=Number(D);Number.isInteger(ve)&&(le.sshPort=ve)}K.trim()&&(le.identityFile=K.trim())}else w==="docker"?(ee.trim()&&(le.image=ee.trim()),me.trim()&&(le.repo=me.trim())):w==="codespace"&&(le.codespaceName=X.trim());return le},[w,A,D,$,K,ee,me,X]),ue=()=>!(!N.trim()||w==="ssh"&&!A.trim()||w==="codespace"&&!X.trim()||(w==="local"||w==="ssh")&&!Uf(D)),Fe=()=>{ue()&&(o(N.trim(),w,re()),_==null||_("Environment added successfully","success"),b(ao,{replace:!0}))},Ne=()=>{b(s?si(s):ao)},ke=y.useCallback((le,ve)=>{if(!T||!s)return;const de=zf(T.adapterConfig),Ie=ve.trim();Ie?de[le]=Ie:delete de[le],c(s,{adapterConfig:de})},[T,s,c]),Me=y.useCallback((le,ve)=>{if(!T||!s)return;const de=zf(T.adapterConfig);if(ve.trim()){const Ie=Number(ve);Number.isInteger(Ie)&&Ie>=kc&&Ie<=wc&&(de[le]=Ie)}else delete de[le];c(s,{adapterConfig:de})},[T,s,c]);if(S){if(!T)return l.jsxs("div",{className:ne.container,children:[l.jsxs("div",{className:ne.header,children:[l.jsx("div",{className:ne.headerTitle,children:l.jsx("span",{className:ne.badge,children:"edit environment"})}),l.jsx("div",{className:ne.headerActions,children:l.jsx("button",{onClick:Ne,className:ne.btnGhost,children:"Back"})})]}),l.jsx("div",{className:ne.body,children:l.jsx("div",{className:ne.formContent,children:l.jsx("span",{className:ne.readOnlyValue,children:"Environment not found"})})})]});const le=zf(T.adapterConfig);return l.jsxs("div",{className:ne.container,"data-testid":"env-edit-panel",children:[l.jsxs("div",{className:ne.header,children:[l.jsx("div",{className:ne.headerTitle,children:l.jsx("span",{className:ne.badge,children:"edit environment"})}),l.jsx("div",{className:ne.headerActions,children:l.jsx("button",{onClick:Ne,className:ne.btnGhost,"data-testid":"env-edit-back",children:"Back"})})]}),l.jsx("div",{className:ne.body,children:l.jsxs("div",{className:ne.formContent,children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Name"}),l.jsx(Kt,{value:T.displayName,onSave:ve=>{s&&c(s,{displayName:ve})},validate:ve=>ve.trim()===""?"Name cannot be empty":void 0,mode:"edit",fieldId:"name",activeFieldId:q,onActivate:te,placeholder:"Environment name",ariaLabel:"Environment name","data-testid":"env-edit-name"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Adapter Type"}),l.jsx("span",{className:ne.readOnlyValue,"data-testid":"env-edit-adapter-type",children:T.adapterType})]}),T.adapterType==="local"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Host"}),l.jsx(Kt,{value:String(le.host??""),onSave:ve=>ke("host",ve),mode:"edit",fieldId:"host",activeFieldId:q,onActivate:te,placeholder:"(default)",ariaLabel:"Host","data-testid":"env-edit-host"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Port"}),l.jsx(Kt,{value:String(le.port??""),onSave:ve=>Me("port",ve),validate:ve=>Uf(ve)?void 0:"Port must be 1-65535",mode:"edit",fieldId:"port",activeFieldId:q,onActivate:te,placeholder:"(default)",ariaLabel:"Port","data-testid":"env-edit-port"})]})]}),T.adapterType==="ssh"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Host"}),l.jsx(Kt,{value:String(le.host??""),onSave:ve=>ke("host",ve),validate:ve=>ve.trim()===""?"Host is required":void 0,mode:"edit",fieldId:"host",activeFieldId:q,onActivate:te,placeholder:"hostname or IP",ariaLabel:"Host","data-testid":"env-edit-host"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"User"}),l.jsx(Kt,{value:String(le.user??""),onSave:ve=>ke("user",ve),mode:"edit",fieldId:"user",activeFieldId:q,onActivate:te,placeholder:"(default)",ariaLabel:"User","data-testid":"env-edit-user"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"SSH Port"}),l.jsx(Kt,{value:String(le.sshPort??""),onSave:ve=>Me("sshPort",ve),validate:ve=>Uf(ve)?void 0:"Port must be 1-65535",mode:"edit",fieldId:"sshPort",activeFieldId:q,onActivate:te,placeholder:"22",ariaLabel:"SSH Port","data-testid":"env-edit-ssh-port"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Identity File"}),l.jsx(Kt,{value:String(le.identityFile??""),onSave:ve=>ke("identityFile",ve),mode:"edit",fieldId:"identityFile",activeFieldId:q,onActivate:te,placeholder:"~/.ssh/id_rsa",ariaLabel:"Identity File","data-testid":"env-edit-identity-file"})]})]}),T.adapterType==="docker"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Image"}),l.jsx(Kt,{value:String(le.image??""),onSave:ve=>ke("image",ve),mode:"edit",fieldId:"image",activeFieldId:q,onActivate:te,placeholder:"(default)",ariaLabel:"Image","data-testid":"env-edit-image"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Repo"}),l.jsx(Kt,{value:String(le.repo??""),onSave:ve=>ke("repo",ve),mode:"edit",fieldId:"repo",activeFieldId:q,onActivate:te,placeholder:"(none)",ariaLabel:"Repo","data-testid":"env-edit-repo"})]})]}),T.adapterType==="codespace"&&l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,children:"Codespace Name"}),l.jsx(Kt,{value:String(le.codespaceName??""),onSave:ve=>ke("codespaceName",ve),validate:ve=>ve.trim()===""?"Codespace name is required":void 0,mode:"edit",fieldId:"codespaceName",activeFieldId:q,onActivate:te,placeholder:"codespace-name",ariaLabel:"Codespace Name","data-testid":"env-edit-codespace-name"})]})]})})]})}return l.jsxs("div",{className:ne.container,"data-testid":"env-create-panel",children:[l.jsxs("div",{className:ne.header,children:[l.jsx("div",{className:ne.headerTitle,children:l.jsx("span",{className:ne.badge,children:"new environment"})}),l.jsxs("div",{className:ne.headerActions,children:[l.jsx("button",{onClick:Fe,disabled:!ue(),className:ne.btnPrimary,"data-testid":"env-create-submit",children:"Create"}),l.jsx("button",{onClick:Ne,className:ne.btnGhost,children:"Cancel"})]})]}),l.jsx("div",{className:ne.body,children:l.jsxs("div",{className:ne.formContent,children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-name",children:"Name"}),l.jsx("input",{id:"env-create-name",type:"text",value:N,onChange:le=>j(le.target.value),placeholder:"Environment name...",autoFocus:!0,className:ne.nameInput,"data-testid":"env-create-name",onKeyDown:le=>{le.key==="Enter"&&ue()&&Fe()}})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-adapter",children:"Adapter Type"}),l.jsxs("select",{id:"env-create-adapter",value:w,onChange:le=>{C(le.target.value),le.target.value==="codespace"&&u()},className:ne.adapterSelect,"data-testid":"env-create-adapter",children:[l.jsx("option",{value:"local",children:"local"}),l.jsx("option",{value:"ssh",children:"ssh"}),l.jsx("option",{value:"docker",children:"docker"}),l.jsx("option",{value:"codespace",children:"codespace"})]})]}),w==="local"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-host",children:"Host"}),l.jsx("input",{id:"env-create-host",type:"text",value:A,onChange:le=>M(le.target.value),placeholder:"Host (optional)...",className:ne.fieldInput,"data-testid":"env-create-host"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-port",children:"Port"}),l.jsx("input",{id:"env-create-port",type:"number",min:kc,max:wc,value:D,onChange:le=>E(le.target.value),placeholder:"Port (optional)...",className:ne.fieldInput,"data-testid":"env-create-port"})]})]}),w==="ssh"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-host",children:"Host"}),l.jsx("input",{id:"env-create-host",type:"text",value:A,onChange:le=>M(le.target.value),placeholder:"Host (required)...",className:ne.fieldInput,"data-testid":"env-create-host"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-user",children:"User"}),l.jsx("input",{id:"env-create-user",type:"text",value:$,onChange:le=>z(le.target.value),placeholder:"User (optional)...",className:ne.fieldInput,"data-testid":"env-create-user"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-port",children:"SSH Port"}),l.jsx("input",{id:"env-create-port",type:"number",min:kc,max:wc,value:D,onChange:le=>E(le.target.value),placeholder:"SSH port (optional)...",className:ne.fieldInput,"data-testid":"env-create-port"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-identity",children:"Identity File"}),l.jsx("input",{id:"env-create-identity",type:"text",value:K,onChange:le=>F(le.target.value),placeholder:"Identity file (optional)...",className:ne.fieldInput,"data-testid":"env-create-identity"})]})]}),w==="docker"&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-image",children:"Image"}),l.jsx("input",{id:"env-create-image",type:"text",value:ee,onChange:le=>ae(le.target.value),placeholder:"Image (optional)...",className:ne.fieldInput,"data-testid":"env-create-image"})]}),l.jsxs("div",{className:ne.section,children:[l.jsx("label",{className:ne.label,htmlFor:"env-create-repo",children:"Repo"}),l.jsx("input",{id:"env-create-repo",type:"text",value:me,onChange:le=>ie(le.target.value),placeholder:"Repo (optional)...",className:ne.fieldInput,"data-testid":"env-create-repo"})]})]}),w==="codespace"&&l.jsx(fO,{codespaceName:X,onCodespaceNameChange:O,envName:N,onEnvNameChange:j,codespaces:d,codespaceError:m,codespaceListError:h,codespaceCreating:g,onCreateCodespace:v})]})})]})}const pO="_group_1iprv_1",mO="_groupTitle_1iprv_8",hO="_shortcutList_1iprv_17",gO="_shortcutRow_1iprv_23",vO="_keys_1iprv_36",yO="_kbd_1iprv_43",bO="_description_1iprv_60",Ja={group:pO,groupTitle:mO,shortcutList:hO,shortcutRow:gO,keys:vO,kbd:yO,description:bO},_O=[{title:"Global",shortcuts:[{keys:["?"],description:"Open keyboard shortcuts reference"},{keys:["N"],description:"Create a new task"},{keys:["Escape"],description:"Close dialog or cancel editing"}]},{title:"Task Page",shortcuts:[{keys:["1"],description:"Switch to Overview tab"},{keys:["2"],description:"Switch to Stream tab"},{keys:["3"],description:"Switch to Findings tab"}]},{title:"Workspace Page",shortcuts:[{keys:["1"],description:"Switch to Graph view"},{keys:["2"],description:"Switch to Board view"},{keys:["3"],description:"Switch to Tasks view"}]},{title:"Navigation Lists",shortcuts:[{keys:["←"],description:"Previous tab (horizontal nav)"},{keys:["→"],description:"Next tab (horizontal nav)"},{keys:["↑"],description:"Previous item (vertical nav)"},{keys:["↓"],description:"Next item (vertical nav)"},{keys:["J"],description:"Next item (alias for arrow down/right)"},{keys:["K"],description:"Previous item (alias for arrow up/left)"},{keys:["Home"],description:"Jump to first item"},{keys:["End"],description:"Jump to last item"}]},{title:"Editing",shortcuts:[{keys:["Enter"],description:"Activate / save inline edit"},{keys:["Space"],description:"Activate button or start editing"},{keys:["Escape"],description:"Cancel edit and discard changes"}]},{title:"Chat",shortcuts:[{keys:["Enter"],description:"Send message (when input is focused)"}]}];function xO(){return l.jsxs("section",{className:pe.section,"data-testid":"keyboard-shortcuts-panel",children:[l.jsx("h3",{className:pe.sectionTitle,children:"Keyboard Shortcuts"}),l.jsx("p",{className:pe.sectionDescription,children:"Keyboard shortcuts for navigating and interacting with Grackle. Global shortcuts are suppressed while typing in text fields."}),_O.map(t=>l.jsxs("div",{className:Ja.group,children:[l.jsx("h4",{className:Ja.groupTitle,children:t.title}),l.jsx("div",{className:Ja.shortcutList,children:t.shortcuts.map(s=>l.jsxs("div",{className:Ja.shortcutRow,children:[l.jsx("span",{className:Ja.keys,children:s.keys.map(i=>l.jsx("kbd",{className:Ja.kbd,children:i},i))}),l.jsx("span",{className:Ja.description,children:s.description})]},s.description))})]},t.title))]})}const SO="_workpadSection_y8nj9_1",TO="_workpadLabel_y8nj9_9",kO="_workpadStatus_y8nj9_17",wO="_workpadSummary_y8nj9_23",NO="_workpadExtra_y8nj9_29",ga={workpadSection:SO,workpadLabel:TO,workpadStatus:kO,workpadSummary:wO,workpadExtra:NO};function jO({workpad:t}){if(!t)return;let s;try{const i=JSON.parse(t);if(i==null||typeof i!="object"||Array.isArray(i))return;s=i}catch{return l.jsxs("div",{className:ga.workpadSection,"data-testid":"workpad-panel",children:[l.jsx("div",{className:ga.workpadLabel,children:"Workpad"}),l.jsx("div",{className:ga.workpadExtra,children:t})]})}if(!(!s.status&&!s.summary&&!s.extra))return l.jsxs("div",{className:ga.workpadSection,"data-testid":"workpad-panel",children:[l.jsx("div",{className:ga.workpadLabel,children:"Workpad"}),s.status&&l.jsx("div",{className:ga.workpadStatus,"data-testid":"workpad-status",children:s.status}),s.summary&&l.jsx("div",{className:ga.workpadSummary,"data-testid":"workpad-summary",children:s.summary}),s.extra&&Object.keys(s.extra).length>0&&l.jsx("div",{className:ga.workpadExtra,"data-testid":"workpad-extra",children:JSON.stringify(s.extra,null,2)})]})}const CO=[{key:"claude",label:"Claude",description:"Forward Claude credentials for AI agent access.",options:[{value:"off",label:"Off"},{value:"subscription",label:"Subscription"},{value:"api_key",label:"API Key"}]},{key:"github",label:"GitHub",description:"Forward GITHUB_TOKEN and GH_TOKEN for git operations.",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]},{key:"copilot",label:"Copilot",description:"Forward Copilot tokens (COPILOT_GITHUB_TOKEN, CLI config).",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]},{key:"codex",label:"Codex",description:"Forward OPENAI_API_KEY for Codex/OpenAI access.",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]},{key:"goose",label:"Goose",description:"Forward Goose config and API keys for Goose agent access.",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]}];function EO({credentialProviders:t,onUpdateCredentialProviders:s}){const i=(o,c)=>{const u={...t};o==="claude"?u.claude=c:u[o]=c,s(u)};return l.jsxs("section",{className:pe.section,children:[l.jsx("h3",{className:pe.sectionTitle,children:"Credential Providers"}),l.jsx("p",{className:pe.sectionDescription,children:"Enable providers to automatically forward credentials to environments at task start. Credentials are read fresh from the host each time."}),l.jsx("div",{className:pe.tokenList,children:CO.map(o=>l.jsxs("div",{className:pe.tokenRow,children:[l.jsx("span",{className:pe.tokenName,children:o.label}),l.jsx("span",{className:pe.tokenTarget,children:o.description}),l.jsx("select",{className:pe.select,value:t[o.key],onChange:c=>i(o.key,c.target.value),children:o.options.map(c=>l.jsx("option",{value:c.value,children:c.label},c.value))})]},o.key))})]})}const AO="_container_10efq_1",DO="_header_10efq_7",RO="_list_10efq_105",MO="_card_10efq_111",IO="_cardHeader_10efq_125",OO="_cardTitle_10efq_135",BO="_defaultBadge_10efq_141",LO="_cardActions_10efq_155",UO="_description_10efq_160",zO="_meta_10efq_166",PO="_empty_10efq_212",VO="_typeBadge_10efq_362",Ln={container:AO,header:DO,list:RO,card:MO,cardHeader:IO,cardTitle:OO,defaultBadge:BO,cardActions:LO,description:UO,meta:zO,empty:PO,typeBadge:VO};function HO({personas:t,appDefaultPersonaId:s,onDeletePersona:i,onSetAppDefaultPersonaId:o,onNavigateToNew:c,onNavigateToPersona:u}){const[d,m]=y.useState(null),h=d?t.find(v=>v.id===d):void 0,g=async v=>{await i(v),m(null)};return l.jsxs("div",{className:Ln.container,children:[l.jsxs("div",{className:Ln.header,children:[l.jsx("h2",{children:"Personas"}),l.jsx(Os,{variant:"primary",size:"md",onClick:c,"data-testid":"persona-new-button",children:"+ New Persona"})]}),t.length===0?l.jsx("p",{className:Ln.empty,children:"No personas yet. Create one to get started."}):l.jsx("div",{className:Ln.list,children:t.map(v=>{const _=s===v.id,b=v.type==="script";return l.jsxs("div",{className:Ln.card,"data-testid":`persona-card-${v.id}`,onClick:()=>u(v.id),role:"button",tabIndex:0,onKeyDown:S=>{S.currentTarget===S.target&&(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),u(v.id))},children:[l.jsxs("div",{className:Ln.cardHeader,children:[l.jsxs("span",{className:Ln.cardTitle,children:[l.jsx("strong",{children:v.name}),l.jsx("span",{className:Ln.typeBadge,"data-testid":`persona-type-badge-${v.id}`,children:b?"Script":"Agent"}),_&&l.jsx("span",{className:Ln.defaultBadge,"data-testid":`persona-default-badge-${v.id}`,children:"App Default"})]}),l.jsxs("div",{className:Ln.cardActions,onClick:S=>S.stopPropagation(),children:[!_&&l.jsx(Os,{variant:"ghost",size:"sm",onClick:()=>{o(v.id).catch(()=>{})},"data-testid":`persona-set-default-${v.id}`,title:"Set as app default persona",children:"Set Default"}),l.jsx(Os,{variant:"ghost",size:"sm",onClick:()=>u(v.id),children:"Edit"}),l.jsx(Os,{variant:"ghost",size:"sm",onClick:()=>m(v.id),"data-testid":`persona-delete-${v.id}`,children:"Delete"})]})]}),v.description&&l.jsx("p",{className:Ln.description,children:v.description}),l.jsxs("div",{className:Ln.meta,children:[v.runtime&&l.jsxs("span",{children:["Runtime: ",v.runtime]}),v.model&&l.jsxs("span",{children:["Model: ",v.model]}),v.maxTurns>0&&l.jsxs("span",{children:["Max turns: ",v.maxTurns]})]})]},v.id)})}),l.jsx(ii,{isOpen:d!==null,title:"Delete Persona?",description:`"${(h==null?void 0:h.name)??""}" will be permanently removed.`,confirmLabel:"Delete",onConfirm:()=>{d&&g(d).catch(()=>{})},onCancel:()=>m(null)})]})}const $O="_container_uy08i_1",GO="_header_uy08i_7",qO="_count_uy08i_13",FO="_presets_uy08i_18",ZO="_presetButton_uy08i_24",KO="_filterInput_uy08i_41",YO="_groups_uy08i_53",JO="_group_uy08i_53",WO="_groupHeader_uy08i_68",XO="_groupName_uy08i_77",QO="_groupCount_uy08i_81",e4="_toolList_uy08i_87",t4="_toolItem_uy08i_95",n4="_toolName_uy08i_103",tn={container:$O,header:GO,count:qO,presets:FO,presetButton:ZO,filterInput:KO,groups:YO,group:JO,groupHeader:WO,groupName:XO,groupCount:QO,toolList:e4,toolItem:t4,toolName:n4},s4=(()=>{const t=new Map;for(const s of _b){const i=s==="get_version_status"?"version":s.split("_")[0];t.has(i)||t.set(i,[]),t.get(i).push(s)}return[...t.entries()].sort(([s],[i])=>s.localeCompare(i)).map(([s,i])=>({group:s,tools:i.sort()}))})(),a4=[{name:"default",label:"Default",tools:xb},{name:"worker",label:"Worker",tools:xT},{name:"orchestrator",label:"Orchestrator",tools:ST},{name:"admin",label:"Admin",tools:TT}];function tb({selectedTools:t,onChange:s,disabled:i}){const[o,c]=y.useState(""),u=y.useMemo(()=>new Set(t),[t]),d=y.useCallback(v=>{if(i)return;const _=new Set(u);_.has(v)?_.delete(v):_.add(v),s([..._].sort())},[u,s,i]),m=y.useCallback((v,_)=>{if(i)return;const b=new Set(u);for(const S of v)_?b.delete(S):b.add(S);s([...b].sort())},[u,s,i]),h=y.useCallback(v=>{i||s([...v].sort())},[s,i]),g=o.toLowerCase();return l.jsxs("div",{className:tn.container,"data-testid":"mcp-tool-selector",children:[l.jsx("div",{className:tn.header,children:l.jsx("span",{className:tn.count,children:t.length===0?`Using default (${xb.length} tools)`:`${t.length} of ${_b.size} tools selected`})}),l.jsxs("div",{className:tn.presets,"data-testid":"mcp-tool-presets",children:[a4.map(v=>l.jsx("button",{type:"button",className:tn.presetButton,disabled:i,onClick:()=>h(v.tools),"data-testid":`preset-${v.name}`,children:v.label},v.name)),l.jsx("button",{type:"button",className:tn.presetButton,disabled:i,onClick:()=>s([]),"data-testid":"preset-clear",children:"Clear"})]}),l.jsx("input",{type:"text",className:tn.filterInput,placeholder:"Filter tools...",value:o,onChange:v=>c(v.target.value),disabled:i,"data-testid":"mcp-tool-filter"}),l.jsx("div",{className:tn.groups,children:s4.map(({group:v,tools:_})=>{const b=g?_.filter(T=>T.toLowerCase().includes(g)):_;if(b.length===0)return null;const S=b.every(T=>u.has(T));return l.jsxs("div",{className:tn.group,"data-testid":`tool-group-${v}`,children:[l.jsxs("label",{className:tn.groupHeader,children:[l.jsx("input",{type:"checkbox",checked:S,onChange:()=>m(b,S),disabled:i,"data-testid":`group-toggle-${v}`}),l.jsx("span",{className:tn.groupName,children:v}),l.jsxs("span",{className:tn.groupCount,children:["(",b.filter(T=>u.has(T)).length,"/",b.length,")"]})]}),l.jsx("div",{className:tn.toolList,children:b.map(T=>l.jsxs("label",{className:tn.toolItem,children:[l.jsx("input",{type:"checkbox",checked:u.has(T),onChange:()=>d(T),disabled:i,"data-testid":`tool-${T}`}),l.jsx("span",{className:tn.toolName,children:T})]},T))})]},v)})})]})}const i4="_nav_1bhou_1",o4="_tab_1bhou_24",r4="_tabIcon_1bhou_62",l4="_tabActive_1bhou_68",fc={nav:i4,tab:o4,tabIcon:r4,tabActive:l4},Is=[{path:"credentials",label:"Credentials",icon:"🔑"},{path:"personas",label:"Personas",icon:"👤"},{path:"appearance",label:"Appearance",icon:"🎨"},{path:"shortcuts",label:"Shortcuts",icon:"⌨️"},{path:"about",label:"About",icon:"ℹ️"}];function c4(){var d;const t=Ut(),s=vt(),i=y.useRef(null),o=((d=Is.find(m=>{const h=`${so}/${m.path}`;return t.pathname===h||t.pathname.startsWith(`${h}/`)}))==null?void 0:d.path)??Is[0].path,c=y.useCallback(m=>{s(`${so}/${m}`)},[s]),u=y.useCallback(m=>{var S,T;const h=(S=i.current)==null?void 0:S.querySelectorAll('[role="tab"]');if(!h)return;const g=Array.from(h).findIndex(N=>N===document.activeElement),v=g>=0?g:Is.findIndex(N=>N.path===o);let _=v;if(m.key==="ArrowDown"||m.key==="j"||m.key==="J")m.preventDefault(),_=(v+1)%Is.length;else if(m.key==="ArrowUp"||m.key==="k"||m.key==="K")m.preventDefault(),_=(v-1+Is.length)%Is.length;else if(m.key==="Home")m.preventDefault(),_=0;else if(m.key==="End")m.preventDefault(),_=Is.length-1;else return;const b=Is[_].path;s(`${so}/${b}`),(T=h[_])==null||T.focus()},[o,s]);return l.jsx("nav",{className:fc.nav,ref:i,role:"tablist","aria-orientation":"vertical","aria-label":"Settings",onKeyDown:u,children:Is.map(m=>{const h=m.path===o;return l.jsxs("button",{role:"tab",type:"button","aria-selected":h,tabIndex:h?0:-1,className:`${fc.tab} ${h?fc.tabActive:""}`,onClick:()=>c(m.path),children:[l.jsx("span",{className:fc.tabIcon,"aria-hidden":"true",children:m.icon}),m.label]},m.path)})})}function u4({tasks:t,taskStatusById:s,sessionStatusByTaskId:i}){const o=new Map;for(const u of t)if(u.parentTaskId){const d=o.get(u.parentTaskId);d?d.push(u):o.set(u.parentTaskId,[u])}const c=new Map(S0.map(u=>[u,[]]));for(const u of t){const d=Tp(u.status),m=u.dependsOn.length>0&&u.dependsOn.some(T=>s.get(T)!=="complete"),h=o.get(u.id)??[],g=h.length,v=h.filter(T=>T.status==="complete").length;let _;if(d==="paused"&&i){const T=i.get(u.id);T==="idle"?_="Needs input":T==="completed"&&(_="Ready to complete")}const b={task:u,isBlocked:m,childCount:g,doneChildCount:v,pausedSubBadge:_},S=c.get(d);S?S.push(b):c.get("not_started").push(b)}for(const u of c.values())u.sort((d,m)=>d.task.sortOrder-m.task.sortOrder);return S0.map(u=>{const d=Sa(u);return{status:u,label:d.label,style:d,tasks:c.get(u)??[]}})}const d4="_boardContainer_1c4y1_1",f4="_column_1c4y1_17",p4="_columnHeader_1c4y1_34",m4="_columnIcon_1c4y1_47",h4="_columnLabel_1c4y1_52",g4="_columnCount_1c4y1_57",v4="_cardList_1c4y1_67",y4="_emptyPlaceholder_1c4y1_76",b4="_card_1c4y1_67",_4="_cardHeader_1c4y1_107",x4="_cardStatusIcon_1c4y1_113",S4="_cardTitle_1c4y1_119",T4="_cardBadges_1c4y1_127",k4="_badge_1c4y1_134",w4="_blockedBadge_1c4y1_146",N4="_childBadge_1c4y1_151",j4="_depBadge_1c4y1_155",C4="_parentBadge_1c4y1_159",E4="_pausedSubBadge_1c4y1_166",A4="_personaBadge_1c4y1_170",D4="_envBadge_1c4y1_174",R4="_emptyCta_1c4y1_178",M4="_ctaButton_1c4y1_188",I4="_ctaDescription_1c4y1_204",tt={boardContainer:d4,column:f4,columnHeader:p4,columnIcon:m4,columnLabel:h4,columnCount:g4,cardList:v4,emptyPlaceholder:y4,card:b4,cardHeader:_4,cardStatusIcon:x4,cardTitle:S4,cardBadges:T4,badge:k4,blockedBadge:w4,childBadge:N4,depBadge:j4,parentBadge:C4,pausedSubBadge:E4,personaBadge:A4,envBadge:D4,emptyCta:R4,ctaButton:M4,ctaDescription:I4};function O4({workspaceId:t,environmentId:s,tasks:i,sessions:o,personas:c,environments:u}){const d=vt(),m=y.useMemo(()=>i.filter(b=>b.workspaceId===t),[i,t]),h=y.useMemo(()=>new Map(i.map(b=>[b.id,b.status])),[i]),g=y.useMemo(()=>new Map(m.map(b=>[b.id,b])),[m]),v=y.useMemo(()=>{const b=new Map(o.map(C=>[C.id,C])),S=new Map(c.map(C=>[C.id,C])),T=new Map(u.map(C=>[C.id,C])),N=new Map,j=new Map,w=new Map;for(const C of m)if(C.latestSessionId){const A=b.get(C.latestSessionId);if(A){if(N.set(C.id,A.endReason||A.status),A.personaId){const M=S.get(A.personaId);M&&j.set(C.id,M.name)}if(A.environmentId){const M=T.get(A.environmentId);M&&w.set(C.id,M.displayName)}}}return{sessionStatusByTaskId:N,personaNameByTaskId:j,environmentNameByTaskId:w}},[m,o,c,u]),_=y.useMemo(()=>u4({tasks:m,taskStatusById:h,sessionStatusByTaskId:v.sessionStatusByTaskId}),[m,h,v]);return m.length===0?l.jsxs("div",{className:tt.emptyCta,"data-testid":"board-empty-cta",children:[l.jsx("button",{className:tt.ctaButton,onClick:()=>d(ri(t,void 0,s)),children:"Create Task"}),l.jsx("div",{className:tt.ctaDescription,children:"Break your work into tasks and let agents tackle them"})]}):l.jsx("div",{className:tt.boardContainer,"data-testid":"board-container",children:_.map(b=>l.jsxs("section",{className:tt.column,"data-testid":`board-column-${b.status}`,"aria-label":`${b.label}, ${b.tasks.length} ${b.tasks.length===1?"task":"tasks"}`,children:[l.jsxs("div",{className:tt.columnHeader,children:[l.jsx("span",{className:tt.columnIcon,style:{color:b.style.color},children:b.style.icon}),l.jsx("span",{className:tt.columnLabel,children:b.label}),l.jsx("span",{className:tt.columnCount,"data-testid":`board-count-${b.status}`,children:b.tasks.length})]}),l.jsx("div",{className:tt.cardList,children:b.tasks.length===0?l.jsx("div",{className:tt.emptyPlaceholder,children:"No tasks"}):l.jsx(ds,{mode:"popLayout",children:b.tasks.map(S=>l.jsx(Dt.div,{layout:!0,initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},children:l.jsx(B4,{boardTask:S,tasksById:g,personaName:v.personaNameByTaskId.get(S.task.id),envName:v.environmentNameByTaskId.get(S.task.id),onClick:()=>d(Xn(S.task.id,void 0,t,s))})},S.task.id))})})]},b.status))})}function B4({boardTask:t,tasksById:s,personaName:i,envName:o,onClick:c}){const{task:u,isBlocked:d,childCount:m,doneChildCount:h,pausedSubBadge:g}=t,v=Sa(u.status),_=u.parentTaskId?s.get(u.parentTaskId):void 0;return l.jsxs("div",{className:tt.card,tabIndex:0,role:"button","data-testid":`board-card-${u.id}`,onClick:c,onKeyDown:b=>{(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),c())},children:[l.jsxs("div",{className:tt.cardHeader,children:[l.jsx("span",{className:tt.cardStatusIcon,style:{color:v.color},children:v.icon}),l.jsx("span",{className:tt.cardTitle,children:u.title})]}),l.jsxs("div",{className:tt.cardBadges,children:[_&&l.jsx("span",{className:`${tt.badge} ${tt.parentBadge}`,title:_.title,children:_.title}),m>0&&l.jsxs("span",{className:`${tt.badge} ${tt.childBadge}`,children:[h,"/",m]}),d&&l.jsx("span",{className:`${tt.badge} ${tt.blockedBadge}`,children:"blocked"}),u.dependsOn.length>0&&!d&&l.jsx("span",{className:`${tt.badge} ${tt.depBadge}`,children:"dep"}),g&&l.jsx("span",{className:`${tt.badge} ${tt.pausedSubBadge}`,children:g}),i&&l.jsx("span",{className:`${tt.badge} ${tt.personaBadge}`,children:i}),o&&l.jsx("span",{className:`${tt.badge} ${tt.envBadge}`,children:o})]})]})}const L4="_formContent_ymnez_1",U4="_section_ymnez_13",z4="_label_ymnez_19",P4="_titleInput_ymnez_26",V4="_descriptionTextarea_ymnez_58",H4="_selectField_ymnez_94",$4="_checkboxRow_ymnez_128",G4="_checkboxLabel_ymnez_141",q4="_fieldError_ymnez_146",mt={formContent:L4,section:U4,label:z4,titleInput:P4,descriptionTextarea:V4,selectField:H4,checkboxRow:$4,checkboxLabel:G4,fieldError:q4};function F4(t,s){return{name:(t==null?void 0:t.name)??"",description:(t==null?void 0:t.description)??"",repoUrl:(t==null?void 0:t.repoUrl)??"",environmentId:(t==null?void 0:t.environmentId)??s??"",defaultPersonaId:(t==null?void 0:t.defaultPersonaId)??"",useWorktrees:(t==null?void 0:t.useWorktrees)??!0,workingDirectory:(t==null?void 0:t.workingDirectory)??""}}const Z4=100;function K4({values:t,onChange:s,environments:i,personas:o,errors:c,disabled:u,autoFocusName:d}){const m=(h,g)=>{s({...t,[h]:g})};return l.jsxs("div",{className:mt.formContent,children:[l.jsxs("div",{className:mt.section,children:[l.jsx("label",{className:mt.label,htmlFor:"ws-name",children:"Name"}),l.jsx("input",{id:"ws-name",className:mt.titleInput,type:"text",value:t.name,onChange:h=>m("name",h.target.value),placeholder:"Workspace name",maxLength:Z4,autoFocus:d,disabled:u,"data-testid":"workspace-form-name"}),(c==null?void 0:c.name)&&l.jsx("span",{className:mt.fieldError,"data-testid":"workspace-form-error-name",children:c.name})]}),l.jsxs("div",{className:mt.section,children:[l.jsx("label",{className:mt.label,htmlFor:"ws-description",children:"Description"}),l.jsx("textarea",{id:"ws-description",className:mt.descriptionTextarea,value:t.description,onChange:h=>m("description",h.target.value),placeholder:"Optional description (Markdown supported)",disabled:u,"data-testid":"workspace-form-description"})]}),l.jsxs("div",{className:mt.section,children:[l.jsx("label",{className:mt.label,htmlFor:"ws-repo",children:"Repository URL"}),l.jsx("input",{id:"ws-repo",className:mt.titleInput,type:"text",value:t.repoUrl,onChange:h=>m("repoUrl",h.target.value),placeholder:"https://github.com/org/repo",disabled:u,"data-testid":"workspace-form-repo"}),(c==null?void 0:c.repoUrl)&&l.jsx("span",{className:mt.fieldError,"data-testid":"workspace-form-error-repoUrl",children:c.repoUrl})]}),l.jsxs("div",{className:mt.section,children:[l.jsx("label",{className:mt.label,htmlFor:"ws-environment",children:"Environment"}),l.jsxs("select",{id:"ws-environment",className:mt.selectField,value:t.environmentId,onChange:h=>m("environmentId",h.target.value),disabled:u,"data-testid":"workspace-form-environment",children:[l.jsx("option",{value:"",children:"Select environment…"}),i.map(h=>l.jsx("option",{value:h.id,children:h.displayName||h.id},h.id))]}),(c==null?void 0:c.environmentId)&&l.jsx("span",{className:mt.fieldError,"data-testid":"workspace-form-error-environmentId",children:c.environmentId})]}),l.jsxs("div",{className:mt.section,children:[l.jsx("label",{className:mt.label,htmlFor:"ws-persona",children:"Default Persona"}),l.jsxs("select",{id:"ws-persona",className:mt.selectField,value:t.defaultPersonaId,onChange:h=>m("defaultPersonaId",h.target.value),disabled:u,"data-testid":"workspace-form-persona",children:[l.jsx("option",{value:"",children:"(Inherit)"}),o.map(h=>l.jsx("option",{value:h.id,children:h.name},h.id))]})]}),l.jsx("div",{className:mt.section,children:l.jsxs("label",{className:mt.checkboxRow,children:[l.jsx("input",{type:"checkbox",checked:t.useWorktrees,onChange:h=>m("useWorktrees",h.target.checked),disabled:u,"data-testid":"workspace-form-worktrees"}),l.jsx("span",{className:mt.checkboxLabel,children:"Enable worktree isolation"})]})}),l.jsxs("div",{className:mt.section,children:[l.jsx("label",{className:mt.label,htmlFor:"ws-workdir",children:"Working Directory"}),l.jsx("input",{id:"ws-workdir",className:mt.titleInput,type:"text",value:t.workingDirectory,onChange:h=>m("workingDirectory",h.target.value),placeholder:"Default (server default)",disabled:u,"data-testid":"workspace-form-workdir"})]})]})}const Lx=y.createContext(void 0),Y4=4e3;function J4({children:t}){const[s,i]=y.useState([]),o=y.useRef(0),c=y.useCallback(d=>{i(m=>m.filter(h=>h.id!==d))},[]),u=y.useCallback((d,m="info",h=Y4)=>{const g=`toast-${++o.current}`;i(v=>[...v,{id:g,message:d,variant:m,duration:h}])},[]);return l.jsx(Lx.Provider,{value:{toasts:s,showToast:u,dismissToast:c},children:t})}function dn(){const t=y.useContext(Lx);if(!t)throw new Error("useToast must be used within ToastProvider");return t}const bp="grackle-theme",Ux="grackle-prefer-system",zx="(prefers-color-scheme: dark)";let gr=[],Nc;function Pf(){Nc=void 0;for(const t of gr)t()}function _p(){return typeof window>"u"?!1:window.matchMedia(zx).matches}function Sr(){if(typeof localStorage>"u")return eb;try{const t=localStorage.getItem(bp);if(t!==null&&Ix.has(t))return t}catch{}return eb}function Uc(){if(typeof localStorage>"u")return!1;try{return localStorage.getItem(Ux)==="true"}catch{return!1}}function xp(t){return Qc.find(s=>s.variantLightId===t||s.variantDarkId===t)}function Px(t,s){const i=yp(t);if(i!=null&&i.variantDarkId)return s&&i.variantLightId?_p()?i.variantDarkId:i.variantLightId:i.variantDarkId;if(i!=null&&i.hidden&&s){const o=xp(t);if(o!=null&&o.variantLightId&&o.variantDarkId)return _p()?o.variantDarkId:o.variantLightId}return t}function Ji(t,s,i=!1){i&&document.documentElement.classList.add("no-transitions"),document.documentElement.dataset.theme=Px(t,s),i&&(document.documentElement.offsetHeight,requestAnimationFrame(()=>{document.documentElement.classList.remove("no-transitions")}))}typeof document<"u"&&Ji(Sr(),Uc());function W4(){return Nc===void 0&&(Nc={themeId:Sr(),systemDark:_p(),preferSystem:Uc()}),Nc}function X4(t){return gr=[...gr,t],()=>{gr=gr.filter(s=>s!==t)}}function Q4(){const t=y.useSyncExternalStore(X4,W4),{themeId:s,preferSystem:i}=t,o=Px(s,i),c=y.useCallback(d=>{if(Ix.has(d)){try{localStorage.setItem(bp,d)}catch{}Ji(d,Uc(),!0),Pf()}},[]),u=y.useCallback(d=>{try{localStorage.setItem(Ux,d?"true":"false")}catch{}if(d){const m=Sr(),h=yp(m);if(h!=null&&h.hidden){const g=xp(m);if(g)try{localStorage.setItem(bp,g.id)}catch{}}}Ji(Sr(),d,!0),Pf()},[]);return y.useEffect(()=>{Ji(s,i)},[s,i]),y.useEffect(()=>{if(typeof window>"u")return;const d=window.matchMedia(zx),m=()=>{const h=Sr(),g=Uc();if(g){const v=yp(h);if(v!=null&&v.variantDarkId&&v.variantLightId&&Ji(h,g),v!=null&&v.hidden){const _=xp(h);_!=null&&_.variantDarkId&&_.variantLightId&&Ji(h,g)}}Pf()};return d.addEventListener("change",m),()=>{d.removeEventListener("change",m)}},[]),{themeId:s,setTheme:c,resolvedThemeId:o,preferSystem:i,setPreferSystem:u}}const Vx=y.createContext(void 0);function eB({children:t}){const s=Q4();return l.jsx(Vx.Provider,{value:s,children:t})}function Hx(){const t=y.useContext(Vx);if(!t)throw new Error("useThemeContext must be used within ThemeProvider");return t}const $x=y.createContext(void 0),Gx=y.createContext(void 0);function tB({children:t}){const[s,i]=y.useState(void 0),o=y.useCallback(c=>{i(c)},[]);return l.jsx(Gx.Provider,{value:o,children:l.jsx($x.Provider,{value:s,children:t})})}function nB(){return y.useContext($x)}function sB(){const t=y.useContext(Gx);if(t===void 0)throw new Error("useSidebarSetter must be used within a SidebarProvider");return t}const vm=y.createContext(void 0);function rt(){const t=y.useContext(vm);if(!t)throw new Error("useGrackle must be used within GrackleProvider");return t}function qx(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Fx(t,s){return console.warn(`[ws] Malformed "${t}" message: ${s}`),!1}function aB(t){return qx(t)&&typeof t.sessionId=="string"&&typeof t.eventType=="string"&&typeof t.timestamp=="string"&&typeof t.content=="string"&&(t.raw===void 0||typeof t.raw=="string")}const iB=new Set(["off","subscription","api_key"]),pc=new Set(["off","on"]);function oB(t){return qx(t)&&iB.has(t.claude)&&pc.has(t.github)&&pc.has(t.copilot)&&pc.has(t.codex)&&pc.has(t.goose)}function Zx(t){switch(t){case"waiting_input":return"idle";case"completed":return"stopped";case"killed":return"stopped";case"failed":return"stopped";case"interrupted":return"stopped";case"terminated":return"stopped";default:return t}}function Kx(t){switch(t){case"completed":return"completed";case"killed":return"killed";case"failed":return"interrupted";case"interrupted":return"interrupted";case"terminated":return"terminated";default:return}}const Yi=5e3;function rB(t,s){const i=[];let o=t;const c=new Set;for(;o&&s.has(o)&&!c.has(o);){c.add(o);const u=s.get(o);i.unshift(u),o=u.parentTaskId||void 0}return i}const Vs={label:"Home",url:ai};function lB(t){return t?[Vs,{label:"Settings",url:so},{label:t,url:void 0}]:[Vs,{label:"Settings",url:void 0}]}const ym={label:"Environments",url:ao};function cB(){return[Vs,{label:"Environments",url:void 0}]}function uB(){return[Vs,{label:"New Chat",url:void 0}]}function dB(t){return[Vs,{label:`Session ${t.slice(0,8)}`,url:void 0}]}function fB(t,s,i,o){const c=i.find(d=>d.id===t),u=o.find(d=>d.id===s);return[Vs,ym,{label:(u==null?void 0:u.displayName)??"Environment",url:si(s)},{label:(c==null?void 0:c.name)??"Workspace",url:void 0}]}function pB(t,s,i,o,c){const u=rB(t,c),d=c.get(t),m=d==null?void 0:d.workspaceId,h=m?i.find(S=>S.id===m):void 0,g=s??(h==null?void 0:h.environmentId),v=g?o.find(S=>S.id===g):void 0,_=[Vs];v&&g&&(_.push(ym),_.push({label:v.displayName,url:si(g)})),h&&g&&_.push({label:h.name,url:ni(h.id,g)});for(let S=0;S<u.length-1;S++)_.push({label:u[S].title,url:Xn(u[S].id,void 0,m,g)});const b=u[u.length-1];return _.push({label:(b==null?void 0:b.title)??t,url:void 0}),_}const mB={label:"Findings",url:Fc};function hB(){return[Vs,{label:"Findings",url:void 0}]}function Yx(t,s,i,o,c){const u=[Vs];if(s&&i){const d=o.find(h=>h.id===s),m=c.find(h=>h.id===i);u.push(ym),m&&u.push({label:m.displayName,url:si(i)}),d&&u.push({label:d.name,url:ni(s,i)}),u.push({label:"Findings",url:l2(s,i)})}else u.push(mB);return u.push({label:t,url:void 0}),u}function bm(t){const s=[];for(const i of t){const o=s[s.length-1];i.eventType==="text"&&(o==null?void 0:o.eventType)==="text"?s[s.length-1]={...o,content:o.content+i.content}:s.push(i)}return s}function _m(t){const s=new Map;for(const u of t)if(u.raw)try{s.set(u,JSON.parse(u.raw))}catch{}const i=new Map;for(const u of t){if(u.eventType!=="tool_use")continue;const d=s.get(u);if(!(!d||typeof d.id!="string"))try{const m=JSON.parse(u.content);i.set(d.id,{tool:m.tool,args:m.args})}catch{}}const o=new Set;return t.map(u=>{if(u.eventType!=="tool_result")return u;const d=s.get(u);if(!d||typeof d.tool_use_id!="string")return u;const m=i.get(d.tool_use_id);if(!m)return u;o.add(d.tool_use_id);let h;const g=u.content.trim();if(g.startsWith("{"))try{const v=JSON.parse(g);typeof v.detailedContent=="string"&&(h=v.detailedContent)}catch{}return{...u,toolUseCtx:{...m,detailedResult:h}}}).filter(u=>{if(u.eventType!=="tool_use")return!0;const d=s.get(u);return d&&typeof d.id=="string"?!o.has(d.id):!0})}function gB(t,s,i){const o=t.filter(h=>h.status==="running"||h.status==="idle"||h.status==="waiting").length,c=Jx(s),u=s.filter(h=>Sp(h,c)).length,d=s.filter(h=>h.status==="paused"||h.status==="failed"||Sp(h,c)).length,m=i.filter(h=>h.status==="disconnected"||h.status==="error").length;return{activeSessions:o,blockedTasks:u,attentionTasks:d,unhealthyEnvironments:m}}function Jx(t){const s=new Map;for(const i of t)s.set(i.id,i.status);return s}function Sp(t,s){return t.dependsOn.some(i=>s.get(i)!=="complete")}function vB(t,s){var d;const i=new Map;for(const m of s)i.set(m.id,m);const o=Jx(t),c=[];for(const m of t){const h=m.workspaceId?((d=i.get(m.workspaceId))==null?void 0:d.name)??"Unknown":"Unknown";m.status==="failed"?c.push({task:m,reason:"failed",workspaceName:h}):Sp(m,o)?c.push({task:m,reason:"blocked",workspaceName:h}):m.status==="paused"&&c.push({task:m,reason:"paused",workspaceName:h})}const u={failed:0,blocked:1,paused:2};return c.sort((m,h)=>(u[m.reason]??3)-(u[h.reason]??3)),c}function yB(t,s){const i=new Map;for(const o of s)i.set(o.id,o);return t.filter(o=>o.status==="running"||o.status==="idle"||o.status==="waiting").map(o=>{var c;return{session:o,environmentName:((c=i.get(o.environmentId))==null?void 0:c.displayName)??"Unknown"}})}function bB(t,s,i){const o=new Map;for(const c of s){if(!c.workspaceId)continue;let u=o.get(c.workspaceId);u||(u={totalTasks:0,completedTasks:0,workingTasks:0,failedTasks:0},o.set(c.workspaceId,u)),u.totalTasks+=1,c.status==="complete"?u.completedTasks+=1:c.status==="working"?u.workingTasks+=1:c.status==="failed"&&(u.failedTasks+=1)}return t.map(c=>{const u=o.get(c.id)??{totalTasks:0,completedTasks:0,workingTasks:0,failedTasks:0};return{workspace:c,totalTasks:u.totalTasks,completedTasks:u.completedTasks,workingTasks:u.workingTasks,failedTasks:u.failedTasks}})}const rs=[{id:"kn-auth-flow",label:"Authentication Flow",kind:"knowledge",category:"concept",content:"The application uses JWT Bearer tokens for stateless authentication. Access tokens expire after 24h. Refresh tokens are stored in the database and rotated on use. The auth middleware verifies tokens and attaches the decoded payload to req.user.",tags:["auth","jwt","security"],workspaceId:"proj-alpha",createdAt:"2026-02-25T10:30:00Z",updatedAt:"2026-02-27T08:15:00Z",val:5},{id:"kn-db-schema",label:"Database Schema",kind:"knowledge",category:"concept",content:"PostgreSQL database with tables: users, sessions, refresh_tokens, audit_log. Uses UUID primary keys, TIMESTAMPTZ for all timestamps, and JSONB for flexible metadata columns. Connection pooling via pg-pool with per-tenant isolation.",tags:["database","postgres","schema"],workspaceId:"proj-alpha",createdAt:"2026-02-23T11:00:00Z",updatedAt:"2026-02-26T22:45:00Z",val:4},{id:"kn-error-handling",label:"Error Response Pattern",kind:"knowledge",category:"concept",content:"All API errors follow the shape { error: string, code: string, details?: unknown }. HTTP status codes map to: 400 (validation), 401 (unauthenticated), 403 (forbidden), 404 (not found), 409 (conflict), 429 (rate limited), 500 (internal).",tags:["api","errors","patterns"],workspaceId:"proj-alpha",createdAt:"2026-02-27T08:17:00Z",updatedAt:"2026-02-27T08:17:00Z",val:3},{id:"kn-rate-limiting",label:"Rate Limiting Strategy",kind:"knowledge",category:"concept",content:"Token-bucket algorithm with in-memory state per client IP. Default rate: 100 requests/minute, burst: 20. Returns 429 with Retry-After header. Redis adapter available for multi-instance deployments.",tags:["api","rate-limiting","infrastructure"],workspaceId:"proj-alpha",createdAt:"2026-02-27T09:00:00Z",updatedAt:"2026-02-27T09:00:00Z",val:2},{id:"kn-etl-pipeline",label:"ETL Pipeline Architecture",kind:"knowledge",category:"concept",content:"Data pipelines follow an Extract-Transform-Load pattern with pluggable stages. Each stage reads from a source (Postgres, S3, API), transforms via configurable mappers, and loads into a target (Parquet, BigQuery, S3). Incremental loads use high-watermark tracking.",tags:["etl","pipeline","architecture"],workspaceId:"proj-beta",createdAt:"2026-02-26T08:00:00Z",updatedAt:"2026-02-27T09:05:00Z",val:4},{id:"kn-parquet-format",label:"Parquet Output Format",kind:"knowledge",category:"concept",content:"Parquet files are written with row-group buffering (configurable batch size, default 10000 rows). Supports Snappy, ZSTD, and GZIP compression. Schema is derived from the internal column type system using Arrow type mapping.",tags:["parquet","data-format","compression"],workspaceId:"proj-beta",createdAt:"2026-02-26T08:05:00Z",updatedAt:"2026-02-26T08:15:00Z",val:3},{id:"kn-jwt-over-session",label:"JWT over Session Auth",kind:"knowledge",category:"decision",content:"Chose JWT tokens over server-side sessions for stateless auth. Rationale: (1) no session store needed, (2) works across microservices without shared state, (3) supports mobile clients natively. Trade-off: tokens can't be revoked instantly (mitigated by short expiry + refresh rotation).",tags:["auth","decision","jwt"],workspaceId:"proj-alpha",createdAt:"2026-02-25T10:00:00Z",updatedAt:"2026-02-25T10:00:00Z",val:3},{id:"kn-pg-pool-decision",label:"pg-pool over Knex",kind:"knowledge",category:"decision",content:"Chose pg-pool over Knex for connection pooling. pg-pool gives direct control over idle timeout, max connections, and health check queries. Knex wraps pg-pool and adds query-building overhead we don't need since we write raw SQL with parameterized queries.",tags:["database","decision","postgres"],workspaceId:"proj-alpha",createdAt:"2026-02-23T11:30:00Z",updatedAt:"2026-02-23T11:30:00Z",val:2},{id:"kn-watermark-decision",label:"Local Watermark Storage",kind:"knowledge",category:"decision",content:"Currently using local SQLite for watermark storage. This works for single-worker pipelines but needs to move to a shared store (Redis or Postgres) for production multi-worker scenarios. Tracked as a follow-up task.",tags:["pipeline","decision","watermarks"],workspaceId:"proj-beta",createdAt:"2026-02-27T09:05:00Z",updatedAt:"2026-02-27T09:05:00Z",val:2},{id:"kn-jwt-middleware",label:"JWT Verify Middleware",kind:"knowledge",category:"snippet",content:`\`\`\`typescript
63
+ export function verifyToken(req: Request, res: Response, next: NextFunction): void {
64
+ const header = req.headers.authorization;
65
+ if (!header?.startsWith("Bearer ")) {
66
+ res.status(401).json({ error: "Missing token" });
67
+ return;
68
+ }
69
+ const decoded = jwt.verify(header.slice(7), JWT_SECRET) as JwtPayload;
70
+ req.user = decoded;
71
+ next();
72
+ }
73
+ \`\`\``,tags:["auth","jwt","middleware","typescript"],workspaceId:"proj-alpha",createdAt:"2026-02-27T08:15:14Z",updatedAt:"2026-02-27T08:15:14Z",val:2},{id:"kn-audit-schema",label:"Audit Log Schema",kind:"knowledge",category:"snippet",content:`\`\`\`sql
74
+ CREATE TABLE audit_log (
75
+ id BIGSERIAL PRIMARY KEY,
76
+ user_id UUID REFERENCES users(id),
77
+ action TEXT NOT NULL,
78
+ entity_type TEXT NOT NULL,
79
+ entity_id TEXT NOT NULL,
80
+ old_value JSONB,
81
+ new_value JSONB,
82
+ ip_address INET,
83
+ created_at TIMESTAMPTZ DEFAULT now()
84
+ );
85
+ \`\`\``,tags:["database","audit","schema","sql"],workspaceId:"proj-alpha",createdAt:"2026-02-26T22:45:15Z",updatedAt:"2026-02-26T22:45:15Z",val:2},{id:"kn-n1-query",label:"N+1 Query in User List",kind:"knowledge",category:"insight",content:"GET /api/users performs a separate query for each user's role metadata, resulting in N+1 queries. For 500 users this adds ~2 seconds of latency. Solution: use a JOIN or batch lookup to fetch all role data in a single query.",tags:["performance","database","n+1"],workspaceId:"proj-alpha",createdAt:"2026-02-22T09:30:00Z",updatedAt:"2026-02-22T09:30:00Z",val:2},{id:"kn-session-race",label:"Session Cleanup Race Condition",kind:"knowledge",category:"insight",content:"When two concurrent requests hit /api/logout, the second call throws a 500 because the session row has already been deleted. Fix: use DELETE ... RETURNING or add IF EXISTS guard to make the operation idempotent.",tags:["bug","concurrency","sessions"],workspaceId:"proj-alpha",createdAt:"2026-02-26T22:50:00Z",updatedAt:"2026-02-26T22:50:00Z",val:2},{id:"kn-ref-task-001",label:"JWT Auth Task",kind:"reference",sourceType:"task",sourceId:"task-001",content:"Implement JWT authentication across all protected routes, replacing session-based auth.",workspaceId:"proj-alpha",createdAt:"2026-02-25T10:00:00Z",updatedAt:"2026-02-27T08:15:00Z",val:3},{id:"kn-ref-task-006",label:"Parquet Export Task",kind:"reference",sourceType:"task",sourceId:"task-006",content:"Add Parquet export support for pipeline outputs, enabling downstream Spark consumption.",workspaceId:"proj-beta",createdAt:"2026-02-26T08:00:00Z",updatedAt:"2026-02-27T09:00:00Z",val:3},{id:"kn-ref-sess-001",label:"Auth Middleware Session",kind:"reference",sourceType:"session",sourceId:"sess-001",content:"Active session implementing JWT auth middleware, rewrote auth.ts, login.ts, and test suite.",workspaceId:"proj-alpha",createdAt:"2026-02-27T08:15:00Z",updatedAt:"2026-02-27T08:15:42Z",val:2}],va=[{source:"kn-auth-flow",target:"kn-jwt-over-session",type:"decided_by"},{source:"kn-auth-flow",target:"kn-jwt-middleware",type:"implemented_by"},{source:"kn-auth-flow",target:"kn-ref-task-001",type:"tracked_in"},{source:"kn-auth-flow",target:"kn-error-handling",type:"relates_to"},{source:"kn-jwt-over-session",target:"kn-ref-task-001",type:"motivated_by"},{source:"kn-db-schema",target:"kn-pg-pool-decision",type:"decided_by"},{source:"kn-db-schema",target:"kn-audit-schema",type:"contains"},{source:"kn-db-schema",target:"kn-n1-query",type:"affected_by"},{source:"kn-db-schema",target:"kn-session-race",type:"affected_by"},{source:"kn-rate-limiting",target:"kn-error-handling",type:"relates_to"},{source:"kn-rate-limiting",target:"kn-auth-flow",type:"depends_on"},{source:"kn-etl-pipeline",target:"kn-parquet-format",type:"outputs_to"},{source:"kn-etl-pipeline",target:"kn-watermark-decision",type:"decided_by"},{source:"kn-etl-pipeline",target:"kn-ref-task-006",type:"tracked_in"},{source:"kn-parquet-format",target:"kn-ref-task-006",type:"tracked_in"},{source:"kn-watermark-decision",target:"kn-etl-pipeline",type:"relates_to"},{source:"kn-ref-task-001",target:"kn-ref-sess-001",type:"has_session"},{source:"kn-jwt-middleware",target:"kn-ref-sess-001",type:"created_in"},{source:"kn-audit-schema",target:"kn-db-schema",type:"part_of"}],_B=new Map(rs.map(t=>[t.id,t]));function Vf(t){const s=_B.get(t);if(!s)throw new Error(`MOCK_KNOWLEDGE_NODES is missing node "${t}"`);return s}const nb={"kn-auth-flow":{node:Vf("kn-auth-flow"),edges:[{fromId:"kn-auth-flow",toId:"kn-jwt-over-session",type:"decided_by"},{fromId:"kn-auth-flow",toId:"kn-jwt-middleware",type:"implemented_by"},{fromId:"kn-auth-flow",toId:"kn-ref-task-001",type:"tracked_in"},{fromId:"kn-auth-flow",toId:"kn-error-handling",type:"relates_to"},{fromId:"kn-rate-limiting",toId:"kn-auth-flow",type:"depends_on"}]},"kn-db-schema":{node:Vf("kn-db-schema"),edges:[{fromId:"kn-db-schema",toId:"kn-pg-pool-decision",type:"decided_by"},{fromId:"kn-db-schema",toId:"kn-audit-schema",type:"contains"},{fromId:"kn-db-schema",toId:"kn-n1-query",type:"affected_by"},{fromId:"kn-db-schema",toId:"kn-session-race",type:"affected_by"},{fromId:"kn-audit-schema",toId:"kn-db-schema",type:"part_of"}]},"kn-etl-pipeline":{node:Vf("kn-etl-pipeline"),edges:[{fromId:"kn-etl-pipeline",toId:"kn-parquet-format",type:"outputs_to"},{fromId:"kn-etl-pipeline",toId:"kn-watermark-decision",type:"decided_by"},{fromId:"kn-etl-pipeline",toId:"kn-ref-task-006",type:"tracked_in"},{fromId:"kn-watermark-decision",toId:"kn-etl-pipeline",type:"relates_to"}]}},xB=[{id:"env-local-01",displayName:"Local Dev",adapterType:"local",adapterConfig:"{}",status:"connected",bootstrapped:!0},{id:"env-docker-01",displayName:"Docker Sandbox",adapterType:"docker",adapterConfig:'{"image":"node:20"}',status:"connected",bootstrapped:!0},{id:"env-cs-01",displayName:"GitHub Codespace",adapterType:"codespace",adapterConfig:'{"codespaceName":"my-codespace"}',status:"connected",bootstrapped:!0},{id:"env-remote-01",displayName:"Staging (SSH)",adapterType:"ssh",adapterConfig:'{"host":"192.168.1.10","user":"deploy","sshPort":22}',status:"disconnected",bootstrapped:!1}],SB=[{id:"sess-001-prev",environmentId:"env-local-01",runtime:"claude-code",status:"stopped",endReason:"interrupted",prompt:"Implement auth middleware",startedAt:"2026-02-26T14:00:00Z",endedAt:"2026-02-26T15:12:00Z",error:"Context window exceeded before completing implementation",inputTokens:84200,outputTokens:12750,costUsd:.41},{id:"sess-001",environmentId:"env-local-01",runtime:"claude-code",status:"running",prompt:"Refactor the authentication middleware to use JWT tokens",startedAt:"2026-02-27T08:15:00Z",inputTokens:42600,outputTokens:8100,costUsd:.22},{id:"sess-002",environmentId:"env-docker-01",runtime:"copilot",status:"stopped",endReason:"completed",prompt:"Write unit tests for the user registration endpoint",startedAt:"2026-02-27T07:30:00Z",endedAt:"2026-02-27T07:33:00Z",inputTokens:31400,outputTokens:9800,costUsd:.18},{id:"sess-003",environmentId:"env-local-01",runtime:"claude-code",status:"stopped",endReason:"interrupted",prompt:"Migrate database schema to add audit_log table",startedAt:"2026-02-26T22:45:00Z",endedAt:"2026-02-26T23:10:00Z",inputTokens:56300,outputTokens:14200,costUsd:.31},{id:"sess-004",environmentId:"env-docker-01",runtime:"codex",status:"running",prompt:"Implement rate limiting for the public API",startedAt:"2026-02-27T09:00:00Z",inputTokens:18900,outputTokens:4500,costUsd:.1},{id:"sess-005",environmentId:"env-cs-01",runtime:"claude-code",status:"suspended",prompt:"Refactor database connection pooling for multi-tenant isolation",startedAt:"2026-02-27T06:00:00Z",inputTokens:67800,outputTokens:19300,costUsd:.38}],TB=[{sessionId:"sess-001-prev",eventType:"status",timestamp:"2026-02-26T14:00:01Z",content:"running"},{sessionId:"sess-001-prev",eventType:"system",timestamp:"2026-02-26T14:00:02Z",content:`You are a senior backend engineer. Focus on security best practices and thorough testing.
86
+ Project: acme/alpha — Node.js + Express REST API
87
+ Task: Implement auth middleware using JWT tokens`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-001-prev",eventType:"text",timestamp:"2026-02-26T14:00:05Z",content:"I'll start by reading the current authentication middleware to understand what needs to change."},{sessionId:"sess-001-prev",eventType:"tool_use",timestamp:"2026-02-26T14:00:06Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/middleware/auth.ts"}}),raw:JSON.stringify({id:"tu-prev-001",type:"tool_use"})},{sessionId:"sess-001-prev",eventType:"tool_result",timestamp:"2026-02-26T14:00:07Z",content:`import session from "express-session";
88
+ import type { Request, Response, NextFunction } from "express";
89
+
90
+ export function requireAuth(req: Request, res: Response, next: NextFunction): void {
91
+ if (!req.session?.userId) {
92
+ res.status(401).json({ error: "Not authenticated" });
93
+ return;
94
+ }
95
+ next();
96
+ }`,raw:JSON.stringify({tool_use_id:"tu-prev-001"})},{sessionId:"sess-001-prev",eventType:"text",timestamp:"2026-02-26T14:00:10Z",content:"The current auth uses express-session with server-side session storage. Let me find all files that depend on this pattern."},{sessionId:"sess-001-prev",eventType:"tool_use",timestamp:"2026-02-26T14:00:11Z",content:JSON.stringify({tool:"Grep",args:{pattern:"req\\.session",path:"src/"}}),raw:JSON.stringify({id:"tu-prev-002",type:"tool_use"})},{sessionId:"sess-001-prev",eventType:"tool_result",timestamp:"2026-02-26T14:00:12Z",content:`src/middleware/auth.ts:4: if (!req.session?.userId) {
97
+ src/routes/login.ts:18: req.session.userId = user.id;
98
+ src/routes/login.ts:19: req.session.role = user.role;
99
+ src/routes/protected.ts:7: const userId = req.session.userId;`,raw:JSON.stringify({tool_use_id:"tu-prev-002"})},{sessionId:"sess-001-prev",eventType:"usage",timestamp:"2026-02-26T14:30:00Z",content:JSON.stringify({input_tokens:42100,output_tokens:6350,cost_usd:.21})},{sessionId:"sess-001-prev",eventType:"text",timestamp:"2026-02-26T14:30:02Z",content:"Found 3 files using session-based auth. Now let me read the login route and the protected route to understand the full flow before making changes."},{sessionId:"sess-001-prev",eventType:"tool_use",timestamp:"2026-02-26T14:30:03Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/routes/login.ts"}}),raw:JSON.stringify({id:"tu-prev-003",type:"tool_use"})},{sessionId:"sess-001-prev",eventType:"tool_result",timestamp:"2026-02-26T14:30:04Z",content:`import { Router } from "express";
100
+ import bcrypt from "bcrypt";
101
+ import { db } from "../db.js";
102
+
103
+ const router = Router();
104
+
105
+ router.post("/login", async (req, res) => {
106
+ const { email, password } = req.body;
107
+ const user = await db.users.findByEmail(email);
108
+ if (!user || !await bcrypt.compare(password, user.passwordHash)) {
109
+ return res.status(401).json({ error: "Invalid credentials" });
110
+ }
111
+ req.session.userId = user.id;
112
+ req.session.role = user.role;
113
+ res.json({ ok: true });
114
+ });
115
+
116
+ export default router;`,raw:JSON.stringify({tool_use_id:"tu-prev-003"})},{sessionId:"sess-001-prev",eventType:"error",timestamp:"2026-02-26T15:12:00Z",content:"Context window exceeded before completing implementation"},{sessionId:"sess-001-prev",eventType:"status",timestamp:"2026-02-26T15:12:01Z",content:"interrupted"},{sessionId:"sess-001",eventType:"status",timestamp:"2026-02-27T08:15:01Z",content:"running"},{sessionId:"sess-001",eventType:"system",timestamp:"2026-02-27T08:15:02Z",content:`You are a senior backend engineer. Focus on security best practices and thorough testing.
117
+ Project: acme/alpha — Node.js + Express REST API
118
+ Task: Implement auth middleware using JWT tokens
119
+
120
+ Note: A previous session attempted this task but was interrupted. Pick up where it left off.`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:04Z",content:"I'll pick up the JWT auth migration. The previous session identified 3 files that need updating. Let me verify the current state and start implementing."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:04.5Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Install jsonwebtoken package",activeForm:"Installing jsonwebtoken",status:"pending"},{content:"Rewrite auth middleware for JWT",activeForm:"Rewriting auth middleware",status:"pending"},{content:"Update login route to issue tokens",activeForm:"Updating login route",status:"pending"},{content:"Update protected routes",activeForm:"Updating protected routes",status:"pending"},{content:"Fix and update tests",activeForm:"Fixing tests",status:"pending"},{content:"Run full test suite",activeForm:"Running tests",status:"pending"}]}})},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:05Z",content:JSON.stringify({tool:"Grep",args:{pattern:"express-session|req\\.session",path:"src/",output_mode:"files_with_matches"}}),raw:JSON.stringify({id:"tu-001-01",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:06Z",content:`src/middleware/auth.ts
121
+ src/routes/login.ts
122
+ src/routes/protected.ts`,raw:JSON.stringify({tool_use_id:"tu-001-01"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:08Z",content:"Good, same 3 files. Let me install the JWT library first, then rewrite the middleware."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:09Z",content:JSON.stringify({tool:"Bash",args:{command:"npm install jsonwebtoken && npm install -D @types/jsonwebtoken"}}),raw:JSON.stringify({id:"tu-001-02",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:11Z",content:`added 12 packages in 3.2s
123
+
124
+ added 1 package in 0.8s`,raw:JSON.stringify({tool_use_id:"tu-001-02"})},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:11.5Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Install jsonwebtoken package",activeForm:"Installing jsonwebtoken",status:"completed"},{content:"Rewrite auth middleware for JWT",activeForm:"Rewriting auth middleware",status:"in_progress"},{content:"Update login route to issue tokens",activeForm:"Updating login route",status:"pending"},{content:"Update protected routes",activeForm:"Updating protected routes",status:"pending"},{content:"Fix and update tests",activeForm:"Fixing tests",status:"pending"},{content:"Run full test suite",activeForm:"Running tests",status:"pending"}]}})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:12Z",content:"Now I'll rewrite the auth middleware to use JWT verification instead of session checks."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:13Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/middleware/auth.ts",content:`import jwt from "jsonwebtoken";
125
+ import type { Request, Response, NextFunction } from "express";
126
+
127
+ const JWT_SECRET = process.env.JWT_SECRET || "change-me";
128
+
129
+ export interface JwtPayload {
130
+ userId: string;
131
+ role: string;
132
+ iat: number;
133
+ exp: number;
134
+ }
135
+
136
+ export function verifyToken(req: Request, res: Response, next: NextFunction): void {
137
+ const header = req.headers.authorization;
138
+ if (!header?.startsWith("Bearer ")) {
139
+ res.status(401).json({ error: "Missing or malformed token" });
140
+ return;
141
+ }
142
+ try {
143
+ const decoded = jwt.verify(header.slice(7), JWT_SECRET) as JwtPayload;
144
+ req.user = decoded;
145
+ next();
146
+ } catch (err) {
147
+ if (err instanceof jwt.TokenExpiredError) {
148
+ res.status(401).json({ error: "Token expired" });
149
+ } else {
150
+ res.status(403).json({ error: "Invalid token" });
151
+ }
152
+ }
153
+ }
154
+ `}}),raw:JSON.stringify({id:"tu-001-03",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:14Z",content:"File written: src/middleware/auth.ts (32 lines)",raw:JSON.stringify({tool_use_id:"tu-001-03"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:16Z",content:`Now I need to update the login route to issue JWT tokens instead of setting session data.
155
+
156
+ The new login flow will:
157
+ 1. Validate credentials (unchanged)
158
+ 2. Generate a JWT with \`userId\` and \`role\` claims
159
+ 3. Return the token in the response body
160
+ 4. Include a refresh token for long-lived sessions`},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:17Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/routes/login.ts",content:`import { Router } from "express";
161
+ import bcrypt from "bcrypt";
162
+ import jwt from "jsonwebtoken";
163
+ import crypto from "node:crypto";
164
+ import { db } from "../db.js";
165
+
166
+ const JWT_SECRET = process.env.JWT_SECRET || "change-me";
167
+ const ACCESS_TOKEN_EXPIRY = "24h";
168
+ const REFRESH_TOKEN_BYTES = 48;
169
+
170
+ const router = Router();
171
+
172
+ router.post("/login", async (req, res) => {
173
+ const { email, password } = req.body;
174
+ const user = await db.users.findByEmail(email);
175
+ if (!user || !(await bcrypt.compare(password, user.passwordHash))) {
176
+ return res.status(401).json({ error: "Invalid credentials" });
177
+ }
178
+
179
+ const accessToken = jwt.sign(
180
+ { userId: user.id, role: user.role },
181
+ JWT_SECRET,
182
+ { expiresIn: ACCESS_TOKEN_EXPIRY },
183
+ );
184
+
185
+ const refreshToken = crypto.randomBytes(REFRESH_TOKEN_BYTES).toString("hex");
186
+ await db.refreshTokens.create({ userId: user.id, token: refreshToken });
187
+
188
+ res.json({ accessToken, refreshToken, expiresIn: ACCESS_TOKEN_EXPIRY });
189
+ });
190
+
191
+ export default router;
192
+ `}}),raw:JSON.stringify({id:"tu-001-04",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:18Z",content:"File written: src/routes/login.ts (33 lines)",raw:JSON.stringify({tool_use_id:"tu-001-04"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:20Z",content:"Let me update the protected route to use the new `req.user` shape from the JWT payload."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:21Z",content:JSON.stringify({tool:"Edit",args:{file_path:"src/routes/protected.ts",old_string:"const userId = req.session.userId;",new_string:"const { userId } = req.user as JwtPayload;"}}),raw:JSON.stringify({id:"tu-001-05",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:22Z",content:"Updated src/routes/protected.ts",raw:JSON.stringify({tool_use_id:"tu-001-05"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:24Z",content:"Now let me run the existing tests to make sure nothing is broken, then I'll add new JWT-specific tests."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:25Z",content:JSON.stringify({tool:"Bash",args:{command:"npm test"}}),raw:JSON.stringify({id:"tu-001-06",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:30Z",content:` PASS src/routes/__tests__/login.test.ts
193
+ PASS src/routes/__tests__/protected.test.ts
194
+ FAIL src/middleware/__tests__/auth.test.ts
195
+ x should reject missing session (12ms)
196
+ x should allow valid session (8ms)
197
+
198
+ 2 failed, 12 passed, 14 total
199
+
200
+ Test Suites: 1 failed, 2 passed, 3 total`,raw:JSON.stringify({tool_use_id:"tu-001-06",is_error:!0})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:32Z",content:`Two tests failed because they still test the old session-based auth. I need to rewrite those tests for JWT.
201
+
202
+ Let me update the auth middleware tests:`},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:33Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/middleware/__tests__/auth.test.ts",content:`import { describe, it, expect } from "vitest";
203
+ import jwt from "jsonwebtoken";
204
+ import { verifyToken } from "../auth.js";
205
+ import { createMockReqRes } from "../../test-utils/mock-express.js";
206
+
207
+ const SECRET = "test-secret";
208
+ process.env.JWT_SECRET = SECRET;
209
+
210
+ describe("verifyToken", () => {
211
+ it("should reject requests without Authorization header", () => {
212
+ const { req, res, next } = createMockReqRes();
213
+ verifyToken(req, res, next);
214
+ expect(res.status).toHaveBeenCalledWith(401);
215
+ });
216
+
217
+ it("should reject expired tokens", () => {
218
+ const token = jwt.sign({ userId: "u1", role: "user" }, SECRET, { expiresIn: "-1h" });
219
+ const { req, res, next } = createMockReqRes({ authorization: \`Bearer \${token}\` });
220
+ verifyToken(req, res, next);
221
+ expect(res.status).toHaveBeenCalledWith(401);
222
+ });
223
+
224
+ it("should accept valid tokens and attach user to request", () => {
225
+ const token = jwt.sign({ userId: "u1", role: "admin" }, SECRET, { expiresIn: "1h" });
226
+ const { req, res, next } = createMockReqRes({ authorization: \`Bearer \${token}\` });
227
+ verifyToken(req, res, next);
228
+ expect(next).toHaveBeenCalled();
229
+ expect(req.user).toMatchObject({ userId: "u1", role: "admin" });
230
+ });
231
+ });
232
+ `}}),raw:JSON.stringify({id:"tu-001-07",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:34Z",content:"File written: src/middleware/__tests__/auth.test.ts (32 lines)",raw:JSON.stringify({tool_use_id:"tu-001-07"})},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:35Z",content:JSON.stringify({tool:"Bash",args:{command:"npm test"}}),raw:JSON.stringify({id:"tu-001-08",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:40Z",content:` PASS src/routes/__tests__/login.test.ts
233
+ PASS src/routes/__tests__/protected.test.ts
234
+ PASS src/middleware/__tests__/auth.test.ts
235
+
236
+ Test Suites: 3 passed, 3 total
237
+ Tests: 14 passed, 14 total`,raw:JSON.stringify({tool_use_id:"tu-001-08"})},{sessionId:"sess-001",eventType:"usage",timestamp:"2026-02-27T08:15:41Z",content:JSON.stringify({input_tokens:42600,output_tokens:8100,cost_usd:.22})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:42Z",content:`All 14 tests pass. Here's a summary of the changes:
238
+
239
+ ### Changes made
240
+
241
+ | File | Action |
242
+ |------|--------|
243
+ | \`src/middleware/auth.ts\` | Rewrote to verify JWT Bearer tokens |
244
+ | \`src/routes/login.ts\` | Now issues JWT access + refresh tokens |
245
+ | \`src/routes/protected.ts\` | Updated to read \`req.user\` from JWT payload |
246
+ | \`src/middleware/__tests__/auth.test.ts\` | Updated tests for JWT verification |
247
+
248
+ ### Key decisions
249
+ - **Access token expiry**: 24 hours (configurable via \`JWT_SECRET\` env var)
250
+ - **Refresh tokens**: 48-byte random hex, stored in DB
251
+ - **Error handling**: Distinguishes expired tokens (401) from invalid tokens (403)`},{sessionId:"sess-002",eventType:"status",timestamp:"2026-02-27T07:30:01Z",content:"running"},{sessionId:"sess-002",eventType:"system",timestamp:"2026-02-27T07:30:02Z",content:`You are a QA engineer. Write comprehensive tests covering happy paths, edge cases, error scenarios, and security.
252
+ Project: acme/alpha — Node.js + Express REST API
253
+ Task: Write unit tests for the user registration endpoint`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-002",eventType:"text",timestamp:"2026-02-27T07:30:04Z",content:"I'll write thorough tests for `POST /api/register`. Let me first read the registration endpoint to understand its behavior."},{sessionId:"sess-002",eventType:"tool_use",timestamp:"2026-02-27T07:30:05Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/routes/register.ts"}}),raw:JSON.stringify({id:"tu-002-01",type:"tool_use"})},{sessionId:"sess-002",eventType:"tool_result",timestamp:"2026-02-27T07:30:06Z",content:`import { Router } from "express";
254
+ import bcrypt from "bcrypt";
255
+ import { db } from "../db.js";
256
+ import { validateEmail, validatePassword } from "../utils/validators.js";
257
+
258
+ const SALT_ROUNDS = 12;
259
+ const router = Router();
260
+
261
+ router.post("/register", async (req, res) => {
262
+ const { name, email, password } = req.body;
263
+
264
+ if (!name || !email || !password) {
265
+ return res.status(400).json({ error: "Missing required fields" });
266
+ }
267
+ if (!validateEmail(email)) {
268
+ return res.status(400).json({ error: "Invalid email format" });
269
+ }
270
+ if (!validatePassword(password)) {
271
+ return res.status(400).json({ error: "Password too weak" });
272
+ }
273
+
274
+ const existing = await db.users.findByEmail(email);
275
+ if (existing) {
276
+ return res.status(409).json({ error: "Email already registered" });
277
+ }
278
+
279
+ const passwordHash = await bcrypt.hash(password, SALT_ROUNDS);
280
+ const user = await db.users.create({ name, email, passwordHash });
281
+ res.status(201).json({ id: user.id, name: user.name, email: user.email });
282
+ });
283
+
284
+ export default router;`,raw:JSON.stringify({tool_use_id:"tu-002-01"})},{sessionId:"sess-002",eventType:"text",timestamp:"2026-02-27T07:30:10Z",content:`Good. The endpoint validates input, checks for duplicates, hashes the password, and creates the user. I'll write tests covering:
285
+
286
+ 1. **Happy path** - valid registration
287
+ 2. **Missing fields** - each required field missing
288
+ 3. **Invalid email** - malformed email format
289
+ 4. **Weak password** - password validation failure
290
+ 5. **Duplicate email** - conflict with existing user
291
+ 6. **SQL injection** - malicious email input
292
+ 7. **XSS payload** - HTML in the name field
293
+ 8. **Response shape** - correct status codes and body structure`},{sessionId:"sess-002",eventType:"tool_use",timestamp:"2026-02-27T07:30:12Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/routes/__tests__/register.test.ts",content:"// [test content - 8 test cases as described above]"}}),raw:JSON.stringify({id:"tu-002-02",type:"tool_use"})},{sessionId:"sess-002",eventType:"tool_result",timestamp:"2026-02-27T07:30:13Z",content:"File written: src/routes/__tests__/register.test.ts (142 lines)",raw:JSON.stringify({tool_use_id:"tu-002-02"})},{sessionId:"sess-002",eventType:"tool_use",timestamp:"2026-02-27T07:31:00Z",content:JSON.stringify({tool:"Bash",args:{command:"npm test -- --testPathPattern=register"}}),raw:JSON.stringify({id:"tu-002-03",type:"tool_use"})},{sessionId:"sess-002",eventType:"tool_result",timestamp:"2026-02-27T07:31:30Z",content:` PASS src/routes/__tests__/register.test.ts
294
+ POST /api/register
295
+ ✓ should register a valid user (28ms)
296
+ ✓ should reject missing name (4ms)
297
+ ✓ should reject missing email (3ms)
298
+ ✓ should reject missing password (3ms)
299
+ ✓ should reject invalid email format (5ms)
300
+ ✓ should reject weak password (4ms)
301
+ ✓ should reject duplicate email (12ms)
302
+ ✓ should sanitize HTML in name field (6ms)
303
+
304
+ Tests: 8 passed, 8 total`,raw:JSON.stringify({tool_use_id:"tu-002-03"})},{sessionId:"sess-002",eventType:"usage",timestamp:"2026-02-27T07:32:00Z",content:JSON.stringify({input_tokens:31400,output_tokens:9800,cost_usd:.18})},{sessionId:"sess-002",eventType:"text",timestamp:"2026-02-27T07:32:30Z",content:"All 8 test cases pass. Created `src/routes/__tests__/register.test.ts` with comprehensive coverage for the registration endpoint including input validation, duplicate detection, and security edge cases."},{sessionId:"sess-002",eventType:"status",timestamp:"2026-02-27T07:33:00Z",content:"completed"},{sessionId:"sess-003",eventType:"status",timestamp:"2026-02-26T22:45:01Z",content:"running"},{sessionId:"sess-003",eventType:"system",timestamp:"2026-02-26T22:45:02Z",content:`You are a database engineer. Focus on safe migrations, zero-downtime deployments, and data integrity.
305
+ Project: acme/alpha — Node.js + Express + PostgreSQL
306
+ Task: Add audit_log table and migrate schema`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:45:05Z",content:"I need to add an `audit_log` table for tracking all write operations. Let me review the current schema first."},{sessionId:"sess-003",eventType:"tool_use",timestamp:"2026-02-26T22:45:06Z",content:JSON.stringify({tool:"Read",args:{file_path:"migrations/001_initial.sql"}}),raw:JSON.stringify({id:"tu-003-01",type:"tool_use"})},{sessionId:"sess-003",eventType:"tool_result",timestamp:"2026-02-26T22:45:07Z",content:`CREATE TABLE users (
307
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
308
+ name TEXT NOT NULL,
309
+ email TEXT UNIQUE NOT NULL,
310
+ password_hash TEXT NOT NULL,
311
+ role TEXT DEFAULT 'user',
312
+ created_at TIMESTAMPTZ DEFAULT now(),
313
+ updated_at TIMESTAMPTZ DEFAULT now()
314
+ );
315
+
316
+ CREATE TABLE sessions (
317
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
318
+ user_id UUID REFERENCES users(id),
319
+ expires_at TIMESTAMPTZ NOT NULL,
320
+ created_at TIMESTAMPTZ DEFAULT now()
321
+ );`,raw:JSON.stringify({tool_use_id:"tu-003-01"})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:45:12Z",content:"I see the schema. I'll create a migration that:\n1. Adds a `last_login_at` column to `users`\n2. Adds an index on `sessions.expires_at` for efficient cleanup queries\n3. Creates the `audit_log` table\n\nLet me write the migration file:"},{sessionId:"sess-003",eventType:"tool_use",timestamp:"2026-02-26T22:45:14Z",content:JSON.stringify({tool:"Write",args:{file_path:"migrations/002_audit_log.sql",content:`-- Migration: 002_audit_log
322
+ -- Add audit logging and user activity tracking
323
+
324
+ BEGIN;
325
+
326
+ -- 1. Add last_login_at to users
327
+ ALTER TABLE users ADD COLUMN last_login_at TIMESTAMPTZ;
328
+
329
+ -- 2. Index for session cleanup queries
330
+ CREATE INDEX CONCURRENTLY idx_sessions_expires_at ON sessions (expires_at);
331
+
332
+ -- 3. Audit log table
333
+ CREATE TABLE audit_log (
334
+ id BIGSERIAL PRIMARY KEY,
335
+ user_id UUID REFERENCES users(id),
336
+ action TEXT NOT NULL,
337
+ entity_type TEXT NOT NULL,
338
+ entity_id TEXT NOT NULL,
339
+ old_value JSONB,
340
+ new_value JSONB,
341
+ ip_address INET,
342
+ created_at TIMESTAMPTZ DEFAULT now()
343
+ );
344
+
345
+ CREATE INDEX idx_audit_log_user ON audit_log (user_id);
346
+ CREATE INDEX idx_audit_log_entity ON audit_log (entity_type, entity_id);
347
+ CREATE INDEX idx_audit_log_created ON audit_log (created_at);
348
+
349
+ COMMIT;
350
+ `}}),raw:JSON.stringify({id:"tu-003-02",type:"tool_use"})},{sessionId:"sess-003",eventType:"tool_result",timestamp:"2026-02-26T22:45:15Z",content:"File written: migrations/002_audit_log.sql (29 lines)",raw:JSON.stringify({tool_use_id:"tu-003-02"})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:46:00Z",content:"Now I need to implement the audit middleware that logs write operations. This will intercept POST, PUT, PATCH, and DELETE requests."},{sessionId:"sess-003",eventType:"tool_use",timestamp:"2026-02-26T22:46:02Z",content:JSON.stringify({tool:"Bash",args:{command:"npm run migrate -- --dry-run"}}),raw:JSON.stringify({id:"tu-003-03",type:"tool_use"})},{sessionId:"sess-003",eventType:"tool_result",timestamp:"2026-02-26T22:46:10Z",content:`Dry run: would apply 002_audit_log.sql
351
+ - ALTER TABLE users ADD COLUMN last_login_at
352
+ - CREATE INDEX CONCURRENTLY idx_sessions_expires_at
353
+ - CREATE TABLE audit_log
354
+ - 3 indexes on audit_log
355
+
356
+ WARNING: CREATE INDEX CONCURRENTLY cannot run inside a transaction block.
357
+ Please split this into a separate migration step.`,raw:JSON.stringify({tool_use_id:"tu-003-03",is_error:!0})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:46:15Z",content:"Good catch from the dry run! `CREATE INDEX CONCURRENTLY` can't run inside a transaction. I need to split the migration into two files: one for the transactional DDL and another for the concurrent index creation."},{sessionId:"sess-003",eventType:"usage",timestamp:"2026-02-26T23:00:00Z",content:JSON.stringify({input_tokens:56300,output_tokens:14200,cost_usd:.31})},{sessionId:"sess-003",eventType:"status",timestamp:"2026-02-26T23:10:00Z",content:"interrupted"},{sessionId:"sess-004",eventType:"status",timestamp:"2026-02-27T09:00:01Z",content:"running"},{sessionId:"sess-004",eventType:"system",timestamp:"2026-02-27T09:00:02Z",content:`You are a backend engineer specializing in API infrastructure.
358
+ Project: acme/data-pipeline — ETL pipelines for analytics
359
+ Task: Implement rate limiting for the public API using a token-bucket algorithm`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-004",eventType:"text",timestamp:"2026-02-27T09:00:05Z",content:"I'll implement rate limiting using a token-bucket algorithm. Let me first survey the existing API infrastructure to find the right integration point."},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:05.5Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Survey middleware structure",activeForm:"Surveying middleware",status:"in_progress"},{content:"Implement token-bucket algorithm",activeForm:"Implementing token bucket",status:"pending"},{content:"Add rate limit middleware to app",activeForm:"Adding middleware",status:"pending"},{content:"Write tests for rate limiting",activeForm:"Writing tests",status:"pending"},{content:"Add Redis adapter for multi-instance",activeForm:"Adding Redis adapter",status:"pending"}]}})},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:06Z",content:JSON.stringify({tool:"Glob",args:{pattern:"src/middleware/**/*.ts"}}),raw:JSON.stringify({id:"tu-004-01",type:"tool_use"})},{sessionId:"sess-004",eventType:"tool_result",timestamp:"2026-02-27T09:00:07Z",content:`src/middleware/cors.ts
360
+ src/middleware/error-handler.ts
361
+ src/middleware/logger.ts
362
+ src/middleware/request-id.ts`,raw:JSON.stringify({tool_use_id:"tu-004-01"})},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:09Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Survey middleware structure",activeForm:"Surveying middleware",status:"completed"},{content:"Implement token-bucket algorithm",activeForm:"Implementing token bucket",status:"in_progress"},{content:"Add rate limit middleware to app",activeForm:"Adding middleware",status:"pending"},{content:"Write tests for rate limiting",activeForm:"Writing tests",status:"pending"},{content:"Add Redis adapter for multi-instance",activeForm:"Adding Redis adapter",status:"pending"}]}})},{sessionId:"sess-004",eventType:"text",timestamp:"2026-02-27T09:00:10Z",content:`Good middleware structure already in place. I'll add a \`rate-limiter.ts\` module that:
363
+
364
+ - Uses an **in-memory token bucket** per client IP
365
+ - Supports configurable rate (requests/second) and burst size
366
+ - Returns \`429 Too Many Requests\` with \`Retry-After\` header
367
+ - Has a Redis adapter option for multi-instance deployments
368
+
369
+ Let me implement it:`},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:12Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/middleware/rate-limiter.ts",content:"// Token bucket rate limiter implementation"}}),raw:JSON.stringify({id:"tu-004-02",type:"tool_use"})},{sessionId:"sess-004",eventType:"tool_result",timestamp:"2026-02-27T09:00:13Z",content:"File written: src/middleware/rate-limiter.ts (87 lines)",raw:JSON.stringify({tool_use_id:"tu-004-02"})},{sessionId:"sess-004",eventType:"text",timestamp:"2026-02-27T09:00:18Z",content:"Now I need to wire the rate limiter into the Express middleware stack. It should go after the request-ID middleware but before route handlers."},{sessionId:"sess-005",eventType:"status",timestamp:"2026-02-27T06:00:01Z",content:"running"},{sessionId:"sess-005",eventType:"system",timestamp:"2026-02-27T06:00:02Z",content:`You are a database specialist. Focus on connection management, performance, and multi-tenant isolation.
370
+ Project: acme/alpha — Node.js + Express + PostgreSQL
371
+ Task: Refactor database connection pooling for multi-tenant isolation`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-005",eventType:"text",timestamp:"2026-02-27T06:00:05Z",content:"I'll refactor the DB layer to support per-tenant connection pools. This is needed because the current single-pool design means one slow tenant can exhaust connections for everyone."},{sessionId:"sess-005",eventType:"tool_use",timestamp:"2026-02-27T06:00:06Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/db/pool.ts"}}),raw:JSON.stringify({id:"tu-005-01",type:"tool_use"})},{sessionId:"sess-005",eventType:"tool_result",timestamp:"2026-02-27T06:00:07Z",content:`import pg from "pg";
372
+
373
+ const pool = new pg.Pool({
374
+ connectionString: process.env.DATABASE_URL,
375
+ max: 20,
376
+ idleTimeoutMillis: 30000,
377
+ });
378
+
379
+ export { pool };`,raw:JSON.stringify({tool_use_id:"tu-005-01"})},{sessionId:"sess-005",eventType:"text",timestamp:"2026-02-27T06:00:12Z",content:`The current pool is a single shared instance with \`max: 20\`. For multi-tenant isolation, I need:
380
+
381
+ 1. **A \`PoolManager\` class** that creates and caches per-tenant pools
382
+ 2. **Configurable limits** per tenant (max connections, idle timeout)
383
+ 3. **Health checks** with automatic pool eviction for unhealthy connections
384
+ 4. **Graceful shutdown** that drains all pools`},{sessionId:"sess-005",eventType:"tool_use",timestamp:"2026-02-27T06:00:14Z",content:JSON.stringify({tool:"Grep",args:{pattern:"import.*pool|from.*pool",path:"src/",output_mode:"content"}}),raw:JSON.stringify({id:"tu-005-02",type:"tool_use"})},{sessionId:"sess-005",eventType:"tool_result",timestamp:"2026-02-27T06:00:15Z",content:`src/db/index.ts:1:import { pool } from "./pool.js";
385
+ src/routes/users.ts:2:import { pool } from "../db/pool.js";
386
+ src/routes/register.ts:3:import { pool } from "../db/pool.js";
387
+ src/routes/admin.ts:4:import { pool } from "../db/pool.js";
388
+ src/services/billing.ts:2:import { pool } from "../db/pool.js";
389
+ src/services/analytics.ts:1:import { pool } from "../db/pool.js";`,raw:JSON.stringify({tool_use_id:"tu-005-02"})},{sessionId:"sess-005",eventType:"text",timestamp:"2026-02-27T06:00:20Z",content:`Six files import the pool directly. I'll need to:
390
+ 1. Create a new \`PoolManager\` abstraction
391
+ 2. Update all consumers to use \`getPool(tenantId)\` instead of the global pool
392
+ 3. Add middleware to extract tenant ID from the request
393
+
394
+ This is a significant refactor. Let me start with the PoolManager class.`},{sessionId:"sess-005",eventType:"usage",timestamp:"2026-02-27T06:30:00Z",content:JSON.stringify({input_tokens:67800,output_tokens:19300,cost_usd:.38})},{sessionId:"sess-005",eventType:"status",timestamp:"2026-02-27T06:30:01Z",content:"suspended"}],kB=[{id:"proj-alpha",name:"Workspace Alpha",description:"Core platform API and authentication services",repoUrl:"https://github.com/acme/alpha",environmentId:"env-local-01",status:"active",workingDirectory:"",useWorktrees:!0,defaultPersonaId:"",createdAt:"2026-01-15T10:00:00Z",updatedAt:"2026-01-15T10:00:00Z"},{id:"proj-beta",name:"Data Pipeline",description:"ETL pipelines for analytics and reporting",repoUrl:"https://github.com/acme/data-pipeline",environmentId:"env-docker-01",status:"active",workingDirectory:"",useWorktrees:!0,defaultPersonaId:"",createdAt:"2026-02-01T14:30:00Z",updatedAt:"2026-02-01T14:30:00Z"},{id:"proj-gamma",name:"Mobile App",description:"React Native cross-platform mobile application",repoUrl:"",environmentId:"env-local-01",status:"archived",workingDirectory:"",useWorktrees:!0,defaultPersonaId:"",createdAt:"2025-11-20T09:00:00Z",updatedAt:"2025-11-20T09:00:00Z"}],wB=[{id:"task-001",workspaceId:"proj-alpha",title:"Implement JWT authentication",description:"Replace session-based auth with JWT tokens across all protected routes",status:"working",branch:"feat/jwt-auth",latestSessionId:"sess-001",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-25T10:00:00Z",parentTaskId:"",depth:0,childTaskIds:["task-001a","task-001b","task-001c"],canDecompose:!0,defaultPersonaId:"",workpad:JSON.stringify({status:"in_progress",summary:"Design and implement JWT-based authentication with access/refresh tokens, replacing session-based auth.",extra:{approach:"Replace express-session with JWT Bearer tokens. Access tokens expire in 24h, refresh tokens stored in DB.",files_changed:["src/middleware/auth.ts","src/routes/login.ts","src/routes/protected.ts"],decisions:["Chose jsonwebtoken over jose for consistency with existing codebase","24h access token expiry — long enough for dev sessions, short enough for security","Refresh tokens are 48-byte random hex stored in DB with user association"],blockers:"Need to verify token rotation strategy with security team before merging"}})},{id:"task-001a",workspaceId:"proj-alpha",title:"Design token schema",description:"Define JWT payload structure, expiry, and refresh token strategy",status:"complete",branch:"feat/jwt-auth/design-token-schema",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-25T10:10:00Z",parentTaskId:"task-001",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-001b",workspaceId:"proj-alpha",title:"Implement auth middleware",description:"Build Express middleware that verifies JWT Bearer tokens",status:"working",branch:"feat/jwt-auth/implement-auth-middleware",latestSessionId:"sess-001",dependsOn:[],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-25T10:15:00Z",parentTaskId:"task-001",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-001c",workspaceId:"proj-alpha",title:"Write auth integration tests",description:"End-to-end tests for login flow, token refresh, and protected route access",status:"not_started",branch:"",latestSessionId:"",dependsOn:["task-001b"],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-25T10:20:00Z",parentTaskId:"task-001",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-002",workspaceId:"proj-alpha",title:"Add rate limiting",description:"Implement token-bucket rate limiting for public API endpoints",status:"not_started",branch:"",latestSessionId:"",dependsOn:["task-001"],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-25T10:05:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-003",workspaceId:"proj-alpha",title:"Set up OpenAPI documentation",description:"Generate Swagger docs from route decorators and serve at /api/docs",status:"paused",branch:"feat/openapi-docs",latestSessionId:"sess-002",dependsOn:[],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-24T16:00:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-004",workspaceId:"proj-alpha",title:"Database connection pooling",description:"Switch from single connection to a connection pool with health checks",status:"complete",branch:"feat/db-pool",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:4,createdAt:"2026-02-23T11:00:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-005",workspaceId:"proj-alpha",title:"Fix N+1 query in user list",description:"Use a JOIN instead of per-row lookups in GET /api/users",status:"not_started",branch:"fix/user-list-n1",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:5,createdAt:"2026-02-22T09:30:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-006",workspaceId:"proj-beta",title:"Add Parquet export support",description:"Allow pipeline outputs to be written as Parquet files for Spark consumption",status:"working",branch:"feat/parquet-export",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-26T08:00:00Z",parentTaskId:"",depth:0,childTaskIds:["task-006a","task-006b","task-006c","task-006d"],canDecompose:!0,defaultPersonaId:"",workpad:JSON.stringify({status:"in_progress",summary:"Plan for adding Parquet export support, including compression options and performance benchmarks.",extra:{approach:"Use apache-arrow npm package for Parquet write support. Map internal column types to Arrow type system.",compression:{supported:["snappy","zstd","gzip"],default:"snappy"},benchmarks:{"1M rows snappy":"2.3s","1M rows zstd":"3.1s","1M rows gzip":"4.8s"}}})},{id:"task-006a",workspaceId:"proj-beta",title:"Define Parquet schema mapping",description:"Map internal column types to Arrow/Parquet type system",status:"complete",branch:"feat/parquet-export/define-parquet-schema-mapping",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-26T08:05:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-006b",workspaceId:"proj-beta",title:"Implement row-group writer",description:"Write buffered row groups with configurable batch size",status:"complete",branch:"feat/parquet-export/implement-row-group-writer",latestSessionId:"",dependsOn:["task-006a"],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-26T08:10:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-006c",workspaceId:"proj-beta",title:"Add compression options",description:"Support Snappy, ZSTD, and GZIP compression for Parquet output",status:"working",branch:"feat/parquet-export/add-compression-options",latestSessionId:"sess-004",dependsOn:["task-006b"],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-26T08:15:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-006d",workspaceId:"proj-beta",title:"Write Parquet integration tests",description:"Round-trip tests: write Parquet, read back with pyarrow, verify data integrity",status:"not_started",branch:"",latestSessionId:"",dependsOn:["task-006c"],reviewNotes:void 0,sortOrder:4,createdAt:"2026-02-26T08:20:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-007",workspaceId:"proj-beta",title:"Implement incremental loads",description:"Track watermarks so pipelines only process new/changed rows",status:"working",branch:"feat/incremental",latestSessionId:"sess-004",dependsOn:[],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-26T08:30:00Z",parentTaskId:"",depth:0,childTaskIds:["task-007a","task-007b"],canDecompose:!0,defaultPersonaId:"",workpad:""},{id:"task-007a",workspaceId:"proj-beta",title:"Design watermark storage",description:"Define schema for per-pipeline high-watermark tracking",status:"complete",branch:"feat/incremental/design-watermark-storage",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-26T08:35:00Z",parentTaskId:"task-007",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-007b",workspaceId:"proj-beta",title:"Implement change detection query",description:"Generate WHERE clauses from watermarks to fetch only changed rows",status:"failed",branch:"feat/incremental/implement-change-detection-query",latestSessionId:"",dependsOn:["task-007a"],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-26T08:40:00Z",parentTaskId:"task-007",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""},{id:"task-008",workspaceId:"proj-beta",title:"Add pipeline monitoring dashboard",description:"Real-time metrics for pipeline throughput, latency, and error rates",status:"paused",branch:"feat/monitoring",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-26T09:00:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:""}],mc=[{id:"find-001",workspaceId:"proj-alpha",taskId:"task-001",sessionId:"sess-001",category:"architecture",title:"Auth middleware is tightly coupled to Express",content:"The current auth middleware directly references Express Request/Response types. Consider extracting a framework-agnostic token verification layer so we can reuse it in the WebSocket auth path.",tags:["auth","decoupling","middleware"],createdAt:"2026-02-27T08:16:00Z"},{id:"find-002",workspaceId:"proj-alpha",taskId:"task-003",sessionId:"sess-002",category:"api",title:"Missing pagination on GET /api/users",content:"The users endpoint returns all rows without limit/offset. For datasets over 10k rows this will cause timeouts. Recommend cursor-based pagination with a default page size of 50.",tags:["api","pagination","performance"],createdAt:"2026-02-27T07:31:00Z"},{id:"find-003",workspaceId:"proj-alpha",taskId:"task-005",sessionId:"sess-003",category:"bug",title:"Race condition in session cleanup",content:"When two requests hit /api/logout concurrently, the second call throws a 500 because the session row has already been deleted. Needs an idempotent DELETE or a conditional check.",tags:["bug","concurrency","sessions"],createdAt:"2026-02-26T22:50:00Z"},{id:"find-004",workspaceId:"proj-alpha",taskId:"task-004",sessionId:"",category:"decision",title:"Chose pg-pool over knex connection pool",content:"pg-pool gives us direct control over idle timeout, max connections, and health check queries. Knex wraps pg-pool anyway and adds overhead we don't need since we write raw SQL.",tags:["database","decision","postgres"],createdAt:"2026-02-23T11:30:00Z"},{id:"find-005",workspaceId:"proj-alpha",taskId:"",sessionId:"",category:"dependency",title:"jsonwebtoken has 3 high-severity CVEs",content:"The jsonwebtoken package (v8.x) has known vulnerabilities. Consider migrating to jose which is maintained, supports ESM, and covers the same JWS/JWE surface area with zero dependencies.",tags:["security","dependency","jwt"],createdAt:"2026-02-27T08:20:00Z"},{id:"find-006",workspaceId:"proj-alpha",taskId:"task-001",sessionId:"sess-001",category:"pattern",title:"Consistent error response shape",content:"All error responses should follow the shape `{ error: string, code: string, details?: unknown }`. Currently some routes return `{ message: string }` and others return `{ error: string }`.",tags:["api","consistency","error-handling"],createdAt:"2026-02-27T08:17:00Z"},{id:"find-007",workspaceId:"proj-beta",taskId:"task-007",sessionId:"sess-004",category:"architecture",title:"Watermark storage should be pluggable",content:"The incremental load watermarks are currently stored in a local SQLite file. For production multi-worker scenarios, this needs to be backed by a shared store (Redis or Postgres).",tags:["architecture","pipeline","scalability"],createdAt:"2026-02-27T09:05:00Z"}],NB=[{name:"anthropic",tokenType:"env_var",envVar:"ANTHROPIC_API_KEY",filePath:"",expiresAt:""},{name:"github",tokenType:"env_var",envVar:"GITHUB_TOKEN",filePath:"",expiresAt:"2026-12-31T23:59:59Z"},{name:"gcp-service-account",tokenType:"file",envVar:"",filePath:"/home/user/.config/gcloud/credentials.json",expiresAt:""}],jB=[{id:"persona-arch",name:"Software Architect",description:"Designs system architecture, defines interfaces, and decomposes large features into implementable tasks.",systemPrompt:"You are a senior software architect. Focus on clean interfaces, separation of concerns, and scalable patterns. When decomposing work, create concrete subtasks with clear acceptance criteria.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob","Write","Edit"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:50,mcpServers:"[]",createdAt:"2026-02-20T10:00:00Z",updatedAt:"2026-02-20T10:00:00Z",type:"agent",script:"",allowedMcpTools:["task_create","task_update","task_list","finding_post","finding_list","knowledge_search","knowledge_create_node","session_spawn"]},{id:"persona-fe",name:"Frontend Engineer",description:"React specialist — builds UI components, writes CSS, implements routing, and creates Playwright tests.",systemPrompt:"You are a frontend engineer specializing in React, TypeScript, and modern CSS. Follow component composition patterns, use semantic HTML, and write accessible markup.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob","Write","Edit","Bash"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:100,mcpServers:"[]",createdAt:"2026-02-20T10:05:00Z",updatedAt:"2026-02-20T10:05:00Z",type:"agent",script:"",allowedMcpTools:[]},{id:"persona-reviewer",name:"Code Reviewer",description:"Reviews diffs for correctness, security, and style. Posts findings for issues discovered.",systemPrompt:"You are a meticulous code reviewer. Check for security vulnerabilities, performance issues, and style consistency. Post findings for anything noteworthy.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:30,mcpServers:"[]",createdAt:"2026-02-20T10:10:00Z",updatedAt:"2026-02-20T10:10:00Z",type:"agent",script:"",allowedMcpTools:["finding_post","finding_list","knowledge_search"]},{id:"persona-tester",name:"QA Engineer",description:"Writes comprehensive test suites — unit tests, integration tests, and E2E Playwright specs.",systemPrompt:"You are a QA engineer focused on test coverage. Write tests that cover happy paths, edge cases, error scenarios, and accessibility. Use Playwright for E2E tests.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob","Write","Edit","Bash"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:80,mcpServers:"[]",createdAt:"2026-02-20T10:15:00Z",updatedAt:"2026-02-20T10:15:00Z",type:"agent",script:"",allowedMcpTools:[]},{id:"persona-lint",name:"Lint & Format",description:"Scripted persona — runs ESLint and Prettier on changed files, auto-fixes violations, and posts a findings summary.",systemPrompt:"",toolConfig:"{}",runtime:"genaiscript",model:"",maxTurns:1,mcpServers:"[]",createdAt:"2026-02-21T09:00:00Z",updatedAt:"2026-02-21T09:00:00Z",type:"script",script:`const files = env.files.filter(f => /\\.(ts|tsx|js)$/.test(f.filename));
395
+ for (const f of files) {
396
+ const eslintResult = await host.exec("npx", ["eslint", "--fix", f.filename]);
397
+ if (eslintResult.exitCode !== 0) {
398
+ env.findings.push({ category: "lint", title: \`Lint issues in \${f.filename}\`, content: eslintResult.stderr });
399
+ }
400
+ const prettierResult = await host.exec("npx", ["prettier", "--write", f.filename]);
401
+ if (prettierResult.exitCode !== 0) {
402
+ env.findings.push({ category: "format", title: \`Prettier issues in \${f.filename}\`, content: prettierResult.stderr });
403
+ }
404
+ }
405
+ env.findings.push({ category: "summary", title: "Lint & format pass complete", content: \`Ran ESLint and Prettier on \${files.length} files\` });`,allowedMcpTools:[]}],CB={"task-001b":[{id:"sess-001-prev",environmentId:"env-local-01",runtime:"claude-code",status:"stopped",endReason:"interrupted",prompt:"Implement auth middleware",startedAt:"2026-02-26T14:00:00Z"},{id:"sess-001",environmentId:"env-local-01",runtime:"claude-code",status:"running",prompt:"Implement auth middleware",startedAt:"2026-02-27T08:15:00Z"}],"task-006c":[{id:"sess-004",environmentId:"env-docker-01",runtime:"claude-code",status:"running",prompt:"Add compression options",startedAt:"2026-02-27T09:00:00Z"}]};function je(t){return new Date(Date.now()+t).toISOString()}const sb=[{label:"API Refactor",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:je(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:je(600),content:"I'll start by finding all API route files that need refactoring."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:je(1200),content:JSON.stringify({tool:"Glob",args:{pattern:"src/routes/**/*.ts"}}),raw:JSON.stringify({id:"stream-a-01",type:"tool_use"})}},{delayMs:1600,event:{eventType:"tool_result",timestamp:je(1600),content:`src/routes/users.ts
406
+ src/routes/auth.ts
407
+ src/routes/billing.ts
408
+ src/routes/admin.ts
409
+ src/routes/health.ts`,raw:JSON.stringify({tool_use_id:"stream-a-01"})}},{delayMs:2200,event:{eventType:"text",timestamp:je(2200),content:`Found 5 route files. Let me refactor users.ts to use Express Router with a middleware chain.
410
+
411
+ \`\`\`typescript
412
+ const router = Router();
413
+ router.use(authenticate);
414
+ router.use(validateBody);
415
+
416
+ router.get("/", listUsers);
417
+ router.post("/", createUser);
418
+ router.get("/:id", getUser);
419
+ router.put("/:id", updateUser);
420
+ router.delete("/:id", deleteUser);
421
+ \`\`\``}},{delayMs:3200,event:{eventType:"tool_use",timestamp:je(3200),content:JSON.stringify({tool:"Bash",args:{command:"npm test -- --testPathPattern=routes"}}),raw:JSON.stringify({id:"stream-a-02",type:"tool_use"})}},{delayMs:4e3,event:{eventType:"tool_result",timestamp:je(4e3),content:` PASS src/routes/__tests__/users.test.ts
422
+ PASS src/routes/__tests__/auth.test.ts
423
+ PASS src/routes/__tests__/billing.test.ts
424
+
425
+ Test Suites: 3 passed, 3 total
426
+ Tests: 22 passed, 22 total`,raw:JSON.stringify({tool_use_id:"stream-a-02"})}},{delayMs:4500,event:{eventType:"usage",timestamp:je(4500),content:JSON.stringify({input_tokens:28400,output_tokens:7200,cost_usd:.15})}},{delayMs:5e3,event:{eventType:"text",timestamp:je(5e3),content:"All 22 tests pass. The route refactoring is complete."}},{delayMs:5500,event:{eventType:"status",timestamp:je(5500),content:"completed"}}]},{label:"Database Migration",pauseForInput:!0,pauseAfterStep:4,steps:[{delayMs:0,event:{eventType:"status",timestamp:je(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:je(600),content:"Scanning the current database schema to plan the migration."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:je(1200),content:JSON.stringify({tool:"Read",args:{file_path:"migrations/001_initial.sql"}}),raw:JSON.stringify({id:"stream-b-01",type:"tool_use"})}},{delayMs:1800,event:{eventType:"tool_result",timestamp:je(1800),content:`CREATE TABLE users (
427
+ id UUID PRIMARY KEY,
428
+ name TEXT NOT NULL,
429
+ email TEXT UNIQUE NOT NULL,
430
+ created_at TIMESTAMPTZ DEFAULT now()
431
+ );
432
+
433
+ CREATE TABLE sessions (
434
+ id UUID PRIMARY KEY,
435
+ user_id UUID REFERENCES users(id),
436
+ expires_at TIMESTAMPTZ NOT NULL
437
+ );`,raw:JSON.stringify({tool_use_id:"stream-b-01"})}},{delayMs:2600,event:{eventType:"text",timestamp:je(2600),content:`I found the tables to modify:
438
+ - **users**: add column \`last_login_at\`
439
+ - **sessions**: add index on \`expires_at\`
440
+ - **audit_log**: new table
441
+
442
+ This migration will add a NOT NULL column to the \`users\` table. The table has **50,000+ rows** which may lock the table briefly.
443
+
444
+ Please confirm to proceed.`}}],resumeSteps:[{delayMs:500,event:{eventType:"text",timestamp:je(0),content:"Proceeding with migration."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:je(700),content:JSON.stringify({tool:"Bash",args:{command:"npm run migrate"}}),raw:JSON.stringify({id:"stream-b-02",type:"tool_use"})}},{delayMs:2200,event:{eventType:"tool_result",timestamp:je(1700),content:`Applying 002_add_last_login.sql... done
445
+ Applying 003_sessions_index.sql... done
446
+ Applying 004_audit_log.sql... done
447
+
448
+ 3 migrations applied successfully.`,raw:JSON.stringify({tool_use_id:"stream-b-02"})}},{delayMs:2800,event:{eventType:"text",timestamp:je(2300),content:"All 3 migrations applied successfully. The `audit_log` table is ready."}},{delayMs:3200,event:{eventType:"status",timestamp:je(2700),content:"completed"}}]},{label:"Test Writer",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:je(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:je(600),content:"I'll generate tests for `src/services/billing.ts`. Let me read the implementation first."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:je(1200),content:JSON.stringify({tool:"Read",args:{file_path:"src/services/billing.ts"}}),raw:JSON.stringify({id:"stream-c-01",type:"tool_use"})}},{delayMs:1800,event:{eventType:"tool_result",timestamp:je(1800),content:`import { StripeClient } from "./stripe-client.js";
449
+ import type { Invoice, LineItem } from "../types/billing.js";
450
+
451
+ export class BillingService {
452
+ constructor(private stripe: StripeClient) {}
453
+
454
+ async calculateMonthlyTotal(userId: string): Promise<number> {
455
+ const invoices = await this.stripe.listInvoices(userId);
456
+ return invoices.reduce((sum, inv) => sum + inv.total, 0);
457
+ }
458
+ }`,raw:JSON.stringify({tool_use_id:"stream-c-01"})}},{delayMs:2400,event:{eventType:"text",timestamp:je(2400),content:"The billing service imports from `./stripe-client.js`. Let me check if that module exists."}},{delayMs:2800,event:{eventType:"tool_use",timestamp:je(2800),content:JSON.stringify({tool:"Read",args:{file_path:"src/services/stripe-client.ts"}}),raw:JSON.stringify({id:"stream-c-02",type:"tool_use"})}},{delayMs:3200,event:{eventType:"tool_result",timestamp:je(3200),content:"Error: ENOENT: no such file or directory, open 'src/services/stripe-client.ts'",raw:JSON.stringify({tool_use_id:"stream-c-02",is_error:!0})}},{delayMs:3600,event:{eventType:"error",timestamp:je(3600),content:"Cannot resolve import 'src/services/stripe-client.ts' — module not found. The billing service depends on a Stripe client that doesn't exist in this environment."}},{delayMs:4e3,event:{eventType:"status",timestamp:je(4e3),content:"failed"}}]},{label:"Fix Auth Bug",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:je(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:je(600),content:"Let me investigate the authentication bug..."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:je(1200),content:JSON.stringify({tool:"Read",args:{file_path:"/src/middleware/auth.ts"}}),raw:JSON.stringify({id:"tool-mock-001"})}},{delayMs:1800,event:{eventType:"tool_result",timestamp:je(1800),content:`import jwt from "jsonwebtoken";
459
+ import type { Request, Response, NextFunction } from "express";
460
+
461
+ const JWT_SECRET = process.env.JWT_SECRET || "change-me";
462
+
463
+ export function verifyToken(req: Request, res: Response, next: NextFunction): void {
464
+ const header = req.headers.authorization;
465
+ if (!header?.startsWith("Bearer ")) {
466
+ res.status(401).json({ error: "Missing token" });
467
+ return;
468
+ }
469
+ try {
470
+ const decoded = jwt.verify(header.slice(7), JWT_SECRET);
471
+ if (decoded.exp > Date.now() / 1000) {
472
+ res.status(403).json({ error: "Token expired" });
473
+ return;
474
+ }
475
+ req.user = decoded;
476
+ next();
477
+ } catch {
478
+ res.status(403).json({ error: "Invalid token" });
479
+ }
480
+ }`,raw:JSON.stringify({tool_use_id:"tool-mock-001",is_error:!1})}},{delayMs:2600,event:{eventType:"text",timestamp:je(2600),content:"Found the issue — the token expiry check on line 14 is using `>` instead of `<`. A token is expired when `exp < now`, but the code checks `exp > now` which means it rejects *valid* tokens and accepts *expired* ones. Let me fix it."}},{delayMs:3400,event:{eventType:"tool_use",timestamp:je(3400),content:JSON.stringify({tool:"Edit",args:{file_path:"/src/middleware/auth.ts",old_string:" if (decoded.exp > Date.now() / 1000) {",new_string:" if (decoded.exp < Date.now() / 1000) {"}}),raw:JSON.stringify({id:"tool-mock-002"})}},{delayMs:4e3,event:{eventType:"tool_result",timestamp:je(4e3),content:"File updated successfully",raw:JSON.stringify({tool_use_id:"tool-mock-002",is_error:!1})}},{delayMs:4600,event:{eventType:"tool_use",timestamp:je(4600),content:JSON.stringify({tool:"Bash",args:{command:"npm test -- --grep auth"}}),raw:JSON.stringify({id:"tool-mock-003"})}},{delayMs:5800,event:{eventType:"tool_result",timestamp:je(5800),content:`[exit 0] > jest --grep auth
481
+
482
+ PASS src/auth.test.ts
483
+ ✓ validates JWT token (12ms)
484
+ ✓ rejects expired token (3ms)
485
+ ✓ handles missing header (1ms)
486
+
487
+ Tests: 3 passed, 3 total
488
+ Time: 1.234s`,raw:JSON.stringify({tool_use_id:"tool-mock-003",is_error:!1})}},{delayMs:6400,event:{eventType:"tool_use",timestamp:je(6400),content:JSON.stringify({tool:"Grep",args:{pattern:"decoded\\.exp",path:"src/"}}),raw:JSON.stringify({id:"tool-mock-004"})}},{delayMs:7e3,event:{eventType:"tool_result",timestamp:je(7e3),content:`src/middleware/auth.ts:14: if (decoded.exp < Date.now() / 1000) {
489
+ src/utils/token-refresh.ts:28: const remaining = decoded.exp - Date.now() / 1000;`,raw:JSON.stringify({tool_use_id:"tool-mock-004",is_error:!1})}},{delayMs:7800,event:{eventType:"text",timestamp:je(7800),content:"Fixed. The token expiry comparison was inverted — `decoded.exp > Date.now()` should have been `<` (a token is expired when its `exp` is in the past). The other occurrence in `token-refresh.ts` uses subtraction (not comparison), so it was already correct. All 3 auth tests pass."}},{delayMs:8400,event:{eventType:"usage",timestamp:je(8400),content:JSON.stringify({input_tokens:42600,output_tokens:1850,cost_usd:.12})}},{delayMs:8800,event:{eventType:"status",timestamp:je(8800),content:"completed"}}]}],ab=400;function EB({children:t}){const[s,i]=y.useState(xB),[o,c]=y.useState(SB),[u,d]=y.useState(TB),[m,h]=y.useState(void 0),[g,v]=y.useState(kB),[_,b]=y.useState(wB),[S,T]=y.useState(mc),[N,j]=y.useState(void 0),w=!1,[C,A]=y.useState(NB),[M,D]=y.useState({claude:"off",github:"off",copilot:"off",codex:"off",goose:"off"}),[E,$]=y.useState(jB),[z]=y.useState(CB),[K,F]=y.useState(""),[ee,ae]=y.useState(rs),[me,ie]=y.useState(va),[X,O]=y.useState(void 0),[q,te]=y.useState(void 0),[re,ue]=y.useState(""),Fe=y.useRef(void 0),Ne=y.useRef(0),ke=y.useRef(0),Me=y.useRef(new Set),le=y.useRef(new Map),ve=y.useRef(_);ve.current=_;const de=y.useRef(new Map),Ie=y.useRef(new Map),yt=y.useCallback(P=>(Ne.current+=1,`mock-${P}-${String(Ne.current).padStart(3,"0")}`),[]),fn=y.useCallback(()=>{const P=sb[ke.current%sb.length];return ke.current+=1,P},[]),B=y.useCallback((P,Q,oe)=>{const ce=setTimeout(()=>{var fe;Me.current.delete(ce),oe&&((fe=le.current.get(oe))==null||fe.delete(ce)),P()},Q);Me.current.add(ce),oe&&(le.current.has(oe)||le.current.set(oe,new Set),le.current.get(oe).add(ce))},[]),Re=y.useCallback(P=>{const Q=le.current.get(P);Q&&(Q.forEach(oe=>{clearTimeout(oe),Me.current.delete(oe)}),le.current.delete(P))},[]),Qe=y.useCallback((P,Q,oe)=>{c(ce=>ce.map(fe=>fe.id===P?{...fe,status:Q,...oe!==void 0?{endReason:oe}:{}}:fe))},[]),et=y.useCallback(P=>{d(Q=>[...Q,P])},[]),$e=y.useCallback((P,Q,oe)=>{Q.forEach((ce,fe)=>{B(()=>{const Le={sessionId:P,...ce.event,timestamp:new Date().toISOString()};if(et(Le),ce.event.eventType==="status"){const ye=Zx(ce.event.content),Ce=Kx(ce.event.content);Qe(P,ye,Ce)}fe===Q.length-1&&oe&&oe()},ce.delayMs,P)})},[B,et,Qe]),es=y.useCallback((P,Q,oe,ce)=>{console.log("[MockGrackle] spawn",{environmentId:P,prompt:Q,runtime:ce});const fe=yt("sess"),Le={id:fe,environmentId:P,runtime:ce||"claude-code",status:"running",prompt:Q,startedAt:new Date().toISOString()};c(Ce=>[...Ce,Le]),h(fe);const ye=fn();if(console.log(`[MockGrackle] Playing scenario: ${ye.label}`),ye.pauseForInput){const Ce=ye.pauseAfterStep??ye.steps.length-1,Ge=ye.steps.slice(0,Ce+1),lt=Ge.length>0?Ge[Ge.length-1].delayMs:0;$e(fe,Ge),B(()=>{Qe(fe,"idle"),et({sessionId:fe,eventType:"status",timestamp:new Date().toISOString(),content:"idle"})},lt+ab,fe),ye.resumeSteps&&de.current.set(fe,ye.resumeSteps)}else $e(fe,ye.steps)},[yt,fn,$e,B,Qe,et]),Hs=y.useCallback(P=>{console.log("[MockGrackle] kill",P),Re(P),de.current.delete(P),Qe(P,"stopped","killed"),et({sessionId:P,eventType:"status",timestamp:new Date().toISOString(),content:"killed"}),b(Q=>Q.map(oe=>oe.latestSessionId===P&&oe.status==="working"?{...oe,status:"not_started"}:oe))},[Re,Qe,et]),kn=y.useCallback(P=>{console.log("[MockGrackle] stopGraceful",P),Re(P),de.current.delete(P),Qe(P,"stopped","terminated"),et({sessionId:P,eventType:"status",timestamp:new Date().toISOString(),content:"terminated"}),b(Q=>Q.map(oe=>oe.latestSessionId===P&&oe.status==="working"?{...oe,status:"not_started"}:oe))},[Re,Qe,et]),Vn=y.useCallback(()=>{console.log("[MockGrackle] refresh")},[]),ts=y.useCallback(P=>{console.log("[MockGrackle] loadSessionEvents",P)},[]),$s=y.useCallback(()=>{console.log("[MockGrackle] clearEvents"),d([])},[]),Hn=y.useCallback((P,Q,oe,ce,fe,Le,ye,Ce,Ge)=>{console.log("[MockGrackle] createWorkspace",{name:P,description:Q});const lt={id:yt("proj"),name:P,description:Q||"",repoUrl:oe||"",environmentId:ce||"",status:"active",workingDirectory:ye||"",useWorktrees:Le??!0,defaultPersonaId:fe||"",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};v(qe=>[...qe,lt]),Ce&&Ce()},[yt]),Ae=y.useCallback(P=>{console.log("[MockGrackle] archiveWorkspace",P),v(Q=>Q.map(oe=>oe.id===P?{...oe,status:"archived"}:oe))},[]),We=y.useCallback(P=>{console.log("[MockGrackle] loadTasks",P)},[]),zr=y.useCallback((P,Q,oe,ce,fe,Le,ye,Ce,Ge)=>{console.log("[MockGrackle] createTask",{workspaceId:P,title:Q,parentTaskId:fe}),b(lt=>{const Bt=lt.filter(dt=>dt.workspaceId===P).reduce((dt,zt)=>Math.max(dt,zt.sortOrder),0),Ht=fe?lt.find(dt=>dt.id===fe):void 0;if(fe&&!Ht)return console.warn("[MockGrackle] Parent task not found:",fe),lt;if(Ht&&!Ht.canDecompose)return console.warn("[MockGrackle] Parent task does not have decomposition rights:",fe),lt;const jt=Ht?Ht.depth+1:0,Qt={id:yt("task"),workspaceId:P,title:Q,description:oe||"",status:"not_started",branch:"",latestSessionId:"",dependsOn:ce||[],reviewNotes:void 0,sortOrder:Bt+1,createdAt:new Date().toISOString(),parentTaskId:fe||"",depth:jt,childTaskIds:[],canDecompose:ye??!fe,defaultPersonaId:Le||"",workpad:""};return[...lt,Qt]}),Ce&&Ce()},[yt]),mo=y.useCallback((P,Q,oe,ce)=>{var lt;console.log("[MockGrackle] startTask",{taskId:P});const fe=ve.current.find(qe=>qe.id===P),Le=(fe==null?void 0:fe.title)??"",ye=yt("sess"),Ce={id:ye,environmentId:"env-local-01",runtime:"claude-code",status:"running",prompt:Le||P,startedAt:new Date().toISOString()};c(qe=>[...qe,Ce]),b(qe=>qe.map(Bt=>Bt.id===P?{...Bt,status:"working",latestSessionId:ye,branch:`mock/${P.slice(0,8)}`}:Bt));const Ge=fn();if(console.log(`[MockGrackle] Playing task scenario: ${Ge.label}`),Ge.pauseForInput){const qe=Ge.pauseAfterStep??Ge.steps.length-1,Bt=Ge.steps.slice(0,qe+1),Ht=Bt.length>0?Bt[Bt.length-1].delayMs:0;if($e(ye,Bt),B(()=>{Qe(ye,"idle"),et({sessionId:ye,eventType:"status",timestamp:new Date().toISOString(),content:"idle"})},Ht+ab,ye),Ge.resumeSteps){const jt=[...Ge.resumeSteps];de.current.set(ye,jt);const Qt=jt.reduce((dt,zt)=>Math.max(dt,zt.delayMs),0);Ie.current.set(ye,{taskId:P,delayAfterResume:Qt+200})}}else{const qe=Ge.steps.length>0?Ge.steps[Ge.steps.length-1].delayMs:0;$e(ye,Ge.steps);const Bt=(lt=Ge.steps[Ge.steps.length-1])==null?void 0:lt.event.content;B(()=>{Bt==="completed"?b(Ht=>Ht.map(jt=>jt.id===P&&jt.status==="working"?{...jt,status:"paused"}:jt)):Bt==="failed"&&b(Ht=>Ht.map(jt=>jt.id===P&&jt.status==="working"?{...jt,status:"failed"}:jt))},qe+100,ye)}},[yt,fn,$e,B,Qe,et]),ho=y.useCallback((P,Q)=>{console.log("[MockGrackle] sendInput",{sessionId:P,text:Q}),et({sessionId:P,eventType:"output",timestamp:new Date().toISOString(),content:`User input: ${Q}`}),Qe(P,"running"),et({sessionId:P,eventType:"status",timestamp:new Date().toISOString(),content:"running"});const oe=de.current.get(P);if(oe)de.current.delete(P),$e(P,oe);else{const fe=[{delayMs:500,event:{eventType:"output",timestamp:new Date().toISOString(),content:"I received your input, continuing..."}},{delayMs:1500,event:{eventType:"status",timestamp:new Date().toISOString(),content:"completed"}}];$e(P,fe)}const ce=Ie.current.get(P);ce&&(Ie.current.delete(P),B(()=>{b(fe=>fe.map(Le=>Le.id===ce.taskId&&Le.status==="working"?{...Le,status:"paused"}:Le))},ce.delayAfterResume,P))},[et,Qe,$e,B]),Gs=y.useCallback(P=>{console.log("[MockGrackle] completeTask",P),b(Q=>Q.map(oe=>oe.id===P?{...oe,status:"complete"}:oe))},[]),Pr=y.useCallback(P=>{console.log("[MockGrackle] resumeTask",P)},[]),go=y.useCallback((P,Q,oe,ce,fe)=>{console.log("[MockGrackle] updateTask",{taskId:P,title:Q}),b(Le=>Le.map(ye=>ye.id===P?{...ye,title:Q.trim()||ye.title,description:oe,dependsOn:ce,...fe!==void 0?{defaultPersonaId:fe}:{}}:ye))},[]),Vr=y.useCallback(P=>{console.log("[MockGrackle] deleteTask",P),b(Q=>Q.filter(oe=>oe.id!==P))},[]),Hr=y.useCallback(P=>{console.log("[MockGrackle] loadFindings",P),T(mc.filter(Q=>Q.workspaceId===P))},[]),qs=y.useCallback(()=>{console.log("[MockGrackle] loadAllFindings"),T([...mc])},[]),Yt=y.useCallback(P=>{console.log("[MockGrackle] loadFinding",P);const Q=mc.find(oe=>oe.id===P);j(Q)},[]),$n=y.useCallback((P,Q,oe,ce,fe)=>{console.log("[MockGrackle] postFinding",{workspaceId:P,title:Q});const Le={id:yt("find"),workspaceId:P,taskId:"",sessionId:"",category:ce||"general",title:Q,content:oe,tags:fe||[],createdAt:new Date().toISOString()};T(ye=>[...ye,Le])},[yt]),Jt=y.useCallback(()=>{console.log("[MockGrackle] loadEnvironments")},[]),$r=y.useCallback((P,Q,oe)=>{console.log("[MockGrackle] addEnvironment",{displayName:P,adapterType:Q,adapterConfig:oe})},[]),Gr=y.useCallback((P,Q)=>{console.log("[MockGrackle] updateEnvironment",{environmentId:P,...Q}),i(oe=>oe.map(ce=>ce.id!==P?ce:{...ce,...Q.displayName!==void 0?{displayName:Q.displayName}:{},...Q.adapterConfig!==void 0?{adapterConfig:JSON.stringify(Q.adapterConfig)}:{}}))},[]),qr=y.useCallback(()=>{console.log("[MockGrackle] loadTokens")},[]),ja=y.useCallback((P,Q,oe,ce,fe)=>{console.log("[MockGrackle] setToken",{name:P,tokenType:oe}),A(Le=>[...Le.filter(Ce=>Ce.name!==P),{name:P,tokenType:oe,envVar:ce,filePath:fe,expiresAt:""}])},[]),Ca=y.useCallback(P=>{console.log("[MockGrackle] deleteToken",P),A(Q=>Q.filter(oe=>oe.name!==P))},[]),Ea=y.useCallback(P=>{console.log("[MockGrackle] updateCredentialProviders",P),D(P)},[]);y.useEffect(()=>()=>{Me.current.forEach(clearTimeout),Me.current.clear()},[]);const ps=y.useMemo(()=>({connected:!0,send:()=>{},environments:s,sessions:o,events:u,eventsDropped:0,lastSpawnedId:m,workspaces:g,tasks:_,findings:S,selectedFinding:N,findingLoading:w,tokens:C,credentialProviders:M,spawn:es,sendInput:ho,kill:Hs,stopGraceful:kn,refresh:Vn,loadSessionEvents:ts,clearEvents:$s,loadWorkspaces:()=>{console.log("[MockGrackle] loadWorkspaces")},createWorkspace:Hn,archiveWorkspace:Ae,updateWorkspace:(P,Q)=>{console.log("[MockGrackle] updateWorkspace",{workspaceId:P,...Q}),v(oe=>oe.map(ce=>ce.id!==P?ce:{...ce,...Q.name!==void 0?{name:Q.name}:{},...Q.description!==void 0?{description:Q.description}:{},...Q.repoUrl!==void 0?{repoUrl:Q.repoUrl}:{},...Q.environmentId!==void 0?{environmentId:Q.environmentId}:{},...Q.workingDirectory!==void 0?{workingDirectory:Q.workingDirectory}:{},...Q.useWorktrees!==void 0?{useWorktrees:Q.useWorktrees}:{},...Q.defaultPersonaId!==void 0?{defaultPersonaId:Q.defaultPersonaId}:{},updatedAt:new Date().toISOString()}))},loadTasks:We,loadAllTasks:()=>{console.log("[MockGrackle] loadAllTasks")},createTask:zr,startTask:mo,stopTask:P=>{console.log("[MockGrackle] stopTask",{taskId:P}),Gs(P)},completeTask:Gs,resumeTask:Pr,updateTask:go,deleteTask:Vr,loadFindings:Hr,loadAllFindings:qs,loadFinding:Yt,postFinding:$n,loadEnvironments:Jt,addEnvironment:$r,updateEnvironment:Gr,loadTokens:qr,setToken:ja,deleteToken:Ca,updateCredentialProviders:Ea,provisionStatus:{},provisionEnvironment:(P,Q)=>{},stopEnvironment:()=>{},removeEnvironment:()=>{},codespaces:[],codespaceError:"",codespaceListError:"",codespaceCreating:!1,listCodespaces:()=>{},createCodespace:()=>{},workspaceCreating:!1,taskStartingId:void 0,personas:E,createPersona:async(P,Q,oe,ce,fe,Le,ye,Ce,Ge)=>{console.log("[MockGrackle] createPersona",{name:P});const lt={id:`mock-persona-${Date.now()}`,name:P,description:Q,systemPrompt:oe,toolConfig:"{}",runtime:ce??"claude-code",model:fe||"",maxTurns:Le||0,mcpServers:"[]",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),type:ye||"agent",script:Ce||"",allowedMcpTools:Ge||[]};return $(qe=>[...qe,lt]),lt},updatePersona:async(P,Q,oe,ce,fe,Le,ye,Ce,Ge,lt)=>{console.log("[MockGrackle] updatePersona",{personaId:P,name:Q});const qe=E.find(jt=>jt.id===P);if(!qe)throw new Error(`Persona not found: ${P}`);const Bt=new Date().toISOString(),Ht={...qe,...Q!==void 0?{name:Q}:{},...oe!==void 0?{description:oe}:{},...ce!==void 0?{systemPrompt:ce}:{},...fe!==void 0?{runtime:fe}:{},...Le!==void 0?{model:Le}:{},...ye!==void 0?{maxTurns:ye}:{},...Ce!==void 0?{type:Ce}:{},...Ge!==void 0?{script:Ge}:{},...lt!==void 0?{allowedMcpTools:lt}:{},updatedAt:Bt};return $(jt=>jt.map(Qt=>Qt.id===P?Ht:Qt)),Ht},deletePersona:async P=>{console.log("[MockGrackle] deletePersona",P),$(Q=>Q.filter(oe=>oe.id!==P))},taskSessions:z,loadTaskSessions:P=>{console.log("[MockGrackle] loadTaskSessions",P)},appDefaultPersonaId:K,setAppDefaultPersonaId:async P=>{console.log("[MockGrackle] setAppDefaultPersonaId",P),F(P)},onboardingCompleted:!0,completeOnboarding:async()=>{console.log("[MockGrackle] completeOnboarding")},usageCache:{"workspace:proj-alpha":{inputTokens:214500,outputTokens:44850,costUsd:1.12,sessionCount:4},"workspace:proj-beta":{inputTokens:86700,outputTokens:23800,costUsd:.48,sessionCount:3},"task:task-001":{inputTokens:126800,outputTokens:20850,costUsd:.63,sessionCount:2},"task:task-006":{inputTokens:18900,outputTokens:4500,costUsd:.1,sessionCount:1},"task_tree:task-001":{inputTokens:126800,outputTokens:20850,costUsd:.63,sessionCount:2},"task_tree:task-006":{inputTokens:18900,outputTokens:4500,costUsd:.1,sessionCount:1}},loadUsage:(P,Q)=>{console.log(`[MockGrackle] loadUsage(${P}, ${Q})`)},knowledge:{graphData:{nodes:ee,links:me},selectedNode:X,loading:!1,selectedId:q,searchQuery:re,search:P=>{if(console.log("[MockGrackle] knowledge.search",P),!P.trim()){ue(P);return}ue(P);const Q=Fe.current,oe=Q?rs.filter(ye=>!ye.workspaceId||ye.workspaceId===Q):rs,ce=P.toLowerCase(),fe=oe.filter(ye=>{var Ce,Ge,lt;return ye.label.toLowerCase().includes(ce)||((Ce=ye.content)==null?void 0:Ce.toLowerCase().includes(ce))||((Ge=ye.tags)==null?void 0:Ge.some(qe=>qe.toLowerCase().includes(ce)))||((lt=ye.category)==null?void 0:lt.toLowerCase().includes(ce))});ae(fe);const Le=new Set(fe.map(ye=>ye.id));ie(va.filter(ye=>Le.has(ye.source)&&Le.has(ye.target))),te(void 0),O(void 0)},clearSearch:()=>{console.log("[MockGrackle] knowledge.clearSearch"),ue("");const P=Fe.current,Q=P?rs.filter(ce=>!ce.workspaceId||ce.workspaceId===P):rs;ae(Q);const oe=new Set(Q.map(ce=>ce.id));ie(va.filter(ce=>oe.has(ce.source)&&oe.has(ce.target)))},selectNode:P=>{console.log("[MockGrackle] knowledge.selectNode",P),te(P);const Q=P in nb?nb[P]:void 0;if(Q)O(Q);else{const oe=rs.find(ce=>ce.id===P);if(oe){const ce=va.filter(fe=>fe.source===P||fe.target===P).map(fe=>({fromId:fe.source,toId:fe.target,type:fe.type}));O({node:oe,edges:ce})}}},clearSelection:()=>{console.log("[MockGrackle] knowledge.clearSelection"),te(void 0),O(void 0)},expandNode:P=>{console.log("[MockGrackle] knowledge.expandNode",P),ae(Q=>{const oe=new Set(Q.map(Ce=>Ce.id)),ce=va.filter(Ce=>Ce.source===P||Ce.target===P),fe=new Set;for(const Ce of ce)oe.has(Ce.source)||fe.add(Ce.source),oe.has(Ce.target)||fe.add(Ce.target);if(fe.size===0)return Q;const Le=rs.filter(Ce=>fe.has(Ce.id)),ye=new Set([...oe,...fe]);return ie(Ce=>{const Ge=new Set(Ce.map(qe=>`${qe.source}|${qe.target}|${qe.type}`)),lt=va.filter(qe=>ye.has(qe.source)&&ye.has(qe.target)&&!Ge.has(`${qe.source}|${qe.target}|${qe.type}`));return lt.length>0?[...Ce,...lt]:Ce}),[...Q,...Le]})},loadRecent:P=>{if(console.log("[MockGrackle] knowledge.loadRecent",P),Fe.current=P,P){const Q=rs.filter(ce=>!ce.workspaceId||ce.workspaceId===P);ae(Q);const oe=new Set(Q.map(ce=>ce.id));ie(va.filter(ce=>oe.has(ce.source)&&oe.has(ce.target)))}else ae(rs),ie(va);ue("")},handleEvent:()=>!1}}),[s,o,u,m,g,_,S,N,C,M,E,z,K,ee,me,X,q,re,es,ho,Hs,kn,Vn,ts,$s,Hn,Ae,We,zr,mo,Gs,Pr,go,Vr,Hr,qs,Yt,$n,Jt,$r,Gr,qr,ja,Ca,Ea]);return l.jsx(vm.Provider,{value:ps,children:t})}const AB=3e3;function DB(t){const[s,i]=y.useState(!1),o=y.useRef(t.onSessionEvent);o.current=t.onSessionEvent;const c=y.useRef(t.onDomainEvent);c.current=t.onDomainEvent;const u=y.useRef(t.onConnect);u.current=t.onConnect;const d=y.useRef(t.onDisconnect);return d.current=t.onDisconnect,y.useEffect(()=>{let m=!1,h;async function g(){var v,_;if(!m){try{const b=xe.streamEvents({});i(!0),(v=u.current)==null||v.call(u);for await(const S of b){if(m)break;const T=S.event;if(T.case==="sessionEvent"){const N=T.value;o.current({sessionId:N.sessionId,type:N.type,timestamp:N.timestamp,content:N.content,raw:N.raw})}else if(T.case==="domainEvent"){const N=T.value;c.current({id:N.id,type:N.type,timestamp:N.timestamp,payloadJson:N.payloadJson})}}}catch(b){if(b instanceof zc&&b.code===kT.Unauthenticated){window.location.href=i2;return}}m||(i(!1),(_=d.current)==null||_.call(d),h=setTimeout(()=>{g().catch(()=>{})},AB))}}return g().catch(()=>{}),()=>{m=!0,clearTimeout(h),i(!1)}},[]),{connected:s}}function RB(t){return{id:t.id,displayName:t.displayName,adapterType:t.adapterType,adapterConfig:t.adapterConfig||"{}",status:t.status,bootstrapped:t.bootstrapped}}function ib(t){return{id:t.id,environmentId:t.environmentId,runtime:t.runtime,status:t.status,prompt:t.prompt,startedAt:t.startedAt,endedAt:t.endedAt||void 0,error:t.error||void 0,endReason:t.endReason||void 0,personaId:t.personaId||void 0,inputTokens:t.inputTokens,outputTokens:t.outputTokens,costUsd:t.costUsd}}function MB(t){return{sessionId:t.sessionId,eventType:Sb(t.type),timestamp:t.timestamp,content:t.content,raw:t.raw||void 0}}function IB(t){return{id:t.id,name:t.name,description:t.description,repoUrl:t.repoUrl,environmentId:t.environmentId,status:wT(t.status),workingDirectory:t.workingDirectory,useWorktrees:t.useWorktrees,defaultPersonaId:t.defaultPersonaId,createdAt:t.createdAt,updatedAt:t.updatedAt}}function ob(t){return{id:t.id,workspaceId:t.workspaceId??void 0,title:t.title,description:t.description,status:NT(t.status),branch:t.branch,latestSessionId:t.latestSessionId,dependsOn:[...t.dependsOn],sortOrder:t.sortOrder,createdAt:t.createdAt,startedAt:t.startedAt||void 0,completedAt:t.completedAt||void 0,parentTaskId:t.parentTaskId,depth:t.depth,childTaskIds:[...t.childTaskIds],canDecompose:t.canDecompose,defaultPersonaId:t.defaultPersonaId,workpad:t.workpad}}function Hf(t){return{id:t.id,workspaceId:t.workspaceId,taskId:t.taskId,sessionId:t.sessionId,category:t.category,title:t.title,content:t.content,tags:[...t.tags],createdAt:t.createdAt}}function OB(t){return{name:t.name,tokenType:t.type,envVar:t.envVar,filePath:t.filePath,expiresAt:t.expiresAt}}function BB(t){return{claude:jT(t.claude),github:ac(t.github),copilot:ac(t.copilot),codex:ac(t.codex),goose:ac(t.goose)}}function LB(t){return{name:t.name,repository:t.repository,state:t.state,gitStatus:t.gitStatus}}function $f(t){return{id:t.id,name:t.name,description:t.description,systemPrompt:t.systemPrompt,toolConfig:t.toolConfig?JSON.stringify({allowedTools:[...t.toolConfig.allowedTools],disallowedTools:[...t.toolConfig.disallowedTools]}):"{}",runtime:t.runtime,model:t.model,maxTurns:t.maxTurns,mcpServers:JSON.stringify(t.mcpServers.map(s=>({name:s.name,command:s.command,args:[...s.args],tools:[...s.tools]}))),createdAt:t.createdAt,updatedAt:t.updatedAt,type:t.type||"agent",script:t.script,allowedMcpTools:[...t.allowedMcpTools]}}function UB(t){return{inputTokens:t.inputTokens,outputTokens:t.outputTokens,costUsd:t.costUsd,sessionCount:t.sessionCount}}function hc(t,s=0){return{id:t.id,label:t.title||t.label||t.id,kind:t.kind,category:t.category||void 0,sourceType:t.sourceType||void 0,sourceId:t.sourceId||void 0,content:t.content||void 0,tags:t.tags.length>0?[...t.tags]:void 0,workspaceId:t.workspaceId||void 0,createdAt:t.createdAt||void 0,updatedAt:t.updatedAt||void 0,val:s}}function Gf(t){return{source:t.fromId,target:t.toId,type:t.type}}const rb=5e3;function zB(){const[t,s]=y.useState([]),[i,o]=y.useState({}),c=y.useCallback(()=>{xe.listEnvironments({}).then(b=>{s(b.environments.map(RB))},()=>{})},[]),u=y.useCallback(b=>{switch(b.type){case"environment.added":return!0;case"environment.removed":{const S=b.payload.environmentId;return S&&(s(T=>T.filter(N=>N.id!==S)),o(T=>{const N={...T};return delete N[S],N})),!0}case"environment.changed":return c(),!0;case"environment.provision_progress":{const S=b.payload;if(typeof S.environmentId!="string"||typeof S.stage!="string"||typeof S.message!="string"||typeof S.progress!="number")return Fx("environment.provision_progress","invalid payload"),!0;if(o(T=>({...T,[S.environmentId]:{stage:S.stage,message:S.message,progress:S.progress}})),S.stage==="ready"){const T=S.environmentId;setTimeout(()=>{o(N=>{const j={...N};return delete j[T],j})},rb)}return!0}default:return!1}},[c]),d=y.useCallback(b=>{var S;if(b.type==="environments"){const T=Array.isArray((S=b.payload)==null?void 0:S.environments)?b.payload.environments:[];return s(T),!0}return!1},[]),m=y.useCallback((b,S,T)=>{xe.addEnvironment({displayName:b,adapterType:S,adapterConfig:JSON.stringify(T??{})}).catch(()=>{})},[]),h=y.useCallback((b,S)=>{xe.updateEnvironment({id:b,displayName:S.displayName,adapterConfig:S.adapterConfig?JSON.stringify(S.adapterConfig):void 0}).catch(()=>{})},[]),g=y.useCallback((b,S)=>{(async()=>{try{const N=xe.provisionEnvironment({id:b,force:S??!1});for await(const j of N)o(w=>({...w,[b]:{stage:j.stage,message:j.message,progress:j.progress}})),j.stage==="ready"&&setTimeout(()=>{o(w=>{const C={...w};return delete C[b],C})},rb)}catch{o(N=>{const j={...N};return delete j[b],j})}})().catch(()=>{})},[]),v=y.useCallback(b=>{xe.stopEnvironment({id:b}).catch(()=>{})},[]),_=y.useCallback(b=>{xe.removeEnvironment({id:b}).catch(()=>{})},[]);return{environments:t,provisionStatus:i,loadEnvironments:c,addEnvironment:m,updateEnvironment:h,provisionEnvironment:g,stopEnvironment:v,removeEnvironment:_,handleEvent:u,handleLegacyMessage:d}}const qf=new Set(["pending","running","idle"]),PB=new Set(["completed","failed","interrupted","hibernating","suspended"]),lb=["pending","running","idle"];function VB(){const[t,s]=y.useState([]),[i,o]=y.useState([]),[c,u]=y.useState(0),[d,m]=y.useState(void 0),[h,g]=y.useState({}),v=y.useCallback(()=>{xe.listSessions({}).then(D=>{const E=D.sessions.map(ib);s($=>{const z=new Map($.map(K=>[K.id,K]));return E.map(K=>{const F=z.get(K.id),ee=F==null?void 0:F.status;return!ee||ee===K.status?K:PB.has(ee)&&qf.has(K.status)?{...K,status:ee,...F.endReason!==void 0?{endReason:F.endReason}:{}}:qf.has(ee)&&qf.has(K.status)&&lb.indexOf(ee)>lb.indexOf(K.status)?{...K,status:ee}:K})})},()=>{})},[]),_=y.useCallback(D=>{if(D.type!=="session_event")return!1;if(!aB(D.payload))return Fx("session_event","payload is not a valid SessionEvent"),!0;const E=D.payload;let $=0;if(o(z=>{const K=[...z,E];return K.length>Yi?($=K.length-Yi,K.slice(-Yi)):K}),$>0&&u(z=>z+$),E.eventType==="usage")try{const z=JSON.parse(E.content),K=Number(z.input_tokens)||0,F=Number(z.output_tokens)||0,ee=Number(z.cost_usd)||0;(K>0||F>0||ee>0)&&s(ae=>ae.map(me=>me.id===E.sessionId?{...me,inputTokens:(me.inputTokens??0)+K,outputTokens:(me.outputTokens??0)+F,costUsd:(me.costUsd??0)+ee}:me))}catch{}if(E.eventType==="status"){const z=Zx(E.content),K=Kx(E.content);s(F=>F.some(ae=>ae.id===E.sessionId)?F.map(ae=>ae.id===E.sessionId?{...ae,status:z,...K!==void 0?{endReason:K}:{}}:ae):[...F,{id:E.sessionId,environmentId:"",runtime:"",status:z,prompt:"",startedAt:E.timestamp,...K!==void 0?{endReason:K}:{}}])}return!0},[]),b=y.useCallback(D=>{_({type:"session_event",payload:D})},[_]),S=y.useCallback(D=>{var E,$,z,K,F;switch(D.type){case"sessions":{const ee=Array.isArray((E=D.payload)==null?void 0:E.sessions)?D.payload.sessions:[];return s(ee),!0}case"spawned":{const ee=($=D.payload)==null?void 0:$.sessionId;return typeof ee=="string"&&ee&&m(ee),v(),!0}case"session_events":{const ee=Array.isArray((z=D.payload)==null?void 0:z.events)?D.payload.events:[];return ee.length>0&&o(ee),!0}case"task_sessions":{const ee=(K=D.payload)==null?void 0:K.taskId;if(typeof ee=="string"&&ee){const ae=Array.isArray((F=D.payload)==null?void 0:F.sessions)?D.payload.sessions:[];g(me=>({...me,[ee]:ae}))}return!0}default:return!1}},[v]),T=y.useCallback((D,E,$,z)=>{xe.spawnAgent({environmentId:D,prompt:E,personaId:$||"",workingDirectory:z||""}).then(K=>{m(K.id),v()},()=>{})},[v]),N=y.useCallback((D,E)=>{xe.sendInput({sessionId:D,text:E}).catch(()=>{})},[]),j=y.useCallback(D=>{xe.killAgent({id:D,graceful:!1}).catch(()=>{})},[]),w=y.useCallback(D=>{xe.killAgent({id:D,graceful:!0}).catch(()=>{})},[]),C=y.useCallback(D=>{xe.getSessionEvents({id:D}).then(E=>{const $=E.events.map(MB);if($.length>0){let z=0;o(K=>{const F=new Set;for(const me of K)me.sessionId===D&&F.add(`${me.timestamp}|${me.eventType}`);const ee=$.filter(me=>!F.has(`${me.timestamp}|${me.eventType}`)),ae=[...K,...ee].sort((me,ie)=>me.sessionId!==ie.sessionId?0:me.timestamp.localeCompare(ie.timestamp));return ae.length>Yi?(z=ae.length-Yi,ae.slice(-Yi)):ae}),z>0&&u(K=>K+z)}},()=>{})},[]),A=y.useCallback(()=>{o([]),u(0)},[]),M=y.useCallback(D=>{xe.getTaskSessions({id:D}).then(E=>{const $=E.sessions.map(ib);g(z=>({...z,[D]:$}))},()=>{})},[]);return{sessions:t,events:i,eventsDropped:c,lastSpawnedId:d,taskSessions:h,loadSessions:v,spawn:T,sendInput:N,kill:j,stopGraceful:w,loadSessionEvents:C,clearEvents:A,loadTaskSessions:M,handleMessage:_,handleSessionEvent:b,handleLegacyMessage:S}}function HB(){const[t,s]=y.useState([]),[i,o]=y.useState(!1),c=y.useCallback(()=>{xe.listWorkspaces({}).then(v=>{s(v.workspaces.map(IB))},()=>{})},[]),u=y.useCallback(v=>{switch(v.type){case"workspace.created":return o(!1),c(),!0;case"workspace.archived":case"workspace.updated":return c(),!0;default:return!1}},[c]),d=y.useCallback(()=>{o(!1)},[]),m=y.useCallback((v,_,b,S,T,N,j,w,C)=>{o(!0),xe.createWorkspace({name:v,description:_||"",repoUrl:b||"",environmentId:S||"",defaultPersonaId:T||void 0,useWorktrees:N??!0,workingDirectory:j||void 0}).then(()=>{o(!1),w==null||w()},A=>{o(!1);const M=A instanceof zc?A.message:"Failed to create workspace";C==null||C(M)})},[]),h=y.useCallback(v=>{xe.archiveWorkspace({id:v}).catch(()=>{})},[]),g=y.useCallback((v,_)=>{xe.updateWorkspace({id:v,..._}).catch(()=>{})},[]);return{workspaces:t,workspaceCreating:i,loadWorkspaces:c,createWorkspace:m,archiveWorkspace:h,updateWorkspace:g,handleEvent:u,onDisconnect:d}}function $B(){const[t,s]=y.useState([]),[i,o]=y.useState(void 0),c=y.useRef({}),u=y.useCallback(C=>{xe.listTasks({workspaceId:C}).then(A=>{const M=A.tasks.map(ob);s(D=>[...D.filter(E=>E.workspaceId!==C),...M])},()=>{})},[]),d=y.useCallback(()=>{xe.listTasks({}).then(C=>{const A=C.tasks.map(ob);s(M=>{const D=new Set(A.map(E=>E.id));return[...M.filter(E=>!D.has(E.id)),...A]})},()=>{})},[]),m=y.useCallback((C,A)=>{const M=D=>{clearTimeout(c.current[D]),c.current[D]=setTimeout(()=>{delete c.current[D],u(D)},200)};C?M(C):A&&s(D=>{const E=D.find($=>$.id===A);return E!=null&&E.workspaceId?M(E.workspaceId):d(),D})},[u,d]),h=y.useCallback(C=>{const A=C.payload;switch(C.type){case"task.created":{const M=typeof A.workspaceId=="string"?A.workspaceId:"";return M&&u(M),!0}case"task.started":{const M=typeof A.taskId=="string"?A.taskId:"",D=typeof A.sessionId=="string"?A.sessionId:"",E=typeof A.workspaceId=="string"?A.workspaceId:"";return o($=>M&&$===M?void 0:$),D&&M&&s($=>$.map(z=>z.id===M?{...z,latestSessionId:D}:z)),m(E,M),!0}case"task.completed":case"task.deleted":case"task.reparented":case"task.updated":{const M=typeof A.workspaceId=="string"?A.workspaceId:"",D=typeof A.taskId=="string"?A.taskId:"";return m(M,D),!0}default:return!1}},[u,m]),g=y.useCallback(()=>{o(void 0)},[]),v=y.useCallback(C=>{var A,M;if(C.type==="tasks"){const D=Array.isArray((A=C.payload)==null?void 0:A.tasks)?C.payload.tasks:[],E=typeof((M=C.payload)==null?void 0:M.workspaceId)=="string"&&C.payload.workspaceId?C.payload.workspaceId:"";return s(E?$=>[...$.filter(z=>z.workspaceId!==E),...D]:$=>{const z=new Set(D.map(K=>K.id));return[...$.filter(K=>!z.has(K.id)),...D]}),!0}return!1},[]),_=y.useCallback((C,A,M,D,E,$,z,K,F)=>{xe.createTask({workspaceId:C,title:A,description:M||"",dependsOn:D||[],parentTaskId:E||"",defaultPersonaId:$||void 0,canDecompose:z??void 0}).then(()=>{K==null||K()},ee=>{const ae=ee instanceof zc?ee.message:"Failed to create task";F==null||F(ae)})},[]),b=y.useCallback((C,A,M,D)=>{o(C),xe.startTask({taskId:C,personaId:A||"",environmentId:M||"",notes:D||""}).catch(()=>{o(void 0)})},[]),S=y.useCallback(C=>{xe.stopTask({id:C}).catch(()=>{})},[]),T=y.useCallback(C=>{xe.completeTask({id:C}).catch(()=>{})},[]),N=y.useCallback(C=>{xe.resumeTask({id:C}).catch(()=>{})},[]),j=y.useCallback((C,A,M,D,E)=>{xe.updateTask({id:C,title:A,description:M,dependsOn:D,...E!==void 0?{defaultPersonaId:E}:{}}).catch(()=>{})},[]),w=y.useCallback(C=>{xe.deleteTask({id:C}).catch(()=>{})},[]);return{tasks:t,taskStartingId:i,loadTasks:u,loadAllTasks:d,createTask:_,startTask:b,stopTask:S,completeTask:T,resumeTask:N,updateTask:j,deleteTask:w,handleEvent:h,onDisconnect:g,handleLegacyMessage:v}}function GB(){const[t,s]=y.useState([]),[i,o]=y.useState(void 0),[c,u]=y.useState(!1),d=y.useCallback(_=>{xe.queryFindings({workspaceId:_}).then(b=>{s(b.findings.map(Hf))},()=>{})},[]),m=y.useCallback(()=>{xe.queryFindings({workspaceId:""}).then(_=>{s(_.findings.map(Hf))},()=>{})},[]),h=y.useCallback(_=>{o(void 0),u(!0),xe.getFinding({id:_}).then(b=>{o(Hf(b)),u(!1)},()=>{o(void 0),u(!1)})},[]),g=y.useCallback(_=>{if(_.type==="finding.posted"){const b=typeof _.payload.workspaceId=="string"?_.payload.workspaceId:"";return b&&d(b),!0}return!1},[d]),v=y.useCallback((_,b,S,T,N)=>{xe.postFinding({workspaceId:_,title:b,content:S,category:T??"general",tags:N??[]}).catch(()=>{})},[]);return{findings:t,selectedFinding:i,findingLoading:c,loadFindings:d,loadAllFindings:m,loadFinding:h,postFinding:v,handleEvent:g}}function qB(){const[t,s]=y.useState([]),i=y.useCallback(()=>{xe.listTokens({}).then(d=>{s(d.tokens.map(OB))},()=>{})},[]),o=y.useCallback(d=>d.type==="token.changed"?(i(),!0):!1,[i]),c=y.useCallback((d,m,h,g,v)=>{xe.setToken({name:d,value:m,type:h,envVar:g,filePath:v}).catch(()=>{})},[]),u=y.useCallback(d=>{xe.deleteToken({name:d}).catch(()=>{})},[]);return{tokens:t,loadTokens:i,setToken:c,deleteToken:u,handleEvent:o}}function FB(){const[t,s]=y.useState({claude:"off",github:"off",copilot:"off",codex:"off",goose:"off"}),i=y.useCallback(()=>{xe.getCredentialProviders({}).then(u=>{s(BB(u))},()=>{})},[]),o=y.useCallback(u=>u.type==="credential.providers_changed"?(oB(u.payload)&&s(u.payload),!0):!1,[]),c=y.useCallback(u=>{const d=[{provider:"claude",value:u.claude},{provider:"github",value:u.github},{provider:"copilot",value:u.copilot},{provider:"codex",value:u.codex},{provider:"goose",value:u.goose}];for(const{provider:m,value:h}of d)xe.setCredentialProvider({provider:m,value:h}).catch(()=>{})},[]);return{credentialProviders:t,loadCredentials:i,updateCredentialProviders:c,handleEvent:o}}function ZB(){const[t,s]=y.useState([]),[i,o]=y.useState(""),[c,u]=y.useState(""),[d,m]=y.useState(!1),h=y.useCallback(()=>{xe.listCodespaces({}).then(v=>{s(v.codespaces.map(LB)),u(v.error)},()=>{})},[]),g=y.useCallback((v,_)=>{m(!0),o(""),xe.createCodespace({repo:v,machine:_??""}).then(()=>{m(!1),h()},b=>{m(!1);const S=b instanceof zc?b.message:"Failed to create codespace";o(S)})},[h]);return{codespaces:t,codespaceError:i,codespaceListError:c,codespaceCreating:d,listCodespaces:h,createCodespace:g}}function KB(){const[t,s]=y.useState([]),i=y.useCallback(()=>{xe.listPersonas({}).then(m=>{s(m.personas.map($f))},()=>{})},[]),o=y.useCallback(m=>{switch(m.type){case"persona.created":case"persona.updated":case"persona.deleted":return i(),!0;default:return!1}},[i]),c=y.useCallback((m,h,g,v,_,b,S,T,N)=>xe.createPersona({name:m,description:h,systemPrompt:g,runtime:v||"",model:_||"",maxTurns:b||0,type:S||"agent",script:T||"",allowedMcpTools:N||[]}).then(j=>{const w=$f(j);return s(C=>[...C.filter(A=>A.id!==w.id),w]),w}),[]),u=y.useCallback((m,h,g,v,_,b,S,T,N,j)=>{const w={id:m};return h!==void 0&&(w.name=h),g!==void 0&&(w.description=g),v!==void 0&&(w.systemPrompt=v),_!==void 0&&(w.runtime=_),b!==void 0&&(w.model=b),S!==void 0&&(w.maxTurns=S),T!==void 0&&(w.type=T),N!==void 0&&(w.script=N),j!==void 0&&(w.allowedMcpTools={tools:j}),xe.updatePersona(w).then(C=>{const A=$f(C);return s(M=>M.map(D=>D.id===A.id?A:D)),A})},[]),d=y.useCallback(async m=>{await xe.deletePersona({id:m}),s(h=>h.filter(g=>g.id!==m))},[]);return{personas:t,loadPersonas:i,createPersona:c,updatePersona:u,deletePersona:d,handleEvent:o}}function YB(t){if(t)try{return JSON.parse(t)}catch{return}}function JB(){const[t,s]=y.useState(new Map),[i,o]=y.useState([]),[c,u]=y.useState(void 0),[d,m]=y.useState(void 0),[h,g]=y.useState(!1),[v,_]=y.useState(""),b=y.useRef(""),S=y.useCallback(M=>{const D=M??"";b.current=D,_(""),g(!0),xe.listRecentKnowledgeNodes({limit:30,workspaceId:D}).then(E=>{const $=new Map,z=[];for(const K of E.nodes)$.set(K.id,hc(K));for(const K of E.edges)z.push(Gf(K));for(const K of z){const F=$.get(K.source);F&&(F.val+=1);const ee=$.get(K.target);ee&&(ee.val+=1)}s($),o(z),g(!1)},()=>{g(!1)})},[]),T=y.useCallback(M=>{M.trim()&&(_(M),m(void 0),u(void 0),g(!0),xe.searchKnowledge({query:M,limit:20,workspaceId:b.current}).then(D=>{const E=new Map,$=[];for(const z of D.results){z.node&&E.set(z.node.id,hc(z.node,z.edges.length));for(const K of z.edges)$.push(Gf(K))}s(E),o($),g(!1)},()=>{g(!1)}))},[]),N=y.useCallback(()=>{S(b.current)},[S]),j=y.useCallback(M=>{m(M),xe.getKnowledgeNode({id:M}).then(D=>{if(!D.node){u(void 0);return}u({node:hc(D.node,D.edges.length),edges:D.edges.map(E=>({fromId:E.fromId,toId:E.toId,type:E.type,metadata:YB(E.metadataJson)}))})},()=>{u(void 0)})},[]),w=y.useCallback(()=>{m(void 0),u(void 0)},[]),C=y.useCallback(M=>{xe.expandKnowledgeNode({id:M,depth:1}).then(D=>{s(E=>{const $=new Map(E);for(const z of D.nodes)$.has(z.id)||$.set(z.id,hc(z));return $}),o(E=>{const $=new Set(E.map(K=>`${K.source}:${K.target}:${K.type}`)),z=[];for(const K of D.edges){const F=Gf(K),ee=`${F.source}:${F.target}:${F.type}`;$.has(ee)||z.push(F)}return[...E,...z]})},()=>{})},[]),A=y.useCallback(M=>!1,[]);return{graphData:{nodes:[...t.values()],links:i},selectedNode:c,selectedId:d,loading:h,searchQuery:v,search:T,clearSearch:N,selectNode:j,clearSelection:w,expandNode:C,loadRecent:S,handleEvent:A}}function WB(){const[t,s]=y.useState(""),[i,o]=y.useState(void 0),[c,u]=y.useState({}),d=zB(),m=VB(),h=HB(),g=$B(),v=GB(),_=qB(),b=FB(),S=ZB(),T=KB(),N=JB(),{connected:j}=DB({onSessionEvent:F=>{m.handleSessionEvent({sessionId:F.sessionId,eventType:Sb(F.type),timestamp:F.timestamp,content:F.content,raw:F.raw||void 0})},onDomainEvent:F=>{try{const ee=JSON.parse(F.payloadJson);E({id:F.id,type:F.type,timestamp:F.timestamp,payload:ee})}catch{console.warn("[grackle] Failed to parse domain event payloadJson:",F.payloadJson)}},onConnect:$,onDisconnect:z}),w="default_persona_id",C="onboarding_completed",A=y.useCallback(async F=>{const ee=await xe.setSetting({key:w,value:F});s(ee.value)},[]),M=y.useCallback(()=>{o(!0),xe.setSetting({key:C,value:"true"}).catch(()=>{})},[]),D=y.useCallback((F,ee)=>{xe.getUsage({scope:F,id:ee}).then(ae=>{const me=`${F}:${ee}`;u(ie=>({...ie,[me]:UB(ae)}))},()=>{})},[]);function E(F){const ee=F.payload.key,ae=F.payload.value;if(F.type==="setting.changed"){ee===w&&s(ae??""),ee===C&&o(ae==="true");return}if(d.handleEvent(F)){(F.type==="environment.removed"||F.type==="environment.changed")&&m.loadSessions();return}if(!h.handleEvent(F)){if(g.handleEvent(F)){F.type==="task.started"&&m.loadSessions();return}v.handleEvent(F)||_.handleEvent(F)||b.handleEvent(F)||T.handleEvent(F)||N.handleEvent(F)}}function $(){d.loadEnvironments(),m.loadSessions(),h.loadWorkspaces(),_.loadTokens(),b.loadCredentials(),T.loadPersonas(),xe.getSetting({key:w}).then(F=>{s(F.value)},()=>{}),xe.getSetting({key:C}).then(F=>{o(F.value==="true")},()=>{}),g.loadAllTasks()}function z(){h.onDisconnect(),g.onDisconnect()}const K=y.useCallback(()=>{d.loadEnvironments(),m.loadSessions(),h.loadWorkspaces(),_.loadTokens()},[d.loadEnvironments,m.loadSessions,h.loadWorkspaces,_.loadTokens]);return{connected:j,environments:d.environments,sessions:m.sessions,events:m.events,eventsDropped:m.eventsDropped,lastSpawnedId:m.lastSpawnedId,workspaces:h.workspaces,tasks:g.tasks,findings:v.findings,selectedFinding:v.selectedFinding,findingLoading:v.findingLoading,tokens:_.tokens,spawn:m.spawn,sendInput:m.sendInput,kill:m.kill,stopGraceful:m.stopGraceful,refresh:K,loadSessionEvents:m.loadSessionEvents,clearEvents:m.clearEvents,loadWorkspaces:h.loadWorkspaces,createWorkspace:h.createWorkspace,archiveWorkspace:h.archiveWorkspace,updateWorkspace:h.updateWorkspace,loadTasks:g.loadTasks,loadAllTasks:g.loadAllTasks,createTask:g.createTask,startTask:g.startTask,stopTask:g.stopTask,completeTask:g.completeTask,resumeTask:g.resumeTask,updateTask:g.updateTask,deleteTask:g.deleteTask,loadFindings:v.loadFindings,loadAllFindings:v.loadAllFindings,loadFinding:v.loadFinding,postFinding:v.postFinding,loadEnvironments:d.loadEnvironments,addEnvironment:d.addEnvironment,updateEnvironment:d.updateEnvironment,loadTokens:_.loadTokens,setToken:_.setToken,deleteToken:_.deleteToken,credentialProviders:b.credentialProviders,updateCredentialProviders:b.updateCredentialProviders,provisionStatus:d.provisionStatus,provisionEnvironment:d.provisionEnvironment,stopEnvironment:d.stopEnvironment,removeEnvironment:d.removeEnvironment,codespaces:S.codespaces,codespaceError:S.codespaceError,codespaceListError:S.codespaceListError,codespaceCreating:S.codespaceCreating,listCodespaces:S.listCodespaces,createCodespace:S.createCodespace,workspaceCreating:h.workspaceCreating,taskStartingId:g.taskStartingId,personas:T.personas,createPersona:T.createPersona,updatePersona:T.updatePersona,deletePersona:T.deletePersona,taskSessions:m.taskSessions,loadTaskSessions:m.loadTaskSessions,appDefaultPersonaId:t,setAppDefaultPersonaId:A,onboardingCompleted:i,completeOnboarding:M,usageCache:c,loadUsage:D,knowledge:N}}function XB({children:t}){const s=WB();return l.jsx(vm.Provider,{value:s,children:t})}function QB(t,s){const i=y.useRef(null);y.useEffect(()=>{const o=i.current;if(i.current=t,o===null)return;const c=new Map;for(const d of o)c.set(d.id,d);const u=new Set;for(const d of t){u.add(d.id);const m=c.get(d.id);if(m&&m.status!==d.status&&d.status!=="sleeping"){if(d.status==="connecting"){s("Provisioning environment…","info");continue}d.status==="connected"?s("Environment connected","success"):d.status==="error"?s("Environment provision failed","error"):d.status==="disconnected"&&(m.status==="connected"?s("Environment disconnected","warning"):s("Environment stopped","info"))}}for(const d of o)u.has(d.id)||s("Environment removed","info")},[t,s])}const eL={working:{message:"Task is now running",variant:"info"},paused:{message:"Task paused",variant:"warning"},complete:{message:"Task complete",variant:"success"},failed:{message:"Task failed to complete",variant:"error"}};function tL(t){return eL[t]}function nL(t,s){if(t===void 0)return[];const i=[],o=new Map;for(const u of t)o.set(u.id,u);const c=new Set;for(const u of s){c.add(u.id);const d=o.get(u.id);if(!d||d.status===u.status)continue;const m=tL(u.status);m&&i.push(m)}for(const u of t)c.has(u.id)||i.push({message:"Task deleted",variant:"info"});return i}function sL(t,s){const i=y.useRef(void 0);y.useEffect(()=>{const o=i.current;i.current=t;const c=nL(o,t);for(const u of c)s(u.message,u.variant)},[t,s])}const aL="_dashboard_16pzm_1",iL="_kpiStrip_16pzm_11",oL="_kpiCard_16pzm_23",rL="_kpiValue_16pzm_68",lL="_kpiLabel_16pzm_76",cL="_bodyGrid_16pzm_84",uL="_section_16pzm_96",dL="_sectionHeader_16pzm_109",fL="_sectionIcon_16pzm_118",pL="_sectionTitle_16pzm_123",mL="_sectionCount_16pzm_131",hL="_sectionBody_16pzm_138",gL="_emptyHint_16pzm_143",vL="_sessionRow_16pzm_150",yL="_sessionPrompt_16pzm_177",bL="_sessionEnv_16pzm_186",_L="_sessionRuntime_16pzm_192",xL="_sessionStatus_16pzm_198",SL="_statusDot_16pzm_207",TL="_attentionRow_16pzm_233",kL="_attentionTitle_16pzm_259",wL="_attentionMeta_16pzm_267",NL="_reasonBadge_16pzm_274",jL="_bottomGrid_16pzm_301",CL="_envRow_16pzm_312",EL="_envName_16pzm_323",AL="_envStatusBadge_16pzm_333",DL="_workspaceRow_16pzm_369",RL="_workspaceTop_16pzm_395",ML="_workspaceName_16pzm_401",IL="_workspaceCounts_16pzm_407",OL="_progressBar_16pzm_415",BL="_progressFill_16pzm_422",_e={dashboard:aL,kpiStrip:iL,kpiCard:oL,kpiValue:rL,kpiLabel:lL,bodyGrid:cL,section:uL,sectionHeader:dL,sectionIcon:fL,sectionTitle:pL,sectionCount:mL,sectionBody:hL,emptyHint:gL,sessionRow:vL,sessionPrompt:yL,sessionEnv:bL,sessionRuntime:_L,sessionStatus:xL,statusDot:SL,attentionRow:TL,attentionTitle:kL,attentionMeta:wL,reasonBadge:NL,bottomGrid:jL,envRow:CL,envName:EL,envStatusBadge:AL,workspaceRow:DL,workspaceTop:RL,workspaceName:ML,workspaceCounts:IL,progressBar:OL,progressFill:BL},LL={hidden:{opacity:0,y:12},visible:t=>({opacity:1,y:0,transition:{delay:t*.06,duration:.3,ease:"easeOut"}})},gc={hidden:{opacity:0,y:16},visible:t=>({opacity:1,y:0,transition:{delay:.15+t*.08,duration:.35,ease:"easeOut"}})};function UL(t,s,i,o){const c=[`${t} of ${s} tasks completed`];return i>0&&c.push(`${i} in progress`),o>0&&c.push(`${o} failed`),c.join(", ")}function vc({value:t,label:s,accent:i,index:o,testId:c}){return l.jsxs(Dt.div,{className:_e.kpiCard,"data-accent":i,"data-testid":c,variants:LL,initial:"hidden",animate:"visible",custom:o,children:[l.jsx("span",{className:_e.kpiValue,children:t}),l.jsx("span",{className:_e.kpiLabel,children:s})]})}function zL(){const{workspaces:t,tasks:s,sessions:i,environments:o,loadTasks:c}=rt(),u=vt(),d=y.useRef(new Set);y.useEffect(()=>{for(const _ of t)d.current.has(_.id)||(d.current.add(_.id),c(_.id))},[t,c]);const m=y.useMemo(()=>gB(i,s,o),[i,s,o]),h=y.useMemo(()=>yB(i,o),[i,o]),g=y.useMemo(()=>vB(s,t),[s,t]),v=y.useMemo(()=>bB(t,s),[t,s,o]);return l.jsxs("div",{className:_e.dashboard,"data-testid":"dashboard",children:[l.jsxs("div",{className:_e.kpiStrip,"data-testid":"dashboard-kpi-strip",children:[l.jsx(vc,{value:m.activeSessions,label:"Active Sessions",accent:"green",index:0,testId:"kpi-active-sessions"}),l.jsx(vc,{value:m.blockedTasks,label:"Blocked Tasks",accent:"yellow",index:1,testId:"kpi-blocked-tasks"}),l.jsx(vc,{value:m.attentionTasks,label:"Needs Attention",accent:"red",index:2,testId:"kpi-attention-tasks"}),l.jsx(vc,{value:m.unhealthyEnvironments,label:"Unhealthy Envs",accent:"blue",index:3,testId:"kpi-unhealthy-envs"})]}),l.jsxs("div",{className:_e.bodyGrid,children:[l.jsxs(Dt.div,{className:_e.section,variants:gc,initial:"hidden",animate:"visible",custom:0,"data-testid":"dashboard-active-sessions",children:[l.jsxs("div",{className:_e.sectionHeader,children:[l.jsx("span",{className:_e.sectionIcon,"aria-hidden":"true",children:"●"}),l.jsx("span",{className:_e.sectionTitle,children:"Active Sessions"}),l.jsx("span",{className:_e.sectionCount,children:h.length})]}),l.jsx("div",{className:_e.sectionBody,children:h.length===0?l.jsx("div",{className:_e.emptyHint,children:"No active sessions"}):h.map(({session:_,environmentName:b})=>l.jsxs("button",{type:"button",className:_e.sessionRow,onClick:()=>u(Rp(_.id)),"data-testid":"session-row",children:[l.jsx("span",{className:_e.sessionPrompt,title:_.prompt,children:_.prompt||"—"}),l.jsx("span",{className:_e.sessionEnv,children:b}),l.jsx("span",{className:_e.sessionRuntime,children:_.runtime}),l.jsxs("span",{className:_e.sessionStatus,children:[l.jsx("span",{className:_e.statusDot,"data-status":_.status}),_.status]})]},_.id))})]}),l.jsxs(Dt.div,{className:_e.section,variants:gc,initial:"hidden",animate:"visible",custom:1,"data-testid":"dashboard-needs-attention",children:[l.jsxs("div",{className:_e.sectionHeader,children:[l.jsx("span",{className:_e.sectionIcon,"aria-hidden":"true",children:"⚑"}),l.jsx("span",{className:_e.sectionTitle,children:"Needs Attention"}),l.jsx("span",{className:_e.sectionCount,children:g.length})]}),l.jsx("div",{className:_e.sectionBody,children:g.length===0?l.jsx("div",{className:_e.emptyHint,children:"All clear"}):g.map(({task:_,reason:b,workspaceName:S})=>l.jsxs("button",{type:"button",className:_e.attentionRow,onClick:()=>u(Xn(_.id)),"data-testid":"attention-row",children:[l.jsxs("div",{className:_e.attentionTitle,children:[l.jsx("span",{className:_e.reasonBadge,"data-reason":b,children:b}),_.title]}),l.jsx("div",{className:_e.attentionMeta,children:l.jsx("span",{children:S})})]},_.id))})]})]}),l.jsxs("div",{className:_e.bottomGrid,children:[l.jsxs(Dt.div,{className:_e.section,variants:gc,initial:"hidden",animate:"visible",custom:2,"data-testid":"dashboard-env-health",children:[l.jsxs("div",{className:_e.sectionHeader,children:[l.jsx("span",{className:_e.sectionIcon,"aria-hidden":"true",children:"◈"}),l.jsx("span",{className:_e.sectionTitle,children:"Environment Health"}),l.jsx("span",{className:_e.sectionCount,children:o.length})]}),l.jsx("div",{className:_e.sectionBody,children:o.length===0?l.jsx("div",{className:_e.emptyHint,children:"No environments configured"}):o.map(_=>l.jsxs("div",{className:_e.envRow,"data-testid":"dashboard-env-row",children:[l.jsx("span",{className:_e.envName,children:_.displayName}),l.jsx("span",{className:_e.envStatusBadge,"data-status":_.status,children:_.status})]},_.id))})]}),l.jsxs(Dt.div,{className:_e.section,variants:gc,initial:"hidden",animate:"visible",custom:3,"data-testid":"dashboard-workspace-snapshot",children:[l.jsxs("div",{className:_e.sectionHeader,children:[l.jsx("span",{className:_e.sectionIcon,"aria-hidden":"true",children:"▦"}),l.jsx("span",{className:_e.sectionTitle,children:"Workspaces"}),l.jsx("span",{className:_e.sectionCount,children:t.length})]}),l.jsx("div",{className:_e.sectionBody,children:v.length===0?l.jsx("div",{className:_e.emptyHint,children:"No workspaces yet"}):v.map(({workspace:_,totalTasks:b,completedTasks:S,workingTasks:T,failedTasks:N})=>{const j=b>0?Math.round(S/b*100):0;return l.jsxs("button",{type:"button",className:_e.workspaceRow,onClick:()=>u(ni(_.id,_.environmentId)),"data-testid":"workspace-row",children:[l.jsxs("div",{className:_e.workspaceTop,children:[l.jsx("span",{className:_e.workspaceName,children:_.name}),l.jsxs("span",{className:_e.workspaceCounts,"aria-label":UL(S,b,T,N),children:[S,"/",b,T>0&&l.jsxs("span",{style:{color:"var(--accent-green)"},"aria-hidden":"true",children:["▸",T]}),N>0&&l.jsxs("span",{style:{color:"var(--accent-red)"},"aria-hidden":"true",children:["✗",N]})]})]}),b>0&&l.jsx("div",{className:_e.progressBar,children:l.jsx("div",{className:_e.progressFill,style:{width:`${j}%`}})})]},_.id)})})]})]})]})}const PL="_panelContainer_101ly_1",VL="_emptyState_101ly_8",HL="_fadeIn_101ly_1",$L="_workspaceSummary_101ly_17",GL="_workspaceSummaryTitle_101ly_28",qL="_workspaceSummarySubtitle_101ly_32",FL="_header_101ly_36",ZL="_headerInfo_101ly_71",KL="_killButton_101ly_77",YL="_headerTitle_101ly_106",JL="_headerActions_101ly_121",WL="_taskStatusBadge_101ly_128",XL="_taskBranch_101ly_137",QL="_taskBlockedBadge_101ly_143",e5="_btnPrimary_101ly_151",t5="_btnDanger_101ly_182",n5="_btnGhost_101ly_221",s5="_rejectInput_101ly_247",a5="_tabBar_101ly_277",i5="_tab_101ly_277",o5="_active_101ly_303",r5="_eventScroll_101ly_308",l5="_tabContent_101ly_314",c5="_noContext_101ly_319",u5="_overviewContent_101ly_325",d5="_overviewDashboard_101ly_334",f5="_overviewHero_101ly_340",p5="_statusBadge_101ly_347",m5="_statusPending_101ly_359",h5="_statusAssigned_101ly_364",g5="_statusInProgress_101ly_369",v5="_statusReview_101ly_374",y5="_statusDone_101ly_379",b5="_statusFailed_101ly_384",_5="_statusWaitingInput_101ly_389",x5="_overviewBranchPill_101ly_394",S5="_branchLink_101ly_409",T5="_overviewSection_101ly_420",k5="_overviewLabel_101ly_426",w5="_overviewValue_101ly_433",N5="_overviewMuted_101ly_438",j5="_overviewMarkdown_101ly_444",C5="_envRow_101ly_513",E5="_envDot_101ly_519",A5="_envDotGreen_101ly_526",D5="_envDotYellow_101ly_530",R5="_envDotRed_101ly_534",M5="_envDotGray_101ly_538",I5="_depList_101ly_542",O5="_depItem_101ly_548",B5="_depBlocked_101ly_555",L5="_depDone_101ly_559",U5="_timeline_101ly_563",z5="_timelineRow_101ly_569",P5="_timelineKey_101ly_576",V5="_timelineValue_101ly_582",H5="_timelineDelta_101ly_586",$5="_reviewNotes_101ly_597",G5="_overviewDescription_101ly_608",q5="_waitingMessage_101ly_614",F5="_errorMessage_101ly_618",Z5="_attemptSelector_101ly_622",K5="_attemptLabel_101ly_638",Y5="_attemptButton_101ly_642",J5="_attemptActive_101ly_659",W5="_attemptStatus_101ly_665",X5="_emptyCta_101ly_671",Q5="_ctaTitle_101ly_683",e8="_ctaDescription_101ly_689",t8="_ctaButton_101ly_696",n8="_ctaCreateForm_101ly_731",s8="_ctaCreateInput_101ly_737",a8="_ctaCreateOk_101ly_768",i8="_ctaLink_101ly_803",o8="_workspaceHeader_101ly_817",r8="_workspaceName_101ly_842",l8="_workspaceMeta_101ly_855",c8="_metaRow_101ly_863",u8="_metaLabel_101ly_876",d8="_metaValue_101ly_891",f8="_archiveButton_101ly_901",p8="_repoLink_101ly_931",m8="_metaToggle_101ly_941",h8="_metaToggleArrow_101ly_962",g8="_metaToggleArrowOpen_101ly_967",v8="_progressBarContainer_101ly_971",y8="_progressBar_101ly_971",b8="_progressFill_101ly_987",_8="_progressLabel_101ly_994",x8="_metaTimestamps_101ly_1001",S8="_metaTimestamp_101ly_1001",U={panelContainer:PL,emptyState:VL,fadeIn:HL,workspaceSummary:$L,workspaceSummaryTitle:GL,workspaceSummarySubtitle:qL,header:FL,headerInfo:ZL,killButton:KL,headerTitle:YL,headerActions:JL,taskStatusBadge:WL,taskBranch:XL,taskBlockedBadge:QL,btnPrimary:e5,btnDanger:t5,btnGhost:n5,rejectInput:s5,tabBar:a5,tab:i5,active:o5,eventScroll:r5,tabContent:l5,noContext:c5,overviewContent:u5,overviewDashboard:d5,overviewHero:f5,statusBadge:p5,statusPending:m5,statusAssigned:h5,statusInProgress:g5,statusReview:v5,statusDone:y5,statusFailed:b5,statusWaitingInput:_5,overviewBranchPill:x5,branchLink:S5,overviewSection:T5,overviewLabel:k5,overviewValue:w5,overviewMuted:N5,overviewMarkdown:j5,envRow:C5,envDot:E5,envDotGreen:A5,envDotYellow:D5,envDotRed:R5,envDotGray:M5,depList:I5,depItem:O5,depBlocked:B5,depDone:L5,timeline:U5,timelineRow:z5,timelineKey:P5,timelineValue:V5,timelineDelta:H5,reviewNotes:$5,overviewDescription:G5,waitingMessage:q5,errorMessage:F5,attemptSelector:Z5,attemptLabel:K5,attemptButton:Y5,attemptActive:J5,attemptStatus:W5,emptyCta:X5,ctaTitle:Q5,ctaDescription:e8,ctaButton:t8,ctaCreateForm:n8,ctaCreateInput:s8,ctaCreateOk:a8,ctaLink:i8,workspaceHeader:o8,workspaceName:r8,workspaceMeta:l8,metaRow:c8,metaLabel:u8,metaValue:d8,archiveButton:f8,repoLink:p8,metaToggle:m8,metaToggleArrow:h8,metaToggleArrowOpen:g8,progressBarContainer:v8,progressBar:y8,progressFill:b8,progressLabel:_8,metaTimestamps:x8,metaTimestamp:S8};function T8(){return l.jsx("div",{className:U.emptyState,children:"Select a task or click + to create one"})}function k8(){return l.jsx("div",{className:U.emptyState,children:"Select an environment to manage its workspaces, or add a new one."})}function w8(){const{workspaces:t,environments:s}=rt(),i=vt(),o=s.length>0;return t.length>0?l.jsx(zL,{}):l.jsxs("div",{className:U.emptyCta,"data-testid":"welcome-cta",children:[l.jsx("div",{className:U.ctaTitle,children:"Welcome to Grackle"}),l.jsx("div",{className:U.ctaDescription,children:"Organize your work into workspaces and let agents tackle the tasks."}),l.jsx("button",{className:U.ctaButton,onClick:()=>i($b),disabled:!o,"data-testid":"welcome-create-button",children:"Create Your First Workspace"}),!o&&l.jsx("div",{className:U.ctaDescription,children:"Add an environment first before creating a workspace."})]})}const N8="_panelContainer_19poq_1",j8="_chatHeader_19poq_8",C8="_chatHeaderInfo_19poq_37",E8="_emptyState_19poq_43",A8="_emptyTitle_19poq_55",D8="_emptyDescription_19poq_61",R8="_emptyHint_19poq_67",ei={panelContainer:N8,chatHeader:j8,chatHeaderInfo:C8,emptyState:E8,emptyTitle:A8,emptyDescription:D8,emptyHint:R8};function M8({hasLocalEnvironment:t}){return l.jsxs("div",{className:ei.emptyState,"data-testid":"chat-empty-state",children:[l.jsx("div",{className:ei.emptyTitle,children:"Welcome to Grackle"}),l.jsx("div",{className:ei.emptyDescription,children:t?"Type a message below to start chatting with the System agent. It can help you plan work, create tasks, and coordinate agents.":"Add a local environment in Settings to start chatting."}),!t&&l.jsx("div",{className:ei.emptyHint,children:"Go to Settings → Environments to add one."})]})}function I8(){const{tasks:t,sessions:s,events:i,eventsDropped:o,environments:c,loadTaskSessions:u,loadSessionEvents:d,kill:m,stopGraceful:h,taskSessions:g,sendInput:v,spawn:_,startTask:b,personas:S,provisionEnvironment:T}=rt(),{showToast:N}=dn(),j=y.useRef(void 0),[w,C]=y.useState(),A=t.find(F=>F.id===or),M=A!=null&&A.latestSessionId?s.find(F=>F.id===A.latestSessionId)??(g[or]??[]).find(F=>F.id===A.latestSessionId):void 0;y.useEffect(()=>{u(or)},[u]),y.useEffect(()=>{A!=null&&A.latestSessionId&&u(or)},[A==null?void 0:A.latestSessionId,u]),y.useEffect(()=>{M&&M.id!==j.current&&(j.current=M.id,d(M.id))},[M==null?void 0:M.id,d]);const D=y.useMemo(()=>{if(!M)return[];const F=i.filter(ee=>ee.sessionId===M.id);return _m(bm(F))},[i,M==null?void 0:M.id]),E=c.find(F=>F.adapterType==="local"&&F.status==="connected"),$=M!==void 0&&M.status!=="stopped"&&M.status!=="suspended",z=(M==null?void 0:M.status)==="idle";y.useEffect(()=>{w&&M&&z&&(v(M.id,w),C(void 0))},[w,z,M==null?void 0:M.id,v]);const K=y.useCallback((F,ee,ae,me)=>{me&&C(me),b(F,ee,ae)},[b]);return l.jsxs("div",{className:ei.panelContainer,"data-testid":"chat-page",children:[$&&l.jsxs("div",{className:ei.chatHeader,children:[l.jsxs("span",{className:ei.chatHeaderInfo,children:["Session: ",M.id.slice(0,8)," | ",M.runtime," | ",M.status]}),l.jsx(qb,{label:"Stop",onClick:()=>h(M.id),variant:"danger",size:"sm","data-testid":"stop-split-button",options:[{label:"Stop",description:"Graceful shutdown",onClick:()=>h(M.id)},{label:"Kill",description:"Force kill",onClick:()=>m(M.id)}]})]}),l.jsx(mm,{events:D,eventsDropped:o,emptyState:l.jsx(M8,{hasLocalEnvironment:!!E})}),E&&$&&l.jsx(kr,{mode:"send",sessionId:M.id,environmentId:M.environmentId,personas:S,environments:c,onSendInput:v,onSpawn:_,onStartTask:b,onProvisionEnvironment:T,onShowToast:N}),E&&!$&&l.jsx(kr,{mode:"start",taskId:or,environmentId:E.id,personas:S,environments:c,onSendInput:v,onSpawn:_,onStartTask:K,onProvisionEnvironment:T,onShowToast:N})]})}function O8(){const t=uB(),[s]=Dp(),i=s.get("env")??"",{sendInput:o,spawn:c,startTask:u,personas:d,environments:m,provisionEnvironment:h}=rt(),{showToast:g}=dn();return l.jsxs("div",{className:U.panelContainer,children:[l.jsx(fs,{segments:t}),l.jsx("div",{className:U.emptyState,children:"Enter a prompt below to start a new session"}),l.jsx(kr,{mode:"spawn",environmentId:i,showPersonaSelect:!0,personas:d,environments:m,onSendInput:o,onSpawn:c,onStartTask:u,onProvisionEnvironment:h,onShowToast:g})]})}function B8({sessionId:t,session:s,isActive:i,onStop:o,onKill:c}){return l.jsxs("div",{className:U.header,children:[l.jsxs("span",{children:["Session: ",t.slice(0,8),s&&` | ${s.runtime} | ${s.endReason||s.status}`,s!=null&&s.inputTokens||s!=null&&s.outputTokens||s!=null&&s.costUsd?` | ${Fb((s.inputTokens??0)+(s.outputTokens??0))} tokens · ${io(s.costUsd??0)}`:""]}),l.jsxs("span",{className:U.headerInfo,children:[s&&l.jsx("span",{children:s.prompt.length>60?s.prompt.slice(0,60)+"...":s.prompt}),i&&l.jsx(qb,{label:"Stop",onClick:o,variant:"danger",size:"sm","data-testid":"stop-split-button",options:[{label:"Stop",description:"Graceful shutdown",onClick:o},{label:"Kill",description:"Force kill",onClick:c}]})]})]})}function L8({session:t}){const s=t&&(t.status==="stopped"||t.status==="suspended"),i=s?`Session ${t.endReason||t.status} with no events recorded.`:"Waiting for events...";return l.jsx("div",{className:s?U.errorMessage:U.waitingMessage,children:i})}function U8(){const{sessionId:t}=Qn(),{events:s,eventsDropped:i,sessions:o,kill:c,stopGraceful:u,loadSessionEvents:d,sendInput:m,spawn:h,startTask:g,personas:v,environments:_,provisionEnvironment:b}=rt(),{showToast:S}=dn(),T=y.useRef(void 0),N=dB(t),j=o.find(A=>A.id===t)??void 0,w=y.useMemo(()=>{const A=t?s.filter(M=>M.sessionId===t):[];return _m(bm(A))},[s,t]);if(y.useEffect(()=>{t&&t!==T.current&&(T.current=t,d(t))},[t,d]),!t)return l.jsx("div",{className:U.emptyState,children:"No session selected"});const C=(j==null?void 0:j.status)==="running"||(j==null?void 0:j.status)==="idle";return l.jsxs("div",{className:U.panelContainer,children:[l.jsx(fs,{segments:N}),l.jsx(B8,{sessionId:t,session:j,isActive:C,onStop:()=>u(t),onKill:()=>c(t)}),l.jsx(mm,{events:w,eventsDropped:i,emptyState:l.jsx(L8,{session:j})}),C&&l.jsx(kr,{mode:"send",sessionId:t,environmentId:j.environmentId,personas:v,environments:_,onSendInput:m,onSpawn:h,onStartTask:g,onProvisionEnvironment:b,onShowToast:S})]})}function z8(t){if(!t)return!1;const s=t.tagName;return!!(s==="INPUT"||s==="TEXTAREA"||s==="SELECT"||t.isContentEditable)}function Us(t,s){const i=y.useRef(s);i.current=s;const{key:o,ctrl:c=!1,shift:u=!1,suppressInInputs:d=!0,enabled:m=!0}=t;y.useEffect(()=>{if(!m)return;const h=g=>{if(d&&z8(document.activeElement??void 0))return;const v=g.ctrlKey||g.metaKey;c===v&&(u&&!g.shiftKey||g.key===o&&i.current())};return document.addEventListener("keydown",h),()=>{document.removeEventListener("keydown",h)}},[o,c,u,d,m])}function cb(t){if(!t)return"";const s=new Date(t);if(isNaN(s.getTime()))return"";const o=Date.now()-s.getTime();if(o<0)return"just now";const c=Math.floor(o/6e4);if(c<1)return"just now";if(c<60)return`${c}m ago`;const u=Math.floor(c/60);if(u<24)return`${u}h ago`;const d=Math.floor(u/24);return d<30?`${d}d ago`:s.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}const Ff=100;function P8(t){try{const s=new URL(t);return s.protocol!=="http:"&&s.protocol!=="https:"?void 0:s.toString()}catch{return}}function V8(){const{workspaceId:t,environmentId:s}=Qn(),i=vt(),{tasks:o,environments:c,workspaces:u,personas:d,sessions:m,archiveWorkspace:h,updateWorkspace:g,usageCache:v,loadUsage:_}=rt(),{resolvedThemeId:b}=Hx(),[S,T]=y.useState("tasks"),[N,j]=y.useState(!1),[w,C]=y.useState(null),[A,M]=y.useState(!1),D=y.useRef(void 0),E=u.find(X=>X.id===t),$=s??(E==null?void 0:E.environmentId)??"",z=fB(t,$,u,c);Us({key:"1"},()=>T("graph")),Us({key:"2"},()=>T("board")),Us({key:"3"},()=>T("tasks")),y.useEffect(()=>{const X=D.current;D.current=t,!(X===void 0||X===t)&&w!==null&&C(null)},[t,w]);const K=m.reduce((X,O)=>X+(O.costUsd??0),0);y.useEffect(()=>{t&&_("workspace",t)},[t,_,K]);const F=t?v[`workspace:${t}`]:void 0,ee=o.filter(X=>X.workspaceId===t),ae=ee.filter(X=>X.status==="complete").length,me=ee.length,ie=me>0?Math.round(ae/me*100):0;return l.jsxs("div",{className:U.panelContainer,children:[l.jsx(fs,{segments:z}),l.jsxs("div",{className:U.workspaceHeader,children:[l.jsx("span",{className:U.workspaceName,"data-testid":"workspace-name",children:l.jsx(Kt,{value:(E==null?void 0:E.name)||"",onSave:X=>{E&&g(E.id,{name:X})},validate:X=>{const O=X.trim();if(!O)return"Name is required";if(O.length>Ff)return`Max ${Ff} characters`},maxLength:Ff,fieldId:"name",activeFieldId:w,onActivate:C,ariaLabel:"Workspace name",renderDisplay:X=>X||t||void 0,"data-testid":"edit-name"})}),l.jsx("button",{className:U.archiveButton,onClick:()=>j(!0),title:"Archive workspace","data-testid":"archive-workspace-button",children:"Archive"})]}),l.jsxs("button",{className:U.metaToggle,onClick:()=>M(!A),"aria-expanded":!A,"aria-controls":"workspace-meta-panel","data-testid":"meta-toggle",children:[l.jsx("span",{className:`${U.metaToggleArrow} ${A?"":U.metaToggleArrowOpen}`,children:"▶"}),"Details"]}),!A&&l.jsxs("div",{className:U.workspaceMeta,"data-testid":"workspace-meta",id:"workspace-meta-panel",children:[l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Description"}),l.jsx("div",{className:U.metaValue,children:l.jsx(vp,{value:(E==null?void 0:E.description)||"",onSave:X=>{E&&g(E.id,{description:X})},fieldId:"description",activeFieldId:w,onActivate:C,renderDisplay:X=>X?l.jsx("span",{className:U.overviewMarkdown,children:l.jsx(Pc,{remarkPlugins:[Vc],children:X})}):void 0,placeholder:"No description",ariaLabel:"Workspace description","data-testid":"edit-description"})})]}),l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Repository"}),l.jsx("div",{className:U.metaValue,children:l.jsx(Kt,{value:(E==null?void 0:E.repoUrl)||"",onSave:X=>{E&&g(E.id,{repoUrl:X})},validate:X=>{const O=X.trim();if(O&&!/^https?:\/\/.+/.test(O))return"Must be a valid http(s) URL"},fieldId:"repoUrl",activeFieldId:w,onActivate:C,renderDisplay:X=>{const O=P8(X);return O?l.jsx("a",{className:U.repoLink,href:O,target:"_blank",rel:"noopener noreferrer",onClick:q=>q.stopPropagation(),children:X}):X?l.jsx("span",{children:X}):void 0},placeholder:"No repository",ariaLabel:"Workspace repository URL","data-testid":"edit-repo"})})]}),l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Environment"}),l.jsx("div",{className:U.metaValue,children:l.jsx(mM,{value:(E==null?void 0:E.environmentId)||"",onSave:X=>{E&&X&&g(E.id,{environmentId:X})},environments:c,fieldId:"environmentId",activeFieldId:w,onActivate:C,placeholder:"Select environment",ariaLabel:"Workspace environment","data-testid":"edit-env"})})]}),l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Persona"}),l.jsx("div",{className:U.metaValue,children:l.jsx(Bc,{value:(E==null?void 0:E.defaultPersonaId)||"",onSave:X=>{E&&g(E.id,{defaultPersonaId:X})},options:[{value:"",label:"(Inherit)"},...d.map(X=>({value:X.id,label:X.name}))],fieldId:"defaultPersonaId",activeFieldId:w,onActivate:C,renderDisplay:X=>{const O=d.find(q=>q.id===X);if(O)return l.jsx("span",{children:O.name})},placeholder:(E==null?void 0:E.defaultPersonaId)||"(Inherit)",ariaLabel:"Workspace default persona","data-testid":"edit-persona"})})]}),l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Worktrees"}),l.jsx("div",{className:U.metaValue,children:l.jsx(oM,{checked:(E==null?void 0:E.useWorktrees)??!0,onChange:X=>{E&&g(E.id,{useWorktrees:X})},label:"Enable worktree isolation","data-testid":"worktree-toggle"})})]}),l.jsxs("div",{className:U.metaRow,children:[l.jsx("span",{className:U.metaLabel,children:"Working Dir"}),l.jsx("div",{className:U.metaValue,children:l.jsx(Kt,{value:(E==null?void 0:E.workingDirectory)||"",onSave:X=>{E&&g(E.id,{workingDirectory:X})},fieldId:"workingDirectory",activeFieldId:w,onActivate:C,placeholder:"Default (server default)",ariaLabel:"Working directory","data-testid":"edit-working-directory"})})]}),E&&l.jsxs("div",{className:U.metaTimestamps,children:[l.jsxs("span",{className:U.metaTimestamp,children:["Created ",cb(E.createdAt)]}),E.updatedAt&&E.updatedAt!==E.createdAt&&l.jsxs("span",{className:U.metaTimestamp,children:["· Updated ",cb(E.updatedAt)]})]})]}),me>0&&l.jsxs("div",{className:U.progressBarContainer,"data-testid":"progress-bar",children:[l.jsx("div",{className:U.progressBar,children:l.jsx("div",{className:U.progressFill,style:{width:`${ie}%`}})}),l.jsxs("span",{className:U.progressLabel,children:[ae,"/",me]})]}),F&&F.costUsd>0&&l.jsx("div",{className:U.progressBarContainer,children:l.jsxs("span",{className:U.progressLabel,children:["Usage: ",io(F.costUsd)," (",F.sessionCount," session",F.sessionCount!==1?"s":"",")"]})}),l.jsxs("div",{className:U.tabBar,role:"tablist","aria-label":"Workspace view",children:[l.jsx("button",{role:"tab","aria-selected":S==="graph",className:`${U.tab} ${S==="graph"?U.active:""}`,onClick:()=>T("graph"),children:"Graph"}),l.jsx("button",{role:"tab","aria-selected":S==="board",className:`${U.tab} ${S==="board"?U.active:""}`,onClick:()=>T("board"),"data-testid":"board-tab",children:"Board"}),l.jsx("button",{role:"tab","aria-selected":S==="tasks",className:`${U.tab} ${S==="tasks"?U.active:""}`,onClick:()=>T("tasks"),children:"Tasks"})]}),S==="tasks"&&me>0&&l.jsxs("div",{className:U.workspaceSummary,children:[l.jsx("span",{className:U.workspaceSummaryTitle,children:`${ae}/${me} tasks complete`}),l.jsx("span",{className:U.workspaceSummarySubtitle,children:"Select a task or click + to create one"})]}),S==="tasks"&&me===0&&l.jsxs("div",{className:U.emptyCta,children:[l.jsx("button",{className:U.ctaButton,onClick:()=>i(ri(t,void 0,$)),children:"Create Task"}),l.jsx("div",{className:U.ctaDescription,children:"Break your work into tasks and let agents tackle them"})]}),S==="board"&&l.jsx(O4,{workspaceId:t,environmentId:$,tasks:o,sessions:m,personas:d,environments:c}),S==="graph"&&l.jsx(d2,{workspaceId:t,environmentId:$,tasks:o,resolvedThemeId:b}),l.jsx(ii,{isOpen:N,title:"Archive Workspace?",description:"This will hide the workspace from the sidebar. Tasks will not be deleted.",confirmLabel:"Archive",onConfirm:()=>{E&&(h(E.id),i("/",{replace:!0})),j(!1)},onCancel:()=>j(!1)})]})}const H8="_container_3pgew_1",$8="_header_3pgew_8",G8="_headerTitle_3pgew_35",q8="_headerActions_3pgew_44",F8="_body_3pgew_51",Z8="_btnPrimary_3pgew_63",K8="_btnGhost_3pgew_94",Y8="_error_3pgew_116",ya={container:H8,header:$8,headerTitle:G8,headerActions:q8,body:F8,btnPrimary:Z8,btnGhost:K8,error:Y8};function J8(t){const s={};return t.name.trim()||(s.name="Name is required"),t.repoUrl.trim()&&!/^https?:\/\/.+/i.test(t.repoUrl.trim())&&(s.repoUrl="Must be a valid http(s) URL"),t.environmentId||(s.environmentId="Environment is required"),Object.keys(s).length>0?s:void 0}const W8=[{label:"Home",url:ai},{label:"New Workspace",url:void 0}];function X8(){const[t]=Dp(),s=t.get("environment")??void 0,{environments:i,personas:o,createWorkspace:c,workspaceCreating:u}=rt(),{showToast:d}=dn(),m=vt(),[h,g]=y.useState(()=>{var j;return F4(void 0,s||((j=i[0])==null?void 0:j.id))}),[v,_]=y.useState(),[b,S]=y.useState();y.useEffect(()=>{s||h.environmentId||i.length===0||g(j=>{var w;return j.environmentId?j:{...j,environmentId:((w=i[0])==null?void 0:w.id)??""}})},[i,s,h.environmentId]);const T=()=>{const j=J8(h);if(j){_(j),S(void 0);return}_(void 0),S(void 0),c(h.name.trim(),h.description,h.repoUrl.trim(),h.environmentId,h.defaultPersonaId,h.useWorktrees,h.workingDirectory,()=>{d("Workspace created","success"),m(ai,{replace:!0})},w=>{S(w)})},N=()=>{m(s?si(s):ai,{replace:!0})};return l.jsxs("div",{className:ya.container,children:[l.jsxs("div",{className:ya.header,children:[l.jsx("div",{className:ya.headerTitle,children:l.jsx(fs,{segments:W8})}),l.jsxs("div",{className:ya.headerActions,children:[l.jsx("button",{className:ya.btnGhost,onClick:N,disabled:u,"data-testid":"workspace-create-cancel",children:"Cancel"}),l.jsx("button",{className:ya.btnPrimary,onClick:T,disabled:u||!h.name.trim()||!h.environmentId,"data-testid":"workspace-create-save",children:u?l.jsx(Sx,{size:"sm",label:"Creating"}):"Create Workspace"})]})]}),l.jsxs("div",{className:ya.body,children:[l.jsx(K4,{values:h,onChange:j=>{g(j),_(void 0),S(void 0)},environments:i,personas:o,errors:v,disabled:u,autoFocusName:!0}),b&&l.jsx("div",{className:ya.error,"data-testid":"workspace-create-submit-error",children:b})]})]})}function ub(){const{workspaceId:t,environmentId:s}=Qn(),[i]=Dp(),o=t??i.get("workspace")??"",c=i.get("parent")??void 0,{tasks:u,workspaces:d,personas:m,createTask:h,updateTask:g}=rt(),{showToast:v}=dn();return l.jsx(Ox,{mode:"new",workspaceId:o,parentTaskId:c,environmentId:s,tasks:u,workspaces:d,personas:m,onCreateTask:h,onUpdateTask:g,onShowToast:v})}function yc(t){if(!t)return"—";const s=new Date(t);return isNaN(s.getTime())?"—":s.toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})}function Zf(t,s){if(!t||!s)return;const i=new Date(s).getTime()-new Date(t).getTime();if(isNaN(i)||i<0)return;const o=Math.floor(i/6e4),c=Math.floor(i%6e4/1e3);if(o===0)return`${c}s`;const u=Math.floor(o/60),d=o%60;return u===0?`${o}m ${c}s`:`${u}h ${d}m`}function db(t){const s=t.toLowerCase();return s==="ready"||s==="running"||s==="available"||s==="connected"?U.envDotGreen:s==="provisioning"||s==="starting"||s==="pending"||s==="connecting"?U.envDotYellow:s==="error"||s==="failed"||s==="disconnected"?U.envDotRed:U.envDotGray}function Q8({status:t}){const s=Sa(t),i=sk(t);return l.jsx("span",{className:`${U.statusBadge} ${U[i]??U.statusPending}`,children:s.label})}function eU({task:t,tasksById:s,environments:i,workspaces:o,taskSessions:c,selectedEnvId:u}){const{loadUsage:d,usageCache:m}=rt(),h=c.reduce((A,M)=>A+(M.costUsd??0),0);y.useEffect(()=>{d("task",t.id),t.childTaskIds.length>0&&d("task_tree",t.id)},[t.id,t.childTaskIds.length,d,h]);const g=`task:${t.id}`,v=g in m?m[g]:void 0,_=`task_tree:${t.id}`,b=t.childTaskIds.length>0&&_ in m?m[_]:void 0,S=c.length>0?c[c.length-1]:void 0,T=(S==null?void 0:S.environmentId)??"",N=T?i.find(A=>A.id===T):void 0,j=o.find(A=>A.id===t.workspaceId),w=i.find(A=>A.id===u),C=t.branch&&(j!=null&&j.repoUrl)?`${j.repoUrl.replace(/\/$/,"")}/tree/${encodeURIComponent(t.branch)}`:void 0;return l.jsxs("div",{className:U.overviewDashboard,children:[l.jsxs("div",{className:U.overviewHero,children:[l.jsx(Q8,{status:t.status}),t.branch&&l.jsx("span",{className:U.overviewBranchPill,children:C?l.jsxs("a",{href:C,target:"_blank",rel:"noreferrer noopener",className:U.branchLink,children:["🔗"," ",t.branch]}):l.jsxs("span",{children:["🔗"," ",t.branch]})})]}),typeof t.description=="string"&&t.description&&l.jsxs("div",{className:U.overviewSection,children:[l.jsx("div",{className:U.overviewLabel,children:"Description"}),l.jsx("div",{className:U.overviewMarkdown,children:l.jsx(Pc,{remarkPlugins:[Vc],children:t.description})})]}),t.workpad&&l.jsx(jO,{workpad:t.workpad}),l.jsxs("div",{className:U.overviewSection,children:[l.jsx("div",{className:U.overviewLabel,children:"Environment"}),T&&N?l.jsxs("div",{className:U.envRow,"data-testid":"task-overview-environment",children:[l.jsx("span",{className:`${U.envDot} ${db(N.status)}`,title:N.status,"aria-label":`Status: ${N.status}`,role:"img"}),l.jsx("span",{className:U.overviewValue,children:N.displayName})]}):w?l.jsxs("div",{className:U.envRow,"data-testid":"task-overview-environment",children:[l.jsx("span",{className:`${U.envDot} ${db(w.status)}`,title:w.status,"aria-label":`Status: ${w.status}`,role:"img"}),l.jsx("span",{className:U.overviewValue,children:w.displayName}),l.jsx("span",{className:U.overviewMuted,children:"(workspace default)"})]}):l.jsx("div",{className:U.overviewMuted,children:"Set in workspace settings"})]}),l.jsxs("div",{className:U.overviewSection,"data-testid":"task-overview-dependencies",children:[l.jsx("div",{className:U.overviewLabel,children:"Dependencies"}),t.dependsOn.length===0?l.jsx("div",{className:U.overviewMuted,children:"None"}):l.jsx("div",{className:U.depList,children:t.dependsOn.map(A=>{const M=s.get(A),D=(M==null?void 0:M.status)==="complete";return l.jsxs("div",{className:`${U.depItem} ${D?U.depDone:U.depBlocked}`,children:[l.jsx("span",{children:D?"✓":"○"}),l.jsx("span",{children:(M==null?void 0:M.title)??A})]},A)})})]}),l.jsxs("div",{className:U.overviewSection,children:[l.jsx("div",{className:U.overviewLabel,children:"Timeline"}),l.jsxs("div",{className:U.timeline,children:[t.createdAt&&l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Created"}),l.jsx("span",{className:U.timelineValue,children:yc(t.createdAt)})]}),t.assignedAt&&(()=>{const A=Zf(t.createdAt,t.assignedAt);return l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Assigned"}),l.jsx("span",{className:U.timelineValue,children:yc(t.assignedAt)}),A!==void 0&&l.jsx("span",{className:U.timelineDelta,children:A})]})})(),t.startedAt&&(()=>{const A=Zf(t.assignedAt??t.createdAt,t.startedAt);return l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Started"}),l.jsx("span",{className:U.timelineValue,children:yc(t.startedAt)}),A!==void 0&&l.jsx("span",{className:U.timelineDelta,children:A})]})})(),t.completedAt&&(()=>{const A=Zf(t.startedAt,t.completedAt);return l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Completed"}),l.jsx("span",{className:U.timelineValue,children:yc(t.completedAt)}),A!==void 0&&l.jsx("span",{className:U.timelineDelta,children:A})]})})(),!t.createdAt&&!t.assignedAt&&!t.startedAt&&!t.completedAt&&l.jsx("div",{className:U.overviewMuted,children:"No timing data"})]})]}),v&&v.costUsd>0&&l.jsxs("div",{className:U.overviewSection,children:[l.jsx("div",{className:U.overviewLabel,children:"Usage"}),l.jsxs("div",{className:U.timeline,children:[l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Cost"}),l.jsx("span",{className:U.timelineValue,children:io(v.costUsd)}),l.jsxs("span",{className:U.timelineDelta,children:[v.sessionCount," session",v.sessionCount!==1?"s":""]})]}),b&&b.costUsd>v.costUsd&&l.jsxs("div",{className:U.timelineRow,children:[l.jsx("span",{className:U.timelineKey,children:"Total (incl. subtasks)"}),l.jsx("span",{className:U.timelineValue,children:io(b.costUsd)}),l.jsxs("span",{className:U.timelineDelta,children:[b.sessionCount," session",b.sessionCount!==1?"s":""]})]})]})]}),t.reviewNotes&&l.jsxs("div",{className:U.overviewSection,children:[l.jsx("div",{className:U.overviewLabel,children:"Review Notes"}),l.jsx("div",{className:U.reviewNotes,children:t.reviewNotes})]})]})}function tU({task:t,sessionId:s,isBlocked:i,onStart:o,onResume:c,onStop:u,onPause:d,onDelete:m,onEdit:h}){if(t.status==="not_started")return i?l.jsxs("div",{className:U.headerActions,children:[l.jsx("button",{onClick:h,className:U.btnGhost,children:"Edit"}),l.jsx("button",{onClick:m,className:U.btnDanger,children:"Delete"})]}):l.jsxs("div",{className:U.headerActions,children:[l.jsx("button",{"data-testid":"task-header-start",onClick:o,className:U.btnPrimary,children:"Start"}),l.jsx("button",{onClick:h,className:U.btnGhost,children:"Edit"}),l.jsx("button",{onClick:m,className:U.btnDanger,children:"Delete"})]});if(t.status==="working")return l.jsxs("div",{className:U.headerActions,children:[l.jsx("button",{onClick:u,className:U.btnDanger,children:"Stop"}),l.jsx("button",{onClick:d,disabled:!s,className:U.btnGhost,children:"Pause"})]});if(t.status==="paused")return l.jsxs("div",{className:U.headerActions,children:[l.jsx("button",{onClick:u,className:U.btnPrimary,children:"Stop"}),l.jsx("button",{onClick:c,className:U.btnGhost,children:"Resume"}),l.jsx("button",{onClick:m,className:U.btnDanger,children:"Delete"})]});if(t.status==="complete")return l.jsx("div",{className:U.headerActions,children:l.jsx("button",{onClick:m,className:U.btnDanger,children:"Delete"})});if(t.status==="failed")return l.jsxs("div",{className:U.headerActions,children:[l.jsx("button",{onClick:o,className:U.btnPrimary,children:"Retry"}),l.jsx("button",{onClick:m,className:U.btnDanger,children:"Delete"})]})}function nU({taskSessions:t,selectedSessionId:s,onSelect:i}){if(!(t.length<2))return l.jsxs("div",{className:U.attemptSelector,"data-testid":"attempt-selector",children:[l.jsx("span",{className:U.attemptLabel,children:"Attempts:"}),t.map((o,c)=>{const u=o.id===s,d=o.status==="stopped"&&o.endReason==="completed"?"✓":o.status==="stopped"?"✗":o.status==="running"||o.status==="idle"?"●":"";return l.jsxs("button",{className:`${U.attemptButton} ${u?U.attemptActive:""}`,onClick:()=>i(o.id),title:`Attempt #${c+1} — ${o.status}`,"aria-label":`Attempt #${c+1}, ${o.status}`,"aria-pressed":u,"data-testid":`attempt-${c+1}`,children:["#",c+1,d&&l.jsx("span",{className:U.attemptStatus,children:d})]},o.id)})]})}function ba(){const{taskId:t,workspaceId:s,environmentId:i}=Qn(),o=Ut(),c=vt(),{showToast:u}=dn(),{events:d,eventsDropped:m,tasks:h,sessions:g,environments:v,findings:_,loadSessionEvents:b,loadFindings:S,kill:T,startTask:N,stopTask:j,resumeTask:w,deleteTask:C,createTask:A,updateTask:M,workspaces:D,taskSessions:E,loadTaskSessions:$,sendInput:z,spawn:K,personas:F,provisionEnvironment:ee}=rt(),ae=y.useRef(void 0),me=y.useRef(void 0),ie=y.useRef(void 0),X=y.useRef(void 0),O=y.useRef(void 0),q=o.pathname.endsWith("/stream")?"stream":o.pathname.endsWith("/findings")?"findings":"overview",te=o.pathname.endsWith("/edit"),[re,ue]=y.useState(q),[Fe,Ne]=y.useState(!1),[ke,Me]=y.useState(void 0),[le,ve]=y.useState(""),[de,Ie]=y.useState(te),yt=y.useRef(q),fn=y.useRef(te),B=h.find(Ae=>Ae.id===t),Re=(B==null?void 0:B.workspaceId)||void 0,Qe=D.find(Ae=>Ae.id===Re);y.useEffect(()=>{q!==yt.current&&(yt.current=q,q!==re&&ue(q))},[q,re]),y.useEffect(()=>{te!==fn.current&&(fn.current=te,te!==de&&Ie(te))},[te,de]),y.useEffect(()=>{if(le===""){if(Qe!=null&&Qe.environmentId)ve(Qe.environmentId);else if(v.length>0){const Ae=v.find(We=>We.status==="connected");ve((Ae==null?void 0:Ae.id)??v[0].id)}}},[le,Qe==null?void 0:Qe.environmentId,v]);const et=B?E[B.id]??[]:[];let $e;ke&&et.some(Ae=>Ae.id===ke)?$e=ke:$e=(B==null?void 0:B.latestSessionId)||void 0;const es=()=>{Ne(!0)},Hs=()=>{if(!B)return;C(B.id),Ne(!1);const Ae=i??(Qe==null?void 0:Qe.environmentId);c(B.workspaceId&&Ae?ni(B.workspaceId,Ae):"/",{replace:!0})};y.useEffect(()=>{(B==null?void 0:B.id)!==me.current&&(me.current=B==null?void 0:B.id,Me(void 0),ve(""),Ie(te))},[B==null?void 0:B.id,te]),y.useEffect(()=>{if(!(B!=null&&B.id))return;const Ae=B.id!==X.current,We=B.latestSessionId!==O.current;(Ae||We)&&(X.current=B.id,O.current=B.latestSessionId,$(B.id))},[B==null?void 0:B.id,B==null?void 0:B.latestSessionId,$]),y.useEffect(()=>{if((B==null?void 0:B.status)!==ie.current){const Ae=ie.current===void 0;ie.current=B==null?void 0:B.status;const We=(B==null?void 0:B.status)==="not_started"?"overview":(B==null?void 0:B.status)==="working"||(B==null?void 0:B.status)==="paused"?"stream":(B==null?void 0:B.status)==="complete"?"findings":void 0;We&&We!==re&&!(Ae&&q!=="overview")&&ue(We)}},[B==null?void 0:B.status,re,q]);const kn=y.useMemo(()=>new Map(h.map(Ae=>[Ae.id,Ae])),[h]),Vn=y.useMemo(()=>{const Ae=$e?d.filter(We=>We.sessionId===$e):[];return _m(bm(Ae))},[d,$e]),ts=B?B.dependsOn.some(Ae=>{const We=kn.get(Ae);return We!==void 0&&We.status!=="complete"}):!1,$s=y.useMemo(()=>pB(t,i,D,v,kn),[t,i,D,v,kn]);y.useEffect(()=>{$e&&$e!==ae.current&&(ae.current=$e,b($e))},[$e,b]),y.useEffect(()=>{re==="findings"&&Re&&S(Re)},[re,Re,S]);const Hn=Ae=>{ue(Ae),c(Xn(t,Ae==="overview"?void 0:Ae,s,i))};return Us({key:"1"},()=>Hn("overview")),Us({key:"2"},()=>Hn("stream")),Us({key:"3"},()=>Hn("findings")),l.jsxs("div",{className:U.panelContainer,children:[l.jsx(fs,{segments:$s}),l.jsxs("div",{className:U.header,children:[l.jsxs("span",{className:U.headerTitle,children:[l.jsx("span",{"data-testid":"task-title",children:(B==null?void 0:B.title)||t}),B&&l.jsx("span",{className:U.taskStatusBadge,"data-testid":"task-status",children:B.status}),(B==null?void 0:B.branch)&&l.jsx("span",{className:U.taskBranch,children:B.branch}),ts&&l.jsx("span",{className:U.taskBlockedBadge,children:"blocked"})]}),B&&l.jsx(tU,{task:B,sessionId:$e,isBlocked:ts,onStart:()=>N(B.id,void 0,le),onResume:()=>w(B.id),onStop:()=>j(B.id),onPause:()=>$e&&T($e),onDelete:es,onEdit:()=>Ie(!0)})]}),l.jsxs("div",{className:U.tabBar,role:"tablist","aria-label":"Task view",children:[l.jsx("button",{role:"tab","aria-selected":re==="overview",className:`${U.tab} ${re==="overview"?U.active:""}`,onClick:()=>Hn("overview"),children:"Overview"}),l.jsx("button",{role:"tab","aria-selected":re==="stream",className:`${U.tab} ${re==="stream"?U.active:""}`,onClick:()=>Hn("stream"),children:"Stream"}),l.jsx("button",{role:"tab","aria-selected":re==="findings",className:`${U.tab} ${re==="findings"?U.active:""}`,onClick:()=>Hn("findings"),children:"Findings"})]}),l.jsxs(ds,{mode:"wait",children:[re==="overview"&&l.jsx(Dt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},className:U.overviewContent,"data-testid":"task-overview",children:de&&B?l.jsx(Ox,{mode:"edit",taskId:B.id,workspaceId:Re,environmentId:i,tasks:h,workspaces:D,personas:F,onCreateTask:A,onUpdateTask:M,onEditDone:()=>{te?c(Xn(B.id,void 0,s,i),{replace:!0}):Ie(!1)},onShowToast:u}):B?l.jsx(eU,{task:B,tasksById:kn,environments:v,workspaces:D,taskSessions:et,selectedEnvId:le}):l.jsx("div",{className:U.waitingMessage,children:"No additional details"})},"overview"),re==="stream"&&l.jsxs(Dt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},style:{display:"flex",flexDirection:"column",flex:1,overflow:"hidden"},children:[l.jsx(nU,{taskSessions:et,selectedSessionId:$e,onSelect:Ae=>Me(Ae)}),l.jsx(mm,{events:Vn,eventsDropped:m,emptyState:!$e&&B?ts?l.jsx("div",{className:U.emptyCta,"data-testid":"stream-blocked-message",children:l.jsx("div",{className:U.ctaDescription,children:"This task is blocked by incomplete dependencies"})}):l.jsxs("div",{className:U.emptyCta,children:[l.jsx("button",{"data-testid":"stream-start-cta",className:U.ctaButton,onClick:()=>N(B.id,void 0,le),children:"Start Task"}),l.jsx("div",{className:U.ctaDescription,children:"Click to begin agent execution"})]}):$e&&Vn.length===0?l.jsx("div",{className:U.waitingMessage,children:"Waiting for events..."}):void 0})]},"stream"),re==="findings"&&l.jsx(Dt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},className:U.tabContent,children:Re?l.jsx(Mx,{findings:_.filter(Ae=>Ae.workspaceId===Re)}):l.jsx("div",{className:U.noContext,children:"Navigate to a task within a workspace to view findings"})},"findings")]}),(()=>{if(!B||B.status!=="working"&&B.status!=="paused")return;const Ae=$e?g.find(We=>We.id===$e):void 0;if(!(!Ae||Ae.status==="stopped"))return l.jsx(kr,{mode:"send",sessionId:Ae.id,environmentId:Ae.environmentId,personas:F,environments:v,onSendInput:z,onSpawn:K,onStartTask:N,onProvisionEnvironment:ee,onShowToast:u})})(),B&&l.jsx(ii,{isOpen:Fe,title:"Delete Task?",description:`"${B.title}" will be permanently removed.`,onConfirm:Hs,onCancel:()=>Ne(!1)})]})}function sU(){const{environments:t,addEnvironment:s,updateEnvironment:i,listCodespaces:o,codespaces:c,codespaceError:u,codespaceListError:d,codespaceCreating:m,createCodespace:h}=rt(),{showToast:g}=dn();return l.jsx(Bx,{mode:"new",environments:t,onAddEnvironment:s,onUpdateEnvironment:i,onListCodespaces:o,codespaces:c,codespaceError:u,codespaceListError:d,codespaceCreating:m,onCreateCodespace:h,onShowToast:g})}function aU(){const{environmentId:t}=Qn(),{environments:s,addEnvironment:i,updateEnvironment:o,listCodespaces:c,codespaces:u,codespaceError:d,codespaceListError:m,codespaceCreating:h,createCodespace:g}=rt(),{showToast:v}=dn();return l.jsx(Bx,{mode:"edit",environmentId:t,environments:s,onAddEnvironment:i,onUpdateEnvironment:o,onListCodespaces:c,codespaces:u,codespaceError:d,codespaceListError:m,codespaceCreating:h,onCreateCodespace:g,onShowToast:v})}const iU="_layout_11u79_1",oU="_content_11u79_8",rU="_tabPanel_11u79_14",Tr={layout:iU,content:oU,tabPanel:rU};function lU(){const t=cB();return l.jsxs("div",{className:Tr.layout,children:[l.jsx(fs,{segments:t}),l.jsx("div",{className:Tr.content,children:l.jsx(wa,{})})]})}const cU="_container_13sb6_1",uU="_envHeader_13sb6_6",dU="_envTitleRow_13sb6_10",fU="_statusDot_13sb6_16",pU="_envName_13sb6_21",mU="_statusBadge_13sb6_27",hU="_envMeta_13sb6_33",gU="_metaTag_13sb6_39",vU="_actions_13sb6_51",yU="_provisionMessage_13sb6_59",bU="_errorMessage_13sb6_64",_U="_section_13sb6_69",xU="_sectionHeader_13sb6_73",SU="_cardList_13sb6_121",TU="_card_13sb6_121",kU="_cardHeader_13sb6_138",wU="_cardName_13sb6_144",NU="_cardActions_13sb6_149",jU="_cardDescription_13sb6_154",CU="_cardMeta_13sb6_160",EU="_repoLink_13sb6_166",AU="_empty_13sb6_174",DU="_btnPrimary_13sb6_180",RU="_btnOutline_13sb6_214",MU="_btnSmall_13sb6_241",IU="_btnDanger_13sb6_267",Ve={container:cU,envHeader:uU,envTitleRow:dU,statusDot:fU,envName:pU,statusBadge:mU,envMeta:hU,metaTag:gU,actions:vU,provisionMessage:yU,errorMessage:bU,section:_U,sectionHeader:xU,cardList:SU,card:TU,cardHeader:kU,cardName:wU,cardActions:NU,cardDescription:jU,cardMeta:CU,repoLink:EU,empty:AU,btnPrimary:DU,btnOutline:RU,btnSmall:MU,btnDanger:IU},OU={connected:"var(--accent-green)",sleeping:"var(--accent-yellow)",error:"var(--accent-red)",disconnected:"var(--text-tertiary)",connecting:"var(--accent-blue)"};function BU(){const{environmentId:t}=Qn(),s=vt(),{environments:i,workspaces:o,sessions:c,provisionStatus:u,provisionEnvironment:d,stopEnvironment:m,removeEnvironment:h,archiveWorkspace:g}=rt(),[v,_]=y.useState(!1),[b,S]=y.useState(!1),[T,N]=y.useState(void 0),j=i.find(ae=>ae.id===t);if(!t||!j)return l.jsx(Wn,{to:ao,replace:!0});const w=o.filter(ae=>ae.environmentId===j.id),C=c.filter(ae=>ae.environmentId===j.id),A=C.reduce((ae,me)=>ae+(me.costUsd??0),0),M=OU[j.status]||"var(--text-tertiary)",D=j.status==="connected",E=j.status==="connecting",$=j.status==="disconnected"||j.status==="error",z=j.id in u?u[j.id]:void 0,K=()=>{h(j.id),_(!1),s(ao,{replace:!0})},F=()=>{S(!1),d(j.id,!0)},ee=ae=>{g(ae),N(void 0)};return l.jsxs("div",{className:Ve.container,children:[l.jsx(ii,{isOpen:v,title:"Delete Environment?",description:`"${j.displayName||j.id}" will be permanently removed along with all its data.`,onConfirm:K,onCancel:()=>_(!1)}),l.jsx(ii,{isOpen:b,title:"Reprovision Environment?",description:"This will kill any active session and force a fresh provision cycle. The environment will be temporarily disconnected.",confirmLabel:"Reprovision",onConfirm:F,onCancel:()=>S(!1)}),l.jsxs("div",{className:Ve.envHeader,children:[l.jsxs("div",{className:Ve.envTitleRow,children:[l.jsx("span",{className:Ve.statusDot,style:{color:M},children:"●"}),l.jsx("h2",{className:Ve.envName,children:j.displayName||j.id}),l.jsx("span",{className:Ve.statusBadge,style:{color:M},children:j.status})]}),l.jsxs("div",{className:Ve.envMeta,children:[l.jsxs("span",{className:Ve.metaTag,children:["Adapter: ",j.adapterType]}),C.length>0&&l.jsxs("span",{className:Ve.metaTag,children:[C.length," session",C.length!==1?"s":""]}),A>0&&l.jsxs("span",{className:Ve.metaTag,children:["Cost: ",io(A)]})]})]}),l.jsxs("div",{className:Ve.actions,children:[D&&l.jsxs(l.Fragment,{children:[l.jsx("button",{className:Ve.btnPrimary,onClick:()=>s(Vb(j.id)),children:"New Chat"}),l.jsx("button",{className:Ve.btnOutline,onClick:()=>m(j.id),children:"Stop"}),l.jsx("button",{className:Ve.btnOutline,onClick:()=>S(!0),disabled:z!==void 0,"data-testid":"env-reprovision-btn",children:"Reprovision"})]}),$&&l.jsx("button",{className:Ve.btnPrimary,onClick:()=>d(j.id),children:j.status==="error"?"Retry":"Connect"}),E&&z!==void 0&&l.jsx("span",{className:Ve.provisionMessage,children:z.message}),j.status==="error"&&(z==null?void 0:z.stage)==="error"&&l.jsx("span",{className:Ve.errorMessage,children:z.message}),l.jsx("button",{className:Ve.btnOutline,onClick:()=>s(t2(j.id)),"data-testid":"env-edit-btn",children:"Edit Config"}),l.jsx("button",{className:Ve.btnDanger,onClick:()=>_(!0),children:"Delete"})]}),l.jsxs("div",{className:Ve.section,children:[l.jsxs("div",{className:Ve.sectionHeader,children:[l.jsx("h3",{children:"Workspaces"}),l.jsx("button",{className:Ve.btnPrimary,onClick:()=>s(`${$b}?environment=${encodeURIComponent(j.id)}`),"data-testid":"workspace-create-button",children:"+ New Workspace"})]}),w.length===0&&l.jsx("p",{className:Ve.empty,children:"No workspaces yet. Create one to get started."}),l.jsx("div",{className:Ve.cardList,children:w.map(ae=>l.jsx(LU,{workspace:ae,confirmArchiveId:T,onOpen:()=>s(ni(ae.id,j.id)),onArchive:()=>N(ae.id),onConfirmArchive:()=>ee(ae.id),onCancelArchive:()=>N(void 0)},ae.id))})]})]})}function LU({workspace:t,confirmArchiveId:s,onOpen:i,onArchive:o,onConfirmArchive:c,onCancelArchive:u}){const d=s===t.id,m=t.repoUrl&&/^https?:\/\//.test(t.repoUrl);return l.jsxs("div",{className:Ve.card,"data-testid":"workspace-card",children:[l.jsxs("div",{className:Ve.cardHeader,children:[l.jsx("strong",{className:Ve.cardName,children:t.name}),l.jsxs("div",{className:Ve.cardActions,children:[l.jsx("button",{className:Ve.btnSmall,onClick:i,children:"Open"}),d?l.jsxs(l.Fragment,{children:[l.jsx("button",{className:Ve.btnDanger,onClick:c,children:"Confirm"}),l.jsx("button",{className:Ve.btnSmall,onClick:u,children:"Cancel"})]}):l.jsx("button",{className:Ve.btnSmall,onClick:o,children:"Archive"})]})]}),t.description&&l.jsx("p",{className:Ve.cardDescription,children:t.description}),t.repoUrl&&l.jsx("div",{className:Ve.cardMeta,children:m?l.jsx("a",{href:t.repoUrl,target:"_blank",rel:"noopener noreferrer",className:Ve.repoLink,children:t.repoUrl}):l.jsx("span",{children:t.repoUrl})})]})}const UU={credentials:"Credentials",personas:"Personas",appearance:"Appearance",about:"About",shortcuts:"Shortcuts"};function zU(){const s=Ut().pathname.replace(/^\/settings\/?/,"").split("/")[0],i=UU[s],o=lB(i);return l.jsxs("div",{className:Tr.layout,children:[l.jsx(fs,{segments:o}),l.jsx("div",{className:Tr.content,children:l.jsx("div",{className:Tr.tabPanel,children:l.jsx(wa,{})},s)})]})}function PU(){const{tokens:t,setToken:s,deleteToken:i,credentialProviders:o,updateCredentialProviders:c}=rt(),{showToast:u}=dn();return l.jsxs(l.Fragment,{children:[l.jsx(EO,{credentialProviders:o,onUpdateCredentialProviders:c}),l.jsx(TI,{tokens:t,onSetToken:s,onDeleteToken:i,onShowToast:u})]})}function VU(){const{personas:t,deletePersona:s,appDefaultPersonaId:i,setAppDefaultPersonaId:o}=rt(),{showToast:c}=dn(),u=vt();return l.jsx(HO,{personas:t,appDefaultPersonaId:i,onDeletePersona:async d=>{try{await s(d)}catch(m){throw console.error("Failed to delete persona",{personaId:d,error:m}),c("Failed to delete persona","error"),m}},onSetAppDefaultPersonaId:async d=>{try{await o(d)}catch(m){console.error("Failed to set app default persona ID",{personaId:d,error:m}),c("Failed to set app default persona","error")}},onNavigateToNew:()=>u(s2),onNavigateToPersona:d=>u(Hb(d))})}const HU="_container_1ooin_1",$U="_form_1ooin_7",GU="_formActions_1ooin_75",qU="_editableSection_1ooin_82",FU="_defaultBadge_1ooin_93",ZU="_typeToggle_1ooin_107",KU="_scriptEditor_1ooin_121",YU="_optional_1ooin_128",Yn={container:HU,form:$U,formActions:GU,editableSection:qU,defaultBadge:FU,typeToggle:ZU,scriptEditor:KU,optional:YU},fb=[{value:"claude-code",label:"claude-code"},{value:"codex",label:"codex"},{value:"copilot",label:"copilot"},{value:"goose",label:"goose"},{value:"stub",label:"stub"},{value:"claude-code-acp",label:"claude-code-acp (experimental)"},{value:"codex-acp",label:"codex-acp (experimental)"},{value:"copilot-acp",label:"copilot-acp (experimental)"}],pb=[{value:"genaiscript",label:"genaiscript"}],JU="0";function mb(){const{personaId:t}=Qn(),s=vt(),{showToast:i}=dn(),{personas:o,createPersona:c,updatePersona:u,deletePersona:d,appDefaultPersonaId:m,setAppDefaultPersonaId:h}=rt(),g=t===void 0,v=g?void 0:o.find(b=>b.id===t);if(!g&&o.length>0&&!v)return l.jsx(Wn,{to:gf,replace:!0});const _=[{label:"Settings",url:so},{label:"Personas",url:gf},{label:g?"New Persona":(v==null?void 0:v.name)??"Persona",url:void 0}];return l.jsxs("div",{className:Yn.container,children:[l.jsx(fs,{segments:_}),l.jsx(WU,{existing:v,isNew:g,appDefaultPersonaId:m,onCreatePersona:c,onUpdatePersona:u,onDeletePersona:d,onSetAppDefaultPersonaId:h,onDone:()=>{s(gf)},showToast:i})]})}function WU({existing:t,isNew:s,appDefaultPersonaId:i,onCreatePersona:o,onUpdatePersona:c,onDeletePersona:u,onSetAppDefaultPersonaId:d,onDone:m,showToast:h}){const g=vt(),[v,_]=y.useState((t==null?void 0:t.name)??""),[b,S]=y.useState((t==null?void 0:t.description)??""),[T,N]=y.useState((t==null?void 0:t.systemPrompt)??""),[j,w]=y.useState((t==null?void 0:t.runtime)??"claude-code"),[C,A]=y.useState((t==null?void 0:t.model)??"sonnet"),[M,D]=y.useState((t==null?void 0:t.maxTurns)??0),[E,$]=y.useState((t==null?void 0:t.type)==="script"?"script":"agent"),[z,K]=y.useState((t==null?void 0:t.script)??""),[F,ee]=y.useState((t==null?void 0:t.allowedMcpTools)??[]),[ae,me]=y.useState(!1),[ie,X]=y.useState(null),[O,q]=y.useState(!!s);y.useEffect(()=>{if(!s&&t&&!O){q(!0),_(t.name),S(t.description),N(t.systemPrompt);const B=t.type==="script"?"script":"agent";w(B==="script"?t.runtime||"genaiscript":t.runtime),A(t.model),D(t.maxTurns),$(B),K(t.script||""),ee(t.allowedMcpTools)}},[s,t,O]);const te=B=>{$(B),B==="script"?w("genaiscript"):j==="genaiscript"&&w("claude-code")},re=!s&&t===void 0,ue=v.trim().length>0&&!re&&T.trim().length>0&&(E==="script"?z.trim().length>0:!!j&&!!C),Fe=s&&ue,Ne=!s&&i===(t==null?void 0:t.id),ke=!s&&t&&!Ne&&E==="agent"&&!!j&&!!C,Me=(B,Re)=>{if(!B.trim())return`${Re} is required`},le=B=>{if(B.preventDefault(),!(re||!ue)){if(t){c(t.id,v,b,T,j,C,M,E,z).then(()=>{h("Persona updated","success"),m()},()=>{h("Failed to save persona","error")});return}o(v,b,T,j,C,M,E,z,F).then(Re=>{h("Persona created","success"),g(Hb(Re.id),{replace:!0})},()=>{h("Failed to save persona","error")})}},ve=()=>{t&&u(t.id).then(()=>{h("Persona deleted","success"),m()},()=>{h("Failed to delete persona","error")})},de=async(B,Re,Qe,et)=>B().then(()=>{Re(),h(Qe,"success")},()=>{h(et,"error")}),Ie=(B,Re)=>{if(!t)return;const Qe=B==="type"?String(Re):E,et=B==="runtime"?String(Re):B==="type"?String(Re)==="script"?"genaiscript":j==="genaiscript"?"claude-code":j:j,$e=B==="model"?String(Re):C,es=B==="maxTurns"?Number(Re):M,Hs=B==="systemPrompt"?String(Re):T,kn=B==="script"?String(Re):z;de(()=>c(t.id,B==="name"?String(Re):v,B==="description"?String(Re):b,Hs,et,$e,es,Qe,kn),()=>{if(B==="type"){const Vn=String(Re)==="script"?"script":"agent";$(Vn),w(et)}B==="runtime"&&w(String(Re)),B==="name"&&_(String(Re)),B==="description"&&S(String(Re)),B==="systemPrompt"&&N(String(Re)),B==="model"&&A(String(Re)),B==="maxTurns"&&D(Number(Re)),B==="script"&&K(String(Re))},"Persona updated","Failed to update persona").catch(()=>{})},yt=B=>{le(B)},fn=()=>{t&&d(t.id).then(()=>{h("Set as app default","success")},()=>{h("Failed to set app default","error")})};return l.jsxs(l.Fragment,{children:[re?l.jsxs("div",{className:Yn.form,children:[l.jsx("h3",{children:"Edit Persona"}),l.jsx("p",{children:"Loading persona..."})]}):s?l.jsxs("form",{onSubmit:yt,className:Yn.form,children:[l.jsx("h3",{children:"Create Persona"}),l.jsxs("div",{className:Yn.typeToggle,"data-testid":"persona-type-toggle",children:[l.jsxs("label",{children:[l.jsx("input",{type:"radio",name:"personaType",value:"agent",checked:E==="agent",onChange:()=>te("agent")}),"Agent"]}),l.jsxs("label",{children:[l.jsx("input",{type:"radio",name:"personaType",value:"script",checked:E==="script",onChange:()=>te("script")}),"Script"]})]}),l.jsxs("label",{children:["Name",l.jsx("input",{type:"text",value:v,onChange:B=>_(B.target.value),placeholder:E==="script"?"e.g. Nightly Report":"e.g. Frontend Engineer",required:!0,"data-testid":"persona-detail-name"})]}),l.jsxs("label",{children:["Description",l.jsx("input",{type:"text",value:b,onChange:B=>S(B.target.value),placeholder:"Brief description...","data-testid":"persona-detail-description"})]}),l.jsxs("label",{children:["Runtime",l.jsx("select",{value:j,onChange:B=>w(B.target.value),"data-testid":"persona-runtime-select",children:(E==="script"?pb:fb).map(B=>l.jsx("option",{value:B.value,children:B.label},B.value))})]}),E==="agent"&&l.jsxs(l.Fragment,{children:[l.jsxs("label",{children:["Model",l.jsx("input",{type:"text",value:C,onChange:B=>A(B.target.value),placeholder:"e.g. sonnet","data-testid":"persona-detail-model"})]}),l.jsxs("label",{children:["Max Turns",l.jsx("input",{type:"number",value:M,onChange:B=>D(parseInt(B.target.value,10)||0),min:0,"data-testid":"persona-detail-max-turns"})]}),l.jsxs("label",{children:["System Prompt",l.jsx("textarea",{value:T,onChange:B=>N(B.target.value),placeholder:"You are a senior frontend engineer...",rows:10,required:!0,"data-testid":"persona-detail-prompt"})]})]}),E==="script"&&l.jsxs(l.Fragment,{children:[l.jsxs("label",{children:["Model ",l.jsx("span",{className:Yn.optional,children:"(optional)"}),l.jsx("input",{type:"text",value:C,onChange:B=>A(B.target.value),placeholder:"e.g. sonnet (leave empty for script-only)","data-testid":"persona-detail-model"})]}),l.jsxs("label",{children:["System Prompt",l.jsx("textarea",{value:T,onChange:B=>N(B.target.value),placeholder:"Context for the script...",rows:4,required:!0,"data-testid":"persona-detail-prompt"})]}),l.jsxs("label",{children:["Script",l.jsx("textarea",{value:z,onChange:B=>K(B.target.value),placeholder:`script({ model: "openai:gpt-4o" });
490
+
491
+ const grackle = await host.mcpServer({
492
+ id: "grackle",
493
+ url: env.vars.GRACKLE_MCP_URL,
494
+ });
495
+
496
+ $\`Summarize the current tasks.\`;`,rows:20,className:Yn.scriptEditor,required:!0,"data-testid":"persona-script-editor"})]})]}),E==="agent"&&l.jsxs("div",{children:[l.jsx("label",{children:"Allowed MCP Tools"}),l.jsx(tb,{selectedTools:F,onChange:ee})]}),l.jsxs("div",{className:Yn.formActions,children:[l.jsx(Os,{type:"submit",variant:"primary",size:"md",disabled:!Fe,"data-testid":"persona-detail-save",children:"Create"}),l.jsx(Os,{type:"button",variant:"outline",size:"md",onClick:m,"data-testid":"persona-detail-cancel",children:"Cancel"})]})]}):t?l.jsxs("div",{className:Yn.form,children:[l.jsx("h3",{children:"Edit Persona"}),l.jsxs("div",{className:Yn.formActions,children:[l.jsx(Os,{type:"button",variant:"outline",size:"md",onClick:m,"data-testid":"persona-detail-cancel",children:"Back to Personas"}),ke&&l.jsx(Os,{type:"button",variant:"ghost",size:"md",onClick:fn,"data-testid":"persona-detail-set-default",children:"Set as App Default"}),Ne&&l.jsx("span",{className:Yn.defaultBadge,children:"App Default"}),l.jsx(Os,{type:"button",variant:"danger",size:"md",onClick:()=>me(!0),"data-testid":"persona-detail-delete",children:"Delete"})]}),l.jsxs("div",{className:Yn.editableSection,children:[l.jsxs("label",{children:["Name",l.jsx(Kt,{value:v,onSave:B=>{Ie("name",B)},validate:B=>Me(B,"Name"),fieldId:"persona-name",activeFieldId:ie,onActivate:X,ariaLabel:"Persona name","data-testid":"persona-detail-name"})]}),l.jsxs("label",{children:["Description",l.jsx(Kt,{value:b,onSave:B=>{Ie("description",B)},fieldId:"persona-description",activeFieldId:ie,onActivate:X,placeholder:"Brief description...",ariaLabel:"Persona description","data-testid":"persona-detail-description"})]}),l.jsxs("label",{children:["Type",l.jsx(Bc,{value:E,onSave:B=>{Ie("type",B)},options:[{value:"agent",label:"Agent"},{value:"script",label:"Script"}],fieldId:"persona-type",activeFieldId:ie,onActivate:X,ariaLabel:"Persona type","data-testid":"persona-type-toggle"})]}),l.jsxs("label",{children:["Runtime",l.jsx(Bc,{value:j,onSave:B=>{Ie("runtime",B)},options:E==="script"?pb:fb,fieldId:"persona-runtime",activeFieldId:ie,onActivate:X,ariaLabel:"Persona runtime","data-testid":"persona-runtime"})]}),l.jsxs("label",{children:["Model",E==="script"?" (optional)":"",l.jsx(Kt,{value:C,onSave:B=>{Ie("model",B)},validate:E==="agent"?B=>Me(B,"Model"):void 0,fieldId:"persona-model",activeFieldId:ie,onActivate:X,placeholder:E==="script"?"e.g. sonnet (leave empty for script-only)":"e.g. sonnet",ariaLabel:"Persona model","data-testid":"persona-detail-model"})]}),l.jsxs("label",{children:["Max Turns",l.jsx(Kt,{value:String(M),onSave:B=>{Ie("maxTurns",parseInt(B,10)||0)},validate:B=>/^\d+$/.test(B.trim())?void 0:"Max Turns must be a non-negative integer",fieldId:"persona-max-turns",activeFieldId:ie,onActivate:X,placeholder:JU,ariaLabel:"Persona max turns","data-testid":"persona-detail-max-turns"})]}),l.jsxs("label",{children:["System Prompt",l.jsx(vp,{value:T,onSave:B=>{Ie("systemPrompt",B)},validate:B=>Me(B,"System Prompt"),fieldId:"persona-system-prompt",activeFieldId:ie,onActivate:X,placeholder:E==="script"?"Context for the script...":"You are a senior frontend engineer...",ariaLabel:"Persona system prompt","data-testid":"persona-detail-prompt"})]}),E==="script"&&l.jsxs("label",{children:["Script",l.jsx(vp,{value:z,onSave:B=>{Ie("script",B)},validate:B=>Me(B,"Script"),fieldId:"persona-script",activeFieldId:ie,onActivate:X,placeholder:`script({ model: "openai:gpt-4o" });
497
+
498
+ const grackle = await host.mcpServer({
499
+ id: "grackle",
500
+ url: env.vars.GRACKLE_MCP_URL,
501
+ });
502
+
503
+ $\`Summarize the current tasks.\`;`,ariaLabel:"Persona script","data-testid":"persona-script-editor"})]}),E==="agent"&&l.jsxs("div",{children:[l.jsx("label",{children:"Allowed MCP Tools"}),l.jsx(tb,{selectedTools:F,onChange:B=>{ee(B),de(()=>c(t.id,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,B),()=>{},"MCP tools updated","Failed to update MCP tools").catch(()=>{})}})]})]}),!ke&&!Ne&&l.jsx("p",{style:{fontSize:"var(--font-size-xs)",color:"var(--text-tertiary)",marginTop:"var(--space-xs)"},children:"Only agent personas with a runtime and model can be set as app default."})]}):null,l.jsx(ii,{isOpen:ae,title:"Delete Persona?",description:`"${t==null?void 0:t.name}" will be permanently removed.`,confirmLabel:"Delete",onConfirm:ve,onCancel:()=>me(!1)})]})}function XU(){const{themeId:t,resolvedThemeId:s,setTheme:i,preferSystem:o,setPreferSystem:c}=Hx();return l.jsx(kI,{themeId:t,resolvedThemeId:s,onSetTheme:i,preferSystem:o,onSetPreferSystem:c})}function QU(){const[t,s]=y.useState(void 0);return y.useEffect(()=>{let i=!1;return xe.getVersionStatus({}).then(o=>{i||s({currentVersion:o.currentVersion,latestVersion:o.latestVersion,updateAvailable:o.updateAvailable,isDocker:o.isDocker})},()=>{}),()=>{i=!0}},[]),t}function e7(){const{connected:t,environments:s,sessions:i}=rt(),o=QU();return l.jsxs(l.Fragment,{children:[o&&l.jsx(C6,{currentVersion:o.currentVersion,latestVersion:o.latestVersion,updateAvailable:o.updateAvailable,isDocker:o.isDocker}),l.jsx(wI,{connected:t,environments:s,sessions:i})]})}function t7(){return l.jsx(xO,{})}const hb=ri();function n7(){const t=vt();return Us({key:"?"},()=>{t(a2)}),Us({key:"n"},()=>{t(hb)}),Us({key:"N"},()=>{t(hb)}),l.jsx(l.Fragment,{})}function Ur(t){const s=sB();y.useLayoutEffect(()=>(s(t),()=>{s(void 0)}),[t,s])}function s7(){const{workspaces:t,tasks:s}=rt(),i=y.useMemo(()=>l.jsx(a6,{workspaces:t,tasks:s}),[t,s]);return Ur(i),l.jsx(wa,{})}function a7(){const{environments:t}=rt(),s=y.useMemo(()=>l.jsx(m3,{environments:t}),[t]);return Ur(s),l.jsx(wa,{})}function i7(){const t=y.useMemo(()=>l.jsx(c4,{}),[]);return Ur(t),l.jsx(wa,{})}function o7(){const{findings:t,loadFindings:s,loadAllFindings:i}=rt(),{workspaceId:o,environmentId:c}=Qn();y.useEffect(()=>{o?s(o):i()},[o,s,i]);const u=y.useMemo(()=>l.jsx(w3,{findings:t,workspaceId:o,environmentId:c}),[t,o,c]);return Ur(u),l.jsx(wa,{})}function r7(){const{knowledge:t,workspaces:s}=rt(),i=y.useCallback(m=>{t.search(m)},[t]),o=y.useCallback(()=>{t.clearSearch()},[t]),c=y.useCallback(m=>{t.selectNode(m)},[t]),u=y.useCallback(m=>{t.loadRecent(m||void 0)},[t]),d=y.useMemo(()=>l.jsx(jM,{nodes:t.graphData.nodes,workspaces:s,loading:t.loading,searchQuery:t.searchQuery,onSearch:i,onClearSearch:o,onSelectNode:c,onWorkspaceChange:u}),[t,s,i,o,c,u]);return Ur(d),l.jsx(wa,{})}const l7="_container_ce571_1",c7="_title_ce571_6",gb={container:l7,title:c7};function vb(){const{environmentId:t,workspaceId:s}=Qn(),{findings:i,loadFindings:o,workspaces:c,environments:u}=rt(),d=vt();y.useEffect(()=>{s&&o(s)},[s,o]);const m=y.useCallback(g=>{d(Qf(g,s,t))},[d,s,t]),h=s&&t?Yx("Findings",s,t,c,u).slice(0,-1):hB();return l.jsxs("div",{className:gb.container,"data-testid":"findings-list-page",children:[l.jsx(fs,{segments:h}),l.jsx("h1",{className:gb.title,children:"Findings"}),l.jsx(Mx,{findings:i,onFindingClick:m})]})}const u7="_container_1wwpb_1",d7="_notFound_1wwpb_6",f7="_header_1wwpb_12",p7="_categoryBadge_1wwpb_19",m7="_title_1wwpb_28",h7="_content_1wwpb_35",g7="_tags_1wwpb_77",v7="_tag_1wwpb_77",y7="_meta_1wwpb_92",b7="_metaTimestamp_1wwpb_100",_7="_metaLink_1wwpb_105",nn={container:u7,notFound:d7,header:f7,categoryBadge:p7,title:m7,content:h7,tags:g7,tag:v7,meta:y7,metaTimestamp:b7,metaLink:_7};function yb(){const{findingId:t,environmentId:s,workspaceId:i}=Qn(),{selectedFinding:o,findingLoading:c,loadFinding:u,workspaces:d,environments:m}=rt(),h=vt();if(y.useEffect(()=>{t&&u(t)},[t,u]),c)return l.jsx("div",{className:nn.container,"data-testid":"finding-detail-page",children:l.jsx("div",{className:nn.notFound,children:"Loading..."})});if(!o)return l.jsx("div",{className:nn.container,"data-testid":"finding-detail-page",children:l.jsx("div",{className:nn.notFound,children:"Finding not found."})});const g=Yx(o.title,i,s,d,m),v=Lc(o.category);return l.jsxs("div",{className:nn.container,"data-testid":"finding-detail-page",children:[l.jsx(fs,{segments:g}),l.jsxs("div",{className:nn.header,children:[l.jsx("span",{className:nn.categoryBadge,style:{background:v.bg,color:v.text},children:o.category}),l.jsx("h1",{className:nn.title,children:o.title})]}),o.content&&l.jsx("div",{className:nn.content,children:l.jsx(Pc,{remarkPlugins:[Vc],children:o.content})}),o.tags.length>0&&l.jsx("div",{className:nn.tags,children:o.tags.map(_=>l.jsx("span",{className:nn.tag,children:_},_))}),l.jsxs("div",{className:nn.meta,children:[l.jsx("span",{className:nn.metaTimestamp,title:o.createdAt,children:gm(o.createdAt)}),o.taskId&&l.jsx("button",{type:"button",className:nn.metaLink,onClick:()=>{h(Xn(o.taskId))},children:"View Task"}),o.sessionId&&l.jsx("button",{type:"button",className:nn.metaLink,onClick:()=>{h(Rp(o.sessionId))},children:"View Session"})]})]})}const x7="_wizard_1260s_1",S7="_container_1260s_10",T7="_stepContent_1260s_19",k7="_logoArea_1260s_28",w7="_logoImage_1260s_32",N7="_heading_1260s_41",j7="_tagline_1260s_49",C7="_subtitle_1260s_56",E7="_featureList_1260s_64",A7="_runtimeGrid_1260s_89",D7="_runtimeCard_1260s_101",R7="_runtimeName_1260s_133",M7="_runtimeDescription_1260s_139",I7="_buttonRow_1260s_144",O7="_primaryButton_1260s_151",B7="_ghostButton_1260s_185",L7="_dots_1260s_213",U7="_dot_1260s_213",ut={wizard:x7,container:S7,stepContent:T7,logoArea:k7,logoImage:w7,heading:N7,tagline:j7,subtitle:C7,featureList:E7,runtimeGrid:A7,runtimeCard:D7,runtimeName:R7,runtimeDescription:M7,buttonRow:I7,primaryButton:O7,ghostButton:B7,dots:L7,dot:U7};function z7({onNext:t}){return l.jsxs("div",{className:ut.stepContent,"data-testid":"setup-welcome",children:[l.jsx("div",{className:ut.logoArea,children:l.jsx("img",{src:"/grackle-logo.png",alt:"Grackle",className:ut.logoImage})}),l.jsx("h1",{className:ut.heading,children:"Welcome to Grackle"}),l.jsx("p",{className:ut.tagline,children:"Multi-agent orchestration for software teams"}),l.jsx("button",{type:"button",className:ut.primaryButton,onClick:t,"data-testid":"setup-get-started",children:"Get Started"})]})}function P7({onNext:t,onBack:s}){return l.jsxs("div",{className:ut.stepContent,"data-testid":"setup-about",children:[l.jsx("h2",{className:ut.heading,children:"What is Grackle?"}),l.jsxs("ul",{className:ut.featureList,children:[l.jsx("li",{children:"Run Claude, Copilot, and Codex agents side by side"}),l.jsx("li",{children:"Provision and control dev environments — SSH, Codespaces, or local"}),l.jsx("li",{children:"Organize work into workspaces with agent-executable tasks"}),l.jsx("li",{children:"Customize agent behavior with personas, tools, and MCP servers"}),l.jsx("li",{children:"Live-stream agent sessions with full terminal replay"})]}),l.jsxs("div",{className:ut.buttonRow,children:[l.jsx("button",{type:"button",className:ut.ghostButton,onClick:s,children:"Back"}),l.jsx("button",{type:"button",className:ut.primaryButton,onClick:t,"data-testid":"setup-about-next",children:"Next"})]})]})}const V7=[{id:"claude-code",name:"Claude Code",description:"Anthropic's agentic coding tool"},{id:"copilot",name:"Copilot Coding Agent",description:"GitHub's AI pair programmer"},{id:"codex",name:"Codex CLI",description:"OpenAI's coding agent"},{id:"goose",name:"Goose",description:"Block's open-source AI coding agent"}];function H7({currentRuntime:t,onFinish:s,onBack:i,finishDisabled:o}){const[c,u]=y.useState(t||"claude-code");return y.useEffect(()=>{t&&u(t)},[t]),l.jsxs("div",{className:ut.stepContent,"data-testid":"setup-runtime",children:[l.jsx("h2",{className:ut.heading,children:"Choose Your Runtime"}),l.jsx("p",{className:ut.subtitle,children:"Select the primary agent runtime for your workspace. You can change this later."}),l.jsx("div",{className:ut.runtimeGrid,children:V7.map(d=>l.jsxs("button",{type:"button",className:ut.runtimeCard,"data-selected":c===d.id,"aria-pressed":c===d.id,"data-testid":`runtime-card-${d.id}`,onClick:()=>u(d.id),children:[l.jsx("span",{className:ut.runtimeName,children:d.name}),l.jsx("span",{className:ut.runtimeDescription,children:d.description})]},d.id))}),l.jsxs("div",{className:ut.buttonRow,children:[l.jsx("button",{type:"button",className:ut.ghostButton,onClick:i,children:"Back"}),l.jsx("button",{type:"button",className:ut.primaryButton,onClick:()=>{s(c)},disabled:o,"data-testid":"setup-finish",children:"Finish"})]})]})}const $7=3,bb={"claude-code":"sonnet",copilot:"gpt-4o",codex:"o3",goose:""};function G7(){const{personas:t,updatePersona:s,completeOnboarding:i,onboardingCompleted:o}=rt(),{showToast:c}=dn(),u=vt(),[d,m]=y.useState(0),[h,g]=y.useState(!1),v=t.find(b=>b.id==="claude-code"),_=y.useCallback(b=>{g(!0);const S=[];if(v&&b!==v.runtime){const N=bb[b]??"sonnet";S.push(s(v.id,void 0,void 0,void 0,b,N))}const T=t.find(N=>N.id===m0);if(T&&b!==T.runtime){const N=bb[b]??"sonnet";S.push(s(m0,void 0,void 0,void 0,b,N))}Promise.all(S).then(()=>i()).then(()=>{u("/",{replace:!0})},()=>{c("Failed to update runtime -- please try again","error"),g(!1)})},[v,t,s,i,u,c]);return o===!0?l.jsx(Wn,{to:"/",replace:!0}):l.jsx("div",{className:ut.wizard,"data-testid":"setup-wizard",children:l.jsxs("div",{className:ut.container,children:[l.jsx(ds,{mode:"wait",children:l.jsxs(Dt.div,{initial:{opacity:0,x:40},animate:{opacity:1,x:0},exit:{opacity:0,x:-40},transition:{duration:.2,ease:"easeInOut"},children:[d===0&&l.jsx(z7,{onNext:()=>m(1)}),d===1&&l.jsx(P7,{onNext:()=>m(2),onBack:()=>m(0)}),d===2&&l.jsx(H7,{currentRuntime:(v==null?void 0:v.runtime)??"claude-code",onFinish:_,onBack:()=>m(1),finishDisabled:!v||h})]},d)}),l.jsx("div",{className:ut.dots,children:Array.from({length:$7},(b,S)=>l.jsx("span",{className:ut.dot,"data-active":S===d},S))})]})})}const q7="_root_zndgp_1",F7="_body_zndgp_7",Z7="_main_zndgp_19",K7="_sidebarWrapper_zndgp_26",Y7="_overlay_zndgp_51",vr={root:q7,body:F7,main:Z7,sidebarWrapper:K7,overlay:Y7},J7=y.lazy(()=>zT(()=>import("./KnowledgePage-UHkf3T0n.js"),__vite__mapDeps([0,1,2,3,4])).then(t=>({default:t.KnowledgePage}))),Wx=typeof window<"u"&&new URLSearchParams(window.location.search).has("mock");function W7(){const{connected:t,environments:s,sessions:i,tasks:o}=rt(),{toasts:c,dismissToast:u}=dn(),d=Ut(),m=nB(),h=m!==void 0,[g,v]=y.useState(!1),_=y.useCallback(()=>v(b=>!b),[]);return y.useEffect(()=>{v(!1)},[d.pathname]),y.useEffect(()=>{if(!g)return;const b=S=>{S.key==="Escape"&&v(!1)};return document.addEventListener("keydown",b),()=>{document.removeEventListener("keydown",b)}},[g]),l.jsxs(l.Fragment,{children:[l.jsx(LM,{connected:t,environments:s,sessions:i,onToggleSidebar:h?_:void 0,sidebarOpen:g}),l.jsx(GM,{}),l.jsxs("div",{className:vr.body,children:[h&&l.jsx("div",{className:vr.sidebarWrapper,"data-sidebar-open":g,children:l.jsx(JM,{content:m})}),h&&g&&l.jsx("div",{className:vr.overlay,"data-testid":"drawer-overlay",onClick:()=>v(!1)}),l.jsxs("div",{className:vr.main,children:[l.jsx(wa,{}),l.jsx(a3,{sessions:i,tasks:o,environments:s})]})]}),l.jsx(v6,{toasts:c,onDismiss:u}),l.jsx(n7,{})]})}function X7(){const{lastSpawnedId:t,environments:s,tasks:i,connected:o,onboardingCompleted:c}=rt(),{showToast:u}=dn();QB(s,u),sL(i,u);const d=vt(),m=Ut();return y.useEffect(()=>{t&&!m.pathname.includes("/tasks/")&&d(Rp(t),{replace:!0})},[t,d,m.pathname]),o&&c===!1?l.jsx(Wn,{to:"/setup",replace:!0}):l.jsx(tB,{children:l.jsxs("div",{className:vr.root,children:[Wx&&l.jsx(I2,{}),l.jsx(W7,{})]})})}function Kf(){const{workspaceId:t}=Qn(),{workspaces:s}=rt(),i=Ut(),o=s.find(h=>h.id===t);if(!(o!=null&&o.environmentId))return s.length===0?void 0:l.jsx(Wn,{to:"/environments",replace:!0});const c=encodeURIComponent(t),u=`/workspaces/${c}`,d=i.pathname.startsWith(u)?i.pathname.slice(u.length):"",m=`/environments/${encodeURIComponent(o.environmentId)}/workspaces/${c}${d}${i.search}${i.hash}`;return l.jsx(Wn,{to:m,replace:!0})}function Q7(){return l.jsxs(bw,{children:[l.jsx(Te,{path:"setup",element:l.jsx(G7,{})}),l.jsxs(Te,{element:l.jsx(X7,{}),children:[l.jsx(Te,{index:!0,element:l.jsx(w8,{})}),l.jsx(Te,{path:"chat",element:l.jsx(I8,{})}),l.jsx(Te,{path:"sessions/new",element:l.jsx(O8,{})}),l.jsx(Te,{path:"sessions/:sessionId",element:l.jsx(U8,{})}),l.jsx(Te,{element:l.jsx(r7,{}),children:l.jsx(Te,{path:"knowledge",element:l.jsx(y.Suspense,{fallback:l.jsx(Tx,{}),children:l.jsx(J7,{})})})}),l.jsxs(Te,{element:l.jsx(s7,{}),children:[l.jsx(Te,{path:"tasks",element:l.jsx(T8,{})}),l.jsx(Te,{path:"tasks/new",element:l.jsx(ub,{})}),l.jsx(Te,{path:"tasks/:taskId",element:l.jsx(ba,{})}),l.jsx(Te,{path:"tasks/:taskId/edit",element:l.jsx(ba,{})}),l.jsx(Te,{path:"tasks/:taskId/stream",element:l.jsx(ba,{})}),l.jsx(Te,{path:"tasks/:taskId/findings",element:l.jsx(ba,{})})]}),l.jsxs(Te,{element:l.jsx(o7,{}),children:[l.jsx(Te,{path:"findings",element:l.jsx(vb,{})}),l.jsx(Te,{path:"findings/:findingId",element:l.jsx(yb,{})}),l.jsx(Te,{path:"environments/:environmentId/workspaces/:workspaceId/findings",element:l.jsx(vb,{})}),l.jsx(Te,{path:"environments/:environmentId/workspaces/:workspaceId/findings/:findingId",element:l.jsx(yb,{})})]}),l.jsxs(Te,{element:l.jsx(a7,{}),children:[l.jsx(Te,{path:"workspaces",element:l.jsx(Wn,{to:"/environments",replace:!0})}),l.jsx(Te,{path:"workspaces/new",element:l.jsx(X8,{})}),l.jsx(Te,{path:"workspaces/:workspaceId",element:l.jsx(Kf,{})}),l.jsx(Te,{path:"workspaces/:workspaceId/tasks/:taskId",element:l.jsx(Kf,{})}),l.jsx(Te,{path:"workspaces/:workspaceId/tasks/:taskId/*",element:l.jsx(Kf,{})}),l.jsx(Te,{path:"environments/:environmentId/workspaces/:workspaceId",element:l.jsx(V8,{})}),l.jsx(Te,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/new",element:l.jsx(ub,{})}),l.jsx(Te,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId",element:l.jsx(ba,{})}),l.jsx(Te,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/edit",element:l.jsx(ba,{})}),l.jsx(Te,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/stream",element:l.jsx(ba,{})}),l.jsx(Te,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/findings",element:l.jsx(ba,{})}),l.jsxs(Te,{path:"environments",element:l.jsx(lU,{}),children:[l.jsx(Te,{index:!0,element:l.jsx(k8,{})}),l.jsx(Te,{path:"new",element:l.jsx(sU,{})}),l.jsx(Te,{path:":environmentId",element:l.jsx(BU,{})}),l.jsx(Te,{path:":environmentId/edit",element:l.jsx(aU,{})})]})]}),l.jsx(Te,{element:l.jsx(i7,{}),children:l.jsxs(Te,{path:"settings",element:l.jsx(zU,{}),children:[l.jsx(Te,{index:!0,element:l.jsx(Wn,{to:"credentials",replace:!0})}),l.jsx(Te,{path:"environments",element:l.jsx(Wn,{to:"/environments",replace:!0})}),l.jsx(Te,{path:"credentials",element:l.jsx(PU,{})}),l.jsx(Te,{path:"tokens",element:l.jsx(Wn,{to:"../credentials",replace:!0})}),l.jsx(Te,{path:"personas",element:l.jsx(VU,{})}),l.jsx(Te,{path:"personas/new",element:l.jsx(mb,{})}),l.jsx(Te,{path:"personas/:personaId",element:l.jsx(mb,{})}),l.jsx(Te,{path:"appearance",element:l.jsx(XU,{})}),l.jsx(Te,{path:"shortcuts",element:l.jsx(t7,{})}),l.jsx(Te,{path:"about",element:l.jsx(e7,{})})]})}),l.jsx(Te,{path:"*",element:l.jsx(Wn,{to:"/",replace:!0})})]})]})}const ez=1e4;function tz(){const{onboardingCompleted:t}=rt(),[s,i]=y.useState(!1);y.useEffect(()=>{if(t!==void 0)return;const c=setTimeout(()=>i(!0),ez);return()=>clearTimeout(c)},[t]);const o=t===void 0&&!s;return l.jsx(ds,{mode:"wait",children:o?l.jsx(Dt.div,{initial:{opacity:1},exit:{opacity:0},transition:{duration:.25},children:l.jsx(Tx,{})},"splash"):l.jsx(Dt.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.25},style:{minHeight:"100vh"},children:l.jsx(Gw,{basename:"/".replace(/\/$/,""),children:l.jsx(Q7,{})})},"app")})}function nz(){const t=Wx?EB:XB;return l.jsx(eB,{children:l.jsx(J4,{children:l.jsx(t,{children:l.jsx(tz,{})})})})}BT.createRoot(document.getElementById("root")).render(l.jsx(y.StrictMode,{children:l.jsx(nz,{})}));export{fs as B,Gb as K,rt as a,Qf as f,Rp as s,Xn as t,vt as u};